@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,11 @@
1
+ import { SchematicTestRunner } from '@angular-devkit/schematics/testing';
2
+ import type { Schema as WorkspaceSchema } from '@schematics/angular/workspace/schema';
3
+ import { Schema as ApplicationSchema } from '@schematics/angular/application/schema';
4
+ import type { Schema as LibrarySchema } from '@schematics/angular/library/schema';
5
+ export declare const defaultWorkspaceOptions: WorkspaceSchema;
6
+ export declare const defaultAppOptions: ApplicationSchema;
7
+ export declare function createWorkspace(schematicRunner: SchematicTestRunner, options?: {
8
+ workspaceOptions?: Partial<WorkspaceSchema>;
9
+ appOptions?: Partial<ApplicationSchema>;
10
+ libOptions?: Partial<LibrarySchema>;
11
+ }): Promise<import("@angular-devkit/schematics/testing").UnitTestTree>;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defaultAppOptions = exports.defaultWorkspaceOptions = void 0;
4
+ exports.createWorkspace = createWorkspace;
5
+ const schema_1 = require("@schematics/angular/application/schema");
6
+ exports.defaultWorkspaceOptions = {
7
+ name: 'workspace',
8
+ newProjectRoot: 'projects',
9
+ version: '16.0.4',
10
+ minimal: true,
11
+ };
12
+ exports.defaultAppOptions = {
13
+ name: 'bar',
14
+ inlineStyle: false,
15
+ inlineTemplate: false,
16
+ viewEncapsulation: schema_1.ViewEncapsulation.Emulated,
17
+ routing: false,
18
+ style: schema_1.Style.Css,
19
+ skipTests: false,
20
+ };
21
+ const defaultLibOptions = {
22
+ name: 'baz',
23
+ };
24
+ function createWorkspace(schematicRunner, options = {}) {
25
+ const appOptions = Object.assign(Object.assign({}, exports.defaultAppOptions), options.appOptions);
26
+ const workspaceOptions = Object.assign(Object.assign({}, exports.defaultWorkspaceOptions), options.workspaceOptions);
27
+ const libOptions = Object.assign(Object.assign({}, defaultLibOptions), options.libOptions);
28
+ const angularSchematic = '@schematics/angular';
29
+ return schematicRunner
30
+ .runExternalSchematic(angularSchematic, 'workspace', workspaceOptions)
31
+ .then((tree) => schematicRunner.runExternalSchematic(angularSchematic, 'application', appOptions, tree))
32
+ .then((tree) => schematicRunner.runExternalSchematic(angularSchematic, 'library', libOptions, tree));
33
+ }
34
+ //# sourceMappingURL=create-workspace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-workspace.js","sourceRoot":"","sources":["../../../../../libs/transloco/schematics-core/testing/create-workspace.ts"],"names":[],"mappings":";;;AA8BA,0CAkCC;AA9DD,mEAIgD;AAGnC,QAAA,uBAAuB,GAAoB;IACtD,IAAI,EAAE,WAAW;IACjB,cAAc,EAAE,UAAU;IAC1B,OAAO,EAAE,QAAQ;IACjB,OAAO,EAAE,IAAI;CACd,CAAC;AAEW,QAAA,iBAAiB,GAAsB;IAClD,IAAI,EAAE,KAAK;IACX,WAAW,EAAE,KAAK;IAClB,cAAc,EAAE,KAAK;IACrB,iBAAiB,EAAE,0BAAiB,CAAC,QAAQ;IAC7C,OAAO,EAAE,KAAK;IACd,KAAK,EAAE,cAAK,CAAC,GAAG;IAChB,SAAS,EAAE,KAAK;CACjB,CAAC;AAEF,MAAM,iBAAiB,GAAG;IACxB,IAAI,EAAE,KAAK;CACZ,CAAC;AAEF,SAAgB,eAAe,CAC7B,eAAoC,EACpC,UAII,EAAE;IAEN,MAAM,UAAU,mCAAQ,yBAAiB,GAAK,OAAO,CAAC,UAAU,CAAE,CAAC;IACnE,MAAM,gBAAgB,mCACjB,+BAAuB,GACvB,OAAO,CAAC,gBAAgB,CAC5B,CAAC;IACF,MAAM,UAAU,mCAAQ,iBAAiB,GAAK,OAAO,CAAC,UAAU,CAAE,CAAC;IACnE,MAAM,gBAAgB,GAAG,qBAAqB,CAAC;IAE/C,OAAO,eAAe;SACnB,oBAAoB,CAAC,gBAAgB,EAAE,WAAW,EAAE,gBAAgB,CAAC;SACrE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CACb,eAAe,CAAC,oBAAoB,CAClC,gBAAgB,EAChB,aAAa,EACb,UAAU,EACV,IAAI,CACL,CACF;SACA,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CACb,eAAe,CAAC,oBAAoB,CAClC,gBAAgB,EAChB,SAAS,EACT,UAAU,EACV,IAAI,CACL,CACF,CAAC;AACN,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './create-workspace';
2
+ export * from './mocks';
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./create-workspace"), exports);
18
+ __exportStar(require("./mocks"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../libs/transloco/schematics-core/testing/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,0CAAwB"}
@@ -0,0 +1,14 @@
1
+ export declare const translationMocks: {
2
+ en: {
3
+ hello: string;
4
+ };
5
+ es: {
6
+ hello: string;
7
+ };
8
+ scopeEn: {
9
+ hello: string;
10
+ };
11
+ scopeEs: {
12
+ hello: string;
13
+ };
14
+ };
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.translationMocks = void 0;
4
+ exports.translationMocks = {
5
+ en: { hello: 'hello' },
6
+ es: { hello: 'hola' },
7
+ scopeEn: { hello: 'hello scope' },
8
+ scopeEs: { hello: 'hola scope' },
9
+ };
10
+ //# sourceMappingURL=mocks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mocks.js","sourceRoot":"","sources":["../../../../../libs/transloco/schematics-core/testing/mocks.ts"],"names":[],"mappings":";;;AAAa,QAAA,gBAAgB,GAAG;IAC9B,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE;IACtB,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;IACrB,OAAO,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE;IACjC,OAAO,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE;CACjC,CAAC"}
@@ -8,4 +8,4 @@ function stringifyList(list, separator = ', ') {
8
8
  function coerceArray(value) {
9
9
  return Array.isArray(value) ? value : [value];
10
10
  }
11
- //# sourceMappingURL=array.js.map
11
+ //# sourceMappingURL=collections.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collections.js","sourceRoot":"","sources":["../../../../../libs/transloco/schematics-core/utils/collections.ts"],"names":[],"mappings":";;AAAA,sCAEC;AAID,kCAEC;AARD,SAAgB,aAAa,CAAI,IAAS,EAAE,SAAS,GAAG,IAAI;IAC1D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACzD,CAAC;AAID,SAAgB,WAAW,CAAI,KAAc;IAC3C,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAChD,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { PathFragment } from '@angular-devkit/core';
2
+ import { DirEntry, Tree } from '@angular-devkit/schematics';
3
+ export declare function getJsonFileContent(fileName: PathFragment, dir: DirEntry): any;
4
+ export declare function writeToJson(host: Tree, dirPath: string, fileName: PathFragment, content: unknown): void;
5
+ export declare function hasSubdirs(dir: DirEntry): boolean;
6
+ export declare function hasFiles(dir: DirEntry): boolean;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getJsonFileContent = getJsonFileContent;
4
+ exports.writeToJson = writeToJson;
5
+ exports.hasSubdirs = hasSubdirs;
6
+ exports.hasFiles = hasFiles;
7
+ const nodePath = require("node:path");
8
+ function getJsonFileContent(fileName, dir) {
9
+ const content = dir.file(fileName).content.toString('utf-8');
10
+ return JSON.parse(content);
11
+ }
12
+ function writeToJson(host, dirPath, fileName, content) {
13
+ return host.overwrite(nodePath.join(dirPath, fileName), JSON.stringify(content, null, 2));
14
+ }
15
+ function hasSubdirs(dir) {
16
+ return dir.subdirs && dir.subdirs.length > 0;
17
+ }
18
+ function hasFiles(dir) {
19
+ return dir.subfiles && dir.subfiles.length > 0;
20
+ }
21
+ //# sourceMappingURL=file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file.js","sourceRoot":"","sources":["../../../../../libs/transloco/schematics-core/utils/file.ts"],"names":[],"mappings":";;AAKA,gDAIC;AAED,kCAUC;AAED,gCAEC;AAED,4BAEC;AA7BD,sCAAsC;AAKtC,SAAgB,kBAAkB,CAAC,QAAsB,EAAE,GAAa;IACtE,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAE9D,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC;AAED,SAAgB,WAAW,CACzB,IAAU,EACV,OAAe,EACf,QAAsB,EACtB,OAAgB;IAEhB,OAAO,IAAI,CAAC,SAAS,CACnB,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,EAChC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CACjC,CAAC;AACJ,CAAC;AAED,SAAgB,UAAU,CAAC,GAAa;IACtC,OAAO,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;AAC/C,CAAC;AAED,SAAgB,QAAQ,CAAC,GAAa;IACpC,OAAO,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;AACjD,CAAC"}
@@ -4,6 +4,8 @@ exports.ROUTING_MODULE_EXT = exports.MODULE_EXT = void 0;
4
4
  exports.findRootModule = findRootModule;
5
5
  exports.findModuleFromOptions = findModuleFromOptions;
6
6
  exports.findModule = findModule;
7
+ /* eslint-disable */
8
+ // @ts-nocheck
7
9
  /**
8
10
  * @license
9
11
  * Copyright Google Inc. All Rights Reserved.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"find-module.js","sourceRoot":"","sources":["../../../../../libs/transloco/schematics-core/utils/find-module.ts"],"names":[],"mappings":";;;AAwBA,wCAwBC;AAKD,sDAyDC;AAKD,gCAsCC;AAzJD,oBAAoB;AACpB,cAAc;AACd;;;;;;GAMG;AACH,+CAM8B;AAGjB,QAAA,UAAU,GAAG,YAAY,CAAC;AAC1B,QAAA,kBAAkB,GAAG,oBAAoB,CAAC;AAEvD;;GAEG;AACH,SAAgB,cAAc,CAC5B,IAAU,EACV,MAAc,EACd,QAAQ,GAAG,EAAE,EACb,UAAU,GAAG,KAAK;IAElB,IAAI,UAAU,IAAI,CAAC,MAAM,EAAE,CAAC;QAC1B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,UAAU,GAAG,IAAA,gBAAS,EAAC,GAAG,QAAQ,IAAI,MAAM,EAAE,CAAC,CAAC;IACtD,MAAM,WAAW,GAAG;QAClB,EAAE;QACF,KAAK;QACL,kBAAU;QACV,IAAI,MAAM,GAAG,kBAAU,EAAE;QACzB,IAAI,MAAM,KAAK;KAChB,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC;IAE/C,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,IAAA,gBAAS,EAAC,UAAU,GAAG,WAAW,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,yBAAyB,UAAU,iBAAiB,CAAC,CAAC;AACxE,CAAC;AAED;;GAEG;AACH,SAAgB,qBAAqB,CACnC,IAAU,EACV,OAAO,EACP,WAAW;IAEX,IACE,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC;QAC3D,OAAO,CAAC,UAAU,EAClB,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,kBAAU,CAAC;IAClD,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,0BAAkB,CAAC;IAExE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,WAAW,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,GAAG,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;QAC7D,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC;QAC1E,OAAO,MAAM,CAAC,CAAC,CAAC,IAAA,gBAAS,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3C,CAAC;SAAM,CAAC;QACN,MAAM,UAAU,GAAG,IAAA,gBAAS,EAAC,IAAI,WAAW,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAClE,MAAM,aAAa,GAAG,IAAA,gBAAS,EAAC,IAAI,WAAW,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QACnE,MAAM,cAAc,GAAG,IAAA,gBAAS,EAAC,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QAE9D,MAAM,YAAY,GAAG,IAAI,GAAG,CAAO,CAAC,IAAA,gBAAS,EAAC,WAAW,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;QAEpE,KAAK,IAAI,GAAG,GAAG,UAAU,EAAE,GAAG,IAAI,qBAAc,EAAE,GAAG,GAAG,IAAA,cAAO,EAAC,GAAG,CAAC,EAAE,CAAC;YACrE,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;QACD,KAAK,IAAI,GAAG,GAAG,aAAa,EAAE,GAAG,IAAI,qBAAc,EAAE,GAAG,GAAG,IAAA,cAAO,EAAC,GAAG,CAAC,EAAE,CAAC;YACxE,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;QAED,MAAM,cAAc,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC,IAAI,CAC3C,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAC9B,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,cAAc,EAAE,CAAC;YAC/B,MAAM,cAAc,GAAG;gBACrB,EAAE;gBACF,GAAG,cAAc,KAAK;gBACtB,GAAG,cAAc,GAAG,SAAS,EAAE;aAChC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,WAAI,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAEzB,KAAK,MAAM,EAAE,IAAI,cAAc,EAAE,CAAC;gBAChC,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;oBACpB,OAAO,IAAA,gBAAS,EAAC,EAAE,CAAC,CAAC;gBACvB,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,qBAAqB,OAAO,CAAC,MAAM,qBAAqB;YACtD,6CAA6C,cAAc,CAAC,IAAI,CAC9D,QAAQ,CACT,EAAE,CACN,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,UAAU,CACxB,IAAU,EACV,WAAmB,EACnB,SAAS,GAAG,kBAAU,EACtB,gBAAgB,GAAG,0BAAkB;IAErC,IAAI,GAAG,GAAoB,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,WAAW,CAAC,CAAC;IAC1D,IAAI,kBAAkB,GAAG,KAAK,CAAC;IAE/B,OAAO,GAAG,EAAE,CAAC;QACX,MAAM,UAAU,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;QACrE,MAAM,eAAe,GAAG,UAAU,CAAC,MAAM,CACvC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CACrC,CAAC;QAEF,kBAAkB;YAChB,kBAAkB,IAAI,UAAU,CAAC,MAAM,KAAK,eAAe,CAAC,MAAM,CAAC;QAErE,IAAI,eAAe,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YAChC,OAAO,IAAA,WAAI,EAAC,GAAG,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5C,CAAC;aAAM,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC;YACZ,MAAM,IAAI,KAAK,CACb,yEAAyE;gBACvE,wCAAwC,CAC3C,CAAC;QACJ,CAAC;QAED,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC;IACnB,CAAC;IAED,MAAM,QAAQ,GAAG,kBAAkB;QACjC,CAAC,CAAC,wCAAwC;YACxC,0BAA0B,gBAAgB,sCAAsC;YAChF,6DAA6D;QAC/D,CAAC,CAAC,uFAAuF,CAAC;IAC5F,OAAO,IAAI,CAAC;IACZ,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC5B,CAAC"}
@@ -1,5 +1,2 @@
1
1
  import { Tree } from '@angular-devkit/schematics';
2
- /**
3
- * Adds a script to the package.json
4
- */
5
2
  export declare function addScriptToPackageJson(host: Tree, scriptName: string, script: string): Tree;
@@ -1,15 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.addScriptToPackageJson = addScriptToPackageJson;
4
- /**
5
- * Adds a script to the package.json
6
- */
7
4
  function addScriptToPackageJson(host, scriptName, script) {
5
+ var _a;
8
6
  const packageFile = host.read('package.json');
9
7
  if (packageFile !== null) {
10
8
  const sourceText = packageFile.toString('utf-8');
11
9
  const json = JSON.parse(sourceText);
12
- json['scripts'] ??= {};
10
+ (_a = json['scripts']) !== null && _a !== void 0 ? _a : (json['scripts'] = {});
13
11
  json['scripts'][scriptName] = script;
14
12
  host.overwrite('package.json', JSON.stringify(json, null, 2));
15
13
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package.js","sourceRoot":"","sources":["../../../../../libs/transloco/schematics-core/utils/package.ts"],"names":[],"mappings":";;AAEA,wDAgBC;AAhBD,SAAgB,sBAAsB,CACpC,IAAU,EACV,UAAkB,EAClB,MAAc;;IAEd,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC9C,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;QACzB,MAAM,UAAU,GAAG,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACpC,MAAA,IAAI,CAAC,SAAS,qCAAd,IAAI,CAAC,SAAS,IAAM,EAAE,EAAC;QACvB,IAAI,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC;QAErC,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { TranslocoGlobalConfig } from '@jsverse/transloco-utils';
2
+ export declare const NAMES: {
3
+ LIB_NAME: string;
4
+ CONFIG_FILE: string;
5
+ };
6
+ export declare function generateConfigFile(config: TranslocoGlobalConfig): string;
@@ -1,12 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CONFIG_FILE = exports.LIB_NAME = exports.NPM_SCOPE = exports.PROJECT_NAME = void 0;
3
+ exports.NAMES = void 0;
4
4
  exports.generateConfigFile = generateConfigFile;
5
5
  const node_util_1 = require("node:util");
6
- exports.PROJECT_NAME = 'transloco';
7
- exports.NPM_SCOPE = '@jsverse';
8
- exports.LIB_NAME = `${exports.NPM_SCOPE}/transloco`;
9
- exports.CONFIG_FILE = 'transloco.config.ts';
6
+ exports.NAMES = {
7
+ LIB_NAME: '@jsverse/transloco',
8
+ CONFIG_FILE: 'transloco.config.ts',
9
+ };
10
10
  function generateConfigFile(config) {
11
11
  return `import {TranslocoGlobalConfig} from '@jsverse/transloco-utils';
12
12
 
@@ -14,4 +14,4 @@ const config: TranslocoGlobalConfig = ${(0, node_util_1.inspect)(config)};
14
14
 
15
15
  export default config;`;
16
16
  }
17
- //# sourceMappingURL=schematics.utils.js.map
17
+ //# sourceMappingURL=schematic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schematic.js","sourceRoot":"","sources":["../../../../../libs/transloco/schematics-core/utils/schematic.ts"],"names":[],"mappings":";;;AASA,gDAMC;AAfD,yCAAoC;AAIvB,QAAA,KAAK,GAAG;IACnB,QAAQ,EAAE,oBAAoB;IAC9B,WAAW,EAAE,qBAAqB;CACnC,CAAC;AAEF,SAAgB,kBAAkB,CAAC,MAA6B;IAC9D,OAAO;;wCAE+B,IAAA,mBAAO,EAAC,MAAM,CAAC;;uBAEhC,CAAC;AACxB,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { Tree } from '@angular-devkit/schematics';
2
+ export declare function createTranslateFiles(langs: string[], path: string): import("@angular-devkit/schematics").Source;
3
+ export declare function checkIfTranslationFilesExist(path: string, langs: string[], extension: string, skipThrow?: boolean): boolean;
4
+ export declare function createTranslateFilesFromOptions(_: Tree, options: {
5
+ langs: string[];
6
+ translationFilePath: string;
7
+ }): import("@angular-devkit/schematics").Source;
8
+ export declare function getTranslationKey(prefix: string | undefined, key: string): string;
9
+ export declare function getTranslationsRoot(host: Tree, options: {
10
+ project?: string;
11
+ translationPath?: string;
12
+ }): string;
13
+ export declare function getTranslationFiles(host: Tree, root: string): {
14
+ lang: string;
15
+ translation: Record<string, unknown>;
16
+ }[];
17
+ export declare function getTranslationEntryPaths(host: Tree, rootDirPath: string): {
18
+ scope: string;
19
+ path: string;
20
+ }[];
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createTranslateFiles = createTranslateFiles;
4
+ exports.checkIfTranslationFilesExist = checkIfTranslationFilesExist;
5
+ exports.createTranslateFilesFromOptions = createTranslateFilesFromOptions;
6
+ exports.getTranslationKey = getTranslationKey;
7
+ exports.getTranslationsRoot = getTranslationsRoot;
8
+ exports.getTranslationFiles = getTranslationFiles;
9
+ exports.getTranslationEntryPaths = getTranslationEntryPaths;
10
+ const nodePath = require("node:path");
11
+ const fs = require("node:fs");
12
+ const schematics_1 = require("@angular-devkit/schematics");
13
+ const workspace_1 = require("./workspace");
14
+ const file_1 = require("./file");
15
+ const transloco_1 = require("./transloco");
16
+ function jsonTranslationFileCreator(source, lang) {
17
+ source.create(`${lang}.json`, `{}
18
+ `);
19
+ }
20
+ function createTranslateFiles(langs, path) {
21
+ const treeSource = new schematics_1.EmptyTree();
22
+ for (const lang of langs) {
23
+ jsonTranslationFileCreator(treeSource, lang);
24
+ }
25
+ return (0, schematics_1.apply)((0, schematics_1.source)(treeSource), [(0, schematics_1.move)('/', path)]);
26
+ }
27
+ function checkIfTranslationFilesExist(path, langs, extension, skipThrow) {
28
+ for (const lang of langs) {
29
+ const filePath = nodePath.resolve(`${path}/${lang}${extension}`);
30
+ if (fs.existsSync(filePath)) {
31
+ if (skipThrow) {
32
+ return true;
33
+ }
34
+ throw new schematics_1.SchematicsException(`Translation file ${filePath} is already exist, please use --skip-creation`);
35
+ }
36
+ }
37
+ return false;
38
+ }
39
+ function createTranslateFilesFromOptions(_, options) {
40
+ const extension = '.json';
41
+ checkIfTranslationFilesExist(options.translationFilePath, options.langs, extension);
42
+ return createTranslateFiles(options.langs, options.translationFilePath);
43
+ }
44
+ function getTranslationKey(prefix = '', key) {
45
+ return prefix ? `${prefix}.${key}` : key;
46
+ }
47
+ function getTranslationsRoot(host, options) {
48
+ const translocoConfig = (0, transloco_1.getGlobalConfig)();
49
+ if (options.translationPath) {
50
+ return options.translationPath;
51
+ }
52
+ else if (translocoConfig && translocoConfig.rootTranslationsPath) {
53
+ return translocoConfig.rootTranslationsPath;
54
+ }
55
+ else {
56
+ const project = (0, workspace_1.getProject)(host, options.project || '');
57
+ const rootPath = (project && project.sourceRoot) || 'src';
58
+ return nodePath.join(rootPath, 'assets', 'i18n');
59
+ }
60
+ }
61
+ function getTranslationFiles(host, root) {
62
+ const rootDir = host.getDir(root);
63
+ return rootDir.subfiles.map((fileName) => ({
64
+ lang: fileName.split('.')[0],
65
+ translation: (0, file_1.getJsonFileContent)(fileName, rootDir),
66
+ }));
67
+ }
68
+ function getTranslationEntryPaths(host, rootDirPath) {
69
+ const translocoConfig = (0, transloco_1.getGlobalConfig)();
70
+ if (translocoConfig.scopePathMap &&
71
+ Object.keys(translocoConfig.scopePathMap).length) {
72
+ return Object.entries(translocoConfig.scopePathMap).map(([scope, path]) => ({
73
+ scope,
74
+ path: path,
75
+ }));
76
+ }
77
+ const rootDir = host.getDir(rootDirPath);
78
+ return rootDir.subdirs.map((subDir) => ({
79
+ scope: subDir,
80
+ path: nodePath.join(rootDirPath, subDir),
81
+ }));
82
+ }
83
+ //# sourceMappingURL=translation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"translation.js","sourceRoot":"","sources":["../../../../../libs/transloco/schematics-core/utils/translation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { Tree } from '@angular-devkit/schematics';
2
+ import { TranslocoGlobalConfig } from '@jsverse/transloco-utils';
3
+ export declare function getGlobalConfig(): TranslocoGlobalConfig;
4
+ export declare function createGlobalConfig(host: Tree, langs: string[], rootTranslationsPath?: string): void;
5
+ export declare function updateGlobalConfig(host: Tree, config: TranslocoGlobalConfig): void;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getGlobalConfig = getGlobalConfig;
4
+ exports.createGlobalConfig = createGlobalConfig;
5
+ exports.updateGlobalConfig = updateGlobalConfig;
6
+ const transloco_utils_1 = require("@jsverse/transloco-utils");
7
+ const schematic_1 = require("./schematic");
8
+ let config;
9
+ function getGlobalConfig() {
10
+ if (config)
11
+ return config;
12
+ config = (0, transloco_utils_1.getGlobalConfig)();
13
+ return config;
14
+ }
15
+ function createGlobalConfig(host, langs, rootTranslationsPath = 'assets/i18n/') {
16
+ if (!host.get(schematic_1.NAMES.CONFIG_FILE)) {
17
+ host.create(schematic_1.NAMES.CONFIG_FILE, (0, schematic_1.generateConfigFile)({
18
+ rootTranslationsPath: rootTranslationsPath,
19
+ langs,
20
+ keysManager: {},
21
+ }));
22
+ }
23
+ }
24
+ function updateGlobalConfig(host, config) {
25
+ const originalConfig = getGlobalConfig();
26
+ if (!originalConfig || Object.keys(originalConfig).length === 0) {
27
+ return createGlobalConfig(host, config.langs || [], config.rootTranslationsPath);
28
+ }
29
+ host.overwrite(schematic_1.NAMES.CONFIG_FILE, (0, schematic_1.generateConfigFile)(Object.assign(Object.assign({}, config), originalConfig)));
30
+ }
31
+ //# sourceMappingURL=transloco.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transloco.js","sourceRoot":"","sources":["../../../../../libs/transloco/schematics-core/utils/transloco.ts"],"names":[],"mappings":";;AAUA,0CAKC;AAED,gDAeC;AAED,gDAaC;AA9CD,8DAGkC;AAElC,2CAAwD;AAExD,IAAI,MAA6B,CAAC;AAElC,SAAgB,eAAe;IAC7B,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1B,MAAM,GAAG,IAAA,iCAAgB,GAAE,CAAC;IAE5B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAgB,kBAAkB,CAChC,IAAU,EACV,KAAe,EACf,oBAAoB,GAAG,cAAc;IAErC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAK,CAAC,WAAW,CAAC,EAAE,CAAC;QACjC,IAAI,CAAC,MAAM,CACT,iBAAK,CAAC,WAAW,EACjB,IAAA,8BAAkB,EAAC;YACjB,oBAAoB,EAAE,oBAAoB;YAC1C,KAAK;YACL,WAAW,EAAE,EAAE;SAChB,CAAC,CACH,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAgB,kBAAkB,CAAC,IAAU,EAAE,MAA6B;IAC1E,MAAM,cAAc,GAAG,eAAe,EAAE,CAAC;IACzC,IAAI,CAAC,cAAc,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChE,OAAO,kBAAkB,CACvB,IAAI,EACJ,MAAM,CAAC,KAAK,IAAI,EAAE,EAClB,MAAM,CAAC,oBAAoB,CAC5B,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,SAAS,CACZ,iBAAK,CAAC,WAAW,EACjB,IAAA,8BAAkB,kCAAM,MAAM,GAAK,cAAc,EAAG,CACrD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { WorkspaceSchema } from '@schematics/angular/utility/workspace-models';
2
+ import { Tree } from '@angular-devkit/schematics';
3
+ export declare function getWorkspace(host: Tree): WorkspaceSchema;
4
+ export declare function setWorkspace(host: Tree, workspace: WorkspaceSchema): void;
5
+ export declare function getProject(host: Tree, project: string): import("@schematics/angular/utility/workspace-models").WorkspaceProject<import("@schematics/angular/utility/workspace-models").ProjectType>;
6
+ export declare function setEnvironments(host: Tree, sourceRoot: string, transformer: (env: string) => string): void;
@@ -1,11 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getWorkspacePath = getWorkspacePath;
4
3
  exports.getWorkspace = getWorkspace;
5
4
  exports.setWorkspace = setWorkspace;
6
5
  exports.getProject = getProject;
7
6
  exports.setEnvironments = setEnvironments;
8
- exports.getProjectPath = getProjectPath;
9
7
  const schematics_1 = require("@angular-devkit/schematics");
10
8
  function getWorkspacePath(host) {
11
9
  const possibleFiles = ['/angular.json', '/.angular.json'];
@@ -42,14 +40,4 @@ function setEnvironments(host, sourceRoot, transformer) {
42
40
  host.overwrite(filePath, transformer(source));
43
41
  });
44
42
  }
45
- function getProjectPath(host, project, options) {
46
- if (project.root.substr(-1) === '/') {
47
- project.root = project.root.substr(0, project.root.length - 1);
48
- }
49
- if (options.path === undefined) {
50
- const projectDirName = project.projectType === 'application' ? 'app' : 'lib';
51
- return `${project.root ? `/${project.root}` : ''}/src/${projectDirName}`;
52
- }
53
- return options.path;
54
- }
55
- //# sourceMappingURL=projects.js.map
43
+ //# sourceMappingURL=workspace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../../../../libs/transloco/schematics-core/utils/workspace.ts"],"names":[],"mappings":";;AAUA,oCASC;AAED,oCAIC;AAED,gCAOC;AAED,0CAcC;AAjDD,2DAAuE;AAEvE,SAAS,gBAAgB,CAAC,IAAU;IAClC,MAAM,aAAa,GAAG,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;IAC1D,MAAM,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAEjE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,YAAY,CAAC,IAAU;IACrC,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;QAC1B,MAAM,IAAI,gCAAmB,CAAC,mBAAmB,IAAI,GAAG,CAAC,CAAC;IAC5D,CAAC;IACD,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;IAEvC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC;AAED,SAAgB,YAAY,CAAC,IAAU,EAAE,SAA0B;IACjE,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAEpC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,SAAgB,UAAU,CAAC,IAAU,EAAE,OAAe;IACpD,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,IAAI,gCAAmB,CAAC,oCAAoC,CAAC,CAAC;AACtE,CAAC;AAED,SAAgB,eAAe,CAC7B,IAAU,EACV,UAAkB,EAClB,WAAoC;IAEpC,MAAM,IAAI,GAAG,UAAU,GAAG,eAAe,CAAC;IAC1C,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAEvC,OAAO,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAC5C,MAAM,QAAQ,GAAG,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC;QACnC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,YAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,28 +0,0 @@
1
- import { isBrowser } from './helpers';
2
- /**
3
- * Returns the language code name from the browser, e.g. "en"
4
- */
5
- export function getBrowserLang() {
6
- let browserLang = getBrowserCultureLang();
7
- if (!browserLang || !isBrowser()) {
8
- return undefined;
9
- }
10
- if (browserLang.indexOf('-') !== -1) {
11
- browserLang = browserLang.split('-')[0];
12
- }
13
- if (browserLang.indexOf('_') !== -1) {
14
- browserLang = browserLang.split('_')[0];
15
- }
16
- return browserLang;
17
- }
18
- /**
19
- * Returns the culture language code name from the browser, e.g. "en-US"
20
- */
21
- export function getBrowserCultureLang() {
22
- if (!isBrowser()) {
23
- return '';
24
- }
25
- const navigator = window.navigator;
26
- return navigator.languages?.[0] ?? navigator.language;
27
- }
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3Nlci1sYW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy90cmFuc2xvY28vc3JjL2xpYi9icm93c2VyLWxhbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUV0Qzs7R0FFRztBQUNILE1BQU0sVUFBVSxjQUFjO0lBQzVCLElBQUksV0FBVyxHQUFHLHFCQUFxQixFQUFFLENBQUM7SUFDMUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7UUFDakMsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELElBQUksV0FBVyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3BDLFdBQVcsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNwQyxXQUFXLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsT0FBTyxXQUFXLENBQUM7QUFDckIsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQjtJQUNuQyxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztRQUNqQixPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDO0lBRW5DLE9BQU8sU0FBUyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUM7QUFDeEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzQnJvd3NlciB9IGZyb20gJy4vaGVscGVycyc7XG5cbi8qKlxuICogUmV0dXJucyB0aGUgbGFuZ3VhZ2UgY29kZSBuYW1lIGZyb20gdGhlIGJyb3dzZXIsIGUuZy4gXCJlblwiXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRCcm93c2VyTGFuZygpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBsZXQgYnJvd3NlckxhbmcgPSBnZXRCcm93c2VyQ3VsdHVyZUxhbmcoKTtcbiAgaWYgKCFicm93c2VyTGFuZyB8fCAhaXNCcm93c2VyKCkpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgaWYgKGJyb3dzZXJMYW5nLmluZGV4T2YoJy0nKSAhPT0gLTEpIHtcbiAgICBicm93c2VyTGFuZyA9IGJyb3dzZXJMYW5nLnNwbGl0KCctJylbMF07XG4gIH1cblxuICBpZiAoYnJvd3NlckxhbmcuaW5kZXhPZignXycpICE9PSAtMSkge1xuICAgIGJyb3dzZXJMYW5nID0gYnJvd3Nlckxhbmcuc3BsaXQoJ18nKVswXTtcbiAgfVxuXG4gIHJldHVybiBicm93c2VyTGFuZztcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBjdWx0dXJlIGxhbmd1YWdlIGNvZGUgbmFtZSBmcm9tIHRoZSBicm93c2VyLCBlLmcuIFwiZW4tVVNcIlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QnJvd3NlckN1bHR1cmVMYW5nKCk6IHN0cmluZyB7XG4gIGlmICghaXNCcm93c2VyKCkpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBjb25zdCBuYXZpZ2F0b3IgPSB3aW5kb3cubmF2aWdhdG9yO1xuXG4gIHJldHVybiBuYXZpZ2F0b3IubGFuZ3VhZ2VzPy5bMF0gPz8gbmF2aWdhdG9yLmxhbmd1YWdlO1xufVxuIl19
@@ -1,129 +0,0 @@
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
- export function size(collection) {
29
- if (!collection) {
30
- return 0;
31
- }
32
- if (Array.isArray(collection)) {
33
- return collection.length;
34
- }
35
- if (isObject(collection)) {
36
- return Object.keys(collection).length;
37
- }
38
- return collection ? collection.length : 0;
39
- }
40
- export function isEmpty(collection) {
41
- return size(collection) === 0;
42
- }
43
- export function isFunction(val) {
44
- return typeof val === 'function';
45
- }
46
- export function isString(val) {
47
- return typeof val === 'string';
48
- }
49
- export function isNumber(val) {
50
- return typeof val === 'number';
51
- }
52
- export function isObject(item) {
53
- return !!item && typeof item === 'object' && !Array.isArray(item);
54
- }
55
- export function coerceArray(value) {
56
- return Array.isArray(value) ? value : [value];
57
- }
58
- /*
59
- * @example
60
- *
61
- * given: path-to-happiness => pathToHappiness
62
- * given: path_to_happiness => pathToHappiness
63
- * given: path-to_happiness => pathToHappiness
64
- *
65
- */
66
- export function toCamelCase(str) {
67
- return str
68
- .replace(/(?:^\w|[A-Z]|\b\w)/g, (word, index) => index == 0 ? word.toLowerCase() : word.toUpperCase())
69
- .replace(/\s+|_|-|\//g, '');
70
- }
71
- export function isBrowser() {
72
- return typeof window !== 'undefined';
73
- }
74
- export function isNil(value) {
75
- return value === null || value === undefined;
76
- }
77
- export function isDefined(value) {
78
- return isNil(value) === false;
79
- }
80
- export function toNumber(value) {
81
- if (isNumber(value))
82
- return value;
83
- if (isString(value) && !isNaN(Number(value) - parseFloat(value))) {
84
- return Number(value);
85
- }
86
- return null;
87
- }
88
- export function isScopeObject(item) {
89
- return item && typeof item.scope === 'string';
90
- }
91
- export function hasInlineLoader(item) {
92
- return item && isObject(item.loader);
93
- }
94
- export function flatten(obj) {
95
- const result = {};
96
- function recurse(curr, prop) {
97
- if (curr === null) {
98
- result[prop] = null;
99
- }
100
- else if (isObject(curr)) {
101
- for (const [key, value] of Object.entries(curr)) {
102
- recurse(value, prop ? `${prop}.${key}` : key);
103
- }
104
- }
105
- else {
106
- result[prop] = curr;
107
- }
108
- }
109
- recurse(obj, '');
110
- return result;
111
- }
112
- export function unflatten(obj) {
113
- const result = {};
114
- for (const [key, value] of Object.entries(obj)) {
115
- const keys = key.split('.');
116
- let current = result;
117
- keys.forEach((key, i) => {
118
- if (i === keys.length - 1) {
119
- current[key] = value;
120
- }
121
- else {
122
- current[key] ??= {};
123
- current = current[key];
124
- }
125
- });
126
- }
127
- return result;
128
- }
129
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvdHJhbnNsb2NvL3NyYy9saWIvaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLFVBQVUsUUFBUSxDQUFJLEdBQU0sRUFBRSxJQUFhO0lBQy9DLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNULE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELGdFQUFnRTtJQUNoRSxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNwRCxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQixDQUFDO0lBRUQsT0FBUSxJQUFlLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQVUsQ0FBQyxDQUFDO0FBQzFFLENBQUM7QUFFRCxNQUFNLFVBQVUsUUFBUSxDQUFDLEdBQVEsRUFBRSxJQUFZLEVBQUUsR0FBUTtJQUN2RCxHQUFHLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDO0lBRWpCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUIsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFFbkMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7UUFDaEMsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDeEIsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUNsQixDQUFDO2FBQU0sQ0FBQztZQUNOLEdBQUcsQ0FBQyxJ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RyxJQUFJLENBQUM7UUFDdEIsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2pCLE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRCxNQUFNLFVBQVUsU0FBUyxDQUFDLEdBQWdCO0lBQ3hDLE1BQU0sTUFBTSxHQUE0QixFQUFFLENBQUM7SUFFM0MsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMvQyxNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVCLElBQUksT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUVyQixJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzFCLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7WUFDdkIsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ3BCLE9BQU8sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUE0QixDQUFDO1lBQ3BELENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJvdmlkZXJTY29wZSwgVHJhbnNsYXRpb24gfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFZhbHVlPFQ+KG9iajogVCwgcGF0aDoga2V5b2YgVCkge1xuICBpZiAoIW9iaikge1xuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICAvKiBGb3IgY2FzZXMgd2hlcmUgdGhlIGtleSBpcyBsaWtlOiAnZ2VuZXJhbC5zb21ldGhpbmcudGhpbmcnICovXG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwYXRoKSkge1xuICAgIHJldHVybiBvYmpbcGF0aF07XG4gIH1cblxuICByZXR1cm4gKHBhdGggYXMgc3RyaW5nKS5zcGxpdCgnLicpLnJlZHVjZSgocCwgYykgPT4gcD8uW2NdLCBvYmogYXMgYW55KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldFZhbHVlKG9iajogYW55LCBwcm9wOiBzdHJpbmcsIHZhbDogYW55KSB7XG4gIG9iaiA9IHsgLi4ub2JqIH07XG5cbiAgY29uc3Qgc3BsaXQgPSBwcm9wLnNwbGl0KCcuJyk7XG4gIGNvbnN0IGxhc3RJbmRleCA9IHNwbGl0Lmxlbmd0aCAtIDE7XG5cbiAgc3BsaXQucmVkdWNlKChhY2MsIHBhcnQsIGluZGV4KSA9PiB7XG4gICAgaWYgKGluZGV4ID09PSBsYXN0SW5kZXgpIHtcbiAgICAgIGFjY1twYXJ0XSA9IHZhbDtcbiAgICB9IGVsc2Uge1xuICAgICAgYWNjW3BhcnRdID0gQXJyYXkuaXNBcnJheShhY2NbcGFydF0pXG4gICAgICAgID8gYWNjW3BhcnRdLnNsaWNlKClcbiAgICAgICAgOiB7IC4uLmFjY1twYXJ0XSB9O1xuICAgIH1cblxuICAgIHJldHVybiBhY2MgJiYgYWNjW3BhcnRdO1xuICB9LCBvYmopO1xuXG4gIHJldHVybiBvYmo7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzaXplKGNvbGxlY3Rpb246IGFueSk6IG51bWJlciB7XG4gIGlmICghY29sbGVjdGlvbikge1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkoY29sbGVjdGlvbikpIHtcbiAgICByZXR1cm4gY29sbGVjdGlvbi5sZW5ndGg7XG4gIH1cblxuICBpZiAoaXNPYmplY3QoY29sbGVjdGlvbikpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoY29sbGVjdGlvbikubGVuZ3RoO1xuICB9XG5cbiAgcmV0dXJuIGNvbGxlY3Rpb24gPyBjb2xsZWN0aW9uLmxlbmd0aCA6IDA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0VtcHR5KGNvbGxlY3Rpb246IGFueSk6IGJvb2xlYW4ge1xuICByZXR1cm4gc2l6ZShjb2xsZWN0aW9uKSA9PT0gMDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRnVuY3Rpb24odmFsOiB1bmtub3duKTogdmFsIGlzIENhbGxhYmxlRnVuY3Rpb24ge1xuICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU3RyaW5nKHZhbDogdW5rbm93bik6IHZhbCBpcyBzdHJpbmcge1xuICByZXR1cm4gdHlwZW9mIHZhbCA9PT0gJ3N0cmluZyc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc051bWJlcih2YWw6IHVua25vd24pOiB2YWwgaXMgbnVtYmVyIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICdudW1iZXInO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNPYmplY3QoaXRlbTogdW5rbm93bik6IGl0ZW0gaXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICByZXR1cm4gISFpdGVtICYmIHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShpdGVtKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvZXJjZUFycmF5PFQ+KHZhbHVlOiBUIHwgVFtdKTogVFtdO1xuZXhwb3J0IGZ1bmN0aW9uIGNvZXJjZUFycmF5PFQ+KHZhbHVlOiBUIHwgcmVhZG9ubHkgVFtdKTogcmVhZG9ubHkgVFtdO1xuZXhwb3J0IGZ1bmN0aW9uIGNvZXJjZUFycmF5PFQ+KHZhbHVlOiBUIHwgVFtdKTogVFtdIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdO1xufVxuXG4vKlxuICogQGV4YW1wbGVcbiAqXG4gKiBnaXZlbjogcGF0aC10by1oYXBwaW5lc3MgPT4gcGF0aFRvSGFwcGluZXNzXG4gKiBnaXZlbjogcGF0aF90b19oYXBwaW5lc3MgPT4gcGF0aFRvSGFwcGluZXNzXG4gKiBnaXZlbjogcGF0aC10b19oYXBwaW5lc3MgPT4gcGF0aFRvSGFwcGluZXNzXG4gKlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9DYW1lbENhc2Uoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gc3RyXG4gICAgLnJlcGxhY2UoLyg/Ol5cXHd8W0EtWl18XFxiXFx3KS9nLCAod29yZCwgaW5kZXgpID0+XG4gICAgICBpbmRleCA9PSAwID8gd29yZC50b0xvd2VyQ2FzZSgpIDogd29yZC50b1VwcGVyQ2FzZSgpLFxuICAgIClcbiAgICAucmVwbGFjZSgvXFxzK3xffC18XFwvL2csICcnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQnJvd3NlcigpIHtcbiAgcmV0dXJuIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOaWwodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBudWxsIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0RlZmluZWQodmFsdWU6IHVua25vd24pIHtcbiAgcmV0dXJuIGlzTmlsKHZhbHVlKSA9PT0gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b051bWJlcih2YWx1ZTogbnVtYmVyIHwgc3RyaW5nKTogbnVtYmVyIHwgbnVsbCB7XG4gIGlmIChpc051bWJlcih2YWx1ZSkpIHJldHVybiB2YWx1ZTtcblxuICBpZiAoaXNTdHJpbmcodmFsdWUpICYmICFpc05hTihOdW1iZXIodmFsdWUpIC0gcGFyc2VGbG9hdCh2YWx1ZSkpKSB7XG4gICAgcmV0dXJuIE51bWJlcih2YWx1ZSk7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU2NvcGVPYmplY3QoaXRlbTogYW55KTogaXRlbSBpcyBQcm92aWRlclNjb3BlIHtcbiAgcmV0dXJuIGl0ZW0gJiYgdHlwZW9mIGl0ZW0uc2NvcGUgPT09ICdzdHJpbmcnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFzSW5saW5lTG9hZGVyKGl0ZW06IGFueSk6IGl0ZW0gaXMgUHJvdmlkZXJTY29wZSB7XG4gIHJldHVybiBpdGVtICYmIGlzT2JqZWN0KGl0ZW0ubG9hZGVyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZsYXR0ZW4ob2JqOiBUcmFuc2xhdGlvbik6IFRyYW5zbGF0aW9uIHtcbiAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuXG4gIGZ1bmN0aW9uIHJlY3Vyc2UoY3VycjogdW5rbm93biwgcHJvcDogc3RyaW5nKSB7XG4gICAgaWYgKGN1cnIgPT09IG51bGwpIHtcbiAgICAgIHJlc3VsdFtwcm9wXSA9IG51bGw7XG4gICAgfSBlbHNlIGlmIChpc09iamVjdChjdXJyKSkge1xuICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoY3VycikpIHtcbiAgICAgICAgcmVjdXJzZSh2YWx1ZSwgcHJvcCA/IGAke3Byb3B9LiR7a2V5fWAgOiBrZXkpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHRbcHJvcF0gPSBjdXJyO1xuICAgIH1cbiAgfVxuXG4gIHJlY3Vyc2Uob2JqLCAnJyk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1bmZsYXR0ZW4ob2JqOiBUcmFuc2xhdGlvbik6IFRyYW5zbGF0aW9uIHtcbiAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuXG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG9iaikpIHtcbiAgICBjb25zdCBrZXlzID0ga2V5LnNwbGl0KCcuJyk7XG4gICAgbGV0IGN1cnJlbnQgPSByZXN1bHQ7XG5cbiAgICBrZXlzLmZvckVhY2goKGtleSwgaSkgPT4ge1xuICAgICAgaWYgKGkgPT09IGtleXMubGVuZ3RoIC0gMSkge1xuICAgICAgICBjdXJyZW50W2tleV0gPSB2YWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGN1cnJlbnRba2V5XSA/Pz0ge307XG4gICAgICAgIGN1cnJlbnQgPSBjdXJyZW50W2tleV0gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuIl19