@angular/cli 21.1.0-next.0 → 21.1.0-next.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/lib/code-examples.db +0 -0
  2. package/package.json +17 -17
  3. package/src/commands/add/cli.js +129 -87
  4. package/src/commands/add/cli.js.map +1 -1
  5. package/src/commands/mcp/cli.js +4 -1
  6. package/src/commands/mcp/cli.js.map +1 -1
  7. package/src/commands/mcp/{dev-server.d.ts → devserver.d.ts} +4 -4
  8. package/src/commands/mcp/{dev-server.js → devserver.js} +14 -14
  9. package/src/commands/mcp/devserver.js.map +1 -0
  10. package/src/commands/mcp/host.d.ts +27 -0
  11. package/src/commands/mcp/host.js +8 -0
  12. package/src/commands/mcp/host.js.map +1 -1
  13. package/src/commands/mcp/mcp-server.d.ts +50 -9
  14. package/src/commands/mcp/mcp-server.js +26 -9
  15. package/src/commands/mcp/mcp-server.js.map +1 -1
  16. package/src/commands/mcp/resources/ai-tutor.md +199 -3
  17. package/src/commands/mcp/tools/ai-tutor.d.ts +5 -1
  18. package/src/commands/mcp/tools/best-practices.d.ts +3 -1
  19. package/src/commands/mcp/tools/best-practices.js.map +1 -1
  20. package/src/commands/mcp/tools/build.d.ts +8 -19
  21. package/src/commands/mcp/tools/build.js +2 -2
  22. package/src/commands/mcp/tools/build.js.map +1 -1
  23. package/src/commands/mcp/tools/devserver/devserver-start.d.ts +30 -0
  24. package/src/commands/mcp/tools/devserver/{start-devserver.js → devserver-start.js} +26 -27
  25. package/src/commands/mcp/tools/devserver/devserver-start.js.map +1 -0
  26. package/src/commands/mcp/tools/devserver/devserver-stop.d.ts +39 -0
  27. package/src/commands/mcp/tools/devserver/{stop-devserver.js → devserver-stop.js} +13 -13
  28. package/src/commands/mcp/tools/devserver/{stop-devserver.js.map → devserver-stop.js.map} +1 -1
  29. package/src/commands/mcp/tools/devserver/devserver-wait-for-build.d.ts +41 -0
  30. package/src/commands/mcp/tools/devserver/{wait-for-devserver-build.js → devserver-wait-for-build.js} +16 -16
  31. package/src/commands/mcp/tools/devserver/{wait-for-devserver-build.js.map → devserver-wait-for-build.js.map} +1 -1
  32. package/src/commands/mcp/tools/doc-search.d.ts +1 -11
  33. package/src/commands/mcp/tools/examples/database-discovery.d.ts +34 -0
  34. package/src/commands/mcp/tools/examples/database-discovery.js +87 -0
  35. package/src/commands/mcp/tools/examples/database-discovery.js.map +1 -0
  36. package/src/commands/mcp/tools/examples/database.d.ts +35 -0
  37. package/src/commands/mcp/tools/examples/database.js +125 -0
  38. package/src/commands/mcp/tools/examples/database.js.map +1 -0
  39. package/src/commands/mcp/tools/examples/index.d.ts +26 -0
  40. package/src/commands/mcp/tools/examples/index.js +149 -0
  41. package/src/commands/mcp/tools/examples/index.js.map +1 -0
  42. package/src/commands/mcp/tools/examples/query-escaper.d.ts +20 -0
  43. package/src/commands/mcp/tools/examples/query-escaper.js +68 -0
  44. package/src/commands/mcp/tools/examples/query-escaper.js.map +1 -0
  45. package/src/commands/mcp/tools/examples/runtime-database.d.ts +10 -0
  46. package/src/commands/mcp/tools/examples/runtime-database.js +192 -0
  47. package/src/commands/mcp/tools/examples/runtime-database.js.map +1 -0
  48. package/src/commands/mcp/tools/examples/schemas.d.ts +29 -0
  49. package/src/commands/mcp/tools/examples/schemas.js +101 -0
  50. package/src/commands/mcp/tools/examples/schemas.js.map +1 -0
  51. package/src/commands/mcp/tools/examples/utils.d.ts +14 -0
  52. package/src/commands/mcp/tools/examples/utils.js +31 -0
  53. package/src/commands/mcp/tools/examples/utils.js.map +1 -0
  54. package/src/commands/mcp/tools/modernize.d.ts +8 -18
  55. package/src/commands/mcp/tools/modernize.js +1 -1
  56. package/src/commands/mcp/tools/modernize.js.map +1 -1
  57. package/src/commands/mcp/tools/onpush-zoneless-migration/zoneless-migration.d.ts +3 -1
  58. package/src/commands/mcp/tools/projects.d.ts +23 -64
  59. package/src/commands/mcp/tools/tool-registry.d.ts +6 -5
  60. package/src/commands/mcp/tools/tool-registry.js.map +1 -1
  61. package/src/commands/update/cli.d.ts +0 -24
  62. package/src/commands/update/cli.js +39 -447
  63. package/src/commands/update/cli.js.map +1 -1
  64. package/src/commands/update/utilities/cli-version.d.ts +48 -0
  65. package/src/commands/update/utilities/cli-version.js +196 -0
  66. package/src/commands/update/utilities/cli-version.js.map +1 -0
  67. package/src/commands/update/utilities/constants.d.ts +12 -0
  68. package/src/commands/update/utilities/constants.js +16 -0
  69. package/src/commands/update/utilities/constants.js.map +1 -0
  70. package/src/commands/update/utilities/git.d.ts +34 -0
  71. package/src/commands/update/utilities/git.js +115 -0
  72. package/src/commands/update/utilities/git.js.map +1 -0
  73. package/src/commands/update/utilities/migration.d.ts +32 -0
  74. package/src/commands/update/utilities/migration.js +257 -0
  75. package/src/commands/update/utilities/migration.js.map +1 -0
  76. package/src/package-managers/error.d.ts +12 -0
  77. package/src/package-managers/host.d.ts +6 -0
  78. package/src/package-managers/host.js +8 -3
  79. package/src/package-managers/host.js.map +1 -1
  80. package/src/package-managers/package-manager-descriptor.d.ts +33 -9
  81. package/src/package-managers/package-manager-descriptor.js +28 -8
  82. package/src/package-managers/package-manager-descriptor.js.map +1 -1
  83. package/src/package-managers/package-manager.d.ts +21 -3
  84. package/src/package-managers/package-manager.js +133 -10
  85. package/src/package-managers/package-manager.js.map +1 -1
  86. package/src/package-managers/parsers.d.ts +69 -4
  87. package/src/package-managers/parsers.js +231 -32
  88. package/src/package-managers/parsers.js.map +1 -1
  89. package/src/utilities/version.js +1 -1
  90. package/src/commands/mcp/dev-server.js.map +0 -1
  91. package/src/commands/mcp/tools/devserver/start-devserver.d.ts +0 -41
  92. package/src/commands/mcp/tools/devserver/start-devserver.js.map +0 -1
  93. package/src/commands/mcp/tools/devserver/stop-devserver.d.ts +0 -49
  94. package/src/commands/mcp/tools/devserver/wait-for-devserver-build.d.ts +0 -47
  95. package/src/commands/mcp/tools/examples.d.ts +0 -58
  96. package/src/commands/mcp/tools/examples.js +0 -654
  97. package/src/commands/mcp/tools/examples.js.map +0 -1
