@angular/core 19.0.0-next.7 → 19.0.0-next.8
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/LICENSE +21 -0
- package/fesm2022/core.mjs +274 -147
- 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 +67 -52
- 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-637eee78.js → checker-e68dd7ce.js} +15 -5
- package/schematics/bundles/{compiler_host-1e62b899.js → compiler_host-9a4d0c2b.js} +2 -2
- package/schematics/bundles/control-flow-migration.js +3 -3
- package/schematics/bundles/explicit-standalone-flag.js +5 -5
- package/schematics/bundles/group_replacements-472b2387.js +31445 -0
- package/schematics/bundles/{imports-44987700.js → imports-4ac08251.js} +1 -1
- package/schematics/bundles/inject-migration.js +24 -8
- package/schematics/bundles/{leading_space-6e7a8ec6.js → leading_space-d190b83b.js} +1 -1
- package/schematics/bundles/{nodes-b12e919a.js → nodes-0e7d45ca.js} +2 -2
- package/schematics/bundles/pending-tasks.js +5 -5
- package/schematics/bundles/{program-893e3fe7.js → program-105283c5.js} +66 -24
- package/schematics/bundles/{project_tsconfig_paths-6c9cde78.js → project_tsconfig_paths-e9ccccbf.js} +1 -1
- package/schematics/bundles/route-lazy-loading.js +4 -4
- package/schematics/bundles/signal-input-migration.js +371 -31688
- package/schematics/bundles/signal-queries-migration.js +905 -0
- package/schematics/bundles/standalone-migration.js +8 -8
- package/schematics/collection.json +6 -0
- package/schematics/ng-generate/signal-queries-migration/schema.json +19 -0
- package/testing/index.d.ts +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
/**
|
|
3
|
-
* @license Angular v19.0.0-next.
|
|
3
|
+
* @license Angular v19.0.0-next.8
|
|
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 compiler_host = require('./compiler_host-
|
|
13
|
+
var compiler_host = require('./compiler_host-9a4d0c2b.js');
|
|
14
14
|
var ts = require('typescript');
|
|
15
|
-
var nodes = require('./nodes-
|
|
16
|
-
var imports = require('./imports-
|
|
17
|
-
var leading_space = require('./leading_space-
|
|
18
|
-
require('./checker-
|
|
15
|
+
var nodes = require('./nodes-0e7d45ca.js');
|
|
16
|
+
var imports = require('./imports-4ac08251.js');
|
|
17
|
+
var leading_space = require('./leading_space-d190b83b.js');
|
|
18
|
+
require('./checker-e68dd7ce.js');
|
|
19
19
|
require('os');
|
|
20
20
|
require('fs');
|
|
21
21
|
require('module');
|
|
@@ -514,8 +514,7 @@ function migrateClass(node, constructor, superCall, options, removedStatements,
|
|
|
514
514
|
tracker.replaceText(sourceFile, member.getFullStart(), member.getFullWidth(), '');
|
|
515
515
|
}
|
|
516
516
|
}
|
|
517
|
-
if (
|
|
518
|
-
(!constructor.body || constructor.body.statements.length - removedStatementCount === 0)) {
|
|
517
|
+
if (canRemoveConstructor(options, constructor, removedStatementCount, superCall)) {
|
|
519
518
|
// Drop the constructor if it was empty.
|
|
520
519
|
removedMembers.add(constructor);
|
|
521
520
|
tracker.replaceText(sourceFile, constructor.getFullStart(), constructor.getFullWidth(), '');
|
|
@@ -861,6 +860,23 @@ function cloneName(node) {
|
|
|
861
860
|
return node;
|
|
862
861
|
}
|
|
863
862
|
}
|
|
863
|
+
/**
|
|
864
|
+
* Determines whether it's safe to delete a class constructor.
|
|
865
|
+
* @param options Options used to configure the migration.
|
|
866
|
+
* @param constructor Node representing the constructor.
|
|
867
|
+
* @param removedStatementCount Number of statements that were removed by the migration.
|
|
868
|
+
* @param superCall Node representing the `super()` call within the constructor.
|
|
869
|
+
*/
|
|
870
|
+
function canRemoveConstructor(options, constructor, removedStatementCount, superCall) {
|
|
871
|
+
if (options.backwardsCompatibleConstructors) {
|
|
872
|
+
return false;
|
|
873
|
+
}
|
|
874
|
+
const statementCount = constructor.body
|
|
875
|
+
? constructor.body.statements.length - removedStatementCount
|
|
876
|
+
: 0;
|
|
877
|
+
return (statementCount === 0 ||
|
|
878
|
+
(statementCount === 1 && superCall !== null && superCall.arguments.length === 0));
|
|
879
|
+
}
|
|
864
880
|
|
|
865
881
|
function migrate(options) {
|
|
866
882
|
return async (tree) => {
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
/**
|
|
3
|
-
* @license Angular v19.0.0-next.
|
|
3
|
+
* @license Angular v19.0.0-next.8
|
|
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-4ac08251.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.0-next.
|
|
3
|
+
* @license Angular v19.0.0-next.8
|
|
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-e9ccccbf.js');
|
|
14
|
+
var compiler_host = require('./compiler_host-9a4d0c2b.js');
|
|
15
15
|
var ts = require('typescript');
|
|
16
|
-
var imports = require('./imports-
|
|
16
|
+
var imports = require('./imports-4ac08251.js');
|
|
17
17
|
require('@angular-devkit/core');
|
|
18
|
-
require('./checker-
|
|
18
|
+
require('./checker-e68dd7ce.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-next.
|
|
3
|
+
* @license Angular v19.0.0-next.8
|
|
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-e68dd7ce.js');
|
|
10
10
|
var ts = require('typescript');
|
|
11
11
|
var p = require('path');
|
|
12
12
|
require('os');
|
|
@@ -864,7 +864,7 @@ const MINIMUM_PARTIAL_LINKER_DEFER_SUPPORT_VERSION = '18.0.0';
|
|
|
864
864
|
function compileDeclareClassMetadata(metadata) {
|
|
865
865
|
const definitionMap = new checker.DefinitionMap();
|
|
866
866
|
definitionMap.set('minVersion', checker.literal(MINIMUM_PARTIAL_LINKER_VERSION$5));
|
|
867
|
-
definitionMap.set('version', checker.literal('19.0.0-next.
|
|
867
|
+
definitionMap.set('version', checker.literal('19.0.0-next.8'));
|
|
868
868
|
definitionMap.set('ngImport', checker.importExpr(checker.Identifiers.core));
|
|
869
869
|
definitionMap.set('type', metadata.type);
|
|
870
870
|
definitionMap.set('decorators', metadata.decorators);
|
|
@@ -882,7 +882,7 @@ function compileComponentDeclareClassMetadata(metadata, dependencies) {
|
|
|
882
882
|
callbackReturnDefinitionMap.set('ctorParameters', metadata.ctorParameters ?? checker.literal(null));
|
|
883
883
|
callbackReturnDefinitionMap.set('propDecorators', metadata.propDecorators ?? checker.literal(null));
|
|
884
884
|
definitionMap.set('minVersion', checker.literal(MINIMUM_PARTIAL_LINKER_DEFER_SUPPORT_VERSION));
|
|
885
|
-
definitionMap.set('version', checker.literal('19.0.0-next.
|
|
885
|
+
definitionMap.set('version', checker.literal('19.0.0-next.8'));
|
|
886
886
|
definitionMap.set('ngImport', checker.importExpr(checker.Identifiers.core));
|
|
887
887
|
definitionMap.set('type', metadata.type);
|
|
888
888
|
definitionMap.set('resolveDeferredDeps', compileComponentMetadataAsyncResolver(dependencies));
|
|
@@ -977,7 +977,7 @@ function createDirectiveDefinitionMap(meta) {
|
|
|
977
977
|
const definitionMap = new checker.DefinitionMap();
|
|
978
978
|
const minVersion = getMinimumVersionForPartialOutput(meta);
|
|
979
979
|
definitionMap.set('minVersion', checker.literal(minVersion));
|
|
980
|
-
definitionMap.set('version', checker.literal('19.0.0-next.
|
|
980
|
+
definitionMap.set('version', checker.literal('19.0.0-next.8'));
|
|
981
981
|
// e.g. `type: MyDirective`
|
|
982
982
|
definitionMap.set('type', meta.type.value);
|
|
983
983
|
if (meta.isStandalone) {
|
|
@@ -1396,7 +1396,7 @@ const MINIMUM_PARTIAL_LINKER_VERSION$4 = '12.0.0';
|
|
|
1396
1396
|
function compileDeclareFactoryFunction(meta) {
|
|
1397
1397
|
const definitionMap = new checker.DefinitionMap();
|
|
1398
1398
|
definitionMap.set('minVersion', checker.literal(MINIMUM_PARTIAL_LINKER_VERSION$4));
|
|
1399
|
-
definitionMap.set('version', checker.literal('19.0.0-next.
|
|
1399
|
+
definitionMap.set('version', checker.literal('19.0.0-next.8'));
|
|
1400
1400
|
definitionMap.set('ngImport', checker.importExpr(checker.Identifiers.core));
|
|
1401
1401
|
definitionMap.set('type', meta.type.value);
|
|
1402
1402
|
definitionMap.set('deps', compileDependencies(meta.deps));
|
|
@@ -1431,7 +1431,7 @@ function compileDeclareInjectableFromMetadata(meta) {
|
|
|
1431
1431
|
function createInjectableDefinitionMap(meta) {
|
|
1432
1432
|
const definitionMap = new checker.DefinitionMap();
|
|
1433
1433
|
definitionMap.set('minVersion', checker.literal(MINIMUM_PARTIAL_LINKER_VERSION$3));
|
|
1434
|
-
definitionMap.set('version', checker.literal('19.0.0-next.
|
|
1434
|
+
definitionMap.set('version', checker.literal('19.0.0-next.8'));
|
|
1435
1435
|
definitionMap.set('ngImport', checker.importExpr(checker.Identifiers.core));
|
|
1436
1436
|
definitionMap.set('type', meta.type.value);
|
|
1437
1437
|
// Only generate providedIn property if it has a non-null value
|
|
@@ -1482,7 +1482,7 @@ function compileDeclareInjectorFromMetadata(meta) {
|
|
|
1482
1482
|
function createInjectorDefinitionMap(meta) {
|
|
1483
1483
|
const definitionMap = new checker.DefinitionMap();
|
|
1484
1484
|
definitionMap.set('minVersion', checker.literal(MINIMUM_PARTIAL_LINKER_VERSION$2));
|
|
1485
|
-
definitionMap.set('version', checker.literal('19.0.0-next.
|
|
1485
|
+
definitionMap.set('version', checker.literal('19.0.0-next.8'));
|
|
1486
1486
|
definitionMap.set('ngImport', checker.importExpr(checker.Identifiers.core));
|
|
1487
1487
|
definitionMap.set('type', meta.type.value);
|
|
1488
1488
|
definitionMap.set('providers', meta.providers);
|
|
@@ -1515,7 +1515,7 @@ function createNgModuleDefinitionMap(meta) {
|
|
|
1515
1515
|
throw new Error('Invalid path! Local compilation mode should not get into the partial compilation path');
|
|
1516
1516
|
}
|
|
1517
1517
|
definitionMap.set('minVersion', checker.literal(MINIMUM_PARTIAL_LINKER_VERSION$1));
|
|
1518
|
-
definitionMap.set('version', checker.literal('19.0.0-next.
|
|
1518
|
+
definitionMap.set('version', checker.literal('19.0.0-next.8'));
|
|
1519
1519
|
definitionMap.set('ngImport', checker.importExpr(checker.Identifiers.core));
|
|
1520
1520
|
definitionMap.set('type', meta.type.value);
|
|
1521
1521
|
// We only generate the keys in the metadata if the arrays contain values.
|
|
@@ -1566,7 +1566,7 @@ function compileDeclarePipeFromMetadata(meta) {
|
|
|
1566
1566
|
function createPipeDefinitionMap(meta) {
|
|
1567
1567
|
const definitionMap = new checker.DefinitionMap();
|
|
1568
1568
|
definitionMap.set('minVersion', checker.literal(MINIMUM_PARTIAL_LINKER_VERSION));
|
|
1569
|
-
definitionMap.set('version', checker.literal('19.0.0-next.
|
|
1569
|
+
definitionMap.set('version', checker.literal('19.0.0-next.8'));
|
|
1570
1570
|
definitionMap.set('ngImport', checker.importExpr(checker.Identifiers.core));
|
|
1571
1571
|
// e.g. `type: MyPipe`
|
|
1572
1572
|
definitionMap.set('type', meta.type.value);
|
|
@@ -6531,7 +6531,7 @@ const QUERY_TYPES = new Set(queryDecoratorNames);
|
|
|
6531
6531
|
* appear in the declarations of an `NgModule` and additional verification is done when processing
|
|
6532
6532
|
* the module.
|
|
6533
6533
|
*/
|
|
6534
|
-
function extractDirectiveMetadata(clazz, decorator, reflector, importTracker, evaluator, refEmitter, referencesRegistry, isCore, annotateForClosureCompiler, compilationMode, defaultSelector) {
|
|
6534
|
+
function extractDirectiveMetadata(clazz, decorator, reflector, importTracker, evaluator, refEmitter, referencesRegistry, isCore, annotateForClosureCompiler, compilationMode, defaultSelector, strictStandalone) {
|
|
6535
6535
|
let directive;
|
|
6536
6536
|
if (decorator.args === null || decorator.args.length === 0) {
|
|
6537
6537
|
directive = new Map();
|
|
@@ -6643,6 +6643,9 @@ function extractDirectiveMetadata(clazz, decorator, reflector, importTracker, ev
|
|
|
6643
6643
|
throw createValueHasWrongTypeError(expr, resolved, `standalone flag must be a boolean`);
|
|
6644
6644
|
}
|
|
6645
6645
|
isStandalone = resolved;
|
|
6646
|
+
if (!isStandalone && strictStandalone) {
|
|
6647
|
+
throw new checker.FatalDiagnosticError(checker.ErrorCode.NON_STANDALONE_NOT_ALLOWED, expr, `Only standalone components/directives are allowed when 'strictStandalone' is enabled.`);
|
|
6648
|
+
}
|
|
6646
6649
|
}
|
|
6647
6650
|
let isSignal = false;
|
|
6648
6651
|
if (directive.has('signals')) {
|
|
@@ -7636,7 +7639,7 @@ const LIFECYCLE_HOOKS = new Set([
|
|
|
7636
7639
|
'ngAfterContentChecked',
|
|
7637
7640
|
]);
|
|
7638
7641
|
class DirectiveDecoratorHandler {
|
|
7639
|
-
constructor(reflector, evaluator, metaRegistry, scopeRegistry, metaReader, injectableRegistry, refEmitter, referencesRegistry, isCore, strictCtorDeps, semanticDepGraphUpdater, annotateForClosureCompiler, perf, importTracker, includeClassMetadata, compilationMode, jitDeclarationRegistry) {
|
|
7642
|
+
constructor(reflector, evaluator, metaRegistry, scopeRegistry, metaReader, injectableRegistry, refEmitter, referencesRegistry, isCore, strictCtorDeps, semanticDepGraphUpdater, annotateForClosureCompiler, perf, importTracker, includeClassMetadata, compilationMode, jitDeclarationRegistry, strictStandalone) {
|
|
7640
7643
|
this.reflector = reflector;
|
|
7641
7644
|
this.evaluator = evaluator;
|
|
7642
7645
|
this.metaRegistry = metaRegistry;
|
|
@@ -7654,6 +7657,7 @@ class DirectiveDecoratorHandler {
|
|
|
7654
7657
|
this.includeClassMetadata = includeClassMetadata;
|
|
7655
7658
|
this.compilationMode = compilationMode;
|
|
7656
7659
|
this.jitDeclarationRegistry = jitDeclarationRegistry;
|
|
7660
|
+
this.strictStandalone = strictStandalone;
|
|
7657
7661
|
this.precedence = checker.HandlerPrecedence.PRIMARY;
|
|
7658
7662
|
this.name = 'DirectiveDecoratorHandler';
|
|
7659
7663
|
}
|
|
@@ -7687,7 +7691,7 @@ class DirectiveDecoratorHandler {
|
|
|
7687
7691
|
}
|
|
7688
7692
|
this.perf.eventCount(checker.PerfEvent.AnalyzeDirective);
|
|
7689
7693
|
const directiveResult = extractDirectiveMetadata(node, decorator, this.reflector, this.importTracker, this.evaluator, this.refEmitter, this.referencesRegistry, this.isCore, this.annotateForClosureCompiler, this.compilationMode,
|
|
7690
|
-
/* defaultSelector */ null);
|
|
7694
|
+
/* defaultSelector */ null, this.strictStandalone);
|
|
7691
7695
|
// `extractDirectiveMetadata` returns `jitForced = true` when the `@Directive` has
|
|
7692
7696
|
// set `jit: true`. In this case, compilation of the decorator is skipped. Returning
|
|
7693
7697
|
// an empty object signifies that no analysis was produced.
|
|
@@ -9731,7 +9735,7 @@ const isUsedPipe = (decl) => decl.kind === checker.R3TemplateDependencyKind.Pipe
|
|
|
9731
9735
|
* `DecoratorHandler` which handles the `@Component` annotation.
|
|
9732
9736
|
*/
|
|
9733
9737
|
class ComponentDecoratorHandler {
|
|
9734
|
-
constructor(reflector, evaluator, metaRegistry, metaReader, scopeReader, dtsScopeReader, scopeRegistry, typeCheckScopeRegistry, resourceRegistry, isCore, strictCtorDeps, resourceLoader, rootDirs, defaultPreserveWhitespaces, i18nUseExternalIds, enableI18nLegacyMessageIdFormat, usePoisonedData, i18nNormalizeLineEndingsInICUs, moduleResolver, cycleAnalyzer, cycleHandlingStrategy, refEmitter, referencesRegistry, depTracker, injectableRegistry, semanticDepGraphUpdater, annotateForClosureCompiler, perf, hostDirectivesResolver, importTracker, includeClassMetadata, compilationMode, deferredSymbolTracker, forbidOrphanRendering, enableBlockSyntax, enableLetSyntax, localCompilationExtraImportsTracker, jitDeclarationRegistry, i18nPreserveSignificantWhitespace) {
|
|
9738
|
+
constructor(reflector, evaluator, metaRegistry, metaReader, scopeReader, dtsScopeReader, scopeRegistry, typeCheckScopeRegistry, resourceRegistry, isCore, strictCtorDeps, resourceLoader, rootDirs, defaultPreserveWhitespaces, i18nUseExternalIds, enableI18nLegacyMessageIdFormat, usePoisonedData, i18nNormalizeLineEndingsInICUs, moduleResolver, cycleAnalyzer, cycleHandlingStrategy, refEmitter, referencesRegistry, depTracker, injectableRegistry, semanticDepGraphUpdater, annotateForClosureCompiler, perf, hostDirectivesResolver, importTracker, includeClassMetadata, compilationMode, deferredSymbolTracker, forbidOrphanRendering, enableBlockSyntax, enableLetSyntax, localCompilationExtraImportsTracker, jitDeclarationRegistry, i18nPreserveSignificantWhitespace, strictStandalone) {
|
|
9735
9739
|
this.reflector = reflector;
|
|
9736
9740
|
this.evaluator = evaluator;
|
|
9737
9741
|
this.metaRegistry = metaRegistry;
|
|
@@ -9771,6 +9775,7 @@ class ComponentDecoratorHandler {
|
|
|
9771
9775
|
this.localCompilationExtraImportsTracker = localCompilationExtraImportsTracker;
|
|
9772
9776
|
this.jitDeclarationRegistry = jitDeclarationRegistry;
|
|
9773
9777
|
this.i18nPreserveSignificantWhitespace = i18nPreserveSignificantWhitespace;
|
|
9778
|
+
this.strictStandalone = strictStandalone;
|
|
9774
9779
|
this.literalCache = new Map();
|
|
9775
9780
|
this.elementSchemaRegistry = new checker.DomElementSchemaRegistry();
|
|
9776
9781
|
/**
|
|
@@ -9883,7 +9888,7 @@ class ComponentDecoratorHandler {
|
|
|
9883
9888
|
let isPoisoned = false;
|
|
9884
9889
|
// @Component inherits @Directive, so begin by extracting the @Directive metadata and building
|
|
9885
9890
|
// on it.
|
|
9886
|
-
const directiveResult = extractDirectiveMetadata(node, decorator, this.reflector, this.importTracker, this.evaluator, this.refEmitter, this.referencesRegistry, this.isCore, this.annotateForClosureCompiler, this.compilationMode, this.elementSchemaRegistry.getDefaultComponentElementName());
|
|
9891
|
+
const directiveResult = extractDirectiveMetadata(node, decorator, this.reflector, this.importTracker, this.evaluator, this.refEmitter, this.referencesRegistry, this.isCore, this.annotateForClosureCompiler, this.compilationMode, this.elementSchemaRegistry.getDefaultComponentElementName(), this.strictStandalone);
|
|
9887
9892
|
// `extractDirectiveMetadata` returns `jitForced = true` when the `@Component` has
|
|
9888
9893
|
// set `jit: true`. In this case, compilation of the decorator is skipped. Returning
|
|
9889
9894
|
// an empty object signifies that no analysis was produced.
|
|
@@ -11374,7 +11379,7 @@ class PipeSymbol extends SemanticSymbol {
|
|
|
11374
11379
|
}
|
|
11375
11380
|
}
|
|
11376
11381
|
class PipeDecoratorHandler {
|
|
11377
|
-
constructor(reflector, evaluator, metaRegistry, scopeRegistry, injectableRegistry, isCore, perf, includeClassMetadata, compilationMode, generateExtraImportsInLocalMode) {
|
|
11382
|
+
constructor(reflector, evaluator, metaRegistry, scopeRegistry, injectableRegistry, isCore, perf, includeClassMetadata, compilationMode, generateExtraImportsInLocalMode, strictStandalone) {
|
|
11378
11383
|
this.reflector = reflector;
|
|
11379
11384
|
this.evaluator = evaluator;
|
|
11380
11385
|
this.metaRegistry = metaRegistry;
|
|
@@ -11385,6 +11390,7 @@ class PipeDecoratorHandler {
|
|
|
11385
11390
|
this.includeClassMetadata = includeClassMetadata;
|
|
11386
11391
|
this.compilationMode = compilationMode;
|
|
11387
11392
|
this.generateExtraImportsInLocalMode = generateExtraImportsInLocalMode;
|
|
11393
|
+
this.strictStandalone = strictStandalone;
|
|
11388
11394
|
this.precedence = checker.HandlerPrecedence.PRIMARY;
|
|
11389
11395
|
this.name = 'PipeDecoratorHandler';
|
|
11390
11396
|
}
|
|
@@ -11444,6 +11450,9 @@ class PipeDecoratorHandler {
|
|
|
11444
11450
|
throw createValueHasWrongTypeError(expr, resolved, `standalone flag must be a boolean`);
|
|
11445
11451
|
}
|
|
11446
11452
|
isStandalone = resolved;
|
|
11453
|
+
if (!isStandalone && this.strictStandalone) {
|
|
11454
|
+
throw new checker.FatalDiagnosticError(checker.ErrorCode.NON_STANDALONE_NOT_ALLOWED, expr, `Only standalone pipes are allowed when 'strictStandalone' is enabled.`);
|
|
11455
|
+
}
|
|
11447
11456
|
}
|
|
11448
11457
|
return {
|
|
11449
11458
|
analysis: {
|
|
@@ -16454,15 +16463,18 @@ class UnusedStandaloneImportsRule {
|
|
|
16454
16463
|
return checker.makeDiagnostic(checker.ErrorCode.UNUSED_STANDALONE_IMPORTS, metadata.rawImports, 'Imports array contains unused imports', unused.map(([ref, type, name]) => checker.makeRelatedInformation(ref.getOriginForDiagnostics(metadata.rawImports), `${type} "${name}" is not used within the template`)), category);
|
|
16455
16464
|
}
|
|
16456
16465
|
getUnusedSymbols(metadata, usedDirectives, usedPipes) {
|
|
16457
|
-
|
|
16466
|
+
const { imports, rawImports } = metadata;
|
|
16467
|
+
if (imports === null || rawImports === null) {
|
|
16458
16468
|
return null;
|
|
16459
16469
|
}
|
|
16460
16470
|
let unused = null;
|
|
16461
|
-
for (const current of
|
|
16471
|
+
for (const current of imports) {
|
|
16462
16472
|
const currentNode = current.node;
|
|
16463
16473
|
const dirMeta = this.templateTypeChecker.getDirectiveMetadata(currentNode);
|
|
16464
16474
|
if (dirMeta !== null) {
|
|
16465
|
-
if (dirMeta.isStandalone &&
|
|
16475
|
+
if (dirMeta.isStandalone &&
|
|
16476
|
+
!usedDirectives.has(currentNode) &&
|
|
16477
|
+
!this.isPotentialSharedReference(current, rawImports)) {
|
|
16466
16478
|
unused ??= [];
|
|
16467
16479
|
unused.push([current, dirMeta.isComponent ? 'Component' : 'Directive', dirMeta.name]);
|
|
16468
16480
|
}
|
|
@@ -16471,13 +16483,41 @@ class UnusedStandaloneImportsRule {
|
|
|
16471
16483
|
const pipeMeta = this.templateTypeChecker.getPipeMetadata(currentNode);
|
|
16472
16484
|
if (pipeMeta !== null &&
|
|
16473
16485
|
pipeMeta.isStandalone &&
|
|
16474
|
-
|
|
16486
|
+
!usedPipes.has(pipeMeta.name) &&
|
|
16487
|
+
!this.isPotentialSharedReference(current, rawImports)) {
|
|
16475
16488
|
unused ??= [];
|
|
16476
16489
|
unused.push([current, 'Pipe', pipeMeta.ref.node.name.text]);
|
|
16477
16490
|
}
|
|
16478
16491
|
}
|
|
16479
16492
|
return unused;
|
|
16480
16493
|
}
|
|
16494
|
+
/**
|
|
16495
|
+
* Determines if an import reference *might* be coming from a shared imports array.
|
|
16496
|
+
* @param reference Reference to be checked.
|
|
16497
|
+
* @param rawImports AST node that defines the `imports` array.
|
|
16498
|
+
*/
|
|
16499
|
+
isPotentialSharedReference(reference, rawImports) {
|
|
16500
|
+
// If the reference is defined directly in the `imports` array, it cannot be shared.
|
|
16501
|
+
if (reference.getIdentityInExpression(rawImports) !== null) {
|
|
16502
|
+
return false;
|
|
16503
|
+
}
|
|
16504
|
+
// The reference might be shared if it comes from an exported array. If the variable is local
|
|
16505
|
+
/// to the file, then it likely isn't shared. Note that this has the potential for false
|
|
16506
|
+
// positives if a non-exported array of imports is shared between components in the same
|
|
16507
|
+
// file. This scenario is unlikely and even if we report the diagnostic for it, it would be
|
|
16508
|
+
// okay since the user only has to refactor components within the same file, rather than the
|
|
16509
|
+
// entire application.
|
|
16510
|
+
let current = reference.getIdentityIn(rawImports.getSourceFile());
|
|
16511
|
+
while (current !== null) {
|
|
16512
|
+
if (ts__default["default"].isVariableStatement(current)) {
|
|
16513
|
+
return !!current.modifiers?.some((m) => m.kind === ts__default["default"].SyntaxKind.ExportKeyword);
|
|
16514
|
+
}
|
|
16515
|
+
current = current.parent;
|
|
16516
|
+
}
|
|
16517
|
+
// Otherwise the reference likely comes from an imported
|
|
16518
|
+
// symbol like an array of shared common components.
|
|
16519
|
+
return true;
|
|
16520
|
+
}
|
|
16481
16521
|
}
|
|
16482
16522
|
|
|
16483
16523
|
/*!
|
|
@@ -19222,7 +19262,7 @@ var semver = /*@__PURE__*/getDefaultExportFromCjs(semverExports);
|
|
|
19222
19262
|
* @param minVersion Minimum required version for the feature.
|
|
19223
19263
|
*/
|
|
19224
19264
|
function coreVersionSupportsFeature(coreVersion, minVersion) {
|
|
19225
|
-
// A version of `19.0.0-next.
|
|
19265
|
+
// A version of `19.0.0-next.8` usually means that core is at head so it supports
|
|
19226
19266
|
// all features. Use string interpolation prevent the placeholder from being replaced
|
|
19227
19267
|
// with the current version during build time.
|
|
19228
19268
|
if (coreVersion === `0.0.0-${'PLACEHOLDER'}`) {
|
|
@@ -20096,13 +20136,13 @@ class NgCompiler {
|
|
|
20096
20136
|
const jitDeclarationRegistry = new JitDeclarationRegistry();
|
|
20097
20137
|
// Set up the IvyCompilation, which manages state for the Ivy transformer.
|
|
20098
20138
|
const handlers = [
|
|
20099
|
-
new ComponentDecoratorHandler(reflector, evaluator, metaRegistry, metaReader, scopeReader, depScopeReader, ngModuleScopeRegistry, typeCheckScopeRegistry, resourceRegistry, isCore, strictCtorDeps, this.resourceManager, this.adapter.rootDirs, this.options.preserveWhitespaces || false, this.options.i18nUseExternalIds !== false, this.options.enableI18nLegacyMessageIdFormat !== false, this.usePoisonedData, this.options.i18nNormalizeLineEndingsInICUs === true, this.moduleResolver, this.cycleAnalyzer, cycleHandlingStrategy, refEmitter, referencesRegistry, this.incrementalCompilation.depGraph, injectableRegistry, semanticDepGraphUpdater, this.closureCompilerEnabled, this.delegatingPerfRecorder, hostDirectivesResolver, importTracker, supportTestBed, compilationMode, deferredSymbolsTracker, !!this.options.forbidOrphanComponents, this.enableBlockSyntax, this.enableLetSyntax, localCompilationExtraImportsTracker, jitDeclarationRegistry, this.options.i18nPreserveWhitespaceForLegacyExtraction ?? true),
|
|
20139
|
+
new ComponentDecoratorHandler(reflector, evaluator, metaRegistry, metaReader, scopeReader, depScopeReader, ngModuleScopeRegistry, typeCheckScopeRegistry, resourceRegistry, isCore, strictCtorDeps, this.resourceManager, this.adapter.rootDirs, this.options.preserveWhitespaces || false, this.options.i18nUseExternalIds !== false, this.options.enableI18nLegacyMessageIdFormat !== false, this.usePoisonedData, this.options.i18nNormalizeLineEndingsInICUs === true, this.moduleResolver, this.cycleAnalyzer, cycleHandlingStrategy, refEmitter, referencesRegistry, this.incrementalCompilation.depGraph, injectableRegistry, semanticDepGraphUpdater, this.closureCompilerEnabled, this.delegatingPerfRecorder, hostDirectivesResolver, importTracker, supportTestBed, compilationMode, deferredSymbolsTracker, !!this.options.forbidOrphanComponents, this.enableBlockSyntax, this.enableLetSyntax, localCompilationExtraImportsTracker, jitDeclarationRegistry, this.options.i18nPreserveWhitespaceForLegacyExtraction ?? true, !!this.options.strictStandalone),
|
|
20100
20140
|
// TODO(alxhub): understand why the cast here is necessary (something to do with `null`
|
|
20101
20141
|
// not being assignable to `unknown` when wrapped in `Readonly`).
|
|
20102
|
-
new DirectiveDecoratorHandler(reflector, evaluator, metaRegistry, ngModuleScopeRegistry, metaReader, injectableRegistry, refEmitter, referencesRegistry, isCore, strictCtorDeps, semanticDepGraphUpdater, this.closureCompilerEnabled, this.delegatingPerfRecorder, importTracker, supportTestBed, compilationMode, jitDeclarationRegistry),
|
|
20142
|
+
new DirectiveDecoratorHandler(reflector, evaluator, metaRegistry, ngModuleScopeRegistry, metaReader, injectableRegistry, refEmitter, referencesRegistry, isCore, strictCtorDeps, semanticDepGraphUpdater, this.closureCompilerEnabled, this.delegatingPerfRecorder, importTracker, supportTestBed, compilationMode, jitDeclarationRegistry, !!this.options.strictStandalone),
|
|
20103
20143
|
// Pipe handler must be before injectable handler in list so pipe factories are printed
|
|
20104
20144
|
// before injectable factories (so injectable factories can delegate to them)
|
|
20105
|
-
new PipeDecoratorHandler(reflector, evaluator, metaRegistry, ngModuleScopeRegistry, injectableRegistry, isCore, this.delegatingPerfRecorder, supportTestBed, compilationMode, !!this.options.generateExtraImportsInLocalMode),
|
|
20145
|
+
new PipeDecoratorHandler(reflector, evaluator, metaRegistry, ngModuleScopeRegistry, injectableRegistry, isCore, this.delegatingPerfRecorder, supportTestBed, compilationMode, !!this.options.generateExtraImportsInLocalMode, !!this.options.strictStandalone),
|
|
20106
20146
|
new InjectableDecoratorHandler(reflector, evaluator, isCore, strictCtorDeps, injectableRegistry, this.delegatingPerfRecorder, supportTestBed, compilationMode),
|
|
20107
20147
|
new NgModuleDecoratorHandler(reflector, evaluator, metaReader, metaRegistry, ngModuleScopeRegistry, referencesRegistry, exportedProviderStatusResolver, semanticDepGraphUpdater, isCore, refEmitter, this.closureCompilerEnabled, this.options.onlyPublishPublicTypingsForNgModules ?? false, injectableRegistry, this.delegatingPerfRecorder, supportTestBed, supportJitMode, compilationMode, localCompilationExtraImportsTracker, jitDeclarationRegistry),
|
|
20108
20148
|
];
|
|
@@ -20815,5 +20855,7 @@ exports.DtsMetadataReader = DtsMetadataReader;
|
|
|
20815
20855
|
exports.NgtscProgram = NgtscProgram;
|
|
20816
20856
|
exports.PartialEvaluator = PartialEvaluator;
|
|
20817
20857
|
exports.UNKNOWN_ERROR_CODE = UNKNOWN_ERROR_CODE;
|
|
20858
|
+
exports.extractDecoratorQueryMetadata = extractDecoratorQueryMetadata;
|
|
20818
20859
|
exports.extractTemplate = extractTemplate;
|
|
20819
20860
|
exports.parseDecoratorInputTransformFunction = parseDecoratorInputTransformFunction;
|
|
20861
|
+
exports.queryDecoratorNames = queryDecoratorNames;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
/**
|
|
3
|
-
* @license Angular v19.0.0-next.
|
|
3
|
+
* @license Angular v19.0.0-next.8
|
|
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-
|
|
15
|
-
var project_tsconfig_paths = require('./project_tsconfig_paths-
|
|
14
|
+
var compiler_host = require('./compiler_host-9a4d0c2b.js');
|
|
15
|
+
var project_tsconfig_paths = require('./project_tsconfig_paths-e9ccccbf.js');
|
|
16
16
|
var ts = require('typescript');
|
|
17
|
-
require('./checker-
|
|
17
|
+
require('./checker-e68dd7ce.js');
|
|
18
18
|
require('os');
|
|
19
19
|
require('module');
|
|
20
20
|
require('url');
|