@svelte-i18n/cli 0.1.1 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,5 +1,51 @@
1
1
  # @svelte-i18n/cli
2
2
 
3
- CLI program to generate typescript types for the @svelte-i18n/core package.
3
+ CLI tool for [@svelte-i18n/core](https://github.com/svelte-intl/core). Generates a TypeScript type definition file from a flat JSON translation file, giving you full type-safety and autocompletion on your translation keys.
4
4
 
5
- WIP
5
+ ## Installation
6
+
7
+ ```bash
8
+ npx @svelte-i18n/cli generate-types --input <path-or-url>
9
+ ```
10
+
11
+ Or install globally:
12
+
13
+ ```bash
14
+ npm install -g @svelte-i18n/cli
15
+ svelte-i18n generate-types --input <path-or-url>
16
+ ```
17
+
18
+ ## Commands
19
+
20
+ ### `generate-types`
21
+
22
+ Reads a flat JSON translation file (local or remote) and generates an `I18nDictionary` type containing all the translation keys.
23
+
24
+ ```bash
25
+ svelte-i18n generate-types --input <path-or-url> [--output <path>]
26
+ ```
27
+
28
+ | Option | Description | Default |
29
+ | ----------------- | ----------------------------------- | ------------------- |
30
+ | `--input <path>` | Path to a local JSON file or a URL | _(required)_ |
31
+ | `--output <path>` | Path for the generated `.d.ts` file | `./i18n-types.d.ts` |
32
+
33
+ **Examples:**
34
+
35
+ ```bash
36
+ # From a local file
37
+ svelte-i18n generate-types --input src/locales/en.json
38
+
39
+ # From a URL (e.g. a dev server endpoint)
40
+ svelte-i18n generate-types --input https://example.com/api/locales/en --output src/i18n-types.d.ts
41
+ ```
42
+
43
+ **Example output** (`i18n-types.d.ts`):
44
+
45
+ ```ts
46
+ export type I18nDictionary = {
47
+ Dashboard: string;
48
+ 'Welcome, {firstName} {lastName}!': string;
49
+ // ...
50
+ };
51
+ ```
package/dist/index.d.ts CHANGED
@@ -1,3 +1,6 @@
1
1
  #!/usr/bin/env node
2
- export {};
2
+ import { Command } from 'commander';
3
+ import { z } from 'zod';
4
+ export declare const program: Command;
5
+ export declare const schema: z.ZodRecord<z.ZodString, z.ZodString>;
3
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,OAAO,SAAgB,CAAC;AACrC,eAAO,MAAM,MAAM,uCAAmC,CAAC"}
package/dist/index.js CHANGED
@@ -1,29 +1,43 @@
1
1
  #!/usr/bin/env node
2
- import { Command } from 'commander';
3
2
  import PACKAGE from '../package.json' with { type: 'json' };
4
- import { importJSON, fetchJSON, isURL, t } from './utils.js';
3
+ import pc from 'picocolors';
4
+ import { Command } from 'commander';
5
+ import { importJSON, fetchJSON, isURL, t, error, success, spinner } from './utils.js';
5
6
  import { z } from 'zod';
6
7
  import { writeFile, mkdir } from 'node:fs/promises';
7
8
  import { dirname } from 'node:path';
8
- const program = new Command();
9
- const schema = z.record(z.string(), z.string());
9
+ export const program = new Command();
10
+ export const schema = z.record(z.string(), z.string());
10
11
  // prettier-ignore
11
12
  program.name('svelte-i18n')
12
13
  .description('CLI tool for svelte-i18n')
13
14
  .version(PACKAGE.version);
15
+ program.configureHelp({
16
+ styleTitle: (str) => pc.bold(str),
17
+ styleCommandText: (str) => pc.cyan(str),
18
+ styleCommandDescription: (str) => pc.magenta(str),
19
+ styleDescriptionText: (str) => pc.italic(str),
20
+ styleOptionText: (str) => pc.green(str),
21
+ styleArgumentText: (str) => pc.yellow(str),
22
+ styleSubcommandText: (str) => pc.blue(str),
23
+ });
14
24
  program
15
25
  .command('generate-types')
16
26
  .description('Generate TypeScript types for translations')
17
27
  .option('--input <path>', 'Path to the translations file (e.g., src/locales/en.json) or a URL (e.g., https://example.com/locales/en.json)')
18
28
  .option('--output <path>', 'Path to the output file (e.g., src/locales/en.d.ts)', './i18n-types.d.ts')
19
29
  .action(async ({ input, output }) => {
20
- const [json, error] = await t(() => (isURL(input) ? fetchJSON(input) : importJSON(input)));
21
- if (error) {
22
- return program.error(`Failed to load JSON from ${input}: ${error instanceof Error ? error.message : String(error)}`);
30
+ if (!input) {
31
+ return error('--input option is required. Please provide a path to the translations file or a URL.');
32
+ }
33
+ const stopSpinner = spinner('Loading and validating JSON...');
34
+ const [json, err] = await t(() => (isURL(input) ? fetchJSON(input) : importJSON(input)));
35
+ if (err) {
36
+ return error(`Failed to load JSON from ${input}: ${err instanceof Error ? err.message : String(err)}`);
23
37
  }
24
- const [validatedJson, validationError] = await t(() => schema.parse(json));
25
- if (validationError || !validatedJson) {
26
- return program.error(`Failed to validate JSON from ${input}: ${validationError instanceof Error ? validationError.message : String(validationError)}`);
38
+ const [validatedJson, validationErr] = await t(() => schema.parse(json));
39
+ if (validationErr || !validatedJson) {
40
+ return error(`Failed to validate JSON from ${input}: ${validationErr instanceof Error ? validationErr.message : String(validationErr)}`);
27
41
  }
28
42
  const keys = Object.keys(validatedJson);
29
43
  const typeName = 'I18nDictionary';
@@ -31,9 +45,10 @@ program
31
45
  .map((key) => ` '${key.replace(/'/g, "\\'")}': string;`)
32
46
  .join('\n')}\n};\n`;
33
47
  await mkdir(dirname(output), { recursive: true });
34
- writeFile(output, typeDefinition, {})
35
- .then(() => console.log('Type definitions generated successfully in i18n-types.d.ts'))
36
- .catch((err) => program.error(`Failed to write type definitions: ${err instanceof Error ? err.message : String(err)}`));
48
+ writeFile(output, typeDefinition)
49
+ .then(() => success('Type definitions generated successfully in ' + output))
50
+ .catch((err) => error(`Failed to write type definitions: ${err instanceof Error ? err.message : String(err)}`))
51
+ .finally(() => stopSpinner());
37
52
  });
38
53
  program.parse();
39
54
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/utils.d.ts CHANGED
@@ -3,4 +3,7 @@ export declare function t<T>(fn: () => T): MaybePromise<[T, null] | [null, unkno
3
3
  export declare function isURL(str: string): boolean;
4
4
  export declare function importJSON(path: string): Promise<any>;
5
5
  export declare function fetchJSON(url: string): Promise<any>;
6
+ export declare const error: (message: string) => never;
7
+ export declare const success: (message: string) => void;
8
+ export declare const spinner: (message: string) => () => void;
6
9
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAE7C,wBAAgB,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAW3E;AAED,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAO1C;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAE3D;AAED,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAGzD"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAE7C,wBAAgB,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAW3E;AAED,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAO1C;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAG3D;AAED,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAGzD;AAED,eAAO,MAAM,KAAK,GAAI,SAAS,MAAM,UAEpC,CAAC;AAEF,eAAO,MAAM,OAAO,GAAI,SAAS,MAAM,SAEtC,CAAC;AAEF,eAAO,MAAM,OAAO,GAAI,SAAS,MAAM,eAWtC,CAAC"}
package/dist/utils.js CHANGED
@@ -1,3 +1,7 @@
1
+ import pc from 'picocolors';
2
+ import { program } from './index.js';
3
+ import { resolve } from 'node:path';
4
+ import { readFile } from 'node:fs/promises';
1
5
  export function t(fn) {
2
6
  try {
3
7
  const result = fn();
@@ -21,10 +25,29 @@ export function isURL(str) {
21
25
  }
22
26
  }
23
27
  export async function importJSON(path) {
24
- return (await import(path, { with: { type: 'json' } })).default;
28
+ const abs = resolve(process.cwd(), path);
29
+ return JSON.parse(await readFile(abs, 'utf-8'));
25
30
  }
26
31
  export async function fetchJSON(url) {
27
- const result = await fetch(url);
28
- return await result.json();
32
+ const res = await fetch(url);
33
+ return res.json();
29
34
  }
35
+ export const error = (message) => {
36
+ return program.error(pc.red(`❌ Error: ${message}`));
37
+ };
38
+ export const success = (message) => {
39
+ console.log(pc.bold(pc.green(`✅ Success: ${message}`)));
40
+ };
41
+ export const spinner = (message) => {
42
+ const frames = ['⣾', '⣷', '⣯', '⣟', '⣻', '⣽', '⣾'];
43
+ let i = 0;
44
+ const interval = setInterval(() => {
45
+ process.stdout.write(`\r${pc.greenBright(frames[i])} ${pc.cyan(message)}`);
46
+ i = (i + 1) % frames.length;
47
+ }, 100);
48
+ return () => {
49
+ clearInterval(interval);
50
+ process.stdout.write('\r');
51
+ };
52
+ };
30
53
  //# sourceMappingURL=utils.js.map
package/dist/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,CAAC,CAAI,EAAW;IAC5B,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,EAAE,EAAE,CAAC;QACpB,OAAO,MAAM,YAAY,OAAO;YAC5B,CAAC,CAAC,MAAM;iBACD,IAAI,CAAC,CAAC,GAAG,EAAa,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;iBACrC,KAAK,CAAC,CAAC,GAAG,EAAmB,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACnD,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACzB,CAAC;AACL,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,GAAW;IAC7B,IAAI,CAAC;QACD,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QACb,OAAO,IAAI,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,KAAK,CAAC;IACjB,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAY;IACzC,OAAO,CAAC,MAAM,MAAM,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;AACpE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAW;IACvC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAChC,OAAO,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;AAC/B,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAI5C,MAAM,UAAU,CAAC,CAAI,EAAW;IAC5B,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,EAAE,EAAE,CAAC;QACpB,OAAO,MAAM,YAAY,OAAO;YAC5B,CAAC,CAAC,MAAM;iBACD,IAAI,CAAC,CAAC,GAAG,EAAa,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;iBACrC,KAAK,CAAC,CAAC,GAAG,EAAmB,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACnD,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACzB,CAAC;AACL,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,GAAW;IAC7B,IAAI,CAAC;QACD,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QACb,OAAO,IAAI,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,KAAK,CAAC;IACjB,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAY;IACzC,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;IACzC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAW;IACvC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;AACtB,CAAC;AAED,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,OAAe,EAAE,EAAE;IACrC,OAAO,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,YAAY,OAAO,EAAE,CAAC,CAAC,CAAC;AACxD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,OAAe,EAAE,EAAE;IACvC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,OAAe,EAAE,EAAE;IACvC,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACnD,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;QAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC3E,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;IAChC,CAAC,EAAE,GAAG,CAAC,CAAC;IACR,OAAO,GAAG,EAAE;QACR,aAAa,CAAC,QAAQ,CAAC,CAAC;QACxB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC,CAAC;AACN,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@svelte-i18n/cli",
3
- "version": "0.1.1",
3
+ "version": "1.0.0",
4
4
  "description": "CLI tool for svelte-i18n",
5
5
  "type": "module",
6
6
  "bin": {
7
- "@svelte-i18n/cli": "./dist/index.js"
7
+ "svelte-i18n": "./dist/index.js"
8
8
  },
9
9
  "repository": {
10
10
  "type": "git",
@@ -16,6 +16,7 @@
16
16
  ],
17
17
  "dependencies": {
18
18
  "commander": "^14.0.3",
19
+ "picocolors": "^1.1.1",
19
20
  "zod": "^4.3.6"
20
21
  },
21
22
  "devDependencies": {
@@ -31,7 +32,7 @@
31
32
  "license": "MIT",
32
33
  "scripts": {
33
34
  "build": "tsc",
34
- "dev": "tsx watch src/index.ts generate-types --input http://localhost:5173/api/locales/en --output ./.i18n/types.ts",
35
+ "dev": "tsx watch src/index.ts generate-types",
35
36
  "start": "node dist/index.js",
36
37
  "format": "prettier --write src",
37
38
  "format:check": "prettier --check src",