@nx/angular 16.8.0-beta.4 → 16.8.0-beta.5

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 (212) hide show
  1. package/mf/mf.js +31 -36
  2. package/package.json +10 -10
  3. package/plugins/component-testing.js +48 -40
  4. package/src/builders/module-federation-dev-server/module-federation-dev-server.impl.js +4 -6
  5. package/src/builders/module-federation-dev-ssr/module-federation-dev-ssr.impl.js +4 -6
  6. package/src/builders/utilities/buildable-libs.js +1 -2
  7. package/src/builders/utilities/module-federation.js +2 -3
  8. package/src/builders/utilities/webpack.js +16 -21
  9. package/src/builders/webpack-browser/webpack-browser.impl.js +13 -13
  10. package/src/builders/webpack-dev-server/lib/normalize-options.js +8 -1
  11. package/src/builders/webpack-dev-server/webpack-dev-server.impl.js +24 -18
  12. package/src/builders/webpack-server/webpack-server.impl.js +5 -7
  13. package/src/executors/browser-esbuild/browser-esbuild.impl.js +19 -23
  14. package/src/executors/browser-esbuild/lib/buildable-libs.js +1 -2
  15. package/src/executors/delegate-build/delegate-build.impl.js +9 -12
  16. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-package/entry-point/compile-ngc.transform.js +4 -7
  17. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-package/entry-point/entry-point.transform.js +4 -5
  18. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-package/entry-point/write-package.transform.js +158 -156
  19. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-package/options.di.js +6 -3
  20. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ngc/compile-source-files.js +118 -118
  21. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/styles/stylesheet-processor.js +96 -103
  22. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ts/cache-compiler-host.js +20 -12
  23. package/src/executors/ng-packagr-lite/ng-packagr-lite.impl.js +18 -21
  24. package/src/executors/package/ng-packagr-adjustments/ng-package/entry-point/compile-ngc.transform.js +6 -9
  25. package/src/executors/package/ng-packagr-adjustments/ng-package/options.di.js +6 -3
  26. package/src/executors/package/ng-packagr-adjustments/ngc/compile-source-files.js +122 -122
  27. package/src/executors/package/ng-packagr-adjustments/styles/stylesheet-processor.js +96 -103
  28. package/src/executors/package/ng-packagr-adjustments/ts/cache-compiler-host.js +21 -13
  29. package/src/executors/package/ng-packagr-adjustments/utils/ng-compiler-cli.js +5 -8
  30. package/src/executors/package/package.impl.js +33 -38
  31. package/src/executors/utilities/angular-version-utils.js +1 -1
  32. package/src/executors/utilities/tailwindcss.js +2 -2
  33. package/src/executors/utilities/typescript.js +23 -28
  34. package/src/generators/add-linting/add-linting.js +76 -74
  35. package/src/generators/add-linting/lib/create-eslint-configuration.js +12 -4
  36. package/src/generators/application/application.js +56 -55
  37. package/src/generators/application/lib/add-e2e.js +36 -40
  38. package/src/generators/application/lib/add-linting.js +12 -15
  39. package/src/generators/application/lib/add-proxy-config.js +4 -1
  40. package/src/generators/application/lib/add-unit-test-runner.js +15 -18
  41. package/src/generators/application/lib/create-files.js +44 -47
  42. package/src/generators/application/lib/enable-strict-type-checking.js +2 -2
  43. package/src/generators/application/lib/normalize-options.js +37 -25
  44. package/src/generators/application/lib/set-app-strict-default.js +1 -2
  45. package/src/generators/application/lib/update-editor-tsconfig.js +1 -2
  46. package/src/generators/component/component.js +40 -43
  47. package/src/generators/component/lib/normalize-options.js +15 -5
  48. package/src/generators/component-cypress-spec/component-cypress-spec.js +25 -28
  49. package/src/generators/component-story/component-story.js +19 -22
  50. package/src/generators/convert-to-with-mf/convert-to-with-mf.js +19 -22
  51. package/src/generators/convert-to-with-mf/lib/get-webpack-config-path.js +3 -4
  52. package/src/generators/convert-tslint-to-eslint/convert-tslint-to-eslint.js +103 -106
  53. package/src/generators/cypress-component-configuration/cypress-component-configuration.js +59 -62
  54. package/src/generators/directive/directive.js +21 -24
  55. package/src/generators/directive/lib/normalize-options.js +11 -5
  56. package/src/generators/host/host.js +77 -67
  57. package/src/generators/host/lib/add-ssr.js +32 -35
  58. package/src/generators/init/init.js +101 -92
  59. package/src/generators/library/lib/add-standalone-component.js +18 -13
  60. package/src/generators/library/lib/enable-strict-type-checking.js +17 -5
  61. package/src/generators/library/lib/normalize-options.js +68 -53
  62. package/src/generators/library/library.js +89 -92
  63. package/src/generators/library-secondary-entry-point/lib/add-files.js +5 -1
  64. package/src/generators/library-secondary-entry-point/lib/normalize-options.js +6 -3
  65. package/src/generators/library-secondary-entry-point/lib/update-linting-file-patterns.js +1 -2
  66. package/src/generators/library-secondary-entry-point/library-secondary-entry-point.js +6 -9
  67. package/src/generators/move/lib/normalize-schema.js +5 -1
  68. package/src/generators/move/lib/update-module-name.js +1 -1
  69. package/src/generators/move/lib/update-ng-package.js +1 -2
  70. package/src/generators/move/lib/update-secondary-entry-points.js +1 -2
  71. package/src/generators/move/move.js +9 -12
  72. package/src/generators/ng-add/migrate-from-angular-cli.js +54 -53
  73. package/src/generators/ng-add/migrators/builders/angular-devkit-karma.migrator.js +4 -3
  74. package/src/generators/ng-add/migrators/builders/angular-devkit-ng-packagr.migrator.js +11 -12
  75. package/src/generators/ng-add/migrators/builders/angular-eslint-lint.migrator.js +39 -42
  76. package/src/generators/ng-add/migrators/builders/builder.migrator.js +1 -2
  77. package/src/generators/ng-add/migrators/migrator.js +7 -11
  78. package/src/generators/ng-add/migrators/projects/app.migrator.js +39 -43
  79. package/src/generators/ng-add/migrators/projects/e2e.migrator.js +115 -91
  80. package/src/generators/ng-add/migrators/projects/lib.migrator.js +23 -31
  81. package/src/generators/ng-add/migrators/projects/project.migrator.js +10 -14
  82. package/src/generators/ng-add/ng-add.js +5 -8
  83. package/src/generators/ng-add/utilities/dependencies.js +2 -3
  84. package/src/generators/ng-add/utilities/format-files-task.js +1 -1
  85. package/src/generators/ng-add/utilities/projects.js +1 -1
  86. package/src/generators/ng-add/utilities/workspace.js +25 -36
  87. package/src/generators/ngrx/lib/add-imports-to-module.js +1 -2
  88. package/src/generators/ngrx/lib/add-ngrx-to-package-json.js +1 -3
  89. package/src/generators/ngrx/lib/generate-files.js +11 -2
  90. package/src/generators/ngrx/lib/normalize-options.js +9 -4
  91. package/src/generators/ngrx/lib/validate-options.js +3 -3
  92. package/src/generators/ngrx/ngrx.js +18 -21
  93. package/src/generators/ngrx-feature-store/files/base/__directory__/__fileName__.actions.ts__tmpl__ +1 -1
  94. package/src/generators/ngrx-feature-store/files/base/__directory__/__fileName__.effects.spec.ts__tmpl__ +2 -2
  95. package/src/generators/ngrx-feature-store/files/base/__directory__/__fileName__.effects.ts__tmpl__ +2 -2
  96. package/src/generators/ngrx-feature-store/files/base/__directory__/__fileName__.facade.spec.ts__tmpl__ +6 -6
  97. package/src/generators/ngrx-feature-store/files/base/__directory__/__fileName__.facade.ts__tmpl__ +3 -3
  98. package/src/generators/ngrx-feature-store/files/base/__directory__/__fileName__.reducer.spec.ts__tmpl__ +3 -3
  99. package/src/generators/ngrx-feature-store/files/base/__directory__/__fileName__.reducer.ts__tmpl__ +2 -2
  100. package/src/generators/ngrx-feature-store/files/base/__directory__/__fileName__.selectors.spec.ts__tmpl__ +3 -3
  101. package/src/generators/ngrx-feature-store/files/base/__directory__/__fileName__.selectors.ts__tmpl__ +1 -1
  102. package/src/generators/ngrx-feature-store/files/no-inject/__directory__/__fileName__.effects.ts__tmpl__ +2 -2
  103. package/src/generators/ngrx-feature-store/files/no-inject/__directory__/__fileName__.facade.ts__tmpl__ +3 -3
  104. package/src/generators/ngrx-feature-store/lib/add-exports-barrel.js +4 -1
  105. package/src/generators/ngrx-feature-store/lib/add-imports.js +1 -1
  106. package/src/generators/ngrx-feature-store/lib/add-ngrx-to-package-json.js +1 -3
  107. package/src/generators/ngrx-feature-store/lib/generate-files.js +20 -4
  108. package/src/generators/ngrx-feature-store/lib/normalize-options.d.ts +1 -0
  109. package/src/generators/ngrx-feature-store/lib/normalize-options.js +22 -3
  110. package/src/generators/ngrx-feature-store/lib/validate-options.js +2 -2
  111. package/src/generators/ngrx-feature-store/ngrx-feature-store.js +18 -21
  112. package/src/generators/ngrx-root-store/lib/add-ngrx-to-package-json.js +8 -6
  113. package/src/generators/ngrx-root-store/lib/normalize-options.js +8 -4
  114. package/src/generators/ngrx-root-store/lib/validate-options.js +2 -2
  115. package/src/generators/ngrx-root-store/ngrx-root-store.js +27 -30
  116. package/src/generators/pipe/lib/normalize-options.js +9 -3
  117. package/src/generators/pipe/pipe.js +21 -24
  118. package/src/generators/remote/lib/add-ssr.js +46 -47
  119. package/src/generators/remote/lib/find-next-available-port.js +1 -2
  120. package/src/generators/remote/remote.js +52 -49
  121. package/src/generators/scam/lib/convert-component-to-scam.js +1 -2
  122. package/src/generators/scam/lib/normalize-options.js +11 -4
  123. package/src/generators/scam/scam.js +15 -12
  124. package/src/generators/scam-directive/lib/normalize-options.js +12 -4
  125. package/src/generators/scam-directive/scam-directive.js +13 -10
  126. package/src/generators/scam-pipe/lib/normalize-options.js +12 -4
  127. package/src/generators/scam-pipe/scam-pipe.js +13 -10
  128. package/src/generators/scam-to-standalone/scam-to-standalone.js +23 -26
  129. package/src/generators/setup-mf/lib/add-cypress-workaround.js +1 -1
  130. package/src/generators/setup-mf/lib/add-remote-to-host.js +4 -1
  131. package/src/generators/setup-mf/lib/change-build-target.js +10 -4
  132. package/src/generators/setup-mf/lib/generate-config.js +1 -1
  133. package/src/generators/setup-mf/lib/get-remotes-with-ports.js +1 -2
  134. package/src/generators/setup-mf/lib/normalize-options.js +5 -2
  135. package/src/generators/setup-mf/lib/set-tsconfig-target.js +7 -1
  136. package/src/generators/setup-mf/lib/setup-host-if-dynamic.js +1 -2
  137. package/src/generators/setup-mf/lib/setup-serve-target.js +10 -3
  138. package/src/generators/setup-mf/setup-mf.js +32 -35
  139. package/src/generators/setup-ssr/lib/generate-files.js +8 -5
  140. package/src/generators/setup-ssr/lib/normalize-options.js +9 -10
  141. package/src/generators/setup-ssr/lib/update-project-config.js +21 -17
  142. package/src/generators/setup-ssr/setup-ssr.js +26 -27
  143. package/src/generators/setup-tailwind/lib/add-tailwind-config-path-to-project.js +6 -4
  144. package/src/generators/setup-tailwind/lib/detect-tailwind-installed-version.js +1 -2
  145. package/src/generators/setup-tailwind/lib/normalize-options.js +4 -1
  146. package/src/generators/setup-tailwind/lib/update-application-styles.js +5 -6
  147. package/src/generators/setup-tailwind/setup-tailwind.js +20 -23
  148. package/src/generators/stories/lib/get-e2e-project.js +1 -1
  149. package/src/generators/stories/stories.js +43 -50
  150. package/src/generators/storybook-configuration/lib/assert-compatible-storybook-version.js +1 -1
  151. package/src/generators/storybook-configuration/lib/generate-stories.js +10 -13
  152. package/src/generators/storybook-configuration/lib/generate-storybook-configuration.js +12 -15
  153. package/src/generators/storybook-configuration/storybook-configuration.js +20 -16
  154. package/src/generators/utils/create-ts-config.js +1 -1
  155. package/src/generators/utils/entry-point.js +1 -2
  156. package/src/generators/utils/export-scam.js +1 -1
  157. package/src/generators/utils/insert-ngmodule-import.js +1 -1
  158. package/src/generators/utils/path.js +3 -3
  159. package/src/generators/utils/project.js +2 -3
  160. package/src/generators/utils/selector.js +1 -1
  161. package/src/generators/utils/storybook-ast/component-info.js +1 -2
  162. package/src/generators/utils/storybook-ast/entry-point.js +1 -2
  163. package/src/generators/utils/storybook-ast/module-info.js +1 -2
  164. package/src/generators/utils/storybook-ast/tree-utilities.js +1 -1
  165. package/src/generators/utils/testing.js +141 -139
  166. package/src/generators/utils/validations.js +1 -1
  167. package/src/generators/utils/version-utils.js +5 -7
  168. package/src/generators/web-worker/lib/normalize-options.js +6 -3
  169. package/src/generators/web-worker/web-worker.js +25 -28
  170. package/src/migrations/update-14-2-0/remove-show-circular-dependencies-option.js +10 -13
  171. package/src/migrations/update-14-2-0/update-angular-cli.js +14 -18
  172. package/src/migrations/update-14-2-0/update-libraries-secondary-entrypoints.js +22 -26
  173. package/src/migrations/update-14-2-0/update-ngcc-target.js +10 -14
  174. package/src/migrations/update-14-2-0/update-router-initial-navigation.js +31 -39
  175. package/src/migrations/update-14-2-0/update-tsconfig-target.js +48 -56
  176. package/src/migrations/update-14-5-0/migrate-mfe-to-mf.js +14 -17
  177. package/src/migrations/update-14-5-2/update-angular-cli.js +14 -18
  178. package/src/migrations/update-14-6-0/update-angular-cli.js +14 -18
  179. package/src/migrations/update-15-0-0/add-karma-inputs.js +27 -32
  180. package/src/migrations/update-15-0-0/switch-to-jasmine-marbles.js +62 -68
  181. package/src/migrations/update-15-2-0/remove-browserlist-config.js +34 -37
  182. package/src/migrations/update-15-2-0/remove-platform-server-exports.js +49 -52
  183. package/src/migrations/update-15-2-0/update-angular-cli.js +14 -18
  184. package/src/migrations/update-15-2-0/update-karma-main-file.js +11 -12
  185. package/src/migrations/update-15-2-0/update-typescript-target.js +40 -39
  186. package/src/migrations/update-15-2-0/update-workspace-config.js +16 -19
  187. package/src/migrations/update-15-5-0/update-angular-cli.js +14 -18
  188. package/src/migrations/update-15-7-0/install-required-packages.js +26 -28
  189. package/src/migrations/update-15-8-0/update-angular-cli.js +14 -18
  190. package/src/migrations/update-15-9-0/update-file-server-executor.js +31 -35
  191. package/src/migrations/update-15-9-0/update-testing-tsconfig.js +17 -22
  192. package/src/migrations/update-16-0-0/remove-karma-defaults.js +15 -18
  193. package/src/migrations/update-16-0-0/remove-library-generator-simple-module-name-option.js +22 -25
  194. package/src/migrations/update-16-0-0/remove-protractor-defaults.js +15 -18
  195. package/src/migrations/update-16-0-0-add-nx-packages/update-16-0-0-add-nx-packages.js +3 -6
  196. package/src/migrations/update-16-1-0/extract-standalone-config-from-bootstrap.js +38 -42
  197. package/src/migrations/update-16-1-0/remove-ngcc-invocation.js +15 -19
  198. package/src/migrations/update-16-1-0/remove-render-module-platform-server-exports.js +49 -52
  199. package/src/migrations/update-16-1-0/update-angular-cli.js +14 -18
  200. package/src/migrations/update-16-1-0/update-server-executor-config.js +13 -16
  201. package/src/migrations/update-16-2-0/switch-data-persistence-operators-imports-to-ngrx-router-store.js +25 -29
  202. package/src/migrations/update-16-4-0/rename-angular-eslint-accesibility-rules.js +13 -16
  203. package/src/migrations/update-16-4-0/update-angular-cli.js +14 -18
  204. package/src/migrations/update-16-6-0/explicitly-set-projects-to-update-buildable-deps.js +19 -24
  205. package/src/migrations/update-16-7-0/update-angular-cli.js +14 -18
  206. package/src/migrations/utils/projects.js +9 -15
  207. package/src/utils/get-mf-projects.js +1 -2
  208. package/src/utils/mf/utils.js +43 -44
  209. package/src/utils/mf/with-module-federation-ssr.js +39 -24
  210. package/src/utils/mf/with-module-federation.js +40 -21
  211. package/src/utils/nx-devkit/ast-utils.js +2 -3
  212. package/src/utils/version-utils.js +2 -4
