next-intl 2.18.0 → 2.19.1

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,4 +1,4 @@
1
- type LocalePrefix = 'as-needed' | 'always';
1
+ type LocalePrefix = 'as-needed' | 'always' | 'never';
2
2
  type RoutingBaseConfig = {
3
3
  /** A list of all locales that are supported. */
4
4
  locales: Array<string>;
@@ -6,7 +6,7 @@ export default function useClientLocale() {
6
6
  // The types aren't entirely correct here. Outside of Next.js
7
7
  // `useParams` can be called, but the return type is `null`.
8
8
  const params = useParams();
9
- if (params === null || params === void 0 ? void 0 : params[LOCALE_SEGMENT_NAME]) {
9
+ if (typeof (params === null || params === void 0 ? void 0 : params[LOCALE_SEGMENT_NAME]) === 'string') {
10
10
  locale = params[LOCALE_SEGMENT_NAME];
11
11
  }
12
12
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"useClientLocale.js","sourceRoot":"","sources":["../../../src/client/useClientLocale.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAC,SAAS,EAAC,MAAM,UAAU,CAAC;AACnC,OAAO,EAAC,mBAAmB,EAAC,MAAM,qBAAqB,CAAC;AAExD,MAAM,CAAC,OAAO,UAAU,eAAe;IACrC,IAAI,MAAM,CAAC;IAEX,6DAA6D;IAC7D,4DAA4D;IAC5D,MAAM,MAAM,GAAG,SAAS,EAAyC,CAAC;IAElE,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAG,mBAAmB,CAAC,EAAE;QACjC,MAAM,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;KACtC;SAAM;QACL,oGAAoG;QACpG,MAAM,GAAG,SAAS,EAAE,CAAC;KACtB;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"useClientLocale.js","sourceRoot":"","sources":["../../../src/client/useClientLocale.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAC,SAAS,EAAC,MAAM,UAAU,CAAC;AACnC,OAAO,EAAC,mBAAmB,EAAC,MAAM,qBAAqB,CAAC;AAExD,MAAM,CAAC,OAAO,UAAU,eAAe;IACrC,IAAI,MAAM,CAAC;IAEX,6DAA6D;IAC7D,4DAA4D;IAC5D,MAAM,MAAM,GAAG,SAAS,EAAyC,CAAC;IAElE,IAAI,OAAO,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAG,mBAAmB,CAAC,CAAA,KAAK,QAAQ,EAAE;QACrD,MAAM,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;KACtC;SAAM;QACL,oGAAoG;QACpG,MAAM,GAAG,SAAS,EAAE,CAAC;KACtB;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,4 +1,4 @@
1
- type LocalePrefix = 'as-needed' | 'always';
1
+ type LocalePrefix = 'as-needed' | 'always' | 'never';
2
2
  type RoutingBaseConfig = {
3
3
  /** A list of all locales that are supported. */
4
4
  locales: Array<string>;
@@ -72,8 +72,9 @@ export default function createMiddleware(config) {
72
72
  if (request.nextUrl.search) {
73
73
  pathWithSearch += request.nextUrl.search;
74
74
  }
75
- if (hasMatchedDefaultLocale &&
76
- configWithDefaults.localePrefix === 'as-needed') {
75
+ if (configWithDefaults.localePrefix === 'never' ||
76
+ (hasMatchedDefaultLocale &&
77
+ configWithDefaults.localePrefix === 'as-needed')) {
77
78
  response = rewrite(pathWithSearch);
78
79
  }
79
80
  else {
@@ -92,7 +93,10 @@ export default function createMiddleware(config) {
92
93
  }
93
94
  if (hasLocalePrefix) {
94
95
  const basePath = pathWithSearch.replace(`/${pathLocale}`, '') || '/';
95
- if (pathLocale === locale) {
96
+ if (configWithDefaults.localePrefix === 'never') {
97
+ response = redirect(basePath);
98
+ }
99
+ else if (pathLocale === locale) {
96
100
  if (hasMatchedDefaultLocale &&
97
101
  configWithDefaults.localePrefix === 'as-needed') {
98
102
  response = redirect(basePath);
@@ -117,9 +121,10 @@ export default function createMiddleware(config) {
117
121
  }
118
122
  }
119
123
  else {
120
- if (hasMatchedDefaultLocale &&
121
- (configWithDefaults.localePrefix === 'as-needed' ||
122
- configWithDefaults.domains)) {
124
+ if (configWithDefaults.localePrefix === 'never' ||
125
+ (hasMatchedDefaultLocale &&
126
+ (configWithDefaults.localePrefix === 'as-needed' ||
127
+ configWithDefaults.domains))) {
123
128
  response = rewrite(`/${locale}${pathWithSearch}`);
124
129
  }
125
130
  else {
@@ -129,10 +134,12 @@ export default function createMiddleware(config) {
129
134
  }
130
135
  if (hasOutdatedCookie) {
131
136
  response.cookies.set(COOKIE_LOCALE_NAME, locale, {
132
- sameSite: 'strict'
137
+ sameSite: 'strict',
138
+ maxAge: 31536000 // 1 year
133
139
  });
134
140
  }
135
- if (configWithDefaults.alternateLinks &&
141
+ if (configWithDefaults.localePrefix !== 'never' &&
142
+ configWithDefaults.alternateLinks &&
136
143
  configWithDefaults.locales.length > 1) {
137
144
  response.headers.set('Link', getAlternateLinksHeaderValue(configWithDefaults, request));
138
145
  }
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../src/middleware/middleware.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../src/middleware/middleware.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "next-intl",
3
- "version": "2.18.0",
3
+ "version": "2.19.1",
4
4
  "sideEffects": false,
5
5
  "author": "Jan Amann <jan@amann.work>",
6
6
  "description": "A minimal, but complete solution for internationalization in Next.js apps.",
@@ -67,7 +67,7 @@
67
67
  "dependencies": {
68
68
  "@formatjs/intl-localematcher": "^0.2.32",
69
69
  "negotiator": "^0.6.3",
70
- "use-intl": "^2.18.0"
70
+ "use-intl": "^2.19.1"
71
71
  },
72
72
  "peerDependencies": {
73
73
  "next": "^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0",
@@ -83,7 +83,7 @@
83
83
  "eslint": "^8.39.0",
84
84
  "eslint-config-molindo": "^6.0.0",
85
85
  "eslint-plugin-deprecation": "^1.4.1",
86
- "next": "^13.4.7",
86
+ "next": "13.4.7",
87
87
  "react": "^18.2.0",
88
88
  "react-dom": "^18.2.0",
89
89
  "size-limit": "^8.2.6",
@@ -103,5 +103,5 @@
103
103
  "engines": {
104
104
  "node": ">=10"
105
105
  },
106
- "gitHead": "023d23a7a71f5594d8a457c09ea988b56b248239"
106
+ "gitHead": "2ff343d25bb2af0309ce2f21ee95ca09ecd3db7a"
107
107
  }
@@ -9,7 +9,7 @@ export default function useClientLocale(): string {
9
9
  // `useParams` can be called, but the return type is `null`.
10
10
  const params = useParams() as ReturnType<typeof useParams> | null;
11
11
 
12
- if (params?.[LOCALE_SEGMENT_NAME]) {
12
+ if (typeof params?.[LOCALE_SEGMENT_NAME] === 'string') {
13
13
  locale = params[LOCALE_SEGMENT_NAME];
14
14
  } else {
15
15
  // eslint-disable-next-line react-hooks/rules-of-hooks -- Reading from context conditionally is fine
@@ -1,4 +1,4 @@
1
- type LocalePrefix = 'as-needed' | 'always';
1
+ type LocalePrefix = 'as-needed' | 'always' | 'never';
2
2
 
3
3
  type RoutingBaseConfig = {
4
4
  /** A list of all locales that are supported. */
@@ -114,8 +114,9 @@ export default function createMiddleware(config: MiddlewareConfig) {
114
114
  }
115
115
 
116
116
  if (
117
- hasMatchedDefaultLocale &&
118
- configWithDefaults.localePrefix === 'as-needed'
117
+ configWithDefaults.localePrefix === 'never' ||
118
+ (hasMatchedDefaultLocale &&
119
+ configWithDefaults.localePrefix === 'as-needed')
119
120
  ) {
120
121
  response = rewrite(pathWithSearch);
121
122
  } else {
@@ -140,7 +141,9 @@ export default function createMiddleware(config: MiddlewareConfig) {
140
141
  if (hasLocalePrefix) {
141
142
  const basePath = pathWithSearch.replace(`/${pathLocale}`, '') || '/';
142
143
 
143
- if (pathLocale === locale) {
144
+ if (configWithDefaults.localePrefix === 'never') {
145
+ response = redirect(basePath);
146
+ } else if (pathLocale === locale) {
144
147
  if (
145
148
  hasMatchedDefaultLocale &&
146
149
  configWithDefaults.localePrefix === 'as-needed'
@@ -168,9 +171,10 @@ export default function createMiddleware(config: MiddlewareConfig) {
168
171
  }
169
172
  } else {
170
173
  if (
171
- hasMatchedDefaultLocale &&
172
- (configWithDefaults.localePrefix === 'as-needed' ||
173
- configWithDefaults.domains)
174
+ configWithDefaults.localePrefix === 'never' ||
175
+ (hasMatchedDefaultLocale &&
176
+ (configWithDefaults.localePrefix === 'as-needed' ||
177
+ configWithDefaults.domains))
174
178
  ) {
175
179
  response = rewrite(`/${locale}${pathWithSearch}`);
176
180
  } else {
@@ -181,11 +185,13 @@ export default function createMiddleware(config: MiddlewareConfig) {
181
185
 
182
186
  if (hasOutdatedCookie) {
183
187
  response.cookies.set(COOKIE_LOCALE_NAME, locale, {
184
- sameSite: 'strict'
188
+ sameSite: 'strict',
189
+ maxAge: 31536000 // 1 year
185
190
  });
186
191
  }
187
192
 
188
193
  if (
194
+ configWithDefaults.localePrefix !== 'never' &&
189
195
  configWithDefaults.alternateLinks &&
190
196
  configWithDefaults.locales.length > 1
191
197
  ) {