@angular/cli 20.0.0-next.3 → 20.0.0-next.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.
@@ -1216,8 +1216,8 @@
1216
1216
  },
1217
1217
  "ngHtml": {
1218
1218
  "type": "boolean",
1219
- "default": true,
1220
- "description": "Generate component template files with an '.ng.html' file extension instead of '.html'. The '.ng.html' file extension is recommended by the Angular style guide."
1219
+ "default": false,
1220
+ "description": "Generate component template files with an '.ng.html' file extension instead of '.html'."
1221
1221
  }
1222
1222
  }
1223
1223
  },
@@ -1405,6 +1405,15 @@
1405
1405
  "default": [
1406
1406
  "CanActivate"
1407
1407
  ]
1408
+ },
1409
+ "typeSeparator": {
1410
+ "type": "string",
1411
+ "default": "-",
1412
+ "enum": [
1413
+ "-",
1414
+ "."
1415
+ ],
1416
+ "description": "The separator character to use before the type within the generated file's name. For example, if you set the option to `.`, the file will be named `example.guard.ts`."
1408
1417
  }
1409
1418
  }
1410
1419
  },
@@ -1452,6 +1461,15 @@
1452
1461
  "type": "boolean",
1453
1462
  "description": "Creates the interceptor as a function `HttpInterceptorFn` instead of a class. Functional interceptors can be simpler for basic scenarios.",
1454
1463
  "default": true
1464
+ },
1465
+ "typeSeparator": {
1466
+ "type": "string",
1467
+ "default": "-",
1468
+ "enum": [
1469
+ "-",
1470
+ "."
1471
+ ],
1472
+ "description": "The separator character to use before the type within the generated file's name. For example, if you set the option to `.`, the file will be named `example.interceptor.ts`."
1455
1473
  }
1456
1474
  }
1457
1475
  },
@@ -1612,6 +1630,15 @@
1612
1630
  "type": "boolean",
1613
1631
  "default": false,
1614
1632
  "description": "Automatically export the pipe from the specified NgModule, making it accessible to other modules in the application."
1633
+ },
1634
+ "typeSeparator": {
1635
+ "type": "string",
1636
+ "default": "-",
1637
+ "enum": [
1638
+ "-",
1639
+ "."
1640
+ ],
1641
+ "description": "The separator character to use before the type within the generated file's name. For example, if you set the option to `.`, the file will be named `example.pipe.ts`."
1615
1642
  }
1616
1643
  }
1617
1644
  },
@@ -1814,6 +1841,15 @@
1814
1841
  "$default": {
1815
1842
  "$source": "projectName"
1816
1843
  }
1844
+ },
1845
+ "typeSeparator": {
1846
+ "type": "string",
1847
+ "default": "-",
1848
+ "enum": [
1849
+ "-",
1850
+ "."
1851
+ ],
1852
+ "description": "The separator character to use before the type within the generated file's name. For example, if you set the option to `.`, the file will be named `example.resolver.ts`."
1817
1853
  }
1818
1854
  }
1819
1855
  },
@@ -1917,7 +1953,6 @@
1917
1953
  "description": "The full path for the browser entry point to the application, relative to the current workspace."
1918
1954
  },
