@bleedingdev/modern-js-plugin-i18n 3.5.0-ultramodern.4 → 3.5.0-ultramodern.40

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 (214) hide show
  1. package/dist/cjs/cli/index.js +2 -1
  2. package/dist/cjs/cli/locales.js +15 -15
  3. package/dist/cjs/runtime/Link.js +8 -89
  4. package/dist/cjs/runtime/context.js +18 -82
  5. package/dist/cjs/runtime/contextHelpers.js +137 -0
  6. package/dist/cjs/runtime/core.js +29 -132
  7. package/dist/cjs/runtime/i18n/backend/defaults.node.js +7 -7
  8. package/dist/cjs/runtime/i18n/detection/cache.js +150 -0
  9. package/dist/cjs/runtime/i18n/detection/detector.js +100 -0
  10. package/dist/cjs/runtime/i18n/detection/index.js +8 -263
  11. package/dist/cjs/runtime/i18n/detection/initOptions.js +69 -0
  12. package/dist/cjs/runtime/i18n/detection/language.js +62 -0
  13. package/dist/cjs/runtime/i18n/detection/path.js +49 -0
  14. package/dist/cjs/runtime/i18n/detection/priority.js +66 -0
  15. package/dist/cjs/runtime/i18n/detection/ssr.js +70 -0
  16. package/dist/cjs/runtime/i18n/detection/types.js +18 -0
  17. package/dist/cjs/runtime/i18n/instance.js +7 -7
  18. package/dist/cjs/runtime/linkHelpers.js +148 -0
  19. package/dist/cjs/runtime/pluginSetup.js +102 -0
  20. package/dist/cjs/runtime/providerComposition.js +114 -0
  21. package/dist/cjs/runtime/reactI18next.js +43 -0
  22. package/dist/cjs/runtime/utils.js +1 -9
  23. package/dist/cjs/server/apiPrefix.js +72 -0
  24. package/dist/cjs/server/detectorOptions.js +97 -0
  25. package/dist/cjs/server/index.js +17 -144
  26. package/dist/cjs/server/redirectPolicy.js +96 -0
  27. package/dist/cjs/shared/detection.js +2 -104
  28. package/dist/cjs/shared/localisedUrls/config.js +49 -0
  29. package/dist/cjs/shared/localisedUrls/index.js +91 -0
  30. package/dist/cjs/shared/localisedUrls/normalise.js +87 -0
  31. package/dist/cjs/shared/localisedUrls/pathname.js +68 -0
  32. package/dist/cjs/shared/localisedUrls/patterns.js +130 -0
  33. package/dist/cjs/shared/localisedUrls/redirect.js +95 -0
  34. package/dist/cjs/shared/localisedUrls/resolve.js +88 -0
  35. package/dist/cjs/shared/localisedUrls/routes.js +129 -0
  36. package/dist/cjs/shared/localisedUrls/types.js +18 -0
  37. package/dist/cjs/shared/localisedUrls.js +28 -294
  38. package/dist/cjs/shared/utils.js +2 -8
  39. package/dist/esm/cli/index.mjs +2 -1
  40. package/dist/esm/cli/locales.mjs +13 -13
  41. package/dist/esm/runtime/Link.mjs +1 -82
  42. package/dist/esm/runtime/context.mjs +18 -82
  43. package/dist/esm/runtime/contextHelpers.mjs +84 -0
  44. package/dist/esm/runtime/core.mjs +30 -133
  45. package/dist/esm/runtime/i18n/backend/defaults.node.mjs +5 -5
  46. package/dist/esm/runtime/i18n/detection/cache.mjs +103 -0
  47. package/dist/esm/runtime/i18n/detection/detector.mjs +62 -0
  48. package/dist/esm/runtime/i18n/detection/index.mjs +4 -260
  49. package/dist/esm/runtime/i18n/detection/initOptions.mjs +28 -0
  50. package/dist/esm/runtime/i18n/detection/language.mjs +21 -0
  51. package/dist/esm/runtime/i18n/detection/path.mjs +11 -0
  52. package/dist/esm/runtime/i18n/detection/priority.mjs +28 -0
  53. package/dist/esm/runtime/i18n/detection/ssr.mjs +26 -0
  54. package/dist/esm/runtime/i18n/detection/types.mjs +0 -0
  55. package/dist/esm/runtime/i18n/instance.mjs +8 -5
  56. package/dist/esm/runtime/linkHelpers.mjs +98 -0
  57. package/dist/esm/runtime/pluginSetup.mjs +64 -0
  58. package/dist/esm/runtime/providerComposition.mjs +76 -0
  59. package/dist/esm/runtime/reactI18next.mjs +5 -0
  60. package/dist/esm/runtime/utils.mjs +2 -10
  61. package/dist/esm/server/apiPrefix.mjs +31 -0
  62. package/dist/esm/server/detectorOptions.mjs +59 -0
  63. package/dist/esm/server/index.mjs +8 -135
  64. package/dist/esm/server/redirectPolicy.mjs +46 -0
  65. package/dist/esm/shared/detection.mjs +1 -71
  66. package/dist/esm/shared/localisedUrls/config.mjs +11 -0
  67. package/dist/esm/shared/localisedUrls/index.mjs +7 -0
  68. package/dist/esm/shared/localisedUrls/normalise.mjs +37 -0
  69. package/dist/esm/shared/localisedUrls/pathname.mjs +24 -0
  70. package/dist/esm/shared/localisedUrls/patterns.mjs +86 -0
  71. package/dist/esm/shared/localisedUrls/redirect.mjs +48 -0
  72. package/dist/esm/shared/localisedUrls/resolve.mjs +47 -0
  73. package/dist/esm/shared/localisedUrls/routes.mjs +88 -0
  74. package/dist/esm/shared/localisedUrls/types.mjs +0 -0
  75. package/dist/esm/shared/localisedUrls.mjs +1 -283
  76. package/dist/esm/shared/utils.mjs +1 -1
  77. package/dist/esm-node/cli/index.mjs +2 -1
  78. package/dist/esm-node/cli/locales.mjs +13 -13
  79. package/dist/esm-node/runtime/Link.mjs +1 -82
  80. package/dist/esm-node/runtime/context.mjs +18 -82
  81. package/dist/esm-node/runtime/contextHelpers.mjs +85 -0
  82. package/dist/esm-node/runtime/core.mjs +30 -133
  83. package/dist/esm-node/runtime/i18n/backend/defaults.node.mjs +5 -5
  84. package/dist/esm-node/runtime/i18n/detection/cache.mjs +104 -0
  85. package/dist/esm-node/runtime/i18n/detection/detector.mjs +63 -0
  86. package/dist/esm-node/runtime/i18n/detection/index.mjs +4 -260
  87. package/dist/esm-node/runtime/i18n/detection/initOptions.mjs +29 -0
  88. package/dist/esm-node/runtime/i18n/detection/language.mjs +22 -0
  89. package/dist/esm-node/runtime/i18n/detection/path.mjs +12 -0
  90. package/dist/esm-node/runtime/i18n/detection/priority.mjs +29 -0
  91. package/dist/esm-node/runtime/i18n/detection/ssr.mjs +27 -0
  92. package/dist/esm-node/runtime/i18n/detection/types.mjs +1 -0
  93. package/dist/esm-node/runtime/i18n/instance.mjs +8 -5
  94. package/dist/esm-node/runtime/linkHelpers.mjs +99 -0
  95. package/dist/esm-node/runtime/pluginSetup.mjs +65 -0
  96. package/dist/esm-node/runtime/providerComposition.mjs +77 -0
  97. package/dist/esm-node/runtime/reactI18next.mjs +6 -0
  98. package/dist/esm-node/runtime/utils.mjs +2 -10
  99. package/dist/esm-node/server/apiPrefix.mjs +32 -0
  100. package/dist/esm-node/server/detectorOptions.mjs +60 -0
  101. package/dist/esm-node/server/index.mjs +8 -135
  102. package/dist/esm-node/server/redirectPolicy.mjs +47 -0
  103. package/dist/esm-node/shared/detection.mjs +1 -71
  104. package/dist/esm-node/shared/localisedUrls/config.mjs +12 -0
  105. package/dist/esm-node/shared/localisedUrls/index.mjs +8 -0
  106. package/dist/esm-node/shared/localisedUrls/normalise.mjs +38 -0
  107. package/dist/esm-node/shared/localisedUrls/pathname.mjs +25 -0
  108. package/dist/esm-node/shared/localisedUrls/patterns.mjs +87 -0
  109. package/dist/esm-node/shared/localisedUrls/redirect.mjs +49 -0
  110. package/dist/esm-node/shared/localisedUrls/resolve.mjs +48 -0
  111. package/dist/esm-node/shared/localisedUrls/routes.mjs +89 -0
  112. package/dist/esm-node/shared/localisedUrls/types.mjs +1 -0
  113. package/dist/esm-node/shared/localisedUrls.mjs +1 -283
  114. package/dist/esm-node/shared/utils.mjs +1 -1
  115. package/dist/types/cli/locales.d.ts +1 -1
  116. package/dist/types/runtime/Link.d.ts +3 -7
  117. package/dist/types/runtime/context.d.ts +6 -5
  118. package/dist/types/runtime/contextHelpers.d.ts +28 -0
  119. package/dist/types/runtime/core.d.ts +3 -7
  120. package/dist/types/runtime/hooks.d.ts +5 -0
  121. package/dist/types/runtime/i18n/backend/middleware.common.d.ts +2 -1
  122. package/dist/types/runtime/i18n/detection/cache.d.ts +14 -0
  123. package/dist/types/runtime/i18n/detection/detector.d.ts +8 -0
  124. package/dist/types/runtime/i18n/detection/index.d.ts +5 -50
  125. package/dist/types/runtime/i18n/detection/initOptions.d.ts +10 -0
  126. package/dist/types/runtime/i18n/detection/language.d.ts +11 -0
  127. package/dist/types/runtime/i18n/detection/middleware.d.ts +4 -4
  128. package/dist/types/runtime/i18n/detection/middleware.node.d.ts +4 -4
  129. package/dist/types/runtime/i18n/detection/path.d.ts +5 -0
  130. package/dist/types/runtime/i18n/detection/priority.d.ts +10 -0
  131. package/dist/types/runtime/i18n/detection/ssr.d.ts +9 -0
  132. package/dist/types/runtime/i18n/detection/types.d.ts +32 -0
  133. package/dist/types/runtime/i18n/instance.d.ts +28 -26
  134. package/dist/types/runtime/i18n/react-i18next.d.ts +1 -6
  135. package/dist/types/runtime/i18n/utils.d.ts +14 -5
  136. package/dist/types/runtime/linkHelpers.d.ts +17 -0
  137. package/dist/types/runtime/pluginSetup.d.ts +32 -0
  138. package/dist/types/runtime/providerComposition.d.ts +16 -0
  139. package/dist/types/runtime/reactI18next.d.ts +7 -0
  140. package/dist/types/runtime/routerAdapter.d.ts +7 -6
  141. package/dist/types/runtime/utils.d.ts +7 -2
  142. package/dist/types/server/apiPrefix.d.ts +7 -0
  143. package/dist/types/server/detectorOptions.d.ts +21 -0
  144. package/dist/types/server/index.d.ts +1 -6
  145. package/dist/types/server/redirectPolicy.d.ts +22 -0
  146. package/dist/types/shared/detection.d.ts +1 -11
  147. package/dist/types/shared/localisedUrls/config.d.ts +9 -0
  148. package/dist/types/shared/localisedUrls/index.d.ts +9 -0
  149. package/dist/types/shared/localisedUrls/normalise.d.ts +10 -0
  150. package/dist/types/shared/localisedUrls/pathname.d.ts +4 -0
  151. package/dist/types/shared/localisedUrls/patterns.d.ts +5 -0
  152. package/dist/types/shared/localisedUrls/redirect.d.ts +11 -0
  153. package/dist/types/shared/localisedUrls/resolve.d.ts +7 -0
  154. package/dist/types/shared/localisedUrls/routes.d.ts +3 -0
  155. package/dist/types/shared/localisedUrls/types.d.ts +14 -0
  156. package/dist/types/shared/localisedUrls.d.ts +2 -36
  157. package/dist/types/shared/utils.d.ts +0 -2
  158. package/package.json +16 -18
  159. package/rstest.config.mts +1 -0
  160. package/src/cli/index.ts +5 -4
  161. package/src/cli/locales.ts +3 -3
  162. package/src/runtime/Link.tsx +11 -138
  163. package/src/runtime/context.tsx +45 -199
  164. package/src/runtime/contextHelpers.ts +232 -0
  165. package/src/runtime/core.tsx +43 -274
  166. package/src/runtime/hooks.ts +13 -2
  167. package/src/runtime/i18n/backend/defaults.node.ts +2 -2
  168. package/src/runtime/i18n/backend/middleware.common.ts +5 -4
  169. package/src/runtime/i18n/detection/cache.ts +189 -0
  170. package/src/runtime/i18n/detection/detector.ts +166 -0
  171. package/src/runtime/i18n/detection/index.ts +10 -641
  172. package/src/runtime/i18n/detection/initOptions.ts +74 -0
  173. package/src/runtime/i18n/detection/language.ts +64 -0
  174. package/src/runtime/i18n/detection/middleware.node.ts +26 -7
  175. package/src/runtime/i18n/detection/middleware.ts +15 -7
  176. package/src/runtime/i18n/detection/path.ts +41 -0
  177. package/src/runtime/i18n/detection/priority.ts +82 -0
  178. package/src/runtime/i18n/detection/ssr.ts +47 -0
  179. package/src/runtime/i18n/detection/types.ts +41 -0
  180. package/src/runtime/i18n/instance.ts +56 -31
  181. package/src/runtime/i18n/react-i18next.ts +1 -6
  182. package/src/runtime/i18n/utils.ts +18 -9
  183. package/src/runtime/linkHelpers.ts +174 -0
  184. package/src/runtime/pluginSetup.ts +189 -0
  185. package/src/runtime/providerComposition.tsx +144 -0
  186. package/src/runtime/reactI18next.ts +20 -0
  187. package/src/runtime/routerAdapter.tsx +6 -6
  188. package/src/runtime/utils.ts +13 -35
  189. package/src/server/apiPrefix.ts +67 -0
  190. package/src/server/detectorOptions.ts +105 -0
  191. package/src/server/index.ts +14 -319
  192. package/src/server/redirectPolicy.ts +127 -0
  193. package/src/shared/detection.ts +1 -1
  194. package/src/shared/localisedUrls/config.ts +18 -0
  195. package/src/shared/localisedUrls/index.ts +24 -0
  196. package/src/shared/localisedUrls/normalise.ts +67 -0
  197. package/src/shared/localisedUrls/pathname.ts +60 -0
  198. package/src/shared/localisedUrls/patterns.ts +160 -0
  199. package/src/shared/localisedUrls/redirect.ts +91 -0
  200. package/src/shared/localisedUrls/resolve.ts +135 -0
  201. package/src/shared/localisedUrls/routes.ts +226 -0
  202. package/src/shared/localisedUrls/types.ts +18 -0
  203. package/src/shared/localisedUrls.ts +26 -623
  204. package/src/shared/utils.ts +2 -2
  205. package/tests/fixtures/localised-routes.golden.json +156 -0
  206. package/tests/link.test.tsx +111 -0
  207. package/tests/linkTypes.test.ts +15 -4
  208. package/tests/localisedUrlRewriteMatrix.fork.test.ts +147 -0
  209. package/tests/localisedUrls.test.ts +129 -2
  210. package/tests/reactI18nextRuntimeBoundary.test.ts +6 -3
  211. package/tests/redirectPolicy.test.ts +43 -0
  212. package/tests/routerAdapter.test.tsx +85 -0
  213. package/tests/type-fixture/fixture-globals.d.ts +11 -0
  214. package/tests/type-fixture/tsconfig.json +1 -0
