next-intl 3.1.4 → 3.2.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.
Files changed (160) hide show
  1. package/dist/development/middleware/middleware.js +6 -6
  2. package/dist/development/navigation/react-client/{BaseLink.js → ClientLink.js} +7 -7
  3. package/dist/development/navigation/react-client/{baseRedirect.js → clientRedirect.js} +7 -4
  4. package/dist/development/navigation/react-client/createLocalizedPathnamesNavigation.js +21 -20
  5. package/dist/development/navigation/react-client/createSharedPathnamesNavigation.js +32 -5
  6. package/dist/development/navigation/react-server/{BaseLink.js → ServerLink.js} +5 -5
  7. package/dist/development/navigation/react-server/createLocalizedPathnamesNavigation.js +14 -9
  8. package/dist/development/navigation/react-server/createSharedPathnamesNavigation.js +26 -6
  9. package/dist/development/navigation/react-server/{baseRedirect.js → serverRedirect.js} +8 -5
  10. package/dist/development/{shared/BaseLinkWithLocale.js → navigation/shared/BaseLink.js} +21 -16
  11. package/dist/development/navigation/shared/baseRedirect.js +16 -0
  12. package/dist/development/react-server/NextIntlClientProvider.js +3 -3
  13. package/dist/development/react-server/getBaseTranslator.js +1 -1
  14. package/dist/development/react-server/useFormatter.js +1 -1
  15. package/dist/development/react-server/useLocale.js +1 -1
  16. package/dist/development/react-server/useMessages.js +1 -1
  17. package/dist/development/react-server/useNow.js +1 -1
  18. package/dist/development/react-server/useTimeZone.js +1 -1
  19. package/dist/development/server/react-client/index.js +34 -0
  20. package/dist/development/server/{RequestLocale.js → react-server/RequestLocale.js} +1 -1
  21. package/dist/development/server.react-client.js +16 -0
  22. package/dist/development/server.react-server.js +23 -0
  23. package/dist/development/shared/utils.js +7 -7
  24. package/dist/esm/middleware/middleware.js +1 -1
  25. package/dist/esm/navigation/react-client/ClientLink.js +1 -0
  26. package/dist/esm/navigation/react-client/clientRedirect.js +1 -0
  27. package/dist/esm/navigation/react-client/createLocalizedPathnamesNavigation.js +1 -1
  28. package/dist/esm/navigation/react-client/createSharedPathnamesNavigation.js +1 -1
  29. package/dist/esm/navigation/react-server/{BaseLink.js → ServerLink.js} +1 -1
  30. package/dist/esm/navigation/react-server/createLocalizedPathnamesNavigation.js +1 -1
  31. package/dist/esm/navigation/react-server/createSharedPathnamesNavigation.js +1 -1
  32. package/dist/esm/navigation/react-server/serverRedirect.js +1 -0
  33. package/dist/esm/navigation/shared/BaseLink.js +2 -0
  34. package/dist/esm/navigation/shared/baseRedirect.js +1 -0
  35. package/dist/esm/react-server/NextIntlClientProvider.js +1 -1
  36. package/dist/esm/react-server/getBaseTranslator.js +1 -1
  37. package/dist/esm/react-server/useFormatter.js +1 -1
  38. package/dist/esm/react-server/useLocale.js +1 -1
  39. package/dist/esm/react-server/useMessages.js +1 -1
  40. package/dist/esm/react-server/useNow.js +1 -1
  41. package/dist/esm/react-server/useTimeZone.js +1 -1
  42. package/dist/esm/server/react-client/index.js +1 -0
  43. package/dist/esm/server/react-server/RequestLocale.js +1 -0
  44. package/dist/esm/server.react-client.js +1 -0
  45. package/dist/esm/server.react-server.js +1 -0
  46. package/dist/esm/shared/utils.js +1 -1
  47. package/dist/production/middleware/middleware.js +1 -1
  48. package/dist/production/navigation/react-client/ClientLink.js +1 -0
  49. package/dist/production/navigation/react-client/clientRedirect.js +1 -0
  50. package/dist/production/navigation/react-client/createLocalizedPathnamesNavigation.js +1 -1
  51. package/dist/production/navigation/react-client/createSharedPathnamesNavigation.js +1 -1
  52. package/dist/production/navigation/react-server/ServerLink.js +1 -0
  53. package/dist/production/navigation/react-server/createLocalizedPathnamesNavigation.js +1 -1
  54. package/dist/production/navigation/react-server/createSharedPathnamesNavigation.js +1 -1
  55. package/dist/production/navigation/react-server/serverRedirect.js +1 -0
  56. package/dist/production/navigation/shared/BaseLink.js +2 -0
  57. package/dist/production/navigation/shared/baseRedirect.js +1 -0
  58. package/dist/production/react-server/NextIntlClientProvider.js +1 -1
  59. package/dist/production/react-server/getBaseTranslator.js +1 -1
  60. package/dist/production/react-server/useFormatter.js +1 -1
  61. package/dist/production/react-server/useLocale.js +1 -1
  62. package/dist/production/react-server/useMessages.js +1 -1
  63. package/dist/production/react-server/useNow.js +1 -1
  64. package/dist/production/react-server/useTimeZone.js +1 -1
  65. package/dist/production/server/react-client/index.js +1 -0
  66. package/dist/production/server/react-server/RequestLocale.js +1 -0
  67. package/dist/production/server.react-client.js +1 -0
  68. package/dist/production/server.react-server.js +1 -0
  69. package/dist/production/shared/utils.js +1 -1
  70. package/dist/server.react-client.js +7 -0
  71. package/dist/server.react-server.js +7 -0
  72. package/dist/types/src/middleware/NextIntlMiddlewareConfig.d.ts +1 -2
  73. package/dist/types/src/navigation/react-client/{BaseLink.d.ts → ClientLink.d.ts} +5 -4
  74. package/dist/types/src/navigation/react-client/clientRedirect.d.ts +6 -0
  75. package/dist/types/src/navigation/react-client/createLocalizedPathnamesNavigation.d.ts +7 -5
  76. package/dist/types/src/navigation/react-client/createSharedPathnamesNavigation.d.ts +44 -7
  77. package/dist/types/src/navigation/react-client/useBasePathname.d.ts +1 -1
  78. package/dist/types/src/navigation/react-server/ServerLink.d.ts +8 -0
  79. package/dist/types/src/navigation/react-server/createLocalizedPathnamesNavigation.d.ts +5 -3
  80. package/dist/types/src/navigation/react-server/createSharedPathnamesNavigation.d.ts +6 -38
  81. package/dist/types/src/navigation/react-server/serverRedirect.d.ts +6 -0
  82. package/dist/types/src/navigation/shared/BaseLink.d.ts +9 -0
  83. package/dist/types/src/navigation/shared/baseRedirect.d.ts +7 -0
  84. package/dist/types/src/server/react-client/index.d.ts +15 -0
  85. package/dist/types/src/server.react-client.d.ts +1 -0
  86. package/dist/types/src/server.react-server.d.ts +1 -0
  87. package/dist/types/src/shared/types.d.ts +1 -0
  88. package/dist/types/src/shared/utils.d.ts +3 -3
  89. package/dist/types/test/navigation/react-client/ClientLink.test.d.ts +1 -0
  90. package/dist/types/test/server/react-server/index.test.d.ts +1 -0
  91. package/package.json +17 -11
  92. package/server.d.ts +1 -1
  93. package/dist/development/server.js +0 -23
  94. package/dist/development/shared/redirectWithLocale.js +0 -16
  95. package/dist/esm/navigation/react-client/BaseLink.js +0 -1
  96. package/dist/esm/navigation/react-client/baseRedirect.js +0 -1
  97. package/dist/esm/navigation/react-server/baseRedirect.js +0 -1
  98. package/dist/esm/server/RequestLocale.js +0 -1
  99. package/dist/esm/server.js +0 -1
  100. package/dist/esm/shared/BaseLinkWithLocale.js +0 -2
  101. package/dist/esm/shared/redirectWithLocale.js +0 -1
  102. package/dist/production/navigation/react-client/BaseLink.js +0 -1
  103. package/dist/production/navigation/react-client/baseRedirect.js +0 -1
  104. package/dist/production/navigation/react-server/BaseLink.js +0 -1
  105. package/dist/production/navigation/react-server/baseRedirect.js +0 -1
  106. package/dist/production/server/RequestLocale.js +0 -1
  107. package/dist/production/server.js +0 -1
  108. package/dist/production/shared/BaseLinkWithLocale.js +0 -2
  109. package/dist/production/shared/redirectWithLocale.js +0 -1
  110. package/dist/server.js +0 -7
  111. package/dist/types/src/navigation/react-client/baseRedirect.d.ts +0 -3
  112. package/dist/types/src/navigation/react-server/BaseLink.d.ts +0 -8
  113. package/dist/types/src/navigation/react-server/baseRedirect.d.ts +0 -3
  114. package/dist/types/src/server.d.ts +0 -1
  115. package/dist/types/src/shared/BaseLinkWithLocale.d.ts +0 -7
  116. package/dist/types/src/shared/redirectWithLocale.d.ts +0 -3
  117. /package/dist/development/server/{createRequestConfig.js → react-server/createRequestConfig.js} +0 -0
  118. /package/dist/development/server/{getConfig.js → react-server/getConfig.js} +0 -0
  119. /package/dist/development/server/{getFormatter.js → react-server/getFormatter.js} +0 -0
  120. /package/dist/development/server/{getLocale.js → react-server/getLocale.js} +0 -0
  121. /package/dist/development/server/{getMessages.js → react-server/getMessages.js} +0 -0
  122. /package/dist/development/server/{getNow.js → react-server/getNow.js} +0 -0
  123. /package/dist/development/server/{getRequestConfig.js → react-server/getRequestConfig.js} +0 -0
  124. /package/dist/development/server/{getTimeZone.js → react-server/getTimeZone.js} +0 -0
  125. /package/dist/development/server/{getTranslations.js → react-server/getTranslations.js} +0 -0
  126. /package/dist/development/server/{resolveLocaleArg.js → react-server/resolveLocaleArg.js} +0 -0
  127. /package/dist/esm/server/{createRequestConfig.js → react-server/createRequestConfig.js} +0 -0
  128. /package/dist/esm/server/{getConfig.js → react-server/getConfig.js} +0 -0
  129. /package/dist/esm/server/{getFormatter.js → react-server/getFormatter.js} +0 -0
  130. /package/dist/esm/server/{getLocale.js → react-server/getLocale.js} +0 -0
  131. /package/dist/esm/server/{getMessages.js → react-server/getMessages.js} +0 -0
  132. /package/dist/esm/server/{getNow.js → react-server/getNow.js} +0 -0
  133. /package/dist/esm/server/{getRequestConfig.js → react-server/getRequestConfig.js} +0 -0
  134. /package/dist/esm/server/{getTimeZone.js → react-server/getTimeZone.js} +0 -0
  135. /package/dist/esm/server/{getTranslations.js → react-server/getTranslations.js} +0 -0
  136. /package/dist/esm/server/{resolveLocaleArg.js → react-server/resolveLocaleArg.js} +0 -0
  137. /package/dist/production/server/{createRequestConfig.js → react-server/createRequestConfig.js} +0 -0
  138. /package/dist/production/server/{getConfig.js → react-server/getConfig.js} +0 -0
  139. /package/dist/production/server/{getFormatter.js → react-server/getFormatter.js} +0 -0
  140. /package/dist/production/server/{getLocale.js → react-server/getLocale.js} +0 -0
  141. /package/dist/production/server/{getMessages.js → react-server/getMessages.js} +0 -0
  142. /package/dist/production/server/{getNow.js → react-server/getNow.js} +0 -0
  143. /package/dist/production/server/{getRequestConfig.js → react-server/getRequestConfig.js} +0 -0
  144. /package/dist/production/server/{getTimeZone.js → react-server/getTimeZone.js} +0 -0
  145. /package/dist/production/server/{getTranslations.js → react-server/getTranslations.js} +0 -0
  146. /package/dist/production/server/{resolveLocaleArg.js → react-server/resolveLocaleArg.js} +0 -0
  147. /package/dist/types/src/server/{RequestLocale.d.ts → react-server/RequestLocale.d.ts} +0 -0
  148. /package/dist/types/src/server/{createRequestConfig.d.ts → react-server/createRequestConfig.d.ts} +0 -0
  149. /package/dist/types/src/server/{getConfig.d.ts → react-server/getConfig.d.ts} +0 -0
  150. /package/dist/types/src/server/{getFormatter.d.ts → react-server/getFormatter.d.ts} +0 -0
  151. /package/dist/types/src/server/{getLocale.d.ts → react-server/getLocale.d.ts} +0 -0
  152. /package/dist/types/src/server/{getMessages.d.ts → react-server/getMessages.d.ts} +0 -0
  153. /package/dist/types/src/server/{getNow.d.ts → react-server/getNow.d.ts} +0 -0
  154. /package/dist/types/src/server/{getRequestConfig.d.ts → react-server/getRequestConfig.d.ts} +0 -0
  155. /package/dist/types/src/server/{getTimeZone.d.ts → react-server/getTimeZone.d.ts} +0 -0
  156. /package/dist/types/src/server/{getTranslations.d.ts → react-server/getTranslations.d.ts} +0 -0
  157. /package/dist/types/src/server/{index.d.ts → react-server/index.d.ts} +0 -0
  158. /package/dist/types/src/server/{resolveLocaleArg.d.ts → react-server/resolveLocaleArg.d.ts} +0 -0
  159. /package/dist/types/test/navigation/{react-client/BaseLink.test.d.ts → createLocalizedPathnamesNavigation.test.d.ts} +0 -0
  160. /package/dist/types/test/{server/index.test.d.ts → navigation/createSharedPathnamesNavigation.test.d.ts} +0 -0