1919
1955
  "server": {
1920
- "type": "string",
1921
1956
  "description": "The full path for the server entry point to the application, relative to the current workspace.",
1922
1957
  "oneOf": [
1923
1958
  {
@@ -2202,6 +2237,13 @@
2202
2237
  "type": "string"
2203
2238
  }
2204
2239
  },
2240
+ "conditions": {
2241
+ "description": "Custom package resolution conditions used to resolve conditional exports/imports. Defaults to ['module', 'development'/'production']. The following special conditions are always present if the requirements are satisfied: 'default', 'import', 'require', 'browser', 'node'.",
2242
+ "type": "array",
2243
+ "items": {
2244
+ "type": "string"
2245
+ }
2246
+ },
2205
2247
  "fileReplacements": {
2206
2248
  "description": "Replace compilation source files with other compilation source files in the build.",
2207
2249
  "type": "array",
@@ -300,7 +300,6 @@ export type AngularComponentOptionsSchema = {
300
300
  name: string;
301
301
  /**
302
302
  * Generate component template files with an '.ng.html' file extension instead of '.html'.
303
- * The '.ng.html' file extension is recommended by the Angular style guide.
304
303
  */
305
304
  ngHtml?: boolean;
306
305
  /**
@@ -512,6 +511,11 @@ export type AngularGuardOptionsSchema = {
512
511
  * Skip the generation of a unit test file `spec.ts` for the new guard.
513
512
  */
514
513
  skipTests?: boolean;
514
+ /**
515
+ * The separator character to use before the type within the generated file's name. For
516
+ * example, if you set the option to `.`, the file will be named `example.guard.ts`.
517
+ */
518
+ typeSeparator?: TypeSeparator;
515
519
  };
516
520
  export declare enum Implement {
517
521
  CanActivate = "CanActivate",
@@ -519,6 +523,23 @@ export declare enum Implement {
519
523
  CanDeactivate = "CanDeactivate",
520
524
  CanMatch = "CanMatch"
521
525
  }
526
+ /**
527
+ * The separator character to use before the type within the generated file's name. For
528
+ * example, if you set the option to `.`, the file will be named `example.guard.ts`.
529
+ *
530
+ * The separator character to use before the type within the generated file's name. For
531
+ * example, if you set the option to `.`, the file will be named `example.interceptor.ts`.
532
+ *
533
+ * The separator character to use before the type within the generated file's name. For
534
+ * example, if you set the option to `.`, the file will be named `example.pipe.ts`.
535
+ *
536
+ * The separator character to use before the type within the generated file's name. For
537
+ * example, if you set the option to `.`, the file will be named `example.resolver.ts`.
538
+ */
539
+ export declare enum TypeSeparator {
540
+ Empty = "-",
541
+ TypeSeparator = "."
542
+ }
522
543
  /**
523
544
  * Creates a new interceptor in your project. Interceptors are used to intercept and modify
524
545
  * HTTP requests and responses before they reach their destination. This allows you to
@@ -556,6 +577,11 @@ export type AngularInterceptorOptionsSchema = {
556
577
  * Skip the generation of a unit test file `spec.ts` for the new interceptor.
557
578
  */
558
579
  skipTests?: boolean;
580
+ /**
581
+ * The separator character to use before the type within the generated file's name. For
582
+ * example, if you set the option to `.`, the file will be named `example.interceptor.ts`.
583
+ */
584
+ typeSeparator?: TypeSeparator;
559
585
  };
560
586
  /**
561
587
  * Creates a new interface in your project. Interfaces define the structure of objects in
@@ -814,6 +840,11 @@ export type AngularPipeOptionsSchema = {
814
840
  * standalone components, directives, or pipes.
815
841
  */
816
842
  standalone?: boolean;
843
+ /**
844
+ * The separator character to use before the type within the generated file's name. For
845
+ * example, if you set the option to `.`, the file will be named `example.pipe.ts`.
846
+ */
847
+ typeSeparator?: TypeSeparator;
817
848
  };
818
849
  /**
819
850
  * Creates a new resolver in your project. Resolvers are used to pre-fetch data before a
@@ -851,6 +882,11 @@ export type AngularResolverOptionsSchema = {
851
882
  * Skip the generation of a unit test file `spec.ts` for the new resolver.
852
883
  */
853
884
  skipTests?: boolean;
885
+ /**
886
+ * The separator character to use before the type within the generated file's name. For
887
+ * example, if you set the option to `.`, the file will be named `example.resolver.ts`.
888
+ */
889
+ typeSeparator?: TypeSeparator;
854
890
  };
