@intlayer/core 8.0.0 → 8.0.1-canary.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/interpreter/getContent/plugins.cjs.map +1 -1
- package/dist/cjs/markdown/compiler.cjs +0 -7
- package/dist/cjs/markdown/compiler.cjs.map +1 -1
- package/dist/cjs/markdown/constants.cjs +0 -6
- package/dist/cjs/markdown/constants.cjs.map +1 -1
- package/dist/cjs/markdown/parser.cjs +0 -7
- package/dist/cjs/markdown/parser.cjs.map +1 -1
- package/dist/cjs/markdown/renderer.cjs +0 -7
- package/dist/cjs/markdown/renderer.cjs.map +1 -1
- package/dist/cjs/markdown/utils.cjs +0 -6
- package/dist/cjs/markdown/utils.cjs.map +1 -1
- package/dist/esm/interpreter/getContent/plugins.mjs.map +1 -1
- package/dist/esm/markdown/compiler.mjs +0 -7
- package/dist/esm/markdown/compiler.mjs.map +1 -1
- package/dist/esm/markdown/constants.mjs +0 -6
- package/dist/esm/markdown/constants.mjs.map +1 -1
- package/dist/esm/markdown/parser.mjs +0 -7
- package/dist/esm/markdown/parser.mjs.map +1 -1
- package/dist/esm/markdown/renderer.mjs +0 -7
- package/dist/esm/markdown/renderer.mjs.map +1 -1
- package/dist/esm/markdown/utils.mjs +0 -6
- package/dist/esm/markdown/utils.mjs.map +1 -1
- package/dist/types/deepTransformPlugins/getFilterMissingTranslationsContent.d.ts +10 -10
- package/dist/types/deepTransformPlugins/getFilterMissingTranslationsContent.d.ts.map +1 -1
- package/dist/types/deepTransformPlugins/getFilteredLocalesContent.d.ts +10 -10
- package/dist/types/deepTransformPlugins/getFilteredLocalesContent.d.ts.map +1 -1
- package/dist/types/dictionaryManipulator/orderDictionaries.d.ts +2 -2
- package/dist/types/dictionaryManipulator/orderDictionaries.d.ts.map +1 -1
- package/dist/types/interpreter/getContent/plugins.d.ts +4 -0
- package/dist/types/interpreter/getContent/plugins.d.ts.map +1 -1
- package/dist/types/markdown/compiler.d.ts.map +1 -1
- package/dist/types/markdown/constants.d.ts +0 -6
- package/dist/types/markdown/constants.d.ts.map +1 -1
- package/dist/types/markdown/parser.d.ts.map +1 -1
- package/dist/types/markdown/renderer.d.ts.map +1 -1
- package/dist/types/markdown/types.d.ts +0 -7
- package/dist/types/markdown/types.d.ts.map +1 -1
- package/dist/types/markdown/utils.d.ts.map +1 -1
- package/package.json +6 -6
|
@@ -3,13 +3,6 @@ import { normalizeWhitespace, qualifies } from "./utils.mjs";
|
|
|
3
3
|
|
|
4
4
|
//#region src/markdown/parser.ts
|
|
5
5
|
/**
|
|
6
|
-
* Framework-agnostic markdown parser.
|
|
7
|
-
* Converts markdown string to AST (Abstract Syntax Tree).
|
|
8
|
-
*
|
|
9
|
-
* This is part of the Solution F (Hybrid AST + Callback Pattern) implementation
|
|
10
|
-
* for GitHub Issue #289: Adapt markdown parser in custom packages
|
|
11
|
-
*/
|
|
12
|
-
/**
|
|
13
6
|
* Creates a parser for a given set of rules, with the precedence
|
|
14
7
|
* specified as a list of rules.
|
|
15
8
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.mjs","names":[],"sources":["../../../src/markdown/parser.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"parser.mjs","names":[],"sources":["../../../src/markdown/parser.ts"],"sourcesContent":["import { DURATION_DELAY_TRIGGER } from './constants';\nimport type { NestedParser, ParserResult, ParseState, Rules } from './types';\nimport { normalizeWhitespace, qualifies } from './utils';\n\n/**\n * Creates a parser for a given set of rules, with the precedence\n * specified as a list of rules.\n *\n * @param rules - An object containing rule type -> {match, order, parse} objects\n * (lower order is higher precedence)\n *\n * @returns The resulting parse function\n */\nexport const parserFor = (\n rules: Rules\n): ((source: string, state: ParseState) => ParserResult[]) => {\n const start = performance.now();\n const ruleList = Object.keys(rules);\n\n if (process.env.NODE_ENV !== 'production') {\n ruleList.forEach((type) => {\n const order = rules[type]._order;\n if (typeof order !== 'number' || !Number.isFinite(order)) {\n console.warn(`intlayer: Invalid order for rule \\`${type}\\`: ${order}`);\n }\n });\n }\n\n // Sorts rules in order of increasing order, then\n // ascending rule name in case of ties.\n ruleList.sort((a, b) => {\n return rules[a]._order - rules[b]._order || (a < b ? -1 : 1);\n });\n\n const nestedParse: NestedParser = (\n source: string,\n state: ParseState = {}\n ): ParserResult[] => {\n const parseStart = performance.now();\n const result: ParserResult[] = [];\n state.prevCapture = state.prevCapture || '';\n\n if (source.trim()) {\n while (source) {\n let i = 0;\n while (i < ruleList.length) {\n const ruleType = ruleList[i];\n const rule = rules[ruleType];\n\n if (rule._qualify && !qualifies(source, state, rule._qualify)) {\n i++;\n continue;\n }\n\n const matchStart = performance.now();\n const capture = rule._match(source, state);\n const matchDuration = performance.now() - matchStart;\n\n if (matchDuration > 1) {\n console.log(\n `${ruleType}._match: ${matchDuration.toFixed(3)}ms, source length: ${source.length}`\n );\n }\n\n if (capture?.[0]) {\n source = source.substring(capture[0].length);\n\n const ruleParseStart = performance.now();\n const parsedAny: any = rule._parse(capture, nestedParse, state);\n const ruleParseDuration = performance.now() - ruleParseStart;\n\n if (ruleParseDuration > 1) {\n console.log(\n `${ruleType}._parse: ${ruleParseDuration.toFixed(3)}ms, capture length: ${capture[0].length}`\n );\n }\n\n state.prevCapture = (state.prevCapture || '') + capture[0];\n\n if (!parsedAny.type) {\n parsedAny.type = ruleType;\n }\n result.push(parsedAny as ParserResult);\n break;\n }\n i++;\n }\n }\n }\n\n const parseDuration = performance.now() - parseStart;\n if (parseDuration > 1) {\n console.log(\n `nestedParse: ${parseDuration.toFixed(3)}ms, source length: ${source.length}, result count: ${result.length}`\n );\n }\n\n return result;\n };\n\n const duration = performance.now() - start;\n if (duration > DURATION_DELAY_TRIGGER) {\n console.log(\n `parserFor: ${duration.toFixed(3)}ms, rules count: ${ruleList.length}`\n );\n }\n\n return (source: string, state: ParseState) =>\n nestedParse(normalizeWhitespace(source), state);\n};\n"],"mappings":";;;;;;;;;;;;;AAaA,MAAa,aACX,UAC4D;CAC5D,MAAM,QAAQ,YAAY,KAAK;CAC/B,MAAM,WAAW,OAAO,KAAK,MAAM;AAGjC,UAAS,SAAS,SAAS;EACzB,MAAM,QAAQ,MAAM,MAAM;AAC1B,MAAI,OAAO,UAAU,YAAY,CAAC,OAAO,SAAS,MAAM,CACtD,SAAQ,KAAK,sCAAsC,KAAK,MAAM,QAAQ;GAExE;AAKJ,UAAS,MAAM,GAAG,MAAM;AACtB,SAAO,MAAM,GAAG,SAAS,MAAM,GAAG,WAAW,IAAI,IAAI,KAAK;GAC1D;CAEF,MAAM,eACJ,QACA,QAAoB,EAAE,KACH;EACnB,MAAM,aAAa,YAAY,KAAK;EACpC,MAAM,SAAyB,EAAE;AACjC,QAAM,cAAc,MAAM,eAAe;AAEzC,MAAI,OAAO,MAAM,CACf,QAAO,QAAQ;GACb,IAAI,IAAI;AACR,UAAO,IAAI,SAAS,QAAQ;IAC1B,MAAM,WAAW,SAAS;IAC1B,MAAM,OAAO,MAAM;AAEnB,QAAI,KAAK,YAAY,CAAC,UAAU,QAAQ,OAAO,KAAK,SAAS,EAAE;AAC7D;AACA;;IAGF,MAAM,aAAa,YAAY,KAAK;IACpC,MAAM,UAAU,KAAK,OAAO,QAAQ,MAAM;IAC1C,MAAM,gBAAgB,YAAY,KAAK,GAAG;AAE1C,QAAI,gBAAgB,EAClB,SAAQ,IACN,GAAG,SAAS,WAAW,cAAc,QAAQ,EAAE,CAAC,qBAAqB,OAAO,SAC7E;AAGH,QAAI,UAAU,IAAI;AAChB,cAAS,OAAO,UAAU,QAAQ,GAAG,OAAO;KAE5C,MAAM,iBAAiB,YAAY,KAAK;KACxC,MAAM,YAAiB,KAAK,OAAO,SAAS,aAAa,MAAM;KAC/D,MAAM,oBAAoB,YAAY,KAAK,GAAG;AAE9C,SAAI,oBAAoB,EACtB,SAAQ,IACN,GAAG,SAAS,WAAW,kBAAkB,QAAQ,EAAE,CAAC,sBAAsB,QAAQ,GAAG,SACtF;AAGH,WAAM,eAAe,MAAM,eAAe,MAAM,QAAQ;AAExD,SAAI,CAAC,UAAU,KACb,WAAU,OAAO;AAEnB,YAAO,KAAK,UAA0B;AACtC;;AAEF;;;EAKN,MAAM,gBAAgB,YAAY,KAAK,GAAG;AAC1C,MAAI,gBAAgB,EAClB,SAAQ,IACN,gBAAgB,cAAc,QAAQ,EAAE,CAAC,qBAAqB,OAAO,OAAO,kBAAkB,OAAO,SACtG;AAGH,SAAO;;CAGT,MAAM,WAAW,YAAY,KAAK,GAAG;AACrC,KAAI,WAAW,uBACb,SAAQ,IACN,cAAc,SAAS,QAAQ,EAAE,CAAC,mBAAmB,SAAS,SAC/D;AAGH,SAAQ,QAAgB,UACtB,YAAY,oBAAoB,OAAO,EAAE,MAAM"}
|
|
@@ -2,13 +2,6 @@ import { DURATION_DELAY_TRIGGER } from "./constants.mjs";
|
|
|
2
2
|
|
|
3
3
|
//#region src/markdown/renderer.ts
|
|
4
4
|
/**
|
|
5
|
-
* Framework-agnostic markdown renderer.
|
|
6
|
-
* Converts AST to framework-specific elements using the provided runtime.
|
|
7
|
-
*
|
|
8
|
-
* This is part of the Solution F (Hybrid AST + Callback Pattern) implementation
|
|
9
|
-
* for GitHub Issue #289: Adapt markdown parser in custom packages
|
|
10
|
-
*/
|
|
11
|
-
/**
|
|
12
5
|
* Creates a renderer for AST nodes.
|
|
13
6
|
* Renamed from `reactFor` to be framework-agnostic.
|
|
14
7
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer.mjs","names":[],"sources":["../../../src/markdown/renderer.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"renderer.mjs","names":[],"sources":["../../../src/markdown/renderer.ts"],"sourcesContent":["import { DURATION_DELAY_TRIGGER } from './constants';\nimport type {\n ParserResult,\n ParseState,\n RenderRuleHook,\n RuleOutput,\n Rules,\n} from './types';\n\n/**\n * Creates a renderer for AST nodes.\n * Renamed from `reactFor` to be framework-agnostic.\n *\n * @param render - The render function to call for each node\n * @returns A function that renders AST to output\n */\nexport const renderFor =\n (\n render: (\n ast: ParserResult,\n render: RuleOutput,\n state: ParseState\n ) => unknown\n ) =>\n (ast: ParserResult | ParserResult[], state: ParseState = {}): any => {\n const start = performance.now();\n\n const patchedRender = (\n ast: ParserResult | ParserResult[],\n state: ParseState = {}\n ): any => renderFor(render)(ast, state);\n\n if (Array.isArray(ast)) {\n const oldKey = state.key;\n const result: any[] = [];\n\n // map nestedOutput over the ast, except group any text\n // nodes together into a single string output.\n let lastWasString = false;\n let renderedIndex = 0;\n\n for (let i = 0; i < ast.length; i++) {\n // We clone the state to avoid side effects on other nodes in the same level\n // while ensuring each non-null rendered node gets a unique, sequential key.\n const nodeOut = patchedRender(ast[i], { ...state, key: renderedIndex });\n const isString = typeof nodeOut === 'string';\n\n if (isString && lastWasString) {\n result[result.length - 1] =\n (result[result.length - 1] as string) + nodeOut;\n } else if (nodeOut !== null) {\n result.push(nodeOut);\n renderedIndex++;\n }\n\n lastWasString = isString;\n }\n\n state.key = oldKey;\n\n const duration = performance.now() - start;\n if (duration > DURATION_DELAY_TRIGGER) {\n console.log(\n `renderFor (array): ${duration.toFixed(3)}ms, ast length: ${ast.length}`\n );\n }\n\n return result;\n }\n\n const result = render(ast, patchedRender as RuleOutput, state);\n\n const duration = performance.now() - start;\n if (duration > DURATION_DELAY_TRIGGER) {\n console.log(\n `renderFor (single): ${duration.toFixed(3)}ms, ast type: ${(ast as ParserResult).type}`\n );\n }\n\n return result;\n };\n\n/**\n * Creates a renderer from rules with optional custom render hook.\n *\n * @param rules - The rules object containing _render functions\n * @param userRender - Optional custom render hook for full control\n * @returns A render function for AST nodes\n */\nexport const createRenderer =\n (rules: Rules, userRender?: RenderRuleHook) =>\n (ast: ParserResult, render: RuleOutput, state: ParseState): unknown => {\n const start = performance.now();\n const renderer = rules[ast.type]?._render;\n\n const result = userRender\n ? userRender(() => renderer?.(ast, render, state), ast, render, state)\n : renderer?.(ast, render, state);\n\n const duration = performance.now() - start;\n if (duration > DURATION_DELAY_TRIGGER) {\n console.log(\n `createRenderer: ${duration.toFixed(3)}ms, ast type: ${ast.type}, hasUserRender: ${!!userRender}`\n );\n }\n\n return result;\n };\n"],"mappings":";;;;;;;;;;AAgBA,MAAa,aAET,YAMD,KAAoC,QAAoB,EAAE,KAAU;CACnE,MAAM,QAAQ,YAAY,KAAK;CAE/B,MAAM,iBACJ,KACA,QAAoB,EAAE,KACd,UAAU,OAAO,CAAC,KAAK,MAAM;AAEvC,KAAI,MAAM,QAAQ,IAAI,EAAE;EACtB,MAAM,SAAS,MAAM;EACrB,MAAM,SAAgB,EAAE;EAIxB,IAAI,gBAAgB;EACpB,IAAI,gBAAgB;AAEpB,OAAK,IAAI,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;GAGnC,MAAM,UAAU,cAAc,IAAI,IAAI;IAAE,GAAG;IAAO,KAAK;IAAe,CAAC;GACvE,MAAM,WAAW,OAAO,YAAY;AAEpC,OAAI,YAAY,cACd,QAAO,OAAO,SAAS,KACpB,OAAO,OAAO,SAAS,KAAgB;YACjC,YAAY,MAAM;AAC3B,WAAO,KAAK,QAAQ;AACpB;;AAGF,mBAAgB;;AAGlB,QAAM,MAAM;EAEZ,MAAM,WAAW,YAAY,KAAK,GAAG;AACrC,MAAI,WAAW,uBACb,SAAQ,IACN,sBAAsB,SAAS,QAAQ,EAAE,CAAC,kBAAkB,IAAI,SACjE;AAGH,SAAO;;CAGT,MAAM,SAAS,OAAO,KAAK,eAA6B,MAAM;CAE9D,MAAM,WAAW,YAAY,KAAK,GAAG;AACrC,KAAI,WAAW,uBACb,SAAQ,IACN,uBAAuB,SAAS,QAAQ,EAAE,CAAC,gBAAiB,IAAqB,OAClF;AAGH,QAAO;;;;;;;;;AAUX,MAAa,kBACV,OAAc,gBACd,KAAmB,QAAoB,UAA+B;CACrE,MAAM,QAAQ,YAAY,KAAK;CAC/B,MAAM,WAAW,MAAM,IAAI,OAAO;CAElC,MAAM,SAAS,aACX,iBAAiB,WAAW,KAAK,QAAQ,MAAM,EAAE,KAAK,QAAQ,MAAM,GACpE,WAAW,KAAK,QAAQ,MAAM;CAElC,MAAM,WAAW,YAAY,KAAK,GAAG;AACrC,KAAI,WAAW,uBACb,SAAQ,IACN,mBAAmB,SAAS,QAAQ,EAAE,CAAC,gBAAgB,IAAI,KAAK,mBAAmB,CAAC,CAAC,aACtF;AAGH,QAAO"}
|
|
@@ -2,12 +2,6 @@ import { ATTRIBUTES_TO_SANITIZE, CAPTURE_LETTER_AFTER_HYPHEN, CR_NEWLINE_R, DURA
|
|
|
2
2
|
|
|
3
3
|
//#region src/markdown/utils.ts
|
|
4
4
|
/**
|
|
5
|
-
* Utility functions for the framework-agnostic markdown processor.
|
|
6
|
-
*
|
|
7
|
-
* This is part of the Solution F (Hybrid AST + Callback Pattern) implementation
|
|
8
|
-
* for GitHub Issue #289: Adapt markdown parser in custom packages
|
|
9
|
-
*/
|
|
10
|
-
/**
|
|
11
5
|
* Trim trailing whitespace from a string.
|
|
12
6
|
*/
|
|
13
7
|
const trimEnd = (str) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.mjs","names":[],"sources":["../../../src/markdown/utils.ts"],"sourcesContent":["/**\n * Utility functions for the framework-agnostic markdown processor.\n *\n * This is part of the Solution F (Hybrid AST + Callback Pattern) implementation\n * for GitHub Issue #289: Adapt markdown parser in custom packages\n */\n\nimport {\n ATTRIBUTES_TO_SANITIZE,\n CAPTURE_LETTER_AFTER_HYPHEN,\n CR_NEWLINE_R,\n DURATION_DELAY_TRIGGER,\n FORMFEED_R,\n HTML_CUSTOM_ATTR_R,\n INTERPOLATION_R,\n TAB_R,\n TABLE_CENTER_ALIGN,\n TABLE_LEFT_ALIGN,\n TABLE_RIGHT_ALIGN,\n TABLE_TRIM_PIPES,\n UNESCAPE_R,\n} from './constants';\nimport type { NestedParser, ParserResult, ParseState, Rule } from './types';\n\n// ============================================================================\n// STRING UTILITIES\n// ============================================================================\n\n/**\n * Trim trailing whitespace from a string.\n */\nexport const trimEnd = (str: string): string => {\n let end = str.length;\n\n while (end > 0 && str[end - 1] <= ' ') end--;\n\n return str.slice(0, end);\n};\n\n/**\n * Check if string starts with prefix.\n */\nexport const startsWith = (str: string, prefix: string): boolean => {\n return str.startsWith(prefix);\n};\n\n/**\n * Remove symmetrical leading and trailing quotes.\n */\nexport const unquote = (str: string): string => {\n const first = str[0];\n\n if (\n (first === '\"' || first === \"'\") &&\n str.length >= 2 &&\n str[str.length - 1] === first\n ) {\n return str.slice(1, -1);\n }\n\n return str;\n};\n\n/**\n * Unescape backslash-escaped characters.\n */\nexport const unescapeString = (rawString: string): string =>\n rawString ? rawString.replace(UNESCAPE_R, '$1') : rawString;\n\n/**\n * Join class names, filtering out falsy values.\n */\nexport const cx = (...args: any[]): string => args.filter(Boolean).join(' ');\n\n/**\n * Get a nested property from an object using dot notation.\n */\nexport const get = (src: any, path: string, fb?: any): any => {\n let ptr = src;\n const frags = path.split('.');\n\n while (frags.length) {\n ptr = ptr[frags[0]];\n\n if (ptr === undefined) break;\n else frags.shift();\n }\n\n return ptr ?? fb;\n};\n\n// ============================================================================\n// SLUGIFY\n// ============================================================================\n\n/**\n * Convert a string to a URL-safe slug.\n * Based on https://stackoverflow.com/a/18123682/1141611\n */\nexport const slugify = (str: string): string =>\n str\n .replace(/[ÀÁÂÃÄÅàáâãä忯]/g, 'a')\n .replace(/[çÇ]/g, 'c')\n .replace(/[ðÐ]/g, 'd')\n .replace(/[ÈÉÊËéèêë]/g, 'e')\n .replace(/[ÏïÎîÍíÌì]/g, 'i')\n .replace(/[Ññ]/g, 'n')\n .replace(/[øØœŒÕõÔôÓóÒò]/g, 'o')\n .replace(/[ÜüÛûÚúÙù]/g, 'u')\n .replace(/[ŸÿÝý]/g, 'y')\n .replace(/[^a-z0-9- ]/gi, '')\n .replace(/ /gi, '-')\n .toLowerCase();\n\n// ============================================================================\n// SANITIZER\n// ============================================================================\n\nconst SANITIZE_R = /(javascript|vbscript|data(?!:image)):/i;\n\n/**\n * Sanitize URLs to prevent XSS attacks.\n * Returns null if the URL is unsafe.\n */\nexport const sanitizer = (input: string): string | null => {\n try {\n const decoded = decodeURIComponent(input).replace(/[^A-Za-z0-9/:]/g, '');\n\n if (SANITIZE_R.test(decoded)) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n 'Input contains an unsafe JavaScript/VBScript/data expression, it will not be rendered.',\n decoded\n );\n }\n\n return null;\n }\n } catch (_e) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n 'Input could not be decoded due to malformed syntax or characters, it will not be rendered.',\n input\n );\n }\n\n // decodeURIComponent sometimes throws a URIError\n return null;\n }\n\n return input;\n};\n\n// ============================================================================\n// WHITESPACE NORMALIZATION\n// ============================================================================\n\n/**\n * Normalize whitespace in source string.\n */\nexport const normalizeWhitespace = (source: string): string => {\n const start = performance.now();\n const result = source\n .replace(CR_NEWLINE_R, '\\n')\n .replace(FORMFEED_R, '')\n .replace(TAB_R, ' ');\n\n const duration = performance.now() - start;\n\n if (duration > DURATION_DELAY_TRIGGER) {\n console.log(\n `normalizeWhitespace: ${duration.toFixed(3)}ms, source length: ${source.length}`\n );\n }\n\n return result;\n};\n\n/**\n * Safely remove a uniform leading indentation from lines, but do NOT touch\n * the content inside fenced code blocks (``` or ~~~).\n */\nexport const trimLeadingWhitespaceOutsideFences = (\n text: string,\n whitespace: string\n): string => {\n const start = performance.now();\n if (!whitespace) return text;\n\n const lines = text.split('\\n');\n let inFence = false;\n let fenceToken: string | null = null;\n\n const isFenceLine = (line: string): RegExpMatchArray | null =>\n line.match(/^\\s*(`{3,}|~{3,})/);\n\n const maybeToggleFence = (line: string): void => {\n const m = isFenceLine(line);\n\n if (!m) return;\n\n const token = m[1];\n\n if (!inFence) {\n inFence = true;\n fenceToken = token;\n } else if (fenceToken && line.includes(fenceToken)) {\n inFence = false;\n fenceToken = null;\n }\n };\n\n const out = lines.map((line) => {\n const fenceMatch = isFenceLine(line);\n if (fenceMatch) {\n const trimmedFenceLine = line.startsWith(whitespace)\n ? line.slice(whitespace.length)\n : line;\n maybeToggleFence(line);\n return trimmedFenceLine;\n }\n\n if (inFence) {\n return line;\n }\n\n return line.startsWith(whitespace) ? line.slice(whitespace.length) : line;\n });\n\n const result = out.join('\\n');\n\n const duration = performance.now() - start;\n if (duration > DURATION_DELAY_TRIGGER) {\n console.log(\n `trimLeadingWhitespaceOutsideFences: ${duration.toFixed(3)}ms, text length: ${text.length}, lines count: ${lines.length}`\n );\n }\n\n return result;\n};\n\n/**\n * Normalize HTML attribute key to JSX prop name.\n */\nexport const normalizeAttributeKey = (key: string): string => {\n const hyphenIndex = key.indexOf('-');\n\n if (hyphenIndex !== -1 && key.match(HTML_CUSTOM_ATTR_R) === null) {\n key = key.replace(CAPTURE_LETTER_AFTER_HYPHEN, (_, letter) => {\n return letter.toUpperCase();\n });\n }\n\n return key;\n};\n\ntype StyleTuple = [key: string, value: string];\n\n/**\n * Parse a CSS style string into an array of [key, value] tuples.\n */\nexport const parseStyleAttribute = (styleString: string): StyleTuple[] => {\n const start = performance.now();\n const styles: StyleTuple[] = [];\n let buffer = '';\n let inUrl = false;\n let inQuotes = false;\n let quoteChar: '\"' | \"'\" | '' = '';\n\n if (!styleString) return styles;\n\n for (let i = 0; i < styleString.length; i++) {\n const char = styleString[i];\n\n if ((char === '\"' || char === \"'\") && !inUrl) {\n if (!inQuotes) {\n inQuotes = true;\n quoteChar = char;\n } else if (char === quoteChar) {\n inQuotes = false;\n quoteChar = '';\n }\n }\n\n if (char === '(' && buffer.endsWith('url')) {\n inUrl = true;\n } else if (char === ')' && inUrl) {\n inUrl = false;\n }\n\n if (char === ';' && !inQuotes && !inUrl) {\n const declaration = buffer.trim();\n\n if (declaration) {\n const colonIndex = declaration.indexOf(':');\n\n if (colonIndex > 0) {\n const key = declaration.slice(0, colonIndex).trim();\n const value = declaration.slice(colonIndex + 1).trim();\n styles.push([key, value]);\n }\n }\n buffer = '';\n } else {\n buffer += char;\n }\n }\n\n const declaration = buffer.trim();\n\n if (declaration) {\n const colonIndex = declaration.indexOf(':');\n if (colonIndex > 0) {\n const key = declaration.slice(0, colonIndex).trim();\n const value = declaration.slice(colonIndex + 1).trim();\n styles.push([key, value]);\n }\n }\n\n const duration = performance.now() - start;\n\n if (duration > DURATION_DELAY_TRIGGER) {\n console.log(\n `parseStyleAttribute: ${duration.toFixed(3)}ms, styleString length: ${styleString.length}, styles count: ${styles.length}`\n );\n }\n\n return styles;\n};\n\n/**\n * Convert an attribute value to a Node prop value.\n */\nexport const attributeValueToNodePropValue = (\n tag: string,\n key: string,\n value: string,\n sanitizeUrlFn: (\n value: string,\n tag: string,\n attribute: string\n ) => string | null\n): any => {\n if (key === 'style') {\n return parseStyleAttribute(value).reduce(\n (styles, [styleKey, styleValue]) => {\n const camelCasedKey = styleKey.replace(/(-[a-z])/g, (substr) =>\n substr[1].toUpperCase()\n );\n\n (styles as Record<string, any>)[camelCasedKey] = sanitizeUrlFn(\n styleValue,\n tag,\n styleKey\n );\n\n return styles;\n },\n {} as Record<string, any>\n );\n } else if (ATTRIBUTES_TO_SANITIZE.indexOf(key) !== -1) {\n return sanitizeUrlFn(unescapeString(value), tag, key);\n } else if (value.match(INTERPOLATION_R)) {\n value = unescapeString(value.slice(1, value.length - 1));\n }\n\n if (value === 'true') {\n return true;\n } else if (value === 'false') {\n return false;\n }\n\n return value;\n};\n\n// ============================================================================\n// TABLE PARSING\n// ============================================================================\n\n/**\n * Parse table alignment from a separator row.\n */\nexport const parseTableAlignCapture = (\n alignCapture: string\n): 'left' | 'right' | 'center' => {\n if (TABLE_RIGHT_ALIGN.test(alignCapture)) {\n return 'right';\n } else if (TABLE_CENTER_ALIGN.test(alignCapture)) {\n return 'center';\n } else if (TABLE_LEFT_ALIGN.test(alignCapture)) {\n return 'left';\n }\n\n return 'left';\n};\n\n/**\n * Parse table alignment row.\n */\nexport const parseTableAlign = (\n source: string\n): ('left' | 'right' | 'center')[] => {\n const alignText = source.replace(TABLE_TRIM_PIPES, '').split('|');\n return alignText.map(parseTableAlignCapture);\n};\n\n/**\n * Parse a single table row.\n */\nexport const parseTableRow = (\n source: string,\n parse: NestedParser,\n state: ParseState,\n tableOutput: boolean\n): ParserResult[][] => {\n const start = performance.now();\n const prevInTable = state.inTable;\n\n state.inTable = true;\n\n const cells: ParserResult[][] = [[]];\n let acc = '';\n\n const flush = (): void => {\n if (!acc) return;\n\n const cell = cells[cells.length - 1];\n cell.push.apply(cell, parse(acc, state));\n acc = '';\n };\n\n source\n .trim()\n .split(/(`[^`]*`|\\\\\\||\\|)/)\n .filter(Boolean)\n .forEach((fragment, i, arr) => {\n if (fragment.trim() === '|') {\n flush();\n\n if (tableOutput) {\n if (i !== 0 && i !== arr.length - 1) {\n cells.push([]);\n }\n\n return;\n }\n }\n\n acc += fragment;\n });\n\n flush();\n\n state.inTable = prevInTable;\n\n const duration = performance.now() - start;\n if (duration > DURATION_DELAY_TRIGGER) {\n console.log(\n `parseTableRow: ${duration.toFixed(3)}ms, source length: ${source.length}, cells count: ${cells.length}`\n );\n }\n\n return cells;\n};\n\n/**\n * Parse table cells (multiple rows).\n */\nexport const parseTableCells = (\n source: string,\n parse: NestedParser,\n state: ParseState\n): ParserResult[][][] => {\n const start = performance.now();\n const rowsText = source.trim().split('\\n');\n\n const result = rowsText.map((rowText) =>\n parseTableRow(rowText, parse, state, true)\n );\n\n const duration = performance.now() - start;\n if (duration > DURATION_DELAY_TRIGGER) {\n console.log(\n `parseTableCells: ${duration.toFixed(3)}ms, source length: ${source.length}, rows count: ${rowsText.length}`\n );\n }\n\n return result;\n};\n\n// ============================================================================\n// PARSING HELPERS\n// ============================================================================\n\n/**\n * Check if a rule qualifies for the current source and state.\n */\nexport const qualifies = (\n source: string,\n state: ParseState,\n qualify: NonNullable<Rule<any>['_qualify']>\n): boolean => {\n if (Array.isArray(qualify)) {\n for (let i = 0; i < qualify.length; i++) {\n if (startsWith(source, qualify[i])) return true;\n }\n\n return false;\n }\n\n return (qualify as (source: string, state: ParseState) => boolean)(\n source,\n state\n );\n};\n\n/**\n * Marks a matcher function as eligible for being run inside an inline context.\n */\nexport const allowInline = <T extends (...args: any[]) => any>(\n fn: T\n): T & { inline: 1 } => {\n (fn as any).inline = 1;\n return fn as T & { inline: 1 };\n};\n\n/**\n * Creates a match function for an inline scoped element from a regex.\n */\nexport const inlineRegex = (regex: RegExp) =>\n allowInline((source: string, state: ParseState): RegExpMatchArray | null => {\n if (state.inline) {\n return regex.exec(source);\n } else {\n return null;\n }\n });\n\n/**\n * Creates a match function for inline elements except links.\n */\nexport const simpleInlineRegex = (regex: RegExp) =>\n allowInline((source: string, state: ParseState): RegExpMatchArray | null => {\n if (state.inline || state.simple) {\n return regex.exec(source);\n } else {\n return null;\n }\n });\n\n/**\n * Creates a match function for a block scoped element from a regex.\n */\nexport const blockRegex =\n (regex: RegExp) =>\n (source: string, state: ParseState): RegExpMatchArray | null => {\n if (state.inline || state.simple) {\n return null;\n } else {\n return regex.exec(source);\n }\n };\n\n/**\n * Creates a match function from a regex, ignoring block/inline scope.\n */\nexport const anyScopeRegex = (\n fn: RegExp | ((source: string, state: ParseState) => RegExpMatchArray | null)\n) =>\n allowInline((source: string, state: ParseState): RegExpMatchArray | null => {\n if (typeof fn === 'function') {\n return fn(source, state);\n }\n return fn.exec(source);\n });\n\n/**\n * Parse inline content (including links).\n */\nexport const parseInline = (\n parse: NestedParser,\n children: string,\n state: ParseState\n): ParserResult[] => {\n const start = performance.now();\n const isCurrentlyInline = state.inline ?? false;\n const isCurrentlySimple = state.simple ?? false;\n state.inline = true;\n state.simple = true;\n const result = parse(children, state);\n state.inline = isCurrentlyInline;\n state.simple = isCurrentlySimple;\n\n const duration = performance.now() - start;\n if (duration > DURATION_DELAY_TRIGGER) {\n console.log(\n `parseInline: ${duration.toFixed(3)}ms, children length: ${children.length}, result count: ${result.length}`\n );\n }\n\n return result;\n};\n\n/**\n * Parse simple inline content (no links).\n */\nexport const parseSimpleInline = (\n parse: NestedParser,\n children: string,\n state: ParseState\n): ParserResult[] => {\n const start = performance.now();\n const isCurrentlyInline = state.inline ?? false;\n const isCurrentlySimple = state.simple ?? false;\n\n state.inline = false;\n state.simple = true;\n const result = parse(children, state);\n state.inline = isCurrentlyInline;\n state.simple = isCurrentlySimple;\n\n const duration = performance.now() - start;\n if (duration > DURATION_DELAY_TRIGGER) {\n console.log(\n `parseSimpleInline: ${duration.toFixed(3)}ms, children length: ${children.length}, result count: ${result.length}`\n );\n }\n\n return result;\n};\n\n/**\n * Parse block content.\n */\nexport const parseBlock = (\n parse: NestedParser,\n children: string,\n state: ParseState = {}\n): ParserResult[] => {\n const start = performance.now();\n const isCurrentlyInline = state.inline || false;\n state.inline = false;\n const normalizedChildren = trimEnd(children);\n const needsTerminator = /\\n\\n$/.test(normalizedChildren) === false;\n const blockInput = needsTerminator\n ? normalizedChildren.endsWith('\\n')\n ? `${normalizedChildren}\\n`\n : `${normalizedChildren}\\n\\n`\n : normalizedChildren;\n\n const result = parse(blockInput, state);\n state.inline = isCurrentlyInline;\n\n const duration = performance.now() - start;\n if (duration > DURATION_DELAY_TRIGGER) {\n console.log(\n `parseBlock: ${duration.toFixed(3)}ms, children length: ${children.length}, result count: ${result.length}`\n );\n }\n\n return result;\n};\n\n/**\n * Helper to parse capture group 2 as inline content.\n */\nexport const parseCaptureInline = (\n capture: RegExpMatchArray,\n parse: NestedParser,\n state: ParseState\n): { children: ParserResult[] } => {\n return {\n children: parseInline(parse, capture[2], state),\n };\n};\n\n/**\n * Helper that captures nothing (empty object).\n */\nexport const captureNothing = (): Record<string, never> => ({});\n\n/**\n * Helper that renders nothing (null).\n */\nexport const renderNothing = (): null => null;\n\n/**\n * Check if any regex in a list matches the input.\n */\nexport const some = (regexes: RegExp[], input: string): boolean => {\n for (let i = 0; i < regexes.length; i++) {\n if (regexes[i].test(input)) {\n return true;\n }\n }\n return false;\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utils.mjs","names":[],"sources":["../../../src/markdown/utils.ts"],"sourcesContent":["import {\n ATTRIBUTES_TO_SANITIZE,\n CAPTURE_LETTER_AFTER_HYPHEN,\n CR_NEWLINE_R,\n DURATION_DELAY_TRIGGER,\n FORMFEED_R,\n HTML_CUSTOM_ATTR_R,\n INTERPOLATION_R,\n TAB_R,\n TABLE_CENTER_ALIGN,\n TABLE_LEFT_ALIGN,\n TABLE_RIGHT_ALIGN,\n TABLE_TRIM_PIPES,\n UNESCAPE_R,\n} from './constants';\nimport type { NestedParser, ParserResult, ParseState, Rule } from './types';\n\n// ============================================================================\n// STRING UTILITIES\n// ============================================================================\n\n/**\n * Trim trailing whitespace from a string.\n */\nexport const trimEnd = (str: string): string => {\n let end = str.length;\n\n while (end > 0 && str[end - 1] <= ' ') end--;\n\n return str.slice(0, end);\n};\n\n/**\n * Check if string starts with prefix.\n */\nexport const startsWith = (str: string, prefix: string): boolean => {\n return str.startsWith(prefix);\n};\n\n/**\n * Remove symmetrical leading and trailing quotes.\n */\nexport const unquote = (str: string): string => {\n const first = str[0];\n\n if (\n (first === '\"' || first === \"'\") &&\n str.length >= 2 &&\n str[str.length - 1] === first\n ) {\n return str.slice(1, -1);\n }\n\n return str;\n};\n\n/**\n * Unescape backslash-escaped characters.\n */\nexport const unescapeString = (rawString: string): string =>\n rawString ? rawString.replace(UNESCAPE_R, '$1') : rawString;\n\n/**\n * Join class names, filtering out falsy values.\n */\nexport const cx = (...args: any[]): string => args.filter(Boolean).join(' ');\n\n/**\n * Get a nested property from an object using dot notation.\n */\nexport const get = (src: any, path: string, fb?: any): any => {\n let ptr = src;\n const frags = path.split('.');\n\n while (frags.length) {\n ptr = ptr[frags[0]];\n\n if (ptr === undefined) break;\n else frags.shift();\n }\n\n return ptr ?? fb;\n};\n\n// ============================================================================\n// SLUGIFY\n// ============================================================================\n\n/**\n * Convert a string to a URL-safe slug.\n * Based on https://stackoverflow.com/a/18123682/1141611\n */\nexport const slugify = (str: string): string =>\n str\n .replace(/[ÀÁÂÃÄÅàáâãä忯]/g, 'a')\n .replace(/[çÇ]/g, 'c')\n .replace(/[ðÐ]/g, 'd')\n .replace(/[ÈÉÊËéèêë]/g, 'e')\n .replace(/[ÏïÎîÍíÌì]/g, 'i')\n .replace(/[Ññ]/g, 'n')\n .replace(/[øØœŒÕõÔôÓóÒò]/g, 'o')\n .replace(/[ÜüÛûÚúÙù]/g, 'u')\n .replace(/[ŸÿÝý]/g, 'y')\n .replace(/[^a-z0-9- ]/gi, '')\n .replace(/ /gi, '-')\n .toLowerCase();\n\n// ============================================================================\n// SANITIZER\n// ============================================================================\n\nconst SANITIZE_R = /(javascript|vbscript|data(?!:image)):/i;\n\n/**\n * Sanitize URLs to prevent XSS attacks.\n * Returns null if the URL is unsafe.\n */\nexport const sanitizer = (input: string): string | null => {\n try {\n const decoded = decodeURIComponent(input).replace(/[^A-Za-z0-9/:]/g, '');\n\n if (SANITIZE_R.test(decoded)) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n 'Input contains an unsafe JavaScript/VBScript/data expression, it will not be rendered.',\n decoded\n );\n }\n\n return null;\n }\n } catch (_e) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n 'Input could not be decoded due to malformed syntax or characters, it will not be rendered.',\n input\n );\n }\n\n // decodeURIComponent sometimes throws a URIError\n return null;\n }\n\n return input;\n};\n\n// ============================================================================\n// WHITESPACE NORMALIZATION\n// ============================================================================\n\n/**\n * Normalize whitespace in source string.\n */\nexport const normalizeWhitespace = (source: string): string => {\n const start = performance.now();\n const result = source\n .replace(CR_NEWLINE_R, '\\n')\n .replace(FORMFEED_R, '')\n .replace(TAB_R, ' ');\n\n const duration = performance.now() - start;\n\n if (duration > DURATION_DELAY_TRIGGER) {\n console.log(\n `normalizeWhitespace: ${duration.toFixed(3)}ms, source length: ${source.length}`\n );\n }\n\n return result;\n};\n\n/**\n * Safely remove a uniform leading indentation from lines, but do NOT touch\n * the content inside fenced code blocks (``` or ~~~).\n */\nexport const trimLeadingWhitespaceOutsideFences = (\n text: string,\n whitespace: string\n): string => {\n const start = performance.now();\n if (!whitespace) return text;\n\n const lines = text.split('\\n');\n let inFence = false;\n let fenceToken: string | null = null;\n\n const isFenceLine = (line: string): RegExpMatchArray | null =>\n line.match(/^\\s*(`{3,}|~{3,})/);\n\n const maybeToggleFence = (line: string): void => {\n const m = isFenceLine(line);\n\n if (!m) return;\n\n const token = m[1];\n\n if (!inFence) {\n inFence = true;\n fenceToken = token;\n } else if (fenceToken && line.includes(fenceToken)) {\n inFence = false;\n fenceToken = null;\n }\n };\n\n const out = lines.map((line) => {\n const fenceMatch = isFenceLine(line);\n if (fenceMatch) {\n const trimmedFenceLine = line.startsWith(whitespace)\n ? line.slice(whitespace.length)\n : line;\n maybeToggleFence(line);\n return trimmedFenceLine;\n }\n\n if (inFence) {\n return line;\n }\n\n return line.startsWith(whitespace) ? line.slice(whitespace.length) : line;\n });\n\n const result = out.join('\\n');\n\n const duration = performance.now() - start;\n if (duration > DURATION_DELAY_TRIGGER) {\n console.log(\n `trimLeadingWhitespaceOutsideFences: ${duration.toFixed(3)}ms, text length: ${text.length}, lines count: ${lines.length}`\n );\n }\n\n return result;\n};\n\n/**\n * Normalize HTML attribute key to JSX prop name.\n */\nexport const normalizeAttributeKey = (key: string): string => {\n const hyphenIndex = key.indexOf('-');\n\n if (hyphenIndex !== -1 && key.match(HTML_CUSTOM_ATTR_R) === null) {\n key = key.replace(CAPTURE_LETTER_AFTER_HYPHEN, (_, letter) => {\n return letter.toUpperCase();\n });\n }\n\n return key;\n};\n\ntype StyleTuple = [key: string, value: string];\n\n/**\n * Parse a CSS style string into an array of [key, value] tuples.\n */\nexport const parseStyleAttribute = (styleString: string): StyleTuple[] => {\n const start = performance.now();\n const styles: StyleTuple[] = [];\n let buffer = '';\n let inUrl = false;\n let inQuotes = false;\n let quoteChar: '\"' | \"'\" | '' = '';\n\n if (!styleString) return styles;\n\n for (let i = 0; i < styleString.length; i++) {\n const char = styleString[i];\n\n if ((char === '\"' || char === \"'\") && !inUrl) {\n if (!inQuotes) {\n inQuotes = true;\n quoteChar = char;\n } else if (char === quoteChar) {\n inQuotes = false;\n quoteChar = '';\n }\n }\n\n if (char === '(' && buffer.endsWith('url')) {\n inUrl = true;\n } else if (char === ')' && inUrl) {\n inUrl = false;\n }\n\n if (char === ';' && !inQuotes && !inUrl) {\n const declaration = buffer.trim();\n\n if (declaration) {\n const colonIndex = declaration.indexOf(':');\n\n if (colonIndex > 0) {\n const key = declaration.slice(0, colonIndex).trim();\n const value = declaration.slice(colonIndex + 1).trim();\n styles.push([key, value]);\n }\n }\n buffer = '';\n } else {\n buffer += char;\n }\n }\n\n const declaration = buffer.trim();\n\n if (declaration) {\n const colonIndex = declaration.indexOf(':');\n if (colonIndex > 0) {\n const key = declaration.slice(0, colonIndex).trim();\n const value = declaration.slice(colonIndex + 1).trim();\n styles.push([key, value]);\n }\n }\n\n const duration = performance.now() - start;\n\n if (duration > DURATION_DELAY_TRIGGER) {\n console.log(\n `parseStyleAttribute: ${duration.toFixed(3)}ms, styleString length: ${styleString.length}, styles count: ${styles.length}`\n );\n }\n\n return styles;\n};\n\n/**\n * Convert an attribute value to a Node prop value.\n */\nexport const attributeValueToNodePropValue = (\n tag: string,\n key: string,\n value: string,\n sanitizeUrlFn: (\n value: string,\n tag: string,\n attribute: string\n ) => string | null\n): any => {\n if (key === 'style') {\n return parseStyleAttribute(value).reduce(\n (styles, [styleKey, styleValue]) => {\n const camelCasedKey = styleKey.replace(/(-[a-z])/g, (substr) =>\n substr[1].toUpperCase()\n );\n\n (styles as Record<string, any>)[camelCasedKey] = sanitizeUrlFn(\n styleValue,\n tag,\n styleKey\n );\n\n return styles;\n },\n {} as Record<string, any>\n );\n } else if (ATTRIBUTES_TO_SANITIZE.indexOf(key) !== -1) {\n return sanitizeUrlFn(unescapeString(value), tag, key);\n } else if (value.match(INTERPOLATION_R)) {\n value = unescapeString(value.slice(1, value.length - 1));\n }\n\n if (value === 'true') {\n return true;\n } else if (value === 'false') {\n return false;\n }\n\n return value;\n};\n\n// ============================================================================\n// TABLE PARSING\n// ============================================================================\n\n/**\n * Parse table alignment from a separator row.\n */\nexport const parseTableAlignCapture = (\n alignCapture: string\n): 'left' | 'right' | 'center' => {\n if (TABLE_RIGHT_ALIGN.test(alignCapture)) {\n return 'right';\n } else if (TABLE_CENTER_ALIGN.test(alignCapture)) {\n return 'center';\n } else if (TABLE_LEFT_ALIGN.test(alignCapture)) {\n return 'left';\n }\n\n return 'left';\n};\n\n/**\n * Parse table alignment row.\n */\nexport const parseTableAlign = (\n source: string\n): ('left' | 'right' | 'center')[] => {\n const alignText = source.replace(TABLE_TRIM_PIPES, '').split('|');\n return alignText.map(parseTableAlignCapture);\n};\n\n/**\n * Parse a single table row.\n */\nexport const parseTableRow = (\n source: string,\n parse: NestedParser,\n state: ParseState,\n tableOutput: boolean\n): ParserResult[][] => {\n const start = performance.now();\n const prevInTable = state.inTable;\n\n state.inTable = true;\n\n const cells: ParserResult[][] = [[]];\n let acc = '';\n\n const flush = (): void => {\n if (!acc) return;\n\n const cell = cells[cells.length - 1];\n cell.push.apply(cell, parse(acc, state));\n acc = '';\n };\n\n source\n .trim()\n .split(/(`[^`]*`|\\\\\\||\\|)/)\n .filter(Boolean)\n .forEach((fragment, i, arr) => {\n if (fragment.trim() === '|') {\n flush();\n\n if (tableOutput) {\n if (i !== 0 && i !== arr.length - 1) {\n cells.push([]);\n }\n\n return;\n }\n }\n\n acc += fragment;\n });\n\n flush();\n\n state.inTable = prevInTable;\n\n const duration = performance.now() - start;\n if (duration > DURATION_DELAY_TRIGGER) {\n console.log(\n `parseTableRow: ${duration.toFixed(3)}ms, source length: ${source.length}, cells count: ${cells.length}`\n );\n }\n\n return cells;\n};\n\n/**\n * Parse table cells (multiple rows).\n */\nexport const parseTableCells = (\n source: string,\n parse: NestedParser,\n state: ParseState\n): ParserResult[][][] => {\n const start = performance.now();\n const rowsText = source.trim().split('\\n');\n\n const result = rowsText.map((rowText) =>\n parseTableRow(rowText, parse, state, true)\n );\n\n const duration = performance.now() - start;\n if (duration > DURATION_DELAY_TRIGGER) {\n console.log(\n `parseTableCells: ${duration.toFixed(3)}ms, source length: ${source.length}, rows count: ${rowsText.length}`\n );\n }\n\n return result;\n};\n\n// ============================================================================\n// PARSING HELPERS\n// ============================================================================\n\n/**\n * Check if a rule qualifies for the current source and state.\n */\nexport const qualifies = (\n source: string,\n state: ParseState,\n qualify: NonNullable<Rule<any>['_qualify']>\n): boolean => {\n if (Array.isArray(qualify)) {\n for (let i = 0; i < qualify.length; i++) {\n if (startsWith(source, qualify[i])) return true;\n }\n\n return false;\n }\n\n return (qualify as (source: string, state: ParseState) => boolean)(\n source,\n state\n );\n};\n\n/**\n * Marks a matcher function as eligible for being run inside an inline context.\n */\nexport const allowInline = <T extends (...args: any[]) => any>(\n fn: T\n): T & { inline: 1 } => {\n (fn as any).inline = 1;\n return fn as T & { inline: 1 };\n};\n\n/**\n * Creates a match function for an inline scoped element from a regex.\n */\nexport const inlineRegex = (regex: RegExp) =>\n allowInline((source: string, state: ParseState): RegExpMatchArray | null => {\n if (state.inline) {\n return regex.exec(source);\n } else {\n return null;\n }\n });\n\n/**\n * Creates a match function for inline elements except links.\n */\nexport const simpleInlineRegex = (regex: RegExp) =>\n allowInline((source: string, state: ParseState): RegExpMatchArray | null => {\n if (state.inline || state.simple) {\n return regex.exec(source);\n } else {\n return null;\n }\n });\n\n/**\n * Creates a match function for a block scoped element from a regex.\n */\nexport const blockRegex =\n (regex: RegExp) =>\n (source: string, state: ParseState): RegExpMatchArray | null => {\n if (state.inline || state.simple) {\n return null;\n } else {\n return regex.exec(source);\n }\n };\n\n/**\n * Creates a match function from a regex, ignoring block/inline scope.\n */\nexport const anyScopeRegex = (\n fn: RegExp | ((source: string, state: ParseState) => RegExpMatchArray | null)\n) =>\n allowInline((source: string, state: ParseState): RegExpMatchArray | null => {\n if (typeof fn === 'function') {\n return fn(source, state);\n }\n return fn.exec(source);\n });\n\n/**\n * Parse inline content (including links).\n */\nexport const parseInline = (\n parse: NestedParser,\n children: string,\n state: ParseState\n): ParserResult[] => {\n const start = performance.now();\n const isCurrentlyInline = state.inline ?? false;\n const isCurrentlySimple = state.simple ?? false;\n state.inline = true;\n state.simple = true;\n const result = parse(children, state);\n state.inline = isCurrentlyInline;\n state.simple = isCurrentlySimple;\n\n const duration = performance.now() - start;\n if (duration > DURATION_DELAY_TRIGGER) {\n console.log(\n `parseInline: ${duration.toFixed(3)}ms, children length: ${children.length}, result count: ${result.length}`\n );\n }\n\n return result;\n};\n\n/**\n * Parse simple inline content (no links).\n */\nexport const parseSimpleInline = (\n parse: NestedParser,\n children: string,\n state: ParseState\n): ParserResult[] => {\n const start = performance.now();\n const isCurrentlyInline = state.inline ?? false;\n const isCurrentlySimple = state.simple ?? false;\n\n state.inline = false;\n state.simple = true;\n const result = parse(children, state);\n state.inline = isCurrentlyInline;\n state.simple = isCurrentlySimple;\n\n const duration = performance.now() - start;\n if (duration > DURATION_DELAY_TRIGGER) {\n console.log(\n `parseSimpleInline: ${duration.toFixed(3)}ms, children length: ${children.length}, result count: ${result.length}`\n );\n }\n\n return result;\n};\n\n/**\n * Parse block content.\n */\nexport const parseBlock = (\n parse: NestedParser,\n children: string,\n state: ParseState = {}\n): ParserResult[] => {\n const start = performance.now();\n const isCurrentlyInline = state.inline || false;\n state.inline = false;\n const normalizedChildren = trimEnd(children);\n const needsTerminator = /\\n\\n$/.test(normalizedChildren) === false;\n const blockInput = needsTerminator\n ? normalizedChildren.endsWith('\\n')\n ? `${normalizedChildren}\\n`\n : `${normalizedChildren}\\n\\n`\n : normalizedChildren;\n\n const result = parse(blockInput, state);\n state.inline = isCurrentlyInline;\n\n const duration = performance.now() - start;\n if (duration > DURATION_DELAY_TRIGGER) {\n console.log(\n `parseBlock: ${duration.toFixed(3)}ms, children length: ${children.length}, result count: ${result.length}`\n );\n }\n\n return result;\n};\n\n/**\n * Helper to parse capture group 2 as inline content.\n */\nexport const parseCaptureInline = (\n capture: RegExpMatchArray,\n parse: NestedParser,\n state: ParseState\n): { children: ParserResult[] } => {\n return {\n children: parseInline(parse, capture[2], state),\n };\n};\n\n/**\n * Helper that captures nothing (empty object).\n */\nexport const captureNothing = (): Record<string, never> => ({});\n\n/**\n * Helper that renders nothing (null).\n */\nexport const renderNothing = (): null => null;\n\n/**\n * Check if any regex in a list matches the input.\n */\nexport const some = (regexes: RegExp[], input: string): boolean => {\n for (let i = 0; i < regexes.length; i++) {\n if (regexes[i].test(input)) {\n return true;\n }\n }\n return false;\n};\n"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { NodeProps, Plugins } from "../interpreter/getContent/plugins.js";
|
|
2
2
|
import "../interpreter/index.js";
|
|
3
|
-
import * as
|
|
3
|
+
import * as _intlayer_types17 from "@intlayer/types";
|
|
4
4
|
import { ContentNode, DeclaredLocales, Dictionary, LocalesValues } from "@intlayer/types";
|
|
5
5
|
|
|
6
6
|
//#region src/deepTransformPlugins/getFilterMissingTranslationsContent.d.ts
|
|
@@ -24,12 +24,12 @@ declare const getFilterMissingTranslationsContent: <T extends ContentNode, L ext
|
|
|
24
24
|
declare const getFilterMissingTranslationsDictionary: (dictionary: Dictionary, localeToCheck: LocalesValues) => {
|
|
25
25
|
content: any;
|
|
26
26
|
$schema?: "https://intlayer.org/schema.json";
|
|
27
|
-
id?:
|
|
27
|
+
id?: _intlayer_types17.DictionaryId;
|
|
28
28
|
projectIds?: string[];
|
|
29
|
-
localId?:
|
|
30
|
-
localIds?:
|
|
31
|
-
format?:
|
|
32
|
-
key:
|
|
29
|
+
localId?: _intlayer_types17.LocalDictionaryId;
|
|
30
|
+
localIds?: _intlayer_types17.LocalDictionaryId[];
|
|
31
|
+
format?: _intlayer_types17.DictionaryFormat;
|
|
32
|
+
key: _intlayer_types17.DictionaryKey;
|
|
33
33
|
title?: string;
|
|
34
34
|
description?: string;
|
|
35
35
|
versions?: string[];
|
|
@@ -37,12 +37,12 @@ declare const getFilterMissingTranslationsDictionary: (dictionary: Dictionary, l
|
|
|
37
37
|
filePath?: string;
|
|
38
38
|
tags?: string[];
|
|
39
39
|
locale?: LocalesValues;
|
|
40
|
-
contentAutoTransformation?:
|
|
41
|
-
fill?:
|
|
40
|
+
contentAutoTransformation?: _intlayer_types17.ContentAutoTransformation;
|
|
41
|
+
fill?: _intlayer_types17.Fill;
|
|
42
42
|
filled?: true;
|
|
43
43
|
priority?: number;
|
|
44
|
-
importMode?:
|
|
45
|
-
location?:
|
|
44
|
+
importMode?: _intlayer_types17.ImportMode;
|
|
45
|
+
location?: _intlayer_types17.DictionaryLocation;
|
|
46
46
|
schema: undefined;
|
|
47
47
|
};
|
|
48
48
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getFilterMissingTranslationsContent.d.ts","names":[],"sources":["../../../src/deepTransformPlugins/getFilterMissingTranslationsContent.ts"],"mappings":";;;;;;;cAmMa,mCAAA,GACX,aAAA,EAAe,aAAA,KACd,OAAA;;AAFH;;;;;;;;;AA8LA;;;;cAAa,mCAAA,aACD,WAAA,YACA,aAAA,GAAgB,eAAA,EAE1B,IAAA,EAAM,CAAA,EACN,aAAA,EAAe,CAAA,EACf,SAAA,EAAW,SAAA;AAAA,cAoBA,sCAAA,GACX,UAAA,EAAY,UAAA,EACZ,aAAA,EAAe,aAAA;;;OAAa,
|
|
1
|
+
{"version":3,"file":"getFilterMissingTranslationsContent.d.ts","names":[],"sources":["../../../src/deepTransformPlugins/getFilterMissingTranslationsContent.ts"],"mappings":";;;;;;;cAmMa,mCAAA,GACX,aAAA,EAAe,aAAA,KACd,OAAA;;AAFH;;;;;;;;;AA8LA;;;;cAAa,mCAAA,aACD,WAAA,YACA,aAAA,GAAgB,eAAA,EAE1B,IAAA,EAAM,CAAA,EACN,aAAA,EAAe,CAAA,EACf,SAAA,EAAW,SAAA;AAAA,cAoBA,sCAAA,GACX,UAAA,EAAY,UAAA,EACZ,aAAA,EAAe,aAAA;;;OAAa,iBAAA,CAAA,YAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { NodeProps } from "../interpreter/getContent/plugins.js";
|
|
2
2
|
import "../interpreter/index.js";
|
|
3
|
-
import * as
|
|
3
|
+
import * as _intlayer_types8 from "@intlayer/types";
|
|
4
4
|
import { ContentNode, Dictionary, LocalesValues } from "@intlayer/types";
|
|
5
5
|
|
|
6
6
|
//#region src/deepTransformPlugins/getFilteredLocalesContent.d.ts
|
|
@@ -8,12 +8,12 @@ declare const getFilteredLocalesContent: (node: ContentNode, locales: LocalesVal
|
|
|
8
8
|
declare const getFilteredLocalesDictionary: (dictionary: Dictionary, locale: LocalesValues | LocalesValues[]) => {
|
|
9
9
|
content: any;
|
|
10
10
|
$schema?: "https://intlayer.org/schema.json";
|
|
11
|
-
id?:
|
|
11
|
+
id?: _intlayer_types8.DictionaryId;
|
|
12
12
|
projectIds?: string[];
|
|
13
|
-
localId?:
|
|
14
|
-
localIds?:
|
|
15
|
-
format?:
|
|
16
|
-
key:
|
|
13
|
+
localId?: _intlayer_types8.LocalDictionaryId;
|
|
14
|
+
localIds?: _intlayer_types8.LocalDictionaryId[];
|
|
15
|
+
format?: _intlayer_types8.DictionaryFormat;
|
|
16
|
+
key: _intlayer_types8.DictionaryKey;
|
|
17
17
|
title?: string;
|
|
18
18
|
description?: string;
|
|
19
19
|
versions?: string[];
|
|
@@ -21,12 +21,12 @@ declare const getFilteredLocalesDictionary: (dictionary: Dictionary, locale: Loc
|
|
|
21
21
|
filePath?: string;
|
|
22
22
|
tags?: string[];
|
|
23
23
|
locale?: LocalesValues;
|
|
24
|
-
contentAutoTransformation?:
|
|
25
|
-
fill?:
|
|
24
|
+
contentAutoTransformation?: _intlayer_types8.ContentAutoTransformation;
|
|
25
|
+
fill?: _intlayer_types8.Fill;
|
|
26
26
|
filled?: true;
|
|
27
27
|
priority?: number;
|
|
28
|
-
importMode?:
|
|
29
|
-
location?:
|
|
28
|
+
importMode?: _intlayer_types8.ImportMode;
|
|
29
|
+
location?: _intlayer_types8.DictionaryLocation;
|
|
30
30
|
schema: undefined;
|
|
31
31
|
};
|
|
32
32
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getFilteredLocalesContent.d.ts","names":[],"sources":["../../../src/deepTransformPlugins/getFilteredLocalesContent.ts"],"mappings":";;;;;;cAsCa,yBAAA,GACX,IAAA,EAAM,WAAA,EACN,OAAA,EAAS,aAAA,GAAgB,aAAA,IACzB,SAAA,EAAW,SAAA;AAAA,cAwBA,4BAAA,GACX,UAAA,EAAY,UAAA,EACZ,MAAA,EAAQ,aAAA,GAAgB,aAAA;;;OAAa,
|
|
1
|
+
{"version":3,"file":"getFilteredLocalesContent.d.ts","names":[],"sources":["../../../src/deepTransformPlugins/getFilteredLocalesContent.ts"],"mappings":";;;;;;cAsCa,yBAAA,GACX,IAAA,EAAM,WAAA,EACN,OAAA,EAAS,aAAA,GAAgB,aAAA,IACzB,SAAA,EAAW,SAAA;AAAA,cAwBA,4BAAA,GACX,UAAA,EAAY,UAAA,EACZ,MAAA,EAAQ,aAAA,GAAgB,aAAA;;;OAAa,gBAAA,CAAA,YAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as _intlayer_types26 from "@intlayer/types";
|
|
2
2
|
import { Dictionary } from "@intlayer/types";
|
|
3
3
|
|
|
4
4
|
//#region src/dictionaryManipulator/orderDictionaries.d.ts
|
|
@@ -9,7 +9,7 @@ import { Dictionary } from "@intlayer/types";
|
|
|
9
9
|
* @param priorityStrategy - The priority strategy ('local_first' or 'distant_first')
|
|
10
10
|
* @returns Ordered array of dictionaries
|
|
11
11
|
*/
|
|
12
|
-
declare const orderDictionaries: (dictionaries: Dictionary[], configuration?:
|
|
12
|
+
declare const orderDictionaries: (dictionaries: Dictionary[], configuration?: _intlayer_types26.IntlayerConfig) => Dictionary[];
|
|
13
13
|
//#endregion
|
|
14
14
|
export { orderDictionaries };
|
|
15
15
|
//# sourceMappingURL=orderDictionaries.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orderDictionaries.d.ts","names":[],"sources":["../../../src/dictionaryManipulator/orderDictionaries.ts"],"mappings":";;;;;;;AAUA;;;;cAAa,iBAAA,GACX,YAAA,EAAc,UAAA,IACd,aAAA,GADwB,
|
|
1
|
+
{"version":3,"file":"orderDictionaries.d.ts","names":[],"sources":["../../../src/dictionaryManipulator/orderDictionaries.ts"],"mappings":";;;;;;;AAUA;;;;cAAa,iBAAA,GACX,YAAA,EAAc,UAAA,IACd,aAAA,GADwB,iBAAA,CACxB,cAAA,KACC,UAAA"}
|
|
@@ -112,6 +112,8 @@ interface IInterpreterPlugin<T, S, L extends LocalesValues> {
|
|
|
112
112
|
translation: TranslationCond<T, S, L>;
|
|
113
113
|
enumeration: EnumerationCond<T, S, L>;
|
|
114
114
|
condition: ConditionCond<T, S, L>;
|
|
115
|
+
insertion: InsertionCond<T, S, L>;
|
|
116
|
+
gender: GenderCond<T, S, L>;
|
|
115
117
|
nested: NestedCond<T, S, L>;
|
|
116
118
|
file: FileCond<T>;
|
|
117
119
|
}
|
|
@@ -122,6 +124,8 @@ type IInterpreterPluginState = {
|
|
|
122
124
|
translation: true;
|
|
123
125
|
enumeration: true;
|
|
124
126
|
condition: true;
|
|
127
|
+
insertion: true;
|
|
128
|
+
gender: true;
|
|
125
129
|
nested: true;
|
|
126
130
|
file: true;
|
|
127
131
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugins.d.ts","names":[],"sources":["../../../../src/interpreter/getContent/plugins.ts"],"mappings":";;;;;;;;;AAoCA;;;;;;;AAAA,KAAY,OAAA;EACV,EAAA;EACA,SAAA,GAAY,IAAA;EACZ,SAAA,GACE,IAAA,OACA,KAAA,EAAO,SAAA,EACP,WAAA,GAAc,IAAA,OAAW,KAAA,EAAO,SAAA;AAAA;;;;KAQxB,eAAA,iBAAgC,aAAA,IAAiB,CAAA;EAC3D,QAAA,EAAU,QAAA;EAAA,CACT,QAAA,CAAS,WAAA;AAAA,IAER,CAAA,SAAU,MAAA,CAAO,WAAA,aACf,CAAA,eAAgB,CAAA,GACd,oBAAA,CAAqB,CAAA,CAAE,CAAA,GAAI,CAAA,IAC3B,oBAAA,CAAqB,CAAA,OAAQ,CAAA,GAAI,CAAA;;cAK5B,iBAAA,GACX,MAAA,EAAQ,aAAA,EACR,QAAA,GAAW,aAAA,KACV,OAAA;;;;KA8BS,eAAA,YAA2B,CAAA;EACrC,QAAA,EAAU,QAAA;EAAA,CACT,QAAA,CAAS,WAAA;AAAA,KAGN,QAAA,aACG,oBAAA,CACH,CAAA,CAAE,QAAA,CAAS,WAAA,QAAmB,CAAA,CAAE,QAAA,CAAS,WAAA,IACzC,CAAA;;cAKO,iBAAA,EAAmB,OAAA;;;;KAwCpB,aAAA,YAAyB,CAAA;EACnC,QAAA,EAAU,QAAA;EAAA,CACT,QAAA,CAAS,SAAA;AAAA,KAGN,KAAA;EAAmB,KAAA;AAAA,MAChB,oBAAA,CACH,CAAA,CAAE,QAAA,CAAS,SAAA,QAAiB,CAAA,CAAE,QAAA,CAAS,SAAA,IACvC,CAAA;;cAKO,eAAA,EAAiB,OAAA;;;;KAwClB,aAAA,YAAyB,CAAA;EACnC,QAAA,EAAU,QAAA;EAAA,CACT,QAAA,CAAS,SAAA;EACV,MAAA;AAAA,KAGI,MAAA,UACQ,CAAA,2CAEL,oBAAA,SAA6B,CAAA;;cAIzB,eAAA,EAAiB,OAAA;;;;KA0DlB,UAAA,YAAsB,CAAA;EAChC,QAAA,EAAU,QAAA;EAAA,CACT,QAAA,CAAS,MAAA;AAAA,KAGN,KAAA,EAAO,MAAA,KACJ,oBAAA,CAAqB,CAAA,CAAE,QAAA,CAAS,MAAA,QAAc,CAAA,CAAE,QAAA,CAAS,MAAA,IAAU,CAAA;;cAI/D,YAAA,EAAc,OAAA;;;AA5N3B;KAqPY,UAAA,YAAsB,CAAA;EAChC,QAAA,EAAU,QAAA;EAAA,CACT,QAAA,CAAS,MAAA;AAAA,IAER,CAAA;EACE,aAAA,kBAA+B,cAAA;EAC/B,IAAA;AAAA,IAEA,gBAAA,CAAiB,CAAA,EAAG,CAAA,EAAG,CAAA;;cAKhB,YAAA,GAAgB,MAAA,GAAS,aAAA,KAAgB,OAAA;;;;KAgB1C,QAAA,MAAc,CAAA;EACxB,QAAA,EAAU,QAAA;EAAA,CACT,QAAA,CAAS,IAAA;EACV,OAAA;AAAA;;cAMW,UAAA,EAAY,OAAA;;;;;;;;UAmBR,SAAA;EACf,aAAA;EACA,OAAA,EAAS,OAAA;EACT,OAAA,GAAU,OAAA;EACV,MAAA,GAAS,MAAA;EACT,cAAA;EACA,QAAA;AAAA;;;;;UAOe,kBAAA,iBAAmC,aAAA;EAClD,WAAA,EAAa,eAAA,CAAgB,CAAA,EAAG,CAAA,EAAG,CAAA;EACnC,WAAA,EAAa,eAAA,CAAgB,CAAA,EAAG,CAAA,EAAG,CAAA;EACnC,SAAA,EAAW,aAAA,CAAc,CAAA,EAAG,CAAA,EAAG,CAAA;EAC/B,MAAA,EAAQ,UAAA,CAAW,CAAA,EAAG,CAAA,EAAG,CAAA;EACzB,IAAA,EAAM,QAAA,CAAS,CAAA;AAAA
|
|
1
|
+
{"version":3,"file":"plugins.d.ts","names":[],"sources":["../../../../src/interpreter/getContent/plugins.ts"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compiler.d.ts","names":[],"sources":["../../../src/markdown/compiler.ts"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"compiler.d.ts","names":[],"sources":["../../../src/markdown/compiler.ts"],"mappings":";;;cA0/Ba,OAAA,GACX,QAAA,UACA,GAAA,EAAK,eAAA,OACL,OAAA,GAAS,eAAA;AAAA,cA+NE,cAAA,GACV,GAAA,EAAK,eAAA,WACL,QAAA,UAAkB,OAAA,GAAU,eAAA;AAAA,cAGlB,kBAAA,GACX,QAAA,UACA,OAAA,EAAS,eAAA,EACT,OAAA,GAAS,cAAA"}
|
|
@@ -1,10 +1,4 @@
|
|
|
1
1
|
//#region src/markdown/constants.d.ts
|
|
2
|
-
/**
|
|
3
|
-
* Constants for the framework-agnostic markdown processor.
|
|
4
|
-
*
|
|
5
|
-
* This is part of the Solution F (Hybrid AST + Callback Pattern) implementation
|
|
6
|
-
* for GitHub Issue #289: Adapt markdown parser in custom packages
|
|
7
|
-
*/
|
|
8
2
|
/**
|
|
9
3
|
* Analogous to `node.type`. Please note that the values here may change at any time,
|
|
10
4
|
* so do not hard code against the value directly.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","names":[],"sources":["../../../src/markdown/constants.ts"],"mappings":";;
|
|
1
|
+
{"version":3,"file":"constants.d.ts","names":[],"sources":["../../../src/markdown/constants.ts"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.d.ts","names":[],"sources":["../../../src/markdown/parser.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"parser.d.ts","names":[],"sources":["../../../src/markdown/parser.ts"],"mappings":";;;;;AAaA;;;;;;;cAAa,SAAA,GACX,KAAA,EAAO,KAAA,OACJ,MAAA,UAAgB,KAAA,EAAO,UAAA,KAAe,YAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer.d.ts","names":[],"sources":["../../../src/markdown/renderer.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"renderer.d.ts","names":[],"sources":["../../../src/markdown/renderer.ts"],"mappings":";;;;;AAgBA;;;;;cAAa,SAAA,GAET,MAAA,GACE,GAAA,EAAK,YAAA,EACL,MAAA,EAAQ,UAAA,EACR,KAAA,EAAO,UAAA,kBAGV,GAAA,EAAK,YAAA,GAAe,YAAA,IAAgB,KAAA,GAAO,UAAA;;;;;;;;cAiEjC,cAAA,GACV,KAAA,EAAO,KAAA,EAAO,UAAA,GAAa,cAAA,MAC3B,GAAA,EAAK,YAAA,EAAc,MAAA,EAAQ,UAAA,EAAY,KAAA,EAAO,UAAA"}
|
|
@@ -1,11 +1,4 @@
|
|
|
1
1
|
//#region src/markdown/types.d.ts
|
|
2
|
-
/**
|
|
3
|
-
* Framework-agnostic markdown processor types.
|
|
4
|
-
* No framework-specific imports allowed in this file.
|
|
5
|
-
*
|
|
6
|
-
* This is part of the Solution F (Hybrid AST + Callback Pattern) implementation
|
|
7
|
-
* for GitHub Issue #289: Adapt markdown parser in custom packages
|
|
8
|
-
*/
|
|
9
2
|
/**
|
|
10
3
|
* Permissive element type - core doesn't care what frameworks accept.
|
|
11
4
|
* Can be a string tag ('div', 'span') or any component (function, object, class)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","names":[],"sources":["../../../src/markdown/types.ts"],"mappings":";;
|
|
1
|
+
{"version":3,"file":"types.d.ts","names":[],"sources":["../../../src/markdown/types.ts"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","names":[],"sources":["../../../src/markdown/utils.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","names":[],"sources":["../../../src/markdown/utils.ts"],"mappings":";;;;;AAwBA;cAAa,OAAA,GAAW,GAAA;;;;cAWX,UAAA,GAAc,GAAA,UAAa,MAAA;;;;cAO3B,OAAA,GAAW,GAAA;AAAxB;;;AAAA,cAiBa,cAAA,GAAkB,SAAA;;AAA/B;;cAMa,EAAA,MAAS,IAAA;;;AAAtB;cAKa,GAAA,GAAO,GAAA,OAAU,IAAA,UAAc,EAAA;;;;AAA5C;cAsBa,OAAA,GAAW,GAAA;;;;;cAyBX,SAAA,GAAa,KAAA;;;AAzB1B;cA6Da,mBAAA,GAAuB,MAAA;;;;AApCpC;cA0Da,kCAAA,GACX,IAAA,UACA,UAAA;;;;cA4DW,qBAAA,GAAyB,GAAA;AAAA,KAYjC,UAAA,IAAc,GAAA,UAAa,KAAA;;;;cAKnB,mBAAA,GAAuB,WAAA,aAAsB,UAAA;;;;cAwE7C,6BAAA,GACX,GAAA,UACA,GAAA,UACA,KAAA,UACA,aAAA,GACE,KAAA,UACA,GAAA,UACA,SAAA;AAhGJ;;;AAAA,cA0Ia,sBAAA,GACX,YAAA;;AAjIA;;cAiJW,eAAA,GACX,MAAA;;;AA3IF;cAoJa,aAAA,GACX,MAAA,UACA,KAAA,EAAO,YAAA,EACP,KAAA,EAAO,UAAA,EACP,WAAA,cACC,YAAA;;;;cAsDU,eAAA,GACX,MAAA,UACA,KAAA,EAAO,YAAA,EACP,KAAA,EAAO,UAAA,KACN,YAAA;;;;cAyBU,SAAA,GACX,MAAA,UACA,KAAA,EAAO,UAAA,EACP,OAAA,EAAS,WAAA,CAAY,IAAA;;;;cAmBV,WAAA,iBAA6B,IAAA,iBACxC,EAAA,EAAI,CAAA,KACH,CAAA;EAAM,MAAA;AAAA;;;AA3IT;cAmJa,WAAA,GAAe,KAAA,EAAO,MAAA,OAAM,MAAA,UACZ,KAAA,EAAS,UAAA,KAAa,gBAAA;;;;AAnInD;;cA8Ia,iBAAA,GAAqB,KAAA,EAAO,MAAA,OAAM,MAAA,UAClB,KAAA,EAAS,UAAA,KAAa,gBAAA;;;AArInD;;;AAAA,cAgJa,UAAA,GACV,KAAA,EAAO,MAAA,MACP,MAAA,UAAgB,KAAA,EAAO,UAAA,KAAa,gBAAA;;;;cAW1B,aAAA,GACX,EAAA,EAAI,MAAA,KAAW,MAAA,UAAgB,KAAA,EAAO,UAAA,KAAe,gBAAA,eAAwB,MAAA,UAElD,KAAA,EAAS,UAAA,KAAa,gBAAA;;;;;;cAUtC,WAAA,GACX,KAAA,EAAO,YAAA,EACP,QAAA,UACA,KAAA,EAAO,UAAA,KACN,YAAA;;;;cAuBU,iBAAA,GACX,KAAA,EAAO,YAAA,EACP,QAAA,UACA,KAAA,EAAO,UAAA,KACN,YAAA;;;;cAwBU,UAAA,GACX,KAAA,EAAO,YAAA,EACP,QAAA,UACA,KAAA,GAAO,UAAA,KACN,YAAA;;;;cA4BU,kBAAA,GACX,OAAA,EAAS,gBAAA,EACT,KAAA,EAAO,YAAA,EACP,KAAA,EAAO,UAAA;EACJ,QAAA,EAAU,YAAA;AAAA;;;;cASF,cAAA,QAAqB,MAAA;;AAtLlC;;cA2La,aAAA;;;;cAKA,IAAA,GAAQ,OAAA,EAAS,MAAA,IAAU,KAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@intlayer/core",
|
|
3
|
-
"version": "8.0.0",
|
|
3
|
+
"version": "8.0.1-canary.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Includes core Intlayer functions like translation, dictionary, and utility functions shared across multiple packages.",
|
|
6
6
|
"keywords": [
|
|
@@ -115,11 +115,11 @@
|
|
|
115
115
|
"typecheck": "tsc --noEmit --project tsconfig.types.json"
|
|
116
116
|
},
|
|
117
117
|
"dependencies": {
|
|
118
|
-
"@intlayer/api": "8.0.0",
|
|
119
|
-
"@intlayer/config": "8.0.0",
|
|
120
|
-
"@intlayer/dictionaries-entry": "8.0.0",
|
|
121
|
-
"@intlayer/types": "8.0.0",
|
|
122
|
-
"@intlayer/unmerged-dictionaries-entry": "8.0.0",
|
|
118
|
+
"@intlayer/api": "8.0.1-canary.0",
|
|
119
|
+
"@intlayer/config": "8.0.1-canary.0",
|
|
120
|
+
"@intlayer/dictionaries-entry": "8.0.1-canary.0",
|
|
121
|
+
"@intlayer/types": "8.0.1-canary.0",
|
|
122
|
+
"@intlayer/unmerged-dictionaries-entry": "8.0.1-canary.0",
|
|
123
123
|
"defu": "6.1.4"
|
|
124
124
|
},
|
|
125
125
|
"devDependencies": {
|