@schematics/angular 15.0.0-next.4 → 15.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.
@@ -214,15 +214,14 @@ function default_1(options) {
214
214
  };
215
215
  const workspace = await (0, workspace_1.getWorkspace)(host);
216
216
  const newProjectRoot = workspace.extensions.newProjectRoot || '';
217
- const isRootApp = options.projectRoot !== undefined;
218
217
  // If scoped project (i.e. "@foo/bar"), convert dir to "foo/bar".
219
218
  let folderName = options.name.startsWith('@') ? options.name.slice(1) : options.name;
220
219
  if (/[A-Z]/.test(folderName)) {
221
220
  folderName = schematics_1.strings.dasherize(folderName);
222
221
  }
223
- const appDir = isRootApp
224
- ? (0, core_1.normalize)(options.projectRoot || '')
225
- : (0, core_1.join)((0, core_1.normalize)(newProjectRoot), folderName);
222
+ const appDir = options.projectRoot === undefined
223
+ ? (0, core_1.join)((0, core_1.normalize)(newProjectRoot), folderName)
224
+ : (0, core_1.normalize)(options.projectRoot);
226
225
  const sourceDir = `${appDir}/src/app`;
227
226
  return (0, schematics_1.chain)([
228
227
  addAppToWorkspaceFile(options, appDir, folderName),
@@ -233,7 +232,6 @@ function default_1(options) {
233
232
  ...options,
234
233
  relativePathToWorkspaceRoot: (0, paths_1.relativePathToWorkspaceRoot)(appDir),
235
234
  appName: options.name,
236
- isRootApp,
237
235
  folderName,
238
236
  }),
239
237
  (0, schematics_1.move)(appDir),
@@ -19,7 +19,7 @@ export interface Schema {
19
19
  */
20
20
  minimal?: boolean;
21
21
  /**
22
- * The name of the new app.
22
+ * The name of the new application.
23
23
  */
24
24
  name: string;
25
25
  /**
@@ -27,7 +27,7 @@ export interface Schema {
27
27
  */
28
28
  prefix?: string;
29
29
  /**
30
- * The root directory of the new app.
30
+ * The root directory of the new application.
31
31
  */
32
32
  projectRoot?: string;
33
33
  /**
@@ -7,12 +7,11 @@
7
7
  "additionalProperties": false,
8
8
  "properties": {
9
9
  "projectRoot": {
10
- "description": "The root directory of the new app.",
11
- "type": "string",
12
- "visible": false
10
+ "description": "The root directory of the new application.",
11
+ "type": "string"
13
12
  },
14
13
  "name": {
15
- "description": "The name of the new app.",
14
+ "description": "The name of the new application.",
16
15
  "type": "string",
17
16
  "pattern": "^(?:@[a-zA-Z0-9-*~][a-zA-Z0-9-*._~]*/)?[a-zA-Z0-9-~][a-zA-Z0-9-._~]*$",
18
17
  "$default": {
@@ -25,26 +24,25 @@
25
24
  "description": "Include styles inline in the root component.ts file. Only CSS styles can be included inline. Default is false, meaning that an external styles file is created and referenced in the root component.ts file.",
26
25
  "type": "boolean",
27
26
  "alias": "s",
28
- "x-user-analytics": 9
27
+ "x-user-analytics": "ep.ng_inline_style"
29
28
  },
30
29
  "inlineTemplate": {
31
30
  "description": "Include template inline in the root component.ts file. Default is false, meaning that an external template file is created and referenced in the root component.ts file. ",
32
31
  "type": "boolean",
33
32
  "alias": "t",
34
- "x-user-analytics": 10
33
+ "x-user-analytics": "ep.ng_inline_template"
35
34
  },
36
35
  "viewEncapsulation": {
37
36
  "description": "The view encapsulation strategy to use in the new application.",
38
37
  "enum": ["Emulated", "None", "ShadowDom"],
39
- "type": "string",
40
- "x-user-analytics": 11
38
+ "type": "string"
41
39
  },
42
40
  "routing": {
43
41
  "type": "boolean",
44
42
  "description": "Create a routing NgModule.",
45
43
  "default": false,
46
44
  "x-prompt": "Would you like to add Angular routing?",
47
- "x-user-analytics": 17
45
+ "x-user-analytics": "ep.ng_routing"
48
46
  },
49
47
  "prefix": {
50
48
  "type": "string",
@@ -77,14 +75,13 @@
77
75
  }
78
76
  ]
