Return undefined for invalid doc type (#13306)

This commit is contained in:
fisker Cheung authored and GitHub committed 2022-08-25 19:18:26 +08:00
1 parent db21497592
commit 75025561c4
3 files changed
+34 -44

No files matched your search

+16
View File
@@ -13,3 +13,19 @@ export const DOC_TYPE_LINE_SUFFIX_BOUNDARY = "line-suffix-boundary";
export const DOC_TYPE_LINE = "line";
export const DOC_TYPE_LABEL = "label";
export const DOC_TYPE_BREAK_PARENT = "break-parent";
export const VALID_OBJECT_DOC_TYPES = new Set([
DOC_TYPE_CURSOR,
DOC_TYPE_INDENT,
DOC_TYPE_ALIGN,
DOC_TYPE_TRIM,
DOC_TYPE_GROUP,
DOC_TYPE_FILL,
DOC_TYPE_IF_BREAK,
DOC_TYPE_INDENT_IF_BREAK,
DOC_TYPE_LINE_SUFFIX,
DOC_TYPE_LINE_SUFFIX_BOUNDARY,
DOC_TYPE_LINE,
DOC_TYPE_LABEL,
DOC_TYPE_BREAK_PARENT,
]);
+4 -42
View File
@@ -1,39 +1,7 @@
import getLast from "../utils/get-last.js";
import {
DOC_TYPE_STRING,
DOC_TYPE_ARRAY,
DOC_TYPE_CURSOR,
DOC_TYPE_INDENT,
DOC_TYPE_ALIGN,
DOC_TYPE_TRIM,
DOC_TYPE_GROUP,
DOC_TYPE_FILL,
DOC_TYPE_IF_BREAK,
DOC_TYPE_INDENT_IF_BREAK,
DOC_TYPE_LINE_SUFFIX,
DOC_TYPE_LINE_SUFFIX_BOUNDARY,
DOC_TYPE_LINE,
DOC_TYPE_LABEL,
DOC_TYPE_BREAK_PARENT,
} from "./constants.js";
import { VALID_OBJECT_DOC_TYPES } from "./constants.js";
import getDocType from "./utils/get-doc-type.js";
const VALID_OBJECT_DOC_TYPE_VALUES = [
DOC_TYPE_CURSOR,
DOC_TYPE_INDENT,
DOC_TYPE_ALIGN,
DOC_TYPE_TRIM,
DOC_TYPE_GROUP,
DOC_TYPE_FILL,
DOC_TYPE_IF_BREAK,
DOC_TYPE_INDENT_IF_BREAK,
DOC_TYPE_LINE_SUFFIX,
DOC_TYPE_LINE_SUFFIX_BOUNDARY,
DOC_TYPE_LINE,
DOC_TYPE_LABEL,
DOC_TYPE_BREAK_PARENT,
];
// TODO: Use `new Intl.ListFormat("en-US", { type: "disjunction" }).format()` when we drop support for iOS 12.5
// Only works for array with more than 1 elements
const disjunctionListFormat = (list) =>
@@ -45,14 +13,8 @@ function getDocErrorMessage(doc) {
return `Unexpected doc '${type}', \nExpected it to be 'string' or 'object'.`;
}
const docType = getDocType(doc);
/* istanbul ignore next */
if (
docType === DOC_TYPE_STRING ||
docType === DOC_TYPE_ARRAY ||
VALID_OBJECT_DOC_TYPE_VALUES.includes(docType)
) {
if (getDocType(doc)) {
throw new Error("doc is valid.");
}
@@ -63,10 +25,10 @@ function getDocErrorMessage(doc) {
}
const EXPECTED_TYPE_VALUES = disjunctionListFormat(
VALID_OBJECT_DOC_TYPE_VALUES.map((type) => `'${type}'`)
[...VALID_OBJECT_DOC_TYPES].map((type) => `'${type}'`)
);
return `Unexpected doc.type '${docType}'.\nExpected it to be ${EXPECTED_TYPE_VALUES}.`;
return `Unexpected doc.type '${doc.type}'.\nExpected it to be ${EXPECTED_TYPE_VALUES}.`;
}
class InvalidDocError extends Error {
+14 -2
View File
@@ -1,4 +1,8 @@
import { DOC_TYPE_STRING, DOC_TYPE_ARRAY } from "../constants.js";
import {
DOC_TYPE_STRING,
DOC_TYPE_ARRAY,
VALID_OBJECT_DOC_TYPES,
} from "../constants.js";
function getDocType(doc) {
if (typeof doc === "string") {
@@ -9,7 +13,15 @@ function getDocType(doc) {
return DOC_TYPE_ARRAY;
}
return doc?.type;
if (!doc) {
return;
}
const { type } = doc;
if (VALID_OBJECT_DOC_TYPES.has(type)) {
return type;
}
}
export default getDocType;