@@ -1,21 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
3
  const devkit_1 = require("@nx/devkit");
5
- function default_1(tree) {
6
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
7
- let shouldFormat = false;
8
- (0, devkit_1.updateJson)(tree, 'package.json', (json) => {
9
- var _a, _b;
10
- if ((_b = (_a = json.scripts) === null || _a === void 0 ? void 0 : _a.postinstall) === null || _b === void 0 ? void 0 : _b.includes('ngcc ')) {
11
- json.scripts.postinstall = json.scripts.postinstall.replace(/(.*)(ngcc --properties es2015 )(.*)/, '$1ngcc --properties es2020 $3');
12
- shouldFormat = true;
13
- }
14
- return json;
15
- });
16
- if (shouldFormat) {
17
- yield (0, devkit_1.formatFiles)(tree);
4
+ async function default_1(tree) {
5
+ let shouldFormat = false;
6
+ (0, devkit_1.updateJson)(tree, 'package.json', (json) => {
7
+ if (json.scripts?.postinstall?.includes('ngcc ')) {
8
+ json.scripts.postinstall = json.scripts.postinstall.replace(/(.*)(ngcc --properties es2015 )(.*)/, '$1ngcc --properties es2020 $3');
9
+ shouldFormat = true;
18
10
  }
11
+ return json;
19
12
  });
13
+ if (shouldFormat) {
14
+ await (0, devkit_1.formatFiles)(tree);
15
+ }
20
16
  }
21
17
  exports.default = default_1;
@@ -1,36 +1,33 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
3
  const devkit_1 = require("@nx/devkit");
5
4
  const tsquery_1 = require("@phenomnomnominal/tsquery");
6
5
  const typescript_1 = require("typescript");
7
- function default_1(tree) {
8
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
9
- const printer = (0, typescript_1.createPrinter)();
10
- const projects = yield getProjectsWithAngularRouter(tree);
11
- for (const project of projects) {
12
- (0, devkit_1.visitNotIgnoredFiles)(tree, project.root, (filePath) => {
13
- // we are only interested in .ts files
14
- if (!filePath.endsWith('.ts')) {
15
- return;
16
- }
17
- const content = tree.read(filePath, 'utf-8');
18
- const ast = tsquery_1.tsquery.ast(content);
19
- const routerModuleForRootCall = getRouterModuleForRootCall(ast);
20
- if (!routerModuleForRootCall) {
21
- return;
22
- }
23
- const initialNavigationAssignment = getInitialNavigationAssignment(routerModuleForRootCall.arguments[1]);
24
- if (!initialNavigationAssignment) {
25
- return;
26
- }
27
- const updatedInitialNavigationAssignment = printer.printNode(typescript_1.EmitHint.Unspecified, typescript_1.factory.updatePropertyAssignment(initialNavigationAssignment, initialNavigationAssignment.name, typescript_1.factory.createIdentifier(`'enabledBlocking'`)), initialNavigationAssignment.getSourceFile());
28
- const updatedContent = `${content.slice(0, initialNavigationAssignment.getStart())}${updatedInitialNavigationAssignment}${content.slice(initialNavigationAssignment.getEnd())}`;
29
- tree.write(filePath, updatedContent);
30
- });
31
- }
32
- yield (0, devkit_1.formatFiles)(tree);
33
- });
6
+ async function default_1(tree) {
7
+ const printer = (0, typescript_1.createPrinter)();
8
+ const projects = await getProjectsWithAngularRouter(tree);
9
+ for (const project of projects) {
10
+ (0, devkit_1.visitNotIgnoredFiles)(tree, project.root, (filePath) => {
11
+ // we are only interested in .ts files
12
+ if (!filePath.endsWith('.ts')) {
13
+ return;
14
+ }
15
+ const content = tree.read(filePath, 'utf-8');
16
+ const ast = tsquery_1.tsquery.ast(content);
17
+ const routerModuleForRootCall = getRouterModuleForRootCall(ast);
18
+ if (!routerModuleForRootCall) {
19
+ return;
20
+ }
21
+ const initialNavigationAssignment = getInitialNavigationAssignment(routerModuleForRootCall.arguments[1]);
22
+ if (!initialNavigationAssignment) {
23
+ return;
24
+ }
25
+ const updatedInitialNavigationAssignment = printer.printNode(typescript_1.EmitHint.Unspecified, typescript_1.factory.updatePropertyAssignment(initialNavigationAssignment, initialNavigationAssignment.name, typescript_1.factory.createIdentifier(`'enabledBlocking'`)), initialNavigationAssignment.getSourceFile());
26
+ const updatedContent = `${content.slice(0, initialNavigationAssignment.getStart())}${updatedInitialNavigationAssignment}${content.slice(initialNavigationAssignment.getEnd())}`;
27
+ tree.write(filePath, updatedContent);
28
+ });
29
+ }
30
+ await (0, devkit_1.formatFiles)(tree);
34
31
  }
35
32
  exports.default = default_1;
36
33
  function getInitialNavigationAssignment(extraOptionsLiteral) {
@@ -44,17 +41,12 @@ function getInitialNavigationAssignment(extraOptionsLiteral) {
44
41
  }
45
42
  return null;
46
43
  }
47
- function getProjectsWithAngularRouter(tree) {
48
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
49
- const projectGraph = yield (0, devkit_1.createProjectGraphAsync)();
50
- return Object.entries(projectGraph.dependencies)
51
- .filter(([node, dep]) => dep.some(({ target }) => {
52
- var _a;
53
- return target === 'npm:@angular/router' &&
54
- !((_a = projectGraph.externalNodes) === null || _a === void 0 ? void 0 : _a[node]);
55
- }))
56
- .map(([projectName]) => (0, devkit_1.readProjectConfiguration)(tree, projectName));
57
- });
44
+ async function getProjectsWithAngularRouter(tree) {
45
+ const projectGraph = await (0, devkit_1.createProjectGraphAsync)();
46
+ return Object.entries(projectGraph.dependencies)
47
+ .filter(([node, dep]) => dep.some(({ target }) => target === 'npm:@angular/router' &&
48
+ !projectGraph.externalNodes?.[node]))
49
+ .map(([projectName]) => (0, devkit_1.readProjectConfiguration)(tree, projectName));
58
50
  }
