@jsverse/transloco 7.6.0 → 8.0.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 (210) hide show
  1. package/CHANGELOG.md +42 -2
  2. package/README.md +5 -2
  3. package/esm2022/index.mjs +4 -5
  4. package/esm2022/lib/get-fallbacks-loaders.mjs +1 -1
  5. package/esm2022/lib/lang-resolver.mjs +3 -2
  6. package/esm2022/lib/resolve-loader.mjs +2 -2
  7. package/esm2022/lib/scope-resolver.mjs +3 -2
  8. package/esm2022/lib/template-handler.mjs +2 -2
  9. package/esm2022/lib/transloco-fallback-strategy.mjs +2 -4
  10. package/esm2022/lib/transloco-lang.mjs +2 -2
  11. package/esm2022/lib/transloco-loading-template.mjs +2 -4
  12. package/esm2022/lib/transloco-missing-handler.mjs +3 -5
  13. package/esm2022/lib/transloco-scope.mjs +2 -2
  14. package/esm2022/lib/transloco-testing.module.mjs +1 -1
  15. package/esm2022/lib/transloco.config.mjs +2 -2
  16. package/esm2022/lib/transloco.directive.mjs +3 -2
  17. package/esm2022/lib/transloco.interceptor.mjs +3 -3
  18. package/esm2022/lib/transloco.loader.mjs +2 -2
  19. package/esm2022/lib/transloco.pipe.mjs +4 -3
  20. package/esm2022/lib/transloco.providers.mjs +1 -1
  21. package/esm2022/lib/transloco.service.mjs +4 -3
  22. package/esm2022/lib/transloco.signal.mjs +1 -1
  23. package/esm2022/lib/transloco.transpiler.mjs +4 -3
  24. package/esm2022/lib/transloco.types.mjs +2 -0
  25. package/esm2022/lib/utils/browser.utils.mjs +30 -0
  26. package/esm2022/lib/utils/flat.utils.mjs +37 -0
  27. package/esm2022/lib/utils/lang.utils.mjs +15 -0
  28. package/esm2022/lib/utils/object.utils.mjs +28 -0
  29. package/esm2022/lib/utils/pipe.utils.mjs +17 -0
  30. package/esm2022/lib/utils/scope.utils.mjs +51 -0
  31. package/esm2022/lib/utils/type.utils.mjs +2 -0
  32. package/fesm2022/jsverse-transloco.mjs +164 -223
  33. package/fesm2022/jsverse-transloco.mjs.map +1 -1
  34. package/index.d.ts +3 -4
  35. package/lib/get-fallbacks-loaders.d.ts +1 -1
  36. package/lib/resolve-loader.d.ts +2 -2
  37. package/lib/scope-resolver.d.ts +2 -1
  38. package/lib/transloco-missing-handler.d.ts +1 -1
  39. package/lib/transloco-scope.d.ts +1 -1
  40. package/lib/transloco-testing.module.d.ts +2 -1
  41. package/lib/transloco.config.d.ts +1 -1
  42. package/lib/transloco.directive.d.ts +1 -1
  43. package/lib/transloco.interceptor.d.ts +1 -1
  44. package/lib/transloco.loader.d.ts +1 -1
  45. package/lib/transloco.pipe.d.ts +3 -1
  46. package/lib/transloco.providers.d.ts +1 -1
  47. package/lib/transloco.service.d.ts +2 -1
  48. package/lib/transloco.signal.d.ts +2 -1
  49. package/lib/transloco.transpiler.d.ts +2 -1
  50. package/lib/{types.d.ts → transloco.types.d.ts} +1 -6
  51. package/lib/{browser-lang.d.ts → utils/browser.utils.d.ts} +1 -0
  52. package/lib/utils/flat.utils.d.ts +3 -0
  53. package/lib/utils/lang.utils.d.ts +4 -0
  54. package/lib/utils/object.utils.d.ts +2 -0
  55. package/lib/utils/pipe.utils.d.ts +8 -0
  56. package/lib/utils/scope.utils.d.ts +7 -0
  57. package/lib/utils/type.utils.d.ts +1 -0
  58. package/package.json +15 -18
  59. package/schematics/collection.json +12 -0
  60. package/schematics/ng-add/generators/http-loader.gen.d.ts +5 -0
  61. package/schematics/{src/ng-add → ng-add}/generators/http-loader.gen.js +1 -0
  62. package/schematics/ng-add/generators/http-loader.gen.js.map +1 -0
  63. package/schematics/{src/ng-add → ng-add}/generators/root-module.gen.js +3 -3
  64. package/schematics/ng-add/generators/root-module.gen.js.map +1 -0
  65. package/schematics/{src/ng-migrate → ng-add}/index.d.ts +1 -1
  66. package/schematics/{src/ng-add → ng-add}/index.js +29 -19
  67. package/schematics/ng-add/index.js.map +1 -0
  68. package/schematics/ng-add/ng-add.spec.d.ts +1 -0
  69. package/schematics/ng-add/ng-add.spec.js +45 -0
  70. package/schematics/ng-add/ng-add.spec.js.map +1 -0
  71. package/schematics/{src/ng-add → ng-add}/schema.d.ts +0 -8
  72. package/schematics/ng-add/schema.js +9 -0
  73. package/schematics/ng-add/schema.js.map +1 -0
  74. package/schematics/{src/ng-add → ng-add}/schema.json +1 -1
  75. package/schematics-core/index.d.ts +9 -0
  76. package/schematics-core/index.js +36 -0
  77. package/schematics-core/index.js.map +1 -0
  78. package/schematics-core/testing/create-workspace.d.ts +11 -0
  79. package/schematics-core/testing/create-workspace.js +34 -0
  80. package/schematics-core/testing/create-workspace.js.map +1 -0
  81. package/schematics-core/testing/index.d.ts +2 -0
  82. package/schematics-core/testing/index.js +19 -0
  83. package/schematics-core/testing/index.js.map +1 -0
  84. package/schematics-core/testing/mocks.d.ts +14 -0
  85. package/schematics-core/testing/mocks.js +10 -0
  86. package/schematics-core/testing/mocks.js.map +1 -0
  87. package/{schematics/src/utils/array.js → schematics-core/utils/collections.js} +1 -1
  88. package/schematics-core/utils/collections.js.map +1 -0
  89. package/schematics-core/utils/file.d.ts +6 -0
  90. package/schematics-core/utils/file.js +21 -0
  91. package/schematics-core/utils/file.js.map +1 -0
  92. package/{schematics/src → schematics-core}/utils/find-module.js +2 -0
  93. package/schematics-core/utils/find-module.js.map +1 -0
  94. package/{schematics/src → schematics-core}/utils/package.d.ts +0 -3
  95. package/{schematics/src → schematics-core}/utils/package.js +2 -4
  96. package/schematics-core/utils/package.js.map +1 -0
  97. package/schematics-core/utils/schematic.d.ts +6 -0
  98. package/{schematics/src/schematics.utils.js → schematics-core/utils/schematic.js} +6 -6
  99. package/schematics-core/utils/schematic.js.map +1 -0
  100. package/schematics-core/utils/translation.d.ts +20 -0
  101. package/schematics-core/utils/translation.js +83 -0
  102. package/schematics-core/utils/translation.js.map +1 -0
  103. package/schematics-core/utils/transloco.d.ts +5 -0
  104. package/schematics-core/utils/transloco.js +31 -0
  105. package/schematics-core/utils/transloco.js.map +1 -0
  106. package/schematics-core/utils/workspace.d.ts +6 -0
  107. package/{schematics/src/utils/projects.js → schematics-core/utils/workspace.js} +1 -13
  108. package/schematics-core/utils/workspace.js.map +1 -0
  109. package/esm2022/lib/browser-lang.mjs +0 -28
  110. package/esm2022/lib/helpers.mjs +0 -129
  111. package/esm2022/lib/shared.mjs +0 -73
  112. package/esm2022/lib/types.mjs +0 -2
  113. package/lib/helpers.d.ts +0 -20
  114. package/lib/shared.d.ts +0 -17
  115. package/schematics/src/assets/i18n/en.json +0 -1
  116. package/schematics/src/collection.json +0 -59
  117. package/schematics/src/component/index.d.ts +0 -2
  118. package/schematics/src/component/index.js +0 -21
  119. package/schematics/src/component/index.js.map +0 -1
  120. package/schematics/src/join/index.d.ts +0 -3
  121. package/schematics/src/join/index.js +0 -79
  122. package/schematics/src/join/index.js.map +0 -1
  123. package/schematics/src/join/schema.d.ts +0 -28
  124. package/schematics/src/join/schema.js +0 -3
  125. package/schematics/src/join/schema.js.map +0 -1
  126. package/schematics/src/join/schema.json +0 -43
  127. package/schematics/src/keys-manager/index.d.ts +0 -5
  128. package/schematics/src/keys-manager/index.js +0 -96
  129. package/schematics/src/keys-manager/index.js.map +0 -1
  130. package/schematics/src/keys-manager/schema.d.ts +0 -19
  131. package/schematics/src/keys-manager/schema.js +0 -3
  132. package/schematics/src/keys-manager/schema.js.map +0 -1
  133. package/schematics/src/keys-manager/schema.json +0 -33
  134. package/schematics/src/migrate/index.d.ts +0 -3
  135. package/schematics/src/migrate/index.js +0 -21
  136. package/schematics/src/migrate/index.js.map +0 -1
  137. package/schematics/src/migrate/ngx-translate-migration.d.ts +0 -3
  138. package/schematics/src/migrate/ngx-translate-migration.js +0 -175
  139. package/schematics/src/migrate/ngx-translate-migration.js.map +0 -1
  140. package/schematics/src/migrate/schema.d.ts +0 -10
  141. package/schematics/src/migrate/schema.js +0 -3
  142. package/schematics/src/migrate/schema.js.map +0 -1
  143. package/schematics/src/migrate/schema.json +0 -23
  144. package/schematics/src/ng-add/generators/http-loader.gen.d.ts +0 -4
  145. package/schematics/src/ng-add/generators/http-loader.gen.js.map +0 -1
  146. package/schematics/src/ng-add/generators/root-module.gen.js.map +0 -1
  147. package/schematics/src/ng-add/generators/translation-files.gen.d.ts +0 -4
  148. package/schematics/src/ng-add/generators/translation-files.gen.js +0 -22
  149. package/schematics/src/ng-add/generators/translation-files.gen.js.map +0 -1
  150. package/schematics/src/ng-add/index.d.ts +0 -3
  151. package/schematics/src/ng-add/index.js.map +0 -1
  152. package/schematics/src/ng-add/schema.js +0 -14
  153. package/schematics/src/ng-add/schema.js.map +0 -1
  154. package/schematics/src/ng-migrate/index.js +0 -14
  155. package/schematics/src/ng-migrate/index.js.map +0 -1
  156. package/schematics/src/ng-migrate/ng-migrate.d.ts +0 -5
  157. package/schematics/src/ng-migrate/ng-migrate.js +0 -105
  158. package/schematics/src/ng-migrate/ng-migrate.js.map +0 -1
  159. package/schematics/src/ng-migrate/schema.d.ts +0 -14
  160. package/schematics/src/ng-migrate/schema.js +0 -3
  161. package/schematics/src/ng-migrate/schema.js.map +0 -1
  162. package/schematics/src/ng-migrate/schema.json +0 -27
  163. package/schematics/src/schematics.utils.d.ts +0 -6
  164. package/schematics/src/schematics.utils.js.map +0 -1
  165. package/schematics/src/scope/index.d.ts +0 -3
  166. package/schematics/src/scope/index.js +0 -101
  167. package/schematics/src/scope/index.js.map +0 -1
  168. package/schematics/src/scope/schema.d.ts +0 -28
  169. package/schematics/src/scope/schema.js +0 -3
  170. package/schematics/src/scope/schema.js.map +0 -1
  171. package/schematics/src/scope/schema.json +0 -84
  172. package/schematics/src/split/index.d.ts +0 -3
  173. package/schematics/src/split/index.js +0 -66
  174. package/schematics/src/split/index.js.map +0 -1
  175. package/schematics/src/split/schema.d.ts +0 -20
  176. package/schematics/src/split/schema.js +0 -3
  177. package/schematics/src/split/schema.js.map +0 -1
  178. package/schematics/src/split/schema.json +0 -35
  179. package/schematics/src/types.d.ts +0 -5
  180. package/schematics/src/types.js +0 -10
  181. package/schematics/src/types.js.map +0 -1
  182. package/schematics/src/upgrade/index.d.ts +0 -3
  183. package/schematics/src/upgrade/index.js +0 -19
  184. package/schematics/src/upgrade/index.js.map +0 -1
  185. package/schematics/src/upgrade/schema.d.ts +0 -6
  186. package/schematics/src/upgrade/schema.js +0 -3
  187. package/schematics/src/upgrade/schema.js.map +0 -1
  188. package/schematics/src/upgrade/schema.json +0 -16
  189. package/schematics/src/upgrade/v2.d.ts +0 -1
  190. package/schematics/src/upgrade/v2.js +0 -88
  191. package/schematics/src/upgrade/v2.js.map +0 -1
  192. package/schematics/src/utils/array.js.map +0 -1
  193. package/schematics/src/utils/config.d.ts +0 -2
  194. package/schematics/src/utils/config.js +0 -12
  195. package/schematics/src/utils/config.js.map +0 -1
  196. package/schematics/src/utils/find-module.js.map +0 -1
  197. package/schematics/src/utils/package.js.map +0 -1
  198. package/schematics/src/utils/projects.d.ts +0 -8
  199. package/schematics/src/utils/projects.js.map +0 -1
  200. package/schematics/src/utils/translations.d.ts +0 -7
  201. package/schematics/src/utils/translations.js +0 -30
  202. package/schematics/src/utils/translations.js.map +0 -1
  203. package/schematics/src/utils/transloco.d.ts +0 -24
  204. package/schematics/src/utils/transloco.js +0 -88
  205. package/schematics/src/utils/transloco.js.map +0 -1
  206. /package/schematics/{src/ng-add → ng-add}/files/transloco-loader/transloco-loader.__ts__ +0 -0
  207. /package/schematics/{src/ng-add → ng-add}/files/transloco-module/transloco-root.module.__ts__ +0 -0
  208. /package/schematics/{src/ng-add → ng-add}/generators/root-module.gen.d.ts +0 -0
  209. /package/{schematics/src/utils/array.d.ts → schematics-core/utils/collections.d.ts} +0 -0
  210. /package/{schematics/src → schematics-core}/utils/find-module.d.ts +0 -0
