@angular/core 20.0.0-next.4 → 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.
- package/api.d-mxcXqDpA.d.ts +297 -0
- package/discovery.d-CyYpOJ7j.d.ts +7393 -0
- package/{event_dispatcher.d-pVP0-wST.d.ts → event_dispatcher.d-PWnbqZDx.d.ts} +3 -2
- package/fesm2022/attribute-B17mgaqe.mjs +24 -0
- package/fesm2022/attribute-B17mgaqe.mjs.map +1 -0
- package/fesm2022/core.mjs +580 -36869
- package/fesm2022/core.mjs.map +1 -1
- package/fesm2022/debug_node-xKpCIZm-.mjs +32070 -0
- package/fesm2022/debug_node-xKpCIZm-.mjs.map +1 -0
- package/fesm2022/primitives/di.mjs +18 -4
- package/fesm2022/primitives/di.mjs.map +1 -1
- package/fesm2022/primitives/event-dispatch.mjs +2 -16
- package/fesm2022/primitives/event-dispatch.mjs.map +1 -1
- package/fesm2022/primitives/signals.mjs +5 -3
- package/fesm2022/primitives/signals.mjs.map +1 -1
- package/fesm2022/resource-BPpYEDic.mjs +621 -0
- package/fesm2022/resource-BPpYEDic.mjs.map +1 -0
- package/fesm2022/root_effect_scheduler-D0_b1cf_.mjs +3816 -0
- package/fesm2022/root_effect_scheduler-D0_b1cf_.mjs.map +1 -0
- package/fesm2022/rxjs-interop.mjs +91 -7
- package/fesm2022/rxjs-interop.mjs.map +1 -1
- package/fesm2022/{untracked-DkcXpNb_.mjs → signal-DhRAAi7R.mjs} +16 -114
- package/fesm2022/signal-DhRAAi7R.mjs.map +1 -0
- package/fesm2022/testing.mjs +105 -103
- package/fesm2022/testing.mjs.map +1 -1
- package/fesm2022/untracked-DaaW3JJm.mjs +117 -0
- package/fesm2022/untracked-DaaW3JJm.mjs.map +1 -0
- package/fesm2022/weak_ref-DrMdAIDh.mjs +12 -0
- package/fesm2022/weak_ref-DrMdAIDh.mjs.map +1 -0
- package/{weak_ref.d-BZ7gyRag.d.ts → graph.d-StYigYp1.d.ts} +3 -24
- package/index.d.ts +2520 -10803
- package/ng_i18n_closure_mode.d-DLxSUiDr.d.ts +832 -0
- package/package.json +3 -3
- package/primitives/di/index.d.ts +3 -2
- package/primitives/event-dispatch/index.d.ts +3 -3
- package/primitives/signals/index.d.ts +8 -4
- package/rxjs-interop/index.d.ts +16 -4
- package/schematics/bundles/{apply_import_manager-CeNv8GIG.js → apply_import_manager-C-ysxahq.js} +3 -3
- package/schematics/bundles/{compiler_host-DwM3ugW3.js → change_tracker-0Ktek5Xl.js} +3 -121
- package/schematics/bundles/checker-DqUKCGda.js +17702 -0
- package/schematics/bundles/cleanup-unused-imports.js +6 -5
- package/schematics/bundles/{checker-k591b6WQ.js → compiler-CuoiHqkc.js} +366 -17992
- package/schematics/bundles/compiler_host-CAfDJO3W.js +129 -0
- package/schematics/bundles/control-flow-migration.js +28 -40
- package/schematics/bundles/document-core.js +96 -0
- package/schematics/bundles/imports-CIX-JgAN.js +1 -1
- package/schematics/bundles/{index-BhELUmYx.js → index-CwFQSYXZ.js} +30 -29
- package/schematics/bundles/{index-B4OAlHh8.js → index-WFXCe5Q0.js} +527 -524
- package/schematics/bundles/inject-flags.js +6 -5
- package/schematics/bundles/inject-migration.js +29 -10
- package/schematics/bundles/leading_space-D9nQ8UQC.js +1 -1
- package/schematics/bundles/{migrate_ts_type_references-Be0TNYen.js → migrate_ts_type_references-BNuHufqZ.js} +6 -5
- package/schematics/bundles/ng_decorators-DznZ5jMl.js +1 -1
- package/schematics/bundles/nodes-B16H9JUd.js +1 -1
- package/schematics/bundles/output-migration.js +15 -10
- package/schematics/bundles/project_tsconfig_paths-CDVxT6Ov.js +1 -1
- package/schematics/bundles/property_name-BBwFuqMe.js +1 -1
- package/schematics/bundles/route-lazy-loading.js +7 -5
- package/schematics/bundles/{run_in_devkit-CkvEksWP.js → run_in_devkit-CmHxABFr.js} +4 -3
- package/schematics/bundles/self-closing-tags-migration.js +10 -9
- package/schematics/bundles/signal-input-migration.js +8 -7
- package/schematics/bundles/signal-queries-migration.js +27 -14
- package/schematics/bundles/signals.js +8 -7
- package/schematics/bundles/standalone-migration.js +11 -9
- package/schematics/bundles/symbol-VPWguRxr.js +1 -1
- package/schematics/bundles/test-bed-get.js +5 -4
- package/schematics/collection.json +0 -6
- package/schematics/migrations.json +11 -0
- package/signal.d-BeaTIeOE.d.ts +31 -0
- package/testing/index.d.ts +13 -9
- package/weak_ref.d-ttyj86RV.d.ts +9 -0
- package/fesm2022/injector-BlLwZ2sr.mjs +0 -24
- package/fesm2022/injector-BlLwZ2sr.mjs.map +0 -1
- package/fesm2022/untracked-DkcXpNb_.mjs.map +0 -1
- package/navigation_types.d-DgDrF5rp.d.ts +0 -121
- package/schematics/ng-generate/control-flow-migration/schema.json +0 -20
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
/**
|
|
3
|
-
* @license Angular v20.0.0-next.
|
|
3
|
+
* @license Angular v20.0.0-next.5
|
|
4
4
|
* (c) 2010-2025 Google LLC. https://angular.io/
|
|
5
5
|
* License: MIT
|
|
6
6
|
*/
|
|
@@ -8,11 +8,12 @@
|
|
|
8
8
|
|
|
9
9
|
var ts = require('typescript');
|
|
10
10
|
require('os');
|
|
11
|
-
var checker = require('./checker-
|
|
12
|
-
require('./
|
|
11
|
+
var checker = require('./checker-DqUKCGda.js');
|
|
12
|
+
require('./compiler-CuoiHqkc.js');
|
|
13
|
+
require('./index-WFXCe5Q0.js');
|
|
13
14
|
require('path');
|
|
14
|
-
var run_in_devkit = require('./run_in_devkit-
|
|
15
|
-
var apply_import_manager = require('./apply_import_manager-
|
|
15
|
+
var run_in_devkit = require('./run_in_devkit-CmHxABFr.js');
|
|
16
|
+
var apply_import_manager = require('./apply_import_manager-C-ysxahq.js');
|
|
16
17
|
var imports = require('./imports-CIX-JgAN.js');
|
|
17
18
|
require('@angular-devkit/core');
|
|
18
19
|
require('node:path/posix');
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
/**
|
|
3
|
-
* @license Angular v20.0.0-next.
|
|
3
|
+
* @license Angular v20.0.0-next.5
|
|
4
4
|
* (c) 2010-2025 Google LLC. https://angular.io/
|
|
5
5
|
* License: MIT
|
|
6
6
|
*/
|
|
@@ -8,13 +8,15 @@
|
|
|
8
8
|
|
|
9
9
|
var schematics = require('@angular-devkit/schematics');
|
|
10
10
|
var p = require('path');
|
|
11
|
-
var
|
|
11
|
+
var change_tracker = require('./change_tracker-0Ktek5Xl.js');
|
|
12
|
+
var compiler_host = require('./compiler_host-CAfDJO3W.js');
|
|
12
13
|
var ts = require('typescript');
|
|
13
14
|
var ng_decorators = require('./ng_decorators-DznZ5jMl.js');
|
|
14
15
|
var imports = require('./imports-CIX-JgAN.js');
|
|
15
16
|
var nodes = require('./nodes-B16H9JUd.js');
|
|
16
17
|
var leading_space = require('./leading_space-D9nQ8UQC.js');
|
|
17
|
-
require('./
|
|
18
|
+
require('./compiler-CuoiHqkc.js');
|
|
19
|
+
require('./checker-DqUKCGda.js');
|
|
18
20
|
require('os');
|
|
19
21
|
require('fs');
|
|
20
22
|
require('module');
|
|
@@ -235,9 +237,20 @@ function getSuperParameters(declaration, superCall, localTypeChecker) {
|
|
|
235
237
|
if (ts.isParameter(decl) && topLevelParameters.has(decl)) {
|
|
236
238
|
usedParams.add(decl);
|
|
237
239
|
}
|
|
240
|
+
else if (ts.isShorthandPropertyAssignment(decl) &&
|
|
241
|
+
topLevelParameterNames.has(decl.name.text)) {
|
|
242
|
+
for (const param of topLevelParameters) {
|
|
243
|
+
if (ts.isIdentifier(param.name) && decl.name.text === param.name.text) {
|
|
244
|
+
usedParams.add(param);
|
|
245
|
+
break;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
}
|
|
238
249
|
});
|
|
250
|
+
// Parameters referenced inside callbacks can be used directly
|
|
251
|
+
// within `super` so don't descend into inline functions.
|
|
239
252
|
}
|
|
240
|
-
else {
|
|
253
|
+
else if (!isInlineFunction(node)) {
|
|
241
254
|
node.forEachChild(walk);
|
|
242
255
|
}
|
|
243
256
|
});
|
|
@@ -329,6 +342,10 @@ function findSuperCall(root) {
|
|
|
329
342
|
});
|
|
330
343
|
return result;
|
|
331
344
|
}
|
|
345
|
+
/** Checks whether a node is an inline function. */
|
|
346
|
+
function isInlineFunction(node) {
|
|
347
|
+
return (ts.isFunctionDeclaration(node) || ts.isFunctionExpression(node) || ts.isArrowFunction(node));
|
|
348
|
+
}
|
|
332
349
|
|
|
333
350
|
/*!
|
|
334
351
|
* @license
|
|
@@ -573,9 +590,7 @@ function isInsideInlineFunction(startNode, boundary) {
|
|
|
573
590
|
if (current === boundary) {
|
|
574
591
|
return false;
|
|
575
592
|
}
|
|
576
|
-
if (
|
|
577
|
-
ts.isFunctionExpression(current) ||
|
|
578
|
-
ts.isArrowFunction(current)) {
|
|
593
|
+
if (isInlineFunction(current)) {
|
|
579
594
|
return true;
|
|
580
595
|
}
|
|
581
596
|
current = current.parent;
|
|
@@ -605,7 +620,7 @@ function migrateFile(sourceFile, options) {
|
|
|
605
620
|
return [];
|
|
606
621
|
}
|
|
607
622
|
const printer = ts.createPrinter();
|
|
608
|
-
const tracker = new
|
|
623
|
+
const tracker = new change_tracker.ChangeTracker(printer);
|
|
609
624
|
analysis.classes.forEach(({ node, constructor, superCall }) => {
|
|
610
625
|
const memberIndentation = leading_space.getLeadingLineWhitespaceOfNode(node.members[0]);
|
|
611
626
|
const prependToClass = [];
|
|
@@ -1098,16 +1113,20 @@ function applyInternalOnlyChanges(node, constructor, localTypeChecker, tracker,
|
|
|
1098
1113
|
}
|
|
1099
1114
|
result.toCombine.forEach(({ declaration, initializer }) => {
|
|
1100
1115
|
const initializerStatement = nodes.closestNode(initializer, ts.isStatement);
|
|
1101
|
-
const newProperty = ts.factory.createPropertyDeclaration(cloneModifiers(declaration.modifiers), cloneName(declaration.name), declaration.questionToken, declaration.type, initializer);
|
|
1102
1116
|
// If the initialization order is being preserved, we have to remove the original
|
|
1103
1117
|
// declaration and re-declare it. Otherwise we can do the replacement in-place.
|
|
1104
1118
|
if (preserveInitOrder) {
|
|
1119
|
+
// Preserve comment in the new property since we are removing the entire node.
|
|
1120
|
+
const newProperty = ts.factory.createPropertyDeclaration(declaration.modifiers, declaration.name, declaration.questionToken, declaration.type, initializer);
|
|
1105
1121
|
tracker.removeNode(declaration, true);
|
|
1106
1122
|
removedMembers.add(declaration);
|
|
1107
1123
|
afterInjectCalls.push(memberIndentation +
|
|
1108
1124
|
printer.printNode(ts.EmitHint.Unspecified, newProperty, declaration.getSourceFile()));
|
|
1109
1125
|
}
|
|
1110
1126
|
else {
|
|
1127
|
+
// Strip comments from the declaration since we are replacing just
|
|
1128
|
+
// the node, not the leading comment.
|
|
1129
|
+
const newProperty = ts.factory.createPropertyDeclaration(cloneModifiers(declaration.modifiers), cloneName(declaration.name), declaration.questionToken, declaration.type, initializer);
|
|
1111
1130
|
tracker.replaceNode(declaration, newProperty);
|
|
1112
1131
|
}
|
|
1113
1132
|
// This should always be defined, but null check it just in case.
|
|
@@ -1130,7 +1149,7 @@ function applyInternalOnlyChanges(node, constructor, localTypeChecker, tracker,
|
|
|
1130
1149
|
function migrate(options) {
|
|
1131
1150
|
return async (tree) => {
|
|
1132
1151
|
const basePath = process.cwd();
|
|
1133
|
-
const pathToMigrate =
|
|
1152
|
+
const pathToMigrate = change_tracker.normalizePath(p.join(basePath, options.path));
|
|
1134
1153
|
let allPaths = [];
|
|
1135
1154
|
if (pathToMigrate.trim() !== '') {
|
|
1136
1155
|
allPaths.push(pathToMigrate);
|
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
/**
|
|
3
|
-
* @license Angular v20.0.0-next.
|
|
3
|
+
* @license Angular v20.0.0-next.5
|
|
4
4
|
* (c) 2010-2025 Google LLC. https://angular.io/
|
|
5
5
|
* License: MIT
|
|
6
6
|
*/
|
|
7
7
|
'use strict';
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
require('./compiler-CuoiHqkc.js');
|
|
10
10
|
var ts = require('typescript');
|
|
11
|
+
var checker = require('./checker-DqUKCGda.js');
|
|
11
12
|
require('os');
|
|
12
13
|
var assert = require('assert');
|
|
13
|
-
var index = require('./index-
|
|
14
|
-
var run_in_devkit = require('./run_in_devkit-
|
|
14
|
+
var index = require('./index-CwFQSYXZ.js');
|
|
15
|
+
var run_in_devkit = require('./run_in_devkit-CmHxABFr.js');
|
|
15
16
|
var leading_space = require('./leading_space-D9nQ8UQC.js');
|
|
16
|
-
require('./index-
|
|
17
|
+
require('./index-WFXCe5Q0.js');
|
|
17
18
|
require('path');
|
|
18
19
|
|
|
19
20
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
/**
|
|
3
|
-
* @license Angular v20.0.0-next.
|
|
3
|
+
* @license Angular v20.0.0-next.5
|
|
4
4
|
* (c) 2010-2025 Google LLC. https://angular.io/
|
|
5
5
|
* License: MIT
|
|
6
6
|
*/
|
|
@@ -8,12 +8,13 @@
|
|
|
8
8
|
|
|
9
9
|
var ts = require('typescript');
|
|
10
10
|
require('os');
|
|
11
|
-
var checker = require('./checker-
|
|
12
|
-
var
|
|
11
|
+
var checker = require('./checker-DqUKCGda.js');
|
|
12
|
+
var compiler = require('./compiler-CuoiHqkc.js');
|
|
13
|
+
var index$1 = require('./index-WFXCe5Q0.js');
|
|
13
14
|
require('path');
|
|
14
|
-
var run_in_devkit = require('./run_in_devkit-
|
|
15
|
-
var apply_import_manager = require('./apply_import_manager-
|
|
16
|
-
var index = require('./index-
|
|
15
|
+
var run_in_devkit = require('./run_in_devkit-CmHxABFr.js');
|
|
16
|
+
var apply_import_manager = require('./apply_import_manager-C-ysxahq.js');
|
|
17
|
+
var index = require('./index-CwFQSYXZ.js');
|
|
17
18
|
require('@angular-devkit/core');
|
|
18
19
|
require('node:path/posix');
|
|
19
20
|
require('fs');
|
|
@@ -114,7 +115,7 @@ function checkNonTsReferenceAccessesField(ref, fieldName) {
|
|
|
114
115
|
if (ref.from.read !== readFromPath) {
|
|
115
116
|
return null;
|
|
116
117
|
}
|
|
117
|
-
if (!(parentRead instanceof
|
|
118
|
+
if (!(parentRead instanceof compiler.PropertyRead) || parentRead.name !== fieldName) {
|
|
118
119
|
return null;
|
|
119
120
|
}
|
|
120
121
|
return parentRead;
|
|
@@ -144,9 +145,13 @@ function checkNonTsReferenceCallsField(ref, fieldName) {
|
|
|
144
145
|
const printer = ts.createPrinter();
|
|
145
146
|
function calculateDeclarationReplacement(info, node, aliasParam) {
|
|
146
147
|
const sf = node.getSourceFile();
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
148
|
+
let payloadTypes;
|
|
149
|
+
if (node.initializer && ts.isNewExpression(node.initializer) && node.initializer.typeArguments) {
|
|
150
|
+
payloadTypes = node.initializer.typeArguments;
|
|
151
|
+
}
|
|
152
|
+
else if (node.type && ts.isTypeReferenceNode(node.type) && node.type.typeArguments) {
|
|
153
|
+
payloadTypes = ts.factory.createNodeArray(node.type.typeArguments);
|
|
154
|
+
}
|
|
150
155
|
const outputCall = ts.factory.createCallExpression(ts.factory.createIdentifier('output'), payloadTypes, aliasParam !== undefined
|
|
151
156
|
? [
|
|
152
157
|
ts.factory.createObjectLiteralExpression([
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
/**
|
|
3
|
-
* @license Angular v20.0.0-next.
|
|
3
|
+
* @license Angular v20.0.0-next.5
|
|
4
4
|
* (c) 2010-2025 Google LLC. https://angular.io/
|
|
5
5
|
* License: MIT
|
|
6
6
|
*/
|
|
@@ -9,11 +9,13 @@
|
|
|
9
9
|
var schematics = require('@angular-devkit/schematics');
|
|
10
10
|
var fs = require('fs');
|
|
11
11
|
var p = require('path');
|
|
12
|
-
var
|
|
12
|
+
var change_tracker = require('./change_tracker-0Ktek5Xl.js');
|
|
13
13
|
var project_tsconfig_paths = require('./project_tsconfig_paths-CDVxT6Ov.js');
|
|
14
|
+
var compiler_host = require('./compiler_host-CAfDJO3W.js');
|
|
14
15
|
var ts = require('typescript');
|
|
15
|
-
var checker = require('./checker-
|
|
16
|
+
var checker = require('./checker-DqUKCGda.js');
|
|
16
17
|
var property_name = require('./property_name-BBwFuqMe.js');
|
|
18
|
+
require('./compiler-CuoiHqkc.js');
|
|
17
19
|
require('os');
|
|
18
20
|
require('@angular-devkit/core');
|
|
19
21
|
require('module');
|
|
@@ -156,7 +158,7 @@ function migrateFileToLazyRoutes(sourceFile, program) {
|
|
|
156
158
|
const typeChecker = program.getTypeChecker();
|
|
157
159
|
const reflector = new checker.TypeScriptReflectionHost(typeChecker);
|
|
158
160
|
const printer = ts.createPrinter();
|
|
159
|
-
const tracker = new
|
|
161
|
+
const tracker = new change_tracker.ChangeTracker(printer);
|
|
160
162
|
const routeArraysToMigrate = findRoutesArrayToMigrate(sourceFile, typeChecker);
|
|
161
163
|
if (routeArraysToMigrate.length === 0) {
|
|
162
164
|
return { pendingChanges: [], skippedRoutes: [], migratedRoutes: [] };
|
|
@@ -347,7 +349,7 @@ function migrate(options) {
|
|
|
347
349
|
const basePath = process.cwd();
|
|
348
350
|
// TS and Schematic use paths in POSIX format even on Windows. This is needed as otherwise
|
|
349
351
|
// string matching such as `sourceFile.fileName.startsWith(pathToMigrate)` might not work.
|
|
350
|
-
const pathToMigrate =
|
|
352
|
+
const pathToMigrate = change_tracker.normalizePath(p.join(basePath, options.path));
|
|
351
353
|
if (!buildPaths.length) {
|
|
352
354
|
throw new schematics.SchematicsException('Could not find any tsconfig file. Cannot run the route lazy loading migration.');
|
|
353
355
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
/**
|
|
3
|
-
* @license Angular v20.0.0-next.
|
|
3
|
+
* @license Angular v20.0.0-next.5
|
|
4
4
|
* (c) 2010-2025 Google LLC. https://angular.io/
|
|
5
5
|
* License: MIT
|
|
6
6
|
*/
|
|
@@ -8,11 +8,12 @@
|
|
|
8
8
|
|
|
9
9
|
var os = require('os');
|
|
10
10
|
var ts = require('typescript');
|
|
11
|
-
var checker = require('./checker-
|
|
12
|
-
var index = require('./index-
|
|
11
|
+
var checker = require('./checker-DqUKCGda.js');
|
|
12
|
+
var index = require('./index-WFXCe5Q0.js');
|
|
13
13
|
var schematics = require('@angular-devkit/schematics');
|
|
14
14
|
var core = require('@angular-devkit/core');
|
|
15
15
|
var posixPath = require('node:path/posix');
|
|
16
|
+
require('./compiler-CuoiHqkc.js');
|
|
16
17
|
require('path');
|
|
17
18
|
var project_tsconfig_paths = require('./project_tsconfig_paths-CDVxT6Ov.js');
|
|
18
19
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
/**
|
|
3
|
-
* @license Angular v20.0.0-next.
|
|
3
|
+
* @license Angular v20.0.0-next.5
|
|
4
4
|
* (c) 2010-2025 Google LLC. https://angular.io/
|
|
5
5
|
* License: MIT
|
|
6
6
|
*/
|
|
@@ -8,10 +8,11 @@
|
|
|
8
8
|
|
|
9
9
|
var ts = require('typescript');
|
|
10
10
|
require('os');
|
|
11
|
-
var checker = require('./checker-
|
|
12
|
-
require('./
|
|
11
|
+
var checker = require('./checker-DqUKCGda.js');
|
|
12
|
+
var compiler = require('./compiler-CuoiHqkc.js');
|
|
13
|
+
require('./index-WFXCe5Q0.js');
|
|
13
14
|
require('path');
|
|
14
|
-
var run_in_devkit = require('./run_in_devkit-
|
|
15
|
+
var run_in_devkit = require('./run_in_devkit-CmHxABFr.js');
|
|
15
16
|
var ng_decorators = require('./ng_decorators-DznZ5jMl.js');
|
|
16
17
|
var property_name = require('./property_name-BBwFuqMe.js');
|
|
17
18
|
require('@angular-devkit/core');
|
|
@@ -202,7 +203,7 @@ function parseTemplate(template) {
|
|
|
202
203
|
// interpolated text as text nodes containing a mixture of interpolation tokens and text tokens,
|
|
203
204
|
// rather than turning them into `BoundText` nodes like the Ivy AST does. This allows us to
|
|
204
205
|
// easily get the text-only ranges without having to reconstruct the original text.
|
|
205
|
-
parsed = new
|
|
206
|
+
parsed = new compiler.HtmlParser().parse(template, '', {
|
|
206
207
|
// Allows for ICUs to be parsed.
|
|
207
208
|
tokenizeExpansionForms: true,
|
|
208
209
|
// Explicitly disable blocks so that their characters are treated as plain text.
|
|
@@ -227,7 +228,7 @@ function migrateTemplateToSelfClosingTags(template) {
|
|
|
227
228
|
return { migrated: template, changed: false, replacementCount: 0 };
|
|
228
229
|
}
|
|
229
230
|
const visitor = new AngularElementCollector();
|
|
230
|
-
|
|
231
|
+
compiler.visitAll$1(visitor, parsed.tree.rootNodes);
|
|
231
232
|
let newTemplate = template;
|
|
232
233
|
let changedOffset = 0;
|
|
233
234
|
let replacementCount = 0;
|
|
@@ -255,8 +256,8 @@ function replaceWithSelfClosingTag(html, tagName) {
|
|
|
255
256
|
function replaceTemplate(template, replaceValue, start, end, offset) {
|
|
256
257
|
return template.slice(0, start + offset) + replaceValue + template.slice(end + offset);
|
|
257
258
|
}
|
|
258
|
-
const ALL_HTML_TAGS = new
|
|
259
|
-
class AngularElementCollector extends
|
|
259
|
+
const ALL_HTML_TAGS = new compiler.DomElementSchemaRegistry().allKnownElementNames();
|
|
260
|
+
class AngularElementCollector extends compiler.RecursiveVisitor$1 {
|
|
260
261
|
elements = [];
|
|
261
262
|
constructor() {
|
|
262
263
|
super();
|
|
@@ -283,7 +284,7 @@ class AngularElementCollector extends checker.RecursiveVisitor {
|
|
|
283
284
|
}
|
|
284
285
|
if (element.children.length === 1) {
|
|
285
286
|
const child = element.children[0];
|
|
286
|
-
return child instanceof
|
|
287
|
+
return child instanceof compiler.Text && /^\s*$/.test(child.value);
|
|
287
288
|
}
|
|
288
289
|
return false;
|
|
289
290
|
}
|
|
@@ -1,21 +1,22 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
/**
|
|
3
|
-
* @license Angular v20.0.0-next.
|
|
3
|
+
* @license Angular v20.0.0-next.5
|
|
4
4
|
* (c) 2010-2025 Google LLC. https://angular.io/
|
|
5
5
|
* License: MIT
|
|
6
6
|
*/
|
|
7
7
|
'use strict';
|
|
8
8
|
|
|
9
|
-
var migrate_ts_type_references = require('./migrate_ts_type_references-
|
|
9
|
+
var migrate_ts_type_references = require('./migrate_ts_type_references-BNuHufqZ.js');
|
|
10
10
|
var ts = require('typescript');
|
|
11
11
|
require('os');
|
|
12
|
-
var checker = require('./checker-
|
|
13
|
-
|
|
12
|
+
var checker = require('./checker-DqUKCGda.js');
|
|
13
|
+
require('./compiler-CuoiHqkc.js');
|
|
14
|
+
var index$1 = require('./index-WFXCe5Q0.js');
|
|
14
15
|
require('path');
|
|
15
|
-
var run_in_devkit = require('./run_in_devkit-
|
|
16
|
-
var index = require('./index-
|
|
16
|
+
var run_in_devkit = require('./run_in_devkit-CmHxABFr.js');
|
|
17
|
+
var index = require('./index-CwFQSYXZ.js');
|
|
17
18
|
var assert = require('assert');
|
|
18
|
-
var apply_import_manager = require('./apply_import_manager-
|
|
19
|
+
var apply_import_manager = require('./apply_import_manager-C-ysxahq.js');
|
|
19
20
|
require('@angular-devkit/core');
|
|
20
21
|
require('node:path/posix');
|
|
21
22
|
require('./leading_space-D9nQ8UQC.js');
|
|
@@ -1,21 +1,22 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
/**
|
|
3
|
-
* @license Angular v20.0.0-next.
|
|
3
|
+
* @license Angular v20.0.0-next.5
|
|
4
4
|
* (c) 2010-2025 Google LLC. https://angular.io/
|
|
5
5
|
* License: MIT
|
|
6
6
|
*/
|
|
7
7
|
'use strict';
|
|
8
8
|
|
|
9
|
-
var
|
|
9
|
+
var compiler = require('./compiler-CuoiHqkc.js');
|
|
10
10
|
var ts = require('typescript');
|
|
11
|
+
var checker = require('./checker-DqUKCGda.js');
|
|
11
12
|
require('os');
|
|
12
|
-
var index$1 = require('./index-
|
|
13
|
+
var index$1 = require('./index-WFXCe5Q0.js');
|
|
13
14
|
require('path');
|
|
14
|
-
var run_in_devkit = require('./run_in_devkit-
|
|
15
|
-
var apply_import_manager = require('./apply_import_manager-
|
|
16
|
-
var migrate_ts_type_references = require('./migrate_ts_type_references-
|
|
15
|
+
var run_in_devkit = require('./run_in_devkit-CmHxABFr.js');
|
|
16
|
+
var apply_import_manager = require('./apply_import_manager-C-ysxahq.js');
|
|
17
|
+
var migrate_ts_type_references = require('./migrate_ts_type_references-BNuHufqZ.js');
|
|
17
18
|
var assert = require('assert');
|
|
18
|
-
var index = require('./index-
|
|
19
|
+
var index = require('./index-CwFQSYXZ.js');
|
|
19
20
|
require('@angular-devkit/core');
|
|
20
21
|
require('node:path/posix');
|
|
21
22
|
require('fs');
|
|
@@ -134,7 +135,7 @@ function extractQueryListType(node) {
|
|
|
134
135
|
* --> read stays
|
|
135
136
|
* --> emitDistinctChangesOnly is gone!
|
|
136
137
|
*/
|
|
137
|
-
function computeReplacementsToMigrateQuery(node, metadata, importManager, info, printer, options, checker
|
|
138
|
+
function computeReplacementsToMigrateQuery(node, metadata, importManager, info, printer, options, checker) {
|
|
138
139
|
const sf = node.getSourceFile();
|
|
139
140
|
let newQueryFn = importManager.addImport({
|
|
140
141
|
requestedFile: sf,
|
|
@@ -159,7 +160,7 @@ function computeReplacementsToMigrateQuery(node, metadata, importManager, info,
|
|
|
159
160
|
}
|
|
160
161
|
}
|
|
161
162
|
if (metadata.queryInfo.read !== null) {
|
|
162
|
-
assert(metadata.queryInfo.read instanceof
|
|
163
|
+
assert(metadata.queryInfo.read instanceof compiler.WrappedNodeExpr);
|
|
163
164
|
optionProperties.push(ts.factory.createPropertyAssignment('read', metadata.queryInfo.read.node));
|
|
164
165
|
}
|
|
165
166
|
if (metadata.queryInfo.descendants !== defaultDescendants) {
|
|
@@ -183,7 +184,7 @@ function computeReplacementsToMigrateQuery(node, metadata, importManager, info,
|
|
|
183
184
|
node.initializer === undefined &&
|
|
184
185
|
node.questionToken === undefined &&
|
|
185
186
|
type !== undefined &&
|
|
186
|
-
!checker
|
|
187
|
+
!checker.isTypeAssignableTo(checker.getUndefinedType(), checker.getTypeFromTypeNode(type))) {
|
|
187
188
|
isRequired = true;
|
|
188
189
|
}
|
|
189
190
|
if (isRequired && metadata.queryInfo.first) {
|
|
@@ -203,7 +204,7 @@ function computeReplacementsToMigrateQuery(node, metadata, importManager, info,
|
|
|
203
204
|
// If the original property type and the read type are matching, we can rely
|
|
204
205
|
// on the TS inference, instead of repeating types, like in `viewChild<Button>(Button)`.
|
|
205
206
|
if (type !== undefined &&
|
|
206
|
-
resolvedReadType instanceof
|
|
207
|
+
resolvedReadType instanceof compiler.WrappedNodeExpr &&
|
|
207
208
|
ts.isIdentifier(resolvedReadType.node) &&
|
|
208
209
|
ts.isTypeReferenceNode(type) &&
|
|
209
210
|
ts.isIdentifier(type.typeName) &&
|
|
@@ -215,7 +216,14 @@ function computeReplacementsToMigrateQuery(node, metadata, importManager, info,
|
|
|
215
216
|
// original type explicitly as generic. Otherwise, query API is smart
|
|
216
217
|
// enough to always infer.
|
|
217
218
|
resolvedReadType === null && type !== undefined ? [type] : undefined, args);
|
|
218
|
-
const
|
|
219
|
+
const accessibilityModifier = getAccessibilityModifier(node);
|
|
220
|
+
let modifiers = [
|
|
221
|
+
ts.factory.createModifier(ts.SyntaxKind.ReadonlyKeyword),
|
|
222
|
+
];
|
|
223
|
+
if (accessibilityModifier) {
|
|
224
|
+
modifiers = [accessibilityModifier, ...modifiers];
|
|
225
|
+
}
|
|
226
|
+
const updated = ts.factory.createPropertyDeclaration(modifiers, node.name, undefined, undefined, call);
|
|
219
227
|
return [
|
|
220
228
|
new run_in_devkit.Replacement(run_in_devkit.projectFile(node.getSourceFile(), info), new run_in_devkit.TextUpdate({
|
|
221
229
|
position: node.getStart(),
|
|
@@ -224,6 +232,11 @@ function computeReplacementsToMigrateQuery(node, metadata, importManager, info,
|
|
|
224
232
|
})),
|
|
225
233
|
];
|
|
226
234
|
}
|
|
235
|
+
function getAccessibilityModifier(node) {
|
|
236
|
+
return node.modifiers?.find((mod) => mod.kind === ts.SyntaxKind.PublicKeyword ||
|
|
237
|
+
mod.kind === ts.SyntaxKind.PrivateKeyword ||
|
|
238
|
+
mod.kind === ts.SyntaxKind.ProtectedKeyword);
|
|
239
|
+
}
|
|
227
240
|
|
|
228
241
|
/**
|
|
229
242
|
* Attempts to get a class field descriptor if the given symbol
|
|
@@ -520,7 +533,7 @@ function checkNonTsReferenceAccessesField(ref, fieldName) {
|
|
|
520
533
|
if (ref.from.read !== readFromPath) {
|
|
521
534
|
return null;
|
|
522
535
|
}
|
|
523
|
-
if (!(parentRead instanceof
|
|
536
|
+
if (!(parentRead instanceof compiler.PropertyRead) || parentRead.name !== fieldName) {
|
|
524
537
|
return null;
|
|
525
538
|
}
|
|
526
539
|
return parentRead;
|
|
@@ -558,7 +571,7 @@ function checkNonTsReferenceCallsField(ref, fieldName) {
|
|
|
558
571
|
return null;
|
|
559
572
|
}
|
|
560
573
|
const potentialCall = ref.from.readAstPath[accessIdx - 1];
|
|
561
|
-
if (potentialCall === undefined || !(potentialCall instanceof
|
|
574
|
+
if (potentialCall === undefined || !(potentialCall instanceof compiler.Call)) {
|
|
562
575
|
return null;
|
|
563
576
|
}
|
|
564
577
|
return potentialCall;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
/**
|
|
3
|
-
* @license Angular v20.0.0-next.
|
|
3
|
+
* @license Angular v20.0.0-next.5
|
|
4
4
|
* (c) 2010-2025 Google LLC. https://angular.io/
|
|
5
5
|
* License: MIT
|
|
6
6
|
*/
|
|
@@ -10,22 +10,23 @@ var schematics = require('@angular-devkit/schematics');
|
|
|
10
10
|
var signalQueriesMigration = require('./signal-queries-migration.js');
|
|
11
11
|
var signalInputMigration = require('./signal-input-migration.js');
|
|
12
12
|
var outputMigration = require('./output-migration.js');
|
|
13
|
-
require('./
|
|
13
|
+
require('./compiler-CuoiHqkc.js');
|
|
14
14
|
require('typescript');
|
|
15
|
+
require('./checker-DqUKCGda.js');
|
|
15
16
|
require('os');
|
|
16
17
|
require('fs');
|
|
17
18
|
require('module');
|
|
18
19
|
require('path');
|
|
19
20
|
require('url');
|
|
20
|
-
require('./index-
|
|
21
|
-
require('./run_in_devkit-
|
|
21
|
+
require('./index-WFXCe5Q0.js');
|
|
22
|
+
require('./run_in_devkit-CmHxABFr.js');
|
|
22
23
|
require('@angular-devkit/core');
|
|
23
24
|
require('node:path/posix');
|
|
24
25
|
require('./project_tsconfig_paths-CDVxT6Ov.js');
|
|
25
|
-
require('./apply_import_manager-
|
|
26
|
-
require('./migrate_ts_type_references-
|
|
26
|
+
require('./apply_import_manager-C-ysxahq.js');
|
|
27
|
+
require('./migrate_ts_type_references-BNuHufqZ.js');
|
|
27
28
|
require('assert');
|
|
28
|
-
require('./index-
|
|
29
|
+
require('./index-CwFQSYXZ.js');
|
|
29
30
|
require('./leading_space-D9nQ8UQC.js');
|
|
30
31
|
|
|
31
32
|
function migrate(options) {
|
|
@@ -1,23 +1,25 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
/**
|
|
3
|
-
* @license Angular v20.0.0-next.
|
|
3
|
+
* @license Angular v20.0.0-next.5
|
|
4
4
|
* (c) 2010-2025 Google LLC. https://angular.io/
|
|
5
5
|
* License: MIT
|
|
6
6
|
*/
|
|
7
7
|
'use strict';
|
|
8
8
|
|
|
9
9
|
var schematics = require('@angular-devkit/schematics');
|
|
10
|
-
var index = require('./index-
|
|
10
|
+
var index = require('./index-WFXCe5Q0.js');
|
|
11
11
|
var fs = require('fs');
|
|
12
12
|
var p = require('path');
|
|
13
13
|
var ts = require('typescript');
|
|
14
|
-
var
|
|
14
|
+
var change_tracker = require('./change_tracker-0Ktek5Xl.js');
|
|
15
15
|
var project_tsconfig_paths = require('./project_tsconfig_paths-CDVxT6Ov.js');
|
|
16
|
+
var compiler_host = require('./compiler_host-CAfDJO3W.js');
|
|
16
17
|
var ng_decorators = require('./ng_decorators-DznZ5jMl.js');
|
|
17
18
|
var nodes = require('./nodes-B16H9JUd.js');
|
|
18
19
|
var symbol = require('./symbol-VPWguRxr.js');
|
|
19
20
|
var imports = require('./imports-CIX-JgAN.js');
|
|
20
|
-
|
|
21
|
+
require('./compiler-CuoiHqkc.js');
|
|
22
|
+
var checker = require('./checker-DqUKCGda.js');
|
|
21
23
|
require('os');
|
|
22
24
|
require('@angular-devkit/core');
|
|
23
25
|
require('module');
|
|
@@ -234,7 +236,7 @@ function getRelativeImportPath(fromFile, toFile) {
|
|
|
234
236
|
path = './' + path;
|
|
235
237
|
}
|
|
236
238
|
// Using the Node utilities can yield paths with forward slashes on Windows.
|
|
237
|
-
return
|
|
239
|
+
return change_tracker.normalizePath(path);
|
|
238
240
|
}
|
|
239
241
|
/** Function used to remap the generated `imports` for a component to known shorter aliases. */
|
|
240
242
|
function knownInternalAliasRemapper(imports) {
|
|
@@ -331,7 +333,7 @@ function toStandalone(sourceFiles, program, printer, fileImportRemapper, declara
|
|
|
331
333
|
const modulesToMigrate = new Set();
|
|
332
334
|
const testObjectsToMigrate = new Set();
|
|
333
335
|
const declarations = new Set();
|
|
334
|
-
const tracker = new
|
|
336
|
+
const tracker = new change_tracker.ChangeTracker(printer, fileImportRemapper);
|
|
335
337
|
for (const sourceFile of sourceFiles) {
|
|
336
338
|
const modules = findNgModuleClassesToMigrate(sourceFile, typeChecker);
|
|
337
339
|
const testObjects = findTestObjectsToMigrate(sourceFile, typeChecker);
|
|
@@ -910,7 +912,7 @@ function isStandaloneDeclaration(node, declarationsInMigration, templateTypeChec
|
|
|
910
912
|
*/
|
|
911
913
|
function pruneNgModules(program, host, basePath, rootFileNames, sourceFiles, printer, importRemapper, referenceLookupExcludedFiles, declarationImportRemapper) {
|
|
912
914
|
const filesToRemove = new Set();
|
|
913
|
-
const tracker = new
|
|
915
|
+
const tracker = new change_tracker.ChangeTracker(printer, importRemapper);
|
|
914
916
|
const tsProgram = program.getTsProgram();
|
|
915
917
|
const typeChecker = tsProgram.getTypeChecker();
|
|
916
918
|
const templateTypeChecker = program.compiler.getTemplateTypeChecker();
|
|
@@ -1394,7 +1396,7 @@ function isInImportsArray(closestAssignment, closestArray) {
|
|
|
1394
1396
|
* found in the LICENSE file at https://angular.dev/license
|
|
1395
1397
|
*/
|
|
1396
1398
|
function toStandaloneBootstrap(program, host, basePath, rootFileNames, sourceFiles, printer, importRemapper, referenceLookupExcludedFiles, declarationImportRemapper) {
|
|
1397
|
-
const tracker = new
|
|
1399
|
+
const tracker = new change_tracker.ChangeTracker(printer, importRemapper);
|
|
1398
1400
|
const typeChecker = program.getTsProgram().getTypeChecker();
|
|
1399
1401
|
const templateTypeChecker = program.compiler.getTemplateTypeChecker();
|
|
1400
1402
|
const referenceResolver = new ReferenceResolver(program, host, rootFileNames, basePath, referenceLookupExcludedFiles);
|
|
@@ -1987,7 +1989,7 @@ function migrate(options) {
|
|
|
1987
1989
|
const allPaths = [...buildPaths, ...testPaths];
|
|
1988
1990
|
// TS and Schematic use paths in POSIX format even on Windows. This is needed as otherwise
|
|
1989
1991
|
// string matching such as `sourceFile.fileName.startsWith(pathToMigrate)` might not work.
|
|
1990
|
-
const pathToMigrate =
|
|
1992
|
+
const pathToMigrate = change_tracker.normalizePath(p.join(basePath, options.path));
|
|
1991
1993
|
let migratedFiles = 0;
|
|
1992
1994
|
if (!allPaths.length) {
|
|
1993
1995
|
throw new schematics.SchematicsException('Could not find any tsconfig file. Cannot run the standalone migration.');
|