@angular/cli 14.0.0-next.0 → 14.0.0-next.11

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 (240) hide show
  1. package/bin/ng.js +3 -5
  2. package/lib/cli/index.d.ts +1 -2
  3. package/lib/cli/index.js +16 -45
  4. package/lib/config/schema.json +30 -15
  5. package/lib/config/workspace-schema.d.ts +6 -1
  6. package/lib/init.js +10 -9
  7. package/package.json +21 -23
  8. package/{models → src/analytics}/analytics-collector.d.ts +0 -0
  9. package/{models → src/analytics}/analytics-collector.js +8 -2
  10. package/src/analytics/analytics.d.ts +47 -0
  11. package/src/analytics/analytics.js +306 -0
  12. package/src/command-builder/architect-base-command-module.d.ts +30 -0
  13. package/src/command-builder/architect-base-command-module.js +165 -0
  14. package/src/command-builder/architect-command-module.d.ts +25 -0
  15. package/src/command-builder/architect-command-module.js +134 -0
  16. package/src/command-builder/command-module.d.ts +89 -0
  17. package/src/command-builder/command-module.js +198 -0
  18. package/{utilities/package-json.js → src/command-builder/command-runner.d.ts} +2 -2
  19. package/src/command-builder/command-runner.js +168 -0
  20. package/src/command-builder/schematics-command-module.d.ts +43 -0
  21. package/src/command-builder/schematics-command-module.js +333 -0
  22. package/src/command-builder/utilities/command.d.ts +13 -0
  23. package/src/command-builder/utilities/command.js +27 -0
  24. package/src/command-builder/utilities/json-help.d.ts +36 -0
  25. package/src/command-builder/utilities/json-help.js +94 -0
  26. package/src/command-builder/utilities/json-schema.d.ts +40 -0
  27. package/{utilities → src/command-builder/utilities}/json-schema.js +20 -121
  28. package/src/command-builder/utilities/normalize-options-middleware.d.ts +18 -0
  29. package/src/command-builder/utilities/normalize-options-middleware.js +59 -0
  30. package/{models → src/command-builder/utilities}/schematic-engine-host.d.ts +2 -2
  31. package/{models → src/command-builder/utilities}/schematic-engine-host.js +30 -17
  32. package/src/command-builder/utilities/schematic-workflow.d.ts +14 -0
  33. package/src/command-builder/utilities/schematic-workflow.js +68 -0
  34. package/src/commands/add/cli.d.ts +33 -0
  35. package/{commands/add-impl.js → src/commands/add/cli.js} +108 -80
  36. package/src/commands/add/long-description.md +7 -0
  37. package/src/commands/analytics/cli.d.ts +16 -0
  38. package/src/commands/analytics/cli.js +35 -0
  39. package/src/commands/analytics/info/cli.d.ts +16 -0
  40. package/src/commands/analytics/info/cli.js +26 -0
  41. package/src/commands/analytics/settings/cli.d.ts +35 -0
  42. package/src/commands/analytics/settings/cli.js +61 -0
  43. package/src/commands/build/cli.d.ts +16 -0
  44. package/src/commands/build/cli.js +23 -0
  45. package/{commands/build-long.md → src/commands/build/long-description.md} +0 -0
  46. package/src/commands/cache/clean/cli.d.ts +17 -0
  47. package/src/commands/cache/clean/cli.js +32 -0
  48. package/src/commands/cache/cli.d.ts +17 -0
  49. package/src/commands/cache/cli.js +38 -0
  50. package/src/commands/cache/info/cli.d.ts +20 -0
  51. package/src/commands/cache/info/cli.js +82 -0
  52. package/src/commands/cache/long-description.md +53 -0
  53. package/src/commands/cache/settings/cli.d.ts +27 -0
  54. package/src/commands/cache/settings/cli.js +42 -0
  55. package/src/commands/cache/utilities.d.ts +11 -0
  56. package/src/commands/cache/utilities.js +49 -0
  57. package/src/commands/completion/cli.d.ts +16 -0
  58. package/src/commands/completion/cli.js +31 -0
  59. package/src/commands/completion/long-description.md +1 -0
  60. package/src/commands/config/cli.d.ts +24 -0
  61. package/src/commands/config/cli.js +168 -0
  62. package/{commands/config-long.md → src/commands/config/long-description.md} +2 -2
  63. package/src/commands/deploy/cli.d.ts +17 -0
  64. package/src/commands/deploy/cli.js +49 -0
  65. package/{commands/deploy-long.md → src/commands/deploy/long-description.md} +0 -0
  66. package/src/commands/doc/cli.d.ts +23 -0
  67. package/{commands/doc-impl.js → src/commands/doc/cli.js} +41 -12
  68. package/src/commands/e2e/cli.d.ts +18 -0
  69. package/src/commands/e2e/cli.js +35 -0
  70. package/src/commands/extract-i18n/cli.d.ts +15 -0
  71. package/src/commands/extract-i18n/cli.js +20 -0
  72. package/src/commands/generate/cli.d.ts +39 -0
  73. package/src/commands/generate/cli.js +145 -0
  74. package/src/commands/lint/cli.d.ts +17 -0
  75. package/src/commands/lint/cli.js +28 -0
  76. package/{commands/lint-long.md → src/commands/lint/long-description.md} +0 -0
  77. package/src/commands/make-this-awesome/cli.d.ts +17 -0
  78. package/{commands/easter-egg-impl.js → src/commands/make-this-awesome/cli.js} +17 -10
  79. package/src/commands/new/cli.d.ts +27 -0
  80. package/src/commands/new/cli.js +82 -0
  81. package/src/commands/run/cli.d.ts +25 -0
  82. package/src/commands/run/cli.js +83 -0
  83. package/{commands/run-long.md → src/commands/run/long-description.md} +0 -0
  84. package/src/commands/serve/cli.d.ts +16 -0
  85. package/src/commands/serve/cli.js +21 -0
  86. package/src/commands/test/cli.d.ts +16 -0
  87. package/src/commands/test/cli.js +23 -0
  88. package/{commands/test-long.md → src/commands/test/long-description.md} +0 -0
  89. package/{commands/update-impl.d.ts → src/commands/update/cli.d.ts} +26 -9
  90. package/{commands/update-impl.js → src/commands/update/cli.js} +363 -316
  91. package/{commands/update-long.md → src/commands/update/long-description.md} +0 -0
  92. package/src/commands/update/schematic/index.js +33 -20
  93. package/src/commands/version/cli.d.ts +18 -0
  94. package/{commands/version-impl.js → src/commands/version/cli.js} +56 -74
  95. package/src/typings-bazel.d.ts +14 -0
  96. package/src/typings.d.ts +1 -14
  97. package/{utilities → src/utilities}/color.d.ts +0 -0
  98. package/{utilities → src/utilities}/color.js +5 -1
  99. package/{utilities → src/utilities}/config.d.ts +7 -6
  100. package/{utilities → src/utilities}/config.js +39 -93
  101. package/src/utilities/environment-options.d.ts +12 -0
  102. package/src/utilities/environment-options.js +24 -0
  103. package/{utilities → src/utilities}/find-up.d.ts +0 -0
  104. package/{utilities → src/utilities}/find-up.js +5 -1
  105. package/{utilities → src/utilities}/json-file.d.ts +0 -0
  106. package/{utilities → src/utilities}/json-file.js +1 -0
  107. package/{utilities → src/utilities}/log-file.d.ts +0 -0
  108. package/{utilities → src/utilities}/log-file.js +0 -0
  109. package/src/utilities/memoize.d.ts +15 -0
  110. package/src/utilities/memoize.js +69 -0
  111. package/src/utilities/package-manager.d.ts +41 -0
  112. package/src/utilities/package-manager.js +287 -0
  113. package/{utilities → src/utilities}/package-metadata.d.ts +15 -37
  114. package/{utilities → src/utilities}/package-metadata.js +15 -27
  115. package/{utilities → src/utilities}/package-tree.d.ts +2 -2
  116. package/{utilities → src/utilities}/package-tree.js +5 -1
  117. package/{utilities → src/utilities}/project.d.ts +0 -0
  118. package/{utilities → src/utilities}/project.js +6 -7
  119. package/{utilities → src/utilities}/prompt.d.ts +2 -0
  120. package/{utilities → src/utilities}/prompt.js +25 -4
  121. package/{utilities → src/utilities}/spinner.d.ts +0 -0
  122. package/{utilities → src/utilities}/spinner.js +0 -0
  123. package/{utilities → src/utilities}/tty.d.ts +0 -0
  124. package/{utilities → src/utilities}/tty.js +0 -0
  125. package/{models → src/utilities}/version.d.ts +2 -1
  126. package/{models → src/utilities}/version.js +6 -6
  127. package/bin/postinstall/analytics-prompt.js +0 -27
  128. package/bin/postinstall/script.js +0 -16
  129. package/commands/add-impl.d.ts +0 -21
  130. package/commands/add.d.ts +0 -42
  131. package/commands/add.js +0 -10
  132. package/commands/add.json +0 -54
  133. package/commands/add.md +0 -10
  134. package/commands/analytics-impl.d.ts +0 -13
  135. package/commands/analytics-impl.js +0 -80
  136. package/commands/analytics-long.md +0 -8
  137. package/commands/analytics.d.ts +0 -46
  138. package/commands/analytics.js +0 -31
  139. package/commands/analytics.json +0 -37
  140. package/commands/build-impl.d.ts +0 -14
  141. package/commands/build-impl.js +0 -21
  142. package/commands/build.d.ts +0 -30
  143. package/commands/build.js +0 -10
  144. package/commands/build.json +0 -16
  145. package/commands/config-impl.d.ts +0 -15
  146. package/commands/config-impl.js +0 -167
  147. package/commands/config.d.ts +0 -34
  148. package/commands/config.js +0 -10
  149. package/commands/config.json +0 -43
  150. package/commands/definitions.json +0 -66
  151. package/commands/deploy-impl.d.ts +0 -15
  152. package/commands/deploy-impl.js +0 -36
  153. package/commands/deploy.d.ts +0 -30
  154. package/commands/deploy.js +0 -10
  155. package/commands/deploy.json +0 -34
  156. package/commands/doc-impl.d.ts +0 -13
  157. package/commands/doc.d.ts +0 -39
  158. package/commands/doc.js +0 -14
  159. package/commands/doc.json +0 -46
  160. package/commands/e2e-impl.d.ts +0 -16
  161. package/commands/e2e-impl.js +0 -36
  162. package/commands/e2e-long.md +0 -4
  163. package/commands/e2e.d.ts +0 -29
  164. package/commands/e2e.js +0 -10
  165. package/commands/e2e.json +0 -17
  166. package/commands/easter-egg-impl.d.ts +0 -12
  167. package/commands/easter-egg.d.ts +0 -14
  168. package/commands/easter-egg.js +0 -10
  169. package/commands/easter-egg.json +0 -12
  170. package/commands/extract-i18n-impl.d.ts +0 -14
  171. package/commands/extract-i18n-impl.js +0 -32
  172. package/commands/extract-i18n.d.ts +0 -29
  173. package/commands/extract-i18n.js +0 -10
  174. package/commands/extract-i18n.json +0 -17
  175. package/commands/generate-impl.d.ts +0 -18
  176. package/commands/generate-impl.js +0 -89
  177. package/commands/generate.d.ts +0 -37
  178. package/commands/generate.js +0 -10
  179. package/commands/generate.json +0 -31
  180. package/commands/help-impl.d.ts +0 -12
  181. package/commands/help-impl.js +0 -26
  182. package/commands/help-long.md +0 -7
  183. package/commands/help.d.ts +0 -17
  184. package/commands/help.js +0 -10
  185. package/commands/help.json +0 -13
  186. package/commands/lint-impl.d.ts +0 -16
  187. package/commands/lint-impl.js +0 -69
  188. package/commands/lint.d.ts +0 -29
  189. package/commands/lint.js +0 -10
  190. package/commands/lint.json +0 -36
  191. package/commands/new-impl.d.ts +0 -16
  192. package/commands/new-impl.js +0 -37
  193. package/commands/new.d.ts +0 -41
  194. package/commands/new.js +0 -10
  195. package/commands/new.json +0 -34
  196. package/commands/new.md +0 -16
  197. package/commands/run-impl.d.ts +0 -13
  198. package/commands/run-impl.js +0 -22
  199. package/commands/run.d.ts +0 -30
  200. package/commands/run.js +0 -10
  201. package/commands/run.json +0 -36
  202. package/commands/serve-impl.d.ts +0 -15
  203. package/commands/serve-impl.js +0 -24
  204. package/commands/serve.d.ts +0 -29
  205. package/commands/serve.js +0 -10
  206. package/commands/serve.json +0 -17
  207. package/commands/test-impl.d.ts +0 -15
  208. package/commands/test-impl.js +0 -22
  209. package/commands/test.d.ts +0 -29
  210. package/commands/test.js +0 -10
  211. package/commands/test.json +0 -17
  212. package/commands/update.d.ts +0 -61
  213. package/commands/update.js +0 -10
  214. package/commands/update.json +0 -78
  215. package/commands/version-impl.d.ts +0 -17
  216. package/commands/version.d.ts +0 -17
  217. package/commands/version.js +0 -10
  218. package/commands/version.json +0 -13
  219. package/commands.json +0 -20
  220. package/models/analytics.d.ts +0 -58
  221. package/models/analytics.js +0 -358
  222. package/models/architect-command.d.ts +0 -35
  223. package/models/architect-command.js +0 -376
  224. package/models/command-runner.d.ts +0 -24
  225. package/models/command-runner.js +0 -241
  226. package/models/command.d.ts +0 -34
  227. package/models/command.js +0 -143
  228. package/models/interface.d.ts +0 -196
  229. package/models/interface.js +0 -31
  230. package/models/parser.d.ts +0 -39
  231. package/models/parser.js +0 -349
  232. package/models/schematic-command.d.ts +0 -55
  233. package/models/schematic-command.js +0 -485
  234. package/utilities/INITIAL_COMMIT_MESSAGE.txt +0 -8
  235. package/utilities/install-package.d.ts +0 -16
  236. package/utilities/install-package.js +0 -193
  237. package/utilities/json-schema.d.ts +0 -17
  238. package/utilities/package-json.d.ts +0 -249
  239. package/utilities/package-manager.d.ts +0 -15
  240. package/utilities/package-manager.js +0 -83