@@ -28,272 +28,17 @@ var __webpack_require__ = {};
28
28
  var __webpack_exports__ = {};
29
29
  __webpack_require__.r(__webpack_exports__);
30
30
  __webpack_require__.d(__webpack_exports__, {
31
- buildInitOptions: ()=>buildInitOptions,
31
+ buildInitOptions: ()=>external_initOptions_js_namespaceObject.buildInitOptions,
32
32
  cacheUserLanguage: ()=>external_middleware_js_namespaceObject.cacheUserLanguage,
33
- detectLanguageWithPriority: ()=>detectLanguageWithPriority,
34
- exportServerLngToWindow: ()=>exportServerLngToWindow,
35
- getLanguageFromSSRData: ()=>getLanguageFromSSRData,
36
- mergeDetectionOptions: ()=>mergeDetectionOptions
33
+ detectLanguageWithPriority: ()=>external_priority_js_namespaceObject.detectLanguageWithPriority,
34
+ exportServerLngToWindow: ()=>external_ssr_js_namespaceObject.exportServerLngToWindow,
35
+ getLanguageFromSSRData: ()=>external_ssr_js_namespaceObject.getLanguageFromSSRData,
36
+ mergeDetectionOptions: ()=>external_initOptions_js_namespaceObject.mergeDetectionOptions
37
37
  });
