@angular/core 20.2.0-rc.1 → 20.2.1
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 +1 -1
- 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 +4 -4
- package/fesm2022/core.mjs.map +1 -1
- package/fesm2022/debug_node.mjs +142 -82
- 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 +1 -1
- 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 +5 -5
- 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-OJAv7nyR.cjs → apply_import_manager-BvwNQhfG.cjs} +3 -3
- package/schematics/bundles/cleanup-unused-imports.cjs +5 -5
- package/schematics/bundles/{compiler_host-GMENszSm.cjs → compiler_host-DbXQvYKt.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-CvCDOy8a.cjs → index-Bcv0dPD8.cjs} +15 -14
- package/schematics/bundles/{index-C0gVsyDQ.cjs → index-Bphk20D_.cjs} +4 -4
- 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-ByPRdLHL.cjs → migrate_ts_type_references-xcaijJqF.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-BfWTWKz0.cjs → project_paths-BaK5P5a5.cjs} +3 -3
- package/schematics/bundles/{project_tsconfig_paths-Bhn4jDr1.cjs → project_tsconfig_paths-COqholMT.cjs} +183 -18
- 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,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
/**
|
|
3
|
-
* @license Angular v20.2.
|
|
3
|
+
* @license Angular v20.2.1
|
|
4
4
|
* (c) 2010-2025 Google LLC. https://angular.io/
|
|
5
5
|
* License: MIT
|
|
6
6
|
*/
|
|
@@ -23108,6 +23108,11 @@ function propagateI18nBlocksToTemplates(unit, subTemplateIndex) {
|
|
|
23108
23108
|
subTemplateIndex = propagateI18nBlocksForView(unit.job.views.get(op.emptyView), i18nBlock, op.emptyI18nPlaceholder, subTemplateIndex);
|
|
23109
23109
|
}
|
|
23110
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;
|
|
23111
23116
|
}
|
|
23112
23117
|
}
|
|
23113
23118
|
return subTemplateIndex;
|
|
@@ -24691,6 +24696,21 @@ function resolvePlaceholdersForView(job, unit, i18nContexts, elements, pendingSt
|
|
|
24691
24696
|
// Clear out the pending structural directive now that its been accounted for.
|
|
24692
24697
|
pendingStructuralDirective = undefined;
|
|
24693
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
|
+
}
|
|
24694
24714
|
break;
|
|
24695
24715
|
case OpKind.ConditionalCreate:
|
|
24696
24716
|
case OpKind.ConditionalBranchCreate:
|
|
@@ -25347,8 +25367,13 @@ function hasPipe(root) {
|
|
|
25347
25367
|
*
|
|
25348
25368
|
* 1. Unary operators in the base of an exponentiation expression. For example, `-2 ** 3` is not
|
|
25349
25369
|
* valid JavaScript, but `(-2) ** 3` is.
|
|
25370
|
+
*
|
|
25350
25371
|
* 2. When mixing nullish coalescing (`??`) and logical and/or operators (`&&`, `||`), we need
|
|
25351
25372
|
* parentheses. For example, `a ?? b && c` is not valid JavaScript, but `a ?? (b && c)` is.
|
|
25373
|
+
* Note: Because of the outcome of https://github.com/microsoft/TypeScript/issues/62307
|
|
25374
|
+
* We need (for now) to keep parentheses around the `??` operator when it is used with and/or operators.
|
|
25375
|
+
* For example, `a ?? b && c` is not valid JavaScript, but `(a ?? b) && c` is.
|
|
25376
|
+
*
|
|
25352
25377
|
* 3. Ternary expression used as an operand for nullish coalescing. Typescript generates incorrect
|
|
25353
25378
|
* code if the parentheses are missing. For example when `(a ? b : c) ?? d` is translated to
|
|
25354
25379
|
* typescript AST, the parentheses node is removed, and then the remaining AST is printed, it
|
|
@@ -25371,6 +25396,11 @@ function stripNonrequiredParentheses(job) {
|
|
|
25371
25396
|
case BinaryOperator.NullishCoalesce:
|
|
25372
25397
|
checkNullishCoalescingParens(expr, requiredParens);
|
|
25373
25398
|
break;
|
|
25399
|
+
// these 2 cases can be dropped if the regression introduced in 5.9.2 is fixed
|
|
25400
|
+
// see https://github.com/microsoft/TypeScript/issues/62307
|
|
25401
|
+
case BinaryOperator.And:
|
|
25402
|
+
case BinaryOperator.Or:
|
|
25403
|
+
checkAndOrParens(expr, requiredParens);
|
|
25374
25404
|
}
|
|
25375
25405
|
}
|
|
25376
25406
|
});
|
|
@@ -25403,6 +25433,13 @@ function checkNullishCoalescingParens(expr, requiredParens) {
|
|
|
25403
25433
|
requiredParens.add(expr.rhs);
|
|
25404
25434
|
}
|
|
25405
25435
|
}
|
|
25436
|
+
function checkAndOrParens(expr, requiredParens) {
|
|
25437
|
+
if (expr.lhs instanceof ParenthesizedExpr &&
|
|
25438
|
+
expr.lhs.expr instanceof BinaryOperatorExpr &&
|
|
25439
|
+
expr.lhs.expr.operator === BinaryOperator.NullishCoalesce) {
|
|
25440
|
+
requiredParens.add(expr.lhs);
|
|
25441
|
+
}
|
|
25442
|
+
}
|
|
25406
25443
|
function isLogicalAndOr(expr) {
|
|
25407
25444
|
return (expr instanceof BinaryOperatorExpr &&
|
|
25408
25445
|
(expr.operator === BinaryOperator.And || expr.operator === BinaryOperator.Or));
|
|
@@ -26540,10 +26577,16 @@ function ingestHostAttribute(job, name, value, securityContexts) {
|
|
|
26540
26577
|
job.root.update.push(attrBinding);
|
|
26541
26578
|
}
|
|
26542
26579
|
function ingestHostEvent(job, event) {
|
|
26543
|
-
|
|
26544
|
-
|
|
26545
|
-
:
|
|
26546
|
-
|
|
26580
|
+
let eventBinding;
|
|
26581
|
+
if (event.type === exports.ParsedEventType.Animation) {
|
|
26582
|
+
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);
|
|
26583
|
+
}
|
|
26584
|
+
else {
|
|
26585
|
+
const [phase, target] = event.type !== exports.ParsedEventType.LegacyAnimation
|
|
26586
|
+
? [null, event.targetOrPhase]
|
|
26587
|
+
: [event.targetOrPhase, null];
|
|
26588
|
+
eventBinding = createListenerOp(job.root.xref, new SlotHandle(), event.name, null, makeListenerHandlerOps(job.root, event.handler, event.handlerSpan), phase, target, true, event.sourceSpan);
|
|
26589
|
+
}
|
|
26547
26590
|
job.root.create.push(eventBinding);
|
|
26548
26591
|
}
|
|
26549
26592
|
/**
|
|
@@ -29598,11 +29641,11 @@ class HtmlAstToIvyAst {
|
|
|
29598
29641
|
const templateKey = normalizedName.substring(TEMPLATE_ATTR_PREFIX.length);
|
|
29599
29642
|
const parsedVariables = [];
|
|
29600
29643
|
const absoluteValueOffset = attribute.valueSpan
|
|
29601
|
-
? attribute.valueSpan.
|
|
29644
|
+
? attribute.valueSpan.fullStart.offset
|
|
29602
29645
|
: // If there is no value span the attribute does not have a value, like `attr` in
|
|
29603
29646
|
//`<div attr></div>`. In this case, point to one character beyond the last character of
|
|
29604
29647
|
// the attribute name.
|
|
29605
|
-
attribute.sourceSpan.
|
|
29648
|
+
attribute.sourceSpan.fullStart.offset + attribute.name.length;
|
|
29606
29649
|
this.bindingParser.parseInlineTemplateBinding(templateKey, templateValue, attribute.sourceSpan, absoluteValueOffset, [], templateParsedProperties, parsedVariables, true /* isIvyAst */);
|
|
29607
29650
|
templateVariables.push(...parsedVariables.map((v) => new Variable(v.name, v.value, v.sourceSpan, v.keySpan, v.valueSpan)));
|
|
29608
29651
|
}
|
|
@@ -32789,7 +32832,7 @@ function isAttrNode(ast) {
|
|
|
32789
32832
|
* @description
|
|
32790
32833
|
* Entry point for all public APIs of the compiler package.
|
|
32791
32834
|
*/
|
|
32792
|
-
new Version('20.2.
|
|
32835
|
+
new Version('20.2.1');
|
|
32793
32836
|
|
|
32794
32837
|
//////////////////////////////////////
|
|
32795
32838
|
// THIS FILE HAS GLOBAL SIDE EFFECT //
|
|
@@ -33824,7 +33867,7 @@ class NodeJSPathManipulation {
|
|
|
33824
33867
|
// G3-ESM-MARKER: G3 uses CommonJS, but externally everything in ESM.
|
|
33825
33868
|
// CommonJS/ESM interop for determining the current file name and containing dir.
|
|
33826
33869
|
const isCommonJS = typeof __filename !== 'undefined';
|
|
33827
|
-
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-
|
|
33870
|
+
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-COqholMT.cjs', document.baseURI).href));
|
|
33828
33871
|
// Note, when this code loads in the browser, `url` may be an empty `{}` due to the Closure shims.
|
|
33829
33872
|
const currentFileName = isCommonJS
|
|
33830
33873
|
? __filename
|
|
@@ -41166,6 +41209,46 @@ function isDirectiveDeclaration(node) {
|
|
|
41166
41209
|
ts.isVariableDeclaration(node.parent) &&
|
|
41167
41210
|
hasExpressionIdentifier(sourceFile, node, ExpressionIdentifier.DIRECTIVE));
|
|
41168
41211
|
}
|
|
41212
|
+
/**
|
|
41213
|
+
* Check if the lastSymbol is an alias of the firstSymbol. For example:
|
|
41214
|
+
*
|
|
41215
|
+
* The NewBarComponent is an alias of BarComponent.
|
|
41216
|
+
*
|
|
41217
|
+
* But the NotAliasBarComponent is not an alias of BarComponent, because
|
|
41218
|
+
* the NotAliasBarComponent is a new variable.
|
|
41219
|
+
*
|
|
41220
|
+
* This should work for most cases.
|
|
41221
|
+
*
|
|
41222
|
+
* https://github.com/microsoft/TypeScript/blob/9e20e032effad965567d4a1e1c30d5433b0a3332/src/compiler/checker.ts#L3638-L3652
|
|
41223
|
+
*
|
|
41224
|
+
* ```
|
|
41225
|
+
* // a.ts
|
|
41226
|
+
* export class BarComponent {};
|
|
41227
|
+
* // b.ts
|
|
41228
|
+
* export {BarComponent as NewBarComponent} from "./a";
|
|
41229
|
+
* // c.ts
|
|
41230
|
+
* import {BarComponent} from "./a"
|
|
41231
|
+
* const NotAliasBarComponent = BarComponent;
|
|
41232
|
+
* export {NotAliasBarComponent};
|
|
41233
|
+
* ```
|
|
41234
|
+
*/
|
|
41235
|
+
function isSymbolAliasOf(firstSymbol, lastSymbol, typeChecker) {
|
|
41236
|
+
let currentSymbol = lastSymbol;
|
|
41237
|
+
const seenSymbol = new Set();
|
|
41238
|
+
while (firstSymbol !== currentSymbol &&
|
|
41239
|
+
currentSymbol !== undefined &&
|
|
41240
|
+
currentSymbol.flags & ts.SymbolFlags.Alias) {
|
|
41241
|
+
if (seenSymbol.has(currentSymbol)) {
|
|
41242
|
+
break;
|
|
41243
|
+
}
|
|
41244
|
+
seenSymbol.add(currentSymbol);
|
|
41245
|
+
currentSymbol = typeChecker.getImmediateAliasedSymbol(currentSymbol);
|
|
41246
|
+
if (currentSymbol === firstSymbol) {
|
|
41247
|
+
return true;
|
|
41248
|
+
}
|
|
41249
|
+
}
|
|
41250
|
+
return false;
|
|
41251
|
+
}
|
|
41169
41252
|
|
|
41170
41253
|
const NgOriginalFile = Symbol('NgOriginalFile');
|
|
41171
41254
|
exports.UpdateMode = void 0;
|
|
@@ -50038,11 +50121,11 @@ class TemplateTypeCheckerImpl {
|
|
|
50038
50121
|
}
|
|
50039
50122
|
for (const directiveDecl of directiveDecls) {
|
|
50040
50123
|
const cachedCompletionEntryInfos = resultingDirectives.get(directiveDecl.ref.node)?.tsCompletionEntryInfos ?? [];
|
|
50041
|
-
cachedCompletionEntryInfos
|
|
50124
|
+
appendOrReplaceTsEntryInfo(cachedCompletionEntryInfos, {
|
|
50042
50125
|
tsCompletionEntryData: data,
|
|
50043
50126
|
tsCompletionEntrySymbolFileName: symbolFileName,
|
|
50044
50127
|
tsCompletionEntrySymbolName: symbolName,
|
|
50045
|
-
});
|
|
50128
|
+
}, this.programDriver.getProgram());
|
|
50046
50129
|
if (resultingDirectives.has(directiveDecl.ref.node)) {
|
|
50047
50130
|
const directiveInfo = resultingDirectives.get(directiveDecl.ref.node);
|
|
50048
50131
|
resultingDirectives.set(directiveDecl.ref.node, {
|
|
@@ -50216,29 +50299,30 @@ class TemplateTypeCheckerImpl {
|
|
|
50216
50299
|
* When providing the code action for the directive. All the imports will show for the developer to choose.
|
|
50217
50300
|
*/
|
|
50218
50301
|
let highestImportPriority = -1;
|
|
50219
|
-
const collectImports = (emit,
|
|
50302
|
+
const collectImports = (emit, moduleSpecifierDetail) => {
|
|
50220
50303
|
if (emit === null) {
|
|
50221
50304
|
return;
|
|
50222
50305
|
}
|
|
50223
50306
|
imports.push({
|
|
50224
50307
|
...emit,
|
|
50225
|
-
moduleSpecifier: moduleSpecifier ?? emit.moduleSpecifier,
|
|
50308
|
+
moduleSpecifier: moduleSpecifierDetail?.moduleSpecifier ?? emit.moduleSpecifier,
|
|
50309
|
+
symbolName: moduleSpecifierDetail?.exportName ?? emit.symbolName,
|
|
50226
50310
|
});
|
|
50227
|
-
if (
|
|
50311
|
+
if (moduleSpecifierDetail !== null && highestImportPriority === -1) {
|
|
50228
50312
|
highestImportPriority = imports.length - 1;
|
|
50229
50313
|
}
|
|
50230
50314
|
};
|
|
50231
50315
|
if (meta.isStandalone || importMode === exports.PotentialImportMode.ForceDirect) {
|
|
50232
50316
|
const emitted = this.emit(exports.PotentialImportKind.Standalone, toImport, inContext);
|
|
50233
|
-
const
|
|
50234
|
-
collectImports(emitted,
|
|
50317
|
+
const moduleSpecifierDetail = potentialDirectiveModuleSpecifierResolver?.resolve(toImport, inContext) ?? null;
|
|
50318
|
+
collectImports(emitted, moduleSpecifierDetail);
|
|
50235
50319
|
}
|
|
50236
50320
|
const exportingNgModules = this.ngModuleIndex.getNgModulesExporting(meta.ref.node);
|
|
50237
50321
|
if (exportingNgModules !== null) {
|
|
50238
50322
|
for (const exporter of exportingNgModules) {
|
|
50239
50323
|
const emittedRef = this.emit(exports.PotentialImportKind.NgModule, exporter, inContext);
|
|
50240
|
-
const
|
|
50241
|
-
collectImports(emittedRef,
|
|
50324
|
+
const moduleSpecifierDetail = potentialDirectiveModuleSpecifierResolver?.resolve(exporter, inContext) ?? null;
|
|
50325
|
+
collectImports(emittedRef, moduleSpecifierDetail);
|
|
50242
50326
|
}
|
|
50243
50327
|
}
|
|
50244
50328
|
// move the import with module specifier from the tsLs to top in the imports array
|
|
@@ -50574,6 +50658,87 @@ function getTheElementTagDeprecatedSuggestionDiagnostics(shimPath, program, file
|
|
|
50574
50658
|
function isDeprecatedDiagnostics(diag) {
|
|
50575
50659
|
return diag.reportsDeprecated !== undefined;
|
|
50576
50660
|
}
|
|
50661
|
+
/**
|
|
50662
|
+
* Append the ts completion entry into the array only when the new entry's directive
|
|
50663
|
+
* doesn't exist in the array.
|
|
50664
|
+
*
|
|
50665
|
+
* If the new entry's directive already exists, and the entry's symbol is the alias of
|
|
50666
|
+
* the existing entry, the new entry will replace the existing entry.
|
|
50667
|
+
*
|
|
50668
|
+
*/
|
|
50669
|
+
function appendOrReplaceTsEntryInfo(tsEntryInfos, newTsEntryInfo, program) {
|
|
50670
|
+
const typeChecker = program.getTypeChecker();
|
|
50671
|
+
const newTsEntryInfoSymbol = getSymbolFromTsEntryInfo(newTsEntryInfo, program);
|
|
50672
|
+
if (newTsEntryInfoSymbol === null) {
|
|
50673
|
+
return;
|
|
50674
|
+
}
|
|
50675
|
+
// Find the index of the first entry that has a matching type.
|
|
50676
|
+
const matchedEntryIndex = tsEntryInfos.findIndex((currentTsEntryInfo) => {
|
|
50677
|
+
const currentTsEntrySymbol = getSymbolFromTsEntryInfo(currentTsEntryInfo, program);
|
|
50678
|
+
if (currentTsEntrySymbol === null) {
|
|
50679
|
+
return false;
|
|
50680
|
+
}
|
|
50681
|
+
return isSymbolTypeMatch(currentTsEntrySymbol, newTsEntryInfoSymbol, typeChecker);
|
|
50682
|
+
});
|
|
50683
|
+
if (matchedEntryIndex === -1) {
|
|
50684
|
+
// No entry with a matching type was found, so append the new entry.
|
|
50685
|
+
tsEntryInfos.push(newTsEntryInfo);
|
|
50686
|
+
return;
|
|
50687
|
+
}
|
|
50688
|
+
// An entry with a matching type was found at matchedEntryIndex.
|
|
50689
|
+
const matchedEntry = tsEntryInfos[matchedEntryIndex];
|
|
50690
|
+
const matchedEntrySymbol = getSymbolFromTsEntryInfo(matchedEntry, program);
|
|
50691
|
+
if (matchedEntrySymbol === null) {
|
|
50692
|
+
// Should not happen based on the findIndex condition, but check defensively.
|
|
50693
|
+
return;
|
|
50694
|
+
}
|
|
50695
|
+
// Check if the `matchedEntrySymbol` is an alias of the `newTsEntryInfoSymbol`.
|
|
50696
|
+
if (isSymbolAliasOf(matchedEntrySymbol, newTsEntryInfoSymbol, typeChecker)) {
|
|
50697
|
+
// The first type-matching entry is an alias, so replace it.
|
|
50698
|
+
tsEntryInfos[matchedEntryIndex] = newTsEntryInfo;
|
|
50699
|
+
return;
|
|
50700
|
+
}
|
|
50701
|
+
// The new entry's symbol is an alias of the existing entry's symbol.
|
|
50702
|
+
// In this case, we prefer to keep the existing entry that was found first
|
|
50703
|
+
// and do not replace it.
|
|
50704
|
+
return;
|
|
50705
|
+
}
|
|
50706
|
+
function getSymbolFromTsEntryInfo(tsInfo, program) {
|
|
50707
|
+
const typeChecker = program.getTypeChecker();
|
|
50708
|
+
const sf = program.getSourceFile(tsInfo.tsCompletionEntrySymbolFileName);
|
|
50709
|
+
if (sf === undefined) {
|
|
50710
|
+
return null;
|
|
50711
|
+
}
|
|
50712
|
+
const sfSymbol = typeChecker.getSymbolAtLocation(sf);
|
|
50713
|
+
if (sfSymbol === undefined) {
|
|
50714
|
+
return null;
|
|
50715
|
+
}
|
|
50716
|
+
return (typeChecker.tryGetMemberInModuleExports(tsInfo.tsCompletionEntrySymbolName, sfSymbol) ?? null);
|
|
50717
|
+
}
|
|
50718
|
+
function getFirstTypeDeclarationOfSymbol(symbol, typeChecker) {
|
|
50719
|
+
const type = typeChecker.getTypeOfSymbol(symbol);
|
|
50720
|
+
return type.getSymbol()?.declarations?.[0];
|
|
50721
|
+
}
|
|
50722
|
+
/**
|
|
50723
|
+
* Check if the two symbols come from the same type node. For example:
|
|
50724
|
+
*
|
|
50725
|
+
* The `NewBarComponent`'s type node is the `BarComponent`.
|
|
50726
|
+
*
|
|
50727
|
+
* ```
|
|
50728
|
+
* // a.ts
|
|
50729
|
+
* export class BarComponent
|
|
50730
|
+
*
|
|
50731
|
+
* // b.ts
|
|
50732
|
+
* import {BarComponent} from "./a"
|
|
50733
|
+
* const NewBarComponent = BarComponent;
|
|
50734
|
+
* export {NewBarComponent}
|
|
50735
|
+
* ```
|
|
50736
|
+
*/
|
|
50737
|
+
function isSymbolTypeMatch(first, last, typeChecker) {
|
|
50738
|
+
const firstTypeNode = getFirstTypeDeclarationOfSymbol(first, typeChecker);
|
|
50739
|
+
const lastTypeNode = getFirstTypeDeclarationOfSymbol(last, typeChecker);
|
|
50740
|
+
return firstTypeNode === lastTypeNode && firstTypeNode !== undefined;
|
|
50741
|
+
}
|
|
50577
50742
|
|
|
50578
50743
|
/**
|
|
50579
50744
|
* 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.
|
|
3
|
+
* @license Angular v20.2.1
|
|
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-DbXQvYKt.cjs');
|
|
13
|
+
var project_tsconfig_paths = require('./project_tsconfig_paths-COqholMT.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.
|
|
3
|
+
* @license Angular v20.2.1
|
|
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-COqholMT.cjs');
|
|
12
|
+
require('./index-Bcv0dPD8.cjs');
|
|
13
13
|
require('path');
|
|
14
14
|
require('node:path');
|
|
15
|
-
var project_paths = require('./project_paths-
|
|
15
|
+
var project_paths = require('./project_paths-BaK5P5a5.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.
|
|
3
|
+
* @license Angular v20.2.1
|
|
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-COqholMT.cjs');
|
|
12
|
+
require('./index-Bcv0dPD8.cjs');
|
|
13
13
|
require('path');
|
|
14
14
|
require('node:path');
|
|
15
|
-
var project_paths = require('./project_paths-
|
|
15
|
+
var project_paths = require('./project_paths-BaK5P5a5.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.
|
|
3
|
+
* @license Angular v20.2.1
|
|
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-xcaijJqF.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-COqholMT.cjs');
|
|
13
|
+
var index$1 = require('./index-Bcv0dPD8.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-BaK5P5a5.cjs');
|
|
17
|
+
var index = require('./index-Bphk20D_.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-BvwNQhfG.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.
|
|
3
|
+
* @license Angular v20.2.1
|
|
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-COqholMT.cjs');
|
|
10
10
|
var ts = require('typescript');
|
|
11
11
|
require('os');
|
|
12
|
-
var index$1 = require('./index-
|
|
12
|
+
var index$1 = require('./index-Bcv0dPD8.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-BaK5P5a5.cjs');
|
|
16
|
+
var apply_import_manager = require('./apply_import_manager-BvwNQhfG.cjs');
|
|
17
|
+
var migrate_ts_type_references = require('./migrate_ts_type_references-xcaijJqF.cjs');
|
|
18
18
|
var assert = require('assert');
|
|
19
|
-
var index = require('./index-
|
|
19
|
+
var index = require('./index-Bphk20D_.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.
|
|
3
|
+
* @license Angular v20.2.1
|
|
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-COqholMT.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-Bcv0dPD8.cjs');
|
|
22
22
|
require('node:path');
|
|
23
|
-
require('./project_paths-
|
|
23
|
+
require('./project_paths-BaK5P5a5.cjs');
|
|
24
24
|
require('node:path/posix');
|
|
25
|
-
require('./apply_import_manager-
|
|
26
|
-
require('./migrate_ts_type_references-
|
|
25
|
+
require('./apply_import_manager-BvwNQhfG.cjs');
|
|
26
|
+
require('./migrate_ts_type_references-xcaijJqF.cjs');
|
|
27
27
|
require('assert');
|
|
28
|
-
require('./index-
|
|
28
|
+
require('./index-Bphk20D_.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.
|
|
3
|
+
* @license Angular v20.2.1
|
|
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-Bcv0dPD8.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-DbXQvYKt.cjs');
|
|
15
|
+
var project_tsconfig_paths = require('./project_tsconfig_paths-COqholMT.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.
|
|
3
|
+
* @license Angular v20.2.1
|
|
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-COqholMT.cjs');
|
|
12
|
+
require('./index-Bcv0dPD8.cjs');
|
|
13
13
|
require('path');
|
|
14
14
|
require('node:path');
|
|
15
|
-
var project_paths = require('./project_paths-
|
|
15
|
+
var project_paths = require('./project_paths-BaK5P5a5.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.
|
|
2
|
+
* @license Angular v20.2.1
|
|
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
|
}
|
package/weak_ref.d.d.ts
CHANGED