@@ -0,0 +1,28 @@
1
+ export function getValue(obj, path) {
2
+ if (!obj) {
3
+ return obj;
4
+ }
5
+ /* For cases where the key is like: 'general.something.thing' */
6
+ if (Object.prototype.hasOwnProperty.call(obj, path)) {
7
+ return obj[path];
8
+ }
9
+ return path.split('.').reduce((p, c) => p?.[c], obj);
10
+ }
11
+ export function setValue(obj, prop, val) {
12
+ obj = { ...obj };
13
+ const split = prop.split('.');
14
+ const lastIndex = split.length - 1;
15
+ split.reduce((acc, part, index) => {
16
+ if (index === lastIndex) {
17
+ acc[part] = val;
18
+ }
19
+ else {
20
+ acc[part] = Array.isArray(acc[part])
21
+ ? acc[part].slice()
22
+ : { ...acc[part] };
23
+ }
24
+ return acc && acc[part];
25
+ }, obj);
26
+ return obj;
27
+ }
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy90cmFuc2xvY28vc3JjL2xpYi91dGlscy9vYmplY3QudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLFFBQVEsQ0FBSSxHQUFNLEVBQUUsSUFBYTtJQUMvQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDVCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRCxnRUFBZ0U7SUFDaEUsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDcEQsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkIsQ0FBQztJQUVELE9BQVEsSUFBZSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFVLENBQUMsQ0FBQztBQUMxRSxDQUFDO0FBRUQsTUFBTSxVQUFVLFFBQVEsQ0FBQyxHQUFRLEVBQUUsSUFBWSxFQUFFLEdBQVE7SUFDdkQsR0FBRyxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQztJQUVqQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzlCLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBRW5DLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO1FBQ2hDLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3hCLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDbEIsQ0FBQzthQUFNLENBQUM7WUFDTixHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2xDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFO2dCQUNuQixDQUFDLENBQUMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3ZCLENBQUM7UUFFRCxPQUFPLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBRVIsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGdldFZhbHVlPFQ+KG9iajogVCwgcGF0aDoga2V5b2YgVCkge1xuICBpZiAoIW9iaikge1xuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICAvKiBGb3IgY2FzZXMgd2hlcmUgdGhlIGtleSBpcyBsaWtlOiAnZ2VuZXJhbC5zb21ldGhpbmcudGhpbmcnICovXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwYXRoKSkge1xuICAgIHJldHVybiBvYmpbcGF0aF07XG4gIH1cblxuICByZXR1cm4gKHBhdGggYXMgc3RyaW5nKS5zcGxpdCgnLicpLnJlZHVjZSgocCwgYykgPT4gcD8uW2NdLCBvYmogYXMgYW55KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldFZhbHVlKG9iajogYW55LCBwcm9wOiBzdHJpbmcsIHZhbDogYW55KSB7XG4gIG9iaiA9IHsgLi4ub2JqIH07XG5cbiAgY29uc3Qgc3BsaXQgPSBwcm9wLnNwbGl0KCcuJyk7XG4gIGNvbnN0IGxhc3RJbmRleCA9IHNwbGl0Lmxlbmd0aCAtIDE7XG5cbiAgc3BsaXQucmVkdWNlKChhY2MsIHBhcnQsIGluZGV4KSA9PiB7XG4gICAgaWYgKGluZGV4ID09PSBsYXN0SW5kZXgpIHtcbiAgICAgIGFjY1twYXJ0XSA9IHZhbDtcbiAgICB9IGVsc2Uge1xuICAgICAgYWNjW3BhcnRdID0gQXJyYXkuaXNBcnJheShhY2NbcGFydF0pXG4gICAgICAgID8gYWNjW3BhcnRdLnNsaWNlKClcbiAgICAgICAgOiB7IC4uLmFjY1twYXJ0XSB9O1xuICAgIH1cblxuICAgIHJldHVybiBhY2MgJiYgYWNjW3BhcnRdO1xuICB9LCBvYmopO1xuXG4gIHJldHVybiBvYmo7XG59XG4iXX0=
@@ -0,0 +1,17 @@
1
+ import { isString } from '@jsverse/utils';
2
+ /**
3
+ * @example
4
+ *
5
+ * getPipeValue('todos|scoped', 'scoped') [true, 'todos']
6
+ * getPipeValue('en|static', 'static') [true, 'en']
7
+ * getPipeValue('en', 'static') [false, 'en']
8
+ */
9
+ export function getPipeValue(str, value, char = '|') {
10
+ if (isString(str)) {
11
+ const splitted = str.split(char);
12
+ const lastItem = splitted.pop();
13
+ return lastItem === value ? [true, splitted.toString()] : [false, lastItem];
14
+ }
15
+ return [false, ''];
16
+ }
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdHJhbnNsb2NvL3NyYy9saWIvdXRpbHMvcGlwZS51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFMUM7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FDMUIsR0FBdUIsRUFDdkIsS0FBYSxFQUNiLElBQUksR0FBRyxHQUFHO0lBRVYsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNsQixNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUcsQ0FBQztRQUVqQyxPQUFPLFFBQVEsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRUQsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNTdHJpbmcgfSBmcm9tICdAanN2ZXJzZS91dGlscyc7XG5cbi8qKlxuICogQGV4YW1wbGVcbiAqXG4gKiBnZXRQaXBlVmFsdWUoJ3RvZG9zfHNjb3BlZCcsICdzY29wZWQnKSBbdHJ1ZSwgJ3RvZG9zJ11cbiAqIGdldFBpcGVWYWx1ZSgnZW58c3RhdGljJywgJ3N0YXRpYycpIFt0cnVlLCAnZW4nXVxuICogZ2V0UGlwZVZhbHVlKCdlbicsICdzdGF0aWMnKSBbZmFsc2UsICdlbiddXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQaXBlVmFsdWUoXG4gIHN0cjogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICB2YWx1ZTogc3RyaW5nLFxuICBjaGFyID0gJ3wnLFxuKTogW2Jvb2xlYW4sIHN0cmluZ10ge1xuICBpZiAoaXNTdHJpbmcoc3RyKSkge1xuICAgIGNvbnN0IHNwbGl0dGVkID0gc3RyLnNwbGl0KGNoYXIpO1xuICAgIGNvbnN0IGxhc3RJdGVtID0gc3BsaXR0ZWQucG9wKCkhO1xuXG4gICAgcmV0dXJuIGxhc3RJdGVtID09PSB2YWx1ZSA/IFt0cnVlLCBzcGxpdHRlZC50b1N0cmluZygpXSA6IFtmYWxzZSwgbGFzdEl0ZW1dO1xuICB9XG5cbiAgcmV0dXJuIFtmYWxzZSwgJyddO1xufVxuIl19
@@ -0,0 +1,51 @@
1
+ import { isObject } from '@jsverse/utils';
2
+ /*
3
+ * @example
4
+ *
5
+ * given: lazy-page/en => lazy-page
6
+ *
7
+ */
8
+ export function getScopeFromLang(lang) {
9
+ if (!lang) {
10
+ return '';
11
+ }
12
+ const split = lang.split('/');
13
+ split.pop();
14
+ return split.join('/');
15
+ }
16
+ /*
17
+ * @example
18
+ *
19
+ * given: lazy-page/en => en
20
+ *
21
+ */
22
+ export function getLangFromScope(lang) {
23
+ if (!lang) {
24
+ return '';
25
+ }
26
+ return lang.split('/').pop();
27
+ }
28
+ function prependScope(inlineLoader, scope) {
29
+ return Object.keys(inlineLoader).reduce((acc, lang) => {
30
+ acc[`${scope}/${lang}`] = inlineLoader[lang];
31
+ return acc;
32
+ }, {});
33
+ }
34
+ export function isScopeObject(item) {
35
+ return typeof item?.scope === 'string';
36
+ }
37
+ export function hasInlineLoader(item) {
38
+ return item?.loader && isObject(item.loader);
39
+ }
40
+ export function resolveInlineLoader(providerScope, scope) {
41
+ return hasInlineLoader(providerScope)
42
+ ? prependScope(providerScope.loader, scope)
43
+ : undefined;
44
+ }
45
+ export function getEventPayload(lang) {
46
+ return {
47
+ scope: getScopeFromLang(lang) || null,
48
+ langName: getLangFromScope(lang),
49
+ };
50
+ }
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NvcGUudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3RyYW5zbG9jby9zcmMvbGliL3V0aWxzL3Njb3BlLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVMxQzs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxJQUFZO0lBQzNDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNWLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUIsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBRVosT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3pCLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxJQUFZO0lBQzNDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNWLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUcsQ0FBQztBQUNoQyxDQUFDO0FBRUQsU0FBUyxZQUFZLENBQUMsWUFBMEIsRUFBRSxLQUFhO0lBQzdELE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQ3JDLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFO1FBQ1osR0FBRyxDQUFDLEdBQUcsS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTdDLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQyxFQUNELEVBQXNELENBQ3ZELENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLGFBQWEsQ0FBQyxJQUFTO0lBQ3JDLE9BQU8sT0FBTyxJQUFJLEVBQUUsS0FBSyxLQUFLLFFBQVEsQ0FBQztBQUN6QyxDQUFDO0FBRUQsTUFBTSxVQUFVLGVBQWUsQ0FBQyxJQUFTO0lBQ3ZDLE9BQU8sSUFBSSxFQUFFLE1BQU0sSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQy9DLENBQUM7QUFFRCxNQUFNLFVBQVUsbUJBQW1CLENBQ2pDLGFBQW9DLEVBQ3BDLEtBQWM7SUFFZCxPQUFPLGVBQWUsQ0FBQyxhQUFhLENBQUM7UUFDbkMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsTUFBTyxFQUFFLEtBQU0sQ0FBQztRQUM3QyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQ2hCLENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUFDLElBQVk7SUFDMUMsT0FBTztRQUNMLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJO1FBQ3JDLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7S0FDakMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc09iamVjdCB9IGZyb20gJ0Bqc3ZlcnNlL3V0aWxzJztcblxuaW1wb3J0IHtcbiAgSW5saW5lTG9hZGVyLFxuICBMb2FkZWRFdmVudCxcbiAgUHJvdmlkZXJTY29wZSxcbiAgVHJhbnNsb2NvU2NvcGUsXG59IGZyb20gJy4uL3RyYW5zbG9jby50eXBlcyc7XG5cbi8qXG4gKiBAZXhhbXBsZVxuICpcbiAqIGdpdmVuOiBsYXp5LXBhZ2UvZW4gPT4gbGF6eS1wYWdlXG4gKlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2NvcGVGcm9tTGFuZyhsYW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAoIWxhbmcpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBjb25zdCBzcGxpdCA9IGxhbmcuc3BsaXQoJy8nKTtcbiAgc3BsaXQucG9wKCk7XG5cbiAgcmV0dXJuIHNwbGl0LmpvaW4oJy8nKTtcbn1cblxuLypcbiAqIEBleGFtcGxlXG4gKlxuICogZ2l2ZW46IGxhenktcGFnZS9lbiA9PiBlblxuICpcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExhbmdGcm9tU2NvcGUobGFuZzogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKCFsYW5nKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgcmV0dXJuIGxhbmcuc3BsaXQoJy8nKS5wb3AoKSE7XG59XG5cbmZ1bmN0aW9uIHByZXBlbmRTY29wZShpbmxpbmVMb2FkZXI6IElubGluZUxvYWRlciwgc2NvcGU6IHN0cmluZykge1xuICByZXR1cm4gT2JqZWN0LmtleXMoaW5saW5lTG9hZGVyKS5yZWR1Y2UoXG4gICAgKGFjYywgbGFuZykgPT4ge1xuICAgICAgYWNjW2Ake3Njb3BlfS8ke2xhbmd9YF0gPSBpbmxpbmVMb2FkZXJbbGFuZ107XG5cbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSxcbiAgICB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBJbmxpbmVMb2FkZXJba2V5b2YgSW5saW5lTG9hZGVyXT4sXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1Njb3BlT2JqZWN0KGl0ZW06IGFueSk6IGl0ZW0gaXMgUHJvdmlkZXJTY29wZSB7XG4gIHJldHVybiB0eXBlb2YgaXRlbT8uc2NvcGUgPT09ICdzdHJpbmcnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFzSW5saW5lTG9hZGVyKGl0ZW06IGFueSk6IGl0ZW0gaXMgUHJvdmlkZXJTY29wZSB7XG4gIHJldHVybiBpdGVtPy5sb2FkZXIgJiYgaXNPYmplY3QoaXRlbS5sb2FkZXIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUlubGluZUxvYWRlcihcbiAgcHJvdmlkZXJTY29wZTogVHJhbnNsb2NvU2NvcGUgfCBudWxsLFxuICBzY29wZT86IHN0cmluZyxcbik6IElubGluZUxvYWRlciB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBoYXNJbmxpbmVMb2FkZXIocHJvdmlkZXJTY29wZSlcbiAgICA/IHByZXBlbmRTY29wZShwcm92aWRlclNjb3BlLmxvYWRlciEsIHNjb3BlISlcbiAgICA6IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEV2ZW50UGF5bG9hZChsYW5nOiBzdHJpbmcpOiBMb2FkZWRFdmVudFsncGF5bG9hZCddIHtcbiAgcmV0dXJuIHtcbiAgICBzY29wZTogZ2V0U2NvcGVGcm9tTGFuZyhsYW5nKSB8fCBudWxsLFxuICAgIGxhbmdOYW1lOiBnZXRMYW5nRnJvbVNjb3BlKGxhbmcpLFxuICB9O1xufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdHJhbnNsb2NvL3NyYy9saWIvdXRpbHMvdHlwZS51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgSGFzaE1hcDxUID0gYW55PiA9IFJlY29yZDxzdHJpbmcsIFQ+O1xuIl19
@@ -1,7 +1,8 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { InjectionToken, inject, Injectable, Injector, Inject, DestroyRef, Optional, Component, Input, TemplateRef, ChangeDetectorRef, ElementRef, ViewContainerRef, Renderer2, Directive, Pipe, NgModule, makeEnvironmentProviders, APP_INITIALIZER, assertInInjectionContext, runInInjectionContext, isSignal, computed } from '@angular/core';
3
- import { of, take, from, map, Subject, BehaviorSubject, forkJoin, retry, tap, catchError, shareReplay, switchMap, combineLatest, EMPTY } from 'rxjs';
3
+ import { of, from, map, Subject, BehaviorSubject, forkJoin, retry, tap, catchError, shareReplay, switchMap, combineLatest, EMPTY, take } from 'rxjs';
4
4
  import { takeUntilDestroyed, toObservable, toSignal } from '@angular/core/rxjs-interop';