855
891
  /**
856
892
  * Creates a new service in your project. Services are used to encapsulate reusable logic,
@@ -2,7 +2,7 @@
2
2
  // THIS FILE IS AUTOMATICALLY GENERATED. TO UPDATE THIS FILE YOU NEED TO CHANGE THE
3
3
  // CORRESPONDING JSON SCHEMA FILE, THEN RUN devkit-admin build (or bazel build ...).
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.Implement = exports.SchematicsAngularComponentStyle = exports.ChangeDetection = exports.ViewEncapsulation = exports.SchematicsAngularApplicationStyle = exports.PackageManager = exports.Environment = void 0;
5
+ exports.TypeSeparator = exports.Implement = exports.SchematicsAngularComponentStyle = exports.ChangeDetection = exports.ViewEncapsulation = exports.SchematicsAngularApplicationStyle = exports.PackageManager = exports.Environment = void 0;
6
6
  /**
7
7
  * Configure in which environment disk cache is enabled.
8
8
  */
@@ -82,3 +82,21 @@ var Implement;
82
82
  Implement["CanDeactivate"] = "CanDeactivate";
83
83
  Implement["CanMatch"] = "CanMatch";
84
84
  })(Implement || (exports.Implement = Implement = {}));
85
+ /**
86
+ * The separator character to use before the type within the generated file's name. For
87
+ * example, if you set the option to `.`, the file will be named `example.guard.ts`.
88
+ *
89
+ * The separator character to use before the type within the generated file's name. For
90
+ * example, if you set the option to `.`, the file will be named `example.interceptor.ts`.
91
+ *
92
+ * The separator character to use before the type within the generated file's name. For
93
+ * example, if you set the option to `.`, the file will be named `example.pipe.ts`.
94
+ *
95
+ * The separator character to use before the type within the generated file's name. For
96
+ * example, if you set the option to `.`, the file will be named `example.resolver.ts`.
97
+ */
98
+ var TypeSeparator;
99
+ (function (TypeSeparator) {
100
+ TypeSeparator["Empty"] = "-";
101
+ TypeSeparator["TypeSeparator"] = ".";
102
+ })(TypeSeparator || (exports.TypeSeparator = TypeSeparator = {}));
package/lib/init.d.ts CHANGED
@@ -5,4 +5,4 @@
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.dev/license
7
7
  */
8
- import 'symbol-observable';
8
+ export {};
package/lib/init.js CHANGED
@@ -40,8 +40,6 @@ var __importStar = (this && this.__importStar) || (function () {
40
40
  };
41
41
  })();
42
42
  Object.defineProperty(exports, "__esModule", { value: true });
43
- require("symbol-observable");
44
- // symbol polyfill must go first
45
43
  const promises_1 = require("node:fs/promises");
46
44
  const node_module_1 = require("node:module");
47
45
  const path = __importStar(require("node:path"));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@angular/cli",
3
- "version": "20.0.0-next.3",
3
+ "version": "20.0.0-next.5",
4
4
  "description": "CLI tool for Angular",
5
5
  "main": "lib/cli/index.js",
6
6
  "bin": {
@@ -25,12 +25,12 @@
25
25
  },
26
26
  "homepage": "https://github.com/angular/angular-cli",
27
27
  "dependencies": {
28
- "@angular-devkit/architect": "0.2000.0-next.3",
29
- "@angular-devkit/core": "20.0.0-next.3",
30
- "@angular-devkit/schematics": "20.0.0-next.3",
31
- "@inquirer/prompts": "7.4.0",
28
+ "@angular-devkit/architect": "0.2000.0-next.5",
29
+ "@angular-devkit/core": "20.0.0-next.5",
30
+ "@angular-devkit/schematics": "20.0.0-next.5",
31
+ "@inquirer/prompts": "7.4.1",
32
32
  "@listr2/prompt-adapter-inquirer": "2.0.18",
33
- "@schematics/angular": "20.0.0-next.3",
33
+ "@schematics/angular": "20.0.0-next.5",
34
34
  "@yarnpkg/lockfile": "1.1.0",
35
35
  "ini": "5.0.0",
36
36
  "jsonc-parser": "3.3.1",
@@ -40,20 +40,19 @@
40
40
  "pacote": "20.0.0",
41
41
  "resolve": "1.22.10",
42
42
  "semver": "7.7.1",
43
- "symbol-observable": "4.0.0",
44
43
  "yargs": "17.7.2"
45
44
  },