38
- const runtime_namespaceObject = require("@modern-js/runtime");
39
- const external_utils_js_namespaceObject = require("../../utils.js");
40
- const external_instance_js_namespaceObject = require("../instance.js");
41
- const external_config_js_namespaceObject = require("./config.js");
38
+ const external_initOptions_js_namespaceObject = require("./initOptions.js");
42
39
  const external_middleware_js_namespaceObject = require("./middleware.js");
43
- const detectorInstanceCache = new WeakMap();
44
- const DETECTOR_SAFE_OPTION_KEYS = [
45
- 'lowerCaseLng',
46
- 'nonExplicitSupportedLngs',
47
- 'load',
48
- 'partialBundledLanguages',
49
- 'returnNull',
50
- 'returnEmptyString',
51
- 'returnObjects',
52
- 'joinArrays',
53
- 'keySeparator',
54
- 'nsSeparator',
55
- 'pluralSeparator',
56
- 'contextSeparator',
57
- 'fallbackNS',
58
- 'ns',
59
- 'defaultNS',
60
- 'debug'
61
- ];
62
- const stableStringify = (value)=>{
63
- if (null == value) return JSON.stringify(value);
64
- if ('object' != typeof value) return JSON.stringify(value);
65
- if (Array.isArray(value)) return `[${value.map((item)=>stableStringify(item)).join(',')}]`;
66
- const sortedKeys = Object.keys(value).sort();
67
- const sortedEntries = sortedKeys.map((key)=>{
68
- const stringifiedValue = stableStringify(value[key]);
69
- return `${JSON.stringify(key)}:${stringifiedValue}`;
70
- });
71
- return `{${sortedEntries.join(',')}}`;
72
- };
73
- const buildDetectorConfigKey = (languages, fallbackLanguage, mergedDetection)=>stableStringify({
74
- languages,
75
- fallbackLanguage,
76
- detection: mergedDetection
77
- });
78
- const pickSafeDetectionOptions = (userInitOptions)=>{
79
- if (!userInitOptions) return {};
80
- const safeOptions = {};
81
- for (const key of DETECTOR_SAFE_OPTION_KEYS){
82
- const value = userInitOptions[key];
83
- if (void 0 !== value) safeOptions[key] = value;
84
- }
85
- if (userInitOptions.interpolation) safeOptions.interpolation = {
86
- ...userInitOptions.interpolation
87
- };
88
- return safeOptions;
89
- };
90
- const cleanupDetectorCacheEntry = (entry)=>{
91
- if (!entry || !entry.isTemporary) return;
92
- const instance = entry.instance;
93
- try {
94
- instance?.removeAllListeners?.();
95
- } catch (error) {}
96
- try {
97
- instance?.off?.('*');
98
- } catch (error) {}
99
- try {
100
- instance?.services?.backendConnector?.backend?.stop?.();
101
- } catch (error) {}
102
- try {
103
- instance?.services?.backendConnector?.backend?.close?.();
104
- } catch (error) {}
105
- };
106
- function exportServerLngToWindow(context, lng) {
107
- context.__i18nData__ = {
108
- lng
109
- };
110
- }
111
- const getLanguageFromSSRData = (window1)=>{
112
- try {
113
- const ssrData = window1._SSR_DATA;
114
- if (!ssrData || !ssrData.data || !ssrData.data.i18nData) return;
115
- const lng = ssrData.data.i18nData.lng;
116
- return 'string' == typeof lng && '' !== lng.trim() ? lng : void 0;
117
- } catch (error) {
118
- return;
119
- }
120
- };
121
- const normalizeLanguageCode = (language)=>{
122
- if (!language) return language;
123
- const baseLang = language.split('-')[0];
124
- return baseLang;
125
- };
126
- const isLanguageSupported = (language, supportedLanguages)=>{
127
- if (!language) return false;
128
- if (0 === supportedLanguages.length) return true;
129
- if (supportedLanguages.includes(language)) return true;
130
- const baseLang = normalizeLanguageCode(language);
131
- if (baseLang !== language && supportedLanguages.includes(baseLang)) return true;
132
- return false;
133
- };
134
- const getSupportedLanguage = (language, supportedLanguages)=>{
135
- if (!language) return;
136
- if (0 === supportedLanguages.length) return language;
137
- if (supportedLanguages.includes(language)) return language;
138
- const baseLang = normalizeLanguageCode(language);
139
- if (baseLang !== language && supportedLanguages.includes(baseLang)) return baseLang;
140
- };
141
- const detectLanguageFromSSR = (languages)=>{
142
- if (!(0, runtime_namespaceObject.isBrowser)()) return;
143
- try {
144
- const ssrLanguage = getLanguageFromSSRData(window);
145
- if (ssrLanguage && isLanguageSupported(ssrLanguage, languages)) return ssrLanguage;
146
- } catch (error) {}
147
- };
148
- const detectLanguageFromPathPriority = (pathname, languages, localePathRedirect)=>{
149
- if (!localePathRedirect) return;
150
- if (!languages || 0 === languages.length) return;
151
- if (!pathname || '' === pathname.trim()) return;
152
- try {
153
- const pathDetection = (0, external_utils_js_namespaceObject.detectLanguageFromPath)(pathname, languages, localePathRedirect);
154
- if (true === pathDetection.detected && pathDetection.language) return pathDetection.language;
155
- } catch (error) {}
156
- };
157
- const createDetectorInstance = (baseInstance, configKey)=>{
158
- const cached = detectorInstanceCache.get(baseInstance);
159
- if (cached && cached.configKey === configKey) return {
160
- instance: cached.instance,
161
- isTemporary: cached.isTemporary
162
- };
163
- if (cached) {
164
- cleanupDetectorCacheEntry(cached);
165
- detectorInstanceCache.delete(baseInstance);
166
- }
167
- const createNewInstance = ()=>{
168
- if ('function' == typeof baseInstance.createInstance) try {
169
- const created = baseInstance.createInstance();
170
- if (created) return {
171
- instance: created,
172
- isTemporary: true
173
- };
174
- } catch (error) {}
175
- if ('function' == typeof baseInstance.cloneInstance) try {
176
- const cloned = baseInstance.cloneInstance();
177
- if (cloned) return {
178
- instance: cloned,
179
- isTemporary: true
180
- };
181
- } catch (error) {}
182
- return {
183
- instance: baseInstance,
184
- isTemporary: false
185
- };
186
- };
187
- const created = createNewInstance();
188
- if (created.isTemporary) detectorInstanceCache.set(baseInstance, {
189
- instance: created.instance,
190
- isTemporary: true,
191
- configKey
192
- });
193
- return created;
194
- };
195
- const initializeI18nForDetector = async (i18nInstance, options)=>{
196
- const mergedDetection = mergeDetectionOptions(options.i18nextDetector, options.detection, options.localePathRedirect, options.userInitOptions);
197
- const configKey = buildDetectorConfigKey(options.languages, options.fallbackLanguage, mergedDetection);
198
- const { instance, isTemporary } = createDetectorInstance(i18nInstance, configKey);
199
- const safeUserOptions = pickSafeDetectionOptions(options.userInitOptions);
200
- const initOptions = {
201
- ...safeUserOptions,
202
- fallbackLng: options.fallbackLanguage,
203
- supportedLngs: options.languages,
204
- detection: mergedDetection,
205
- initImmediate: true,
206
- interpolation: {
207
- ...safeUserOptions?.interpolation || {},
208
- escapeValue: safeUserOptions?.interpolation?.escapeValue ?? false
209
- },
210
- react: {
211
- useSuspense: false
212
- }
213
- };
214
- (0, external_middleware_js_namespaceObject.useI18nextLanguageDetector)(instance);
215
- if (instance.isInitialized) {
216
- if (isTemporary) await instance.init(initOptions);
217
- } else await instance.init(initOptions);
218
- return {
219
- detectorInstance: instance,
220
- isTemporary
221
- };
222
- };
223
- const detectLanguageFromI18nextDetector = async (i18nInstance, options)=>{
224
- if (!options.i18nextDetector) return;
225
- const mergedDetection = mergeDetectionOptions(options.i18nextDetector, options.detection, options.localePathRedirect, options.userInitOptions);
226
- const { detectorInstance, isTemporary } = await initializeI18nForDetector(i18nInstance, options);
227
- try {
228
- const request = options.ssrContext?.request;
229
- if (!(0, runtime_namespaceObject.isBrowser)() && !request) return;
230
- const detectorLang = (0, external_middleware_js_namespaceObject.detectLanguage)(detectorInstance, request, mergedDetection);
231
- if (detectorLang) {
232
- const supportedLang = getSupportedLanguage(detectorLang, options.languages);
233
- if (supportedLang) return supportedLang;
234
- }
235
- if (detectorInstance.isInitialized && detectorInstance.language) {
236
- const currentLang = detectorInstance.language;
237
- if (isLanguageSupported(currentLang, options.languages)) return currentLang;
238
- }
239
- } catch (error) {} finally{
240
- if (isTemporary && detectorInstance !== i18nInstance) detectorInstanceCache.set(i18nInstance, {
241
- instance: detectorInstance,
242
- isTemporary: true,
243
- configKey: buildDetectorConfigKey(options.languages, options.fallbackLanguage, mergedDetection)
244
- });
245
- else if (detectorInstance === i18nInstance) {
246
- i18nInstance.isInitialized = false;
247
- delete i18nInstance.language;
248
- }
249
- }
250
- };
251
- const detectLanguageWithPriority = async (i18nInstance, options)=>{
252
- const { languages, fallbackLanguage, localePathRedirect, i18nextDetector, detection, userInitOptions, pathname, ssrContext } = options;
253
- let detectedLanguage;
254
- detectedLanguage = detectLanguageFromSSR(languages);
255
- if (!detectedLanguage) detectedLanguage = detectLanguageFromPathPriority(pathname, languages, localePathRedirect);
256
- if (!detectedLanguage && i18nextDetector) detectedLanguage = (0, external_instance_js_namespaceObject.isI18nWrapperInstance)(i18nInstance) ? (0, external_middleware_js_namespaceObject.readLanguageFromStorage)(mergeDetectionOptions(i18nextDetector, detection, localePathRedirect, userInitOptions)) : await detectLanguageFromI18nextDetector(i18nInstance, {
257
- languages,
258
- fallbackLanguage,
259
- localePathRedirect,
260
- i18nextDetector,
261
- detection,
262
- userInitOptions,
263
- mergedBackend: options.mergedBackend,
264
- ssrContext
265
- });
266
- const finalLanguage = detectedLanguage || userInitOptions?.lng || fallbackLanguage;
267
- return {
268
- detectedLanguage,
269
- finalLanguage
270
- };
271
- };
272
- const buildInitOptions = (params)=>{
273
- const { finalLanguage, fallbackLanguage, languages, userInitOptions, mergedDetection, mergeBackend } = params;
274
- return {
275
- ...userInitOptions || {},
276
- lng: finalLanguage,
277
- fallbackLng: fallbackLanguage,
278
- supportedLngs: languages,
279
- detection: mergedDetection,
280
- backend: mergeBackend,
281
- interpolation: {
282
- ...userInitOptions?.interpolation || {},
283
- escapeValue: userInitOptions?.interpolation?.escapeValue ?? false
284
- },
285
- react: {
286
- useSuspense: (0, runtime_namespaceObject.isBrowser)()
287
- }
288
- };
289
- };
290
- const mergeDetectionOptions = (i18nextDetector, detection, localePathRedirect, userInitOptions)=>{
291
- let mergedDetection;
292
- mergedDetection = i18nextDetector ? (0, external_config_js_namespaceObject.mergeDetectionOptions)(detection, userInitOptions?.detection) : userInitOptions?.detection || {};
293
- if (!mergedDetection || 'object' != typeof mergedDetection) mergedDetection = {};
294
- if (localePathRedirect && mergedDetection.order) mergedDetection.order = mergedDetection.order.filter((item)=>'path' !== item);
295
- return mergedDetection;
296
- };
40
+ const external_priority_js_namespaceObject = require("./priority.js");
41
+ const external_ssr_js_namespaceObject = require("./ssr.js");
297
42
  exports.buildInitOptions = __webpack_exports__.buildInitOptions;
