@the-i18n-kit/cli 4.9.0 → 4.10.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 +2 -2
- package/dist/{_shared-Dv1EW2gy.js → _shared-Dn15c_g9.js} +1 -1
- package/dist/{_shared-Dv1EW2gy.js.map → _shared-Dn15c_g9.js.map} +1 -1
- package/dist/{add-BvXrJkqZ.js → add-Dj6hsdl9.js} +2 -2
- package/dist/{add-BvXrJkqZ.js.map → add-Dj6hsdl9.js.map} +1 -1
- package/dist/bin.js +6 -1
- package/dist/bin.js.map +1 -1
- package/dist/{check-9dcNfHtC.js → check-BI-CGxpY.js} +2 -2
- package/dist/{check-9dcNfHtC.js.map → check-BI-CGxpY.js.map} +1 -1
- package/dist/{cli-CiX4llY1.js → cli-CDhNbaUM.js} +23 -23
- package/dist/{cli-CiX4llY1.js.map → cli-CDhNbaUM.js.map} +1 -1
- package/dist/config/framework/stubs/{next-intl-routing-DEwC7Bbk.d.ts → next-intl-routing-Se7Y8cCb.d.ts} +1 -1
- package/dist/config/framework/stubs/{next-intl-routing-DEwC7Bbk.d.ts.map → next-intl-routing-Se7Y8cCb.d.ts.map} +1 -1
- package/dist/config/framework/stubs/{unplugin-vue-i18n-D9yaDzRk.d.ts → unplugin-vue-i18n-DrR5pbEW.d.ts} +1 -1
- package/dist/config/framework/stubs/{unplugin-vue-i18n-D9yaDzRk.d.ts.map → unplugin-vue-i18n-DrR5pbEW.d.ts.map} +1 -1
- package/dist/{define-config-lQrIpPSK.d.ts → define-config-BSsvRnWR.d.ts} +1 -1
- package/dist/{define-config-Dhg13592.d.ts → define-config-DpbZ4BZ6.d.ts} +1 -1
- package/dist/{define-config-Dhg13592.d.ts.map → define-config-DpbZ4BZ6.d.ts.map} +1 -1
- package/dist/define-config.d.ts +1 -1
- package/dist/{detect-Dr2skxeL.js → detect-BmvyRD1a.js} +2 -2
- package/dist/{detect-Dr2skxeL.js.map → detect-BmvyRD1a.js.map} +1 -1
- package/dist/{empty-p0wct8Hk.js → empty-Ww6FnmgY.js} +2 -2
- package/dist/{empty-p0wct8Hk.js.map → empty-Ww6FnmgY.js.map} +1 -1
- package/dist/{find-duplicates-DuI8niF7.js → find-duplicates-BfBBqP7I.js} +2 -2
- package/dist/{find-duplicates-DuI8niF7.js.map → find-duplicates-BfBBqP7I.js.map} +1 -1
- package/dist/{get-BskDC2wT.js → get-oF_xIbVR.js} +2 -2
- package/dist/{get-BskDC2wT.js.map → get-oF_xIbVR.js.map} +1 -1
- package/dist/{index-BtSA6-iT.d.ts → index-JeU02vfH.d.ts} +22 -3
- package/dist/index-JeU02vfH.d.ts.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +2 -1
- package/dist/{init-D7r6iX3q.js → init-D4B1_DXb.js} +2 -2
- package/dist/{init-D7r6iX3q.js.map → init-D4B1_DXb.js.map} +1 -1
- package/dist/{list-dirs-BHk38JXZ.js → list-dirs-CgXh-Lg1.js} +2 -2
- package/dist/{list-dirs-BHk38JXZ.js.map → list-dirs-CgXh-Lg1.js.map} +1 -1
- package/dist/{missing-0gSZKTgt.js → missing-BZT6PgW5.js} +2 -2
- package/dist/{missing-0gSZKTgt.js.map → missing-BZT6PgW5.js.map} +1 -1
- package/dist/{remove-DR_mRiMA.js → remove-B7m-hi2O.js} +2 -2
- package/dist/{remove-DR_mRiMA.js.map → remove-B7m-hi2O.js.map} +1 -1
- package/dist/{remove-orphans-CcA3XQHJ.js → remove-orphans-DOTWE7Ji.js} +2 -2
- package/dist/{remove-orphans-CcA3XQHJ.js.map → remove-orphans-DOTWE7Ji.js.map} +1 -1
- package/dist/{rename-CWLfThC1.js → rename-DEJWj5_P.js} +2 -2
- package/dist/{rename-CWLfThC1.js.map → rename-DEJWj5_P.js.map} +1 -1
- package/dist/rename-notice-BV8HNX3O.js +25 -0
- package/dist/rename-notice-BV8HNX3O.js.map +1 -0
- package/dist/rename-notice-Cx1vuTRz.js +2 -0
- package/dist/{scaffold-BahXKbo9.js → scaffold-BH_OX-5z.js} +2 -2
- package/dist/{scaffold-BahXKbo9.js.map → scaffold-BH_OX-5z.js.map} +1 -1
- package/dist/{scan-CTxs3kl7.js → scan-LeU4xG0G.js} +2 -2
- package/dist/{scan-CTxs3kl7.js.map → scan-LeU4xG0G.js.map} +1 -1
- package/dist/{search-BonEgmSt.js → search-CHdDywqc.js} +2 -2
- package/dist/{search-BonEgmSt.js.map → search-CHdDywqc.js.map} +1 -1
- package/dist/{status-C_5Khw14.js → status-CwI94d_R.js} +2 -2
- package/dist/{status-C_5Khw14.js.map → status-CwI94d_R.js.map} +1 -1
- package/dist/{translate-CnXvBi5O.js → translate-Cf3npNpr.js} +2 -2
- package/dist/{translate-CnXvBi5O.js.map → translate-Cf3npNpr.js.map} +1 -1
- package/dist/{translate-key-DwO9XZMc.js → translate-key-Bg_8B6c_.js} +2 -2
- package/dist/{translate-key-DwO9XZMc.js.map → translate-key-Bg_8B6c_.js.map} +1 -1
- package/dist/{update-HR8MvPlI.js → update-DNv-dU1U.js} +2 -2
- package/dist/{update-HR8MvPlI.js.map → update-DNv-dU1U.js.map} +1 -1
- package/dist/{write-CAD9xQDy.js → write-DUwMSc75.js} +2 -2
- package/dist/{write-CAD9xQDy.js.map → write-DUwMSc75.js.map} +1 -1
- package/package.json +1 -1
- package/dist/index-BtSA6-iT.d.ts.map +0 -1
- /package/dist/{bin-Cs-dvpEC.d.ts → bin-CF8fSc-R.d.ts} +0 -0
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# the-i18n-cli
|
|
2
2
|
|
|
3
|
-
[](https://npmjs.com/package/@the-i18n-kit/cli)
|
|
4
4
|
[](https://github.com/fabkho/the-i18n-kit/blob/main/LICENSE)
|
|
5
5
|
|
|
6
6
|
CLI and core library for managing i18n translation files — supports Nuxt, Laravel, Vue, React/Next.js, and any project with JSON or PHP locale files.
|
|
@@ -13,7 +13,7 @@ Part of [the-i18n-kit](https://github.com/fabkho/the-i18n-kit) monorepo. For MCP
|
|
|
13
13
|
|
|
14
14
|
```bash
|
|
15
15
|
# Global install
|
|
16
|
-
npm install -g the-i18n-cli
|
|
16
|
+
npm install -g @the-i18n-kit/cli
|
|
17
17
|
|
|
18
18
|
# Or use directly with npx
|
|
19
19
|
npx the-i18n-cli --help
|
|
@@ -245,4 +245,4 @@ function parseJsonArg(value, argName) {
|
|
|
245
245
|
//#endregion
|
|
246
246
|
export { resolveProviderTranslateFn as a, providerArgs as i, emitErrorResult as n, splitList as o, parseJsonArg as r, createCommand as t };
|
|
247
247
|
|
|
248
|
-
//# sourceMappingURL=_shared-
|
|
248
|
+
//# sourceMappingURL=_shared-Dn15c_g9.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_shared-Dv1EW2gy.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":"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"}
|
|
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":"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"}
|
|
@@ -2,7 +2,7 @@ import "./stdout-guard-sJHFWVem.js";
|
|
|
2
2
|
import { c as addTranslations } from "./operations-BCJd7in3.js";
|
|
3
3
|
import "./providers-BAwPjeCy.js";
|
|
4
4
|
import "./php-reader-DuZ0Hyl_.js";
|
|
5
|
-
import { r as parseJsonArg, t as createCommand } from "./_shared-
|
|
5
|
+
import { r as parseJsonArg, t as createCommand } from "./_shared-Dn15c_g9.js";
|
|
6
6
|
//#region src/commands/add.ts
|
|
7
7
|
var add_default = createCommand({
|
|
8
8
|
name: "add",
|
|
@@ -37,4 +37,4 @@ var add_default = createCommand({
|
|
|
37
37
|
//#endregion
|
|
38
38
|
export { add_default as default };
|
|
39
39
|
|
|
40
|
-
//# sourceMappingURL=add-
|
|
40
|
+
//# sourceMappingURL=add-Dj6hsdl9.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add-
|
|
1
|
+
{"version":3,"file":"add-Dj6hsdl9.js","names":[],"sources":["../src/commands/add.ts"],"sourcesContent":["import { createCommand, parseJsonArg } from './_shared.js'\nimport { addTranslations } from '../core/operations.js'\n\nexport default createCommand({\n name: 'add',\n description: 'Add new translation keys (skips keys that already 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 addTranslations({ layer: args.layer, translations, dryRun: args.dryRun, projectDir: args.projectDir })\n },\n})\n"],"mappings":";;;;;;AAGA,IAAA,cAAe,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,gBAAgB;GAAE,OAAO,KAAK;GAAO;GAAc,QAAQ,KAAK;GAAQ,YAAY,KAAK;GAAY,CAAC;;CAEhH,CAAC"}
|
package/dist/bin.js
CHANGED
|
@@ -3,7 +3,12 @@ import { t as guardStdout } from "./stdout-guard-sJHFWVem.js";
|
|
|
3
3
|
//#region src/bin.ts
|
|
4
4
|
const args = process.argv.slice(2);
|
|
5
5
|
if (!(args.includes("--help") || args.includes("-h") || args.includes("--version") || args.includes("-v"))) guardStdout();
|
|
6
|
-
const {
|
|
6
|
+
const { renameNotice } = await import("./rename-notice-Cx1vuTRz.js");
|
|
7
|
+
const { createRequire } = await import("node:module");
|
|
8
|
+
const { name } = createRequire(import.meta.url)("../package.json");
|
|
9
|
+
const notice = renameNotice(name);
|
|
10
|
+
if (notice) process.stderr.write(`[the-i18n-cli] ${notice}\n`);
|
|
11
|
+
const { runCli } = await import("./cli-CDhNbaUM.js");
|
|
7
12
|
await runCli();
|
|
8
13
|
//#endregion
|
|
9
14
|
export {};
|
package/dist/bin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bin.js","names":[],"sources":["../src/bin.ts"],"sourcesContent":["#!/usr/bin/env node\n// Install the stdout guard before anything else loads, so third-party logs\n// (e.g. Nuxt modules during config detection) can never pollute the\n// machine-readable output on stdout. Help/version invocations skip the guard:\n// they never load third-party code and their output belongs on stdout\n// (mirrors the flag check in cli.ts, which cannot be imported before the\n// guard decision).\nimport { guardStdout } from './utils/stdout-guard.js'\n\nconst args = process.argv.slice(2)\nconst isHelpOrVersion = args.includes('--help') || args.includes('-h')\n || args.includes('--version') || args.includes('-v')\nif (!isHelpOrVersion) {\n guardStdout()\n}\nconst { runCli } = await import('./cli.js')\nawait runCli()\n"],"mappings":";;;AASA,MAAM,OAAO,QAAQ,KAAK,MAAM,EAAE;AAGlC,IAAI,EAFoB,KAAK,SAAS,SAAS,IAAI,KAAK,SAAS,KAAK,IACjE,KAAK,SAAS,YAAY,IAAI,KAAK,SAAS,KAAK,EAEpD,cAAa;
|
|
1
|
+
{"version":3,"file":"bin.js","names":[],"sources":["../src/bin.ts"],"sourcesContent":["#!/usr/bin/env node\n// Install the stdout guard before anything else loads, so third-party logs\n// (e.g. Nuxt modules during config detection) can never pollute the\n// machine-readable output on stdout. Help/version invocations skip the guard:\n// they never load third-party code and their output belongs on stdout\n// (mirrors the flag check in cli.ts, which cannot be imported before the\n// guard decision).\nimport { guardStdout } from './utils/stdout-guard.js'\n\nconst args = process.argv.slice(2)\nconst isHelpOrVersion = args.includes('--help') || args.includes('-h')\n || args.includes('--version') || args.includes('-v')\nif (!isHelpOrVersion) {\n guardStdout()\n}\n// Renamed packages announce themselves once per invocation, on stderr so the\n// JSON on stdout is untouched. The package reads its own name, so this is\n// silent when running as @the-i18n-kit/cli (#315).\nconst { renameNotice } = await import('./utils/rename-notice.js')\nconst { createRequire } = await import('node:module')\nconst { name } = createRequire(import.meta.url)('../package.json') as { name: string }\nconst notice = renameNotice(name)\nif (notice) process.stderr.write(`[the-i18n-cli] ${notice}\\n`)\n\nconst { runCli } = await import('./cli.js')\nawait runCli()\n"],"mappings":";;;AASA,MAAM,OAAO,QAAQ,KAAK,MAAM,EAAE;AAGlC,IAAI,EAFoB,KAAK,SAAS,SAAS,IAAI,KAAK,SAAS,KAAK,IACjE,KAAK,SAAS,YAAY,IAAI,KAAK,SAAS,KAAK,EAEpD,cAAa;AAKf,MAAM,EAAE,iBAAiB,MAAM,OAAO;AACtC,MAAM,EAAE,kBAAkB,MAAM,OAAO;AACvC,MAAM,EAAE,SAAS,cAAc,OAAO,KAAK,IAAI,CAAC,kBAAkB;AAClE,MAAM,SAAS,aAAa,KAAK;AACjC,IAAI,OAAQ,SAAQ,OAAO,MAAM,kBAAkB,OAAO,IAAI;AAE9D,MAAM,EAAE,WAAW,MAAM,OAAO;AAChC,MAAM,QAAQ"}
|
|
@@ -2,7 +2,7 @@ import "./stdout-guard-sJHFWVem.js";
|
|
|
2
2
|
import { t as checkUndefinedKeys } from "./operations-BCJd7in3.js";
|
|
3
3
|
import "./providers-BAwPjeCy.js";
|
|
4
4
|
import "./php-reader-DuZ0Hyl_.js";
|
|
5
|
-
import { t as createCommand } from "./_shared-
|
|
5
|
+
import { t as createCommand } from "./_shared-Dn15c_g9.js";
|
|
6
6
|
//#region src/commands/check.ts
|
|
7
7
|
/**
|
|
8
8
|
* CI gate for `check`: any undefined-key finding fails the build.
|
|
@@ -46,4 +46,4 @@ var check_default = createCommand({
|
|
|
46
46
|
//#endregion
|
|
47
47
|
export { check_default as default };
|
|
48
48
|
|
|
49
|
-
//# sourceMappingURL=check-
|
|
49
|
+
//# sourceMappingURL=check-BI-CGxpY.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check-
|
|
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"}
|
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
import "./stdout-guard-sJHFWVem.js";
|
|
2
2
|
import "./providers-BAwPjeCy.js";
|
|
3
|
-
import { n as emitErrorResult } from "./_shared-
|
|
3
|
+
import { n as emitErrorResult } from "./_shared-Dn15c_g9.js";
|
|
4
4
|
import { createRequire } from "node:module";
|
|
5
5
|
import { defineCommand, runCommand, runMain } from "citty";
|
|
6
6
|
//#region src/commands/index.ts
|
|
7
7
|
const commands$1 = {
|
|
8
|
-
"init": () => import("./init-
|
|
9
|
-
"detect": () => import("./detect-
|
|
10
|
-
"list-dirs": () => import("./list-dirs-
|
|
11
|
-
"get": () => import("./get-
|
|
12
|
-
"write": () => import("./write-
|
|
13
|
-
"add": () => import("./add-
|
|
14
|
-
"update": () => import("./update-
|
|
15
|
-
"missing": () => import("./missing-
|
|
16
|
-
"status": () => import("./status-
|
|
17
|
-
"empty": () => import("./empty-
|
|
18
|
-
"search": () => import("./search-
|
|
19
|
-
"remove": () => import("./remove-
|
|
20
|
-
"rename": () => import("./rename-
|
|
21
|
-
"translate": () => import("./translate-
|
|
22
|
-
"translate-missing": () => import("./translate-
|
|
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
23
|
const def = m.default;
|
|
24
24
|
return {
|
|
25
25
|
...def,
|
|
@@ -30,12 +30,12 @@ const commands$1 = {
|
|
|
30
30
|
}
|
|
31
31
|
};
|
|
32
32
|
}),
|
|
33
|
-
"translate-key": () => import("./translate-key-
|
|
34
|
-
"scan": () => import("./scan-
|
|
35
|
-
"check": () => import("./check-
|
|
36
|
-
"find-duplicates": () => import("./find-duplicates-
|
|
37
|
-
"remove-orphans": () => import("./remove-orphans-
|
|
38
|
-
"scaffold": () => import("./scaffold-
|
|
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
39
|
};
|
|
40
40
|
//#endregion
|
|
41
41
|
//#region src/cli.ts
|
|
@@ -79,4 +79,4 @@ async function runCli() {
|
|
|
79
79
|
//#endregion
|
|
80
80
|
export { runCli };
|
|
81
81
|
|
|
82
|
-
//# sourceMappingURL=cli-
|
|
82
|
+
//# sourceMappingURL=cli-CDhNbaUM.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"next-intl-routing-
|
|
1
|
+
{"version":3,"file":"next-intl-routing-Se7Y8cCb.d.ts","names":[],"sources":["../../../../src/config/framework/stubs/next-intl-routing.ts"],"sourcesContent":[],"mappings":";;AAcA;;;;;;;;;;;;;iBAAgB,yBAAyB,IAAI"}
|
|
@@ -22,4 +22,4 @@ declare const unpluginVueI18n: typeof record;
|
|
|
22
22
|
//# sourceMappingURL=unplugin-vue-i18n.d.ts.map
|
|
23
23
|
//#endregion
|
|
24
24
|
export { RECORDED, record as default, unpluginVueI18n, vueI18n };
|
|
25
|
-
//# sourceMappingURL=unplugin-vue-i18n-
|
|
25
|
+
//# sourceMappingURL=unplugin-vue-i18n-DrR5pbEW.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unplugin-vue-i18n-
|
|
1
|
+
{"version":3,"file":"unplugin-vue-i18n-DrR5pbEW.d.ts","names":[],"sources":["../../../../src/config/framework/stubs/unplugin-vue-i18n.ts"],"sourcesContent":[],"mappings":";;AAcA;AAA4E;AAQ5E;AACA;;;;;;;;;;cATa;iBAEJ,MAAA;;;cAMI,gBAAO;cACP,wBAAe"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as LocaleDir, i as LocaleDefinition, n as defineI18nKitConfig, o as ProjectConfig, r as I18nConfig, t as I18nKitConfig } from "./define-config-
|
|
1
|
+
import { a as LocaleDir, i as LocaleDefinition, n as defineI18nKitConfig, o as ProjectConfig, r as I18nConfig, t as I18nKitConfig } from "./define-config-DpbZ4BZ6.js";
|
|
2
2
|
export { I18nConfig, I18nKitConfig, LocaleDefinition, LocaleDir, ProjectConfig, defineI18nKitConfig };
|
|
@@ -139,4 +139,4 @@ type I18nKitConfig = ProjectConfig;
|
|
|
139
139
|
declare function defineI18nKitConfig(config: I18nKitConfig): I18nKitConfig;
|
|
140
140
|
//#endregion
|
|
141
141
|
export { LocaleDir as a, LocaleDefinition as i, defineI18nKitConfig as n, ProjectConfig as o, I18nConfig as r, I18nKitConfig as t };
|
|
142
|
-
//# sourceMappingURL=define-config-
|
|
142
|
+
//# sourceMappingURL=define-config-DpbZ4BZ6.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define-config-
|
|
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"}
|
package/dist/define-config.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from './define-config-
|
|
1
|
+
export * from './define-config-BSsvRnWR.d.ts';
|
|
@@ -2,7 +2,7 @@ import "./stdout-guard-sJHFWVem.js";
|
|
|
2
2
|
import { m as detectConfig } from "./operations-BCJd7in3.js";
|
|
3
3
|
import "./providers-BAwPjeCy.js";
|
|
4
4
|
import "./php-reader-DuZ0Hyl_.js";
|
|
5
|
-
import { t as createCommand } from "./_shared-
|
|
5
|
+
import { t as createCommand } from "./_shared-Dn15c_g9.js";
|
|
6
6
|
//#region src/commands/detect.ts
|
|
7
7
|
var detect_default = createCommand({
|
|
8
8
|
name: "detect",
|
|
@@ -14,4 +14,4 @@ var detect_default = createCommand({
|
|
|
14
14
|
//#endregion
|
|
15
15
|
export { detect_default as default };
|
|
16
16
|
|
|
17
|
-
//# sourceMappingURL=detect-
|
|
17
|
+
//# sourceMappingURL=detect-BmvyRD1a.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detect-
|
|
1
|
+
{"version":3,"file":"detect-BmvyRD1a.js","names":[],"sources":["../src/commands/detect.ts"],"sourcesContent":["import { createCommand } from './_shared.js'\nimport { detectConfig } from '../core/operations.js'\n\nexport default createCommand({\n name: 'detect',\n description: 'Detect i18n configuration from the project',\n async run(args) {\n return detectConfig(args.projectDir)\n },\n})\n"],"mappings":";;;;;;AAGA,IAAA,iBAAe,cAAc;CAC3B,MAAM;CACN,aAAa;CACb,MAAM,IAAI,MAAM;AACd,SAAO,aAAa,KAAK,WAAW;;CAEvC,CAAC"}
|
|
@@ -2,7 +2,7 @@ import "./stdout-guard-sJHFWVem.js";
|
|
|
2
2
|
import { h as findEmptyTranslations } from "./operations-BCJd7in3.js";
|
|
3
3
|
import "./providers-BAwPjeCy.js";
|
|
4
4
|
import "./php-reader-DuZ0Hyl_.js";
|
|
5
|
-
import { t as createCommand } from "./_shared-
|
|
5
|
+
import { t as createCommand } from "./_shared-Dn15c_g9.js";
|
|
6
6
|
//#region src/commands/empty.ts
|
|
7
7
|
var empty_default = createCommand({
|
|
8
8
|
name: "empty",
|
|
@@ -33,4 +33,4 @@ var empty_default = createCommand({
|
|
|
33
33
|
//#endregion
|
|
34
34
|
export { empty_default as default };
|
|
35
35
|
|
|
36
|
-
//# sourceMappingURL=empty-
|
|
36
|
+
//# sourceMappingURL=empty-Ww6FnmgY.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"empty-
|
|
1
|
+
{"version":3,"file":"empty-Ww6FnmgY.js","names":[],"sources":["../src/commands/empty.ts"],"sourcesContent":["import { createCommand } from './_shared.js'\nimport { findEmptyTranslations } from '../core/operations.js'\n\nexport default createCommand({\n name: 'empty',\n description: 'Find translation keys with empty string values',\n args: {\n layer: { type: 'string', description: 'Filter to a specific layer' },\n locale: { type: 'string', description: 'Filter to a specific locale' },\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 findEmptyTranslations({\n layer: args.layer,\n locale: args.locale,\n projectDir: args.projectDir,\n outputFile: args.outputFile,\n })\n },\n})\n"],"mappings":";;;;;;AAGA,IAAA,gBAAe,cAAc;CAC3B,MAAM;CACN,aAAa;CACb,MAAM;EACJ,OAAO;GAAE,MAAM;GAAU,aAAa;GAA8B;EACpE,QAAQ;GAAE,MAAM;GAAU,aAAa;GAA+B;EACtE,YAAY;GAAE,MAAM;GAAU,aAAa;GAA4F;EACxI;CACD,MAAM,IAAI,MAAM;AACd,SAAO,sBAAsB;GAC3B,OAAO,KAAK;GACZ,QAAQ,KAAK;GACb,YAAY,KAAK;GACjB,YAAY,KAAK;GAClB,CAAC;;CAEL,CAAC"}
|
|
@@ -2,7 +2,7 @@ import "./stdout-guard-sJHFWVem.js";
|
|
|
2
2
|
import { n as findDuplicateKeys } from "./operations-BCJd7in3.js";
|
|
3
3
|
import "./providers-BAwPjeCy.js";
|
|
4
4
|
import "./php-reader-DuZ0Hyl_.js";
|
|
5
|
-
import { t as createCommand } from "./_shared-
|
|
5
|
+
import { t as createCommand } from "./_shared-Dn15c_g9.js";
|
|
6
6
|
//#region src/commands/find-duplicates.ts
|
|
7
7
|
var find_duplicates_default = createCommand({
|
|
8
8
|
name: "find-duplicates",
|
|
@@ -28,4 +28,4 @@ var find_duplicates_default = createCommand({
|
|
|
28
28
|
//#endregion
|
|
29
29
|
export { find_duplicates_default as default };
|
|
30
30
|
|
|
31
|
-
//# sourceMappingURL=find-duplicates-
|
|
31
|
+
//# sourceMappingURL=find-duplicates-BfBBqP7I.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-duplicates-
|
|
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"}
|
|
@@ -2,7 +2,7 @@ import "./stdout-guard-sJHFWVem.js";
|
|
|
2
2
|
import { _ as getTranslations } from "./operations-BCJd7in3.js";
|
|
3
3
|
import "./providers-BAwPjeCy.js";
|
|
4
4
|
import "./php-reader-DuZ0Hyl_.js";
|
|
5
|
-
import { o as splitList, t as createCommand } from "./_shared-
|
|
5
|
+
import { o as splitList, t as createCommand } from "./_shared-Dn15c_g9.js";
|
|
6
6
|
//#region src/commands/get.ts
|
|
7
7
|
var get_default = createCommand({
|
|
8
8
|
name: "get",
|
|
@@ -38,4 +38,4 @@ var get_default = createCommand({
|
|
|
38
38
|
//#endregion
|
|
39
39
|
export { get_default as default };
|
|
40
40
|
|
|
41
|
-
//# sourceMappingURL=get-
|
|
41
|
+
//# sourceMappingURL=get-oF_xIbVR.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-
|
|
1
|
+
{"version":3,"file":"get-oF_xIbVR.js","names":[],"sources":["../src/commands/get.ts"],"sourcesContent":["import { createCommand, splitList } from './_shared.js'\nimport { getTranslations } from '../core/operations.js'\n\nexport default createCommand({\n name: 'get',\n description: 'Get translation values for specific keys',\n args: {\n layer: { type: 'string', description: 'Layer name', required: true },\n locale: { type: 'string', description: 'Locale code, or \"*\" for all', required: true },\n keys: { type: 'string', description: 'Comma-separated key paths', required: true },\n },\n async run(args) {\n const keys = splitList(args.keys) ?? []\n if (keys.length === 0) {\n throw new Error('No keys provided. Pass comma-separated key paths via --keys')\n }\n return getTranslations({ layer: args.layer, locale: args.locale, keys, projectDir: args.projectDir })\n },\n})\n"],"mappings":";;;;;;AAGA,IAAA,cAAe,cAAc;CAC3B,MAAM;CACN,aAAa;CACb,MAAM;EACJ,OAAO;GAAE,MAAM;GAAU,aAAa;GAAc,UAAU;GAAM;EACpE,QAAQ;GAAE,MAAM;GAAU,aAAa;GAA+B,UAAU;GAAM;EACtF,MAAM;GAAE,MAAM;GAAU,aAAa;GAA6B,UAAU;GAAM;EACnF;CACD,MAAM,IAAI,MAAM;EACd,MAAM,OAAO,UAAU,KAAK,KAAK,IAAI,EAAE;AACvC,MAAI,KAAK,WAAW,EAClB,OAAM,IAAI,MAAM,8DAA8D;AAEhF,SAAO,gBAAgB;GAAE,OAAO,KAAK;GAAO,QAAQ,KAAK;GAAQ;GAAM,YAAY,KAAK;GAAY,CAAC;;CAExG,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as LocaleDir, i as LocaleDefinition, n as defineI18nKitConfig, o as ProjectConfig, r as I18nConfig, t as I18nKitConfig } from "./define-config-
|
|
1
|
+
import { a as LocaleDir, i as LocaleDefinition, n as defineI18nKitConfig, o as ProjectConfig, r as I18nConfig, t as I18nKitConfig } from "./define-config-DpbZ4BZ6.js";
|
|
2
2
|
|
|
3
3
|
//#region src/core/types.d.ts
|
|
4
4
|
|
|
@@ -1053,6 +1053,25 @@ declare class ToolError extends Error {
|
|
|
1053
1053
|
}
|
|
1054
1054
|
//# sourceMappingURL=errors.d.ts.map
|
|
1055
1055
|
//#endregion
|
|
1056
|
+
//#region src/utils/rename-notice.d.ts
|
|
1057
|
+
/**
|
|
1058
|
+
* The kit is renaming to the `@the-i18n-kit` scope (#315). During the window
|
|
1059
|
+
* both names publish from one source at matching versions, so nothing breaks —
|
|
1060
|
+
* but a user on the old name has no way of learning that unless the package
|
|
1061
|
+
* tells them.
|
|
1062
|
+
*
|
|
1063
|
+
* A package finds out it is the old one by reading its own `name` at runtime,
|
|
1064
|
+
* which is why this takes the name rather than deciding for itself: the same
|
|
1065
|
+
* code ships under both names, and only the manifest differs.
|
|
1066
|
+
*/
|
|
1067
|
+
/**
|
|
1068
|
+
* The notice for a package running under a legacy name, or null when it is
|
|
1069
|
+
* already running under its new one — which is the case that must stay silent,
|
|
1070
|
+
* since a notice there would be telling people to do what they have done.
|
|
1071
|
+
*/
|
|
1072
|
+
declare function renameNotice(packageName: string): string | null;
|
|
1073
|
+
//# sourceMappingURL=rename-notice.d.ts.map
|
|
1074
|
+
//#endregion
|
|
1056
1075
|
//#region src/llm/providers.d.ts
|
|
1057
1076
|
type LlmProvider = 'openai' | 'anthropic' | 'google';
|
|
1058
1077
|
/** How a provider failure should be handled by the caller. */
|
|
@@ -1126,5 +1145,5 @@ declare function loadProjectConfig(projectDir: string): Promise<ProjectConfig |
|
|
|
1126
1145
|
//# sourceMappingURL=project-config.d.ts.map
|
|
1127
1146
|
|
|
1128
1147
|
//#endregion
|
|
1129
|
-
export { AddTranslationsResult, BASE_URL_ENV, type CheckUndefinedKeysResult, type CheckUndefinedKeysSummary, CodeUsageRef, CodeUsageResult, type DuplicateKeyCollision, DynamicKeyRef, EmptyTranslationsResult, type FindDuplicateKeysResult, type FindDuplicateKeysSummary, FindOrphanKeysResult, GeneratedProjectConfig, type I18nConfig, type I18nKitConfig, InitProjectConfigResult, type KeyUsageLocation, type LayerGraph, LayerStatus, type LlmProvider, type LlmProviderConfig, type LocaleDefinition, type LocaleDir, LocaleDirInfo, type LocaleRefAmbiguity, LocaleRefInfo, LocaleStatus, MisplacedUsageRef, MissingTranslationsResult, MutationPreview, MutationResult, PlaceholderValidationIssue, PlaceholderValidationResult, ProgressFn, type ProjectConfig, RemoveOrphanKeysResult, RemoveTranslationsPreview, RemoveTranslationsResult, RenameTranslationKeyPreview, RenameTranslationKeyResult, ScaffoldLocaleFileInfo, ScaffoldLocaleResult, ScanCodeUsageResult, SearchMatch, SearchTranslationsResult, ToolError, TranslateAllLayersResult, TranslateAllLayersSummary, TranslateFailReason, TranslateFn, TranslateKeyLocaleIssue, TranslateKeyResult, TranslateLayerTotals, TranslateMissingCompactEntry, TranslateMissingLocaleResult, TranslateMissingOutcome, TranslateMissingResult, TranslateMode, TranslateProviderError, type TranslateProviderErrorKind, TranslateRequest, TranslateResponse, TranslateSkipReason, TranslationStatusResult, TranslationStatusSummary, type UncertainKeyFinding, type UndefinedKeyFinding, UnresolvedKeyWarningRef, UnresolvedLocaleRef, UpdateTranslationsResult, WriteTranslationsResult, addTranslations, buildLayerGraph, checkUndefinedKeys, classifyProviderError, clearConfigCache, createTranslateFn, defineI18nKitConfig, detectConfig, detectI18nConfig, findDuplicateKeys, findEmptyTranslations, findLocaleImpl, findOrphanKeys, getCachedConfig, getMissingTranslations, getTranslationStatus, getTranslations, listLocaleDirs, listNamespaces, loadProjectConfig, readLocaleData, removeOrphanKeys, removeTranslations, renameTranslationKey, resolveProtectedLocales, resolveProviderBaseUrl, scaffoldLocaleFiles, scanCodeUsage, searchTranslations, toErrorMessage, translateKey, translateMissing, updateTranslations, writeTranslations };
|
|
1130
|
-
//# sourceMappingURL=index-
|
|
1148
|
+
export { AddTranslationsResult, BASE_URL_ENV, type CheckUndefinedKeysResult, type CheckUndefinedKeysSummary, CodeUsageRef, CodeUsageResult, type DuplicateKeyCollision, DynamicKeyRef, EmptyTranslationsResult, type FindDuplicateKeysResult, type FindDuplicateKeysSummary, FindOrphanKeysResult, GeneratedProjectConfig, type I18nConfig, type I18nKitConfig, InitProjectConfigResult, type KeyUsageLocation, type LayerGraph, LayerStatus, type LlmProvider, type LlmProviderConfig, type LocaleDefinition, type LocaleDir, LocaleDirInfo, type LocaleRefAmbiguity, LocaleRefInfo, LocaleStatus, MisplacedUsageRef, MissingTranslationsResult, MutationPreview, MutationResult, PlaceholderValidationIssue, PlaceholderValidationResult, ProgressFn, type ProjectConfig, RemoveOrphanKeysResult, RemoveTranslationsPreview, RemoveTranslationsResult, RenameTranslationKeyPreview, RenameTranslationKeyResult, ScaffoldLocaleFileInfo, ScaffoldLocaleResult, ScanCodeUsageResult, SearchMatch, SearchTranslationsResult, ToolError, TranslateAllLayersResult, TranslateAllLayersSummary, TranslateFailReason, TranslateFn, TranslateKeyLocaleIssue, TranslateKeyResult, TranslateLayerTotals, TranslateMissingCompactEntry, TranslateMissingLocaleResult, TranslateMissingOutcome, TranslateMissingResult, TranslateMode, TranslateProviderError, type TranslateProviderErrorKind, TranslateRequest, TranslateResponse, TranslateSkipReason, TranslationStatusResult, TranslationStatusSummary, type UncertainKeyFinding, type UndefinedKeyFinding, UnresolvedKeyWarningRef, UnresolvedLocaleRef, UpdateTranslationsResult, WriteTranslationsResult, addTranslations, buildLayerGraph, checkUndefinedKeys, classifyProviderError, clearConfigCache, createTranslateFn, defineI18nKitConfig, detectConfig, detectI18nConfig, findDuplicateKeys, findEmptyTranslations, findLocaleImpl, findOrphanKeys, getCachedConfig, getMissingTranslations, getTranslationStatus, getTranslations, listLocaleDirs, listNamespaces, loadProjectConfig, readLocaleData, removeOrphanKeys, removeTranslations, renameNotice, renameTranslationKey, resolveProtectedLocales, resolveProviderBaseUrl, scaffoldLocaleFiles, scanCodeUsage, searchTranslations, toErrorMessage, translateKey, translateMissing, updateTranslations, writeTranslations };
|
|
1149
|
+
//# sourceMappingURL=index-JeU02vfH.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
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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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from './index-
|
|
1
|
+
export * from './index-JeU02vfH.d.ts';
|
package/dist/index.js
CHANGED
|
@@ -3,4 +3,5 @@ import { i as toErrorMessage, r as ToolError } from "./errors-coI1dhw1.js";
|
|
|
3
3
|
import { C as translateMissing, D as detectI18nConfig, E as clearConfigCache, O as getCachedConfig, S as translateKey, T as buildLayerGraph, _ as getTranslations, a as scanCodeUsage, b as searchTranslations, c as addTranslations, d as scaffoldLocaleFiles, f as updateTranslations, g as getMissingTranslations, h as findEmptyTranslations, i as removeOrphanKeys, k as findLocaleImpl, l as removeTranslations, m as detectConfig, n as findDuplicateKeys, o as getTranslationStatus, p as writeTranslations, r as findOrphanKeys, t as checkUndefinedKeys, u as renameTranslationKey, v as listLocaleDirs, w as readLocaleData, x as resolveProtectedLocales, y as listNamespaces } from "./operations-BCJd7in3.js";
|
|
4
4
|
import { a as resolveProviderBaseUrl, i as createTranslateFn, n as TranslateProviderError, r as classifyProviderError, s as loadProjectConfig, t as BASE_URL_ENV } from "./providers-BAwPjeCy.js";
|
|
5
5
|
import "./php-reader-DuZ0Hyl_.js";
|
|
6
|
-
|
|
6
|
+
import { t as renameNotice } from "./rename-notice-BV8HNX3O.js";
|
|
7
|
+
export { BASE_URL_ENV, ToolError, TranslateProviderError, addTranslations, buildLayerGraph, checkUndefinedKeys, classifyProviderError, clearConfigCache, createTranslateFn, defineI18nKitConfig, detectConfig, detectI18nConfig, findDuplicateKeys, findEmptyTranslations, findLocaleImpl, findOrphanKeys, getCachedConfig, getMissingTranslations, getTranslationStatus, getTranslations, listLocaleDirs, listNamespaces, loadProjectConfig, readLocaleData, removeOrphanKeys, removeTranslations, renameNotice, renameTranslationKey, resolveProtectedLocales, resolveProviderBaseUrl, scaffoldLocaleFiles, scanCodeUsage, searchTranslations, toErrorMessage, translateKey, translateMissing, updateTranslations, writeTranslations };
|
|
@@ -2,7 +2,7 @@ import "./stdout-guard-sJHFWVem.js";
|
|
|
2
2
|
import { s as initProjectConfig } from "./operations-BCJd7in3.js";
|
|
3
3
|
import "./providers-BAwPjeCy.js";
|
|
4
4
|
import "./php-reader-DuZ0Hyl_.js";
|
|
5
|
-
import { t as createCommand } from "./_shared-
|
|
5
|
+
import { t as createCommand } from "./_shared-Dn15c_g9.js";
|
|
6
6
|
//#region src/commands/init.ts
|
|
7
7
|
var init_default = createCommand({
|
|
8
8
|
name: "init",
|
|
@@ -30,4 +30,4 @@ var init_default = createCommand({
|
|
|
30
30
|
//#endregion
|
|
31
31
|
export { init_default as default };
|
|
32
32
|
|
|
33
|
-
//# sourceMappingURL=init-
|
|
33
|
+
//# sourceMappingURL=init-D4B1_DXb.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init-
|
|
1
|
+
{"version":3,"file":"init-D4B1_DXb.js","names":[],"sources":["../src/commands/init.ts"],"sourcesContent":["import { createCommand } from './_shared.js'\nimport { initProjectConfig } from '../core/operations.js'\n\nexport default createCommand({\n name: 'init',\n description: 'Create a schema-valid .i18n-mcp.json from framework detection. Non-interactive; refuses to overwrite without --force',\n args: {\n force: { type: 'boolean', description: 'Overwrite an existing .i18n-mcp.json', default: false },\n dryRun: { type: 'boolean', description: 'Report the config that would be written without touching disk', default: false },\n },\n async run(args) {\n return initProjectConfig({\n projectDir: args.projectDir,\n force: args.force,\n dryRun: args.dryRun,\n })\n },\n})\n"],"mappings":";;;;;;AAGA,IAAA,eAAe,cAAc;CAC3B,MAAM;CACN,aAAa;CACb,MAAM;EACJ,OAAO;GAAE,MAAM;GAAW,aAAa;GAAwC,SAAS;GAAO;EAC/F,QAAQ;GAAE,MAAM;GAAW,aAAa;GAAiE,SAAS;GAAO;EAC1H;CACD,MAAM,IAAI,MAAM;AACd,SAAO,kBAAkB;GACvB,YAAY,KAAK;GACjB,OAAO,KAAK;GACZ,QAAQ,KAAK;GACd,CAAC;;CAEL,CAAC"}
|
|
@@ -2,7 +2,7 @@ import "./stdout-guard-sJHFWVem.js";
|
|
|
2
2
|
import { v as listLocaleDirs } from "./operations-BCJd7in3.js";
|
|
3
3
|
import "./providers-BAwPjeCy.js";
|
|
4
4
|
import "./php-reader-DuZ0Hyl_.js";
|
|
5
|
-
import { t as createCommand } from "./_shared-
|
|
5
|
+
import { t as createCommand } from "./_shared-Dn15c_g9.js";
|
|
6
6
|
//#region src/commands/list-dirs.ts
|
|
7
7
|
var list_dirs_default = createCommand({
|
|
8
8
|
name: "list-dirs",
|
|
@@ -14,4 +14,4 @@ var list_dirs_default = createCommand({
|
|
|
14
14
|
//#endregion
|
|
15
15
|
export { list_dirs_default as default };
|
|
16
16
|
|
|
17
|
-
//# sourceMappingURL=list-dirs-
|
|
17
|
+
//# sourceMappingURL=list-dirs-CgXh-Lg1.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-dirs-
|
|
1
|
+
{"version":3,"file":"list-dirs-CgXh-Lg1.js","names":[],"sources":["../src/commands/list-dirs.ts"],"sourcesContent":["import { createCommand } from './_shared.js'\nimport { listLocaleDirs } from '../core/operations.js'\n\nexport default createCommand({\n name: 'list-dirs',\n description: 'List all i18n locale directories, grouped by layer',\n async run(args) {\n return listLocaleDirs(args.projectDir)\n },\n})\n"],"mappings":";;;;;;AAGA,IAAA,oBAAe,cAAc;CAC3B,MAAM;CACN,aAAa;CACb,MAAM,IAAI,MAAM;AACd,SAAO,eAAe,KAAK,WAAW;;CAEzC,CAAC"}
|
|
@@ -2,7 +2,7 @@ import "./stdout-guard-sJHFWVem.js";
|
|
|
2
2
|
import { g as getMissingTranslations } from "./operations-BCJd7in3.js";
|
|
3
3
|
import "./providers-BAwPjeCy.js";
|
|
4
4
|
import "./php-reader-DuZ0Hyl_.js";
|
|
5
|
-
import { o as splitList, t as createCommand } from "./_shared-
|
|
5
|
+
import { o as splitList, t as createCommand } from "./_shared-Dn15c_g9.js";
|
|
6
6
|
//#region src/commands/missing.ts
|
|
7
7
|
var missing_default = createCommand({
|
|
8
8
|
name: "missing",
|
|
@@ -48,4 +48,4 @@ var missing_default = createCommand({
|
|
|
48
48
|
//#endregion
|
|
49
49
|
export { missing_default as default };
|
|
50
50
|
|
|
51
|
-
//# sourceMappingURL=missing-
|
|
51
|
+
//# sourceMappingURL=missing-BZT6PgW5.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"missing-
|
|
1
|
+
{"version":3,"file":"missing-BZT6PgW5.js","names":[],"sources":["../src/commands/missing.ts"],"sourcesContent":["import { createCommand, splitList } from './_shared.js'\nimport { getMissingTranslations } from '../core/operations.js'\n\nexport default createCommand({\n name: 'missing',\n description: 'Find translation keys missing in target locales',\n args: {\n layer: { type: 'string', description: 'Filter to a specific layer' },\n ref: { type: 'string', description: 'Reference locale (default: project default)' },\n targets: { type: 'string', description: 'Comma-separated target locales (default: all except ref)' },\n outputFile: { type: 'string', description: 'Write full output to this file path and return only a summary (useful for large outputs)' },\n failOnMissing: { type: 'boolean', description: 'Exit 2 when any key is missing (CI gate)', default: false },\n },\n gates: [{ flag: 'failOnMissing', counter: 'totalMissingKeys', threshold: 0 }],\n async run(args) {\n return getMissingTranslations({\n layer: args.layer,\n referenceLocale: args.ref,\n targetLocales: splitList(args.targets),\n projectDir: args.projectDir,\n outputFile: args.outputFile,\n })\n },\n})\n"],"mappings":";;;;;;AAGA,IAAA,kBAAe,cAAc;CAC3B,MAAM;CACN,aAAa;CACb,MAAM;EACJ,OAAO;GAAE,MAAM;GAAU,aAAa;GAA8B;EACpE,KAAK;GAAE,MAAM;GAAU,aAAa;GAA+C;EACnF,SAAS;GAAE,MAAM;GAAU,aAAa;GAA4D;EACpG,YAAY;GAAE,MAAM;GAAU,aAAa;GAA4F;EACvI,eAAe;GAAE,MAAM;GAAW,aAAa;GAA4C,SAAS;GAAO;EAC5G;CACD,OAAO,CAAC;EAAE,MAAM;EAAiB,SAAS;EAAoB,WAAW;EAAG,CAAC;CAC7E,MAAM,IAAI,MAAM;AACd,SAAO,uBAAuB;GAC5B,OAAO,KAAK;GACZ,iBAAiB,KAAK;GACtB,eAAe,UAAU,KAAK,QAAQ;GACtC,YAAY,KAAK;GACjB,YAAY,KAAK;GAClB,CAAC;;CAEL,CAAC"}
|
|
@@ -2,7 +2,7 @@ import "./stdout-guard-sJHFWVem.js";
|
|
|
2
2
|
import { l as removeTranslations } from "./operations-BCJd7in3.js";
|
|
3
3
|
import "./providers-BAwPjeCy.js";
|
|
4
4
|
import "./php-reader-DuZ0Hyl_.js";
|
|
5
|
-
import { o as splitList, t as createCommand } from "./_shared-
|
|
5
|
+
import { o as splitList, t as createCommand } from "./_shared-Dn15c_g9.js";
|
|
6
6
|
//#region src/commands/remove.ts
|
|
7
7
|
var remove_default = createCommand({
|
|
8
8
|
name: "remove",
|
|
@@ -38,4 +38,4 @@ var remove_default = createCommand({
|
|
|
38
38
|
//#endregion
|
|
39
39
|
export { remove_default as default };
|
|
40
40
|
|
|
41
|
-
//# sourceMappingURL=remove-
|
|
41
|
+
//# sourceMappingURL=remove-B7m-hi2O.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remove-
|
|
1
|
+
{"version":3,"file":"remove-B7m-hi2O.js","names":[],"sources":["../src/commands/remove.ts"],"sourcesContent":["import { createCommand, splitList } from './_shared.js'\nimport { removeTranslations } from '../core/operations.js'\n\nexport default createCommand({\n name: 'remove',\n description: 'Remove translation keys from all locale files in a layer',\n args: {\n layer: { type: 'string', description: 'Layer name', required: true },\n keys: { type: 'string', description: 'Comma-separated key paths to remove', required: true },\n dryRun: { type: 'boolean', description: 'Preview changes without writing', default: false },\n },\n async run(args) {\n const keys = splitList(args.keys) ?? []\n if (keys.length === 0) {\n throw new Error('No keys provided. Pass comma-separated key paths via --keys')\n }\n return removeTranslations({ layer: args.layer, keys, 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,MAAM;GAAE,MAAM;GAAU,aAAa;GAAuC,UAAU;GAAM;EAC5F,QAAQ;GAAE,MAAM;GAAW,aAAa;GAAmC,SAAS;GAAO;EAC5F;CACD,MAAM,IAAI,MAAM;EACd,MAAM,OAAO,UAAU,KAAK,KAAK,IAAI,EAAE;AACvC,MAAI,KAAK,WAAW,EAClB,OAAM,IAAI,MAAM,8DAA8D;AAEhF,SAAO,mBAAmB;GAAE,OAAO,KAAK;GAAO;GAAM,QAAQ,KAAK;GAAQ,YAAY,KAAK;GAAY,CAAC;;CAE3G,CAAC"}
|
|
@@ -2,7 +2,7 @@ import "./stdout-guard-sJHFWVem.js";
|
|
|
2
2
|
import { i as removeOrphanKeys } from "./operations-BCJd7in3.js";
|
|
3
3
|
import "./providers-BAwPjeCy.js";
|
|
4
4
|
import "./php-reader-DuZ0Hyl_.js";
|
|
5
|
-
import { t as createCommand } from "./_shared-
|
|
5
|
+
import { t as createCommand } from "./_shared-Dn15c_g9.js";
|
|
6
6
|
//#region src/commands/remove-orphans.ts
|
|
7
7
|
var remove_orphans_default = createCommand({
|
|
8
8
|
name: "remove-orphans",
|
|
@@ -54,4 +54,4 @@ var remove_orphans_default = createCommand({
|
|
|
54
54
|
//#endregion
|
|
55
55
|
export { remove_orphans_default as default };
|
|
56
56
|
|
|
57
|
-
//# sourceMappingURL=remove-orphans-
|
|
57
|
+
//# sourceMappingURL=remove-orphans-DOTWE7Ji.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remove-orphans-
|
|
1
|
+
{"version":3,"file":"remove-orphans-DOTWE7Ji.js","names":[],"sources":["../src/commands/remove-orphans.ts"],"sourcesContent":["import { createCommand } from './_shared.js'\nimport { removeOrphanKeys } from '../core/operations.js'\n\nexport default createCommand({\n name: 'remove-orphans',\n description: 'Find and remove orphan translation keys not referenced in source code',\n args: {\n layer: { type: 'string', description: 'Filter to a specific layer' },\n locale: { type: 'string', description: 'Locale to check (default: project default)' },\n dryRun: { type: 'boolean', description: 'Preview without removing (default: true)', default: true },\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 orphan findings as a GitLab Code Quality (CodeClimate) JSON report to this file path' },\n failOnOrphans: { type: 'boolean', description: 'Exit 2 when any orphan key is found (CI gate)', default: false },\n },\n gates: [{ flag: 'failOnOrphans', counter: 'orphanCount', threshold: 0 }],\n async run(args) {\n return removeOrphanKeys({\n layer: args.layer,\n locale: args.locale,\n dryRun: args.dryRun,\n projectDir: args.projectDir,\n outputFile: args.outputFile,\n codequalityOutput: args.codequalityOutput,\n })\n },\n})\n"],"mappings":";;;;;;AAGA,IAAA,yBAAe,cAAc;CAC3B,MAAM;CACN,aAAa;CACb,MAAM;EACJ,OAAO;GAAE,MAAM;GAAU,aAAa;GAA8B;EACpE,QAAQ;GAAE,MAAM;GAAU,aAAa;GAA8C;EACrF,QAAQ;GAAE,MAAM;GAAW,aAAa;GAA4C,SAAS;GAAM;EACnG,YAAY;GAAE,MAAM;GAAU,aAAa;GAA4F;EACvI,mBAAmB;GAAE,MAAM;GAAU,aAAa;GAAuG;EACzJ,eAAe;GAAE,MAAM;GAAW,aAAa;GAAiD,SAAS;GAAO;EACjH;CACD,OAAO,CAAC;EAAE,MAAM;EAAiB,SAAS;EAAe,WAAW;EAAG,CAAC;CACxE,MAAM,IAAI,MAAM;AACd,SAAO,iBAAiB;GACtB,OAAO,KAAK;GACZ,QAAQ,KAAK;GACb,QAAQ,KAAK;GACb,YAAY,KAAK;GACjB,YAAY,KAAK;GACjB,mBAAmB,KAAK;GACzB,CAAC;;CAEL,CAAC"}
|
|
@@ -2,7 +2,7 @@ import "./stdout-guard-sJHFWVem.js";
|
|
|
2
2
|
import { u as renameTranslationKey } from "./operations-BCJd7in3.js";
|
|
3
3
|
import "./providers-BAwPjeCy.js";
|
|
4
4
|
import "./php-reader-DuZ0Hyl_.js";
|
|
5
|
-
import { t as createCommand } from "./_shared-
|
|
5
|
+
import { t as createCommand } from "./_shared-Dn15c_g9.js";
|
|
6
6
|
//#region src/commands/rename.ts
|
|
7
7
|
var rename_default = createCommand({
|
|
8
8
|
name: "rename",
|
|
@@ -42,4 +42,4 @@ var rename_default = createCommand({
|
|
|
42
42
|
//#endregion
|
|
43
43
|
export { rename_default as default };
|
|
44
44
|
|
|
45
|
-
//# sourceMappingURL=rename-
|
|
45
|
+
//# sourceMappingURL=rename-DEJWj5_P.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rename-
|
|
1
|
+
{"version":3,"file":"rename-DEJWj5_P.js","names":[],"sources":["../src/commands/rename.ts"],"sourcesContent":["import { createCommand } from './_shared.js'\nimport { renameTranslationKey } from '../core/operations.js'\n\nexport default createCommand({\n name: 'rename',\n description: 'Rename/move a translation key across all locale files',\n args: {\n layer: { type: 'string', description: 'Layer name', required: true },\n oldKey: { type: 'string', description: 'Current key path', required: true },\n newKey: { type: 'string', description: 'New key path', required: true },\n dryRun: { type: 'boolean', description: 'Preview changes without writing', default: false },\n },\n async run(args) {\n return renameTranslationKey({\n layer: args.layer,\n oldKey: args.oldKey,\n newKey: args.newKey,\n dryRun: args.dryRun,\n projectDir: args.projectDir,\n })\n },\n})\n"],"mappings":";;;;;;AAGA,IAAA,iBAAe,cAAc;CAC3B,MAAM;CACN,aAAa;CACb,MAAM;EACJ,OAAO;GAAE,MAAM;GAAU,aAAa;GAAc,UAAU;GAAM;EACpE,QAAQ;GAAE,MAAM;GAAU,aAAa;GAAoB,UAAU;GAAM;EAC3E,QAAQ;GAAE,MAAM;GAAU,aAAa;GAAgB,UAAU;GAAM;EACvE,QAAQ;GAAE,MAAM;GAAW,aAAa;GAAmC,SAAS;GAAO;EAC5F;CACD,MAAM,IAAI,MAAM;AACd,SAAO,qBAAqB;GAC1B,OAAO,KAAK;GACZ,QAAQ,KAAK;GACb,QAAQ,KAAK;GACb,QAAQ,KAAK;GACb,YAAY,KAAK;GAClB,CAAC;;CAEL,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
//#region src/utils/rename-notice.ts
|
|
2
|
+
const RENAMES = {
|
|
3
|
+
"the-i18n-cli": {
|
|
4
|
+
to: "@the-i18n-kit/cli",
|
|
5
|
+
how: "Install it with: npm i -g @the-i18n-kit/cli"
|
|
6
|
+
},
|
|
7
|
+
"the-i18n-mcp": {
|
|
8
|
+
to: "@the-i18n-kit/mcp",
|
|
9
|
+
how: "Update your MCP client config to run: npx @the-i18n-kit/mcp@latest"
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* The notice for a package running under a legacy name, or null when it is
|
|
14
|
+
* already running under its new one — which is the case that must stay silent,
|
|
15
|
+
* since a notice there would be telling people to do what they have done.
|
|
16
|
+
*/
|
|
17
|
+
function renameNotice(packageName) {
|
|
18
|
+
const rename = RENAMES[packageName];
|
|
19
|
+
if (!rename) return null;
|
|
20
|
+
return `${packageName} is now ${rename.to}. Both names publish from the same source at the same versions, and the old one will stop receiving updates. ${rename.how}`;
|
|
21
|
+
}
|
|
22
|
+
//#endregion
|
|
23
|
+
export { renameNotice as t };
|
|
24
|
+
|
|
25
|
+
//# sourceMappingURL=rename-notice-BV8HNX3O.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rename-notice-BV8HNX3O.js","names":[],"sources":["../src/utils/rename-notice.ts"],"sourcesContent":["/**\n * The kit is renaming to the `@the-i18n-kit` scope (#315). During the window\n * both names publish from one source at matching versions, so nothing breaks —\n * but a user on the old name has no way of learning that unless the package\n * tells them.\n *\n * A package finds out it is the old one by reading its own `name` at runtime,\n * which is why this takes the name rather than deciding for itself: the same\n * code ships under both names, and only the manifest differs.\n */\n\ninterface Rename {\n /** Where it moved to. */\n to: string\n /** How to move, phrased for whoever is going to read this particular notice. */\n how: string\n}\n\nconst RENAMES: Record<string, Rename> = {\n 'the-i18n-cli': {\n to: '@the-i18n-kit/cli',\n how: 'Install it with: npm i -g @the-i18n-kit/cli',\n },\n 'the-i18n-mcp': {\n to: '@the-i18n-kit/mcp',\n how: 'Update your MCP client config to run: npx @the-i18n-kit/mcp@latest',\n },\n}\n\n/**\n * The notice for a package running under a legacy name, or null when it is\n * already running under its new one — which is the case that must stay silent,\n * since a notice there would be telling people to do what they have done.\n */\nexport function renameNotice(packageName: string): string | null {\n const rename = RENAMES[packageName]\n if (!rename) return null\n\n return `${packageName} is now ${rename.to}. Both names publish from the same source at the same versions, `\n + `and the old one will stop receiving updates. ${rename.how}`\n}\n"],"mappings":";AAkBA,MAAM,UAAkC;CACtC,gBAAgB;EACd,IAAI;EACJ,KAAK;EACN;CACD,gBAAgB;EACd,IAAI;EACJ,KAAK;EACN;CACF;;;;;;AAOD,SAAgB,aAAa,aAAoC;CAC/D,MAAM,SAAS,QAAQ;AACvB,KAAI,CAAC,OAAQ,QAAO;AAEpB,QAAO,GAAG,YAAY,UAAU,OAAO,GAAG,+GACU,OAAO"}
|
|
@@ -2,7 +2,7 @@ import "./stdout-guard-sJHFWVem.js";
|
|
|
2
2
|
import { d as scaffoldLocaleFiles } from "./operations-BCJd7in3.js";
|
|
3
3
|
import "./providers-BAwPjeCy.js";
|
|
4
4
|
import "./php-reader-DuZ0Hyl_.js";
|
|
5
|
-
import { o as splitList, t as createCommand } from "./_shared-
|
|
5
|
+
import { o as splitList, t as createCommand } from "./_shared-Dn15c_g9.js";
|
|
6
6
|
//#region src/commands/scaffold.ts
|
|
7
7
|
var scaffold_default = createCommand({
|
|
8
8
|
name: "scaffold",
|
|
@@ -36,4 +36,4 @@ var scaffold_default = createCommand({
|
|
|
36
36
|
//#endregion
|
|
37
37
|
export { scaffold_default as default };
|
|
38
38
|
|
|
39
|
-
//# sourceMappingURL=scaffold-
|
|
39
|
+
//# sourceMappingURL=scaffold-BH_OX-5z.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold-
|
|
1
|
+
{"version":3,"file":"scaffold-BH_OX-5z.js","names":[],"sources":["../src/commands/scaffold.ts"],"sourcesContent":["import { createCommand, splitList } from './_shared.js'\nimport { scaffoldLocaleFiles } from '../core/operations.js'\n\nexport default createCommand({\n name: 'scaffold',\n description: 'Create empty locale files for new languages',\n args: {\n locales: { type: 'string', description: 'Comma-separated locale codes to scaffold' },\n layer: { type: 'string', description: 'Filter to a specific layer' },\n dryRun: { type: 'boolean', description: 'Preview without writing', default: false },\n },\n async run(args) {\n const locales = splitList(args.locales)\n if (locales && locales.length === 0) {\n throw new Error('No locales provided. Pass comma-separated locale codes via --locales')\n }\n return scaffoldLocaleFiles({ locales, layer: args.layer, dryRun: args.dryRun, projectDir: args.projectDir })\n },\n})\n"],"mappings":";;;;;;AAGA,IAAA,mBAAe,cAAc;CAC3B,MAAM;CACN,aAAa;CACb,MAAM;EACJ,SAAS;GAAE,MAAM;GAAU,aAAa;GAA4C;EACpF,OAAO;GAAE,MAAM;GAAU,aAAa;GAA8B;EACpE,QAAQ;GAAE,MAAM;GAAW,aAAa;GAA2B,SAAS;GAAO;EACpF;CACD,MAAM,IAAI,MAAM;EACd,MAAM,UAAU,UAAU,KAAK,QAAQ;AACvC,MAAI,WAAW,QAAQ,WAAW,EAChC,OAAM,IAAI,MAAM,uEAAuE;AAEzF,SAAO,oBAAoB;GAAE;GAAS,OAAO,KAAK;GAAO,QAAQ,KAAK;GAAQ,YAAY,KAAK;GAAY,CAAC;;CAE/G,CAAC"}
|
|
@@ -2,7 +2,7 @@ import "./stdout-guard-sJHFWVem.js";
|
|
|
2
2
|
import { a as scanCodeUsage } from "./operations-BCJd7in3.js";
|
|
3
3
|
import "./providers-BAwPjeCy.js";
|
|
4
4
|
import "./php-reader-DuZ0Hyl_.js";
|
|
5
|
-
import { o as splitList, t as createCommand } from "./_shared-
|
|
5
|
+
import { o as splitList, t as createCommand } from "./_shared-Dn15c_g9.js";
|
|
6
6
|
//#region src/commands/scan.ts
|
|
7
7
|
var scan_default = createCommand({
|
|
8
8
|
name: "scan",
|
|
@@ -28,4 +28,4 @@ var scan_default = createCommand({
|
|
|
28
28
|
//#endregion
|
|
29
29
|
export { scan_default as default };
|
|
30
30
|
|
|
31
|
-
//# sourceMappingURL=scan-
|
|
31
|
+
//# sourceMappingURL=scan-LeU4xG0G.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scan-
|
|
1
|
+
{"version":3,"file":"scan-LeU4xG0G.js","names":[],"sources":["../src/commands/scan.ts"],"sourcesContent":["import { createCommand, splitList } from './_shared.js'\nimport { scanCodeUsage } from '../core/operations.js'\n\nexport default createCommand({\n name: 'scan',\n description: 'Scan source code for translation key usage (file paths + line numbers)',\n args: {\n keys: { type: 'string', description: 'Comma-separated keys to filter by' },\n outputFile: { type: 'string', description: 'Write full output to file, return summary only' },\n },\n async run(args) {\n return scanCodeUsage({\n keys: splitList(args.keys),\n projectDir: args.projectDir,\n outputFile: args.outputFile,\n })\n },\n})\n"],"mappings":";;;;;;AAGA,IAAA,eAAe,cAAc;CAC3B,MAAM;CACN,aAAa;CACb,MAAM;EACJ,MAAM;GAAE,MAAM;GAAU,aAAa;GAAqC;EAC1E,YAAY;GAAE,MAAM;GAAU,aAAa;GAAkD;EAC9F;CACD,MAAM,IAAI,MAAM;AACd,SAAO,cAAc;GACnB,MAAM,UAAU,KAAK,KAAK;GAC1B,YAAY,KAAK;GACjB,YAAY,KAAK;GAClB,CAAC;;CAEL,CAAC"}
|
|
@@ -2,7 +2,7 @@ import "./stdout-guard-sJHFWVem.js";
|
|
|
2
2
|
import { b as searchTranslations } from "./operations-BCJd7in3.js";
|
|
3
3
|
import "./providers-BAwPjeCy.js";
|
|
4
4
|
import "./php-reader-DuZ0Hyl_.js";
|
|
5
|
-
import { t as createCommand } from "./_shared-
|
|
5
|
+
import { t as createCommand } from "./_shared-Dn15c_g9.js";
|
|
6
6
|
//#region src/commands/search.ts
|
|
7
7
|
var search_default = createCommand({
|
|
8
8
|
name: "search",
|
|
@@ -46,4 +46,4 @@ var search_default = createCommand({
|
|
|
46
46
|
//#endregion
|
|
47
47
|
export { search_default as default };
|
|
48
48
|
|
|
49
|
-
//# sourceMappingURL=search-
|
|
49
|
+
//# sourceMappingURL=search-CHdDywqc.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-
|
|
1
|
+
{"version":3,"file":"search-CHdDywqc.js","names":[],"sources":["../src/commands/search.ts"],"sourcesContent":["import { createCommand } from './_shared.js'\nimport { searchTranslations } from '../core/operations.js'\n\nexport default createCommand({\n name: 'search',\n description: 'Search translation files by key or value',\n args: {\n query: { type: 'string', description: 'Search query (matched case-insensitively against keys and values)', required: true },\n in: { type: 'string', description: 'Where to search: keys, values, or both', default: 'both' },\n layer: { type: 'string', description: 'Filter to a specific layer' },\n locale: { type: 'string', description: 'Filter to a specific locale' },\n },\n async run(args) {\n const validSearchIn = ['keys', 'values', 'both'] as const\n const searchIn = validSearchIn.includes(args.in as typeof validSearchIn[number])\n ? (args.in as 'keys' | 'values' | 'both')\n : undefined\n if (args.in && !searchIn) {\n throw new Error(`Invalid --in value: \"${args.in}\". Must be one of: keys, values, both`)\n }\n return searchTranslations({\n query: args.query,\n searchIn,\n layer: args.layer,\n locale: args.locale,\n projectDir: args.projectDir,\n })\n },\n})\n"],"mappings":";;;;;;AAGA,IAAA,iBAAe,cAAc;CAC3B,MAAM;CACN,aAAa;CACb,MAAM;EACJ,OAAO;GAAE,MAAM;GAAU,aAAa;GAAqE,UAAU;GAAM;EAC3H,IAAI;GAAE,MAAM;GAAU,aAAa;GAA0C,SAAS;GAAQ;EAC9F,OAAO;GAAE,MAAM;GAAU,aAAa;GAA8B;EACpE,QAAQ;GAAE,MAAM;GAAU,aAAa;GAA+B;EACvE;CACD,MAAM,IAAI,MAAM;EAEd,MAAM,WADgB;GAAC;GAAQ;GAAU;GAAO,CACjB,SAAS,KAAK,GAAmC,GAC3E,KAAK,KACN,KAAA;AACJ,MAAI,KAAK,MAAM,CAAC,SACd,OAAM,IAAI,MAAM,wBAAwB,KAAK,GAAG,uCAAuC;AAEzF,SAAO,mBAAmB;GACxB,OAAO,KAAK;GACZ;GACA,OAAO,KAAK;GACZ,QAAQ,KAAK;GACb,YAAY,KAAK;GAClB,CAAC;;CAEL,CAAC"}
|
|
@@ -2,7 +2,7 @@ import "./stdout-guard-sJHFWVem.js";
|
|
|
2
2
|
import { o as getTranslationStatus } from "./operations-BCJd7in3.js";
|
|
3
3
|
import "./providers-BAwPjeCy.js";
|
|
4
4
|
import "./php-reader-DuZ0Hyl_.js";
|
|
5
|
-
import { t as createCommand } from "./_shared-
|
|
5
|
+
import { t as createCommand } from "./_shared-Dn15c_g9.js";
|
|
6
6
|
//#region src/commands/status.ts
|
|
7
7
|
var status_default = createCommand({
|
|
8
8
|
name: "status",
|
|
@@ -42,4 +42,4 @@ var status_default = createCommand({
|
|
|
42
42
|
//#endregion
|
|
43
43
|
export { status_default as default };
|
|
44
44
|
|
|
45
|
-
//# sourceMappingURL=status-
|
|
45
|
+
//# sourceMappingURL=status-CwI94d_R.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status-
|
|
1
|
+
{"version":3,"file":"status-CwI94d_R.js","names":[],"sources":["../src/commands/status.ts"],"sourcesContent":["import { createCommand } from './_shared.js'\nimport { getTranslationStatus } from '../core/operations.js'\n\nexport default createCommand({\n name: 'status',\n description: 'Translation coverage per locale and per layer, with an overall completion percentage',\n args: {\n layer: { type: 'string', description: 'Filter to a specific layer' },\n ref: { type: 'string', description: 'Reference locale (default: project default)' },\n outputFile: { type: 'string', description: 'Write the full breakdown to this file path and return only a summary' },\n failUnder: { type: 'string', description: 'Exit 2 when overall completion is below this percentage (CI gate)' },\n },\n // Threshold comes from the flag's own value; `direction: below` is what\n // makes this a floor rather than a ceiling (see resolveExitCode).\n gates: [{ flag: 'failUnder', counter: 'completionPercent', direction: 'below' }],\n async run(args) {\n return getTranslationStatus({\n layer: args.layer,\n referenceLocale: args.ref,\n projectDir: args.projectDir,\n outputFile: args.outputFile,\n })\n },\n})\n"],"mappings":";;;;;;AAGA,IAAA,iBAAe,cAAc;CAC3B,MAAM;CACN,aAAa;CACb,MAAM;EACJ,OAAO;GAAE,MAAM;GAAU,aAAa;GAA8B;EACpE,KAAK;GAAE,MAAM;GAAU,aAAa;GAA+C;EACnF,YAAY;GAAE,MAAM;GAAU,aAAa;GAAwE;EACnH,WAAW;GAAE,MAAM;GAAU,aAAa;GAAqE;EAChH;CAGD,OAAO,CAAC;EAAE,MAAM;EAAa,SAAS;EAAqB,WAAW;EAAS,CAAC;CAChF,MAAM,IAAI,MAAM;AACd,SAAO,qBAAqB;GAC1B,OAAO,KAAK;GACZ,iBAAiB,KAAK;GACtB,YAAY,KAAK;GACjB,YAAY,KAAK;GAClB,CAAC;;CAEL,CAAC"}
|
|
@@ -2,7 +2,7 @@ import "./stdout-guard-sJHFWVem.js";
|
|
|
2
2
|
import { C as translateMissing } from "./operations-BCJd7in3.js";
|
|
3
3
|
import "./providers-BAwPjeCy.js";
|
|
4
4
|
import "./php-reader-DuZ0Hyl_.js";
|
|
5
|
-
import { a as resolveProviderTranslateFn, i as providerArgs, o as splitList, t as createCommand } from "./_shared-
|
|
5
|
+
import { a as resolveProviderTranslateFn, i as providerArgs, o as splitList, t as createCommand } from "./_shared-Dn15c_g9.js";
|
|
6
6
|
//#region src/commands/translate.ts
|
|
7
7
|
/**
|
|
8
8
|
* Locales that lost at least one key, sorted for a stable message.
|
|
@@ -89,4 +89,4 @@ var translate_default = createCommand({
|
|
|
89
89
|
//#endregion
|
|
90
90
|
export { translate_default as default };
|
|
91
91
|
|
|
92
|
-
//# sourceMappingURL=translate-
|
|
92
|
+
//# sourceMappingURL=translate-Cf3npNpr.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"translate-
|
|
1
|
+
{"version":3,"file":"translate-Cf3npNpr.js","names":[],"sources":["../src/commands/translate.ts"],"sourcesContent":["import { createCommand, splitList, providerArgs, resolveProviderTranslateFn } from './_shared.js'\nimport { translateMissing } from '../core/operations.js'\nimport type { TranslateMissingOutcome, TranslateMissingResult } from '../core/types.js'\n\n/**\n * Locales that lost at least one key, sorted for a stable message.\n * A bare `totalFailed: 141` says nothing about which languages shipped\n * incomplete — this is what makes the count actionable in a CI log.\n * Reads the full and the compact shapes, since either may reach here.\n */\nexport function localesWithFailures(result: TranslateMissingOutcome): string[] {\n const perLayer: TranslateMissingResult[] = 'layers' in result\n ? Object.values(result.layers)\n : [result]\n\n const locales = new Set<string>()\n for (const layer of perLayer) {\n for (const [locale, entry] of Object.entries(layer.results ?? {})) {\n if (entry.failed.length > 0) locales.add(locale)\n }\n for (const entry of layer.summary.byLocale ?? []) {\n if (entry.failed > 0) locales.add(entry.locale)\n }\n }\n return [...locales].sort()\n}\n\nexport default createCommand({\n name: 'translate',\n description: 'Find missing translations and translate them via LLM. Requires --provider and --model for auto-translation.',\n args: {\n layer: { type: 'string', description: 'Layer name (default: all locale-backed layers, aggregated)' },\n ref: { type: 'string', description: 'Reference locale (default: project default)' },\n targets: { type: 'string', description: 'Comma-separated target locales (default: all except ref)' },\n keys: { type: 'string', description: 'Comma-separated keys to translate (default: all missing)' },\n batchSize: { type: 'string', description: 'Batch size (default: 50)' },\n ...providerArgs,\n dryRun: { type: 'boolean', description: 'Preview what would be translated', default: false },\n failOnFailed: { type: 'boolean', description: 'Exit 2 when any key failed to translate (CI gate)', default: false },\n },\n // Without this gate a partly failed run is indistinguishable from a clean one:\n // isTotalFailure only reports exit 1 when NOTHING was translated, so a run that\n // wrote 795 keys and lost 141 exits 0 and its partial result gets committed.\n // Opt-in rather than default, because providers fail transiently and a red\n // pipeline on every flake is a red pipeline nobody reads.\n gates: [{ flag: 'failOnFailed', counter: 'totalFailed', threshold: 0 }],\n async run(args) {\n let batchSize: number | undefined\n if (args.batchSize) {\n const num = Number(args.batchSize)\n if (!Number.isInteger(num) || num <= 0 || String(num) !== args.batchSize) {\n throw new Error(`Invalid --batchSize: \"${args.batchSize}\". Must be a positive integer`)\n }\n batchSize = num\n }\n\n const translateFn = await resolveProviderTranslateFn(args)\n\n const result = await translateMissing({\n layer: args.layer,\n referenceLocale: args.ref,\n targetLocales: splitList(args.targets),\n keys: splitList(args.keys),\n batchSize,\n dryRun: args.dryRun,\n projectDir: args.projectDir,\n translateFn,\n })\n\n // CLI-owned guidance: agent mode here just means no provider was given.\n // Single-layer and all-layers results both carry summary.mode, so this\n // needs no narrowing.\n if (result.summary.mode === 'agent') {\n result.summary.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 } else if (result.summary.totalFailed > 0) {\n // A partial failure exits 0 unless --fail-on-failed was passed, so without\n // this the only trace of it is a count nobody reads. Re-running is the\n // fix: the keys are still missing, so the next run retries them.\n const affected = localesWithFailures(result)\n result.summary.message = `${result.summary.totalFailed} key(s) failed to translate`\n + (affected.length > 0 ? ` (locales: ${affected.join(', ')})` : '')\n + '. Those keys remain missing — re-run to retry them. '\n + 'Pass --fail-on-failed to make this exit 2 in CI.'\n }\n return result\n },\n})\n"],"mappings":";;;;;;;;;;;;AAUA,SAAgB,oBAAoB,QAA2C;CAC7E,MAAM,WAAqC,YAAY,SACnD,OAAO,OAAO,OAAO,OAAO,GAC5B,CAAC,OAAO;CAEZ,MAAM,0BAAU,IAAI,KAAa;AACjC,MAAK,MAAM,SAAS,UAAU;AAC5B,OAAK,MAAM,CAAC,QAAQ,UAAU,OAAO,QAAQ,MAAM,WAAW,EAAE,CAAC,CAC/D,KAAI,MAAM,OAAO,SAAS,EAAG,SAAQ,IAAI,OAAO;AAElD,OAAK,MAAM,SAAS,MAAM,QAAQ,YAAY,EAAE,CAC9C,KAAI,MAAM,SAAS,EAAG,SAAQ,IAAI,MAAM,OAAO;;AAGnD,QAAO,CAAC,GAAG,QAAQ,CAAC,MAAM;;AAG5B,IAAA,oBAAe,cAAc;CAC3B,MAAM;CACN,aAAa;CACb,MAAM;EACJ,OAAO;GAAE,MAAM;GAAU,aAAa;GAA8D;EACpG,KAAK;GAAE,MAAM;GAAU,aAAa;GAA+C;EACnF,SAAS;GAAE,MAAM;GAAU,aAAa;GAA4D;EACpG,MAAM;GAAE,MAAM;GAAU,aAAa;GAA4D;EACjG,WAAW;GAAE,MAAM;GAAU,aAAa;GAA4B;EACtE,GAAG;EACH,QAAQ;GAAE,MAAM;GAAW,aAAa;GAAoC,SAAS;GAAO;EAC5F,cAAc;GAAE,MAAM;GAAW,aAAa;GAAqD,SAAS;GAAO;EACpH;CAMD,OAAO,CAAC;EAAE,MAAM;EAAgB,SAAS;EAAe,WAAW;EAAG,CAAC;CACvE,MAAM,IAAI,MAAM;EACd,IAAI;AACJ,MAAI,KAAK,WAAW;GAClB,MAAM,MAAM,OAAO,KAAK,UAAU;AAClC,OAAI,CAAC,OAAO,UAAU,IAAI,IAAI,OAAO,KAAK,OAAO,IAAI,KAAK,KAAK,UAC7D,OAAM,IAAI,MAAM,yBAAyB,KAAK,UAAU,+BAA+B;AAEzF,eAAY;;EAGd,MAAM,cAAc,MAAM,2BAA2B,KAAK;EAE1D,MAAM,SAAS,MAAM,iBAAiB;GACpC,OAAO,KAAK;GACZ,iBAAiB,KAAK;GACtB,eAAe,UAAU,KAAK,QAAQ;GACtC,MAAM,UAAU,KAAK,KAAK;GAC1B;GACA,QAAQ,KAAK;GACb,YAAY,KAAK;GACjB;GACD,CAAC;AAKF,MAAI,OAAO,QAAQ,SAAS,QAC1B,QAAO,QAAQ,UAAU;WAGhB,OAAO,QAAQ,cAAc,GAAG;GAIzC,MAAM,WAAW,oBAAoB,OAAO;AAC5C,UAAO,QAAQ,UAAU,GAAG,OAAO,QAAQ,YAAY,gCAClD,SAAS,SAAS,IAAI,cAAc,SAAS,KAAK,KAAK,CAAC,KAAK,MAC9D;;AAGN,SAAO;;CAEV,CAAC"}
|
|
@@ -2,7 +2,7 @@ import "./stdout-guard-sJHFWVem.js";
|
|
|
2
2
|
import { S as translateKey } from "./operations-BCJd7in3.js";
|
|
3
3
|
import "./providers-BAwPjeCy.js";
|
|
4
4
|
import "./php-reader-DuZ0Hyl_.js";
|
|
5
|
-
import { a as resolveProviderTranslateFn, i as providerArgs, o as splitList, t as createCommand } from "./_shared-
|
|
5
|
+
import { a as resolveProviderTranslateFn, i as providerArgs, o as splitList, t as createCommand } from "./_shared-Dn15c_g9.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-Bg_8B6c_.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"translate-key-
|
|
1
|
+
{"version":3,"file":"translate-key-Bg_8B6c_.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"}
|
|
@@ -2,7 +2,7 @@ import "./stdout-guard-sJHFWVem.js";
|
|
|
2
2
|
import { f as updateTranslations } from "./operations-BCJd7in3.js";
|
|
3
3
|
import "./providers-BAwPjeCy.js";
|
|
4
4
|
import "./php-reader-DuZ0Hyl_.js";
|
|
5
|
-
import { r as parseJsonArg, t as createCommand } from "./_shared-
|
|
5
|
+
import { r as parseJsonArg, t as createCommand } from "./_shared-Dn15c_g9.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-DNv-dU1U.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-
|
|
1
|
+
{"version":3,"file":"update-DNv-dU1U.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"}
|
|
@@ -2,7 +2,7 @@ import "./stdout-guard-sJHFWVem.js";
|
|
|
2
2
|
import { p as writeTranslations } from "./operations-BCJd7in3.js";
|
|
3
3
|
import "./providers-BAwPjeCy.js";
|
|
4
4
|
import "./php-reader-DuZ0Hyl_.js";
|
|
5
|
-
import { r as parseJsonArg, t as createCommand } from "./_shared-
|
|
5
|
+
import { r as parseJsonArg, t as createCommand } from "./_shared-Dn15c_g9.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-DUwMSc75.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write-
|
|
1
|
+
{"version":3,"file":"write-DUwMSc75.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": "4.
|
|
3
|
+
"version": "4.10.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",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-BtSA6-iT.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/llm/providers.ts","../src/config/project-config.ts"],"sourcesContent":[],"mappings":"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"}
|
|
File without changes
|