@zerolith/i18n 0.0.0-stage → 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/LICENSE +201 -0
- package/README.md +30 -2
- package/dist/cli.d.ts +4 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +151 -0
- package/dist/cli.js.map +1 -0
- package/dist/compile.d.ts +46 -0
- package/dist/compile.d.ts.map +1 -0
- package/dist/compile.js +826 -0
- package/dist/compile.js.map +1 -0
- package/dist/index.d.ts +71 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +151 -0
- package/dist/index.js.map +1 -0
- 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 +57 -5
- package/src/cli.ts +203 -0
- package/src/compile.ts +1066 -0
- package/src/index.ts +241 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile.js","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @zerolith/i18n: the locale layer, built on `Intl` with nothing shipped.
|
|
3
|
+
* Negotiation of the request's or the browser's languages against the
|
|
4
|
+
* locales an application supports, the current locale and its direction
|
|
5
|
+
* as signals, the document's `lang` and `dir`, and formatters cached per
|
|
6
|
+
* locale. Message catalogs are compiled ahead of time by
|
|
7
|
+
* `@zerolith/i18n/compile` into plain functions, so no message runtime
|
|
8
|
+
* exists here either.
|
|
9
|
+
*/
|
|
10
|
+
import { type ReadableSignal } from "zerolith";
|
|
11
|
+
/** One entry of an `Accept-Language` header or of `navigator.languages`. */
|
|
12
|
+
export interface LanguageRange {
|
|
13
|
+
/** The language tag, or `*` for any language, as written before any `;` parameters. */
|
|
14
|
+
readonly range: string;
|
|
15
|
+
/** The entry's `q` weight between 0 and 1, rounded to three decimals; 1 when the entry gives none. */
|
|
16
|
+
readonly quality: number;
|
|
17
|
+
}
|
|
18
|
+
/** Parses an `Accept-Language` header into ranges ordered by quality, dropping those with quality zero. */
|
|
19
|
+
export declare function parseAcceptLanguage(header: string | null | undefined): LanguageRange[];
|
|
20
|
+
/**
|
|
21
|
+
* Picks the supported locale that best matches what was requested: an
|
|
22
|
+
* `Accept-Language` header, `navigator.languages`, or one tag. Each range
|
|
23
|
+
* is tried in order of quality, first as an exact match, then by dropping
|
|
24
|
+
* subtags from the end as RFC 4647 lookup does, then as the language of a
|
|
25
|
+
* more specific supported locale, preferring one written in the same
|
|
26
|
+
* script, so `zh-HK` finds `zh-TW` before `zh-CN`. `*` and no match at all
|
|
27
|
+
* give `fallback`.
|
|
28
|
+
*/
|
|
29
|
+
export declare function negotiateLocale(requested: string | readonly string[] | null | undefined, supported: readonly string[], fallback: string): string;
|
|
30
|
+
/** The writing direction of a locale, from `Intl.Locale` where the engine provides it and otherwise from its script, the likely one when the tag names none, as engines decide. */
|
|
31
|
+
export declare function localeDirection(locale: string): "ltr" | "rtl";
|
|
32
|
+
/** Options for `createLocale`. */
|
|
33
|
+
export interface LocaleOptions {
|
|
34
|
+
/** The locales the application ships, most preferred first. */
|
|
35
|
+
supported: readonly string[];
|
|
36
|
+
/** The locale used when nothing matches, one of `supported`. Defaults to the first supported one. */
|
|
37
|
+
fallback?: string;
|
|
38
|
+
/** What to negotiate from at first: an `Accept-Language` header, `navigator.languages`, or a tag. Defaults to the fallback. */
|
|
39
|
+
initial?: string | readonly string[] | null;
|
|
40
|
+
}
|
|
41
|
+
/** The current locale as state. */
|
|
42
|
+
export interface LocaleState {
|
|
43
|
+
/** The current locale, always one of `supported`. */
|
|
44
|
+
readonly locale: ReadableSignal<string>;
|
|
45
|
+
/** The writing direction of the current locale. */
|
|
46
|
+
readonly direction: ReadableSignal<"ltr" | "rtl">;
|
|
47
|
+
/** A copy of the `supported` option, in the same order; `set` negotiates against it. */
|
|
48
|
+
readonly supported: readonly string[];
|
|
49
|
+
/** Switches locales after negotiating the request against `supported`. */
|
|
50
|
+
set(requested: string | readonly string[]): void;
|
|
51
|
+
}
|
|
52
|
+
/** Creates the locale state for an application. Throws a `TypeError` when `supported` is empty or `fallback` is not one of its locales, since the locale must always be one of them. */
|
|
53
|
+
export declare function createLocale(options: LocaleOptions): LocaleState;
|
|
54
|
+
/** Keeps the document's `lang` and `dir` attributes in step with the locale; returns the effect's disposer. */
|
|
55
|
+
export declare function applyLocale(state: LocaleState, doc?: Document): () => void;
|
|
56
|
+
/** Formatters for the current locale; each reads the locale signal when called, so a computed value or template re-renders on a locale change. */
|
|
57
|
+
export interface Formatters {
|
|
58
|
+
/** Formats a number with `Intl.NumberFormat`. */
|
|
59
|
+
number(value: number, options?: Intl.NumberFormatOptions): string;
|
|
60
|
+
/** Formats a `Date`, or a timestamp in milliseconds since the epoch, with `Intl.DateTimeFormat`. */
|
|
61
|
+
date(value: Date | number, options?: Intl.DateTimeFormatOptions): string;
|
|
62
|
+
/** Formats a time `value` units of `unit` away from now with `Intl.RelativeTimeFormat`, such as `in 2 hours`; a negative value lies in the past. */
|
|
63
|
+
relative(value: number, unit: Intl.RelativeTimeFormatUnit, options?: Intl.RelativeTimeFormatOptions): string;
|
|
64
|
+
/** Joins strings into a list with `Intl.ListFormat`, such as `a, b, and c` in English. */
|
|
65
|
+
list(values: Iterable<string>, options?: Intl.ListFormatOptions): string;
|
|
66
|
+
/** Selects the plural category of a number with `Intl.PluralRules`, such as `one` or `other`, for choosing a message variant. */
|
|
67
|
+
plural(value: number, options?: Intl.PluralRulesOptions): Intl.LDMLPluralRule;
|
|
68
|
+
}
|
|
69
|
+
/** Creates formatters over a locale, given as a signal or as a fixed tag. Instances are cached per locale and options. */
|
|
70
|
+
export declare function formatters(locale: ReadableSignal<string> | string): Formatters;
|
|
71
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,KAAK,cAAc,EAAyC,MAAM,UAAU,CAAC;AAEtF,4EAA4E;AAC5E,MAAM,WAAW,aAAa;IAE1B,uFAAuF;IACvF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,sGAAsG;IACtG,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC5B;AAED,2GAA2G;AAC3G,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,aAAa,EAAE,CA+BtF;AAcD;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,IAAI,GAAG,SAAS,EAAE,SAAS,EAAE,SAAS,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CA4BhJ;AAkBD,mLAAmL;AACnL,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,GAAG,KAAK,CAiB7D;AAED,kCAAkC;AAClC,MAAM,WAAW,aAAa;IAE1B,+DAA+D;IAC/D,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,qGAAqG;IACrG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+HAA+H;IAC/H,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;CAC/C;AAED,mCAAmC;AACnC,MAAM,WAAW,WAAW;IAExB,qDAAqD;IACrD,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IACxC,mDAAmD;IACnD,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;IAClD,wFAAwF;IACxF,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,0EAA0E;IAC1E,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;CACpD;AAED,wLAAwL;AACxL,wBAAgB,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,WAAW,CAsBhE;AAED,+GAA+G;AAC/G,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,GAAE,QAAmB,GAAG,MAAM,IAAI,CAOpF;AAED,kJAAkJ;AAClJ,MAAM,WAAW,UAAU;IAEvB,iDAAiD;IACjD,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC;IAClE,oGAAoG;IACpG,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC;IACzE,oJAAoJ;IACpJ,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,sBAAsB,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,yBAAyB,GAAG,MAAM,CAAC;IAC7G,0FAA0F;IAC1F,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC;IACzE,iIAAiI;IACjI,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC;CACjF;AAgBD,0HAA0H;AAC1H,wBAAgB,UAAU,CAAC,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,UAAU,CAU9E"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @zerolith/i18n: the locale layer, built on `Intl` with nothing shipped.
|
|
3
|
+
* Negotiation of the request's or the browser's languages against the
|
|
4
|
+
* locales an application supports, the current locale and its direction
|
|
5
|
+
* as signals, the document's `lang` and `dir`, and formatters cached per
|
|
6
|
+
* locale. Message catalogs are compiled ahead of time by
|
|
7
|
+
* `@zerolith/i18n/compile` into plain functions, so no message runtime
|
|
8
|
+
* exists here either.
|
|
9
|
+
*/
|
|
10
|
+
import { computed, effect, signal } from "zerolith";
|
|
11
|
+
/** Parses an `Accept-Language` header into ranges ordered by quality, dropping those with quality zero. */
|
|
12
|
+
export function parseAcceptLanguage(header) {
|
|
13
|
+
if (header === null || header === undefined || header.trim() === "") {
|
|
14
|
+
return [];
|
|
15
|
+
}
|
|
16
|
+
const ranges = [];
|
|
17
|
+
for (const [index, part] of header.split(",").entries()) {
|
|
18
|
+
const [rawRange = "", ...parameters] = part.split(";");
|
|
19
|
+
const range = rawRange.trim();
|
|
20
|
+
if (range === "") {
|
|
21
|
+
continue;
|
|
22
|
+
}
|
|
23
|
+
let quality = 1;
|
|
24
|
+
for (const parameter of parameters) {
|
|
25
|
+
const [key = "", value = ""] = parameter.split("=");
|
|
26
|
+
if (key.trim().toLowerCase() === "q") {
|
|
27
|
+
const parsed = Number(value.trim());
|
|
28
|
+
quality = Number.isFinite(parsed) ? Math.min(1, Math.max(0, parsed)) : 0;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
if (quality > 0) {
|
|
32
|
+
ranges.push({ range, quality: quality - index * 1e-9 });
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return ranges.toSorted((a, b) => b.quality - a.quality).map(({ range, quality }) => ({ range, quality: Math.round(quality * 1000) / 1000 }));
|
|
36
|
+
}
|
|
37
|
+
function canonical(tag) {
|
|
38
|
+
try {
|
|
39
|
+
return Intl.getCanonicalLocales(tag)[0] ?? tag;
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
return tag;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Picks the supported locale that best matches what was requested: an
|
|
47
|
+
* `Accept-Language` header, `navigator.languages`, or one tag. Each range
|
|
48
|
+
* is tried in order of quality, first as an exact match, then by dropping
|
|
49
|
+
* subtags from the end as RFC 4647 lookup does, then as the language of a
|
|
50
|
+
* more specific supported locale, preferring one written in the same
|
|
51
|
+
* script, so `zh-HK` finds `zh-TW` before `zh-CN`. `*` and no match at all
|
|
52
|
+
* give `fallback`.
|
|
53
|
+
*/
|
|
54
|
+
export function negotiateLocale(requested, supported, fallback) {
|
|
55
|
+
const ranges = typeof requested === "string" ? parseAcceptLanguage(requested).map((entry) => entry.range) : [...(requested ?? [])];
|
|
56
|
+
const candidates = supported.map((tag) => ({ tag, lower: canonical(tag).toLowerCase() }));
|
|
57
|
+
for (const range of ranges) {
|
|
58
|
+
const wanted = canonical(range).toLowerCase();
|
|
59
|
+
if (wanted === "*") {
|
|
60
|
+
return fallback;
|
|
61
|
+
}
|
|
62
|
+
for (let prefix = wanted; prefix !== ""; prefix = prefix.includes("-") ? prefix.slice(0, prefix.lastIndexOf("-")) : "") {
|
|
63
|
+
const exact = candidates.find((candidate) => candidate.lower === prefix);
|
|
64
|
+
if (exact !== undefined) {
|
|
65
|
+
return exact.tag;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
const language = wanted.split("-")[0] ?? wanted;
|
|
69
|
+
const related = candidates.filter((candidate) => candidate.lower.startsWith(`${language}-`));
|
|
70
|
+
if (related.length > 0) {
|
|
71
|
+
const script = scriptOf(range);
|
|
72
|
+
return (related.find((candidate) => scriptOf(candidate.tag) === script) ?? related[0])?.tag ?? fallback;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return fallback;
|
|
76
|
+
}
|
|
77
|
+
/** The script a locale is written in, with the likely script filled in, as `Hant` for `zh-TW`; undefined for a tag that does not parse. */
|
|
78
|
+
function scriptOf(tag) {
|
|
79
|
+
try {
|
|
80
|
+
return new Intl.Locale(tag).maximize().script;
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
return undefined;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/** The scripts written right to left, by their ISO 15924 codes in lowercase. */
|
|
87
|
+
const RTL_SCRIPTS = new Set(["adlm", "arab", "hebr", "mand", "mend", "nkoo", "rohg", "samr", "syrc", "thaa", "yezi"]);
|
|
88
|
+
/** The writing direction of a locale, from `Intl.Locale` where the engine provides it and otherwise from its script, the likely one when the tag names none, as engines decide. */
|
|
89
|
+
export function localeDirection(locale) {
|
|
90
|
+
try {
|
|
91
|
+
const parsed = new Intl.Locale(locale);
|
|
92
|
+
const withInfo = parsed;
|
|
93
|
+
const info = withInfo.getTextInfo?.() ?? withInfo.textInfo;
|
|
94
|
+
if (info !== undefined) {
|
|
95
|
+
return info.direction === "rtl" ? "rtl" : "ltr";
|
|
96
|
+
}
|
|
97
|
+
return RTL_SCRIPTS.has((parsed.maximize().script ?? "").toLowerCase()) ? "rtl" : "ltr";
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
return "ltr";
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/** Creates the locale state for an application. Throws a `TypeError` when `supported` is empty or `fallback` is not one of its locales, since the locale must always be one of them. */
|
|
104
|
+
export function createLocale(options) {
|
|
105
|
+
const supported = [...options.supported];
|
|
106
|
+
if (supported.length === 0) {
|
|
107
|
+
throw new TypeError("zerolith/i18n: createLocale needs at least one supported locale");
|
|
108
|
+
}
|
|
109
|
+
const fallback = options.fallback === undefined ? (supported[0] ?? "") : supported.find((tag) => canonical(tag).toLowerCase() === canonical(options.fallback ?? "").toLowerCase());
|
|
110
|
+
if (fallback === undefined) {
|
|
111
|
+
throw new TypeError(`zerolith/i18n: the fallback ${options.fallback ?? ""} is not one of the supported locales, ${supported.join(", ")}`);
|
|
112
|
+
}
|
|
113
|
+
const locale = signal(negotiateLocale(options.initial ?? fallback, supported, fallback), { name: "locale" });
|
|
114
|
+
return {
|
|
115
|
+
locale,
|
|
116
|
+
direction: computed(() => localeDirection(locale.get())),
|
|
117
|
+
supported,
|
|
118
|
+
set(requested) {
|
|
119
|
+
locale.set(negotiateLocale(requested, supported, fallback));
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
/** Keeps the document's `lang` and `dir` attributes in step with the locale; returns the effect's disposer. */
|
|
124
|
+
export function applyLocale(state, doc = document) {
|
|
125
|
+
return effect(() => {
|
|
126
|
+
doc.documentElement.lang = state.locale.get();
|
|
127
|
+
doc.documentElement.dir = state.direction.get();
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
const cache = new Map();
|
|
131
|
+
function cached(kind, locale, options, create) {
|
|
132
|
+
const key = `${kind}\u0000${locale}\u0000${options === undefined ? "" : JSON.stringify(options)}`;
|
|
133
|
+
let instance = cache.get(key);
|
|
134
|
+
if (instance === undefined) {
|
|
135
|
+
instance = create();
|
|
136
|
+
cache.set(key, instance);
|
|
137
|
+
}
|
|
138
|
+
return instance;
|
|
139
|
+
}
|
|
140
|
+
/** Creates formatters over a locale, given as a signal or as a fixed tag. Instances are cached per locale and options. */
|
|
141
|
+
export function formatters(locale) {
|
|
142
|
+
const current = () => (typeof locale === "string" ? locale : locale.get());
|
|
143
|
+
return {
|
|
144
|
+
number: (value, options) => cached("number", current(), options, () => new Intl.NumberFormat(current(), options)).format(value),
|
|
145
|
+
date: (value, options) => cached("date", current(), options, () => new Intl.DateTimeFormat(current(), options)).format(value),
|
|
146
|
+
relative: (value, unit, options) => cached("relative", current(), options, () => new Intl.RelativeTimeFormat(current(), options)).format(value, unit),
|
|
147
|
+
list: (values, options) => cached("list", current(), options, () => new Intl.ListFormat(current(), options)).format(values),
|
|
148
|
+
plural: (value, options) => cached("plural", current(), options, () => new Intl.PluralRules(current(), options)).select(value)
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
class e{index=0;text;key;constructor(e,t){this.text=e,this.key=t}fail(e){throw Error(`zerolith/i18n: message "${this.key}": ${e} at offset ${this.index}`)}peek(e=0){return this.text.charAt(this.index+e)}skipSpace(){for(;/[ \t\r\n ]/.test(this.peek());)this.index++}expect(e){this.text.startsWith(e,this.index)||this.fail(`expected ${JSON.stringify(e)}`),this.index+=e.length}name(){let e=/^[A-Za-z_][A-Za-z0-9_.-]*/.exec(this.text.slice(this.index));return e===null&&this.fail(`expected a name`),this.index+=e[0].length,e[0]}literal(){if(this.peek()===`|`){this.index++;let e=``;for(;this.index<this.text.length&&this.peek()!==`|`;)this.peek()===`\\`?(e+=this.peek(1),this.index+=2):(e+=this.peek(),this.index++);return this.expect(`|`),{kind:`literal`,value:e}}let e=/^[A-Za-z0-9_.+:@%-]+/.exec(this.text.slice(this.index));return e===null&&this.fail(`expected a literal`),this.index+=e[0].length,{kind:`literal`,value:e[0]}}variable(){return this.expect(`$`),{kind:`variable`,name:this.name()}}expression(){if(this.skipSpace(),this.peek()===`#`||this.peek()===`/`){for(;this.index<this.text.length&&this.peek()!==`}`;)this.index++;this.expect(`}`);return}let e;this.peek()===`$`?e=this.variable():this.peek()!==`:`&&(e=this.literal()),this.skipSpace();let t,n={};if(this.peek()===`:`)for(this.index++,t=this.name(),this.skipSpace();this.peek()!==`}`&&this.peek()!==`@`&&this.index<this.text.length;){let e=this.name();this.skipSpace(),this.expect(`=`),this.skipSpace(),n[e]=this.peek()===`$`?this.variable():this.literal(),this.skipSpace()}for(;this.peek()===`@`;)this.index++,this.name(),this.skipSpace(),this.peek()===`=`&&(this.index++,this.skipSpace(),this.peek()===`$`?this.variable():this.literal(),this.skipSpace());return this.expect(`}`),e===void 0&&t===void 0&&this.fail(`an expression needs an operand or a function`),{operand:e,fn:t,options:n}}pattern(e){let t=[],n=``;for(;this.index<this.text.length;){let r=this.peek();if(e&&r===`}`&&this.peek(1)===`}`)break;if(r===`\\`){let e=this.peek(1);e!==`{`&&e!==`}`&&e!==`\\`&&e!==`|`&&this.fail(`only \\{ \\} \\\\ and \\| can be escaped`),n+=e,this.index+=2}else if(r===`{`){n!==``&&(t.push(n),n=``),this.index++;let e=this.expression();e!==void 0&&t.push(e)}else r===`}`?this.fail(`a lone } must be escaped as \\}`):(n+=r,this.index++)}return n!==``&&t.push(n),t}quotedPattern(){this.expect(`{{`);let e=this.pattern(!0);return this.expect(`}}`),e}parse(){let e={declarations:new Map,pattern:void 0,selectors:[],variants:[]},t=this.text.trimStart();if(!t.startsWith(`.`)&&!t.startsWith(`{{`))return e.pattern=this.pattern(!1),e;for(this.skipSpace();this.text.startsWith(`.input`,this.index)||this.text.startsWith(`.local`,this.index);){let t=this.text.startsWith(`.local`,this.index);this.index+=6,this.skipSpace();let n;t?(n=this.variable().name,this.skipSpace(),this.expect(`=`),this.skipSpace()):n=``,this.expect(`{`);let r=this.expression();r===void 0&&this.fail(`a declaration cannot be markup`),t||(r.operand?.kind!==`variable`&&this.fail(`.input needs a variable operand`),n=r.operand.name),e.declarations.has(n)&&this.fail(`$${n} is declared twice`),e.declarations.set(n,{expression:r,local:t}),this.skipSpace()}if(this.text.startsWith(`.match`,this.index)){for(this.index+=6,this.skipSpace();this.peek()===`$`||this.peek()===`{`;){if(this.peek()===`{`){this.index++;let t=this.expression();t===void 0&&this.fail(`a selector cannot be markup`),e.selectors.push(t)}else e.selectors.push({operand:this.variable(),fn:void 0,options:{}});this.skipSpace()}for(e.selectors.length===0&&this.fail(`.match needs at least one selector`);this.index<this.text.length;){let t=[];for(;this.peek()!==`{`;)this.peek()===`*`?(this.index++,t.push(`*`)):t.push(this.literal().value),this.skipSpace();t.length!==e.selectors.length&&this.fail(`a variant needs ${e.selectors.length} key(s), found ${t.length}`),e.variants.push({keys:t,pattern:this.quotedPattern()}),this.skipSpace()}return e.variants.some(e=>e.keys.every(e=>e===`*`))||this.fail(`a matcher needs a variant whose keys are all *`),e}return e.pattern=this.quotedPattern(),this.skipSpace(),this.index<this.text.length&&this.fail(`unexpected text after the pattern`),e}}const t=new Set([`number`,`integer`,`percent`,`currency`,`offset`]),n=new Set([`date`,`time`,`datetime`]),r={minimumFractionDigits:`minimumFractionDigits`,maximumFractionDigits:`maximumFractionDigits`,minimumIntegerDigits:`minimumIntegerDigits`,minimumSignificantDigits:`minimumSignificantDigits`,maximumSignificantDigits:`maximumSignificantDigits`,signDisplay:`signDisplay`,trailingZeroDisplay:`trailingZeroDisplay`,roundingMode:`roundingMode`,roundingIncrement:`roundingIncrement`,roundingPriority:`roundingPriority`,currencyDisplay:`currencyDisplay`,currencySign:`currencySign`,numberingSystem:`numberingSystem`},i=new Set(`arguments.await.break.case.catch.class.const.continue.debugger.default.delete.do.else.enum.eval.export.extends.false.finally.for.function.if.implements.import.in.instanceof.interface.let.new.null.package.private.protected.public.return.static.super.switch.this.throw.true.try.typeof.var.void.while.with.yield`.split(`.`)),a=RegExp(`[<>${String.fromCodePoint(8232,8233)}]`,`g`),o=/\r\n|[\n\r\u2028\u2029]/;function s(e){return JSON.stringify(e).replace(a,e=>`\\u${e.charCodeAt(0).toString(16).padStart(4,`0`)}`)}function c(e){return e.split(o).join(` `).replaceAll(`<`,`<`)}const l=/^[A-Za-z_][A-Za-z0-9_]*$/;function u(e){return l.test(e)?e:s(e)}function d(e){let t=e.replace(/([a-z0-9])([A-Z])/g,`$1 $2`).split(/[^A-Za-z0-9]+/).filter(e=>e!==``).map((e,t)=>t===0?e.charAt(0).toLowerCase()+e.slice(1):e.charAt(0).toUpperCase()+e.slice(1)).join(``);return/^[0-9]/.test(t)?`_${t}`:t===``?`_`:t}class f{arguments=new Map;locals=new Map;prelude=[];key;message;formatters;used;reads=0;constructor(e,t,n,r){this.key=e,this.message=t,this.formatters=n,this.used=r}shared(e){this.used.add(`once`);let t=this.formatters.get(e);return t===void 0&&(t=`$f${this.formatters.size}`,this.formatters.set(e,t)),t}fail(e){throw Error(`zerolith/i18n: message "${this.key}": ${e}`)}argument(e,t){this.reads++;let n=this.locals.get(e);if(n!==void 0)return n;let r=this.arguments.get(e);return r===void 0||r===`string`?this.arguments.set(e,t):r!==t&&t!==`string`&&this.fail(`$${e} is used both as ${r} and as ${t}`),l.test(e)?`args.${e}`:`args[${s(e)}]`}optionValue(e){if(e!==void 0)return e.kind===`literal`?s(e.value):`String(${this.argument(e.name,`string`)})`}numberOptions(e){let t=[],n=e.fn??`number`;if(n===`integer`)t.push(`maximumFractionDigits: 0`);else if(n===`percent`)t.push(`style: "percent"`);else if(n===`currency`){let n=this.optionValue(e.options.currency);n===void 0&&this.fail(`:currency needs a currency option`),t.push(`style: "currency"`,`currency: ${n}`)}for(let[n,i]of Object.entries(e.options)){let e=r[n];if(e!==void 0){let n=i.kind===`literal`?i.value:void 0,r=n!==void 0&&/^[0-9]+$/.test(n)?n:void 0;t.push(`${e}: ${r??this.optionValue(i)??`undefined`}`)}else n===`useGrouping`&&i.kind===`literal`?t.push(`useGrouping: ${i.value===`never`?`false`:i.value===`always`?`true`:s(i.value)}`):n===`fractionDigits`&&i.kind===`literal`&&/^[0-9]+$/.test(i.value)&&t.push(`minimumFractionDigits: ${i.value}`,`maximumFractionDigits: ${i.value}`)}return t.length===0?`{}`:`{ ${t.join(`, `)} }`}dateOptions(e){let t=[],n=e.fn??`date`,r=t=>{let n=e.options[t];return n?.kind===`literal`?n.value:void 0},i=r(n===`datetime`?`dateLength`:`length`)??(n===`time`?void 0:`medium`);i!==void 0&&n!==`time`&&t.push(`dateStyle: ${s(i)}`);let a=r(n===`datetime`?`timePrecision`:`precision`)??(n===`date`?void 0:`minute`);a!==void 0&&n!==`date`&&t.push(`timeStyle: ${s(a===`second`?`medium`:`short`)}`);let o=r(`timeZone`);o!==void 0&&o!==`input`&&t.push(`timeZone: ${s(o)}`);let c=r(`hour12`);c!==void 0&&t.push(`hour12: ${c===`true`}`);let l=r(`timeZoneStyle`);return l!==void 0&&t.push(`timeZoneName: ${s(l)}`),t.length===0?`{}`:`{ ${t.join(`, `)} }`}numeric(e){let t=e.operand,n;if(t===void 0?this.fail(`:${e.fn??``} needs an operand`):n=t.kind===`literal`?Number.isFinite(Number(t.value))?String(Number(t.value)):this.fail(`${JSON.stringify(t.value)} is not a number`):this.argument(t.name,`number`),e.fn===`offset`){let t=this.optionValue(e.options.add),r=this.optionValue(e.options.subtract);t===void 0==(r===void 0)&&this.fail(`:offset needs exactly one of add or subtract`),n=`(${n} ${t===void 0?`-`:`+`} Number(${t??r??`0`}))`}return n}resolve(e,t=!1){if(e.fn===void 0&&e.operand?.kind===`variable`){let n=this.message.declarations.get(e.operand.name);if(n!==void 0&&(t||!n.local))return n.expression}return e}format(e){let r=this.resolve(e),i=r.fn;if(i===void 0||i===`string`){let e=r.operand;return e===void 0&&this.fail(`:string needs an operand`),e.kind===`literal`?s(e.value):`String(${this.argument(e.name,`string`)})`}if(t.has(i)){let e=this.numeric(r),t=this.reads,n=this.numberOptions(r);return this.reads===t?`${this.shared(`new Intl.NumberFormat(locale, ${n})`)}().format(${e})`:(this.used.add(`number`),`$number(${e}, ${n})`)}if(n.has(i)){let e=r.operand;e===void 0&&this.fail(`:${i} needs an operand`);let t=e.kind===`literal`?`new Date(${s(e.value)})`:this.argument(e.name,`date`);return`${this.shared(`new Intl.DateTimeFormat(locale, ${this.dateOptions(r)})`)}().format(${t})`}this.fail(`unknown function :${i}`)}selector(e){let n=this.resolve(e,!0),r=n.fn??`string`;if(t.has(r)){let e=n.options.select,t=e?.kind===`literal`?e.value:`plural`,i=r===`percent`?`(${this.numeric(n)}) * 100`:this.numeric(n);if(t===`exact`)return`{ value: String(${i}), categories: [] }`;let a=s(t===`ordinal`?`ordinal`:`cardinal`),o=this.reads,c=this.numberOptions(n);return this.reads===o?`{ value: String(${i}), categories: [${this.shared(`new Intl.PluralRules(locale, { ...new Intl.NumberFormat(locale, ${c}).resolvedOptions(), type: ${a} })`)}().select(${i})] }`:(this.used.add(`plural`),`{ value: String(${i}), categories: [$plural(${i}, ${a}, ${c})] }`)}if(r===`string`){let e=n.operand;return e===void 0&&this.fail(`a selector needs an operand`),`{ value: ${e.kind===`literal`?s(e.value):`String(${this.argument(e.name,`string`)})`}, categories: [] }`}this.fail(`:${r} cannot select`)}pattern(e){return e.length===0?`""`:e.map(e=>typeof e==`string`?s(e):this.format(e)).join(` + `)}body(){for(let[e,t]of this.message.declarations)if(t.local){let n=this.format(t.expression),r=l.test(e)?`local_${e}`:`local_${this.locals.size}`;this.locals.set(e,r),this.prelude.push(`const ${r} = ${n};`)}if(this.message.pattern!==void 0)return this.pattern(this.message.pattern);let e=this.message.selectors.map(e=>this.selector(e)),t=this.message.variants.map(e=>`{ keys: ${s(e.keys)}, pattern: () => ${this.pattern(e.pattern)} }`);return this.used.add(`select`),`$select([${e.join(`, `)}], [${t.join(`, `)}])`}}const p={cache:{js:`const $formats = new Map();
|
|
2
|
+
function $cached(kind, options, create)
|
|
3
|
+
{
|
|
4
|
+
const key = kind + JSON.stringify(options);
|
|
5
|
+
let instance = $formats.get(key);
|
|
6
|
+
if (instance === undefined)
|
|
7
|
+
{
|
|
8
|
+
instance = create();
|
|
9
|
+
$formats.set(key, instance);
|
|
10
|
+
}
|
|
11
|
+
return instance;
|
|
12
|
+
}`,ts:`const $formats: Map<string, unknown> = new Map();
|
|
13
|
+
function $cached<T>(kind: string, options: object, create: () => T): T
|
|
14
|
+
{
|
|
15
|
+
const key = kind + JSON.stringify(options);
|
|
16
|
+
let instance = $formats.get(key) as T | undefined;
|
|
17
|
+
if (instance === undefined)
|
|
18
|
+
{
|
|
19
|
+
instance = create();
|
|
20
|
+
$formats.set(key, instance);
|
|
21
|
+
}
|
|
22
|
+
return instance;
|
|
23
|
+
}`},once:{js:`function $once(create)
|
|
24
|
+
{
|
|
25
|
+
let instance;
|
|
26
|
+
return () => (instance ??= create());
|
|
27
|
+
}`,ts:`function $once<T>(create: () => T): () => T
|
|
28
|
+
{
|
|
29
|
+
let instance: T | undefined;
|
|
30
|
+
return () => (instance ??= create());
|
|
31
|
+
}`},number:{js:`function $number(value, options)
|
|
32
|
+
{
|
|
33
|
+
return $cached("n", options, () => new Intl.NumberFormat(locale, options)).format(value);
|
|
34
|
+
}`,ts:`function $number(value: number, options: Intl.NumberFormatOptions): string
|
|
35
|
+
{
|
|
36
|
+
return $cached("n", options, () => new Intl.NumberFormat(locale, options)).format(value);
|
|
37
|
+
}`},plural:{js:`function $plural(value, type, options)
|
|
38
|
+
{
|
|
39
|
+
return $cached("p" + type, options, () => new Intl.PluralRules(locale, { ...$cached("n", options, () => new Intl.NumberFormat(locale, options)).resolvedOptions(), type })).select(value);
|
|
40
|
+
}`,ts:`function $plural(value: number, type: "cardinal" | "ordinal", options: Intl.NumberFormatOptions): string
|
|
41
|
+
{
|
|
42
|
+
return $cached("p" + type, options, () => new Intl.PluralRules(locale, { ...$cached("n", options, () => new Intl.NumberFormat(locale, options)).resolvedOptions(), type })).select(value);
|
|
43
|
+
}`},select:{js:`function $select(selectors, variants)
|
|
44
|
+
{
|
|
45
|
+
let best;
|
|
46
|
+
let bestRank;
|
|
47
|
+
for (const variant of variants)
|
|
48
|
+
{
|
|
49
|
+
const rank = [];
|
|
50
|
+
let matches = true;
|
|
51
|
+
for (const [index, key] of variant.keys.entries())
|
|
52
|
+
{
|
|
53
|
+
const selector = selectors[index];
|
|
54
|
+
if (key === "*")
|
|
55
|
+
{
|
|
56
|
+
rank.push(0);
|
|
57
|
+
}
|
|
58
|
+
else if (key === selector.value)
|
|
59
|
+
{
|
|
60
|
+
rank.push(2);
|
|
61
|
+
}
|
|
62
|
+
else if (selector.categories.includes(key))
|
|
63
|
+
{
|
|
64
|
+
rank.push(1);
|
|
65
|
+
}
|
|
66
|
+
else
|
|
67
|
+
{
|
|
68
|
+
matches = false;
|
|
69
|
+
break;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
if (!matches)
|
|
73
|
+
{
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
if (matches && $better(rank, bestRank))
|
|
77
|
+
{
|
|
78
|
+
best = variant;
|
|
79
|
+
bestRank = rank;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return best === undefined ? "" : best.pattern();
|
|
83
|
+
}
|
|
84
|
+
function $better(rank, current)
|
|
85
|
+
{
|
|
86
|
+
if (current === undefined)
|
|
87
|
+
{
|
|
88
|
+
return true;
|
|
89
|
+
}
|
|
90
|
+
for (const [index, score] of rank.entries())
|
|
91
|
+
{
|
|
92
|
+
const other = current[index] ?? 0;
|
|
93
|
+
if (score !== other)
|
|
94
|
+
{
|
|
95
|
+
return score > other;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return false;
|
|
99
|
+
}`,ts:`interface Selector
|
|
100
|
+
{
|
|
101
|
+
value: string;
|
|
102
|
+
categories: string[];
|
|
103
|
+
}
|
|
104
|
+
interface Variant
|
|
105
|
+
{
|
|
106
|
+
keys: string[];
|
|
107
|
+
pattern: () => string;
|
|
108
|
+
}
|
|
109
|
+
function $better(rank: number[], current: number[] | undefined): boolean
|
|
110
|
+
{
|
|
111
|
+
if (current === undefined)
|
|
112
|
+
{
|
|
113
|
+
return true;
|
|
114
|
+
}
|
|
115
|
+
for (const [index, score] of rank.entries())
|
|
116
|
+
{
|
|
117
|
+
const other = current[index] ?? 0;
|
|
118
|
+
if (score !== other)
|
|
119
|
+
{
|
|
120
|
+
return score > other;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return false;
|
|
124
|
+
}
|
|
125
|
+
function $select(selectors: Selector[], variants: Variant[]): string
|
|
126
|
+
{
|
|
127
|
+
let best: Variant | undefined;
|
|
128
|
+
let bestRank: number[] | undefined;
|
|
129
|
+
for (const variant of variants)
|
|
130
|
+
{
|
|
131
|
+
const rank: number[] = [];
|
|
132
|
+
let matches = true;
|
|
133
|
+
for (const [index, key] of variant.keys.entries())
|
|
134
|
+
{
|
|
135
|
+
const selector = selectors[index];
|
|
136
|
+
if (key === "*")
|
|
137
|
+
{
|
|
138
|
+
rank.push(0);
|
|
139
|
+
}
|
|
140
|
+
else if (selector !== undefined && key === selector.value)
|
|
141
|
+
{
|
|
142
|
+
rank.push(2);
|
|
143
|
+
}
|
|
144
|
+
else if (selector !== undefined && selector.categories.includes(key))
|
|
145
|
+
{
|
|
146
|
+
rank.push(1);
|
|
147
|
+
}
|
|
148
|
+
else
|
|
149
|
+
{
|
|
150
|
+
matches = false;
|
|
151
|
+
break;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
if (matches && $better(rank, bestRank))
|
|
155
|
+
{
|
|
156
|
+
best = variant;
|
|
157
|
+
bestRank = rank;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
return best === undefined ? "" : best.pattern();
|
|
161
|
+
}`}};function m(e,t){let n=new Set(e);return(n.has(`number`)||n.has(`plural`))&&n.add(`cache`),Object.keys(p).filter(e=>n.has(e)).map(e=>p[e][t?`js`:`ts`]).join(`
|
|
162
|
+
`)}function h(e){return e===`number`?`number`:e===`date`?`Date | number`:`string | number`}export function compileMessages(t,n,r={}){let a=r.language===`js`,l=[];l.push(`// Generated by @zerolith/i18n from ${c(r.source??`the ${t} catalog`)}. Do not edit; regenerate instead.`),a&&l.push(`// @ts-check`),l.push(`export const locale${a?``:`: string`} = ${s(t)};`),l.push(``);let p=l.length,g=new Map,_=new Set,v=[],y=new Set;for(let[t,r]of Object.entries(n)){let n=d(t);if(y.has(n))throw Error(`zerolith/i18n: keys "${t}" and another one both become ${n}`);if(n===`locale`)throw Error(`zerolith/i18n: key "${t}" becomes locale, which every compiled module exports; rename the key`);let s=i.has(n)?`message_${n}`:n;y.add(n),v.push(n);let c=new e(r,t).parse(),p=new f(t,c,g,_),m=p.body(),b=[...p.arguments.entries()].toSorted(([e],[t])=>e.localeCompare(t)),x=r.replace(/\*\//g,`* /`).replaceAll(`<`,`<`).split(o).map(e=>` * ${e}`.trimEnd()).join(`
|
|
163
|
+
`),S=`{ ${b.map(([e,t])=>`${u(e)}: ${h(t)}`).join(`; `)} }`;a?(l.push(`/**\n${x}${b.length>0?`\n * @param {${S}} args`:``}\n * @returns {string}\n */`),l.push(`${s===n?`export `:``}function ${s}(${b.length>0?`args`:``})`)):(l.push(`/**\n${x}\n */`),l.push(`${s===n?`export `:``}function ${s}(${b.length>0?`args: ${S}`:``}): string`)),l.push(`{`);for(let e of p.prelude)l.push(` ${e}`);l.push(` return ${m};`),l.push(`}`),s!==n&&l.push(`export { ${s} as ${n} };`),l.push(``)}let b=m(_,a),x=Array.from(g,([e,t])=>`const ${t} = $once(() => ${e});`);return l.splice(p,0,...b===``?[]:[b,``],...x.length===0?[]:[...x,``]),{code:l.join(`
|
|
164
|
+
`),names:v}}export function messageNames(e){return Object.keys(e).map(d)}export function compileIndex(e,t={}){let n=t.language===`js`,r=n?`js`:`ts`,i=[`// Generated by @zerolith/i18n. Do not edit; regenerate instead.`];return n&&i.push(`// @ts-check`),n||(i.push(`import type * as first from ${s(`./${e[0]??`en`}.${r}`)};`),i.push(``)),i.push(`export const locales${n?``:`: readonly string[]`} = ${s(e)};`),i.push(``),i.push(`/** Loads one locale's messages; each locale is its own module. */`),i.push(n?`export const loaders = {`:`export const loaders: Readonly<Record<string, () => Promise<typeof first>>> = {`),i.push(e.map(e=>` ${s(e)}: () => import(${s(`./${e}.${r}`)})`).join(`,
|
|
165
|
+
`)),i.push(`};`),i.push(``),i.join(`
|
|
166
|
+
`)}
|
|
167
|
+
//# sourceMappingURL=compile.js.map
|