@inlang/paraglide-js 2.15.0 → 2.15.2

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 (30) hide show
  1. package/README.md +19 -13
  2. package/dist/compiler/create-readme.d.ts.map +1 -1
  3. package/dist/compiler/create-readme.js +68 -0
  4. package/dist/compiler/create-readme.js.map +1 -1
  5. package/dist/compiler/runtime/extract-locale-from-request-async.d.ts +3 -1
  6. package/dist/compiler/runtime/extract-locale-from-request-async.d.ts.map +1 -1
  7. package/dist/compiler/runtime/extract-locale-from-request-async.js +16 -3
  8. package/dist/compiler/runtime/extract-locale-from-request-async.js.map +1 -1
  9. package/dist/compiler/runtime/extract-locale-from-request-async.test.js +81 -0
  10. package/dist/compiler/runtime/extract-locale-from-request-async.test.js.map +1 -1
  11. package/dist/compiler/runtime/extract-locale-from-request.d.ts +8 -2
  12. package/dist/compiler/runtime/extract-locale-from-request.d.ts.map +1 -1
  13. package/dist/compiler/runtime/extract-locale-from-request.js +23 -4
  14. package/dist/compiler/runtime/extract-locale-from-request.js.map +1 -1
  15. package/dist/compiler/runtime/extract-locale-from-request.test.js +58 -0
  16. package/dist/compiler/runtime/extract-locale-from-request.test.js.map +1 -1
  17. package/dist/compiler/runtime/should-redirect.d.ts +22 -2
  18. package/dist/compiler/runtime/should-redirect.d.ts.map +1 -1
  19. package/dist/compiler/runtime/should-redirect.js +30 -5
  20. package/dist/compiler/runtime/should-redirect.js.map +1 -1
  21. package/dist/compiler/runtime/should-redirect.test.js +99 -0
  22. package/dist/compiler/runtime/should-redirect.test.js.map +1 -1
  23. package/dist/compiler/server/middleware.d.ts +7 -3
  24. package/dist/compiler/server/middleware.d.ts.map +1 -1
  25. package/dist/compiler/server/middleware.js +53 -15
  26. package/dist/compiler/server/middleware.js.map +1 -1
  27. package/dist/compiler/server/middleware.test.js +120 -0
  28. package/dist/compiler/server/middleware.test.js.map +1 -1
  29. package/dist/services/env-variables/index.js +1 -1
  30. package/package.json +2 -2
package/README.md CHANGED
@@ -16,11 +16,16 @@
16
16
 
17
17
  <p align="center">
18
18
  <sub>Used in production by</sub><br/><br/>
19
- <a href="https://michelin.com"><img src="https://www.google.com/s2/favicons?domain=michelin.com&sz=32" alt="Michelin" height="24" /></a>&nbsp;&nbsp;&nbsp;
20
- <a href="https://idealista.com"><img src="https://www.google.com/s2/favicons?domain=idealista.com&sz=32" alt="Idealista" height="24" /></a>&nbsp;&nbsp;&nbsp;
21
- <a href="https://architonic.com"><img src="https://www.google.com/s2/favicons?domain=architonic.com&sz=32" alt="Architonic" height="24" /></a>&nbsp;&nbsp;&nbsp;
22
- <a href="https://0.email"><img src="https://www.google.com/s2/favicons?domain=0.email&sz=32" alt="0.email" height="24" /></a>&nbsp;&nbsp;&nbsp;
23
- <sub>...and more</sub>
19
+ <a href="https://www.kraftheinz.com/"><img src="https://github.com/opral/paraglide-js/blob/main/assets/used-by/kraft-heinz.png?raw=true" alt="Kraft Heinz" height="18"></a>&nbsp;&nbsp;&nbsp;
20
+ <a href="https://www.bose.com/"><img src="https://github.com/opral/paraglide-js/blob/main/assets/used-by/bose.svg?raw=true" alt="Bose" height="18"></a>&nbsp;&nbsp;&nbsp;
21
+ <a href="https://www.disney.co.jp/"><img src="https://github.com/opral/paraglide-js/blob/main/assets/used-by/disney.svg?raw=true" alt="Disney" height="18"></a>&nbsp;&nbsp;&nbsp;
22
+ <a href="https://ethz.ch/de.html"><img src="https://github.com/opral/paraglide-js/blob/main/assets/used-by/eth-zurich.svg?raw=true" alt="ETH Zurich" height="18"></a>&nbsp;&nbsp;&nbsp;
23
+ <a href="https://brave.com/"><img src="https://github.com/opral/paraglide-js/blob/main/assets/used-by/brave.svg?raw=true" alt="Brave" height="18"></a>&nbsp;&nbsp;&nbsp;
24
+ <a href="https://www.michelin.com/"><img src="https://github.com/opral/paraglide-js/blob/main/assets/used-by/michelin.svg?raw=true" alt="Michelin" height="18"></a>&nbsp;&nbsp;&nbsp;
25
+ <a href="https://www.idealista.com/"><img src="https://github.com/opral/paraglide-js/blob/main/assets/used-by/idealista.svg?raw=true" alt="idealista" height="18"></a>&nbsp;&nbsp;&nbsp;
26
+ <a href="https://www.architonic.com/"><img src="https://github.com/opral/paraglide-js/blob/main/assets/used-by/architonic.png?raw=true" alt="Architonic" height="18"></a>&nbsp;&nbsp;&nbsp;
27
+ <a href="https://www.finanzen100.de/"><img src="https://github.com/opral/paraglide-js/blob/main/assets/used-by/finanzen100.png?raw=true" alt="Finanzen100" height="18"></a>&nbsp;&nbsp;&nbsp;
28
+ <a href="https://0.email/"><img src="https://github.com/opral/paraglide-js/blob/main/assets/used-by/zero-email.svg?raw=true" alt="0.email" height="18"></a>
24
29
  </p>
25
30
 
26
31
  <p align="center">
@@ -50,7 +55,7 @@ The compiler generates typed message functions. Your bundler tree-shakes unused
50
55
 
51
56
  | | |
52
57
  | ------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
53
- | **Smaller i18n Bundle** | Up to 70% smaller i18n bundle size than runtime i18n libraries. |
58
+ | **Smaller i18n Bundle** | Up to 70% smaller i18n bundle size than runtime i18n libraries. |
54
59
  | **Tree-Shakable** | Unused messages are eliminated by your bundler. |
