@angular/core 17.0.0-next.5 → 17.0.0-next.6

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.
Files changed (48) hide show
  1. package/esm2022/rxjs-interop/src/to_signal.mjs +13 -11
  2. package/esm2022/src/application_init.mjs +3 -3
  3. package/esm2022/src/application_module.mjs +3 -3
  4. package/esm2022/src/application_ref.mjs +23 -6
  5. package/esm2022/src/change_detection/differs/default_iterable_differ.mjs +1 -2
  6. package/esm2022/src/console.mjs +2 -2
  7. package/esm2022/src/core_private_export.mjs +2 -2
  8. package/esm2022/src/hydration/api.mjs +7 -8
  9. package/esm2022/src/hydration/views.mjs +3 -3
  10. package/esm2022/src/initial_render_pending_tasks.mjs +2 -2
  11. package/esm2022/src/linker/compiler.mjs +2 -2
  12. package/esm2022/src/linker/query_list.mjs +7 -10
  13. package/esm2022/src/linker/view_container_ref.mjs +12 -10
  14. package/esm2022/src/render3/deps_tracker/deps_tracker.mjs +4 -8
  15. package/esm2022/src/render3/instructions/control_flow.mjs +6 -4
  16. package/esm2022/src/render3/instructions/defer.mjs +381 -79
  17. package/esm2022/src/render3/instructions/defer_events.mjs +154 -0
  18. package/esm2022/src/render3/instructions/shared.mjs +1 -1
  19. package/esm2022/src/render3/instructions/template.mjs +9 -2
  20. package/esm2022/src/render3/interfaces/defer.mjs +9 -11
  21. package/esm2022/src/render3/metadata.mjs +2 -2
  22. package/esm2022/src/render3/state.mjs +2 -11
  23. package/esm2022/src/render3/util/view_utils.mjs +17 -3
  24. package/esm2022/src/testability/testability.mjs +5 -5
  25. package/esm2022/src/util/assert.mjs +6 -1
  26. package/esm2022/src/version.mjs +1 -1
  27. package/esm2022/testing/src/component_fixture.mjs +4 -2
  28. package/esm2022/testing/src/defer.mjs +3 -3
  29. package/esm2022/testing/src/logger.mjs +4 -4
  30. package/fesm2022/core.mjs +1095 -617
  31. package/fesm2022/core.mjs.map +1 -1
  32. package/fesm2022/rxjs-interop.mjs +13 -11
  33. package/fesm2022/rxjs-interop.mjs.map +1 -1
  34. package/fesm2022/testing.mjs +6 -4
  35. package/fesm2022/testing.mjs.map +1 -1
  36. package/index.d.ts +82 -46
  37. package/package.json +1 -1
  38. package/rxjs-interop/index.d.ts +1 -1
  39. package/schematics/migrations/block-template-entities/bundle.js +23249 -0
  40. package/schematics/migrations/block-template-entities/bundle.js.map +7 -0
  41. package/schematics/migrations.json +4 -9
  42. package/schematics/ng-generate/standalone-migration/bundle.js +2147 -2036
  43. package/schematics/ng-generate/standalone-migration/bundle.js.map +4 -4
  44. package/testing/index.d.ts +5 -3
  45. package/schematics/migrations/guard-and-resolve-interfaces/bundle.js +0 -694
  46. package/schematics/migrations/guard-and-resolve-interfaces/bundle.js.map +0 -7
  47. package/schematics/migrations/remove-module-id/bundle.js +0 -368
  48. package/schematics/migrations/remove-module-id/bundle.js.map +0 -7
