@dsivd/prestations-ng 19.1.2 → 19.2.0-beta.10

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 (36) hide show
  1. package/CHANGELOG.md +186 -7
  2. package/CONTRIBUTING.md +43 -3
  3. package/GOOD_PRACTICES.md +329 -124
  4. package/UPGRADING_V18.md +1 -0
  5. package/UPGRADING_V19.md +224 -3
  6. package/dsivd-prestations-ng-19.2.0-beta.10.tgz +0 -0
  7. package/eslint/configs/spec-ts-recommended.mjs +34 -0
  8. package/eslint/configs/template-recommended.mjs +2 -0
  9. package/eslint/configs/template-rules.mjs +6 -2
  10. package/eslint/configs/ts-recommended.mjs +2 -0
  11. package/eslint/configs/ts-rules.mjs +6 -2
  12. package/eslint/index.mjs +17 -0
  13. package/eslint/rules/no-direct-signal-mutation.mjs +1 -1
  14. package/eslint/signal-names.mjs +66 -35
  15. package/fesm2022/dsivd-prestations-ng.mjs +5013 -4196
  16. package/fesm2022/dsivd-prestations-ng.mjs.map +1 -1
  17. package/package.json +1 -2
  18. package/schematics/ng-add/index.js +2 -4
  19. package/schematics/ng-update/migrations/update-13_2_0/index.js +7 -2
  20. package/schematics/utility/add-allow-synthetic-default-imports.js +2 -2
  21. package/schematics/utility/add-allowed-common-js-dependencies.js +39 -29
  22. package/schematics/utility/foehn2-bootstrap5-migration.js +20 -20
  23. package/schematics/utility/migrate-to-karma-coverage.js +2 -2
  24. package/schematics/utility/remove-emit-decorator-metadata.js +8 -9
  25. package/src/eslint/__tests__/signal-names.test.mjs +129 -0
  26. package/src/eslint/configs/__tests__/configs.test.mjs +46 -2
  27. package/src/eslint/configs/spec-ts-recommended.mjs +34 -0
  28. package/src/eslint/configs/template-recommended.mjs +2 -0
  29. package/src/eslint/configs/template-rules.mjs +6 -2
  30. package/src/eslint/configs/ts-recommended.mjs +2 -0
  31. package/src/eslint/configs/ts-rules.mjs +6 -2
  32. package/src/eslint/index.mjs +17 -0
  33. package/src/eslint/rules/no-direct-signal-mutation.mjs +1 -1
  34. package/src/eslint/signal-names.mjs +66 -35
  35. package/types/dsivd-prestations-ng.d.ts +1184 -998
  36. package/dsivd-prestations-ng-19.1.2.tgz +0 -0
package/package.json CHANGED
@@ -27,7 +27,6 @@
27
27
  "@fortawesome/free-solid-svg-icons": "^7.2.0",
28
28
  "@dsivd/foehn": "=2.0.14",
29
29
  "rxjs": "^7.8.2",
30
- "core-js": "^3.49.0",
31
30
  "iban": "^0.0.14",
32
31
  "ngx-image-cropper": "^9.1.6",
33
32
  "dayjs": "^1.11.21",
@@ -40,7 +39,7 @@
40
39
  "ng-update": {
41
40
  "migrations": "./schematics/migration-collection.json"
42
41
  },
43
- "version": "19.1.2",
42
+ "version": "19.2.0-beta.10",
44
43
  "module": "fesm2022/dsivd-prestations-ng.mjs",
45
44
  "typings": "types/dsivd-prestations-ng.d.ts",
46
45
  "exports": {
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const schematics_1 = require("@angular-devkit/schematics");
4
4
  const tasks_1 = require("@angular-devkit/schematics/tasks");
5
- const add_allow_synthetic_default_imports_1 = require("../utility/add-allow-synthetic-default-imports");
6
5
  const add_allowed_common_js_dependencies_1 = require("../utility/add-allowed-common-js-dependencies");
7
6
  const migrate_to_karma_coverage_1 = require("../utility/migrate-to-karma-coverage");
8
7
  const remove_emit_decorator_metadata_1 = require("../utility/remove-emit-decorator-metadata");
@@ -15,12 +14,11 @@ exports.default = () => (tree, context) => {
15
14
  }
16
15
  context.logger.info('Thank you for using our library prestations-ng');
17
16
  (0, replace_browserslistrc_1.replaceBrowsersList)(tree);
18
- (0, add_allowed_common_js_dependencies_1.addAllowedCommonJsDependencies)(tree);
17
+ (0, add_allowed_common_js_dependencies_1.addAllowedCommonJsDependencies)(tree, ['iban', 'dayjs']);
19
18
  (0, remove_emit_decorator_metadata_1.removeEmitDecoratorMetadata)(tree);
20
19
  if ((0, migrate_to_karma_coverage_1.migrateToKarmaCoverage)(tree)) {
21
20
  context.addTask(new tasks_1.NodePackageInstallTask());
22
21
  }
23
- (0, add_allow_synthetic_default_imports_1.addAllowSyntheticDefaultImports)(tree);
24
22
  return tree;
25
23
  };
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zY2hlbWF0aWNzL25nLWFkZC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDJEQUtvQztBQUNwQyw0REFBMEU7QUFFMUUsd0dBQWlHO0FBQ2pHLHNHQUErRjtBQUMvRixvRkFBOEU7QUFDOUUsOEZBQXdGO0FBQ3hGLDhFQUF3RTtBQUV4RSxrQkFBZSxHQUFTLEVBQUUsQ0FBQyxDQUFDLElBQVUsRUFBRSxPQUF5QixFQUFFLEVBQUU7SUFDakUsTUFBTSxhQUFhLEdBQUcsY0FBYyxDQUFDO0lBQ3JDLGdEQUFnRDtJQUNoRCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1FBQzlCLE1BQU0sSUFBSSxnQ0FBbUIsQ0FDekIsb0VBQW9FLENBQ3ZFLENBQUM7SUFDTixDQUFDO0lBQ0QsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0RBQWdELENBQUMsQ0FBQztJQUV0RSxJQUFBLDRDQUFtQixFQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFCLElBQUEsbUVBQThCLEVBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsSUFBQSw0REFBMkIsRUFBQyxJQUFJLENBQUMsQ0FBQztJQUNsQyxJQUFJLElBQUEsa0RBQXNCLEVBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUMvQixPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksOEJBQXNCLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFDRCxJQUFBLHFFQUErQixFQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RDLE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUMsQ0FBQyJ9
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zY2hlbWF0aWNzL25nLWFkZC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDJEQUtvQztBQUNwQyw0REFBMEU7QUFFMUUsc0dBQStGO0FBQy9GLG9GQUE4RTtBQUM5RSw4RkFBd0Y7QUFDeEYsOEVBQXdFO0FBRXhFLGtCQUFlLEdBQVMsRUFBRSxDQUFDLENBQUMsSUFBVSxFQUFFLE9BQXlCLEVBQUUsRUFBRTtJQUNqRSxNQUFNLGFBQWEsR0FBRyxjQUFjLENBQUM7SUFDckMsZ0RBQWdEO0lBQ2hELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUM7UUFDOUIsTUFBTSxJQUFJLGdDQUFtQixDQUN6QixvRUFBb0UsQ0FDdkUsQ0FBQztJQUNOLENBQUM7SUFDRCxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO0lBRXRFLElBQUEsNENBQW1CLEVBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUIsSUFBQSxtRUFBOEIsRUFBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUN4RCxJQUFBLDREQUEyQixFQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLElBQUksSUFBQSxrREFBc0IsRUFBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQy9CLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSw4QkFBc0IsRUFBRSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUMsQ0FBQyJ9
@@ -11,8 +11,13 @@ exports.default = () => (tree, context) => {
11
11
  throw new schematics_1.SchematicsException('This is not an Angular workspace. Try again in an Angular project.');
12
12
  }
