intor 1.0.39 → 2.0.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.
@@ -1,9 +1,9 @@
1
1
  import { NextResponse } from 'next/server';
2
2
  import { headers } from 'next/headers';
3
3
 
4
- // src/adapters/next-client/routing/utils/create-response.ts
4
+ // src/adapters/next/middleware/utils/create-response.ts
5
5
 
6
- // src/adapters/next-client/routing/utils/set-locale-cookie-edge.ts
6
+ // src/adapters/next/middleware/utils/set-locale-cookie-edge.ts
7
7
  function setLocaleCookieEdge({
8
8
  request,
9
9
  response,
@@ -12,13 +12,9 @@ function setLocaleCookieEdge({
12
12
  override = false
13
13
  // Default to not override existed cookie
14
14
  }) {
15
- if (cookie.disabled || !cookie.autoSetCookie) {
16
- return;
17
- }
15
+ if (cookie.disabled || !cookie.autoSetCookie) return;
18
16
  const isCookieExists = request.cookies.has(cookie.name);
19
- if (isCookieExists && !override) {
20
- return;
21
- }
17
+ if (isCookieExists && !override) return;
22
18
  response.cookies.set(cookie.name, locale, {
23
19
  maxAge: cookie.maxAge,
24
20
  path: cookie.path,
@@ -29,49 +25,98 @@ function setLocaleCookieEdge({
29
25
  });
30
26
  }
31
27
 
32
- // src/adapters/next-client/constants/header-key-constants.ts
33
- var DEFAULT_PATHNAME_HEADER_NAME = "x-intor-pathname";
28
+ // src/adapters/next/shared/constants/pathname-header-name.ts
29
+ var PATHNAME_HEADER_NAME = "x-intor-pathname";
34
30
 
35
- // src/adapters/next-client/routing/utils/set-pathname-header.ts
31
+ // src/adapters/next/middleware/utils/set-pathname-header.ts
36
32
  var setPathnameHeader = ({
37
33
  request,
38
34
  response,
39
- key = DEFAULT_PATHNAME_HEADER_NAME
35
+ key = PATHNAME_HEADER_NAME
40
36
  }) => {
41
37
  const pathname = request.nextUrl.pathname;
42
38
  response.headers.set(key, pathname);
43
39
  return response;
44
40
  };
45
41
 
46
- // src/adapters/next-client/utils/locale-prefix-pathname.ts
42
+ // src/shared/constants/prefix-placeholder.ts
43
+ var PREFIX_PLACEHOLDER = "{locale}";
44
+
45
+ // src/adapters/next/shared/utils/locale-prefix-pathname.ts
47
46
  var localePrefixPathname = ({
48
47
  config,
49
48
  pathname: standardizedPathname,
50
49
  locale
51
50
  }) => {
52
- const { routing, prefixPlaceHolder } = config;
51
+ const { routing } = config;
53
52
  const { prefix } = routing;
54
53
  if (prefix !== "none" && !locale) {
55
54
  throw new Error('No locale when using prefix "all", "except-default"');
56
55
  }
57
56
  if (prefix === "all") {
58
- return standardizedPathname.replace(prefixPlaceHolder, locale);
57
+ return standardizedPathname.replace(PREFIX_PLACEHOLDER, locale);
59
58
  }
60
59
  if (prefix === "except-default") {
61
60
  if (locale === config.defaultLocale) {
62
- return standardizedPathname.replace(`/${prefixPlaceHolder}`, "");
61
+ return standardizedPathname.replace(`/${PREFIX_PLACEHOLDER}`, "");
63
62
  } else {
64
- return standardizedPathname.replace(prefixPlaceHolder, locale);
63
+ return standardizedPathname.replace(PREFIX_PLACEHOLDER, locale);
64
+ }
65
+ }
66
+ return standardizedPathname.replace(`/${PREFIX_PLACEHOLDER}`, "");
67
+ };
68
+
69
+ // src/shared/utils/locale/normalize-locale.ts
70
+ var normalizeLocale = (locale = "", supportedLocales = []) => {
71
+ if (!locale || supportedLocales.length === 0) return;
72
+ const toCanonical = (input) => {
73
+ try {
74
+ return Intl.getCanonicalLocales(input)[0]?.toLowerCase();
75
+ } catch {
76
+ return;
77
+ }
78
+ };
79
+ const canonicalLocale = toCanonical(locale);
80
+ if (!canonicalLocale) return;
81
+ const supportedCanonicalMap = /* @__PURE__ */ new Map();
82
+ for (const l of supportedLocales) {
83
+ const normalized = toCanonical(l);
84
+ if (normalized) {
85
+ supportedCanonicalMap.set(normalized, l);
86
+ }
87
+ }
88
+ if (supportedCanonicalMap.has(canonicalLocale)) {
89
+ return supportedCanonicalMap.get(canonicalLocale);
90
+ }
91
+ const baseLang = canonicalLocale.split("-")[0];
92
+ for (const [key, original] of supportedCanonicalMap) {
93
+ const supportedBase = key.split("-")[0];
94
+ if (supportedBase === baseLang) {
95
+ return original;
65
96
  }
66
97
  }
67
- return standardizedPathname.replace(`/${prefixPlaceHolder}`, "");
98
+ return;
99
+ };
100
+
101
+ // src/shared/utils/locale/resolve-preferred-locale.ts
102
+ var resolvePreferredLocale = (acceptLanguageHeader, supportedLocales) => {
103
+ if (!acceptLanguageHeader || !supportedLocales || supportedLocales.length === 0) {
104
+ return;
105
+ }
106
+ const supportedLocalesSet = new Set(supportedLocales);
107
+ const preferred = acceptLanguageHeader.split(",").map((part) => {
108
+ const [lang, qValue] = part.split(";");
109
+ const q = qValue ? parseFloat(qValue.split("=")[1]) : 1;
110
+ if (isNaN(q)) {
111
+ return { lang: lang.trim(), q: 0 };
112
+ }
113
+ return { lang: lang.trim(), q };
114
+ }).sort((a, b) => b.q - a.q).find(({ lang }) => supportedLocalesSet.has(lang))?.lang;
115
+ return preferred;
68
116
  };
69
117
 
70
118
  // src/shared/utils/pathname/normalize-pathname.ts
71
119
  var normalizePathname = (rawPathname, options = {}) => {
72
- if (typeof rawPathname !== "string") {
73
- throw new TypeError("Expected rawPathname to be a string");
74
- }
75
120
  const length = rawPathname.length;
76
121
  let start = 0;
77
122
  let end = length - 1;
@@ -142,18 +187,18 @@ var standardizePathname = ({
142
187
  config,
143
188
  pathname
144
189
  }) => {
145
- const { routing, prefixPlaceHolder } = config;
190
+ const { routing } = config;
146
191
  const { basePath } = routing;
147
192
  const parts = [
148
193
  normalizePathname(basePath),
149
- normalizePathname(prefixPlaceHolder),
194
+ PREFIX_PLACEHOLDER,
150
195
  normalizePathname(pathname)
151
196
  ];
152
197
  const standardizedPathname = parts.join("/").replace(/\/{2,}/g, "/");
153
198
  return normalizePathname(standardizedPathname);
154
199
  };
155
200
 
156
- // src/adapters/next-client/utils/localize-pathname.ts
201
+ // src/adapters/next/shared/utils/localize-pathname.ts
157
202
  var localizePathname = ({
158
203
  config,
159
204
  pathname: rawPathname,
@@ -179,7 +224,7 @@ var localizePathname = ({
179
224
  };
180
225
  };
181
226
 
182
- // src/adapters/next-client/routing/utils/create-response.ts
227
+ // src/adapters/next/middleware/utils/create-response.ts
183
228
  var createResponse = ({
184
229
  request,
185
230
  config,
@@ -197,18 +242,10 @@ var createResponse = ({
197
242
  });
198
243
  url.pathname = localePrefixedPathname;
199
244
  let response;
200
- switch (responseType) {
201
- case "next": {
202
- response = NextResponse.next();
203
- break;
204
- }
205
- case "redirect": {
206
- response = NextResponse.redirect(url);
207
- break;
208
- }
209
- default: {
210
- throw new Error(`Unsupported responseType: ${responseType}`);
211
- }
245
+ if (responseType === "redirect") {
246
+ response = NextResponse.redirect(url);
247
+ } else {
248
+ response = NextResponse.next();
212
249
  }
213
250
  if (locale) {
214
251
  setLocaleCookieEdge({
@@ -222,57 +259,6 @@ var createResponse = ({
222
259
  const finalResponse = setPathnameHeader({ request, response });
223
260
  return finalResponse;
224
261
  };
225
-
226
- // src/shared/utils/locale/normalize-locale.ts
227
- var normalizeLocale = (locale = "", supportedLocales = []) => {
228
- if (!locale || supportedLocales.length === 0) return void 0;
229
- const toCanonical = (input) => {
230
- try {
231
- return Intl.getCanonicalLocales(input)[0]?.toLowerCase();
232
- } catch {
233
- return void 0;
234
- }
235
- };
236
- const canonicalLocale = toCanonical(locale);
237
- if (!canonicalLocale) return void 0;
238
- const supportedCanonicalMap = /* @__PURE__ */ new Map();
239
- for (const l of supportedLocales) {
240
- const normalized = toCanonical(l);
241
- if (normalized) {
242
- supportedCanonicalMap.set(normalized, l);
243
- }
244
- }
245
- if (supportedCanonicalMap.has(canonicalLocale)) {
246
- return supportedCanonicalMap.get(canonicalLocale);
247
- }
248
- const baseLang = canonicalLocale.split("-")[0];
249
- for (const [key, original] of supportedCanonicalMap) {
250
- const supportedBase = key.split("-")[0];
251
- if (supportedBase === baseLang) {
252
- return original;
253
- }
254
- }
255
- return void 0;
256
- };
257
-
258
- // src/shared/utils/locale/resolve-preferred-locale.ts
259
- var resolvePreferredLocale = (acceptLanguageHeader, supportedLocales) => {
260
- if (!acceptLanguageHeader || !supportedLocales || supportedLocales.length === 0) {
261
- return;
262
- }
263
- const supportedLocalesSet = new Set(supportedLocales);
264
- const preferred = acceptLanguageHeader.split(",").map((part) => {
265
- const [lang, qValue] = part.split(";");
266
- const q = qValue ? parseFloat(qValue.split("=")[1]) : 1;
267
- if (isNaN(q)) {
268
- return { lang: lang.trim(), q: 0 };
269
- }
270
- return { lang: lang.trim(), q };
271
- }).sort((a, b) => b.q - a.q).find(({ lang }) => supportedLocalesSet.has(lang))?.lang;
272
- return preferred;
273
- };
274
-
275
- // src/adapters/next-client/routing/utils/determine-initial-locale.ts
276
262
  var determineInitialLocale = async (config) => {
277
263
  const { defaultLocale, supportedLocales, routing } = config;
278
264
  let initialLocale = defaultLocale;
@@ -287,7 +273,7 @@ var determineInitialLocale = async (config) => {
287
273
  return initialLocale;
288
274
  };
289
275
 
290
- // src/adapters/next-client/routing/handle-prefix/handle-prefix-all.ts
276
+ // src/adapters/next/middleware/handle-prefix/handle-prefix-all.ts
291
277
  var handlePrefixAll = async ({
292
278
  request,
293
279
  config
@@ -328,7 +314,7 @@ var handlePrefixAll = async ({
328
314
  });
329
315
  };
330
316
 
331
- // src/adapters/next-client/routing/handle-prefix/handle-prefix-except-default.ts
317
+ // src/adapters/next/middleware/handle-prefix/handle-prefix-except-default.ts
332
318
  var handlePrefixExceptDefault = async ({
333
319
  request,
334
320
  config
@@ -381,7 +367,7 @@ var handlePrefixExceptDefault = async ({
381
367
  });
382
368
  };
383
369
 
384
- // src/adapters/next-client/routing/handle-prefix/handle-prefix-none.ts
370
+ // src/adapters/next/middleware/handle-prefix/handle-prefix-none.ts
385
371
  var handlePrefixNone = async ({
386
372
  request,
387
373
  config
@@ -393,7 +379,7 @@ var handlePrefixNone = async ({
393
379
  return createResponse({ request, config, locale });
394
380
  };
395
381
 
396
- // src/adapters/next-client/routing/intor-middleware.ts
382
+ // src/adapters/next/middleware/intor-middleware.ts
397
383
  async function intorMiddleware({
398
384
  request,
399
385
  config
@@ -408,4 +394,4 @@ async function intorMiddleware({
408
394
  return await handlePrefixAll({ request, config });
409
395
  }
410
396
 
411
- export { DEFAULT_PATHNAME_HEADER_NAME as PATHNAME_HEADER_NAME, intorMiddleware };
397
+ export { PATHNAME_HEADER_NAME, intorMiddleware };