@@ -0,0 +1,257 @@
1
+ "use strict";
2
+ /**
3
+ * @license
4
+ * Copyright Google LLC All Rights Reserved.
5
+ *
6
+ * Use of this source code is governed by an MIT-style license that can be
7
+ * found in the LICENSE file at https://angular.dev/license
8
+ */
9
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ var desc = Object.getOwnPropertyDescriptor(m, k);
12
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
+ desc = { enumerable: true, get: function() { return m[k]; } };
14
+ }
15
+ Object.defineProperty(o, k2, desc);
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
22
+ }) : function(o, v) {
23
+ o["default"] = v;
24
+ });
25
+ var __importStar = (this && this.__importStar) || (function () {
26
+ var ownKeys = function(o) {
27
+ ownKeys = Object.getOwnPropertyNames || function (o) {
28
+ var ar = [];
29
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
30
+ return ar;
31
+ };
32
+ return ownKeys(o);
33
+ };
34
+ return function (mod) {
35
+ if (mod && mod.__esModule) return mod;
36
+ var result = {};
37
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
38
+ __setModuleDefault(result, mod);
39
+ return result;
40
+ };
41
+ })();
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ exports.executeSchematic = executeSchematic;
44
+ exports.executeMigration = executeMigration;
45
+ exports.executeMigrations = executeMigrations;
46
+ exports.commitChanges = commitChanges;
47
+ const schematics_1 = require("@angular-devkit/schematics");
48
+ const semver = __importStar(require("semver"));
49
+ const schematic_workflow_1 = require("../../../command-builder/utilities/schematic-workflow");
50
+ const color_1 = require("../../../utilities/color");
51
+ const error_1 = require("../../../utilities/error");
52
+ const log_file_1 = require("../../../utilities/log-file");
53
+ const prompt_1 = require("../../../utilities/prompt");
54
+ const tty_1 = require("../../../utilities/tty");
55
+ const cli_version_1 = require("./cli-version");
56
+ const git_1 = require("./git");
57
+ async function executeSchematic(workflow, logger, collection, schematic, options = {}) {
58
+ const workflowSubscription = (0, schematic_workflow_1.subscribeToWorkflow)(workflow, logger);
59
+ // TODO: Allow passing a schematic instance directly
60
+ try {
61
+ await workflow
62
+ .execute({
63
+ collection,
64
+ schematic,
65
+ options,
66
+ logger,
67
+ })
68
+ .toPromise();
69
+ return { success: !workflowSubscription.error, files: workflowSubscription.files };
70
+ }
71
+ catch (e) {
72
+ if (e instanceof schematics_1.UnsuccessfulWorkflowExecution) {
73
+ logger.error(`${color_1.figures.cross} Migration failed. See above for further details.\n`);
74
+ }
75
+ else {
76
+ (0, error_1.assertIsError)(e);
77
+ const logPath = (0, log_file_1.writeErrorToLogFile)(e);
78
+ logger.fatal(`${color_1.figures.cross} Migration failed: ${e.message}\n` +
79
+ ` See "${logPath}" for further details.\n`);
80
+ }
81
+ return { success: false, files: workflowSubscription.files };
82
+ }
83
+ finally {
84
+ workflowSubscription.unsubscribe();
85
+ }
86
+ }
87
+ /**
88
+ * @return Whether or not the migration was performed successfully.
89
+ */
90
+ async function executeMigration(workflow, logger, packageName, collectionPath, migrationName, commit = false) {
91
+ const collection = workflow.engine.createCollection(collectionPath);
92
+ const name = collection.listSchematicNames().find((name) => name === migrationName);
93
+ if (!name) {
94
+ logger.error(`Cannot find migration '${migrationName}' in '${packageName}'.`);
95
+ return 1;
96
+ }
97
+ logger.info(color_1.colors.cyan(`** Executing '${migrationName}' of package '${packageName}' **\n`));
98
+ const schematic = workflow.engine.createSchematic(name, collection);
99
+ return executePackageMigrations(workflow, logger, [schematic.description], packageName, commit);
100
+ }
101
+ /**
102
+ * @return Whether or not the migrations were performed successfully.
103
+ */
104
+ async function executeMigrations(workflow, logger, packageName, collectionPath, from, to, commit = false) {
105
+ const collection = workflow.engine.createCollection(collectionPath);
106
+ const migrationRange = new semver.Range('>' + (semver.prerelease(from) ? from.split('-')[0] + '-0' : from) + ' <=' + to.split('-')[0]);
107
+ const requiredMigrations = [];
108
+ const optionalMigrations = [];
109
+ for (const name of collection.listSchematicNames()) {
110
+ const schematic = workflow.engine.createSchematic(name, collection);
111
+ const description = schematic.description;
112
+ description.version = (0, cli_version_1.coerceVersionNumber)(description.version);
113
+ if (!description.version) {
114
+ continue;
115
+ }
116
+ if (semver.satisfies(description.version, migrationRange, { includePrerelease: true })) {
117
+ (description.optional ? optionalMigrations : requiredMigrations).push(description);
118
+ }
119
+ }
120
+ if (requiredMigrations.length === 0 && optionalMigrations.length === 0) {
121
+ return 0;
122
+ }
123
+ // Required migrations
124
+ if (requiredMigrations.length) {
125
+ logger.info(color_1.colors.cyan(`** Executing migrations of package '${packageName}' **\n`));
126
+ requiredMigrations.sort((a, b) => semver.compare(a.version, b.version) || a.name.localeCompare(b.name));
127
+ const result = await executePackageMigrations(workflow, logger, requiredMigrations, packageName, commit);
128
+ if (result === 1) {
129
+ return 1;
130
+ }
131
+ }
132
+ // Optional migrations
133
+ if (optionalMigrations.length) {
134
+ logger.info(color_1.colors.magenta(`** Optional migrations of package '${packageName}' **\n`));
135
+ optionalMigrations.sort((a, b) => semver.compare(a.version, b.version) || a.name.localeCompare(b.name));
136
+ const migrationsToRun = await getOptionalMigrationsToRun(logger, optionalMigrations, packageName);
137
+ if (migrationsToRun?.length) {
138
+ return executePackageMigrations(workflow, logger, migrationsToRun, packageName, commit);
139
+ }
140
+ }
141
+ return 0;
142
+ }
143
+ async function executePackageMigrations(workflow, logger, migrations, packageName, commit = false) {
144
+ for (const migration of migrations) {
145
+ const { title, description } = getMigrationTitleAndDescription(migration);
146
+ logger.info(color_1.colors.cyan(color_1.figures.pointer) + ' ' + color_1.colors.bold(title));
147
+ if (description) {
148
+ logger.info(' ' + description);
149
+ }
150
+ const { success, files } = await executeSchematic(workflow, logger, migration.collection.name, migration.name);
151
+ if (!success) {
152
+ return 1;
153
+ }
154
+ let modifiedFilesText;
155
+ switch (files.size) {
156
+ case 0:
157
+ modifiedFilesText = 'No changes made';
158
+ break;
159
+ case 1:
160
+ modifiedFilesText = '1 file modified';
161
+ break;
162
+ default:
163
+ modifiedFilesText = `${files.size} files modified`;
164
+ break;
165
+ }
166
+ logger.info(` Migration completed (${modifiedFilesText}).`);
167
+ // Commit migration
168
+ if (commit) {
169
+ const commitPrefix = `${packageName} migration - ${migration.name}`;
170
+ const commitMessage = migration.description
171
+ ? `${commitPrefix}\n\n${migration.description}`
172
+ : commitPrefix;
173
+ const committed = commitChanges(logger, commitMessage);
174
+ if (!committed) {
175
+ // Failed to commit, something went wrong. Abort the update.
176
+ return 1;
177
+ }
178
+ }
179
+ logger.info(''); // Extra trailing newline.
180
+ }
181
+ return 0;
182
+ }
183
+ /**
184
+ * @return Whether or not the commit was successful.
185
+ */
186
+ function commitChanges(logger, message) {
187
+ // Check if a commit is needed.
188
+ let commitNeeded;
189
+ try {
190
+ commitNeeded = (0, git_1.hasChangesToCommit)();
191
+ }
192
+ catch (err) {
193
+ logger.error(` Failed to read Git tree:\n${err.stderr}`);
194
+ return false;
195
+ }
196
+ if (!commitNeeded) {
197
+ logger.info(' No changes to commit after migration.');
198
+ return true;
199
+ }
200
+ // Commit changes and abort on error.
201
+ try {
202
+ (0, git_1.createCommit)(message);
203
+ }
204
+ catch (err) {
205
+ logger.error(`Failed to commit update (${message}):\n${err.stderr}`);
206
+ return false;
207
+ }
208
+ // Notify user of the commit.
209
+ const hash = (0, git_1.findCurrentGitSha)();
210
+ const shortMessage = message.split('\n')[0];
211
+ if (hash) {
212
+ logger.info(` Committed migration step (${(0, git_1.getShortHash)(hash)}): ${shortMessage}.`);
213
+ }
214
+ else {
215
+ // Commit was successful, but reading the hash was not. Something weird happened,
216
+ // but nothing that would stop the update. Just log the weirdness and continue.
217
+ logger.info(` Committed migration step: ${shortMessage}.`);
218
+ logger.warn(' Failed to look up hash of most recent commit, continuing anyways.');
219
+ }
220
+ return true;
221
+ }
222
+ async function getOptionalMigrationsToRun(logger, optionalMigrations, packageName) {
223
+ const numberOfMigrations = optionalMigrations.length;
224
+ logger.info(`This package has ${numberOfMigrations} optional migration${numberOfMigrations > 1 ? 's' : ''} that can be executed.`);
225
+ if (!(0, tty_1.isTTY)()) {
226
+ for (const migration of optionalMigrations) {
227
+ const { title } = getMigrationTitleAndDescription(migration);
228
+ logger.info(color_1.colors.cyan(color_1.figures.pointer) + ' ' + color_1.colors.bold(title));
229
+ logger.info(color_1.colors.gray(` ng update ${packageName} --name ${migration.name}`));
230
+ logger.info(''); // Extra trailing newline.
231
+ }
232
+ return undefined;
233
+ }
234
+ logger.info('Optional migrations may be skipped and executed after the update process, if preferred.');
235
+ logger.info(''); // Extra trailing newline.
236
+ const answer = await (0, prompt_1.askChoices)(`Select the migrations that you'd like to run`, optionalMigrations.map((migration) => {
237
+ const { title, documentation } = getMigrationTitleAndDescription(migration);
238
+ return {
239
+ name: `[${color_1.colors.white(migration.name)}] ${title}${documentation ? ` (${documentation})` : ''}`,
240
+ value: migration.name,
241
+ checked: migration.recommended,
242
+ };
243
+ }), null);
244
+ logger.info(''); // Extra trailing newline.
245
+ return optionalMigrations.filter(({ name }) => answer?.includes(name));
246
+ }
247
+ function getMigrationTitleAndDescription(migration) {
248
+ const [title, ...description] = migration.description.split('. ');
249
+ return {
250
+ title: title.endsWith('.') ? title : title + '.',
251
+ description: description.join('.\n '),
252
+ documentation: migration.documentation
253
+ ? new URL(migration.documentation, 'https://angular.dev').href
254
+ : undefined,
255
+ };
256
+ }
257
+ //# sourceMappingURL=migration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration.js","sourceRoot":"","sources":["migration.ts"],"names":[],"mappings":"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"}
@@ -29,3 +29,15 @@ export declare class PackageManagerError extends Error {
29
29
  */
30
30
  constructor(message: string, stdout: string, stderr: string, exitCode: number | null);
31
31
  }