13
13
  context.logger.info(`Applying migration for prestations-ng for Angular to version ${version}`);
14
- (0, add_allowed_common_js_dependencies_1.addAllowedCommonJsDependencies)(tree);
14
+ // The dependencies added by this version, even if some are no longer needed today
15
+ (0, add_allowed_common_js_dependencies_1.addAllowedCommonJsDependencies)(tree, [
16
+ 'core-js/modules/es.array.includes',
17
+ 'iban',
18
+ 'zone.js/dist/zone-error',
19
+ ]);
15
20
  (0, remove_emit_decorator_metadata_1.removeEmitDecoratorMetadata)(tree);
16
21
  return tree;
17
22
  };
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zY2hlbWF0aWNzL25nLXVwZGF0ZS9taWdyYXRpb25zL3VwZGF0ZS0xM18yXzAvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwyREFLb0M7QUFFcEMsNEdBQXFHO0FBQ3JHLG9HQUE4RjtBQUU5RixNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUM7QUFFekIsa0JBQWUsR0FBUyxFQUFFLENBQUMsQ0FBQyxJQUFVLEVBQUUsT0FBeUIsRUFBRSxFQUFFO0lBQ2pFLE1BQU0sYUFBYSxHQUFHLGNBQWMsQ0FBQztJQUNyQyxnREFBZ0Q7SUFDaEQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztRQUM5QixNQUFNLElBQUksZ0NBQW1CLENBQ3pCLG9FQUFvRSxDQUN2RSxDQUFDO0lBQ04sQ0FBQztJQUNELE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNmLGdFQUFnRSxPQUFPLEVBQUUsQ0FDNUUsQ0FBQztJQUNGLElBQUEsbUVBQThCLEVBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsSUFBQSw0REFBMkIsRUFBQyxJQUFJLENBQUMsQ0FBQztJQUNsQyxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDLENBQUMifQ==
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zY2hlbWF0aWNzL25nLXVwZGF0ZS9taWdyYXRpb25zL3VwZGF0ZS0xM18yXzAvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwyREFLb0M7QUFFcEMsNEdBQXFHO0FBQ3JHLG9HQUE4RjtBQUU5RixNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUM7QUFFekIsa0JBQWUsR0FBUyxFQUFFLENBQUMsQ0FBQyxJQUFVLEVBQUUsT0FBeUIsRUFBRSxFQUFFO0lBQ2pFLE1BQU0sYUFBYSxHQUFHLGNBQWMsQ0FBQztJQUNyQyxnREFBZ0Q7SUFDaEQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztRQUM5QixNQUFNLElBQUksZ0NBQW1CLENBQ3pCLG9FQUFvRSxDQUN2RSxDQUFDO0lBQ04sQ0FBQztJQUNELE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNmLGdFQUFnRSxPQUFPLEVBQUUsQ0FDNUUsQ0FBQztJQUNGLGtGQUFrRjtJQUNsRixJQUFBLG1FQUE4QixFQUFDLElBQUksRUFBRTtRQUNqQyxtQ0FBbUM7UUFDbkMsTUFBTTtRQUNOLHlCQUF5QjtLQUM1QixDQUFDLENBQUM7SUFDSCxJQUFBLDREQUEyQixFQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUMsQ0FBQyJ9
@@ -9,11 +9,11 @@ const addAllowSyntheticDefaultImports = (tree) => {
9
9
  }
10
10
  const json = JSON.parse(file.toString());
11
11
  const compilerOptions = json.compilerOptions;
12
- if (!Object.prototype.hasOwnProperty.call(compilerOptions, 'allowSyntheticDefaultImports') ||
12
+ if (!Object.hasOwn(compilerOptions, 'allowSyntheticDefaultImports') ||
13
13
  !json.compilerOptions.allowSyntheticDefaultImports) {
14
14
  json.compilerOptions.allowSyntheticDefaultImports = true;
15
15
  tree.overwrite(tsConfig, JSON.stringify(json, null, 2));
16
16
  }
17
17
  };