@@ -94,9 +94,9 @@ function createMiddleware(config) {
94
94
  response = redirect(pathWithSearch);
95
95
  }
96
96
  } else {
97
- const pathWithSearch = utils.getPathWithSearch(pathname, request.nextUrl.search);
97
+ const internalPathWithSearch = utils.getPathWithSearch(pathname, request.nextUrl.search);
98
98
  if (hasLocalePrefix) {
99
- const basePath = utils.getBasePath(pathWithSearch, pathLocale);
99
+ const basePath = utils.getBasePath(utils.getPathWithSearch(normalizedPathname, request.nextUrl.search), pathLocale);
100
100
  if (configWithDefaults.localePrefix === 'never') {
101
101
  response = redirect(basePath);
102
102
  } else if (pathLocale === locale) {
@@ -108,10 +108,10 @@ function createMiddleware(config) {
108
108
  if ((domain === null || domain === void 0 ? void 0 : domain.domain) !== (pathDomain === null || pathDomain === void 0 ? void 0 : pathDomain.domain) && !hasUnknownHost) {
109
109
  response = redirect(basePath, pathDomain === null || pathDomain === void 0 ? void 0 : pathDomain.domain);
110
110
  } else {
111
- response = rewrite(pathWithSearch);
111
+ response = rewrite(internalPathWithSearch);
112
112
  }
113
113
  } else {
114
- response = rewrite(pathWithSearch);
114
+ response = rewrite(internalPathWithSearch);
115
115
  }
116
116
  }
117
117
  } else {
@@ -119,9 +119,9 @@ function createMiddleware(config) {
119
119
  }
120
120
  } else {
121
121
  if (configWithDefaults.localePrefix === 'never' || hasMatchedDefaultLocale && (configWithDefaults.localePrefix === 'as-needed' || configWithDefaults.domains)) {
122
- response = rewrite("/".concat(locale).concat(pathWithSearch));
122
+ response = rewrite("/".concat(locale).concat(internalPathWithSearch));
123
123
  } else {
124
- response = redirect("/".concat(locale).concat(pathWithSearch));
124
+ response = redirect("/".concat(locale).concat(internalPathWithSearch));
125
125
  }
126
126
  }
127
127
  }
