@jsverse/transloco 7.6.1 → 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 (207) hide show
  1. package/CHANGELOG.md +36 -3
  2. package/README.md +2 -0
  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-missing-handler.mjs +1 -1
  10. package/esm2022/lib/transloco-scope.mjs +1 -1
  11. package/esm2022/lib/transloco-testing.module.mjs +1 -1
  12. package/esm2022/lib/transloco.config.mjs +1 -1
  13. package/esm2022/lib/transloco.directive.mjs +3 -2
  14. package/esm2022/lib/transloco.interceptor.mjs +1 -1
  15. package/esm2022/lib/transloco.loader.mjs +1 -1
  16. package/esm2022/lib/transloco.pipe.mjs +4 -3
  17. package/esm2022/lib/transloco.providers.mjs +1 -1
  18. package/esm2022/lib/transloco.service.mjs +4 -3
  19. package/esm2022/lib/transloco.signal.mjs +1 -1
  20. package/esm2022/lib/transloco.transpiler.mjs +3 -2
  21. package/esm2022/lib/transloco.types.mjs +2 -0
  22. package/esm2022/lib/utils/browser.utils.mjs +30 -0
  23. package/esm2022/lib/utils/flat.utils.mjs +37 -0
  24. package/esm2022/lib/utils/lang.utils.mjs +15 -0
  25. package/esm2022/lib/utils/object.utils.mjs +28 -0
  26. package/esm2022/lib/utils/pipe.utils.mjs +17 -0
  27. package/esm2022/lib/utils/scope.utils.mjs +51 -0
  28. package/esm2022/lib/utils/type.utils.mjs +2 -0
  29. package/fesm2022/jsverse-transloco.mjs +155 -208
  30. package/fesm2022/jsverse-transloco.mjs.map +1 -1
  31. package/index.d.ts +3 -4
  32. package/lib/get-fallbacks-loaders.d.ts +1 -1
  33. package/lib/resolve-loader.d.ts +2 -2
  34. package/lib/scope-resolver.d.ts +2 -1
  35. package/lib/transloco-missing-handler.d.ts +1 -1
  36. package/lib/transloco-scope.d.ts +1 -1
  37. package/lib/transloco-testing.module.d.ts +2 -1
  38. package/lib/transloco.config.d.ts +1 -1
  39. package/lib/transloco.directive.d.ts +1 -1
  40. package/lib/transloco.interceptor.d.ts +1 -1
  41. package/lib/transloco.loader.d.ts +1 -1
  42. package/lib/transloco.pipe.d.ts +3 -1
  43. package/lib/transloco.providers.d.ts +1 -1
  44. package/lib/transloco.service.d.ts +2 -1
  45. package/lib/transloco.signal.d.ts +2 -1
  46. package/lib/transloco.transpiler.d.ts +2 -1
  47. package/lib/{types.d.ts → transloco.types.d.ts} +1 -2
  48. package/lib/{browser-lang.d.ts → utils/browser.utils.d.ts} +1 -0
  49. package/lib/utils/flat.utils.d.ts +3 -0
  50. package/lib/utils/lang.utils.d.ts +4 -0
  51. package/lib/utils/object.utils.d.ts +2 -0
  52. package/lib/utils/pipe.utils.d.ts +8 -0
  53. package/lib/utils/scope.utils.d.ts +7 -0
  54. package/lib/utils/type.utils.d.ts +1 -0
  55. package/package.json +15 -18
  56. package/schematics/collection.json +12 -0
  57. package/schematics/ng-add/generators/http-loader.gen.d.ts +5 -0
  58. package/schematics/{src/ng-add → ng-add}/generators/http-loader.gen.js +1 -0
  59. package/schematics/ng-add/generators/http-loader.gen.js.map +1 -0
  60. package/schematics/{src/ng-add → ng-add}/generators/root-module.gen.js +3 -3
  61. package/schematics/ng-add/generators/root-module.gen.js.map +1 -0
  62. package/schematics/{src/ng-migrate → ng-add}/index.d.ts +1 -1
  63. package/schematics/{src/ng-add → ng-add}/index.js +29 -19
  64. package/schematics/ng-add/index.js.map +1 -0
  65. package/schematics/ng-add/ng-add.spec.d.ts +1 -0
  66. package/schematics/ng-add/ng-add.spec.js +45 -0
  67. package/schematics/ng-add/ng-add.spec.js.map +1 -0
  68. package/schematics/{src/ng-add → ng-add}/schema.d.ts +0 -8
  69. package/schematics/ng-add/schema.js +9 -0
  70. package/schematics/ng-add/schema.js.map +1 -0
  71. package/schematics/{src/ng-add → ng-add}/schema.json +1 -1
  72. package/schematics-core/index.d.ts +9 -0
  73. package/schematics-core/index.js +36 -0
  74. package/schematics-core/index.js.map +1 -0
  75. package/schematics-core/testing/create-workspace.d.ts +11 -0
  76. package/schematics-core/testing/create-workspace.js +34 -0
  77. package/schematics-core/testing/create-workspace.js.map +1 -0
  78. package/schematics-core/testing/index.d.ts +2 -0
  79. package/schematics-core/testing/index.js +19 -0
  80. package/schematics-core/testing/index.js.map +1 -0
  81. package/schematics-core/testing/mocks.d.ts +14 -0
  82. package/schematics-core/testing/mocks.js +10 -0
  83. package/schematics-core/testing/mocks.js.map +1 -0
  84. package/{schematics/src/utils/array.js → schematics-core/utils/collections.js} +1 -1
  85. package/schematics-core/utils/collections.js.map +1 -0
  86. package/schematics-core/utils/file.d.ts +6 -0
  87. package/schematics-core/utils/file.js +21 -0
  88. package/schematics-core/utils/file.js.map +1 -0
  89. package/{schematics/src → schematics-core}/utils/find-module.js +2 -0
  90. package/schematics-core/utils/find-module.js.map +1 -0
  91. package/{schematics/src → schematics-core}/utils/package.d.ts +0 -3
  92. package/{schematics/src → schematics-core}/utils/package.js +2 -4
  93. package/schematics-core/utils/package.js.map +1 -0
  94. package/schematics-core/utils/schematic.d.ts +6 -0
  95. package/{schematics/src/schematics.utils.js → schematics-core/utils/schematic.js} +6 -6
  96. package/schematics-core/utils/schematic.js.map +1 -0
  97. package/schematics-core/utils/translation.d.ts +20 -0
  98. package/schematics-core/utils/translation.js +83 -0
  99. package/schematics-core/utils/translation.js.map +1 -0
  100. package/schematics-core/utils/transloco.d.ts +5 -0
  101. package/schematics-core/utils/transloco.js +31 -0
  102. package/schematics-core/utils/transloco.js.map +1 -0
  103. package/schematics-core/utils/workspace.d.ts +6 -0
  104. package/{schematics/src/utils/projects.js → schematics-core/utils/workspace.js} +1 -13
  105. package/schematics-core/utils/workspace.js.map +1 -0
  106. package/esm2022/lib/browser-lang.mjs +0 -28
  107. package/esm2022/lib/helpers.mjs +0 -129
  108. package/esm2022/lib/shared.mjs +0 -73
  109. package/esm2022/lib/types.mjs +0 -2
  110. package/lib/helpers.d.ts +0 -20
  111. package/lib/shared.d.ts +0 -17
  112. package/schematics/src/assets/i18n/en.json +0 -1
  113. package/schematics/src/collection.json +0 -59
  114. package/schematics/src/component/index.d.ts +0 -2
  115. package/schematics/src/component/index.js +0 -21
  116. package/schematics/src/component/index.js.map +0 -1
  117. package/schematics/src/join/index.d.ts +0 -3
  118. package/schematics/src/join/index.js +0 -79
  119. package/schematics/src/join/index.js.map +0 -1
  120. package/schematics/src/join/schema.d.ts +0 -28
  121. package/schematics/src/join/schema.js +0 -3
  122. package/schematics/src/join/schema.js.map +0 -1
  123. package/schematics/src/join/schema.json +0 -43
  124. package/schematics/src/keys-manager/index.d.ts +0 -5
  125. package/schematics/src/keys-manager/index.js +0 -96
  126. package/schematics/src/keys-manager/index.js.map +0 -1
  127. package/schematics/src/keys-manager/schema.d.ts +0 -19
  128. package/schematics/src/keys-manager/schema.js +0 -3
  129. package/schematics/src/keys-manager/schema.js.map +0 -1
  130. package/schematics/src/keys-manager/schema.json +0 -33
  131. package/schematics/src/migrate/index.d.ts +0 -3
  132. package/schematics/src/migrate/index.js +0 -21
  133. package/schematics/src/migrate/index.js.map +0 -1
  134. package/schematics/src/migrate/ngx-translate-migration.d.ts +0 -3
  135. package/schematics/src/migrate/ngx-translate-migration.js +0 -175
  136. package/schematics/src/migrate/ngx-translate-migration.js.map +0 -1
  137. package/schematics/src/migrate/schema.d.ts +0 -10
  138. package/schematics/src/migrate/schema.js +0 -3
  139. package/schematics/src/migrate/schema.js.map +0 -1
  140. package/schematics/src/migrate/schema.json +0 -23
  141. package/schematics/src/ng-add/generators/http-loader.gen.d.ts +0 -4
  142. package/schematics/src/ng-add/generators/http-loader.gen.js.map +0 -1
  143. package/schematics/src/ng-add/generators/root-module.gen.js.map +0 -1
  144. package/schematics/src/ng-add/generators/translation-files.gen.d.ts +0 -4
  145. package/schematics/src/ng-add/generators/translation-files.gen.js +0 -22
  146. package/schematics/src/ng-add/generators/translation-files.gen.js.map +0 -1
  147. package/schematics/src/ng-add/index.d.ts +0 -3
  148. package/schematics/src/ng-add/index.js.map +0 -1
  149. package/schematics/src/ng-add/schema.js +0 -14
  150. package/schematics/src/ng-add/schema.js.map +0 -1
  151. package/schematics/src/ng-migrate/index.js +0 -14
  152. package/schematics/src/ng-migrate/index.js.map +0 -1
  153. package/schematics/src/ng-migrate/ng-migrate.d.ts +0 -5
  154. package/schematics/src/ng-migrate/ng-migrate.js +0 -105
  155. package/schematics/src/ng-migrate/ng-migrate.js.map +0 -1
  156. package/schematics/src/ng-migrate/schema.d.ts +0 -14
  157. package/schematics/src/ng-migrate/schema.js +0 -3
  158. package/schematics/src/ng-migrate/schema.js.map +0 -1
  159. package/schematics/src/ng-migrate/schema.json +0 -27
  160. package/schematics/src/schematics.utils.d.ts +0 -6
  161. package/schematics/src/schematics.utils.js.map +0 -1
  162. package/schematics/src/scope/index.d.ts +0 -3
  163. package/schematics/src/scope/index.js +0 -101
  164. package/schematics/src/scope/index.js.map +0 -1
  165. package/schematics/src/scope/schema.d.ts +0 -28
  166. package/schematics/src/scope/schema.js +0 -3
  167. package/schematics/src/scope/schema.js.map +0 -1
  168. package/schematics/src/scope/schema.json +0 -84
  169. package/schematics/src/split/index.d.ts +0 -3
  170. package/schematics/src/split/index.js +0 -66
  171. package/schematics/src/split/index.js.map +0 -1
  172. package/schematics/src/split/schema.d.ts +0 -20
  173. package/schematics/src/split/schema.js +0 -3
  174. package/schematics/src/split/schema.js.map +0 -1
  175. package/schematics/src/split/schema.json +0 -35
  176. package/schematics/src/types.d.ts +0 -5
  177. package/schematics/src/types.js +0 -10
  178. package/schematics/src/types.js.map +0 -1
  179. package/schematics/src/upgrade/index.d.ts +0 -3
  180. package/schematics/src/upgrade/index.js +0 -19
  181. package/schematics/src/upgrade/index.js.map +0 -1
  182. package/schematics/src/upgrade/schema.d.ts +0 -6
  183. package/schematics/src/upgrade/schema.js +0 -3
  184. package/schematics/src/upgrade/schema.js.map +0 -1
  185. package/schematics/src/upgrade/schema.json +0 -16
  186. package/schematics/src/upgrade/v2.d.ts +0 -1
  187. package/schematics/src/upgrade/v2.js +0 -88
  188. package/schematics/src/upgrade/v2.js.map +0 -1
  189. package/schematics/src/utils/array.js.map +0 -1
  190. package/schematics/src/utils/config.d.ts +0 -2
  191. package/schematics/src/utils/config.js +0 -12
  192. package/schematics/src/utils/config.js.map +0 -1
  193. package/schematics/src/utils/find-module.js.map +0 -1
  194. package/schematics/src/utils/package.js.map +0 -1
  195. package/schematics/src/utils/projects.d.ts +0 -8
  196. package/schematics/src/utils/projects.js.map +0 -1
  197. package/schematics/src/utils/translations.d.ts +0 -7
  198. package/schematics/src/utils/translations.js +0 -30
  199. package/schematics/src/utils/translations.js.map +0 -1
  200. package/schematics/src/utils/transloco.d.ts +0 -24
  201. package/schematics/src/utils/transloco.js +0 -88
  202. package/schematics/src/utils/transloco.js.map +0 -1
  203. /package/schematics/{src/ng-add → ng-add}/files/transloco-loader/transloco-loader.__ts__ +0 -0
  204. /package/schematics/{src/ng-add → ng-add}/files/transloco-module/transloco-root.module.__ts__ +0 -0
  205. /package/schematics/{src/ng-add → ng-add}/generators/root-module.gen.d.ts +0 -0
  206. /package/{schematics/src/utils/array.d.ts → schematics-core/utils/collections.d.ts} +0 -0
  207. /package/{schematics/src → schematics-core}/utils/find-module.d.ts +0 -0
