Return undefined for invalid doc type (#13306)
This commit is contained in:
1 parent
db21497592
commit
75025561c4
3 files changed
+34
-44
No files matched your search
@@ -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,
|
||||
]);
|
||||
@@ -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 {
|
||||
|
||||
@@ -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;
|
||||
Reference in new issue
Block a user