18
18
  exports.addAllowSyntheticDefaultImports = addAllowSyntheticDefaultImports;
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWFsbG93LXN5bnRoZXRpYy1kZWZhdWx0LWltcG9ydHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zY2hlbWF0aWNzL3V0aWxpdHkvYWRkLWFsbG93LXN5bnRoZXRpYy1kZWZhdWx0LWltcG9ydHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRU8sTUFBTSwrQkFBK0IsR0FBRyxDQUFDLElBQVUsRUFBUSxFQUFFO0lBQ2hFLE1BQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQztJQUNqQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2pDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNSLE9BQU87SUFDWCxDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUN6QyxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzdDLElBQ0ksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQ2pDLGVBQWUsRUFDZiw4QkFBOEIsQ0FDakM7UUFDRCxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsNEJBQTRCLEVBQ3BELENBQUM7UUFDQyxJQUFJLENBQUMsZUFBZSxDQUFDLDRCQUE0QixHQUFHLElBQUksQ0FBQztRQUV6RCxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RCxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBcEJXLFFBQUEsK0JBQStCLG1DQW9CMUMifQ==
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWFsbG93LXN5bnRoZXRpYy1kZWZhdWx0LWltcG9ydHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zY2hlbWF0aWNzL3V0aWxpdHkvYWRkLWFsbG93LXN5bnRoZXRpYy1kZWZhdWx0LWltcG9ydHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRU8sTUFBTSwrQkFBK0IsR0FBRyxDQUFDLElBQVUsRUFBUSxFQUFFO0lBQ2hFLE1BQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQztJQUNqQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2pDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNSLE9BQU87SUFDWCxDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUN6QyxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzdDLElBQ0ksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRSw4QkFBOEIsQ0FBQztRQUMvRCxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsNEJBQTRCLEVBQ3BELENBQUM7UUFDQyxJQUFJLENBQUMsZUFBZSxDQUFDLDRCQUE0QixHQUFHLElBQUksQ0FBQztRQUV6RCxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RCxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBakJXLFFBQUEsK0JBQStCLG1DQWlCMUMifQ==
@@ -2,41 +2,51 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.addAllowedCommonJsDependencies = void 0;
4
4
  const schematics_1 = require("@angular-devkit/schematics");
