@intlayer/cli 5.5.10 → 5.6.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/README.md +1 -1
- package/dist/cjs/cli.cjs +83 -9
- package/dist/cjs/cli.cjs.map +1 -1
- package/dist/cjs/cli.test.cjs +435 -0
- package/dist/cjs/cli.test.cjs.map +1 -0
- package/dist/cjs/fill.cjs +8 -12
- package/dist/cjs/fill.cjs.map +1 -1
- package/dist/cjs/index.cjs +5 -1
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/prompts/REVIEW_PROMPT.md +37 -0
- package/dist/cjs/prompts/TRANSLATE_PROMPT.md +38 -0
- package/dist/cjs/pull.cjs +10 -2
- package/dist/cjs/pull.cjs.map +1 -1
- package/dist/cjs/pushConfig.cjs +5 -1
- package/dist/cjs/pushConfig.cjs.map +1 -1
- package/dist/cjs/reviewDoc.cjs +229 -0
- package/dist/cjs/reviewDoc.cjs.map +1 -0
- package/dist/cjs/translateDoc.cjs +211 -0
- package/dist/cjs/translateDoc.cjs.map +1 -0
- package/dist/cjs/utils/calculateChunks.cjs +120 -0
- package/dist/cjs/utils/calculateChunks.cjs.map +1 -0
- package/dist/cjs/utils/calculateChunks.test.cjs +104 -0
- package/dist/cjs/utils/calculateChunks.test.cjs.map +1 -0
- package/dist/cjs/utils/calculrateChunkTest.md +9 -0
- package/dist/cjs/utils/checkAIAccess.cjs +40 -0
- package/dist/cjs/utils/checkAIAccess.cjs.map +1 -0
- package/dist/cjs/utils/checkFileModifiedRange.cjs +97 -0
- package/dist/cjs/utils/checkFileModifiedRange.cjs.map +1 -0
- package/dist/cjs/utils/checkFileModifiedRange.test.cjs +175 -0
- package/dist/cjs/utils/checkFileModifiedRange.test.cjs.map +1 -0
- package/dist/cjs/utils/checkLastUpdateTime.cjs +33 -0
- package/dist/cjs/utils/checkLastUpdateTime.cjs.map +1 -0
- package/dist/cjs/utils/chunkInference.cjs +58 -0
- package/dist/cjs/utils/chunkInference.cjs.map +1 -0
- package/dist/cjs/utils/fixChunkStartEndChars.cjs +47 -0
- package/dist/cjs/utils/fixChunkStartEndChars.cjs.map +1 -0
- package/dist/cjs/utils/fixChunkStartEndChars.test.cjs +81 -0
- package/dist/cjs/utils/fixChunkStartEndChars.test.cjs.map +1 -0
- package/dist/cjs/utils/formatTimeDiff.cjs +46 -0
- package/dist/cjs/utils/formatTimeDiff.cjs.map +1 -0
- package/dist/cjs/utils/formatTimeDiff.test.cjs +32 -0
- package/dist/cjs/utils/formatTimeDiff.test.cjs.map +1 -0
- package/dist/cjs/utils/getChunk.cjs +77 -0
- package/dist/cjs/utils/getChunk.cjs.map +1 -0
- package/dist/cjs/utils/getChunk.test.cjs +46 -0
- package/dist/cjs/utils/getChunk.test.cjs.map +1 -0
- package/dist/cjs/utils/getIsFileUpdatedRecently.cjs +36 -0
- package/dist/cjs/utils/getIsFileUpdatedRecently.cjs.map +1 -0
- package/dist/cjs/utils/getOutputFilePath.cjs +89 -0
- package/dist/cjs/utils/getOutputFilePath.cjs.map +1 -0
- package/dist/cjs/utils/getOutputFilePath.test.cjs +73 -0
- package/dist/cjs/utils/getOutputFilePath.test.cjs.map +1 -0
- package/dist/cjs/utils/getParentPackageJSON.cjs +47 -0
- package/dist/cjs/utils/getParentPackageJSON.cjs.map +1 -0
- package/dist/cjs/utils/listSpecialChars.cjs +78 -0
- package/dist/cjs/utils/listSpecialChars.cjs.map +1 -0
- package/dist/cjs/utils/listSpecialChars.test.cjs +58 -0
- package/dist/cjs/utils/listSpecialChars.test.cjs.map +1 -0
- package/dist/cjs/utils/reorderParagraphs.cjs +125 -0
- package/dist/cjs/utils/reorderParagraphs.cjs.map +1 -0
- package/dist/cjs/utils/reorderParagraphs.test.cjs +71 -0
- package/dist/cjs/utils/reorderParagraphs.test.cjs.map +1 -0
- package/dist/cjs/utils/splitTextByLine.cjs +35 -0
- package/dist/cjs/utils/splitTextByLine.cjs.map +1 -0
- package/dist/cjs/utils/splitTextByLine.test.cjs +14 -0
- package/dist/cjs/utils/splitTextByLine.test.cjs.map +1 -0
- package/dist/esm/cli.mjs +84 -10
- package/dist/esm/cli.mjs.map +1 -1
- package/dist/esm/cli.test.mjs +412 -0
- package/dist/esm/cli.test.mjs.map +1 -0
- package/dist/esm/fill.mjs +8 -12
- package/dist/esm/fill.mjs.map +1 -1
- package/dist/esm/index.mjs +2 -0
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/prompts/REVIEW_PROMPT.md +37 -0
- package/dist/esm/prompts/TRANSLATE_PROMPT.md +38 -0
- package/dist/esm/pull.mjs +10 -2
- package/dist/esm/pull.mjs.map +1 -1
- package/dist/esm/pushConfig.mjs +5 -1
- package/dist/esm/pushConfig.mjs.map +1 -1
- package/dist/esm/reviewDoc.mjs +198 -0
- package/dist/esm/reviewDoc.mjs.map +1 -0
- package/dist/esm/translateDoc.mjs +180 -0
- package/dist/esm/translateDoc.mjs.map +1 -0
- package/dist/esm/utils/calculateChunks.mjs +96 -0
- package/dist/esm/utils/calculateChunks.mjs.map +1 -0
- package/dist/esm/utils/calculateChunks.test.mjs +103 -0
- package/dist/esm/utils/calculateChunks.test.mjs.map +1 -0
- package/dist/esm/utils/calculrateChunkTest.md +9 -0
- package/dist/esm/utils/checkAIAccess.mjs +16 -0
- package/dist/esm/utils/checkAIAccess.mjs.map +1 -0
- package/dist/esm/utils/checkFileModifiedRange.mjs +73 -0
- package/dist/esm/utils/checkFileModifiedRange.mjs.map +1 -0
- package/dist/esm/utils/checkFileModifiedRange.test.mjs +181 -0
- package/dist/esm/utils/checkFileModifiedRange.test.mjs.map +1 -0
- package/dist/esm/utils/checkLastUpdateTime.mjs +9 -0
- package/dist/esm/utils/checkLastUpdateTime.mjs.map +1 -0
- package/dist/esm/utils/chunkInference.mjs +34 -0
- package/dist/esm/utils/chunkInference.mjs.map +1 -0
- package/dist/esm/utils/fixChunkStartEndChars.mjs +23 -0
- package/dist/esm/utils/fixChunkStartEndChars.mjs.map +1 -0
- package/dist/esm/utils/fixChunkStartEndChars.test.mjs +80 -0
- package/dist/esm/utils/fixChunkStartEndChars.test.mjs.map +1 -0
- package/dist/esm/utils/formatTimeDiff.mjs +22 -0
- package/dist/esm/utils/formatTimeDiff.mjs.map +1 -0
- package/dist/esm/utils/formatTimeDiff.test.mjs +31 -0
- package/dist/esm/utils/formatTimeDiff.test.mjs.map +1 -0
- package/dist/esm/utils/getChunk.mjs +53 -0
- package/dist/esm/utils/getChunk.mjs.map +1 -0
- package/dist/esm/utils/getChunk.test.mjs +45 -0
- package/dist/esm/utils/getChunk.test.mjs.map +1 -0
- package/dist/esm/utils/getIsFileUpdatedRecently.mjs +12 -0
- package/dist/esm/utils/getIsFileUpdatedRecently.mjs.map +1 -0
- package/dist/esm/utils/getOutputFilePath.mjs +65 -0
- package/dist/esm/utils/getOutputFilePath.mjs.map +1 -0
- package/dist/esm/utils/getOutputFilePath.test.mjs +72 -0
- package/dist/esm/utils/getOutputFilePath.test.mjs.map +1 -0
- package/dist/esm/utils/getParentPackageJSON.mjs +23 -0
- package/dist/esm/utils/getParentPackageJSON.mjs.map +1 -0
- package/dist/esm/utils/listSpecialChars.mjs +54 -0
- package/dist/esm/utils/listSpecialChars.mjs.map +1 -0
- package/dist/esm/utils/listSpecialChars.test.mjs +57 -0
- package/dist/esm/utils/listSpecialChars.test.mjs.map +1 -0
- package/dist/esm/utils/reorderParagraphs.mjs +101 -0
- package/dist/esm/utils/reorderParagraphs.mjs.map +1 -0
- package/dist/esm/utils/reorderParagraphs.test.mjs +70 -0
- package/dist/esm/utils/reorderParagraphs.test.mjs.map +1 -0
- package/dist/esm/utils/splitTextByLine.mjs +11 -0
- package/dist/esm/utils/splitTextByLine.mjs.map +1 -0
- package/dist/esm/utils/splitTextByLine.test.mjs +13 -0
- package/dist/esm/utils/splitTextByLine.test.mjs.map +1 -0
- package/dist/types/cli.d.ts.map +1 -1
- package/dist/types/cli.test.d.ts +2 -0
- package/dist/types/cli.test.d.ts.map +1 -0
- package/dist/types/fill.d.ts.map +1 -1
- package/dist/types/index.d.ts +3 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/pull.d.ts.map +1 -1
- package/dist/types/pushConfig.d.ts.map +1 -1
- package/dist/types/reviewDoc.d.ts +27 -0
- package/dist/types/reviewDoc.d.ts.map +1 -0
- package/dist/types/translateDoc.d.ts +27 -0
- package/dist/types/translateDoc.d.ts.map +1 -0
- package/dist/types/utils/calculateChunks.d.ts +9 -0
- package/dist/types/utils/calculateChunks.d.ts.map +1 -0
- package/dist/types/utils/calculateChunks.test.d.ts +2 -0
- package/dist/types/utils/calculateChunks.test.d.ts.map +1 -0
- package/dist/types/utils/checkAIAccess.d.ts +4 -0
- package/dist/types/utils/checkAIAccess.d.ts.map +1 -0
- package/dist/types/utils/checkFileModifiedRange.d.ts +11 -0
- package/dist/types/utils/checkFileModifiedRange.d.ts.map +1 -0
- package/dist/types/utils/checkFileModifiedRange.test.d.ts +2 -0
- package/dist/types/utils/checkFileModifiedRange.test.d.ts.map +1 -0
- package/dist/types/utils/checkLastUpdateTime.d.ts +9 -0
- package/dist/types/utils/checkLastUpdateTime.d.ts.map +1 -0
- package/dist/types/utils/chunkInference.d.ts +12 -0
- package/dist/types/utils/chunkInference.d.ts.map +1 -0
- package/dist/types/utils/fixChunkStartEndChars.d.ts +2 -0
- package/dist/types/utils/fixChunkStartEndChars.d.ts.map +1 -0
- package/dist/types/utils/fixChunkStartEndChars.test.d.ts +2 -0
- package/dist/types/utils/fixChunkStartEndChars.test.d.ts.map +1 -0
- package/dist/types/utils/formatTimeDiff.d.ts +2 -0
- package/dist/types/utils/formatTimeDiff.d.ts.map +1 -0
- package/dist/types/utils/formatTimeDiff.test.d.ts +2 -0
- package/dist/types/utils/formatTimeDiff.test.d.ts.map +1 -0
- package/dist/types/utils/getChunk.d.ts +9 -0
- package/dist/types/utils/getChunk.d.ts.map +1 -0
- package/dist/types/utils/getChunk.test.d.ts +2 -0
- package/dist/types/utils/getChunk.test.d.ts.map +1 -0
- package/dist/types/utils/getIsFileUpdatedRecently.d.ts +5 -0
- package/dist/types/utils/getIsFileUpdatedRecently.d.ts.map +1 -0
- package/dist/types/utils/getOutputFilePath.d.ts +26 -0
- package/dist/types/utils/getOutputFilePath.d.ts.map +1 -0
- package/dist/types/utils/getOutputFilePath.test.d.ts +2 -0
- package/dist/types/utils/getOutputFilePath.test.d.ts.map +1 -0
- package/dist/types/utils/getParentPackageJSON.d.ts +32 -0
- package/dist/types/utils/getParentPackageJSON.d.ts.map +1 -0
- package/dist/types/utils/listSpecialChars.d.ts +10 -0
- package/dist/types/utils/listSpecialChars.d.ts.map +1 -0
- package/dist/types/utils/listSpecialChars.test.d.ts +2 -0
- package/dist/types/utils/listSpecialChars.test.d.ts.map +1 -0
- package/dist/types/utils/reorderParagraphs.d.ts +8 -0
- package/dist/types/utils/reorderParagraphs.d.ts.map +1 -0
- package/dist/types/utils/reorderParagraphs.test.d.ts +2 -0
- package/dist/types/utils/reorderParagraphs.test.d.ts.map +1 -0
- package/dist/types/utils/splitTextByLine.d.ts +2 -0
- package/dist/types/utils/splitTextByLine.d.ts.map +1 -0
- package/dist/types/utils/splitTextByLine.test.d.ts +2 -0
- package/dist/types/utils/splitTextByLine.test.d.ts.map +1 -0
- package/package.json +15 -13
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { listSpecialChars } from "./listSpecialChars.mjs";
|
|
2
|
+
const splitByParagraph = (text) => {
|
|
3
|
+
const paragraphs = [];
|
|
4
|
+
const tokens = text.split(/(\n{2,})/);
|
|
5
|
+
for (let i = 0; i < tokens.length; i++) {
|
|
6
|
+
const token = tokens[i];
|
|
7
|
+
if (i % 2 === 0) {
|
|
8
|
+
if (token) paragraphs.push(token);
|
|
9
|
+
continue;
|
|
10
|
+
}
|
|
11
|
+
const pairsOfNewlines = Math.floor(token.length / 2);
|
|
12
|
+
const blankParagraphs = Math.max(0, pairsOfNewlines - 2);
|
|
13
|
+
for (let j = 0; j < blankParagraphs; j++) {
|
|
14
|
+
paragraphs.push("\n\n");
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
return paragraphs;
|
|
18
|
+
};
|
|
19
|
+
const paragraphMatches = (paragraph, baseParagraph, paragraphSignature, baseSignature) => {
|
|
20
|
+
if (paragraph === baseParagraph) return true;
|
|
21
|
+
if (paragraphSignature.length !== baseSignature.length) return false;
|
|
22
|
+
for (let i = 0; i < paragraphSignature.length; i++) {
|
|
23
|
+
if (paragraphSignature[i].char !== baseSignature[i].char) {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return true;
|
|
28
|
+
};
|
|
29
|
+
const reorderParagraphs = (textToReorder, baseFileContent) => {
|
|
30
|
+
const baseFileParagraphs = splitByParagraph(baseFileContent);
|
|
31
|
+
const textToReorderParagraphs = splitByParagraph(textToReorder);
|
|
32
|
+
const baseSignatures = baseFileParagraphs.map((p) => listSpecialChars(p));
|
|
33
|
+
const textSignatures = textToReorderParagraphs.map(
|
|
34
|
+
(p) => listSpecialChars(p)
|
|
35
|
+
);
|
|
36
|
+
const firstMatchIndexForBase = Array(
|
|
37
|
+
baseFileParagraphs.length
|
|
38
|
+
).fill(-1);
|
|
39
|
+
const paragraphMatchedBaseIdx = Array(
|
|
40
|
+
textToReorderParagraphs.length
|
|
41
|
+
).fill(null);
|
|
42
|
+
for (let i = 0; i < textToReorderParagraphs.length; i++) {
|
|
43
|
+
const paragraph = textToReorderParagraphs[i];
|
|
44
|
+
const sig = textSignatures[i];
|
|
45
|
+
let foundIdx = baseFileParagraphs.findIndex(
|
|
46
|
+
(baseParagraph, idx) => firstMatchIndexForBase[idx] === -1 && paragraph === baseParagraph
|
|
47
|
+
);
|
|
48
|
+
if (foundIdx === -1) {
|
|
49
|
+
foundIdx = baseFileParagraphs.findIndex(
|
|
50
|
+
(baseParagraph, idx) => firstMatchIndexForBase[idx] === -1 && paragraphMatches(paragraph, baseParagraph, sig, baseSignatures[idx])
|
|
51
|
+
);
|
|
52
|
+
}
|
|
53
|
+
if (foundIdx !== -1) {
|
|
54
|
+
firstMatchIndexForBase[foundIdx] = i;
|
|
55
|
+
paragraphMatchedBaseIdx[i] = foundIdx;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
const insertAfterBaseIdx = Array(
|
|
59
|
+
textToReorderParagraphs.length
|
|
60
|
+
).fill(-1);
|
|
61
|
+
let maxBaseIdxEncountered = -1;
|
|
62
|
+
for (let i = 0; i < textToReorderParagraphs.length; i++) {
|
|
63
|
+
const matchedBase = paragraphMatchedBaseIdx[i];
|
|
64
|
+
if (matchedBase !== null) {
|
|
65
|
+
if (matchedBase > maxBaseIdxEncountered) {
|
|
66
|
+
maxBaseIdxEncountered = matchedBase;
|
|
67
|
+
}
|
|
68
|
+
} else {
|
|
69
|
+
insertAfterBaseIdx[i] = maxBaseIdxEncountered;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
const result = [];
|
|
73
|
+
const extraParagraphsBuckets = {};
|
|
74
|
+
insertAfterBaseIdx.forEach((afterIdx, paragraphIdx) => {
|
|
75
|
+
if (afterIdx === -1) return;
|
|
76
|
+
extraParagraphsBuckets[afterIdx] = extraParagraphsBuckets[afterIdx] || [];
|
|
77
|
+
extraParagraphsBuckets[afterIdx].push(paragraphIdx);
|
|
78
|
+
});
|
|
79
|
+
for (let bIdx = 0; bIdx < baseFileParagraphs.length; bIdx++) {
|
|
80
|
+
const matchedParagraphIdx = firstMatchIndexForBase[bIdx];
|
|
81
|
+
if (matchedParagraphIdx !== -1) {
|
|
82
|
+
result.push(textToReorderParagraphs[matchedParagraphIdx]);
|
|
83
|
+
}
|
|
84
|
+
if (extraParagraphsBuckets[bIdx]) {
|
|
85
|
+
extraParagraphsBuckets[bIdx].forEach((pIdx) => {
|
|
86
|
+
result.push(textToReorderParagraphs[pIdx]);
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
const leadingExtras = [];
|
|
91
|
+
insertAfterBaseIdx.forEach((afterIdx, pIdx) => {
|
|
92
|
+
if (afterIdx === -1 && paragraphMatchedBaseIdx[pIdx] === null) {
|
|
93
|
+
leadingExtras.push(textToReorderParagraphs[pIdx]);
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
return [...leadingExtras, ...result].join("\n\n");
|
|
97
|
+
};
|
|
98
|
+
export {
|
|
99
|
+
reorderParagraphs
|
|
100
|
+
};
|
|
101
|
+
//# sourceMappingURL=reorderParagraphs.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/reorderParagraphs.ts"],"sourcesContent":["import { listSpecialChars } from './listSpecialChars';\n\n/**\n * Split a text into paragraphs.\n *\n * We consider a paragraph boundary to be a block of at least two consecutive\n * new-lines that is immediately followed by a non-white-space character. This\n * way, internal blank lines that are part of the same paragraph (e.g. a list\n * item that purposely contains a visual break) are preserved while true\n * paragraph breaks – the ones generated when calling `arr.join(\"\\n\\n\")` in\n * the tests – are still detected.\n */\nconst splitByParagraph = (text: string): string[] => {\n const paragraphs: string[] = [];\n\n // Capture the delimiter so that we can inspect how many new-lines it\n // contains. We know that the test strings only use LF, so we keep the\n // regex simple here.\n const tokens = text.split(/(\\n{2,})/);\n\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n\n // Even-indexed tokens are the actual paragraph contents.\n if (i % 2 === 0) {\n if (token) paragraphs.push(token);\n continue;\n }\n\n // Odd-indexed tokens are the delimiters (>= two consecutive new-lines).\n // The first and last pairs represent the natural separators that are\n // added when paragraphs are later joined with \"\\n\\n\". Any additional\n // pairs in between correspond to *explicit* blank paragraphs that were\n // present in the original text and must therefore be preserved.\n const pairsOfNewlines = Math.floor(token.length / 2);\n const blankParagraphs = Math.max(0, pairsOfNewlines - 2);\n\n for (let j = 0; j < blankParagraphs; j++) {\n paragraphs.push('\\n\\n');\n }\n }\n\n return paragraphs;\n};\n\n/**\n * Determine whether two paragraphs match – either exactly, or by sharing the\n * same \"special-character signature\".\n */\nconst paragraphMatches = (\n paragraph: string,\n baseParagraph: string,\n paragraphSignature: ReturnType<typeof listSpecialChars>,\n baseSignature: ReturnType<typeof listSpecialChars>\n): boolean => {\n if (paragraph === baseParagraph) return true;\n // fallback to special-character signature comparison\n if (paragraphSignature.length !== baseSignature.length) return false;\n\n for (let i = 0; i < paragraphSignature.length; i++) {\n if (paragraphSignature[i].char !== baseSignature[i].char) {\n return false;\n }\n }\n return true;\n};\n\n/**\n * Re-order `textToReorder` so that its paragraphs follow the ordering found in\n * `baseFileContent`, while preserving any extra paragraphs (those not present\n * in the base file) in a position that is intuitive for a human reader: right\n * after the closest preceding paragraph coming from the base file.\n */\nexport const reorderParagraphs = (\n textToReorder: string,\n baseFileContent: string\n): string => {\n // 1. Split both texts into paragraphs and pre-compute their signatures.\n const baseFileParagraphs = splitByParagraph(baseFileContent);\n const textToReorderParagraphs = splitByParagraph(textToReorder);\n\n const baseSignatures = baseFileParagraphs.map((p) => listSpecialChars(p));\n const textSignatures = textToReorderParagraphs.map((p) =>\n listSpecialChars(p)\n );\n\n // 2. For every paragraph in the text to reorder, find the *first* base\n // paragraph it matches. We only allow each base paragraph to be matched\n // once. Any further identical paragraphs will be treated as \"extra\" and\n // will be positioned later on, next to their closest neighbour.\n const firstMatchIndexForBase: number[] = Array(\n baseFileParagraphs.length\n ).fill(-1);\n const paragraphMatchedBaseIdx: (number | null)[] = Array(\n textToReorderParagraphs.length\n ).fill(null);\n\n for (let i = 0; i < textToReorderParagraphs.length; i++) {\n const paragraph = textToReorderParagraphs[i];\n const sig = textSignatures[i];\n\n // exact match pass first for performance\n let foundIdx = baseFileParagraphs.findIndex(\n (baseParagraph, idx) =>\n firstMatchIndexForBase[idx] === -1 && paragraph === baseParagraph\n );\n\n if (foundIdx === -1) {\n // fallback to the signature comparison\n foundIdx = baseFileParagraphs.findIndex(\n (baseParagraph, idx) =>\n firstMatchIndexForBase[idx] === -1 &&\n paragraphMatches(paragraph, baseParagraph, sig, baseSignatures[idx])\n );\n }\n\n if (foundIdx !== -1) {\n firstMatchIndexForBase[foundIdx] = i;\n paragraphMatchedBaseIdx[i] = foundIdx;\n }\n }\n\n // 3. For the paragraphs that *didn't* get matched to a base paragraph, we\n // record the highest-numbered base paragraph that was matched *before* it\n // in the original text. The extra paragraph will later be placed right\n // after that paragraph in the final ordering.\n const insertAfterBaseIdx: number[] = Array(\n textToReorderParagraphs.length\n ).fill(-1);\n let maxBaseIdxEncountered = -1;\n\n for (let i = 0; i < textToReorderParagraphs.length; i++) {\n const matchedBase = paragraphMatchedBaseIdx[i];\n\n if (matchedBase !== null) {\n if (matchedBase > maxBaseIdxEncountered) {\n maxBaseIdxEncountered = matchedBase;\n }\n } else {\n insertAfterBaseIdx[i] = maxBaseIdxEncountered;\n }\n }\n\n // 4. Build the final, reordered list of paragraphs.\n const result: string[] = [];\n\n // Helper: quickly retrieve all indices of paragraphs that should be inserted\n // after a given base index, while keeping their original order.\n const extraParagraphsBuckets: Record<number, number[]> = {};\n insertAfterBaseIdx.forEach((afterIdx, paragraphIdx) => {\n if (afterIdx === -1) return; // will be handled later (if any)\n extraParagraphsBuckets[afterIdx] = extraParagraphsBuckets[afterIdx] || [];\n extraParagraphsBuckets[afterIdx].push(paragraphIdx);\n });\n\n for (let bIdx = 0; bIdx < baseFileParagraphs.length; bIdx++) {\n const matchedParagraphIdx = firstMatchIndexForBase[bIdx];\n\n if (matchedParagraphIdx !== -1) {\n result.push(textToReorderParagraphs[matchedParagraphIdx]);\n }\n\n if (extraParagraphsBuckets[bIdx]) {\n extraParagraphsBuckets[bIdx].forEach((pIdx) => {\n result.push(textToReorderParagraphs[pIdx]);\n });\n }\n }\n\n // Finally, if there were extra paragraphs appearing *before* any matched\n // base paragraph (insertAfterBaseIdx === -1), we prepend them to the output\n // in their original order.\n const leadingExtras: string[] = [];\n insertAfterBaseIdx.forEach((afterIdx, pIdx) => {\n if (afterIdx === -1 && paragraphMatchedBaseIdx[pIdx] === null) {\n leadingExtras.push(textToReorderParagraphs[pIdx]);\n }\n });\n\n return [...leadingExtras, ...result].join('\\n\\n');\n};\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { reorderParagraphs } from "./reorderParagraphs.mjs";
|
|
3
|
+
const baseText = [
|
|
4
|
+
"! Lorem ipsum dolor sit amet consectetur adipiscing elit.",
|
|
5
|
+
// '> Lorem ipsum dolor sit amet consectetur adipiscing elit.', // Additional content
|
|
6
|
+
"+ Lorem dolor sit amet consectetur adipiscing elit.",
|
|
7
|
+
// Similar n1
|
|
8
|
+
"- Lorem ipsum dolor sit amet consectetur adipiscing elit.",
|
|
9
|
+
"\n\n",
|
|
10
|
+
// Empty line
|
|
11
|
+
"* Lorem ipsum dolor sit amet consectetur adipiscing elit.",
|
|
12
|
+
"Lorem ipsum dolor sit amet consectetur adipiscing elit.",
|
|
13
|
+
// No special char
|
|
14
|
+
"+ Lorem dolor sit amet consectetur adipiscing elit.",
|
|
15
|
+
// Similar n2
|
|
16
|
+
"+ Lorem ipsum dolor sit amet consectetur adipiscing elit.",
|
|
17
|
+
// Similar n3 but different content
|
|
18
|
+
"= Lorem ipsum dolor sit amet consectetur adipiscing elit.",
|
|
19
|
+
// Missing content
|
|
20
|
+
"& Lorem ipsum dolor sit amet consectetur adipiscing elit."
|
|
21
|
+
].join("\n\n");
|
|
22
|
+
const textToReorder = [
|
|
23
|
+
"! Lorem ipsum dolor sit amet consectetur adipiscing elit.",
|
|
24
|
+
// '> Lorem ipsum dolor sit amet consectetur adipiscing elit.', // Additional content
|
|
25
|
+
"+ Lorem dolor sit amet consectetur adipiscing elit.",
|
|
26
|
+
// Similar n1
|
|
27
|
+
"\n\n",
|
|
28
|
+
// Empty line
|
|
29
|
+
"* Lorem ipsum dolor sit amet consectetur adipiscing elit.",
|
|
30
|
+
"- Lorem ipsum dolor sit amet consectetur adipiscing elit.",
|
|
31
|
+
"+ Lorem dolor sit amet consectetur adipiscing elit.",
|
|
32
|
+
// Similar n2
|
|
33
|
+
"Lorem ipsum dolor sit amet consectetur adipiscing elit.",
|
|
34
|
+
// No special char
|
|
35
|
+
"+ Lorem ipsum dolor sit amet consectetur adipiscing elit.",
|
|
36
|
+
// Similar n3 but different content
|
|
37
|
+
"& Lorem ipsum dolor sit amet consectetur adipiscing elit.",
|
|
38
|
+
"= Lorem ipsum dolor sit amet consectetur adipiscing elit."
|
|
39
|
+
// Missing content
|
|
40
|
+
].join("\n\n");
|
|
41
|
+
const texReordered = [
|
|
42
|
+
"! Lorem ipsum dolor sit amet consectetur adipiscing elit.",
|
|
43
|
+
// '> Lorem ipsum dolor sit amet consectetur adipiscing elit.', // Additional content
|
|
44
|
+
"+ Lorem dolor sit amet consectetur adipiscing elit.",
|
|
45
|
+
// Similar n1
|
|
46
|
+
"- Lorem ipsum dolor sit amet consectetur adipiscing elit.",
|
|
47
|
+
"\n\n",
|
|
48
|
+
// Empty line
|
|
49
|
+
"* Lorem ipsum dolor sit amet consectetur adipiscing elit.",
|
|
50
|
+
"Lorem ipsum dolor sit amet consectetur adipiscing elit.",
|
|
51
|
+
// No special char
|
|
52
|
+
"+ Lorem dolor sit amet consectetur adipiscing elit.",
|
|
53
|
+
// Similar n2
|
|
54
|
+
"+ Lorem ipsum dolor sit amet consectetur adipiscing elit.",
|
|
55
|
+
// Similar n3 but different content
|
|
56
|
+
"= Lorem ipsum dolor sit amet consectetur adipiscing elit.",
|
|
57
|
+
// Missing content
|
|
58
|
+
"& Lorem ipsum dolor sit amet consectetur adipiscing elit."
|
|
59
|
+
].join("\n\n");
|
|
60
|
+
describe("reorderParagraphs", () => {
|
|
61
|
+
it("should keep the same order when input matches base text", () => {
|
|
62
|
+
const result = reorderParagraphs(baseText, baseText);
|
|
63
|
+
expect(result).toEqual(baseText);
|
|
64
|
+
});
|
|
65
|
+
it("should reorder the paragraphs", () => {
|
|
66
|
+
const result = reorderParagraphs(textToReorder, baseText);
|
|
67
|
+
expect(result).toEqual(texReordered);
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
//# sourceMappingURL=reorderParagraphs.test.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/reorderParagraphs.test.ts"],"sourcesContent":["import { describe, expect, it } from 'vitest';\nimport { reorderParagraphs } from './reorderParagraphs';\n\nconst baseText = [\n '! Lorem ipsum dolor sit amet consectetur adipiscing elit.',\n // '> Lorem ipsum dolor sit amet consectetur adipiscing elit.', // Additional content\n '+ Lorem dolor sit amet consectetur adipiscing elit.', // Similar n1\n '- Lorem ipsum dolor sit amet consectetur adipiscing elit.',\n '\\n\\n', // Empty line\n '* Lorem ipsum dolor sit amet consectetur adipiscing elit.',\n 'Lorem ipsum dolor sit amet consectetur adipiscing elit.', // No special char\n '+ Lorem dolor sit amet consectetur adipiscing elit.', // Similar n2\n '+ Lorem ipsum dolor sit amet consectetur adipiscing elit.', // Similar n3 but different content\n '= Lorem ipsum dolor sit amet consectetur adipiscing elit.', // Missing content\n '& Lorem ipsum dolor sit amet consectetur adipiscing elit.',\n].join('\\n\\n');\n\nconst textToReorder = [\n '! Lorem ipsum dolor sit amet consectetur adipiscing elit.',\n // '> Lorem ipsum dolor sit amet consectetur adipiscing elit.', // Additional content\n '+ Lorem dolor sit amet consectetur adipiscing elit.', // Similar n1\n '\\n\\n', // Empty line\n '* Lorem ipsum dolor sit amet consectetur adipiscing elit.',\n '- Lorem ipsum dolor sit amet consectetur adipiscing elit.',\n '+ Lorem dolor sit amet consectetur adipiscing elit.', // Similar n2\n 'Lorem ipsum dolor sit amet consectetur adipiscing elit.', // No special char\n '+ Lorem ipsum dolor sit amet consectetur adipiscing elit.', // Similar n3 but different content\n '& Lorem ipsum dolor sit amet consectetur adipiscing elit.',\n '= Lorem ipsum dolor sit amet consectetur adipiscing elit.', // Missing content\n].join('\\n\\n');\n\nconst texReordered = [\n '! Lorem ipsum dolor sit amet consectetur adipiscing elit.',\n // '> Lorem ipsum dolor sit amet consectetur adipiscing elit.', // Additional content\n '+ Lorem dolor sit amet consectetur adipiscing elit.', // Similar n1\n '- Lorem ipsum dolor sit amet consectetur adipiscing elit.',\n '\\n\\n', // Empty line\n '* Lorem ipsum dolor sit amet consectetur adipiscing elit.',\n 'Lorem ipsum dolor sit amet consectetur adipiscing elit.', // No special char\n '+ Lorem dolor sit amet consectetur adipiscing elit.', // Similar n2\n '+ Lorem ipsum dolor sit amet consectetur adipiscing elit.', // Similar n3 but different content\n '= Lorem ipsum dolor sit amet consectetur adipiscing elit.', // Missing content\n '& Lorem ipsum dolor sit amet consectetur adipiscing elit.',\n].join('\\n\\n');\n\ndescribe('reorderParagraphs', () => {\n it('should keep the same order when input matches base text', () => {\n const result = reorderParagraphs(baseText, baseText);\n expect(result).toEqual(baseText);\n });\n\n it('should reorder the paragraphs', () => {\n const result = reorderParagraphs(textToReorder, baseText);\n expect(result).toEqual(texReordered);\n });\n});\n"],"mappings":"AAAA,SAAS,UAAU,QAAQ,UAAU;AACrC,SAAS,yBAAyB;AAElC,MAAM,WAAW;AAAA,EACf;AAAA;AAAA,EAEA;AAAA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AACF,EAAE,KAAK,MAAM;AAEb,MAAM,gBAAgB;AAAA,EACpB;AAAA;AAAA,EAEA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA,EACA;AAAA;AACF,EAAE,KAAK,MAAM;AAEb,MAAM,eAAe;AAAA,EACnB;AAAA;AAAA,EAEA;AAAA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AAAA;AAAA,EACA;AACF,EAAE,KAAK,MAAM;AAEb,SAAS,qBAAqB,MAAM;AAClC,KAAG,2DAA2D,MAAM;AAClE,UAAM,SAAS,kBAAkB,UAAU,QAAQ;AACnD,WAAO,MAAM,EAAE,QAAQ,QAAQ;AAAA,EACjC,CAAC;AAED,KAAG,iCAAiC,MAAM;AACxC,UAAM,SAAS,kBAAkB,eAAe,QAAQ;AACxD,WAAO,MAAM,EAAE,QAAQ,YAAY;AAAA,EACrC,CAAC;AACH,CAAC;","names":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
const splitTextByLines = (text) => {
|
|
2
|
+
const splittedText = text.match(/[^\n]*\n|[^\n]*$/g) ?? [];
|
|
3
|
+
if (splittedText.length > 0 && splittedText.at(-1) === "") {
|
|
4
|
+
splittedText.pop();
|
|
5
|
+
}
|
|
6
|
+
return splittedText;
|
|
7
|
+
};
|
|
8
|
+
export {
|
|
9
|
+
splitTextByLines
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=splitTextByLine.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/splitTextByLine.ts"],"sourcesContent":["export const splitTextByLines = (text: string): string[] => {\n const splittedText = text.match(/[^\\n]*\\n|[^\\n]*$/g) ?? [];\n\n if (splittedText.length > 0 && splittedText.at(-1) === '') {\n splittedText.pop();\n }\n\n return splittedText;\n};\n"],"mappings":"AAAO,MAAM,mBAAmB,CAAC,SAA2B;AAC1D,QAAM,eAAe,KAAK,MAAM,mBAAmB,KAAK,CAAC;AAEzD,MAAI,aAAa,SAAS,KAAK,aAAa,GAAG,EAAE,MAAM,IAAI;AACzD,iBAAa,IAAI;AAAA,EACnB;AAEA,SAAO;AACT;","names":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { splitTextByLines } from "./splitTextByLine.mjs";
|
|
3
|
+
describe("splitTextByLines", () => {
|
|
4
|
+
it("splits text by lines", () => {
|
|
5
|
+
const lines = splitTextByLines("Here a test. \nAnd another one.");
|
|
6
|
+
expect(lines).toStrictEqual(["Here a test. \n", "And another one."]);
|
|
7
|
+
});
|
|
8
|
+
it("splits text by lines with no trailing newline", () => {
|
|
9
|
+
const lines = splitTextByLines("Here a test. \n");
|
|
10
|
+
expect(lines).toStrictEqual(["Here a test. \n"]);
|
|
11
|
+
});
|
|
12
|
+
});
|
|
13
|
+
//# sourceMappingURL=splitTextByLine.test.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/splitTextByLine.test.ts"],"sourcesContent":["import { describe, expect, it } from 'vitest';\nimport { splitTextByLines } from './splitTextByLine';\n\ndescribe('splitTextByLines', () => {\n it('splits text by lines', () => {\n const lines = splitTextByLines('Here a test. \\nAnd another one.');\n\n expect(lines).toStrictEqual(['Here a test. \\n', 'And another one.']);\n });\n\n it('splits text by lines with no trailing newline', () => {\n const lines = splitTextByLines('Here a test. \\n');\n\n expect(lines).toStrictEqual(['Here a test. \\n']);\n });\n});\n"],"mappings":"AAAA,SAAS,UAAU,QAAQ,UAAU;AACrC,SAAS,wBAAwB;AAEjC,SAAS,oBAAoB,MAAM;AACjC,KAAG,wBAAwB,MAAM;AAC/B,UAAM,QAAQ,iBAAiB,iCAAiC;AAEhE,WAAO,KAAK,EAAE,cAAc,CAAC,mBAAmB,kBAAkB,CAAC;AAAA,EACrE,CAAC;AAED,KAAG,iDAAiD,MAAM;AACxD,UAAM,QAAQ,iBAAiB,iBAAiB;AAEhD,WAAO,KAAK,EAAE,cAAc,CAAC,iBAAiB,CAAC;AAAA,EACjD,CAAC;AACH,CAAC;","names":[]}
|
package/dist/types/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuBpC,eAAO,MAAM,OAAO,QAEP,CAAC;AA+Hd,KAAK,UAAU,GAAG;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,UAAU,CAAC;AA2Cf;;;;;;;GAOG;AACH,eAAO,MAAM,MAAM,QAAO,OAqTzB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.test.d.ts","sourceRoot":"","sources":["../../src/cli.test.ts"],"names":[],"mappings":""}
|
package/dist/types/fill.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fill.d.ts","sourceRoot":"","sources":["../../src/fill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAwB,MAAM,eAAe,CAAC;AAChE,OAAO,EAGL,mBAAmB,EAKpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAGL,uBAAuB,EAEvB,OAAO,EACR,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAGL,KAAK,UAAU,EAEhB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"fill.d.ts","sourceRoot":"","sources":["../../src/fill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAwB,MAAM,eAAe,CAAC;AAChE,OAAO,EAGL,mBAAmB,EAKpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAGL,uBAAuB,EAEvB,OAAO,EACR,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAGL,KAAK,UAAU,EAEhB,MAAM,gBAAgB,CAAC;AAOxB,MAAM,MAAM,WAAW,GAAG;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,GAAG,OAAO,EAAE,CAAC;IACpC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACzB,IAAI,CAAC,EAAE,UAAU,GAAG,QAAQ,CAAC;IAC7B,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACjC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC;IACxC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC/B,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,aAAa,CAAC,EAAE,uBAAuB,CAAC;IACxC,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAiFF,MAAM,MAAM,YAAY,GAAG;IACzB,UAAU,EAAE,OAAO,EAAE,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAuKF;;GAEG;AACH,eAAO,MAAM,IAAI,GAAU,SAAS,WAAW,KAAG,OAAO,CAAC,IAAI,CAgM7D,CAAC"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export type * from '@intlayer/chokidar';
|
|
1
2
|
export * from './build';
|
|
2
3
|
export * from './cli';
|
|
3
4
|
export * from './fill';
|
|
@@ -5,4 +6,6 @@ export * from './listContentDeclaration';
|
|
|
5
6
|
export * from './pull';
|
|
6
7
|
export * from './push';
|
|
7
8
|
export * from './pushConfig';
|
|
9
|
+
export * from './reviewDoc';
|
|
10
|
+
export * from './translateDoc';
|
|
8
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC;AACvB,cAAc,0BAA0B,CAAC;AACzC,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,oBAAoB,CAAC;AACxC,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC;AACvB,cAAc,0BAA0B,CAAC;AACzC,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC"}
|
package/dist/types/pull.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../src/pull.ts"],"names":[],"mappings":"AAKA,OAAO,EAGL,uBAAuB,EACxB,MAAM,kBAAkB,CAAC;AAM1B,KAAK,WAAW,GAAG;IACjB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,aAAa,CAAC,EAAE,uBAAuB,CAAC;CACzC,CAAC;AAsBF;;;GAGG;AACH,eAAO,MAAM,IAAI,GAAU,UAAU,WAAW,KAAG,OAAO,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../src/pull.ts"],"names":[],"mappings":"AAKA,OAAO,EAGL,uBAAuB,EACxB,MAAM,kBAAkB,CAAC;AAM1B,KAAK,WAAW,GAAG;IACjB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,aAAa,CAAC,EAAE,uBAAuB,CAAC;CACzC,CAAC;AAsBF;;;GAGG;AACH,eAAO,MAAM,IAAI,GAAU,UAAU,WAAW,KAAG,OAAO,CAAC,IAAI,CAiJ9D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pushConfig.d.ts","sourceRoot":"","sources":["../../src/pushConfig.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,uBAAuB,EAC7B,MAAM,kBAAkB,CAAC;AAE1B,KAAK,WAAW,GAAG;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,uBAAuB,CAAC;CACzC,CAAC;AAEF,eAAO,MAAM,UAAU,GAAU,UAAU,WAAW,
|
|
1
|
+
{"version":3,"file":"pushConfig.d.ts","sourceRoot":"","sources":["../../src/pushConfig.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,uBAAuB,EAC7B,MAAM,kBAAkB,CAAC;AAE1B,KAAK,WAAW,GAAG;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,uBAAuB,CAAC;CACzC,CAAC;AAEF,eAAO,MAAM,UAAU,GAAU,UAAU,WAAW,kBAkDrD,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { AIOptions } from '@intlayer/api';
|
|
2
|
+
import { ListGitFilesOptions } from '@intlayer/chokidar';
|
|
3
|
+
import { GetConfigurationOptions, Locales } from '@intlayer/config';
|
|
4
|
+
/**
|
|
5
|
+
* Translate a single file for a given locale
|
|
6
|
+
*/
|
|
7
|
+
export declare const reviewFile: (baseFilePath: string, outputFilePath: string, locale: Locales, baseLocale: Locales, aiOptions?: AIOptions, configOptions?: GetConfigurationOptions, oAuth2AccessToken?: string, customInstructions?: string, changedLines?: number[]) => Promise<void>;
|
|
8
|
+
type ReviewDocOptions = {
|
|
9
|
+
docPattern: string[];
|
|
10
|
+
locales: Locales[];
|
|
11
|
+
excludedGlobPattern: string[];
|
|
12
|
+
baseLocale: Locales;
|
|
13
|
+
aiOptions?: AIOptions;
|
|
14
|
+
nbSimultaneousFileProcessed?: number;
|
|
15
|
+
configOptions?: GetConfigurationOptions;
|
|
16
|
+
customInstructions?: string;
|
|
17
|
+
skipIfModifiedBefore?: number | string | Date;
|
|
18
|
+
skipIfModifiedAfter?: number | string | Date;
|
|
19
|
+
gitOptions?: ListGitFilesOptions;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Main audit function: scans all .md files in "en/" (unless you specified DOC_LIST),
|
|
23
|
+
* then audits them to each locale in LOCALE_LIST.
|
|
24
|
+
*/
|
|
25
|
+
export declare const reviewDoc: ({ docPattern, locales, excludedGlobPattern, baseLocale, aiOptions, nbSimultaneousFileProcessed, configOptions, customInstructions, skipIfModifiedBefore, skipIfModifiedAfter, gitOptions, }: ReviewDocOptions) => Promise<void>;
|
|
26
|
+
export {};
|
|
27
|
+
//# sourceMappingURL=reviewDoc.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reviewDoc.d.ts","sourceRoot":"","sources":["../../src/reviewDoc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAc,MAAM,eAAe,CAAC;AACtD,OAAO,EAAgB,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAGL,uBAAuB,EACvB,OAAO,EAER,MAAM,kBAAkB,CAAC;AAoB1B;;GAEG;AACH,eAAO,MAAM,UAAU,GACrB,cAAc,MAAM,EACpB,gBAAgB,MAAM,EACtB,QAAQ,OAAO,EACf,YAAY,OAAO,EACnB,YAAY,SAAS,EACrB,gBAAgB,uBAAuB,EACvC,oBAAoB,MAAM,EAC1B,qBAAqB,MAAM,EAC3B,eAAe,MAAM,EAAE,kBAuHxB,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACtB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,EAAE,OAAO,EAAE,CAAC;IACnB,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,aAAa,CAAC,EAAE,uBAAuB,CAAC;IACxC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oBAAoB,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC9C,mBAAmB,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC7C,UAAU,CAAC,EAAE,mBAAmB,CAAC;CAClC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,SAAS,GAAU,6LAY7B,gBAAgB,kBA+GlB,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { AIOptions } from '@intlayer/api';
|
|
2
|
+
import { ListGitFilesOptions } from '@intlayer/chokidar';
|
|
3
|
+
import { GetConfigurationOptions, Locales } from '@intlayer/config';
|
|
4
|
+
/**
|
|
5
|
+
* Translate a single file for a given locale
|
|
6
|
+
*/
|
|
7
|
+
export declare const translateFile: (baseFilePath: string, outputFilePath: string, locale: Locales, baseLocale: Locales, aiOptions?: AIOptions, configOptions?: GetConfigurationOptions, oAuth2AccessToken?: string, customInstructions?: string) => Promise<void>;
|
|
8
|
+
type TranslateDocOptions = {
|
|
9
|
+
docPattern: string[];
|
|
10
|
+
locales: Locales[];
|
|
11
|
+
excludedGlobPattern: string[];
|
|
12
|
+
baseLocale: Locales;
|
|
13
|
+
aiOptions?: AIOptions;
|
|
14
|
+
nbSimultaneousFileProcessed?: number;
|
|
15
|
+
configOptions?: GetConfigurationOptions;
|
|
16
|
+
customInstructions?: string;
|
|
17
|
+
skipIfModifiedBefore?: number | string | Date;
|
|
18
|
+
skipIfModifiedAfter?: number | string | Date;
|
|
19
|
+
gitOptions?: ListGitFilesOptions;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Main translate function: scans all .md files in "en/" (unless you specified DOC_LIST),
|
|
23
|
+
* then translates them to each locale in LOCALE_LIST.
|
|
24
|
+
*/
|
|
25
|
+
export declare const translateDoc: ({ docPattern, locales, excludedGlobPattern, baseLocale, aiOptions, nbSimultaneousFileProcessed, configOptions, customInstructions, skipIfModifiedBefore, skipIfModifiedAfter, gitOptions, }: TranslateDocOptions) => Promise<void>;
|
|
26
|
+
export {};
|
|
27
|
+
//# sourceMappingURL=translateDoc.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"translateDoc.d.ts","sourceRoot":"","sources":["../../src/translateDoc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAc,MAAM,eAAe,CAAC;AACtD,OAAO,EAAgB,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAGL,uBAAuB,EACvB,OAAO,EAER,MAAM,kBAAkB,CAAC;AAoB1B;;GAEG;AACH,eAAO,MAAM,aAAa,GACxB,cAAc,MAAM,EACpB,gBAAgB,MAAM,EACtB,QAAQ,OAAO,EACf,YAAY,OAAO,EACnB,YAAY,SAAS,EACrB,gBAAgB,uBAAuB,EACvC,oBAAoB,MAAM,EAC1B,qBAAqB,MAAM,kBAgG5B,CAAC;AAEF,KAAK,mBAAmB,GAAG;IACzB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,EAAE,OAAO,EAAE,CAAC;IACnB,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,aAAa,CAAC,EAAE,uBAAuB,CAAC;IACxC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oBAAoB,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC9C,mBAAmB,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC7C,UAAU,CAAC,EAAE,mBAAmB,CAAC;CAClC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,YAAY,GAAU,6LAYhC,mBAAmB,kBAsGrB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export type ChunkLineResult = {
|
|
2
|
+
lineStart: number;
|
|
3
|
+
lineLength: number;
|
|
4
|
+
charStart: number;
|
|
5
|
+
charLength: number;
|
|
6
|
+
content: string;
|
|
7
|
+
};
|
|
8
|
+
export declare const chunkText: (text: string, maxCharsPerChunk?: number, overlapChars?: number) => ChunkLineResult[];
|
|
9
|
+
//# sourceMappingURL=calculateChunks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calculateChunks.d.ts","sourceRoot":"","sources":["../../../src/utils/calculateChunks.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAKF,eAAO,MAAM,SAAS,GACpB,MAAM,MAAM,EACZ,mBAAkB,MAAoC,EACtD,eAAc,MAA8B,KAC3C,eAAe,EA2HjB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calculateChunks.test.d.ts","sourceRoot":"","sources":["../../../src/utils/calculateChunks.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkAIAccess.d.ts","sourceRoot":"","sources":["../../../src/utils/checkAIAccess.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAErE,eAAO,MAAM,aAAa,GACxB,eAAe,cAAc,EAC7B,YAAY,SAAS,SAmBtB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
type CheckFileModifiedRangeResult = {
|
|
2
|
+
isSkipped: boolean;
|
|
3
|
+
message: string;
|
|
4
|
+
};
|
|
5
|
+
type CheckFileModifiedRangeOptions = {
|
|
6
|
+
skipIfModifiedBefore?: Date | number | string;
|
|
7
|
+
skipIfModifiedAfter?: Date | number | string;
|
|
8
|
+
};
|
|
9
|
+
export declare const checkFileModifiedRange: (filePath: string, options: CheckFileModifiedRangeOptions) => CheckFileModifiedRangeResult;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=checkFileModifiedRange.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkFileModifiedRange.d.ts","sourceRoot":"","sources":["../../../src/utils/checkFileModifiedRange.ts"],"names":[],"mappings":"AAgFA,KAAK,4BAA4B,GAAG;IAClC,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,KAAK,6BAA6B,GAAG;IACnC,oBAAoB,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;IAC9C,mBAAmB,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;CAC9C,CAAC;AAEF,eAAO,MAAM,sBAAsB,GACjC,UAAU,MAAM,EAChB,SAAS,6BAA6B,KACrC,4BAkDF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkFileModifiedRange.test.d.ts","sourceRoot":"","sources":["../../../src/utils/checkFileModifiedRange.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns the last modification date of a file.
|
|
3
|
+
*
|
|
4
|
+
* @param filePath - Absolute or relative path to the file to inspect.
|
|
5
|
+
* @returns Date instance representing the file's last modified time (mtime).
|
|
6
|
+
* @throws Will propagate any error thrown by fs.statSync (e.g., file not found).
|
|
7
|
+
*/
|
|
8
|
+
export declare const checkLastUpdateTime: (filePath: string) => Date;
|
|
9
|
+
//# sourceMappingURL=checkLastUpdateTime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkLastUpdateTime.d.ts","sourceRoot":"","sources":["../../../src/utils/checkLastUpdateTime.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,GAAI,UAAU,MAAM,KAAG,IAGtD,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type AIOptions, type Messages } from '@intlayer/api';
|
|
2
|
+
type ChunkInferenceResult = {
|
|
3
|
+
fileContent: string;
|
|
4
|
+
tokenUsed: number;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* Translates a single chunk via the OpenAI API.
|
|
8
|
+
* Includes retry logic if the call fails.
|
|
9
|
+
*/
|
|
10
|
+
export declare const chunkInference: (messages: Messages, aiOptions?: AIOptions, oAuth2AccessToken?: string) => Promise<ChunkInferenceResult>;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=chunkInference.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunkInference.d.ts","sourceRoot":"","sources":["../../../src/utils/chunkInference.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,QAAQ,EAAY,MAAM,eAAe,CAAC;AAGxE,KAAK,oBAAoB,GAAG;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,GACzB,UAAU,QAAQ,EAClB,YAAY,SAAS,EACrB,oBAAoB,MAAM,KACzB,OAAO,CAAC,oBAAoB,CAiD9B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixChunkStartEndChars.d.ts","sourceRoot":"","sources":["../../../src/utils/fixChunkStartEndChars.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,qBAAqB,GAChC,qBAAqB,MAAM,EAC3B,kBAAkB,MAAM,WA0BzB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixChunkStartEndChars.test.d.ts","sourceRoot":"","sources":["../../../src/utils/fixChunkStartEndChars.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatTimeDiff.d.ts","sourceRoot":"","sources":["../../../src/utils/formatTimeDiff.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,GAAI,cAAc,IAAI,KAAG,MAqBnD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatTimeDiff.test.d.ts","sourceRoot":"","sources":["../../../src/utils/formatTimeDiff.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getChunk.d.ts","sourceRoot":"","sources":["../../../src/utils/getChunk.ts"],"names":[],"mappings":"AAEA,KAAK,YAAY,GAAG;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,eAAO,MAAM,QAAQ,GAAI,MAAM,MAAM,EAAE,UAAS,YAAiB,KAAG,MA8EnE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getChunk.test.d.ts","sourceRoot":"","sources":["../../../src/utils/getChunk.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getIsFileUpdatedRecently.d.ts","sourceRoot":"","sources":["../../../src/utils/getIsFileUpdatedRecently.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,eAAO,MAAM,wBAAwB,GAAI,gBAAgB,MAAM,KAAG,OAMjE,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { LocalesValues } from '@intlayer/config';
|
|
2
|
+
/**
|
|
3
|
+
* Get the output file path by replacing the base locale with the target locale
|
|
4
|
+
*
|
|
5
|
+
* This function handles two types of replacements:
|
|
6
|
+
* 1. Actual locale values (e.g., `/en/` → `/fr/`)
|
|
7
|
+
* 2. Template placeholders (e.g., `{{baseLocale}}` → `{{locale}}`, `{{baseLocaleName}}` → `{{localeName}}`)
|
|
8
|
+
*
|
|
9
|
+
* Replacement patterns:
|
|
10
|
+
* - `/baseLocale/` → `/locale/`
|
|
11
|
+
* - `\baseLocale\` → `\locale\`
|
|
12
|
+
* - `_baseLocale.` → `_locale.`
|
|
13
|
+
* - `baseLocale_` → `locale_`
|
|
14
|
+
* - `.baseLocaleName.` → `.localeName.`
|
|
15
|
+
* - `{{baseLocale}}` → `{{locale}}`
|
|
16
|
+
* - `{{baseLocaleName}}` → `{{localeName}}`
|
|
17
|
+
*
|
|
18
|
+
* If no patterns match, appends `.locale` to the file extension.
|
|
19
|
+
*
|
|
20
|
+
* @param filePath - The input file path
|
|
21
|
+
* @param locale - The target locale
|
|
22
|
+
* @param baseLocale - The base locale to replace
|
|
23
|
+
* @returns The output file path with locale replacements
|
|
24
|
+
*/
|
|
25
|
+
export declare const getOutputFilePath: (filePath: string, locale: LocalesValues, baseLocale: LocalesValues) => string;
|
|
26
|
+
//# sourceMappingURL=getOutputFilePath.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getOutputFilePath.d.ts","sourceRoot":"","sources":["../../../src/utils/getOutputFilePath.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,iBAAiB,GAC5B,UAAU,MAAM,EAChB,QAAQ,aAAa,EACrB,YAAY,aAAa,KACxB,MAwEF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getOutputFilePath.test.d.ts","sourceRoot":"","sources":["../../../src/utils/getOutputFilePath.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
type PackageJSON = {
|
|
2
|
+
name?: string;
|
|
3
|
+
version?: string;
|
|
4
|
+
private: boolean;
|
|
5
|
+
description?: string;
|
|
6
|
+
homepage?: string;
|
|
7
|
+
bugs: {
|
|
8
|
+
url?: string;
|
|
9
|
+
};
|
|
10
|
+
repository: {
|
|
11
|
+
type?: string;
|
|
12
|
+
url?: string;
|
|
13
|
+
};
|
|
14
|
+
license?: string;
|
|
15
|
+
author: {
|
|
16
|
+
name?: string;
|
|
17
|
+
url?: string;
|
|
18
|
+
};
|
|
19
|
+
contributors?: {
|
|
20
|
+
name?: string;
|
|
21
|
+
email?: string;
|
|
22
|
+
url?: string;
|
|
23
|
+
}[];
|
|
24
|
+
type?: string;
|
|
25
|
+
scripts: Record<string, string>;
|
|
26
|
+
devDependencies: Record<string, string>;
|
|
27
|
+
packageManager?: string;
|
|
28
|
+
engines: Record<string, string>;
|
|
29
|
+
};
|
|
30
|
+
export declare const getParentPackageJSON: (startDir: string) => PackageJSON;
|
|
31
|
+
export {};
|
|
32
|
+
//# sourceMappingURL=getParentPackageJSON.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getParentPackageJSON.d.ts","sourceRoot":"","sources":["../../../src/utils/getParentPackageJSON.ts"],"names":[],"mappings":"AAGA,KAAK,WAAW,GAAG;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE;QACJ,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;IACF,UAAU,EAAE;QACV,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE;QACN,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;IACF,YAAY,CAAC,EAAE;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,EAAE,CAAC;IACJ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,UAAU,MAAM,KAAG,WAyBvD,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
type ListCharResult = {
|
|
2
|
+
char: string;
|
|
3
|
+
/** First line index contained in this chunk (0-based) */
|
|
4
|
+
lineStart: number;
|
|
5
|
+
/** Start character index in the original text (0-based, inclusive)*/
|
|
6
|
+
charStart: number;
|
|
7
|
+
}[];
|
|
8
|
+
export declare const listSpecialChars: (text: string) => ListCharResult;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=listSpecialChars.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listSpecialChars.d.ts","sourceRoot":"","sources":["../../../src/utils/listSpecialChars.ts"],"names":[],"mappings":"AAAA,KAAK,cAAc,GAAG;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,qEAAqE;IACrE,SAAS,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,SAAS,EAAE,MAAM,CAAC;CACnB,EAAE,CAAC;AA6BJ,eAAO,MAAM,gBAAgB,GAAI,MAAM,MAAM,KAAG,cAgC/C,CAAC"}
|