@zerolith/i18n 0.1.0-alpha.1 → 0.1.0-alpha.10
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 +8 -2
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +66 -8
- package/dist/cli.js.map +1 -1
- package/dist/compile.d.ts +6 -1
- package/dist/compile.d.ts.map +1 -1
- package/dist/compile.js +179 -85
- package/dist/compile.js.map +1 -1
- package/dist/index.d.ts +14 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +28 -14
- package/dist/index.js.map +1 -1
- package/dist/production/compile.js +167 -0
- package/dist/production/compile.js.map +1 -0
- package/dist/production/index.js +2 -0
- package/dist/production/index.js.map +1 -0
- package/package.json +9 -7
- package/src/cli.ts +87 -8
- package/src/compile.ts +203 -86
- package/src/index.ts +43 -16
package/README.md
CHANGED
|
@@ -16,9 +16,15 @@ format.number(1234.5, { style: "currency", currency: "EUR" });
|
|
|
16
16
|
- `formatters` wraps `Intl.NumberFormat`, `DateTimeFormat`, `RelativeTimeFormat`, `ListFormat`, and `PluralRules`, cached per locale and options, reading the locale signal when called.
|
|
17
17
|
- `zerolith-i18n` compiles MessageFormat 2 catalogs (`messages/en.json`) into one module per locale, with a function per message and typed arguments, so a locale is one chunk and no message runtime is loaded.
|
|
18
18
|
|
|
19
|
-
The guide is
|
|
19
|
+
The guide is on the [docs site](https://zerolith.dev/guide/i18n/).
|
|
20
20
|
|
|
21
|
-
Status:
|
|
21
|
+
Status: alpha. Install with `npm install @zerolith/i18n@alpha`; the API may change before 1.0.
|
|
22
|
+
|
|
23
|
+
## Documentation
|
|
24
|
+
|
|
25
|
+
- The [internationalization guide](https://zerolith.dev/guide/i18n/) explains it with examples that run as tests.
|
|
26
|
+
- The [reference](https://zerolith.dev/reference/zerolith-i18n/) lists every export, generated from the source.
|
|
27
|
+
- New to zerolith? The [tutorial](https://zerolith.dev/learn/) builds an app step by step, and the [playground](https://zerolith.dev/playground/) runs code in the browser.
|
|
22
28
|
|
|
23
29
|
## License
|
|
24
30
|
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAwGA,2EAA2E;AAC3E,wBAAsB,IAAI,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA8EnE"}
|
package/dist/cli.js
CHANGED
|
@@ -6,9 +6,41 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { mkdir, readFile, readdir, writeFile } from "node:fs/promises";
|
|
8
8
|
import { basename, join } from "node:path";
|
|
9
|
+
import { realpathSync } from "node:fs";
|
|
9
10
|
import process from "node:process";
|
|
11
|
+
import { pathToFileURL } from "node:url";
|
|
10
12
|
import { compileIndex, compileMessages, messageNames } from "./compile.js";
|
|
11
13
|
const USAGE = "usage: zerolith-i18n <folder> [--out <folder>] [--js] [--strict]\n";
|
|
14
|
+
/** The locale a catalog's file name gives, refusing a name that is not a BCP 47 language tag, such as `en_US.json`. */
|
|
15
|
+
function localeOf(file) {
|
|
16
|
+
const locale = basename(file, ".json");
|
|
17
|
+
try {
|
|
18
|
+
Intl.getCanonicalLocales(locale);
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
throw new Error(`${locale} is not a language tag; name the file as en.json or pt-BR.json`);
|
|
22
|
+
}
|
|
23
|
+
return locale;
|
|
24
|
+
}
|
|
25
|
+
/** A catalog's messages, refusing a file that is not a JSON object of strings. */
|
|
26
|
+
function catalogOf(text) {
|
|
27
|
+
const parsed = JSON.parse(text);
|
|
28
|
+
if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
29
|
+
throw new Error("a catalog is a JSON object of messages");
|
|
30
|
+
}
|
|
31
|
+
for (const [key, value] of Object.entries(parsed)) {
|
|
32
|
+
if (typeof value !== "string") {
|
|
33
|
+
throw new Error(`the message "${key}" is not a string`);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return parsed;
|
|
37
|
+
}
|
|
38
|
+
/** Reports why a catalog cannot be compiled, naming its file, and gives the exit code; nothing has been written. */
|
|
39
|
+
function failure(file, error) {
|
|
40
|
+
const message = error instanceof Error ? error.message.replace(/^zerolith\/i18n: /, "") : String(error);
|
|
41
|
+
process.stderr.write(`zerolith-i18n: ${file}: ${message}\n`);
|
|
42
|
+
return 1;
|
|
43
|
+
}
|
|
12
44
|
function parse(argv) {
|
|
13
45
|
const parsed = { folder: undefined, out: undefined, javascript: false, strict: false };
|
|
14
46
|
for (let index = 0; index < argv.length; index++) {
|
|
@@ -59,10 +91,21 @@ export async function main(argv) {
|
|
|
59
91
|
return 1;
|
|
60
92
|
}
|
|
61
93
|
const out = parsed.out ?? parsed.folder;
|
|
62
|
-
await mkdir(out, { recursive: true });
|
|
63
94
|
const language = parsed.javascript ? "js" : "ts";
|
|
64
95
|
const folder = parsed.folder;
|
|
65
|
-
const
|
|
96
|
+
const read = await Promise.all(files.map(async (file) => {
|
|
97
|
+
try {
|
|
98
|
+
return { file, locale: localeOf(file), catalog: catalogOf(await readFile(join(folder, file), "utf8")) };
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
return { file, error };
|
|
102
|
+
}
|
|
103
|
+
}));
|
|
104
|
+
const unreadable = read.find((entry) => "error" in entry);
|
|
105
|
+
if (unreadable !== undefined) {
|
|
106
|
+
return failure(unreadable.file, unreadable.error);
|
|
107
|
+
}
|
|
108
|
+
const catalogs = new Map(read.map((entry) => [entry.locale ?? "", entry.catalog ?? {}]));
|
|
66
109
|
const all = new Set();
|
|
67
110
|
for (const catalog of catalogs.values()) {
|
|
68
111
|
for (const name of messageNames(catalog)) {
|
|
@@ -70,7 +113,7 @@ export async function main(argv) {
|
|
|
70
113
|
}
|
|
71
114
|
}
|
|
72
115
|
let missing = 0;
|
|
73
|
-
const
|
|
116
|
+
const modules = new Map();
|
|
74
117
|
for (const [locale, catalog] of catalogs) {
|
|
75
118
|
const present = new Set(messageNames(catalog));
|
|
76
119
|
for (const name of all) {
|
|
@@ -79,15 +122,30 @@ export async function main(argv) {
|
|
|
79
122
|
process.stderr.write(`zerolith-i18n: ${locale} lacks ${name}\n`);
|
|
80
123
|
}
|
|
81
124
|
}
|
|
82
|
-
|
|
83
|
-
|
|
125
|
+
try {
|
|
126
|
+
modules.set(`${locale}.${language}`, compileMessages(locale, catalog, { language, source: `${locale}.json` }).code);
|
|
127
|
+
}
|
|
128
|
+
catch (error) {
|
|
129
|
+
return failure(`${locale}.json`, error);
|
|
130
|
+
}
|
|
84
131
|
}
|
|
85
|
-
|
|
86
|
-
await
|
|
132
|
+
modules.set(`index.${language}`, compileIndex([...catalogs.keys()], { language }));
|
|
133
|
+
await mkdir(out, { recursive: true });
|
|
134
|
+
await Promise.all([...modules].map(([name, code]) => writeFile(join(out, name), code)));
|
|
87
135
|
process.stdout.write(`zerolith-i18n: ${catalogs.size} locale(s), ${all.size} message(s), written to ${out}\n`);
|
|
88
136
|
return missing > 0 && parsed.strict ? 1 : 0;
|
|
89
137
|
}
|
|
90
|
-
|
|
138
|
+
/** True when node started this module, directly or through the bin link npm installs, which it resolves the way node resolves its entry. */
|
|
139
|
+
function started() {
|
|
140
|
+
const entry = process.argv[1];
|
|
141
|
+
try {
|
|
142
|
+
return entry !== undefined && pathToFileURL(realpathSync(entry)).href === import.meta.url;
|
|
143
|
+
}
|
|
144
|
+
catch {
|
|
145
|
+
return false;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
if (started()) {
|
|
91
149
|
process.exitCode = await main(process.argv.slice(2));
|
|
92
150
|
}
|
|
93
151
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;GAIG;AACH,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAgB,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEzF,MAAM,KAAK,GAAG,oEAAoE,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/compile.d.ts
CHANGED
|
@@ -20,6 +20,7 @@ export interface CompileOptions {
|
|
|
20
20
|
}
|
|
21
21
|
/** The result of compiling one catalog. */
|
|
22
22
|
export interface CompiledCatalog {
|
|
23
|
+
/** The generated module's source, TypeScript or JavaScript as the `language` option chose; the `zerolith-i18n` CLI writes it to `<locale>.ts` or `<locale>.js`. */
|
|
23
24
|
code: string;
|
|
24
25
|
/** The message keys as function names, in source order. */
|
|
25
26
|
names: string[];
|
|
@@ -28,7 +29,11 @@ export interface CompiledCatalog {
|
|
|
28
29
|
* Compiles one locale's catalog into a module: `locale`, one exported
|
|
29
30
|
* function per message named from its key, and the `Intl` helpers they
|
|
30
31
|
* share. Each function takes an `args` object typed from the message's
|
|
31
|
-
* placeholders, or nothing when the message has none.
|
|
32
|
+
* placeholders, or nothing when the message has none. A formatter whose
|
|
33
|
+
* options are all literals is a module-level binding created on first use
|
|
34
|
+
* and shared by every message that formats the same way; options that read
|
|
35
|
+
* an argument find their formatter in a cache keyed by the options. Only
|
|
36
|
+
* the helpers the messages use are written.
|
|
32
37
|
*/
|
|
33
38
|
export declare function compileMessages(locale: string, catalog: Catalog, options?: CompileOptions): CompiledCatalog;
|
|
34
39
|
/** The keys of a catalog as function names, for comparing locales. */
|
package/dist/compile.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,wDAAwD;AACxD,MAAM,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAEvD,qCAAqC;AACrC,MAAM,WAAW,cAAc;IAE3B,0GAA0G;IAC1G,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,qCAAqC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,2CAA2C;AAC3C,MAAM,WAAW,eAAe;IAE5B,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,KAAK,EAAE,MAAM,EAAE,CAAC;CACnB;
|
|
1
|
+
{"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,wDAAwD;AACxD,MAAM,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAEvD,qCAAqC;AACrC,MAAM,WAAW,cAAc;IAE3B,0GAA0G;IAC1G,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,qCAAqC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,2CAA2C;AAC3C,MAAM,WAAW,eAAe;IAE5B,mKAAmK;IACnK,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,KAAK,EAAE,MAAM,EAAE,CAAC;CACnB;AA+5BD;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAE,cAAmB,GAAG,eAAe,CA+D/G;AAED,sEAAsE;AACtE,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,EAAE,CAGvD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,GAAE,cAAmB,GAAG,MAAM,CAsB7F"}
|