@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/dist/compile.js CHANGED
@@ -279,6 +279,30 @@ const NUMBER_OPTIONS = {
279
279
  currencySign: "currencySign",
280
280
  numberingSystem: "numberingSystem"
281
281
  };
282
+ /** Names a module cannot bind; a message named so is exported under its name from a binding of its own. */
283
+ const RESERVED = 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"]);
284
+ /** Characters an HTML parser reads inside an inline script, and the line separators older engines refused in string literals. */
285
+ const SCRIPT_UNSAFE = new RegExp(`[<>${String.fromCodePoint(0x2028, 0x2029)}]`, "g");
286
+ /** The line breaks of a message's source, each starting a new line of its doc comment. */
287
+ const SOURCE_LINES = /\r\n|[\n\r\u2028\u2029]/;
288
+ /**
289
+ * A value written as JavaScript source: its JSON, with `<`, `>`, U+2028, and
290
+ * U+2029 escaped, so generated code stays inert even when a page inlines
291
+ * it in a script element.
292
+ */
293
+ function jsLiteral(value) {
294
+ return JSON.stringify(value).replace(SCRIPT_UNSAFE, (character) => `\\u${character.charCodeAt(0).toString(16).padStart(4, "0")}`);
295
+ }
296
+ /** Text for a `//` comment, kept on one line and with `<` written as `&lt;`, so it can end neither the comment nor an inline script. */
297
+ function commentText(text) {
298
+ return text.split(SOURCE_LINES).join(" ").replaceAll("<", "&lt;");
299
+ }
300
+ /** An argument or local name JavaScript can write as it is; MessageFormat also allows `-` and `.`, as in `$first-name`. */
301
+ const PLAIN_NAME = /^[A-Za-z_][A-Za-z0-9_]*$/;
302
+ /** A property name as code: as it is when plain, quoted otherwise. */
303
+ function property(name) {
304
+ return PLAIN_NAME.test(name) ? name : jsLiteral(name);
305
+ }
282
306
  function identifier(key) {
283
307
  const words = key.replace(/([a-z0-9])([A-Z])/g, "$1 $2").split(/[^A-Za-z0-9]+/).filter((word) => word !== "");
284
308
  const name = words.map((word, index) => (index === 0 ? word.charAt(0).toLowerCase() + word.slice(1) : word.charAt(0).toUpperCase() + word.slice(1))).join("");
@@ -290,14 +314,30 @@ class Emitter {
290
314
  prelude = [];
291
315
  key;
292
316
  message;
293
- constructor(key, message) {
317
+ formatters;
318
+ used;
319
+ reads = 0;
320
+ constructor(key, message, formatters, used) {
294
321
  this.key = key;
295
322
  this.message = message;
323
+ this.formatters = formatters;
324
+ this.used = used;
325
+ }
326
+ /** The module-level binding of a formatter whose options are known at compile time, created on first use and shared by every message that creates it the same way. */
327
+ shared(create) {
328
+ this.used.add("once");
329
+ let binding = this.formatters.get(create);
330
+ if (binding === undefined) {
331
+ binding = `$f${this.formatters.size}`;
332
+ this.formatters.set(create, binding);
333
+ }
334
+ return binding;
296
335
  }
297
336
  fail(text) {
298
337
  throw new Error(`zerolith/i18n: message "${this.key}": ${text}`);
299
338
  }
300
339
  argument(name, type) {
340
+ this.reads++;
301
341
  const local = this.locals.get(name);
302
342
  if (local !== undefined) {
303
343
  return local;
@@ -309,13 +349,13 @@ class Emitter {
309
349
  else if (existing !== type && type !== "string") {
310
350
  this.fail(`$${name} is used both as ${existing} and as ${type}`);
311
351
  }
312
- return `args.${name}`;
352
+ return PLAIN_NAME.test(name) ? `args.${name}` : `args[${jsLiteral(name)}]`;
313
353
  }
314
354
  optionValue(value) {
315
355
  if (value === undefined) {
316
356
  return undefined;
317
357
  }
318
- return value.kind === "literal" ? JSON.stringify(value.value) : `String(${this.argument(value.name, "string")})`;
358
+ return value.kind === "literal" ? jsLiteral(value.value) : `String(${this.argument(value.name, "string")})`;
319
359
  }
320
360
  numberOptions(expression) {
321
361
  const entries = [];
@@ -341,13 +381,13 @@ class Emitter {
341
381
  entries.push(`${mapped}: ${numeric ?? this.optionValue(value) ?? "undefined"}`);
342
382
  }
343
383
  else if (option === "useGrouping" && value.kind === "literal") {
344
- entries.push(`useGrouping: ${value.value === "never" ? "false" : value.value === "always" ? "true" : JSON.stringify(value.value)}`);
384
+ entries.push(`useGrouping: ${value.value === "never" ? "false" : value.value === "always" ? "true" : jsLiteral(value.value)}`);
345
385
  }
346
386
  else if (option === "fractionDigits" && value.kind === "literal" && /^[0-9]+$/.test(value.value)) {
347
387
  entries.push(`minimumFractionDigits: ${value.value}`, `maximumFractionDigits: ${value.value}`);
348
388
  }
349
389
  }
350
- return `{ ${entries.join(", ")} }`;
390
+ return entries.length === 0 ? "{}" : `{ ${entries.join(", ")} }`;
351
391
  }
352
392
  dateOptions(expression) {
353
393
  const entries = [];
@@ -358,15 +398,15 @@ class Emitter {
358
398
  };
359
399
  const length = literal(fn === "datetime" ? "dateLength" : "length") ?? (fn === "time" ? undefined : "medium");
360
400
  if (length !== undefined && fn !== "time") {
361
- entries.push(`dateStyle: ${JSON.stringify(length)}`);
401
+ entries.push(`dateStyle: ${jsLiteral(length)}`);
362
402
  }
363
403
  const precision = literal(fn === "datetime" ? "timePrecision" : "precision") ?? (fn === "date" ? undefined : "minute");
364
404
  if (precision !== undefined && fn !== "date") {
365
- entries.push(`timeStyle: ${JSON.stringify(precision === "second" ? "medium" : "short")}`);
405
+ entries.push(`timeStyle: ${jsLiteral(precision === "second" ? "medium" : "short")}`);
366
406
  }
367
407
  const zone = literal("timeZone");
368
408
  if (zone !== undefined && zone !== "input") {
369
- entries.push(`timeZone: ${JSON.stringify(zone)}`);
409
+ entries.push(`timeZone: ${jsLiteral(zone)}`);
370
410
  }
371
411
  const hour12 = literal("hour12");
372
412
  if (hour12 !== undefined) {
@@ -374,9 +414,9 @@ class Emitter {
374
414
  }
375
415
  const style = literal("timeZoneStyle");
376
416
  if (style !== undefined) {
377
- entries.push(`timeZoneName: ${JSON.stringify(style)}`);
417
+ entries.push(`timeZoneName: ${jsLiteral(style)}`);
378
418
  }
379
- return `{ ${entries.join(", ")} }`;
419
+ return entries.length === 0 ? "{}" : `{ ${entries.join(", ")} }`;
380
420
  }
381
421
  /** The JavaScript for an expression's numeric value, before formatting. */
382
422
  numeric(expression) {
@@ -401,11 +441,11 @@ class Emitter {
401
441
  }
402
442
  return value;
403
443
  }
404
- /** Resolves a plain `{$x}` to its declaration when one exists. */
405
- resolve(expression) {
444
+ /** Resolves a plain `{$x}` to its `.input` declaration when one exists, or with `locals` to its `.local` one too, so a selector on a local selects as its expression does. */
445
+ resolve(expression, locals = false) {
406
446
  if (expression.fn === undefined && expression.operand?.kind === "variable") {
407
447
  const declared = this.message.declarations.get(expression.operand.name);
408
- if (declared !== undefined && !declared.local) {
448
+ if (declared !== undefined && (locals || !declared.local)) {
409
449
  return declared.expression;
410
450
  }
411
451
  }
@@ -420,24 +460,31 @@ class Emitter {
420
460
  if (operand === undefined) {
421
461
  this.fail(":string needs an operand");
422
462
  }
423
- return operand.kind === "literal" ? JSON.stringify(operand.value) : `String(${this.argument(operand.name, "string")})`;
463
+ return operand.kind === "literal" ? jsLiteral(operand.value) : `String(${this.argument(operand.name, "string")})`;
424
464
  }
425
465
  if (NUMBER_FUNCTIONS.has(fn)) {
426
- return `number(${this.numeric(expression)}, ${this.numberOptions(expression)})`;
466
+ const value = this.numeric(expression);
467
+ const reads = this.reads;
468
+ const options = this.numberOptions(expression);
469
+ if (this.reads === reads) {
470
+ return `${this.shared(`new Intl.NumberFormat(locale, ${options})`)}().format(${value})`;
471
+ }
472
+ this.used.add("number");
473
+ return `$number(${value}, ${options})`;
427
474
  }
428
475
  if (DATE_FUNCTIONS.has(fn)) {
429
476
  const operand = expression.operand;
430
477
  if (operand === undefined) {
431
478
  this.fail(`:${fn} needs an operand`);
432
479
  }
433
- const value = operand.kind === "literal" ? `new Date(${JSON.stringify(operand.value)})` : this.argument(operand.name, "date");
434
- return `date(${value}, ${this.dateOptions(expression)})`;
480
+ const value = operand.kind === "literal" ? `new Date(${jsLiteral(operand.value)})` : this.argument(operand.name, "date");
481
+ return `${this.shared(`new Intl.DateTimeFormat(locale, ${this.dateOptions(expression)})`)}().format(${value})`;
435
482
  }
436
483
  this.fail(`unknown function :${fn}`);
437
484
  }
438
485
  /** The JavaScript for a selector: its comparable value and the categories it matches. */
439
486
  selector(raw) {
440
- const expression = this.resolve(raw);
487
+ const expression = this.resolve(raw, true);
441
488
  const fn = expression.fn ?? "string";
442
489
  if (NUMBER_FUNCTIONS.has(fn)) {
443
490
  const select = expression.options["select"];
@@ -446,14 +493,21 @@ class Emitter {
446
493
  if (mode === "exact") {
447
494
  return `{ value: String(${value}), categories: [] }`;
448
495
  }
449
- return `{ value: String(${value}), categories: [plural(${value}, ${JSON.stringify(mode === "ordinal" ? "ordinal" : "cardinal")})] }`;
496
+ const type = jsLiteral(mode === "ordinal" ? "ordinal" : "cardinal");
497
+ const reads = this.reads;
498
+ const options = this.numberOptions(expression);
499
+ if (this.reads === reads) {
500
+ return `{ value: String(${value}), categories: [${this.shared(`new Intl.PluralRules(locale, { ...new Intl.NumberFormat(locale, ${options}).resolvedOptions(), type: ${type} })`)}().select(${value})] }`;
501
+ }
502
+ this.used.add("plural");
503
+ return `{ value: String(${value}), categories: [$plural(${value}, ${type}, ${options})] }`;
450
504
  }
451
505
  if (fn === "string") {
452
506
  const operand = expression.operand;
453
507
  if (operand === undefined) {
454
508
  this.fail("a selector needs an operand");
455
509
  }
456
- const value = operand.kind === "literal" ? JSON.stringify(operand.value) : `String(${this.argument(operand.name, "string")})`;
510
+ const value = operand.kind === "literal" ? jsLiteral(operand.value) : `String(${this.argument(operand.name, "string")})`;
457
511
  return `{ value: ${value}, categories: [] }`;
458
512
  }
459
513
  this.fail(`:${fn} cannot select`);
@@ -462,49 +516,88 @@ class Emitter {
462
516
  if (parts.length === 0) {
463
517
  return "\"\"";
464
518
  }
465
- return parts.map((part) => (typeof part === "string" ? JSON.stringify(part) : this.format(part))).join(" + ");
519
+ return parts.map((part) => (typeof part === "string" ? jsLiteral(part) : this.format(part))).join(" + ");
466
520
  }
467
521
  body() {
468
522
  for (const [name, declaration] of this.message.declarations) {
469
523
  if (declaration.local) {
470
524
  const value = this.format(declaration.expression);
471
- this.locals.set(name, `local_${name}`);
472
- this.prelude.push(`const local_${name} = ${value};`);
525
+ const binding = PLAIN_NAME.test(name) ? `local_${name}` : `local_${this.locals.size}`;
526
+ this.locals.set(name, binding);
527
+ this.prelude.push(`const ${binding} = ${value};`);
473
528
  }
474
529
  }
475
530
  if (this.message.pattern !== undefined) {
476
531
  return this.pattern(this.message.pattern);
477
532
  }
478
533
  const selectors = this.message.selectors.map((selector) => this.selector(selector));
479
- const variants = this.message.variants.map((variant) => `{ keys: ${JSON.stringify(variant.keys)}, pattern: () => ${this.pattern(variant.pattern)} }`);
480
- return `select([${selectors.join(", ")}], [${variants.join(", ")}])`;
534
+ const variants = this.message.variants.map((variant) => `{ keys: ${jsLiteral(variant.keys)}, pattern: () => ${this.pattern(variant.pattern)} }`);
535
+ this.used.add("select");
536
+ return `$select([${selectors.join(", ")}], [${variants.join(", ")}])`;
481
537
  }
482
538
  }
483
- const HELPERS = `const formats = new Map();
484
- function cached(kind, options, create)
539
+ /** The helpers in JavaScript and in TypeScript, in the order a module writes them. */
540
+ const HELPERS = {
541
+ cache: {
542
+ js: `const $formats = new Map();
543
+ function $cached(kind, options, create)
485
544
  {
486
545
  const key = kind + JSON.stringify(options);
487
- let instance = formats.get(key);
546
+ let instance = $formats.get(key);
488
547
  if (instance === undefined)
489
548
  {
490
549
  instance = create();
491
- formats.set(key, instance);
550
+ $formats.set(key, instance);
492
551
  }
493
552
  return instance;
494
- }
495
- function number(value, options)
553
+ }`,
554
+ ts: `const $formats: Map<string, unknown> = new Map();
555
+ function $cached<T>(kind: string, options: object, create: () => T): T
496
556
  {
497
- return cached("n", options, () => new Intl.NumberFormat(locale, options)).format(value);
498
- }
499
- function date(value, options)
557
+ const key = kind + JSON.stringify(options);
558
+ let instance = $formats.get(key) as T | undefined;
559
+ if (instance === undefined)
560
+ {
561
+ instance = create();
562
+ $formats.set(key, instance);
563
+ }
564
+ return instance;
565
+ }`
566
+ },
567
+ once: {
568
+ js: `function $once(create)
500
569
  {
501
- return cached("d", options, () => new Intl.DateTimeFormat(locale, options)).format(value);
502
- }
503
- function plural(value, type)
570
+ let instance;
571
+ return () => (instance ??= create());
572
+ }`,
573
+ ts: `function $once<T>(create: () => T): () => T
504
574
  {
505
- return cached("p", { type }, () => new Intl.PluralRules(locale, { type })).select(value);
506
- }
507
- function select(selectors, variants)
575
+ let instance: T | undefined;
576
+ return () => (instance ??= create());
577
+ }`
578
+ },
579
+ number: {
580
+ js: `function $number(value, options)
581
+ {
582
+ return $cached("n", options, () => new Intl.NumberFormat(locale, options)).format(value);
583
+ }`,
584
+ ts: `function $number(value: number, options: Intl.NumberFormatOptions): string
585
+ {
586
+ return $cached("n", options, () => new Intl.NumberFormat(locale, options)).format(value);
587
+ }`
588
+ },
589
+ plural: {
590
+ js: `function $plural(value, type, options)
591
+ {
592
+ return $cached("p" + type, options, () => new Intl.PluralRules(locale, { ...$cached("n", options, () => new Intl.NumberFormat(locale, options)).resolvedOptions(), type })).select(value);
593
+ }`,
594
+ ts: `function $plural(value: number, type: "cardinal" | "ordinal", options: Intl.NumberFormatOptions): string
595
+ {
596
+ return $cached("p" + type, options, () => new Intl.PluralRules(locale, { ...$cached("n", options, () => new Intl.NumberFormat(locale, options)).resolvedOptions(), type })).select(value);
597
+ }`
598
+ },
599
+ select: {
600
+ js: `function $select(selectors, variants)
508
601
  {
509
602
  let best;
510
603
  let bestRank;
@@ -537,7 +630,7 @@ function select(selectors, variants)
537
630
  {
538
631
  continue;
539
632
  }
540
- if (matches && better(rank, bestRank))
633
+ if (matches && $better(rank, bestRank))
541
634
  {
542
635
  best = variant;
543
636
  bestRank = rank;
@@ -545,7 +638,7 @@ function select(selectors, variants)
545
638
  }
546
639
  return best === undefined ? "" : best.pattern();
547
640
  }
548
- function better(rank, current)
641
+ function $better(rank, current)
549
642
  {
550
643
  if (current === undefined)
551
644
  {
@@ -560,8 +653,8 @@ function better(rank, current)
560
653
  }
561
654
  }
562
655
  return false;
563
- }`;
564
- const HELPERS_TS = `interface Selector
656
+ }`,
657
+ ts: `interface Selector
565
658
  {
566
659
  value: string;
567
660
  categories: string[];
@@ -571,31 +664,7 @@ interface Variant
571
664
  keys: string[];
572
665
  pattern: () => string;
573
666
  }
574
- const formats: Map<string, unknown> = new Map();
575
- function cached<T>(kind: string, options: object, create: () => T): T
576
- {
577
- const key = kind + JSON.stringify(options);
578
- let instance = formats.get(key) as T | undefined;
579
- if (instance === undefined)
580
- {
581
- instance = create();
582
- formats.set(key, instance);
583
- }
584
- return instance;
585
- }
586
- function number(value: number, options: Intl.NumberFormatOptions): string
587
- {
588
- return cached("n", options, () => new Intl.NumberFormat(locale, options)).format(value);
589
- }
590
- function date(value: Date | number, options: Intl.DateTimeFormatOptions): string
591
- {
592
- return cached("d", options, () => new Intl.DateTimeFormat(locale, options)).format(value);
593
- }
594
- function plural(value: number, type: "cardinal" | "ordinal"): string
595
- {
596
- return cached("p", { type }, () => new Intl.PluralRules(locale, { type })).select(value);
597
- }
598
- function better(rank: number[], current: number[] | undefined): boolean
667
+ function $better(rank: number[], current: number[] | undefined): boolean
599
668
  {
600
669
  if (current === undefined)
601
670
  {
@@ -611,7 +680,7 @@ function better(rank: number[], current: number[] | undefined): boolean
611
680
  }
612
681
  return false;
613
682
  }
614
- function select(selectors: Selector[], variants: Variant[]): string
683
+ function $select(selectors: Selector[], variants: Variant[]): string
615
684
  {
616
685
  let best: Variant | undefined;
617
686
  let bestRank: number[] | undefined;
@@ -640,14 +709,24 @@ function select(selectors: Selector[], variants: Variant[]): string
640
709
  break;
641
710
  }
642
711
  }
643
- if (matches && better(rank, bestRank))
712
+ if (matches && $better(rank, bestRank))
644
713
  {
645
714
  best = variant;
646
715
  bestRank = rank;
647
716
  }
648
717
  }
