datocms-structured-text-utils
Version:
A set of Typescript types and helpers to work with DatoCMS Structured Text fields.
113 lines • 3.91 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.isEmptyDocument = exports.isDocument = exports.isStructuredText = exports.isNode = exports.isNodeType = exports.isThematicBreak = exports.isInlineItem = exports.isItemLink = exports.isLink = exports.isCode = exports.isInlineBlock = exports.isBlock = exports.isBlockquote = exports.isListItem = exports.isList = exports.isParagraph = exports.isRoot = exports.isSpan = exports.isHeading = exports.isInlineNode = exports.hasChildren = void 0;
var definitions_1 = require("./definitions");
function hasChildren(node) {
return 'children' in node;
}
exports.hasChildren = hasChildren;
function isInlineNode(node) {
return definitions_1.inlineNodeTypes.includes(node.type);
}
exports.isInlineNode = isInlineNode;
function isHeading(node) {
return node.type === definitions_1.headingNodeType;
}
exports.isHeading = isHeading;
function isSpan(node) {
return node.type === definitions_1.spanNodeType;
}
exports.isSpan = isSpan;
function isRoot(node) {
return node.type === definitions_1.rootNodeType;
}
exports.isRoot = isRoot;
function isParagraph(node) {
return node.type === definitions_1.paragraphNodeType;
}
exports.isParagraph = isParagraph;
function isList(node) {
return node.type === definitions_1.listNodeType;
}
exports.isList = isList;
function isListItem(node) {
return node.type === definitions_1.listItemNodeType;
}
exports.isListItem = isListItem;
function isBlockquote(node) {
return node.type === definitions_1.blockquoteNodeType;
}
exports.isBlockquote = isBlockquote;
function isBlock(node) {
return node.type === definitions_1.blockNodeType;
}
exports.isBlock = isBlock;
function isInlineBlock(node) {
return node.type === definitions_1.inlineBlockNodeType;
}
exports.isInlineBlock = isInlineBlock;
function isCode(node) {
return node.type === definitions_1.codeNodeType;
}
exports.isCode = isCode;
function isLink(node) {
return node.type === definitions_1.linkNodeType;
}
exports.isLink = isLink;
function isItemLink(node) {
return node.type === definitions_1.itemLinkNodeType;
}
exports.isItemLink = isItemLink;
function isInlineItem(node) {
return node.type === definitions_1.inlineItemNodeType;
}
exports.isInlineItem = isInlineItem;
function isThematicBreak(node) {
return node.type === definitions_1.thematicBreakNodeType;
}
exports.isThematicBreak = isThematicBreak;
function isObject(obj) {
return Boolean(typeof obj === 'object' && obj);
}
function isNodeType(value) {
return definitions_1.allowedNodeTypes.includes(value);
}
exports.isNodeType = isNodeType;
function isNode(obj) {
return Boolean(isObject(obj) &&
'type' in obj &&
typeof obj.type === 'string' &&
isNodeType(obj.type));
}
exports.isNode = isNode;
function isStructuredText(obj) {
return Boolean(isObject(obj) && 'value' in obj && isDocument(obj.value));
}
exports.isStructuredText = isStructuredText;
function isDocument(obj) {
return Boolean(isObject(obj) &&
'schema' in obj &&
'document' in obj &&
obj.schema === 'dast');
}
exports.isDocument = isDocument;
function isEmptyDocument(obj) {
if (!obj) {
return true;
}
var document = isStructuredText(obj) && isDocument(obj.value)
? obj.value
: isDocument(obj)
? obj
: null;
if (!document) {
throw new Error('Passed object is neither null, a Structured Text value or a DAST document');
}
return (document.document.children.length === 1 &&
document.document.children[0].type === 'paragraph' &&
document.document.children[0].children.length === 1 &&
document.document.children[0].children[0].type === 'span' &&
document.document.children[0].children[0].value === '');
}
exports.isEmptyDocument = isEmptyDocument;
//# sourceMappingURL=guards.js.map
;