@intlayer/chokidar
Version:
Uses chokidar to scan and build Intlayer declaration files into dictionaries based on Intlayer configuration.
90 lines (88 loc) • 3 kB
JavaScript
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