649
718
  return best === undefined ? "" : best.pattern();
650
- }`;
719
+ }`
720
+ }
721
+ };
722
+ /** The helpers a module's messages use, with the cache that `$number` and `$plural` share. */
723
+ function helpersFor(used, javascript) {
724
+ const needed = new Set(used);
725
+ if (needed.has("number") || needed.has("plural")) {
726
+ needed.add("cache");
727
+ }
728
+ return Object.keys(HELPERS).filter((name) => needed.has(name)).map((name) => HELPERS[name][javascript ? "js" : "ts"]).join("\n");
729
+ }
651
730
  function typeOf(type) {
652
731
  return type === "number" ? "number" : type === "date" ? "Date | number" : "string | number";
653
732
  }
@@ -655,19 +734,24 @@ function typeOf(type) {
655
734
  * Compiles one locale's catalog into a module: `locale`, one exported
656
735
  * function per message named from its key, and the `Intl` helpers they
657
736
  * share. Each function takes an `args` object typed from the message's
658
- * placeholders, or nothing when the message has none.
737
+ * placeholders, or nothing when the message has none. A formatter whose
738
+ * options are all literals is a module-level binding created on first use
739
+ * and shared by every message that formats the same way; options that read
740
+ * an argument find their formatter in a cache keyed by the options. Only
741
+ * the helpers the messages use are written.
659
742
  */
660
743
  export function compileMessages(locale, catalog, options = {}) {
661
744
  const javascript = options.language === "js";
662
745
  const out = [];
663
- out.push(`// Generated by @zerolith/i18n from ${options.source ?? `the ${locale} catalog`}. Do not edit; regenerate instead.`);
746
+ out.push(`// Generated by @zerolith/i18n from ${commentText(options.source ?? `the ${locale} catalog`)}. Do not edit; regenerate instead.`);
664
747
  if (javascript) {
665
748
  out.push("// @ts-check");
666
749
  }
667
- out.push(`export const locale${javascript ? "" : ": string"} = ${JSON.stringify(locale)};`);
668
- out.push("");
669
- out.push(javascript ? HELPERS : HELPERS_TS);
750
+ out.push(`export const locale${javascript ? "" : ": string"} = ${jsLiteral(locale)};`);
670
751
  out.push("");
752
+ const head = out.length;
753
+ const formatters = new Map();
754
+ const used = new Set();
671
755
  const names = [];
672
756
  const seen = new Set();
673
757
  for (const [key, source] of Object.entries(catalog)) {
@@ -675,21 +759,25 @@ export function compileMessages(locale, catalog, options = {}) {
675
759
  if (seen.has(name)) {
676
760
  throw new Error(`zerolith/i18n: keys "${key}" and another one both become ${name}`);
677
761
  }
762
+ if (name === "locale") {
763
+ throw new Error(`zerolith/i18n: key "${key}" becomes locale, which every compiled module exports; rename the key`);
764
+ }
765
+ const binding = RESERVED.has(name) ? `message_${name}` : name;
678
766
  seen.add(name);
679
767
  names.push(name);
680
768
  const message = new Parser(source, key).parse();
681
- const emitter = new Emitter(key, message);
769
+ const emitter = new Emitter(key, message, formatters, used);
682
770
  const body = emitter.body();
683
771
  const args = [...emitter.arguments.entries()].toSorted(([a], [b]) => a.localeCompare(b));
684
- const doc = source.replace(/\*\//g, "* /").split(/\r?\n/).map((line) => ` * ${line}`.trimEnd()).join("\n");
685
- const argumentType = `{ ${args.map(([argument, type]) => `${argument}: ${typeOf(type)}`).join("; ")} }`;
772
+ const doc = source.replace(/\*\//g, "* /").replaceAll("<", "&lt;").split(SOURCE_LINES).map((line) => ` * ${line}`.trimEnd()).join("\n");
773
+ const argumentType = `{ ${args.map(([argument, type]) => `${property(argument)}: ${typeOf(type)}`).join("; ")} }`;
686
774
  if (javascript) {
687
775
  out.push(`/**\n${doc}${args.length > 0 ? `\n * @param {${argumentType}} args` : ""}\n * @returns {string}\n */`);
688
- out.push(`export function ${name}(${args.length > 0 ? "args" : ""})`);
776
+ out.push(`${binding === name ? "export " : ""}function ${binding}(${args.length > 0 ? "args" : ""})`);
689
777
  }
690
778
  else {
691
779
  out.push(`/**\n${doc}\n */`);
692
- out.push(`export function ${name}(${args.length > 0 ? `args: ${argumentType}` : ""}): string`);
780
+ out.push(`${binding === name ? "export " : ""}function ${binding}(${args.length > 0 ? `args: ${argumentType}` : ""}): string`);
693
781
  }
694
782
  out.push("{");
695
783
  for (const line of emitter.prelude) {
@@ -697,8 +785,14 @@ export function compileMessages(locale, catalog, options = {}) {
697
785
  }
698
786
  out.push(` return ${body};`);
699
787
  out.push("}");
788
+ if (binding !== name) {
789
+ out.push(`export { ${binding} as ${name} };`);
790
+ }
700
791
  out.push("");
701
792
  }
793
+ const helpers = helpersFor(used, javascript);
794
+ const shared = Array.from(formatters, ([create, binding]) => `const ${binding} = $once(() => ${create});`);
795
+ out.splice(head, 0, ...(helpers === "" ? [] : [helpers, ""]), ...(shared.length === 0 ? [] : [...shared, ""]));
702
796
  return { code: out.join("\n"), names };
703
797
  }
704
798
  /** The keys of a catalog as function names, for comparing locales. */
@@ -717,14 +811,14 @@ export function compileIndex(locales, options = {}) {
717
811
  lines.push("// @ts-check");
718
812
  }
719
813
  if (!javascript) {
720
- lines.push(`import type * as first from "./${locales[0] ?? "en"}.${extension}";`);
814
+ lines.push(`import type * as first from ${jsLiteral(`./${locales[0] ?? "en"}.${extension}`)};`);
721
815
  lines.push("");
722
816
  }
723
- lines.push(`export const locales${javascript ? "" : ": readonly string[]"} = ${JSON.stringify(locales)};`);
817
+ lines.push(`export const locales${javascript ? "" : ": readonly string[]"} = ${jsLiteral(locales)};`);
724
818
  lines.push("");
725
819
  lines.push(`/** Loads one locale's messages; each locale is its own module. */`);
726
820
  lines.push(javascript ? "export const loaders = {" : "export const loaders: Readonly<Record<string, () => Promise<typeof first>>> = {");
727
- lines.push(locales.map((locale) => ` ${JSON.stringify(locale)}: () => import("./${locale}.${extension}")`).join(",\n"));
821
+ lines.push(locales.map((locale) => ` ${jsLiteral(locale)}: () => import(${jsLiteral(`./${locale}.${extension}`)})`).join(",\n"));
728
822
  lines.push("};");
729
823
  lines.push("");
730
824
  return lines.join("\n");
@@ -1 +1 @@
1
- {"version":3,"file":"compile.js","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compile.js","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"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"}