@@ -5,20 +5,20 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelpers.js');
6
6
  var React = require('react');
7
7
  var useLocale = require('../../react-client/useLocale.js');
8
- var BaseLinkWithLocale = require('../../shared/BaseLinkWithLocale.js');
8
+ var BaseLink = require('../shared/BaseLink.js');
9
9
 
10
10
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
11
11
 
12
12
  var React__default = /*#__PURE__*/_interopDefault(React);
13
13
 
14
- function BaseLink(_ref, ref) {
14
+ function ClientLink(_ref, ref) {
15
15
  let {
16
16
  locale,
17
17
  ...rest
18
18
  } = _ref;
19
19
  const defaultLocale = useLocale.default();
20
20
  const linkLocale = locale || defaultLocale;
21
- return /*#__PURE__*/React__default.default.createElement(BaseLinkWithLocale.default, _rollupPluginBabelHelpers.extends({
21
+ return /*#__PURE__*/React__default.default.createElement(BaseLink.default, _rollupPluginBabelHelpers.extends({
22
22
  ref: ref,
23
23
  hrefLang: linkLocale,
24
24
  locale: linkLocale
@@ -45,8 +45,8 @@ function BaseLink(_ref, ref) {
45
45
  * the `set-cookie` response header would cause the locale cookie on the current
46
46
  * page to be overwritten before the user even decides to change the locale.
47
47
  */
48
- const BaseLinkWithRef = /*#__PURE__*/React.forwardRef(BaseLink);
49
- BaseLinkWithRef.displayName = 'Link';
50
- var BaseLink$1 = BaseLinkWithRef;
48
+ const ClientLinkWithRef = /*#__PURE__*/React.forwardRef(ClientLink);
49
+ ClientLinkWithRef.displayName = 'ClientLink';
50
+ var ClientLink$1 = ClientLinkWithRef;
51
51
 
52
- exports.default = BaseLink$1;
52
+ exports.default = ClientLink$1;
@@ -3,9 +3,9 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var useLocale = require('../../react-client/useLocale.js');
6
- var redirectWithLocale = require('../../shared/redirectWithLocale.js');
6
+ var baseRedirect = require('../shared/baseRedirect.js');
7
7
 
8
- function baseRedirect(pathname) {
8
+ function clientRedirect(params) {
9
9
  let locale;
10
10
  try {
11
11
  // eslint-disable-next-line react-hooks/rules-of-hooks -- Reading from context here is fine, since `redirect` should be called during render
@@ -16,7 +16,10 @@ function baseRedirect(pathname) {
16
16
  for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
17
17
  args[_key - 1] = arguments[_key];
18
18
  }
19
- return redirectWithLocale.default(pathname, locale, ...args);
19
+ return baseRedirect.default({
20
+ ...params,
21
+ locale
22
+ }, ...args);
20
23
  }
21
24
 
22
- exports.default = baseRedirect;
25
+ exports.default = clientRedirect;
@@ -6,8 +6,8 @@ var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelper
6
6
  var React = require('react');
7
7
  var useLocale = require('../../react-client/useLocale.js');
8
8
  var utils = require('../shared/utils.js');
9
- var BaseLink = require('./BaseLink.js');
10
- var baseRedirect = require('./baseRedirect.js');
9
+ var ClientLink = require('./ClientLink.js');
10
+ var clientRedirect = require('./clientRedirect.js');
11
11
  var useBasePathname = require('./useBasePathname.js');
12
12
  var useBaseRouter = require('./useBaseRouter.js');
13
13
 
@@ -15,28 +15,24 @@ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
15
15
 
16
16
  var React__default = /*#__PURE__*/_interopDefault(React);
17
17
 
18
- function createLocalizedPathnamesNavigation(_ref) {
19
- let {
20
- locales,
21
- pathnames
22
- } = _ref;
18
+ function createLocalizedPathnamesNavigation(opts) {
23
19
  function useTypedLocale() {
24
20
  const locale = useLocale.default();
25
- const isValid = locales.includes(locale);
21
+ const isValid = opts.locales.includes(locale);
26
22
  if (!isValid) {
27
23
  throw new Error("Unknown locale encountered: \"".concat(locale, "\". Make sure to validate the locale in `app/[locale]/layout.tsx`.") );
28
24
  }
29
25
  return locale;
30
26
  }
31
- function Link(_ref2, ref) {
27
+ function Link(_ref, ref) {
32
28
  let {
33
29
  href,
34
30
  locale,
35
31
  ...rest
36
- } = _ref2;
32
+ } = _ref;
37
33
  const defaultLocale = useTypedLocale();
38
34
  const finalLocale = locale || defaultLocale;
39
- return /*#__PURE__*/React__default.default.createElement(BaseLink.default, _rollupPluginBabelHelpers.extends({
35
+ return /*#__PURE__*/React__default.default.createElement(ClientLink.default, _rollupPluginBabelHelpers.extends({
40
36
  ref: ref,
41
37
  href: utils.compileLocalizedPathname({
42
38
  locale: finalLocale,
@@ -44,9 +40,10 @@ function createLocalizedPathnamesNavigation(_ref) {
44
40
  pathname: href,
45
41
  // @ts-expect-error -- This is ok
46
42
  params: typeof href === 'object' ? href.params : undefined,
47
- pathnames
43
+ pathnames: opts.pathnames
48
44
  }),
49
- locale: locale
45
+ locale: locale,
46
+ localePrefix: opts.localePrefix
50
47
  }, rest));
51
48
  }
52
49
  const LinkWithRef = /*#__PURE__*/React.forwardRef(Link);
@@ -61,7 +58,10 @@ function createLocalizedPathnamesNavigation(_ref) {
61
58
  for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
62
59
  args[_key - 1] = arguments[_key];
63
60
  }
64
- return baseRedirect.default(resolvedHref, ...args);
61
+ return clientRedirect.default({
62
+ ...opts,
63
+ pathname: resolvedHref
64
+ }, ...args);
65
65
  }
66
66
  function useRouter() {
67
67
  const baseRouter = useBaseRouter.default();
@@ -106,21 +106,22 @@ function createLocalizedPathnamesNavigation(_ref) {
106
106
  function usePathname() {
107
107
  const pathname = useBasePathname.default();
108
108
  const locale = useTypedLocale();
109
- return utils.getRoute({
109
+ // @ts-expect-error -- Mirror the behavior from Next.js, where `null` is returned when `usePathname` is used outside of Next, but the types indicate that a string is always returned.
110
+ return pathname ? utils.getRoute({
110
111
  pathname,
111
112
  locale,
112
- pathnames
113
- });
113
+ pathnames: opts.pathnames
114
+ }) : pathname;
114
115
  }
115
- function getPathname(_ref3) {
116
+ function getPathname(_ref2) {
116
117
  let {
117
118
  href,
118
119
  locale
119
- } = _ref3;
120
+ } = _ref2;
120
121
  return utils.compileLocalizedPathname({
121
122
  ...utils.normalizeNameOrNameWithParams(href),
122
123
  locale,
123
- pathnames
124
+ pathnames: opts.pathnames
124
125
  });
125
126
  }
126
127
  return {
@@ -2,16 +2,43 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var BaseLink = require('./BaseLink.js');
6
- var baseRedirect = require('./baseRedirect.js');
5
+ var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelpers.js');
6
+ var React = require('react');
7
+ var ClientLink = require('./ClientLink.js');
8
+ var clientRedirect = require('./clientRedirect.js');
7
9
  var useBasePathname = require('./useBasePathname.js');
8
10
  var useBaseRouter = require('./useBaseRouter.js');
9
11
 
12
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
13
+
14
+ var React__default = /*#__PURE__*/_interopDefault(React);
15
+
10
16
  function createSharedPathnamesNavigation(opts) {
17
+ function Link(props, ref) {
18
+ return /*#__PURE__*/React__default.default.createElement(ClientLink.default, _rollupPluginBabelHelpers.extends({
19
+ ref: ref,
20
+ localePrefix: opts.localePrefix
21
+ }, props));
22
+ }
23
+ const LinkWithRef = /*#__PURE__*/React.forwardRef(Link);
24
+ LinkWithRef.displayName = 'Link';
25
+ function redirect(pathname) {
26
+ for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
27
+ args[_key - 1] = arguments[_key];
28
+ }
29
+ return clientRedirect.default({
30
+ ...opts,
31
+ pathname
32
+ }, ...args);
33
+ }
34
+ function usePathname() {
35
+ // @ts-expect-error -- Mirror the behavior from Next.js, where `null` is returned when `usePathname` is used outside of Next, but the types indicate that a string is always returned.
36
+ return useBasePathname.default();
37
+ }
11
38
  return {
12
- Link: BaseLink.default,
13
- redirect: baseRedirect.default,
14
- usePathname: useBasePathname.default,
39
+ Link: LinkWithRef,
40
+ redirect,
41
+ usePathname,
15
42
  useRouter: useBaseRouter.default
16
43
  };
17
44
  }
@@ -4,21 +4,21 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelpers.js');
6
6
  var React = require('react');
7
- var BaseLinkWithLocale = require('../../shared/BaseLinkWithLocale.js');
8
- var getLocale = require('../../server/getLocale.js');
7
+ var BaseLink = require('../shared/BaseLink.js');
8
+ var getLocale = require('../../server/react-server/getLocale.js');
9
9
 
10
10
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
11
11
 
12
12
  var React__default = /*#__PURE__*/_interopDefault(React);
13
13
 
14
- async function BaseLink(_ref) {
14
+ async function ServerLink(_ref) {
15
15
  let {
16
16
  locale,
17
17
  ...rest
18
18
  } = _ref;
19
- return /*#__PURE__*/React__default.default.createElement(BaseLinkWithLocale.default, _rollupPluginBabelHelpers.extends({
19
+ return /*#__PURE__*/React__default.default.createElement(BaseLink.default, _rollupPluginBabelHelpers.extends({
20
20
  locale: locale || (await getLocale.default())
21
21
  }, rest));
22
22
  }
23
23
 
24
- exports.default = BaseLink;
24
+ exports.default = ServerLink;
@@ -4,10 +4,10 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelpers.js');
6
6
  var React = require('react');
7
- var RequestLocale = require('../../server/RequestLocale.js');
7
+ var RequestLocale = require('../../server/react-server/RequestLocale.js');
8
8
  var utils = require('../shared/utils.js');
9
- var BaseLink = require('./BaseLink.js');
10
- var baseRedirect = require('./baseRedirect.js');
9
+ var ServerLink = require('./ServerLink.js');
10
+ var serverRedirect = require('./serverRedirect.js');
11
11
 
12
12
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
13
13
 
@@ -15,6 +15,7 @@ var React__default = /*#__PURE__*/_interopDefault(React);
15
15
 
16
16
  function createLocalizedPathnamesNavigation(_ref) {
17
17
  let {
18
+ localePrefix,
18
19
  locales,
19
20
  pathnames
20
21
  } = _ref;
@@ -26,7 +27,7 @@ function createLocalizedPathnamesNavigation(_ref) {
26
27
  } = _ref2;
27
28
  const defaultLocale = RequestLocale.getRequestLocale();
28
29
  const finalLocale = locale || defaultLocale;
29
- return /*#__PURE__*/React__default.default.createElement(BaseLink.default, _rollupPluginBabelHelpers.extends({
30
+ return /*#__PURE__*/React__default.default.createElement(ServerLink.default, _rollupPluginBabelHelpers.extends({
30
31
  href: utils.compileLocalizedPathname({
31
32
  locale: finalLocale,
32
33
  // @ts-expect-error -- This is ok
@@ -35,19 +36,23 @@ function createLocalizedPathnamesNavigation(_ref) {
35
36
  params: typeof href === 'object' ? href.params : undefined,
36
37
  pathnames
37
38
  }),
38
- locale: locale
39
+ locale: locale,
40
+ localePrefix: localePrefix
39
41
  }, rest));
40
42
  }
41
43
  function redirect(href) {
42
44
  const locale = RequestLocale.getRequestLocale();
43
- const resolvedHref = getPathname({
45
+ const pathname = getPathname({
44
46
  href,
45
47
  locale
46
48
  });
47
49
  for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
48
50
  args[_key - 1] = arguments[_key];
49
51
  }
50
- return baseRedirect.default(resolvedHref, ...args);
52
+ return serverRedirect.default({
53
+ localePrefix,
54
+ pathname
55
+ }, ...args);
51
56
  }
52
57
  function getPathname(_ref3) {
53
58
  let {
@@ -60,9 +65,9 @@ function createLocalizedPathnamesNavigation(_ref) {
60
65
  pathnames
61
66
  });
62
67
  }
63
- function notSupported(message) {
68
+ function notSupported(hookName) {
64
69
  return () => {
65
- throw new Error("`".concat(message, "` is not supported in Server Components. You can use this hook if you convert the component to a Client Component."));
70
+ throw new Error("`".concat(hookName, "` is not supported in Server Components. You can use this hook if you convert the component to a Client Component."));
66
71
  };
67
72
  }
68
73
  return {
@@ -2,18 +2,38 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var BaseLink = require('./BaseLink.js');
6
- var baseRedirect = require('./baseRedirect.js');
5
+ var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelpers.js');
6
+ var React = require('react');
7
+ var ServerLink = require('./ServerLink.js');
8
+ var serverRedirect = require('./serverRedirect.js');
9
+
10
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
11
+
12
+ var React__default = /*#__PURE__*/_interopDefault(React);
7
13
 
8
14
  function createSharedPathnamesNavigation(opts) {
9
- function notSupported(message) {
15
+ function notSupported(hookName) {
10
16
  return () => {
11
- throw new Error("`".concat(message, "` is not supported in Server Components. You can use this hook if you convert the component to a Client Component."));
17
+ throw new Error("`".concat(hookName, "` is not supported in Server Components. You can use this hook if you convert the component to a Client Component."));
12
18
  };
13
19
  }
20
+ function Link(props) {
21
+ return /*#__PURE__*/React__default.default.createElement(ServerLink.default, _rollupPluginBabelHelpers.extends({
22
+ localePrefix: opts.localePrefix
23
+ }, props));
24
+ }
25
+ function redirect(pathname) {
26
+ for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
27
+ args[_key - 1] = arguments[_key];
28
+ }
29
+ return serverRedirect.default({
30
+ ...opts,
31
+ pathname
32
+ }, ...args);
33
+ }
14
34
  return {
15
- Link: BaseLink.default,
16
- redirect: baseRedirect.default,
35
+ Link,
36
+ redirect,
17
37
  usePathname: notSupported('usePathname'),
18
38
  useRouter: notSupported('useRouter')
19
39
  };
@@ -2,15 +2,18 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var RequestLocale = require('../../server/RequestLocale.js');
6
- var redirectWithLocale = require('../../shared/redirectWithLocale.js');
5
+ var RequestLocale = require('../../server/react-server/RequestLocale.js');
6
+ var baseRedirect = require('../shared/baseRedirect.js');
7
7
 
8
- function baseRedirect(pathname) {
8
+ function serverRedirect(params) {
9
9
  const locale = RequestLocale.getRequestLocale();
10
10
  for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
11
11
  args[_key - 1] = arguments[_key];
12
12
  }
13
- return redirectWithLocale.default(pathname, locale, ...args);
13
+ return baseRedirect.default({
14
+ ...params,
15
+ locale
16
+ }, ...args);
14
17
  }
15
18
 
16
- exports.default = baseRedirect;
19
+ exports.default = serverRedirect;
@@ -3,22 +3,23 @@
3
3
 
4
4
  Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
- var _rollupPluginBabelHelpers = require('../_virtual/_rollupPluginBabelHelpers.js');
6
+ var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelpers.js');
7
7
  var NextLink = require('next/link');
8
8
  var navigation = require('next/navigation');
9
9
  var React = require('react');
10
- var useLocale = require('../react-client/useLocale.js');
11
- var utils = require('./utils.js');
10
+ var useLocale = require('../../react-client/useLocale.js');
11
+ var utils = require('../../shared/utils.js');
12
12
 
13
13
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
14
14
 
15
15
  var NextLink__default = /*#__PURE__*/_interopDefault(NextLink);
16
16
  var React__default = /*#__PURE__*/_interopDefault(React);
17
17
 
18
- function BaseLinkWithLocale(_ref, ref) {
18
+ function BaseLink(_ref, ref) {
19
19
  let {
20
20
  href,
21
21
  locale,
22
+ localePrefix,
22
23
  prefetch,
23
24
  ...rest
24
25
  } = _ref;
@@ -27,20 +28,22 @@ function BaseLinkWithLocale(_ref, ref) {
27
28
  const pathname = navigation.usePathname();
28
29
  const defaultLocale = useLocale.default();
29
30
  const isChangingLocale = locale !== defaultLocale;
30
- const [localizedHref, setLocalizedHref] = React.useState(() => utils.isLocalHref(href) && locale ?
31
- // Potentially the href shouldn't be prefixed, but to determine this we
31
+ const [localizedHref, setLocalizedHref] = React.useState(() => utils.isLocalHref(href) && (localePrefix !== 'never' || isChangingLocale) ?
32
+ // For the `localePrefix: 'as-needed' strategy, the href shouldn't
33
+ // be prefixed if the locale is the default locale. To determine this, we
32
34
  // need a) the default locale and b) the information if we use prefixed
33
- // routing. During the server side render (both in RSC as well as SSR),
34
- // we don't have this information. Therefore we always prefix the href
35
- // since this will always result in a valid URL, even if it might cause
36
- // a redirect. This is better than pointing to a non-localized href
37
- // during the server render, which would potentially be wrong. The final
38
- // href is determined in the effect below.
35
+ // routing. The default locale can vary by domain, therefore during the
36
+ // RSC as well as the SSR render, we can't determine the default locale
37
+ // statically. Therefore we always prefix the href since this will
38
+ // always result in a valid URL, even if it might cause a redirect. This
39
+ // is better than pointing to a non-localized href during the server
40
+ // render, which would potentially be wrong. The final href is
41
+ // determined in the effect below.
39
42
  utils.prefixHref(href, locale) : href);
40
43
  React.useEffect(() => {
41
- if (!pathname) return;
44
+ if (!pathname || localePrefix === 'never') return;
42
45
  setLocalizedHref(utils.localizeHref(href, locale, defaultLocale, pathname !== null && pathname !== void 0 ? pathname : undefined));
43
- }, [defaultLocale, href, locale, pathname]);
46
+ }, [defaultLocale, href, locale, localePrefix, pathname]);
44
47
  if (isChangingLocale) {
45
48
  if (prefetch && "development" !== 'production') {
46
49
  console.error('The `prefetch` prop is currently not supported when using the `locale` prop on `Link` to switch the locale.`');
@@ -53,6 +56,8 @@ function BaseLinkWithLocale(_ref, ref) {
53
56
  prefetch: prefetch
54
57
  }, rest));
55
58
  }
56
- var BaseLinkWithLocale$1 = /*#__PURE__*/React.forwardRef(BaseLinkWithLocale);
59
+ const BaseLinkWithRef = /*#__PURE__*/React.forwardRef(BaseLink);
60
+ BaseLinkWithRef.displayName = 'ClientLink';
61
+ var BaseLink$1 = BaseLinkWithRef;
57
62
 
58
- exports.default = BaseLinkWithLocale$1;
63
+ exports.default = BaseLink$1;
@@ -0,0 +1,16 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var navigation = require('next/navigation');
6
+ var utils = require('../../shared/utils.js');
7
+
8
+ function baseRedirect(params) {
9
+ const localizedPathname = params.localePrefix === 'never' ? params.pathname : utils.prefixPathname(params.locale, params.pathname);
10
+ for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
11
+ args[_key - 1] = arguments[_key];
12
+ }
13
+ return navigation.redirect(localizedPathname, ...args);
14
+ }
15
+
16
+ exports.default = baseRedirect;
@@ -5,9 +5,9 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var _rollupPluginBabelHelpers = require('../_virtual/_rollupPluginBabelHelpers.js');
6
6
  var React = require('react');
7
7
  var NextIntlClientProvider$1 = require('../shared/NextIntlClientProvider.js');
8
- var getLocale = require('../server/getLocale.js');
9
- var getNow = require('../server/getNow.js');
10
- var getTimeZone = require('../server/getTimeZone.js');
8
+ var getLocale = require('../server/react-server/getLocale.js');
9
+ var getNow = require('../server/react-server/getNow.js');
10
+ var getTimeZone = require('../server/react-server/getTimeZone.js');
11
11
 
12
12
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
13
13
 
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var React = require('react');
6
6
  var core = require('use-intl/core');
7
- var getConfig = require('../server/getConfig.js');
7
+ var getConfig = require('../server/react-server/getConfig.js');
8
8
 
9
9
  const getMessageFormatCache = React.cache(() => new Map());
10
10
  async function getTranslatorImpl(locale, namespace) {
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var getFormatter = require('../server/getFormatter.js');
5
+ var getFormatter = require('../server/react-server/getFormatter.js');
6
6
  var useHook = require('./useHook.js');
7
7
  var useLocale = require('./useLocale.js');
8
8
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var RequestLocale = require('../server/RequestLocale.js');
5
+ var RequestLocale = require('../server/react-server/RequestLocale.js');
6
6
 
7
7
  function useLocale() {
8
8
  for (var _len = arguments.length, _ref = new Array(_len), _key = 0; _key < _len; _key++) {
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var getMessages = require('../server/getMessages.js');
5
+ var getMessages = require('../server/react-server/getMessages.js');
6
6
  var useHook = require('./useHook.js');
7
7
  var useLocale = require('./useLocale.js');
8
8
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var getNow = require('../server/getNow.js');
5
+ var getNow = require('../server/react-server/getNow.js');
6
6
  var useHook = require('./useHook.js');
7
7
  var useLocale = require('./useLocale.js');
8
8
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var getTimeZone = require('../server/getTimeZone.js');
5
+ var getTimeZone = require('../server/react-server/getTimeZone.js');
6
6
  var useHook = require('./useHook.js');
7
7
  var useLocale = require('./useLocale.js');
8
8
 
@@ -0,0 +1,34 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ /**
6
+ * Allows to import `next-intl/server` in non-RSC environments.
7
+ *
8
+ * This is mostly relevant for testing, since e.g. a `generateMetadata`
9
+ * export from a page might use `next-intl/server`, but the test
10
+ * only uses the default export for a page.
11
+ */
12
+
13
+ function notSupported(message) {
14
+ return () => {
15
+ throw new Error("`".concat(message, "` is not supported in Client Components."));
16
+ };
17
+ }
18
+ const getRequestConfig = notSupported('getRequestConfig');
19
+ const getFormatter = notSupported('getFormatter');
20
+ const getNow = notSupported('getNow');
21
+ const getTimeZone = notSupported('getTimeZone');
22
+ const getTranslations = notSupported('getTranslations');
23
+ const getMessages = notSupported('getMessages');
24
+ const getLocale = notSupported('getLocale');
25
+ const unstable_setRequestLocale = notSupported('unstable_setRequestLocale');
26
+
27
+ exports.getFormatter = getFormatter;
28
+ exports.getLocale = getLocale;
29
+ exports.getMessages = getMessages;
30
+ exports.getNow = getNow;
31
+ exports.getRequestConfig = getRequestConfig;
32
+ exports.getTimeZone = getTimeZone;
33
+ exports.getTranslations = getTranslations;
34
+ exports.unstable_setRequestLocale = unstable_setRequestLocale;
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var headers = require('next/headers');
6
6
  var React = require('react');
7
- var constants = require('../shared/constants.js');
7
+ var constants = require('../../shared/constants.js');
8
8
 
9
9
  const getLocaleFromHeader = React.cache(() => {
10
10
  let locale;
@@ -0,0 +1,16 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var index = require('./server/react-client/index.js');
6
+
7
+
8
+
9
+ exports.getFormatter = index.getFormatter;
10
+ exports.getLocale = index.getLocale;
11
+ exports.getMessages = index.getMessages;
12
+ exports.getNow = index.getNow;
13
+ exports.getRequestConfig = index.getRequestConfig;
14
+ exports.getTimeZone = index.getTimeZone;
15
+ exports.getTranslations = index.getTranslations;
16
+ exports.unstable_setRequestLocale = index.unstable_setRequestLocale;