@angular/core 19.0.0 → 19.0.2
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 +7117 -7025
- package/fesm2022/core.mjs.map +1 -1
- package/fesm2022/primitives/event-dispatch.mjs +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 +107 -38
- 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-e3da3b0a.js → checker-a00b735e.js} +43 -27
- package/schematics/bundles/{combine_units-2adebceb.js → combine_units-60865867.js} +5 -3
- package/schematics/bundles/{compiler_host-d642e87e.js → compiler_host-3e96c3f7.js} +2 -2
- package/schematics/bundles/control-flow-migration.js +3 -3
- package/schematics/bundles/explicit-standalone-flag.js +5 -5
- package/schematics/bundles/{imports-4ac08251.js → imports-44987700.js} +1 -1
- package/schematics/bundles/inject-migration.js +137 -51
- package/schematics/bundles/{leading_space-d190b83b.js → leading_space-6e7a8ec6.js} +1 -1
- package/schematics/bundles/{migrate_ts_type_references-ed2c0669.js → migrate_ts_type_references-676612f5.js} +5 -5
- package/schematics/bundles/{nodes-0e7d45ca.js → nodes-b12e919a.js} +2 -2
- package/schematics/bundles/output-migration.js +5 -5
- package/schematics/bundles/pending-tasks.js +5 -5
- package/schematics/bundles/{program-f984ab63.js → program-a6be5d4a.js} +75 -33
- package/schematics/bundles/{project_tsconfig_paths-e9ccccbf.js → project_tsconfig_paths-6c9cde78.js} +1 -1
- package/schematics/bundles/provide-initializer.js +38 -31
- package/schematics/bundles/route-lazy-loading.js +28 -24
- package/schematics/bundles/signal-input-migration.js +7 -7
- package/schematics/bundles/signal-queries-migration.js +7 -7
- package/schematics/bundles/signals.js +7 -7
- package/schematics/bundles/standalone-migration.js +8 -8
- package/testing/index.d.ts +1 -1
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
/**
|
|
3
|
-
* @license Angular v19.0.
|
|
3
|
+
* @license Angular v19.0.2
|
|
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-a00b735e.js');
|
|
10
10
|
var ts = require('typescript');
|
|
11
11
|
require('os');
|
|
12
12
|
var assert = require('assert');
|
|
13
|
-
var combine_units = require('./combine_units-
|
|
14
|
-
var leading_space = require('./leading_space-
|
|
15
|
-
require('./program-
|
|
13
|
+
var combine_units = require('./combine_units-60865867.js');
|
|
14
|
+
var leading_space = require('./leading_space-6e7a8ec6.js');
|
|
15
|
+
require('./program-a6be5d4a.js');
|
|
16
16
|
require('path');
|
|
17
17
|
|
|
18
18
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
/**
|
|
3
|
-
* @license Angular v19.0.
|
|
3
|
+
* @license Angular v19.0.2
|
|
4
4
|
* (c) 2010-2024 Google LLC. https://angular.io/
|
|
5
5
|
* License: MIT
|
|
6
6
|
*/
|
|
7
7
|
'use strict';
|
|
8
8
|
|
|
9
9
|
var ts = require('typescript');
|
|
10
|
-
var imports = require('./imports-
|
|
10
|
+
var imports = require('./imports-44987700.js');
|
|
11
11
|
|
|
12
12
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
13
13
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
/**
|
|
3
|
-
* @license Angular v19.0.
|
|
3
|
+
* @license Angular v19.0.2
|
|
4
4
|
* (c) 2010-2024 Google LLC. https://angular.io/
|
|
5
5
|
* License: MIT
|
|
6
6
|
*/
|
|
@@ -9,12 +9,12 @@
|
|
|
9
9
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
10
10
|
|
|
11
11
|
var schematics = require('@angular-devkit/schematics');
|
|
12
|
-
var project_tsconfig_paths = require('./project_tsconfig_paths-
|
|
13
|
-
var combine_units = require('./combine_units-
|
|
12
|
+
var project_tsconfig_paths = require('./project_tsconfig_paths-6c9cde78.js');
|
|
13
|
+
var combine_units = require('./combine_units-60865867.js');
|
|
14
14
|
require('os');
|
|
15
15
|
var ts = require('typescript');
|
|
16
|
-
var checker = require('./checker-
|
|
17
|
-
var program = require('./program-
|
|
16
|
+
var checker = require('./checker-a00b735e.js');
|
|
17
|
+
var program = require('./program-a6be5d4a.js');
|
|
18
18
|
require('path');
|
|
19
19
|
require('@angular-devkit/core');
|
|
20
20
|
require('node:path/posix');
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
/**
|
|
3
|
-
* @license Angular v19.0.
|
|
3
|
+
* @license Angular v19.0.2
|
|
4
4
|
* (c) 2010-2024 Google LLC. https://angular.io/
|
|
5
5
|
* License: MIT
|
|
6
6
|
*/
|
|
@@ -10,12 +10,12 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
10
10
|
|
|
11
11
|
var schematics = require('@angular-devkit/schematics');
|
|
12
12
|
var p = require('path');
|
|
13
|
-
var project_tsconfig_paths = require('./project_tsconfig_paths-
|
|
14
|
-
var compiler_host = require('./compiler_host-
|
|
13
|
+
var project_tsconfig_paths = require('./project_tsconfig_paths-6c9cde78.js');
|
|
14
|
+
var compiler_host = require('./compiler_host-3e96c3f7.js');
|
|
15
15
|
var ts = require('typescript');
|
|
16
|
-
var imports = require('./imports-
|
|
16
|
+
var imports = require('./imports-44987700.js');
|
|
17
17
|
require('@angular-devkit/core');
|
|
18
|
-
require('./checker-
|
|
18
|
+
require('./checker-a00b735e.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.
|
|
3
|
+
* @license Angular v19.0.2
|
|
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-a00b735e.js');
|
|
10
10
|
var ts = require('typescript');
|
|
11
11
|
var p = require('path');
|
|
12
12
|
require('os');
|
|
@@ -900,12 +900,15 @@ function compileHmrInitializer(meta) {
|
|
|
900
900
|
const dataName = 'd';
|
|
901
901
|
const timestampName = 't';
|
|
902
902
|
const importCallbackName = `${meta.className}_HmrLoad`;
|
|
903
|
-
const locals = meta.
|
|
903
|
+
const locals = meta.localDependencies.map((localName) => checker.variable(localName));
|
|
904
|
+
const namespaces = meta.namespaceDependencies.map((dep) => {
|
|
905
|
+
return new checker.ExternalExpr({ moduleName: dep.moduleName, name: null });
|
|
906
|
+
});
|
|
904
907
|
// m.default
|
|
905
908
|
const defaultRead = checker.variable(moduleName).prop('default');
|
|
906
|
-
// ɵɵreplaceMetadata(Comp, m.default, [...]);
|
|
909
|
+
// ɵɵreplaceMetadata(Comp, m.default, [...namespaces], [...locals]);
|
|
907
910
|
const replaceCall = checker.importExpr(checker.Identifiers.replaceMetadata)
|
|
908
|
-
.callFn([meta.type, defaultRead,
|
|
911
|
+
.callFn([meta.type, defaultRead, checker.literalArr(namespaces), checker.literalArr(locals)]);
|
|
909
912
|
// (m) => m.default && ɵɵreplaceMetadata(...)
|
|
910
913
|
const replaceCallback = checker.arrowFn([new checker.FnParam(moduleName)], defaultRead.and(replaceCall));
|
|
911
914
|
// '<urlPartial>' + encodeURIComponent(t)
|
|
@@ -958,9 +961,14 @@ function compileHmrInitializer(meta) {
|
|
|
958
961
|
* @param meta HMR metadata extracted from the class.
|
|
959
962
|
*/
|
|
960
963
|
function compileHmrUpdateCallback(definitions, constantStatements, meta) {
|
|
961
|
-
|
|
962
|
-
const params = [meta.className,
|
|
963
|
-
const body = [
|
|
964
|
+
const namespaces = 'ɵɵnamespaces';
|
|
965
|
+
const params = [meta.className, namespaces, ...meta.localDependencies].map((name) => new checker.FnParam(name, checker.DYNAMIC_TYPE));
|
|
966
|
+
const body = [];
|
|
967
|
+
// Declare variables that read out the individual namespaces.
|
|
968
|
+
for (let i = 0; i < meta.namespaceDependencies.length; i++) {
|
|
969
|
+
body.push(new checker.DeclareVarStmt(meta.namespaceDependencies[i].assignedName, checker.variable(namespaces).key(checker.literal(i)), checker.DYNAMIC_TYPE, checker.StmtModifier.Final));
|
|
970
|
+
}
|
|
971
|
+
body.push(...constantStatements);
|
|
964
972
|
for (const field of definitions) {
|
|
965
973
|
if (field.initializer !== null) {
|
|
966
974
|
body.push(checker.variable(meta.className).prop(field.name).set(field.initializer).toStmt());
|
|
@@ -987,7 +995,7 @@ const MINIMUM_PARTIAL_LINKER_DEFER_SUPPORT_VERSION = '18.0.0';
|
|
|
987
995
|
function compileDeclareClassMetadata(metadata) {
|
|
988
996
|
const definitionMap = new checker.DefinitionMap();
|
|
989
997
|
definitionMap.set('minVersion', checker.literal(MINIMUM_PARTIAL_LINKER_VERSION$5));
|
|
990
|
-
definitionMap.set('version', checker.literal('19.0.
|
|
998
|
+
definitionMap.set('version', checker.literal('19.0.2'));
|
|
991
999
|
definitionMap.set('ngImport', checker.importExpr(checker.Identifiers.core));
|
|
992
1000
|
definitionMap.set('type', metadata.type);
|
|
993
1001
|
definitionMap.set('decorators', metadata.decorators);
|
|
@@ -1005,7 +1013,7 @@ function compileComponentDeclareClassMetadata(metadata, dependencies) {
|
|
|
1005
1013
|
callbackReturnDefinitionMap.set('ctorParameters', metadata.ctorParameters ?? checker.literal(null));
|
|
1006
1014
|
callbackReturnDefinitionMap.set('propDecorators', metadata.propDecorators ?? checker.literal(null));
|
|
1007
1015
|
definitionMap.set('minVersion', checker.literal(MINIMUM_PARTIAL_LINKER_DEFER_SUPPORT_VERSION));
|
|
1008
|
-
definitionMap.set('version', checker.literal('19.0.
|
|
1016
|
+
definitionMap.set('version', checker.literal('19.0.2'));
|
|
1009
1017
|
definitionMap.set('ngImport', checker.importExpr(checker.Identifiers.core));
|
|
1010
1018
|
definitionMap.set('type', metadata.type);
|
|
1011
1019
|
definitionMap.set('resolveDeferredDeps', compileComponentMetadataAsyncResolver(dependencies));
|
|
@@ -1100,7 +1108,7 @@ function createDirectiveDefinitionMap(meta) {
|
|
|
1100
1108
|
const definitionMap = new checker.DefinitionMap();
|
|
1101
1109
|
const minVersion = getMinimumVersionForPartialOutput(meta);
|
|
1102
1110
|
definitionMap.set('minVersion', checker.literal(minVersion));
|
|
1103
|
-
definitionMap.set('version', checker.literal('19.0.
|
|
1111
|
+
definitionMap.set('version', checker.literal('19.0.2'));
|
|
1104
1112
|
// e.g. `type: MyDirective`
|
|
1105
1113
|
definitionMap.set('type', meta.type.value);
|
|
1106
1114
|
if (meta.isStandalone !== undefined) {
|
|
@@ -1516,7 +1524,7 @@ const MINIMUM_PARTIAL_LINKER_VERSION$4 = '12.0.0';
|
|
|
1516
1524
|
function compileDeclareFactoryFunction(meta) {
|
|
1517
1525
|
const definitionMap = new checker.DefinitionMap();
|
|
1518
1526
|
definitionMap.set('minVersion', checker.literal(MINIMUM_PARTIAL_LINKER_VERSION$4));
|
|
1519
|
-
definitionMap.set('version', checker.literal('19.0.
|
|
1527
|
+
definitionMap.set('version', checker.literal('19.0.2'));
|
|
1520
1528
|
definitionMap.set('ngImport', checker.importExpr(checker.Identifiers.core));
|
|
1521
1529
|
definitionMap.set('type', meta.type.value);
|
|
1522
1530
|
definitionMap.set('deps', compileDependencies(meta.deps));
|
|
@@ -1551,7 +1559,7 @@ function compileDeclareInjectableFromMetadata(meta) {
|
|
|
1551
1559
|
function createInjectableDefinitionMap(meta) {
|
|
1552
1560
|
const definitionMap = new checker.DefinitionMap();
|
|
1553
1561
|
definitionMap.set('minVersion', checker.literal(MINIMUM_PARTIAL_LINKER_VERSION$3));
|
|
1554
|
-
definitionMap.set('version', checker.literal('19.0.
|
|
1562
|
+
definitionMap.set('version', checker.literal('19.0.2'));
|
|
1555
1563
|
definitionMap.set('ngImport', checker.importExpr(checker.Identifiers.core));
|
|
1556
1564
|
definitionMap.set('type', meta.type.value);
|
|
1557
1565
|
// Only generate providedIn property if it has a non-null value
|
|
@@ -1602,7 +1610,7 @@ function compileDeclareInjectorFromMetadata(meta) {
|
|
|
1602
1610
|
function createInjectorDefinitionMap(meta) {
|
|
1603
1611
|
const definitionMap = new checker.DefinitionMap();
|
|
1604
1612
|
definitionMap.set('minVersion', checker.literal(MINIMUM_PARTIAL_LINKER_VERSION$2));
|
|
1605
|
-
definitionMap.set('version', checker.literal('19.0.
|
|
1613
|
+
definitionMap.set('version', checker.literal('19.0.2'));
|
|
1606
1614
|
definitionMap.set('ngImport', checker.importExpr(checker.Identifiers.core));
|
|
1607
1615
|
definitionMap.set('type', meta.type.value);
|
|
1608
1616
|
definitionMap.set('providers', meta.providers);
|
|
@@ -1635,7 +1643,7 @@ function createNgModuleDefinitionMap(meta) {
|
|
|
1635
1643
|
throw new Error('Invalid path! Local compilation mode should not get into the partial compilation path');
|
|
1636
1644
|
}
|
|
1637
1645
|
definitionMap.set('minVersion', checker.literal(MINIMUM_PARTIAL_LINKER_VERSION$1));
|
|
1638
|
-
definitionMap.set('version', checker.literal('19.0.
|
|
1646
|
+
definitionMap.set('version', checker.literal('19.0.2'));
|
|
1639
1647
|
definitionMap.set('ngImport', checker.importExpr(checker.Identifiers.core));
|
|
1640
1648
|
definitionMap.set('type', meta.type.value);
|
|
1641
1649
|
// We only generate the keys in the metadata if the arrays contain values.
|
|
@@ -1686,7 +1694,7 @@ function compileDeclarePipeFromMetadata(meta) {
|
|
|
1686
1694
|
function createPipeDefinitionMap(meta) {
|
|
1687
1695
|
const definitionMap = new checker.DefinitionMap();
|
|
1688
1696
|
definitionMap.set('minVersion', checker.literal(MINIMUM_PARTIAL_LINKER_VERSION));
|
|
1689
|
-
definitionMap.set('version', checker.literal('19.0.
|
|
1697
|
+
definitionMap.set('version', checker.literal('19.0.2'));
|
|
1690
1698
|
definitionMap.set('ngImport', checker.importExpr(checker.Identifiers.core));
|
|
1691
1699
|
// e.g. `type: MyPipe`
|
|
1692
1700
|
definitionMap.set('type', meta.type.value);
|
|
@@ -7670,13 +7678,31 @@ function evaluateHostExpressionBindings(hostExpr, evaluator) {
|
|
|
7670
7678
|
const bindings = checker.parseHostBindings(hostMetadata);
|
|
7671
7679
|
const errors = checker.verifyHostBindings(bindings, checker.createSourceSpan(hostExpr));
|
|
7672
7680
|
if (errors.length > 0) {
|
|
7673
|
-
throw new checker.FatalDiagnosticError(
|
|
7674
|
-
// TODO: provide more granular diagnostic and output specific host expression that
|
|
7675
|
-
// triggered an error instead of the whole host object.
|
|
7676
|
-
checker.ErrorCode.HOST_BINDING_PARSE_ERROR, hostExpr, errors.map((error) => error.msg).join('\n'));
|
|
7681
|
+
throw new checker.FatalDiagnosticError(checker.ErrorCode.HOST_BINDING_PARSE_ERROR, getHostBindingErrorNode(errors[0], hostExpr), errors.map((error) => error.msg).join('\n'));
|
|
7677
7682
|
}
|
|
7678
7683
|
return bindings;
|
|
7679
7684
|
}
|
|
7685
|
+
/**
|
|
7686
|
+
* Attempts to match a parser error to the host binding expression that caused it.
|
|
7687
|
+
* @param error Error to match.
|
|
7688
|
+
* @param hostExpr Expression declaring the host bindings.
|
|
7689
|
+
*/
|
|
7690
|
+
function getHostBindingErrorNode(error, hostExpr) {
|
|
7691
|
+
// In the most common case the `host` object is an object literal with string values. We can
|
|
7692
|
+
// confidently match the error to its expression by looking at the string value that the parser
|
|
7693
|
+
// failed to parse and the initializers for each of the properties. If we fail to match, we fall
|
|
7694
|
+
// back to the old behavior where the error is reported on the entire `host` object.
|
|
7695
|
+
if (ts__default["default"].isObjectLiteralExpression(hostExpr) && error.relatedError instanceof checker.ParserError) {
|
|
7696
|
+
for (const prop of hostExpr.properties) {
|
|
7697
|
+
if (ts__default["default"].isPropertyAssignment(prop) &&
|
|
7698
|
+
ts__default["default"].isStringLiteralLike(prop.initializer) &&
|
|
7699
|
+
prop.initializer.text === error.relatedError.input) {
|
|
7700
|
+
return prop.initializer;
|
|
7701
|
+
}
|
|
7702
|
+
}
|
|
7703
|
+
}
|
|
7704
|
+
return hostExpr;
|
|
7705
|
+
}
|
|
7680
7706
|
/**
|
|
7681
7707
|
* Extracts and prepares the host directives metadata from an array literal expression.
|
|
7682
7708
|
* @param rawHostDirectives Expression that defined the `hostDirectives`.
|
|
@@ -10102,15 +10128,14 @@ class TsCreateProgramDriver {
|
|
|
10102
10128
|
* found in the LICENSE file at https://angular.dev/license
|
|
10103
10129
|
*/
|
|
10104
10130
|
/**
|
|
10105
|
-
* Determines the
|
|
10106
|
-
* initializer needs to capture and pass along.
|
|
10131
|
+
* Determines the file-level dependencies that the HMR initializer needs to capture and pass along.
|
|
10107
10132
|
* @param sourceFile File in which the file is being compiled.
|
|
10108
10133
|
* @param definition Compiled component definition.
|
|
10109
10134
|
* @param factory Compiled component factory.
|
|
10110
10135
|
* @param classMetadata Compiled `setClassMetadata` expression, if any.
|
|
10111
10136
|
* @param debugInfo Compiled `setClassDebugInfo` expression, if any.
|
|
10112
10137
|
*/
|
|
10113
|
-
function
|
|
10138
|
+
function extractHmrDependencies(node, definition, factory, classMetadata, debugInfo) {
|
|
10114
10139
|
const name = ts__default["default"].isClassDeclaration(node) && node.name ? node.name.text : null;
|
|
10115
10140
|
const visitor = new PotentialTopLevelReadsVisitor();
|
|
10116
10141
|
const sourceFile = node.getSourceFile();
|
|
@@ -10126,7 +10151,13 @@ function extractHmrLocals(node, definition, factory, classMetadata, debugInfo) {
|
|
|
10126
10151
|
// variables inside of functions. Note that we filter out the class name since it is always
|
|
10127
10152
|
// defined and it saves us having to repeat this logic wherever the locals are consumed.
|
|
10128
10153
|
const availableTopLevel = getTopLevelDeclarationNames(sourceFile);
|
|
10129
|
-
return
|
|
10154
|
+
return {
|
|
10155
|
+
local: Array.from(visitor.allReads).filter((r) => r !== name && availableTopLevel.has(r)),
|
|
10156
|
+
external: Array.from(visitor.namespaceReads, (name, index) => ({
|
|
10157
|
+
moduleName: name,
|
|
10158
|
+
assignedName: `ɵhmr${index}`,
|
|
10159
|
+
})),
|
|
10160
|
+
};
|
|
10130
10161
|
}
|
|
10131
10162
|
/**
|
|
10132
10163
|
* Gets the names of all top-level declarations within the file (imports, declared classes etc).
|
|
@@ -10209,6 +10240,13 @@ function trackBindingName(node, results) {
|
|
|
10209
10240
|
*/
|
|
10210
10241
|
class PotentialTopLevelReadsVisitor extends checker.RecursiveAstVisitor {
|
|
10211
10242
|
allReads = new Set();
|
|
10243
|
+
namespaceReads = new Set();
|
|
10244
|
+
visitExternalExpr(ast, context) {
|
|
10245
|
+
if (ast.value.moduleName !== null) {
|
|
10246
|
+
this.namespaceReads.add(ast.value.moduleName);
|
|
10247
|
+
}
|
|
10248
|
+
super.visitExternalExpr(ast, context);
|
|
10249
|
+
}
|
|
10212
10250
|
visitReadVarExpr(ast, context) {
|
|
10213
10251
|
this.allReads.add(ast.name);
|
|
10214
10252
|
super.visitReadVarExpr(ast, context);
|
|
@@ -10308,12 +10346,13 @@ function extractHmrMetatadata(clazz, reflection, compilerHost, rootDirs, definit
|
|
|
10308
10346
|
const sourceFile = clazz.getSourceFile();
|
|
10309
10347
|
const filePath = getProjectRelativePath(sourceFile, rootDirs, compilerHost) ||
|
|
10310
10348
|
compilerHost.getCanonicalFileName(sourceFile.fileName);
|
|
10349
|
+
const dependencies = extractHmrDependencies(clazz, definition, factory, classMetadata, debugInfo);
|
|
10311
10350
|
const meta = {
|
|
10312
10351
|
type: new checker.WrappedNodeExpr(clazz.name),
|
|
10313
10352
|
className: clazz.name.text,
|
|
10314
10353
|
filePath,
|
|
10315
|
-
|
|
10316
|
-
|
|
10354
|
+
localDependencies: dependencies.local,
|
|
10355
|
+
namespaceDependencies: dependencies.external,
|
|
10317
10356
|
};
|
|
10318
10357
|
return meta;
|
|
10319
10358
|
}
|
|
@@ -10332,7 +10371,11 @@ function extractHmrMetatadata(clazz, reflection, compilerHost, rootDirs, definit
|
|
|
10332
10371
|
* @param sourceFile File in which the class is defined.
|
|
10333
10372
|
*/
|
|
10334
10373
|
function getHmrUpdateDeclaration(compilationResults, constantStatements, meta, sourceFile) {
|
|
10335
|
-
const
|
|
10374
|
+
const namespaceSpecifiers = meta.namespaceDependencies.reduce((result, current) => {
|
|
10375
|
+
result.set(current.moduleName, current.assignedName);
|
|
10376
|
+
return result;
|
|
10377
|
+
}, new Map());
|
|
10378
|
+
const importRewriter = new HmrModuleImportRewriter(namespaceSpecifiers);
|
|
10336
10379
|
const importManager = new checker.ImportManager({
|
|
10337
10380
|
...checker.presetImportManagerForceNamespaceImports,
|
|
10338
10381
|
rewriter: importRewriter,
|
|
@@ -10346,14 +10389,13 @@ function getHmrUpdateDeclaration(compilationResults, constantStatements, meta, s
|
|
|
10346
10389
|
ts__default["default"].factory.createToken(ts__default["default"].SyntaxKind.DefaultKeyword),
|
|
10347
10390
|
], node.asteriskToken, node.name, node.typeParameters, node.parameters, node.type, node.body);
|
|
10348
10391
|
}
|
|
10349
|
-
/** Rewriter that replaces namespace imports to `@angular/core` with a specifier identifier. */
|
|
10350
10392
|
class HmrModuleImportRewriter {
|
|
10351
|
-
|
|
10352
|
-
constructor(
|
|
10353
|
-
this.
|
|
10393
|
+
lookup;
|
|
10394
|
+
constructor(lookup) {
|
|
10395
|
+
this.lookup = lookup;
|
|
10354
10396
|
}
|
|
10355
10397
|
rewriteNamespaceImportIdentifier(specifier, moduleName) {
|
|
10356
|
-
return moduleName
|
|
10398
|
+
return this.lookup.has(moduleName) ? this.lookup.get(moduleName) : specifier;
|
|
10357
10399
|
}
|
|
10358
10400
|
rewriteSymbol(symbol) {
|
|
10359
10401
|
return symbol;
|
|
@@ -20120,7 +20162,7 @@ var semver = /*@__PURE__*/getDefaultExportFromCjs(semverExports);
|
|
|
20120
20162
|
* @param minVersion Minimum required version for the feature.
|
|
20121
20163
|
*/
|
|
20122
20164
|
function coreVersionSupportsFeature(coreVersion, minVersion) {
|
|
20123
|
-
// A version of `19.0.
|
|
20165
|
+
// A version of `19.0.2` usually means that core is at head so it supports
|
|
20124
20166
|
// all features. Use string interpolation prevent the placeholder from being replaced
|
|
20125
20167
|
// with the current version during build time.
|
|
20126
20168
|
if (coreVersion === `0.0.0-${'PLACEHOLDER'}`) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
/**
|
|
3
|
-
* @license Angular v19.0.
|
|
3
|
+
* @license Angular v19.0.2
|
|
4
4
|
* (c) 2010-2024 Google LLC. https://angular.io/
|
|
5
5
|
* License: MIT
|
|
6
6
|
*/
|
|
@@ -10,12 +10,12 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
10
10
|
|
|
11
11
|
var schematics = require('@angular-devkit/schematics');
|
|
12
12
|
var p = require('path');
|
|
13
|
-
var project_tsconfig_paths = require('./project_tsconfig_paths-
|
|
14
|
-
var compiler_host = require('./compiler_host-
|
|
13
|
+
var project_tsconfig_paths = require('./project_tsconfig_paths-6c9cde78.js');
|
|
14
|
+
var compiler_host = require('./compiler_host-3e96c3f7.js');
|
|
15
15
|
var ts = require('typescript');
|
|
16
|
-
var imports = require('./imports-
|
|
16
|
+
var imports = require('./imports-44987700.js');
|
|
17
17
|
require('@angular-devkit/core');
|
|
18
|
-
require('./checker-
|
|
18
|
+
require('./checker-a00b735e.js');
|
|
19
19
|
require('os');
|
|
20
20
|
require('fs');
|
|
21
21
|
require('module');
|
|
@@ -70,34 +70,38 @@ function tryParseProviderExpression(node) {
|
|
|
70
70
|
let deps = [];
|
|
71
71
|
let initializerToken;
|
|
72
72
|
let useExisting;
|
|
73
|
-
let
|
|
73
|
+
let useFactoryCode;
|
|
74
74
|
let useValue;
|
|
75
75
|
let multi = false;
|
|
76
76
|
for (const property of node.properties) {
|
|
77
|
-
if (
|
|
78
|
-
|
|
77
|
+
if (ts__default["default"].isPropertyAssignment(property) && ts__default["default"].isIdentifier(property.name)) {
|
|
78
|
+
switch (property.name.text) {
|
|
79
|
+
case 'deps':
|
|
80
|
+
if (ts__default["default"].isArrayLiteralExpression(property.initializer)) {
|
|
81
|
+
deps = property.initializer.elements.map((el) => el.getText());
|
|
82
|
+
}
|
|
83
|
+
break;
|
|
84
|
+
case 'provide':
|
|
85
|
+
initializerToken = property.initializer.getText();
|
|
86
|
+
break;
|
|
87
|
+
case 'useExisting':
|
|
88
|
+
useExisting = property.initializer;
|
|
89
|
+
break;
|
|
90
|
+
case 'useFactory':
|
|
91
|
+
useFactoryCode = property.initializer.getText();
|
|
92
|
+
break;
|
|
93
|
+
case 'useValue':
|
|
94
|
+
useValue = property.initializer;
|
|
95
|
+
break;
|
|
96
|
+
case 'multi':
|
|
97
|
+
multi = property.initializer.kind === ts__default["default"].SyntaxKind.TrueKeyword;
|
|
98
|
+
break;
|
|
99
|
+
}
|
|
79
100
|
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
}
|
|
85
|
-
break;
|
|
86
|
-
case 'provide':
|
|
87
|
-
initializerToken = property.initializer.getText();
|
|
88
|
-
break;
|
|
89
|
-
case 'useExisting':
|
|
90
|
-
useExisting = property.initializer;
|
|
91
|
-
break;
|
|
92
|
-
case 'useFactory':
|
|
93
|
-
useFactory = property.initializer;
|
|
94
|
-
break;
|
|
95
|
-
case 'useValue':
|
|
96
|
-
useValue = property.initializer;
|
|
97
|
-
break;
|
|
98
|
-
case 'multi':
|
|
99
|
-
multi = property.initializer.kind === ts__default["default"].SyntaxKind.TrueKeyword;
|
|
100
|
-
break;
|
|
101
|
+
// Handle the `useFactory() {}` shorthand case.
|
|
102
|
+
if (ts__default["default"].isMethodDeclaration(property) && property.name.getText() === 'useFactory') {
|
|
103
|
+
const params = property.parameters.map((param) => param.getText()).join(', ');
|
|
104
|
+
useFactoryCode = `(${params}) => ${property.body?.getText()}`;
|
|
101
105
|
}
|
|
102
106
|
}
|
|
103
107
|
if (!initializerToken || !multi) {
|
|
@@ -119,12 +123,15 @@ function tryParseProviderExpression(node) {
|
|
|
119
123
|
initializerCode: `() => inject(${useExisting.getText()})()`,
|
|
120
124
|
};
|
|
121
125
|
}
|
|
122
|
-
if (
|
|
126
|
+
if (useFactoryCode) {
|
|
123
127
|
const args = deps.map((dep) => `inject(${dep})`);
|
|
124
128
|
return {
|
|
125
129
|
...info,
|
|
126
130
|
importInject: deps.length > 0,
|
|
127
|
-
initializerCode: `(
|
|
131
|
+
initializerCode: `() => {
|
|
132
|
+
const initializerFn = (${useFactoryCode})(${args.join(', ')});
|
|
133
|
+
return initializerFn();
|
|
134
|
+
}`,
|
|
128
135
|
};
|
|
129
136
|
}
|
|
130
137
|
if (useValue) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
/**
|
|
3
|
-
* @license Angular v19.0.
|
|
3
|
+
* @license Angular v19.0.2
|
|
4
4
|
* (c) 2010-2024 Google LLC. https://angular.io/
|
|
5
5
|
* License: MIT
|
|
6
6
|
*/
|
|
@@ -11,14 +11,14 @@ 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-
|
|
15
|
-
var project_tsconfig_paths = require('./project_tsconfig_paths-
|
|
14
|
+
var compiler_host = require('./compiler_host-3e96c3f7.js');
|
|
15
|
+
var project_tsconfig_paths = require('./project_tsconfig_paths-6c9cde78.js');
|
|
16
16
|
var ts = require('typescript');
|
|
17
|
-
require('./checker-
|
|
17
|
+
var checker = require('./checker-a00b735e.js');
|
|
18
18
|
require('os');
|
|
19
|
+
require('@angular-devkit/core');
|
|
19
20
|
require('module');
|
|
20
21
|
require('url');
|
|
21
|
-
require('@angular-devkit/core');
|
|
22
22
|
|
|
23
23
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
24
24
|
|
|
@@ -51,22 +51,25 @@ function findLiteralProperty(literal, name) {
|
|
|
51
51
|
/**
|
|
52
52
|
* Checks whether a component is standalone.
|
|
53
53
|
* @param node Class being checked.
|
|
54
|
+
* @param reflector The reflection host to use.
|
|
54
55
|
*/
|
|
55
|
-
function isStandaloneComponent(node) {
|
|
56
|
-
const
|
|
57
|
-
if (
|
|
56
|
+
function isStandaloneComponent(node, reflector) {
|
|
57
|
+
const decorators = reflector.getDecoratorsOfDeclaration(node);
|
|
58
|
+
if (decorators === null) {
|
|
58
59
|
return false;
|
|
59
60
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
61
|
+
const decorator = checker.findAngularDecorator(decorators, 'Component', false);
|
|
62
|
+
if (decorator === undefined || decorator.args === null || decorator.args.length !== 1) {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
const arg = decorator.args[0];
|
|
66
|
+
if (ts__default["default"].isObjectLiteralExpression(arg)) {
|
|
67
|
+
const property = findLiteralProperty(arg, 'standalone');
|
|
68
|
+
if (property) {
|
|
69
|
+
return property.initializer.getText() === 'true';
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
return true; // standalone is true by default in v19
|
|
70
73
|
}
|
|
71
74
|
}
|
|
72
75
|
return false;
|
|
@@ -161,13 +164,14 @@ function isProvideRoutesCallExpression(node, typeChecker) {
|
|
|
161
164
|
*/
|
|
162
165
|
function migrateFileToLazyRoutes(sourceFile, program) {
|
|
163
166
|
const typeChecker = program.getTypeChecker();
|
|
167
|
+
const reflector = new checker.TypeScriptReflectionHost(typeChecker);
|
|
164
168
|
const printer = ts__default["default"].createPrinter();
|
|
165
169
|
const tracker = new compiler_host.ChangeTracker(printer);
|
|
166
170
|
const routeArraysToMigrate = findRoutesArrayToMigrate(sourceFile, typeChecker);
|
|
167
171
|
if (routeArraysToMigrate.length === 0) {
|
|
168
172
|
return { pendingChanges: [], skippedRoutes: [], migratedRoutes: [] };
|
|
169
173
|
}
|
|
170
|
-
const { skippedRoutes, migratedRoutes } = migrateRoutesArray(routeArraysToMigrate, typeChecker, tracker);
|
|
174
|
+
const { skippedRoutes, migratedRoutes } = migrateRoutesArray(routeArraysToMigrate, typeChecker, reflector, tracker);
|
|
171
175
|
return {
|
|
172
176
|
pendingChanges: tracker.recordChanges().get(sourceFile) || [],
|
|
173
177
|
skippedRoutes,
|
|
@@ -239,14 +243,14 @@ function findRoutesArrayToMigrate(sourceFile, typeChecker) {
|
|
|
239
243
|
return routesArrays;
|
|
240
244
|
}
|
|
241
245
|
/** Migrate a routes object standalone components to be lazy loaded. */
|
|
242
|
-
function migrateRoutesArray(routesArray, typeChecker, tracker) {
|
|
246
|
+
function migrateRoutesArray(routesArray, typeChecker, reflector, tracker) {
|
|
243
247
|
const migratedRoutes = [];
|
|
244
248
|
const skippedRoutes = [];
|
|
245
249
|
const importsToRemove = [];
|
|
246
250
|
for (const route of routesArray) {
|
|
247
251
|
route.array.elements.forEach((element) => {
|
|
248
252
|
if (ts__default["default"].isObjectLiteralExpression(element)) {
|
|
249
|
-
const { migratedRoutes: migrated, skippedRoutes: toBeSkipped, importsToRemove: toBeRemoved, } = migrateRoute(element, route, typeChecker, tracker);
|
|
253
|
+
const { migratedRoutes: migrated, skippedRoutes: toBeSkipped, importsToRemove: toBeRemoved, } = migrateRoute(element, route, typeChecker, reflector, tracker);
|
|
250
254
|
migratedRoutes.push(...migrated);
|
|
251
255
|
skippedRoutes.push(...toBeSkipped);
|
|
252
256
|
importsToRemove.push(...toBeRemoved);
|
|
@@ -262,7 +266,7 @@ function migrateRoutesArray(routesArray, typeChecker, tracker) {
|
|
|
262
266
|
* Migrates a single route object and returns the results of the migration
|
|
263
267
|
* It recursively migrates the children routes if they exist
|
|
264
268
|
*/
|
|
265
|
-
function migrateRoute(element, route, typeChecker, tracker) {
|
|
269
|
+
function migrateRoute(element, route, typeChecker, reflector, tracker) {
|
|
266
270
|
const skippedRoutes = [];
|
|
267
271
|
const migratedRoutes = [];
|
|
268
272
|
const importsToRemove = [];
|
|
@@ -274,7 +278,7 @@ function migrateRoute(element, route, typeChecker, tracker) {
|
|
|
274
278
|
if (children && ts__default["default"].isArrayLiteralExpression(children.initializer)) {
|
|
275
279
|
for (const childRoute of children.initializer.elements) {
|
|
276
280
|
if (ts__default["default"].isObjectLiteralExpression(childRoute)) {
|
|
277
|
-
const { migratedRoutes: migrated, skippedRoutes: toBeSkipped, importsToRemove: toBeRemoved, } = migrateRoute(childRoute, route, typeChecker, tracker);
|
|
281
|
+
const { migratedRoutes: migrated, skippedRoutes: toBeSkipped, importsToRemove: toBeRemoved, } = migrateRoute(childRoute, route, typeChecker, reflector, tracker);
|
|
278
282
|
migratedRoutes.push(...migrated);
|
|
279
283
|
skippedRoutes.push(...toBeSkipped);
|
|
280
284
|
importsToRemove.push(...toBeRemoved);
|
|
@@ -290,7 +294,7 @@ function migrateRoute(element, route, typeChecker, tracker) {
|
|
|
290
294
|
return routeMigrationResults;
|
|
291
295
|
}
|
|
292
296
|
// if component is not a standalone component, skip it
|
|
293
|
-
if (!isStandaloneComponent(componentDeclaration)) {
|
|
297
|
+
if (!isStandaloneComponent(componentDeclaration, reflector)) {
|
|
294
298
|
skippedRoutes.push({ path: routePath, file: route.routeFilePath });
|
|
295
299
|
return routeMigrationResults;
|
|
296
300
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
/**
|
|
3
|
-
* @license Angular v19.0.
|
|
3
|
+
* @license Angular v19.0.2
|
|
4
4
|
* (c) 2010-2024 Google LLC. https://angular.io/
|
|
5
5
|
* License: MIT
|
|
6
6
|
*/
|
|
@@ -9,16 +9,16 @@
|
|
|
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-676612f5.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-a00b735e.js');
|
|
16
|
+
var program = require('./program-a6be5d4a.js');
|
|
17
17
|
require('path');
|
|
18
|
-
var combine_units = require('./combine_units-
|
|
18
|
+
var combine_units = require('./combine_units-60865867.js');
|
|
19
19
|
var assert = require('assert');
|
|
20
|
-
var project_tsconfig_paths = require('./project_tsconfig_paths-
|
|
21
|
-
require('./leading_space-
|
|
20
|
+
var project_tsconfig_paths = require('./project_tsconfig_paths-6c9cde78.js');
|
|
21
|
+
require('./leading_space-6e7a8ec6.js');
|
|
22
22
|
require('fs');
|
|
23
23
|
require('module');
|
|
24
24
|
require('url');
|