@@ -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;
@@ -14,135 +15,6 @@ class DefaultLoader {
14
15
  }
15
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
18
  const TRANSLOCO_CONFIG = new InjectionToken(ngDevMode ? 'TRANSLOCO_CONFIG' : '', {
147
19
  providedIn: 'root',
148
20
  factory: () => defaultConfig,
@@ -186,6 +58,34 @@ function translocoConfig(config = {}) {
186
58
  };
187
59
  }
188
60
 
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
+
189
89
  const TRANSLOCO_TRANSPILER = new InjectionToken(ngDevMode ? 'TRANSLOCO_TRANSPILER' : '');
190
90
  class DefaultTranspiler {
191
91
  config = inject(TRANSLOCO_CONFIG, { optional: true }) ?? defaultConfig;
@@ -384,6 +284,65 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
384
284
  args: [TRANSLOCO_CONFIG]
385
285
  }] }] });
386
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
+
387
346
  /*
388
347
  * @example
389
348
  *
@@ -410,39 +369,18 @@ function getLangFromScope(lang) {
410
369
  }
411
370
  return lang.split('/').pop();
412
371
  }
413
- /**
414
- * @example
415
- *
416
- * getPipeValue('todos|scoped', 'scoped') [true, 'todos']
417
- * getPipeValue('en|static', 'static') [true, 'en']
418
- * getPipeValue('en', 'static') [false, 'en']
419
- */
420
- function getPipeValue(str, value, char = '|') {
421
- if (isString(str)) {
422
- const splitted = str.split(char);
423
- const lastItem = splitted.pop();
424
- return lastItem === value ? [true, splitted.toString()] : [false, lastItem];
425
- }
426
- return [false, ''];
427
- }
428
- function shouldListenToLangChanges(service, lang) {
429
- const [hasStatic] = getPipeValue(lang, 'static');
430
- if (!hasStatic) {
431
- // If we didn't get 'lang|static' check if it's set in the global level
432
- return !!service.config.reRenderOnLangChange;
433
- }
434
- // We have 'lang|static' so don't listen to lang changes
435
- return false;
436
- }
437
- function listenOrNotOperator(listenToLangChange) {
438
- return listenToLangChange ? (source) => source : take(1);
439
- }
440
372
  function prependScope(inlineLoader, scope) {
441
373
  return Object.keys(inlineLoader).reduce((acc, lang) => {
442
374
  acc[`${scope}/${lang}`] = inlineLoader[lang];
443
375
  return acc;
444
376
  }, {});
445
377
  }
