@jsverse/transloco 8.0.2 → 8.1.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.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,20 @@
1
+ ## 8.1.0 (2025-10-11)
2
+
3
+
4
+ ### 🚀 Features
5
+
6
+ - **transloco:** 🎸 auto-detect public folder in ng-add ([#879](https://github.com/jsverse/transloco/pull/879))
7
+
8
+
9
+ ### 🩹 Fixes
10
+
11
+ - **transloco:** 🐛 expose TranslocoLoaderData ([7c5b19ad](https://github.com/jsverse/transloco/commit/7c5b19ad))
12
+
13
+
14
+ ### ❤️ Thank You
15
+
16
+ - Shahar Kazaz @shaharkazaz
17
+
1
18
  ## 8.0.2 (2025-09-26)
2
19
 
3
20
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jsverse/transloco",
3
- "version": "8.0.2",
3
+ "version": "8.1.0",
4
4
  "description": "The internationalization (i18n) library for Angular",
5
5
  "schematics": "./schematics/collection.json",
6
6
  "publishConfig": {
@@ -31,7 +31,7 @@
31
31
  "dependencies": {
32
32
  "tslib": "^2.2.0",
33
33
  "@jsverse/utils": "1.0.0-beta.5",
34
- "@jsverse/transloco-utils": "^8.0.2"
34
+ "@jsverse/transloco-utils": "^8.1.0"
35
35
  },
36
36
  "sideEffects": false,
37
37
  "module": "fesm2022/jsverse-transloco.mjs",
@@ -7,6 +7,6 @@ export class TranslocoHttpLoader implements TranslocoLoader {
7
7
  private http = inject(HttpClient);
8
8
 
9
9
  getTranslation(lang: string) {
10
- return this.http.get<Translation>(`<%= loaderPrefix %>/assets/i18n/${lang}.json`);
10
+ return this.http.get<Translation>(`<%= loaderPrefix %>/<%= urlPath %>${lang}.json`);
11
11
  }
12
12
  }
@@ -1,5 +1,6 @@
1
1
  export interface CreateLoaderFileParams {
2
2
  ssr: boolean;
3
3
  loaderPath: string;
4
+ urlPath: string;
4
5
  }
5
- export declare function createLoaderFile({ ssr, loaderPath }: CreateLoaderFileParams): import("@angular-devkit/schematics").Source;
6
+ export declare function createLoaderFile({ ssr, loaderPath, urlPath, }: CreateLoaderFileParams): import("@angular-devkit/schematics").Source;
@@ -2,12 +2,13 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createLoaderFile = createLoaderFile;
4
4
  const schematics_1 = require("@angular-devkit/schematics");
5
- function createLoaderFile({ ssr, loaderPath }) {
5
+ function createLoaderFile({ ssr, loaderPath, urlPath, }) {
6
6
  return (0, schematics_1.apply)((0, schematics_1.url)(`./files/transloco-loader`), [
7
7
  (0, schematics_1.template)({
8
8
  // Replace the __ts__ with ts
9
9
  ts: 'ts',
10
10
  loaderPrefix: ssr ? '${environment.baseUrl}' : '',
11
+ urlPath: urlPath,
11
12
  }),
12
13
  (0, schematics_1.move)('/', loaderPath),
13
14
  ]);
@@ -1 +1 @@
1
- {"version":3,"file":"http-loader.gen.js","sourceRoot":"","sources":["../../../../../../libs/transloco/schematics/ng-add/generators/http-loader.gen.ts"],"names":[],"mappings":";;AAOA,4CASC;AAhBD,2DAAwE;AAOxE,SAAgB,gBAAgB,CAAC,EAAE,GAAG,EAAE,UAAU,EAA0B;IAC1E,OAAO,IAAA,kBAAK,EAAC,IAAA,gBAAG,EAAC,0BAA0B,CAAC,EAAE;QAC5C,IAAA,qBAAQ,EAAC;YACP,6BAA6B;YAC7B,EAAE,EAAE,IAAI;YACR,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE;SAClD,CAAC;QACF,IAAA,iBAAI,EAAC,GAAG,EAAE,UAAU,CAAC;KACtB,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"http-loader.gen.js","sourceRoot":"","sources":["../../../../../../libs/transloco/schematics/ng-add/generators/http-loader.gen.ts"],"names":[],"mappings":";;AAQA,4CAcC;AAtBD,2DAAwE;AAQxE,SAAgB,gBAAgB,CAAC,EAC/B,GAAG,EACH,UAAU,EACV,OAAO,GACgB;IACvB,OAAO,IAAA,kBAAK,EAAC,IAAA,gBAAG,EAAC,0BAA0B,CAAC,EAAE;QAC5C,IAAA,qBAAQ,EAAC;YACP,6BAA6B;YAC7B,EAAE,EAAE,IAAI;YACR,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE;YACjD,OAAO,EAAE,OAAO;SACjB,CAAC;QACF,IAAA,iBAAI,EAAC,GAAG,EAAE,UAAU,CAAC;KACtB,CAAC,CAAC;AACL,CAAC"}
@@ -38,17 +38,84 @@ function resolveLoaderPath({ host, mainPath, isStandalone, modulePath, }) {
38
38
  }
39
39
  return resolved;
40
40
  }
41
+ /**
42
+ * Checks whether a directory "exists" in the schematic Tree.
43
+ *
44
+ * In the Angular DevKit schematic virtual file system, directories are *not real entities* —
45
+ * only files exist. A directory is considered to "exist" if it has at least one file or
46
+ * subdirectory (that itself contains files) under its path.
47
+ *
48
+ * This function returns `true` if the given directory path contains any files or subdirectories,
49
+ * and `false` otherwise (including for empty or nonexistent directories).
50
+ *
51
+ * @param tree - The schematic virtual file system (Tree)
52
+ * @param dirPath - The path to check, e.g. '/src' or '/public'
53
+ */
54
+ function dirExists(tree, dirPath) {
55
+ const dir = tree.getDir(dirPath);
56
+ return dir.subfiles.length > 0 || dir.subdirs.length > 0;
57
+ }
58
+ /**
59
+ * Detects the appropriate path for translation assets based on Angular project structure.
60
+ *
61
+ * Angular 18+ introduced a new project structure using a top-level `public/` directory instead
62
+ * of `src/assets/` for static assets. This function implements a three-tier detection strategy
63
+ * to determine where translation JSON files should be placed:
64
+ *
65
+ * 1. **Directory existence check**: If `/public` exists, assume Angular 18+ structure
66
+ * 2. **Legacy assets check**: If `${sourceRoot}/assets` exists, use traditional structure
67
+ * 3. **Version fallback**: Parse package.json @angular/core version as final determination
68
+ *
69
+ * The detection accounts for the fact that in schematics, we're working with a virtual file
70
+ * system where directories only "exist" if they contain files, and we need to make the right
71
+ * choice for where users expect their translation files to be placed.
72
+ *
73
+ * @param host - The schematic virtual file system (Tree)
74
+ * @param sourceRoot - The source root path (typically 'src' or 'projects/app-name/src')
75
+ * @returns The detected assets path, e.g. 'public/i18n/' or 'src/assets/i18n/'
76
+ */
77
+ function detectAssetsPath(host, sourceRoot) {
78
+ var _a, _b;
79
+ if (dirExists(host, '/public')) {
80
+ return 'public/i18n/';
81
+ }
82
+ if (dirExists(host, `${sourceRoot}/assets`)) {
83
+ return `${sourceRoot}/assets/i18n/`;
84
+ }
85
+ // Fallback: Check package.json for Angular version
86
+ try {
87
+ const packageJson = JSON.parse(host.read('/package.json').toString());
88
+ const version = ((_a = packageJson.dependencies) === null || _a === void 0 ? void 0 : _a['@angular/core']) ||
89
+ ((_b = packageJson.devDependencies) === null || _b === void 0 ? void 0 : _b['@angular/core']);
90
+ // Extract major version number from versions like "^18.2.0", "~17.0.0", ">=16.0.0", etc.
91
+ const majorVersionMatch = version === null || version === void 0 ? void 0 : version.match(/(\d+)\./);
92
+ const majorVersion = parseInt(majorVersionMatch[1]);
93
+ return majorVersion >= 18 ? 'public/i18n/' : `${sourceRoot}/assets/i18n/`;
94
+ }
95
+ catch (_c) {
96
+ return `${sourceRoot}/assets/i18n/`; // Safe default
97
+ }
98
+ }
99
+ function getUrlPathFromAssetsPath(assetsPath) {
100
+ if (assetsPath.startsWith('public/')) {
101
+ return assetsPath.replace('public/', '');
102
+ }
103
+ return assetsPath;
104
+ }
41
105
  function ngAdd(options) {
42
106
  return (host, context) => __awaiter(this, void 0, void 0, function* () {
43
107
  var _a;
44
108
  const langs = options.langs.split(',').map((l) => l.trim());
45
109
  if (!options.project) {
46
- throw new schematics_1.SchematicsException('Project name is required. Are you using Nx? In Nx you must explicitly provide the project name using --project=<project-name>');
110
+ throw new schematics_1.SchematicsException('Project name is required. You must explicitly provide the project name using --project=<project-name>');
47
111
  }
48
112
  const project = (0, schematics_core_1.getProject)(host, options.project);
49
113
  const sourceRoot = (_a = project.sourceRoot) !== null && _a !== void 0 ? _a : 'src';
50
114
  const isLib = project.projectType === 'library';
51
- const assetsPath = `${sourceRoot}/${options.path}`;
115
+ const assetsPath = options.path
116
+ ? `${sourceRoot}/${options.path}`
117
+ : detectAssetsPath(host, sourceRoot);
118
+ const urlPath = getUrlPathFromAssetsPath(assetsPath);
52
119
  const mainPath = yield (0, util_1.getMainFilePath)(host, options.project);
53
120
  const isStandalone = (0, ng_ast_utils_1.isStandaloneApp)(host, mainPath);
54
121
  const modulePath = isStandalone
@@ -71,6 +138,7 @@ function ngAdd(options) {
71
138
  actions.push((0, schematics_1.mergeWith)((0, http_loader_gen_1.createLoaderFile)({
72
139
  ssr: options.ssr,
73
140
  loaderPath,
141
+ urlPath,
74
142
  })));
75
143
  }
76
144
  const hasTranslationFiles = (0, schematics_core_1.checkIfTranslationFilesExist)(assetsPath, langs, '.json', true);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../libs/transloco/schematics/ng-add/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../libs/transloco/schematics/ng-add/index.ts"],"names":[],"mappings":"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"}
@@ -38,6 +38,73 @@ describe('ng add', () => {
38
38
  expect(readFile(tree, 'app/app.config.ts')).toContain('provideTransloco(');
39
39
  }));
40
40
  });
41
+ describe('Folder Detection', () => {
42
+ it('should use public/i18n for Angular 18+ projects with public folder', () => __awaiter(void 0, void 0, void 0, function* () {
43
+ const options = { project: 'bar' };
44
+ const initialTree = yield (0, testing_2.createWorkspace)(schematicRunner);
45
+ // Create public folder to simulate Angular 18+
46
+ initialTree.create('/public/favicon.ico', '');
47
+ const tree = yield schematicRunner.runSchematic('ng-add', options, initialTree);
48
+ expect(tree.files).toContain('/public/i18n/en.json');
49
+ expect(tree.files).toContain('/public/i18n/es.json');
50
+ // Check that loader uses correct URL path
51
+ const loaderContent = readFile(tree, 'app/transloco-loader.ts');
52
+ expect(loaderContent).toContain('/i18n/${lang}.json');
53
+ expect(loaderContent).not.toContain('/assets/i18n/');
54
+ }));
55
+ it('should use src/assets/i18n for projects with assets folder', () => __awaiter(void 0, void 0, void 0, function* () {
56
+ const options = { project: 'bar' };
57
+ const initialTree = yield (0, testing_2.createWorkspace)(schematicRunner);
58
+ // Create assets folder to simulate traditional Angular structure
59
+ initialTree.create('/projects/bar/src/assets/icons/icon.png', '');
60
+ const tree = yield schematicRunner.runSchematic('ng-add', options, initialTree);
61
+ expect(tree.files).toContain('/projects/bar/src/assets/i18n/en.json');
62
+ expect(tree.files).toContain('/projects/bar/src/assets/i18n/es.json');
63
+ // Check that loader uses correct URL path
64
+ const loaderContent = readFile(tree, 'app/transloco-loader.ts');
65
+ expect(loaderContent).toContain('/assets/i18n/${lang}.json');
66
+ }));
67
+ it('should respect custom path when specified', () => __awaiter(void 0, void 0, void 0, function* () {
68
+ const options = {
69
+ project: 'bar',
70
+ path: 'custom/translations/',
71
+ };
72
+ const tree = yield schematicRunner.runSchematic('ng-add', options, yield (0, testing_2.createWorkspace)(schematicRunner));
73
+ expect(tree.files).toContain('/projects/bar/src/custom/translations/en.json');
74
+ expect(tree.files).toContain('/projects/bar/src/custom/translations/es.json');
75
+ // Check that loader uses correct URL path
76
+ const loaderContent = readFile(tree, 'app/transloco-loader.ts');
77
+ expect(loaderContent).toContain('/custom/translations/${lang}.json');
78
+ }));
79
+ it('should fallback to package.json version detection when folders are ambiguous', () => __awaiter(void 0, void 0, void 0, function* () {
80
+ const options = { project: 'bar' };
81
+ const initialTree = yield (0, testing_2.createWorkspace)(schematicRunner);
82
+ // Simulate Angular 18+ by updating package.json
83
+ const packageJson = JSON.parse(initialTree.read('/package.json').toString());
84
+ packageJson.dependencies['@angular/core'] = '^18.0.0';
85
+ initialTree.overwrite('/package.json', JSON.stringify(packageJson, null, 2));
86
+ const tree = yield schematicRunner.runSchematic('ng-add', options, initialTree);
87
+ expect(tree.files).toContain('/public/i18n/en.json');
88
+ expect(tree.files).toContain('/public/i18n/es.json');
89
+ // Check that loader uses correct URL path for Angular 18+
90
+ const loaderContent = readFile(tree, 'app/transloco-loader.ts');
91
+ expect(loaderContent).toContain('/i18n/${lang}.json');
92
+ }));
93
+ it('should fallback to assets for Angular <18 when package.json indicates older version', () => __awaiter(void 0, void 0, void 0, function* () {
94
+ const options = { project: 'bar' };
95
+ const initialTree = yield (0, testing_2.createWorkspace)(schematicRunner);
96
+ // Simulate Angular 17 by updating package.json
97
+ const packageJson = JSON.parse(initialTree.read('/package.json').toString());
98
+ packageJson.dependencies['@angular/core'] = '^17.0.0';
99
+ initialTree.overwrite('/package.json', JSON.stringify(packageJson, null, 2));
100
+ const tree = yield schematicRunner.runSchematic('ng-add', options, initialTree);
101
+ expect(tree.files).toContain('/projects/bar/src/assets/i18n/en.json');
102
+ expect(tree.files).toContain('/projects/bar/src/assets/i18n/es.json');
103
+ // Check that loader uses correct URL path for Angular <18
104
+ const loaderContent = readFile(tree, 'app/transloco-loader.ts');
105
+ expect(loaderContent).toContain('/assets/i18n/${lang}.json');
106
+ }));
107
+ });
41
108
  });
42
109
  function readFile(host, path) {
43
110
  return host.get(`/projects/bar/src/${path}`).content.toString();
@@ -1 +1 @@
1
- {"version":3,"file":"ng-add.spec.js","sourceRoot":"","sources":["../../../../../libs/transloco/schematics/ng-add/ng-add.spec.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,sCAAsC;AAEtC,gEAG4C;AAE5C,2DAAgE;AAIhE,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;AAEtE,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACtB,MAAM,eAAe,GAAG,IAAI,6BAAmB,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IAE9E,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;QACzB,EAAE,CAAC,2CAA2C,EAAE,GAAS,EAAE;YACzD,MAAM,OAAO,GAAkB,EAAE,OAAO,EAAE,KAAK,EAAmB,CAAC;YACnE,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,YAAY,CAC7C,QAAQ,EACR,OAAO,EACP,MAAM,IAAA,yBAAe,EAAC,eAAe,EAAE;gBACrC,UAAU,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE;aAClC,CAAC,CACH,CAAC;YACF,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;YACrD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,2CAA2C,CAAC,CAAC;YAC1E,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CAC1B,gDAAgD,CACjD,CAAC;YACF,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,8BAA8B,CAAC,CAAC,CAAC,SAAS,CAC9D,2BAA2B,CAC5B,CAAC;QACJ,CAAC,CAAA,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,sDAAsD,EAAE,GAAS,EAAE;YACpE,MAAM,OAAO,GAAkB,EAAE,OAAO,EAAE,KAAK,EAAmB,CAAC;YACnE,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,YAAY,CAC7C,QAAQ,EACR,OAAO,EACP,MAAM,IAAA,yBAAe,EAAC,eAAe,CAAC,CACvC,CAAC;YACF,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;YACrD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,2CAA2C,CAAC,CAAC;YAC1E,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC,CAAC,SAAS,CACnD,mBAAmB,CACpB,CAAC;QACJ,CAAC,CAAA,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,SAAS,QAAQ,CAAC,IAAkB,EAAE,IAAY;IAChD,OAAO,IAAI,CAAC,GAAG,CAAC,qBAAqB,IAAI,EAAE,CAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;AACnE,CAAC"}
1
+ {"version":3,"file":"ng-add.spec.js","sourceRoot":"","sources":["../../../../../libs/transloco/schematics/ng-add/ng-add.spec.ts"],"names":[],"mappings":"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"}
@@ -33,7 +33,7 @@
33
33
  },
34
34
  "path": {
35
35
  "type": "string",
36
- "default": "assets/i18n/",
36
+ "description": "Translation files path (auto-detects public/ for Angular 18+)",
37
37
  "alias": "p"
38
38
  },
39
39
  "project": {
@@ -9,10 +9,6 @@ import { Path } from '@angular-devkit/core';
9
9
  import { Tree } from '@angular-devkit/schematics';
10
10
  export declare const MODULE_EXT = ".module.ts";
11
11
  export declare const ROUTING_MODULE_EXT = "-routing.module.ts";
12
- /**
13
- * Find the module referred by a set of options passed to the schematics.
14
- */
15
- export declare function findRootModule(host: Tree, module: string, rootPath?: string, skipImport?: boolean): string | undefined;
16
12
  /**
17
13
  * Find the module referred by a set of options passed to the schematics.
18
14
  */
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ROUTING_MODULE_EXT = exports.MODULE_EXT = void 0;
4
- exports.findRootModule = findRootModule;
5
4
  exports.findModuleFromOptions = findModuleFromOptions;
6
5
  exports.findModule = findModule;
7
6
  /* eslint-disable */
@@ -16,26 +15,6 @@ exports.findModule = findModule;
16
15
  const core_1 = require("@angular-devkit/core");
17
16
  exports.MODULE_EXT = '.module.ts';
18
17
  exports.ROUTING_MODULE_EXT = '-routing.module.ts';
19
- /**
20
- * Find the module referred by a set of options passed to the schematics.
21
- */
22
- function findRootModule(host, module, rootPath = '', skipImport = false) {
23
- if (skipImport || !module) {
24
- return undefined;
25
- }
26
- const modulePath = (0, core_1.normalize)(`${rootPath}/${module}`);
27
- const matchingExt = [
28
- '',
29
- '.ts',
30
- exports.MODULE_EXT,
31
- `/${module}${exports.MODULE_EXT}`,
32
- `/${module}.ts`,
33
- ].find((ext) => host.exists(modulePath + ext));
34
- if (matchingExt) {
35
- return (0, core_1.normalize)(modulePath + matchingExt);
36
- }
37
- throw new Error(`Specified module path ${modulePath} does not exist`);
38
- }
39
18
  /**
40
19
  * Find the module referred by a set of options passed to the schematics.
41
20
  */
@@ -76,8 +55,6 @@ function findModuleFromOptions(host, options, projectPath) {
76
55
  }
77
56
  }
78
57
  return null;
79
- throw new Error(`Specified module '${options.module}' does not exist.\n` +
80
- `Looked in the following directories:\n ${candidatesDirs.join('\n ')}`);
81
58
  }
82
59
  }
83
60
  /**
@@ -96,17 +73,9 @@ function findModule(host, generateDir, moduleExt = exports.MODULE_EXT, routingMo
96
73
  }
97
74
  else if (filteredMatches.length > 1) {
98
75
  return null;
99
- throw new Error('More than one module matches. Use skip-import option to skip importing ' +
100
- 'the component into the closest module.');
101
76
  }
102
77
  dir = dir.parent;
103
78
  }
104
- const errorMsg = foundRoutingModule
105
- ? 'Could not find a non Routing NgModule.' +
106
- `\nModules with suffix '${routingModuleExt}' are strictly reserved for routing.` +
107
- '\nUse the skip-import option to skip importing in NgModule.'
108
- : 'Could not find an NgModule. Use the skip-import option to skip importing in NgModule.';
109
79
  return null;
110
- throw new Error(errorMsg);
111
80
  }
112
81
  //# sourceMappingURL=find-module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"find-module.js","sourceRoot":"","sources":["../../../../../libs/transloco/schematics-core/utils/find-module.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"find-module.js","sourceRoot":"","sources":["../../../../../libs/transloco/schematics-core/utils/find-module.ts"],"names":[],"mappings":"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"}