5
+ import { isString, isDefined, isObject, isFunction, isNil, isEmpty, size, toCamelCase } from '@jsverse/utils';
5
6
 
6
7
  class DefaultLoader {
7
8
  translations;
@@ -12,138 +13,9 @@ class DefaultLoader {
12
13
  return of(this.translations.get(lang) || {});
13
14
  }
14
15
  }
15
- const TRANSLOCO_LOADER = new InjectionToken(typeof ngDevMode !== 'undefined' && ngDevMode ? 'TRANSLOCO_LOADER' : '');
16
+ const TRANSLOCO_LOADER = new InjectionToken(ngDevMode ? 'TRANSLOCO_LOADER' : '');
16
17
 
17
- function getValue(obj, path) {
18
- if (!obj) {
19
- return obj;
20
- }
21
- /* For cases where the key is like: 'general.something.thing' */
22
- if (Object.prototype.hasOwnProperty.call(obj, path)) {
23
- return obj[path];
24
- }
25
- return path.split('.').reduce((p, c) => p?.[c], obj);
26
- }
27
- function setValue(obj, prop, val) {
28
- obj = { ...obj };
29
- const split = prop.split('.');
30
- const lastIndex = split.length - 1;
31
- split.reduce((acc, part, index) => {
32
- if (index === lastIndex) {
33
- acc[part] = val;
34
- }
35
- else {
36
- acc[part] = Array.isArray(acc[part])
37
- ? acc[part].slice()
38
- : { ...acc[part] };
39
- }
40
- return acc && acc[part];
41
- }, obj);
42
- return obj;
43
- }
44
- function size(collection) {
45
- if (!collection) {
46
- return 0;
47
- }
48
- if (Array.isArray(collection)) {
49
- return collection.length;
50
- }
51
- if (isObject(collection)) {
52
- return Object.keys(collection).length;
53
- }
54
- return collection ? collection.length : 0;
55
- }
56
- function isEmpty(collection) {
57
- return size(collection) === 0;
58
- }
59
- function isFunction(val) {
60
- return typeof val === 'function';
61
- }
62
- function isString(val) {
63
- return typeof val === 'string';
64
- }
65
- function isNumber(val) {
66
- return typeof val === 'number';
67
- }
68
- function isObject(item) {
69
- return !!item && typeof item === 'object' && !Array.isArray(item);
70
- }
71
- function coerceArray(value) {
72
- return Array.isArray(value) ? value : [value];
73
- }
74
- /*
75
- * @example
76
- *
77
- * given: path-to-happiness => pathToHappiness
78
- * given: path_to_happiness => pathToHappiness
79
- * given: path-to_happiness => pathToHappiness
80
- *
81
- */
82
- function toCamelCase(str) {
83
- return str
84
- .replace(/(?:^\w|[A-Z]|\b\w)/g, (word, index) => index == 0 ? word.toLowerCase() : word.toUpperCase())
85
- .replace(/\s+|_|-|\//g, '');
86
- }
87
- function isBrowser() {
88
- return typeof window !== 'undefined';
89
- }
90
- function isNil(value) {
91
- return value === null || value === undefined;
92
- }
93
- function isDefined(value) {
94
- return isNil(value) === false;
95
- }
96
- function toNumber(value) {
97
- if (isNumber(value))
98
- return value;
99
- if (isString(value) && !isNaN(Number(value) - parseFloat(value))) {
100
- return Number(value);
101
- }
102
- return null;
103
- }
104
- function isScopeObject(item) {
105
- return item && typeof item.scope === 'string';
106
- }
107
- function hasInlineLoader(item) {
108
- return item && isObject(item.loader);
109
- }
110
- function flatten(obj) {
111
- const result = {};
112
- function recurse(curr, prop) {
113
- if (curr === null) {
114
- result[prop] = null;
115
- }
116
- else if (isObject(curr)) {
117
- for (const [key, value] of Object.entries(curr)) {
118
- recurse(value, prop ? `${prop}.${key}` : key);
119
- }
120
- }
121
- else {
122
- result[prop] = curr;
123
- }
124
- }
125
- recurse(obj, '');
126
- return result;
127
- }
128
- function unflatten(obj) {
129
- const result = {};
130
- for (const [key, value] of Object.entries(obj)) {
131
- const keys = key.split('.');
132
- let current = result;
133
- keys.forEach((key, i) => {
134
- if (i === keys.length - 1) {
135
- current[key] = value;
136
- }
137
- else {
138
- current[key] ??= {};
139
- current = current[key];
140
- }
141
- });
142
- }
143
- return result;
144
- }
145
-
146
- const TRANSLOCO_CONFIG = new InjectionToken(typeof ngDevMode !== 'undefined' && ngDevMode ? 'TRANSLOCO_CONFIG' : '', {
18
+ const TRANSLOCO_CONFIG = new InjectionToken(ngDevMode ? 'TRANSLOCO_CONFIG' : '', {
147
19
  providedIn: 'root',
148
20
  factory: () => defaultConfig,
149
21
  });
@@ -186,7 +58,35 @@ function translocoConfig(config = {}) {
186
58
  };
187
59
  }
188
60
 
189
- const TRANSLOCO_TRANSPILER = new InjectionToken(typeof ngDevMode !== 'undefined' && ngDevMode ? 'TRANSLOCO_TRANSPILER' : '');
61
+ function getValue(obj, path) {
62
+ if (!obj) {
63
+ return obj;
64
+ }
65
+ /* For cases where the key is like: 'general.something.thing' */
66
+ if (Object.prototype.hasOwnProperty.call(obj, path)) {
67
+ return obj[path];
68
+ }
69
+ return path.split('.').reduce((p, c) => p?.[c], obj);
70
+ }
71
+ function setValue(obj, prop, val) {
72
+ obj = { ...obj };
73
+ const split = prop.split('.');
74
+ const lastIndex = split.length - 1;
75
+ split.reduce((acc, part, index) => {
76
+ if (index === lastIndex) {
77
+ acc[part] = val;
78
+ }
79
+ else {
80
+ acc[part] = Array.isArray(acc[part])
81
+ ? acc[part].slice()
82
+ : { ...acc[part] };
83
+ }
84
+ return acc && acc[part];
85
+ }, obj);
86
+ return obj;
87
+ }
88
+
89
+ const TRANSLOCO_TRANSPILER = new InjectionToken(ngDevMode ? 'TRANSLOCO_TRANSPILER' : '');
190
90
  class DefaultTranspiler {
191
91
  config = inject(TRANSLOCO_CONFIG, { optional: true }) ?? defaultConfig;
192
92
  get interpolationMatcher() {
@@ -330,9 +230,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
330
230
  type: Injectable
331
231
  }] });