378
+ function isScopeObject(item) {
379
+ return typeof item?.scope === 'string';
380
+ }
381
+ function hasInlineLoader(item) {
382
+ return item?.loader && isObject(item.loader);
383
+ }
446
384
  function resolveInlineLoader(providerScope, scope) {
447
385
  return hasInlineLoader(providerScope)
448
386
  ? prependScope(providerScope.loader, scope)
@@ -455,29 +393,6 @@ function getEventPayload(lang) {
455
393
  };
456
394
  }
457
395
 
458
- function resolveLoader(options) {
459
- const { path, inlineLoader, mainLoader, data } = options;
460
- if (inlineLoader) {
461
- const pathLoader = inlineLoader[path];
462
- if (isFunction(pathLoader) === false) {
463
- throw `You're using an inline loader but didn't provide a loader for ${path}`;
464
- }
465
- return inlineLoader[path]().then((res) => res.default ? res.default : res);
466
- }
467
- return mainLoader.getTranslation(path, data);
468
- }
469
-
470
- function getFallbacksLoaders({ mainLoader, path, data, fallbackPath, inlineLoader, }) {
471
- const paths = fallbackPath ? [path, fallbackPath] : [path];
472
- return paths.map((path) => {
473
- const loader = resolveLoader({ path, mainLoader, inlineLoader, data });
474
- return from(loader).pipe(map((translation) => ({
475
- translation,
476
- lang: path,
477
- })));
478
- });
479
- }
480
-
481
396
  let service;