@@ -8,7 +8,11 @@
8
8
  */
9
9
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
10
  if (k2 === undefined) k2 = k;
11
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
11
+ var desc = Object.getOwnPropertyDescriptor(m, k);
12
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
+ desc = { enumerable: true, get: function() { return m[k]; } };
14
+ }
15
+ Object.defineProperty(o, k2, desc);
12
16
  }) : (function(o, m, k, k2) {
13
17
  if (k2 === undefined) k2 = k;
14
18
  o[k2] = m[k];
@@ -31,7 +35,7 @@ const core_1 = require("@angular-devkit/core");
31
35
  const schematics_1 = require("@angular-devkit/schematics");
32
36
  const npa = __importStar(require("npm-package-arg"));
33
37
  const semver = __importStar(require("semver"));
34
- const package_metadata_1 = require("../../../../utilities/package-metadata");
38
+ const package_metadata_1 = require("../../../utilities/package-metadata");
35
39
  // Angular guarantees that a major is compatible with its following major (so packages that depend
36
40
  // on Angular 5 are also compatible with Angular 6). This is, in code, represented by verifying
37
41
  // that all other packages that have a peer dependency of `"@angular/core": "^5.0.0"` actually
@@ -282,6 +286,7 @@ function _getUpdateMetadata(packageJson, logger) {
282
286
  }
283
287
  else if (typeof packageGroup == 'object' &&
284
288
  packageGroup &&
289
+ !Array.isArray(packageGroup) &&
285
290
  Object.values(packageGroup).every((x) => typeof x == 'string')) {
286
291
  result.packageGroup = packageGroup;
287
292
  }
@@ -358,23 +363,26 @@ function _usageMessage(options, infoMap, logger) {
358
363
  })
359
364
  .filter(({ info, version, target }) => (target === null || target === void 0 ? void 0 : target['ng-update']) && semver.compare(info.installed.version, version) < 0)
360
365
  .map(({ name, info, version, tag, target }) => {
361
- var _a;
366
+ var _a, _b, _c;
362
367
  // Look for packageGroup.
363
- const packageGroup = target['ng-update']['packageGroup'];
368
+ const packageGroup = (_a = target['ng-update']) === null || _a === void 0 ? void 0 : _a['packageGroup'];
364
369
  if (packageGroup) {
365
- const packageGroupName = target['ng-update']['packageGroupName'] || packageGroup[0];
370
+ const packageGroupNames = Array.isArray(packageGroup)
371
+ ? packageGroup
372
+ : Object.keys(packageGroup);
373
+ const packageGroupName = ((_b = target['ng-update']) === null || _b === void 0 ? void 0 : _b['packageGroupName']) || packageGroupNames[0];
366
374
  if (packageGroupName) {
367
375
  if (packageGroups.has(name)) {
368
376
  return null;
369
377
  }
370
- packageGroup.forEach((x) => packageGroups.set(x, packageGroupName));
378
+ packageGroupNames.forEach((x) => packageGroups.set(x, packageGroupName));
371
379
  packageGroups.set(packageGroupName, packageGroupName);
372
380
  name = packageGroupName;
373
381
  }
374
382
  }
375
383
  let command = `ng update ${name}`;
376
384
  if (!tag) {
377
- command += `@${((_a = semver.parse(version)) === null || _a === void 0 ? void 0 : _a.major) || version}`;
385
+ command += `@${((_c = semver.parse(version)) === null || _c === void 0 ? void 0 : _c.major) || version}`;
378
386
  }
379
387
  else if (tag == 'next') {
380
388
  command += ' --next';
@@ -504,29 +512,34 @@ function _addPackageGroup(tree, packages, allDependencies, npmPackageJson, logge
504
512
  if (!ngUpdateMetadata) {
505
513
  return;
506
514
  }
507
- let packageGroup = ngUpdateMetadata['packageGroup'];
515
+ const packageGroup = ngUpdateMetadata['packageGroup'];
508
516
  if (!packageGroup) {
509
517
  return;
510
518
  }
519
+ let packageGroupNormalized = {};
511
520
  if (Array.isArray(packageGroup) && !packageGroup.some((x) => typeof x != 'string')) {
512
- packageGroup = packageGroup.reduce((acc, curr) => {
521
+ packageGroupNormalized = packageGroup.reduce((acc, curr) => {
513
522
  acc[curr] = maybePackage;
514
523
  return acc;
515
524
  }, {});
516
525
  }
517
- // Only need to check if it's an object because we set it right the time before.
518
- if (typeof packageGroup != 'object' ||
519
- packageGroup === null ||
520
- Object.values(packageGroup).some((v) => typeof v != 'string')) {
521
- logger.warn(`packageGroup metadata of package ${npmPackageJson.name} is malformed.`);
526
+ else if (typeof packageGroup == 'object' &&
527
+ packageGroup &&
528
+ !Array.isArray(packageGroup) &&
529
+ Object.values(packageGroup).every((x) => typeof x == 'string')) {
530
+ packageGroupNormalized = packageGroup;
531
+ }
532
+ else {
533
+ logger.warn(`packageGroup metadata of package ${npmPackageJson.name} is malformed. Ignoring.`);
522
534
  return;
523
535
  }
524
- Object.keys(packageGroup)
525
- .filter((name) => !packages.has(name)) // Don't override names from the command line.
526
- .filter((name) => allDependencies.has(name)) // Remove packages that aren't installed.
527
- .forEach((name) => {
528
- packages.set(name, packageGroup[name]);
529
- });
536
+ for (const [name, value] of Object.entries(packageGroupNormalized)) {
537
+ // Don't override names from the command line.
538
+ // Remove packages that aren't installed.
539
+ if (!packages.has(name) && allDependencies.has(name)) {
540
+ packages.set(name, value);
541
+ }
542
+ }
530
543
  }
531
544
  /**
532
545
  * Add peer dependencies of packages on the command line to the list of packages to update.
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @license
3
+ * Copyright Google LLC All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be
6
+ * found in the LICENSE file at https://angular.io/license
7
+ */
8
+ import { Argv } from 'yargs';
9
+ import { CommandModule, CommandModuleImplementation } from '../../command-builder/command-module';
10
+ export declare class VersionCommandModule extends CommandModule implements CommandModuleImplementation {
11
+ command: string;
12
+ aliases: string[];
13
+ describe: string;
14
+ longDescriptionPath?: string | undefined;
15
+ builder(localYargs: Argv): Argv;
16
+ run(): Promise<void>;
17
+ private getVersion;
18
+ }
@@ -10,59 +10,63 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
10
10
  return (mod && mod.__esModule) ? mod : { "default": mod };
11
11
  };
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
- exports.VersionCommand = void 0;
14
- const child_process_1 = require("child_process");
13
+ exports.VersionCommandModule = void 0;
15
14
  const module_1 = __importDefault(require("module"));
16
- const command_1 = require("../models/command");
17
- const color_1 = require("../utilities/color");
18
- const package_manager_1 = require("../utilities/package-manager");
15
+ const path_1 = require("path");
16
+ const command_module_1 = require("../../command-builder/command-module");
17
+ const color_1 = require("../../utilities/color");
19
18
  /**
20
19
  * Major versions of Node.js that are officially supported by Angular.
21
20
  */
22
- const SUPPORTED_NODE_MAJORS = [12, 14, 16];
23
- class VersionCommand extends command_1.Command {
21
+ const SUPPORTED_NODE_MAJORS = [14, 16];
22
+ const PACKAGE_PATTERNS = [
23
+ /^@angular\/.*/,
24
+ /^@angular-devkit\/.*/,
25
+ /^@bazel\/.*/,
26
+ /^@ngtools\/.*/,
27
+ /^@nguniversal\/.*/,
28
+ /^@schematics\/.*/,
29
+ /^rxjs$/,
30
+ /^typescript$/,
31
+ /^ng-packagr$/,
32
+ /^webpack$/,
33
+ ];
34
+ class VersionCommandModule extends command_module_1.CommandModule {
24
35
  constructor() {
25
36
  super(...arguments);
26
- this.localRequire = module_1.default.createRequire(__filename);
27
- // Trailing slash is used to allow the path to be treated as a directory
28
- this.workspaceRequire = module_1.default.createRequire(this.context.root + '/');
37
+ this.command = 'version';
38
+ this.aliases = ['v'];
39
+ this.describe = 'Outputs Angular CLI version.';
40
+ }
41
+ builder(localYargs) {
42
+ return localYargs;
29
43
  }
30
44
  async run() {
31
- const cliPackage = this.localRequire('../package.json');
45
+ var _a;
46
+ const { packageManager, logger, root } = this.context;
47
+ const localRequire = module_1.default.createRequire((0, path_1.resolve)(__filename, '../../../'));
48
+ // Trailing slash is used to allow the path to be treated as a directory
49
+ const workspaceRequire = module_1.default.createRequire(root + '/');
50
+ const cliPackage = localRequire('./package.json');
32
51
  let workspacePackage;
33
52
  try {
34
- workspacePackage = this.workspaceRequire('./package.json');
53
+ workspacePackage = workspaceRequire('./package.json');
35
54
  }
36
55
  catch { }
37
56
  const [nodeMajor] = process.versions.node.split('.').map((part) => Number(part));
38
57
  const unsupportedNodeVersion = !SUPPORTED_NODE_MAJORS.includes(nodeMajor);
39
- const patterns = [
40
- /^@angular\/.*/,
41
- /^@angular-devkit\/.*/,
42
- /^@bazel\/.*/,
43
- /^@ngtools\/.*/,
44
- /^@nguniversal\/.*/,
45
- /^@schematics\/.*/,
46
- /^rxjs$/,
47
- /^typescript$/,
48
- /^ng-packagr$/,
49
- /^webpack$/,
50
- ];
51
- const packageNames = [
52
- ...Object.keys(cliPackage.dependencies || {}),
53
- ...Object.keys(cliPackage.devDependencies || {}),
54
- ...Object.keys((workspacePackage === null || workspacePackage === void 0 ? void 0 : workspacePackage.dependencies) || {}),
55
- ...Object.keys((workspacePackage === null || workspacePackage === void 0 ? void 0 : workspacePackage.devDependencies) || {}),
56
- ];
57
- const versions = packageNames
58
- .filter((x) => patterns.some((p) => p.test(x)))
59
- .reduce((acc, name) => {
60
- if (name in acc) {
61
- return acc;
58
+ const packageNames = new Set(Object.keys({
59
+ ...cliPackage.dependencies,
60
+ ...cliPackage.devDependencies,
61
+ ...workspacePackage === null || workspacePackage === void 0 ? void 0 : workspacePackage.dependencies,
62
+ ...workspacePackage === null || workspacePackage === void 0 ? void 0 : workspacePackage.devDependencies,
63
+ }));
64
+ const versions = {};
65
+ for (const name of packageNames) {
66
+ if (PACKAGE_PATTERNS.some((p) => p.test(name))) {
67
+ versions[name] = this.getVersion(name, workspaceRequire, localRequire);
62
68
  }
63
- acc[name] = this.getVersion(name);
64
- return acc;
65
- }, {});
69
+ }
66
70
  const ngCliVersion = cliPackage.version;
67
71
  let angularCoreVersion = '';
68
72
  const angularSameAsCore = [];
@@ -70,11 +74,10 @@ class VersionCommand extends command_1.Command {
70
74
  // Filter all angular versions that are the same as core.
71
75
  angularCoreVersion = versions['@angular/core'];
72
76
  if (angularCoreVersion) {
73
- for (const angularPackage of Object.keys(versions)) {
74
- if (versions[angularPackage] == angularCoreVersion &&
75
- angularPackage.startsWith('@angular/')) {
76
- angularSameAsCore.push(angularPackage.replace(/^@angular\//, ''));
77
- delete versions[angularPackage];
77
+ for (const [name, version] of Object.entries(versions)) {
78
+ if (version === angularCoreVersion && name.startsWith('@angular/')) {
79
+ angularSameAsCore.push(name.replace(/^@angular\//, ''));
80
+ delete versions[name];
78
81
  }
79
82
  }
80
83
  // Make sure we list them in alphabetical order.
@@ -93,11 +96,11 @@ class VersionCommand extends command_1.Command {
93
96
  .split('\n')
94
97
  .map((x) => color_1.colors.red(x))
95
98
  .join('\n');
96
- this.logger.info(asciiArt);
97
- this.logger.info(`
99
+ logger.info(asciiArt);
100
+ logger.info(`
98
101
  Angular CLI: ${ngCliVersion}
99
102
  Node: ${process.versions.node}${unsupportedNodeVersion ? ' (Unsupported)' : ''}
100
- Package Manager: ${await this.getPackageManager()}
103
+ Package Manager: ${packageManager.name} ${(_a = packageManager.version) !== null && _a !== void 0 ? _a : '<error>'}
101
104
  OS: ${process.platform} ${process.arch}
102
105
 
103
106
  Angular: ${angularCoreVersion}
@@ -126,54 +129,33 @@ class VersionCommand extends command_1.Command {
126
129
  .join('\n')}
127
130
  `.replace(/^ {6}/gm, ''));
128
131
  if (unsupportedNodeVersion) {
129
- this.logger.warn(`Warning: The current version of Node (${process.versions.node}) is not supported by Angular.`);
132
+ logger.warn(`Warning: The current version of Node (${process.versions.node}) is not supported by Angular.`);
130
133
  }
131
134
  }
132
- getVersion(moduleName) {
135
+ getVersion(moduleName, workspaceRequire, localRequire) {
133
136
  let packageInfo;
134
137
  let cliOnly = false;
135
138
  // Try to find the package in the workspace
136
139
  try {
137
- packageInfo = this.workspaceRequire(`${moduleName}/package.json`);
140
+ packageInfo = workspaceRequire(`${moduleName}/package.json`);
138
141
  }
139
142
  catch { }
140
143
  // If not found, try to find within the CLI
141
144
  if (!packageInfo) {
142
145
  try {
143
- packageInfo = this.localRequire(`${moduleName}/package.json`);
146
+ packageInfo = localRequire(`${moduleName}/package.json`);
144
147
  cliOnly = true;
145
148
  }
146
149
  catch { }
147
150
  }
148
- let version;
149
151
  // If found, attempt to get the version
150
152
  if (packageInfo) {
151
153
  try {
152
- version = packageInfo.version + (cliOnly ? ' (cli-only)' : '');
154
+ return packageInfo.version + (cliOnly ? ' (cli-only)' : '');
153
155
  }
154
156
  catch { }
155
157
  }
156
- return version || '<error>';
157
- }
158
- async getPackageManager() {
159
- try {
160
- const manager = await (0, package_manager_1.getPackageManager)(this.context.root);
161
- const version = (0, child_process_1.execSync)(`${manager} --version`, {
162
- encoding: 'utf8',
163
- stdio: ['ignore', 'pipe', 'ignore'],
164
- env: {
165
- ...process.env,
166
- // NPM updater notifier will prevents the child process from closing until it timeout after 3 minutes.
167
- NO_UPDATE_NOTIFIER: '1',
168
- NPM_CONFIG_UPDATE_NOTIFIER: 'false',
169
- },
170
- }).trim();
171
- return `${manager} ${version}`;
172
- }
173
- catch {
174
- return '<error>';
175
- }
158
+ return '<error>';
176
159
  }
177
160
  }
178
- exports.VersionCommand = VersionCommand;
179
- VersionCommand.aliases = ['v'];
161
+ exports.VersionCommandModule = VersionCommandModule;
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @license
3
+ * Copyright Google LLC All Rights Reserved.
4
+ *
5
+ * Use of this source code is governed by an MIT-style license that can be
6
+ * found in the LICENSE file at https://angular.io/license
7
+ */
8
+
9
+ /* eslint-disable import/no-extraneous-dependencies */
10
+ // Workaround for https://github.com/bazelbuild/rules_nodejs/issues/1033
11
+ // Alternative approach instead of https://github.com/angular/angular/pull/33226
12
+ declare module '@yarnpkg/lockfile' {
13
+ export * from '@types/yarnpkg__lockfile';
14
+ }
package/src/typings.d.ts CHANGED
@@ -5,20 +5,7 @@
5
5
  * Use of this source code is governed by an MIT-style license that can be
6
6
  * found in the LICENSE file at https://angular.io/license
7
7
  */
8
- declare module '@yarnpkg/lockfile' {
9
- function parse(data: string): Record<string, any>;
10
- }
11
- declare module 'ini' {
12
- function parse(data: string): Record<string, any>;
13
- }
14
8
  declare module 'npm-pick-manifest' {
15
- function pickManifest(metadata: import('../utilities/package-metadata').PackageMetadata, selector: string): import('../utilities/package-metadata').PackageManifest;
9
+ function pickManifest(metadata: import('./utilities/package-metadata').PackageMetadata, selector: string): import('./utilities/package-metadata').PackageManifest;
16
10
  export = pickManifest;
17
11
  }
18
- declare module 'pacote' {
19
- function manifest(specifier: string, options: Record<string, unknown>): Promise<{
20
- name: string;
21
- version: string;
22
- }>;
23
- function packument(specifier: string, options: Record<string, unknown>): Promise<import('../utilities/package-metadata').NpmRepositoryPackageJson>;
24
- }
File without changes
@@ -8,7 +8,11 @@
8
8
  */
9
9
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
10
  if (k2 === undefined) k2 = k;
11
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
11
+ var desc = Object.getOwnPropertyDescriptor(m, k);
12
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
+ desc = { enumerable: true, get: function() { return m[k]; } };
14
+ }
15
+ Object.defineProperty(o, k2, desc);
12
16
  }) : (function(o, m, k, k2) {
13
17
  if (k2 === undefined) k2 = k;
14
18
  o[k2] = m[k];
@@ -6,25 +6,26 @@
6
6
  * found in the LICENSE file at https://angular.io/license
7
7
  */
8
8
  import { json, workspaces } from '@angular-devkit/core';
9
+ import { PackageManager } from '../../lib/config/workspace-schema';
9
10
  import { JSONFile } from './json-file';
10
11
  export declare const workspaceSchemaPath: string;
11
12
  export declare class AngularWorkspace {
12
- private workspace;
13
+ private readonly workspace;
13
14
  readonly filePath: string;
14
15
  readonly basePath: string;
15
16
  constructor(workspace: workspaces.WorkspaceDefinition, filePath: string);
16
17
  get extensions(): Record<string, json.JsonValue | undefined>;
17
18
  get projects(): workspaces.ProjectDefinitionCollection;
18
- getCli(): Record<string, any>;
19
- getProjectCli(projectName: string): Record<string, any>;
19
+ getCli(): Record<string, any> | undefined;
20
+ getProjectCli(projectName: string): Record<string, any> | undefined;
21
+ save(): Promise<void>;
20
22
  static load(workspaceFilePath: string): Promise<AngularWorkspace>;
21
23
  }
22
- export declare function getWorkspace(level?: 'local' | 'global'): Promise<AngularWorkspace | null>;
24
+ export declare function getWorkspace(level?: 'local' | 'global'): Promise<AngularWorkspace | undefined>;
23
25
  export declare function createGlobalSettings(): string;
24
26
  export declare function getWorkspaceRaw(level?: 'local' | 'global'): [JSONFile | null, string | null];
25
27
  export declare function validateWorkspace(data: json.JsonObject): Promise<void>;
26
28
  export declare function getProjectByCwd(workspace: AngularWorkspace): string | null;
27
- export declare function getConfiguredPackageManager(): Promise<string | null>;
28
- export declare function migrateLegacyGlobalConfig(): boolean;
29
+ export declare function getConfiguredPackageManager(): Promise<PackageManager | null>;
29
30
  export declare function getSchematicDefaults(collection: string, schematic: string, project?: string | null): Promise<{}>;
30
31
  export declare function isWarningEnabled(warning: string): Promise<boolean>;
@@ -8,7 +8,11 @@
8
8
  */
9
9
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
10
  if (k2 === undefined) k2 = k;
11
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
11
+ var desc = Object.getOwnPropertyDescriptor(m, k);
12
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
+ desc = { enumerable: true, get: function() { return m[k]; } };
14
+ }
15
+ Object.defineProperty(o, k2, desc);
12
16
  }) : (function(o, m, k, k2) {
13
17
  if (k2 === undefined) k2 = k;
14
18
  o[k2] = m[k];
@@ -26,7 +30,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
26
30
  return result;
27
31
  };
28
32
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.isWarningEnabled = exports.getSchematicDefaults = exports.migrateLegacyGlobalConfig = exports.getConfiguredPackageManager = exports.getProjectByCwd = exports.validateWorkspace = exports.getWorkspaceRaw = exports.createGlobalSettings = exports.getWorkspace = exports.AngularWorkspace = exports.workspaceSchemaPath = void 0;
33
+ exports.isWarningEnabled = exports.getSchematicDefaults = exports.getConfiguredPackageManager = exports.getProjectByCwd = exports.validateWorkspace = exports.getWorkspaceRaw = exports.createGlobalSettings = exports.getWorkspace = exports.AngularWorkspace = exports.workspaceSchemaPath = void 0;
30
34
  const core_1 = require("@angular-devkit/core");
31
35
  const fs_1 = require("fs");
32
36
  const os = __importStar(require("os"));
@@ -38,15 +42,16 @@ function isJsonObject(value) {
38
42
  }
39
43
  function createWorkspaceHost() {
40
44
  return {
41
- async readFile(path) {
42
- return (0, fs_1.readFileSync)(path, 'utf-8');
45
+ readFile(path) {
46
+ return fs_1.promises.readFile(path, 'utf-8');
43
47
  },
44
48
  async writeFile(path, data) {
45
- (0, fs_1.writeFileSync)(path, data);
49
+ await fs_1.promises.writeFile(path, data);
46
50
  },
47
51
  async isDirectory(path) {
48
52
  try {
49
- return (0, fs_1.statSync)(path).isDirectory();
53
+ const stats = await fs_1.promises.stat(path);
54
+ return stats.isDirectory();
50
55
  }
51
56
  catch {
52
57
  return false;
@@ -54,7 +59,8 @@ function createWorkspaceHost() {
54
59
  },
55
60
  async isFile(path) {
56
61
  try {
57
- return (0, fs_1.statSync)(path).isFile();
62
+ const stats = await fs_1.promises.stat(path);
63
+ return stats.isFile();
58
64
  }
59
65
  catch {
60
66
  return false;
@@ -62,10 +68,7 @@ function createWorkspaceHost() {
62
68
  },
63
69
  };
64
70
  }
65
- function getSchemaLocation() {
66
- return path.join(__dirname, '../lib/config/schema.json');
67
- }
68
- exports.workspaceSchemaPath = getSchemaLocation();
71
+ exports.workspaceSchemaPath = path.join(__dirname, '../../lib/config/schema.json');
69
72
  const configNames = ['angular.json', '.angular.json'];
70
73
  const globalFileName = '.angular-config.json';
71
74
  function xdgConfigHome(home, configFile) {
@@ -131,20 +134,17 @@ class AngularWorkspace {
131
134
  // Temporary helper functions to support refactoring
132
135
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
133
136
  getCli() {
134
- return this.workspace.extensions['cli'] || {};
137
+ return this.workspace.extensions['cli'];
135
138
  }
136
139
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
137
140
  getProjectCli(projectName) {
138
141
  const project = this.workspace.projects.get(projectName);
139
- return (project === null || project === void 0 ? void 0 : project.extensions['cli']) || {};
142
+ return project === null || project === void 0 ? void 0 : project.extensions['cli'];
143
+ }
144
+ save() {
145
+ return core_1.workspaces.writeWorkspace(this.workspace, createWorkspaceHost(), this.filePath);
140
146
  }
141
147
  static async load(workspaceFilePath) {
142
- const oldConfigFileNames = ['.angular-cli.json', 'angular-cli.json'];
143
- if (oldConfigFileNames.includes(path.basename(workspaceFilePath))) {
144
- // 1.x file format
145
- // Create an empty workspace to allow update to be used
146
- return new AngularWorkspace({ extensions: {}, projects: new core_1.workspaces.ProjectDefinitionCollection() }, workspaceFilePath);
147
- }
148
148
  const result = await core_1.workspaces.readWorkspace(workspaceFilePath, createWorkspaceHost(), core_1.workspaces.WorkspaceFormat.JSON);
149
149
  return new AngularWorkspace(result.workspace, workspaceFilePath);
150
150
  }
@@ -152,14 +152,16 @@ class AngularWorkspace {
152
152
  exports.AngularWorkspace = AngularWorkspace;
153
153
  const cachedWorkspaces = new Map();
154
154
  async function getWorkspace(level = 'local') {
155
- const cached = cachedWorkspaces.get(level);
156
- if (cached !== undefined) {
157
- return cached;
155
+ if (cachedWorkspaces.has(level)) {
156
+ return cachedWorkspaces.get(level);
158
157
  }
159
- const configPath = level === 'local' ? projectFilePath() : globalFilePath();
158
+ let configPath = level === 'local' ? projectFilePath() : globalFilePath();
160
159
  if (!configPath) {
161
- cachedWorkspaces.set(level, null);
162
- return null;
160
+ if (level === 'local') {
161
+ cachedWorkspaces.set(level, undefined);
162
+ return undefined;
163
+ }
164
+ configPath = createGlobalSettings();
163
165
  }
164
166
  try {
165
167
  const workspace = await AngularWorkspace.load(configPath);
@@ -196,7 +198,7 @@ function getWorkspaceRaw(level = 'local') {
196
198
  }
197
199
  exports.getWorkspaceRaw = getWorkspaceRaw;
198
200
  async function validateWorkspace(data) {
199
- const schema = (0, json_file_1.readAndParseJson)(path.join(__dirname, '../lib/config/schema.json'));
201
+ const schema = (0, json_file_1.readAndParseJson)(exports.workspaceSchemaPath);
200
202
  const { formats } = await Promise.resolve().then(() => __importStar(require('@angular-devkit/schematics')));
201
203
  const registry = new core_1.json.schema.CoreSchemaRegistry(formats.standardFormats);
202
204
  const validator = await registry.compile(schema).toPromise();
@@ -242,6 +244,7 @@ function findProjectByPath(workspace, location) {
242
244
  }
243
245
  return projects[0][1];
244
246
  }
247
+ let defaultProjectDeprecationWarningShown = false;
245
248
  function getProjectByCwd(workspace) {
246
249
  if (workspace.projects.size === 1) {
247
250
  // If there is only one project, return that one.
@@ -254,6 +257,11 @@ function getProjectByCwd(workspace) {
254
257
  const defaultProject = workspace.extensions['defaultProject'];
255
258
  if (defaultProject && typeof defaultProject === 'string') {
256
259
  // If there is a default project name, return it.
260
+ if (!defaultProjectDeprecationWarningShown) {
261
+ console.warn(`DEPRECATED: The 'defaultProject' workspace option has been deprecated. ` +
262
+ `The project to use will be determined from the current working directory.`);
263
+ defaultProjectDeprecationWarningShown = true;
264
+ }
257
265
  return defaultProject;
258
266
  }
259
267
  return null;
@@ -268,86 +276,24 @@ async function getConfiguredPackageManager() {
268
276
  return value;
269
277
  }
270
278
  }
279
+ return null;
271
280
  };
272
- let result;
281
+ let result = null;
273
282
  const workspace = await getWorkspace('local');
274
283
  if (workspace) {
275
284
  const project = getProjectByCwd(workspace);
276
285
  if (project) {
277
286
  result = getPackageManager((_a = workspace.projects.get(project)) === null || _a === void 0 ? void 0 : _a.extensions['cli']);
278
287
  }
279
- result = result !== null && result !== void 0 ? result : getPackageManager(workspace.extensions['cli']);
288
+ result !== null && result !== void 0 ? result : (result = getPackageManager(workspace.extensions['cli']));
280
289
  }
281
- if (result === undefined) {
290
+ if (!result) {
282
291
  const globalOptions = await getWorkspace('global');
283
292
  result = getPackageManager(globalOptions === null || globalOptions === void 0 ? void 0 : globalOptions.extensions['cli']);
284
- if (!workspace && !globalOptions) {
285
- // Only check legacy if updated workspace is not found
286
- result = getLegacyPackageManager();
287
- }
288
293
  }
289
- // Default to null
290
- return result !== null && result !== void 0 ? result : null;
294
+ return result;
291
295
  }
292
296
  exports.getConfiguredPackageManager = getConfiguredPackageManager;
293
- function migrateLegacyGlobalConfig() {
294
- const homeDir = os.homedir();
295
- if (homeDir) {
296
- const legacyGlobalConfigPath = path.join(homeDir, '.angular-cli.json');
297
- if ((0, fs_1.existsSync)(legacyGlobalConfigPath)) {
298
- const legacy = (0, json_file_1.readAndParseJson)(legacyGlobalConfigPath);
299
- if (!isJsonObject(legacy)) {
300
- return false;
301
- }
302
- const cli = {};
303
- if (legacy.packageManager &&
304
- typeof legacy.packageManager == 'string' &&
305
- legacy.packageManager !== 'default') {
306
- cli['packageManager'] = legacy.packageManager;
307
- }
308
- if (isJsonObject(legacy.defaults) &&
309
- isJsonObject(legacy.defaults.schematics) &&
310
- typeof legacy.defaults.schematics.collection == 'string') {
311
- cli['defaultCollection'] = legacy.defaults.schematics.collection;
312
- }
313
- if (isJsonObject(legacy.warnings)) {
314
- const warnings = {};
315
- if (typeof legacy.warnings.versionMismatch == 'boolean') {
316
- warnings['versionMismatch'] = legacy.warnings.versionMismatch;
317
- }
318
- if (Object.getOwnPropertyNames(warnings).length > 0) {
319
- cli['warnings'] = warnings;
320
- }
321
- }
322
- if (Object.getOwnPropertyNames(cli).length > 0) {
323
- const globalPath = path.join(homeDir, globalFileName);
324
- (0, fs_1.writeFileSync)(globalPath, JSON.stringify({ version: 1, cli }, null, 2));
325
- return true;
326
- }
327
- }
328
- }
329
- return false;
330
- }
331
- exports.migrateLegacyGlobalConfig = migrateLegacyGlobalConfig;
332
- // Fallback, check for packageManager in config file in v1.* global config.
333
- function getLegacyPackageManager() {
334
- const homeDir = os.homedir();
335
- if (homeDir) {
336
- const legacyGlobalConfigPath = path.join(homeDir, '.angular-cli.json');
337
- if ((0, fs_1.existsSync)(legacyGlobalConfigPath)) {
338
- const legacy = (0, json_file_1.readAndParseJson)(legacyGlobalConfigPath);
339
- if (!isJsonObject(legacy)) {
340
- return null;
341
- }
342
- if (legacy.packageManager &&
343
- typeof legacy.packageManager === 'string' &&
344
- legacy.packageManager !== 'default') {
345
- return legacy.packageManager;
346
- }
347
- }
348
- }
349
- return null;
350
- }
351
297
  async function getSchematicDefaults(collection, schematic, project) {
352
298
  var _a;
353
299
  const result = {};