79
77
  },
80
- "x-user-analytics": 5
78
+ "x-user-analytics": "ep.ng_style"
81
79
  },
82
80
  "skipTests": {
83
81
  "description": "Do not create \"spec.ts\" test files for the application.",
84
82
  "type": "boolean",
85
83
  "default": false,
86
- "alias": "S",
87
- "x-user-analytics": 12
84
+ "alias": "S"
88
85
  },
89
86
  "skipPackageJson": {
90
87
  "type": "boolean",
@@ -94,8 +91,7 @@
94
91
  "minimal": {
95
92
  "description": "Create a bare-bones project without any testing frameworks. (Use for learning purposes only.)",
96
93
  "type": "boolean",
97
- "default": false,
98
- "x-user-analytics": 14
94
+ "default": false
99
95
  },
100
96
  "skipInstall": {
101
97
  "description": "Skip installing dependency packages.",
@@ -105,8 +101,7 @@
105
101
  "strict": {
106
102
  "description": "Creates an application with stricter bundle budgets settings.",
107
103
  "type": "boolean",
108
- "default": true,
109
- "x-user-analytics": 7
104
+ "default": true
110
105
  }
111
106
  },
112
107
  "required": ["name"]
package/class/schema.json CHANGED
@@ -34,8 +34,7 @@
34
34
  "skipTests": {
35
35
  "type": "boolean",
36
36
  "description": "Do not create \"spec.ts\" test files for the new class.",
37
- "default": false,
38
- "x-user-analytics": 12
37
+ "default": false
39
38
  },
40
39
  "type": {
41
40
  "type": "string",
@@ -42,27 +42,26 @@
42
42
  "type": "boolean",
43
43
  "default": false,
44
44
  "alias": "s",
45
- "x-user-analytics": 9
45
+ "x-user-analytics": "ep.ng_inline_style"
46
46
  },
47
47
  "inlineTemplate": {
48
48
  "description": "Include template inline in the component.ts file. By default, an external template file is created and referenced in the component.ts file.",
49
49
  "type": "boolean",
50
50
  "default": false,
51
51
  "alias": "t",
52
- "x-user-analytics": 10
52
+ "x-user-analytics": "ep.ng_inline_template"
53
53
  },
54
54
  "standalone": {
55
55
  "description": "Whether the generated component is standalone.",
56
56
  "type": "boolean",
57
57
  "default": false,
58
- "x-user-analytics": 15
58
+ "x-user-analytics": "ep.ng_standalone"
59
59
  },
60
60
  "viewEncapsulation": {
61
61
  "description": "The view encapsulation strategy to use in the new component.",
62
62
  "enum": ["Emulated", "None", "ShadowDom"],
63
63
  "type": "string",
64
- "alias": "v",
65
- "x-user-analytics": 11
64
+ "alias": "v"
66
65
  },
67
66
  "changeDetection": {
68
67
  "description": "The change detection strategy to use in the new component.",
@@ -90,7 +89,7 @@
90
89
  "type": "string",
91
90
  "default": "css",
92
91
  "enum": ["css", "scss", "sass", "less", "none"],
93
- "x-user-analytics": 5
92
+ "x-user-analytics": "ep.ng_style"
94
93
  },
95
94
  "type": {
96
95
  "type": "string",
@@ -100,8 +99,7 @@
100
99
  "skipTests": {
101
100
  "type": "boolean",
102
101
  "description": "Do not create \"spec.ts\" test files for the new component.",
103
- "default": false,
104
- "x-user-analytics": 12
102
+ "default": false
105
103
  },
106
104
  "flat": {
107
105
  "type": "boolean",
@@ -111,8 +109,7 @@
111
109
  "skipImport": {
112
110
  "type": "boolean",
113
111
  "description": "Do not import this component into the owning NgModule.",
114
- "default": false,
115
- "x-user-analytics": 18
112
+ "default": false
116
113
  },
117
114
  "selector": {
118
115
  "type": "string",
@@ -132,8 +129,7 @@
132
129
  "export": {
133
130
  "type": "boolean",
134
131
  "default": false,
135
- "description": "The declaring NgModule exports this component.",
136
- "x-user-analytics": 19
132
+ "description": "The declaring NgModule exports this component."
137
133
  }
138
134
  },
139
135
  "required": ["name", "project"]
@@ -48,14 +48,12 @@
48
48
  "skipTests": {
49
49
  "type": "boolean",
50
50
  "description": "Do not create \"spec.ts\" test files for the new class.",
51
- "default": false,
52
- "x-user-analytics": 12
51
+ "default": false
53
52
  },
54
53
  "skipImport": {
55
54
  "type": "boolean",
56
55
  "description": "Do not import this directive into the owning NgModule.",
57
- "default": false,
58
- "x-user-analytics": 18
56
+ "default": false
59
57
  },
60
58
  "selector": {
61
59
  "type": "string",
@@ -66,7 +64,7 @@
66
64
  "description": "Whether the generated directive is standalone.",
67
65
  "type": "boolean",
68
66
  "default": false,
69
- "x-user-analytics": 15
67
+ "x-user-analytics": "ep.ng_standalone"
70
68
  },
71
69
  "flat": {
72
70
  "type": "boolean",
@@ -81,8 +79,7 @@
81
79
  "export": {
82
80
  "type": "boolean",
83
81
  "default": false,
84
- "description": "The declaring NgModule exports this directive.",
85
- "x-user-analytics": 19
82
+ "description": "The declaring NgModule exports this directive."
86
83
  }
87
84
  },
88
85
  "required": ["name", "project"]
package/guard/schema.json CHANGED
@@ -18,8 +18,7 @@
18
18
  "skipTests": {
19
19
  "type": "boolean",
20
20
  "description": "Do not create \"spec.ts\" test files for the new guard.",
21
- "default": false,
22
- "x-user-analytics": 12
21
+ "default": false
23
22
  },
24
23
  "flat": {
25
24
  "type": "boolean",
@@ -39,8 +39,7 @@
39
39
  "skipTests": {
40
40
  "type": "boolean",
41
41
  "description": "Do not create \"spec.ts\" test files for the new interceptor.",
42
- "default": false,
43
- "x-user-analytics": 12
42
+ "default": false
44
43
  }
45
44
  },
46
45
  "required": ["name", "project"]
package/library/index.js CHANGED
@@ -109,27 +109,29 @@ function default_1(options) {
109
109
  if (/[A-Z]/.test(folderName)) {
110
110
  folderName = schematics_1.strings.dasherize(folderName);
111
111
  }
112
- const projectRoot = (0, core_1.join)((0, core_1.normalize)(newProjectRoot), folderName);
112
+ const libDir = options.projectRoot !== undefined
113
+ ? (0, core_1.normalize)(options.projectRoot)
114
+ : (0, core_1.join)((0, core_1.normalize)(newProjectRoot), folderName);
113
115
  const distRoot = `dist/${folderName}`;
114
- const sourceDir = `${projectRoot}/src/lib`;
116
+ const sourceDir = `${libDir}/src/lib`;
115
117
  const templateSource = (0, schematics_1.apply)((0, schematics_1.url)('./files'), [
116
118
  (0, schematics_1.applyTemplates)({
117
119
  ...schematics_1.strings,
118
120
  ...options,
119
121
  packageName,
120
- projectRoot,
122
+ libDir,
121
123
  distRoot,
122
- relativePathToWorkspaceRoot: (0, paths_1.relativePathToWorkspaceRoot)(projectRoot),
124
+ relativePathToWorkspaceRoot: (0, paths_1.relativePathToWorkspaceRoot)(libDir),
123
125
  prefix,
124
126
  angularLatestVersion: latest_versions_1.latestVersions.Angular.replace(/~|\^/, ''),
125
127
  tsLibLatestVersion: latest_versions_1.latestVersions['tslib'].replace(/~|\^/, ''),
126
128
  folderName,
127
129
  }),
128
- (0, schematics_1.move)(projectRoot),
130
+ (0, schematics_1.move)(libDir),
129
131
  ]);
130
132
  return (0, schematics_1.chain)([
131
133
  (0, schematics_1.mergeWith)(templateSource),
132
- addLibToWorkspaceFile(options, projectRoot, packageName),
134
+ addLibToWorkspaceFile(options, libDir, packageName),
133
135
  options.skipPackageJson ? (0, schematics_1.noop)() : addDependenciesToPackageJson(),
134
136
  options.skipTsConfig ? (0, schematics_1.noop)() : updateTsConfig(packageName, distRoot),
135
137
  (0, schematics_1.schematic)('module', {
@@ -14,6 +14,10 @@ export interface Schema {
14
14
  * A prefix to apply to generated selectors.
15
15
  */
16
16
  prefix?: string;
17
+ /**
18
+ * The root directory of the new library.
19
+ */
20
+ projectRoot?: string;
17
21
  /**
18
22
  * Do not install dependency packages.
19
23
  */
@@ -43,6 +43,10 @@
43
43
  "type": "boolean",
44
44
  "default": false,
45
45
  "description": "Do not update \"tsconfig.json\" to add a path mapping for the new library. The path mapping is needed to use the library in an app, but can be disabled here to simplify development."
46
+ },
47
+ "projectRoot": {
48
+ "type": "string",
49
+ "description": "The root directory of the new library."
46
50
  }
47
51
  },
48
52
  "required": ["name"]
@@ -35,7 +35,7 @@
35
35
  "type": "boolean",
36
36
  "description": "Create a routing module.",
37
37
  "default": false,
38
- "x-user-analytics": 17
38
+ "x-user-analytics": "ep.ng_routing"
39
39
  },
40
40
  "routingScope": {
41
41
  "enum": ["Child", "Root"],
@@ -68,19 +68,18 @@
68
68
  "description": "Include styles inline in the component TS file. By default, an external styles file is created and referenced in the component TypeScript file.",
69
69
  "type": "boolean",
70
70
  "alias": "s",
71
- "x-user-analytics": 9
71
+ "x-user-analytics": "ep.ng_inline_style"
72
72
  },
73
73
  "inlineTemplate": {
74
74
  "description": "Include template inline in the component TS file. By default, an external template file is created and referenced in the component TypeScript file.",
75
75
  "type": "boolean",
76
76
  "alias": "t",
77
- "x-user-analytics": 10
77
+ "x-user-analytics": "ep.ng_inline_template"
78
78
  },
79
79
  "viewEncapsulation": {
80
80
  "description": "The view encapsulation strategy to use in the initial project.",
81
81
  "enum": ["Emulated", "None", "ShadowDom"],
82
- "type": "string",
83
- "x-user-analytics": 11
82
+ "type": "string"
84
83
  },
85
84
  "version": {
86
85
  "type": "string",
@@ -93,7 +92,7 @@
93
92
  "routing": {
94
93
  "type": "boolean",
95
94
  "description": "Generate a routing module for the initial project.",
96
- "x-user-analytics": 17
95
+ "x-user-analytics": "ep.ng_routing"
97
96
  },
98
97
  "prefix": {
99
98
  "type": "string",
@@ -107,14 +106,13 @@
107
106
  "description": "The file extension or preprocessor to use for style files.",
108
107
  "type": "string",
109
108
  "enum": ["css", "scss", "sass", "less"],
110
- "x-user-analytics": 5
109
+ "x-user-analytics": "ep.ng_style"
111
110
  },
112
111
  "skipTests": {
113
112
  "description": "Do not generate \"spec.ts\" test files for the new project.",
114
113
  "type": "boolean",
115
114
  "default": false,
116
- "alias": "S",
117
- "x-user-analytics": 12
115
+ "alias": "S"
118
116
  },
119
117
  "createApplication": {
120
118
  "description": "Create a new initial application project in the 'src' folder of the new workspace. When false, creates an empty workspace with no initial application. You can then use the generate application command so that all applications are created in the projects folder.",
@@ -124,14 +122,12 @@
124
122
  "minimal": {
125
123
  "description": "Create a workspace without any testing frameworks. (Use for learning purposes only.)",
126
124
  "type": "boolean",
127
- "default": false,
128
- "x-user-analytics": 14
125
+ "default": false
129
126
  },
130
127
  "strict": {
131
128
  "description": "Creates a workspace with stricter type checking and stricter bundle budgets settings. This setting helps improve maintainability and catch bugs ahead of time. For more information, see https://angular.io/guide/strict-mode",
132
129
  "type": "boolean",
133
- "default": true,
134
- "x-user-analytics": 7
130
+ "default": true
135
131
  },
136
132
  "packageManager": {
137
133
  "description": "The package manager used to install dependencies.",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@schematics/angular",
3
- "version": "15.0.0-next.4",
3
+ "version": "15.0.0-next.5",
4
4
  "description": "Schematics specific to Angular",
5
5
  "homepage": "https://github.com/angular/angular-cli",
6
6
  "keywords": [
@@ -23,8 +23,8 @@
23
23
  },
24
24
  "schematics": "./collection.json",
25
25
  "dependencies": {
26
- "@angular-devkit/core": "15.0.0-next.4",
27
- "@angular-devkit/schematics": "15.0.0-next.4",
26
+ "@angular-devkit/core": "15.0.0-next.5",
27
+ "@angular-devkit/schematics": "15.0.0-next.5",
28
28
  "jsonc-parser": "3.2.0"
29
29
  },
30
30
  "repository": {
@@ -32,7 +32,7 @@
32
32
  "url": "https://github.com/angular/angular-cli.git"
33
33
  },
34
34
  "engines": {
35
- "node": "^14.20.0 || >=16.10.0",
35
+ "node": "^14.20.0 || ^16.13.0 || >=18.10.0",
36
36
  "npm": "^6.11.0 || ^7.5.6 || >=8.0.0",
37
37
  "yarn": ">= 1.13.0"
38
38
  },
package/pipe/schema.json CHANGED
@@ -39,20 +39,18 @@
39
39
  "skipTests": {
40
40
  "type": "boolean",
41
41
  "description": "Do not create \"spec.ts\" test files for the new pipe.",
42
- "default": false,
43
- "x-user-analytics": 12
42
+ "default": false
44
43
  },
45
44
  "skipImport": {
46
45
  "type": "boolean",
47
46
  "default": false,
48
- "description": "Do not import this pipe into the owning NgModule.",
49
- "x-user-analytics": 18
47
+ "description": "Do not import this pipe into the owning NgModule."
50
48
  },
51
49
  "standalone": {
52
50
  "description": "Whether the generated pipe is standalone.",
53
51
  "type": "boolean",
54
52
  "default": false,
55
- "x-user-analytics": 15
53
+ "x-user-analytics": "ep.ng_standalone"
56
54
  },
57
55
  "module": {
58
56
  "type": "string",
@@ -62,8 +60,7 @@
62
60
  "export": {
63
61
  "type": "boolean",
64
62
  "default": false,
65
- "description": "The declaring NgModule exports this pipe.",
66
- "x-user-analytics": 19
63
+ "description": "The declaring NgModule exports this pipe."
67
64
  }
68
65
  },
69
66
  "required": ["name", "project"]
@@ -18,8 +18,7 @@
18
18
  "skipTests": {
19
19
  "type": "boolean",
20
20
  "description": "Do not create \"spec.ts\" test files for the new resolver.",
21
- "default": false,
22
- "x-user-analytics": 12
21
+ "default": false
23
22
  },
24
23
  "flat": {
25
24
  "type": "boolean",
@@ -38,8 +38,7 @@
38
38
  "skipTests": {
39
39
  "type": "boolean",
40
40
  "description": "Do not create \"spec.ts\" test files for the new service.",
41
- "default": false,
42
- "x-user-analytics": 12
41
+ "default": false
43
42
  }
44
43
  },
45
44
  "required": ["name", "project"]
@@ -5,7 +5,8 @@
5
5
  "outDir": "<%= relativePathToWorkspaceRoot %>/out-tsc/server",
6
6
  "target": "es2019",
7
7
  "types": [
8
- "node"
8
+ "node"<% if (hasLocalizePackage) { %>,
9
+ "@angular/localize/init"<% } %>
9
10
  ]
10
11
  },
11
12
  "files": [
@@ -1,16 +1,2 @@
1
- /***************************************************************************************************
2
- * Initialize the server environment - for example, adding DOM built-in types to the global scope.
3
- *
4
- * NOTE:
5
- * This import must come before any imports (direct or transitive) that rely on DOM built-ins being
6
- * available, such as `@angular/elements`.
7
- */
8
- import '@angular/platform-server/init';
9
1
 
10
- <% if (hasLocalizePackage) { %>/***************************************************************************************************
11
- * Load `$localize` onto the global scope - used if i18n tags appear in Angular templates.
12
- */
13
- import '@angular/localize/init';
14
-
15
- <% } %>
16
2
  export { <%= rootModuleClassName %> } from './app/<%= stripTsExtension(rootModuleFileName) %>';
@@ -225,7 +225,6 @@ function default_1(options) {
225
225
  ...schematics_1.strings,
226
226
  ...options,
227
227
  stripTsExtension: (s) => s.replace(/\.ts$/, ''),
228
- hasLocalizePackage: !!(0, dependencies_1.getPackageJsonDependency)(host, '@angular/localize'),
229
228
  }),
230
229
  (0, schematics_1.move)((0, core_1.join)((0, core_1.normalize)(clientProject.root), 'src')),
231
230
  ]);
@@ -238,6 +237,7 @@ function default_1(options) {
238
237
  ...options,
239
238
  stripTsExtension: (s) => s.replace(/\.ts$/, ''),
240
239
  tsConfigExtends,
240
+ hasLocalizePackage: !!(0, dependencies_1.getPackageJsonDependency)(host, '@angular/localize'),
241
241
  relativePathToWorkspaceRoot: (0, paths_1.relativePathToWorkspaceRoot)(tsConfigDirectory),
242
242
  }),
243
243
  (0, schematics_1.move)(tsConfigDirectory),
@@ -17,7 +17,7 @@
17
17
  "rxjs": "~7.5.0",
18
18
  "tslib": "^2.3.0",
19
19
  "ts-node": "~10.9.0",
20
- "typescript": "~4.7.2",
20
+ "typescript": "~4.8.2",
21
21
  "zone.js": "~0.11.4"
22
22
  }
23
23
  }
@@ -30,14 +30,12 @@
30
30
  "minimal": {
31
31
  "description": "Create a workspace without any testing frameworks. (Use for learning purposes only.)",
32
32
  "type": "boolean",
33
- "default": false,
34
- "x-user-analytics": 14
33
+ "default": false
35
34
  },
36
35
  "strict": {
37
36
  "description": "Create a workspace with stricter type checking options. This setting helps improve maintainability and catch bugs ahead of time. For more information, see https://angular.io/strict",
38
37
  "type": "boolean",
39
- "default": true,
40
- "x-user-analytics": 7
38
+ "default": true
41
39
  },
42
40
  "packageManager": {
43
41
  "description": "The package manager used to install dependencies.",