@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 +48 -2
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +28 -13
- package/dist/index.js.map +1 -1
- package/dist/utils.d.ts +3 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +26 -3
- package/dist/utils.js.map +1 -1
- package/package.json +4 -3
package/README.md
CHANGED
|
@@ -1,5 +1,51 @@
|
|
|
1
1
|
# @svelte-i18n/cli
|
|
2
2
|
|
|
3
|
-
CLI
|
|
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
|
-
|
|
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
package/dist/index.d.ts.map
CHANGED
|
@@ -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
|
|
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
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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,
|
|
25
|
-
if (
|
|
26
|
-
return
|
|
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(() =>
|
|
36
|
-
.catch((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":";AACA,OAAO,
|
|
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
|
package/dist/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"
|
|
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
|
-
|
|
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
|
|
28
|
-
return
|
|
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":"
|
|
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.
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"description": "CLI tool for svelte-i18n",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
|
-
"
|
|
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
|
|
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",
|