5
- const addAllowedCommonJsDependencies = (tree) => {
5
+ const json_file_1 = require("@schematics/angular/utility/json-file");
6
+ /**
7
+ * Adds the dependencies missing from the `allowedCommonJsDependencies` of the build of the `defaultProject`,
8
+ * or of every application when there is no `defaultProject` (removed from angular.json since Angular 14).
9
+ */
10
+ const addAllowedCommonJsDependencies = (tree, dependencies) => {
11
+ var _a;
6
12
  const pathToAngularJson = 'angular.json';
7
- const file = tree.read(pathToAngularJson);
8
- if (!file) {
13
+ if (!tree.exists(pathToAngularJson)) {
9
14
  // Should never happen because always check in rules
10
15
  return;
11
16
  }
12
- const json = JSON.parse(file.toString());
13
- const projectName = json.defaultProject;
14
- if (!projectName) {
15
- throw new schematics_1.SchematicsException("Sorry but we could not find 'defaultProject' property in your angular.json file.");
16
- }
17
- const project = json.projects[projectName];
18
- if (!project) {
19
- throw new schematics_1.SchematicsException(`Sorry but we could not find project '${projectName}' in your angular.json file.`);
20
- }
21
- const buildOptions = project.architect.build.options;
22
- const arrayOfDependenciesToAdd = [
23
- 'core-js/modules/es.array.includes',
24
- 'iban',
25
- 'zone.js/dist/zone-error',
26
- ];
27
- if (Object.prototype.hasOwnProperty.call(buildOptions, 'allowedCommonJsDependencies')) {
28
- // Do not add dependency if already exist
29
- const existingDeps = [...buildOptions.allowedCommonJsDependencies];
30
- arrayOfDependenciesToAdd.forEach((dep) => {
31
- if (!existingDeps.includes(dep)) {
32
- buildOptions.allowedCommonJsDependencies.push(dep);
33
- }
34
- });
17
+ // JSONFile keeps the formatting and the comments of the file
18
+ const angularJson = new json_file_1.JSONFile(tree, pathToAngularJson);
19
+ const projects = ((_a = angularJson.get(['projects'])) !== null && _a !== void 0 ? _a : {});
20
+ const defaultProject = angularJson.get(['defaultProject']);
21
+ let projectNames;
22
+ if (typeof defaultProject === 'string') {
23
+ if (!projects[defaultProject]) {
24
+ throw new schematics_1.SchematicsException(`Sorry but we could not find project '${defaultProject}' in your angular.json file.`);
25
+ }
26
+ projectNames = [defaultProject];
35
27
  }
36
28
  else {
37
- buildOptions.allowedCommonJsDependencies = arrayOfDependenciesToAdd;
29
+ projectNames = Object.keys(projects).filter((name) => projects[name].projectType === 'application');
38
30
  }
39
- tree.overwrite(pathToAngularJson, JSON.stringify(json, null, 2));
31
+ projectNames
32
+ .filter((name) => { var _a, _b; return (_b = (_a = projects[name].architect) === null || _a === void 0 ? void 0 : _a.build) === null || _b === void 0 ? void 0 : _b.options; })
33
+ .forEach((name) => {
34
+ var _a;
35
+ const path = [
36
+ 'projects',
37
+ name,
38
+ 'architect',
39
+ 'build',
40
+ 'options',
41
+ 'allowedCommonJsDependencies',
42
+ ];
43
+ const existingDeps = ((_a = angularJson.get(path)) !== null && _a !== void 0 ? _a : []);
44
+ // Do not add dependency if already exist
45
+ const missingDeps = dependencies.filter((dep) => !existingDeps.includes(dep));
46
+ if (missingDeps.length) {
47
+ angularJson.modify(path, [...existingDeps, ...missingDeps]);
48
+ }
49
+ });
40
50
  };
41
51
  exports.addAllowedCommonJsDependencies = addAllowedCommonJsDependencies;
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWFsbG93ZWQtY29tbW9uLWpzLWRlcGVuZGVuY2llcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NjaGVtYXRpY3MvdXRpbGl0eS9hZGQtYWxsb3dlZC1jb21tb24tanMtZGVwZW5kZW5jaWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJEQUF1RTtBQUVoRSxNQUFNLDhCQUE4QixHQUFHLENBQUMsSUFBVSxFQUFRLEVBQUU7SUFDL0QsTUFBTSxpQkFBaUIsR0FBRyxjQUFjLENBQUM7SUFDekMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNSLG9EQUFvRDtRQUNwRCxPQUFPO0lBQ1gsQ0FBQztJQUVELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDekMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUN4QyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDZixNQUFNLElBQUksZ0NBQW1CLENBQ3pCLGtGQUFrRixDQUNyRixDQUFDO0lBQ04sQ0FBQztJQUVELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDM0MsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ1gsTUFBTSxJQUFJLGdDQUFtQixDQUN6Qix3Q0FBd0MsV0FBVyw4QkFBOEIsQ0FDcEYsQ0FBQztJQUNOLENBQUM7SUFFRCxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7SUFDckQsTUFBTSx3QkFBd0IsR0FBRztRQUM3QixtQ0FBbUM7UUFDbkMsTUFBTTtRQUNOLHlCQUF5QjtLQUM1QixDQUFDO0lBRUYsSUFDSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQ2hDLFlBQVksRUFDWiw2QkFBNkIsQ0FDaEMsRUFDSCxDQUFDO1FBQ0MseUNBQXlDO1FBQ3pDLE1BQU0sWUFBWSxHQUFHLENBQUMsR0FBRyxZQUFZLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUNuRSx3QkFBd0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFXLEVBQUUsRUFBRTtZQUM3QyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUM5QixZQUFZLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZELENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7U0FBTSxDQUFDO1FBQ0osWUFBWSxDQUFDLDJCQUEyQixHQUFHLHdCQUF3QixDQUFDO0lBQ3hFLENBQUM7SUFFRCxJQUFJLENBQUMsU0FBUyxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JFLENBQUMsQ0FBQztBQWhEVyxRQUFBLDhCQUE4QixrQ0FnRHpDIn0=
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWFsbG93ZWQtY29tbW9uLWpzLWRlcGVuZGVuY2llcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NjaGVtYXRpY3MvdXRpbGl0eS9hZGQtYWxsb3dlZC1jb21tb24tanMtZGVwZW5kZW5jaWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJEQUF1RTtBQUN2RSxxRUFBaUU7QUFPakU7OztHQUdHO0FBQ0ksTUFBTSw4QkFBOEIsR0FBRyxDQUMxQyxJQUFVLEVBQ1YsWUFBc0IsRUFDbEIsRUFBRTs7SUFDTixNQUFNLGlCQUFpQixHQUFHLGNBQWMsQ0FBQztJQUN6QyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUM7UUFDbEMsb0RBQW9EO1FBQ3BELE9BQU87SUFDWCxDQUFDO0lBRUQsNkRBQTZEO0lBQzdELE1BQU0sV0FBVyxHQUFHLElBQUksb0JBQVEsQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztJQUMxRCxNQUFNLFFBQVEsR0FBRyxDQUFDLE1BQUEsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLG1DQUFJLEVBQUUsQ0FHcEQsQ0FBQztJQUNGLE1BQU0sY0FBYyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7SUFFM0QsSUFBSSxZQUFzQixDQUFDO0lBQzNCLElBQUksT0FBTyxjQUFjLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDckMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO1lBQzVCLE1BQU0sSUFBSSxnQ0FBbUIsQ0FDekIsd0NBQXdDLGNBQWMsOEJBQThCLENBQ3ZGLENBQUM7UUFDTixDQUFDO1FBQ0QsWUFBWSxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDcEMsQ0FBQztTQUFNLENBQUM7UUFDSixZQUFZLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQ3ZDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxLQUFLLGFBQWEsQ0FDekQsQ0FBQztJQUNOLENBQUM7SUFFRCxZQUFZO1NBQ1AsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsZUFBQyxPQUFBLE1BQUEsTUFBQSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUywwQ0FBRSxLQUFLLDBDQUFFLE9BQU8sQ0FBQSxFQUFBLENBQUM7U0FDMUQsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7O1FBQ2QsTUFBTSxJQUFJLEdBQUc7WUFDVCxVQUFVO1lBQ1YsSUFBSTtZQUNKLFdBQVc7WUFDWCxPQUFPO1lBQ1AsU0FBUztZQUNULDZCQUE2QjtTQUNoQyxDQUFDO1FBQ0YsTUFBTSxZQUFZLEdBQUcsQ0FBQyxNQUFBLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLG1DQUFJLEVBQUUsQ0FBYSxDQUFDO1FBQy9ELHlDQUF5QztRQUN6QyxNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUNuQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUN2QyxDQUFDO1FBQ0YsSUFBSSxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDckIsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLFlBQVksRUFBRSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDaEUsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ1gsQ0FBQyxDQUFDO0FBcERXLFFBQUEsOEJBQThCLGtDQW9EekMifQ==
@@ -164,23 +164,23 @@ exports.foehn2ClassNamesToMigrate = [
164
164
  ];
165
165
  const fixWrongReplacementsForCss = (migrationResult, classNameToMigrate) => {
166
166
  if (classNameToMigrate.className === 'vd-highlight') {
167
- migrationResult.fileContent = migrationResult.fileContent.replace(/\.vd-highlight\.highlight-dark\.highlight-dark/g, () => {
167
+ migrationResult.fileContent = migrationResult.fileContent.replaceAll(/\.vd-highlight\.highlight-dark\.highlight-dark/g, () => {
168
168
  migrationResult.nbCssClassChanged--;
169
169
  return '.vd-highlight.highlight-dark';
170
170
  });
171
171
  }
172
172
  if (classNameToMigrate.className === 'form-group') {
173
- migrationResult.fileContent = migrationResult.fileContent.replace(/\.form-group\.mb-3\.mb-3/g, () => {
173
+ migrationResult.fileContent = migrationResult.fileContent.replaceAll(/\.form-group\.mb-3\.mb-3/g, () => {
174
174
  migrationResult.nbCssClassChanged--;
175
175
  return '.form-group.mb-3';
176
176
  });
177
177
  }
178
178
  if (classNameToMigrate.className === 'btn-link') {
179
- migrationResult.fileContent = migrationResult.fileContent.replace(/\.btn\.btn\.btn-link/g, () => {
179
+ migrationResult.fileContent = migrationResult.fileContent.replaceAll(/\.btn\.btn\.btn-link/g, () => {
180
180
  migrationResult.nbCssClassChanged--;
181
181
  return '.btn.btn-link';
182
182
  });
183
- migrationResult.fileContent = migrationResult.fileContent.replace(/\.btn \.btn\.btn-link/g, () => {
183
+ migrationResult.fileContent = migrationResult.fileContent.replaceAll(/\.btn \.btn\.btn-link/g, () => {
184
184
  migrationResult.nbCssClassChanged--;
185
185
  return '.btn .btn-link';
186
186
  });
@@ -188,55 +188,55 @@ const fixWrongReplacementsForCss = (migrationResult, classNameToMigrate) => {
188
188
  };
189
189
  const fixWrongReplacementsForHtmlOrTs = (migrationResult, classNameToMigrate) => {
190
190
  if (classNameToMigrate.className === 'form-group') {
191
- migrationResult.fileContent = migrationResult.fileContent.replace(/autocomplete-mb-3/g, () => {
191
+ migrationResult.fileContent = migrationResult.fileContent.replaceAll(/autocomplete-mb-3/g, () => {
192
192
  migrationResult.nbCssClassChanged--;
193
193
  return 'autocomplete-form-group';
194
194
  });
195
- migrationResult.fileContent = migrationResult.fileContent.replace(/autocomplete-form-group mb-3/g, () => {
195
+ migrationResult.fileContent = migrationResult.fileContent.replaceAll(/autocomplete-form-group mb-3/g, () => {
196
196
  migrationResult.nbCssClassChanged--;
197
197
  return 'autocomplete-form-group';
198
198
  });
199
- migrationResult.fileContent = migrationResult.fileContent.replace(/clearable-input-mb-3/g, () => {
199
+ migrationResult.fileContent = migrationResult.fileContent.replaceAll(/clearable-input-mb-3/g, () => {
200
200
  migrationResult.nbCssClassChanged--;
201
201
  return 'clearable-input-form-group';
202
202
  });
203
- migrationResult.fileContent = migrationResult.fileContent.replace(/clearable-input-form-group mb-3/g, () => {
203
+ migrationResult.fileContent = migrationResult.fileContent.replaceAll(/clearable-input-form-group mb-3/g, () => {
204
204
  migrationResult.nbCssClassChanged--;
205
205
  return 'clearable-input-form-group';
206
206
  });
207
- migrationResult.fileContent = migrationResult.fileContent.replace(/form-group mb-3 mb-3/g, () => {
207
+ migrationResult.fileContent = migrationResult.fileContent.replaceAll(/form-group mb-3 mb-3/g, () => {
208
208
  migrationResult.nbCssClassChanged--;
209
209
  return 'form-group mb-3';
210
210
  });
211
211
  }
212
212
  if (classNameToMigrate.className === 'close') {
213
- migrationResult.fileContent = migrationResult.fileContent.replace(/btn-btn-close/g, () => {
213
+ migrationResult.fileContent = migrationResult.fileContent.replaceAll(/btn-btn-close/g, () => {
214
214
  migrationResult.nbCssClassChanged--;
215
215
  return 'btn-close';
216
216
  });
217
217
  }
218
218
  if (classNameToMigrate.className === 'vd-highlight') {
219
- migrationResult.fileContent = migrationResult.fileContent.replace(/vd-highlight highlight-dark highlight-dark/g, () => {
219
+ migrationResult.fileContent = migrationResult.fileContent.replaceAll(/vd-highlight highlight-dark highlight-dark/g, () => {
220
220
  migrationResult.nbCssClassChanged--;
221
221
  return 'vd-highlight highlight-dark';
222
222
  });
223
223
  }
224
224
  if (classNameToMigrate.className === 'btn-link') {
225
- migrationResult.fileContent = migrationResult.fileContent.replace(/btn btn btn-link/g, () => {
225
+ migrationResult.fileContent = migrationResult.fileContent.replaceAll(/btn btn btn-link/g, () => {
226
226
  migrationResult.nbCssClassChanged--;
227
227
  return 'btn btn-link';
228
228
  });
229
229
  }
230
230
  };
231
231
  const manageHtmlSpecialCases = (migrationResult) => {
232
- migrationResult.fileContent = migrationResult.fileContent.replace(/(<select[^>]*(class|\[ngClass])\s*=[-"'\s\w?:{]*)\bform-control\b([^'"]*'?['"])/g,
232
+ migrationResult.fileContent = migrationResult.fileContent.replaceAll(/(<select[^>]*(class|\[ngClass])\s*=[-"'\s\w?:{]*)\bform-control\b([^'"]*'?['"])/g,
233
233
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
234
234
  // @ts-ignore
235
235
  (match, p1, p2, p3) => {
236
236
  migrationResult.nbCssClassChanged++;
237
237
  return `${p1}form-select${p3}`;
238
238
  });
239
- migrationResult.fileContent = migrationResult.fileContent.replace(/(<select[^>]*\[class\.\s*)\bform-control\b([-\w]*]=\s*['"]'?[^'"]*[^'"]*'?['"])/g,
239
+ migrationResult.fileContent = migrationResult.fileContent.replaceAll(/(<select[^>]*\[class\.\s*)\bform-control\b([-\w]*]=\s*['"]'?[^'"]*[^'"]*'?['"])/g,
240
240
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
241
241
  // @ts-ignore
242
242
  (match, p1, p2) => {
@@ -255,7 +255,7 @@ const renameInCssFile = (migrationResult, classNameToMigrate) => {
255
255
  const regex = new RegExp(classNameToMigrate.isTag
256
256
  ? classNameToMigrate.className
257
257
  : `.${classNameToMigrate.className}`.replaceAll('.', '\\.'), 'g');
258
- migrationResult.fileContent = migrationResult.fileContent.replace(regex, () => {
258
+ migrationResult.fileContent = migrationResult.fileContent.replaceAll(regex, () => {
259
259
  migrationResult.nbCssClassChanged++;
260
260
  return classNameToMigrate.isTag ? replacement : `.${replacement}`;
261
261
  });
@@ -265,7 +265,7 @@ const renameInHtmlOrTsFile = (migrationResult, classNameToMigrate) => {
265
265
  return;
266
266
  }
267
267
  const classRegex = new RegExp(`(<[^>]*class\\s*=\\s*['"][^'"]*)\\b${classNameToMigrate.className}\\b([^'"]*['"])`, 'g');
268
- migrationResult.fileContent = migrationResult.fileContent.replace(classRegex,
268
+ migrationResult.fileContent = migrationResult.fileContent.replaceAll(classRegex,
269
269
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
270
270
  // @ts-ignore
271
271
  (match, p1, p2) => {
@@ -273,7 +273,7 @@ const renameInHtmlOrTsFile = (migrationResult, classNameToMigrate) => {
273
273
  return `${p1}${classNameToMigrate.replacement}${p2}`;
274
274
  });
275
275
  const ngClassRegex = new RegExp(`(<[^>]*ngClass]\\s*=\\s*[-"'\\s\\w?:{]*)\\b${classNameToMigrate.className}\\b([^'"]*'?['"])`, 'g');
276
- migrationResult.fileContent = migrationResult.fileContent.replace(ngClassRegex,
276
+ migrationResult.fileContent = migrationResult.fileContent.replaceAll(ngClassRegex,
277
277
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
278
278
  // @ts-ignore
279
279
  (match, p1, p2) => {
@@ -281,7 +281,7 @@ const renameInHtmlOrTsFile = (migrationResult, classNameToMigrate) => {
281
281
  return `${p1}${classNameToMigrate.replacement}${p2}`;
282
282
  });
283
283
  const classDotRegex = new RegExp(`(<[^>]*\\[class\\.\\s*)\\b${classNameToMigrate.className}\\b([-\\w]*])`, 'g');
284
- migrationResult.fileContent = migrationResult.fileContent.replace(classDotRegex,
284
+ migrationResult.fileContent = migrationResult.fileContent.replaceAll(classDotRegex,
285
285
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
286
286
  // @ts-ignore
287
287
  (match, p1, p2) => {
@@ -344,7 +344,7 @@ const migrateToFoehn2 = (migrationResult, fileExtension) => {
344
344
  const getFilesPath = (tree, dir, filesPath, fileExtension) => {
345
345
  var _a;
346
346
  const subdirs = dir.subdirs;
347
- if (!!subdirs.length) {
347
+ if (subdirs === null || subdirs === void 0 ? void 0 : subdirs.length) {
348
348
  subdirs.forEach((subDir) => {
349
349
  const subDirValue = tree.getDir(`${dir.path}/${subDir}`);
350
350
  getFilesPath(tree, subDirValue, filesPath, fileExtension);
@@ -387,4 +387,4 @@ const migrateToFoehn2Bootstrap5 = (tree, fileExtension, migrationResult, sourceR
387
387
  });
388
388
  };
389
389
  exports.migrateToFoehn2Bootstrap5 = migrateToFoehn2Bootstrap5;
390
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4yLWJvb3RzdHJhcDUtbWlncmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc2NoZW1hdGljcy91dGlsaXR5L2ZvZWhuMi1ib290c3RyYXA1LW1pZ3JhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFJQSxJQUFZLGFBSVg7QUFKRCxXQUFZLGFBQWE7SUFDckIsNEJBQVcsQ0FBQTtJQUNYLDhCQUFhLENBQUE7SUFDYiwwQkFBUyxDQUFBO0FBQ2IsQ0FBQyxFQUpXLGFBQWEsNkJBQWIsYUFBYSxRQUl4QjtBQUVELE1BQWEsa0JBQWtCO0NBTTlCO0FBTkQsZ0RBTUM7QUFFRCxNQUFhLGVBQWU7SUFBNUI7UUFFSSxzQkFBaUIsR0FBRyxDQUFDLENBQUM7SUFDMUIsQ0FBQztDQUFBO0FBSEQsMENBR0M7QUFFWSxRQUFBLDhCQUE4QixHQUF5QjtJQUNoRSxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRTtJQUN2RCxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRTtJQUNuRCxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRTtJQUNuRCxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRTtJQUNyRCxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRTtJQUN4RCxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRTtJQUN6RCxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFO0lBQzdELEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFO0lBQ3pELEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsWUFBWSxF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
390
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4yLWJvb3RzdHJhcDUtbWlncmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc2NoZW1hdGljcy91dGlsaXR5L2ZvZWhuMi1ib290c3RyYXA1LW1pZ3JhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFJQSxJQUFZLGFBSVg7QUFKRCxXQUFZLGFBQWE7SUFDckIsNEJBQVcsQ0FBQTtJQUNYLDhCQUFhLENBQUE7SUFDYiwwQkFBUyxDQUFBO0FBQ2IsQ0FBQyxFQUpXLGFBQWEsNkJBQWIsYUFBYSxRQUl4QjtBQUVELE1BQWEsa0JBQWtCO0NBTTlCO0FBTkQsZ0RBTUM7QUFFRCxNQUFhLGVBQWU7SUFBNUI7UUFFSSxzQkFBaUIsR0FBRyxDQUFDLENBQUM7SUFDMUIsQ0FBQztDQUFBO0FBSEQsMENBR0M7QUFFWSxRQUFBLDhCQUE4QixHQUF5QjtJQUNoRSxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRTtJQUN2RCxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRTtJQUNuRCxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRTtJQUNuRCxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRTtJQUNyRCxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRTtJQUN4RCxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRTtJQUN6RCxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFO0lBQzdELEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFO0lBQ3pELEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsWUFBWSxF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
@@ -15,7 +15,7 @@ const modifyPackageJson = (tree) => {
15
15
  return;
16
16
  }
17
17
  const karmaCoverageIstanbulReporter = 'karma-coverage-istanbul-reporter';
18
- if (!Object.prototype.hasOwnProperty.call(devDependencies, karmaCoverageIstanbulReporter)) {
18
+ if (!Object.hasOwn(devDependencies, karmaCoverageIstanbulReporter)) {
19
19
  // nothing to do
20
20
  return;
21
21
  }
@@ -48,4 +48,4 @@ const migrateToKarmaCoverage = (tree) => {
48
48
  return true;
49
49
  };
50
50
  exports.migrateToKarmaCoverage = migrateToKarmaCoverage;
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlncmF0ZS10by1rYXJtYS1jb3ZlcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NjaGVtYXRpY3MvdXRpbGl0eS9taWdyYXRlLXRvLWthcm1hLWNvdmVyYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVPLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxJQUFVLEVBQVEsRUFBRTtJQUNsRCxNQUFNLGlCQUFpQixHQUFHLGNBQWMsQ0FBQztJQUN6QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDMUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1IsZ0JBQWdCO1FBQ2hCLE9BQU87SUFDWCxDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUN6QyxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzdDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNuQixnQkFBZ0I7UUFDaEIsT0FBTztJQUNYLENBQUM7SUFFRCxNQUFNLDZCQUE2QixHQUFHLGtDQUFrQyxDQUFDO0lBQ3pFLElBQ0ksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQ2pDLGVBQWUsRUFDZiw2QkFBNkIsQ0FDaEMsRUFDSCxDQUFDO1FBQ0MsZ0JBQWdCO1FBQ2hCLE9BQU87SUFDWCxDQUFDO0lBRUQsT0FBTyxlQUFlLENBQUMsNkJBQTZCLENBQUMsQ0FBQztJQUV0RCxxQkFBcUI7SUFDckIsZUFBZSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsUUFBUSxDQUFDO0lBRTdDLElBQUksQ0FBQyxTQUFTLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckUsQ0FBQyxDQUFDO0FBaENXLFFBQUEsaUJBQWlCLHFCQWdDNUI7QUFFSyxNQUFNLGlCQUFpQixHQUFHLENBQUMsSUFBVSxFQUFRLEVBQUU7SUFDbEQsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUMvQiw2RUFBNkUsQ0FDaEYsQ0FBQztJQUNGLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3JCLE9BQU87SUFDWCxDQUFDO0lBRUQsTUFBTSxpQkFBaUIsR0FBRyxlQUFlLENBQUM7SUFDMUMsTUFBTSxrQkFBa0IsR0FBRyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN4RCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxTQUFTLENBQUMsaUJBQWlCLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztJQUMxRCxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBYlcsUUFBQSxpQkFBaUIscUJBYTVCO0FBRUssTUFBTSxzQkFBc0IsR0FBRyxDQUFDLElBQVUsRUFBVyxFQUFFO0lBQzFELE1BQU0saUJBQWlCLEdBQUcsZUFBZSxDQUFDO0lBQzFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQztRQUNsQyx5REFBeUQ7UUFDekQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUNELElBQUEseUJBQWlCLEVBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEIsSUFBQSx5QkFBaUIsRUFBQyxJQUFJLENBQUMsQ0FBQztJQUV4QixPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDLENBQUM7QUFWVyxRQUFBLHNCQUFzQiwwQkFVakMifQ==
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlncmF0ZS10by1rYXJtYS1jb3ZlcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NjaGVtYXRpY3MvdXRpbGl0eS9taWdyYXRlLXRvLWthcm1hLWNvdmVyYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVPLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxJQUFVLEVBQVEsRUFBRTtJQUNsRCxNQUFNLGlCQUFpQixHQUFHLGNBQWMsQ0FBQztJQUN6QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDMUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1IsZ0JBQWdCO1FBQ2hCLE9BQU87SUFDWCxDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUN6QyxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzdDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNuQixnQkFBZ0I7UUFDaEIsT0FBTztJQUNYLENBQUM7SUFFRCxNQUFNLDZCQUE2QixHQUFHLGtDQUFrQyxDQUFDO0lBQ3pFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRSw2QkFBNkIsQ0FBQyxFQUFFLENBQUM7UUFDakUsZ0JBQWdCO1FBQ2hCLE9BQU87SUFDWCxDQUFDO0lBRUQsT0FBTyxlQUFlLENBQUMsNkJBQTZCLENBQUMsQ0FBQztJQUV0RCxxQkFBcUI7SUFDckIsZUFBZSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsUUFBUSxDQUFDO0lBRTdDLElBQUksQ0FBQyxTQUFTLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckUsQ0FBQyxDQUFDO0FBM0JXLFFBQUEsaUJBQWlCLHFCQTJCNUI7QUFFSyxNQUFNLGlCQUFpQixHQUFHLENBQUMsSUFBVSxFQUFRLEVBQUU7SUFDbEQsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUMvQiw2RUFBNkUsQ0FDaEYsQ0FBQztJQUNGLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3JCLE9BQU87SUFDWCxDQUFDO0lBRUQsTUFBTSxpQkFBaUIsR0FBRyxlQUFlLENBQUM7SUFDMUMsTUFBTSxrQkFBa0IsR0FBRyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN4RCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxTQUFTLENBQUMsaUJBQWlCLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztJQUMxRCxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBYlcsUUFBQSxpQkFBaUIscUJBYTVCO0FBRUssTUFBTSxzQkFBc0IsR0FBRyxDQUFDLElBQVUsRUFBVyxFQUFFO0lBQzFELE1BQU0saUJBQWlCLEdBQUcsZUFBZSxDQUFDO0lBQzFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQztRQUNsQyx5REFBeUQ7UUFDekQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUNELElBQUEseUJBQWlCLEVBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEIsSUFBQSx5QkFBaUIsRUFBQyxJQUFJLENBQUMsQ0FBQztJQUV4QixPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDLENBQUM7QUFWVyxRQUFBLHNCQUFzQiwwQkFVakMifQ==
@@ -1,18 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.removeEmitDecoratorMetadata = void 0;
4
+ const json_file_1 = require("@schematics/angular/utility/json-file");
4
5
  const removeEmitDecoratorMetadata = (tree) => {
5
6
  const tsConfig = 'tsconfig.json';
6
- const file = tree.read(tsConfig);
7
- if (!file) {
7
+ if (!tree.exists(tsConfig)) {
8
8
  return;
9
9
  }
10
- const json = JSON.parse(file.toString());
11
- const compilerOptions = json.compilerOptions;
12
- if (Object.prototype.hasOwnProperty.call(compilerOptions, 'emitDecoratorMetadata')) {
13
- delete json.compilerOptions.emitDecoratorMetadata;
14
- tree.overwrite(tsConfig, JSON.stringify(json, null, 2));
15
- }
10
+ // JSONFile keeps the formatting and the comments of the file
11
+ new json_file_1.JSONFile(tree, tsConfig).remove([
12
+ 'compilerOptions',
13
+ 'emitDecoratorMetadata',
14
+ ]);
16
15
  };
17
16
  exports.removeEmitDecoratorMetadata = removeEmitDecoratorMetadata;
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3ZlLWVtaXQtZGVjb3JhdG9yLW1ldGFkYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc2NoZW1hdGljcy91dGlsaXR5L3JlbW92ZS1lbWl0LWRlY29yYXRvci1tZXRhZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFTyxNQUFNLDJCQUEyQixHQUFHLENBQUMsSUFBVSxFQUFRLEVBQUU7SUFDNUQsTUFBTSxRQUFRLEdBQUcsZUFBZSxDQUFDO0lBQ2pDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDakMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1IsT0FBTztJQUNYLENBQUM7SUFFRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDN0MsSUFDSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQ2hDLGVBQWUsRUFDZix1QkFBdUIsQ0FDMUIsRUFDSCxDQUFDO1FBQ0MsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLHFCQUFxQixDQUFDO1FBRWxELElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVELENBQUM7QUFDTCxDQUFDLENBQUM7QUFuQlcsUUFBQSwyQkFBMkIsK0JBbUJ0QyJ9
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3ZlLWVtaXQtZGVjb3JhdG9yLW1ldGFkYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc2NoZW1hdGljcy91dGlsaXR5L3JlbW92ZS1lbWl0LWRlY29yYXRvci1tZXRhZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxxRUFBaUU7QUFFMUQsTUFBTSwyQkFBMkIsR0FBRyxDQUFDLElBQVUsRUFBUSxFQUFFO0lBQzVELE1BQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQztJQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQ3pCLE9BQU87SUFDWCxDQUFDO0lBRUQsNkRBQTZEO0lBQzdELElBQUksb0JBQVEsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDO1FBQ2hDLGlCQUFpQjtRQUNqQix1QkFBdUI7S0FDMUIsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDO0FBWFcsUUFBQSwyQkFBMkIsK0JBV3RDIn0=
@@ -0,0 +1,129 @@
1
+ import { mkdirSync, mkdtempSync, writeFileSync } from 'node:fs';
2
+ import { tmpdir } from 'node:os';
3
+ import { join } from 'node:path';
4
+ import { beforeAll, describe, expect, it } from 'vitest';
5
+
6
+ import {
7
+ AMBIGUOUS,
8
+ COMPUTED,
9
+ FROM_OBSERVABLE,
10
+ INPUT,
11
+ VIEW_QUERY,
12
+ WRITABLE,
13
+ } from '../signal-kinds.mjs';
14
+ import { collectSignalKinds, collectSignalNames } from '../signal-names.mjs';
15
+
16
+ describe('signal-names', () => {
17
+ let componentPath;
18
+ let missingPath;
19
+
20
+ const write = (path, content) => {
21
+ mkdirSync(join(path, '..'), { recursive: true });
22
+ writeFileSync(path, content, 'utf8');
23
+ };
24
+
25
+ beforeAll(() => {
26
+ const root = mkdtempSync(join(tmpdir(), 'signal-names-'));
27
+
28
+ write(
29
+ join(root, 'node_modules', '@fake', 'barrel', 'package.json'),
30
+ JSON.stringify({ name: '@fake/barrel', types: 'index.d.ts' }),
31
+ );
32
+ write(
33
+ join(root, 'node_modules', '@fake', 'barrel', 'index.d.ts'),
34
+ `export { ReExportedBase } from './external-base';`,
35
+ );
36
+ write(
37
+ join(root, 'node_modules', '@fake', 'barrel', 'external-base.d.ts'),
38
+ `import * as _angular_core from '@angular/core';
39
+ declare class ReExportedBase {
40
+ readonly fromPackageInput: _angular_core.InputSignal<string>;
41
+ readonly fromPackageAmbiguous: _angular_core.Signal<string>;
42
+ readonly overridable: _angular_core.InputSignal<string>;
43
+ }
44
+ export { ReExportedBase };`,
45
+ );
46
+
47
+ write(
48
+ join(root, 'src', 'local-base.ts'),
49
+ `import { input, signal, viewChild } from '@angular/core';
50
+ import { ReExportedBase as PackageBase } from '@fake/barrel';
51
+
52
+ export class LocalBase extends PackageBase {
53
+ readonly fromLocal = signal(1);
54
+ readonly fromLocalInput = input.required<string>();
55
+ readonly requiredQuery = viewChild.required('panel');
56
+ readonly overridable = signal('child-wins');
57
+
58
+ get fromLocalType(): Signal<number> {
59
+ return this.fromLocal;
60
+ }
61
+ }`,
62
+ );
63
+
64
+ componentPath = join(root, 'src', 'sample.component.ts');
65
+ write(
66
+ componentPath,
67
+ `import { computed, contentChildren, input, model, signal, viewChild } from '@angular/core';
68
+ import { toSignal } from '@angular/core/rxjs-interop';
69
+ import { LocalBase } from './local-base';
70
+
71
+ export class SampleComponent extends LocalBase {
72
+ readonly fromChild = signal(0);
73
+ readonly fromChildModel = model('');
74
+ readonly fromChildComputed = computed(() => this.fromChild());
75
+ readonly fromChildInput = input('');
76
+ readonly fromChildQuery = viewChild('panel');
77
+ readonly fromChildChildren = contentChildren('item');
78
+ readonly fromChildStream = toSignal(this.source$);
79
+ plainField = 1;
80
+
81
+ helper() {
82
+ return this.fromChild();
83
+ }
84
+ }`,
85
+ );
86
+
87
+ missingPath = join(root, 'src', 'missing.component.ts');
88
+ });
89
+
90
+ it('returns undefined when the component cannot be read', () => {
91
+ expect(collectSignalKinds(missingPath)).toBeUndefined();
92
+ expect(collectSignalNames(missingPath)).toEqual(new Set());
93
+ });
94
+
95
+ it('collects kinds through local inheritance and barrel re-exports', () => {
96
+ const kinds = collectSignalKinds(componentPath);
97
+
98
+ expect(kinds).toBeDefined();
99
+ expect(kinds.get('fromChild')).toBe(WRITABLE);
100
+ expect(kinds.get('fromChildModel')).toBe(WRITABLE);
101
+ expect(kinds.get('fromChildComputed')).toBe(COMPUTED);
102
+ expect(kinds.get('fromChildInput')).toBe(INPUT);
103
+ expect(kinds.get('fromChildQuery')).toBe(VIEW_QUERY);
104
+ expect(kinds.get('fromChildChildren')).toBe(VIEW_QUERY);
105
+ expect(kinds.get('fromChildStream')).toBe(FROM_OBSERVABLE);
106
+
107
+ expect(kinds.get('fromLocal')).toBe(WRITABLE);
108
+ expect(kinds.get('fromLocalInput')).toBe(INPUT);
109
+ expect(kinds.get('requiredQuery')).toBe(VIEW_QUERY);
110
+ expect(kinds.get('fromLocalType')).toBe(AMBIGUOUS);
111
+
112
+ expect(kinds.get('fromPackageInput')).toBe(INPUT);
113
+ expect(kinds.get('fromPackageAmbiguous')).toBe(AMBIGUOUS);
114
+ expect(kinds.get('overridable')).toBe(WRITABLE);
115
+
116
+ expect(kinds.has('plainField')).toBe(false);
117
+ });
118
+
119
+ it('collects only signal member names', () => {
120
+ const names = collectSignalNames(componentPath);
121
+
122
+ expect(names.has('fromChild')).toBe(true);
123
+ expect(names.has('fromLocal')).toBe(true);
124
+ expect(names.has('fromPackageInput')).toBe(true);
125
+ expect(names.has('plainField')).toBe(false);
126
+ expect(names.has('helper')).toBe(false);
127
+ });
128
+ });
129
+