@inlang/paraglide-js 2.10.0 → 2.12.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.
Files changed (88) hide show
  1. package/README.md +11 -4
  2. package/dist/compiler/compile-bundle.d.ts +4 -0
  3. package/dist/compiler/compile-bundle.d.ts.map +1 -1
  4. package/dist/compiler/compile-bundle.js +317 -22
  5. package/dist/compiler/compile-bundle.js.map +1 -1
  6. package/dist/compiler/compile-bundle.test.js +120 -38
  7. package/dist/compiler/compile-bundle.test.js.map +1 -1
  8. package/dist/compiler/compile-message.d.ts +1 -1
  9. package/dist/compiler/compile-message.d.ts.map +1 -1
  10. package/dist/compiler/compile-message.js +87 -8
  11. package/dist/compiler/compile-message.js.map +1 -1
  12. package/dist/compiler/compile-message.test.js +236 -3
  13. package/dist/compiler/compile-message.test.js.map +1 -1
  14. package/dist/compiler/compile-pattern.d.ts +3 -1
  15. package/dist/compiler/compile-pattern.d.ts.map +1 -1
  16. package/dist/compiler/compile-pattern.js +83 -18
  17. package/dist/compiler/compile-pattern.js.map +1 -1
  18. package/dist/compiler/compile-pattern.test.js +53 -0
  19. package/dist/compiler/compile-pattern.test.js.map +1 -1
  20. package/dist/compiler/compile-project.d.ts.map +1 -1
  21. package/dist/compiler/compile-project.js +26 -1
  22. package/dist/compiler/compile-project.js.map +1 -1
  23. package/dist/compiler/compile-project.test.js +80 -112
  24. package/dist/compiler/compile-project.test.js.map +1 -1
  25. package/dist/compiler/compiler-options.d.ts +45 -0
  26. package/dist/compiler/compiler-options.d.ts.map +1 -1
  27. package/dist/compiler/compiler-options.js.map +1 -1
  28. package/dist/compiler/index.d.ts +1 -1
  29. package/dist/compiler/index.d.ts.map +1 -1
  30. package/dist/compiler/index.js.map +1 -1
  31. package/dist/compiler/jsdoc-types.d.ts +2 -0
  32. package/dist/compiler/jsdoc-types.d.ts.map +1 -1
  33. package/dist/compiler/jsdoc-types.js +5 -1
  34. package/dist/compiler/jsdoc-types.js.map +1 -1
  35. package/dist/compiler/output-structure/locale-modules.d.ts +1 -1
  36. package/dist/compiler/output-structure/locale-modules.d.ts.map +1 -1
  37. package/dist/compiler/output-structure/locale-modules.js +27 -3
  38. package/dist/compiler/output-structure/locale-modules.js.map +1 -1
  39. package/dist/compiler/output-structure/locale-modules.test.js +24 -0
  40. package/dist/compiler/output-structure/locale-modules.test.js.map +1 -1
  41. package/dist/compiler/output-structure/message-modules.d.ts +1 -1
  42. package/dist/compiler/output-structure/message-modules.d.ts.map +1 -1
  43. package/dist/compiler/output-structure/message-modules.js +12 -4
  44. package/dist/compiler/output-structure/message-modules.js.map +1 -1
  45. package/dist/compiler/output-structure/message-modules.test.js +24 -0
  46. package/dist/compiler/output-structure/message-modules.test.js.map +1 -1
  47. package/dist/compiler/runtime/create-runtime.d.ts +1 -0
  48. package/dist/compiler/runtime/create-runtime.d.ts.map +1 -1
  49. package/dist/compiler/runtime/create-runtime.js +81 -6
  50. package/dist/compiler/runtime/create-runtime.js.map +1 -1
  51. package/dist/compiler/runtime/extract-locale-from-request-async.d.ts.map +1 -1
  52. package/dist/compiler/runtime/extract-locale-from-request-async.js +4 -3
  53. package/dist/compiler/runtime/extract-locale-from-request-async.js.map +1 -1
  54. package/dist/compiler/runtime/extract-locale-from-request.d.ts +2 -0
  55. package/dist/compiler/runtime/extract-locale-from-request.d.ts.map +1 -1
  56. package/dist/compiler/runtime/extract-locale-from-request.js +12 -2
  57. package/dist/compiler/runtime/extract-locale-from-request.js.map +1 -1
  58. package/dist/compiler/runtime/extract-locale-from-request.test.js +24 -0
  59. package/dist/compiler/runtime/extract-locale-from-request.test.js.map +1 -1
  60. package/dist/compiler/runtime/get-locale.d.ts +7 -0
  61. package/dist/compiler/runtime/get-locale.d.ts.map +1 -1
  62. package/dist/compiler/runtime/get-locale.js +48 -17
  63. package/dist/compiler/runtime/get-locale.js.map +1 -1
  64. package/dist/compiler/runtime/set-locale.d.ts.map +1 -1
  65. package/dist/compiler/runtime/set-locale.js +6 -2
  66. package/dist/compiler/runtime/set-locale.js.map +1 -1
  67. package/dist/compiler/runtime/set-locale.test.js +30 -0
  68. package/dist/compiler/runtime/set-locale.test.js.map +1 -1
  69. package/dist/compiler/runtime/should-redirect.d.ts.map +1 -1
  70. package/dist/compiler/runtime/should-redirect.js +11 -6
  71. package/dist/compiler/runtime/should-redirect.js.map +1 -1
  72. package/dist/compiler/runtime/should-redirect.test.js +88 -0
  73. package/dist/compiler/runtime/should-redirect.test.js.map +1 -1
  74. package/dist/compiler/runtime/type.d.ts +3 -0
  75. package/dist/compiler/runtime/type.d.ts.map +1 -1
  76. package/dist/compiler/runtime/variables.d.ts +33 -0
  77. package/dist/compiler/runtime/variables.d.ts.map +1 -1
  78. package/dist/compiler/runtime/variables.js +69 -0
  79. package/dist/compiler/runtime/variables.js.map +1 -1
  80. package/dist/compiler/server/middleware.d.ts.map +1 -1
  81. package/dist/compiler/server/middleware.js +37 -14
  82. package/dist/compiler/server/middleware.js.map +1 -1
  83. package/dist/compiler/server/middleware.test.js +147 -0
  84. package/dist/compiler/server/middleware.test.js.map +1 -1
  85. package/dist/compiler/types.d.ts +42 -0
  86. package/dist/compiler/types.d.ts.map +1 -1
  87. package/dist/services/env-variables/index.js +1 -1
  88. package/package.json +6 -4
