UNPKG

@intlayer/chokidar

Version:

Uses chokidar to scan and build Intlayer declaration files into dictionaries based on Intlayer configuration.

90 lines (88 loc) 3 kB
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); const require_runtime = require('../_virtual/_rolldown/runtime.cjs'); let _intlayer_core_markdown = require("@intlayer/core/markdown"); let _intlayer_core_transpiler = require("@intlayer/core/transpiler"); let _intlayer_types_nodeType = require("@intlayer/types/nodeType"); _intlayer_types_nodeType = require_runtime.__toESM(_intlayer_types_nodeType); //#region src/utils/autoDecorateContent.ts /** * Check if a string is a markdown string */ const isMarkdown = (str) => { return [ /^\s*---/m, /^\s*#+\s/m, /^\s*[-*+]\s/m, /^\s*\d+\.\s/m, /^\s*>\s/m, /\[.+\]\(.+\)/, /!\[.+\]\(.+\)/, /`{1,3}.+`{1,3}/, /\*\*.+\*\*/, /__.+__/, /<(https?:\/\/[^\s>]+)>/ ].some((pattern) => pattern.test(str)); }; /** * Check if a string is an insertion string */ const isInsertion = (str) => (0, _intlayer_core_transpiler.getInsertionValues)(str).length > 0; /** * Check if a string is an HTML/JSX string * Matches: * - <Tag> * - </Tag> * - <Tag /> * - <Tag attribute="value"> * - <Component.SubComponent> */ const isHTML = (str) => { return /<[a-zA-Z][a-zA-Z0-9\-.]*(\s+[^>]*)?\/?>/.test(str) || /<\/[a-zA-Z][a-zA-Z0-9\-.]*\s*>/.test(str); }; const leafNodeTypes = [ _intlayer_types_nodeType.HTML, _intlayer_types_nodeType.MARKDOWN, _intlayer_types_nodeType.INSERTION, _intlayer_types_nodeType.FILE, _intlayer_types_nodeType.REACT_NODE, _intlayer_types_nodeType.TEXT, _intlayer_types_nodeType.NUMBER, _intlayer_types_nodeType.BOOLEAN, _intlayer_types_nodeType.NULL, _intlayer_types_nodeType.UNKNOWN ]; /** * Automatically decorate content strings with md() or insert() if they match */ const autoDecorateContent = (content, options = true) => { if (options === false) return content; const { markdown = true, html: htmlOption = true, insertion = true } = typeof options === "object" ? options : {}; if (typeof content === "string") { if (markdown && isMarkdown(content)) return { ...(0, _intlayer_core_transpiler.md)(content), metadata: (0, _intlayer_core_markdown.getMarkdownMetadata)(content) }; if (htmlOption && isHTML(content)) return (0, _intlayer_core_transpiler.html)(content); if (insertion && isInsertion(content)) return (0, _intlayer_core_transpiler.insert)(content); return content; } if (Array.isArray(content)) return content.map((item) => autoDecorateContent(item, options)); if (content && typeof content === "object") { if ("nodeType" in content) { const nodeType = content.nodeType; if (leafNodeTypes.includes(nodeType)) return content; if (nodeType in content) return { ...content, [nodeType]: autoDecorateContent(content[nodeType], options) }; return content; } const result = {}; for (const key of Object.keys(content)) result[key] = autoDecorateContent(content[key], options); return result; } return content; }; //#endregion exports.autoDecorateContent = autoDecorateContent; //# sourceMappingURL=autoDecorateContent.cjs.map