298
43
  exports.cacheUserLanguage = __webpack_exports__.cacheUserLanguage;
299
44
  exports.detectLanguageWithPriority = __webpack_exports__.detectLanguageWithPriority;
@@ -0,0 +1,69 @@
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
+ buildInitOptions: ()=>buildInitOptions,
32
+ mergeDetectionOptions: ()=>mergeDetectionOptions
33
+ });
34
+ const runtime_namespaceObject = require("@modern-js/runtime");
35
+ const external_config_js_namespaceObject = require("./config.js");
36
+ const buildInitOptions = (params)=>{
37
+ const { finalLanguage, fallbackLanguage, languages, userInitOptions, mergedDetection, mergeBackend } = params;
38
+ return {
39
+ ...userInitOptions || {},
40
+ lng: finalLanguage,
41
+ fallbackLng: fallbackLanguage,
42
+ supportedLngs: languages,
43
+ detection: mergedDetection,
44
+ backend: mergeBackend,
45
+ interpolation: {
46
+ ...userInitOptions?.interpolation || {},
47
+ escapeValue: userInitOptions?.interpolation?.escapeValue ?? false
48
+ },
49
+ react: {
50
+ useSuspense: (0, runtime_namespaceObject.isBrowser)()
51
+ }
52
+ };
53
+ };
54
+ const mergeDetectionOptions = (i18nextDetector, detection, localePathRedirect, userInitOptions)=>{
55
+ let mergedDetection;
56
+ mergedDetection = i18nextDetector ? (0, external_config_js_namespaceObject.mergeDetectionOptions)(detection, userInitOptions?.detection) : userInitOptions?.detection || {};
57
+ if (!mergedDetection || 'object' != typeof mergedDetection) mergedDetection = {};
58
+ if (localePathRedirect && mergedDetection.order) mergedDetection.order = mergedDetection.order.filter((item)=>'path' !== item);
59
+ return mergedDetection;
60
+ };
61
+ exports.buildInitOptions = __webpack_exports__.buildInitOptions;
62
+ exports.mergeDetectionOptions = __webpack_exports__.mergeDetectionOptions;
63
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
64
+ "buildInitOptions",
65
+ "mergeDetectionOptions"
66
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
67
+ Object.defineProperty(exports, '__esModule', {
68
+ value: true
69
+ });
@@ -0,0 +1,62 @@
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 normalizeLanguageCode = (language)=>{
31
+ if (!language) return language;
32
+ const baseLang = language.split('-')[0];
33
+ return baseLang;
34
+ };
35
+ const isLanguageSupported = (language, supportedLanguages)=>{
36
+ if (!language) return false;
37
+ if (0 === supportedLanguages.length) return true;
38
+ if (supportedLanguages.includes(language)) return true;
39
+ const baseLang = normalizeLanguageCode(language);
40
+ if (baseLang !== language && supportedLanguages.includes(baseLang)) return true;
41
+ return false;
42
+ };
43
+ const getSupportedLanguage = (language, supportedLanguages)=>{
44
+ if (!language) return;
45
+ if (0 === supportedLanguages.length) return language;
46
+ if (supportedLanguages.includes(language)) return language;
47
+ const baseLang = normalizeLanguageCode(language);
48
+ if (baseLang !== language && supportedLanguages.includes(baseLang)) return baseLang;
49
+ };
50
+ __webpack_require__.d(__webpack_exports__, {}, {
51
+ getSupportedLanguage: getSupportedLanguage,
52
+ isLanguageSupported: isLanguageSupported
53
+ });
54
+ exports.getSupportedLanguage = __webpack_exports__.getSupportedLanguage;
55
+ exports.isLanguageSupported = __webpack_exports__.isLanguageSupported;
56
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
57
+ "getSupportedLanguage",
58
+ "isLanguageSupported"
59
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
60
+ Object.defineProperty(exports, '__esModule', {
61
+ value: true
62
+ });
@@ -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
+ });
@@ -29,9 +29,11 @@ var __webpack_exports__ = {};
29
29
  __webpack_require__.r(__webpack_exports__);