332
232
 
333
- const TRANSLOCO_MISSING_HANDLER = new InjectionToken(typeof ngDevMode !== 'undefined' && ngDevMode
334
- ? 'TRANSLOCO_MISSING_HANDLER'
335
- : '');
233
+ const TRANSLOCO_MISSING_HANDLER = new InjectionToken(ngDevMode ? 'TRANSLOCO_MISSING_HANDLER' : '');
336
234
  class DefaultMissingHandler {
337
235
  handle(key, config) {
338
236
  if (config.missingHandler.logMissingKey && !config.prodMode) {
@@ -348,7 +246,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
348
246
  type: Injectable
349
247
  }] });
350
248
 
351
- const TRANSLOCO_INTERCEPTOR = new InjectionToken(typeof ngDevMode !== 'undefined' && ngDevMode ? 'TRANSLOCO_INTERCEPTOR' : '');
249
+ const TRANSLOCO_INTERCEPTOR = new InjectionToken(ngDevMode ? 'TRANSLOCO_INTERCEPTOR' : '');
352
250
  class DefaultInterceptor {
353
251
  preSaveTranslation(translation) {
354
252
  return translation;
@@ -363,9 +261,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
363
261
  type: Injectable
364
262
  }] });
365
263
 
366
- const TRANSLOCO_FALLBACK_STRATEGY = new InjectionToken(typeof ngDevMode !== 'undefined' && ngDevMode
367
- ? 'TRANSLOCO_FALLBACK_STRATEGY'
368
- : '');
264
+ const TRANSLOCO_FALLBACK_STRATEGY = new InjectionToken(ngDevMode ? 'TRANSLOCO_FALLBACK_STRATEGY' : '');
369
265
  class DefaultFallbackStrategy {
370
266
  userConfig;
371
267
  constructor(userConfig) {
@@ -388,6 +284,65 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
388
284
  args: [TRANSLOCO_CONFIG]
389
285
  }] }] });