55
60
  | **Fully Typesafe** | Autocomplete for message keys and parameters. Typos become compile errors. |
56
61
  | **Framework Agnostic** | Works with React, Vue, Svelte, Solid, TanStack, or vanilla JS/TS. |
@@ -148,13 +153,14 @@ Message format is **plugin-based** — use the default inlang format, or switch
148
153
 
149
154
  ## Comparison
150
155
 
151
- | Feature | Paraglide | i18next | react-intl |
152
- | ---------------------- | ---------------------------------- | --------------------- | --------------------- |
153
- | **i18n bundle size** | Up to 70% smaller via tree-shaking | ❌ Ships all messages | ❌ Ships all messages |
154
- | **Tree-shakable** | ✅ | ❌ | ❌ |
155
- | **Typesafe** | ✅ | Partial | ❌ |
156
- | **Framework agnostic** | ✅ | Wrappers needed | React only |
157
- | **i18n routing** | ✅ Built-in | ❌ | ❌ |
156
+ | Feature | Paraglide | i18next | react-intl |
157
+ | ----------------------- | -------------------------------------------------------------------------------- | --------------------- | --------------------- |
158
+ | **i18n bundle size** | Up to 70% smaller via tree-shaking | ❌ Ships all messages | ❌ Ships all messages |
159
+ | **Tree-shakable** | ✅ | ❌ | ❌ |
160
+ | **Typesafe** | ✅ | Partial | ❌ |
161
+ | **Framework agnostic** | ✅ | Wrappers needed | React only |
162
+ | **i18n routing** | ✅ Built-in | ❌ | ❌ |
163
+ | **ICU MessageFormat 1** | ✅ [Via plugin](https://inlang.com/m/p7c8m1d2/plugin-inlang-icu-messageformat-1) | ✅ | ✅ |
158
164
 
159
165
  **[Full Comparison →](https://inlang.com/m/gerre34r/library-inlang-paraglideJs/comparison)**
160
166
 
@@ -1 +1 @@
1
- {"version":3,"file":"create-readme.d.ts","sourceRoot":"","sources":["../../src/compiler/create-readme.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAkGnE"}
1
+ {"version":3,"file":"create-readme.d.ts","sourceRoot":"","sources":["../../src/compiler/create-readme.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAsKnE"}
@@ -89,6 +89,74 @@ await compile({
89
89
 
90
90
  See the [strategy documentation](https://inlang.com/m/gerre34r/library-inlang-paraglideJs/strategy) for details.
91
91
 
92
+ ## Markup (Rich Text)
93
+
94
+ Messages can contain markup tags for bold, links, and other inline elements. Translators control where tags appear; developers control how they render.
95
+
96
+ Important:
97
+ - Tag names are app-defined. There is no built-in list of HTML tags.
98
+ - \`{#b}...{/b}\` does not automatically render as \`<b>...</b>\`.
99
+ - Renderers/snippets are looked up by the same tag name used in the message.
100
+
101
+ ### Message syntax
102
+
103
+ \`\`\`json
104
+ {
105
+ "cta": "{#link to=|/docs| rel=$relationship @track}Read the docs{/link}",
106
+ "welcome": "{#b}Hi {name}{/b}{#icon/}"
107
+ }
108
+ \`\`\`
109
+
110
+ - \`{#tagName}\` opens a tag, \`{/tagName}\` closes it.
111
+ - \`{#tagName/}\` creates a standalone tag.
112
+ - Options: \`to=|/docs|\` or \`rel=$relationship\` (accessed via \`options.*\`).
113
+ - Attributes: \`@track\` or \`@variant=|hero|\` (accessed via \`attributes.*\`).
114
+
115
+ This is the default inlang message syntax. Paraglide's message format is plugin-based — you can use [ICU MessageFormat 1](https://inlang.com/m/p7c8m1d2/plugin-inlang-icu-messageformat-1), [i18next](https://inlang.com/m/3i8bor92/plugin-inlang-i18next), or other [plugins](https://inlang.com/c/plugins) instead.
116
+
117
+ ### Rendering markup
118
+
119
+ Calling the message function still returns **plain text** (markup stripped):
120
+
121
+ \`\`\`js
122
+ m.cta({ relationship: "noopener" }); // "Read the docs"
123
+ \`\`\`
124
+
125
+ To render markup, use the framework adapter or the low-level \`parts()\` API:
126
+
127
+ \`\`\`js
128
+ const parts = m.cta.parts({ relationship: "noopener" });
129
+ // [
130
+ // { type: "markup-start", name: "link", options: { to: "/docs", rel: "noopener" }, attributes: { track: true } },
131
+ // { type: "text", value: "Read the docs" },
132
+ // { type: "markup-end", name: "link" }
133
+ // ]
134
+ \`\`\`
135
+
136
+ Framework adapters provide a \`<ParaglideMessage>\` component that accepts markup renderers:
137
+
138
+ - \`@inlang/paraglide-js-react\`
139
+ - \`@inlang/paraglide-js-vue\`
140
+ - \`@inlang/paraglide-js-svelte\`
141
+ - \`@inlang/paraglide-js-solid\`
142
+
143
+ \`\`\`jsx
144
+ import { ParaglideMessage } from "@inlang/paraglide-js-react"; // or -vue, -svelte, -solid
145
+
146
+ <ParaglideMessage
147
+ message={m.welcome}
148
+ inputs={{ name: "Ada" }}
149
+ markup={{
150
+ b: ({ children }) => <b>{children}</b>,
151
+ icon: () => <span aria-hidden="true" className="icon-wave" />,
152
+ }}
153
+ />
154
+ \`\`\`
155
+
156
+ The available renderer/snippet names come from the message itself. You can inspect them through \`message.parts()\`, and TypeScript uses the same names to type-check your markup renderers.
157
+
158
+ See the [markup documentation](https://inlang.com/m/gerre34r/library-inlang-paraglideJs/markup) for details.
159
+
92
160
  ## Key concepts
93
161
 
94
162
  - **Tree-shakeable**: Each message is a function, enabling [up to 70% smaller i18n bundle sizes](https://inlang.com/m/gerre34r/library-inlang-paraglideJs/benchmark) than traditional i18n libraries.
@@ -1 +1 @@
1
- {"version":3,"file":"create-readme.js","sourceRoot":"","sources":["../../src/compiler/create-readme.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,IAA8B;IAC1D,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW;QACxC,CAAC,CAAC,sBAAsB,IAAI,CAAC,WAAW,MAAM;QAC9C,CAAC,CAAC,EAAE,CAAC;IAEN,OAAO;;;EAGN,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyFjB,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"create-readme.js","sourceRoot":"","sources":["../../src/compiler/create-readme.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,IAA8B;IAC1D,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW;QACxC,CAAC,CAAC,sBAAsB,IAAI,CAAC,WAAW,MAAM;QAC9C,CAAC,CAAC,EAAE,CAAC;IAEN,OAAO;;;EAGN,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6JjB,CAAC;AACF,CAAC"}
@@ -1,2 +1,4 @@
1
- export function extractLocaleFromRequestAsync(request: Request): Promise<Locale>;
1
+ export function extractLocaleFromRequestAsync(request: Request, options?: {
2
+ effectiveRequestUrl?: string | URL;
3
+ }): Promise<Locale>;
2
4
  //# sourceMappingURL=extract-locale-from-request-async.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"extract-locale-from-request-async.d.ts","sourceRoot":"","sources":["../../../src/compiler/runtime/extract-locale-from-request-async.js"],"names":[],"mappings":"AAmCO,uDAHI,OAAO,GACL,OAAO,CAAC,MAAM,CAAC,CA0B3B"}
1
+ {"version":3,"file":"extract-locale-from-request-async.d.ts","sourceRoot":"","sources":["../../../src/compiler/runtime/extract-locale-from-request-async.js"],"names":[],"mappings":"AAoCO,uDAJI,OAAO,YACP;IAAE,mBAAmB,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,GACpC,OAAO,CAAC,MAAM,CAAC,CA8B3B"}
@@ -30,12 +30,14 @@ import { extractLocaleFromRequestWithStrategies } from "./extract-locale-from-re
30
30
  * const locale = await extractLocaleFromRequestAsync(request);
31
31
  *
32
32
  * @param {Request} request - The request object to extract the locale from.
33
+ * @param {{ effectiveRequestUrl?: string | URL }} [options] - Effective request URL to use for route matching and locale detection with the URL strategy.
33
34
  * @returns {Promise<Locale>} The extracted locale.
34
35
  */
35
- export const extractLocaleFromRequestAsync = async (request) => {
36
+ export const extractLocaleFromRequestAsync = async (request, options = {}) => {
36
37
  /** @type {string|undefined} */
37
38
  let locale;
38
- const strategy = getStrategyForUrl(request.url);
39
+ const effectiveRequestUrl = resolveEffectiveRequestUrlFromRequestAsync(request, options.effectiveRequestUrl);
40
+ const strategy = getStrategyForUrl(effectiveRequestUrl);
39
41
  // Process custom strategies first, in order
40
42
  for (const strat of strategy) {
41
43
  if (isCustomStrategy(strat) && customServerStrategies.has(strat)) {
@@ -52,6 +54,17 @@ export const extractLocaleFromRequestAsync = async (request) => {
52
54
  }
53
55
  }
54
56
  // If no custom strategy provided a valid locale, fall back to sync version
55
- return extractLocaleFromRequestWithStrategies(request, strategy);
57
+ return extractLocaleFromRequestWithStrategies(request, strategy, effectiveRequestUrl);
56
58
  };
59
+ /**
60
+ * @param {Request} request
61
+ * @param {string | URL | undefined} effectiveRequestUrl
62
+ * @returns {URL}
63
+ */
64
+ function resolveEffectiveRequestUrlFromRequestAsync(request, effectiveRequestUrl = request.url) {
65
+ if (effectiveRequestUrl instanceof URL) {
66
+ return new URL(effectiveRequestUrl.href);
67
+ }
68
+ return new URL(effectiveRequestUrl, request.url);
69
+ }
57
70
  //# sourceMappingURL=extract-locale-from-request-async.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"extract-locale-from-request-async.js","sourceRoot":"","sources":["../../../src/compiler/runtime/extract-locale-from-request-async.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,sCAAsC,EAAE,MAAM,kCAAkC,CAAC;AAE1F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,KAAK,EAAE,OAAO,EAAE,EAAE;IAC9D,+BAA+B;IAC/B,IAAI,MAAM,CAAC;IACX,MAAM,QAAQ,GAAG,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAEhD,4CAA4C;IAC5C,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC9B,IAAI,gBAAgB,CAAC,KAAK,CAAC,IAAI,sBAAsB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAClE,MAAM,OAAO,GAAG,sBAAsB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAClD,IAAI,OAAO,EAAE,CAAC;gBACb,+BAA+B;gBAC/B,MAAM,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAC3C,CAAC;YAED,6DAA6D;YAC7D,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;YACvC,IAAI,aAAa,EAAE,CAAC;gBACnB,OAAO,aAAa,CAAC;YACtB,CAAC;QACF,CAAC;IACF,CAAC;IAED,2EAA2E;IAC3E,OAAO,sCAAsC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AAClE,CAAC,CAAC"}
1
+ {"version":3,"file":"extract-locale-from-request-async.js","sourceRoot":"","sources":["../../../src/compiler/runtime/extract-locale-from-request-async.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,sCAAsC,EAAE,MAAM,kCAAkC,CAAC;AAE1F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,KAAK,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,EAAE,EAAE;IAC5E,+BAA+B;IAC/B,IAAI,MAAM,CAAC;IACX,MAAM,mBAAmB,GAAG,0CAA0C,CACrE,OAAO,EACP,OAAO,CAAC,mBAAmB,CAC3B,CAAC;IACF,MAAM,QAAQ,GAAG,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;IAExD,4CAA4C;IAC5C,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC9B,IAAI,gBAAgB,CAAC,KAAK,CAAC,IAAI,sBAAsB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAClE,MAAM,OAAO,GAAG,sBAAsB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAClD,IAAI,OAAO,EAAE,CAAC;gBACb,+BAA+B;gBAC/B,MAAM,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAC3C,CAAC;YAED,6DAA6D;YAC7D,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;YACvC,IAAI,aAAa,EAAE,CAAC;gBACnB,OAAO,aAAa,CAAC;YACtB,CAAC;QACF,CAAC;IACF,CAAC;IAED,2EAA2E;IAC3E,OAAO,sCAAsC,CAAC,OAAO,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC;AACvF,CAAC,CAAC;AAEF;;;;GAIG;AACH,SAAS,0CAA0C,CAClD,OAAO,EACP,mBAAmB,GAAG,OAAO,CAAC,GAAG;IAEjC,IAAI,mBAAmB,YAAY,GAAG,EAAE,CAAC;QACxC,OAAO,IAAI,GAAG,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,IAAI,GAAG,CAAC,mBAAmB,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;AAClD,CAAC"}
@@ -56,4 +56,85 @@ test("falls back to next strategy when custom strategy returns undefined", async
56
56
  const locale = await runtime.extractLocaleFromRequestAsync(request);
57
57
  expect(locale).toBe("en"); // Should fall back to baseLocale
58
58
  });
59
+ test("uses the provided public url for url strategy matching", async () => {
60
+ const runtime = await createParaglide({
61
+ blob: await newProject({
62
+ settings: {
63
+ baseLocale: "en",
64
+ locales: ["en", "fr"],
65
+ },
66
+ }),
67
+ strategy: ["url", "baseLocale"],
68
+ urlPatterns: [
69
+ {
70
+ pattern: "https://example.com/:path(.*)?",
71
+ localized: [
72
+ ["en", "https://example.com/en/:path(.*)?"],
73
+ ["fr", "https://example.com/fr/:path(.*)?"],
74
+ ],
75
+ },
76
+ ],
77
+ });
78
+ const request = new Request("http://internal.example.com/en/home");
79
+ const locale = await runtime.extractLocaleFromRequestAsync(request, {
80
+ effectiveRequestUrl: "https://example.com/fr/home",
81
+ });
82
+ expect(locale).toBe("fr");
83
+ });
84
+ test("resolves relative effectiveRequestUrl strings against request.url", async () => {
85
+ const runtime = await createParaglide({
86
+ blob: await newProject({
87
+ settings: {
88
+ baseLocale: "en",
89
+ locales: ["en", "fr"],
90
+ },
91
+ }),
92
+ strategy: ["url", "baseLocale"],
93
+ urlPatterns: [
94
+ {
95
+ pattern: "https://example.com/:path(.*)?",
96
+ localized: [
97
+ ["en", "https://example.com/en/:path(.*)?"],
98
+ ["fr", "https://example.com/fr/:path(.*)?"],
99
+ ],
100
+ },
101
+ ],
102
+ });
103
+ const request = new Request("https://example.com/en/home");
104
+ const locale = await runtime.extractLocaleFromRequestAsync(request, {
105
+ effectiveRequestUrl: "/fr/home",
106
+ });
107
+ expect(locale).toBe("fr");
108
+ });
109
+ test("uses normalized effectiveRequestUrl for route strategy selection", async () => {
110
+ const runtime = await createParaglide({
111
+ blob: await newProject({
112
+ settings: {
113
+ baseLocale: "en",
114
+ locales: ["en", "fr"],
115
+ },
116
+ }),
117
+ strategy: ["baseLocale"],
118
+ urlPatterns: [
119
+ {
120
+ pattern: "https://example.com/:path(.*)?",
121
+ localized: [
122
+ ["en", "https://example.com/en/:path(.*)?"],
123
+ ["fr", "https://example.com/fr/:path(.*)?"],
124
+ ],
125
+ },
126
+ ],
127
+ routeStrategies: [
128
+ {
129
+ match: "https://example.com/:path(.*)?",
130
+ strategy: ["url", "baseLocale"],
131
+ },
132
+ ],
133
+ });
134
+ const request = new Request("https://example.com/en/home");
135
+ const locale = await runtime.extractLocaleFromRequestAsync(request, {
136
+ effectiveRequestUrl: "/fr/home",
137
+ });
138
+ expect(locale).toBe("fr");
139
+ });
59
140
  //# sourceMappingURL=extract-locale-from-request-async.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"extract-locale-from-request-async.test.js","sourceRoot":"","sources":["../../../src/compiler/runtime/extract-locale-from-request-async.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,IAAI,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;IACrE,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC;QACrC,IAAI,EAAE,MAAM,UAAU,CAAC;YACtB,QAAQ,EAAE;gBACT,UAAU,EAAE,IAAI;gBAChB,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;aAC3B;SACD,CAAC;QACF,QAAQ,EAAE,CAAC,eAAe,EAAE,YAAY,CAAC;KACzC,CAAC,CAAC;IACH,MAAM,MAAM;QACX,EAAE,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC/B;YACC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACxB,CAAC;QAED,KAAK,CAAC,iBAAiB,CAAC,EAAU;YACjC,OAAO,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACxB,CAAC;KACD;IAED,MAAM,EAAE,GAAG,IAAI,MAAM,EAAE,CAAC;IACxB,KAAK,UAAU,wBAAwB,CAAC,OAAiB;QACxD,MAAM,MAAM,GAAG,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,SAAS,CAAC;QACrE,IAAI,CAAC,MAAM;YAAE,MAAM,KAAK,CAAC,YAAY,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAClD,OAAO,MAAM,CAAC;IACf,CAAC;IACD,OAAO,CAAC,0BAA0B,CAAC,eAAe,EAAE;QACnD,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAC5B,CAAC,MAAM,wBAAwB,CAAC,OAAO,CAAC,CAAC,IAAI,SAAS;KACvD,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,oBAAoB,EAAE;QACjD,OAAO,EAAE;YACR,kBAAkB,EAAE,GAAG;SACvB;KACD,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,6BAA6B,CAAC,OAAO,CAAC,CAAC;IACpE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE;IACrF,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC;QACrC,IAAI,EAAE,MAAM,UAAU,CAAC;YACtB,QAAQ,EAAE;gBACT,UAAU,EAAE,IAAI;gBAChB,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;aACrB;SACD,CAAC;QACF,QAAQ,EAAE,CAAC,iBAAiB,EAAE,YAAY,CAAC;KAC3C,CAAC,CAAC;IAEH,OAAO,CAAC,0BAA0B,CAAC,iBAAiB,EAAE;QACrD,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS;KAC1B,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,6BAA6B,CAAC,OAAO,CAAC,CAAC;IACpE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,iCAAiC;AAC7D,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"extract-locale-from-request-async.test.js","sourceRoot":"","sources":["../../../src/compiler/runtime/extract-locale-from-request-async.test.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,10 @@
1
- export function extractLocaleFromRequest(request: Request): Locale;
2
- export function extractLocaleFromRequestWithStrategies(request: Request, strategies: typeof strategy): Locale;
1
+ export function extractLocaleFromRequest(request: Request, options?: ExtractLocaleFromRequestOptions): Locale;
2
+ export function extractLocaleFromRequestWithStrategies(request: Request, strategies: typeof strategy, url?: string | URL): Locale;
3
+ export type ExtractLocaleFromRequestOptions = {
4
+ /**
5
+ * - Effective request URL to use for route matching and locale detection with the URL strategy.
6
+ */
7
+ effectiveRequestUrl?: string | URL | undefined;
8
+ };
3
9
  import { strategy } from "./variables.js";
4
10
  //# sourceMappingURL=extract-locale-from-request.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"extract-locale-from-request.d.ts","sourceRoot":"","sources":["../../../src/compiler/runtime/extract-locale-from-request.js"],"names":[],"mappings":"AAiCO,kDAHI,OAAO,GACL,MAAM,CAOlB;AASM,gEAJI,OAAO,cACP,OAAO,QAAQ,GACb,MAAM,CAuClB;yBAxEM,gBAAgB"}
1
+ {"version":3,"file":"extract-locale-from-request.d.ts","sourceRoot":"","sources":["../../../src/compiler/runtime/extract-locale-from-request.js"],"names":[],"mappings":"AAuCO,kDAJI,OAAO,YACP,+BAA+B,GAC7B,MAAM,CAYlB;AAUM,gEALI,OAAO,cACP,OAAO,QAAQ,QACf,MAAM,GAAG,GAAG,GACV,MAAM,CA4ClB;;;;;;;yBAzFM,gBAAgB"}
@@ -3,6 +3,10 @@ import { extractLocaleFromHeader } from "./extract-locale-from-header.js";
3
3
  import { extractLocaleFromUrl } from "./extract-locale-from-url.js";
4
4
  import { isCustomStrategy } from "./strategy.js";
5
5
  import { baseLocale, cookieName, getStrategyForUrl, strategy, TREE_SHAKE_COOKIE_STRATEGY_USED, TREE_SHAKE_PREFERRED_LANGUAGE_STRATEGY_USED, TREE_SHAKE_URL_STRATEGY_USED, } from "./variables.js";
6
+ /**
7
+ * @typedef {object} ExtractLocaleFromRequestOptions
8
+ * @property {string | URL} [effectiveRequestUrl] - Effective request URL to use for route matching and locale detection with the URL strategy.
9
+ */
6
10
  /**
7
11
  * Extracts a locale from a request.
8
12
  *
@@ -20,19 +24,23 @@ import { baseLocale, cookieName, getStrategyForUrl, strategy, TREE_SHAKE_COOKIE_
20
24
  * const locale = extractLocaleFromRequest(request);
21
25
  *
22
26
  * @param {Request} request
27
+ * @param {ExtractLocaleFromRequestOptions} [options]
23
28
  * @returns {Locale}
24
29
  */
25
- export const extractLocaleFromRequest = (request) => {
26
- return extractLocaleFromRequestWithStrategies(request, getStrategyForUrl(request.url));
30
+ export const extractLocaleFromRequest = (request, options = {}) => {
31
+ const effectiveRequestUrl = resolveEffectiveRequestUrl(request, options.effectiveRequestUrl);
32
+ return extractLocaleFromRequestWithStrategies(request, getStrategyForUrl(effectiveRequestUrl), effectiveRequestUrl);
27
33
  };
28
34
  /**
29
35
  * Extracts a locale from a request using the provided strategy order.
30
36
  *
31
37
  * @param {Request} request
32
38
  * @param {typeof strategy} strategies
39
+ * @param {string | URL} [url]
33
40
  * @returns {Locale}
34
41
  */
35
- export const extractLocaleFromRequestWithStrategies = (request, strategies) => {
42
+ export const extractLocaleFromRequestWithStrategies = (request, strategies, url = request.url) => {
43
+ const effectiveRequestUrl = resolveEffectiveRequestUrl(request, url);
36
44
  /** @type {string|undefined} */
37
45
  let locale;
38
46
  for (const strat of strategies) {
@@ -44,7 +52,7 @@ export const extractLocaleFromRequestWithStrategies = (request, strategies) => {
44
52
  ?.split("=")[1];
45
53
  }
46
54
  else if (TREE_SHAKE_URL_STRATEGY_USED && strat === "url") {
47
- locale = extractLocaleFromUrl(request.url);
55
+ locale = extractLocaleFromUrl(effectiveRequestUrl);
48
56
  }
49
57
  else if (TREE_SHAKE_PREFERRED_LANGUAGE_STRATEGY_USED &&
50
58
  strat === "preferredLanguage") {
@@ -71,4 +79,15 @@ export const extractLocaleFromRequestWithStrategies = (request, strategies) => {
71
79
  }
72
80
  throw new Error("No locale found. There is an error in your strategy. Try adding 'baseLocale' as the very last strategy. Read more here https://inlang.com/m/gerre34r/library-inlang-paraglideJs/errors#no-locale-found");
73
81
  };
82
+ /**
83
+ * @param {Request} request
84
+ * @param {string | URL | undefined} effectiveRequestUrl
85
+ * @returns {URL}
86
+ */
87
+ function resolveEffectiveRequestUrl(request, effectiveRequestUrl = request.url) {
88
+ if (effectiveRequestUrl instanceof URL) {
89
+ return new URL(effectiveRequestUrl.href);
90
+ }
91
+ return new URL(effectiveRequestUrl, request.url);
92
+ }
74
93
  //# sourceMappingURL=extract-locale-from-request.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"extract-locale-from-request.js","sourceRoot":"","sources":["../../../src/compiler/runtime/extract-locale-from-request.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EACN,UAAU,EACV,UAAU,EACV,iBAAiB,EACjB,QAAQ,EACR,+BAA+B,EAC/B,2CAA2C,EAC3C,4BAA4B,GAC5B,MAAM,gBAAgB,CAAC;AAExB;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,OAAO,EAAE,EAAE;IACnD,OAAO,sCAAsC,CAC5C,OAAO,EACP,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,CAC9B,CAAC;AACH,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE;IAC7E,+BAA+B;IAC/B,IAAI,MAAM,CAAC;IAEX,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;QAChC,IAAI,+BAA+B,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC3D,MAAM,GAAG,OAAO,CAAC,OAAO;iBACtB,GAAG,CAAC,QAAQ,CAAC;gBACd,EAAE,KAAK,CAAC,IAAI,CAAC;iBACZ,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC;gBAC5C,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;aAAM,IAAI,4BAA4B,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;YAC5D,MAAM,GAAG,oBAAoB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5C,CAAC;aAAM,IACN,2CAA2C;YAC3C,KAAK,KAAK,mBAAmB,EAC5B,CAAC;YACF,MAAM,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;QAC3C,CAAC;aAAM,IAAI,KAAK,KAAK,gBAAgB,EAAE,CAAC;YACvC,MAAM,GAAG,OAAO,CAAC;QAClB,CAAC;aAAM,IAAI,KAAK,KAAK,YAAY,EAAE,CAAC;YACnC,OAAO,UAAU,CAAC;QACnB,CAAC;aAAM,IAAI,KAAK,KAAK,cAAc,EAAE,CAAC;YACrC,SAAS;QACV,CAAC;aAAM,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;YACpC,sDAAsD;YACtD,iEAAiE;YACjE,SAAS;QACV,CAAC;QACD,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,aAAa,EAAE,CAAC;YACnB,OAAO,aAAa,CAAC;QACtB,CAAC;IACF,CAAC;IACD,MAAM,IAAI,KAAK,CACd,wMAAwM,CACxM,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"extract-locale-from-request.js","sourceRoot":"","sources":["../../../src/compiler/runtime/extract-locale-from-request.js"],"names":[],"mappings":"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"}
@@ -44,6 +44,64 @@ test("returns the locale from the pathname for document requests", async () => {
44
44
  const locale = runtime.extractLocaleFromRequest(request);
45
45
  expect(locale).toBe("en");
46
46
  });
47
+ test("uses the provided public url for url strategy matching", async () => {
48
+ const runtime = await createParaglide({
49
+ blob: await newProject({
50
+ settings: {
51
+ baseLocale: "en",
52
+ locales: ["en", "fr"],
53
+ },
54
+ }),
55
+ strategy: ["url", "baseLocale"],
56
+ urlPatterns: [
57
+ {
58
+ pattern: "https://example.com/:path(.*)?",
59
+ localized: [
60
+ ["en", "https://example.com/en/:path(.*)?"],
61
+ ["fr", "https://example.com/fr/:path(.*)?"],
62
+ ],
63
+ },
64
+ ],
65
+ });
66
+ const request = new Request("http://internal.example.com/en/home", {
67
+ headers: {
68
+ "Sec-Fetch-Dest": "document",
69
+ },
70
+ });
71
+ const locale = runtime.extractLocaleFromRequest(request, {
72
+ effectiveRequestUrl: "https://example.com/fr/home",
73
+ });
74
+ expect(locale).toBe("fr");
75
+ });
76
+ test("resolves relative effectiveRequestUrl strings against request.url", async () => {
77
+ const runtime = await createParaglide({
78
+ blob: await newProject({
79
+ settings: {
80
+ baseLocale: "en",
81
+ locales: ["en", "fr"],
82
+ },
83
+ }),
84
+ strategy: ["url", "baseLocale"],
85
+ urlPatterns: [
86
+ {
87
+ pattern: "https://example.com/:path(.*)?",
88
+ localized: [
89
+ ["en", "https://example.com/en/:path(.*)?"],
90
+ ["fr", "https://example.com/fr/:path(.*)?"],
91
+ ],
92
+ },
93
+ ],
94
+ });
95
+ const request = new Request("https://example.com/en/home", {
96
+ headers: {
97
+ "Sec-Fetch-Dest": "document",
98
+ },
99
+ });
100
+ const locale = runtime.extractLocaleFromRequest(request, {
101
+ effectiveRequestUrl: "/fr/home",
102
+ });
103
+ expect(locale).toBe("fr");
104
+ });
47
105
  test("returns the baseLocale if no other strategy matches", async () => {
48
106
  const runtime = await createParaglide({
49
107
  blob: await newProject({
@@ -1 +1 @@
1
- {"version":3,"file":"extract-locale-from-request.test.js","sourceRoot":"","sources":["../../../src/compiler/runtime/extract-locale-from-request.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,IAAI,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;IACrD,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC;QACrC,IAAI,EAAE,MAAM,UAAU,CAAC;YACtB,QAAQ,EAAE;gBACT,UAAU,EAAE,IAAI;gBAChB,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;aACrB;SACD,CAAC;QACF,QAAQ,EAAE,CAAC,QAAQ,CAAC;QACpB,UAAU,EAAE,kBAAkB;KAC9B,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,oBAAoB,EAAE;QACjD,OAAO,EAAE;YACR,MAAM,EAAE,qBAAqB;SAC7B;KACD,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;IACzD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;IAC7E,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC;QACrC,IAAI,EAAE,MAAM,UAAU,CAAC;YACtB,QAAQ,EAAE;gBACT,UAAU,EAAE,IAAI;gBAChB,OAAO,EAAE,CAAC,IAAI,CAAC;aACf;SACD,CAAC;QACF,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC;QAC/B,WAAW,EAAE;YACZ;gBACC,OAAO,EAAE,+BAA+B;gBACxC,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,kCAAkC,CAAC,CAAC;aACvD;SACD;KACD,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,6BAA6B,EAAE;QAC1D,OAAO,EAAE;YACR,gBAAgB,EAAE,UAAU;SAC5B;KACD,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;IACzD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;IACtE,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC;QACrC,IAAI,EAAE,MAAM,UAAU,CAAC;YACtB,QAAQ,EAAE;gBACT,UAAU,EAAE,IAAI;gBAChB,OAAO,EAAE,CAAC,IAAI,CAAC;aACf;SACD,CAAC;QACF,QAAQ,EAAE,CAAC,YAAY,CAAC;KACxB,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;IACzD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;IACxD,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC;QACrC,IAAI,EAAE,MAAM,UAAU,CAAC;YACtB,QAAQ,EAAE;gBACT,UAAU,EAAE,IAAI;gBAChB,OAAO,EAAE,CAAC,IAAI,CAAC;aACf;SACD,CAAC;QACF,QAAQ,EAAE,CAAC,QAAQ,CAAC;KACpB,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAClD,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAC9D,yGAAyG,CACzG,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;IAC3E,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC;QACrC,IAAI,EAAE,MAAM,UAAU,CAAC;YACtB,QAAQ,EAAE;gBACT,UAAU,EAAE,IAAI;gBAChB,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;aAC3B;SACD,CAAC;QACF,QAAQ,EAAE,CAAC,mBAAmB,EAAE,YAAY,CAAC;KAC7C,CAAC,CAAC;IAEH,sBAAsB;IACtB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,oBAAoB,EAAE;QACjD,OAAO,EAAE;YACR,iBAAiB,EAAE,+BAA+B;SAClD;KACD,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;IACzD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE1B,qBAAqB;IACrB,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAC,oBAAoB,EAAE;QAClD,OAAO,EAAE;YACR,iBAAiB,EAAE,+BAA+B;SAClD;KACD,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,OAAO,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IAC3D,+EAA+E;IAC/E,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE3B,WAAW;IACX,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAC,oBAAoB,EAAE;QAClD,OAAO,EAAE;YACR,iBAAiB,EAAE,mBAAmB;SACtC;KACD,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,OAAO,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IAC3D,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;IACxF,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC;QACrC,IAAI,EAAE,MAAM,UAAU,CAAC;YACtB,QAAQ,EAAE;gBACT,UAAU,EAAE,IAAI;gBAChB,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;aACrB;SACD,CAAC;QACF,QAAQ,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC;QAClC,UAAU,EAAE,kBAAkB;KAC9B,CAAC,CAAC;IAEH,2CAA2C;IAC3C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,oBAAoB,EAAE;QACjD,OAAO,EAAE;YACR,MAAM,EAAE,iCAAiC;SACzC;KACD,CAAC,CAAC;IAEH,iCAAiC;IACjC,MAAM,CAAC,OAAO,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9D,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;IACxF,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC;QACrC,IAAI,EAAE,MAAM,UAAU,CAAC;YACtB,QAAQ,EAAE;gBACT,UAAU,EAAE,IAAI;gBAChB,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;aACrB;SACD,CAAC;QACF,QAAQ,EAAE,CAAC,cAAc,EAAE,YAAY,CAAC;KACxC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAElD,uBAAuB;IACvB,MAAM,CAAC,OAAO,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9D,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;IACzE,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC;QACrC,IAAI,EAAE,MAAM,UAAU,CAAC;YACtB,QAAQ,EAAE;gBACT,UAAU,EAAE,IAAI;gBAChB,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;aACrB;SACD,CAAC;QACF,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC;QAC/B,WAAW,EAAE;YACZ;gBACC,OAAO,EAAE,+BAA+B;gBACxC,SAAS,EAAE;oBACV,CAAC,IAAI,EAAE,kCAAkC,CAAC;oBAC1C,CAAC,IAAI,EAAE,kCAAkC,CAAC;iBAC1C;aACD;SACD;KACD,CAAC,CAAC;IAEH,qDAAqD;IACrD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,6BAA6B,EAAE;QAC1D,OAAO,EAAE;YACR,gBAAgB,EAAE,WAAW;SAC7B;KACD,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;IACzD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;IACxF,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC;QACrC,IAAI,EAAE,MAAM,UAAU,CAAC;YACtB,QAAQ,EAAE;gBACT,UAAU,EAAE,IAAI;gBAChB,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;aAC3B;SACD,CAAC;QACF,QAAQ,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,YAAY,CAAC;QACzC,UAAU,EAAE,kBAAkB;QAC9B,WAAW,EAAE;YACZ;gBACC,OAAO,EAAE,+BAA+B;gBACxC,SAAS,EAAE;oBACV,CAAC,IAAI,EAAE,kCAAkC,CAAC;oBAC1C,CAAC,IAAI,EAAE,kCAAkC,CAAC;oBAC1C,CAAC,IAAI,EAAE,+BAA+B,CAAC;iBACvC;aACD;SACD;KACD,CAAC,CAAC;IAEH,mDAAmD;IACnD,MAAM,oBAAoB,GAAG,IAAI,OAAO,CAAC,8BAA8B,EAAE;QACxE,OAAO,EAAE;YACR,gBAAgB,EAAE,OAAO;YACzB,MAAM,EAAE,qBAAqB;SAC7B;KACD,CAAC,CAAC;IACH,MAAM,SAAS,GAAG,OAAO,CAAC,wBAAwB,CAAC,oBAAoB,CAAC,CAAC;IACzE,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE7B,8DAA8D;IAC9D,MAAM,iBAAiB,GAAG,IAAI,OAAO,CAAC,8BAA8B,EAAE;QACrE,OAAO,EAAE;YACR,gBAAgB,EAAE,OAAO;SACzB;KACD,CAAC,CAAC;IACH,MAAM,cAAc,GAAG,OAAO,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,CAAC;IAC3E,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;IAClF,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC;QACrC,IAAI,EAAE,MAAM,UAAU,CAAC;YACtB,QAAQ,EAAE;gBACT,UAAU,EAAE,IAAI;gBAChB,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;aACrB;SACD,CAAC;QACF,QAAQ,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,YAAY,CAAC;QACzC,UAAU,EAAE,kBAAkB;QAC9B,eAAe,EAAE;YAChB;gBACC,KAAK,EAAE,uBAAuB;gBAC9B,QAAQ,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC;aAClC;SACD;KACD,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,+BAA+B,EAAE;QAC5D,OAAO,EAAE;YACR,MAAM,EAAE,qBAAqB;SAC7B;KACD,CAAC,CAAC;IAEH,MAAM,CAAC,OAAO,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9D,CAAC,CAAC,CAAC;AAEH,0DAA0D;AAC1D,IAAI,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;IACxD,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC;QACrC,IAAI,EAAE,MAAM,UAAU,CAAC;YACtB,QAAQ,EAAE;gBACT,UAAU,EAAE,IAAI;gBAChB,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;aACrB;SACD,CAAC;QACF,QAAQ,EAAE,CAAC,KAAK,EAAE,mBAAmB,CAAC;QACtC,WAAW,EAAE;YACZ;gBACC,OAAO,EAAE,4CAA4C;gBACrD,SAAS,EAAE;oBACV,CAAC,IAAI,EAAE,8CAA8C,CAAC;oBACtD,CAAC,IAAI,EAAE,8CAA8C,CAAC;iBACtD;aACD;SACD;KACD,CAAC,CAAC;IAEH,iDAAiD;IACjD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,0BAA0B,EAAE;QACvD,OAAO,EAAE;YACR,gBAAgB,EAAE,UAAU;YAC5B,iBAAiB,EAAE,mBAAmB;SACtC;KACD,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;IACzD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;IACpE,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC;QACrC,IAAI,EAAE,MAAM,UAAU,CAAC;YACtB,QAAQ,EAAE;gBACT,UAAU,EAAE,IAAI;gBAChB,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;aAC3B;SACD,CAAC;QACF,QAAQ,EAAE,CAAC,eAAe,EAAE,YAAY,CAAC;KACzC,CAAC,CAAC;IAEH,qEAAqE;IACrE,OAAO,CAAC,0BAA0B,CAAC,eAAe,EAAE;QACnD,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CACtB,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,SAAS;KACrD,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,oBAAoB,EAAE;QACjD,OAAO,EAAE;YACR,iBAAiB,EAAE,IAAI;SACvB;KACD,CAAC,CAAC;IAEH,oEAAoE;IACpE,MAAM,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;IACzD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,sBAAsB;AAClD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,6EAA6E,EAAE,KAAK,IAAI,EAAE;IAC9F,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC;QACrC,IAAI,EAAE,MAAM,UAAU,CAAC;YACtB,QAAQ,EAAE;gBACT,UAAU,EAAE,IAAI;gBAChB,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;aACrB;SACD,CAAC;QACF,QAAQ,EAAE,CAAC,iBAAiB,EAAE,YAAY,CAAC;KAC3C,CAAC,CAAC;IAEH,OAAO,CAAC,0BAA0B,CAAC,iBAAiB,EAAE;QACrD,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS;KAC1B,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;IACzD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,4DAA4D;AACxF,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE;IACrF,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC;QACrC,IAAI,EAAE,MAAM,UAAU,CAAC;YACtB,QAAQ,EAAE;gBACT,UAAU,EAAE,IAAI;gBAChB,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;aAC3B;SACD,CAAC;QACF,QAAQ,EAAE,CAAC,iBAAiB,EAAE,QAAQ,EAAE,YAAY,CAAC;QACrD,UAAU,EAAE,kBAAkB;KAC9B,CAAC,CAAC;IAEH,OAAO,CAAC,0BAA0B,CAAC,iBAAiB,EAAE;QACrD,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI;KACrB,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,oBAAoB,EAAE;QACjD,OAAO,EAAE;YACR,MAAM,EAAE,qBAAqB,EAAE,8BAA8B;SAC7D;KACD,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;IACzD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,qEAAqE;AACjG,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;IAC/E,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC;QACrC,IAAI,EAAE,MAAM,UAAU,CAAC;YACtB,QAAQ,EAAE;gBACT,UAAU,EAAE,IAAI;gBAChB,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;aAC3B;SACD,CAAC;QACF,QAAQ,EAAE,CAAC,cAAc,EAAE,eAAe,EAAE,YAAY,CAAC;KACzD,CAAC,CAAC;IAEH,OAAO,CAAC,0BAA0B,CAAC,cAAc,EAAE;QAClD,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS;KAC1B,CAAC,CAAC;IAEH,OAAO,CAAC,0BAA0B,CAAC,eAAe,EAAE;QACnD,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI;KACrB,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;IACzD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,uDAAuD;AACnF,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"extract-locale-from-request.test.js","sourceRoot":"","sources":["../../../src/compiler/runtime/extract-locale-from-request.test.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @typedef {object} ShouldRedirectServerInput
3
3
  * @property {Request} request
4
- * @property {string | URL} [url]
4
+ * @property {string | URL} [effectiveRequestUrl] - Effective request URL to use for route matching, locale detection with the URL strategy, and redirect targets.
5
5
  * @property {Locale} [locale]
6
6
  *
7
7
  * @typedef {object} ShouldRedirectClientInput
@@ -49,13 +49,33 @@
49
49
  * return render(request, decision.locale);
50
50
  * }
51
51
  *
52
+ * @example
53
+ * // Server side usage behind a proxy where request.url is not public-facing
54
+ * export async function handle(request) {
55
+ * const effectiveRequestUrl = new URL(request.url);
56
+ * effectiveRequestUrl.protocol = "https:";
57
+ * effectiveRequestUrl.host = "example.com";
58
+ *
59
+ * const decision = await shouldRedirect({
60
+ * request,
61
+ * effectiveRequestUrl,
62
+ * });
63
+ *
64
+ * if (decision.shouldRedirect) {
65
+ * return Response.redirect(decision.redirectUrl, 307);
66
+ * }
67
+ * }
68
+ *
52
69
  * @param {ShouldRedirectInput} [input]
53
70
  * @returns {Promise<ShouldRedirectResult>}
54
71
  */
55
72
  export function shouldRedirect(input?: ShouldRedirectInput): Promise<ShouldRedirectResult>;
56
73
  export type ShouldRedirectServerInput = {
57
74
  request: Request;
58
- url?: string | URL | undefined;
75
+ /**
76
+ * - Effective request URL to use for route matching, locale detection with the URL strategy, and redirect targets.
77
+ */
78
+ effectiveRequestUrl?: string | URL | undefined;
59
79
  locale?: string | undefined;
60
80
  };
61
81
  export type ShouldRedirectClientInput = {
@@ -1 +1 @@
1
- {"version":3,"file":"should-redirect.d.ts","sourceRoot":"","sources":["../../../src/compiler/runtime/should-redirect.js"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;;;;;GAiBG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,uCAHW,mBAAmB,GACjB,OAAO,CAAC,oBAAoB,CAAC,CAqBzC;;aAxEa,OAAO;;;;;cAKP,SAAS;;;;kCAIV,yBAAyB,GAAG,yBAAyB;;;;;oBAGpD,OAAO;;;;YACP,MAAM;;;;iBACN,GAAG,GAAG,SAAS"}
1
+ {"version":3,"file":"should-redirect.d.ts","sourceRoot":"","sources":["../../../src/compiler/runtime/should-redirect.js"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;;;;;GAiBG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AACH,uCAHW,mBAAmB,GACjB,OAAO,CAAC,oBAAoB,CAAC,CAqBzC;;aAzFa,OAAO;;;;;;;;cAKP,SAAS;;;;kCAIV,yBAAyB,GAAG,yBAAyB;;;;;oBAGpD,OAAO;;;;YACP,MAAM;;;;iBACN,GAAG,GAAG,SAAS"}