30
30
  function isI18nWrapperInstance(obj) {
31
31
  if (!obj || 'object' != typeof obj) return false;
32
- if (!obj.i18nInstance || 'object' != typeof obj.i18nInstance) return false;
33
- if (!obj.i18nInstance.instance) return false;
34
- if ('function' != typeof obj.init || 'function' != typeof obj.use) return false;
32
+ const candidate = obj;
33
+ if (!candidate.i18nInstance || 'object' != typeof candidate.i18nInstance) return false;
34
+ const wrapper = candidate.i18nInstance;
35
+ if (!wrapper.instance) return false;
36
+ if ('function' != typeof candidate.init || 'function' != typeof candidate.use) return false;
35
37
  return true;
36
38
  }
37
39
  function getI18nWrapperI18nextInstance(wrapperInstance) {
@@ -48,7 +50,8 @@ function getActualI18nextInstance(instance) {
48
50
  function isI18nInstance(obj) {
49
51
  if (!obj || 'object' != typeof obj) return false;
50
52
  if (isI18nWrapperInstance(obj)) return true;
51
- return 'function' == typeof obj.init && 'function' == typeof obj.use;
53
+ const candidate = obj;
54
+ return 'function' == typeof candidate.init && 'function' == typeof candidate.use;
52
55
  }
53
56
  async function tryImportI18next() {
54
57
  try {
@@ -88,21 +91,18 @@ async function getI18nInstance(userInstance) {
88
91
  __webpack_require__.d(__webpack_exports__, {
89
92
  getActualI18nextInstance: ()=>getActualI18nextInstance,
90
93
  getI18nInstance: ()=>getI18nInstance,
91
- getI18nWrapperI18nextInstance: ()=>getI18nWrapperI18nextInstance,
92
94
  getI18nextInstanceForProvider: ()=>getI18nextInstanceForProvider,
93
95
  isI18nInstance: ()=>isI18nInstance,
94
96
  isI18nWrapperInstance: ()=>isI18nWrapperInstance
95
97
  });
96
98
  exports.getActualI18nextInstance = __webpack_exports__.getActualI18nextInstance;
97
99
  exports.getI18nInstance = __webpack_exports__.getI18nInstance;
98
- exports.getI18nWrapperI18nextInstance = __webpack_exports__.getI18nWrapperI18nextInstance;
99
100
  exports.getI18nextInstanceForProvider = __webpack_exports__.getI18nextInstanceForProvider;
100
101
  exports.isI18nInstance = __webpack_exports__.isI18nInstance;
101
102
  exports.isI18nWrapperInstance = __webpack_exports__.isI18nWrapperInstance;
102
103
  for(var __rspack_i in __webpack_exports__)if (-1 === [
103
104
  "getActualI18nextInstance",
104
105
  "getI18nInstance",
105
- "getI18nWrapperI18nextInstance",
106
106
  "getI18nextInstanceForProvider",
107
107
  "isI18nInstance",
108
108
  "isI18nWrapperInstance"