@the-i18n-kit/cli 4.10.0 → 5.0.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 +29 -296
- package/dist/{_shared-Dn15c_g9.js → _shared-DFyy3sh8.js} +24 -12
- package/dist/_shared-DFyy3sh8.js.map +1 -0
- package/dist/{add-Dj6hsdl9.js → add-C-qs8iBa.js} +5 -5
- package/dist/{add-Dj6hsdl9.js.map → add-C-qs8iBa.js.map} +1 -1
- package/dist/bin.js +1 -1
- package/dist/{check-BI-CGxpY.js → check-BI1orjXb.js} +11 -19
- package/dist/check-BI1orjXb.js.map +1 -0
- package/dist/cli-DsFuVJNP.js +74 -0
- package/dist/cli-DsFuVJNP.js.map +1 -0
- package/dist/config/framework/stubs/{next-intl-routing-Se7Y8cCb.d.ts → next-intl-routing-Cwaa3f4R.d.ts} +1 -1
- package/dist/config/framework/stubs/{next-intl-routing-Se7Y8cCb.d.ts.map → next-intl-routing-Cwaa3f4R.d.ts.map} +1 -1
- package/dist/config/framework/stubs/{unplugin-vue-i18n-DrR5pbEW.d.ts → unplugin-vue-i18n-1ud7-Ly8.d.ts} +1 -1
- package/dist/config/framework/stubs/{unplugin-vue-i18n-DrR5pbEW.d.ts.map → unplugin-vue-i18n-1ud7-Ly8.d.ts.map} +1 -1
- package/dist/define-config-4ubtfvUy.js.map +1 -1
- package/dist/{define-config-DpbZ4BZ6.d.ts → define-config-BaZ1dZph.d.ts} +11 -4
- package/dist/define-config-BaZ1dZph.d.ts.map +1 -0
- package/dist/{define-config-BSsvRnWR.d.ts → define-config-CLgKN-7N.d.ts} +1 -1
- package/dist/define-config.d.ts +1 -1
- package/dist/{detect-BmvyRD1a.js → detect-7cVfsNJP.js} +5 -5
- package/dist/{detect-BmvyRD1a.js.map → detect-7cVfsNJP.js.map} +1 -1
- package/dist/{empty-Ww6FnmgY.js → empty-DB8Hl_8u.js} +5 -5
- package/dist/{empty-Ww6FnmgY.js.map → empty-DB8Hl_8u.js.map} +1 -1
- package/dist/find-duplicates-CmEqBfby.js +42 -0
- package/dist/find-duplicates-CmEqBfby.js.map +1 -0
- package/dist/{get-oF_xIbVR.js → get-BE21Iy6N.js} +5 -5
- package/dist/{get-oF_xIbVR.js.map → get-BE21Iy6N.js.map} +1 -1
- package/dist/{index-JeU02vfH.d.ts → index-DCG3dOdC.d.ts} +332 -3
- package/dist/index-DCG3dOdC.d.ts.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +4 -4
- package/dist/{init-D4B1_DXb.js → init-BtzmhsOM.js} +5 -5
- package/dist/{init-D4B1_DXb.js.map → init-BtzmhsOM.js.map} +1 -1
- package/dist/{list-dirs-CgXh-Lg1.js → list-dirs-DUQbwvlE.js} +5 -5
- package/dist/{list-dirs-CgXh-Lg1.js.map → list-dirs-DUQbwvlE.js.map} +1 -1
- package/dist/{missing-BZT6PgW5.js → missing-CcYrgd54.js} +5 -5
- package/dist/{missing-BZT6PgW5.js.map → missing-CcYrgd54.js.map} +1 -1
- package/dist/move-B2px6Ck-.js +50 -0
- package/dist/move-B2px6Ck-.js.map +1 -0
- package/dist/{operations-BCJd7in3.js → operations-CTo44gPu.js} +1332 -241
- package/dist/operations-CTo44gPu.js.map +1 -0
- package/dist/php-reader-3Fgw80zK.js +64 -0
- package/dist/php-reader-3Fgw80zK.js.map +1 -0
- package/dist/php-reader-CpnaPSpZ.js +2 -0
- package/dist/{providers-BAwPjeCy.js → providers-CHE2ffi6.js} +53 -27
- package/dist/providers-CHE2ffi6.js.map +1 -0
- package/dist/{remove-B7m-hi2O.js → remove-DTbqM4bR.js} +5 -5
- package/dist/{remove-B7m-hi2O.js.map → remove-DTbqM4bR.js.map} +1 -1
- package/dist/{remove-orphans-DOTWE7Ji.js → remove-orphans-Dfzu7hRz.js} +5 -5
- package/dist/{remove-orphans-DOTWE7Ji.js.map → remove-orphans-Dfzu7hRz.js.map} +1 -1
- package/dist/{rename-DEJWj5_P.js → rename-C_rFKkU4.js} +5 -5
- package/dist/{rename-DEJWj5_P.js.map → rename-C_rFKkU4.js.map} +1 -1
- package/dist/{scaffold-BH_OX-5z.js → scaffold-CUimlNqR.js} +5 -5
- package/dist/{scaffold-BH_OX-5z.js.map → scaffold-CUimlNqR.js.map} +1 -1
- package/dist/{scan-LeU4xG0G.js → scan-BkOIYhjZ.js} +5 -5
- package/dist/{scan-LeU4xG0G.js.map → scan-BkOIYhjZ.js.map} +1 -1
- package/dist/{search-CHdDywqc.js → search-0io1BcsY.js} +5 -5
- package/dist/{search-CHdDywqc.js.map → search-0io1BcsY.js.map} +1 -1
- package/dist/{status-CwI94d_R.js → status-Bp-SzjTN.js} +5 -5
- package/dist/{status-CwI94d_R.js.map → status-Bp-SzjTN.js.map} +1 -1
- package/dist/{translate-Cf3npNpr.js → translate-cCb2Z57w.js} +6 -6
- package/dist/{translate-Cf3npNpr.js.map → translate-cCb2Z57w.js.map} +1 -1
- package/dist/{translate-key-Bg_8B6c_.js → translate-key-DHLWEmrA.js} +5 -5
- package/dist/{translate-key-Bg_8B6c_.js.map → translate-key-DHLWEmrA.js.map} +1 -1
- package/dist/{update-DNv-dU1U.js → update-DV4ijRVB.js} +5 -5
- package/dist/{update-DNv-dU1U.js.map → update-DV4ijRVB.js.map} +1 -1
- package/dist/{write-DUwMSc75.js → write-Czzm_Nb0.js} +5 -5
- package/dist/{write-DUwMSc75.js.map → write-Czzm_Nb0.js.map} +1 -1
- package/package.json +15 -5
- package/dist/_shared-Dn15c_g9.js.map +0 -1
- package/dist/check-BI-CGxpY.js.map +0 -1
- package/dist/cli-CDhNbaUM.js +0 -82
- package/dist/cli-CDhNbaUM.js.map +0 -1
- package/dist/define-config-DpbZ4BZ6.d.ts.map +0 -1
- package/dist/find-duplicates-BfBBqP7I.js +0 -31
- package/dist/find-duplicates-BfBBqP7I.js.map +0 -1
- package/dist/index-JeU02vfH.d.ts.map +0 -1
- package/dist/operations-BCJd7in3.js.map +0 -1
- package/dist/php-reader-DcgOAhTw.js +0 -2
- package/dist/php-reader-DuZ0Hyl_.js +0 -32
- package/dist/php-reader-DuZ0Hyl_.js.map +0 -1
- package/dist/providers-BAwPjeCy.js.map +0 -1
- /package/dist/{bin-CF8fSc-R.d.ts → bin-DrKRgnr9.d.ts} +0 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import "./stdout-guard-sJHFWVem.js";
|
|
2
|
-
import {
|
|
3
|
-
import "./providers-
|
|
4
|
-
import "./php-reader-
|
|
5
|
-
import { a as resolveProviderTranslateFn, i as providerArgs, o as splitList, t as createCommand } from "./_shared-
|
|
2
|
+
import { j as translateKey } from "./operations-CTo44gPu.js";
|
|
3
|
+
import "./providers-CHE2ffi6.js";
|
|
4
|
+
import "./php-reader-3Fgw80zK.js";
|
|
5
|
+
import { a as resolveProviderTranslateFn, i as providerArgs, o as splitList, t as createCommand } from "./_shared-DFyy3sh8.js";
|
|
6
6
|
//#region src/commands/translate-key.ts
|
|
7
7
|
var translate_key_default = createCommand({
|
|
8
8
|
name: "translate-key",
|
|
@@ -70,4 +70,4 @@ var translate_key_default = createCommand({
|
|
|
70
70
|
//#endregion
|
|
71
71
|
export { translate_key_default as default };
|
|
72
72
|
|
|
73
|
-
//# sourceMappingURL=translate-key-
|
|
73
|
+
//# sourceMappingURL=translate-key-DHLWEmrA.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"translate-key-
|
|
1
|
+
{"version":3,"file":"translate-key-DHLWEmrA.js","names":[],"sources":["../src/commands/translate-key.ts"],"sourcesContent":["import { createCommand, splitList, providerArgs, resolveProviderTranslateFn } from './_shared.js'\nimport { translateKey } from '../core/operations.js'\n\nexport default createCommand({\n name: 'translate-key',\n description: 'Translate a single key from a source locale into target locales. Supports LLM translation with --provider.',\n args: {\n layer: { type: 'string', description: 'Layer name', required: true },\n key: { type: 'string', description: 'Dot-separated translation key', required: true },\n sourceLocale: { type: 'string', description: 'Source locale code/language/file', required: true },\n sourceValue: { type: 'string', description: 'Optional source value to write before translating' },\n targets: { type: 'string', description: 'Comma-separated target locales, or \"all\"/omitted for all except source' },\n overwrite: { type: 'boolean', description: 'Overwrite existing target translations (default true)', default: true },\n dryRun: { type: 'boolean', description: 'Preview without writing or translating', default: false },\n includePreview: { type: 'boolean', description: 'Include translated values in output', default: false },\n ...providerArgs,\n },\n async run(args) {\n const targetLocales = args.targets === 'all' ? 'all' : splitList(args.targets)\n\n const translateFn = await resolveProviderTranslateFn(args)\n\n const result = await translateKey({\n layer: args.layer,\n key: args.key,\n sourceLocale: args.sourceLocale,\n sourceValue: args.sourceValue,\n targetLocales,\n overwrite: args.overwrite,\n dryRun: args.dryRun,\n includePreview: args.includePreview,\n projectDir: args.projectDir,\n translateFn,\n })\n\n // CLI-owned guidance: agent mode here just means no provider was given\n if (result.mode === 'agent' && result.skipped.some(s => s.reason === 'no-provider')) {\n result.message = 'No provider configured — nothing was translated. Pass --provider and --model '\n + '(API key via --apiKey or the OPENAI_API_KEY / ANTHROPIC_API_KEY / GEMINI_API_KEY env vars) '\n + 'to translate automatically.'\n }\n return result\n },\n})\n"],"mappings":";;;;;;AAGA,IAAA,wBAAe,cAAc;CAC3B,MAAM;CACN,aAAa;CACb,MAAM;EACJ,OAAO;GAAE,MAAM;GAAU,aAAa;GAAc,UAAU;GAAM;EACpE,KAAK;GAAE,MAAM;GAAU,aAAa;GAAiC,UAAU;GAAM;EACrF,cAAc;GAAE,MAAM;GAAU,aAAa;GAAoC,UAAU;GAAM;EACjG,aAAa;GAAE,MAAM;GAAU,aAAa;GAAqD;EACjG,SAAS;GAAE,MAAM;GAAU,aAAa;GAA0E;EAClH,WAAW;GAAE,MAAM;GAAW,aAAa;GAAyD,SAAS;GAAM;EACnH,QAAQ;GAAE,MAAM;GAAW,aAAa;GAA0C,SAAS;GAAO;EAClG,gBAAgB;GAAE,MAAM;GAAW,aAAa;GAAuC,SAAS;GAAO;EACvG,GAAG;EACJ;CACD,MAAM,IAAI,MAAM;EACd,MAAM,gBAAgB,KAAK,YAAY,QAAQ,QAAQ,UAAU,KAAK,QAAQ;EAE9E,MAAM,cAAc,MAAM,2BAA2B,KAAK;EAE1D,MAAM,SAAS,MAAM,aAAa;GAChC,OAAO,KAAK;GACZ,KAAK,KAAK;GACV,cAAc,KAAK;GACnB,aAAa,KAAK;GAClB;GACA,WAAW,KAAK;GAChB,QAAQ,KAAK;GACb,gBAAgB,KAAK;GACrB,YAAY,KAAK;GACjB;GACD,CAAC;AAGF,MAAI,OAAO,SAAS,WAAW,OAAO,QAAQ,MAAK,MAAK,EAAE,WAAW,cAAc,CACjF,QAAO,UAAU;AAInB,SAAO;;CAEV,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import "./stdout-guard-sJHFWVem.js";
|
|
2
|
-
import {
|
|
3
|
-
import "./providers-
|
|
4
|
-
import "./php-reader-
|
|
5
|
-
import { r as parseJsonArg, t as createCommand } from "./_shared-
|
|
2
|
+
import { p as updateTranslations } from "./operations-CTo44gPu.js";
|
|
3
|
+
import "./providers-CHE2ffi6.js";
|
|
4
|
+
import "./php-reader-3Fgw80zK.js";
|
|
5
|
+
import { r as parseJsonArg, t as createCommand } from "./_shared-DFyy3sh8.js";
|
|
6
6
|
//#region src/commands/update.ts
|
|
7
7
|
var update_default = createCommand({
|
|
8
8
|
name: "update",
|
|
@@ -37,4 +37,4 @@ var update_default = createCommand({
|
|
|
37
37
|
//#endregion
|
|
38
38
|
export { update_default as default };
|
|
39
39
|
|
|
40
|
-
//# sourceMappingURL=update-
|
|
40
|
+
//# sourceMappingURL=update-DV4ijRVB.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-
|
|
1
|
+
{"version":3,"file":"update-DV4ijRVB.js","names":[],"sources":["../src/commands/update.ts"],"sourcesContent":["import { createCommand, parseJsonArg } from './_shared.js'\nimport { updateTranslations } from '../core/operations.js'\n\nexport default createCommand({\n name: 'update',\n description: 'Update existing translation keys (skips keys that do not exist)',\n args: {\n layer: { type: 'string', description: 'Layer name', required: true },\n translations: { type: 'string', description: 'JSON: { \"key\": { \"en\": \"val\", \"de\": \"val\" } }', required: true },\n dryRun: { type: 'boolean', description: 'Preview changes without writing', default: false },\n },\n async run(args) {\n const translations = parseJsonArg<Record<string, Record<string, string>>>(args.translations, 'translations')\n return updateTranslations({ layer: args.layer, translations, dryRun: args.dryRun, projectDir: args.projectDir })\n },\n})\n"],"mappings":";;;;;;AAGA,IAAA,iBAAe,cAAc;CAC3B,MAAM;CACN,aAAa;CACb,MAAM;EACJ,OAAO;GAAE,MAAM;GAAU,aAAa;GAAc,UAAU;GAAM;EACpE,cAAc;GAAE,MAAM;GAAU,aAAa;GAAiD,UAAU;GAAM;EAC9G,QAAQ;GAAE,MAAM;GAAW,aAAa;GAAmC,SAAS;GAAO;EAC5F;CACD,MAAM,IAAI,MAAM;EACd,MAAM,eAAe,aAAqD,KAAK,cAAc,eAAe;AAC5G,SAAO,mBAAmB;GAAE,OAAO,KAAK;GAAO;GAAc,QAAQ,KAAK;GAAQ,YAAY,KAAK;GAAY,CAAC;;CAEnH,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import "./stdout-guard-sJHFWVem.js";
|
|
2
|
-
import {
|
|
3
|
-
import "./providers-
|
|
4
|
-
import "./php-reader-
|
|
5
|
-
import { r as parseJsonArg, t as createCommand } from "./_shared-
|
|
2
|
+
import { m as writeTranslations } from "./operations-CTo44gPu.js";
|
|
3
|
+
import "./providers-CHE2ffi6.js";
|
|
4
|
+
import "./php-reader-3Fgw80zK.js";
|
|
5
|
+
import { r as parseJsonArg, t as createCommand } from "./_shared-DFyy3sh8.js";
|
|
6
6
|
//#region src/commands/write.ts
|
|
7
7
|
var write_default = createCommand({
|
|
8
8
|
name: "write",
|
|
@@ -44,4 +44,4 @@ var write_default = createCommand({
|
|
|
44
44
|
//#endregion
|
|
45
45
|
export { write_default as default };
|
|
46
46
|
|
|
47
|
-
//# sourceMappingURL=write-
|
|
47
|
+
//# sourceMappingURL=write-Czzm_Nb0.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write-
|
|
1
|
+
{"version":3,"file":"write-Czzm_Nb0.js","names":[],"sources":["../src/commands/write.ts"],"sourcesContent":["import { createCommand, parseJsonArg } from './_shared.js'\nimport { writeTranslations } from '../core/operations.js'\n\nexport default createCommand({\n name: 'write',\n description: 'Write translation keys (add/update/upsert). Default mode: upsert.',\n args: {\n layer: { type: 'string', description: 'Layer name', required: true },\n translations: { type: 'string', description: 'JSON: { \"key\": { \"en\": \"val\", \"de\": \"val\" } }', required: true },\n mode: { type: 'string', description: 'Write mode: add | update | upsert (default: upsert)', default: 'upsert' },\n dryRun: { type: 'boolean', description: 'Preview changes without writing', default: false },\n },\n async run(args) {\n const translations = parseJsonArg<Record<string, Record<string, string>>>(args.translations, 'translations')\n const mode = args.mode as 'add' | 'update' | 'upsert'\n return writeTranslations({ layer: args.layer, translations, mode, dryRun: args.dryRun, projectDir: args.projectDir })\n },\n})\n"],"mappings":";;;;;;AAGA,IAAA,gBAAe,cAAc;CAC3B,MAAM;CACN,aAAa;CACb,MAAM;EACJ,OAAO;GAAE,MAAM;GAAU,aAAa;GAAc,UAAU;GAAM;EACpE,cAAc;GAAE,MAAM;GAAU,aAAa;GAAiD,UAAU;GAAM;EAC9G,MAAM;GAAE,MAAM;GAAU,aAAa;GAAuD,SAAS;GAAU;EAC/G,QAAQ;GAAE,MAAM;GAAW,aAAa;GAAmC,SAAS;GAAO;EAC5F;CACD,MAAM,IAAI,MAAM;EACd,MAAM,eAAe,aAAqD,KAAK,cAAc,eAAe;EAC5G,MAAM,OAAO,KAAK;AAClB,SAAO,kBAAkB;GAAE,OAAO,KAAK;GAAO;GAAc;GAAM,QAAQ,KAAK;GAAQ,YAAY,KAAK;GAAY,CAAC;;CAExH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@the-i18n-kit/cli",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.0",
|
|
4
4
|
"description": "Find missing translations, remove dead keys, rename across all locales at once — for Nuxt, Laravel, Vue, React/Next.js, or any project with JSON/PHP locale files",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"i18n",
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"citty": "^0.2.2",
|
|
52
52
|
"consola": "^3.4.2",
|
|
53
53
|
"jiti": "^2.7.0",
|
|
54
|
-
"
|
|
54
|
+
"oxc-parser": "^0.144.0",
|
|
55
55
|
"sort-keys": "^6.0.0",
|
|
56
56
|
"tinyglobby": "^0.2.15",
|
|
57
57
|
"zod": "^4.3.6"
|
|
@@ -60,25 +60,35 @@
|
|
|
60
60
|
"@anthropic-ai/sdk": "^0.30.0",
|
|
61
61
|
"@google/genai": "^2.0.0",
|
|
62
62
|
"@nuxt/kit": "^3.0.0 || ^4.0.0",
|
|
63
|
-
"openai": "^4.0.0 || ^5.0.0"
|
|
63
|
+
"openai": "^4.0.0 || ^5.0.0",
|
|
64
|
+
"php-array-reader": "^2.1.3",
|
|
65
|
+
"php-parser": "^3.2.0"
|
|
64
66
|
},
|
|
65
67
|
"peerDependenciesMeta": {
|
|
68
|
+
"@anthropic-ai/sdk": {
|
|
69
|
+
"optional": true
|
|
70
|
+
},
|
|
71
|
+
"@google/genai": {
|
|
72
|
+
"optional": true
|
|
73
|
+
},
|
|
66
74
|
"@nuxt/kit": {
|
|
67
75
|
"optional": true
|
|
68
76
|
},
|
|
69
77
|
"openai": {
|
|
70
78
|
"optional": true
|
|
71
79
|
},
|
|
72
|
-
"
|
|
80
|
+
"php-array-reader": {
|
|
73
81
|
"optional": true
|
|
74
82
|
},
|
|
75
|
-
"
|
|
83
|
+
"php-parser": {
|
|
76
84
|
"optional": true
|
|
77
85
|
}
|
|
78
86
|
},
|
|
79
87
|
"devDependencies": {
|
|
80
88
|
"@nuxt/kit": "^4.4.2",
|
|
81
89
|
"@types/node": "^22.0.0",
|
|
90
|
+
"php-array-reader": "^2.1.3",
|
|
91
|
+
"php-parser": "^3.7.0",
|
|
82
92
|
"tsdown": "^0.12.0",
|
|
83
93
|
"vitest": "^3.2.0",
|
|
84
94
|
"yaml": "2.8.2"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_shared-Dn15c_g9.js","names":[],"sources":["../src/commands/_shared.ts"],"sourcesContent":["import { defineCommand } from 'citty'\nimport type { CommandDef } from 'citty'\nimport { log } from '../utils/logger.js'\nimport { toErrorMessage } from '../utils/errors.js'\nimport { writeResult } from '../utils/stdout-guard.js'\nimport { createTranslateFn, resolveProviderBaseUrl, BASE_URL_ENV } from '../llm/providers.js'\nimport type { LlmProvider } from '../llm/providers.js'\nimport type { TranslateFn } from '../core/types.js'\nimport { loadProjectConfig } from '../config/project-config.js'\n\n/** Factory for commands that call an operation and output its result. */\nexport function createCommand(opts: {\n name: string\n description: string\n args?: Record<string, unknown>\n /**\n * Command-specific CI gate: when it returns true for the (already\n * emitted) result, the process exits non-zero — e.g. `check` failing\n * the build on undefined-key findings. Runs in addition to the generic\n * isTotalFailure check.\n */\n failWhen?: (result: unknown) => boolean\n /**\n * Opt-in CI gates this command accepts. The factory reads the requesting\n * flag off args and evaluates every gate uniformly, so no command grows\n * bespoke exit logic. Declaring a gate does not add its flag — pair each\n * spec with an entry in `args`.\n */\n gates?: GateSpec[]\n /**\n * Receives citty's parsed args. `any` is deliberate: each command declares\n * its own `args` shape and citty does not thread that type through to the\n * handler, so narrowing here only moves the cast into all nineteen command\n * modules. The shape is validated by citty against the `args` above.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- see above\n run: (args: any) => Promise<unknown>\n}): CommandDef {\n return defineCommand({\n meta: { name: opts.name, description: opts.description },\n args: { ...sharedArgs, ...(opts.args ?? {}) },\n async run({ args }) {\n try {\n const result = await opts.run(args)\n const runFailed = isTotalFailure(result) || (opts.failWhen?.(result) ?? false)\n const decision = resolveExitCode(result, requestedGates(opts.gates ?? [], args), runFailed)\n outputResult(withGateReport(result, decision.tripped), args)\n // Assign only on a non-zero decision: a clean run must leave the exit\n // code exactly as it found it, as it did before gates existed.\n if (decision.code !== EXIT_SUCCESS) process.exitCode = decision.code\n } catch (error) {\n emitErrorResult(error, args)\n process.exitCode = EXIT_RUN_FAILED\n }\n },\n }) as CommandDef\n}\n\n/** The run succeeded and no gate tripped. */\nexport const EXIT_SUCCESS = 0\n/** The run itself failed — a bad API key, an unreadable project, a total translate failure. */\nexport const EXIT_RUN_FAILED = 1\n/** The run succeeded but a requested gate tripped — findings exist, the tool worked. */\nexport const EXIT_GATE_TRIPPED = 2\n\n/**\n * A CI gate a command accepts. `flag` is the arg that requests it; `counter`\n * is the field of `result.summary` carrying the observed value. Omitting\n * `threshold` takes it from the flag's own value, so a boolean flag pairs\n * with `threshold: 0` and a numeric one (`--fail-under 90`) omits it.\n */\nexport interface GateSpec {\n flag: string\n counter: string\n /** 'above' trips when observed > threshold (default); 'below' when observed < threshold. */\n direction?: 'above' | 'below'\n threshold?: number\n}\n\n/** A gate the caller asked for, with its threshold already resolved. */\nexport interface RequestedGate {\n name: string\n counter: string\n direction: 'above' | 'below'\n threshold: number\n}\n\n/** A gate that tripped, as reported in the result. */\nexport interface TrippedGate extends RequestedGate {\n observed: number\n}\n\nexport interface ExitDecision {\n code: typeof EXIT_SUCCESS | typeof EXIT_RUN_FAILED | typeof EXIT_GATE_TRIPPED\n tripped: TrippedGate[]\n}\n\n/**\n * Pure decision from an operation result plus the gates the caller requested\n * to an exit code. A failed run outranks a tripped gate — exit 1 wins over\n * exit 2 — and gates are not even consulted in that case, because counters\n * from a run that fell over say nothing about the project.\n */\nexport function resolveExitCode(\n result: unknown,\n gates: RequestedGate[],\n runFailed = false,\n): ExitDecision {\n if (runFailed) return { code: EXIT_RUN_FAILED, tripped: [] }\n\n const tripped: TrippedGate[] = []\n for (const gate of gates) {\n const observed = observedValue(result, gate.counter)\n if (observed === undefined || !trips(gate, observed)) continue\n tripped.push({ ...gate, observed })\n }\n\n return {\n code: tripped.length > 0 ? EXIT_GATE_TRIPPED : EXIT_SUCCESS,\n tripped,\n }\n}\n\n/**\n * Read a gate's counter off result.summary. Works on inline results and on\n * the { reportFile, summary } shape alike, since both carry the summary.\n * A missing or non-numeric counter yields undefined and never trips a gate.\n */\nfunction observedValue(result: unknown, counter: string): number | undefined {\n if (result === null || typeof result !== 'object') return undefined\n const summary = (result as Record<string, unknown>).summary\n if (summary === null || typeof summary !== 'object') return undefined\n const value = (summary as Record<string, unknown>)[counter]\n return typeof value === 'number' && Number.isFinite(value) ? value : undefined\n}\n\nfunction trips(gate: RequestedGate, observed: number): boolean {\n return gate.direction === 'below' ? observed < gate.threshold : observed > gate.threshold\n}\n\n/** Filter the declared gates down to the ones this invocation asked for. */\nfunction requestedGates(specs: GateSpec[], args: Record<string, unknown>): RequestedGate[] {\n const requested: RequestedGate[] = []\n for (const spec of specs) {\n const raw = args[spec.flag]\n if (raw === undefined || raw === null || raw === false || raw === '') continue\n const threshold = spec.threshold ?? Number(raw)\n if (!Number.isFinite(threshold)) continue\n requested.push({\n name: kebabCase(spec.flag),\n counter: spec.counter,\n direction: spec.direction ?? 'above',\n threshold,\n })\n }\n return requested\n}\n\n/**\n * Name a tripped gate by the flag that requested it, so the JSON says\n * \"fail-on-missing\" — what the user typed — rather than \"failOnMissing\".\n */\nfunction kebabCase(flag: string): string {\n return flag.replace(/[A-Z]/g, c => `-${c.toLowerCase()}`)\n}\n\n/**\n * Attach the gate report without disturbing the rest of the result: consumers\n * parsing today's shape keep working, and a run where nothing tripped is\n * byte-for-byte what it was before gates existed.\n */\nfunction withGateReport(result: unknown, tripped: TrippedGate[]): unknown {\n if (tripped.length === 0) return result\n if (result === null || typeof result !== 'object' || Array.isArray(result)) return result\n return { ...(result as Record<string, unknown>), gatesTripped: tripped }\n}\n\n/**\n * True when a run completed but achieved nothing: failures present and zero\n * successes. Covers translate-missing-style results (summary.totalFailed /\n * summary.totalTranslated) and translate-key-style results (top-level\n * failed[] / translated[]). Results without those fields are never a\n * total failure, so unrelated commands are unaffected.\n */\nexport function isTotalFailure(result: unknown): boolean {\n if (result === null || typeof result !== 'object') return false\n const r = result as Record<string, unknown>\n\n const summary = r.summary\n if (summary !== null && typeof summary === 'object') {\n const s = summary as Record<string, unknown>\n if (typeof s.totalFailed === 'number' && typeof s.totalTranslated === 'number') {\n return s.totalFailed > 0 && s.totalTranslated === 0\n }\n }\n\n if (Array.isArray(r.failed) && Array.isArray(r.translated)) {\n return r.failed.length > 0 && r.translated.length === 0\n }\n\n return false\n}\n\nconst sharedArgs = {\n projectDir: {\n type: 'string' as const,\n alias: 'd',\n description: 'Project directory (default: cwd)',\n },\n json: {\n type: 'boolean' as const,\n description: 'Output as JSON (default for non-TTY)',\n default: false,\n },\n}\n\n/** Output result — stdout always carries the result, machine-parseable when piped/--json */\nfunction outputResult(data: unknown, args: { json?: boolean }): void {\n const jsonMode = args.json || !process.stdout.isTTY\n if (\n !jsonMode &&\n data !== null &&\n typeof data === 'object' &&\n 'reportFile' in (data as Record<string, unknown>)\n ) {\n const { reportFile, ...rest } = data as Record<string, unknown>\n log.info(`Wrote report to: ${reportFile}`)\n writeResult(JSON.stringify(rest, null, 2) + '\\n')\n return\n }\n // JSON mode emits the full result (including reportFile when present) as pure JSON\n writeResult(JSON.stringify(data, null, 2) + '\\n')\n}\n\n/**\n * Failure output. In JSON mode stdout must still carry parseable JSON —\n * consumers pipe it into jq, and zero bytes is a parse error — so the\n * structured error object IS the result on stdout; the human-readable\n * message goes to stderr in every mode. Exit code stays non-zero (callers\n * set it).\n */\nexport function emitErrorResult(error: unknown, args: { json?: boolean }): void {\n log.error(toErrorMessage(error))\n const jsonMode = args.json || !process.stdout.isTTY\n if (!jsonMode) return\n const payload = { error: { code: errorCode(error), message: toErrorMessage(error) } }\n writeResult(JSON.stringify(payload, null, 2) + '\\n')\n}\n\n/** ToolError/FileIOError carry codes; Node errors expose e.g. ENOENT. */\nfunction errorCode(error: unknown): string {\n if (error instanceof Error) {\n const code = (error as { code?: unknown }).code\n if (typeof code === 'string') return code\n if (error.name === 'ConfigError') return 'CONFIG_ERROR'\n }\n return 'UNKNOWN_ERROR'\n}\n\n/** Provider selection flags shared by the translate commands. */\nexport const providerArgs = {\n provider: { type: 'string' as const, description: 'LLM provider: \"openai\", \"anthropic\", or \"google\". Required for automatic translation.', valueHint: 'openai|anthropic|google' },\n model: { type: 'string' as const, description: 'Model name (required when --provider is set)' },\n apiKey: { type: 'string' as const, description: 'API key (falls back to OPENAI_API_KEY / ANTHROPIC_API_KEY / GEMINI_API_KEY env).' },\n baseUrl: { type: 'string' as const, description: `Provider base URL for gateways, self-hosted models and proxies speaking the provider's protocol. Falls back to ${BASE_URL_ENV}, then providerBaseUrl in .i18n-mcp.json. Not supported by \"google\".` },\n}\n\n/**\n * Build a TranslateFn from the provider flags, or undefined when no provider\n * was given (agent mode). The base URL resolves flag > env > project config;\n * the config file is only read when neither of the first two is set, so a\n * fully-flagged invocation never depends on config discovery.\n */\nexport async function resolveProviderTranslateFn(args: {\n provider?: string\n model?: string\n apiKey?: string\n baseUrl?: string\n projectDir?: string\n}): Promise<TranslateFn | undefined> {\n if (!args.provider) return undefined\n if (!args.model) {\n throw new Error('--model is required when --provider is set')\n }\n\n let baseUrl = resolveProviderBaseUrl({ flag: args.baseUrl, env: process.env[BASE_URL_ENV] })\n if (!baseUrl) {\n const projectConfig = await loadProjectConfig(args.projectDir ?? process.cwd())\n baseUrl = resolveProviderBaseUrl({ config: projectConfig?.providerBaseUrl })\n }\n if (baseUrl) log.debug(`Provider base URL: ${redactBaseUrl(baseUrl)}`)\n\n return createTranslateFn({\n provider: args.provider as LlmProvider,\n model: args.model,\n apiKey: args.apiKey,\n baseUrl,\n })\n}\n\n/**\n * Strip anything secret-shaped from a base URL before it reaches a log.\n * Gateways are routinely addressed as https://user:pass@host or with the key\n * in a query parameter, so keep only origin and path.\n */\nexport function redactBaseUrl(raw: string): string {\n let url: URL\n try {\n url = new URL(raw)\n } catch {\n return '<unparseable base URL>'\n }\n const credentials = url.username || url.password ? '<redacted>@' : ''\n const query = url.search || url.hash ? ' (query redacted)' : ''\n return `${url.protocol}//${credentials}${url.host}${url.pathname}${query}`\n}\n\n/** Split a comma-separated string into a trimmed array, or return undefined */\nexport function splitList(val: string | undefined): string[] | undefined {\n if (!val) return undefined\n return val.split(',').map(s => s.trim()).filter(Boolean)\n}\n\n/** Parse a JSON string with a user-friendly error */\nexport function parseJsonArg<T = Record<string, Record<string, string>>>(\n value: string,\n argName: string,\n): T {\n try {\n return JSON.parse(value) as T\n } catch (err) {\n const detail = err instanceof SyntaxError ? err.message : String(err)\n throw new Error(`Invalid JSON in --${argName}: ${detail}`)\n }\n}\n"],"mappings":";;;;;;AAWA,SAAgB,cAAc,MA0Bf;AACb,QAAO,cAAc;EACnB,MAAM;GAAE,MAAM,KAAK;GAAM,aAAa,KAAK;GAAa;EACxD,MAAM;GAAE,GAAG;GAAY,GAAI,KAAK,QAAQ,EAAE;GAAG;EAC7C,MAAM,IAAI,EAAE,QAAQ;AAClB,OAAI;IACF,MAAM,SAAS,MAAM,KAAK,IAAI,KAAK;IACnC,MAAM,YAAY,eAAe,OAAO,KAAK,KAAK,WAAW,OAAO,IAAI;IACxE,MAAM,WAAW,gBAAgB,QAAQ,eAAe,KAAK,SAAS,EAAE,EAAE,KAAK,EAAE,UAAU;AAC3F,iBAAa,eAAe,QAAQ,SAAS,QAAQ,EAAE,KAAK;AAG5D,QAAI,SAAS,SAAA,EAAuB,SAAQ,WAAW,SAAS;YACzD,OAAO;AACd,oBAAgB,OAAO,KAAK;AAC5B,YAAQ,WAAA;;;EAGb,CAAC;;;;;;;;AAgDJ,SAAgB,gBACd,QACA,OACA,YAAY,OACE;AACd,KAAI,UAAW,QAAO;EAAE,MAAA;EAAuB,SAAS,EAAE;EAAE;CAE5D,MAAM,UAAyB,EAAE;AACjC,MAAK,MAAM,QAAQ,OAAO;EACxB,MAAM,WAAW,cAAc,QAAQ,KAAK,QAAQ;AACpD,MAAI,aAAa,KAAA,KAAa,CAAC,MAAM,MAAM,SAAS,CAAE;AACtD,UAAQ,KAAK;GAAE,GAAG;GAAM;GAAU,CAAC;;AAGrC,QAAO;EACL,MAAM,QAAQ,SAAS,IAAA,IAAA;EACvB;EACD;;;;;;;AAQH,SAAS,cAAc,QAAiB,SAAqC;AAC3E,KAAI,WAAW,QAAQ,OAAO,WAAW,SAAU,QAAO,KAAA;CAC1D,MAAM,UAAW,OAAmC;AACpD,KAAI,YAAY,QAAQ,OAAO,YAAY,SAAU,QAAO,KAAA;CAC5D,MAAM,QAAS,QAAoC;AACnD,QAAO,OAAO,UAAU,YAAY,OAAO,SAAS,MAAM,GAAG,QAAQ,KAAA;;AAGvE,SAAS,MAAM,MAAqB,UAA2B;AAC7D,QAAO,KAAK,cAAc,UAAU,WAAW,KAAK,YAAY,WAAW,KAAK;;;AAIlF,SAAS,eAAe,OAAmB,MAAgD;CACzF,MAAM,YAA6B,EAAE;AACrC,MAAK,MAAM,QAAQ,OAAO;EACxB,MAAM,MAAM,KAAK,KAAK;AACtB,MAAI,QAAQ,KAAA,KAAa,QAAQ,QAAQ,QAAQ,SAAS,QAAQ,GAAI;EACtE,MAAM,YAAY,KAAK,aAAa,OAAO,IAAI;AAC/C,MAAI,CAAC,OAAO,SAAS,UAAU,CAAE;AACjC,YAAU,KAAK;GACb,MAAM,UAAU,KAAK,KAAK;GAC1B,SAAS,KAAK;GACd,WAAW,KAAK,aAAa;GAC7B;GACD,CAAC;;AAEJ,QAAO;;;;;;AAOT,SAAS,UAAU,MAAsB;AACvC,QAAO,KAAK,QAAQ,WAAU,MAAK,IAAI,EAAE,aAAa,GAAG;;;;;;;AAQ3D,SAAS,eAAe,QAAiB,SAAiC;AACxE,KAAI,QAAQ,WAAW,EAAG,QAAO;AACjC,KAAI,WAAW,QAAQ,OAAO,WAAW,YAAY,MAAM,QAAQ,OAAO,CAAE,QAAO;AACnF,QAAO;EAAE,GAAI;EAAoC,cAAc;EAAS;;;;;;;;;AAU1E,SAAgB,eAAe,QAA0B;AACvD,KAAI,WAAW,QAAQ,OAAO,WAAW,SAAU,QAAO;CAC1D,MAAM,IAAI;CAEV,MAAM,UAAU,EAAE;AAClB,KAAI,YAAY,QAAQ,OAAO,YAAY,UAAU;EACnD,MAAM,IAAI;AACV,MAAI,OAAO,EAAE,gBAAgB,YAAY,OAAO,EAAE,oBAAoB,SACpE,QAAO,EAAE,cAAc,KAAK,EAAE,oBAAoB;;AAItD,KAAI,MAAM,QAAQ,EAAE,OAAO,IAAI,MAAM,QAAQ,EAAE,WAAW,CACxD,QAAO,EAAE,OAAO,SAAS,KAAK,EAAE,WAAW,WAAW;AAGxD,QAAO;;AAGT,MAAM,aAAa;CACjB,YAAY;EACV,MAAM;EACN,OAAO;EACP,aAAa;EACd;CACD,MAAM;EACJ,MAAM;EACN,aAAa;EACb,SAAS;EACV;CACF;;AAGD,SAAS,aAAa,MAAe,MAAgC;AAEnE,KACE,EAFe,KAAK,QAAQ,CAAC,QAAQ,OAAO,UAG5C,SAAS,QACT,OAAO,SAAS,YAChB,gBAAiB,MACjB;EACA,MAAM,EAAE,YAAY,GAAG,SAAS;AAChC,MAAI,KAAK,oBAAoB,aAAa;AAC1C,cAAY,KAAK,UAAU,MAAM,MAAM,EAAE,GAAG,KAAK;AACjD;;AAGF,aAAY,KAAK,UAAU,MAAM,MAAM,EAAE,GAAG,KAAK;;;;;;;;;AAUnD,SAAgB,gBAAgB,OAAgB,MAAgC;AAC9E,KAAI,MAAM,eAAe,MAAM,CAAC;AAEhC,KAAI,EADa,KAAK,QAAQ,CAAC,QAAQ,OAAO,OAC/B;CACf,MAAM,UAAU,EAAE,OAAO;EAAE,MAAM,UAAU,MAAM;EAAE,SAAS,eAAe,MAAM;EAAE,EAAE;AACrF,aAAY,KAAK,UAAU,SAAS,MAAM,EAAE,GAAG,KAAK;;;AAItD,SAAS,UAAU,OAAwB;AACzC,KAAI,iBAAiB,OAAO;EAC1B,MAAM,OAAQ,MAA6B;AAC3C,MAAI,OAAO,SAAS,SAAU,QAAO;AACrC,MAAI,MAAM,SAAS,cAAe,QAAO;;AAE3C,QAAO;;;AAIT,MAAa,eAAe;CAC1B,UAAU;EAAE,MAAM;EAAmB,aAAa;EAAyF,WAAW;EAA2B;CACjL,OAAO;EAAE,MAAM;EAAmB,aAAa;EAAgD;CAC/F,QAAQ;EAAE,MAAM;EAAmB,aAAa;EAAoF;CACpI,SAAS;EAAE,MAAM;EAAmB,aAAa,kHAAkH,aAAa;EAAuE;CACxP;;;;;;;AAQD,eAAsB,2BAA2B,MAMZ;AACnC,KAAI,CAAC,KAAK,SAAU,QAAO,KAAA;AAC3B,KAAI,CAAC,KAAK,MACR,OAAM,IAAI,MAAM,6CAA6C;CAG/D,IAAI,UAAU,uBAAuB;EAAE,MAAM,KAAK;EAAS,KAAK,QAAQ,IAAI;EAAe,CAAC;AAC5F,KAAI,CAAC,QAEH,WAAU,uBAAuB,EAAE,SADb,MAAM,kBAAkB,KAAK,cAAc,QAAQ,KAAK,CAAC,GACrB,iBAAiB,CAAC;AAE9E,KAAI,QAAS,KAAI,MAAM,sBAAsB,cAAc,QAAQ,GAAG;AAEtE,QAAO,kBAAkB;EACvB,UAAU,KAAK;EACf,OAAO,KAAK;EACZ,QAAQ,KAAK;EACb;EACD,CAAC;;;;;;;AAQJ,SAAgB,cAAc,KAAqB;CACjD,IAAI;AACJ,KAAI;AACF,QAAM,IAAI,IAAI,IAAI;SACZ;AACN,SAAO;;CAET,MAAM,cAAc,IAAI,YAAY,IAAI,WAAW,gBAAgB;CACnE,MAAM,QAAQ,IAAI,UAAU,IAAI,OAAO,sBAAsB;AAC7D,QAAO,GAAG,IAAI,SAAS,IAAI,cAAc,IAAI,OAAO,IAAI,WAAW;;;AAIrE,SAAgB,UAAU,KAA+C;AACvE,KAAI,CAAC,IAAK,QAAO,KAAA;AACjB,QAAO,IAAI,MAAM,IAAI,CAAC,KAAI,MAAK,EAAE,MAAM,CAAC,CAAC,OAAO,QAAQ;;;AAI1D,SAAgB,aACd,OACA,SACG;AACH,KAAI;AACF,SAAO,KAAK,MAAM,MAAM;UACjB,KAAK;EACZ,MAAM,SAAS,eAAe,cAAc,IAAI,UAAU,OAAO,IAAI;AACrE,QAAM,IAAI,MAAM,qBAAqB,QAAQ,IAAI,SAAS"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"check-BI-CGxpY.js","names":[],"sources":["../src/commands/check.ts"],"sourcesContent":["import { createCommand } from './_shared.js'\nimport { checkUndefinedKeys } from '../core/operations.js'\n\n/**\n * CI gate for `check`: any undefined-key finding fails the build.\n * Reads summary.undefinedCount, so it works for inline results and for\n * the { reportFile, summary } shape alike. Uncertain findings never fail.\n */\nexport function hasUndefinedKeys(result: unknown): boolean {\n if (result === null || typeof result !== 'object') return false\n const summary = (result as Record<string, unknown>).summary\n if (summary === null || typeof summary !== 'object') return false\n const count = (summary as Record<string, unknown>).undefinedCount\n return typeof count === 'number' && count > 0\n}\n\nexport default createCommand({\n name: 'check',\n description: 'Find keys referenced in code but defined in no consumed locale layer (they render as raw keys); exits non-zero when any are found',\n args: {\n locale: { type: 'string', description: 'Reference locale to resolve definitions in (default: project default)' },\n outputFile: { type: 'string', description: 'Write full output to this file path and return only a summary (useful for large outputs)' },\n codequalityOutput: { type: 'string', description: 'Also write the findings as a GitLab Code Quality (CodeClimate) JSON report to this file path' },\n },\n failWhen: hasUndefinedKeys,\n async run(args) {\n return checkUndefinedKeys({\n locale: args.locale,\n projectDir: args.projectDir,\n outputFile: args.outputFile,\n codequalityOutput: args.codequalityOutput,\n })\n },\n})\n"],"mappings":";;;;;;;;;;;AAQA,SAAgB,iBAAiB,QAA0B;AACzD,KAAI,WAAW,QAAQ,OAAO,WAAW,SAAU,QAAO;CAC1D,MAAM,UAAW,OAAmC;AACpD,KAAI,YAAY,QAAQ,OAAO,YAAY,SAAU,QAAO;CAC5D,MAAM,QAAS,QAAoC;AACnD,QAAO,OAAO,UAAU,YAAY,QAAQ;;AAG9C,IAAA,gBAAe,cAAc;CAC3B,MAAM;CACN,aAAa;CACb,MAAM;EACJ,QAAQ;GAAE,MAAM;GAAU,aAAa;GAAyE;EAChH,YAAY;GAAE,MAAM;GAAU,aAAa;GAA4F;EACvI,mBAAmB;GAAE,MAAM;GAAU,aAAa;GAAgG;EACnJ;CACD,UAAU;CACV,MAAM,IAAI,MAAM;AACd,SAAO,mBAAmB;GACxB,QAAQ,KAAK;GACb,YAAY,KAAK;GACjB,YAAY,KAAK;GACjB,mBAAmB,KAAK;GACzB,CAAC;;CAEL,CAAC"}
|
package/dist/cli-CDhNbaUM.js
DELETED
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
import "./stdout-guard-sJHFWVem.js";
|
|
2
|
-
import "./providers-BAwPjeCy.js";
|
|
3
|
-
import { n as emitErrorResult } from "./_shared-Dn15c_g9.js";
|
|
4
|
-
import { createRequire } from "node:module";
|
|
5
|
-
import { defineCommand, runCommand, runMain } from "citty";
|
|
6
|
-
//#region src/commands/index.ts
|
|
7
|
-
const commands$1 = {
|
|
8
|
-
"init": () => import("./init-D4B1_DXb.js").then((m) => m.default),
|
|
9
|
-
"detect": () => import("./detect-BmvyRD1a.js").then((m) => m.default),
|
|
10
|
-
"list-dirs": () => import("./list-dirs-CgXh-Lg1.js").then((m) => m.default),
|
|
11
|
-
"get": () => import("./get-oF_xIbVR.js").then((m) => m.default),
|
|
12
|
-
"write": () => import("./write-DUwMSc75.js").then((m) => m.default),
|
|
13
|
-
"add": () => import("./add-Dj6hsdl9.js").then((m) => m.default),
|
|
14
|
-
"update": () => import("./update-DNv-dU1U.js").then((m) => m.default),
|
|
15
|
-
"missing": () => import("./missing-BZT6PgW5.js").then((m) => m.default),
|
|
16
|
-
"status": () => import("./status-CwI94d_R.js").then((m) => m.default),
|
|
17
|
-
"empty": () => import("./empty-Ww6FnmgY.js").then((m) => m.default),
|
|
18
|
-
"search": () => import("./search-CHdDywqc.js").then((m) => m.default),
|
|
19
|
-
"remove": () => import("./remove-B7m-hi2O.js").then((m) => m.default),
|
|
20
|
-
"rename": () => import("./rename-DEJWj5_P.js").then((m) => m.default),
|
|
21
|
-
"translate": () => import("./translate-Cf3npNpr.js").then((m) => m.default),
|
|
22
|
-
"translate-missing": () => import("./translate-Cf3npNpr.js").then((m) => {
|
|
23
|
-
const def = m.default;
|
|
24
|
-
return {
|
|
25
|
-
...def,
|
|
26
|
-
meta: {
|
|
27
|
-
...def.meta,
|
|
28
|
-
name: "translate-missing",
|
|
29
|
-
description: "Alias of \"translate\" — matches the MCP tool translate_missing."
|
|
30
|
-
}
|
|
31
|
-
};
|
|
32
|
-
}),
|
|
33
|
-
"translate-key": () => import("./translate-key-Bg_8B6c_.js").then((m) => m.default),
|
|
34
|
-
"scan": () => import("./scan-LeU4xG0G.js").then((m) => m.default),
|
|
35
|
-
"check": () => import("./check-BI-CGxpY.js").then((m) => m.default),
|
|
36
|
-
"find-duplicates": () => import("./find-duplicates-BfBBqP7I.js").then((m) => m.default),
|
|
37
|
-
"remove-orphans": () => import("./remove-orphans-DOTWE7Ji.js").then((m) => m.default),
|
|
38
|
-
"scaffold": () => import("./scaffold-BH_OX-5z.js").then((m) => m.default)
|
|
39
|
-
};
|
|
40
|
-
//#endregion
|
|
41
|
-
//#region src/cli.ts
|
|
42
|
-
/**
|
|
43
|
-
* Diagnostic commands kept out of the public CLI surface.
|
|
44
|
-
*
|
|
45
|
-
* Note this removes them from the *executed* map, not just from `--help`, so a
|
|
46
|
-
* name listed here cannot be invoked at all. `scan` is deliberately absent:
|
|
47
|
-
* key-usage scanning has no other route on either surface — `discover` covers
|
|
48
|
-
* `detect` and `list-dirs`, but nothing covers this — so filtering it made a
|
|
49
|
-
* documented command unreachable (#307). The remaining three are #252.
|
|
50
|
-
*/
|
|
51
|
-
const hiddenCommands = new Set([
|
|
52
|
-
"detect",
|
|
53
|
-
"list-dirs",
|
|
54
|
-
"empty"
|
|
55
|
-
]);
|
|
56
|
-
const commands = Object.fromEntries(Object.entries(commands$1).filter(([key]) => !hiddenCommands.has(key)));
|
|
57
|
-
const { version, description } = createRequire(import.meta.url)("../package.json");
|
|
58
|
-
const main = defineCommand({
|
|
59
|
-
meta: {
|
|
60
|
-
name: "the-i18n-cli",
|
|
61
|
-
version,
|
|
62
|
-
description
|
|
63
|
-
},
|
|
64
|
-
subCommands: commands
|
|
65
|
-
});
|
|
66
|
-
async function runCli() {
|
|
67
|
-
const rawArgs = process.argv.slice(2);
|
|
68
|
-
if (rawArgs.includes("--help") || rawArgs.includes("-h") || rawArgs.includes("--version") || rawArgs.includes("-v")) {
|
|
69
|
-
await runMain(main);
|
|
70
|
-
return;
|
|
71
|
-
}
|
|
72
|
-
try {
|
|
73
|
-
await runCommand(main, { rawArgs });
|
|
74
|
-
} catch (error) {
|
|
75
|
-
emitErrorResult(error, { json: rawArgs.includes("--json") });
|
|
76
|
-
process.exitCode = 1;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
//#endregion
|
|
80
|
-
export { runCli };
|
|
81
|
-
|
|
82
|
-
//# sourceMappingURL=cli-CDhNbaUM.js.map
|
package/dist/cli-CDhNbaUM.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli-CDhNbaUM.js","names":["commands","allCommands"],"sources":["../src/commands/index.ts","../src/cli.ts"],"sourcesContent":["import type { CommandDef } from 'citty'\n\nexport const commands = {\n 'init': () => import('./init.js').then(m => m.default as CommandDef),\n 'detect': () => import('./detect.js').then(m => m.default as CommandDef),\n 'list-dirs': () => import('./list-dirs.js').then(m => m.default as CommandDef),\n 'get': () => import('./get.js').then(m => m.default as CommandDef),\n 'write': () => import('./write.js').then(m => m.default as CommandDef),\n 'add': () => import('./add.js').then(m => m.default as CommandDef),\n 'update': () => import('./update.js').then(m => m.default as CommandDef),\n 'missing': () => import('./missing.js').then(m => m.default as CommandDef),\n 'status': () => import('./status.js').then(m => m.default as CommandDef),\n 'empty': () => import('./empty.js').then(m => m.default as CommandDef),\n 'search': () => import('./search.js').then(m => m.default as CommandDef),\n 'remove': () => import('./remove.js').then(m => m.default as CommandDef),\n 'rename': () => import('./rename.js').then(m => m.default as CommandDef),\n 'translate': () => import('./translate.js').then(m => m.default as CommandDef),\n // Alias: same operation as `translate`, named to match the MCP tool\n // translate_missing so docs can use one name across both surfaces.\n 'translate-missing': () => import('./translate.js').then((m) => {\n const def = m.default as CommandDef\n return {\n ...def,\n meta: { ...(def.meta as object), name: 'translate-missing', description: 'Alias of \"translate\" — matches the MCP tool translate_missing.' },\n } as CommandDef\n }),\n 'translate-key': () => import('./translate-key.js').then(m => m.default as CommandDef),\n 'scan': () => import('./scan.js').then(m => m.default as CommandDef),\n 'check': () => import('./check.js').then(m => m.default as CommandDef),\n 'find-duplicates': () => import('./find-duplicates.js').then(m => m.default as CommandDef),\n 'remove-orphans': () => import('./remove-orphans.js').then(m => m.default as CommandDef),\n 'scaffold': () => import('./scaffold.js').then(m => m.default as CommandDef),\n} as const\n","import { createRequire } from 'node:module'\nimport { defineCommand, runCommand, runMain } from 'citty'\nimport { commands as allCommands } from './commands/index.js'\nimport { emitErrorResult } from './commands/_shared.js'\n\n/**\n * Diagnostic commands kept out of the public CLI surface.\n *\n * Note this removes them from the *executed* map, not just from `--help`, so a\n * name listed here cannot be invoked at all. `scan` is deliberately absent:\n * key-usage scanning has no other route on either surface — `discover` covers\n * `detect` and `list-dirs`, but nothing covers this — so filtering it made a\n * documented command unreachable (#307). The remaining three are #252.\n */\nconst hiddenCommands = new Set(['detect', 'list-dirs', 'empty'])\nconst commands = Object.fromEntries(\n Object.entries(allCommands).filter(([key]) => !hiddenCommands.has(key)),\n)\n\nconst require = createRequire(import.meta.url)\nconst { version, description } = require('../package.json') as { version: string; description: string }\n\nconst main = defineCommand({\n meta: {\n name: 'the-i18n-cli',\n version,\n description,\n },\n subCommands: commands,\n})\n\nexport async function runCli(): Promise<void> {\n const rawArgs = process.argv.slice(2)\n\n // Let citty handle --help and --version natively (pretty-printed usage)\n if (rawArgs.includes('--help') || rawArgs.includes('-h')\n || rawArgs.includes('--version') || rawArgs.includes('-v')) {\n await runMain(main)\n return\n }\n\n // For normal execution, use runCommand so we control error output.\n // Command run() errors are handled inside createCommand; this catch only\n // sees pre-run failures (unknown command, argument parsing) — those must\n // also keep stdout parseable in JSON mode.\n try {\n await runCommand(main, { rawArgs })\n } catch (error: unknown) {\n emitErrorResult(error, { json: rawArgs.includes('--json') })\n process.exitCode = 1\n }\n}\n"],"mappings":";;;;;;AAEA,MAAaA,aAAW;CACtB,cAAc,OAAO,sBAAa,MAAK,MAAK,EAAE,QAAsB;CACpE,gBAAgB,OAAO,wBAAe,MAAK,MAAK,EAAE,QAAsB;CACxE,mBAAmB,OAAO,2BAAkB,MAAK,MAAK,EAAE,QAAsB;CAC9E,aAAa,OAAO,qBAAY,MAAK,MAAK,EAAE,QAAsB;CAClE,eAAe,OAAO,uBAAc,MAAK,MAAK,EAAE,QAAsB;CACtE,aAAa,OAAO,qBAAY,MAAK,MAAK,EAAE,QAAsB;CAClE,gBAAgB,OAAO,wBAAe,MAAK,MAAK,EAAE,QAAsB;CACxE,iBAAiB,OAAO,yBAAgB,MAAK,MAAK,EAAE,QAAsB;CAC1E,gBAAgB,OAAO,wBAAe,MAAK,MAAK,EAAE,QAAsB;CACxE,eAAe,OAAO,uBAAc,MAAK,MAAK,EAAE,QAAsB;CACtE,gBAAgB,OAAO,wBAAe,MAAK,MAAK,EAAE,QAAsB;CACxE,gBAAgB,OAAO,wBAAe,MAAK,MAAK,EAAE,QAAsB;CACxE,gBAAgB,OAAO,wBAAe,MAAK,MAAK,EAAE,QAAsB;CACxE,mBAAmB,OAAO,2BAAkB,MAAK,MAAK,EAAE,QAAsB;CAG9E,2BAA2B,OAAO,2BAAkB,MAAM,MAAM;EAC9D,MAAM,MAAM,EAAE;AACd,SAAO;GACL,GAAG;GACH,MAAM;IAAE,GAAI,IAAI;IAAiB,MAAM;IAAqB,aAAa;IAAkE;GAC5I;GACD;CACF,uBAAuB,OAAO,+BAAsB,MAAK,MAAK,EAAE,QAAsB;CACtF,cAAc,OAAO,sBAAa,MAAK,MAAK,EAAE,QAAsB;CACpE,eAAe,OAAO,uBAAc,MAAK,MAAK,EAAE,QAAsB;CACtE,yBAAyB,OAAO,iCAAwB,MAAK,MAAK,EAAE,QAAsB;CAC1F,wBAAwB,OAAO,gCAAuB,MAAK,MAAK,EAAE,QAAsB;CACxF,kBAAkB,OAAO,0BAAiB,MAAK,MAAK,EAAE,QAAsB;CAC7E;;;;;;;;;;;;AClBD,MAAM,iBAAiB,IAAI,IAAI;CAAC;CAAU;CAAa;CAAQ,CAAC;AAChE,MAAM,WAAW,OAAO,YACtB,OAAO,QAAQC,WAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,eAAe,IAAI,IAAI,CAAC,CACxE;AAGD,MAAM,EAAE,SAAS,gBADD,cAAc,OAAO,KAAK,IAAI,CACL,kBAAkB;AAE3D,MAAM,OAAO,cAAc;CACzB,MAAM;EACJ,MAAM;EACN;EACA;EACD;CACD,aAAa;CACd,CAAC;AAEF,eAAsB,SAAwB;CAC5C,MAAM,UAAU,QAAQ,KAAK,MAAM,EAAE;AAGrC,KAAI,QAAQ,SAAS,SAAS,IAAI,QAAQ,SAAS,KAAK,IACnD,QAAQ,SAAS,YAAY,IAAI,QAAQ,SAAS,KAAK,EAAE;AAC5D,QAAM,QAAQ,KAAK;AACnB;;AAOF,KAAI;AACF,QAAM,WAAW,MAAM,EAAE,SAAS,CAAC;UAC5B,OAAgB;AACvB,kBAAgB,OAAO,EAAE,MAAM,QAAQ,SAAS,SAAS,EAAE,CAAC;AAC5D,UAAQ,WAAW"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"define-config-DpbZ4BZ6.d.ts","names":[],"sources":["../src/adapters/types.ts","../src/config/types.ts","../src/define-config.ts"],"sourcesContent":[],"mappings":";AAEY,KAAA,gBAAA,GAAgB,MAAA,GAAA,WAAA;;;AAA5B;;;UCGiB,gBAAA;EAAA;EAcA,IAAA,EAAA,MAAS;EAWT;EAaA,QAAA,EAAA,MAAa;EAAA;MAMf,CAAA,EAAA,MAAA;;MAUC,CAAA,EAAA,MAAA;;;;;AA6BK,UArEJ,SAAA,CAqEI;EAAgB;EAapB,IAAA,EAAA,MAAA;EAAU;OAQT,EAAA,MAAA;;cAIJ,EAAA,MAAA;;SAMO,CAAA,EAAA,MAAA;;AAEN,UA3FE,OAAA,CA2FF;;;;ECrGH,OAAA,EAAA,MAAA;EAQI;EAAmB,MAAA,EAAA,MAAA,EAAA;;;;;;UDelB,aAAA;;;;;;eAMF;;;;;;aAMF;;;;gBAIG;;aAEH,MAAM;;eAEJ;;;;;;;;;;;eAWA;;;;;;;;;;;;;;;;;qBAcM;;;;;;;;;;;;UAaJ,UAAA;;;;;;;;kBAQC;;WAEP;;cAEG;;;;kBAII;;qBAEG;;QAEb;;;;;;;;;AApBS,KCjFL,aAAA,GAAgB,aDiFD;;;;;;;AAoBnB,iBC7FQ,mBAAA,CD6FR,MAAA,EC7FoC,aD6FpC,CAAA,EC7FoD,aD6FpD"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import "./stdout-guard-sJHFWVem.js";
|
|
2
|
-
import { n as findDuplicateKeys } from "./operations-BCJd7in3.js";
|
|
3
|
-
import "./providers-BAwPjeCy.js";
|
|
4
|
-
import "./php-reader-DuZ0Hyl_.js";
|
|
5
|
-
import { t as createCommand } from "./_shared-Dn15c_g9.js";
|
|
6
|
-
//#region src/commands/find-duplicates.ts
|
|
7
|
-
var find_duplicates_default = createCommand({
|
|
8
|
-
name: "find-duplicates",
|
|
9
|
-
description: "Find keys defined in both a shared layer and a consuming child layer (with divergence detection)",
|
|
10
|
-
args: {
|
|
11
|
-
locale: {
|
|
12
|
-
type: "string",
|
|
13
|
-
description: "Locale to compare values in (default: project default)"
|
|
14
|
-
},
|
|
15
|
-
outputFile: {
|
|
16
|
-
type: "string",
|
|
17
|
-
description: "Write full output to this file path and return only a summary (useful for large outputs)"
|
|
18
|
-
}
|
|
19
|
-
},
|
|
20
|
-
async run(args) {
|
|
21
|
-
return findDuplicateKeys({
|
|
22
|
-
locale: args.locale,
|
|
23
|
-
projectDir: args.projectDir,
|
|
24
|
-
outputFile: args.outputFile
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
});
|
|
28
|
-
//#endregion
|
|
29
|
-
export { find_duplicates_default as default };
|
|
30
|
-
|
|
31
|
-
//# sourceMappingURL=find-duplicates-BfBBqP7I.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"find-duplicates-BfBBqP7I.js","names":[],"sources":["../src/commands/find-duplicates.ts"],"sourcesContent":["import { createCommand } from './_shared.js'\nimport { findDuplicateKeys } from '../core/operations.js'\n\nexport default createCommand({\n name: 'find-duplicates',\n description: 'Find keys defined in both a shared layer and a consuming child layer (with divergence detection)',\n args: {\n locale: { type: 'string', description: 'Locale to compare values in (default: project default)' },\n outputFile: { type: 'string', description: 'Write full output to this file path and return only a summary (useful for large outputs)' },\n },\n async run(args) {\n return findDuplicateKeys({\n locale: args.locale,\n projectDir: args.projectDir,\n outputFile: args.outputFile,\n })\n },\n})\n"],"mappings":";;;;;;AAGA,IAAA,0BAAe,cAAc;CAC3B,MAAM;CACN,aAAa;CACb,MAAM;EACJ,QAAQ;GAAE,MAAM;GAAU,aAAa;GAA0D;EACjG,YAAY;GAAE,MAAM;GAAU,aAAa;GAA4F;EACxI;CACD,MAAM,IAAI,MAAM;AACd,SAAO,kBAAkB;GACvB,QAAQ,KAAK;GACb,YAAY,KAAK;GACjB,YAAY,KAAK;GAClB,CAAC;;CAEL,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-JeU02vfH.d.ts","names":[],"sources":["../src/core/types.ts","../src/core/shared.ts","../src/core/ops-translate.ts","../src/core/ops-read.ts","../src/core/ops-write.ts","../src/core/ops-status.ts","../src/core/ops-orphans.ts","../src/core/ops-duplicates.ts","../src/core/ops-check.ts","../src/config/detector.ts","../src/config/layer-graph.ts","../src/io/locale-data.ts","../src/utils/errors.ts","../src/utils/rename-notice.ts","../src/llm/providers.ts","../src/config/project-config.ts"],"sourcesContent":[],"mappings":"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"}
|