482
397
  function translate(key, params = {}, lang) {
483
398
  return service.translate(key, params, lang);
@@ -1095,6 +1010,35 @@ const TRANSLOCO_LOADING_TEMPLATE = new InjectionToken(ngDevMode ? 'TRANSLOCO_LOA
1095
1010
 
1096
1011
  const TRANSLOCO_SCOPE = new InjectionToken(ngDevMode ? 'TRANSLOCO_SCOPE' : '');
1097
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
+ }
1041
+
1098
1042
  class LangResolver {
1099
1043
  initialized = false;
1100
1044
  // inline => provider => active
@@ -1581,33 +1525,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
1581
1525
  }]
1582
1526
  }] });
1583
1527
 
1584
- /**
1585
- * Returns the language code name from the browser, e.g. "en"
1586
- */
1587
- function getBrowserLang() {
1588
- let browserLang = getBrowserCultureLang();
1589
- if (!browserLang || !isBrowser()) {
1590
- return undefined;
1591
- }
1592
- if (browserLang.indexOf('-') !== -1) {
1593
- browserLang = browserLang.split('-')[0];
1594
- }
1595
- if (browserLang.indexOf('_') !== -1) {
1596
- browserLang = browserLang.split('_')[0];
1597
- }
1598
- return browserLang;
1599
- }
1600
- /**
1601
- * Returns the culture language code name from the browser, e.g. "en-US"
1602
- */
1603
- function getBrowserCultureLang() {
1604
- if (!isBrowser()) {
1605
- return '';
1606
- }
1607
- const navigator = window.navigator;
1608
- return navigator.languages?.[0] ?? navigator.language;
1609
- }
1610
-
1611
1528
  /**
1612
1529
  * Gets the translated value of a key as Signal
1613
1530
  *
@@ -1702,9 +1619,39 @@ function resolveScope(scope) {
1702
1619
  return scope;
1703
1620
  }
1704
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
+
1705
1652
  /**
1706
1653
  * Generated bundle index. Do not edit.
1707
1654
  */
1708
1655
 
1709
- 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 };
1710
1657
  //# sourceMappingURL=jsverse-transloco.mjs.map