390
286
 
287
+ function resolveLoader(options) {
288
+ const { path, inlineLoader, mainLoader, data } = options;
289
+ if (inlineLoader) {
290
+ const pathLoader = inlineLoader[path];
291
+ if (isFunction(pathLoader) === false) {
292
+ throw `You're using an inline loader but didn't provide a loader for ${path}`;
293
+ }
294
+ return inlineLoader[path]().then((res) => res.default ? res.default : res);
295
+ }
296
+ return mainLoader.getTranslation(path, data);
297
+ }
298
+
299
+ function getFallbacksLoaders({ mainLoader, path, data, fallbackPath, inlineLoader, }) {
300
+ const paths = fallbackPath ? [path, fallbackPath] : [path];
301
+ return paths.map((path) => {
302
+ const loader = resolveLoader({ path, mainLoader, inlineLoader, data });
303
+ return from(loader).pipe(map((translation) => ({
304
+ translation,
305
+ lang: path,
306
+ })));
307
+ });
308
+ }
309
+
310
+ function flatten(obj) {
311
+ const result = {};
312
+ function recurse(curr, prop) {
313
+ if (curr === null) {
314
+ result[prop] = null;
315
+ }
316
+ else if (isObject(curr)) {
317
+ for (const [key, value] of Object.entries(curr)) {
318
+ recurse(value, prop ? `${prop}.${key}` : key);
319
+ }
320
+ }
321
+ else {
322
+ result[prop] = curr;
323
+ }
324
+ }
325
+ recurse(obj, '');
326
+ return result;
327
+ }
328
+ function unflatten(obj) {
329
+ const result = {};
330
+ for (const [key, value] of Object.entries(obj)) {
331
+ const keys = key.split('.');
332
+ let current = result;
333
+ keys.forEach((key, i) => {
334
+ if (i === keys.length - 1) {
335
+ current[key] = value;
336
+ }
337
+ else {
338
+ current[key] ??= {};
339
+ current = current[key];
340
+ }
341
+ });
342
+ }
343
+ return result;
344
+ }
345
+
391
346
  /*
392
347
  * @example
393
348
  *
@@ -414,39 +369,18 @@ function getLangFromScope(lang) {
414
369
  }
415
370
  return lang.split('/').pop();
416
371
  }
417
- /**
418
- * @example
419
- *
420
- * getPipeValue('todos|scoped', 'scoped') [true, 'todos']
421
- * getPipeValue('en|static', 'static') [true, 'en']
422
- * getPipeValue('en', 'static') [false, 'en']
423
- */
424
- function getPipeValue(str, value, char = '|') {
425
- if (isString(str)) {
426
- const splitted = str.split(char);
427
- const lastItem = splitted.pop();
428
- return lastItem === value ? [true, splitted.toString()] : [false, lastItem];
429
- }
430
- return [false, ''];
431
- }
432
- function shouldListenToLangChanges(service, lang) {
433
- const [hasStatic] = getPipeValue(lang, 'static');
434
- if (!hasStatic) {
435
- // If we didn't get 'lang|static' check if it's set in the global level
436
- return !!service.config.reRenderOnLangChange;
437
- }
438
- // We have 'lang|static' so don't listen to lang changes
439
- return false;
440
- }
441
- function listenOrNotOperator(listenToLangChange) {
442
- return listenToLangChange ? (source) => source : take(1);
443
- }
444
372
  function prependScope(inlineLoader, scope) {
445
373
  return Object.keys(inlineLoader).reduce((acc, lang) => {
446
374
  acc[`${scope}/${lang}`] = inlineLoader[lang];
447
375
  return acc;
448
376
  }, {});
449
377
  }
