@angular/core 20.2.0-rc.0 → 20.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/api.d.d.ts +1 -1
- package/chrome_dev_tools_performance.d.d.ts +1 -1
- package/discovery.d.d.ts +2 -8
- package/event_dispatcher.d.d.ts +1 -1
- package/fesm2022/attribute.mjs +1 -1
- package/fesm2022/attribute.mjs.map +1 -1
- package/fesm2022/core.mjs +9 -12
- package/fesm2022/core.mjs.map +1 -1
- package/fesm2022/debug_node.mjs +144 -93
- package/fesm2022/debug_node.mjs.map +1 -1
- package/fesm2022/not_found.mjs +1 -1
- package/fesm2022/not_found.mjs.map +1 -1
- package/fesm2022/primitives/di.mjs +1 -1
- package/fesm2022/primitives/di.mjs.map +1 -1
- package/fesm2022/primitives/event-dispatch.mjs +1 -1
- package/fesm2022/primitives/event-dispatch.mjs.map +1 -1
- package/fesm2022/primitives/signals.mjs +1 -1
- package/fesm2022/primitives/signals.mjs.map +1 -1
- package/fesm2022/resource.mjs +2 -11
- package/fesm2022/resource.mjs.map +1 -1
- package/fesm2022/root_effect_scheduler.mjs +1 -1
- package/fesm2022/root_effect_scheduler.mjs.map +1 -1
- package/fesm2022/rxjs-interop.mjs +1 -1
- package/fesm2022/rxjs-interop.mjs.map +1 -1
- package/fesm2022/signal.mjs +1 -1
- package/fesm2022/signal.mjs.map +1 -1
- package/fesm2022/testing.mjs +1 -1
- package/fesm2022/testing.mjs.map +1 -1
- package/fesm2022/untracked.mjs +1 -1
- package/fesm2022/untracked.mjs.map +1 -1
- package/fesm2022/weak_ref.mjs +1 -1
- package/fesm2022/weak_ref.mjs.map +1 -1
- package/graph.d.d.ts +1 -1
- package/index.d.ts +7 -15
- package/package.json +2 -2
- package/primitives/di/index.d.ts +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/{apply_import_manager-BDpMzDvN.cjs → apply_import_manager-Ch1hTvRS.cjs} +3 -3
- package/schematics/bundles/cleanup-unused-imports.cjs +5 -5
- package/schematics/bundles/{compiler_host-GNtX_RDe.cjs → compiler_host-CqB0JPzD.cjs} +2 -2
- package/schematics/bundles/control-flow-migration.cjs +3 -3
- package/schematics/bundles/document-core.cjs +5 -5
- package/schematics/bundles/imports-CIX-JgAN.cjs +1 -1
- package/schematics/bundles/{index-czXpbmcu.cjs → index-COhCBz0q.cjs} +4 -4
- package/schematics/bundles/{index-BrQFpkJq.cjs → index-DwItZ4Tw.cjs} +20 -21
- package/schematics/bundles/inject-flags.cjs +5 -5
- package/schematics/bundles/inject-migration.cjs +3 -3
- package/schematics/bundles/leading_space-D9nQ8UQC.cjs +1 -1
- package/schematics/bundles/{migrate_ts_type_references-DLVVfu8Y.cjs → migrate_ts_type_references-BMhLua30.cjs} +5 -5
- package/schematics/bundles/ng_decorators-B5HCqr20.cjs +1 -1
- package/schematics/bundles/nodes-B16H9JUd.cjs +1 -1
- package/schematics/bundles/output-migration.cjs +6 -6
- package/schematics/bundles/{project_paths-pSh0WpBI.cjs → project_paths-OWnyHise.cjs} +3 -3
- package/schematics/bundles/{project_tsconfig_paths-Cy7U7awR.cjs → project_tsconfig_paths-BIeidc3E.cjs} +168 -22
- package/schematics/bundles/property_name-BBwFuqMe.cjs +1 -1
- package/schematics/bundles/route-lazy-loading.cjs +3 -3
- package/schematics/bundles/router-current-navigation.cjs +4 -4
- package/schematics/bundles/self-closing-tags-migration.cjs +4 -4
- package/schematics/bundles/signal-input-migration.cjs +7 -7
- package/schematics/bundles/signal-queries-migration.cjs +7 -7
- package/schematics/bundles/signals.cjs +7 -7
- package/schematics/bundles/standalone-migration.cjs +4 -4
- package/schematics/bundles/symbol-VPWguRxr.cjs +1 -1
- package/schematics/bundles/test-bed-get.cjs +4 -4
- package/signal.d.d.ts +1 -1
- package/testing/index.d.ts +2 -2
- package/weak_ref.d.d.ts +1 -1
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
/**
|
|
3
|
-
* @license Angular v20.2.0
|
|
3
|
+
* @license Angular v20.2.0
|
|
4
4
|
* (c) 2010-2025 Google LLC. https://angular.io/
|
|
5
5
|
* License: MIT
|
|
6
6
|
*/
|
|
7
7
|
'use strict';
|
|
8
8
|
|
|
9
|
-
var project_tsconfig_paths = require('./project_tsconfig_paths-
|
|
9
|
+
var project_tsconfig_paths = require('./project_tsconfig_paths-BIeidc3E.cjs');
|
|
10
10
|
var ts = require('typescript');
|
|
11
11
|
require('os');
|
|
12
12
|
var assert = require('assert');
|
|
13
|
-
var index = require('./index-
|
|
14
|
-
var project_paths = require('./project_paths-
|
|
13
|
+
var index = require('./index-COhCBz0q.cjs');
|
|
14
|
+
var project_paths = require('./project_paths-OWnyHise.cjs');
|
|
15
15
|
var leading_space = require('./leading_space-D9nQ8UQC.cjs');
|
|
16
|
-
require('./index-
|
|
16
|
+
require('./index-DwItZ4Tw.cjs');
|
|
17
17
|
require('path');
|
|
18
18
|
require('node:path');
|
|
19
19
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
/**
|
|
3
|
-
* @license Angular v20.2.0
|
|
3
|
+
* @license Angular v20.2.0
|
|
4
4
|
* (c) 2010-2025 Google LLC. https://angular.io/
|
|
5
5
|
* License: MIT
|
|
6
6
|
*/
|
|
@@ -8,13 +8,13 @@
|
|
|
8
8
|
|
|
9
9
|
var ts = require('typescript');
|
|
10
10
|
require('os');
|
|
11
|
-
var project_tsconfig_paths = require('./project_tsconfig_paths-
|
|
12
|
-
var index$1 = require('./index-
|
|
11
|
+
var project_tsconfig_paths = require('./project_tsconfig_paths-BIeidc3E.cjs');
|
|
12
|
+
var index$1 = require('./index-DwItZ4Tw.cjs');
|
|
13
13
|
require('path');
|
|
14
14
|
require('node:path');
|
|
15
|
-
var project_paths = require('./project_paths-
|
|
16
|
-
var apply_import_manager = require('./apply_import_manager-
|
|
17
|
-
var index = require('./index-
|
|
15
|
+
var project_paths = require('./project_paths-OWnyHise.cjs');
|
|
16
|
+
var apply_import_manager = require('./apply_import_manager-Ch1hTvRS.cjs');
|
|
17
|
+
var index = require('./index-COhCBz0q.cjs');
|
|
18
18
|
require('@angular-devkit/core');
|
|
19
19
|
require('node:path/posix');
|
|
20
20
|
require('fs');
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
/**
|
|
3
|
-
* @license Angular v20.2.0
|
|
3
|
+
* @license Angular v20.2.0
|
|
4
4
|
* (c) 2010-2025 Google LLC. https://angular.io/
|
|
5
5
|
* License: MIT
|
|
6
6
|
*/
|
|
7
7
|
'use strict';
|
|
8
8
|
|
|
9
|
-
var index = require('./index-
|
|
9
|
+
var index = require('./index-DwItZ4Tw.cjs');
|
|
10
10
|
var schematics = require('@angular-devkit/schematics');
|
|
11
11
|
var core = require('@angular-devkit/core');
|
|
12
12
|
var posixPath = require('node:path/posix');
|
|
13
13
|
var os = require('os');
|
|
14
14
|
var ts = require('typescript');
|
|
15
|
-
var project_tsconfig_paths = require('./project_tsconfig_paths-
|
|
15
|
+
var project_tsconfig_paths = require('./project_tsconfig_paths-BIeidc3E.cjs');
|
|
16
16
|
require('path');
|
|
17
17
|
var path = require('node:path');
|
|
18
18
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
/**
|
|
3
|
-
* @license Angular v20.2.0
|
|
3
|
+
* @license Angular v20.2.0
|
|
4
4
|
* (c) 2010-2025 Google LLC. https://angular.io/
|
|
5
5
|
* License: MIT
|
|
6
6
|
*/
|
|
@@ -452,7 +452,6 @@ exports.ViewEncapsulation = void 0;
|
|
|
452
452
|
// Historically the 1 value was for `Native` encapsulation which has been removed as of v11.
|
|
453
453
|
ViewEncapsulation[ViewEncapsulation["None"] = 2] = "None";
|
|
454
454
|
ViewEncapsulation[ViewEncapsulation["ShadowDom"] = 3] = "ShadowDom";
|
|
455
|
-
ViewEncapsulation[ViewEncapsulation["IsolatedShadowDom"] = 4] = "IsolatedShadowDom";
|
|
456
455
|
})(exports.ViewEncapsulation || (exports.ViewEncapsulation = {}));
|
|
457
456
|
exports.ChangeDetectionStrategy = void 0;
|
|
458
457
|
(function (ChangeDetectionStrategy) {
|
|
@@ -546,7 +545,6 @@ var ViewEncapsulation;
|
|
|
546
545
|
// Historically the 1 value was for `Native` encapsulation which has been removed as of v11.
|
|
547
546
|
ViewEncapsulation[ViewEncapsulation["None"] = 2] = "None";
|
|
548
547
|
ViewEncapsulation[ViewEncapsulation["ShadowDom"] = 3] = "ShadowDom";
|
|
549
|
-
ViewEncapsulation[ViewEncapsulation["IsolatedShadowDom"] = 4] = "IsolatedShadowDom";
|
|
550
548
|
})(ViewEncapsulation || (ViewEncapsulation = {}));
|
|
551
549
|
|
|
552
550
|
/**
|
|
@@ -23110,6 +23108,11 @@ function propagateI18nBlocksToTemplates(unit, subTemplateIndex) {
|
|
|
23110
23108
|
subTemplateIndex = propagateI18nBlocksForView(unit.job.views.get(op.emptyView), i18nBlock, op.emptyI18nPlaceholder, subTemplateIndex);
|
|
23111
23109
|
}
|
|
23112
23110
|
break;
|
|
23111
|
+
case OpKind.Projection:
|
|
23112
|
+
if (op.fallbackView !== null) {
|
|
23113
|
+
subTemplateIndex = propagateI18nBlocksForView(unit.job.views.get(op.fallbackView), i18nBlock, op.fallbackViewI18nPlaceholder, subTemplateIndex);
|
|
23114
|
+
}
|
|
23115
|
+
break;
|
|
23113
23116
|
}
|
|
23114
23117
|
}
|
|
23115
23118
|
return subTemplateIndex;
|
|
@@ -24693,6 +24696,21 @@ function resolvePlaceholdersForView(job, unit, i18nContexts, elements, pendingSt
|
|
|
24693
24696
|
// Clear out the pending structural directive now that its been accounted for.
|
|
24694
24697
|
pendingStructuralDirective = undefined;
|
|
24695
24698
|
}
|
|
24699
|
+
if (op.fallbackView !== null) {
|
|
24700
|
+
const view = job.views.get(op.fallbackView);
|
|
24701
|
+
if (op.fallbackViewI18nPlaceholder === undefined) {
|
|
24702
|
+
resolvePlaceholdersForView(job, view, i18nContexts, elements);
|
|
24703
|
+
}
|
|
24704
|
+
else {
|
|
24705
|
+
if (currentOps === null) {
|
|
24706
|
+
throw Error('i18n tag placeholder should only occur inside an i18n block');
|
|
24707
|
+
}
|
|
24708
|
+
recordTemplateStart(job, view, op.handle.slot, op.fallbackViewI18nPlaceholder, currentOps.i18nContext, currentOps.i18nBlock, pendingStructuralDirective);
|
|
24709
|
+
resolvePlaceholdersForView(job, view, i18nContexts, elements);
|
|
24710
|
+
recordTemplateClose(job, view, op.handle.slot, op.fallbackViewI18nPlaceholder, currentOps.i18nContext, currentOps.i18nBlock, pendingStructuralDirective);
|
|
24711
|
+
pendingStructuralDirective = undefined;
|
|
24712
|
+
}
|
|
24713
|
+
}
|
|
24696
24714
|
break;
|
|
24697
24715
|
case OpKind.ConditionalCreate:
|
|
24698
24716
|
case OpKind.ConditionalBranchCreate:
|
|
@@ -26542,10 +26560,16 @@ function ingestHostAttribute(job, name, value, securityContexts) {
|
|
|
26542
26560
|
job.root.update.push(attrBinding);
|
|
26543
26561
|
}
|
|
26544
26562
|
function ingestHostEvent(job, event) {
|
|
26545
|
-
|
|
26546
|
-
|
|
26547
|
-
:
|
|
26548
|
-
|
|
26563
|
+
let eventBinding;
|
|
26564
|
+
if (event.type === exports.ParsedEventType.Animation) {
|
|
26565
|
+
eventBinding = createAnimationListenerOp(job.root.xref, new SlotHandle(), event.name, null, makeListenerHandlerOps(job.root, event.handler, event.handlerSpan), event.name.endsWith('enter') ? "enter" /* ir.AnimationKind.ENTER */ : "leave" /* ir.AnimationKind.LEAVE */, event.targetOrPhase, true, event.sourceSpan);
|
|
26566
|
+
}
|
|
26567
|
+
else {
|
|
26568
|
+
const [phase, target] = event.type !== exports.ParsedEventType.LegacyAnimation
|
|
26569
|
+
? [null, event.targetOrPhase]
|
|
26570
|
+
: [event.targetOrPhase, null];
|
|
26571
|
+
eventBinding = createListenerOp(job.root.xref, new SlotHandle(), event.name, null, makeListenerHandlerOps(job.root, event.handler, event.handlerSpan), phase, target, true, event.sourceSpan);
|
|
26572
|
+
}
|
|
26549
26573
|
job.root.create.push(eventBinding);
|
|
26550
26574
|
}
|
|
26551
26575
|
/**
|
|
@@ -29600,11 +29624,11 @@ class HtmlAstToIvyAst {
|
|
|
29600
29624
|
const templateKey = normalizedName.substring(TEMPLATE_ATTR_PREFIX.length);
|
|
29601
29625
|
const parsedVariables = [];
|
|
29602
29626
|
const absoluteValueOffset = attribute.valueSpan
|
|
29603
|
-
? attribute.valueSpan.
|
|
29627
|
+
? attribute.valueSpan.fullStart.offset
|
|
29604
29628
|
: // If there is no value span the attribute does not have a value, like `attr` in
|
|
29605
29629
|
//`<div attr></div>`. In this case, point to one character beyond the last character of
|
|
29606
29630
|
// the attribute name.
|
|
29607
|
-
attribute.sourceSpan.
|
|
29631
|
+
attribute.sourceSpan.fullStart.offset + attribute.name.length;
|
|
29608
29632
|
this.bindingParser.parseInlineTemplateBinding(templateKey, templateValue, attribute.sourceSpan, absoluteValueOffset, [], templateParsedProperties, parsedVariables, true /* isIvyAst */);
|
|
29609
29633
|
templateVariables.push(...parsedVariables.map((v) => new Variable(v.name, v.value, v.sourceSpan, v.keySpan, v.valueSpan)));
|
|
29610
29634
|
}
|
|
@@ -29634,8 +29658,8 @@ class HtmlAstToIvyAst {
|
|
|
29634
29658
|
const value = attribute.value;
|
|
29635
29659
|
const srcSpan = attribute.sourceSpan;
|
|
29636
29660
|
const absoluteOffset = attribute.valueSpan
|
|
29637
|
-
? attribute.valueSpan.
|
|
29638
|
-
: srcSpan.
|
|
29661
|
+
? attribute.valueSpan.fullStart.offset
|
|
29662
|
+
: srcSpan.fullStart.offset;
|
|
29639
29663
|
function createKeySpan(srcSpan, prefix, identifier) {
|
|
29640
29664
|
// We need to adjust the start location for the keySpan to account for the removed 'data-'
|
|
29641
29665
|
// prefix from `normalizeAttributeName`.
|
|
@@ -32791,7 +32815,7 @@ function isAttrNode(ast) {
|
|
|
32791
32815
|
* @description
|
|
32792
32816
|
* Entry point for all public APIs of the compiler package.
|
|
32793
32817
|
*/
|
|
32794
|
-
new Version('20.2.0
|
|
32818
|
+
new Version('20.2.0');
|
|
32795
32819
|
|
|
32796
32820
|
//////////////////////////////////////
|
|
32797
32821
|
// THIS FILE HAS GLOBAL SIDE EFFECT //
|
|
@@ -33826,7 +33850,7 @@ class NodeJSPathManipulation {
|
|
|
33826
33850
|
// G3-ESM-MARKER: G3 uses CommonJS, but externally everything in ESM.
|
|
33827
33851
|
// CommonJS/ESM interop for determining the current file name and containing dir.
|
|
33828
33852
|
const isCommonJS = typeof __filename !== 'undefined';
|
|
33829
|
-
const currentFileUrl = isCommonJS ? null : (typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('project_tsconfig_paths-
|
|
33853
|
+
const currentFileUrl = isCommonJS ? null : (typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('project_tsconfig_paths-BIeidc3E.cjs', document.baseURI).href));
|
|
33830
33854
|
// Note, when this code loads in the browser, `url` may be an empty `{}` due to the Closure shims.
|
|
33831
33855
|
const currentFileName = isCommonJS
|
|
33832
33856
|
? __filename
|
|
@@ -41168,6 +41192,46 @@ function isDirectiveDeclaration(node) {
|
|
|
41168
41192
|
ts.isVariableDeclaration(node.parent) &&
|
|
41169
41193
|
hasExpressionIdentifier(sourceFile, node, ExpressionIdentifier.DIRECTIVE));
|
|
41170
41194
|
}
|
|
41195
|
+
/**
|
|
41196
|
+
* Check if the lastSymbol is an alias of the firstSymbol. For example:
|
|
41197
|
+
*
|
|
41198
|
+
* The NewBarComponent is an alias of BarComponent.
|
|
41199
|
+
*
|
|
41200
|
+
* But the NotAliasBarComponent is not an alias of BarComponent, because
|
|
41201
|
+
* the NotAliasBarComponent is a new variable.
|
|
41202
|
+
*
|
|
41203
|
+
* This should work for most cases.
|
|
41204
|
+
*
|
|
41205
|
+
* https://github.com/microsoft/TypeScript/blob/9e20e032effad965567d4a1e1c30d5433b0a3332/src/compiler/checker.ts#L3638-L3652
|
|
41206
|
+
*
|
|
41207
|
+
* ```
|
|
41208
|
+
* // a.ts
|
|
41209
|
+
* export class BarComponent {};
|
|
41210
|
+
* // b.ts
|
|
41211
|
+
* export {BarComponent as NewBarComponent} from "./a";
|
|
41212
|
+
* // c.ts
|
|
41213
|
+
* import {BarComponent} from "./a"
|
|
41214
|
+
* const NotAliasBarComponent = BarComponent;
|
|
41215
|
+
* export {NotAliasBarComponent};
|
|
41216
|
+
* ```
|
|
41217
|
+
*/
|
|
41218
|
+
function isSymbolAliasOf(firstSymbol, lastSymbol, typeChecker) {
|
|
41219
|
+
let currentSymbol = lastSymbol;
|
|
41220
|
+
const seenSymbol = new Set();
|
|
41221
|
+
while (firstSymbol !== currentSymbol &&
|
|
41222
|
+
currentSymbol !== undefined &&
|
|
41223
|
+
currentSymbol.flags & ts.SymbolFlags.Alias) {
|
|
41224
|
+
if (seenSymbol.has(currentSymbol)) {
|
|
41225
|
+
break;
|
|
41226
|
+
}
|
|
41227
|
+
seenSymbol.add(currentSymbol);
|
|
41228
|
+
currentSymbol = typeChecker.getImmediateAliasedSymbol(currentSymbol);
|
|
41229
|
+
if (currentSymbol === firstSymbol) {
|
|
41230
|
+
return true;
|
|
41231
|
+
}
|
|
41232
|
+
}
|
|
41233
|
+
return false;
|
|
41234
|
+
}
|
|
41171
41235
|
|
|
41172
41236
|
const NgOriginalFile = Symbol('NgOriginalFile');
|
|
41173
41237
|
exports.UpdateMode = void 0;
|
|
@@ -50040,11 +50104,11 @@ class TemplateTypeCheckerImpl {
|
|
|
50040
50104
|
}
|
|
50041
50105
|
for (const directiveDecl of directiveDecls) {
|
|
50042
50106
|
const cachedCompletionEntryInfos = resultingDirectives.get(directiveDecl.ref.node)?.tsCompletionEntryInfos ?? [];
|
|
50043
|
-
cachedCompletionEntryInfos
|
|
50107
|
+
appendOrReplaceTsEntryInfo(cachedCompletionEntryInfos, {
|
|
50044
50108
|
tsCompletionEntryData: data,
|
|
50045
50109
|
tsCompletionEntrySymbolFileName: symbolFileName,
|
|
50046
50110
|
tsCompletionEntrySymbolName: symbolName,
|
|
50047
|
-
});
|
|
50111
|
+
}, this.programDriver.getProgram());
|
|
50048
50112
|
if (resultingDirectives.has(directiveDecl.ref.node)) {
|
|
50049
50113
|
const directiveInfo = resultingDirectives.get(directiveDecl.ref.node);
|
|
50050
50114
|
resultingDirectives.set(directiveDecl.ref.node, {
|
|
@@ -50218,29 +50282,30 @@ class TemplateTypeCheckerImpl {
|
|
|
50218
50282
|
* When providing the code action for the directive. All the imports will show for the developer to choose.
|
|
50219
50283
|
*/
|
|
50220
50284
|
let highestImportPriority = -1;
|
|
50221
|
-
const collectImports = (emit,
|
|
50285
|
+
const collectImports = (emit, moduleSpecifierDetail) => {
|
|
50222
50286
|
if (emit === null) {
|
|
50223
50287
|
return;
|
|
50224
50288
|
}
|
|
50225
50289
|
imports.push({
|
|
50226
50290
|
...emit,
|
|
50227
|
-
moduleSpecifier: moduleSpecifier ?? emit.moduleSpecifier,
|
|
50291
|
+
moduleSpecifier: moduleSpecifierDetail?.moduleSpecifier ?? emit.moduleSpecifier,
|
|
50292
|
+
symbolName: moduleSpecifierDetail?.exportName ?? emit.symbolName,
|
|
50228
50293
|
});
|
|
50229
|
-
if (
|
|
50294
|
+
if (moduleSpecifierDetail !== null && highestImportPriority === -1) {
|
|
50230
50295
|
highestImportPriority = imports.length - 1;
|
|
50231
50296
|
}
|
|
50232
50297
|
};
|
|
50233
50298
|
if (meta.isStandalone || importMode === exports.PotentialImportMode.ForceDirect) {
|
|
50234
50299
|
const emitted = this.emit(exports.PotentialImportKind.Standalone, toImport, inContext);
|
|
50235
|
-
const
|
|
50236
|
-
collectImports(emitted,
|
|
50300
|
+
const moduleSpecifierDetail = potentialDirectiveModuleSpecifierResolver?.resolve(toImport, inContext) ?? null;
|
|
50301
|
+
collectImports(emitted, moduleSpecifierDetail);
|
|
50237
50302
|
}
|
|
50238
50303
|
const exportingNgModules = this.ngModuleIndex.getNgModulesExporting(meta.ref.node);
|
|
50239
50304
|
if (exportingNgModules !== null) {
|
|
50240
50305
|
for (const exporter of exportingNgModules) {
|
|
50241
50306
|
const emittedRef = this.emit(exports.PotentialImportKind.NgModule, exporter, inContext);
|
|
50242
|
-
const
|
|
50243
|
-
collectImports(emittedRef,
|
|
50307
|
+
const moduleSpecifierDetail = potentialDirectiveModuleSpecifierResolver?.resolve(exporter, inContext) ?? null;
|
|
50308
|
+
collectImports(emittedRef, moduleSpecifierDetail);
|
|
50244
50309
|
}
|
|
50245
50310
|
}
|
|
50246
50311
|
// move the import with module specifier from the tsLs to top in the imports array
|
|
@@ -50576,6 +50641,87 @@ function getTheElementTagDeprecatedSuggestionDiagnostics(shimPath, program, file
|
|
|
50576
50641
|
function isDeprecatedDiagnostics(diag) {
|
|
50577
50642
|
return diag.reportsDeprecated !== undefined;
|
|
50578
50643
|
}
|
|
50644
|
+
/**
|
|
50645
|
+
* Append the ts completion entry into the array only when the new entry's directive
|
|
50646
|
+
* doesn't exist in the array.
|
|
50647
|
+
*
|
|
50648
|
+
* If the new entry's directive already exists, and the entry's symbol is the alias of
|
|
50649
|
+
* the existing entry, the new entry will replace the existing entry.
|
|
50650
|
+
*
|
|
50651
|
+
*/
|
|
50652
|
+
function appendOrReplaceTsEntryInfo(tsEntryInfos, newTsEntryInfo, program) {
|
|
50653
|
+
const typeChecker = program.getTypeChecker();
|
|
50654
|
+
const newTsEntryInfoSymbol = getSymbolFromTsEntryInfo(newTsEntryInfo, program);
|
|
50655
|
+
if (newTsEntryInfoSymbol === null) {
|
|
50656
|
+
return;
|
|
50657
|
+
}
|
|
50658
|
+
// Find the index of the first entry that has a matching type.
|
|
50659
|
+
const matchedEntryIndex = tsEntryInfos.findIndex((currentTsEntryInfo) => {
|
|
50660
|
+
const currentTsEntrySymbol = getSymbolFromTsEntryInfo(currentTsEntryInfo, program);
|
|
50661
|
+
if (currentTsEntrySymbol === null) {
|
|
50662
|
+
return false;
|
|
50663
|
+
}
|
|
50664
|
+
return isSymbolTypeMatch(currentTsEntrySymbol, newTsEntryInfoSymbol, typeChecker);
|
|
50665
|
+
});
|
|
50666
|
+
if (matchedEntryIndex === -1) {
|
|
50667
|
+
// No entry with a matching type was found, so append the new entry.
|
|
50668
|
+
tsEntryInfos.push(newTsEntryInfo);
|
|
50669
|
+
return;
|
|
50670
|
+
}
|
|
50671
|
+
// An entry with a matching type was found at matchedEntryIndex.
|
|
50672
|
+
const matchedEntry = tsEntryInfos[matchedEntryIndex];
|
|
50673
|
+
const matchedEntrySymbol = getSymbolFromTsEntryInfo(matchedEntry, program);
|
|
50674
|
+
if (matchedEntrySymbol === null) {
|
|
50675
|
+
// Should not happen based on the findIndex condition, but check defensively.
|
|
50676
|
+
return;
|
|
50677
|
+
}
|
|
50678
|
+
// Check if the `matchedEntrySymbol` is an alias of the `newTsEntryInfoSymbol`.
|
|
50679
|
+
if (isSymbolAliasOf(matchedEntrySymbol, newTsEntryInfoSymbol, typeChecker)) {
|
|
50680
|
+
// The first type-matching entry is an alias, so replace it.
|
|
50681
|
+
tsEntryInfos[matchedEntryIndex] = newTsEntryInfo;
|
|
50682
|
+
return;
|
|
50683
|
+
}
|
|
50684
|
+
// The new entry's symbol is an alias of the existing entry's symbol.
|
|
50685
|
+
// In this case, we prefer to keep the existing entry that was found first
|
|
50686
|
+
// and do not replace it.
|
|
50687
|
+
return;
|
|
50688
|
+
}
|
|
50689
|
+
function getSymbolFromTsEntryInfo(tsInfo, program) {
|
|
50690
|
+
const typeChecker = program.getTypeChecker();
|
|
50691
|
+
const sf = program.getSourceFile(tsInfo.tsCompletionEntrySymbolFileName);
|
|
50692
|
+
if (sf === undefined) {
|
|
50693
|
+
return null;
|
|
50694
|
+
}
|
|
50695
|
+
const sfSymbol = typeChecker.getSymbolAtLocation(sf);
|
|
50696
|
+
if (sfSymbol === undefined) {
|
|
50697
|
+
return null;
|
|
50698
|
+
}
|
|
50699
|
+
return (typeChecker.tryGetMemberInModuleExports(tsInfo.tsCompletionEntrySymbolName, sfSymbol) ?? null);
|
|
50700
|
+
}
|
|
50701
|
+
function getFirstTypeDeclarationOfSymbol(symbol, typeChecker) {
|
|
50702
|
+
const type = typeChecker.getTypeOfSymbol(symbol);
|
|
50703
|
+
return type.getSymbol()?.declarations?.[0];
|
|
50704
|
+
}
|
|
50705
|
+
/**
|
|
50706
|
+
* Check if the two symbols come from the same type node. For example:
|
|
50707
|
+
*
|
|
50708
|
+
* The `NewBarComponent`'s type node is the `BarComponent`.
|
|
50709
|
+
*
|
|
50710
|
+
* ```
|
|
50711
|
+
* // a.ts
|
|
50712
|
+
* export class BarComponent
|
|
50713
|
+
*
|
|
50714
|
+
* // b.ts
|
|
50715
|
+
* import {BarComponent} from "./a"
|
|
50716
|
+
* const NewBarComponent = BarComponent;
|
|
50717
|
+
* export {NewBarComponent}
|
|
50718
|
+
* ```
|
|
50719
|
+
*/
|
|
50720
|
+
function isSymbolTypeMatch(first, last, typeChecker) {
|
|
50721
|
+
const firstTypeNode = getFirstTypeDeclarationOfSymbol(first, typeChecker);
|
|
50722
|
+
const lastTypeNode = getFirstTypeDeclarationOfSymbol(last, typeChecker);
|
|
50723
|
+
return firstTypeNode === lastTypeNode && firstTypeNode !== undefined;
|
|
50724
|
+
}
|
|
50579
50725
|
|
|
50580
50726
|
/**
|
|
50581
50727
|
* Gets all tsconfig paths from a CLI project by reading the workspace configuration
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
/**
|
|
3
|
-
* @license Angular v20.2.0
|
|
3
|
+
* @license Angular v20.2.0
|
|
4
4
|
* (c) 2010-2025 Google LLC. https://angular.io/
|
|
5
5
|
* License: MIT
|
|
6
6
|
*/
|
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
var schematics = require('@angular-devkit/schematics');
|
|
10
10
|
var fs = require('fs');
|
|
11
11
|
var p = require('path');
|
|
12
|
-
var compiler_host = require('./compiler_host-
|
|
13
|
-
var project_tsconfig_paths = require('./project_tsconfig_paths-
|
|
12
|
+
var compiler_host = require('./compiler_host-CqB0JPzD.cjs');
|
|
13
|
+
var project_tsconfig_paths = require('./project_tsconfig_paths-BIeidc3E.cjs');
|
|
14
14
|
var ts = require('typescript');
|
|
15
15
|
var property_name = require('./property_name-BBwFuqMe.cjs');
|
|
16
16
|
require('os');
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
/**
|
|
3
|
-
* @license Angular v20.2.0
|
|
3
|
+
* @license Angular v20.2.0
|
|
4
4
|
* (c) 2010-2025 Google LLC. https://angular.io/
|
|
5
5
|
* License: MIT
|
|
6
6
|
*/
|
|
@@ -8,11 +8,11 @@
|
|
|
8
8
|
|
|
9
9
|
var ts = require('typescript');
|
|
10
10
|
require('os');
|
|
11
|
-
require('./project_tsconfig_paths-
|
|
12
|
-
require('./index-
|
|
11
|
+
require('./project_tsconfig_paths-BIeidc3E.cjs');
|
|
12
|
+
require('./index-DwItZ4Tw.cjs');
|
|
13
13
|
require('path');
|
|
14
14
|
require('node:path');
|
|
15
|
-
var project_paths = require('./project_paths-
|
|
15
|
+
var project_paths = require('./project_paths-OWnyHise.cjs');
|
|
16
16
|
var imports = require('./imports-CIX-JgAN.cjs');
|
|
17
17
|
var symbol = require('./symbol-VPWguRxr.cjs');
|
|
18
18
|
require('@angular-devkit/core');
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
/**
|
|
3
|
-
* @license Angular v20.2.0
|
|
3
|
+
* @license Angular v20.2.0
|
|
4
4
|
* (c) 2010-2025 Google LLC. https://angular.io/
|
|
5
5
|
* License: MIT
|
|
6
6
|
*/
|
|
@@ -8,11 +8,11 @@
|
|
|
8
8
|
|
|
9
9
|
var ts = require('typescript');
|
|
10
10
|
require('os');
|
|
11
|
-
var project_tsconfig_paths = require('./project_tsconfig_paths-
|
|
12
|
-
require('./index-
|
|
11
|
+
var project_tsconfig_paths = require('./project_tsconfig_paths-BIeidc3E.cjs');
|
|
12
|
+
require('./index-DwItZ4Tw.cjs');
|
|
13
13
|
require('path');
|
|
14
14
|
require('node:path');
|
|
15
|
-
var project_paths = require('./project_paths-
|
|
15
|
+
var project_paths = require('./project_paths-OWnyHise.cjs');
|
|
16
16
|
var ng_decorators = require('./ng_decorators-B5HCqr20.cjs');
|
|
17
17
|
var property_name = require('./property_name-BBwFuqMe.cjs');
|
|
18
18
|
require('@angular-devkit/core');
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
/**
|
|
3
|
-
* @license Angular v20.2.0
|
|
3
|
+
* @license Angular v20.2.0
|
|
4
4
|
* (c) 2010-2025 Google LLC. https://angular.io/
|
|
5
5
|
* License: MIT
|
|
6
6
|
*/
|
|
7
7
|
'use strict';
|
|
8
8
|
|
|
9
|
-
var migrate_ts_type_references = require('./migrate_ts_type_references-
|
|
9
|
+
var migrate_ts_type_references = require('./migrate_ts_type_references-BMhLua30.cjs');
|
|
10
10
|
var ts = require('typescript');
|
|
11
11
|
require('os');
|
|
12
|
-
var project_tsconfig_paths = require('./project_tsconfig_paths-
|
|
13
|
-
var index$1 = require('./index-
|
|
12
|
+
var project_tsconfig_paths = require('./project_tsconfig_paths-BIeidc3E.cjs');
|
|
13
|
+
var index$1 = require('./index-DwItZ4Tw.cjs');
|
|
14
14
|
require('path');
|
|
15
15
|
require('node:path');
|
|
16
|
-
var project_paths = require('./project_paths-
|
|
17
|
-
var index = require('./index-
|
|
16
|
+
var project_paths = require('./project_paths-OWnyHise.cjs');
|
|
17
|
+
var index = require('./index-COhCBz0q.cjs');
|
|
18
18
|
var assert = require('assert');
|
|
19
|
-
var apply_import_manager = require('./apply_import_manager-
|
|
19
|
+
var apply_import_manager = require('./apply_import_manager-Ch1hTvRS.cjs');
|
|
20
20
|
require('@angular-devkit/core');
|
|
21
21
|
require('node:path/posix');
|
|
22
22
|
require('./leading_space-D9nQ8UQC.cjs');
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
/**
|
|
3
|
-
* @license Angular v20.2.0
|
|
3
|
+
* @license Angular v20.2.0
|
|
4
4
|
* (c) 2010-2025 Google LLC. https://angular.io/
|
|
5
5
|
* License: MIT
|
|
6
6
|
*/
|
|
7
7
|
'use strict';
|
|
8
8
|
|
|
9
|
-
var project_tsconfig_paths = require('./project_tsconfig_paths-
|
|
9
|
+
var project_tsconfig_paths = require('./project_tsconfig_paths-BIeidc3E.cjs');
|
|
10
10
|
var ts = require('typescript');
|
|
11
11
|
require('os');
|
|
12
|
-
var index$1 = require('./index-
|
|
12
|
+
var index$1 = require('./index-DwItZ4Tw.cjs');
|
|
13
13
|
require('path');
|
|
14
14
|
require('node:path');
|
|
15
|
-
var project_paths = require('./project_paths-
|
|
16
|
-
var apply_import_manager = require('./apply_import_manager-
|
|
17
|
-
var migrate_ts_type_references = require('./migrate_ts_type_references-
|
|
15
|
+
var project_paths = require('./project_paths-OWnyHise.cjs');
|
|
16
|
+
var apply_import_manager = require('./apply_import_manager-Ch1hTvRS.cjs');
|
|
17
|
+
var migrate_ts_type_references = require('./migrate_ts_type_references-BMhLua30.cjs');
|
|
18
18
|
var assert = require('assert');
|
|
19
|
-
var index = require('./index-
|
|
19
|
+
var index = require('./index-COhCBz0q.cjs');
|
|
20
20
|
require('@angular-devkit/core');
|
|
21
21
|
require('node:path/posix');
|
|
22
22
|
require('fs');
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
/**
|
|
3
|
-
* @license Angular v20.2.0
|
|
3
|
+
* @license Angular v20.2.0
|
|
4
4
|
* (c) 2010-2025 Google LLC. https://angular.io/
|
|
5
5
|
* License: MIT
|
|
6
6
|
*/
|
|
@@ -10,7 +10,7 @@ var schematics = require('@angular-devkit/schematics');
|
|
|
10
10
|
var signalQueriesMigration = require('./signal-queries-migration.cjs');
|
|
11
11
|
var signalInputMigration = require('./signal-input-migration.cjs');
|
|
12
12
|
var outputMigration = require('./output-migration.cjs');
|
|
13
|
-
require('./project_tsconfig_paths-
|
|
13
|
+
require('./project_tsconfig_paths-BIeidc3E.cjs');
|
|
14
14
|
require('typescript');
|
|
15
15
|
require('os');
|
|
16
16
|
require('fs');
|
|
@@ -18,14 +18,14 @@ require('module');
|
|
|
18
18
|
require('path');
|
|
19
19
|
require('url');
|
|
20
20
|
require('@angular-devkit/core');
|
|
21
|
-
require('./index-
|
|
21
|
+
require('./index-DwItZ4Tw.cjs');
|
|
22
22
|
require('node:path');
|
|
23
|
-
require('./project_paths-
|
|
23
|
+
require('./project_paths-OWnyHise.cjs');
|
|
24
24
|
require('node:path/posix');
|
|
25
|
-
require('./apply_import_manager-
|
|
26
|
-
require('./migrate_ts_type_references-
|
|
25
|
+
require('./apply_import_manager-Ch1hTvRS.cjs');
|
|
26
|
+
require('./migrate_ts_type_references-BMhLua30.cjs');
|
|
27
27
|
require('assert');
|
|
28
|
-
require('./index-
|
|
28
|
+
require('./index-COhCBz0q.cjs');
|
|
29
29
|
require('./leading_space-D9nQ8UQC.cjs');
|
|
30
30
|
|
|
31
31
|
function migrate(options) {
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
/**
|
|
3
|
-
* @license Angular v20.2.0
|
|
3
|
+
* @license Angular v20.2.0
|
|
4
4
|
* (c) 2010-2025 Google LLC. https://angular.io/
|
|
5
5
|
* License: MIT
|
|
6
6
|
*/
|
|
7
7
|
'use strict';
|
|
8
8
|
|
|
9
9
|
var schematics = require('@angular-devkit/schematics');
|
|
10
|
-
var index = require('./index-
|
|
10
|
+
var index = require('./index-DwItZ4Tw.cjs');
|
|
11
11
|
var fs = require('fs');
|
|
12
12
|
var p = require('path');
|
|
13
13
|
var ts = require('typescript');
|
|
14
|
-
var compiler_host = require('./compiler_host-
|
|
15
|
-
var project_tsconfig_paths = require('./project_tsconfig_paths-
|
|
14
|
+
var compiler_host = require('./compiler_host-CqB0JPzD.cjs');
|
|
15
|
+
var project_tsconfig_paths = require('./project_tsconfig_paths-BIeidc3E.cjs');
|
|
16
16
|
var ng_decorators = require('./ng_decorators-B5HCqr20.cjs');
|
|
17
17
|
var nodes = require('./nodes-B16H9JUd.cjs');
|
|
18
18
|
var symbol = require('./symbol-VPWguRxr.cjs');
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
/**
|
|
3
|
-
* @license Angular v20.2.0
|
|
3
|
+
* @license Angular v20.2.0
|
|
4
4
|
* (c) 2010-2025 Google LLC. https://angular.io/
|
|
5
5
|
* License: MIT
|
|
6
6
|
*/
|
|
@@ -8,11 +8,11 @@
|
|
|
8
8
|
|
|
9
9
|
var ts = require('typescript');
|
|
10
10
|
require('os');
|
|
11
|
-
require('./project_tsconfig_paths-
|
|
12
|
-
require('./index-
|
|
11
|
+
require('./project_tsconfig_paths-BIeidc3E.cjs');
|
|
12
|
+
require('./index-DwItZ4Tw.cjs');
|
|
13
13
|
require('path');
|
|
14
14
|
require('node:path');
|
|
15
|
-
var project_paths = require('./project_paths-
|
|
15
|
+
var project_paths = require('./project_paths-OWnyHise.cjs');
|
|
16
16
|
var imports = require('./imports-CIX-JgAN.cjs');
|
|
17
17
|
var symbol = require('./symbol-VPWguRxr.cjs');
|
|
18
18
|
require('@angular-devkit/core');
|
package/signal.d.d.ts
CHANGED
package/testing/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v20.2.0
|
|
2
|
+
* @license Angular v20.2.0
|
|
3
3
|
* (c) 2010-2025 Google LLC. https://angular.io/
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -348,7 +348,7 @@ interface TestModuleMetadata {
|
|
|
348
348
|
inferTagName?: boolean;
|
|
349
349
|
/**
|
|
350
350
|
* Whether animate.enter / animate.leave should trigger as normal or be disabled.
|
|
351
|
-
* Defaults to `
|
|
351
|
+
* Defaults to `false`.
|
|
352
352
|
*/
|
|
353
353
|
animationsEnabled?: boolean;
|
|
354
354
|
}
|