@angular/core 19.0.0-rc.1 → 19.0.0-rc.3
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/fesm2022/core.mjs +13164 -13060
- package/fesm2022/core.mjs.map +1 -1
- package/fesm2022/primitives/event-dispatch.mjs +2 -2
- package/fesm2022/primitives/event-dispatch.mjs.map +1 -1
- package/fesm2022/primitives/signals.mjs +1 -1
- package/fesm2022/rxjs-interop.mjs +1 -1
- package/fesm2022/testing.mjs +4 -4
- package/index.d.ts +74 -13
- package/package.json +1 -1
- package/primitives/event-dispatch/index.d.ts +1 -1
- package/primitives/signals/index.d.ts +1 -1
- package/rxjs-interop/index.d.ts +1 -1
- package/schematics/bundles/{checker-9ca42e51.js → checker-e3da3b0a.js} +95 -54
- package/schematics/bundles/{combine_units-a16385aa.js → combine_units-2adebceb.js} +97 -28
- package/schematics/bundles/{compiler_host-31afa4ed.js → compiler_host-d642e87e.js} +2 -2
- package/schematics/bundles/control-flow-migration.js +3 -3
- package/schematics/bundles/explicit-standalone-flag.js +3 -3
- package/schematics/bundles/imports-4ac08251.js +1 -1
- package/schematics/bundles/inject-migration.js +3 -3
- package/schematics/bundles/leading_space-d190b83b.js +1 -1
- package/schematics/bundles/{migrate_ts_type_references-b2a28742.js → migrate_ts_type_references-ed2c0669.js} +527 -31
- package/schematics/bundles/nodes-0e7d45ca.js +1 -1
- package/schematics/bundles/output-migration.js +17 -14
- package/schematics/bundles/pending-tasks.js +3 -3
- package/schematics/bundles/{program-71beec0b.js → program-f984ab63.js} +45 -52
- package/schematics/bundles/project_tsconfig_paths-e9ccccbf.js +1 -1
- package/schematics/bundles/provide-initializer.js +3 -3
- package/schematics/bundles/route-lazy-loading.js +3 -3
- package/schematics/bundles/signal-input-migration.js +48 -35
- package/schematics/bundles/signal-queries-migration.js +21 -14
- package/schematics/bundles/signals.js +5 -5
- package/schematics/bundles/standalone-migration.js +159 -75
- package/schematics/ng-generate/signals/schema.json +1 -0
- package/testing/index.d.ts +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
/**
|
|
3
|
-
* @license Angular v19.0.0-rc.
|
|
3
|
+
* @license Angular v19.0.0-rc.3
|
|
4
4
|
* (c) 2010-2024 Google LLC. https://angular.io/
|
|
5
5
|
* License: MIT
|
|
6
6
|
*/
|
|
@@ -10,12 +10,11 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
10
10
|
|
|
11
11
|
var schematics = require('@angular-devkit/schematics');
|
|
12
12
|
var project_tsconfig_paths = require('./project_tsconfig_paths-e9ccccbf.js');
|
|
13
|
-
var combine_units = require('./combine_units-
|
|
13
|
+
var combine_units = require('./combine_units-2adebceb.js');
|
|
14
14
|
require('os');
|
|
15
15
|
var ts = require('typescript');
|
|
16
|
-
var checker = require('./checker-
|
|
17
|
-
var
|
|
18
|
-
var program = require('./program-71beec0b.js');
|
|
16
|
+
var checker = require('./checker-e3da3b0a.js');
|
|
17
|
+
var program = require('./program-f984ab63.js');
|
|
19
18
|
require('path');
|
|
20
19
|
require('@angular-devkit/core');
|
|
21
20
|
require('node:path/posix');
|
|
@@ -26,7 +25,6 @@ require('url');
|
|
|
26
25
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
27
26
|
|
|
28
27
|
var ts__default = /*#__PURE__*/_interopDefaultLegacy(ts);
|
|
29
|
-
var assert__default = /*#__PURE__*/_interopDefaultLegacy(assert);
|
|
30
28
|
|
|
31
29
|
function isOutputDeclarationEligibleForMigration(node) {
|
|
32
30
|
return (node.initializer !== undefined &&
|
|
@@ -261,15 +259,16 @@ class OutputMigration extends combine_units.TsurgeFunnelMigration {
|
|
|
261
259
|
const reflector = new checker.TypeScriptReflectionHost(checker$1);
|
|
262
260
|
const dtsReader = new program.DtsMetadataReader(checker$1, reflector);
|
|
263
261
|
const evaluator = new program.PartialEvaluator(reflector, checker$1, null);
|
|
264
|
-
const
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
262
|
+
const resourceLoader = info.ngCompiler?.['resourceManager'] ?? null;
|
|
263
|
+
// Pre-analyze the program and get access to the template type checker.
|
|
264
|
+
// If we are processing a non-Angular target, there is no template info.
|
|
265
|
+
const { templateTypeChecker } = info.ngCompiler?.['ensureAnalyzed']() ?? {
|
|
266
|
+
templateTypeChecker: null,
|
|
267
|
+
};
|
|
269
268
|
const knownFields = {
|
|
270
269
|
// Note: We don't support cross-target migration of `Partial<T>` usages.
|
|
271
270
|
// This is an acceptable limitation for performance reasons.
|
|
272
|
-
shouldTrackClassReference: (
|
|
271
|
+
shouldTrackClassReference: () => false,
|
|
273
272
|
attemptRetrieveDescriptorFromSymbol: (s) => {
|
|
274
273
|
const propDeclaration = getTargetPropertyDeclaration(s);
|
|
275
274
|
if (propDeclaration !== null) {
|
|
@@ -378,13 +377,17 @@ class OutputMigration extends combine_units.TsurgeFunnelMigration {
|
|
|
378
377
|
// detect .next usages that should be migrated to .emit in template and host binding expressions
|
|
379
378
|
if (ref.kind === combine_units.ReferenceKind.InTemplate) {
|
|
380
379
|
const callExpr = checkNonTsReferenceCallsField(ref, 'next');
|
|
381
|
-
|
|
380
|
+
// TODO: here and below for host bindings, we should ideally filter in the global meta stage
|
|
381
|
+
// (instead of using the `outputFieldReplacements` map)
|
|
382
|
+
// as technically, the call expression could refer to an output
|
|
383
|
+
// from a whole different compilation unit (e.g. tsconfig.json).
|
|
384
|
+
if (callExpr !== null && outputFieldReplacements[ref.target.key] !== undefined) {
|
|
382
385
|
addOutputReplacement(outputFieldReplacements, ref.target.key, ref.from.templateFile, calculateNextFnReplacementInTemplate(ref.from.templateFile, callExpr.nameSpan));
|
|
383
386
|
}
|
|
384
387
|
}
|
|
385
388
|
else if (ref.kind === combine_units.ReferenceKind.InHostBinding) {
|
|
386
389
|
const callExpr = checkNonTsReferenceCallsField(ref, 'next');
|
|
387
|
-
if (callExpr !== null) {
|
|
390
|
+
if (callExpr !== null && outputFieldReplacements[ref.target.key] !== undefined) {
|
|
388
391
|
addOutputReplacement(outputFieldReplacements, ref.target.key, ref.from.file, calculateNextFnReplacementInHostBinding(ref.from.file, ref.from.hostPropertyNode.getStart() + 1, callExpr.nameSpan));
|
|
389
392
|
}
|
|
390
393
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
/**
|
|
3
|
-
* @license Angular v19.0.0-rc.
|
|
3
|
+
* @license Angular v19.0.0-rc.3
|
|
4
4
|
* (c) 2010-2024 Google LLC. https://angular.io/
|
|
5
5
|
* License: MIT
|
|
6
6
|
*/
|
|
@@ -11,11 +11,11 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
11
11
|
var schematics = require('@angular-devkit/schematics');
|
|
12
12
|
var p = require('path');
|
|
13
13
|
var project_tsconfig_paths = require('./project_tsconfig_paths-e9ccccbf.js');
|
|
14
|
-
var compiler_host = require('./compiler_host-
|
|
14
|
+
var compiler_host = require('./compiler_host-d642e87e.js');
|
|
15
15
|
var ts = require('typescript');
|
|
16
16
|
var imports = require('./imports-4ac08251.js');
|
|
17
17
|
require('@angular-devkit/core');
|
|
18
|
-
require('./checker-
|
|
18
|
+
require('./checker-e3da3b0a.js');
|
|
19
19
|
require('os');
|
|
20
20
|
require('fs');
|
|
21
21
|
require('module');
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
/**
|
|
3
|
-
* @license Angular v19.0.0-rc.
|
|
3
|
+
* @license Angular v19.0.0-rc.3
|
|
4
4
|
* (c) 2010-2024 Google LLC. https://angular.io/
|
|
5
5
|
* License: MIT
|
|
6
6
|
*/
|
|
7
7
|
'use strict';
|
|
8
8
|
|
|
9
|
-
var checker = require('./checker-
|
|
9
|
+
var checker = require('./checker-e3da3b0a.js');
|
|
10
10
|
var ts = require('typescript');
|
|
11
11
|
var p = require('path');
|
|
12
12
|
require('os');
|
|
@@ -987,7 +987,7 @@ const MINIMUM_PARTIAL_LINKER_DEFER_SUPPORT_VERSION = '18.0.0';
|
|
|
987
987
|
function compileDeclareClassMetadata(metadata) {
|
|
988
988
|
const definitionMap = new checker.DefinitionMap();
|
|
989
989
|
definitionMap.set('minVersion', checker.literal(MINIMUM_PARTIAL_LINKER_VERSION$5));
|
|
990
|
-
definitionMap.set('version', checker.literal('19.0.0-rc.
|
|
990
|
+
definitionMap.set('version', checker.literal('19.0.0-rc.3'));
|
|
991
991
|
definitionMap.set('ngImport', checker.importExpr(checker.Identifiers.core));
|
|
992
992
|
definitionMap.set('type', metadata.type);
|
|
993
993
|
definitionMap.set('decorators', metadata.decorators);
|
|
@@ -1005,7 +1005,7 @@ function compileComponentDeclareClassMetadata(metadata, dependencies) {
|
|
|
1005
1005
|
callbackReturnDefinitionMap.set('ctorParameters', metadata.ctorParameters ?? checker.literal(null));
|
|
1006
1006
|
callbackReturnDefinitionMap.set('propDecorators', metadata.propDecorators ?? checker.literal(null));
|
|
1007
1007
|
definitionMap.set('minVersion', checker.literal(MINIMUM_PARTIAL_LINKER_DEFER_SUPPORT_VERSION));
|
|
1008
|
-
definitionMap.set('version', checker.literal('19.0.0-rc.
|
|
1008
|
+
definitionMap.set('version', checker.literal('19.0.0-rc.3'));
|
|
1009
1009
|
definitionMap.set('ngImport', checker.importExpr(checker.Identifiers.core));
|
|
1010
1010
|
definitionMap.set('type', metadata.type);
|
|
1011
1011
|
definitionMap.set('resolveDeferredDeps', compileComponentMetadataAsyncResolver(dependencies));
|
|
@@ -1100,7 +1100,7 @@ function createDirectiveDefinitionMap(meta) {
|
|
|
1100
1100
|
const definitionMap = new checker.DefinitionMap();
|
|
1101
1101
|
const minVersion = getMinimumVersionForPartialOutput(meta);
|
|
1102
1102
|
definitionMap.set('minVersion', checker.literal(minVersion));
|
|
1103
|
-
definitionMap.set('version', checker.literal('19.0.0-rc.
|
|
1103
|
+
definitionMap.set('version', checker.literal('19.0.0-rc.3'));
|
|
1104
1104
|
// e.g. `type: MyDirective`
|
|
1105
1105
|
definitionMap.set('type', meta.type.value);
|
|
1106
1106
|
if (meta.isStandalone !== undefined) {
|
|
@@ -1516,7 +1516,7 @@ const MINIMUM_PARTIAL_LINKER_VERSION$4 = '12.0.0';
|
|
|
1516
1516
|
function compileDeclareFactoryFunction(meta) {
|
|
1517
1517
|
const definitionMap = new checker.DefinitionMap();
|
|
1518
1518
|
definitionMap.set('minVersion', checker.literal(MINIMUM_PARTIAL_LINKER_VERSION$4));
|
|
1519
|
-
definitionMap.set('version', checker.literal('19.0.0-rc.
|
|
1519
|
+
definitionMap.set('version', checker.literal('19.0.0-rc.3'));
|
|
1520
1520
|
definitionMap.set('ngImport', checker.importExpr(checker.Identifiers.core));
|
|
1521
1521
|
definitionMap.set('type', meta.type.value);
|
|
1522
1522
|
definitionMap.set('deps', compileDependencies(meta.deps));
|
|
@@ -1551,7 +1551,7 @@ function compileDeclareInjectableFromMetadata(meta) {
|
|
|
1551
1551
|
function createInjectableDefinitionMap(meta) {
|
|
1552
1552
|
const definitionMap = new checker.DefinitionMap();
|
|
1553
1553
|
definitionMap.set('minVersion', checker.literal(MINIMUM_PARTIAL_LINKER_VERSION$3));
|
|
1554
|
-
definitionMap.set('version', checker.literal('19.0.0-rc.
|
|
1554
|
+
definitionMap.set('version', checker.literal('19.0.0-rc.3'));
|
|
1555
1555
|
definitionMap.set('ngImport', checker.importExpr(checker.Identifiers.core));
|
|
1556
1556
|
definitionMap.set('type', meta.type.value);
|
|
1557
1557
|
// Only generate providedIn property if it has a non-null value
|
|
@@ -1602,7 +1602,7 @@ function compileDeclareInjectorFromMetadata(meta) {
|
|
|
1602
1602
|
function createInjectorDefinitionMap(meta) {
|
|
1603
1603
|
const definitionMap = new checker.DefinitionMap();
|
|
1604
1604
|
definitionMap.set('minVersion', checker.literal(MINIMUM_PARTIAL_LINKER_VERSION$2));
|
|
1605
|
-
definitionMap.set('version', checker.literal('19.0.0-rc.
|
|
1605
|
+
definitionMap.set('version', checker.literal('19.0.0-rc.3'));
|
|
1606
1606
|
definitionMap.set('ngImport', checker.importExpr(checker.Identifiers.core));
|
|
1607
1607
|
definitionMap.set('type', meta.type.value);
|
|
1608
1608
|
definitionMap.set('providers', meta.providers);
|
|
@@ -1635,7 +1635,7 @@ function createNgModuleDefinitionMap(meta) {
|
|
|
1635
1635
|
throw new Error('Invalid path! Local compilation mode should not get into the partial compilation path');
|
|
1636
1636
|
}
|
|
1637
1637
|
definitionMap.set('minVersion', checker.literal(MINIMUM_PARTIAL_LINKER_VERSION$1));
|
|
1638
|
-
definitionMap.set('version', checker.literal('19.0.0-rc.
|
|
1638
|
+
definitionMap.set('version', checker.literal('19.0.0-rc.3'));
|
|
1639
1639
|
definitionMap.set('ngImport', checker.importExpr(checker.Identifiers.core));
|
|
1640
1640
|
definitionMap.set('type', meta.type.value);
|
|
1641
1641
|
// We only generate the keys in the metadata if the arrays contain values.
|
|
@@ -1686,7 +1686,7 @@ function compileDeclarePipeFromMetadata(meta) {
|
|
|
1686
1686
|
function createPipeDefinitionMap(meta) {
|
|
1687
1687
|
const definitionMap = new checker.DefinitionMap();
|
|
1688
1688
|
definitionMap.set('minVersion', checker.literal(MINIMUM_PARTIAL_LINKER_VERSION));
|
|
1689
|
-
definitionMap.set('version', checker.literal('19.0.0-rc.
|
|
1689
|
+
definitionMap.set('version', checker.literal('19.0.0-rc.3'));
|
|
1690
1690
|
definitionMap.set('ngImport', checker.importExpr(checker.Identifiers.core));
|
|
1691
1691
|
// e.g. `type: MyPipe`
|
|
1692
1692
|
definitionMap.set('type', meta.type.value);
|
|
@@ -1838,7 +1838,7 @@ class AliasStrategy {
|
|
|
1838
1838
|
return null;
|
|
1839
1839
|
}
|
|
1840
1840
|
return {
|
|
1841
|
-
kind:
|
|
1841
|
+
kind: checker.ReferenceEmitKind.Success,
|
|
1842
1842
|
expression: ref.alias,
|
|
1843
1843
|
importedFile: 'unknown',
|
|
1844
1844
|
};
|
|
@@ -13932,22 +13932,18 @@ class ClassExtractor {
|
|
|
13932
13932
|
/** The result only contains properties, method implementations and abstracts */
|
|
13933
13933
|
filterMethodOverloads(declarations) {
|
|
13934
13934
|
return declarations.filter((declaration, index) => {
|
|
13935
|
+
// Check if the declaration is a function or method
|
|
13935
13936
|
if (ts__default["default"].isFunctionDeclaration(declaration) || ts__default["default"].isMethodDeclaration(declaration)) {
|
|
13936
|
-
|
|
13937
|
-
|
|
13938
|
-
|
|
13939
|
-
|
|
13940
|
-
|
|
13941
|
-
|
|
13942
|
-
|
|
13943
|
-
|
|
13944
|
-
|
|
13945
|
-
|
|
13946
|
-
// Later on, the function extractor will handle overloads and implementation detection
|
|
13947
|
-
return !samePreviousAbstractMethod;
|
|
13948
|
-
}
|
|
13949
|
-
return !!declaration.body;
|
|
13950
|
-
}
|
|
13937
|
+
// TypeScript ensures that all declarations for a given abstract method appear consecutively.
|
|
13938
|
+
const nextDeclaration = declarations[index + 1];
|
|
13939
|
+
const isNextAbstractMethodWithSameName = nextDeclaration &&
|
|
13940
|
+
ts__default["default"].isMethodDeclaration(nextDeclaration) &&
|
|
13941
|
+
nextDeclaration.name.getText() === declaration.name?.getText();
|
|
13942
|
+
// Return only the last occurrence of an abstract method to avoid overload duplication.
|
|
13943
|
+
// Subsequent overloads or implementations are handled separately by the function extractor.
|
|
13944
|
+
return !isNextAbstractMethodWithSameName;
|
|
13945
|
+
}
|
|
13946
|
+
// Include non-method declarations, such as properties, without filtering.
|
|
13951
13947
|
return true;
|
|
13952
13948
|
});
|
|
13953
13949
|
}
|
|
@@ -14518,6 +14514,7 @@ function extractTypeAlias(declaration) {
|
|
|
14518
14514
|
name: declaration.name.getText(),
|
|
14519
14515
|
type: declaration.type.getText(),
|
|
14520
14516
|
entryType: EntryType.TypeAlias,
|
|
14517
|
+
generics: extractGenerics(declaration),
|
|
14521
14518
|
rawComment: extractRawJsDoc(declaration),
|
|
14522
14519
|
description: extractJsDocDescription(declaration),
|
|
14523
14520
|
jsdocTags: extractJsDocTags(declaration),
|
|
@@ -17295,21 +17292,19 @@ class UnusedStandaloneImportsRule {
|
|
|
17295
17292
|
if (unused === null) {
|
|
17296
17293
|
return null;
|
|
17297
17294
|
}
|
|
17295
|
+
const propertyAssignment = closestNode(metadata.rawImports, ts__default["default"].isPropertyAssignment);
|
|
17298
17296
|
const category = this.typeCheckingConfig.unusedStandaloneImports === 'error'
|
|
17299
17297
|
? ts__default["default"].DiagnosticCategory.Error
|
|
17300
17298
|
: ts__default["default"].DiagnosticCategory.Warning;
|
|
17301
|
-
if (unused.length === metadata.imports.length) {
|
|
17302
|
-
return checker.makeDiagnostic(checker.ErrorCode.UNUSED_STANDALONE_IMPORTS,
|
|
17303
|
-
}
|
|
17304
|
-
return
|
|
17305
|
-
|
|
17306
|
-
|
|
17307
|
-
|
|
17308
|
-
|
|
17309
|
-
|
|
17310
|
-
// when the unused is coming from an imports array within the same file.
|
|
17311
|
-
ref.getOriginForDiagnostics(metadata.rawImports, ref.node.name), '');
|
|
17312
|
-
}), category);
|
|
17299
|
+
if (unused.length === metadata.imports.length && propertyAssignment !== null) {
|
|
17300
|
+
return checker.makeDiagnostic(checker.ErrorCode.UNUSED_STANDALONE_IMPORTS, propertyAssignment.name, 'All imports are unused', undefined, category);
|
|
17301
|
+
}
|
|
17302
|
+
return unused.map((ref) => {
|
|
17303
|
+
const diagnosticNode = ref.getIdentityInExpression(metadata.rawImports) ||
|
|
17304
|
+
ref.getIdentityIn(node.getSourceFile()) ||
|
|
17305
|
+
metadata.rawImports;
|
|
17306
|
+
return checker.makeDiagnostic(checker.ErrorCode.UNUSED_STANDALONE_IMPORTS, diagnosticNode, `${ref.node.name.text} is not used within the template of ${metadata.name}`, undefined, category);
|
|
17307
|
+
});
|
|
17313
17308
|
}
|
|
17314
17309
|
getUnusedSymbols(metadata, usedDirectives, usedPipes) {
|
|
17315
17310
|
const { imports, rawImports } = metadata;
|
|
@@ -17367,21 +17362,19 @@ class UnusedStandaloneImportsRule {
|
|
|
17367
17362
|
// symbol like an array of shared common components.
|
|
17368
17363
|
return true;
|
|
17369
17364
|
}
|
|
17370
|
-
|
|
17371
|
-
|
|
17372
|
-
|
|
17373
|
-
|
|
17374
|
-
|
|
17375
|
-
|
|
17376
|
-
|
|
17377
|
-
|
|
17378
|
-
|
|
17379
|
-
|
|
17380
|
-
current = current.parent;
|
|
17381
|
-
}
|
|
17365
|
+
}
|
|
17366
|
+
/** Gets the closest parent node of a certain type. */
|
|
17367
|
+
function closestNode(start, predicate) {
|
|
17368
|
+
let current = start.parent;
|
|
17369
|
+
while (current) {
|
|
17370
|
+
if (predicate(current)) {
|
|
17371
|
+
return current;
|
|
17372
|
+
}
|
|
17373
|
+
else {
|
|
17374
|
+
current = current.parent;
|
|
17382
17375
|
}
|
|
17383
|
-
return importsExpression;
|
|
17384
17376
|
}
|
|
17377
|
+
return null;
|
|
17385
17378
|
}
|
|
17386
17379
|
|
|
17387
17380
|
/*!
|
|
@@ -20127,7 +20120,7 @@ var semver = /*@__PURE__*/getDefaultExportFromCjs(semverExports);
|
|
|
20127
20120
|
* @param minVersion Minimum required version for the feature.
|
|
20128
20121
|
*/
|
|
20129
20122
|
function coreVersionSupportsFeature(coreVersion, minVersion) {
|
|
20130
|
-
// A version of `19.0.0-rc.
|
|
20123
|
+
// A version of `19.0.0-rc.3` usually means that core is at head so it supports
|
|
20131
20124
|
// all features. Use string interpolation prevent the placeholder from being replaced
|
|
20132
20125
|
// with the current version during build time.
|
|
20133
20126
|
if (coreVersion === `0.0.0-${'PLACEHOLDER'}`) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
/**
|
|
3
|
-
* @license Angular v19.0.0-rc.
|
|
3
|
+
* @license Angular v19.0.0-rc.3
|
|
4
4
|
* (c) 2010-2024 Google LLC. https://angular.io/
|
|
5
5
|
* License: MIT
|
|
6
6
|
*/
|
|
@@ -11,11 +11,11 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
11
11
|
var schematics = require('@angular-devkit/schematics');
|
|
12
12
|
var p = require('path');
|
|
13
13
|
var project_tsconfig_paths = require('./project_tsconfig_paths-e9ccccbf.js');
|
|
14
|
-
var compiler_host = require('./compiler_host-
|
|
14
|
+
var compiler_host = require('./compiler_host-d642e87e.js');
|
|
15
15
|
var ts = require('typescript');
|
|
16
16
|
var imports = require('./imports-4ac08251.js');
|
|
17
17
|
require('@angular-devkit/core');
|
|
18
|
-
require('./checker-
|
|
18
|
+
require('./checker-e3da3b0a.js');
|
|
19
19
|
require('os');
|
|
20
20
|
require('fs');
|
|
21
21
|
require('module');
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
/**
|
|
3
|
-
* @license Angular v19.0.0-rc.
|
|
3
|
+
* @license Angular v19.0.0-rc.3
|
|
4
4
|
* (c) 2010-2024 Google LLC. https://angular.io/
|
|
5
5
|
* License: MIT
|
|
6
6
|
*/
|
|
@@ -11,10 +11,10 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
11
11
|
var schematics = require('@angular-devkit/schematics');
|
|
12
12
|
var fs = require('fs');
|
|
13
13
|
var p = require('path');
|
|
14
|
-
var compiler_host = require('./compiler_host-
|
|
14
|
+
var compiler_host = require('./compiler_host-d642e87e.js');
|
|
15
15
|
var project_tsconfig_paths = require('./project_tsconfig_paths-e9ccccbf.js');
|
|
16
16
|
var ts = require('typescript');
|
|
17
|
-
require('./checker-
|
|
17
|
+
require('./checker-e3da3b0a.js');
|
|
18
18
|
require('os');
|
|
19
19
|
require('module');
|
|
20
20
|
require('url');
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
/**
|
|
3
|
-
* @license Angular v19.0.0-rc.
|
|
3
|
+
* @license Angular v19.0.0-rc.3
|
|
4
4
|
* (c) 2010-2024 Google LLC. https://angular.io/
|
|
5
5
|
* License: MIT
|
|
6
6
|
*/
|
|
@@ -9,13 +9,13 @@
|
|
|
9
9
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
10
10
|
|
|
11
11
|
var schematics = require('@angular-devkit/schematics');
|
|
12
|
-
var migrate_ts_type_references = require('./migrate_ts_type_references-
|
|
12
|
+
var migrate_ts_type_references = require('./migrate_ts_type_references-ed2c0669.js');
|
|
13
13
|
var ts = require('typescript');
|
|
14
14
|
require('os');
|
|
15
|
-
var checker = require('./checker-
|
|
16
|
-
var program = require('./program-
|
|
15
|
+
var checker = require('./checker-e3da3b0a.js');
|
|
16
|
+
var program = require('./program-f984ab63.js');
|
|
17
17
|
require('path');
|
|
18
|
-
var combine_units = require('./combine_units-
|
|
18
|
+
var combine_units = require('./combine_units-2adebceb.js');
|
|
19
19
|
var assert = require('assert');
|
|
20
20
|
var project_tsconfig_paths = require('./project_tsconfig_paths-e9ccccbf.js');
|
|
21
21
|
require('./leading_space-d190b83b.js');
|
|
@@ -259,27 +259,29 @@ class KnownInputs {
|
|
|
259
259
|
* and can be used for integrations with e.g. the language service.
|
|
260
260
|
*/
|
|
261
261
|
function prepareAnalysisInfo(userProgram, compiler, programAbsoluteRootPaths) {
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
262
|
+
let refEmitter = null;
|
|
263
|
+
let metaReader = null;
|
|
264
|
+
let templateTypeChecker = null;
|
|
265
|
+
let resourceLoader = null;
|
|
266
|
+
if (compiler !== null) {
|
|
267
|
+
// Analyze sync and retrieve necessary dependencies.
|
|
268
|
+
// Note: `getTemplateTypeChecker` requires the `enableTemplateTypeChecker` flag, but
|
|
269
|
+
// this has negative effects as it causes optional TCB operations to execute, which may
|
|
270
|
+
// error with unsuccessful reference emits that previously were ignored outside of the migration.
|
|
271
|
+
// The migration is resilient to TCB information missing, so this is fine, and all the information
|
|
272
|
+
// we need is part of required TCB operations anyway.
|
|
273
|
+
const state = compiler['ensureAnalyzed']();
|
|
274
|
+
resourceLoader = compiler['resourceManager'];
|
|
275
|
+
refEmitter = state.refEmitter;
|
|
276
|
+
metaReader = state.metaReader;
|
|
277
|
+
templateTypeChecker = state.templateTypeChecker;
|
|
278
|
+
// Generate all type check blocks.
|
|
279
|
+
state.templateTypeChecker.generateAllTypeCheckBlocks();
|
|
280
|
+
}
|
|
271
281
|
const typeChecker = userProgram.getTypeChecker();
|
|
272
282
|
const reflector = new checker.TypeScriptReflectionHost(typeChecker);
|
|
273
283
|
const evaluator = new program.PartialEvaluator(reflector, typeChecker, null);
|
|
274
284
|
const dtsMetadataReader = new program.DtsMetadataReader(typeChecker, reflector);
|
|
275
|
-
const resourceLoader = compiler['resourceManager'];
|
|
276
|
-
// Optional filter for testing. Allows for simulation of parallel execution
|
|
277
|
-
// even if some tsconfig's have overlap due to sharing of TS sources.
|
|
278
|
-
// (this is commonly not the case in g3 where deps are `.d.ts` files).
|
|
279
|
-
const limitToRootNamesOnly = process.env['LIMIT_TO_ROOT_NAMES_ONLY'] === '1';
|
|
280
|
-
if (limitToRootNamesOnly) {
|
|
281
|
-
assert__default["default"](programAbsoluteRootPaths !== undefined, 'Expected absolute root paths when limiting to root names.');
|
|
282
|
-
}
|
|
283
285
|
return {
|
|
284
286
|
metaRegistry: metaReader,
|
|
285
287
|
dtsMetadataReader,
|
|
@@ -315,8 +317,8 @@ class MigrationResult {
|
|
|
315
317
|
}
|
|
316
318
|
|
|
317
319
|
/** Attempts to extract metadata of a potential TypeScript `@Input()` declaration. */
|
|
318
|
-
function extractDecoratorInput(node, host, reflector, metadataReader, evaluator
|
|
319
|
-
return (extractSourceCodeInput(node, host, reflector, evaluator
|
|
320
|
+
function extractDecoratorInput(node, host, reflector, metadataReader, evaluator) {
|
|
321
|
+
return (extractSourceCodeInput(node, host, reflector, evaluator) ??
|
|
320
322
|
extractDtsInput(node, metadataReader));
|
|
321
323
|
}
|
|
322
324
|
/**
|
|
@@ -366,7 +368,7 @@ function extractDtsInput(node, metadataReader) {
|
|
|
366
368
|
* Attempts to extract `@Input()` information for the given node, assuming it's
|
|
367
369
|
* directly defined inside a source file (`.ts`).
|
|
368
370
|
*/
|
|
369
|
-
function extractSourceCodeInput(node, host, reflector, evaluator
|
|
371
|
+
function extractSourceCodeInput(node, host, reflector, evaluator) {
|
|
370
372
|
if (!combine_units.isInputContainerNode(node) ||
|
|
371
373
|
!ts__default["default"].isIdentifier(node.name) ||
|
|
372
374
|
node.getSourceFile().isDeclarationFile) {
|
|
@@ -399,7 +401,7 @@ function extractSourceCodeInput(node, host, reflector, evaluator, refEmitter) {
|
|
|
399
401
|
isRequired = !!evaluatedInputOpts.get('required');
|
|
400
402
|
}
|
|
401
403
|
if (evaluatedInputOpts.has('transform') && evaluatedInputOpts.get('transform') != null) {
|
|
402
|
-
transformResult = parseTransformOfInput(evaluatedInputOpts, node, reflector
|
|
404
|
+
transformResult = parseTransformOfInput(evaluatedInputOpts, node, reflector);
|
|
403
405
|
}
|
|
404
406
|
}
|
|
405
407
|
}
|
|
@@ -418,13 +420,25 @@ function extractSourceCodeInput(node, host, reflector, evaluator, refEmitter) {
|
|
|
418
420
|
* Gracefully attempts to parse the `transform` option of an `@Input()`
|
|
419
421
|
* and extracts its metadata.
|
|
420
422
|
*/
|
|
421
|
-
function parseTransformOfInput(evaluatedInputOpts, node, reflector
|
|
423
|
+
function parseTransformOfInput(evaluatedInputOpts, node, reflector) {
|
|
422
424
|
const transformValue = evaluatedInputOpts.get('transform');
|
|
423
425
|
if (!(transformValue instanceof checker.DynamicValue) && !(transformValue instanceof checker.Reference)) {
|
|
424
426
|
return null;
|
|
425
427
|
}
|
|
428
|
+
// For parsing the transform, we don't need a real reference emitter, as
|
|
429
|
+
// the emitter is only used for verifying that the transform type could be
|
|
430
|
+
// copied into e.g. an `ngInputAccept` class member.
|
|
431
|
+
const noopRefEmitter = new checker.ReferenceEmitter([
|
|
432
|
+
{
|
|
433
|
+
emit: () => ({
|
|
434
|
+
kind: checker.ReferenceEmitKind.Success,
|
|
435
|
+
expression: migrate_ts_type_references.NULL_EXPR,
|
|
436
|
+
importedFile: null,
|
|
437
|
+
}),
|
|
438
|
+
},
|
|
439
|
+
]);
|
|
426
440
|
try {
|
|
427
|
-
return program.parseDecoratorInputTransformFunction(node.parent, node.name.text, transformValue, reflector,
|
|
441
|
+
return program.parseDecoratorInputTransformFunction(node.parent, node.name.text, transformValue, reflector, noopRefEmitter, checker.CompilationMode.FULL);
|
|
428
442
|
}
|
|
429
443
|
catch (e) {
|
|
430
444
|
if (!(e instanceof checker.FatalDiagnosticError)) {
|
|
@@ -584,9 +598,9 @@ function isPrimitiveImportableTypeNode(type) {
|
|
|
584
598
|
* Phase where we iterate through all source files of the program (including `.d.ts`)
|
|
585
599
|
* and keep track of all `@Input`'s we discover.
|
|
586
600
|
*/
|
|
587
|
-
function pass1__IdentifySourceFileAndDeclarationInputs(sf, host, checker, reflector, dtsMetadataReader, evaluator,
|
|
601
|
+
function pass1__IdentifySourceFileAndDeclarationInputs(sf, host, checker, reflector, dtsMetadataReader, evaluator, knownDecoratorInputs, result) {
|
|
588
602
|
const visitor = (node) => {
|
|
589
|
-
const decoratorInput = extractDecoratorInput(node, host, reflector, dtsMetadataReader, evaluator
|
|
603
|
+
const decoratorInput = extractDecoratorInput(node, host, reflector, dtsMetadataReader, evaluator);
|
|
590
604
|
if (decoratorInput !== null) {
|
|
591
605
|
assert__default["default"](combine_units.isInputContainerNode(node), 'Expected input to be declared on accessor or property.');
|
|
592
606
|
const inputDescr = getInputDescriptor(host, node);
|
|
@@ -671,13 +685,13 @@ function pass2_IdentifySourceFileReferences(programInfo, checker, reflector, res
|
|
|
671
685
|
* - determining incompatible inputs
|
|
672
686
|
* - checking inheritance
|
|
673
687
|
*/
|
|
674
|
-
function executeAnalysisPhase(host, knownInputs, result, { sourceFiles, fullProgramSourceFiles, reflector, dtsMetadataReader, typeChecker, templateTypeChecker, resourceLoader, evaluator,
|
|
688
|
+
function executeAnalysisPhase(host, knownInputs, result, { sourceFiles, fullProgramSourceFiles, reflector, dtsMetadataReader, typeChecker, templateTypeChecker, resourceLoader, evaluator, }) {
|
|
675
689
|
// Pass 1
|
|
676
690
|
fullProgramSourceFiles.forEach((sf) =>
|
|
677
691
|
// Shim shim files. Those are unnecessary and might cause unexpected slowness.
|
|
678
692
|
// e.g. `ngtypecheck` files.
|
|
679
693
|
!checker.isShim(sf) &&
|
|
680
|
-
pass1__IdentifySourceFileAndDeclarationInputs(sf, host, typeChecker, reflector, dtsMetadataReader, evaluator,
|
|
694
|
+
pass1__IdentifySourceFileAndDeclarationInputs(sf, host, typeChecker, reflector, dtsMetadataReader, evaluator, knownInputs, result));
|
|
681
695
|
const fieldNamesToConsiderForReferenceLookup = new Set();
|
|
682
696
|
for (const input of knownInputs.knownInputIds.values()) {
|
|
683
697
|
if (host.config.shouldMigrateInput?.(input) === false) {
|
|
@@ -1254,9 +1268,9 @@ class SignalInputMigration extends combine_units.TsurgeComplexMigration {
|
|
|
1254
1268
|
super();
|
|
1255
1269
|
this.config = config;
|
|
1256
1270
|
}
|
|
1257
|
-
// Override the default
|
|
1271
|
+
// Override the default program creation, to add extra flags.
|
|
1258
1272
|
createProgram(tsconfigAbsPath, fs) {
|
|
1259
|
-
return combine_units.
|
|
1273
|
+
return combine_units.createBaseProgramInfo(tsconfigAbsPath, fs, {
|
|
1260
1274
|
_compilePoisonedComponents: true,
|
|
1261
1275
|
// We want to migrate non-exported classes too.
|
|
1262
1276
|
compileNonExportedClasses: true,
|
|
@@ -1284,7 +1298,6 @@ class SignalInputMigration extends combine_units.TsurgeComplexMigration {
|
|
|
1284
1298
|
}
|
|
1285
1299
|
// Extend the program info with the analysis information we need in every phase.
|
|
1286
1300
|
prepareAnalysisDeps(info) {
|
|
1287
|
-
assert__default["default"](info.ngCompiler !== null, 'Expected `NgCompiler` to be configured.');
|
|
1288
1301
|
const analysisInfo = {
|
|
1289
1302
|
...info,
|
|
1290
1303
|
...prepareAnalysisInfo(info.program, info.ngCompiler, info.programAbsoluteRootFileNames),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
/**
|
|
3
|
-
* @license Angular v19.0.0-rc.
|
|
3
|
+
* @license Angular v19.0.0-rc.3
|
|
4
4
|
* (c) 2010-2024 Google LLC. https://angular.io/
|
|
5
5
|
* License: MIT
|
|
6
6
|
*/
|
|
@@ -10,14 +10,14 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
10
10
|
|
|
11
11
|
var schematics = require('@angular-devkit/schematics');
|
|
12
12
|
var project_tsconfig_paths = require('./project_tsconfig_paths-e9ccccbf.js');
|
|
13
|
-
var combine_units = require('./combine_units-
|
|
13
|
+
var combine_units = require('./combine_units-2adebceb.js');
|
|
14
14
|
require('os');
|
|
15
15
|
var ts = require('typescript');
|
|
16
|
-
var checker = require('./checker-
|
|
17
|
-
var program = require('./program-
|
|
18
|
-
var assert = require('assert');
|
|
16
|
+
var checker = require('./checker-e3da3b0a.js');
|
|
17
|
+
var program = require('./program-f984ab63.js');
|
|
19
18
|
require('path');
|
|
20
|
-
var migrate_ts_type_references = require('./migrate_ts_type_references-
|
|
19
|
+
var migrate_ts_type_references = require('./migrate_ts_type_references-ed2c0669.js');
|
|
20
|
+
var assert = require('assert');
|
|
21
21
|
require('@angular-devkit/core');
|
|
22
22
|
require('node:path/posix');
|
|
23
23
|
require('fs');
|
|
@@ -722,11 +722,15 @@ class SignalQueriesMigration extends combine_units.TsurgeComplexMigration {
|
|
|
722
722
|
this.config = config;
|
|
723
723
|
}
|
|
724
724
|
async analyze(info) {
|
|
725
|
-
assert__default["default"](info.ngCompiler !== null, 'Expected queries migration to have an Angular program.');
|
|
726
725
|
// Pre-Analyze the program and get access to the template type checker.
|
|
727
|
-
const { templateTypeChecker } = info.ngCompiler['ensureAnalyzed']()
|
|
728
|
-
|
|
729
|
-
|
|
726
|
+
const { templateTypeChecker } = info.ngCompiler?.['ensureAnalyzed']() ?? {
|
|
727
|
+
templateTypeChecker: null,
|
|
728
|
+
};
|
|
729
|
+
const resourceLoader = info.ngCompiler?.['resourceManager'] ?? null;
|
|
730
|
+
// Generate all type check blocks, if we have Angular template information.
|
|
731
|
+
if (templateTypeChecker !== null) {
|
|
732
|
+
templateTypeChecker.generateAllTypeCheckBlocks();
|
|
733
|
+
}
|
|
730
734
|
const { sourceFiles, program: program$1 } = info;
|
|
731
735
|
const checker$1 = program$1.getTypeChecker();
|
|
732
736
|
const reflector = new checker.TypeScriptReflectionHost(checker$1);
|
|
@@ -808,7 +812,7 @@ class SignalQueriesMigration extends combine_units.TsurgeComplexMigration {
|
|
|
808
812
|
return descriptor;
|
|
809
813
|
},
|
|
810
814
|
};
|
|
811
|
-
groupedAstVisitor.register(combine_units.createFindAllSourceFileReferencesVisitor(info, checker$1, reflector,
|
|
815
|
+
groupedAstVisitor.register(combine_units.createFindAllSourceFileReferencesVisitor(info, checker$1, reflector, resourceLoader, evaluator, templateTypeChecker, allFieldsOrKnownQueries,
|
|
812
816
|
// In non-batch mode, we know what inputs exist and can optimize the reference
|
|
813
817
|
// resolution significantly (for e.g. VSCode integration)— as we know what
|
|
814
818
|
// field names may be used to reference potential queries.
|
|
@@ -909,9 +913,12 @@ class SignalQueriesMigration extends combine_units.TsurgeComplexMigration {
|
|
|
909
913
|
return combine_units.confirmAsSerializable(globalUnitData);
|
|
910
914
|
}
|
|
911
915
|
async migrate(globalMetadata, info) {
|
|
912
|
-
assert__default["default"](info.ngCompiler !== null, 'Expected queries migration to have an Angular program.');
|
|
913
916
|
// Pre-Analyze the program and get access to the template type checker.
|
|
914
|
-
const { templateTypeChecker, metaReader } = info.ngCompiler['ensureAnalyzed']()
|
|
917
|
+
const { templateTypeChecker, metaReader } = info.ngCompiler?.['ensureAnalyzed']() ?? {
|
|
918
|
+
templateTypeChecker: null,
|
|
919
|
+
metaReader: null,
|
|
920
|
+
};
|
|
921
|
+
const resourceLoader = info.ngCompiler?.['resourceManager'] ?? null;
|
|
915
922
|
const { program: program$1, sourceFiles } = info;
|
|
916
923
|
const checker$1 = program$1.getTypeChecker();
|
|
917
924
|
const reflector = new checker.TypeScriptReflectionHost(checker$1);
|
|
@@ -966,7 +973,7 @@ class SignalQueriesMigration extends combine_units.TsurgeComplexMigration {
|
|
|
966
973
|
referenceResult.references = globalMetadata.reusableAnalysisReferences;
|
|
967
974
|
}
|
|
968
975
|
else {
|
|
969
|
-
groupedAstVisitor.register(combine_units.createFindAllSourceFileReferencesVisitor(info, checker$1, reflector,
|
|
976
|
+
groupedAstVisitor.register(combine_units.createFindAllSourceFileReferencesVisitor(info, checker$1, reflector, resourceLoader, evaluator, templateTypeChecker, knownQueries, fieldNamesToConsiderForReferenceLookup, referenceResult).visitor);
|
|
970
977
|
}
|
|
971
978
|
// Check inheritance.
|
|
972
979
|
// NOTE: Inheritance is only checked in the migrate stage as we cannot reliably
|