59
51
  function getRouterModuleForRootCall(sourceFile) {
60
52
  // narrow down call expressions
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
3
  const devkit_1 = require("@nx/devkit");
5
4
  const devkit_2 = require("@nx/devkit");
6
5
  const tsquery_1 = require("@phenomnomnominal/tsquery");
@@ -16,62 +15,56 @@ const executors = [
16
15
  '@nrwl/angular:package',
17
16
  ];
18
17
  const skipTargets = ['es2020', 'es2021', 'es2022', 'esnext'];
19
- function default_1(tree) {
20
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
21
- const tsConfigPaths = yield collectTsConfigPaths(tree);
22
- for (const tsConfigPath of tsConfigPaths) {
23
- (0, devkit_2.updateJson)(tree, tsConfigPath, (json) => {
24
- var _a, _b, _c;
25
- if (!((_a = json.compilerOptions) === null || _a === void 0 ? void 0 : _a.target) ||
26
- (((_b = json.compilerOptions) === null || _b === void 0 ? void 0 : _b.target) &&
27
- !skipTargets.includes(json.compilerOptions.target.toLowerCase()))) {
28
- (_c = json.compilerOptions) !== null && _c !== void 0 ? _c : (json.compilerOptions = {});
29
- json.compilerOptions.target = 'es2020';
30
- }
31
- return json;
32
- }, {
33
- allowTrailingComma: true,
34
- disallowComments: false,
35
- });
36
- }
37
- yield (0, devkit_2.formatFiles)(tree);
38
- });
18
+ async function default_1(tree) {
19
+ const tsConfigPaths = await collectTsConfigPaths(tree);
20
+ for (const tsConfigPath of tsConfigPaths) {
21
+ (0, devkit_2.updateJson)(tree, tsConfigPath, (json) => {
22
+ if (!json.compilerOptions?.target ||
23
+ (json.compilerOptions?.target &&
24
+ !skipTargets.includes(json.compilerOptions.target.toLowerCase()))) {
25
+ json.compilerOptions ??= {};
26
+ json.compilerOptions.target = 'es2020';
27
+ }
28
+ return json;
29
+ }, {
30
+ allowTrailingComma: true,
31
+ disallowComments: false,
32
+ });
33
+ }
34
+ await (0, devkit_2.formatFiles)(tree);
39
35
  }