package/README.md CHANGED
@@ -126,7 +126,13 @@ Paraglide compiles an [inlang project](https://inlang.com/docs/introduction#how-
126
126
 
127
127
  ## Message Format
128
128
 
129
- Paraglide uses `Intl.PluralRules` for locale-aware pluralization, supporting all CLDR plural categories (zero, one, two, few, many, other) and ordinals (1st, 2nd, 3rd). Gender and custom selects are supported via the variants system.
129
+ Paraglide supports locale-aware formatting via declaration formatters:
130
+
131
+ - `plural` (`Intl.PluralRules`) for plural and ordinal categories
132
+ - `number` (`Intl.NumberFormat`) for numbers, currency, compact notation, and more
133
+ - `datetime` (`Intl.DateTimeFormat`) for dates/times with locale-aware output
134
+
135
+ Gender and custom selects are supported via the variants system.
130
136
 
131
137
  ```js
132
138
  // Pluralization example
@@ -138,7 +144,7 @@ m.items_in_cart({ count: 5 }); // "5 items in cart"
138
144
 
139
145
  Message format is **plugin-based** — use the default inlang format, or switch to i18next, JSON, or ICU MessageFormat via [plugins](https://inlang.com/c/plugins). If your team relies on ICU MessageFormat 1 syntax, use the [inlang-icu-messageformat-1 plugin](https://inlang.com/m/p7c8m1d2/plugin-inlang-icu-messageformat-1).
140
146
 
141
- **[Pluralization & Variants Docs →](https://inlang.com/m/gerre34r/library-inlang-paraglideJs/variants)**
147
+ **[Formatting Docs →](https://inlang.com/m/gerre34r/library-inlang-paraglideJs/formatting)** · **[Pluralization & Variants Docs →](https://inlang.com/m/gerre34r/library-inlang-paraglideJs/variants)**
142
148
 
143
149
  ## Comparison
144
150
 
@@ -193,16 +199,17 @@ Paraglide is built on the [open inlang format](https://github.com/opral/inlang-s
193
199
  - [Getting Started](https://inlang.com/m/gerre34r/library-inlang-paraglideJs)
194
200
  - [Framework Guides](https://inlang.com/m/gerre34r/library-inlang-paraglideJs/react-router) (React Router, SvelteKit, Astro, etc.)
195
201
  - [Message Syntax & Pluralization](https://inlang.com/m/gerre34r/library-inlang-paraglideJs/variants)
202
+ - [Formatting (Number/Date)](https://inlang.com/m/gerre34r/library-inlang-paraglideJs/formatting)
196
203
  - [Routing & SSR](https://inlang.com/m/gerre34r/library-inlang-paraglideJs/server-side-rendering)
197
204
  - [API Reference](https://inlang.com/m/gerre34r/library-inlang-paraglideJs)
198
205
 
199
206
  ## Contributing
200
207
 
201
- We welcome contributions! See [CONTRIBUTING.md](./CONTRIBUTING.md) for guidelines.
208
+ We welcome contributions! See [CONTRIBUTING.md](https://github.com/opral/paraglide-js/blob/main/CONTRIBUTING.md) for guidelines.
202
209
 
203
210
  - [GitHub Issues](https://github.com/opral/inlang-paraglide-js/issues)
204
211
  - [Discord Community](https://discord.gg/gdMPPWy57R)
205
212
 
206
213
  ## License
207
214
 
208
- MIT — see [LICENSE](./LICENSE)
215
+ MIT — see [LICENSE](https://github.com/opral/paraglide-js/blob/main/LICENSE)
@@ -10,6 +10,8 @@ export type CompiledBundleWithMessages = {
10
10
  };
11
11
  /** Match literal types inferred from bundle variants */
12
12
  matchTypes: InputMatchTypes;
13
+ /** Shared typedef name for bundle input types used across emitted JSDoc */
14
+ inputTypeAliasName?: string;
13
15
  };
14
16
  /**
15
17
  * Compiles all the messages in the bundle and returns an index-function + each compiled message
@@ -19,5 +21,7 @@ export declare const compileBundle: (args: {
19
21
  fallbackMap: Record<string, string | undefined>;
20
22
  messageReferenceExpression: (locale: string, bundleId: string) => string;
21
23
  settings?: ProjectSettings;
24
+ experimentalMiddlewareLocaleSplitting?: boolean;
22
25
  }) => CompiledBundleWithMessages;
26
+ export declare function toBundleInputTypeAliasName(safeBundleId: string): string;
23
27
  //# sourceMappingURL=compile-bundle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"compile-bundle.d.ts","sourceRoot":"","sources":["../../src/compiler/compile-bundle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,MAAM,EACN,YAAY,EACZ,OAAO,EACP,eAAe,EACf,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAEN,KAAK,eAAe,EACpB,MAAM,kBAAkB,CAAC;AAI1B,MAAM,MAAM,0BAA0B,GAAG;IACxC,kDAAkD;IAClD,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACzB,gDAAgD;IAChD,QAAQ,EAAE;QACT,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;KACpC,CAAC;IACF,wDAAwD;IACxD,UAAU,EAAE,eAAe,CAAC;CAC5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,GAAI,MAAM;IACnC,MAAM,EAAE,YAAY,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAChD,0BAA0B,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;IACzE,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC3B,KAAG,0BA+BH,CAAC"}
1
+ {"version":3,"file":"compile-bundle.d.ts","sourceRoot":"","sources":["../../src/compiler/compile-bundle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,MAAM,EACN,YAAY,EAGZ,OAAO,EACP,eAAe,EACf,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAGN,KAAK,eAAe,EACpB,MAAM,kBAAkB,CAAC;AAK1B,MAAM,MAAM,0BAA0B,GAAG;IACxC,kDAAkD;IAClD,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACzB,gDAAgD;IAChD,QAAQ,EAAE;QACT,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;KACpC,CAAC;IACF,wDAAwD;IACxD,UAAU,EAAE,eAAe,CAAC;IAC5B,2EAA2E;IAC3E,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,GAAI,MAAM;IACnC,MAAM,EAAE,YAAY,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAChD,0BAA0B,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;IACzE,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,qCAAqC,CAAC,EAAE,OAAO,CAAC;CAChD,KAAG,0BAwCH,CAAC;AA4PF,wBAAgB,0BAA0B,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAEvE"}
@@ -1,5 +1,6 @@
1
1
  import { compileMessage } from "./compile-message.js";
2
- import { jsDocBundleFunctionTypes, } from "./jsdoc-types.js";
2
+ import { inputTypeForName, jsDocBundleFunctionTypes, } from "./jsdoc-types.js";
3
+ import { isValidIdentifier, quotePropertyKey } from "./variable-access.js";
3
4
  import { toSafeModuleId } from "./safe-module-id.js";
4
5
  import { escapeForDoubleQuoteString } from "../services/codegen/escape.js";
5
6
  /**
@@ -7,12 +8,15 @@ import { escapeForDoubleQuoteString } from "../services/codegen/escape.js";
7
8
  */
8
9
  export const compileBundle = (args) => {
9
10
  const compiledMessages = {};
11
+ const safeBundleId = toSafeModuleId(args.bundle.id);
12
+ const inputTypeAliasName = toBundleInputTypeAliasName(safeBundleId);
10
13
  const matchTypes = collectInputMatchTypes(args.bundle);
14
+ const hasMarkup = bundleHasMarkup(args.bundle);
11
15
  for (const message of args.bundle.messages) {
12
16
  if (compiledMessages[message.locale]) {
13
17
  throw new Error(`Duplicate locale: ${message.locale}`);
14
18
  }
15
- const compiledMessage = compileMessage(args.bundle.declarations, message, message.variants, matchTypes);
19
+ const compiledMessage = compileMessage(args.bundle.declarations, message, message.variants, matchTypes, inputTypeAliasName);
16
20
  // set the pattern for the language tag
17
21
  compiledMessages[message.locale] = compiledMessage;
18
22
  }
@@ -23,9 +27,13 @@ export const compileBundle = (args) => {
23
27
  messageReferenceExpression: args.messageReferenceExpression,
24
28
  settings: args.settings,
25
29
  matchTypes,
30
+ hasMarkup,
31
+ experimentalMiddlewareLocaleSplitting: args.experimentalMiddlewareLocaleSplitting ?? false,
32
+ inputTypeAliasName,
26
33
  }),
27
34
  messages: compiledMessages,
28
35
  matchTypes,
36
+ inputTypeAliasName,
29
37
  };
30
38
  };
31
39
  const compileBundleFunction = (args) => {
@@ -34,30 +42,87 @@ const compileBundleFunction = (args) => {
34
42
  const safeBundleId = toSafeModuleId(args.bundle.id);
35
43
  const isSafeBundleId = safeBundleId === args.bundle.id;
36
44
  const isFullyTranslated = args.availableLocales.length === args.settings?.locales.length;
37
- let code = `/**
38
- * This function has been compiled by [Paraglide JS](https://inlang.com/m/gerre34r).
39
- *
40
- * - Changing this function will be over-written by the next build.
41
- *
42
- * - If you want to change the translations, you can either edit the source files e.g. \`en.json\`, or
43
- * use another inlang app like [Fink](https://inlang.com/m/tdozzpar) or the [VSCode extension Sherlock](https://inlang.com/m/r7kp499g).
44
- * ${jsDocBundleFunctionTypes({
45
+ const inputType = args.inputTypeAliasName;
46
+ const localesUnion = args.availableLocales.length === 0
47
+ ? "never"
48
+ : args.availableLocales.map((locale) => `"${locale}"`).join(" | ");
49
+ const optionsType = `{ locale?: ${localesUnion} }`;
50
+ const inputsParameterType = `${hasInputs ? "inputs" : "inputs?"}: ${inputType}`;
51
+ const bundleFunctionType = `(${inputsParameterType}, options?: ${optionsType}) => LocalizedString`;
52
+ const partsFunctionType = `(${inputsParameterType}, options?: ${optionsType}) => import('../runtime.js').MessagePart[]`;
53
+ const markupSchemaType = buildMarkupSchemaType(args.bundle, args.matchTypes);
54
+ const messageMetadataType = `import('../runtime.js').MessageMetadata<${inputType}, ${optionsType}, ${markupSchemaType}>`;
55
+ const compileLocaleReturnStatements = (mode, continuationIndent) => args.availableLocales
56
+ .map((locale, index) => {
57
+ const condition = !isFullyTranslated || index < args.availableLocales.length - 1
58
+ ? `if (locale === "${locale}") `
59
+ : "";
60
+ const prefix = index > 0 ? continuationIndent : "";
61
+ const messageRef = args.messageReferenceExpression(locale, args.bundle.id);
62
+ if (mode === "string") {
63
+ return `${prefix}${condition}return ${messageRef}(inputs)`;
64
+ }
65
+ return `${prefix}${condition}return typeof ${messageRef}.parts === "function" ? ${messageRef}.parts(inputs) : [{ type: "text", value: ${messageRef}(inputs) }]`;
66
+ })
67
+ .join("\n");
68
+ const englishMatchTableDoc = buildEnglishMatchTableDoc(args.bundle);
69
+ const commonJsDoc = `/**
70
+ ${englishMatchTableDoc}${jsDocBundleFunctionTypes({
45
71
  inputs,
46
72
  locales: args.availableLocales,
47
73
  matchTypes: args.matchTypes,
74
+ inputTypeOverride: args.inputTypeAliasName,
48
75
  })}
49
- */
50
- /* @__NO_SIDE_EFFECTS__ */
51
- ${isSafeBundleId ? "export " : ""}const ${safeBundleId} = (inputs${hasInputs ? "" : " = {}"}, options = {}) => {
52
- if (experimentalMiddlewareLocaleSplitting && isServer === false) {
53
- return /** @type {any} */ (globalThis).__paraglide_ssr.${safeBundleId}(inputs)
54
- }
55
- const locale = experimentalStaticLocale ?? options.locale ?? getLocale()
56
- trackMessageCall("${safeBundleId}", locale)
57
- ${args.availableLocales
58
- .map((locale, index) => `${index > 0 ? " " : ""}${!isFullyTranslated || index < args.availableLocales.length - 1 ? `if (locale === "${locale}") ` : ""}return ${args.messageReferenceExpression(locale, args.bundle.id)}(inputs)`)
59
- .join("\n")}${!isFullyTranslated ? `\n return /** @type {LocalizedString} */ ("${args.bundle.id}")` : ""}
60
- };`;
76
+ */`;
77
+ const clientMiddlewareGuard = (indent) => {
78
+ if (!args.experimentalMiddlewareLocaleSplitting) {
79
+ return "";
80
+ }
81
+ return `\n${indent}if (experimentalMiddlewareLocaleSplitting && isServer === false) {\n${indent}\treturn /** @type {any} */ (globalThis).__paraglide_ssr.${safeBundleId}(inputs)\n${indent}}`;
82
+ };
83
+ const clientPartsMiddlewareGuard = (indent) => {
84
+ if (!args.experimentalMiddlewareLocaleSplitting) {
85
+ return "";
86
+ }
87
+ return `\n${indent}if (experimentalMiddlewareLocaleSplitting && isServer === false) {\n${indent}\tconst serverMessage = /** @type {any} */ (globalThis).__paraglide_ssr.${safeBundleId}\n${indent}\tif (typeof serverMessage.parts === "function") {\n${indent}\t\treturn /** @type {import('../runtime.js').MessagePart[]} */ (serverMessage.parts(inputs))\n${indent}\t}\n${indent}\treturn /** @type {import('../runtime.js').MessagePart[]} */ ([{ type: "text", value: serverMessage(inputs) }])\n${indent}}`;
88
+ };
89
+ const maybeTrackMessageCall = (indent) => {
90
+ if (!args.experimentalMiddlewareLocaleSplitting) {
91
+ return "";
92
+ }
93
+ return `\n${indent}trackMessageCall("${safeBundleId}", locale)`;
94
+ };
95
+ let code = "";
96
+ if (!args.hasMarkup) {
97
+ code = `${commonJsDoc}
98
+ ${isSafeBundleId ? "export " : ""}const ${safeBundleId} = /** @type {(${bundleFunctionType}) & ${messageMetadataType}} */ ((inputs${hasInputs ? "" : " = {}"}, options = {}) => {${clientMiddlewareGuard("\t")}
99
+ const locale = experimentalStaticLocale ?? options.locale ?? getLocale()${maybeTrackMessageCall("\t")}
100
+ ${compileLocaleReturnStatements("string", "\t")}${!isFullyTranslated
101
+ ? `\n return /** @type {LocalizedString} */ ("${args.bundle.id}")`
102
+ : ""}
103
+ });`;
104
+ }
105
+ else {
106
+ code = `${commonJsDoc}
107
+ ${isSafeBundleId ? "export " : ""}const ${safeBundleId} = /** @type {(${bundleFunctionType}) & { parts: ${partsFunctionType} } & ${messageMetadataType}} */ (
108
+ /* @__PURE__ */ Object.assign(
109
+ /** @type {${bundleFunctionType}} */ ((inputs${hasInputs ? "" : " = {}"}, options = {}) => {${clientMiddlewareGuard("\t\t\t")}
110
+ const locale = experimentalStaticLocale ?? options.locale ?? getLocale()${maybeTrackMessageCall("\t\t\t")}
111
+ ${compileLocaleReturnStatements("string", "\t\t\t")}${!isFullyTranslated
112
+ ? `\n return /** @type {LocalizedString} */ (${JSON.stringify(args.bundle.id)})`
113
+ : ""}
114
+ }),
115
+ {
116
+ parts: /** @type {${partsFunctionType}} */ ((inputs${hasInputs ? "" : " = {}"}, options = {}) => {${clientPartsMiddlewareGuard("\t\t\t\t")}
117
+ const locale = experimentalStaticLocale ?? options.locale ?? getLocale()${maybeTrackMessageCall("\t\t\t\t")}
118
+ ${compileLocaleReturnStatements("parts", "\t\t\t\t")}${!isFullyTranslated
119
+ ? `\n return /** @type {import('../runtime.js').MessagePart[]} */ ([{ type: "text", value: ${JSON.stringify(args.bundle.id)} }])`
120
+ : ""}
121
+ })
122
+ }
123
+ )
124
+ );`;
125
+ }
61
126
  if (isSafeBundleId === false) {
62
127
  code += `\nexport { ${safeBundleId} as "${escapeForDoubleQuoteString(args.bundle.id)}" }`;
63
128
  }
@@ -66,6 +131,231 @@ ${isSafeBundleId ? "export " : ""}const ${safeBundleId} = (inputs${hasInputs ? "
66
131
  node: args.bundle,
67
132
  };
68
133
  };
134
+ function buildEnglishMatchTableDoc(bundle) {
135
+ const message = selectEnglishMessage(bundle);
136
+ if (!message) {
137
+ return "";
138
+ }
139
+ const selectorKeys = collectSelectorKeys(message);
140
+ const headerCells = [...selectorKeys, "output"];
141
+ const lines = [
142
+ `* | ${headerCells.map(escapeTableCell).join(" | ")} |`,
143
+ `* | ${headerCells.map(() => "---").join(" | ")} |`,
144
+ ];
145
+ for (const variant of message.variants) {
146
+ const rowValues = selectorKeys.map((key) => getMatchCellValue(variant, key));
147
+ const serializedOutput = serializePatternPreview(variant.pattern);
148
+ const outputValue = JSON.stringify(serializedOutput.length > 160
149
+ ? `${serializedOutput.slice(0, 157)}...`
150
+ : serializedOutput);
151
+ lines.push(`* | ${[...rowValues, outputValue].map(escapeTableCell).join(" | ")} |`);
152
+ }
153
+ lines.push("*");
154
+ return lines.join("\n");
155
+ }
156
+ function selectEnglishMessage(bundle) {
157
+ return (bundle.messages.find((message) => message.locale === "en") ??
158
+ bundle.messages.find((message) => message.locale.startsWith("en-")));
159
+ }
160
+ function collectSelectorKeys(message) {
161
+ const keys = [];
162
+ const seen = new Set();
163
+ for (const variant of message.variants) {
164
+ for (const match of variant.matches ?? []) {
165
+ if (seen.has(match.key))
166
+ continue;
167
+ seen.add(match.key);
168
+ keys.push(match.key);
169
+ }
170
+ }
171
+ return keys;
172
+ }
173
+ function getMatchCellValue(variant, key) {
174
+ const match = (variant.matches ?? []).find((entry) => entry.key === key);
175
+ if (!match || match.type === "catchall-match") {
176
+ return "*";
177
+ }
178
+ return JSON.stringify(match.value);
179
+ }
180
+ function escapeTableCell(value) {
181
+ return value
182
+ .replace(/\|/g, "\\|")
183
+ .replace(/\r?\n/g, " ")
184
+ .replaceAll("*/", "*\\/");
185
+ }
186
+ export function toBundleInputTypeAliasName(safeBundleId) {
187
+ return `${toBundleTypeBaseName(safeBundleId)}Inputs`;
188
+ }
189
+ function toBundleTypeBaseName(safeBundleId) {
190
+ let baseName = "";
191
+ let capitalizeNext = true;
192
+ for (const character of safeBundleId) {
193
+ if (character === "_") {
194
+ baseName += "_";
195
+ capitalizeNext = true;
196
+ continue;
197
+ }
198
+ if (character >= "a" && character <= "z") {
199
+ baseName += capitalizeNext ? character.toUpperCase() : character;
200
+ }
201
+ else {
202
+ baseName += character;
203
+ }
204
+ capitalizeNext = false;
205
+ }
206
+ if (!baseName) {
207
+ baseName = "Message";
208
+ }
209
+ if (!/^[A-Za-z_]/.test(baseName)) {
210
+ baseName = `Message${baseName}`;
211
+ }
212
+ return baseName;
213
+ }
214
+ function serializePatternPreview(pattern) {
215
+ let result = "";
216
+ for (const part of pattern) {
217
+ if (part.type === "text") {
218
+ result += part.value;
219
+ continue;
220
+ }
221
+ if (part.type === "expression") {
222
+ if (part.arg.type === "literal") {
223
+ result += part.arg.value;
224
+ }
225
+ else {
226
+ result += `{${part.arg.name}}`;
227
+ }
228
+ }
229
+ }
230
+ return result.replace(/\s+/g, " ").trim();
231
+ }
232
+ function buildMarkupSchemaType(bundle, matchTypes) {
233
+ const tagAccumulators = new Map();
234
+ const inputVariableNames = new Set(bundle.declarations
235
+ .filter((declaration) => declaration.type === "input-variable")
236
+ .map((declaration) => declaration.name));
237
+ for (const message of bundle.messages) {
238
+ for (const variant of message.variants) {
239
+ for (const part of variant.pattern) {
240
+ if (part.type !== "markup-start" && part.type !== "markup-standalone") {
241
+ continue;
242
+ }
243
+ const tag = ensureMarkupTagAccumulator(tagAccumulators, part.name);
244
+ tag.occurrences += 1;
245
+ if (part.type === "markup-start") {
246
+ tag.childrenTrue = true;
247
+ }
248
+ else {
249
+ tag.childrenFalse = true;
250
+ }
251
+ collectMarkupOptions(tag, part, inputVariableNames, matchTypes);
252
+ collectMarkupAttributes(tag, part);
253
+ }
254
+ }
255
+ }
256
+ if (tagAccumulators.size === 0) {
257
+ return "{}";
258
+ }
259
+ const tagEntries = Array.from(tagAccumulators.entries())
260
+ .sort(([leftName], [rightName]) => leftName.localeCompare(rightName))
261
+ .map(([tagName, tag]) => `${renderTypeObjectKey(tagName)}: ${renderMarkupTagType(tag)}`);
262
+ return `{ ${tagEntries.join("; ")} }`;
263
+ }
264
+ function ensureMarkupTagAccumulator(accumulators, tagName) {
265
+ const existing = accumulators.get(tagName);
266
+ if (existing) {
267
+ return existing;
268
+ }
269
+ const created = {
270
+ occurrences: 0,
271
+ childrenTrue: false,
272
+ childrenFalse: false,
273
+ options: new Map(),
274
+ attributes: new Map(),
275
+ };
276
+ accumulators.set(tagName, created);
277
+ return created;
278
+ }
279
+ function collectMarkupOptions(tag, part, inputVariableNames, matchTypes) {
280
+ const seenOptions = new Set();
281
+ for (const option of part.options ?? []) {
282
+ const optionAccumulator = ensureMarkupValueAccumulator(tag.options, option.name);
283
+ optionAccumulator.types.add(resolveMarkupOptionType(option.value, inputVariableNames, matchTypes));
284
+ if (!seenOptions.has(option.name)) {
285
+ optionAccumulator.count += 1;
286
+ seenOptions.add(option.name);
287
+ }
288
+ }
289
+ }
290
+ function collectMarkupAttributes(tag, part) {
291
+ const seenAttributes = new Set();
292
+ for (const attribute of part.attributes ?? []) {
293
+ const attributeAccumulator = ensureMarkupValueAccumulator(tag.attributes, attribute.name);
294
+ attributeAccumulator.types.add(attribute.value === true ? "true" : "string");
295
+ if (!seenAttributes.has(attribute.name)) {
296
+ attributeAccumulator.count += 1;
297
+ seenAttributes.add(attribute.name);
298
+ }
299
+ }
300
+ }
301
+ function resolveMarkupOptionType(value, inputVariableNames, matchTypes) {
302
+ if (value.type === "literal") {
303
+ return "string";
304
+ }
305
+ if (inputVariableNames.has(value.name)) {
306
+ return inputTypeForName(value.name, matchTypes);
307
+ }
308
+ return "NonNullable<unknown>";
309
+ }
310
+ function ensureMarkupValueAccumulator(values, name) {
311
+ const existing = values.get(name);
312
+ if (existing) {
313
+ return existing;
314
+ }
315
+ const created = { count: 0, types: new Set() };
316
+ values.set(name, created);
317
+ return created;
318
+ }
319
+ function renderMarkupTagType(tag) {
320
+ return `{ options: ${renderMarkupObjectType(tag.options, tag.occurrences)}; attributes: ${renderMarkupObjectType(tag.attributes, tag.occurrences)}; children: ${renderChildrenType(tag)} }`;
321
+ }
322
+ function renderMarkupObjectType(values, occurrenceCount) {
323
+ if (values.size === 0) {
324
+ return "{}";
325
+ }
326
+ const properties = Array.from(values.entries())
327
+ .sort(([leftName], [rightName]) => leftName.localeCompare(rightName))
328
+ .map(([name, value]) => {
329
+ const isOptional = value.count < occurrenceCount;
330
+ return `${renderTypeObjectKey(name)}${isOptional ? "?" : ""}: ${renderTypeUnion(value.types)}`;
331
+ });
332
+ return `{ ${properties.join("; ")} }`;
333
+ }
334
+ function renderChildrenType(tag) {
335
+ if (tag.childrenTrue && tag.childrenFalse) {
336
+ return "boolean";
337
+ }
338
+ if (tag.childrenTrue) {
339
+ return "true";
340
+ }
341
+ if (tag.childrenFalse) {
342
+ return "false";
343
+ }
344
+ return "boolean";
345
+ }
346
+ function renderTypeUnion(types) {
347
+ const sorted = Array.from(types).sort();
348
+ if (sorted.length === 0) {
349
+ return "never";
350
+ }
351
+ if (sorted.length === 1) {
352
+ return sorted[0] ?? "never";
353
+ }
354
+ return sorted.join(" | ");
355
+ }
356
+ function renderTypeObjectKey(name) {
357
+ return isValidIdentifier(name) ? name : quotePropertyKey(name);
358
+ }
69
359
  function collectInputMatchTypes(bundle) {
70
360
  const inputNames = new Set(bundle.declarations
71
361
  ?.filter((decl) => decl.type === "input-variable")
@@ -104,4 +394,9 @@ function collectInputMatchTypes(bundle) {
104
394
  }
105
395
  return matchTypes;
106
396
  }
397
+ function bundleHasMarkup(bundle) {
398
+ return bundle.messages.some((message) => message.variants.some((variant) => variant.pattern.some((part) => part.type === "markup-start" ||
399
+ part.type === "markup-end" ||
400
+ part.type === "markup-standalone")));
401
+ }
107
402
  //# sourceMappingURL=compile-bundle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"compile-bundle.js","sourceRoot":"","sources":["../../src/compiler/compile-bundle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compile-bundle.js","sourceRoot":"","sources":["../../src/compiler/compile-bundle.ts"],"names":[],"mappings":"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"}