32
+ /**
33
+ * Represents structured information about an error returned by a package manager command.
34
+ * This is a data interface, not an `Error` subclass.
35
+ */
36
+ export interface ErrorInfo {
37
+ /** A specific error code (e.g. 'E404', 'EACCES'). */
38
+ readonly code: string;
39
+ /** A short, human-readable summary of the error. */
40
+ readonly summary: string;
41
+ /** An optional, detailed description of the error. */
42
+ readonly detail?: string;
43
+ }
@@ -22,6 +22,12 @@ export interface Host {
22
22
  * @returns A promise that resolves to an array of file and directory names.
23
23
  */
24
24
  readdir(path: string): Promise<string[]>;
25
+ /**
26
+ * Reads the content of a file.
27
+ * @param path The path to the file.
28
+ * @returns A promise that resolves to the file content as a string.
29
+ */
30
+ readFile(path: string): Promise<string>;
25
31
  /**
26
32
  * Creates a new, unique temporary directory.
27
33
  * @returns A promise that resolves to the absolute path of the created directory.
@@ -25,14 +25,16 @@ const error_1 = require("./error");
25
25
  exports.NodeJS_HOST = {
26
26
  stat: promises_1.stat,
27
27
  readdir: promises_1.readdir,
28
+ readFile: (path) => (0, promises_1.readFile)(path, { encoding: 'utf8' }),
28
29
  writeFile: promises_1.writeFile,
29
30
  createTempDirectory: () => (0, promises_1.mkdtemp)((0, node_path_1.join)((0, node_os_1.tmpdir)(), 'angular-cli-')),
30
31
  deleteDirectory: (path) => (0, promises_1.rm)(path, { recursive: true, force: true }),
31
32
  runCommand: async (command, args, options = {}) => {
32
33
  const signal = options.timeout ? AbortSignal.timeout(options.timeout) : undefined;
34
+ const isWin32 = (0, node_os_1.platform)() === 'win32';
33
35
  return new Promise((resolve, reject) => {
34
- const childProcess = (0, node_child_process_1.spawn)(command, args, {
35
- shell: false,
36
+ const spawnOptions = {
37
+ shell: isWin32,
36
38
  stdio: options.stdio ?? 'pipe',
37
39
  signal,
38
40
  cwd: options.cwd,
@@ -40,7 +42,10 @@ exports.NodeJS_HOST = {
40
42
  ...process.env,
41
43
  ...options.env,
42
44
  },
43
- });
45
+ };
46
+ const childProcess = isWin32
47
+ ? (0, node_child_process_1.spawn)(`${command} ${args.join(' ')}`, spawnOptions)
48
+ : (0, node_child_process_1.spawn)(command, args, spawnOptions);
44
49
  let stdout = '';
45
50
  childProcess.stdout?.on('data', (data) => (stdout += data.toString()));
46
51
  let stderr = '';
@@ -1 +1 @@
1
- {"version":3,"file":"host.js","sourceRoot":"","sources":["host.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAEH;;;;;GAKG;AAEH,2DAA2C;AAE3C,+CAAyE;AACzE,qCAAiC;AACjC,yCAAiC;AACjC,mCAA8C;AA6D9C;;GAEG;AACU,QAAA,WAAW,GAAS;IAC/B,IAAI,EAAJ,eAAI;IACJ,OAAO,EAAP,kBAAO;IACP,SAAS,EAAT,oBAAS;IACT,mBAAmB,EAAE,GAAG,EAAE,CAAC,IAAA,kBAAO,EAAC,IAAA,gBAAI,EAAC,IAAA,gBAAM,GAAE,EAAE,cAAc,CAAC,CAAC;IAClE,eAAe,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,IAAA,aAAE,EAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAC7E,UAAU,EAAE,KAAK,EACf,OAAe,EACf,IAAuB,EACvB,UAKI,EAAE,EACuC,EAAE;QAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAElF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,YAAY,GAAG,IAAA,0BAAK,EAAC,OAAO,EAAE,IAAI,EAAE;gBACxC,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,MAAM;gBAC9B,MAAM;gBACN,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,GAAG,EAAE;oBACH,GAAG,OAAO,CAAC,GAAG;oBACd,GAAG,OAAO,CAAC,GAAG;iBACf;aACF,CAAC,CAAC;YAEH,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YAEvE,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YAEvE,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;gBAChC,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;oBACf,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;gBAC9B,CAAC;qBAAM,CAAC;oBACN,MAAM,OAAO,GAAG,4BAA4B,IAAI,GAAG,CAAC;oBACpD,MAAM,CAAC,IAAI,2BAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;gBACjE,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBAC/B,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;oBAC9B,MAAM,OAAO,GAAG,oBAAoB,CAAC;oBACrC,MAAM,CAAC,IAAI,2BAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;oBAE/D,OAAO;gBACT,CAAC;gBACD,MAAM,OAAO,GAAG,8BAA8B,GAAG,CAAC,OAAO,EAAE,CAAC;gBAC5D,MAAM,CAAC,IAAI,2BAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;YACjE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"host.js","sourceRoot":"","sources":["host.ts"],"names":[],"mappings":"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"}
@@ -10,10 +10,11 @@
10
10
  * supported package managers. It is the single source of truth for all
11
11
  * package-manager-specific commands, flags, and output parsing.
12
12
  */
13
+ import { ErrorInfo } from './error';
13
14
  import { Logger } from './logger';
14
15
  import { PackageManifest, PackageMetadata } from './package-metadata';
15
16
  import { InstalledPackage } from './package-tree';
16
- import { parseNpmLikeDependencies, parseNpmLikeManifest, parseNpmLikeMetadata, parseYarnClassicDependencies, parseYarnLegacyManifest, parseYarnModernDependencies } from './parsers';
17
+ import { parseNpmLikeDependencies, parseNpmLikeError, parseNpmLikeManifest, parseNpmLikeMetadata, parseYarnClassicDependencies, parseYarnClassicError, parseYarnClassicManifest, parseYarnClassicMetadata, parseYarnModernDependencies } from './parsers';
17
18
  /**
18
19
  * An interface that describes the commands and properties of a package manager.
19
20
  */
@@ -49,6 +50,8 @@ export interface PackageManagerDescriptor {
49
50
  readonly listDependenciesCommand: readonly string[];
50
51
  /** The command to fetch the registry manifest of a package. */
51
52
  readonly getManifestCommand: readonly string[];
53
+ /** Whether a specific version lookup is needed prior to fetching a registry manifest. */
54
+ readonly requiresManifestVersionLookup?: boolean;
52
55
  /** A function that formats the arguments for field-filtered registry views. */
53
56
  readonly viewCommandFieldArgFormatter?: (fields: readonly string[]) => string[];
54
57
  /** A collection of functions to parse the output of specific commands. */
@@ -56,13 +59,23 @@ export interface PackageManagerDescriptor {
56
59
  /** A function to parse the output of `listDependenciesCommand`. */
57
60
  listDependencies: (stdout: string, logger?: Logger) => Map<string, InstalledPackage>;
58
61
  /** A function to parse the output of `getManifestCommand` for a specific version. */
59
- getPackageManifest: (stdout: string, logger?: Logger) => PackageManifest | null;
62
+ getRegistryManifest: (stdout: string, logger?: Logger) => PackageManifest | null;
60
63
  /** A function to parse the output of `getManifestCommand` for the full package metadata. */
61
64
  getRegistryMetadata: (stdout: string, logger?: Logger) => PackageMetadata | null;
65
+ /** A function to parse the output when a command fails. */
66
+ getError?: (output: string, logger?: Logger) => ErrorInfo | null;
62
67
  };
68
+ /** A function that checks if a structured error represents a "package not found" error. */
69
+ readonly isNotFound: (error: ErrorInfo) => boolean;
63
70
  }
64
71
  /** A type that represents the name of a supported package manager. */
65
72
  export type PackageManagerName = keyof typeof SUPPORTED_PACKAGE_MANAGERS;
73
+ /**
74
+ * A shared function to check if a structured error represents a "package not found" error.
75
+ * @param error The structured error to check.
76
+ * @returns True if the error code is a known "not found" code, false otherwise.
77
+ */
78
+ declare function isKnownNotFound(error: ErrorInfo): boolean;
66
79
  /**
67
80
  * A map of supported package managers to their descriptors.
68
81
  * This is the single source of truth for all package-manager-specific
@@ -95,9 +108,11 @@ export declare const SUPPORTED_PACKAGE_MANAGERS: {
95
108
  viewCommandFieldArgFormatter: (fields: readonly string[]) => string[];
96
109
  outputParsers: {
97
110
  listDependencies: typeof parseNpmLikeDependencies;
98
- getPackageManifest: typeof parseNpmLikeManifest;
111
+ getRegistryManifest: typeof parseNpmLikeManifest;
99
112
  getRegistryMetadata: typeof parseNpmLikeMetadata;
113
+ getError: typeof parseNpmLikeError;
100
114
  };
115
+ isNotFound: typeof isKnownNotFound;
101
116
  };
102
117
  yarn: {
103
118
  binary: string;
@@ -121,9 +136,11 @@ export declare const SUPPORTED_PACKAGE_MANAGERS: {
121
136
  viewCommandFieldArgFormatter: (fields: readonly string[]) => string[];
122
137
  outputParsers: {
123
138
  listDependencies: typeof parseYarnModernDependencies;
124
- getPackageManifest: typeof parseNpmLikeManifest;
139
+ getRegistryManifest: typeof parseNpmLikeManifest;
125
140
  getRegistryMetadata: typeof parseNpmLikeMetadata;
141
+ getError: typeof parseNpmLikeError;
126
142
  };
143
+ isNotFound: typeof isKnownNotFound;
127
144
  };
128
145
  'yarn-classic': {
129
146
  binary: string;
@@ -142,11 +159,14 @@ export declare const SUPPORTED_PACKAGE_MANAGERS: {
142
159
  versionCommand: string[];
143
160
  listDependenciesCommand: string[];
144
161
  getManifestCommand: string[];
162
+ requiresManifestVersionLookup: true;
145
163
  outputParsers: {
146
164
  listDependencies: typeof parseYarnClassicDependencies;
147
- getPackageManifest: typeof parseYarnLegacyManifest;
148
- getRegistryMetadata: typeof parseNpmLikeMetadata;
165
+ getRegistryManifest: typeof parseYarnClassicManifest;
166
+ getRegistryMetadata: typeof parseYarnClassicMetadata;
167
+ getError: typeof parseYarnClassicError;
149
168
  };
169
+ isNotFound: typeof isKnownNotFound;
150
170
  };
151
171
  pnpm: {
152
172
  binary: string;
@@ -168,9 +188,11 @@ export declare const SUPPORTED_PACKAGE_MANAGERS: {
168
188
  viewCommandFieldArgFormatter: (fields: readonly string[]) => string[];
169
189
  outputParsers: {
170
190
  listDependencies: typeof parseNpmLikeDependencies;
171
- getPackageManifest: typeof parseNpmLikeManifest;
191
+ getRegistryManifest: typeof parseNpmLikeManifest;
172
192
  getRegistryMetadata: typeof parseNpmLikeMetadata;
193
+ getError: typeof parseNpmLikeError;
173
194
  };
195
+ isNotFound: typeof isKnownNotFound;
174
196
  };
175
197
  bun: {
176
198
  binary: string;
@@ -189,12 +211,13 @@ export declare const SUPPORTED_PACKAGE_MANAGERS: {
189
211
  versionCommand: string[];
190
212
  listDependenciesCommand: string[];
191
213
  getManifestCommand: string[];
192
- viewCommandFieldArgFormatter: (fields: readonly string[]) => string[];
193
214
  outputParsers: {
194
215
  listDependencies: typeof parseNpmLikeDependencies;
195
- getPackageManifest: typeof parseNpmLikeManifest;
216
+ getRegistryManifest: typeof parseNpmLikeManifest;
196
217
  getRegistryMetadata: typeof parseNpmLikeMetadata;
218
+ getError: typeof parseNpmLikeError;
197
219
  };
220
+ isNotFound: typeof isKnownNotFound;
198
221
  };
199
222
  };
200
223
  /**
@@ -202,3 +225,4 @@ export declare const SUPPORTED_PACKAGE_MANAGERS: {
202
225
  * This is a best-effort ordering based on estimated Angular community usage and default presence.
203
226
  */
204
227
  export declare const PACKAGE_MANAGER_PRECEDENCE: readonly PackageManagerName[];
228
+ export {};
@@ -9,6 +9,16 @@
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.PACKAGE_MANAGER_PRECEDENCE = exports.SUPPORTED_PACKAGE_MANAGERS = void 0;
11
11
  const parsers_1 = require("./parsers");
12
+ /** A set of error codes that are known to indicate a "package not found" error. */
13
+ const NOT_FOUND_ERROR_CODES = new Set(['E404']);
14
+ /**
15
+ * A shared function to check if a structured error represents a "package not found" error.
16
+ * @param error The structured error to check.
17
+ * @returns True if the error code is a known "not found" code, false otherwise.
18
+ */
19
+ function isKnownNotFound(error) {
20
+ return NOT_FOUND_ERROR_CODES.has(error.code);
21
+ }
12
22
  /**
13
23
  * A map of supported package managers to their descriptors.
14
24
  * This is the single source of truth for all package-manager-specific
@@ -39,9 +49,11 @@ exports.SUPPORTED_PACKAGE_MANAGERS = {
39
49
  viewCommandFieldArgFormatter: (fields) => [...fields],
40
50
  outputParsers: {
41
51
  listDependencies: parsers_1.parseNpmLikeDependencies,
42
- getPackageManifest: parsers_1.parseNpmLikeManifest,
52
+ getRegistryManifest: parsers_1.parseNpmLikeManifest,
43
53
  getRegistryMetadata: parsers_1.parseNpmLikeMetadata,
54
+ getError: parsers_1.parseNpmLikeError,
44
55
  },
56
+ isNotFound: isKnownNotFound,
45
57
  },
46
58
  yarn: {
47
59
  binary: 'yarn',
@@ -61,9 +73,11 @@ exports.SUPPORTED_PACKAGE_MANAGERS = {
61
73
  viewCommandFieldArgFormatter: (fields) => ['--fields', fields.join(',')],
62
74
  outputParsers: {
63
75
  listDependencies: parsers_1.parseYarnModernDependencies,
64
- getPackageManifest: parsers_1.parseNpmLikeManifest,
76
+ getRegistryManifest: parsers_1.parseNpmLikeManifest,
65
77
  getRegistryMetadata: parsers_1.parseNpmLikeMetadata,
78
+ getError: parsers_1.parseNpmLikeError,
66
79
  },
80
+ isNotFound: isKnownNotFound,
67
81
  },
68
82
  'yarn-classic': {
69
83
  binary: 'yarn',
@@ -82,12 +96,15 @@ exports.SUPPORTED_PACKAGE_MANAGERS = {
82
96
  getRegistryOptions: (registry) => ({ args: ['--registry', registry] }),
83
97
  versionCommand: ['--version'],
84
98
  listDependenciesCommand: ['list', '--depth=0', '--json'],
85
- getManifestCommand: ['info', '--json'],
99
+ getManifestCommand: ['info', '--json', '--verbose'],
100
+ requiresManifestVersionLookup: true,
86
101
  outputParsers: {
87
102
  listDependencies: parsers_1.parseYarnClassicDependencies,
88
- getPackageManifest: parsers_1.parseYarnLegacyManifest,
89
- getRegistryMetadata: parsers_1.parseNpmLikeMetadata,
103
+ getRegistryManifest: parsers_1.parseYarnClassicManifest,
104
+ getRegistryMetadata: parsers_1.parseYarnClassicMetadata,
105
+ getError: parsers_1.parseYarnClassicError,
90
106
  },
107
+ isNotFound: isKnownNotFound,
91
108
  },
92
109
  pnpm: {
93
110
  binary: 'pnpm',
@@ -107,9 +124,11 @@ exports.SUPPORTED_PACKAGE_MANAGERS = {
107
124
  viewCommandFieldArgFormatter: (fields) => [...fields],
108
125
  outputParsers: {
109
126
  listDependencies: parsers_1.parseNpmLikeDependencies,
110
- getPackageManifest: parsers_1.parseNpmLikeManifest,
127
+ getRegistryManifest: parsers_1.parseNpmLikeManifest,
111
128
  getRegistryMetadata: parsers_1.parseNpmLikeMetadata,
129
+ getError: parsers_1.parseNpmLikeError,
112
130
  },
131
+ isNotFound: isKnownNotFound,
113
132
  },
114
133
  bun: {
115
134
  binary: 'bun',
@@ -126,12 +145,13 @@ exports.SUPPORTED_PACKAGE_MANAGERS = {
126
145
  versionCommand: ['--version'],
127
146
  listDependenciesCommand: ['pm', 'ls', '--json'],
128
147
  getManifestCommand: ['pm', 'view', '--json'],
129
- viewCommandFieldArgFormatter: (fields) => [...fields],
130
148
  outputParsers: {
131
149
  listDependencies: parsers_1.parseNpmLikeDependencies,
132
- getPackageManifest: parsers_1.parseNpmLikeManifest,
150
+ getRegistryManifest: parsers_1.parseNpmLikeManifest,
133
151
  getRegistryMetadata: parsers_1.parseNpmLikeMetadata,
152
+ getError: parsers_1.parseNpmLikeError,
134
153
  },
154
+ isNotFound: isKnownNotFound,
135
155
  },
136
156
  };
137
157
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"package-manager-descriptor.js","sourceRoot":"","sources":["package-manager-descriptor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"package-manager-descriptor.js","sourceRoot":"","sources":["package-manager-descriptor.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@
5
5
  * Use of this source code is governed by an MIT-style license that can be
6
6
  * found in the LICENSE file at https://angular.dev/license
7
7
  */
8
+ import npa from 'npm-package-arg';
8
9
  import { Host } from './host';
9
10
  import { Logger } from './logger';
10
11
  import { PackageManagerDescriptor } from './package-manager-descriptor';
@@ -120,7 +121,23 @@ export declare class PackageManager {
120
121
  * @param options.bypassCache If true, ignores the in-memory cache and fetches fresh data.
121
122
  * @returns A promise that resolves to the `PackageManifest` object, or `null` if the package is not found.
122
123
  */
123
- getPackageManifest(packageName: string, version: string, options?: {
124
+ getRegistryManifest(packageName: string, version: string, options?: {
125
+ timeout?: number;
126
+ registry?: string;
127
+ bypassCache?: boolean;
128
+ }): Promise<PackageManifest | null>;
129
+ /**
130
+ * Fetches the manifest for a package.
131
+ *
132
+ * This method can resolve manifests for packages from the registry, as well
133
+ * as those specified by file paths, directory paths, and remote tarballs.
134
+ * Caching is only supported for registry packages.
135
+ *
136
+ * @param specifier The package specifier to resolve the manifest for.
137
+ * @param options Options for the fetch.
138
+ * @returns A promise that resolves to the `PackageManifest` object, or `null` if the package is not found.
139
+ */
140
+ getManifest(specifier: string | npa.Result, options?: {
124
141
  timeout?: number;
125
142
  registry?: string;
126
143
  bypassCache?: boolean;
@@ -130,13 +147,14 @@ export declare class PackageManager {
130
147
  * responsible for managing the lifecycle of the temporary directory by calling
131
148
  * the returned `cleanup` function.
132
149
  *
133
- * @param packageName The name of the package to install.
150
+ * @param specifier The specifier of the package to install.
134
151
  * @param options Options for the installation.
135
152
  * @returns A promise that resolves to an object containing the temporary path
136
153
  * and a cleanup function.
137
154
  */
138
- acquireTempPackage(packageName: string, options?: {
155
+ acquireTempPackage(specifier: string, options?: {
139
156
  registry?: string;
157
+ ignoreScripts?: boolean;
140
158
  }): Promise<{
141
159
  workingDirectory: string;
142
160
  cleanup: () => Promise<void>;