378
+ function isScopeObject(item) {
379
+ return typeof item?.scope === 'string';
380
+ }
381
+ function hasInlineLoader(item) {
382
+ return item?.loader && isObject(item.loader);
383
+ }
450
384
  function resolveInlineLoader(providerScope, scope) {
451
385
  return hasInlineLoader(providerScope)
452
386
  ? prependScope(providerScope.loader, scope)
@@ -459,29 +393,6 @@ function getEventPayload(lang) {
459
393
  };
460
394
  }
461
395
 
462
- function resolveLoader(options) {
463
- const { path, inlineLoader, mainLoader, data } = options;
464
- if (inlineLoader) {
465
- const pathLoader = inlineLoader[path];
466
- if (isFunction(pathLoader) === false) {
467
- throw `You're using an inline loader but didn't provide a loader for ${path}`;
468
- }
469
- return inlineLoader[path]().then((res) => res.default ? res.default : res);
470
- }
471
- return mainLoader.getTranslation(path, data);
472
- }
473
-
474
- function getFallbacksLoaders({ mainLoader, path, data, fallbackPath, inlineLoader, }) {
475
- const paths = fallbackPath ? [path, fallbackPath] : [path];
476
- return paths.map((path) => {
477
- const loader = resolveLoader({ path, mainLoader, inlineLoader, data });
478
- return from(loader).pipe(map((translation) => ({
479
- translation,
480
- lang: path,
481
- })));
482
- });
483
- }
484
-
485
396
  let service;
