@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
@@ -0,0 +1,17 @@
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, CommandScope, Options } from '../../command-builder/command-module';
10
+ export declare class CacheCommandModule extends CommandModule implements CommandModuleImplementation {
11
+ command: string;
12
+ describe: string;
13
+ longDescriptionPath: string;
14
+ static scope: CommandScope.In;
15
+ builder(localYargs: Argv): Argv;
16
+ run(_options: Options<{}>): void;
17
+ }
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ /**
3
+ * @license
4
+ * Copyright Google LLC All Rights Reserved.
5
+ *
6
+ * Use of this source code is governed by an MIT-style license that can be
7
+ * found in the LICENSE file at https://angular.io/license
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.CacheCommandModule = void 0;
11
+ const path_1 = require("path");
12
+ const command_module_1 = require("../../command-builder/command-module");
13
+ const command_1 = require("../../command-builder/utilities/command");
14
+ const cli_1 = require("./clean/cli");
15
+ const cli_2 = require("./info/cli");
16
+ const cli_3 = require("./settings/cli");
17
+ class CacheCommandModule extends command_module_1.CommandModule {
18
+ constructor() {
19
+ super(...arguments);
20
+ this.command = 'cache';
21
+ this.describe = 'Configure persistent disk cache and retrieve cache statistics.';
22
+ this.longDescriptionPath = (0, path_1.join)(__dirname, 'long-description.md');
23
+ }
24
+ builder(localYargs) {
25
+ const subcommands = [
26
+ cli_3.CacheEnableModule,
27
+ cli_3.CacheDisableModule,
28
+ cli_1.CacheCleanModule,
29
+ cli_2.CacheInfoCommandModule,
30
+ ].sort();
31
+ for (const module of subcommands) {
32
+ localYargs = (0, command_1.addCommandModuleToYargs)(localYargs, module, this.context);
33
+ }
34
+ return localYargs.demandCommand(1, command_1.demandCommandFailureMessage).strict();
35
+ }
36
+ run(_options) { }
37
+ }
38
+ exports.CacheCommandModule = CacheCommandModule;
@@ -0,0 +1,20 @@
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, CommandScope } from '../../../command-builder/command-module';
10
+ export declare class CacheInfoCommandModule extends CommandModule implements CommandModuleImplementation {
11
+ command: string;
12
+ describe: string;
13
+ longDescriptionPath?: string | undefined;
14
+ static scope: CommandScope.In;
15
+ builder(localYargs: Argv): Argv;
16
+ run(): Promise<void>;
17
+ private getSizeOfDirectory;
18
+ private formatSize;
19
+ private effectiveEnabledStatus;
20
+ }
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ /**
3
+ * @license
4
+ * Copyright Google LLC All Rights Reserved.
5
+ *
6
+ * Use of this source code is governed by an MIT-style license that can be
7
+ * found in the LICENSE file at https://angular.io/license
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.CacheInfoCommandModule = void 0;
11
+ const core_1 = require("@angular-devkit/core");
12
+ const fs_1 = require("fs");
13
+ const path_1 = require("path");
14
+ const command_module_1 = require("../../../command-builder/command-module");
15
+ const environment_options_1 = require("../../../utilities/environment-options");
16
+ const utilities_1 = require("../utilities");
17
+ class CacheInfoCommandModule extends command_module_1.CommandModule {
18
+ constructor() {
19
+ super(...arguments);
20
+ this.command = 'info';
21
+ this.describe = 'Prints persistent disk cache configuration and statistics in the console.';
22
+ }
23
+ builder(localYargs) {
24
+ return localYargs.strict();
25
+ }
26
+ async run() {
27
+ const { path, environment, enabled } = (0, utilities_1.getCacheConfig)(this.context.workspace);
28
+ this.context.logger.info(core_1.tags.stripIndents `
29
+ Enabled: ${enabled ? 'yes' : 'no'}
30
+ Environment: ${environment}
31
+ Path: ${path}
32
+ Size on disk: ${await this.getSizeOfDirectory(path)}
33
+ Effective status on current machine: ${this.effectiveEnabledStatus() ? 'enabled' : 'disabled'}
34
+ `);
35
+ }
36
+ async getSizeOfDirectory(path) {
37
+ const directoriesStack = [path];
38
+ let size = 0;
39
+ while (directoriesStack.length) {
40
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
41
+ const dirPath = directoriesStack.pop();
42
+ let entries = [];
43
+ try {
44
+ entries = await fs_1.promises.readdir(dirPath);
45
+ }
46
+ catch { }
47
+ for (const entry of entries) {
48
+ const entryPath = (0, path_1.join)(dirPath, entry);
49
+ const stats = await fs_1.promises.stat(entryPath);
50
+ if (stats.isDirectory()) {
51
+ directoriesStack.push(entryPath);
52
+ }
53
+ size += stats.size;
54
+ }
55
+ }
56
+ return this.formatSize(size);
57
+ }
58
+ formatSize(size) {
59
+ if (size <= 0) {
60
+ return '0 bytes';
61
+ }
62
+ const abbreviations = ['bytes', 'kB', 'MB', 'GB'];
63
+ const index = Math.floor(Math.log(size) / Math.log(1024));
64
+ const roundedSize = size / Math.pow(1024, index);
65
+ // bytes don't have a fraction
66
+ const fractionDigits = index === 0 ? 0 : 2;
67
+ return `${roundedSize.toFixed(fractionDigits)} ${abbreviations[index]}`;
68
+ }
69
+ effectiveEnabledStatus() {
70
+ const { enabled, environment } = (0, utilities_1.getCacheConfig)(this.context.workspace);
71
+ if (enabled) {
72
+ switch (environment) {
73
+ case 'ci':
74
+ return environment_options_1.isCI;
75
+ case 'local':
76
+ return !environment_options_1.isCI;
77
+ }
78
+ }
79
+ return enabled;
80
+ }
81
+ }
82
+ exports.CacheInfoCommandModule = CacheInfoCommandModule;
@@ -0,0 +1,53 @@
1
+ Angular CLI saves a number of cachable operations on disk by default.
2
+
3
+ When you re-run the same build, the build system restores the state of the previous build and re-uses previously performed operations, which decreases the time taken to build and test your applications and libraries.
4
+
5
+ To amend the default cache settings, add the `cli.cache` object to your [Workspace Configuration](guide/workspace-config).
6
+ The object goes under `cli.cache` at the top level of the file, outside the `projects` sections.
7
+
8
+ ```jsonc
9
+ {
10
+ "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
11
+ "version": 1,
12
+ "cli": {
13
+ "cache": {
14
+ // ...
15
+ }
16
+ },
17
+ "projects": {}
18
+ }
19
+ ```
20
+
21
+ For more information, see [cache options](guide/workspace-config#cache-options).
22
+
23
+ ### Cache environments
24
+
25
+ By default, disk cache is only enabled for local environments. The value of environment can be one of the following:
26
+
27
+ - `all` - allows disk cache on all machines.
28
+ - `local` - allows disk cache only on development machines.
29
+ - `ci` - allows disk cache only on continuous integration (Ci) systems.
30
+
31
+ To change the environment setting to `all`, run the following command:
32
+
33
+ ```bash
34
+ ng config cli.cache.environment all
35
+ ```
36
+
37
+ For more information, see `environment` in [cache options](guide/workspace-config#cache-options).
38
+
39
+ <div class="alert is-helpful">
40
+
41
+ The Angular CLI checks for the presence and value of the `CI` environment variable to determine in which environment it is running.
42
+
43
+ </div>
44
+
45
+ ### Cache path
46
+
47
+ By default, `.angular/cache` is used as a base directory to store cache results.
48
+
49
+ To change this path to `.cache/ng`, run the following command:
50
+
51
+ ```bash
52
+ ng config cli.cache.path ".cache/ng"
53
+ ```
@@ -0,0 +1,27 @@
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, CommandScope } from '../../../command-builder/command-module';
10
+ export declare class CacheDisableModule extends CommandModule implements CommandModuleImplementation {
11
+ command: string;
12
+ aliases: string;
13
+ describe: string;
14
+ longDescriptionPath: string | undefined;
15
+ static scope: CommandScope.In;
16
+ builder(localYargs: Argv): Argv;
17
+ run(): Promise<void>;
18
+ }
19
+ export declare class CacheEnableModule extends CommandModule implements CommandModuleImplementation {
20
+ command: string;
21
+ aliases: string;
22
+ describe: string;
23
+ longDescriptionPath: string | undefined;
24
+ static scope: CommandScope.In;
25
+ builder(localYargs: Argv): Argv;
26
+ run(): Promise<void>;
27
+ }
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ /**
3
+ * @license
4
+ * Copyright Google LLC All Rights Reserved.
5
+ *
6
+ * Use of this source code is governed by an MIT-style license that can be
7
+ * found in the LICENSE file at https://angular.io/license
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.CacheEnableModule = exports.CacheDisableModule = void 0;
11
+ const command_module_1 = require("../../../command-builder/command-module");
12
+ const utilities_1 = require("../utilities");
13
+ class CacheDisableModule extends command_module_1.CommandModule {
14
+ constructor() {
15
+ super(...arguments);
16
+ this.command = 'disable';
17
+ this.aliases = 'off';
18
+ this.describe = 'Disables persistent disk cache for all projects in the workspace.';
19
+ }
20
+ builder(localYargs) {
21
+ return localYargs;
22
+ }
23
+ run() {
24
+ return (0, utilities_1.updateCacheConfig)(this.getWorkspaceOrThrow(), 'enabled', false);
25
+ }
26
+ }
27
+ exports.CacheDisableModule = CacheDisableModule;
28
+ class CacheEnableModule extends command_module_1.CommandModule {
29
+ constructor() {
30
+ super(...arguments);
31
+ this.command = 'enable';
32
+ this.aliases = 'on';
33
+ this.describe = 'Enables disk cache for all projects in the workspace.';
34
+ }
35
+ builder(localYargs) {
36
+ return localYargs;
37
+ }
38
+ run() {
39
+ return (0, utilities_1.updateCacheConfig)(this.getWorkspaceOrThrow(), 'enabled', true);
40
+ }
41
+ }
42
+ exports.CacheEnableModule = CacheEnableModule;
@@ -0,0 +1,11 @@
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 { Cache } from '../../../lib/config/workspace-schema';
9
+ import { AngularWorkspace } from '../../utilities/config';
10
+ export declare function updateCacheConfig<K extends keyof Cache>(workspace: AngularWorkspace, key: K, value: Cache[K]): Promise<void>;
11
+ export declare function getCacheConfig(workspace: AngularWorkspace | undefined): Required<Cache>;
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ /**
3
+ * @license
4
+ * Copyright Google LLC All Rights Reserved.
5
+ *
6
+ * Use of this source code is governed by an MIT-style license that can be
7
+ * found in the LICENSE file at https://angular.io/license
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.getCacheConfig = exports.updateCacheConfig = void 0;
11
+ const core_1 = require("@angular-devkit/core");
12
+ const path_1 = require("path");
13
+ const workspace_schema_1 = require("../../../lib/config/workspace-schema");
14
+ function updateCacheConfig(workspace, key, value) {
15
+ var _a, _b;
16
+ var _c;
17
+ const cli = ((_a = (_c = workspace.extensions)['cli']) !== null && _a !== void 0 ? _a : (_c['cli'] = {}));
18
+ const cache = ((_b = cli['cache']) !== null && _b !== void 0 ? _b : (cli['cache'] = {}));
19
+ cache[key] = value;
20
+ return workspace.save();
21
+ }
22
+ exports.updateCacheConfig = updateCacheConfig;
23
+ function getCacheConfig(workspace) {
24
+ if (!workspace) {
25
+ throw new Error(`Cannot retrieve cache configuration as workspace is not defined.`);
26
+ }
27
+ const defaultSettings = {
28
+ path: (0, path_1.resolve)(workspace.basePath, '.angular/cache'),
29
+ environment: workspace_schema_1.Environment.Local,
30
+ enabled: true,
31
+ };
32
+ const cliSetting = workspace.extensions['cli'];
33
+ if (!cliSetting || !(0, core_1.isJsonObject)(cliSetting)) {
34
+ return defaultSettings;
35
+ }
36
+ const cacheSettings = cliSetting['cache'];
37
+ if (!(0, core_1.isJsonObject)(cacheSettings)) {
38
+ return defaultSettings;
39
+ }
40
+ const { path = defaultSettings.path, environment = defaultSettings.environment, enabled = defaultSettings.enabled,
41
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
42
+ } = cacheSettings;
43
+ return {
44
+ path: (0, path_1.resolve)(workspace.basePath, path),
45
+ environment,
46
+ enabled,
47
+ };
48
+ }
49
+ exports.getCacheConfig = getCacheConfig;
@@ -0,0 +1,16 @@
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 CompletionCommandModule extends CommandModule implements CommandModuleImplementation {
11
+ command: string;
12
+ describe: string;
13
+ longDescriptionPath: string;
14
+ builder(localYargs: Argv): Argv;
15
+ run(): void;
16
+ }
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ /**
3
+ * @license
4
+ * Copyright Google LLC All Rights Reserved.
5
+ *
6
+ * Use of this source code is governed by an MIT-style license that can be
7
+ * found in the LICENSE file at https://angular.io/license
8
+ */
9
+ var __importDefault = (this && this.__importDefault) || function (mod) {
10
+ return (mod && mod.__esModule) ? mod : { "default": mod };
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.CompletionCommandModule = void 0;
14
+ const path_1 = require("path");
15
+ const yargs_1 = __importDefault(require("yargs"));
16
+ const command_module_1 = require("../../command-builder/command-module");
17
+ class CompletionCommandModule extends command_module_1.CommandModule {
18
+ constructor() {
19
+ super(...arguments);
20
+ this.command = 'completion';
21
+ this.describe = 'Generate a bash and zsh real-time type-ahead autocompletion script.';
22
+ this.longDescriptionPath = (0, path_1.join)(__dirname, 'long-description.md');
23
+ }
24
+ builder(localYargs) {
25
+ return localYargs;
26
+ }
27
+ run() {
28
+ yargs_1.default.showCompletionScript();
29
+ }
30
+ }
31
+ exports.CompletionCommandModule = CompletionCommandModule;
@@ -0,0 +1 @@
1
+ To enable bash and zsh real-time type-ahead autocompletion, copy and paste the generated script to your `.bashrc`, `.bash_profile`, `.zshrc` or `.zsh_profile`.
@@ -0,0 +1,24 @@
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, Options } from '../../command-builder/command-module';
10
+ interface ConfigCommandArgs {
11
+ 'json-path'?: string;
12
+ value?: string;
13
+ global?: boolean;
14
+ }
15
+ export declare class ConfigCommandModule extends CommandModule<ConfigCommandArgs> implements CommandModuleImplementation<ConfigCommandArgs> {
16
+ command: string;
17
+ describe: string;
18
+ longDescriptionPath: string;
19
+ builder(localYargs: Argv): Argv<ConfigCommandArgs>;
20
+ run(options: Options<ConfigCommandArgs>): Promise<number | void>;
21
+ private get;
22
+ private set;
23
+ }
24
+ export {};
@@ -0,0 +1,168 @@
1
+ "use strict";
2
+ /**
3
+ * @license
4
+ * Copyright Google LLC All Rights Reserved.
5
+ *
6
+ * Use of this source code is governed by an MIT-style license that can be
7
+ * found in the LICENSE file at https://angular.io/license
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.ConfigCommandModule = void 0;
11
+ const path_1 = require("path");
12
+ const uuid_1 = require("uuid");
13
+ const command_module_1 = require("../../command-builder/command-module");
14
+ const config_1 = require("../../utilities/config");
15
+ const json_file_1 = require("../../utilities/json-file");
16
+ class ConfigCommandModule extends command_module_1.CommandModule {
17
+ constructor() {
18
+ super(...arguments);
19
+ this.command = 'config [json-path] [value]';
20
+ this.describe = 'Retrieves or sets Angular configuration values in the angular.json file for the workspace.';
21
+ this.longDescriptionPath = (0, path_1.join)(__dirname, 'long-description.md');
22
+ }
23
+ builder(localYargs) {
24
+ return localYargs
25
+ .positional('json-path', {
26
+ description: `The configuration key to set or query, in JSON path format. ` +
27
+ `For example: "a[3].foo.bar[2]". If no new value is provided, returns the current value of this key.`,
28
+ type: 'string',
29
+ })
30
+ .positional('value', {
31
+ description: 'If provided, a new value for the given configuration key.',
32
+ type: 'string',
33
+ })
34
+ .option('global', {
35
+ description: `Access the global configuration in the caller's home directory.`,
36
+ alias: ['g'],
37
+ type: 'boolean',
38
+ default: false,
39
+ })
40
+ .strict();
41
+ }
42
+ async run(options) {
43
+ const level = options.global ? 'global' : 'local';
44
+ const [config] = (0, config_1.getWorkspaceRaw)(level);
45
+ if (options.value == undefined) {
46
+ if (!config) {
47
+ this.context.logger.error('No config found.');
48
+ return 1;
49
+ }
50
+ return this.get(config, options);
51
+ }
52
+ else {
53
+ return this.set(options);
54
+ }
55
+ }
56
+ get(jsonFile, options) {
57
+ const { logger } = this.context;
58
+ const value = options.jsonPath
59
+ ? jsonFile.get(parseJsonPath(options.jsonPath))
60
+ : jsonFile.content;
61
+ if (value === undefined) {
62
+ logger.error('Value cannot be found.');
63
+ return 1;
64
+ }
65
+ else if (typeof value === 'string') {
66
+ logger.info(value);
67
+ }
68
+ else {
69
+ logger.info(JSON.stringify(value, null, 2));
70
+ }
71
+ return 0;
72
+ }
73
+ async set(options) {
74
+ var _a;
75
+ if (!((_a = options.jsonPath) === null || _a === void 0 ? void 0 : _a.trim())) {
76
+ throw new command_module_1.CommandModuleError('Invalid Path.');
77
+ }
78
+ const validGlobalCliPaths = new Set([
79
+ 'cli.warnings.versionMismatch',
80
+ 'cli.defaultCollection',
81
+ 'cli.schematicCollections',
82
+ 'cli.packageManager',
83
+ 'cli.analytics',
84
+ 'cli.analyticsSharing.tracking',
85
+ 'cli.analyticsSharing.uuid',
86
+ ]);
87
+ if (options.global &&
88
+ !options.jsonPath.startsWith('schematics.') &&
89
+ !validGlobalCliPaths.has(options.jsonPath)) {
90
+ throw new command_module_1.CommandModuleError('Invalid Path.');
91
+ }
92
+ const [config, configPath] = (0, config_1.getWorkspaceRaw)(options.global ? 'global' : 'local');
93
+ const { logger } = this.context;
94
+ if (!config || !configPath) {
95
+ throw new command_module_1.CommandModuleError('Confguration file cannot be found.');
96
+ }
97
+ const normalizeUUIDValue = (v) => (v === '' ? (0, uuid_1.v4)() : `${v}`);
98
+ const value = options.jsonPath === 'cli.analyticsSharing.uuid'
99
+ ? normalizeUUIDValue(options.value)
100
+ : options.value;
101
+ const modified = config.modify(parseJsonPath(options.jsonPath), normalizeValue(value));
102
+ if (!modified) {
103
+ logger.error('Value cannot be found.');
104
+ return 1;
105
+ }
106
+ await (0, config_1.validateWorkspace)((0, json_file_1.parseJson)(config.content));
107
+ config.save();
108
+ return 0;
109
+ }
110
+ }
111
+ exports.ConfigCommandModule = ConfigCommandModule;
112
+ /**
113
+ * Splits a JSON path string into fragments. Fragments can be used to get the value referenced
114
+ * by the path. For example, a path of "a[3].foo.bar[2]" would give you a fragment array of
115
+ * ["a", 3, "foo", "bar", 2].
116
+ * @param path The JSON string to parse.
117
+ * @returns {(string|number)[]} The fragments for the string.
118
+ * @private
119
+ */
120
+ function parseJsonPath(path) {
121
+ const fragments = (path || '').split(/\./g);
122
+ const result = [];
123
+ while (fragments.length > 0) {
124
+ const fragment = fragments.shift();
125
+ if (fragment == undefined) {
126
+ break;
127
+ }
128
+ const match = fragment.match(/([^[]+)((\[.*\])*)/);
129
+ if (!match) {
130
+ throw new command_module_1.CommandModuleError('Invalid JSON path.');
131
+ }
132
+ result.push(match[1]);
133
+ if (match[2]) {
134
+ const indices = match[2]
135
+ .slice(1, -1)
136
+ .split('][')
137
+ .map((x) => (/^\d$/.test(x) ? +x : x.replace(/"|'/g, '')));
138
+ result.push(...indices);
139
+ }
140
+ }
141
+ return result.filter((fragment) => fragment != null);
142
+ }
143
+ function normalizeValue(value) {
144
+ const valueString = `${value}`.trim();
145
+ switch (valueString) {
146
+ case 'true':
147
+ return true;
148
+ case 'false':
149
+ return false;
150
+ case 'null':
151
+ return null;
152
+ case 'undefined':
153
+ return undefined;
154
+ }
155
+ if (isFinite(+valueString)) {
156
+ return +valueString;
157
+ }
158
+ try {
159
+ // We use `JSON.parse` instead of `parseJson` because the latter will parse UUIDs
160
+ // and convert them into a numberic entities.
161
+ // Example: 73b61974-182c-48e4-b4c6-30ddf08c5c98 -> 73.
162
+ // These values should never contain comments, therefore using `JSON.parse` is safe.
163
+ return JSON.parse(valueString);
164
+ }
165
+ catch {
166
+ return value;
167
+ }
168
+ }
@@ -6,8 +6,8 @@ or indirectly on the command line using this command.
6
6
 
7
7
  The configurable property names match command option names,
8
8
  except that in the configuration file, all names must use camelCase,
9
- while on the command line options can be given in either camelCase or dash-case.
9
+ while on the command line options can be given dash-case.
10
10
 
11
11
  For further details, see [Workspace Configuration](guide/workspace-config).
12
12
 
13
- For configuration of CLI usage analytics, see [Gathering an Viewing CLI Usage Analytics](./usage-analytics-gathering).
13
+ For configuration of CLI usage analytics, see [Gathering an Viewing CLI Usage Analytics](cli/usage-analytics-gathering).
@@ -0,0 +1,17 @@
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 { MissingTargetChoice } from '../../command-builder/architect-base-command-module';
9
+ import { ArchitectCommandModule } from '../../command-builder/architect-command-module';
10
+ import { CommandModuleImplementation } from '../../command-builder/command-module';
11
+ export declare class DeployCommandModule extends ArchitectCommandModule implements CommandModuleImplementation {
12
+ missingTargetChoices: MissingTargetChoice[];
13
+ multiTarget: boolean;
14
+ command: string;
15
+ longDescriptionPath: string;
16
+ describe: string;
17
+ }
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ /**
3
+ * @license
4
+ * Copyright Google LLC All Rights Reserved.
5
+ *
6
+ * Use of this source code is governed by an MIT-style license that can be
7
+ * found in the LICENSE file at https://angular.io/license
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.DeployCommandModule = void 0;
11
+ const path_1 = require("path");
12
+ const architect_command_module_1 = require("../../command-builder/architect-command-module");
13
+ class DeployCommandModule extends architect_command_module_1.ArchitectCommandModule {
14
+ constructor() {
15
+ super(...arguments);
16
+ // The below choices should be kept in sync with the list in https://angular.io/guide/deployment
17
+ this.missingTargetChoices = [
18
+ {
19
+ name: 'Amazon S3',
20
+ value: '@jefiozie/ngx-aws-deploy',
21
+ },
22
+ {
23
+ name: 'Azure',
24
+ value: '@azure/ng-deploy',
25
+ },
26
+ {
27
+ name: 'Firebase',
28
+ value: '@angular/fire',
29
+ },
30
+ {
31
+ name: 'Netlify',
32
+ value: '@netlify-builder/deploy',
33
+ },
34
+ {
35
+ name: 'NPM',
36
+ value: 'ngx-deploy-npm',
37
+ },
38
+ {
39
+ name: 'GitHub Pages',
40
+ value: 'angular-cli-ghpages',
41
+ },
42
+ ];
43
+ this.multiTarget = false;
44
+ this.command = 'deploy [project]';
45
+ this.longDescriptionPath = (0, path_1.join)(__dirname, 'long-description.md');
46
+ this.describe = 'Invokes the deploy builder for a specified project or for the default project in the workspace.';
47
+ }
48
+ }
49
+ exports.DeployCommandModule = DeployCommandModule;