@bleedingdev/modern-js-plugin-i18n 3.2.0-ultramodern.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +32 -0
  3. package/dist/cjs/cli/index.js +154 -0
  4. package/dist/cjs/runtime/I18nLink.js +68 -0
  5. package/dist/cjs/runtime/context.js +142 -0
  6. package/dist/cjs/runtime/hooks.js +194 -0
  7. package/dist/cjs/runtime/i18n/backend/config.js +39 -0
  8. package/dist/cjs/runtime/i18n/backend/defaults.js +56 -0
  9. package/dist/cjs/runtime/i18n/backend/defaults.node.js +56 -0
  10. package/dist/cjs/runtime/i18n/backend/index.js +108 -0
  11. package/dist/cjs/runtime/i18n/backend/middleware.common.js +105 -0
  12. package/dist/cjs/runtime/i18n/backend/middleware.js +54 -0
  13. package/dist/cjs/runtime/i18n/backend/middleware.node.js +58 -0
  14. package/dist/cjs/runtime/i18n/backend/sdk-backend.js +175 -0
  15. package/dist/cjs/runtime/i18n/backend/sdk-event.js +64 -0
  16. package/dist/cjs/runtime/i18n/detection/config.js +63 -0
  17. package/dist/cjs/runtime/i18n/detection/index.js +309 -0
  18. package/dist/cjs/runtime/i18n/detection/middleware.js +185 -0
  19. package/dist/cjs/runtime/i18n/detection/middleware.node.js +74 -0
  20. package/dist/cjs/runtime/i18n/index.js +43 -0
  21. package/dist/cjs/runtime/i18n/instance.js +132 -0
  22. package/dist/cjs/runtime/i18n/utils.js +189 -0
  23. package/dist/cjs/runtime/index.js +174 -0
  24. package/dist/cjs/runtime/types.js +18 -0
  25. package/dist/cjs/runtime/utils.js +136 -0
  26. package/dist/cjs/server/index.js +218 -0
  27. package/dist/cjs/shared/deepMerge.js +54 -0
  28. package/dist/cjs/shared/detection.js +105 -0
  29. package/dist/cjs/shared/type.js +18 -0
  30. package/dist/cjs/shared/utils.js +78 -0
  31. package/dist/esm/cli/index.mjs +107 -0
  32. package/dist/esm/rslib-runtime.mjs +18 -0
  33. package/dist/esm/runtime/I18nLink.mjs +32 -0
  34. package/dist/esm/runtime/context.mjs +105 -0
  35. package/dist/esm/runtime/hooks.mjs +151 -0
  36. package/dist/esm/runtime/i18n/backend/config.mjs +5 -0
  37. package/dist/esm/runtime/i18n/backend/defaults.mjs +19 -0
  38. package/dist/esm/runtime/i18n/backend/defaults.node.mjs +19 -0
  39. package/dist/esm/runtime/i18n/backend/index.mjs +74 -0
  40. package/dist/esm/runtime/i18n/backend/middleware.common.mjs +61 -0
  41. package/dist/esm/runtime/i18n/backend/middleware.mjs +7 -0
  42. package/dist/esm/runtime/i18n/backend/middleware.node.mjs +8 -0
  43. package/dist/esm/runtime/i18n/backend/sdk-backend.mjs +141 -0
  44. package/dist/esm/runtime/i18n/backend/sdk-event.mjs +21 -0
  45. package/dist/esm/runtime/i18n/detection/config.mjs +26 -0
  46. package/dist/esm/runtime/i18n/detection/index.mjs +260 -0
  47. package/dist/esm/runtime/i18n/detection/middleware.mjs +132 -0
  48. package/dist/esm/runtime/i18n/detection/middleware.node.mjs +31 -0
  49. package/dist/esm/runtime/i18n/index.mjs +2 -0
  50. package/dist/esm/runtime/i18n/instance.mjs +77 -0
  51. package/dist/esm/runtime/i18n/utils.mjs +140 -0
  52. package/dist/esm/runtime/index.mjs +132 -0
  53. package/dist/esm/runtime/types.mjs +0 -0
  54. package/dist/esm/runtime/utils.mjs +75 -0
  55. package/dist/esm/server/index.mjs +182 -0
  56. package/dist/esm/shared/deepMerge.mjs +20 -0
  57. package/dist/esm/shared/detection.mjs +71 -0
  58. package/dist/esm/shared/type.mjs +0 -0
  59. package/dist/esm/shared/utils.mjs +35 -0
  60. package/dist/esm-node/cli/index.mjs +108 -0
  61. package/dist/esm-node/rslib-runtime.mjs +19 -0
  62. package/dist/esm-node/runtime/I18nLink.mjs +33 -0
  63. package/dist/esm-node/runtime/context.mjs +106 -0
  64. package/dist/esm-node/runtime/hooks.mjs +152 -0
  65. package/dist/esm-node/runtime/i18n/backend/config.mjs +6 -0
  66. package/dist/esm-node/runtime/i18n/backend/defaults.mjs +20 -0
  67. package/dist/esm-node/runtime/i18n/backend/defaults.node.mjs +20 -0
  68. package/dist/esm-node/runtime/i18n/backend/index.mjs +75 -0
  69. package/dist/esm-node/runtime/i18n/backend/middleware.common.mjs +62 -0
  70. package/dist/esm-node/runtime/i18n/backend/middleware.mjs +8 -0
  71. package/dist/esm-node/runtime/i18n/backend/middleware.node.mjs +9 -0
  72. package/dist/esm-node/runtime/i18n/backend/sdk-backend.mjs +142 -0
  73. package/dist/esm-node/runtime/i18n/backend/sdk-event.mjs +22 -0
  74. package/dist/esm-node/runtime/i18n/detection/config.mjs +27 -0
  75. package/dist/esm-node/runtime/i18n/detection/index.mjs +261 -0
  76. package/dist/esm-node/runtime/i18n/detection/middleware.mjs +133 -0
  77. package/dist/esm-node/runtime/i18n/detection/middleware.node.mjs +32 -0
  78. package/dist/esm-node/runtime/i18n/index.mjs +3 -0
  79. package/dist/esm-node/runtime/i18n/instance.mjs +78 -0
  80. package/dist/esm-node/runtime/i18n/utils.mjs +141 -0
  81. package/dist/esm-node/runtime/index.mjs +133 -0
  82. package/dist/esm-node/runtime/types.mjs +1 -0
  83. package/dist/esm-node/runtime/utils.mjs +76 -0
  84. package/dist/esm-node/server/index.mjs +183 -0
  85. package/dist/esm-node/shared/deepMerge.mjs +21 -0
  86. package/dist/esm-node/shared/detection.mjs +72 -0
  87. package/dist/esm-node/shared/type.mjs +1 -0
  88. package/dist/esm-node/shared/utils.mjs +36 -0
  89. package/dist/types/cli/index.d.ts +21 -0
  90. package/dist/types/runtime/I18nLink.d.ts +8 -0
  91. package/dist/types/runtime/context.d.ts +38 -0
  92. package/dist/types/runtime/hooks.d.ts +28 -0
  93. package/dist/types/runtime/i18n/backend/config.d.ts +2 -0
  94. package/dist/types/runtime/i18n/backend/defaults.d.ts +13 -0
  95. package/dist/types/runtime/i18n/backend/defaults.node.d.ts +8 -0
  96. package/dist/types/runtime/i18n/backend/index.d.ts +3 -0
  97. package/dist/types/runtime/i18n/backend/middleware.common.d.ts +14 -0
  98. package/dist/types/runtime/i18n/backend/middleware.d.ts +12 -0
  99. package/dist/types/runtime/i18n/backend/middleware.node.d.ts +13 -0
  100. package/dist/types/runtime/i18n/backend/sdk-backend.d.ts +53 -0
  101. package/dist/types/runtime/i18n/backend/sdk-event.d.ts +9 -0
  102. package/dist/types/runtime/i18n/detection/config.d.ts +11 -0
  103. package/dist/types/runtime/i18n/detection/index.d.ts +50 -0
  104. package/dist/types/runtime/i18n/detection/middleware.d.ts +24 -0
  105. package/dist/types/runtime/i18n/detection/middleware.node.d.ts +17 -0
  106. package/dist/types/runtime/i18n/index.d.ts +3 -0
  107. package/dist/types/runtime/i18n/instance.d.ts +93 -0
  108. package/dist/types/runtime/i18n/utils.d.ts +29 -0
  109. package/dist/types/runtime/index.d.ts +20 -0
  110. package/dist/types/runtime/types.d.ts +15 -0
  111. package/dist/types/runtime/utils.d.ts +33 -0
  112. package/dist/types/server/index.d.ts +8 -0
  113. package/dist/types/shared/deepMerge.d.ts +1 -0
  114. package/dist/types/shared/detection.d.ts +11 -0
  115. package/dist/types/shared/type.d.ts +156 -0
  116. package/dist/types/shared/utils.d.ts +5 -0
  117. package/package.json +136 -0
  118. package/rslib.config.mts +4 -0
  119. package/src/cli/index.ts +245 -0
  120. package/src/runtime/I18nLink.tsx +76 -0
  121. package/src/runtime/context.tsx +281 -0
  122. package/src/runtime/hooks.ts +298 -0
  123. package/src/runtime/i18n/backend/config.ts +10 -0
  124. package/src/runtime/i18n/backend/defaults.node.ts +31 -0
  125. package/src/runtime/i18n/backend/defaults.ts +37 -0
  126. package/src/runtime/i18n/backend/index.ts +181 -0
  127. package/src/runtime/i18n/backend/middleware.common.ts +116 -0
  128. package/src/runtime/i18n/backend/middleware.node.ts +32 -0
  129. package/src/runtime/i18n/backend/middleware.ts +28 -0
  130. package/src/runtime/i18n/backend/sdk-backend.ts +306 -0
  131. package/src/runtime/i18n/backend/sdk-event.ts +39 -0
  132. package/src/runtime/i18n/detection/config.ts +32 -0
  133. package/src/runtime/i18n/detection/index.ts +641 -0
  134. package/src/runtime/i18n/detection/middleware.node.ts +84 -0
  135. package/src/runtime/i18n/detection/middleware.ts +251 -0
  136. package/src/runtime/i18n/index.ts +8 -0
  137. package/src/runtime/i18n/instance.ts +227 -0
  138. package/src/runtime/i18n/utils.ts +351 -0
  139. package/src/runtime/index.tsx +285 -0
  140. package/src/runtime/types.ts +17 -0
  141. package/src/runtime/utils.ts +163 -0
  142. package/src/server/index.ts +406 -0
  143. package/src/shared/deepMerge.ts +38 -0
  144. package/src/shared/detection.ts +131 -0
  145. package/src/shared/type.ts +170 -0
  146. package/src/shared/utils.ts +82 -0
  147. package/tsconfig.json +13 -0
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ DEFAULT_I18NEXT_BACKEND_OPTIONS: ()=>DEFAULT_I18NEXT_BACKEND_OPTIONS,
28
+ convertBackendOptions: ()=>convertBackendOptions
29
+ });
30
+ const DEFAULT_I18NEXT_BACKEND_OPTIONS = {
31
+ loadPath: '/locales/{{lng}}/{{ns}}.json',
32
+ addPath: '/locales/{{lng}}/{{ns}}.json'
33
+ };
34
+ function convertPath(path) {
35
+ if (!path) return path;
36
+ if (path.startsWith('/')) return `${window.__assetPrefix__ || ''}${path}`;
37
+ return path;
38
+ }
39
+ function convertBackendOptions(options) {
40
+ if (!options) return options;
41
+ const converted = {
42
+ ...options
43
+ };
44
+ if (converted.loadPath) converted.loadPath = convertPath(converted.loadPath);
45
+ if (converted.addPath) converted.addPath = convertPath(converted.addPath);
46
+ return converted;
47
+ }
48
+ exports.DEFAULT_I18NEXT_BACKEND_OPTIONS = __webpack_exports__.DEFAULT_I18NEXT_BACKEND_OPTIONS;
49
+ exports.convertBackendOptions = __webpack_exports__.convertBackendOptions;
50
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
51
+ "DEFAULT_I18NEXT_BACKEND_OPTIONS",
52
+ "convertBackendOptions"
53
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
54
+ Object.defineProperty(exports, '__esModule', {
55
+ value: true
56
+ });
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ DEFAULT_I18NEXT_BACKEND_OPTIONS: ()=>DEFAULT_I18NEXT_BACKEND_OPTIONS,
28
+ convertBackendOptions: ()=>convertBackendOptions
29
+ });
30
+ const DEFAULT_I18NEXT_BACKEND_OPTIONS = {
31
+ loadPath: './locales/{{lng}}/{{ns}}.json',
32
+ addPath: './locales/{{lng}}/{{ns}}.json'
33
+ };
34
+ function convertPath(path) {
35
+ if (!path) return path;
36
+ if (path.startsWith('/')) return `.${path}`;
37
+ return path;
38
+ }
39
+ function convertBackendOptions(options) {
40
+ if (!options) return options;
41
+ const converted = {
42
+ ...options
43
+ };
44
+ if (converted.loadPath) converted.loadPath = convertPath(converted.loadPath);
45
+ if (converted.addPath) converted.addPath = convertPath(converted.addPath);
46
+ return converted;
47
+ }
48
+ exports.DEFAULT_I18NEXT_BACKEND_OPTIONS = __webpack_exports__.DEFAULT_I18NEXT_BACKEND_OPTIONS;
49
+ exports.convertBackendOptions = __webpack_exports__.convertBackendOptions;
50
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
51
+ "DEFAULT_I18NEXT_BACKEND_OPTIONS",
52
+ "convertBackendOptions"
53
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
54
+ Object.defineProperty(exports, '__esModule', {
55
+ value: true
56
+ });
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ mergeBackendOptions: ()=>mergeBackendOptions
28
+ });
29
+ const external_config_js_namespaceObject = require("./config.js");
30
+ const external_defaults_js_namespaceObject = require("./defaults.js");
31
+ function hasSdkFunction(backend, userInitOptions) {
32
+ return 'function' == typeof userInitOptions?.backend?.sdk || !!backend?.enabled && !!backend?.sdk && 'function' == typeof backend.sdk;
33
+ }
34
+ function hasLoadPath(backend, userInitOptions) {
35
+ const userLoadPath = userInitOptions?.backend?.loadPath ?? backend?.loadPath;
36
+ const isExplicit = !!userLoadPath && '' !== userLoadPath;
37
+ const hasPath = isExplicit || !!backend?.enabled && void 0 === userLoadPath;
38
+ return {
39
+ hasPath,
40
+ isExplicit
41
+ };
42
+ }
43
+ function ensureDefaultLoadPath(merged, backend, isExplicitLoadPath = false) {
44
+ if (backend?.enabled && !isExplicitLoadPath && !merged.loadPath) {
45
+ merged.loadPath = external_defaults_js_namespaceObject.DEFAULT_I18NEXT_BACKEND_OPTIONS.loadPath;
46
+ merged.addPath = external_defaults_js_namespaceObject.DEFAULT_I18NEXT_BACKEND_OPTIONS.addPath;
47
+ }
48
+ }
49
+ function getFinalLoadPath(mergedOptions, backend, userInitOptions) {
50
+ return mergedOptions?.loadPath || userInitOptions?.backend?.loadPath || (backend?.enabled ? external_defaults_js_namespaceObject.DEFAULT_I18NEXT_BACKEND_OPTIONS.loadPath : void 0);
51
+ }
52
+ function getFinalSdk(mergedOptions, backend, userInitOptions) {
53
+ return mergedOptions?.sdk || userInitOptions?.backend?.sdk || (backend?.sdk && 'function' == typeof backend.sdk ? backend.sdk : void 0);
54
+ }
55
+ function buildChainedBackendConfig(backend, userInitOptions) {
56
+ const merged = (0, external_config_js_namespaceObject.mergeBackendOptions)(external_defaults_js_namespaceObject.DEFAULT_I18NEXT_BACKEND_OPTIONS, backend, userInitOptions?.backend);
57
+ const { isExplicit } = hasLoadPath(backend, userInitOptions);
58
+ ensureDefaultLoadPath(merged, backend, isExplicit);
59
+ const mergedOptions = (0, external_defaults_js_namespaceObject.convertBackendOptions)(merged);
60
+ const finalLoadPath = getFinalLoadPath(mergedOptions, backend, userInitOptions);
61
+ const finalSdk = getFinalSdk(mergedOptions, backend, userInitOptions);
62
+ const chainedBackendOptions = [
63
+ {
64
+ loadPath: finalLoadPath,
65
+ addPath: mergedOptions?.addPath || external_defaults_js_namespaceObject.DEFAULT_I18NEXT_BACKEND_OPTIONS.addPath
66
+ },
67
+ {
68
+ sdk: finalSdk
69
+ }
70
+ ];
71
+ return {
72
+ ...mergedOptions,
73
+ loadPath: finalLoadPath,
74
+ sdk: finalSdk,
75
+ cacheHitMode: mergedOptions?.cacheHitMode || backend?.cacheHitMode || userInitOptions?.backend?.cacheHitMode || 'refreshAndUpdateStore',
76
+ _useChainedBackend: true,
77
+ _chainedBackendConfig: {
78
+ backendOptions: chainedBackendOptions
79
+ }
80
+ };
81
+ }
82
+ function buildSdkOnlyBackendConfig(backend, userInitOptions) {
83
+ const merged = (0, external_config_js_namespaceObject.mergeBackendOptions)({}, backend, userInitOptions?.backend);
84
+ return (0, external_defaults_js_namespaceObject.convertBackendOptions)(merged) || {};
85
+ }
86
+ function buildHttpFsBackendConfig(backend, userInitOptions) {
87
+ if (!backend?.enabled && !userInitOptions?.backend) return;
88
+ const mergedBackend = backend?.enabled ? (0, external_config_js_namespaceObject.mergeBackendOptions)(external_defaults_js_namespaceObject.DEFAULT_I18NEXT_BACKEND_OPTIONS, backend, userInitOptions?.backend) : userInitOptions?.backend;
89
+ if (mergedBackend) {
90
+ const { isExplicit } = hasLoadPath(backend, userInitOptions);
91
+ ensureDefaultLoadPath(mergedBackend, backend, isExplicit);
92
+ }
93
+ return (0, external_defaults_js_namespaceObject.convertBackendOptions)(mergedBackend) || {};
94
+ }
95
+ const mergeBackendOptions = (backend, userInitOptions)=>{
96
+ const sdkFunction = hasSdkFunction(backend, userInitOptions);
97
+ const { hasPath } = hasLoadPath(backend, userInitOptions);
98
+ if (hasPath && sdkFunction) return buildChainedBackendConfig(backend, userInitOptions);
99
+ if (sdkFunction) return buildSdkOnlyBackendConfig(backend, userInitOptions);
100
+ return buildHttpFsBackendConfig(backend, userInitOptions);
101
+ };
102
+ exports.mergeBackendOptions = __webpack_exports__.mergeBackendOptions;
103
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
104
+ "mergeBackendOptions"
105
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
106
+ Object.defineProperty(exports, '__esModule', {
107
+ value: true
108
+ });
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.n = (module)=>{
5
+ var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
6
+ __webpack_require__.d(getter, {
7
+ a: getter
8
+ });
9
+ return getter;
10
+ };
11
+ })();
12
+ (()=>{
13
+ __webpack_require__.d = (exports1, definition)=>{
14
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
15
+ enumerable: true,
16
+ get: definition[key]
17
+ });
18
+ };
19
+ })();
20
+ (()=>{
21
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
22
+ })();
23
+ (()=>{
24
+ __webpack_require__.r = (exports1)=>{
25
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
26
+ value: 'Module'
27
+ });
28
+ Object.defineProperty(exports1, '__esModule', {
29
+ value: true
30
+ });
31
+ };
32
+ })();
33
+ var __webpack_exports__ = {};
34
+ __webpack_require__.r(__webpack_exports__);
35
+ __webpack_require__.d(__webpack_exports__, {
36
+ useI18nextBackendCommon: ()=>useI18nextBackendCommon
37
+ });
38
+ const external_i18next_chained_backend_namespaceObject = require("i18next-chained-backend");
39
+ var external_i18next_chained_backend_default = /*#__PURE__*/ __webpack_require__.n(external_i18next_chained_backend_namespaceObject);
40
+ const external_instance_js_namespaceObject = require("../instance.js");
41
+ const external_sdk_backend_js_namespaceObject = require("./sdk-backend.js");
42
+ function checkBackendConfig(backend) {
43
+ const hasSdk = backend?.sdk && 'function' == typeof backend.sdk;
44
+ const hasLoadPath = !!backend?.loadPath;
45
+ const useChained = backend?._useChainedBackend;
46
+ return {
47
+ hasSdk,
48
+ hasLoadPath,
49
+ useChained
50
+ };
51
+ }
52
+ function buildChainedBackendConfig(backend, BackendWithSave) {
53
+ const cacheHitMode = backend.cacheHitMode || 'refreshAndUpdateStore';
54
+ if (backend._chainedBackendConfig) return {
55
+ backends: [
56
+ BackendWithSave,
57
+ external_sdk_backend_js_namespaceObject.SdkBackend
58
+ ],
59
+ backendOptions: backend._chainedBackendConfig.backendOptions,
60
+ cacheHitMode
61
+ };
62
+ return {
63
+ backends: [
64
+ BackendWithSave,
65
+ external_sdk_backend_js_namespaceObject.SdkBackend
66
+ ],
67
+ backendOptions: [
68
+ {
69
+ loadPath: backend.loadPath,
70
+ addPath: backend.addPath
71
+ },
72
+ {
73
+ sdk: backend.sdk
74
+ }
75
+ ],
76
+ cacheHitMode
77
+ };
78
+ }
79
+ function setupChainedBackend(i18nInstance, backend, BackendWithSave) {
80
+ i18nInstance.use(external_i18next_chained_backend_default());
81
+ const actualInstance = (0, external_instance_js_namespaceObject.getActualI18nextInstance)(i18nInstance);
82
+ if (actualInstance?.options) actualInstance.options.backend = buildChainedBackendConfig(backend, BackendWithSave);
83
+ if (i18nInstance.options) i18nInstance.options.backend = buildChainedBackendConfig(backend, BackendWithSave);
84
+ }
85
+ function cleanBackendConfig(backend) {
86
+ const { _useChainedBackend, _chainedBackendConfig, ...cleanBackend } = backend;
87
+ return cleanBackend;
88
+ }
89
+ function useI18nextBackendCommon(i18nInstance, BackendWithSave, BackendBase, backend) {
90
+ if (!backend) return i18nInstance.use(BackendBase);
91
+ const { hasSdk, hasLoadPath, useChained } = checkBackendConfig(backend);
92
+ if (useChained || hasLoadPath && hasSdk) return void setupChainedBackend(i18nInstance, backend, BackendWithSave);
93
+ if (hasSdk) return i18nInstance.use(external_sdk_backend_js_namespaceObject.SdkBackend);
94
+ const actualInstance = (0, external_instance_js_namespaceObject.getActualI18nextInstance)(i18nInstance);
95
+ if (actualInstance?.options) actualInstance.options.backend = cleanBackendConfig(backend);
96
+ if (i18nInstance.options) i18nInstance.options.backend = cleanBackendConfig(backend);
97
+ return i18nInstance.use(BackendBase);
98
+ }
99
+ exports.useI18nextBackendCommon = __webpack_exports__.useI18nextBackendCommon;
100
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
101
+ "useI18nextBackendCommon"
102
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
103
+ Object.defineProperty(exports, '__esModule', {
104
+ value: true
105
+ });
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.n = (module)=>{
5
+ var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
6
+ __webpack_require__.d(getter, {
7
+ a: getter
8
+ });
9
+ return getter;
10
+ };
11
+ })();
12
+ (()=>{
13
+ __webpack_require__.d = (exports1, definition)=>{
14
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
15
+ enumerable: true,
16
+ get: definition[key]
17
+ });
18
+ };
19
+ })();
20
+ (()=>{
21
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
22
+ })();
23
+ (()=>{
24
+ __webpack_require__.r = (exports1)=>{
25
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
26
+ value: 'Module'
27
+ });
28
+ Object.defineProperty(exports1, '__esModule', {
29
+ value: true
30
+ });
31
+ };
32
+ })();
33
+ var __webpack_exports__ = {};
34
+ __webpack_require__.r(__webpack_exports__);
35
+ __webpack_require__.d(__webpack_exports__, {
36
+ HttpBackendWithSave: ()=>HttpBackendWithSave,
37
+ useI18nextBackend: ()=>useI18nextBackend
38
+ });
39
+ const external_i18next_http_backend_namespaceObject = require("i18next-http-backend");
40
+ var external_i18next_http_backend_default = /*#__PURE__*/ __webpack_require__.n(external_i18next_http_backend_namespaceObject);
41
+ const external_middleware_common_js_namespaceObject = require("./middleware.common.js");
42
+ class HttpBackendWithSave extends external_i18next_http_backend_default() {
43
+ save(_language, _namespace, _data) {}
44
+ }
45
+ const useI18nextBackend = (i18nInstance, backend)=>(0, external_middleware_common_js_namespaceObject.useI18nextBackendCommon)(i18nInstance, HttpBackendWithSave, external_i18next_http_backend_default(), backend);
46
+ exports.HttpBackendWithSave = __webpack_exports__.HttpBackendWithSave;
47
+ exports.useI18nextBackend = __webpack_exports__.useI18nextBackend;
48
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
49
+ "HttpBackendWithSave",
50
+ "useI18nextBackend"
51
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
52
+ Object.defineProperty(exports, '__esModule', {
53
+ value: true
54
+ });
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.n = (module)=>{
5
+ var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
6
+ __webpack_require__.d(getter, {
7
+ a: getter
8
+ });
9
+ return getter;
10
+ };
11
+ })();
12
+ (()=>{
13
+ __webpack_require__.d = (exports1, definition)=>{
14
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
15
+ enumerable: true,
16
+ get: definition[key]
17
+ });
18
+ };
19
+ })();
20
+ (()=>{
21
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
22
+ })();
23
+ (()=>{
24
+ __webpack_require__.r = (exports1)=>{
25
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
26
+ value: 'Module'
27
+ });
28
+ Object.defineProperty(exports1, '__esModule', {
29
+ value: true
30
+ });
31
+ };
32
+ })();
33
+ var __webpack_exports__ = {};
34
+ __webpack_require__.r(__webpack_exports__);
35
+ __webpack_require__.d(__webpack_exports__, {
36
+ FsBackendWithSave: ()=>FsBackendWithSave,
37
+ HttpBackendWithSave: ()=>HttpBackendWithSave,
38
+ useI18nextBackend: ()=>useI18nextBackend
39
+ });
40
+ const external_i18next_fs_backend_namespaceObject = require("i18next-fs-backend");
41
+ var external_i18next_fs_backend_default = /*#__PURE__*/ __webpack_require__.n(external_i18next_fs_backend_namespaceObject);
42
+ const external_middleware_common_js_namespaceObject = require("./middleware.common.js");
43
+ class FsBackendWithSave extends external_i18next_fs_backend_default() {
44
+ save(_language, _namespace, _data) {}
45
+ }
46
+ const HttpBackendWithSave = FsBackendWithSave;
47
+ const useI18nextBackend = (i18nInstance, backend)=>(0, external_middleware_common_js_namespaceObject.useI18nextBackendCommon)(i18nInstance, FsBackendWithSave, external_i18next_fs_backend_default(), backend);
48
+ exports.FsBackendWithSave = __webpack_exports__.FsBackendWithSave;
49
+ exports.HttpBackendWithSave = __webpack_exports__.HttpBackendWithSave;
50
+ exports.useI18nextBackend = __webpack_exports__.useI18nextBackend;
51
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
52
+ "FsBackendWithSave",
53
+ "HttpBackendWithSave",
54
+ "useI18nextBackend"
55
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
56
+ Object.defineProperty(exports, '__esModule', {
57
+ value: true
58
+ });
@@ -0,0 +1,175 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ SdkBackend: ()=>SdkBackend
28
+ });
29
+ const external_sdk_event_js_namespaceObject = require("./sdk-event.js");
30
+ class SdkBackend {
31
+ init(services, backendOptions, _i18nextOptions) {
32
+ this.services = services;
33
+ this.sdk = backendOptions?.sdk;
34
+ (0, external_sdk_event_js_namespaceObject.setI18nSdkBackendId)(services.resourceStore || services.store, this.backendId);
35
+ if (!this.sdk) throw new Error('SdkBackend requires an SDK function to be provided in backend options');
36
+ }
37
+ read(language, namespace, callback) {
38
+ if (!this.sdk) {
39
+ console.error('[i18n] SdkBackend.read - SDK function not initialized');
40
+ callback(new Error('SDK function not initialized'), null);
41
+ return;
42
+ }
43
+ const cached = this.allResourcesCache ? this.extractFromCache(language, namespace) : null;
44
+ if (null !== cached) {
45
+ const mergedData = this.mergeWithExistingResources(language, namespace, cached);
46
+ callback(null, mergedData);
47
+ return;
48
+ }
49
+ const cacheKey = this.getCacheKey(language, namespace);
50
+ const existingPromise = this.loadingPromises.get(cacheKey);
51
+ if (existingPromise) return void this.handlePromise(existingPromise, language, namespace, callback, false);
52
+ this.loadResource(language, namespace, callback);
53
+ }
54
+ create(_languages, _namespace, _key, _fallbackValue) {}
55
+ isLoading(language, namespace) {
56
+ return this.loadingPromises.has(this.getCacheKey(language, namespace));
57
+ }
58
+ getLoadingResources() {
59
+ const loading = [];
60
+ for (const key of this.loadingPromises.keys()){
61
+ const [language, namespace] = key.split(':');
62
+ if (language && namespace) loading.push({
63
+ language,
64
+ namespace
65
+ });
66
+ }
67
+ return loading;
68
+ }
69
+ hasLoadingResources() {
70
+ return this.loadingPromises.size > 0;
71
+ }
72
+ getCacheKey(language, namespace) {
73
+ return `${language}:${namespace}`;
74
+ }
75
+ loadResource(language, namespace, callback) {
76
+ try {
77
+ const result = this.callSdk(language, namespace);
78
+ const loadPromise = result instanceof Promise ? result : Promise.resolve(result);
79
+ const cacheKey = this.getCacheKey(language, namespace);
80
+ this.loadingPromises.set(cacheKey, loadPromise);
81
+ this.handlePromise(loadPromise, language, namespace, callback, true);
82
+ } catch (error) {
83
+ callback(this.normalizeError(error), null);
84
+ }
85
+ }
86
+ handlePromise(promise, language, namespace, callback, shouldUpdateCache) {
87
+ const cacheKey = this.getCacheKey(language, namespace);
88
+ promise.then((data)=>{
89
+ const formattedData = this.formatResources(data, language, namespace);
90
+ const mergedData = this.mergeWithExistingResources(language, namespace, formattedData);
91
+ if (shouldUpdateCache) {
92
+ this.updateCache(language, namespace, mergedData);
93
+ this.loadingPromises.delete(cacheKey);
94
+ }
95
+ callback(null, mergedData);
96
+ this.triggerI18nextUpdate(language, namespace);
97
+ }).catch((error)=>{
98
+ if (shouldUpdateCache) this.loadingPromises.delete(cacheKey);
99
+ callback(this.normalizeError(error), null);
100
+ });
101
+ }
102
+ normalizeError(error) {
103
+ return error instanceof Error ? error : new Error(String(error));
104
+ }
105
+ callSdk(language, namespace) {
106
+ if (!this.sdk) throw new Error('SDK function not initialized');
107
+ const options = {
108
+ lng: language,
109
+ ns: namespace
110
+ };
111
+ return this.sdk(options);
112
+ }
113
+ extractFromCache(language, namespace) {
114
+ if (!this.allResourcesCache) return null;
115
+ const langData = this.allResourcesCache[language];
116
+ if (!this.isObject(langData)) return null;
117
+ const nsData = langData[namespace];
118
+ if (!this.isObject(nsData)) return null;
119
+ return nsData;
120
+ }
121
+ updateCache(language, namespace, data) {
122
+ if (!this.allResourcesCache) this.allResourcesCache = {};
123
+ if (!this.allResourcesCache[language]) this.allResourcesCache[language] = {};
124
+ if (this.isObject(data)) this.allResourcesCache[language][namespace] = data;
125
+ }
126
+ formatResources(data, language, namespace) {
127
+ if (!this.isObject(data)) return {};
128
+ const dataObj = data;
129
+ const langData = dataObj[language];
130
+ if (this.isObject(langData)) {
131
+ const nsData = langData[namespace];
132
+ if (this.isObject(nsData)) return nsData;
133
+ }
134
+ const hasLanguageKeys = Object.keys(dataObj).some((key)=>this.isObject(dataObj[key]));
135
+ if (!hasLanguageKeys) return dataObj;
136
+ return {};
137
+ }
138
+ isObject(value) {
139
+ return null !== value && 'object' == typeof value;
140
+ }
141
+ mergeWithExistingResources(language, namespace, sdkData) {
142
+ const store = this.services?.resourceStore || this.services?.store;
143
+ const existingData = store?.data?.[language]?.[namespace] || {};
144
+ return {
145
+ ...existingData,
146
+ ...sdkData
147
+ };
148
+ }
149
+ triggerI18nextUpdate(language, namespace) {
150
+ if ("u" > typeof window) {
151
+ const event = new CustomEvent(external_sdk_event_js_namespaceObject.I18N_SDK_RESOURCES_LOADED_EVENT, {
152
+ detail: {
153
+ language,
154
+ namespace,
155
+ backendId: this.backendId
156
+ }
157
+ });
158
+ window.dispatchEvent(event);
159
+ }
160
+ }
161
+ constructor(_services, _options){
162
+ this.type = 'backend';
163
+ this.allResourcesCache = null;
164
+ this.backendId = (0, external_sdk_event_js_namespaceObject.createI18nSdkBackendId)();
165
+ this.loadingPromises = new Map();
166
+ }
167
+ }
168
+ SdkBackend.type = 'backend';
169
+ exports.SdkBackend = __webpack_exports__.SdkBackend;
170
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
171
+ "SdkBackend"
172
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
173
+ Object.defineProperty(exports, '__esModule', {
174
+ value: true
175
+ });
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ I18N_SDK_RESOURCES_LOADED_EVENT: ()=>I18N_SDK_RESOURCES_LOADED_EVENT,
28
+ createI18nSdkBackendId: ()=>createI18nSdkBackendId,
29
+ getI18nSdkBackendId: ()=>getI18nSdkBackendId,
30
+ setI18nSdkBackendId: ()=>setI18nSdkBackendId
31
+ });
32
+ const I18N_SDK_RESOURCES_LOADED_EVENT = 'i18n-sdk-resources-loaded';
33
+ const I18N_SDK_BACKEND_ID_KEY = '__modern_i18n_sdk_backend_id__';
34
+ let sdkBackendInstanceCount = 0;
35
+ function createI18nSdkBackendId() {
36
+ sdkBackendInstanceCount += 1;
37
+ return `modern-i18n-sdk-backend-${sdkBackendInstanceCount}`;
38
+ }
39
+ function setI18nSdkBackendId(target, backendId) {
40
+ if (!target || 'object' != typeof target) return;
41
+ Object.defineProperty(target, I18N_SDK_BACKEND_ID_KEY, {
42
+ configurable: true,
43
+ enumerable: false,
44
+ value: backendId,
45
+ writable: true
46
+ });
47
+ }
48
+ function getI18nSdkBackendId(target) {
49
+ if (!target || 'object' != typeof target) return;
50
+ return target[I18N_SDK_BACKEND_ID_KEY];
51
+ }
52
+ exports.I18N_SDK_RESOURCES_LOADED_EVENT = __webpack_exports__.I18N_SDK_RESOURCES_LOADED_EVENT;
53
+ exports.createI18nSdkBackendId = __webpack_exports__.createI18nSdkBackendId;
54
+ exports.getI18nSdkBackendId = __webpack_exports__.getI18nSdkBackendId;
55
+ exports.setI18nSdkBackendId = __webpack_exports__.setI18nSdkBackendId;
56
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
57
+ "I18N_SDK_RESOURCES_LOADED_EVENT",
58
+ "createI18nSdkBackendId",
59
+ "getI18nSdkBackendId",
60
+ "setI18nSdkBackendId"
61
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
62
+ Object.defineProperty(exports, '__esModule', {
63
+ value: true
64
+ });