@intlayer/cli 5.7.7 → 5.8.0-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/fill.cjs +82 -54
- package/dist/cjs/fill.cjs.map +1 -1
- package/dist/esm/fill.mjs +86 -56
- package/dist/esm/fill.mjs.map +1 -1
- package/dist/types/fill.d.ts +1 -0
- package/dist/types/fill.d.ts.map +1 -1
- package/package.json +15 -15
- package/dist/cjs/cli.test.cjs +0 -435
- package/dist/cjs/cli.test.cjs.map +0 -1
- package/dist/cjs/utils/calculateChunks.test.cjs +0 -104
- package/dist/cjs/utils/calculateChunks.test.cjs.map +0 -1
- package/dist/cjs/utils/checkFileModifiedRange.test.cjs +0 -175
- package/dist/cjs/utils/checkFileModifiedRange.test.cjs.map +0 -1
- package/dist/cjs/utils/fixChunkStartEndChars.test.cjs +0 -81
- package/dist/cjs/utils/fixChunkStartEndChars.test.cjs.map +0 -1
- package/dist/cjs/utils/formatTimeDiff.test.cjs +0 -32
- package/dist/cjs/utils/formatTimeDiff.test.cjs.map +0 -1
- package/dist/cjs/utils/getChunk.test.cjs +0 -46
- package/dist/cjs/utils/getChunk.test.cjs.map +0 -1
- package/dist/cjs/utils/getOutputFilePath.test.cjs +0 -73
- package/dist/cjs/utils/getOutputFilePath.test.cjs.map +0 -1
- package/dist/cjs/utils/listSpecialChars.test.cjs +0 -58
- package/dist/cjs/utils/listSpecialChars.test.cjs.map +0 -1
- package/dist/cjs/utils/reorderParagraphs.test.cjs +0 -71
- package/dist/cjs/utils/reorderParagraphs.test.cjs.map +0 -1
- package/dist/cjs/utils/splitTextByLine.test.cjs +0 -14
- package/dist/cjs/utils/splitTextByLine.test.cjs.map +0 -1
- package/dist/esm/cli.test.mjs +0 -412
- package/dist/esm/cli.test.mjs.map +0 -1
- package/dist/esm/utils/calculateChunks.test.mjs +0 -103
- package/dist/esm/utils/calculateChunks.test.mjs.map +0 -1
- package/dist/esm/utils/checkFileModifiedRange.test.mjs +0 -181
- package/dist/esm/utils/checkFileModifiedRange.test.mjs.map +0 -1
- package/dist/esm/utils/fixChunkStartEndChars.test.mjs +0 -80
- package/dist/esm/utils/fixChunkStartEndChars.test.mjs.map +0 -1
- package/dist/esm/utils/formatTimeDiff.test.mjs +0 -31
- package/dist/esm/utils/formatTimeDiff.test.mjs.map +0 -1
- package/dist/esm/utils/getChunk.test.mjs +0 -45
- package/dist/esm/utils/getChunk.test.mjs.map +0 -1
- package/dist/esm/utils/getOutputFilePath.test.mjs +0 -72
- package/dist/esm/utils/getOutputFilePath.test.mjs.map +0 -1
- package/dist/esm/utils/listSpecialChars.test.mjs +0 -57
- package/dist/esm/utils/listSpecialChars.test.mjs.map +0 -1
- package/dist/esm/utils/reorderParagraphs.test.mjs +0 -70
- package/dist/esm/utils/reorderParagraphs.test.mjs.map +0 -1
- package/dist/esm/utils/splitTextByLine.test.mjs +0 -13
- package/dist/esm/utils/splitTextByLine.test.mjs.map +0 -1
- package/dist/types/cli.test.d.ts +0 -2
- package/dist/types/cli.test.d.ts.map +0 -1
- package/dist/types/utils/calculateChunks.test.d.ts +0 -2
- package/dist/types/utils/calculateChunks.test.d.ts.map +0 -1
- package/dist/types/utils/checkFileModifiedRange.test.d.ts +0 -2
- package/dist/types/utils/checkFileModifiedRange.test.d.ts.map +0 -1
- package/dist/types/utils/fixChunkStartEndChars.test.d.ts +0 -2
- package/dist/types/utils/fixChunkStartEndChars.test.d.ts.map +0 -1
- package/dist/types/utils/formatTimeDiff.test.d.ts +0 -2
- package/dist/types/utils/formatTimeDiff.test.d.ts.map +0 -1
- package/dist/types/utils/getChunk.test.d.ts +0 -2
- package/dist/types/utils/getChunk.test.d.ts.map +0 -1
- package/dist/types/utils/getOutputFilePath.test.d.ts +0 -2
- package/dist/types/utils/getOutputFilePath.test.d.ts.map +0 -1
- package/dist/types/utils/listSpecialChars.test.d.ts +0 -2
- package/dist/types/utils/listSpecialChars.test.d.ts.map +0 -1
- package/dist/types/utils/reorderParagraphs.test.d.ts +0 -2
- package/dist/types/utils/reorderParagraphs.test.d.ts.map +0 -1
- package/dist/types/utils/splitTextByLine.test.d.ts +0 -2
- package/dist/types/utils/splitTextByLine.test.d.ts.map +0 -1
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var import_vitest = require("vitest");
|
|
3
|
-
var import_splitTextByLine = require('./splitTextByLine.cjs');
|
|
4
|
-
(0, import_vitest.describe)("splitTextByLines", () => {
|
|
5
|
-
(0, import_vitest.it)("splits text by lines", () => {
|
|
6
|
-
const lines = (0, import_splitTextByLine.splitTextByLines)("Here a test. \nAnd another one.");
|
|
7
|
-
(0, import_vitest.expect)(lines).toStrictEqual(["Here a test. \n", "And another one."]);
|
|
8
|
-
});
|
|
9
|
-
(0, import_vitest.it)("splits text by lines with no trailing newline", () => {
|
|
10
|
-
const lines = (0, import_splitTextByLine.splitTextByLines)("Here a test. \n");
|
|
11
|
-
(0, import_vitest.expect)(lines).toStrictEqual(["Here a test. \n"]);
|
|
12
|
-
});
|
|
13
|
-
});
|
|
14
|
-
//# sourceMappingURL=splitTextByLine.test.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
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,oBAAqC;AACrC,6BAAiC;AAAA,IAEjC,wBAAS,oBAAoB,MAAM;AACjC,wBAAG,wBAAwB,MAAM;AAC/B,UAAM,YAAQ,yCAAiB,iCAAiC;AAEhE,8BAAO,KAAK,EAAE,cAAc,CAAC,mBAAmB,kBAAkB,CAAC;AAAA,EACrE,CAAC;AAED,wBAAG,iDAAiD,MAAM;AACxD,UAAM,YAAQ,yCAAiB,iBAAiB;AAEhD,8BAAO,KAAK,EAAE,cAAc,CAAC,iBAAiB,CAAC;AAAA,EACjD,CAAC;AACH,CAAC;","names":[]}
|
package/dist/esm/cli.test.mjs
DELETED
|
@@ -1,412 +0,0 @@
|
|
|
1
|
-
import { TextDecoder, TextEncoder } from "util";
|
|
2
|
-
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
|
3
|
-
if (!globalThis.TextEncoder) {
|
|
4
|
-
globalThis.TextEncoder = TextEncoder;
|
|
5
|
-
}
|
|
6
|
-
if (!globalThis.TextDecoder) {
|
|
7
|
-
globalThis.TextDecoder = TextDecoder;
|
|
8
|
-
}
|
|
9
|
-
const ORIGINAL_ARGV = [...process.argv];
|
|
10
|
-
const setProcessArgv = (args) => {
|
|
11
|
-
process.argv = ["node", "intlayer", ...args];
|
|
12
|
-
};
|
|
13
|
-
let buildMock;
|
|
14
|
-
let pushMock;
|
|
15
|
-
let pullMock;
|
|
16
|
-
let fillMock;
|
|
17
|
-
let getConfigMock;
|
|
18
|
-
let pushConfigMock;
|
|
19
|
-
let listContentDeclarationMock;
|
|
20
|
-
let translateDocMock;
|
|
21
|
-
let reviewDocMock;
|
|
22
|
-
vi.mock("./build", () => ({
|
|
23
|
-
build: (...args) => buildMock(...args)
|
|
24
|
-
}));
|
|
25
|
-
vi.mock("./push", () => ({
|
|
26
|
-
push: (...args) => pushMock(...args)
|
|
27
|
-
}));
|
|
28
|
-
vi.mock("./pull", () => ({
|
|
29
|
-
pull: (...args) => pullMock(...args)
|
|
30
|
-
}));
|
|
31
|
-
vi.mock("./fill", () => ({
|
|
32
|
-
fill: (...args) => fillMock(...args)
|
|
33
|
-
}));
|
|
34
|
-
vi.mock("./config", () => ({
|
|
35
|
-
getConfig: (...args) => getConfigMock(...args)
|
|
36
|
-
}));
|
|
37
|
-
vi.mock("./pushConfig", () => ({
|
|
38
|
-
pushConfig: (...args) => pushConfigMock(...args)
|
|
39
|
-
}));
|
|
40
|
-
vi.mock("./listContentDeclaration", () => ({
|
|
41
|
-
listContentDeclaration: (...args) => listContentDeclarationMock(...args)
|
|
42
|
-
}));
|
|
43
|
-
vi.mock("./translateDoc", () => ({
|
|
44
|
-
translateDoc: (...args) => translateDocMock(...args)
|
|
45
|
-
}));
|
|
46
|
-
vi.mock("./reviewDoc", () => ({
|
|
47
|
-
reviewDoc: (...args) => reviewDocMock(...args)
|
|
48
|
-
}));
|
|
49
|
-
vi.mock("./utils/getParentPackageJSON", () => ({
|
|
50
|
-
getParentPackageJSON: vi.fn(() => ({
|
|
51
|
-
name: "@intlayer/cli",
|
|
52
|
-
version: "1.0.0",
|
|
53
|
-
description: "Intlayer CLI"
|
|
54
|
-
}))
|
|
55
|
-
}));
|
|
56
|
-
vi.mock("@intlayer/config/built", () => ({
|
|
57
|
-
__esModule: true,
|
|
58
|
-
default: {}
|
|
59
|
-
}));
|
|
60
|
-
vi.mock("@intlayer/config", () => ({
|
|
61
|
-
__esModule: true,
|
|
62
|
-
isESModule: false
|
|
63
|
-
}));
|
|
64
|
-
describe("Intlayer CLI", () => {
|
|
65
|
-
beforeEach(() => {
|
|
66
|
-
vi.resetModules();
|
|
67
|
-
buildMock = vi.fn();
|
|
68
|
-
pushMock = vi.fn();
|
|
69
|
-
pullMock = vi.fn();
|
|
70
|
-
fillMock = vi.fn();
|
|
71
|
-
getConfigMock = vi.fn();
|
|
72
|
-
pushConfigMock = vi.fn();
|
|
73
|
-
listContentDeclarationMock = vi.fn();
|
|
74
|
-
translateDocMock = vi.fn();
|
|
75
|
-
reviewDocMock = vi.fn();
|
|
76
|
-
});
|
|
77
|
-
afterEach(() => {
|
|
78
|
-
process.argv = [...ORIGINAL_ARGV];
|
|
79
|
-
vi.clearAllMocks();
|
|
80
|
-
});
|
|
81
|
-
describe("build command", () => {
|
|
82
|
-
it("triggers build with the --watch flag", async () => {
|
|
83
|
-
setProcessArgv(["build", "--watch"]);
|
|
84
|
-
const { setAPI } = await import("./cli");
|
|
85
|
-
setAPI();
|
|
86
|
-
expect(buildMock).toHaveBeenCalledTimes(1);
|
|
87
|
-
expect(buildMock).toHaveBeenCalledWith(
|
|
88
|
-
expect.objectContaining({ watch: true })
|
|
89
|
-
);
|
|
90
|
-
});
|
|
91
|
-
it("triggers build with verbose and custom prefix", async () => {
|
|
92
|
-
setProcessArgv(["build", "--verbose", "--prefix", "TEST"]);
|
|
93
|
-
const { setAPI } = await import("./cli");
|
|
94
|
-
setAPI();
|
|
95
|
-
expect(buildMock).toHaveBeenCalledTimes(1);
|
|
96
|
-
expect(buildMock).toHaveBeenCalledWith(
|
|
97
|
-
expect.objectContaining({
|
|
98
|
-
verbose: true,
|
|
99
|
-
prefix: "TEST",
|
|
100
|
-
configOptions: expect.objectContaining({
|
|
101
|
-
override: expect.objectContaining({
|
|
102
|
-
log: expect.objectContaining({
|
|
103
|
-
verbose: true,
|
|
104
|
-
prefix: "TEST"
|
|
105
|
-
})
|
|
106
|
-
})
|
|
107
|
-
})
|
|
108
|
-
})
|
|
109
|
-
);
|
|
110
|
-
});
|
|
111
|
-
it("triggers build with environment and base directory options", async () => {
|
|
112
|
-
setProcessArgv([
|
|
113
|
-
"build",
|
|
114
|
-
"--env",
|
|
115
|
-
"production",
|
|
116
|
-
"--base-dir",
|
|
117
|
-
"/custom/path"
|
|
118
|
-
]);
|
|
119
|
-
const { setAPI } = await import("./cli");
|
|
120
|
-
setAPI();
|
|
121
|
-
expect(buildMock).toHaveBeenCalledTimes(1);
|
|
122
|
-
expect(buildMock).toHaveBeenCalledWith(
|
|
123
|
-
expect.objectContaining({
|
|
124
|
-
env: "production",
|
|
125
|
-
baseDir: "/custom/path",
|
|
126
|
-
configOptions: expect.objectContaining({
|
|
127
|
-
env: "production",
|
|
128
|
-
baseDir: "/custom/path"
|
|
129
|
-
})
|
|
130
|
-
})
|
|
131
|
-
);
|
|
132
|
-
});
|
|
133
|
-
});
|
|
134
|
-
describe("push command", () => {
|
|
135
|
-
it("triggers push with dictionaries and delete flag", async () => {
|
|
136
|
-
setProcessArgv([
|
|
137
|
-
"push",
|
|
138
|
-
"--dictionaries",
|
|
139
|
-
"id1",
|
|
140
|
-
"id2",
|
|
141
|
-
"--deleteLocaleDictionary"
|
|
142
|
-
]);
|
|
143
|
-
const { setAPI } = await import("./cli");
|
|
144
|
-
setAPI();
|
|
145
|
-
expect(pushMock).toHaveBeenCalledTimes(1);
|
|
146
|
-
const pushOptions = pushMock.mock.calls[0][0];
|
|
147
|
-
expect(pushOptions.dictionaries).toEqual(["id1", "id2"]);
|
|
148
|
-
expect(pushOptions.deleteLocaleDictionary).toBe(true);
|
|
149
|
-
});
|
|
150
|
-
it("triggers push with keep flag and git options", async () => {
|
|
151
|
-
setProcessArgv([
|
|
152
|
-
"push",
|
|
153
|
-
"--keepLocaleDictionary",
|
|
154
|
-
"--uncommitted",
|
|
155
|
-
"--git-diff-base",
|
|
156
|
-
"main"
|
|
157
|
-
]);
|
|
158
|
-
const { setAPI } = await import("./cli");
|
|
159
|
-
setAPI();
|
|
160
|
-
expect(pushMock).toHaveBeenCalledTimes(1);
|
|
161
|
-
const pushOptions = pushMock.mock.calls[0][0];
|
|
162
|
-
expect(pushOptions.keepLocaleDictionary).toBe(true);
|
|
163
|
-
expect(pushOptions.gitOptions).toEqual(
|
|
164
|
-
expect.objectContaining({
|
|
165
|
-
mode: ["uncommitted"],
|
|
166
|
-
baseRef: "main",
|
|
167
|
-
absolute: true
|
|
168
|
-
})
|
|
169
|
-
);
|
|
170
|
-
});
|
|
171
|
-
});
|
|
172
|
-
describe("pull command", () => {
|
|
173
|
-
it("triggers pull with specific dictionaries", async () => {
|
|
174
|
-
setProcessArgv(["pull", "--dictionaries", "dict1", "dict2"]);
|
|
175
|
-
const { setAPI } = await import("./cli");
|
|
176
|
-
setAPI();
|
|
177
|
-
expect(pullMock).toHaveBeenCalledTimes(1);
|
|
178
|
-
expect(pullMock).toHaveBeenCalledWith(
|
|
179
|
-
expect.objectContaining({
|
|
180
|
-
dictionaries: ["dict1", "dict2"]
|
|
181
|
-
})
|
|
182
|
-
);
|
|
183
|
-
});
|
|
184
|
-
it("triggers pull with custom path for new dictionaries", async () => {
|
|
185
|
-
setProcessArgv(["pull", "--newDictionariesPath", "/custom/dict/path"]);
|
|
186
|
-
const { setAPI } = await import("./cli");
|
|
187
|
-
setAPI();
|
|
188
|
-
expect(pullMock).toHaveBeenCalledTimes(1);
|
|
189
|
-
expect(pullMock).toHaveBeenCalledWith(
|
|
190
|
-
expect.objectContaining({
|
|
191
|
-
newDictionariesPath: "/custom/dict/path"
|
|
192
|
-
})
|
|
193
|
-
);
|
|
194
|
-
});
|
|
195
|
-
});
|
|
196
|
-
describe("config commands", () => {
|
|
197
|
-
it("triggers config get with environment options", async () => {
|
|
198
|
-
setProcessArgv(["config", "get", "--env-file", ".env.local"]);
|
|
199
|
-
const { setAPI } = await import("./cli");
|
|
200
|
-
setAPI();
|
|
201
|
-
expect(getConfigMock).toHaveBeenCalledTimes(1);
|
|
202
|
-
expect(getConfigMock).toHaveBeenCalledWith(
|
|
203
|
-
expect.objectContaining({
|
|
204
|
-
envFile: ".env.local",
|
|
205
|
-
configOptions: expect.objectContaining({
|
|
206
|
-
envFile: ".env.local"
|
|
207
|
-
})
|
|
208
|
-
})
|
|
209
|
-
);
|
|
210
|
-
});
|
|
211
|
-
it("triggers config push", async () => {
|
|
212
|
-
setProcessArgv(["config", "push"]);
|
|
213
|
-
const { setAPI } = await import("./cli");
|
|
214
|
-
setAPI();
|
|
215
|
-
expect(pushConfigMock).toHaveBeenCalledTimes(1);
|
|
216
|
-
});
|
|
217
|
-
});
|
|
218
|
-
describe("fill command", () => {
|
|
219
|
-
it("triggers fill with complete mode and AI options", async () => {
|
|
220
|
-
setProcessArgv([
|
|
221
|
-
"fill",
|
|
222
|
-
"--mode",
|
|
223
|
-
"complete",
|
|
224
|
-
"--provider",
|
|
225
|
-
"openai",
|
|
226
|
-
"--model",
|
|
227
|
-
"gpt-4",
|
|
228
|
-
"--temperature",
|
|
229
|
-
"0.7"
|
|
230
|
-
]);
|
|
231
|
-
const { setAPI } = await import("./cli");
|
|
232
|
-
setAPI();
|
|
233
|
-
expect(fillMock).toHaveBeenCalledTimes(1);
|
|
234
|
-
expect(fillMock).toHaveBeenCalledWith(
|
|
235
|
-
expect.objectContaining({
|
|
236
|
-
mode: "complete",
|
|
237
|
-
provider: "openai",
|
|
238
|
-
model: "gpt-4",
|
|
239
|
-
temperature: "0.7",
|
|
240
|
-
aiOptions: expect.objectContaining({
|
|
241
|
-
provider: "openai",
|
|
242
|
-
model: "gpt-4",
|
|
243
|
-
temperature: "0.7"
|
|
244
|
-
})
|
|
245
|
-
})
|
|
246
|
-
);
|
|
247
|
-
});
|
|
248
|
-
it("triggers fill with file filters and locale options", async () => {
|
|
249
|
-
setProcessArgv([
|
|
250
|
-
"fill",
|
|
251
|
-
"--file",
|
|
252
|
-
"dict1.ts",
|
|
253
|
-
"dict2.ts",
|
|
254
|
-
"--source-locale",
|
|
255
|
-
"en",
|
|
256
|
-
"--output-locales",
|
|
257
|
-
"fr",
|
|
258
|
-
"es",
|
|
259
|
-
"--keys",
|
|
260
|
-
"button",
|
|
261
|
-
"title"
|
|
262
|
-
]);
|
|
263
|
-
const { setAPI } = await import("./cli");
|
|
264
|
-
setAPI();
|
|
265
|
-
expect(fillMock).toHaveBeenCalledTimes(1);
|
|
266
|
-
expect(fillMock).toHaveBeenCalledWith(
|
|
267
|
-
expect.objectContaining({
|
|
268
|
-
file: ["dict1.ts", "dict2.ts"],
|
|
269
|
-
sourceLocale: "en",
|
|
270
|
-
outputLocales: ["fr", "es"],
|
|
271
|
-
keys: ["button", "title"]
|
|
272
|
-
})
|
|
273
|
-
);
|
|
274
|
-
});
|
|
275
|
-
it("triggers fill with path filters and excluded keys", async () => {
|
|
276
|
-
setProcessArgv([
|
|
277
|
-
"fill",
|
|
278
|
-
"--path-filter",
|
|
279
|
-
"src/**/*.ts",
|
|
280
|
-
"--excluded-keys",
|
|
281
|
-
"debug",
|
|
282
|
-
"test"
|
|
283
|
-
]);
|
|
284
|
-
const { setAPI } = await import("./cli");
|
|
285
|
-
setAPI();
|
|
286
|
-
expect(fillMock).toHaveBeenCalledTimes(1);
|
|
287
|
-
expect(fillMock).toHaveBeenCalledWith(
|
|
288
|
-
expect.objectContaining({
|
|
289
|
-
pathFilter: ["src/**/*.ts"],
|
|
290
|
-
excludedKeys: ["debug", "test"]
|
|
291
|
-
})
|
|
292
|
-
);
|
|
293
|
-
});
|
|
294
|
-
});
|
|
295
|
-
describe("doc commands", () => {
|
|
296
|
-
it("triggers doc translate with AI and locale options", async () => {
|
|
297
|
-
setProcessArgv([
|
|
298
|
-
"doc",
|
|
299
|
-
"translate",
|
|
300
|
-
"--doc-pattern",
|
|
301
|
-
"docs/**/*.md",
|
|
302
|
-
"--locales",
|
|
303
|
-
"fr",
|
|
304
|
-
"es",
|
|
305
|
-
"--base-locale",
|
|
306
|
-
"en",
|
|
307
|
-
"--api-key",
|
|
308
|
-
"test-key"
|
|
309
|
-
]);
|
|
310
|
-
const { setAPI } = await import("./cli");
|
|
311
|
-
setAPI();
|
|
312
|
-
expect(translateDocMock).toHaveBeenCalledTimes(1);
|
|
313
|
-
expect(translateDocMock).toHaveBeenCalledWith(
|
|
314
|
-
expect.objectContaining({
|
|
315
|
-
docPattern: ["docs/**/*.md"],
|
|
316
|
-
locales: ["fr", "es"],
|
|
317
|
-
baseLocale: "en",
|
|
318
|
-
aiOptions: expect.objectContaining({
|
|
319
|
-
apiKey: "test-key"
|
|
320
|
-
})
|
|
321
|
-
})
|
|
322
|
-
);
|
|
323
|
-
});
|
|
324
|
-
it("triggers doc review with excluded patterns and processing options", async () => {
|
|
325
|
-
setProcessArgv([
|
|
326
|
-
"doc",
|
|
327
|
-
"review",
|
|
328
|
-
"--excluded-glob-pattern",
|
|
329
|
-
"node_modules/**",
|
|
330
|
-
"--nb-simultaneous-file-processed",
|
|
331
|
-
"5",
|
|
332
|
-
"--custom-prompt",
|
|
333
|
-
"Review for clarity"
|
|
334
|
-
]);
|
|
335
|
-
const { setAPI } = await import("./cli");
|
|
336
|
-
setAPI();
|
|
337
|
-
expect(reviewDocMock).toHaveBeenCalledTimes(1);
|
|
338
|
-
expect(reviewDocMock).toHaveBeenCalledWith(
|
|
339
|
-
expect.objectContaining({
|
|
340
|
-
excludedGlobPattern: ["node_modules/**"],
|
|
341
|
-
nbSimultaneousFileProcessed: "5",
|
|
342
|
-
aiOptions: expect.objectContaining({
|
|
343
|
-
customPrompt: "Review for clarity"
|
|
344
|
-
})
|
|
345
|
-
})
|
|
346
|
-
);
|
|
347
|
-
});
|
|
348
|
-
});
|
|
349
|
-
describe("content list command", () => {
|
|
350
|
-
it("triggers content list", async () => {
|
|
351
|
-
setProcessArgv(["content", "list"]);
|
|
352
|
-
const { setAPI } = await import("./cli");
|
|
353
|
-
setAPI();
|
|
354
|
-
expect(listContentDeclarationMock).toHaveBeenCalledTimes(1);
|
|
355
|
-
});
|
|
356
|
-
});
|
|
357
|
-
describe("git options integration", () => {
|
|
358
|
-
it("correctly parses git diff options", async () => {
|
|
359
|
-
setProcessArgv([
|
|
360
|
-
"fill",
|
|
361
|
-
"--git-diff",
|
|
362
|
-
"--git-diff-base",
|
|
363
|
-
"origin/main",
|
|
364
|
-
"--git-diff-current",
|
|
365
|
-
"HEAD",
|
|
366
|
-
"--untracked"
|
|
367
|
-
]);
|
|
368
|
-
const { setAPI } = await import("./cli");
|
|
369
|
-
setAPI();
|
|
370
|
-
expect(fillMock).toHaveBeenCalledTimes(1);
|
|
371
|
-
expect(fillMock).toHaveBeenCalledWith(
|
|
372
|
-
expect.objectContaining({
|
|
373
|
-
gitOptions: expect.objectContaining({
|
|
374
|
-
mode: ["gitDiff", "untracked"],
|
|
375
|
-
baseRef: "origin/main",
|
|
376
|
-
currentRef: "HEAD",
|
|
377
|
-
absolute: true
|
|
378
|
-
})
|
|
379
|
-
})
|
|
380
|
-
);
|
|
381
|
-
});
|
|
382
|
-
});
|
|
383
|
-
describe("alias commands", () => {
|
|
384
|
-
it("supports dictionary alias for build", async () => {
|
|
385
|
-
setProcessArgv(["dictionary", "build", "--watch"]);
|
|
386
|
-
const { setAPI } = await import("./cli");
|
|
387
|
-
setAPI();
|
|
388
|
-
expect(buildMock).toHaveBeenCalledTimes(1);
|
|
389
|
-
expect(buildMock).toHaveBeenCalledWith(
|
|
390
|
-
expect.objectContaining({ watch: true })
|
|
391
|
-
);
|
|
392
|
-
});
|
|
393
|
-
it("supports dic alias for push", async () => {
|
|
394
|
-
setProcessArgv(["dic", "push", "--dictionaries", "test"]);
|
|
395
|
-
const { setAPI } = await import("./cli");
|
|
396
|
-
setAPI();
|
|
397
|
-
expect(pushMock).toHaveBeenCalledTimes(1);
|
|
398
|
-
expect(pushMock).toHaveBeenCalledWith(
|
|
399
|
-
expect.objectContaining({
|
|
400
|
-
dictionaries: ["test"]
|
|
401
|
-
})
|
|
402
|
-
);
|
|
403
|
-
});
|
|
404
|
-
it("supports conf alias for config get", async () => {
|
|
405
|
-
setProcessArgv(["conf", "get"]);
|
|
406
|
-
const { setAPI } = await import("./cli");
|
|
407
|
-
setAPI();
|
|
408
|
-
expect(getConfigMock).toHaveBeenCalledTimes(1);
|
|
409
|
-
});
|
|
410
|
-
});
|
|
411
|
-
});
|
|
412
|
-
//# sourceMappingURL=cli.test.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/cli.test.ts"],"sourcesContent":["import { TextDecoder, TextEncoder } from 'util';\nimport { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';\n\n// Polyfill TextEncoder/TextDecoder for Node versions < 19\nif (!(globalThis as any).TextEncoder) {\n (globalThis as any).TextEncoder = TextEncoder;\n}\nif (!(globalThis as any).TextDecoder) {\n (globalThis as any).TextDecoder = TextDecoder;\n}\n\n// Keep references to the original argv so we can restore it after each test\nconst ORIGINAL_ARGV = [...process.argv];\n\n// Helper to reset process.argv for each test\nconst setProcessArgv = (args: string[]) => {\n process.argv = ['node', 'intlayer', ...args];\n};\n\n// Dynamic mock placeholders\nlet buildMock: ReturnType<typeof vi.fn>;\nlet pushMock: ReturnType<typeof vi.fn>;\nlet pullMock: ReturnType<typeof vi.fn>;\nlet fillMock: ReturnType<typeof vi.fn>;\nlet getConfigMock: ReturnType<typeof vi.fn>;\nlet pushConfigMock: ReturnType<typeof vi.fn>;\nlet listContentDeclarationMock: ReturnType<typeof vi.fn>;\nlet translateDocMock: ReturnType<typeof vi.fn>;\nlet reviewDocMock: ReturnType<typeof vi.fn>;\n\n// Hoisted mocks – evaluated before the tested module is imported\nvi.mock('./build', () => ({\n build: (...args: any[]) => buildMock(...args),\n}));\n\nvi.mock('./push', () => ({\n push: (...args: any[]) => pushMock(...args),\n}));\n\nvi.mock('./pull', () => ({\n pull: (...args: any[]) => pullMock(...args),\n}));\n\nvi.mock('./fill', () => ({\n fill: (...args: any[]) => fillMock(...args),\n}));\n\nvi.mock('./config', () => ({\n getConfig: (...args: any[]) => getConfigMock(...args),\n}));\n\nvi.mock('./pushConfig', () => ({\n pushConfig: (...args: any[]) => pushConfigMock(...args),\n}));\n\nvi.mock('./listContentDeclaration', () => ({\n listContentDeclaration: (...args: any[]) =>\n listContentDeclarationMock(...args),\n}));\n\nvi.mock('./translateDoc', () => ({\n translateDoc: (...args: any[]) => translateDocMock(...args),\n}));\n\nvi.mock('./reviewDoc', () => ({\n reviewDoc: (...args: any[]) => reviewDocMock(...args),\n}));\n\n// Mock getParentPackageJSON utility\nvi.mock('./utils/getParentPackageJSON', () => ({\n getParentPackageJSON: vi.fn(() => ({\n name: '@intlayer/cli',\n version: '1.0.0',\n description: 'Intlayer CLI',\n })),\n}));\n\n// Mock configuration import that the CLI relies on for defaults\nvi.mock('@intlayer/config/built', () => ({\n __esModule: true,\n default: {},\n}));\n\nvi.mock('@intlayer/config', () => ({\n __esModule: true,\n isESModule: false,\n}));\n\ndescribe('Intlayer CLI', () => {\n beforeEach(() => {\n // Reset module cache to load a fresh CLI instance for each test\n vi.resetModules();\n\n // Re-initialise mocks for each test run\n buildMock = vi.fn();\n pushMock = vi.fn();\n pullMock = vi.fn();\n fillMock = vi.fn();\n getConfigMock = vi.fn();\n pushConfigMock = vi.fn();\n listContentDeclarationMock = vi.fn();\n translateDocMock = vi.fn();\n reviewDocMock = vi.fn();\n });\n\n afterEach(() => {\n // Restore the original process arguments after each test\n process.argv = [...ORIGINAL_ARGV];\n vi.clearAllMocks();\n });\n\n describe('build command', () => {\n it('triggers build with the --watch flag', async () => {\n setProcessArgv(['build', '--watch']);\n\n const { setAPI } = await import('./cli');\n setAPI();\n\n expect(buildMock).toHaveBeenCalledTimes(1);\n expect(buildMock).toHaveBeenCalledWith(\n expect.objectContaining({ watch: true })\n );\n });\n\n it('triggers build with verbose and custom prefix', async () => {\n setProcessArgv(['build', '--verbose', '--prefix', 'TEST']);\n\n const { setAPI } = await import('./cli');\n setAPI();\n\n expect(buildMock).toHaveBeenCalledTimes(1);\n expect(buildMock).toHaveBeenCalledWith(\n expect.objectContaining({\n verbose: true,\n prefix: 'TEST',\n configOptions: expect.objectContaining({\n override: expect.objectContaining({\n log: expect.objectContaining({\n verbose: true,\n prefix: 'TEST',\n }),\n }),\n }),\n })\n );\n });\n\n it('triggers build with environment and base directory options', async () => {\n setProcessArgv([\n 'build',\n '--env',\n 'production',\n '--base-dir',\n '/custom/path',\n ]);\n\n const { setAPI } = await import('./cli');\n setAPI();\n\n expect(buildMock).toHaveBeenCalledTimes(1);\n expect(buildMock).toHaveBeenCalledWith(\n expect.objectContaining({\n env: 'production',\n baseDir: '/custom/path',\n configOptions: expect.objectContaining({\n env: 'production',\n baseDir: '/custom/path',\n }),\n })\n );\n });\n });\n\n describe('push command', () => {\n it('triggers push with dictionaries and delete flag', async () => {\n setProcessArgv([\n 'push',\n '--dictionaries',\n 'id1',\n 'id2',\n '--deleteLocaleDictionary',\n ]);\n\n const { setAPI } = await import('./cli');\n setAPI();\n\n expect(pushMock).toHaveBeenCalledTimes(1);\n\n const pushOptions = pushMock.mock.calls[0][0] as Record<string, unknown>;\n expect(pushOptions.dictionaries).toEqual(['id1', 'id2']);\n expect(pushOptions.deleteLocaleDictionary).toBe(true);\n });\n\n it('triggers push with keep flag and git options', async () => {\n setProcessArgv([\n 'push',\n '--keepLocaleDictionary',\n '--uncommitted',\n '--git-diff-base',\n 'main',\n ]);\n\n const { setAPI } = await import('./cli');\n setAPI();\n\n expect(pushMock).toHaveBeenCalledTimes(1);\n\n const pushOptions = pushMock.mock.calls[0][0] as Record<string, unknown>;\n expect(pushOptions.keepLocaleDictionary).toBe(true);\n expect(pushOptions.gitOptions).toEqual(\n expect.objectContaining({\n mode: ['uncommitted'],\n baseRef: 'main',\n absolute: true,\n })\n );\n });\n });\n\n describe('pull command', () => {\n it('triggers pull with specific dictionaries', async () => {\n setProcessArgv(['pull', '--dictionaries', 'dict1', 'dict2']);\n\n const { setAPI } = await import('./cli');\n setAPI();\n\n expect(pullMock).toHaveBeenCalledTimes(1);\n expect(pullMock).toHaveBeenCalledWith(\n expect.objectContaining({\n dictionaries: ['dict1', 'dict2'],\n })\n );\n });\n\n it('triggers pull with custom path for new dictionaries', async () => {\n setProcessArgv(['pull', '--newDictionariesPath', '/custom/dict/path']);\n\n const { setAPI } = await import('./cli');\n setAPI();\n\n expect(pullMock).toHaveBeenCalledTimes(1);\n expect(pullMock).toHaveBeenCalledWith(\n expect.objectContaining({\n newDictionariesPath: '/custom/dict/path',\n })\n );\n });\n });\n\n describe('config commands', () => {\n it('triggers config get with environment options', async () => {\n setProcessArgv(['config', 'get', '--env-file', '.env.local']);\n\n const { setAPI } = await import('./cli');\n setAPI();\n\n expect(getConfigMock).toHaveBeenCalledTimes(1);\n expect(getConfigMock).toHaveBeenCalledWith(\n expect.objectContaining({\n envFile: '.env.local',\n configOptions: expect.objectContaining({\n envFile: '.env.local',\n }),\n })\n );\n });\n\n it('triggers config push', async () => {\n setProcessArgv(['config', 'push']);\n\n const { setAPI } = await import('./cli');\n setAPI();\n\n expect(pushConfigMock).toHaveBeenCalledTimes(1);\n });\n });\n\n describe('fill command', () => {\n it('triggers fill with complete mode and AI options', async () => {\n setProcessArgv([\n 'fill',\n '--mode',\n 'complete',\n '--provider',\n 'openai',\n '--model',\n 'gpt-4',\n '--temperature',\n '0.7',\n ]);\n\n const { setAPI } = await import('./cli');\n setAPI();\n\n expect(fillMock).toHaveBeenCalledTimes(1);\n expect(fillMock).toHaveBeenCalledWith(\n expect.objectContaining({\n mode: 'complete',\n provider: 'openai',\n model: 'gpt-4',\n temperature: '0.7',\n aiOptions: expect.objectContaining({\n provider: 'openai',\n model: 'gpt-4',\n temperature: '0.7',\n }),\n })\n );\n });\n\n it('triggers fill with file filters and locale options', async () => {\n setProcessArgv([\n 'fill',\n '--file',\n 'dict1.ts',\n 'dict2.ts',\n '--source-locale',\n 'en',\n '--output-locales',\n 'fr',\n 'es',\n '--keys',\n 'button',\n 'title',\n ]);\n\n const { setAPI } = await import('./cli');\n setAPI();\n\n expect(fillMock).toHaveBeenCalledTimes(1);\n expect(fillMock).toHaveBeenCalledWith(\n expect.objectContaining({\n file: ['dict1.ts', 'dict2.ts'],\n sourceLocale: 'en',\n outputLocales: ['fr', 'es'],\n keys: ['button', 'title'],\n })\n );\n });\n\n it('triggers fill with path filters and excluded keys', async () => {\n setProcessArgv([\n 'fill',\n '--path-filter',\n 'src/**/*.ts',\n '--excluded-keys',\n 'debug',\n 'test',\n ]);\n\n const { setAPI } = await import('./cli');\n setAPI();\n\n expect(fillMock).toHaveBeenCalledTimes(1);\n expect(fillMock).toHaveBeenCalledWith(\n expect.objectContaining({\n pathFilter: ['src/**/*.ts'],\n excludedKeys: ['debug', 'test'],\n })\n );\n });\n });\n\n describe('doc commands', () => {\n it('triggers doc translate with AI and locale options', async () => {\n setProcessArgv([\n 'doc',\n 'translate',\n '--doc-pattern',\n 'docs/**/*.md',\n '--locales',\n 'fr',\n 'es',\n '--base-locale',\n 'en',\n '--api-key',\n 'test-key',\n ]);\n\n const { setAPI } = await import('./cli');\n setAPI();\n\n expect(translateDocMock).toHaveBeenCalledTimes(1);\n expect(translateDocMock).toHaveBeenCalledWith(\n expect.objectContaining({\n docPattern: ['docs/**/*.md'],\n locales: ['fr', 'es'],\n baseLocale: 'en',\n aiOptions: expect.objectContaining({\n apiKey: 'test-key',\n }),\n })\n );\n });\n\n it('triggers doc review with excluded patterns and processing options', async () => {\n setProcessArgv([\n 'doc',\n 'review',\n '--excluded-glob-pattern',\n 'node_modules/**',\n '--nb-simultaneous-file-processed',\n '5',\n '--custom-prompt',\n 'Review for clarity',\n ]);\n\n const { setAPI } = await import('./cli');\n setAPI();\n\n expect(reviewDocMock).toHaveBeenCalledTimes(1);\n expect(reviewDocMock).toHaveBeenCalledWith(\n expect.objectContaining({\n excludedGlobPattern: ['node_modules/**'],\n nbSimultaneousFileProcessed: '5',\n aiOptions: expect.objectContaining({\n customPrompt: 'Review for clarity',\n }),\n })\n );\n });\n });\n\n describe('content list command', () => {\n it('triggers content list', async () => {\n setProcessArgv(['content', 'list']);\n\n const { setAPI } = await import('./cli');\n setAPI();\n\n expect(listContentDeclarationMock).toHaveBeenCalledTimes(1);\n });\n });\n\n describe('git options integration', () => {\n it('correctly parses git diff options', async () => {\n setProcessArgv([\n 'fill',\n '--git-diff',\n '--git-diff-base',\n 'origin/main',\n '--git-diff-current',\n 'HEAD',\n '--untracked',\n ]);\n\n const { setAPI } = await import('./cli');\n setAPI();\n\n expect(fillMock).toHaveBeenCalledTimes(1);\n expect(fillMock).toHaveBeenCalledWith(\n expect.objectContaining({\n gitOptions: expect.objectContaining({\n mode: ['gitDiff', 'untracked'],\n baseRef: 'origin/main',\n currentRef: 'HEAD',\n absolute: true,\n }),\n })\n );\n });\n });\n\n describe('alias commands', () => {\n it('supports dictionary alias for build', async () => {\n setProcessArgv(['dictionary', 'build', '--watch']);\n\n const { setAPI } = await import('./cli');\n setAPI();\n\n expect(buildMock).toHaveBeenCalledTimes(1);\n expect(buildMock).toHaveBeenCalledWith(\n expect.objectContaining({ watch: true })\n );\n });\n\n it('supports dic alias for push', async () => {\n setProcessArgv(['dic', 'push', '--dictionaries', 'test']);\n\n const { setAPI } = await import('./cli');\n setAPI();\n\n expect(pushMock).toHaveBeenCalledTimes(1);\n expect(pushMock).toHaveBeenCalledWith(\n expect.objectContaining({\n dictionaries: ['test'],\n })\n );\n });\n\n it('supports conf alias for config get', async () => {\n setProcessArgv(['conf', 'get']);\n\n const { setAPI } = await import('./cli');\n setAPI();\n\n expect(getConfigMock).toHaveBeenCalledTimes(1);\n });\n });\n});\n"],"mappings":"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","names":[]}
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
import { readFileSync } from "fs";
|
|
2
|
-
import { join } from "path";
|
|
3
|
-
import { describe, expect, it } from "vitest";
|
|
4
|
-
import { chunkText } from "./calculateChunks.mjs";
|
|
5
|
-
import { getChunk } from "./getChunk.mjs";
|
|
6
|
-
const sampleText = [
|
|
7
|
-
"Line 0: The quick brown fox jumps over the lazy dog.",
|
|
8
|
-
"Line 1: Pack my box with five dozen liquor jugs.",
|
|
9
|
-
"Line 2: How razorback-jumping frogs can level six piqued gymnasts!",
|
|
10
|
-
"Line 3: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. ",
|
|
11
|
-
"Line 4: A mad boxer shot a quick, gloved jab to the jaw of his dizzy opponent."
|
|
12
|
-
].join("\n");
|
|
13
|
-
describe("calculateChunks", () => {
|
|
14
|
-
it.skip("creates chunks with custom parameters", () => {
|
|
15
|
-
const chunks = chunkText(sampleText, 200);
|
|
16
|
-
expect(chunks).toStrictEqual([
|
|
17
|
-
{
|
|
18
|
-
content: "Line 0: The quick brown fox jumps over the lazy dog.\nLine 1: Pack my box with five dozen liquor jugs.\nLine 2: How razorback-jumping frogs can level six piqued gymnasts!",
|
|
19
|
-
lineStart: 0,
|
|
20
|
-
lineEnd: 2,
|
|
21
|
-
charStart: 0,
|
|
22
|
-
charEnd: 167
|
|
23
|
-
},
|
|
24
|
-
{
|
|
25
|
-
content: "Line 3: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 5",
|
|
26
|
-
lineStart: 3,
|
|
27
|
-
lineEnd: 3,
|
|
28
|
-
charStart: 0,
|
|
29
|
-
charEnd: 199
|
|
30
|
-
},
|
|
31
|
-
{
|
|
32
|
-
content: "1. 52. 53. 54. 55. 56. 57. 58. 59. 60. ",
|
|
33
|
-
lineStart: 3,
|
|
34
|
-
lineEnd: 3,
|
|
35
|
-
charStart: 200,
|
|
36
|
-
charEnd: 238
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
content: "Line 4: A mad boxer shot a quick, gloved jab to the jaw of his dizzy opponent.",
|
|
40
|
-
lineStart: 4,
|
|
41
|
-
lineEnd: 4,
|
|
42
|
-
charStart: 0,
|
|
43
|
-
charEnd: 77
|
|
44
|
-
}
|
|
45
|
-
]);
|
|
46
|
-
});
|
|
47
|
-
it("creates chunks with overlap", () => {
|
|
48
|
-
const chunks = chunkText(sampleText, 200, 100);
|
|
49
|
-
expect(chunks).toStrictEqual([
|
|
50
|
-
{
|
|
51
|
-
content: "Line 0: The quick brown fox jumps over the lazy dog.\nLine 1: Pack my box with five dozen liquor jugs.\nLine 2: How razorback-jumping frogs can level six piqued gymnasts!\n",
|
|
52
|
-
lineStart: 0,
|
|
53
|
-
lineLength: 3,
|
|
54
|
-
charStart: 0,
|
|
55
|
-
charLength: 169
|
|
56
|
-
},
|
|
57
|
-
{
|
|
58
|
-
content: "Line 2: How razorback-jumping frogs can level six piqued gymnasts!\nLine 3: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 5",
|
|
59
|
-
lineStart: 2,
|
|
60
|
-
lineLength: 2,
|
|
61
|
-
charStart: 102,
|
|
62
|
-
charLength: 267
|
|
63
|
-
},
|
|
64
|
-
{
|
|
65
|
-
content: "6. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. \n",
|
|
66
|
-
lineStart: 3,
|
|
67
|
-
lineLength: 1,
|
|
68
|
-
charStart: 269,
|
|
69
|
-
charLength: 140
|
|
70
|
-
},
|
|
71
|
-
{
|
|
72
|
-
content: "1. 52. 53. 54. 55. 56. 57. 58. 59. 60. \nLine 4: A mad boxer shot a quick, gloved jab to the jaw of his dizzy opponent.",
|
|
73
|
-
lineStart: 3,
|
|
74
|
-
lineLength: 2,
|
|
75
|
-
charStart: 369,
|
|
76
|
-
charLength: 118
|
|
77
|
-
}
|
|
78
|
-
]);
|
|
79
|
-
});
|
|
80
|
-
it("Line and char stats correspond", () => {
|
|
81
|
-
const chunks = chunkText(sampleText, 200, 100);
|
|
82
|
-
const firstChunk = chunks[0];
|
|
83
|
-
const thirdChunk = chunks[2];
|
|
84
|
-
const retrievedFirstChunk = getChunk(sampleText, firstChunk);
|
|
85
|
-
const retrievedThirdChunk = getChunk(sampleText, thirdChunk);
|
|
86
|
-
expect(retrievedFirstChunk).toBe(firstChunk.content);
|
|
87
|
-
expect(retrievedThirdChunk).toBe(thirdChunk.content);
|
|
88
|
-
});
|
|
89
|
-
it("Validates chunking with real file content", () => {
|
|
90
|
-
const fileContent = readFileSync(
|
|
91
|
-
join(__dirname, "./calculrateChunkTest.md"),
|
|
92
|
-
"utf-8"
|
|
93
|
-
);
|
|
94
|
-
const chunks = chunkText(fileContent, 200, 100);
|
|
95
|
-
const firstChunk = chunks[8];
|
|
96
|
-
const thirdChunk = chunks[25];
|
|
97
|
-
const retrievedFirstChunk = getChunk(fileContent, firstChunk);
|
|
98
|
-
const retrievedThirdChunk = getChunk(fileContent, thirdChunk);
|
|
99
|
-
expect(retrievedFirstChunk).toBe(firstChunk.content);
|
|
100
|
-
expect(retrievedThirdChunk).toBe(thirdChunk.content);
|
|
101
|
-
});
|
|
102
|
-
});
|
|
103
|
-
//# sourceMappingURL=calculateChunks.test.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/utils/calculateChunks.test.ts"],"sourcesContent":["import { readFileSync } from 'fs';\nimport { join } from 'path';\nimport { describe, expect, it } from 'vitest';\nimport { chunkText } from './calculateChunks';\nimport { getChunk } from './getChunk';\n\n// Sample multiline string reused across test cases\nconst sampleText = [\n 'Line 0: The quick brown fox jumps over the lazy dog.',\n 'Line 1: Pack my box with five dozen liquor jugs.',\n 'Line 2: How razorback-jumping frogs can level six piqued gymnasts!',\n 'Line 3: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. ',\n 'Line 4: A mad boxer shot a quick, gloved jab to the jaw of his dizzy opponent.',\n].join('\\n');\n\ndescribe('calculateChunks', () => {\n it.skip('creates chunks with custom parameters', () => {\n const chunks = chunkText(sampleText, 200);\n\n expect(chunks).toStrictEqual([\n {\n content:\n 'Line 0: The quick brown fox jumps over the lazy dog.\\n' +\n 'Line 1: Pack my box with five dozen liquor jugs.\\n' +\n 'Line 2: How razorback-jumping frogs can level six piqued gymnasts!',\n lineStart: 0,\n lineEnd: 2,\n charStart: 0,\n charEnd: 167,\n },\n {\n content:\n 'Line 3: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 5',\n lineStart: 3,\n lineEnd: 3,\n charStart: 0,\n charEnd: 199,\n },\n {\n content: '1. 52. 53. 54. 55. 56. 57. 58. 59. 60. ',\n lineStart: 3,\n lineEnd: 3,\n charStart: 200,\n charEnd: 238,\n },\n {\n content:\n 'Line 4: A mad boxer shot a quick, gloved jab to the jaw of his dizzy opponent.',\n lineStart: 4,\n lineEnd: 4,\n charStart: 0,\n charEnd: 77,\n },\n ]);\n });\n\n it('creates chunks with overlap', () => {\n const chunks = chunkText(sampleText, 200, 100);\n\n expect(chunks).toStrictEqual([\n {\n content:\n 'Line 0: The quick brown fox jumps over the lazy dog.\\n' +\n 'Line 1: Pack my box with five dozen liquor jugs.\\n' +\n 'Line 2: How razorback-jumping frogs can level six piqued gymnasts!\\n',\n lineStart: 0,\n lineLength: 3,\n charStart: 0,\n charLength: 169,\n },\n {\n content:\n 'Line 2: How razorback-jumping frogs can level six piqued gymnasts!\\n' +\n 'Line 3: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 5',\n lineStart: 2,\n lineLength: 2,\n charStart: 102,\n charLength: 267,\n },\n {\n content:\n '6. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. \\n',\n lineStart: 3,\n lineLength: 1,\n charStart: 269,\n charLength: 140,\n },\n {\n content:\n '1. 52. 53. 54. 55. 56. 57. 58. 59. 60. \\n' +\n 'Line 4: A mad boxer shot a quick, gloved jab to the jaw of his dizzy opponent.',\n lineStart: 3,\n lineLength: 2,\n charStart: 369,\n charLength: 118,\n },\n ]);\n });\n\n it('Line and char stats correspond', () => {\n const chunks = chunkText(sampleText, 200, 100);\n\n const firstChunk = chunks[0];\n const thirdChunk = chunks[2];\n\n const retrievedFirstChunk = getChunk(sampleText, firstChunk);\n const retrievedThirdChunk = getChunk(sampleText, thirdChunk);\n\n expect(retrievedFirstChunk).toBe(firstChunk.content);\n expect(retrievedThirdChunk).toBe(thirdChunk.content);\n });\n\n it('Validates chunking with real file content', () => {\n const fileContent = readFileSync(\n join(__dirname, './calculrateChunkTest.md'),\n 'utf-8'\n );\n\n const chunks = chunkText(fileContent, 200, 100);\n\n const firstChunk = chunks[8];\n const thirdChunk = chunks[25];\n\n const retrievedFirstChunk = getChunk(fileContent, firstChunk);\n const retrievedThirdChunk = getChunk(fileContent, thirdChunk);\n\n expect(retrievedFirstChunk).toBe(firstChunk.content);\n expect(retrievedThirdChunk).toBe(thirdChunk.content);\n });\n});\n"],"mappings":"AAAA,SAAS,oBAAoB;AAC7B,SAAS,YAAY;AACrB,SAAS,UAAU,QAAQ,UAAU;AACrC,SAAS,iBAAiB;AAC1B,SAAS,gBAAgB;AAGzB,MAAM,aAAa;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,EAAE,KAAK,IAAI;AAEX,SAAS,mBAAmB,MAAM;AAChC,KAAG,KAAK,yCAAyC,MAAM;AACrD,UAAM,SAAS,UAAU,YAAY,GAAG;AAExC,WAAO,MAAM,EAAE,cAAc;AAAA,MAC3B;AAAA,QACE,SACE;AAAA,QAGF,WAAW;AAAA,QACX,SAAS;AAAA,QACT,WAAW;AAAA,QACX,SAAS;AAAA,MACX;AAAA,MACA;AAAA,QACE,SACE;AAAA,QACF,WAAW;AAAA,QACX,SAAS;AAAA,QACT,WAAW;AAAA,QACX,SAAS;AAAA,MACX;AAAA,MACA;AAAA,QACE,SAAS;AAAA,QACT,WAAW;AAAA,QACX,SAAS;AAAA,QACT,WAAW;AAAA,QACX,SAAS;AAAA,MACX;AAAA,MACA;AAAA,QACE,SACE;AAAA,QACF,WAAW;AAAA,QACX,SAAS;AAAA,QACT,WAAW;AAAA,QACX,SAAS;AAAA,MACX;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AAED,KAAG,+BAA+B,MAAM;AACtC,UAAM,SAAS,UAAU,YAAY,KAAK,GAAG;AAE7C,WAAO,MAAM,EAAE,cAAc;AAAA,MAC3B;AAAA,QACE,SACE;AAAA,QAGF,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,WAAW;AAAA,QACX,YAAY;AAAA,MACd;AAAA,MACA;AAAA,QACE,SACE;AAAA,QAEF,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,WAAW;AAAA,QACX,YAAY;AAAA,MACd;AAAA,MACA;AAAA,QACE,SACE;AAAA,QACF,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,WAAW;AAAA,QACX,YAAY;AAAA,MACd;AAAA,MACA;AAAA,QACE,SACE;AAAA,QAEF,WAAW;AAAA,QACX,YAAY;AAAA,QACZ,WAAW;AAAA,QACX,YAAY;AAAA,MACd;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AAED,KAAG,kCAAkC,MAAM;AACzC,UAAM,SAAS,UAAU,YAAY,KAAK,GAAG;AAE7C,UAAM,aAAa,OAAO,CAAC;AAC3B,UAAM,aAAa,OAAO,CAAC;AAE3B,UAAM,sBAAsB,SAAS,YAAY,UAAU;AAC3D,UAAM,sBAAsB,SAAS,YAAY,UAAU;AAE3D,WAAO,mBAAmB,EAAE,KAAK,WAAW,OAAO;AACnD,WAAO,mBAAmB,EAAE,KAAK,WAAW,OAAO;AAAA,EACrD,CAAC;AAED,KAAG,6CAA6C,MAAM;AACpD,UAAM,cAAc;AAAA,MAClB,KAAK,WAAW,0BAA0B;AAAA,MAC1C;AAAA,IACF;AAEA,UAAM,SAAS,UAAU,aAAa,KAAK,GAAG;AAE9C,UAAM,aAAa,OAAO,CAAC;AAC3B,UAAM,aAAa,OAAO,EAAE;AAE5B,UAAM,sBAAsB,SAAS,aAAa,UAAU;AAC5D,UAAM,sBAAsB,SAAS,aAAa,UAAU;AAE5D,WAAO,mBAAmB,EAAE,KAAK,WAAW,OAAO;AACnD,WAAO,mBAAmB,EAAE,KAAK,WAAW,OAAO;AAAA,EACrD,CAAC;AACH,CAAC;","names":[]}
|