@ng-linguo/extract 0.9.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 +177 -0
- package/linguo.config.schema.json +53 -0
- package/package.json +38 -0
- package/src/cli.d.ts +2 -0
- package/src/cli.js +287 -0
- package/src/cli.js.map +1 -0
- package/src/index.d.ts +10 -0
- package/src/index.js +18 -0
- package/src/index.js.map +1 -0
- package/src/interactive.d.ts +12 -0
- package/src/interactive.js +679 -0
- package/src/interactive.js.map +1 -0
- package/src/lib/apply.d.ts +20 -0
- package/src/lib/apply.js +43 -0
- package/src/lib/apply.js.map +1 -0
- package/src/lib/clipboard.d.ts +17 -0
- package/src/lib/clipboard.js +96 -0
- package/src/lib/clipboard.js.map +1 -0
- package/src/lib/compile.d.ts +12 -0
- package/src/lib/compile.js +29 -0
- package/src/lib/compile.js.map +1 -0
- package/src/lib/config.d.ts +104 -0
- package/src/lib/config.js +185 -0
- package/src/lib/config.js.map +1 -0
- package/src/lib/merge.d.ts +13 -0
- package/src/lib/merge.js +34 -0
- package/src/lib/merge.js.map +1 -0
- package/src/lib/normalize.d.ts +15 -0
- package/src/lib/normalize.js +21 -0
- package/src/lib/normalize.js.map +1 -0
- package/src/lib/po.d.ts +25 -0
- package/src/lib/po.js +110 -0
- package/src/lib/po.js.map +1 -0
- package/src/lib/prompt.d.ts +33 -0
- package/src/lib/prompt.js +80 -0
- package/src/lib/prompt.js.map +1 -0
- package/src/lib/runner.d.ts +62 -0
- package/src/lib/runner.js +102 -0
- package/src/lib/runner.js.map +1 -0
- package/src/lib/scan.d.ts +31 -0
- package/src/lib/scan.js +183 -0
- package/src/lib/scan.js.map +1 -0
- package/src/lib/translation-prompt.txt +214 -0
- package/src/lib/translator.d.ts +83 -0
- package/src/lib/translator.js +91 -0
- package/src/lib/translator.js.map +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interactive.js","sourceRoot":"","sources":["../../../../packages/extract/src/interactive.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/** Whether a `msgstr` is still untranslated (empty or `<MISSING TRANSLATION>`). */
|
|
2
|
+
export declare function isUntranslated(msgstr: string): boolean;
|
|
3
|
+
/** Outcome of {@link applyTranslations}. */
|
|
4
|
+
export interface ApplyResult {
|
|
5
|
+
/** The updated full catalog as `.po` text. */
|
|
6
|
+
readonly po: string;
|
|
7
|
+
/** How many entries received a new translation. */
|
|
8
|
+
readonly applied: number;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Merge translated `msgstr`s from a (possibly partial) reply catalog into a full
|
|
12
|
+
* catalog, matched by `(context, msgid)`. This is how the interactive wizard
|
|
13
|
+
* folds an LLM's reply — which contains only the previously untranslated entries
|
|
14
|
+
* — back into the complete `.po`.
|
|
15
|
+
*
|
|
16
|
+
* Reply entries that are still untranslated (empty or `<MISSING TRANSLATION>`),
|
|
17
|
+
* that do not match an existing entry, or that repeat the current value are
|
|
18
|
+
* ignored, so pasting the wrong text cannot corrupt the catalog.
|
|
19
|
+
*/
|
|
20
|
+
export declare function applyTranslations(fullPo: string, replyPo: string): ApplyResult;
|
package/src/lib/apply.js
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isUntranslated = isUntranslated;
|
|
4
|
+
exports.applyTranslations = applyTranslations;
|
|
5
|
+
const po_1 = require("./po");
|
|
6
|
+
const runner_1 = require("./runner");
|
|
7
|
+
/** Whether a `msgstr` is still untranslated (empty or `<MISSING TRANSLATION>`). */
|
|
8
|
+
function isUntranslated(msgstr) {
|
|
9
|
+
return msgstr === '' || msgstr.startsWith(runner_1.MISSING_PREFIX);
|
|
10
|
+
}
|
|
11
|
+
/** Identity matching an entry across two catalogs: context + source text. */
|
|
12
|
+
function identity(entry) {
|
|
13
|
+
return `${entry.context} ${entry.msgid}`;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Merge translated `msgstr`s from a (possibly partial) reply catalog into a full
|
|
17
|
+
* catalog, matched by `(context, msgid)`. This is how the interactive wizard
|
|
18
|
+
* folds an LLM's reply — which contains only the previously untranslated entries
|
|
19
|
+
* — back into the complete `.po`.
|
|
20
|
+
*
|
|
21
|
+
* Reply entries that are still untranslated (empty or `<MISSING TRANSLATION>`),
|
|
22
|
+
* that do not match an existing entry, or that repeat the current value are
|
|
23
|
+
* ignored, so pasting the wrong text cannot corrupt the catalog.
|
|
24
|
+
*/
|
|
25
|
+
function applyTranslations(fullPo, replyPo) {
|
|
26
|
+
const entries = (0, po_1.parsePo)(fullPo);
|
|
27
|
+
const index = new Map(entries.map((entry, i) => [identity(entry), i]));
|
|
28
|
+
const merged = entries.slice();
|
|
29
|
+
let applied = 0;
|
|
30
|
+
for (const replied of (0, po_1.parsePo)(replyPo)) {
|
|
31
|
+
if (isUntranslated(replied.msgstr)) {
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
const i = index.get(identity(replied));
|
|
35
|
+
const current = i === undefined ? undefined : merged[i];
|
|
36
|
+
if (i !== undefined && current !== undefined && current.msgstr !== replied.msgstr) {
|
|
37
|
+
merged[i] = { ...current, msgstr: replied.msgstr };
|
|
38
|
+
applied += 1;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return { po: (0, po_1.serializePo)(merged), applied };
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=apply.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apply.js","sourceRoot":"","sources":["../../../../../packages/extract/src/lib/apply.ts"],"names":[],"mappings":";;AAIA,wCAEC;AAyBD,8CAmBC;AAlDD,6BAA0D;AAC1D,qCAA0C;AAE1C,mFAAmF;AACnF,SAAgB,cAAc,CAAC,MAAc;IAC3C,OAAO,MAAM,KAAK,EAAE,IAAI,MAAM,CAAC,UAAU,CAAC,uBAAc,CAAC,CAAC;AAC5D,CAAC;AAED,6EAA6E;AAC7E,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;AAC3C,CAAC;AAUD;;;;;;;;;GASG;AACH,SAAgB,iBAAiB,CAAC,MAAc,EAAE,OAAe;IAC/D,MAAM,OAAO,GAAG,IAAA,YAAO,EAAC,MAAM,CAAC,CAAC;IAChC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACvE,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAC/B,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,KAAK,MAAM,OAAO,IAAI,IAAA,YAAO,EAAC,OAAO,CAAC,EAAE,CAAC;QACvC,IAAI,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACnC,SAAS;QACX,CAAC;QACD,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACxD,IAAI,CAAC,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC;YAClF,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;YACnD,OAAO,IAAI,CAAC,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,IAAA,gBAAW,EAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC;AAC9C,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copy text to the OS clipboard via the platform's native tool, so we add no
|
|
3
|
+
* runtime dependency for this. On Windows we round-trip through a UTF-8 temp
|
|
4
|
+
* file so `Set-Clipboard` preserves accented characters (piping to `clip`
|
|
5
|
+
* mangles them under the legacy code page).
|
|
6
|
+
*
|
|
7
|
+
* @returns whether a clipboard tool succeeded.
|
|
8
|
+
*/
|
|
9
|
+
export declare function copyToClipboard(text: string): boolean;
|
|
10
|
+
/**
|
|
11
|
+
* Read text from the OS clipboard via the platform's native tool. On Windows we
|
|
12
|
+
* write it to a UTF-8 (no-BOM) temp file with `[IO.File]::WriteAllText` rather
|
|
13
|
+
* than `Out-File`, which would wrap long lines and corrupt long `.po` entries.
|
|
14
|
+
*
|
|
15
|
+
* @returns the clipboard text, or `undefined` if it could not be read.
|
|
16
|
+
*/
|
|
17
|
+
export declare function readClipboard(): string | undefined;
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.copyToClipboard = copyToClipboard;
|
|
4
|
+
exports.readClipboard = readClipboard;
|
|
5
|
+
const node_child_process_1 = require("node:child_process");
|
|
6
|
+
const node_fs_1 = require("node:fs");
|
|
7
|
+
const node_os_1 = require("node:os");
|
|
8
|
+
const node_path_1 = require("node:path");
|
|
9
|
+
/**
|
|
10
|
+
* Copy text to the OS clipboard via the platform's native tool, so we add no
|
|
11
|
+
* runtime dependency for this. On Windows we round-trip through a UTF-8 temp
|
|
12
|
+
* file so `Set-Clipboard` preserves accented characters (piping to `clip`
|
|
13
|
+
* mangles them under the legacy code page).
|
|
14
|
+
*
|
|
15
|
+
* @returns whether a clipboard tool succeeded.
|
|
16
|
+
*/
|
|
17
|
+
function copyToClipboard(text) {
|
|
18
|
+
try {
|
|
19
|
+
if (process.platform === 'win32') {
|
|
20
|
+
const tmp = (0, node_path_1.join)((0, node_os_1.tmpdir)(), `linguo-prompt-${process.pid}.txt`);
|
|
21
|
+
(0, node_fs_1.writeFileSync)(tmp, text, 'utf8');
|
|
22
|
+
try {
|
|
23
|
+
const res = (0, node_child_process_1.spawnSync)('powershell', [
|
|
24
|
+
'-NoProfile',
|
|
25
|
+
'-Command',
|
|
26
|
+
`Set-Clipboard -Value (Get-Content -Raw -Encoding UTF8 -LiteralPath '${tmp}')`,
|
|
27
|
+
], { stdio: 'ignore' });
|
|
28
|
+
return !res.error && res.status === 0;
|
|
29
|
+
}
|
|
30
|
+
finally {
|
|
31
|
+
(0, node_fs_1.rmSync)(tmp, { force: true });
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
const tools = process.platform === 'darwin'
|
|
35
|
+
? [['pbcopy', []]]
|
|
36
|
+
: [
|
|
37
|
+
['wl-copy', []],
|
|
38
|
+
['xclip', ['-selection', 'clipboard']],
|
|
39
|
+
['xsel', ['--clipboard', '--input']],
|
|
40
|
+
];
|
|
41
|
+
for (const [cmd, args] of tools) {
|
|
42
|
+
const res = (0, node_child_process_1.spawnSync)(cmd, [...args], { input: text, stdio: ['pipe', 'ignore', 'ignore'] });
|
|
43
|
+
if (!res.error && res.status === 0) {
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Read text from the OS clipboard via the platform's native tool. On Windows we
|
|
55
|
+
* write it to a UTF-8 (no-BOM) temp file with `[IO.File]::WriteAllText` rather
|
|
56
|
+
* than `Out-File`, which would wrap long lines and corrupt long `.po` entries.
|
|
57
|
+
*
|
|
58
|
+
* @returns the clipboard text, or `undefined` if it could not be read.
|
|
59
|
+
*/
|
|
60
|
+
function readClipboard() {
|
|
61
|
+
try {
|
|
62
|
+
if (process.platform === 'win32') {
|
|
63
|
+
const tmp = (0, node_path_1.join)((0, node_os_1.tmpdir)(), `linguo-paste-${process.pid}.txt`);
|
|
64
|
+
const script = `$c = Get-Clipboard -Raw; if ($null -eq $c) { $c = '' }; ` +
|
|
65
|
+
`[IO.File]::WriteAllText('${tmp}', $c, (New-Object System.Text.UTF8Encoding($false)))`;
|
|
66
|
+
const res = (0, node_child_process_1.spawnSync)('powershell', ['-NoProfile', '-Command', script], { stdio: 'ignore' });
|
|
67
|
+
if (res.error || res.status !== 0) {
|
|
68
|
+
return undefined;
|
|
69
|
+
}
|
|
70
|
+
try {
|
|
71
|
+
return (0, node_fs_1.readFileSync)(tmp, 'utf8');
|
|
72
|
+
}
|
|
73
|
+
finally {
|
|
74
|
+
(0, node_fs_1.rmSync)(tmp, { force: true });
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
const tools = process.platform === 'darwin'
|
|
78
|
+
? [['pbpaste', []]]
|
|
79
|
+
: [
|
|
80
|
+
['wl-paste', []],
|
|
81
|
+
['xclip', ['-selection', 'clipboard', '-o']],
|
|
82
|
+
['xsel', ['--clipboard', '--output']],
|
|
83
|
+
];
|
|
84
|
+
for (const [cmd, args] of tools) {
|
|
85
|
+
const res = (0, node_child_process_1.spawnSync)(cmd, [...args], { encoding: 'utf8' });
|
|
86
|
+
if (!res.error && res.status === 0 && typeof res.stdout === 'string') {
|
|
87
|
+
return res.stdout;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return undefined;
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
return undefined;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=clipboard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clipboard.js","sourceRoot":"","sources":["../../../../../packages/extract/src/lib/clipboard.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { PoEntry } from './po';
|
|
2
|
+
/**
|
|
3
|
+
* Compile catalog entries into the runtime dictionary the loader consumes: a
|
|
4
|
+
* flat `key -> translation` map (CLAUDE.md §5.3's stable JSON format).
|
|
5
|
+
*
|
|
6
|
+
* Entries with a context are keyed as `context<glue>msgid` so the same source
|
|
7
|
+
* text can carry multiple translations; entries without one are keyed by the
|
|
8
|
+
* plain `msgid`, which is also the fallback the runtime uses when no context is
|
|
9
|
+
* supplied. Entries with an empty translation are omitted, so the runtime falls
|
|
10
|
+
* back to showing the key itself.
|
|
11
|
+
*/
|
|
12
|
+
export declare function compileEntries(entries: readonly PoEntry[]): Record<string, string>;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.compileEntries = compileEntries;
|
|
4
|
+
// Joins context and key in the runtime dictionary. This is the gettext
|
|
5
|
+
// `pgettext` convention (the EOT control character) and MUST stay identical to
|
|
6
|
+
// `@ng-linguo/linguo`'s `contextKey`, so a contextual key compiled here resolves
|
|
7
|
+
// at runtime.
|
|
8
|
+
const CONTEXT_GLUE = String.fromCharCode(4);
|
|
9
|
+
/**
|
|
10
|
+
* Compile catalog entries into the runtime dictionary the loader consumes: a
|
|
11
|
+
* flat `key -> translation` map (CLAUDE.md §5.3's stable JSON format).
|
|
12
|
+
*
|
|
13
|
+
* Entries with a context are keyed as `context<glue>msgid` so the same source
|
|
14
|
+
* text can carry multiple translations; entries without one are keyed by the
|
|
15
|
+
* plain `msgid`, which is also the fallback the runtime uses when no context is
|
|
16
|
+
* supplied. Entries with an empty translation are omitted, so the runtime falls
|
|
17
|
+
* back to showing the key itself.
|
|
18
|
+
*/
|
|
19
|
+
function compileEntries(entries) {
|
|
20
|
+
const dictionary = {};
|
|
21
|
+
for (const entry of entries) {
|
|
22
|
+
if (entry.msgstr.length > 0) {
|
|
23
|
+
const key = entry.context === '' ? entry.msgid : `${entry.context}${CONTEXT_GLUE}${entry.msgid}`;
|
|
24
|
+
dictionary[key] = entry.msgstr;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return dictionary;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=compile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile.js","sourceRoot":"","sources":["../../../../../packages/extract/src/lib/compile.ts"],"names":[],"mappings":";;AAkBA,wCAUC;AA1BD,uEAAuE;AACvE,+EAA+E;AAC/E,iFAAiF;AACjF,cAAc;AACd,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAE5C;;;;;;;;;GASG;AACH,SAAgB,cAAc,CAAC,OAA2B;IACxD,MAAM,UAAU,GAA2B,EAAE,CAAC;IAC9C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,GAAG,GACP,KAAK,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,GAAG,YAAY,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;YACvF,UAAU,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;QACjC,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/** The conventional config file name discovered when `--config` is omitted. */
|
|
2
|
+
export declare const CONFIG_FILENAME = "linguo.config.json";
|
|
3
|
+
/**
|
|
4
|
+
* Locate a `linguo.config.json` when no explicit `--config` was given. Searches
|
|
5
|
+
* upward from `startDir` first — so running anywhere inside a project finds its
|
|
6
|
+
* root config — then downward through the workspace, so running from a monorepo
|
|
7
|
+
* root still finds a single project config without a flag.
|
|
8
|
+
*
|
|
9
|
+
* @returns the resolved path, or `undefined` when none is found.
|
|
10
|
+
* @throws when the downward search finds more than one config (ambiguous —
|
|
11
|
+
* the caller should pass `--config`).
|
|
12
|
+
*/
|
|
13
|
+
export declare function findConfigFile(startDir: string): string | undefined;
|
|
14
|
+
/**
|
|
15
|
+
* Consumer-facing configuration for the `linguo-extract` tooling, typically
|
|
16
|
+
* stored as `linguo.config.json` at the project root. Paths are resolved
|
|
17
|
+
* relative to the config file's directory.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```json
|
|
21
|
+
* {
|
|
22
|
+
* "locales": ["en", "pl", "de"],
|
|
23
|
+
* "sourceLocale": "en",
|
|
24
|
+
* "src": "src",
|
|
25
|
+
* "catalogs": "i18n",
|
|
26
|
+
* "output": "src/assets/i18n"
|
|
27
|
+
* }
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export interface LinguoConfig {
|
|
31
|
+
/**
|
|
32
|
+
* Path or URL to the JSON schema, for editor autocomplete and validation.
|
|
33
|
+
* Preserved on read/write; the CLI fills in a default when creating a config.
|
|
34
|
+
*/
|
|
35
|
+
readonly $schema?: string;
|
|
36
|
+
/** Languages to generate catalogs for. Required and non-empty. */
|
|
37
|
+
readonly locales: readonly string[];
|
|
38
|
+
/** Language whose entries hold the source text (no missing flag). Default `en`. */
|
|
39
|
+
readonly sourceLocale: string;
|
|
40
|
+
/** Directory scanned for translatable strings. Default `src`. */
|
|
41
|
+
readonly src: string;
|
|
42
|
+
/** Directory holding the `<locale>.po` catalogs. Default `i18n`. */
|
|
43
|
+
readonly catalogs: string;
|
|
44
|
+
/** Directory for the compiled runtime `<locale>.json`. Default `src/assets/i18n`. */
|
|
45
|
+
readonly output: string;
|
|
46
|
+
/**
|
|
47
|
+
* Base for `#:` source references in the `.po` files:
|
|
48
|
+
* - `'config'` — relative to this config file's directory (gettext-style,
|
|
49
|
+
* portable; the default).
|
|
50
|
+
* - `'workspace'` — relative to where the CLI is run (typically the workspace
|
|
51
|
+
* root), so paths resolve for terminal Ctrl+Click and editor tooling.
|
|
52
|
+
*/
|
|
53
|
+
readonly referenceBase: 'config' | 'workspace';
|
|
54
|
+
/**
|
|
55
|
+
* Path to a module that exports a `translate` function (or a default function)
|
|
56
|
+
* for automatic AI translation, resolved relative to this config file. When
|
|
57
|
+
* set, `linguo-extract translate` and the menu's "Automatic" option call it
|
|
58
|
+
* with a ready-built prompt and merge its reply. The consumer owns the
|
|
59
|
+
* provider SDK and API secrets. Omit to translate via the clipboard instead.
|
|
60
|
+
*/
|
|
61
|
+
readonly translator?: string;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* The `$schema` reference written into freshly-created configs. Resolves for an
|
|
65
|
+
* installed consumer (the schema ships at the package root); editors read it
|
|
66
|
+
* relative to the config file. An existing `$schema` is always preserved over this.
|
|
67
|
+
*/
|
|
68
|
+
export declare const CONFIG_SCHEMA_REF = "./node_modules/@ng-linguo/extract/linguo.config.schema.json";
|
|
69
|
+
/** Defaults applied for any field a config file omits (except `locales`). */
|
|
70
|
+
export declare const DEFAULT_CONFIG: Omit<LinguoConfig, 'locales' | '$schema'>;
|
|
71
|
+
/**
|
|
72
|
+
* Field values for {@link buildInitConfig}, mirroring every editable
|
|
73
|
+
* {@link LinguoConfig} field. Optional fields fall back to {@link DEFAULT_CONFIG}
|
|
74
|
+
* (or, for `translator`, are omitted) — so the CLI can pass raw flag values
|
|
75
|
+
* (which are `undefined` when the flag is absent) straight through.
|
|
76
|
+
*/
|
|
77
|
+
export interface InitConfigOptions {
|
|
78
|
+
/** Languages to generate catalogs for. Required and non-empty. */
|
|
79
|
+
readonly locales: readonly string[];
|
|
80
|
+
readonly sourceLocale?: string | undefined;
|
|
81
|
+
readonly src?: string | undefined;
|
|
82
|
+
readonly catalogs?: string | undefined;
|
|
83
|
+
readonly output?: string | undefined;
|
|
84
|
+
readonly referenceBase?: 'config' | 'workspace' | undefined;
|
|
85
|
+
readonly translator?: string | undefined;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Build a fresh {@link LinguoConfig} for the `init` command from explicit option
|
|
89
|
+
* values, applying {@link DEFAULT_CONFIG} for any omitted field and stamping the
|
|
90
|
+
* `$schema` reference. A blank/absent `translator` is omitted entirely (its
|
|
91
|
+
* absence means "use the clipboard flow"), keeping the result round-trippable
|
|
92
|
+
* through {@link serializeConfig}/{@link parseConfig}.
|
|
93
|
+
*/
|
|
94
|
+
export declare function buildInitConfig(options: InitConfigOptions): LinguoConfig;
|
|
95
|
+
/**
|
|
96
|
+
* Parse and validate a `linguo.config.json` document, applying defaults. Throws
|
|
97
|
+
* a descriptive error when the JSON is invalid or `locales` is missing/empty.
|
|
98
|
+
*/
|
|
99
|
+
export declare function parseConfig(raw: string): LinguoConfig;
|
|
100
|
+
/**
|
|
101
|
+
* Serialize a {@link LinguoConfig} to pretty-printed `linguo.config.json` text
|
|
102
|
+
* (stable field order, trailing newline). Round-trips with {@link parseConfig}.
|
|
103
|
+
*/
|
|
104
|
+
export declare function serializeConfig(config: LinguoConfig): string;
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DEFAULT_CONFIG = exports.CONFIG_SCHEMA_REF = exports.CONFIG_FILENAME = void 0;
|
|
4
|
+
exports.findConfigFile = findConfigFile;
|
|
5
|
+
exports.buildInitConfig = buildInitConfig;
|
|
6
|
+
exports.parseConfig = parseConfig;
|
|
7
|
+
exports.serializeConfig = serializeConfig;
|
|
8
|
+
const node_fs_1 = require("node:fs");
|
|
9
|
+
const node_path_1 = require("node:path");
|
|
10
|
+
/** The conventional config file name discovered when `--config` is omitted. */
|
|
11
|
+
exports.CONFIG_FILENAME = 'linguo.config.json';
|
|
12
|
+
/** Directories never descended into during the downward config search. */
|
|
13
|
+
const SKIP_DIRS = new Set(['node_modules', 'dist', 'coverage', 'tmp']);
|
|
14
|
+
function findUpward(startDir) {
|
|
15
|
+
let dir = startDir;
|
|
16
|
+
for (;;) {
|
|
17
|
+
const candidate = (0, node_path_1.join)(dir, exports.CONFIG_FILENAME);
|
|
18
|
+
if ((0, node_fs_1.existsSync)(candidate)) {
|
|
19
|
+
return candidate;
|
|
20
|
+
}
|
|
21
|
+
const parent = (0, node_path_1.dirname)(dir);
|
|
22
|
+
if (parent === dir) {
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
dir = parent;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
function findDownward(startDir, maxDepth) {
|
|
29
|
+
const found = [];
|
|
30
|
+
const walk = (dir, depth) => {
|
|
31
|
+
let entries;
|
|
32
|
+
try {
|
|
33
|
+
entries = (0, node_fs_1.readdirSync)(dir, { withFileTypes: true });
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
return; // unreadable directory — skip it
|
|
37
|
+
}
|
|
38
|
+
for (const entry of entries) {
|
|
39
|
+
if (entry.isDirectory()) {
|
|
40
|
+
if (depth >= maxDepth || entry.name.startsWith('.') || SKIP_DIRS.has(entry.name)) {
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
walk((0, node_path_1.join)(dir, entry.name), depth + 1);
|
|
44
|
+
}
|
|
45
|
+
else if (entry.name === exports.CONFIG_FILENAME) {
|
|
46
|
+
found.push((0, node_path_1.join)(dir, entry.name));
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
walk(startDir, 0);
|
|
51
|
+
return found;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Locate a `linguo.config.json` when no explicit `--config` was given. Searches
|
|
55
|
+
* upward from `startDir` first — so running anywhere inside a project finds its
|
|
56
|
+
* root config — then downward through the workspace, so running from a monorepo
|
|
57
|
+
* root still finds a single project config without a flag.
|
|
58
|
+
*
|
|
59
|
+
* @returns the resolved path, or `undefined` when none is found.
|
|
60
|
+
* @throws when the downward search finds more than one config (ambiguous —
|
|
61
|
+
* the caller should pass `--config`).
|
|
62
|
+
*/
|
|
63
|
+
function findConfigFile(startDir) {
|
|
64
|
+
const upward = findUpward(startDir);
|
|
65
|
+
if (upward !== undefined) {
|
|
66
|
+
return upward;
|
|
67
|
+
}
|
|
68
|
+
const downward = findDownward(startDir, 6);
|
|
69
|
+
if (downward.length > 1) {
|
|
70
|
+
throw new Error(`linguo config: found ${downward.length} ${exports.CONFIG_FILENAME} files ` +
|
|
71
|
+
`(${downward.join(', ')}). Pass --config <path> to choose one.`);
|
|
72
|
+
}
|
|
73
|
+
return downward[0];
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* The `$schema` reference written into freshly-created configs. Resolves for an
|
|
77
|
+
* installed consumer (the schema ships at the package root); editors read it
|
|
78
|
+
* relative to the config file. An existing `$schema` is always preserved over this.
|
|
79
|
+
*/
|
|
80
|
+
exports.CONFIG_SCHEMA_REF = './node_modules/@ng-linguo/extract/linguo.config.schema.json';
|
|
81
|
+
/** Defaults applied for any field a config file omits (except `locales`). */
|
|
82
|
+
exports.DEFAULT_CONFIG = {
|
|
83
|
+
sourceLocale: 'en',
|
|
84
|
+
src: 'src',
|
|
85
|
+
catalogs: 'i18n',
|
|
86
|
+
output: 'src/assets/i18n',
|
|
87
|
+
referenceBase: 'config',
|
|
88
|
+
};
|
|
89
|
+
/**
|
|
90
|
+
* Build a fresh {@link LinguoConfig} for the `init` command from explicit option
|
|
91
|
+
* values, applying {@link DEFAULT_CONFIG} for any omitted field and stamping the
|
|
92
|
+
* `$schema` reference. A blank/absent `translator` is omitted entirely (its
|
|
93
|
+
* absence means "use the clipboard flow"), keeping the result round-trippable
|
|
94
|
+
* through {@link serializeConfig}/{@link parseConfig}.
|
|
95
|
+
*/
|
|
96
|
+
function buildInitConfig(options) {
|
|
97
|
+
const translator = options.translator?.trim();
|
|
98
|
+
return {
|
|
99
|
+
$schema: exports.CONFIG_SCHEMA_REF,
|
|
100
|
+
locales: options.locales,
|
|
101
|
+
sourceLocale: options.sourceLocale ?? exports.DEFAULT_CONFIG.sourceLocale,
|
|
102
|
+
src: options.src ?? exports.DEFAULT_CONFIG.src,
|
|
103
|
+
catalogs: options.catalogs ?? exports.DEFAULT_CONFIG.catalogs,
|
|
104
|
+
output: options.output ?? exports.DEFAULT_CONFIG.output,
|
|
105
|
+
referenceBase: options.referenceBase ?? exports.DEFAULT_CONFIG.referenceBase,
|
|
106
|
+
...(translator ? { translator } : {}),
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
function asString(value, fallback) {
|
|
110
|
+
return typeof value === 'string' && value.length > 0 ? value : fallback;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Parse and validate a `linguo.config.json` document, applying defaults. Throws
|
|
114
|
+
* a descriptive error when the JSON is invalid or `locales` is missing/empty.
|
|
115
|
+
*/
|
|
116
|
+
function parseConfig(raw) {
|
|
117
|
+
let data;
|
|
118
|
+
try {
|
|
119
|
+
data = JSON.parse(raw);
|
|
120
|
+
}
|
|
121
|
+
catch {
|
|
122
|
+
throw new Error('linguo config: file is not valid JSON');
|
|
123
|
+
}
|
|
124
|
+
if (typeof data !== 'object' || data === null) {
|
|
125
|
+
throw new Error('linguo config: expected a JSON object');
|
|
126
|
+
}
|
|
127
|
+
const record = data;
|
|
128
|
+
const rawLocales = record['locales'];
|
|
129
|
+
if (!Array.isArray(rawLocales) || rawLocales.length === 0) {
|
|
130
|
+
throw new Error('linguo config: "locales" must be a non-empty array of language codes');
|
|
131
|
+
}
|
|
132
|
+
const locales = [];
|
|
133
|
+
for (const locale of rawLocales) {
|
|
134
|
+
if (typeof locale !== 'string') {
|
|
135
|
+
throw new Error('linguo config: every entry in "locales" must be a string');
|
|
136
|
+
}
|
|
137
|
+
locales.push(locale);
|
|
138
|
+
}
|
|
139
|
+
const referenceBase = record['referenceBase'];
|
|
140
|
+
if (referenceBase !== undefined && referenceBase !== 'config' && referenceBase !== 'workspace') {
|
|
141
|
+
throw new Error('linguo config: "referenceBase" must be "config" or "workspace"');
|
|
142
|
+
}
|
|
143
|
+
const translator = record['translator'];
|
|
144
|
+
if (translator !== undefined && typeof translator !== 'string') {
|
|
145
|
+
throw new Error('linguo config: "translator" must be a string path to a module');
|
|
146
|
+
}
|
|
147
|
+
const schema = record['$schema'];
|
|
148
|
+
if (schema !== undefined && typeof schema !== 'string') {
|
|
149
|
+
throw new Error('linguo config: "$schema" must be a string');
|
|
150
|
+
}
|
|
151
|
+
return {
|
|
152
|
+
// Preserve $schema so editor tooling keeps working after a CLI round-trip.
|
|
153
|
+
...(typeof schema === 'string' && schema.length > 0 ? { $schema: schema } : {}),
|
|
154
|
+
locales,
|
|
155
|
+
sourceLocale: asString(record['sourceLocale'], exports.DEFAULT_CONFIG.sourceLocale),
|
|
156
|
+
src: asString(record['src'], exports.DEFAULT_CONFIG.src),
|
|
157
|
+
catalogs: asString(record['catalogs'], exports.DEFAULT_CONFIG.catalogs),
|
|
158
|
+
output: asString(record['output'], exports.DEFAULT_CONFIG.output),
|
|
159
|
+
referenceBase: referenceBase === 'workspace' ? 'workspace' : exports.DEFAULT_CONFIG.referenceBase,
|
|
160
|
+
// Only carry a non-empty translator; absence means "clipboard flow".
|
|
161
|
+
...(typeof translator === 'string' && translator.length > 0 ? { translator } : {}),
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Serialize a {@link LinguoConfig} to pretty-printed `linguo.config.json` text
|
|
166
|
+
* (stable field order, trailing newline). Round-trips with {@link parseConfig}.
|
|
167
|
+
*/
|
|
168
|
+
function serializeConfig(config) {
|
|
169
|
+
const ordered = {};
|
|
170
|
+
// $schema goes first by convention so editors pick it up immediately.
|
|
171
|
+
if (config.$schema !== undefined) {
|
|
172
|
+
ordered['$schema'] = config.$schema;
|
|
173
|
+
}
|
|
174
|
+
ordered['locales'] = config.locales;
|
|
175
|
+
ordered['sourceLocale'] = config.sourceLocale;
|
|
176
|
+
ordered['src'] = config.src;
|
|
177
|
+
ordered['catalogs'] = config.catalogs;
|
|
178
|
+
ordered['output'] = config.output;
|
|
179
|
+
ordered['referenceBase'] = config.referenceBase;
|
|
180
|
+
if (config.translator !== undefined) {
|
|
181
|
+
ordered['translator'] = config.translator;
|
|
182
|
+
}
|
|
183
|
+
return `${JSON.stringify(ordered, null, 2)}\n`;
|
|
184
|
+
}
|
|
185
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../../packages/extract/src/lib/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ExtractedMessage } from './scan';
|
|
2
|
+
import type { PoEntry } from './po';
|
|
3
|
+
/**
|
|
4
|
+
* Merge freshly extracted messages into an existing catalog.
|
|
5
|
+
*
|
|
6
|
+
* The existing `translation` (msgstr) is preserved for entries that still appear
|
|
7
|
+
* in the source — matched by their (context, key) identity — and `references`
|
|
8
|
+
* are refreshed to the current locations. Entries no longer
|
|
9
|
+
* present are dropped; new ones are added with an empty translation. The result
|
|
10
|
+
* follows the extraction order (order of discovery), so re-extraction keeps the
|
|
11
|
+
* catalog stable and readable.
|
|
12
|
+
*/
|
|
13
|
+
export declare function mergeCatalog(existing: readonly PoEntry[], extracted: readonly ExtractedMessage[]): PoEntry[];
|