@inlang/paraglide-js 2.15.1 → 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.
- package/README.md +19 -14
- package/dist/compiler/create-readme.d.ts.map +1 -1
- package/dist/compiler/create-readme.js +25 -10
- package/dist/compiler/create-readme.js.map +1 -1
- package/dist/compiler/runtime/extract-locale-from-request-async.d.ts +3 -1
- package/dist/compiler/runtime/extract-locale-from-request-async.d.ts.map +1 -1
- package/dist/compiler/runtime/extract-locale-from-request-async.js +16 -3
- package/dist/compiler/runtime/extract-locale-from-request-async.js.map +1 -1
- package/dist/compiler/runtime/extract-locale-from-request-async.test.js +81 -0
- package/dist/compiler/runtime/extract-locale-from-request-async.test.js.map +1 -1
- package/dist/compiler/runtime/extract-locale-from-request.d.ts +8 -2
- package/dist/compiler/runtime/extract-locale-from-request.d.ts.map +1 -1
- package/dist/compiler/runtime/extract-locale-from-request.js +23 -4
- package/dist/compiler/runtime/extract-locale-from-request.js.map +1 -1
- package/dist/compiler/runtime/extract-locale-from-request.test.js +58 -0
- package/dist/compiler/runtime/extract-locale-from-request.test.js.map +1 -1
- package/dist/compiler/runtime/should-redirect.d.ts +22 -2
- package/dist/compiler/runtime/should-redirect.d.ts.map +1 -1
- package/dist/compiler/runtime/should-redirect.js +30 -5
- package/dist/compiler/runtime/should-redirect.js.map +1 -1
- package/dist/compiler/runtime/should-redirect.test.js +99 -0
- package/dist/compiler/runtime/should-redirect.test.js.map +1 -1
- package/dist/compiler/server/middleware.d.ts +7 -3
- package/dist/compiler/server/middleware.d.ts.map +1 -1
- package/dist/compiler/server/middleware.js +53 -15
- package/dist/compiler/server/middleware.js.map +1 -1
- package/dist/compiler/server/middleware.test.js +120 -0
- package/dist/compiler/server/middleware.test.js.map +1 -1
- package/dist/services/env-variables/index.js +1 -1
- package/package.json +1 -1
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://
|
|
20
|
-
<a href="https://
|
|
21
|
-
<a href="https://
|
|
22
|
-
<a href="https://
|
|
23
|
-
<
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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,14 +153,14 @@ Message format is **plugin-based** — use the default inlang format, or switch
|
|
|
148
153
|
|
|
149
154
|
## Comparison
|
|
150
155
|
|
|
151
|
-
| Feature
|
|
152
|
-
|
|
|
153
|
-
| **i18n bundle size**
|
|
154
|
-
| **Tree-shakable**
|
|
155
|
-
| **Typesafe**
|
|
156
|
-
| **Framework agnostic**
|
|
157
|
-
| **i18n routing**
|
|
158
|
-
| **ICU MessageFormat 1**
|
|
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) | ✅ | ✅ |
|
|
159
164
|
|
|
160
165
|
**[Full Comparison →](https://inlang.com/m/gerre34r/library-inlang-paraglideJs/comparison)**
|
|
161
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,
|
|
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"}
|
|
@@ -93,29 +93,41 @@ See the [strategy documentation](https://inlang.com/m/gerre34r/library-inlang-pa
|
|
|
93
93
|
|
|
94
94
|
Messages can contain markup tags for bold, links, and other inline elements. Translators control where tags appear; developers control how they render.
|
|
95
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
|
+
|
|
96
101
|
### Message syntax
|
|
97
102
|
|
|
98
103
|
\`\`\`json
|
|
99
104
|
{
|
|
100
|
-
"cta": "{#link to=|/docs|}Read the docs{/link}",
|
|
101
|
-
"
|
|
105
|
+
"cta": "{#link to=|/docs| rel=$relationship @track}Read the docs{/link}",
|
|
106
|
+
"welcome": "{#b}Hi {name}{/b}{#icon/}"
|
|
102
107
|
}
|
|
103
108
|
\`\`\`
|
|
104
109
|
|
|
105
110
|
- \`{#tagName}\` opens a tag, \`{/tagName}\` closes it.
|
|
106
|
-
-
|
|
107
|
-
-
|
|
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.*\`).
|
|
108
114
|
|
|
109
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.
|
|
110
116
|
|
|
111
117
|
### Rendering markup
|
|
112
118
|
|
|
113
|
-
Calling
|
|
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:
|
|
114
126
|
|
|
115
127
|
\`\`\`js
|
|
116
|
-
const parts = m.cta.parts({});
|
|
128
|
+
const parts = m.cta.parts({ relationship: "noopener" });
|
|
117
129
|
// [
|
|
118
|
-
// { type: "markup-start", name: "link", options: { to: "/docs" }, attributes: {} },
|
|
130
|
+
// { type: "markup-start", name: "link", options: { to: "/docs", rel: "noopener" }, attributes: { track: true } },
|
|
119
131
|
// { type: "text", value: "Read the docs" },
|
|
120
132
|
// { type: "markup-end", name: "link" }
|
|
121
133
|
// ]
|
|
@@ -132,14 +144,17 @@ Framework adapters provide a \`<ParaglideMessage>\` component that accepts marku
|
|
|
132
144
|
import { ParaglideMessage } from "@inlang/paraglide-js-react"; // or -vue, -svelte, -solid
|
|
133
145
|
|
|
134
146
|
<ParaglideMessage
|
|
135
|
-
message={m.
|
|
136
|
-
inputs={{}}
|
|
147
|
+
message={m.welcome}
|
|
148
|
+
inputs={{ name: "Ada" }}
|
|
137
149
|
markup={{
|
|
138
|
-
|
|
150
|
+
b: ({ children }) => <b>{children}</b>,
|
|
151
|
+
icon: () => <span aria-hidden="true" className="icon-wave" />,
|
|
139
152
|
}}
|
|
140
153
|
/>
|
|
141
154
|
\`\`\`
|
|
142
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
|
+
|
|
143
158
|
See the [markup documentation](https://inlang.com/m/gerre34r/library-inlang-paraglideJs/markup) for details.
|
|
144
159
|
|
|
145
160
|
## Key concepts
|
|
@@ -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
|
|
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
|
|
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":"
|
|
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
|
|
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
|
|
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":"
|
|
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
|
-
|
|
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(
|
|
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
|
|
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} [
|
|
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
|
-
|
|
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
|
|
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"}
|