40
36
  exports.default = default_1;
41
- function collectTsConfigPaths(tree) {
42
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
43
- const uniqueTsConfigs = new Set([]);
44
- const projectGraph = yield (0, devkit_2.createProjectGraphAsync)();
45
- const angularProjects = Object.entries(projectGraph.dependencies)
46
- .filter(([node, dep]) => dep.some(({ target }) => { var _a; return target === 'npm:@angular/core' && !((_a = projectGraph.externalNodes) === null || _a === void 0 ? void 0 : _a[node]); }))
47
- .map(([projectName]) => ({
48
- projectName,
49
- project: (0, devkit_2.readProjectConfiguration)(tree, projectName),
50
- }));
51
- for (const { projectName, project } of angularProjects) {
52
- const tsConfigPath = (0, devkit_2.joinPathFragments)(project.root, 'tsconfig.json');
53
- if (tree.exists(tsConfigPath)) {
54
- uniqueTsConfigs.add(tsConfigPath);
55
- const targetTsConfigPaths = getProjectTsConfigPaths(tree, project, projectName, false);
56
- targetTsConfigPaths.forEach((tsConfigPath) => {
57
- var _a;
58
- const tsConfig = (0, devkit_1.readJson)(tree, tsConfigPath, {
59
- allowTrailingComma: true,
60
- disallowComments: false,
61
- });
62
- if ((_a = tsConfig.compilerOptions) === null || _a === void 0 ? void 0 : _a.target) {
63
- uniqueTsConfigs.add(tsConfigPath);
64
- }
37
+ async function collectTsConfigPaths(tree) {
38
+ const uniqueTsConfigs = new Set([]);
39
+ const projectGraph = await (0, devkit_2.createProjectGraphAsync)();
40
+ const angularProjects = Object.entries(projectGraph.dependencies)
41
+ .filter(([node, dep]) => dep.some(({ target }) => target === 'npm:@angular/core' && !projectGraph.externalNodes?.[node]))
42
+ .map(([projectName]) => ({
43
+ projectName,
44
+ project: (0, devkit_2.readProjectConfiguration)(tree, projectName),
45
+ }));
46
+ for (const { projectName, project } of angularProjects) {
47
+ const tsConfigPath = (0, devkit_2.joinPathFragments)(project.root, 'tsconfig.json');
48
+ if (tree.exists(tsConfigPath)) {
49
+ uniqueTsConfigs.add(tsConfigPath);
50
+ const targetTsConfigPaths = getProjectTsConfigPaths(tree, project, projectName, false);
51
+ targetTsConfigPaths.forEach((tsConfigPath) => {
52
+ const tsConfig = (0, devkit_1.readJson)(tree, tsConfigPath, {
53
+ allowTrailingComma: true,
54
+ disallowComments: false,
65
55
  });
66
- continue;
67
- }
68
- const tsConfigPaths = getProjectTsConfigPaths(tree, project, projectName);
69
- for (const tsConfigPath of tsConfigPaths) {
70
- uniqueTsConfigs.add(tsConfigPath);
71
- }
56
+ if (tsConfig.compilerOptions?.target) {
57
+ uniqueTsConfigs.add(tsConfigPath);
58
+ }
59
+ });
60
+ continue;
72
61
  }
73
- return Array.from(uniqueTsConfigs);
74
- });
62
+ const tsConfigPaths = getProjectTsConfigPaths(tree, project, projectName);
63
+ for (const tsConfigPath of tsConfigPaths) {
64
+ uniqueTsConfigs.add(tsConfigPath);
65
+ }
66
+ }
67
+ return Array.from(uniqueTsConfigs);
75
68
  }
76
69
  function getProjectTsConfigPaths(tree, project, projectName, shouldWarn = true) {
77
70
  const tsConfigPaths = new Set();
@@ -149,12 +142,11 @@ function getTsConfigFromJestConfig(tree, jestConfigPath, targetName, projectName
149
142
  return tsConfigPath;
150
143
  }
151
144
  function getPathValuesFromTarget(target, option) {
152
- var _a, _b;
153
145
  const values = [];
154
- if ((_a = target.options) === null || _a === void 0 ? void 0 : _a[option]) {
146
+ if (target.options?.[option]) {
155
147
  values.push(target.options[option]);
156
148
  }
157
- Object.values((_b = target.configurations) !== null && _b !== void 0 ? _b : {}).forEach((options) => {
149
+ Object.values(target.configurations ?? {}).forEach((options) => {
158
150
  if (options[option]) {
159
151
  values.push(options[option]);
160
152
  }
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.renameSetupMfeGeneratorUsages = exports.replaceExportedMFETypes = exports.replaceNrwlAngularMfImport = void 0;
4
- const tslib_1 = require("tslib");
5
4
  const devkit_1 = require("@nx/devkit");
6
5
  const path_1 = require("path");
7
6
  const tsquery_1 = require("@phenomnomnominal/tsquery");
@@ -73,22 +72,20 @@ function renameSetupMfeGeneratorUsages(fileContents) {
73
72
  return fileContents;
74
73
  }
75
74
  exports.renameSetupMfeGeneratorUsages = renameSetupMfeGeneratorUsages;
76
- function default_1(tree) {
77
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
78
- (0, devkit_1.visitNotIgnoredFiles)(tree, '/', (path) => {
79
- const pathExtName = (0, path_1.extname)(path);
80
- if (pathExtName !== '.ts' && pathExtName !== '.js') {
81
- return;
82
- }
83
- let fileContents = tree.read(path, 'utf-8');
84
- fileContents = replaceNrwlAngularMfImport(fileContents);
85
- if (pathExtName === '.ts') {
86
- // Only TS files can import types and interfaces
87
- fileContents = replaceExportedMFETypes(fileContents);
88
- fileContents = renameSetupMfeGeneratorUsages(fileContents);
89
- }
90
- tree.write(path, fileContents);
91
- });
75
+ async function default_1(tree) {
76
+ (0, devkit_1.visitNotIgnoredFiles)(tree, '/', (path) => {
77
+ const pathExtName = (0, path_1.extname)(path);
78
+ if (pathExtName !== '.ts' && pathExtName !== '.js') {
79
+ return;
80
+ }
81
+ let fileContents = tree.read(path, 'utf-8');
82
+ fileContents = replaceNrwlAngularMfImport(fileContents);
83
+ if (pathExtName === '.ts') {
84
+ // Only TS files can import types and interfaces
85
+ fileContents = replaceExportedMFETypes(fileContents);
86
+ fileContents = renameSetupMfeGeneratorUsages(fileContents);
87
+ }
88
+ tree.write(path, fileContents);
92
89
  });
93
90
  }
94
91
  exports.default = default_1;
@@ -1,26 +1,22 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
3
  const devkit_1 = require("@nx/devkit");
5
4
  const angularCliVersion = '~14.1.0';
6
- function default_1(tree) {
7
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
8
- let shouldFormat = false;
9
- (0, devkit_1.updateJson)(tree, 'package.json', (json) => {
10
- var _a, _b;
11
- if ((_a = json.devDependencies) === null || _a === void 0 ? void 0 : _a['@angular/cli']) {
12
- json.devDependencies['@angular/cli'] = angularCliVersion;
13
- shouldFormat = true;
14
- }
15
- else if ((_b = json.dependencies) === null || _b === void 0 ? void 0 : _b['@angular/cli']) {
16
- json.dependencies['@angular/cli'] = angularCliVersion;
17
- shouldFormat = true;
18
- }
19
- return json;
20
- });
21
- if (shouldFormat) {
22
- yield (0, devkit_1.formatFiles)(tree);
5
+ async function default_1(tree) {
6
+ let shouldFormat = false;
7
+ (0, devkit_1.updateJson)(tree, 'package.json', (json) => {
8
+ if (json.devDependencies?.['@angular/cli']) {
9
+ json.devDependencies['@angular/cli'] = angularCliVersion;
10
+ shouldFormat = true;
23
11
  }
12
+ else if (json.dependencies?.['@angular/cli']) {
13
+ json.dependencies['@angular/cli'] = angularCliVersion;
14
+ shouldFormat = true;
15
+ }
16
+ return json;
24
17
  });
18
+ if (shouldFormat) {
19
+ await (0, devkit_1.formatFiles)(tree);
20
+ }
25
21
  }
26
22
  exports.default = default_1;
@@ -1,26 +1,22 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
3
  const devkit_1 = require("@nx/devkit");
5
4
  const angularCliVersion = '~14.2.0';
6
- function default_1(tree) {
7
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
8
- let shouldFormat = false;
9
- (0, devkit_1.updateJson)(tree, 'package.json', (json) => {
10
- var _a, _b;
11
- if ((_a = json.devDependencies) === null || _a === void 0 ? void 0 : _a['@angular/cli']) {
12
- json.devDependencies['@angular/cli'] = angularCliVersion;
13
- shouldFormat = true;
14
- }
15
- else if ((_b = json.dependencies) === null || _b === void 0 ? void 0 : _b['@angular/cli']) {
16
- json.dependencies['@angular/cli'] = angularCliVersion;
17
- shouldFormat = true;
18
- }
19
- return json;
20
- });
21
- if (shouldFormat) {
22
- yield (0, devkit_1.formatFiles)(tree);
5
+ async function default_1(tree) {
6
+ let shouldFormat = false;
7
+ (0, devkit_1.updateJson)(tree, 'package.json', (json) => {
8
+ if (json.devDependencies?.['@angular/cli']) {
9
+ json.devDependencies['@angular/cli'] = angularCliVersion;
10
+ shouldFormat = true;
23
11
  }
12
+ else if (json.dependencies?.['@angular/cli']) {
13
+ json.dependencies['@angular/cli'] = angularCliVersion;
14
+ shouldFormat = true;
15
+ }
16
+ return json;
24
17
  });
18
+ if (shouldFormat) {
19
+ await (0, devkit_1.formatFiles)(tree);
20
+ }
25
21
  }
26
22
  exports.default = default_1;
@@ -1,40 +1,35 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
3
  const devkit_1 = require("@nx/devkit");
5
4
  const executor_options_utils_1 = require("@nx/devkit/src/generators/executor-options-utils");
6
- function default_1(tree) {
7
- var _a, _b, _c, _d;
8
- var _e;
9
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
10
- const nxJson = (0, devkit_1.readNxJson)(tree);
11
- const karmaTargets = getKarmaTargetNames(tree);
12
- const hasProductionFileset = !!((_a = nxJson.namedInputs) === null || _a === void 0 ? void 0 : _a.production);
13
- if (karmaTargets.size > 0 && hasProductionFileset) {
14
- const productionFileset = new Set(nxJson.namedInputs.production);
15
- for (const exclusion of [
16
- '!{projectRoot}/**/*.spec.[jt]s',
17
- '!{projectRoot}/tsconfig.spec.json',
18
- '!{projectRoot}/karma.conf.js',
19
- ]) {
20
- productionFileset.add(exclusion);
21
- }
22
- nxJson.namedInputs.production = Array.from(productionFileset);
5
+ async function default_1(tree) {
6
+ const nxJson = (0, devkit_1.readNxJson)(tree);
7
+ const karmaTargets = getKarmaTargetNames(tree);
8
+ const hasProductionFileset = !!nxJson.namedInputs?.production;
9
+ if (karmaTargets.size > 0 && hasProductionFileset) {
10
+ const productionFileset = new Set(nxJson.namedInputs.production);
11
+ for (const exclusion of [
12
+ '!{projectRoot}/**/*.spec.[jt]s',
13
+ '!{projectRoot}/tsconfig.spec.json',
14
+ '!{projectRoot}/karma.conf.js',
15
+ ]) {
16
+ productionFileset.add(exclusion);
23
17
  }
24
- for (const targetName of karmaTargets) {
25
- (_b = nxJson.targetDefaults) !== null && _b !== void 0 ? _b : (nxJson.targetDefaults = {});
26
- const jestTargetDefaults = ((_c = (_e = nxJson.targetDefaults)[targetName]) !== null && _c !== void 0 ? _c : (_e[targetName] = {}));
27
- (_d = jestTargetDefaults.inputs) !== null && _d !== void 0 ? _d : (jestTargetDefaults.inputs = [
28
- 'default',
29
- hasProductionFileset ? '^production' : '^default',
30
- ...(tree.exists('karma.conf.js')
31
- ? ['{workspaceRoot}/karma.conf.js']
32
- : []),
33
- ]);
34
- }
35
- (0, devkit_1.updateNxJson)(tree, nxJson);
36
- yield (0, devkit_1.formatFiles)(tree);
37
- });
18
+ nxJson.namedInputs.production = Array.from(productionFileset);
19
+ }
20
+ for (const targetName of karmaTargets) {
21
+ nxJson.targetDefaults ??= {};
22
+ const jestTargetDefaults = (nxJson.targetDefaults[targetName] ??= {});
23
+ jestTargetDefaults.inputs ??= [
24
+ 'default',
25
+ hasProductionFileset ? '^production' : '^default',
26
+ ...(tree.exists('karma.conf.js')
27
+ ? ['{workspaceRoot}/karma.conf.js']
28
+ : []),
29
+ ];
30
+ }
31
+ (0, devkit_1.updateNxJson)(tree, nxJson);
32
+ await (0, devkit_1.formatFiles)(tree);
38
33
  }
39
34
  exports.default = default_1;
40
35
  function getKarmaTargetNames(tree) {
@@ -1,83 +1,78 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
3
  const devkit_1 = require("@nx/devkit");
5
4
  const path_1 = require("path");
6
5
  const tsquery_1 = require("@phenomnomnominal/tsquery");
7
6
  const versions_1 = require("../../utils/versions");
8
7
  const semver_1 = require("@nx/devkit/src/utils/semver");
9
8
  const semver_2 = require("semver");
10
- function switchToJasmineMarbles(tree) {
11
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
12
- const usesJasmineMarbles = yield replaceJasmineMarbleUsagesInFiles(tree);
13
- addJasmineMarblesDevDependencyIfUsed(tree, usesJasmineMarbles);
14
- });
9
+ async function switchToJasmineMarbles(tree) {
10
+ const usesJasmineMarbles = await replaceJasmineMarbleUsagesInFiles(tree);
11
+ addJasmineMarblesDevDependencyIfUsed(tree, usesJasmineMarbles);
15
12
  }
16
13
  exports.default = switchToJasmineMarbles;
17
- function replaceJasmineMarbleUsagesInFiles(tree) {
18
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
19
- let usesJasmineMarbles = false;
20
- const projectGraph = yield (() => {
21
- try {
22
- return (0, devkit_1.readCachedProjectGraph)();
14
+ async function replaceJasmineMarbleUsagesInFiles(tree) {
15
+ let usesJasmineMarbles = false;
16
+ const projectGraph = await (() => {
17
+ try {
18
+ return (0, devkit_1.readCachedProjectGraph)();
19
+ }
20
+ catch {
21
+ return (0, devkit_1.createProjectGraphAsync)();
22
+ }
23
+ })();
24
+ const dirsToTraverse = Object.entries(projectGraph.dependencies)
25
+ .filter(([node, dep]) => dep.some(({ target }) => target === 'npm:@nrwl/angular' && !projectGraph.externalNodes?.[node]))
26
+ .map(([projectName]) => (0, devkit_1.readProjectConfiguration)(tree, projectName).root);
27
+ for (const dir of dirsToTraverse) {
28
+ (0, devkit_1.visitNotIgnoredFiles)(tree, dir, (path) => {
29
+ if ((0, path_1.extname)(path) !== '.ts') {
30
+ return;
23
31
  }
24
- catch (_a) {
25
- return (0, devkit_1.createProjectGraphAsync)();
32
+ const fileContents = tree.read(path, 'utf-8');
33
+ if (!fileContents.includes('@nrwl/angular/testing')) {
34
+ return;
26
35
  }
27
- })();
28
- const dirsToTraverse = Object.entries(projectGraph.dependencies)
29
- .filter(([node, dep]) => dep.some(({ target }) => { var _a; return target === 'npm:@nrwl/angular' && !((_a = projectGraph.externalNodes) === null || _a === void 0 ? void 0 : _a[node]); }))
30
- .map(([projectName]) => (0, devkit_1.readProjectConfiguration)(tree, projectName).root);
31
- for (const dir of dirsToTraverse) {
32
- (0, devkit_1.visitNotIgnoredFiles)(tree, dir, (path) => {
33
- if ((0, path_1.extname)(path) !== '.ts') {
34
- return;
35
- }
36
- const fileContents = tree.read(path, 'utf-8');
37
- if (!fileContents.includes('@nrwl/angular/testing')) {
38
- return;
39
- }
40
- const NRWL_ANGULAR_TESTING_IMPORT_SELECTOR = 'ImportDeclaration:has(StringLiteral[value="@nrwl/angular/testing"])';
41
- const ast = tsquery_1.tsquery.ast(fileContents);
42
- const nrwlAngularTestingImportNodes = (0, tsquery_1.tsquery)(ast, NRWL_ANGULAR_TESTING_IMPORT_SELECTOR, { visitAllChildren: true });
43
- if (!nrwlAngularTestingImportNodes ||
44
- nrwlAngularTestingImportNodes.length === 0) {
45
- return;
46
- }
47
- const jasmineMarblesExportsRegex = new RegExp(/(hot|cold|getTestScheduler|time)/);
48
- if (!jasmineMarblesExportsRegex.test(nrwlAngularTestingImportNodes[0].getText())) {
49
- return;
50
- }
51
- const IMPORT_SPECIFIERS_SELECTOR = 'NamedImports > ImportSpecifier';
52
- const importSpecifierNodes = (0, tsquery_1.tsquery)(nrwlAngularTestingImportNodes[0], IMPORT_SPECIFIERS_SELECTOR, { visitAllChildren: true });
53
- if (!importSpecifierNodes || importSpecifierNodes.length === 0) {
54
- return;
55
- }
56
- const validNrwlTestingImports = [];
57
- const validJasmineMarbleImports = [];
58
- for (const node of importSpecifierNodes) {
59
- const importSymbol = node.getText();
60
- if (jasmineMarblesExportsRegex.test(importSymbol)) {
61
- validJasmineMarbleImports.push(importSymbol);
62
- }
63
- else {
64
- validNrwlTestingImports.push(importSymbol);
65
- }
36
+ const NRWL_ANGULAR_TESTING_IMPORT_SELECTOR = 'ImportDeclaration:has(StringLiteral[value="@nrwl/angular/testing"])';
37
+ const ast = tsquery_1.tsquery.ast(fileContents);
38
+ const nrwlAngularTestingImportNodes = (0, tsquery_1.tsquery)(ast, NRWL_ANGULAR_TESTING_IMPORT_SELECTOR, { visitAllChildren: true });
39
+ if (!nrwlAngularTestingImportNodes ||
40
+ nrwlAngularTestingImportNodes.length === 0) {
41
+ return;
42
+ }
43
+ const jasmineMarblesExportsRegex = new RegExp(/(hot|cold|getTestScheduler|time)/);
44
+ if (!jasmineMarblesExportsRegex.test(nrwlAngularTestingImportNodes[0].getText())) {
45
+ return;
46
+ }
47
+ const IMPORT_SPECIFIERS_SELECTOR = 'NamedImports > ImportSpecifier';
48
+ const importSpecifierNodes = (0, tsquery_1.tsquery)(nrwlAngularTestingImportNodes[0], IMPORT_SPECIFIERS_SELECTOR, { visitAllChildren: true });
49
+ if (!importSpecifierNodes || importSpecifierNodes.length === 0) {
50
+ return;
51
+ }
52
+ const validNrwlTestingImports = [];
53
+ const validJasmineMarbleImports = [];
54
+ for (const node of importSpecifierNodes) {
55
+ const importSymbol = node.getText();
56
+ if (jasmineMarblesExportsRegex.test(importSymbol)) {
57
+ validJasmineMarbleImports.push(importSymbol);
66
58
  }
67
- if (!usesJasmineMarbles && validJasmineMarbleImports.length > 0) {
68
- usesJasmineMarbles = true;
59
+ else {
60
+ validNrwlTestingImports.push(importSymbol);
69
61
  }
70
- const newFileContents = `${fileContents.slice(0, nrwlAngularTestingImportNodes[0].getStart())}${validNrwlTestingImports.length > 0
71
- ? `import {${validNrwlTestingImports.join(',')}} from '@nrwl/angular/testing';`
72
- : ''}
62
+ }
63
+ if (!usesJasmineMarbles && validJasmineMarbleImports.length > 0) {
64
+ usesJasmineMarbles = true;
65
+ }
66
+ const newFileContents = `${fileContents.slice(0, nrwlAngularTestingImportNodes[0].getStart())}${validNrwlTestingImports.length > 0
67
+ ? `import {${validNrwlTestingImports.join(',')}} from '@nrwl/angular/testing';`
68
+ : ''}
73
69
  ${validJasmineMarbleImports.length > 0
74
- ? `import {${validJasmineMarbleImports.join(',')}} from 'jasmine-marbles';${fileContents.slice(nrwlAngularTestingImportNodes[0].getEnd(), -1)}`
75
- : ''}`;
76
- tree.write(path, newFileContents);
77
- });
78
- }
79
- return usesJasmineMarbles;
80
- });
70
+ ? `import {${validJasmineMarbleImports.join(',')}} from 'jasmine-marbles';${fileContents.slice(nrwlAngularTestingImportNodes[0].getEnd(), -1)}`
71
+ : ''}`;
72
+ tree.write(path, newFileContents);
73
+ });
74
+ }
75
+ return usesJasmineMarbles;
81
76
  }
82
77
  function addJasmineMarblesDevDependencyIfUsed(tree, usesJasmineMarbles) {
83
78
  if (!usesJasmineMarbles) {
@@ -95,13 +90,12 @@ function addJasmineMarblesDevDependencyIfUsed(tree, usesJasmineMarbles) {
95
90
  });
96
91
  }
97
92
  function getJasmineMarblesVersion(tree) {
98
- var _a;
99
93
  let rxjsVersion;
100
94
  try {
101
95
  const { dependencies, devDependencies } = (0, devkit_1.readJson)(tree, 'package.json');
102
- rxjsVersion = (0, semver_1.checkAndCleanWithSemver)('rxjs', (_a = dependencies === null || dependencies === void 0 ? void 0 : dependencies.rxjs) !== null && _a !== void 0 ? _a : devDependencies === null || devDependencies === void 0 ? void 0 : devDependencies.rxjs);
96
+ rxjsVersion = (0, semver_1.checkAndCleanWithSemver)('rxjs', dependencies?.rxjs ?? devDependencies?.rxjs);
103
97
  }
104
- catch (_b) {
98
+ catch {
105
99
  rxjsVersion = (0, semver_1.checkAndCleanWithSemver)('rxjs', versions_1.rxjsVersion);
106
100
  }
107
101
  return (0, semver_2.gte)(rxjsVersion, '7.0.0') ? versions_1.jasmineMarblesVersion : '~0.8.3';