486
397
  function translate(key, params = {}, lang) {
487
398
  return service.translate(key, params, lang);
@@ -1093,13 +1004,40 @@ class TemplateHandler {
1093
1004
  }
1094
1005
  }
1095
1006
 
1096
- const TRANSLOCO_LANG = new InjectionToken(typeof ngDevMode !== 'undefined' && ngDevMode ? 'TRANSLOCO_LANG' : '');
1007
+ const TRANSLOCO_LANG = new InjectionToken(ngDevMode ? 'TRANSLOCO_LANG' : '');
1097
1008
 
1098
- const TRANSLOCO_LOADING_TEMPLATE = new InjectionToken(typeof ngDevMode !== 'undefined' && ngDevMode
1099
- ? 'TRANSLOCO_LOADING_TEMPLATE'
1100
- : '');
1009
+ const TRANSLOCO_LOADING_TEMPLATE = new InjectionToken(ngDevMode ? 'TRANSLOCO_LOADING_TEMPLATE' : '');
1101
1010
 
1102
- const TRANSLOCO_SCOPE = new InjectionToken(typeof ngDevMode !== 'undefined' && ngDevMode ? 'TRANSLOCO_SCOPE' : '');
1011
+ const TRANSLOCO_SCOPE = new InjectionToken(ngDevMode ? 'TRANSLOCO_SCOPE' : '');
1012
+
1013
+ /**
1014
+ * @example
1015
+ *
1016
+ * getPipeValue('todos|scoped', 'scoped') [true, 'todos']
1017
+ * getPipeValue('en|static', 'static') [true, 'en']
1018
+ * getPipeValue('en', 'static') [false, 'en']
1019
+ */
1020
+ function getPipeValue(str, value, char = '|') {
1021
+ if (isString(str)) {
1022
+ const splitted = str.split(char);
1023
+ const lastItem = splitted.pop();
1024
+ return lastItem === value ? [true, splitted.toString()] : [false, lastItem];
1025
+ }
1026
+ return [false, ''];
1027
+ }
1028
+
1029
+ function shouldListenToLangChanges(service, lang) {
1030
+ const [hasStatic] = getPipeValue(lang, 'static');
1031
+ if (!hasStatic) {
1032
+ // If we didn't get 'lang|static' check if it's set in the global level
1033
+ return !!service.config.reRenderOnLangChange;
1034
+ }
1035
+ // We have 'lang|static' so don't listen to lang changes
1036
+ return false;
1037
+ }
1038
+ function listenOrNotOperator(listenToLangChange) {
1039
+ return listenToLangChange ? (source) => source : take(1);
1040
+ }
1103
1041
 