@@ -1,694 +0,0 @@
1
- var __create = Object.create;
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
9
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
10
- var __spreadValues = (a, b) => {
11
- for (var prop in b || (b = {}))
12
- if (__hasOwnProp.call(b, prop))
13
- __defNormalProp(a, prop, b[prop]);
14
- if (__getOwnPropSymbols)
15
- for (var prop of __getOwnPropSymbols(b)) {
16
- if (__propIsEnum.call(b, prop))
17
- __defNormalProp(a, prop, b[prop]);
18
- }
19
- return a;
20
- };
21
- var __export = (target, all) => {
22
- for (var name in all)
23
- __defProp(target, name, { get: all[name], enumerable: true });
24
- };
25
- var __copyProps = (to, from, except, desc) => {
26
- if (from && typeof from === "object" || typeof from === "function") {
27
- for (let key of __getOwnPropNames(from))
28
- if (!__hasOwnProp.call(to, key) && key !== except)
29
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
30
- }
31
- return to;
32
- };
33
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
34
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
35
- mod
36
- ));
37
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
38
- var __publicField = (obj, key, value) => {
39
- __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
40
- return value;
41
- };
42
- var __async = (__this, __arguments, generator) => {
43
- return new Promise((resolve3, reject) => {
44
- var fulfilled = (value) => {
45
- try {
46
- step(generator.next(value));
47
- } catch (e) {
48
- reject(e);
49
- }
50
- };
51
- var rejected = (value) => {
52
- try {
53
- step(generator.throw(value));
54
- } catch (e) {
55
- reject(e);
56
- }
57
- };
58
- var step = (x) => x.done ? resolve3(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
59
- step((generator = generator.apply(__this, __arguments)).next());
60
- });
61
- };
62
-
63
- // bazel-out/darwin_arm64-fastbuild/bin/packages/core/schematics/migrations/guard-and-resolve-interfaces/index.mjs
64
- var guard_and_resolve_interfaces_exports = {};
65
- __export(guard_and_resolve_interfaces_exports, {
66
- default: () => guard_and_resolve_interfaces_default
67
- });
68
- module.exports = __toCommonJS(guard_and_resolve_interfaces_exports);
69
- var import_schematics = require("@angular-devkit/schematics");
70
- var import_path3 = require("path");
71
-
72
- // bazel-out/darwin_arm64-fastbuild/bin/packages/core/schematics/utils/project_tsconfig_paths.mjs
73
- var import_core = require("@angular-devkit/core");
74
- function getProjectTsConfigPaths(tree) {
75
- return __async(this, null, function* () {
76
- const buildPaths = /* @__PURE__ */ new Set();
77
- const testPaths = /* @__PURE__ */ new Set();
78
- const workspace = yield getWorkspace(tree);
79
- for (const [, project] of workspace.projects) {
80
- for (const [name, target] of project.targets) {
81
- if (name !== "build" && name !== "test") {
82
- continue;
83
- }
84
- for (const [, options] of allTargetOptions(target)) {
85
- const tsConfig = options.tsConfig;
86
- if (typeof tsConfig !== "string" || !tree.exists(tsConfig)) {
87
- continue;
88
- }
89
- if (name === "build") {
90
- buildPaths.add((0, import_core.normalize)(tsConfig));
91
- } else {
92
- testPaths.add((0, import_core.normalize)(tsConfig));
93
- }
94
- }
95
- }
96
- }
97
- return {
98
- buildPaths: [...buildPaths],
99
- testPaths: [...testPaths]
100
- };
101
- });
102
- }
103
- function* allTargetOptions(target) {
104
- if (target.options) {
105
- yield [void 0, target.options];
106
- }
107
- if (!target.configurations) {
108
- return;
109
- }
110
- for (const [name, options] of Object.entries(target.configurations)) {
111
- if (options) {
112
- yield [name, options];
113
- }
114
- }
115
- }
116
- function createHost(tree) {
117
- return {
118
- readFile(path2) {
119
- return __async(this, null, function* () {
120
- const data = tree.read(path2);
121
- if (!data) {
122
- throw new Error("File not found.");
123
- }
124
- return import_core.virtualFs.fileBufferToString(data);
125
- });
126
- },
127
- writeFile(path2, data) {
128
- return __async(this, null, function* () {
129
- return tree.overwrite(path2, data);
130
- });
131
- },
132
- isDirectory(path2) {
133
- return __async(this, null, function* () {
134
- return !tree.exists(path2) && tree.getDir(path2).subfiles.length > 0;
135
- });
136
- },
137
- isFile(path2) {
138
- return __async(this, null, function* () {
139
- return tree.exists(path2);
140
- });
141
- }
142
- };
143
- }
144
- function getWorkspace(tree) {
145
- return __async(this, null, function* () {
146
- const host = createHost(tree);
147
- const { workspace } = yield import_core.workspaces.readWorkspace("/", host);
148
- return workspace;
149
- });
150
- }
151
-
152
- // bazel-out/darwin_arm64-fastbuild/bin/packages/core/schematics/utils/typescript/compiler_host.mjs
153
- var import_path = require("path");
154
- var import_typescript2 = __toESM(require("typescript"), 1);
155
-
156
- // bazel-out/darwin_arm64-fastbuild/bin/packages/core/schematics/utils/typescript/parse_tsconfig.mjs
157
- var path = __toESM(require("path"), 1);
158
- var import_typescript = __toESM(require("typescript"), 1);
159
- function parseTsconfigFile(tsconfigPath, basePath) {
160
- const { config } = import_typescript.default.readConfigFile(tsconfigPath, import_typescript.default.sys.readFile);
161
- const parseConfigHost = {
162
- useCaseSensitiveFileNames: import_typescript.default.sys.useCaseSensitiveFileNames,
163
- fileExists: import_typescript.default.sys.fileExists,
164
- readDirectory: import_typescript.default.sys.readDirectory,
165
- readFile: import_typescript.default.sys.readFile
166
- };
167
- if (!path.isAbsolute(basePath)) {
168
- throw Error("Unexpected relative base path has been specified.");
169
- }
170
- return import_typescript.default.parseJsonConfigFileContent(config, parseConfigHost, basePath, {});
171
- }
172
-
173
- // bazel-out/darwin_arm64-fastbuild/bin/packages/core/schematics/utils/typescript/compiler_host.mjs
174
- function createMigrationProgram(tree, tsconfigPath, basePath, fakeFileRead, additionalFiles) {
175
- const { rootNames, options, host } = createProgramOptions(tree, tsconfigPath, basePath, fakeFileRead, additionalFiles);
176
- return import_typescript2.default.createProgram(rootNames, options, host);
177
- }
178
- function createProgramOptions(tree, tsconfigPath, basePath, fakeFileRead, additionalFiles, optionOverrides) {
179
- tsconfigPath = (0, import_path.resolve)(basePath, tsconfigPath);
180
- const parsed = parseTsconfigFile(tsconfigPath, (0, import_path.dirname)(tsconfigPath));
181
- const options = optionOverrides ? __spreadValues(__spreadValues({}, parsed.options), optionOverrides) : parsed.options;
182
- const host = createMigrationCompilerHost(tree, options, basePath, fakeFileRead);
183
- return { rootNames: parsed.fileNames.concat(additionalFiles || []), options, host };
184
- }
185
- function createMigrationCompilerHost(tree, options, basePath, fakeRead) {
186
- const host = import_typescript2.default.createCompilerHost(options, true);
187
- const defaultReadFile = host.readFile;
188
- host.readFile = (fileName) => {
189
- var _a;
190
- const treeRelativePath = (0, import_path.relative)(basePath, fileName);
191
- let result = fakeRead == null ? void 0 : fakeRead(treeRelativePath);
192
- if (typeof result !== "string") {
193
- result = treeRelativePath.startsWith("..") ? defaultReadFile.call(host, fileName) : (_a = tree.read(treeRelativePath)) == null ? void 0 : _a.toString();
194
- }
195
- return typeof result === "string" ? result.replace(/^\uFEFF/, "") : void 0;
196
- };
197
- return host;
198
- }
199
- function canMigrateFile(basePath, sourceFile, program) {
200
- if (sourceFile.fileName.endsWith(".ngtypecheck.ts") || sourceFile.isDeclarationFile || program.isSourceFileFromExternalLibrary(sourceFile)) {
201
- return false;
202
- }
203
- return !(0, import_path.relative)(basePath, sourceFile.fileName).startsWith("..");
204
- }
205
-
206
- // bazel-out/darwin_arm64-fastbuild/bin/packages/core/schematics/migrations/guard-and-resolve-interfaces/util.mjs
207
- var import_typescript7 = __toESM(require("typescript"), 1);
208
-
209
- // bazel-out/darwin_arm64-fastbuild/bin/packages/core/schematics/utils/change_tracker.mjs
210
- var import_typescript4 = __toESM(require("typescript"), 1);
211
-
212
- // bazel-out/darwin_arm64-fastbuild/bin/packages/core/schematics/utils/import_manager.mjs
213
- var import_path2 = require("path");
214
- var import_typescript3 = __toESM(require("typescript"), 1);
215
- var ImportManager = class {
216
- constructor(getUpdateRecorder, printer) {
217
- __publicField(this, "getUpdateRecorder");
218
- __publicField(this, "printer");
219
- __publicField(this, "updatedImports", /* @__PURE__ */ new Map());
220
- __publicField(this, "usedIdentifierNames", /* @__PURE__ */ new Map());
221
- __publicField(this, "newImports", /* @__PURE__ */ new Map());
222
- __publicField(this, "quoteStyles", {});
223
- __publicField(this, "importCache", []);
224
- this.getUpdateRecorder = getUpdateRecorder;
225
- this.printer = printer;
226
- }
227
- addImportToSourceFile(sourceFile, symbolName, moduleName, alias = null, typeImport = false) {
228
- const sourceDir = (0, import_path2.dirname)(sourceFile.fileName);
229
- let importStartIndex = 0;
230
- let existingImport = null;
231
- const cachedImport = this.importCache.find((c) => c.sourceFile === sourceFile && c.symbolName === symbolName && c.moduleName === moduleName && c.alias === alias);
232
- if (cachedImport) {
233
- return cachedImport.identifier;
234
- }
235
- for (let i = sourceFile.statements.length - 1; i >= 0; i--) {
236
- const statement = sourceFile.statements[i];
237
- if (!import_typescript3.default.isImportDeclaration(statement) || !import_typescript3.default.isStringLiteral(statement.moduleSpecifier) || !statement.importClause) {
238
- continue;
239
- }
240
- if (importStartIndex === 0) {
241
- importStartIndex = this._getEndPositionOfNode(statement);
242
- }
243
- const moduleSpecifier = statement.moduleSpecifier.text;
244
- if (moduleSpecifier.startsWith(".") && (0, import_path2.resolve)(sourceDir, moduleSpecifier) !== (0, import_path2.resolve)(sourceDir, moduleName) || moduleSpecifier !== moduleName) {
245
- continue;
246
- }
247
- if (statement.importClause.namedBindings) {
248
- const namedBindings = statement.importClause.namedBindings;
249
- if (import_typescript3.default.isNamespaceImport(namedBindings) && !typeImport) {
250
- return import_typescript3.default.factory.createPropertyAccessExpression(import_typescript3.default.factory.createIdentifier(namedBindings.name.text), import_typescript3.default.factory.createIdentifier(alias || symbolName || "default"));
251
- } else if (import_typescript3.default.isNamedImports(namedBindings) && symbolName) {
252
- const existingElement = namedBindings.elements.find((e) => {
253
- if (alias) {
254
- return e.propertyName && e.name.text === alias && e.propertyName.text === symbolName;
255
- }
256
- return e.propertyName ? e.propertyName.text === symbolName : e.name.text === symbolName;
257
- });
258
- if (existingElement) {
259
- return import_typescript3.default.factory.createIdentifier(existingElement.name.text);
260
- }
261
- existingImport = statement;
262
- }
263
- } else if (statement.importClause.name && !symbolName) {
264
- return import_typescript3.default.factory.createIdentifier(statement.importClause.name.text);
265
- }
266
- }
267
- if (existingImport) {
268
- const { propertyName, name } = this._getImportParts(sourceFile, symbolName, alias);
269
- this.updatedImports.set(existingImport, (this.updatedImports.get(existingImport) || []).concat({ propertyName, importName: name }));
270
- this.importCache.push({ sourceFile, moduleName, symbolName, alias, identifier: name });
271
- return name;
272
- }
273
- let identifier = null;
274
- if (!this.newImports.has(sourceFile)) {
275
- this.newImports.set(sourceFile, {
276
- importStartIndex,
277
- defaultImports: /* @__PURE__ */ new Map(),
278
- namedImports: /* @__PURE__ */ new Map()
279
- });
280
- }
281
- if (symbolName) {
282
- const { propertyName, name } = this._getImportParts(sourceFile, symbolName, alias);
283
- const importMap = this.newImports.get(sourceFile).namedImports;
284
- identifier = name;
285
- if (!importMap.has(moduleName)) {
286
- importMap.set(moduleName, []);
287
- }
288
- importMap.get(moduleName).push(import_typescript3.default.factory.createImportSpecifier(false, propertyName, name));
289
- } else {
290
- const importMap = this.newImports.get(sourceFile).defaultImports;
291
- identifier = this._getUniqueIdentifier(sourceFile, "defaultExport");
292
- importMap.set(moduleName, identifier);
293
- }
294
- this.importCache.push({ sourceFile, symbolName, moduleName, alias, identifier });
295
- return identifier;
296
- }
297
- recordChanges() {
298
- this.updatedImports.forEach((expressions, importDecl) => {
299
- const sourceFile = importDecl.getSourceFile();
300
- const recorder = this.getUpdateRecorder(sourceFile);
301
- const namedBindings = importDecl.importClause.namedBindings;
302
- const newNamedBindings = import_typescript3.default.factory.updateNamedImports(namedBindings, namedBindings.elements.concat(expressions.map(({ propertyName, importName }) => import_typescript3.default.factory.createImportSpecifier(false, propertyName, importName))));
303
- const newNamedBindingsText = this.printer.printNode(import_typescript3.default.EmitHint.Unspecified, newNamedBindings, sourceFile);
304
- recorder.updateExistingImport(namedBindings, newNamedBindingsText);
305
- });
306
- this.newImports.forEach(({ importStartIndex, defaultImports, namedImports }, sourceFile) => {
307
- const recorder = this.getUpdateRecorder(sourceFile);
308
- const useSingleQuotes = this._getQuoteStyle(sourceFile) === 0;
309
- defaultImports.forEach((identifier, moduleName) => {
310
- const newImport = import_typescript3.default.factory.createImportDeclaration(void 0, import_typescript3.default.factory.createImportClause(false, identifier, void 0), import_typescript3.default.factory.createStringLiteral(moduleName, useSingleQuotes));
311
- recorder.addNewImport(importStartIndex, this._getNewImportText(importStartIndex, newImport, sourceFile));
312
- });
313
- namedImports.forEach((specifiers, moduleName) => {
314
- const newImport = import_typescript3.default.factory.createImportDeclaration(void 0, import_typescript3.default.factory.createImportClause(false, void 0, import_typescript3.default.factory.createNamedImports(specifiers)), import_typescript3.default.factory.createStringLiteral(moduleName, useSingleQuotes));
315
- recorder.addNewImport(importStartIndex, this._getNewImportText(importStartIndex, newImport, sourceFile));
316
- });
317
- });
318
- }
319
- _getUniqueIdentifier(sourceFile, baseName) {
320
- if (this.isUniqueIdentifierName(sourceFile, baseName)) {
321
- this._recordUsedIdentifier(sourceFile, baseName);
322
- return import_typescript3.default.factory.createIdentifier(baseName);
323
- }
324
- let name = null;
325
- let counter = 1;
326
- do {
327
- name = `${baseName}_${counter++}`;
328
- } while (!this.isUniqueIdentifierName(sourceFile, name));
329
- this._recordUsedIdentifier(sourceFile, name);
330
- return import_typescript3.default.factory.createIdentifier(name);
331
- }
332
- isUniqueIdentifierName(sourceFile, name) {
333
- if (this.usedIdentifierNames.has(sourceFile) && this.usedIdentifierNames.get(sourceFile).indexOf(name) !== -1) {
334
- return false;
335
- }
336
- const nodeQueue = [sourceFile];
337
- while (nodeQueue.length) {
338
- const node = nodeQueue.shift();
339
- if (import_typescript3.default.isIdentifier(node) && node.text === name && (!import_typescript3.default.isImportSpecifier(node.parent) || node.parent.propertyName !== node)) {
340
- return false;
341
- }
342
- nodeQueue.push(...node.getChildren());
343
- }
344
- return true;
345
- }
346
- _recordUsedIdentifier(sourceFile, identifierName) {
347
- this.usedIdentifierNames.set(sourceFile, (this.usedIdentifierNames.get(sourceFile) || []).concat(identifierName));
348
- }
349
- _getEndPositionOfNode(node) {
350
- const nodeEndPos = node.getEnd();
351
- const commentRanges = import_typescript3.default.getTrailingCommentRanges(node.getSourceFile().text, nodeEndPos);
352
- if (!commentRanges || !commentRanges.length) {
353
- return nodeEndPos;
354
- }
355
- return commentRanges[commentRanges.length - 1].end;
356
- }
357
- _getNewImportText(importStartIndex, newImport, sourceFile) {
358
- const text = this.printer.printNode(import_typescript3.default.EmitHint.Unspecified, newImport, sourceFile);
359
- return importStartIndex === 0 ? `${text}
360
- ` : `
361
- ${text}`;
362
- }
363
- _getImportParts(sourceFile, symbolName, alias) {
364
- const symbolIdentifier = import_typescript3.default.factory.createIdentifier(symbolName);
365
- const aliasIdentifier = alias ? import_typescript3.default.factory.createIdentifier(alias) : null;
366
- const generatedUniqueIdentifier = this._getUniqueIdentifier(sourceFile, alias || symbolName);
367
- const needsGeneratedUniqueName = generatedUniqueIdentifier.text !== (alias || symbolName);
368
- let propertyName;
369
- let name;
370
- if (needsGeneratedUniqueName) {
371
- propertyName = symbolIdentifier;
372
- name = generatedUniqueIdentifier;
373
- } else if (aliasIdentifier) {
374
- propertyName = symbolIdentifier;
375
- name = aliasIdentifier;
376
- } else {
377
- name = symbolIdentifier;
378
- }
379
- return { propertyName, name };
380
- }
381
- _getQuoteStyle(sourceFile) {
382
- if (!this.quoteStyles.hasOwnProperty(sourceFile.fileName)) {
383
- let quoteStyle;
384
- for (const statement of sourceFile.statements) {
385
- if (import_typescript3.default.isImportDeclaration(statement) && import_typescript3.default.isStringLiteralLike(statement.moduleSpecifier)) {
386
- quoteStyle = statement.moduleSpecifier.getText().trim().startsWith('"') ? 1 : 0;
387
- break;
388
- }
389
- }
390
- this.quoteStyles[sourceFile.fileName] = quoteStyle != null ? quoteStyle : 0;
391
- }
392
- return this.quoteStyles[sourceFile.fileName];
393
- }
394
- };
395
-
396
- // bazel-out/darwin_arm64-fastbuild/bin/packages/core/schematics/utils/change_tracker.mjs
397
- var ChangeTracker = class {
398
- constructor(_printer, _importRemapper) {
399
- __publicField(this, "_printer");
400
- __publicField(this, "_importRemapper");
401
- __publicField(this, "_changes", /* @__PURE__ */ new Map());
402
- __publicField(this, "_importManager");
403
- this._printer = _printer;
404
- this._importRemapper = _importRemapper;
405
- this._importManager = new ImportManager((currentFile) => ({
406
- addNewImport: (start, text) => this.insertText(currentFile, start, text),
407
- updateExistingImport: (namedBindings, text) => this.replaceText(currentFile, namedBindings.getStart(), namedBindings.getWidth(), text)
408
- }), this._printer);
409
- }
410
- insertText(sourceFile, index, text) {
411
- this._trackChange(sourceFile, { start: index, text });
412
- }
413
- replaceText(sourceFile, start, removeLength, text) {
414
- this._trackChange(sourceFile, { start, removeLength, text });
415
- }
416
- replaceNode(oldNode, newNode, emitHint = import_typescript4.default.EmitHint.Unspecified, sourceFileWhenPrinting) {
417
- const sourceFile = oldNode.getSourceFile();
418
- this.replaceText(sourceFile, oldNode.getStart(), oldNode.getWidth(), this._printer.printNode(emitHint, newNode, sourceFileWhenPrinting || sourceFile));
419
- }
420
- removeNode(node) {
421
- this._trackChange(node.getSourceFile(), { start: node.getStart(), removeLength: node.getWidth(), text: "" });
422
- }
423
- addImport(sourceFile, symbolName, moduleName, alias = null) {
424
- if (this._importRemapper) {
425
- moduleName = this._importRemapper(moduleName, sourceFile.fileName);
426
- }
427
- moduleName = normalizePath(moduleName);
428
- return this._importManager.addImportToSourceFile(sourceFile, symbolName, moduleName, alias);
429
- }
430
- recordChanges() {
431
- this._importManager.recordChanges();
432
- return this._changes;
433
- }
434
- _trackChange(file, change) {
435
- const changes = this._changes.get(file);
436
- if (changes) {
437
- const insertIndex = changes.findIndex((current) => current.start <= change.start);
438
- if (insertIndex === -1) {
439
- changes.push(change);
440
- } else {
441
- changes.splice(insertIndex, 0, change);
442
- }
443
- } else {
444
- this._changes.set(file, [change]);
445
- }
446
- }
447
- };
448
- function normalizePath(path2) {
449
- return path2.replace(/\\/g, "/");
450
- }
451
-
452
- // bazel-out/darwin_arm64-fastbuild/bin/packages/core/schematics/utils/typescript/imports.mjs
453
- var import_typescript5 = __toESM(require("typescript"), 1);
454
- function getImportOfIdentifier(typeChecker, node) {
455
- const symbol = typeChecker.getSymbolAtLocation(node);
456
- if (!symbol || symbol.declarations === void 0 || !symbol.declarations.length) {
457
- return null;
458
- }
459
- const decl = symbol.declarations[0];
460
- if (!import_typescript5.default.isImportSpecifier(decl)) {
461
- return null;
462
- }
463
- const importDecl = decl.parent.parent.parent;
464
- if (!import_typescript5.default.isStringLiteral(importDecl.moduleSpecifier)) {
465
- return null;
466
- }
467
- return {
468
- name: decl.propertyName ? decl.propertyName.text : decl.name.text,
469
- importModule: importDecl.moduleSpecifier.text,
470
- node: importDecl
471
- };
472
- }
473
- function getImportSpecifier(sourceFile, moduleName, specifierName) {
474
- var _a;
475
- return (_a = getImportSpecifiers(sourceFile, moduleName, [specifierName])[0]) != null ? _a : null;
476
- }
477
- function getImportSpecifiers(sourceFile, moduleName, specifierNames) {
478
- var _a;
479
- const matches = [];
480
- for (const node of sourceFile.statements) {
481
- if (import_typescript5.default.isImportDeclaration(node) && import_typescript5.default.isStringLiteral(node.moduleSpecifier)) {
482
- const isMatch = typeof moduleName === "string" ? node.moduleSpecifier.text === moduleName : moduleName.test(node.moduleSpecifier.text);
483
- const namedBindings = (_a = node.importClause) == null ? void 0 : _a.namedBindings;
484
- if (isMatch && namedBindings && import_typescript5.default.isNamedImports(namedBindings)) {
485
- for (const specifierName of specifierNames) {
486
- const match = findImportSpecifier(namedBindings.elements, specifierName);
487
- if (match) {
488
- matches.push(match);
489
- }
490
- }
491
- }
492
- }
493
- }
494
- return matches;
495
- }
496
- function replaceImport(node, existingImport, newImportName) {
497
- const isAlreadyImported = findImportSpecifier(node.elements, newImportName);
498
- if (isAlreadyImported) {
499
- return node;
500
- }
501
- const existingImportNode = findImportSpecifier(node.elements, existingImport);
502
- if (!existingImportNode) {
503
- return node;
504
- }
505
- const importPropertyName = existingImportNode.propertyName ? import_typescript5.default.factory.createIdentifier(newImportName) : void 0;
506
- const importName = existingImportNode.propertyName ? existingImportNode.name : import_typescript5.default.factory.createIdentifier(newImportName);
507
- return import_typescript5.default.factory.updateNamedImports(node, [
508
- ...node.elements.filter((current) => current !== existingImportNode),
509
- import_typescript5.default.factory.createImportSpecifier(false, importPropertyName, importName)
510
- ]);
511
- }
512
- function removeSymbolFromNamedImports(node, symbol) {
513
- return import_typescript5.default.factory.updateNamedImports(node, [
514
- ...node.elements.filter((current) => current !== symbol)
515
- ]);
516
- }
517
- function findImportSpecifier(nodes, specifierName) {
518
- return nodes.find((element) => {
519
- const { name, propertyName } = element;
520
- return propertyName ? propertyName.text === specifierName : name.text === specifierName;
521
- });
522
- }
523
-
524
- // bazel-out/darwin_arm64-fastbuild/bin/packages/core/schematics/utils/typescript/nodes.mjs
525
- var import_typescript6 = __toESM(require("typescript"), 1);
526
- function closestNode(node, predicate) {
527
- let current = node.parent;
528
- while (current && !import_typescript6.default.isSourceFile(current)) {
529
- if (predicate(current)) {
530
- return current;
531
- }
532
- current = current.parent;
533
- }
534
- return null;
535
- }
536
-
537
- // bazel-out/darwin_arm64-fastbuild/bin/packages/core/schematics/migrations/guard-and-resolve-interfaces/util.mjs
538
- var deprecatedInterfaces = /* @__PURE__ */ new Set(["CanLoad", "CanMatch", "CanActivate", "CanDeactivate", "CanActivateChild", "Resolve"]);
539
- var routerModule = "@angular/router";
540
- function migrateFile(sourceFile, typeChecker, rewriteFn) {
541
- var _a;
542
- const deprecatedImports = getImportSpecifiers(sourceFile, routerModule, Array.from(deprecatedInterfaces));
543
- if (deprecatedImports.length === 0) {
544
- return;
545
- }
546
- const changeTracker = new ChangeTracker(import_typescript7.default.createPrinter());
547
- const updatedImports = /* @__PURE__ */ new Map();
548
- const updatedImplements = /* @__PURE__ */ new Map();
549
- findUsages(sourceFile, typeChecker, updatedImplements, updatedImports, changeTracker, deprecatedImports);
550
- findImports(sourceFile, updatedImports);
551
- for (const [originalNode, rewrittenNode] of updatedImports.entries()) {
552
- if (rewrittenNode.elements.length > 0) {
553
- changeTracker.replaceNode(originalNode, rewrittenNode);
554
- } else {
555
- const importDeclaration = originalNode.parent.parent;
556
- changeTracker.removeNode(importDeclaration);
557
- }
558
- }
559
- for (const [originalNode, rewrittenNode] of updatedImplements.entries()) {
560
- if (rewrittenNode.types.length > 0) {
561
- changeTracker.replaceNode(originalNode, rewrittenNode);
562
- } else {
563
- changeTracker.removeNode(originalNode);
564
- }
565
- }
566
- for (const changesInFile of changeTracker.recordChanges().values()) {
567
- for (const change of changesInFile) {
568
- rewriteFn(change.start, (_a = change.removeLength) != null ? _a : 0, change.text);
569
- }
570
- }
571
- }
572
- function findImports(sourceFile, updatedImports) {
573
- var _a;
574
- for (const deprecatedInterface of deprecatedInterfaces) {
575
- const importSpecifier = getImportSpecifier(sourceFile, routerModule, deprecatedInterface);
576
- if (importSpecifier === null)
577
- continue;
578
- const namedImports = closestNode(importSpecifier, import_typescript7.default.isNamedImports);
579
- if (namedImports !== null) {
580
- const importToUpdate = (_a = updatedImports.get(namedImports)) != null ? _a : namedImports;
581
- const rewrittenNamedImports = removeSymbolFromNamedImports(importToUpdate, importSpecifier);
582
- updatedImports.set(namedImports, rewrittenNamedImports);
583
- }
584
- }
585
- }
586
- function findUsages(sourceFile, typeChecker, updatedImplements, updatedImports, changeTracker, deprecatedImports) {
587
- const visitNode = (node) => {
588
- if (import_typescript7.default.isImportSpecifier(node)) {
589
- return;
590
- }
591
- if ((import_typescript7.default.isInterfaceDeclaration(node) || import_typescript7.default.isClassLike(node)) && node.heritageClauses) {
592
- for (const heritageClause of node.heritageClauses) {
593
- visitHeritageClause(heritageClause, typeChecker, updatedImplements, deprecatedImports);
594
- }
595
- import_typescript7.default.forEachChild(node, visitNode);
596
- } else if (import_typescript7.default.isTypeReferenceNode(node)) {
597
- visitTypeReference(node, typeChecker, changeTracker, sourceFile, updatedImports, deprecatedImports);
598
- } else {
599
- import_typescript7.default.forEachChild(node, visitNode);
600
- }
601
- };
602
- import_typescript7.default.forEachChild(sourceFile, visitNode);
603
- }
604
- function visitHeritageClause(heritageClause, typeChecker, updatedImplements, deprecatedImports) {
605
- const visitChildren = (node) => {
606
- var _a;
607
- if (import_typescript7.default.isIdentifier(node)) {
608
- if (deprecatedImports.some((importSpecifier) => importSpecifier.name.text === node.text)) {
609
- const importIdentifier = getImportOfIdentifier(typeChecker, node);
610
- if ((importIdentifier == null ? void 0 : importIdentifier.importModule) === routerModule && deprecatedInterfaces.has(importIdentifier.name)) {
611
- const heritageClauseToUpdate = (_a = updatedImplements.get(heritageClause)) != null ? _a : heritageClause;
612
- const mostRecentUpdate = import_typescript7.default.factory.updateHeritageClause(heritageClauseToUpdate, heritageClauseToUpdate.types.filter((current) => {
613
- return !import_typescript7.default.isExpressionWithTypeArguments(current) || current.expression !== node;
614
- }));
615
- updatedImplements.set(heritageClause, mostRecentUpdate);
616
- }
617
- }
618
- }
619
- import_typescript7.default.forEachChild(node, visitChildren);
620
- };
621
- import_typescript7.default.forEachChild(heritageClause, visitChildren);
622
- }
623
- function visitTypeReference(typeReference, typeChecker, changeTracker, sourceFile, updatedImports, deprecatedImports) {
624
- const visitTypeReferenceChildren = (node) => {
625
- var _a;
626
- if (import_typescript7.default.isIdentifier(node) && deprecatedImports.some((importSpecifier) => importSpecifier.name.text === node.text)) {
627
- const importIdentifier = getImportOfIdentifier(typeChecker, node);
628
- if ((importIdentifier == null ? void 0 : importIdentifier.importModule) === routerModule && deprecatedInterfaces.has(importIdentifier.name)) {
629
- const { name: interfaceName } = importIdentifier;
630
- const functionTypeName = `${interfaceName}Fn`;
631
- const classFunctionName = `${interfaceName.charAt(0).toLocaleLowerCase()}${interfaceName.slice(1)}`;
632
- const replacement = import_typescript7.default.factory.createTypeLiteralNode([import_typescript7.default.factory.createPropertySignature(void 0, import_typescript7.default.factory.createIdentifier(classFunctionName), void 0, import_typescript7.default.factory.createTypeReferenceNode(import_typescript7.default.factory.createIdentifier(functionTypeName), import_typescript7.default.isTypeReferenceNode(node.parent) ? node.parent.typeArguments : void 0))]);
633
- changeTracker.replaceNode(node.parent, replacement);
634
- const importSpecifier = getImportSpecifier(sourceFile, routerModule, interfaceName);
635
- if (importSpecifier === null)
636
- return;
637
- const namedImports = closestNode(importSpecifier, import_typescript7.default.isNamedImports);
638
- if (namedImports !== null) {
639
- const importToUpdate = (_a = updatedImports.get(namedImports)) != null ? _a : namedImports;
640
- const rewrittenNamedImports = replaceImport(importToUpdate, interfaceName, functionTypeName);
641
- updatedImports.set(namedImports, rewrittenNamedImports);
642
- }
643
- }
644
- }
645
- import_typescript7.default.forEachChild(node, visitTypeReferenceChildren);
646
- };
647
- import_typescript7.default.forEachChild(typeReference, visitTypeReferenceChildren);
648
- }
649
-
650
- // bazel-out/darwin_arm64-fastbuild/bin/packages/core/schematics/migrations/guard-and-resolve-interfaces/index.mjs
651
- function guard_and_resolve_interfaces_default() {
652
- return (tree) => __async(this, null, function* () {
653
- const { buildPaths, testPaths } = yield getProjectTsConfigPaths(tree);
654
- const basePath = process.cwd();
655
- const allPaths = [...buildPaths, ...testPaths];
656
- if (!allPaths.length) {
657
- throw new import_schematics.SchematicsException("Could not find any tsconfig file. Cannot run the guard and resolve interfaces migration.");
658
- }
659
- for (const tsconfigPath of allPaths) {
660
- runGuardAndResolveInterfacesMigration(tree, tsconfigPath, basePath);
661
- }
662
- });
663
- }
664
- function runGuardAndResolveInterfacesMigration(tree, tsconfigPath, basePath) {
665
- const program = createMigrationProgram(tree, tsconfigPath, basePath);
666
- const typeChecker = program.getTypeChecker();
667
- const sourceFiles = program.getSourceFiles().filter((sourceFile) => canMigrateFile(basePath, sourceFile, program));
668
- for (const sourceFile of sourceFiles) {
669
- let update = null;
670
- const rewriter = (startPos, width, text) => {
671
- if (update === null) {
672
- update = tree.beginUpdate((0, import_path3.relative)(basePath, sourceFile.fileName));
673
- }
674
- update.remove(startPos, width);
675
- if (text !== null) {
676
- update.insertLeft(startPos, text);
677
- }
678
- };
679
- migrateFile(sourceFile, typeChecker, rewriter);
680
- if (update !== null) {
681
- tree.commitUpdate(update);
682
- }
683
- }
684
- }
685
- // Annotate the CommonJS export names for ESM import in node:
686
- 0 && (module.exports = {});
687
- /**
688
- * @license
689
- * Copyright Google LLC All Rights Reserved.
690
- *
691
- * Use of this source code is governed by an MIT-style license that can be
692
- * found in the LICENSE file at https://angular.io/license
693
- */
694
- //# sourceMappingURL=bundle.js.map