46
45
  "ng-update": {
47
46
  "migrations": "@schematics/angular/migrations/migration-collection.json",
48
47
  "packageGroup": {
49
- "@angular/cli": "20.0.0-next.3",
50
- "@angular/build": "20.0.0-next.3",
51
- "@angular/ssr": "20.0.0-next.3",
52
- "@angular-devkit/architect": "0.2000.0-next.3",
53
- "@angular-devkit/build-angular": "20.0.0-next.3",
54
- "@angular-devkit/build-webpack": "0.2000.0-next.3",
55
- "@angular-devkit/core": "20.0.0-next.3",
56
- "@angular-devkit/schematics": "20.0.0-next.3"
48
+ "@angular/cli": "20.0.0-next.5",
49
+ "@angular/build": "20.0.0-next.5",
50
+ "@angular/ssr": "20.0.0-next.5",
51
+ "@angular-devkit/architect": "0.2000.0-next.5",
52
+ "@angular-devkit/build-angular": "20.0.0-next.5",
53
+ "@angular-devkit/build-webpack": "0.2000.0-next.5",
54
+ "@angular-devkit/core": "20.0.0-next.5",
55
+ "@angular-devkit/schematics": "20.0.0-next.5"
57
56
  }
58
57
  },
59
58
  "packageManager": "pnpm@9.15.6",
@@ -21,7 +21,7 @@ export declare abstract class ArchitectBaseCommandModule<T extends object> exten
21
21
  private _architectHost;
22
22
  protected getArchitectHost(): WorkspaceNodeModulesArchitectHost;
23
23
  private _architect;
24
- protected getArchitect(): Architect;
24
+ protected getArchitect(skipUndefinedArrayTransform: boolean): Architect;
25
25
  protected getArchitectTargetOptions(target: Target): Promise<Option[]>;
26
26
  private warnOnMissingNodeModules;
27
27
  protected getArchitectTarget(): string;
@@ -66,8 +66,9 @@ class ArchitectBaseCommandModule extends command_module_1.CommandModule {
66
66
  (0, error_1.assertIsError)(e);
67
67
  return this.onMissingTarget(e.message);
68
68
  }
69
+ const isAngularBuild = builderName.startsWith('@angular/build:');
69
70
  const { logger } = this.context;
70
- const run = await this.getArchitect().scheduleTarget(target, options, {
71
+ const run = await this.getArchitect(isAngularBuild).scheduleTarget(target, options, {
71
72
  logger,
72
73
  });
73
74
  const analytics = (0, analytics_1.isPackageNameSafeForAnalytics)(builderName)
@@ -133,12 +134,17 @@ class ArchitectBaseCommandModule extends command_module_1.CommandModule {
133
134
  return (this._architectHost = new node_1.WorkspaceNodeModulesArchitectHost(workspace, workspace.basePath));
134
135
  }
135
136
  _architect;
136
- getArchitect() {
137
+ getArchitect(skipUndefinedArrayTransform) {
137
138
  if (this._architect) {
138
139
  return this._architect;
139
140
  }
140
141
  const registry = new core_1.json.schema.CoreSchemaRegistry();
141
- registry.addPostTransform(core_1.json.schema.transforms.addUndefinedDefaults);
142
+ if (skipUndefinedArrayTransform) {
143
+ registry.addPostTransform(core_1.json.schema.transforms.addUndefinedObjectDefaults);
144
+ }
145
+ else {
146
+ registry.addPostTransform(core_1.json.schema.transforms.addUndefinedDefaults);
147
+ }
142
148
  registry.useXDeprecatedProvider((msg) => this.context.logger.warn(msg));
143
149
  const architectHost = this.getArchitectHost();
144
150
  return (this._architect = new architect_1.Architect(architectHost, registry));
@@ -22,4 +22,4 @@ class Version {
22
22
  this.patch = patch;
23
23
  }
24
24
  }
25
- exports.VERSION = new Version('20.0.0-next.3');
25
+ exports.VERSION = new Version('20.0.0-next.5');