@schematics/angular 19.0.0-rc.2 → 19.0.0
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.
- package/package.json +3 -3
- package/ssr/files/server-builder/server.ts.template +1 -1
- package/ssr/index.d.ts +3 -1
- package/ssr/index.js +66 -4
- package/ssr/schema.json +1 -3
- package/ssr/tty.d.ts +8 -0
- package/ssr/tty.js +22 -0
- package/utility/latest-versions/package.json +2 -2
- package/utility/latest-versions.js +2 -2
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@schematics/angular",
|
|
3
|
-
"version": "19.0.0
|
|
3
|
+
"version": "19.0.0",
|
|
4
4
|
"description": "Schematics specific to Angular",
|
|
5
5
|
"homepage": "https://github.com/angular/angular-cli",
|
|
6
6
|
"keywords": [
|
|
@@ -22,8 +22,8 @@
|
|
|
22
22
|
},
|
|
23
23
|
"schematics": "./collection.json",
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@angular-devkit/core": "19.0.0
|
|
26
|
-
"@angular-devkit/schematics": "19.0.0
|
|
25
|
+
"@angular-devkit/core": "19.0.0",
|
|
26
|
+
"@angular-devkit/schematics": "19.0.0",
|
|
27
27
|
"jsonc-parser": "3.3.1"
|
|
28
28
|
},
|
|
29
29
|
"packageManager": "yarn@4.5.0",
|
|
@@ -2,7 +2,7 @@ import 'zone.js/node';
|
|
|
2
2
|
|
|
3
3
|
import { APP_BASE_HREF } from '@angular/common';
|
|
4
4
|
import { CommonEngine } from '@angular/ssr/node';
|
|
5
|
-
import
|
|
5
|
+
import express from 'express';
|
|
6
6
|
import { existsSync } from 'node:fs';
|
|
7
7
|
import { join } from 'node:path';
|
|
8
8
|
import <% if (isStandalone) { %>bootstrap<% } else { %>AppServerModule<% } %> from './main.server';
|
package/ssr/index.d.ts
CHANGED
|
@@ -7,4 +7,6 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import { Rule } from '@angular-devkit/schematics';
|
|
9
9
|
import { Schema as SSROptions } from './schema';
|
|
10
|
-
export default function (
|
|
10
|
+
export default function (inputOptions: SSROptions): Rule;
|
|
11
|
+
export type Prompt = (message: string, defaultValue: boolean) => Promise<boolean>;
|
|
12
|
+
export declare function setPrompterForTestOnly(prompter?: Prompt): void;
|
package/ssr/index.js
CHANGED
|
@@ -6,8 +6,32 @@
|
|
|
6
6
|
* Use of this source code is governed by an MIT-style license that can be
|
|
7
7
|
* found in the LICENSE file at https://angular.dev/license
|
|
8
8
|
*/
|
|
9
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = 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);
|
|
16
|
+
}) : (function(o, m, k, k2) {
|
|
17
|
+
if (k2 === undefined) k2 = k;
|
|
18
|
+
o[k2] = m[k];
|
|
19
|
+
}));
|
|
20
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
21
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
22
|
+
}) : function(o, v) {
|
|
23
|
+
o["default"] = v;
|
|
24
|
+
});
|
|
25
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
26
|
+
if (mod && mod.__esModule) return mod;
|
|
27
|
+
var result = {};
|
|
28
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
29
|
+
__setModuleDefault(result, mod);
|
|
30
|
+
return result;
|
|
31
|
+
};
|
|
9
32
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
33
|
exports.default = default_1;
|
|
34
|
+
exports.setPrompterForTestOnly = setPrompterForTestOnly;
|
|
11
35
|
const core_1 = require("@angular-devkit/core");
|
|
12
36
|
const schematics_1 = require("@angular-devkit/schematics");
|
|
13
37
|
const node_path_1 = require("node:path");
|
|
@@ -19,6 +43,7 @@ const project_targets_1 = require("../utility/project-targets");
|
|
|
19
43
|
const util_1 = require("../utility/standalone/util");
|
|
20
44
|
const workspace_1 = require("../utility/workspace");
|
|
21
45
|
const workspace_models_1 = require("../utility/workspace-models");
|
|
46
|
+
const tty_1 = require("./tty");
|
|
22
47
|
const SERVE_SSR_TARGET_NAME = 'serve-ssr';
|
|
23
48
|
const PRERENDER_TARGET_NAME = 'prerender';
|
|
24
49
|
const DEFAULT_BROWSER_DIR = 'browser';
|
|
@@ -49,7 +74,7 @@ async function getApplicationBuilderOutputPaths(host, projectName) {
|
|
|
49
74
|
}
|
|
50
75
|
const { outputPath } = architectTarget.options;
|
|
51
76
|
if (outputPath === null || outputPath === undefined) {
|
|
52
|
-
throw new schematics_1.SchematicsException(`outputPath for ${projectName} ${target} target is
|
|
77
|
+
throw new schematics_1.SchematicsException(`outputPath for ${projectName} ${target} target is undefined or null.`);
|
|
53
78
|
}
|
|
54
79
|
const defaultDirs = {
|
|
55
80
|
server: DEFAULT_SERVER_DIR,
|
|
@@ -266,16 +291,18 @@ function addServerFile(projectSourceRoot, options, isStandalone) {
|
|
|
266
291
|
]));
|
|
267
292
|
};
|
|
268
293
|
}
|
|
269
|
-
function default_1(
|
|
294
|
+
function default_1(inputOptions) {
|
|
270
295
|
return async (host, context) => {
|
|
271
|
-
const browserEntryPoint = await (0, util_1.getMainFilePath)(host,
|
|
296
|
+
const browserEntryPoint = await (0, util_1.getMainFilePath)(host, inputOptions.project);
|
|
272
297
|
const isStandalone = (0, ng_ast_utils_1.isStandaloneApp)(host, browserEntryPoint);
|
|
273
298
|
const workspace = await (0, workspace_1.getWorkspace)(host);
|
|
274
|
-
const clientProject = workspace.projects.get(
|
|
299
|
+
const clientProject = workspace.projects.get(inputOptions.project);
|
|
275
300
|
if (!clientProject) {
|
|
276
301
|
throw (0, project_targets_1.targetBuildNotFoundError)();
|
|
277
302
|
}
|
|
278
303
|
const isUsingApplicationBuilder = usingApplicationBuilder(clientProject);
|
|
304
|
+
const serverRouting = await isServerRoutingEnabled(isUsingApplicationBuilder, inputOptions);
|
|
305
|
+
const options = { ...inputOptions, serverRouting };
|
|
279
306
|
const sourceRoot = clientProject.sourceRoot ?? node_path_1.posix.join(clientProject.root, 'src');
|
|
280
307
|
return (0, schematics_1.chain)([
|
|
281
308
|
(0, schematics_1.schematic)('server', {
|
|
@@ -302,3 +329,38 @@ function usingApplicationBuilder(project) {
|
|
|
302
329
|
const isUsingApplicationBuilder = buildBuilder === workspace_models_1.Builders.Application || buildBuilder === workspace_models_1.Builders.BuildApplication;
|
|
303
330
|
return isUsingApplicationBuilder;
|
|
304
331
|
}
|
|
332
|
+
const defaultPrompter = async (message, defaultValue) => {
|
|
333
|
+
const { confirm } = await Promise.resolve().then(() => __importStar(require('@inquirer/prompts')));
|
|
334
|
+
return await confirm({
|
|
335
|
+
message,
|
|
336
|
+
default: defaultValue,
|
|
337
|
+
});
|
|
338
|
+
};
|
|
339
|
+
// Allow the prompt functionality to be overridden to facilitate testing.
|
|
340
|
+
let prompt = defaultPrompter;
|
|
341
|
+
function setPrompterForTestOnly(prompter) {
|
|
342
|
+
prompt = prompter ?? defaultPrompter;
|
|
343
|
+
}
|
|
344
|
+
/** Returns whether or not server routing is enabled, potentially prompting the user if necessary. */
|
|
345
|
+
async function isServerRoutingEnabled(isUsingApplicationBuilder, options) {
|
|
346
|
+
if (!isUsingApplicationBuilder) {
|
|
347
|
+
if (options.serverRouting) {
|
|
348
|
+
throw new schematics_1.SchematicsException('Server routing APIs can only be added to a project using `application` builder.');
|
|
349
|
+
}
|
|
350
|
+
else {
|
|
351
|
+
return false;
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
// Use explicit option if provided.
|
|
355
|
+
if (options.serverRouting !== undefined) {
|
|
356
|
+
return options.serverRouting;
|
|
357
|
+
}
|
|
358
|
+
const serverRoutingDefault = false;
|
|
359
|
+
// Use the default if not in an interactive terminal.
|
|
360
|
+
if (!(0, tty_1.isTTY)()) {
|
|
361
|
+
return serverRoutingDefault;
|
|
362
|
+
}
|
|
363
|
+
// Prompt the user if in an interactive terminal and no option was provided.
|
|
364
|
+
return await prompt('Would you like to use the Server Routing and App Engine APIs (Developer Preview) for this server application?',
|
|
365
|
+
/* defaultValue */ serverRoutingDefault);
|
|
366
|
+
}
|
package/ssr/schema.json
CHANGED
|
@@ -18,9 +18,7 @@
|
|
|
18
18
|
},
|
|
19
19
|
"serverRouting": {
|
|
20
20
|
"description": "Creates a server application using the Server Routing and App Engine APIs (Developer Preview).",
|
|
21
|
-
"
|
|
22
|
-
"type": "boolean",
|
|
23
|
-
"default": false
|
|
21
|
+
"type": "boolean"
|
|
24
22
|
}
|
|
25
23
|
},
|
|
26
24
|
"required": ["project"],
|
package/ssr/tty.d.ts
ADDED
package/ssr/tty.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
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.dev/license
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.isTTY = isTTY;
|
|
11
|
+
function _isTruthy(value) {
|
|
12
|
+
// Returns true if value is a string that is anything but 0 or false.
|
|
13
|
+
return value !== undefined && value !== '0' && value.toUpperCase() !== 'FALSE';
|
|
14
|
+
}
|
|
15
|
+
function isTTY() {
|
|
16
|
+
// If we force TTY, we always return true.
|
|
17
|
+
const force = process.env['NG_FORCE_TTY'];
|
|
18
|
+
if (force !== undefined) {
|
|
19
|
+
return _isTruthy(force);
|
|
20
|
+
}
|
|
21
|
+
return !!process.stdout.isTTY && !_isTruthy(process.env['CI']);
|
|
22
|
+
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"comment": "This file is needed so that dependencies are synced by Renovate.",
|
|
4
4
|
"private": true,
|
|
5
5
|
"dependencies": {
|
|
6
|
-
"@angular/core": "^19.0.0
|
|
6
|
+
"@angular/core": "^19.0.0",
|
|
7
7
|
"@types/express": "^4.17.17",
|
|
8
8
|
"@types/jasmine": "~5.1.0",
|
|
9
9
|
"@types/node": "^18.18.0",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"karma-jasmine": "~5.1.0",
|
|
18
18
|
"karma": "~6.4.0",
|
|
19
19
|
"less": "^4.2.0",
|
|
20
|
-
"ng-packagr": "^19.0.0
|
|
20
|
+
"ng-packagr": "^19.0.0",
|
|
21
21
|
"postcss": "^8.4.38",
|
|
22
22
|
"protractor": "~7.0.0",
|
|
23
23
|
"rxjs": "~7.8.0",
|
|
@@ -15,6 +15,6 @@ exports.latestVersions = {
|
|
|
15
15
|
...dependencies,
|
|
16
16
|
// As Angular CLI works with same minor versions of Angular Framework, a tilde match for the current
|
|
17
17
|
Angular: dependencies['@angular/core'],
|
|
18
|
-
DevkitBuildAngular: '^19.0.0
|
|
19
|
-
AngularSSR: '^19.0.0
|
|
18
|
+
DevkitBuildAngular: '^19.0.0',
|
|
19
|
+
AngularSSR: '^19.0.0',
|
|
20
20
|
};
|