@bleedingdev/modern-js-plugin-i18n 3.5.0-ultramodern.3 → 3.5.0-ultramodern.31

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 (168) hide show
  1. package/dist/cjs/cli/index.js +2 -1
  2. package/dist/cjs/runtime/Link.js +8 -89
  3. package/dist/cjs/runtime/context.js +18 -82
  4. package/dist/cjs/runtime/contextHelpers.js +137 -0
  5. package/dist/cjs/runtime/core.js +29 -132
  6. package/dist/cjs/runtime/i18n/detection/cache.js +149 -0
  7. package/dist/cjs/runtime/i18n/detection/detector.js +100 -0
  8. package/dist/cjs/runtime/i18n/detection/index.js +8 -263
  9. package/dist/cjs/runtime/i18n/detection/initOptions.js +69 -0
  10. package/dist/cjs/runtime/i18n/detection/language.js +62 -0
  11. package/dist/cjs/runtime/i18n/detection/path.js +49 -0
  12. package/dist/cjs/runtime/i18n/detection/priority.js +66 -0
  13. package/dist/cjs/runtime/i18n/detection/ssr.js +70 -0
  14. package/dist/cjs/runtime/i18n/detection/types.js +18 -0
  15. package/dist/cjs/runtime/linkHelpers.js +148 -0
  16. package/dist/cjs/runtime/pluginSetup.js +102 -0
  17. package/dist/cjs/runtime/providerComposition.js +113 -0
  18. package/dist/cjs/runtime/reactI18next.js +43 -0
  19. package/dist/cjs/server/apiPrefix.js +72 -0
  20. package/dist/cjs/server/detectorOptions.js +97 -0
  21. package/dist/cjs/server/index.js +17 -144
  22. package/dist/cjs/server/redirectPolicy.js +102 -0
  23. package/dist/cjs/shared/localisedUrls/config.js +49 -0
  24. package/dist/cjs/shared/localisedUrls/index.js +75 -0
  25. package/dist/cjs/shared/localisedUrls/normalise.js +87 -0
  26. package/dist/cjs/shared/localisedUrls/pathname.js +65 -0
  27. package/dist/cjs/shared/localisedUrls/patterns.js +130 -0
  28. package/dist/cjs/shared/localisedUrls/resolve.js +91 -0
  29. package/dist/cjs/shared/localisedUrls/routes.js +129 -0
  30. package/dist/cjs/shared/localisedUrls/types.js +18 -0
  31. package/dist/cjs/shared/localisedUrls.js +13 -294
  32. package/dist/esm/cli/index.mjs +2 -1
  33. package/dist/esm/runtime/Link.mjs +1 -82
  34. package/dist/esm/runtime/context.mjs +18 -82
  35. package/dist/esm/runtime/contextHelpers.mjs +84 -0
  36. package/dist/esm/runtime/core.mjs +30 -133
  37. package/dist/esm/runtime/i18n/detection/cache.mjs +102 -0
  38. package/dist/esm/runtime/i18n/detection/detector.mjs +62 -0
  39. package/dist/esm/runtime/i18n/detection/index.mjs +4 -260
  40. package/dist/esm/runtime/i18n/detection/initOptions.mjs +28 -0
  41. package/dist/esm/runtime/i18n/detection/language.mjs +21 -0
  42. package/dist/esm/runtime/i18n/detection/path.mjs +11 -0
  43. package/dist/esm/runtime/i18n/detection/priority.mjs +28 -0
  44. package/dist/esm/runtime/i18n/detection/ssr.mjs +26 -0
  45. package/dist/esm/runtime/i18n/detection/types.mjs +0 -0
  46. package/dist/esm/runtime/linkHelpers.mjs +98 -0
  47. package/dist/esm/runtime/pluginSetup.mjs +64 -0
  48. package/dist/esm/runtime/providerComposition.mjs +75 -0
  49. package/dist/esm/runtime/reactI18next.mjs +5 -0
  50. package/dist/esm/server/apiPrefix.mjs +31 -0
  51. package/dist/esm/server/detectorOptions.mjs +59 -0
  52. package/dist/esm/server/index.mjs +6 -133
  53. package/dist/esm/server/redirectPolicy.mjs +52 -0
  54. package/dist/esm/shared/localisedUrls/config.mjs +11 -0
  55. package/dist/esm/shared/localisedUrls/index.mjs +6 -0
  56. package/dist/esm/shared/localisedUrls/normalise.mjs +37 -0
  57. package/dist/esm/shared/localisedUrls/pathname.mjs +24 -0
  58. package/dist/esm/shared/localisedUrls/patterns.mjs +86 -0
  59. package/dist/esm/shared/localisedUrls/resolve.mjs +50 -0
  60. package/dist/esm/shared/localisedUrls/routes.mjs +88 -0
  61. package/dist/esm/shared/localisedUrls/types.mjs +0 -0
  62. package/dist/esm/shared/localisedUrls.mjs +1 -283
  63. package/dist/esm-node/cli/index.mjs +2 -1
  64. package/dist/esm-node/runtime/Link.mjs +1 -82
  65. package/dist/esm-node/runtime/context.mjs +18 -82
  66. package/dist/esm-node/runtime/contextHelpers.mjs +85 -0
  67. package/dist/esm-node/runtime/core.mjs +30 -133
  68. package/dist/esm-node/runtime/i18n/detection/cache.mjs +103 -0
  69. package/dist/esm-node/runtime/i18n/detection/detector.mjs +63 -0
  70. package/dist/esm-node/runtime/i18n/detection/index.mjs +4 -260
  71. package/dist/esm-node/runtime/i18n/detection/initOptions.mjs +29 -0
  72. package/dist/esm-node/runtime/i18n/detection/language.mjs +22 -0
  73. package/dist/esm-node/runtime/i18n/detection/path.mjs +12 -0
  74. package/dist/esm-node/runtime/i18n/detection/priority.mjs +29 -0
  75. package/dist/esm-node/runtime/i18n/detection/ssr.mjs +27 -0
  76. package/dist/esm-node/runtime/i18n/detection/types.mjs +1 -0
  77. package/dist/esm-node/runtime/linkHelpers.mjs +99 -0
  78. package/dist/esm-node/runtime/pluginSetup.mjs +65 -0
  79. package/dist/esm-node/runtime/providerComposition.mjs +76 -0
  80. package/dist/esm-node/runtime/reactI18next.mjs +6 -0
  81. package/dist/esm-node/server/apiPrefix.mjs +32 -0
  82. package/dist/esm-node/server/detectorOptions.mjs +60 -0
  83. package/dist/esm-node/server/index.mjs +6 -133
  84. package/dist/esm-node/server/redirectPolicy.mjs +53 -0
  85. package/dist/esm-node/shared/localisedUrls/config.mjs +12 -0
  86. package/dist/esm-node/shared/localisedUrls/index.mjs +7 -0
  87. package/dist/esm-node/shared/localisedUrls/normalise.mjs +38 -0
  88. package/dist/esm-node/shared/localisedUrls/pathname.mjs +25 -0
  89. package/dist/esm-node/shared/localisedUrls/patterns.mjs +87 -0
  90. package/dist/esm-node/shared/localisedUrls/resolve.mjs +51 -0
  91. package/dist/esm-node/shared/localisedUrls/routes.mjs +89 -0
  92. package/dist/esm-node/shared/localisedUrls/types.mjs +1 -0
  93. package/dist/esm-node/shared/localisedUrls.mjs +1 -283
  94. package/dist/types/runtime/Link.d.ts +3 -7
  95. package/dist/types/runtime/context.d.ts +2 -2
  96. package/dist/types/runtime/contextHelpers.d.ts +28 -0
  97. package/dist/types/runtime/core.d.ts +3 -7
  98. package/dist/types/runtime/hooks.d.ts +5 -0
  99. package/dist/types/runtime/i18n/detection/cache.d.ts +14 -0
  100. package/dist/types/runtime/i18n/detection/detector.d.ts +8 -0
  101. package/dist/types/runtime/i18n/detection/index.d.ts +5 -50
  102. package/dist/types/runtime/i18n/detection/initOptions.d.ts +10 -0
  103. package/dist/types/runtime/i18n/detection/language.d.ts +11 -0
  104. package/dist/types/runtime/i18n/detection/path.d.ts +5 -0
  105. package/dist/types/runtime/i18n/detection/priority.d.ts +10 -0
  106. package/dist/types/runtime/i18n/detection/ssr.d.ts +9 -0
  107. package/dist/types/runtime/i18n/detection/types.d.ts +29 -0
  108. package/dist/types/runtime/i18n/react-i18next.d.ts +1 -6
  109. package/dist/types/runtime/linkHelpers.d.ts +17 -0
  110. package/dist/types/runtime/pluginSetup.d.ts +32 -0
  111. package/dist/types/runtime/providerComposition.d.ts +15 -0
  112. package/dist/types/runtime/reactI18next.d.ts +7 -0
  113. package/dist/types/runtime/utils.d.ts +7 -2
  114. package/dist/types/server/apiPrefix.d.ts +7 -0
  115. package/dist/types/server/detectorOptions.d.ts +21 -0
  116. package/dist/types/server/index.d.ts +1 -6
  117. package/dist/types/server/redirectPolicy.d.ts +16 -0
  118. package/dist/types/shared/localisedUrls/config.d.ts +9 -0
  119. package/dist/types/shared/localisedUrls/index.d.ts +7 -0
  120. package/dist/types/shared/localisedUrls/normalise.d.ts +10 -0
  121. package/dist/types/shared/localisedUrls/pathname.d.ts +3 -0
  122. package/dist/types/shared/localisedUrls/patterns.d.ts +5 -0
  123. package/dist/types/shared/localisedUrls/resolve.d.ts +8 -0
  124. package/dist/types/shared/localisedUrls/routes.d.ts +3 -0
  125. package/dist/types/shared/localisedUrls/types.d.ts +14 -0
  126. package/dist/types/shared/localisedUrls.d.ts +2 -36
  127. package/package.json +10 -10
  128. package/src/cli/index.ts +3 -2
  129. package/src/runtime/Link.tsx +11 -138
  130. package/src/runtime/context.tsx +42 -196
  131. package/src/runtime/contextHelpers.ts +232 -0
  132. package/src/runtime/core.tsx +43 -274
  133. package/src/runtime/hooks.ts +3 -0
  134. package/src/runtime/i18n/detection/cache.ts +175 -0
  135. package/src/runtime/i18n/detection/detector.ts +157 -0
  136. package/src/runtime/i18n/detection/index.ts +10 -641
  137. package/src/runtime/i18n/detection/initOptions.ts +74 -0
  138. package/src/runtime/i18n/detection/language.ts +64 -0
  139. package/src/runtime/i18n/detection/path.ts +41 -0
  140. package/src/runtime/i18n/detection/priority.ts +82 -0
  141. package/src/runtime/i18n/detection/ssr.ts +47 -0
  142. package/src/runtime/i18n/detection/types.ts +33 -0
  143. package/src/runtime/i18n/react-i18next.ts +1 -6
  144. package/src/runtime/linkHelpers.ts +174 -0
  145. package/src/runtime/pluginSetup.ts +189 -0
  146. package/src/runtime/providerComposition.tsx +142 -0
  147. package/src/runtime/reactI18next.ts +20 -0
  148. package/src/runtime/utils.ts +7 -5
  149. package/src/server/apiPrefix.ts +67 -0
  150. package/src/server/detectorOptions.ts +105 -0
  151. package/src/server/index.ts +14 -319
  152. package/src/server/redirectPolicy.ts +152 -0
  153. package/src/shared/localisedUrls/config.ts +18 -0
  154. package/src/shared/localisedUrls/index.ts +13 -0
  155. package/src/shared/localisedUrls/normalise.ts +67 -0
  156. package/src/shared/localisedUrls/pathname.ts +57 -0
  157. package/src/shared/localisedUrls/patterns.ts +160 -0
  158. package/src/shared/localisedUrls/resolve.ts +118 -0
  159. package/src/shared/localisedUrls/routes.ts +226 -0
  160. package/src/shared/localisedUrls/types.ts +18 -0
  161. package/src/shared/localisedUrls.ts +20 -623
  162. package/tests/link.test.tsx +111 -0
  163. package/tests/linkTypes.test.ts +15 -4
  164. package/tests/localisedUrls.test.ts +54 -2
  165. package/tests/reactI18nextRuntimeBoundary.test.ts +6 -3
  166. package/tests/routerAdapter.test.tsx +56 -0
  167. package/tests/type-fixture/fixture-globals.d.ts +11 -0
  168. package/tests/type-fixture/tsconfig.json +1 -0
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, getters, values)=>{
5
+ var define = (defs, kind)=>{
6
+ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
7
+ enumerable: true,
8
+ [kind]: defs[key]
9
+ });
10
+ };
11
+ define(getters, "get");
12
+ define(values, "value");
13
+ };
14
+ })();
15
+ (()=>{
16
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
17
+ })();
18
+ (()=>{
19
+ __webpack_require__.r = (exports1)=>{
20
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
21
+ value: 'Module'
22
+ });
23
+ Object.defineProperty(exports1, '__esModule', {
24
+ value: true
25
+ });
26
+ };
27
+ })();
28
+ var __webpack_exports__ = {};
29
+ __webpack_require__.r(__webpack_exports__);
30
+ __webpack_require__.d(__webpack_exports__, {
31
+ detectLanguageFromPathPriority: ()=>detectLanguageFromPathPriority
32
+ });
33
+ const external_utils_js_namespaceObject = require("../../utils.js");
34
+ const detectLanguageFromPathPriority = (pathname, languages, localePathRedirect)=>{
35
+ if (!localePathRedirect) return;
36
+ if (!languages || 0 === languages.length) return;
37
+ if (!pathname || '' === pathname.trim()) return;
38
+ try {
39
+ const pathDetection = (0, external_utils_js_namespaceObject.detectLanguageFromPath)(pathname, languages, localePathRedirect);
40
+ if (true === pathDetection.detected && pathDetection.language) return pathDetection.language;
41
+ } catch (error) {}
42
+ };
43
+ exports.detectLanguageFromPathPriority = __webpack_exports__.detectLanguageFromPathPriority;
44
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
45
+ "detectLanguageFromPathPriority"
46
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
47
+ Object.defineProperty(exports, '__esModule', {
48
+ value: true
49
+ });
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, getters, values)=>{
5
+ var define = (defs, kind)=>{
6
+ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
7
+ enumerable: true,
8
+ [kind]: defs[key]
9
+ });
10
+ };
11
+ define(getters, "get");
12
+ define(values, "value");
13
+ };
14
+ })();
15
+ (()=>{
16
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
17
+ })();
18
+ (()=>{
19
+ __webpack_require__.r = (exports1)=>{
20
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
21
+ value: 'Module'
22
+ });
23
+ Object.defineProperty(exports1, '__esModule', {
24
+ value: true
25
+ });
26
+ };
27
+ })();
28
+ var __webpack_exports__ = {};
29
+ __webpack_require__.r(__webpack_exports__);
30
+ __webpack_require__.d(__webpack_exports__, {
31
+ detectLanguageWithPriority: ()=>detectLanguageWithPriority
32
+ });
33
+ const external_instance_js_namespaceObject = require("../instance.js");
34
+ const external_detector_js_namespaceObject = require("./detector.js");
35
+ const external_initOptions_js_namespaceObject = require("./initOptions.js");
36
+ const external_middleware_js_namespaceObject = require("./middleware.js");
37
+ const external_path_js_namespaceObject = require("./path.js");
38
+ const external_ssr_js_namespaceObject = require("./ssr.js");
39
+ const detectLanguageWithPriority = async (i18nInstance, options)=>{
40
+ const { languages, fallbackLanguage, localePathRedirect, i18nextDetector, detection, userInitOptions, pathname, ssrContext } = options;
41
+ let detectedLanguage;
42
+ detectedLanguage = (0, external_path_js_namespaceObject.detectLanguageFromPathPriority)(pathname, languages, localePathRedirect);
43
+ if (!detectedLanguage) detectedLanguage = (0, external_ssr_js_namespaceObject.detectLanguageFromSSR)(languages);
44
+ if (!detectedLanguage && i18nextDetector) detectedLanguage = (0, external_instance_js_namespaceObject.isI18nWrapperInstance)(i18nInstance) ? (0, external_middleware_js_namespaceObject.readLanguageFromStorage)((0, external_initOptions_js_namespaceObject.mergeDetectionOptions)(i18nextDetector, detection, localePathRedirect, userInitOptions)) : await (0, external_detector_js_namespaceObject.detectLanguageFromI18nextDetector)(i18nInstance, {
45
+ languages,
46
+ fallbackLanguage,
47
+ localePathRedirect,
48
+ i18nextDetector,
49
+ detection,
50
+ userInitOptions,
51
+ mergedBackend: options.mergedBackend,
52
+ ssrContext
53
+ });
54
+ const finalLanguage = detectedLanguage || userInitOptions?.lng || fallbackLanguage;
55
+ return {
56
+ detectedLanguage,
57
+ finalLanguage
58
+ };
59
+ };
60
+ exports.detectLanguageWithPriority = __webpack_exports__.detectLanguageWithPriority;
61
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
62
+ "detectLanguageWithPriority"
63
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
64
+ Object.defineProperty(exports, '__esModule', {
65
+ value: true
66
+ });
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, getters, values)=>{
5
+ var define = (defs, kind)=>{
6
+ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
7
+ enumerable: true,
8
+ [kind]: defs[key]
9
+ });
10
+ };
11
+ define(getters, "get");
12
+ define(values, "value");
13
+ };
14
+ })();
15
+ (()=>{
16
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
17
+ })();
18
+ (()=>{
19
+ __webpack_require__.r = (exports1)=>{
20
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
21
+ value: 'Module'
22
+ });
23
+ Object.defineProperty(exports1, '__esModule', {
24
+ value: true
25
+ });
26
+ };
27
+ })();
28
+ var __webpack_exports__ = {};
29
+ __webpack_require__.r(__webpack_exports__);
30
+ __webpack_require__.d(__webpack_exports__, {
31
+ detectLanguageFromSSR: ()=>detectLanguageFromSSR,
32
+ exportServerLngToWindow: ()=>exportServerLngToWindow,
33
+ getLanguageFromSSRData: ()=>getLanguageFromSSRData
34
+ });
35
+ const runtime_namespaceObject = require("@modern-js/runtime");
36
+ const external_language_js_namespaceObject = require("./language.js");
37
+ function exportServerLngToWindow(context, lng) {
38
+ context.__i18nData__ = {
39
+ lng
40
+ };
41
+ }
42
+ const getLanguageFromSSRData = (window1)=>{
43
+ try {
44
+ const ssrData = window1._SSR_DATA;
45
+ if (!ssrData || !ssrData.data || !ssrData.data.i18nData) return;
46
+ const lng = ssrData.data.i18nData.lng;
47
+ return 'string' == typeof lng && '' !== lng.trim() ? lng : void 0;
48
+ } catch (error) {
49
+ return;
50
+ }
51
+ };
52
+ const detectLanguageFromSSR = (languages)=>{
53
+ if (!(0, runtime_namespaceObject.isBrowser)()) return;
54
+ try {
55
+ const ssrLanguage = getLanguageFromSSRData(window);
56
+ const supportedLanguage = (0, external_language_js_namespaceObject.getSupportedLanguage)(ssrLanguage, languages);
57
+ if (supportedLanguage) return supportedLanguage;
58
+ } catch (error) {}
59
+ };
60
+ exports.detectLanguageFromSSR = __webpack_exports__.detectLanguageFromSSR;
61
+ exports.exportServerLngToWindow = __webpack_exports__.exportServerLngToWindow;
62
+ exports.getLanguageFromSSRData = __webpack_exports__.getLanguageFromSSRData;
63
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
64
+ "detectLanguageFromSSR",
65
+ "exportServerLngToWindow",
66
+ "getLanguageFromSSRData"
67
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
68
+ Object.defineProperty(exports, '__esModule', {
69
+ value: true
70
+ });
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.r = (exports1)=>{
5
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
6
+ value: 'Module'
7
+ });
8
+ Object.defineProperty(exports1, '__esModule', {
9
+ value: true
10
+ });
11
+ };
12
+ })();
13
+ var __webpack_exports__ = {};
14
+ __webpack_require__.r(__webpack_exports__);
15
+ for(var __rspack_i in __webpack_exports__)exports[__rspack_i] = __webpack_exports__[__rspack_i];
16
+ Object.defineProperty(exports, '__esModule', {
17
+ value: true
18
+ });
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, getters, values)=>{
5
+ var define = (defs, kind)=>{
6
+ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
7
+ enumerable: true,
8
+ [kind]: defs[key]
9
+ });
10
+ };
11
+ define(getters, "get");
12
+ define(values, "value");
13
+ };
14
+ })();
15
+ (()=>{
16
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
17
+ })();
18
+ (()=>{
19
+ __webpack_require__.r = (exports1)=>{
20
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
21
+ value: 'Module'
22
+ });
23
+ Object.defineProperty(exports1, '__esModule', {
24
+ value: true
25
+ });
26
+ };
27
+ })();
28
+ var __webpack_exports__ = {};
29
+ __webpack_require__.r(__webpack_exports__);
30
+ const warnedTargets = new Set();
31
+ const warnOnce = (key, message)=>{
32
+ if ('development' !== process.env.NODE_ENV || warnedTargets.has(key)) return;
33
+ warnedTargets.add(key);
34
+ console.warn(message);
35
+ };
36
+ const interpolateRouteParams = (pathname, params)=>{
37
+ if (!/[$:*{]/.test(pathname)) return pathname;
38
+ const resolveParam = (name)=>{
39
+ const value = params?.[name];
40
+ return void 0 === value ? void 0 : String(value);
41
+ };
42
+ const segments = pathname.split('/').map((segment)=>{
43
+ if (!segment) return segment;
44
+ if (segment.startsWith('{-$') && segment.endsWith('}')) {
45
+ const value = resolveParam(segment.slice(3, -1));
46
+ return void 0 === value ? null : encodeURIComponent(value);
47
+ }
48
+ if ('$' === segment || '*' === segment) {
49
+ const value = resolveParam('_splat') ?? resolveParam('*');
50
+ return void 0 === value ? null : value.split('/').map(encodeURIComponent).join('/');
51
+ }
52
+ if (segment.startsWith('$')) {
53
+ const value = resolveParam(segment.slice(1));
54
+ if (void 0 === value) {
55
+ warnOnce(`missing-param:${pathname}:${segment}`, `[plugin-i18n] <Link to="${pathname}"> is missing required param "${segment.slice(1)}".`);
56
+ return segment;
57
+ }
58
+ return encodeURIComponent(value);
59
+ }
60
+ if (segment.startsWith(':')) {
61
+ const optional = segment.endsWith('?');
62
+ const name = segment.slice(1, optional ? -1 : void 0);
63
+ const value = resolveParam(name);
64
+ if (void 0 === value) {
65
+ if (optional) return null;
66
+ warnOnce(`missing-param:${pathname}:${segment}`, `[plugin-i18n] <Link to="${pathname}"> is missing required param "${name}".`);
67
+ return segment;
68
+ }
69
+ return encodeURIComponent(value);
70
+ }
71
+ return segment;
72
+ }).filter((segment)=>null !== segment);
73
+ return segments.join('/') || '/';
74
+ };
75
+ const normalizeSearch = (search, searchFromTo)=>{
76
+ if (search && 'object' == typeof search) {
77
+ const searchObject = {};
78
+ const params = new URLSearchParams();
79
+ for (const [key, value] of Object.entries(search)){
80
+ if (null == value) continue;
81
+ if (Array.isArray(value)) {
82
+ const values = value.filter((item)=>null != item).map(String);
83
+ if (0 === values.length) continue;
84
+ searchObject[key] = values;
85
+ for (const item of values)params.append(key, item);
86
+ continue;
87
+ }
88
+ const stringValue = String(value);
89
+ searchObject[key] = stringValue;
90
+ params.append(key, stringValue);
91
+ }
92
+ const serialized = params.toString();
93
+ return {
94
+ searchString: serialized ? `?${serialized}` : '',
95
+ searchObject: Object.keys(searchObject).length > 0 ? searchObject : void 0
96
+ };
97
+ }
98
+ const raw = 'string' == typeof search ? search : searchFromTo;
99
+ if (!raw) return {
100
+ searchString: '',
101
+ searchObject: void 0
102
+ };
103
+ const searchString = raw.startsWith('?') ? raw : `?${raw}`;
104
+ const searchObject = {};
105
+ new URLSearchParams(searchString).forEach((value, key)=>{
106
+ const existing = searchObject[key];
107
+ if (void 0 === existing) searchObject[key] = value;
108
+ else if (Array.isArray(existing)) existing.push(value);
109
+ else searchObject[key] = [
110
+ existing,
111
+ value
112
+ ];
113
+ });
114
+ return {
115
+ searchString,
116
+ searchObject
117
+ };
118
+ };
119
+ const splitActiveProps = (active, activeProps)=>{
120
+ if (!active || !activeProps) return {};
121
+ return activeProps;
122
+ };
123
+ const mergeClassNames = (...values)=>{
124
+ const classNames = values.filter((value)=>'string' == typeof value && value.length > 0);
125
+ return classNames.length > 0 ? classNames.join(' ') : void 0;
126
+ };
127
+ __webpack_require__.d(__webpack_exports__, {}, {
128
+ interpolateRouteParams: interpolateRouteParams,
129
+ mergeClassNames: mergeClassNames,
130
+ normalizeSearch: normalizeSearch,
131
+ splitActiveProps: splitActiveProps,
132
+ warnOnce: warnOnce
133
+ });
134
+ exports.interpolateRouteParams = __webpack_exports__.interpolateRouteParams;
135
+ exports.mergeClassNames = __webpack_exports__.mergeClassNames;
136
+ exports.normalizeSearch = __webpack_exports__.normalizeSearch;
137
+ exports.splitActiveProps = __webpack_exports__.splitActiveProps;
138
+ exports.warnOnce = __webpack_exports__.warnOnce;
139
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
140
+ "interpolateRouteParams",
141
+ "mergeClassNames",
142
+ "normalizeSearch",
143
+ "splitActiveProps",
144
+ "warnOnce"
145
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
146
+ Object.defineProperty(exports, '__esModule', {
147
+ value: true
148
+ });
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, getters, values)=>{
5
+ var define = (defs, kind)=>{
6
+ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
7
+ enumerable: true,
8
+ [kind]: defs[key]
9
+ });
10
+ };
11
+ define(getters, "get");
12
+ define(values, "value");
13
+ };
14
+ })();
15
+ (()=>{
16
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
17
+ })();
18
+ (()=>{
19
+ __webpack_require__.r = (exports1)=>{
20
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
21
+ value: 'Module'
22
+ });
23
+ Object.defineProperty(exports1, '__esModule', {
24
+ value: true
25
+ });
26
+ };
27
+ })();
28
+ var __webpack_exports__ = {};
29
+ __webpack_require__.r(__webpack_exports__);
30
+ __webpack_require__.d(__webpack_exports__, {
31
+ setupI18nBeforeRender: ()=>setupI18nBeforeRender
32
+ });
33
+ const runtime_namespaceObject = require("@modern-js/runtime");
34
+ const merge_namespaceObject = require("@modern-js/runtime-utils/merge");
35
+ const index_js_namespaceObject = require("./i18n/index.js");
36
+ const backend_index_js_namespaceObject = require("./i18n/backend/index.js");
37
+ const detection_index_js_namespaceObject = require("./i18n/detection/index.js");
38
+ const middleware_js_namespaceObject = require("./i18n/detection/middleware.js");
39
+ const external_utils_js_namespaceObject = require("./utils.js");
40
+ let i18nLifecycleHelpersPromise;
41
+ function loadI18nLifecycleHelpers() {
42
+ i18nLifecycleHelpersPromise ??= Promise.all([
43
+ import("./i18n/backend/middleware.js"),
44
+ import("./i18n/utils.js")
45
+ ]).then(([backendMiddleware, utils])=>({
46
+ useI18nextBackend: backendMiddleware.useI18nextBackend,
47
+ changeI18nLanguage: utils.changeI18nLanguage,
48
+ ensureLanguageMatch: utils.ensureLanguageMatch,
49
+ initializeI18nInstance: utils.initializeI18nInstance,
50
+ setupClonedInstance: utils.setupClonedInstance
51
+ }));
52
+ return i18nLifecycleHelpersPromise;
53
+ }
54
+ async function setupI18nBeforeRender(context, options) {
55
+ const { api, userI18nInstance, initOptions, backend, backendEnabled, i18nextDetector, detection, localePathRedirect, languages, fallbackLanguage, resolveReactI18nextIntegration, setI18nextProvider } = options;
56
+ const { useI18nextBackend, changeI18nLanguage, ensureLanguageMatch, initializeI18nInstance, setupClonedInstance } = await loadI18nLifecycleHelpers();
57
+ let i18nInstance = await (0, index_js_namespaceObject.getI18nInstance)(userI18nInstance);
58
+ const { i18n: otherConfig } = api.getRuntimeConfig();
59
+ const { initOptions: otherInitOptions } = otherConfig || {};
60
+ const userInitOptions = (0, merge_namespaceObject.merge)(otherInitOptions || {}, initOptions || {});
61
+ const reactI18nextIntegration = await resolveReactI18nextIntegration();
62
+ setI18nextProvider(reactI18nextIntegration?.I18nextProvider ?? null);
63
+ if (reactI18nextIntegration?.initReactI18next) i18nInstance.use(reactI18nextIntegration.initReactI18next);
64
+ const pathname = (0, external_utils_js_namespaceObject.getPathname)(context);
65
+ if (i18nextDetector) (0, middleware_js_namespaceObject.useI18nextLanguageDetector)(i18nInstance);
66
+ const mergedDetection = (0, detection_index_js_namespaceObject.mergeDetectionOptions)(i18nextDetector, detection, localePathRedirect, userInitOptions);
67
+ const mergedBackend = (0, backend_index_js_namespaceObject.mergeBackendOptions)(backend, userInitOptions);
68
+ const hasSdkConfig = 'function' == typeof userInitOptions?.backend?.sdk || mergedBackend?.sdk && 'function' == typeof mergedBackend.sdk;
69
+ if (mergedBackend && (backendEnabled || hasSdkConfig)) useI18nextBackend(i18nInstance, mergedBackend);
70
+ const { finalLanguage } = await (0, detection_index_js_namespaceObject.detectLanguageWithPriority)(i18nInstance, {
71
+ languages,
72
+ fallbackLanguage,
73
+ localePathRedirect,
74
+ i18nextDetector,
75
+ detection,
76
+ userInitOptions,
77
+ mergedBackend,
78
+ pathname,
79
+ ssrContext: context.ssrContext
80
+ });
81
+ await initializeI18nInstance(i18nInstance, finalLanguage, fallbackLanguage, languages, mergedDetection, mergedBackend, userInitOptions);
82
+ if (!(0, runtime_namespaceObject.isBrowser)() && i18nInstance.cloneInstance) {
83
+ i18nInstance = i18nInstance.cloneInstance();
84
+ await setupClonedInstance(i18nInstance, finalLanguage, fallbackLanguage, languages, backendEnabled, backend, i18nextDetector, detection, localePathRedirect, userInitOptions);
85
+ }
86
+ if (localePathRedirect) await ensureLanguageMatch(i18nInstance, finalLanguage);
87
+ if (!(0, runtime_namespaceObject.isBrowser)()) (0, detection_index_js_namespaceObject.exportServerLngToWindow)(context, finalLanguage);
88
+ context.i18nInstance = i18nInstance;
89
+ context.changeLanguage = async (newLang)=>{
90
+ await changeI18nLanguage(i18nInstance, newLang, {
91
+ detectionOptions: mergedDetection
92
+ });
93
+ };
94
+ return i18nInstance;
95
+ }
96
+ exports.setupI18nBeforeRender = __webpack_exports__.setupI18nBeforeRender;
97
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
98
+ "setupI18nBeforeRender"
99
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
100
+ Object.defineProperty(exports, '__esModule', {
101
+ value: true
102
+ });
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, getters, values)=>{
5
+ var define = (defs, kind)=>{
6
+ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
7
+ enumerable: true,
8
+ [kind]: defs[key]
9
+ });
10
+ };
11
+ define(getters, "get");
12
+ define(values, "value");
13
+ };
14
+ })();
15
+ (()=>{
16
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
17
+ })();
18
+ (()=>{
19
+ __webpack_require__.r = (exports1)=>{
20
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
21
+ value: 'Module'
22
+ });
23
+ Object.defineProperty(exports1, '__esModule', {
24
+ value: true
25
+ });
26
+ };
27
+ })();
28
+ var __webpack_exports__ = {};
29
+ __webpack_require__.r(__webpack_exports__);
30
+ __webpack_require__.d(__webpack_exports__, {
31
+ createI18nRootWrapper: ()=>createI18nRootWrapper
32
+ });
33
+ const jsx_runtime_namespaceObject = require("react/jsx-runtime");
34
+ const runtime_namespaceObject = require("@modern-js/runtime");
35
+ const head_namespaceObject = require("@modern-js/runtime/head");
36
+ const external_react_namespaceObject = require("react");
37
+ const external_context_js_namespaceObject = require("./context.js");
38
+ const external_hooks_js_namespaceObject = require("./hooks.js");
39
+ const instance_js_namespaceObject = require("./i18n/instance.js");
40
+ const createI18nRootWrapper = (options)=>(App)=>(props)=>{
41
+ const { entryName, htmlLangAttr, localePathRedirect, languages, fallbackLanguage, ignoreRedirectRoutes, localisedUrls, getLatestI18nInstance, getI18nextProvider } = options;
42
+ const runtimeContext = (0, external_react_namespaceObject.useContext)(runtime_namespaceObject.RuntimeContext);
43
+ const i18nInstance = runtimeContext.i18nInstance || getLatestI18nInstance();
44
+ const initialLang = (0, external_react_namespaceObject.useMemo)(()=>i18nInstance?.language || fallbackLanguage, [
45
+ i18nInstance?.language,
46
+ fallbackLanguage
47
+ ]);
48
+ const [lang, setLang] = (0, external_react_namespaceObject.useState)(initialLang);
49
+ const [forceUpdate, setForceUpdate] = (0, external_react_namespaceObject.useState)(0);
50
+ const prevLangRef = (0, external_react_namespaceObject.useRef)(lang);
51
+ const runtimeContextRef = (0, external_react_namespaceObject.useRef)(runtimeContext);
52
+ runtimeContextRef.current = runtimeContext;
53
+ (0, external_react_namespaceObject.useEffect)(()=>{
54
+ if (i18nInstance?.language) {
55
+ const translator = i18nInstance.translator;
56
+ if (translator) translator.language = i18nInstance.language;
57
+ }
58
+ }, [
59
+ i18nInstance?.language
60
+ ]);
61
+ (0, external_react_namespaceObject.useEffect)(()=>{
62
+ prevLangRef.current = lang;
63
+ }, [
64
+ lang
65
+ ]);
66
+ (0, external_hooks_js_namespaceObject.useSdkResourcesLoader)(i18nInstance, setForceUpdate);
67
+ (0, external_hooks_js_namespaceObject.useLanguageSync)(i18nInstance, localePathRedirect, languages, runtimeContextRef, prevLangRef, setLang);
68
+ (0, external_hooks_js_namespaceObject.useClientSideRedirect)(i18nInstance, localePathRedirect, languages, fallbackLanguage, ignoreRedirectRoutes, localisedUrls);
69
+ const contextValue = (0, external_react_namespaceObject.useMemo)(()=>(0, external_hooks_js_namespaceObject.createContextValue)(lang, i18nInstance, entryName, languages, localePathRedirect, ignoreRedirectRoutes, localisedUrls, setLang), [
70
+ lang,
71
+ i18nInstance,
72
+ entryName,
73
+ languages,
74
+ localePathRedirect,
75
+ ignoreRedirectRoutes,
76
+ localisedUrls,
77
+ forceUpdate
78
+ ]);
79
+ const children = props.children;
80
+ const appContent = /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(jsx_runtime_namespaceObject.Fragment, {
81
+ children: [
82
+ Boolean(htmlLangAttr) && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(head_namespaceObject.Helmet, {
83
+ htmlAttributes: {
84
+ lang
85
+ }
86
+ }),
87
+ /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_context_js_namespaceObject.ModernI18nProvider, {
88
+ value: contextValue,
89
+ children: App ? /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(App, {
90
+ ...props,
91
+ children: children
92
+ }) : children
93
+ })
94
+ ]
95
+ });
96
+ if (!i18nInstance) return appContent;
97
+ const I18nextProvider = getI18nextProvider();
98
+ if (I18nextProvider) {
99
+ const i18nextInstanceForProvider = (0, instance_js_namespaceObject.getI18nextInstanceForProvider)(i18nInstance);
100
+ return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(I18nextProvider, {
101
+ i18n: i18nextInstanceForProvider,
102
+ children: appContent
103
+ });
104
+ }
105
+ return appContent;
106
+ };
107
+ exports.createI18nRootWrapper = __webpack_exports__.createI18nRootWrapper;
108
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
109
+ "createI18nRootWrapper"
110
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
111
+ Object.defineProperty(exports, '__esModule', {
112
+ value: true
113
+ });
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, getters, values)=>{
5
+ var define = (defs, kind)=>{
6
+ for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
7
+ enumerable: true,
8
+ [kind]: defs[key]
9
+ });
10
+ };
11
+ define(getters, "get");
12
+ define(values, "value");
13
+ };
14
+ })();
15
+ (()=>{
16
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
17
+ })();
18
+ (()=>{
19
+ __webpack_require__.r = (exports1)=>{
20
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
21
+ value: 'Module'
22
+ });
23
+ Object.defineProperty(exports1, '__esModule', {
24
+ value: true
25
+ });
26
+ };
27
+ })();
28
+ var __webpack_exports__ = {};
29
+ __webpack_require__.r(__webpack_exports__);
30
+ const resolveReactI18nextIntegration = async (reactI18next, loadReactI18nextIntegration)=>{
31
+ if (!reactI18next) return null;
32
+ return loadReactI18nextIntegration?.() ?? null;
33
+ };
34
+ __webpack_require__.d(__webpack_exports__, {}, {
35
+ resolveReactI18nextIntegration: resolveReactI18nextIntegration
36
+ });
37
+ exports.resolveReactI18nextIntegration = __webpack_exports__.resolveReactI18nextIntegration;
38
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
39
+ "resolveReactI18nextIntegration"
40
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
41
+ Object.defineProperty(exports, '__esModule', {
42
+ value: true
43
+ });