1104
1042
  class LangResolver {
1105
1043
  initialized = false;
@@ -1587,33 +1525,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
1587
1525
  }]
1588
1526
  }] });
1589
1527
 
1590
- /**
1591
- * Returns the language code name from the browser, e.g. "en"
1592
- */
1593
- function getBrowserLang() {
1594
- let browserLang = getBrowserCultureLang();
1595
- if (!browserLang || !isBrowser()) {
1596
- return undefined;
1597
- }
1598
- if (browserLang.indexOf('-') !== -1) {
1599
- browserLang = browserLang.split('-')[0];
1600
- }
1601
- if (browserLang.indexOf('_') !== -1) {
1602
- browserLang = browserLang.split('_')[0];
1603
- }
1604
- return browserLang;
1605
- }
1606
- /**
1607
- * Returns the culture language code name from the browser, e.g. "en-US"
1608
- */
1609
- function getBrowserCultureLang() {
1610
- if (!isBrowser()) {
1611
- return '';
1612
- }
1613
- const navigator = window.navigator;
1614
- return navigator.languages?.[0] ?? navigator.language;
1615
- }
1616
-
1617
1528
  /**
1618
1529
  * Gets the translated value of a key as Signal
1619
1530
  *
@@ -1708,9 +1619,39 @@ function resolveScope(scope) {
1708
1619
  return scope;
1709
1620
  }
1710
1621
 
1622
+ function isBrowser() {
1623
+ return typeof window !== 'undefined';
1624
+ }
1625
+ /**
1626
+ * Returns the language code name from the browser, e.g. "en"
1627
+ */
1628
+ function getBrowserLang() {
1629
+ let browserLang = getBrowserCultureLang();
1630
+ if (!browserLang || !isBrowser()) {
1631
+ return undefined;
1632
+ }
1633
+ if (browserLang.indexOf('-') !== -1) {
1634
+ browserLang = browserLang.split('-')[0];
1635
+ }
1636
+ if (browserLang.indexOf('_') !== -1) {
1637
+ browserLang = browserLang.split('_')[0];
1638
+ }
1639
+ return browserLang;
1640
+ }
1641
+ /**
1642
+ * Returns the culture language code name from the browser, e.g. "en-US"
1643
+ */
1644
+ function getBrowserCultureLang() {
1645
+ if (!isBrowser()) {
1646
+ return '';
1647
+ }
1648
+ const navigator = window.navigator;
1649
+ return navigator.languages?.[0] ?? navigator.language;
1650
+ }
1651
+
1711
1652
  /**
1712
1653
  * Generated bundle index. Do not edit.
1713
1654
  */
1714
1655
 
1715
- export { DefaultFallbackStrategy, DefaultInterceptor, DefaultMissingHandler, DefaultTranspiler, FunctionalTranspiler, TRANSLOCO_CONFIG, TRANSLOCO_FALLBACK_STRATEGY, TRANSLOCO_INTERCEPTOR, TRANSLOCO_LANG, TRANSLOCO_LOADER, TRANSLOCO_LOADING_TEMPLATE, TRANSLOCO_MISSING_HANDLER, TRANSLOCO_SCOPE, TRANSLOCO_TRANSPILER, TestingLoader, TranslocoDirective, TranslocoModule, TranslocoPipe, TranslocoService, TranslocoTestingModule, coerceArray, defaultConfig, flatten, getBrowserCultureLang, getBrowserLang, getFunctionArgs, getLangFromScope, getPipeValue, getScopeFromLang, getValue, hasInlineLoader, isBrowser, isDefined, isEmpty, isFunction, isNil, isNumber, isObject, isScopeObject, isString, provideTransloco, provideTranslocoConfig, provideTranslocoFallbackStrategy, provideTranslocoInterceptor, provideTranslocoLang, provideTranslocoLoader, provideTranslocoLoadingTpl, provideTranslocoMissingHandler, provideTranslocoScope, provideTranslocoTranspiler, setValue, size, toCamelCase, toNumber, translate, translateObject, translateObjectSignal, translateSignal, translocoConfig, unflatten };
1656
+ export { DefaultFallbackStrategy, DefaultInterceptor, DefaultMissingHandler, DefaultTranspiler, FunctionalTranspiler, TRANSLOCO_CONFIG, TRANSLOCO_FALLBACK_STRATEGY, TRANSLOCO_INTERCEPTOR, TRANSLOCO_LANG, TRANSLOCO_LOADER, TRANSLOCO_LOADING_TEMPLATE, TRANSLOCO_MISSING_HANDLER, TRANSLOCO_SCOPE, TRANSLOCO_TRANSPILER, TestingLoader, TranslocoDirective, TranslocoModule, TranslocoPipe, TranslocoService, TranslocoTestingModule, defaultConfig, getBrowserCultureLang, getBrowserLang, getFunctionArgs, getValue, isBrowser, provideTransloco, provideTranslocoConfig, provideTranslocoFallbackStrategy, provideTranslocoInterceptor, provideTranslocoLang, provideTranslocoLoader, provideTranslocoLoadingTpl, provideTranslocoMissingHandler, provideTranslocoScope, provideTranslocoTranspiler, setValue, translate, translateObject, translateObjectSignal, translateSignal, translocoConfig };
1716
1657
  //# sourceMappingURL=jsverse-transloco.mjs.map