@angular/cli 21.0.1 → 21.1.0-next.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/code-examples.db +0 -0
- package/package.json +19 -19
- package/src/commands/mcp/cli.d.ts +2 -2
- package/src/commands/mcp/cli.js.map +1 -1
- package/src/commands/mcp/dev-server.d.ts +71 -0
- package/src/commands/mcp/dev-server.js +96 -0
- package/src/commands/mcp/dev-server.js.map +1 -0
- package/src/commands/mcp/host.d.ts +20 -5
- package/src/commands/mcp/host.js +44 -13
- package/src/commands/mcp/host.js.map +1 -1
- package/src/commands/mcp/mcp-server.d.ts +26 -4
- package/src/commands/mcp/mcp-server.js +12 -6
- package/src/commands/mcp/mcp-server.js.map +1 -1
- package/src/commands/mcp/resources/instructions.d.ts +1 -1
- package/src/commands/mcp/resources/instructions.js +2 -5
- package/src/commands/mcp/resources/instructions.js.map +1 -1
- package/src/commands/mcp/tools/ai-tutor.js +2 -5
- package/src/commands/mcp/tools/ai-tutor.js.map +1 -1
- package/src/commands/mcp/tools/best-practices.js +6 -9
- package/src/commands/mcp/tools/best-practices.js.map +1 -1
- package/src/commands/mcp/tools/build.d.ts +48 -0
- package/src/commands/mcp/tools/build.js +97 -0
- package/src/commands/mcp/tools/build.js.map +1 -0
- package/src/commands/mcp/tools/devserver/start-devserver.d.ts +41 -0
- package/src/commands/mcp/tools/devserver/start-devserver.js +82 -0
- package/src/commands/mcp/tools/devserver/start-devserver.js.map +1 -0
- package/src/commands/mcp/tools/devserver/stop-devserver.d.ts +49 -0
- package/src/commands/mcp/tools/devserver/stop-devserver.js +66 -0
- package/src/commands/mcp/tools/devserver/stop-devserver.js.map +1 -0
- package/src/commands/mcp/tools/devserver/wait-for-devserver-build.d.ts +47 -0
- package/src/commands/mcp/tools/devserver/wait-for-devserver-build.js +100 -0
- package/src/commands/mcp/tools/devserver/wait-for-devserver-build.js.map +1 -0
- package/src/commands/mcp/tools/doc-search.js.map +1 -1
- package/src/commands/mcp/tools/examples.js +6 -9
- package/src/commands/mcp/tools/examples.js.map +1 -1
- package/src/commands/mcp/tools/modernize.d.ts +15 -11
- package/src/commands/mcp/tools/modernize.js +13 -45
- package/src/commands/mcp/tools/modernize.js.map +1 -1
- package/src/commands/mcp/tools/onpush-zoneless-migration/{analyze_for_unsupported_zone_uses.d.ts → analyze-for-unsupported-zone-uses.d.ts} +1 -1
- package/src/commands/mcp/tools/onpush-zoneless-migration/{analyze_for_unsupported_zone_uses.js → analyze-for-unsupported-zone-uses.js} +2 -2
- package/src/commands/mcp/tools/onpush-zoneless-migration/{analyze_for_unsupported_zone_uses.js.map → analyze-for-unsupported-zone-uses.js.map} +1 -1
- package/src/commands/mcp/tools/onpush-zoneless-migration/{migrate_single_file.d.ts → migrate-single-file.d.ts} +3 -3
- package/src/commands/mcp/tools/onpush-zoneless-migration/{migrate_single_file.js → migrate-single-file.js} +5 -5
- package/src/commands/mcp/tools/onpush-zoneless-migration/{migrate_single_file.js.map → migrate-single-file.js.map} +1 -1
- package/src/commands/mcp/tools/onpush-zoneless-migration/{migrate_test_file.js → migrate-test-file.js} +6 -52
- package/src/commands/mcp/tools/onpush-zoneless-migration/migrate-test-file.js.map +1 -0
- package/src/commands/mcp/tools/onpush-zoneless-migration/prompts.d.ts +1 -1
- package/src/commands/mcp/tools/onpush-zoneless-migration/prompts.js +2 -2
- package/src/commands/mcp/tools/onpush-zoneless-migration/{send_debug_message.d.ts → send-debug-message.d.ts} +2 -2
- package/src/commands/mcp/tools/onpush-zoneless-migration/{send_debug_message.js → send-debug-message.js} +1 -1
- package/src/commands/mcp/tools/onpush-zoneless-migration/{send_debug_message.js.map → send-debug-message.js.map} +1 -1
- package/src/commands/mcp/tools/onpush-zoneless-migration/{ts_utils.d.ts → ts-utils.d.ts} +3 -4
- package/src/commands/mcp/tools/onpush-zoneless-migration/{ts_utils.js → ts-utils.js} +3 -3
- package/src/commands/mcp/tools/onpush-zoneless-migration/{ts_utils.js.map → ts-utils.js.map} +1 -1
- package/src/commands/mcp/tools/onpush-zoneless-migration/zoneless-migration.d.ts +2 -2
- package/src/commands/mcp/tools/onpush-zoneless-migration/zoneless-migration.js +67 -71
- package/src/commands/mcp/tools/onpush-zoneless-migration/zoneless-migration.js.map +1 -1
- package/src/commands/mcp/tools/projects.d.ts +1 -1
- package/src/commands/mcp/tools/projects.js +33 -33
- package/src/commands/mcp/tools/projects.js.map +1 -1
- package/src/commands/mcp/tools/tool-registry.d.ts +3 -1
- package/src/commands/mcp/tools/tool-registry.js.map +1 -1
- package/src/commands/mcp/utils.d.ts +33 -0
- package/src/commands/mcp/utils.js +55 -0
- package/src/commands/mcp/utils.js.map +1 -0
- package/src/utilities/version.js +1 -1
- package/src/commands/mcp/tools/onpush-zoneless-migration/migrate_test_file.js.map +0 -1
- package/src/package-managers/testing/mock-host.d.ts +0 -26
- package/src/package-managers/testing/mock-host.js +0 -53
- package/src/package-managers/testing/mock-host.js.map +0 -1
- /package/src/commands/mcp/tools/onpush-zoneless-migration/{migrate_test_file.d.ts → migrate-test-file.d.ts} +0 -0
package/src/commands/mcp/tools/onpush-zoneless-migration/{ts_utils.js.map → ts-utils.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"ts-utils.js","sourceRoot":"","sources":["ts-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,8 +5,8 @@
|
|
|
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 { RequestHandlerExtra } from '@modelcontextprotocol/sdk/shared/protocol';
|
|
9
|
-
import { ServerNotification, ServerRequest } from '@modelcontextprotocol/sdk/types';
|
|
8
|
+
import type { RequestHandlerExtra } from '@modelcontextprotocol/sdk/shared/protocol';
|
|
9
|
+
import type { ServerNotification, ServerRequest } from '@modelcontextprotocol/sdk/types';
|
|
10
10
|
import { z } from 'zod';
|
|
11
11
|
export declare const ZONELESS_MIGRATION_TOOL: import("../tool-registry").McpToolDeclaration<{
|
|
12
12
|
fileOrDirPath: z.ZodString;
|
|
@@ -6,52 +6,19 @@
|
|
|
6
6
|
* Use of this source code is governed by an MIT-style license that can be
|
|
7
7
|
* found in the LICENSE file at https://angular.dev/license
|
|
8
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
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
10
|
exports.ZONELESS_MIGRATION_TOOL = void 0;
|
|
44
11
|
exports.registerZonelessMigrationTool = registerZonelessMigrationTool;
|
|
45
|
-
const
|
|
12
|
+
const node_fs_1 = require("node:fs");
|
|
46
13
|
const promises_1 = require("node:fs/promises");
|
|
47
14
|
const zod_1 = require("zod");
|
|
48
15
|
const tool_registry_1 = require("../tool-registry");
|
|
49
|
-
const analyze_for_unsupported_zone_uses_1 = require("./
|
|
50
|
-
const migrate_single_file_1 = require("./
|
|
51
|
-
const migrate_test_file_1 = require("./
|
|
16
|
+
const analyze_for_unsupported_zone_uses_1 = require("./analyze-for-unsupported-zone-uses");
|
|
17
|
+
const migrate_single_file_1 = require("./migrate-single-file");
|
|
18
|
+
const migrate_test_file_1 = require("./migrate-test-file");
|
|
52
19
|
const prompts_1 = require("./prompts");
|
|
53
|
-
const send_debug_message_1 = require("./
|
|
54
|
-
const ts_utils_1 = require("./
|
|
20
|
+
const send_debug_message_1 = require("./send-debug-message");
|
|
21
|
+
const ts_utils_1 = require("./ts-utils");
|
|
55
22
|
exports.ZONELESS_MIGRATION_TOOL = (0, tool_registry_1.declareTool)({
|
|
56
23
|
name: 'onpush_zoneless_migration',
|
|
57
24
|
title: 'Plan migration to OnPush and/or zoneless',
|
|
@@ -93,9 +60,10 @@ most important action to take in the migration journey.
|
|
|
93
60
|
factory: () => ({ fileOrDirPath }, requestHandlerExtra) => registerZonelessMigrationTool(fileOrDirPath, requestHandlerExtra),
|
|
94
61
|
});
|
|
95
62
|
async function registerZonelessMigrationTool(fileOrDirPath, extras) {
|
|
96
|
-
let filesWithComponents, componentTestFiles, zoneFiles;
|
|
63
|
+
let filesWithComponents, componentTestFiles, zoneFiles, categorizationErrors;
|
|
97
64
|
try {
|
|
98
|
-
({ filesWithComponents, componentTestFiles, zoneFiles } =
|
|
65
|
+
({ filesWithComponents, componentTestFiles, zoneFiles, categorizationErrors } =
|
|
66
|
+
await discoverAndCategorizeFiles(fileOrDirPath, extras));
|
|
99
67
|
}
|
|
100
68
|
catch (e) {
|
|
101
69
|
return (0, prompts_1.createResponse)(`Error: Could not access the specified path. Please ensure the following path is correct ` +
|
|
@@ -126,60 +94,88 @@ async function registerZonelessMigrationTool(fileOrDirPath, extras) {
|
|
|
126
94
|
return result;
|
|
127
95
|
}
|
|
128
96
|
}
|
|
97
|
+
if (categorizationErrors.length > 0) {
|
|
98
|
+
let errorMessage = 'Migration analysis is complete for all actionable files. However, the following files could not be analyzed due to errors:\n';
|
|
99
|
+
errorMessage += categorizationErrors.map((e) => `- ${e.filePath}: ${e.message}`).join('\n');
|
|
100
|
+
return (0, prompts_1.createResponse)(errorMessage);
|
|
101
|
+
}
|
|
129
102
|
return (0, prompts_1.createTestDebuggingGuideForNonActionableInput)(fileOrDirPath);
|
|
130
103
|
}
|
|
131
104
|
async function discoverAndCategorizeFiles(fileOrDirPath, extras) {
|
|
132
|
-
|
|
105
|
+
const filePaths = [];
|
|
133
106
|
const componentTestFiles = new Set();
|
|
134
107
|
const filesWithComponents = new Set();
|
|
135
108
|
const zoneFiles = new Set();
|
|
109
|
+
const categorizationErrors = [];
|
|
136
110
|
let isDirectory;
|
|
137
111
|
try {
|
|
138
|
-
isDirectory =
|
|
112
|
+
isDirectory = (0, node_fs_1.statSync)(fileOrDirPath).isDirectory();
|
|
139
113
|
}
|
|
140
114
|
catch (e) {
|
|
141
115
|
// Re-throw to be handled by the main function as a user input error
|
|
142
116
|
throw new Error(`Failed to access path: ${fileOrDirPath}`);
|
|
143
117
|
}
|
|
144
118
|
if (isDirectory) {
|
|
145
|
-
const
|
|
146
|
-
|
|
147
|
-
files.push(await (0, ts_utils_1.createSourceFile)(file));
|
|
119
|
+
for await (const file of (0, promises_1.glob)(`${fileOrDirPath}/**/*.ts`)) {
|
|
120
|
+
filePaths.push(file);
|
|
148
121
|
}
|
|
149
122
|
}
|
|
150
123
|
else {
|
|
151
|
-
|
|
124
|
+
filePaths.push(fileOrDirPath);
|
|
152
125
|
const maybeTestFile = await getTestFilePath(fileOrDirPath);
|
|
153
126
|
if (maybeTestFile) {
|
|
154
|
-
|
|
127
|
+
// Eagerly add the test file path for categorization.
|
|
128
|
+
filePaths.push(maybeTestFile);
|
|
155
129
|
}
|
|
156
130
|
}
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
const
|
|
161
|
-
const
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
componentTestFiles.add(await (0, ts_utils_1.createSourceFile)(testFilePath));
|
|
131
|
+
const CONCURRENCY_LIMIT = 50;
|
|
132
|
+
const filesToProcess = [...filePaths];
|
|
133
|
+
while (filesToProcess.length > 0) {
|
|
134
|
+
const batch = filesToProcess.splice(0, CONCURRENCY_LIMIT);
|
|
135
|
+
const results = await Promise.allSettled(batch.map(async (filePath) => {
|
|
136
|
+
const sourceFile = await (0, ts_utils_1.createSourceFile)(filePath);
|
|
137
|
+
await categorizeFile(sourceFile, extras, {
|
|
138
|
+
filesWithComponents,
|
|
139
|
+
componentTestFiles,
|
|
140
|
+
zoneFiles,
|
|
141
|
+
});
|
|
142
|
+
}));
|
|
143
|
+
for (let i = 0; i < results.length; i++) {
|
|
144
|
+
const result = results[i];
|
|
145
|
+
if (result.status === 'rejected') {
|
|
146
|
+
const failedFile = batch[i];
|
|
147
|
+
const reason = result.reason instanceof Error ? result.reason.message : `${result.reason}`;
|
|
148
|
+
categorizationErrors.push({ filePath: failedFile, message: reason });
|
|
176
149
|
}
|
|
177
150
|
}
|
|
178
|
-
|
|
179
|
-
|
|
151
|
+
}
|
|
152
|
+
return { filesWithComponents, componentTestFiles, zoneFiles, categorizationErrors };
|
|
153
|
+
}
|
|
154
|
+
async function categorizeFile(sourceFile, extras, categorizedFiles) {
|
|
155
|
+
const { filesWithComponents, componentTestFiles, zoneFiles } = categorizedFiles;
|
|
156
|
+
const content = sourceFile.getFullText();
|
|
157
|
+
const componentSpecifier = await (0, ts_utils_1.getImportSpecifier)(sourceFile, '@angular/core', 'Component');
|
|
158
|
+
const zoneSpecifier = await (0, ts_utils_1.getImportSpecifier)(sourceFile, '@angular/core', 'NgZone');
|
|
159
|
+
const testBedSpecifier = await (0, ts_utils_1.getImportSpecifier)(sourceFile, /(@angular\/core)?\/testing/, 'TestBed');
|
|
160
|
+
if (testBedSpecifier) {
|
|
161
|
+
componentTestFiles.add(sourceFile);
|
|
162
|
+
}
|
|
163
|
+
else if (componentSpecifier) {
|
|
164
|
+
if (!content.includes('changeDetectionStrategy: ChangeDetectionStrategy.OnPush') &&
|
|
165
|
+
!content.includes('changeDetectionStrategy: ChangeDetectionStrategy.Default')) {
|
|
166
|
+
filesWithComponents.add(sourceFile);
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
(0, send_debug_message_1.sendDebugMessage)(`Component file already has change detection strategy: ${sourceFile.fileName}. Skipping migration.`, extras);
|
|
180
170
|
}
|
|
171
|
+
const testFilePath = await getTestFilePath(sourceFile.fileName);
|
|
172
|
+
if (testFilePath) {
|
|
173
|
+
componentTestFiles.add(await (0, ts_utils_1.createSourceFile)(testFilePath));
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
else if (zoneSpecifier) {
|
|
177
|
+
zoneFiles.add(sourceFile);
|
|
181
178
|
}
|
|
182
|
-
return { filesWithComponents, componentTestFiles, zoneFiles };
|
|
183
179
|
}
|
|
184
180
|
async function rankComponentFilesForMigration({ sendRequest }, componentFiles) {
|
|
185
181
|
try {
|
|
@@ -220,7 +216,7 @@ async function rankComponentFilesForMigration({ sendRequest }, componentFiles) {
|
|
|
220
216
|
}
|
|
221
217
|
async function getTestFilePath(filePath) {
|
|
222
218
|
const testFilePath = filePath.replace(/\.ts$/, '.spec.ts');
|
|
223
|
-
if (
|
|
219
|
+
if ((0, node_fs_1.existsSync)(testFilePath)) {
|
|
224
220
|
return testFilePath;
|
|
225
221
|
}
|
|
226
222
|
return undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zoneless-migration.js","sourceRoot":"","sources":["zoneless-migration.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG
|
|
1
|
+
{"version":3,"file":"zoneless-migration.js","sourceRoot":"","sources":["zoneless-migration.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +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 z from 'zod';
|
|
8
|
+
import { z } from 'zod';
|
|
9
9
|
export declare const LIST_PROJECTS_TOOL: import("./tool-registry").McpToolDeclaration<z.ZodRawShape, {
|
|
10
10
|
workspaces: z.ZodArray<z.ZodObject<{
|
|
11
11
|
path: z.ZodString;
|
|
@@ -12,15 +12,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
13
|
exports.LIST_PROJECTS_TOOL = void 0;
|
|
14
14
|
const promises_1 = require("node:fs/promises");
|
|
15
|
-
const node_path_1 =
|
|
15
|
+
const node_path_1 = require("node:path");
|
|
16
16
|
const node_url_1 = require("node:url");
|
|
17
17
|
const semver_1 = __importDefault(require("semver"));
|
|
18
|
-
const zod_1 =
|
|
18
|
+
const zod_1 = require("zod");
|
|
19
19
|
const config_1 = require("../../../utilities/config");
|
|
20
20
|
const error_1 = require("../../../utilities/error");
|
|
21
21
|
const tool_registry_1 = require("./tool-registry");
|
|
22
22
|
// Single source of truth for what constitutes a valid style language.
|
|
23
|
-
const styleLanguageSchema = zod_1.
|
|
23
|
+
const styleLanguageSchema = zod_1.z.enum(['css', 'scss', 'sass', 'less']);
|
|
24
24
|
const VALID_STYLE_LANGUAGES = styleLanguageSchema.options;
|
|
25
25
|
// Explicitly ordered for the file system search heuristic.
|
|
26
26
|
const STYLE_LANGUAGE_SEARCH_ORDER = ['scss', 'sass', 'less', 'css'];
|
|
@@ -32,36 +32,36 @@ function getStyleLanguageFromExtension(extension) {
|
|
|
32
32
|
return isStyleLanguage(style) ? style : undefined;
|
|
33
33
|
}
|
|
34
34
|
const listProjectsOutputSchema = {
|
|
35
|
-
workspaces: zod_1.
|
|
36
|
-
path: zod_1.
|
|
37
|
-
frameworkVersion: zod_1.
|
|
35
|
+
workspaces: zod_1.z.array(zod_1.z.object({
|
|
36
|
+
path: zod_1.z.string().describe('The path to the `angular.json` file for this workspace.'),
|
|
37
|
+
frameworkVersion: zod_1.z
|
|
38
38
|
.string()
|
|
39
39
|
.optional()
|
|
40
40
|
.describe('The major version of the Angular framework (`@angular/core`) in this workspace, if found.'),
|
|
41
|
-
projects: zod_1.
|
|
42
|
-
name: zod_1.
|
|
41
|
+
projects: zod_1.z.array(zod_1.z.object({
|
|
42
|
+
name: zod_1.z
|
|
43
43
|
.string()
|
|
44
44
|
.describe('The name of the project, as defined in the `angular.json` file.'),
|
|
45
|
-
type: zod_1.
|
|
45
|
+
type: zod_1.z
|
|
46
46
|
.enum(['application', 'library'])
|
|
47
47
|
.optional()
|
|
48
48
|
.describe(`The type of the project, either 'application' or 'library'.`),
|
|
49
|
-
builder: zod_1.
|
|
49
|
+
builder: zod_1.z
|
|
50
50
|
.string()
|
|
51
51
|
.optional()
|
|
52
52
|
.describe('The primary builder for the project, typically from the "build" target.'),
|
|
53
|
-
root: zod_1.
|
|
53
|
+
root: zod_1.z
|
|
54
54
|
.string()
|
|
55
55
|
.describe('The root directory of the project, relative to the workspace root.'),
|
|
56
|
-
sourceRoot: zod_1.
|
|
56
|
+
sourceRoot: zod_1.z
|
|
57
57
|
.string()
|
|
58
58
|
.describe(`The root directory of the project's source files, relative to the workspace root.`),
|
|
59
|
-
selectorPrefix: zod_1.
|
|
59
|
+
selectorPrefix: zod_1.z
|
|
60
60
|
.string()
|
|
61
61
|
.optional()
|
|
62
62
|
.describe('The prefix to use for component selectors.' +
|
|
63
63
|
` For example, a prefix of 'app' would result in selectors like '<app-my-component>'.`),
|
|
64
|
-
unitTestFramework: zod_1.
|
|
64
|
+
unitTestFramework: zod_1.z
|
|
65
65
|
.enum(['jasmine', 'jest', 'vitest', 'unknown'])
|
|
66
66
|
.optional()
|
|
67
67
|
.describe('The unit test framework used by the project, such as Jasmine, Jest, or Vitest. ' +
|
|
@@ -73,19 +73,19 @@ const listProjectsOutputSchema = {
|
|
|
73
73
|
'This determines the file extension for new component styles.'),
|
|
74
74
|
})),
|
|
75
75
|
})),
|
|
76
|
-
parsingErrors: zod_1.
|
|
77
|
-
.array(zod_1.
|
|
78
|
-
filePath: zod_1.
|
|
79
|
-
message: zod_1.
|
|
76
|
+
parsingErrors: zod_1.z
|
|
77
|
+
.array(zod_1.z.object({
|
|
78
|
+
filePath: zod_1.z.string().describe('The path to the file that could not be parsed.'),
|
|
79
|
+
message: zod_1.z.string().describe('The error message detailing why parsing failed.'),
|
|
80
80
|
}))
|
|
81
81
|
.default([])
|
|
82
82
|
.describe('A list of files that looked like workspaces but failed to parse.'),
|
|
83
|
-
versioningErrors: zod_1.
|
|
84
|
-
.array(zod_1.
|
|
85
|
-
filePath: zod_1.
|
|
83
|
+
versioningErrors: zod_1.z
|
|
84
|
+
.array(zod_1.z.object({
|
|
85
|
+
filePath: zod_1.z
|
|
86
86
|
.string()
|
|
87
87
|
.describe('The path to the workspace `angular.json` for which versioning failed.'),
|
|
88
|
-
message: zod_1.
|
|
88
|
+
message: zod_1.z.string().describe('The error message detailing why versioning failed.'),
|
|
89
89
|
}))
|
|
90
90
|
.default([])
|
|
91
91
|
.describe('A list of workspaces for which the framework version could not be determined.'),
|
|
@@ -154,7 +154,7 @@ async function* findAngularJsonFiles(rootDir) {
|
|
|
154
154
|
const entries = await (0, promises_1.readdir)(dir, { withFileTypes: true });
|
|
155
155
|
const subdirectories = [];
|
|
156
156
|
for (const entry of entries) {
|
|
157
|
-
const fullPath = node_path_1.
|
|
157
|
+
const fullPath = (0, node_path_1.join)(dir, entry.name);
|
|
158
158
|
if (entry.isDirectory()) {
|
|
159
159
|
// Exclude dot-directories, build/cache directories, and node_modules
|
|
160
160
|
if (entry.name.startsWith('.') || EXCLUDED_DIRS.has(entry.name)) {
|
|
@@ -214,7 +214,7 @@ async function findAngularCoreVersion(startDir, cache, searchRoot) {
|
|
|
214
214
|
}
|
|
215
215
|
return cachedResult;
|
|
216
216
|
}
|
|
217
|
-
const pkgPath = node_path_1.
|
|
217
|
+
const pkgPath = (0, node_path_1.join)(currentDir, 'package.json');
|
|
218
218
|
try {
|
|
219
219
|
const pkgContent = await (0, promises_1.readFile)(pkgPath, 'utf-8');
|
|
220
220
|
const pkg = JSON.parse(pkgContent);
|
|
@@ -239,7 +239,7 @@ async function findAngularCoreVersion(startDir, cache, searchRoot) {
|
|
|
239
239
|
if (currentDir === searchRoot) {
|
|
240
240
|
break;
|
|
241
241
|
}
|
|
242
|
-
const parentDir = node_path_1.
|
|
242
|
+
const parentDir = (0, node_path_1.dirname)(currentDir);
|
|
243
243
|
if (parentDir === currentDir) {
|
|
244
244
|
break; // Reached the filesystem root.
|
|
245
245
|
}
|
|
@@ -324,7 +324,7 @@ async function getProjectStyleLanguage(project, workspace, fullSourceRoot) {
|
|
|
324
324
|
const styles = buildTarget.options['styles'];
|
|
325
325
|
if (Array.isArray(styles)) {
|
|
326
326
|
for (const stylePath of styles) {
|
|
327
|
-
const style = getStyleLanguageFromExtension(node_path_1.
|
|
327
|
+
const style = getStyleLanguageFromExtension((0, node_path_1.extname)(stylePath));
|
|
328
328
|
if (style) {
|
|
329
329
|
return style;
|
|
330
330
|
}
|
|
@@ -334,7 +334,7 @@ async function getProjectStyleLanguage(project, workspace, fullSourceRoot) {
|
|
|
334
334
|
// 5. Infer from implicit default styles file (future-proofing).
|
|
335
335
|
for (const ext of STYLE_LANGUAGE_SEARCH_ORDER) {
|
|
336
336
|
try {
|
|
337
|
-
await (0, promises_1.stat)(node_path_1.
|
|
337
|
+
await (0, promises_1.stat)((0, node_path_1.join)(fullSourceRoot, `styles.${ext}`));
|
|
338
338
|
return ext;
|
|
339
339
|
}
|
|
340
340
|
catch {
|
|
@@ -354,17 +354,17 @@ async function getProjectStyleLanguage(project, workspace, fullSourceRoot) {
|
|
|
354
354
|
*/
|
|
355
355
|
async function loadAndParseWorkspace(configFile, seenPaths) {
|
|
356
356
|
try {
|
|
357
|
-
const resolvedPath = node_path_1.
|
|
357
|
+
const resolvedPath = (0, node_path_1.resolve)(configFile);
|
|
358
358
|
if (seenPaths.has(resolvedPath)) {
|
|
359
359
|
return { workspace: null, error: null }; // Already processed, skip.
|
|
360
360
|
}
|
|
361
361
|
seenPaths.add(resolvedPath);
|
|
362
362
|
const ws = await config_1.AngularWorkspace.load(configFile);
|
|
363
363
|
const projects = [];
|
|
364
|
-
const workspaceRoot = node_path_1.
|
|
364
|
+
const workspaceRoot = (0, node_path_1.dirname)(configFile);
|
|
365
365
|
for (const [name, project] of ws.projects.entries()) {
|
|
366
|
-
const sourceRoot = node_path_1.
|
|
367
|
-
const fullSourceRoot = node_path_1.
|
|
366
|
+
const sourceRoot = node_path_1.posix.join(project.root, project.sourceRoot ?? 'src');
|
|
367
|
+
const fullSourceRoot = (0, node_path_1.join)(workspaceRoot, sourceRoot);
|
|
368
368
|
const unitTestFramework = getUnitTestFramework(project.targets.get('test'));
|
|
369
369
|
const styleLanguage = await getProjectStyleLanguage(project, ws, fullSourceRoot);
|
|
370
370
|
projects.push({
|
|
@@ -408,7 +408,7 @@ async function processConfigFile(configFile, searchRoot, seenPaths, versionCache
|
|
|
408
408
|
return {}; // Skipped as it was already seen.
|
|
409
409
|
}
|
|
410
410
|
try {
|
|
411
|
-
const workspaceDir = node_path_1.
|
|
411
|
+
const workspaceDir = (0, node_path_1.dirname)(configFile);
|
|
412
412
|
workspace.frameworkVersion = await findAngularCoreVersion(workspaceDir, versionCache, searchRoot);
|
|
413
413
|
return { workspace };
|
|
414
414
|
}
|
|
@@ -433,7 +433,7 @@ async function createListProjectsHandler({ server }) {
|
|
|
433
433
|
const clientCapabilities = server.server.getClientCapabilities();
|
|
434
434
|
if (clientCapabilities?.roots) {
|
|
435
435
|
const { roots } = await server.server.listRoots();
|
|
436
|
-
searchRoots = roots?.map((r) => node_path_1.
|
|
436
|
+
searchRoots = roots?.map((r) => (0, node_path_1.normalize)((0, node_url_1.fileURLToPath)(r.uri))) ?? [];
|
|
437
437
|
}
|
|
438
438
|
else {
|
|
439
439
|
// Fallback to the current working directory if client does not support roots
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projects.js","sourceRoot":"","sources":["projects.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"projects.js","sourceRoot":"","sources":["projects.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;AAEH,+CAA2D;AAC3D,yCAA8E;AAC9E,uCAAyC;AACzC,oDAA4B;AAC5B,6BAAwB;AACxB,sDAA6D;AAC7D,oDAAyD;AACzD,mDAAmE;AAEnE,sEAAsE;AACtE,MAAM,mBAAmB,GAAG,OAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAEpE,MAAM,qBAAqB,GAAG,mBAAmB,CAAC,OAAO,CAAC;AAE1D,2DAA2D;AAC3D,MAAM,2BAA2B,GAAiC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AAElG,SAAS,eAAe,CAAC,KAAc;IACrC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ,IAAK,qBAA+C,CAAC,QAAQ,CAAC,KAAK,CAAC,CAC9F,CAAC;AACJ,CAAC;AAED,SAAS,6BAA6B,CAAC,SAAiB;IACtD,MAAM,KAAK,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB;IAEzE,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACpD,CAAC;AAED,MAAM,wBAAwB,GAAG;IAC/B,UAAU,EAAE,OAAC,CAAC,KAAK,CACjB,OAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yDAAyD,CAAC;QACpF,gBAAgB,EAAE,OAAC;aAChB,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CACP,2FAA2F,CAC5F;QACH,QAAQ,EAAE,OAAC,CAAC,KAAK,CACf,OAAC,CAAC,MAAM,CAAC;YACP,IAAI,EAAE,OAAC;iBACJ,MAAM,EAAE;iBACR,QAAQ,CAAC,iEAAiE,CAAC;YAC9E,IAAI,EAAE,OAAC;iBACJ,IAAI,CAAC,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;iBAChC,QAAQ,EAAE;iBACV,QAAQ,CAAC,6DAA6D,CAAC;YAC1E,OAAO,EAAE,OAAC;iBACP,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,yEAAyE,CAAC;YACtF,IAAI,EAAE,OAAC;iBACJ,MAAM,EAAE;iBACR,QAAQ,CAAC,oEAAoE,CAAC;YACjF,UAAU,EAAE,OAAC;iBACV,MAAM,EAAE;iBACR,QAAQ,CACP,mFAAmF,CACpF;YACH,cAAc,EAAE,OAAC;iBACd,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,4CAA4C;gBAC1C,sFAAsF,CACzF;YACH,iBAAiB,EAAE,OAAC;iBACjB,IAAI,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;iBAC9C,QAAQ,EAAE;iBACV,QAAQ,CACP,iFAAiF;gBAC/E,0EAA0E;gBAC1E,yFAAyF,CAC5F;YACH,aAAa,EAAE,mBAAmB;iBAC/B,QAAQ,EAAE;iBACV,QAAQ,CACP,6DAA6D;gBAC3D,8DAA8D,CACjE;SACJ,CAAC,CACH;KACF,CAAC,CACH;IACD,aAAa,EAAE,OAAC;SACb,KAAK,CACJ,OAAC,CAAC,MAAM,CAAC;QACP,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;QAC/E,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;KAChF,CAAC,CACH;SACA,OAAO,CAAC,EAAE,CAAC;SACX,QAAQ,CAAC,kEAAkE,CAAC;IAC/E,gBAAgB,EAAE,OAAC;SAChB,KAAK,CACJ,OAAC,CAAC,MAAM,CAAC;QACP,QAAQ,EAAE,OAAC;aACR,MAAM,EAAE;aACR,QAAQ,CAAC,uEAAuE,CAAC;QACpF,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;KACnF,CAAC,CACH;SACA,OAAO,CAAC,EAAE,CAAC;SACX,QAAQ,CAAC,+EAA+E,CAAC;CAC7F,CAAC;AAEW,QAAA,kBAAkB,GAAG,IAAA,2BAAW,EAAC;IAC5C,IAAI,EAAE,eAAe;IACrB,KAAK,EAAE,uBAAuB;IAC9B,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;;;qBAwBM;IACnB,YAAY,EAAE,wBAAwB;IACtC,UAAU,EAAE,IAAI;IAChB,WAAW,EAAE,IAAI;IACjB,OAAO,EAAE,yBAAyB;CACnC,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;AAE3E;;;;;;GAMG;AACH,KAAK,SAAS,CAAC,CAAC,oBAAoB,CAAC,OAAe;IAClD,MAAM,iBAAiB,GAAG,EAAE,CAAC;IAC7B,MAAM,KAAK,GAAa,CAAC,OAAO,CAAC,CAAC;IAClC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IAErC,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,IAAA,eAAI,EAAC,OAAO,CAAC,CAAC;QACtC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAA,qBAAa,EAAC,KAAK,CAAC,CAAC;QACrB,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACjF,OAAO,CAAC,gDAAgD;QAC1D,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC;QACjD,MAAM,iBAAiB,GAAa,EAAE,CAAC;QAEvC,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YACvC,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,IAAA,kBAAO,EAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC5D,MAAM,cAAc,GAAa,EAAE,CAAC;gBACpC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;oBAC5B,MAAM,QAAQ,GAAG,IAAA,gBAAI,EAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;oBACvC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;wBACxB,qEAAqE;wBACrE,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;4BAChE,SAAS;wBACX,CAAC;wBAED,gCAAgC;wBAChC,IAAI,CAAC;4BACH,MAAM,UAAU,GAAG,MAAM,IAAA,eAAI,EAAC,QAAQ,CAAC,CAAC;4BACxC,IAAI,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gCACnC,SAAS,CAAC,uDAAuD;4BACnE,CAAC;4BACD,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;wBACjC,CAAC;wBAAC,MAAM,CAAC;4BACP,kDAAkD;4BAClD,SAAS;wBACX,CAAC;wBAED,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAChC,CAAC;yBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;wBACzC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBACnC,CAAC;gBACH,CAAC;gBAED,OAAO,cAAc,CAAC;YACxB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAA,qBAAa,EAAC,KAAK,CAAC,CAAC;gBACrB,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBACtD,OAAO,EAAE,CAAC,CAAC,qCAAqC;gBAClD,CAAC;gBACD,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClD,KAAK,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;QAEpC,KAAK,CAAC,CAAC,iBAAiB,CAAC;IAC3B,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,KAAK,UAAU,sBAAsB,CACnC,QAAgB,EAChB,KAAsC,EACtC,UAAkB;IAElB,IAAI,UAAU,GAAG,QAAQ,CAAC;IAC1B,MAAM,WAAW,GAAa,EAAE,CAAC;IAEjC,OAAO,UAAU,EAAE,CAAC;QAClB,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7B,IAAI,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1B,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC3C,mDAAmD;YACnD,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;gBAC9B,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;YAC/B,CAAC;YAED,OAAO,YAAY,CAAC;QACtB,CAAC;QAED,MAAM,OAAO,GAAG,IAAA,gBAAI,EAAC,UAAU,EAAE,cAAc,CAAC,CAAC;QACjD,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,IAAA,mBAAQ,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YACnC,MAAM,gBAAgB,GACpB,GAAG,CAAC,YAAY,EAAE,CAAC,eAAe,CAAC,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC,eAAe,CAAC,CAAC;YAEhF,IAAI,gBAAgB,EAAE,CAAC;gBACrB,MAAM,UAAU,GAAG,gBAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;gBACvD,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBACjE,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;oBAC9B,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;gBACzB,CAAC;gBAED,OAAO,MAAM,CAAC;YAChB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAA,qBAAa,EAAC,KAAK,CAAC,CAAC;YACrB,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC5B,+DAA+D;gBAC/D,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QAED,4DAA4D;QAC5D,IAAI,UAAU,KAAK,UAAU,EAAE,CAAC;YAC9B,MAAM;QACR,CAAC;QACD,MAAM,SAAS,GAAG,IAAA,mBAAO,EAAC,UAAU,CAAC,CAAC;QACtC,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;YAC7B,MAAM,CAAC,+BAA+B;QACxC,CAAC;QACD,UAAU,GAAG,SAAS,CAAC;IACzB,CAAC;IAED,mDAAmD;IACnD,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC5B,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAOD;;;;;;;GAOG;AACH,SAAS,oBAAoB,CAC3B,UAAkF;IAElF,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,mFAAmF;IACnF,IAAI,UAAU,CAAC,OAAO,KAAK,0BAA0B,EAAE,CAAC;QACtD,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAmC,CAAC;QAChF,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;YACvB,OAAO,SAAS,CAAC,CAAC,mDAAmD;QACvE,CAAC;aAAM,CAAC;YACN,OAAO,MAAM,CAAC,CAAC,uDAAuD;QACxE,CAAC;IACH,CAAC;IAED,qFAAqF;IACrF,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;QACvB,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC;QACvC,IACE,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC;YAC7B,WAAW,KAAK,+CAA+C,EAC/D,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;aAAM,IAAI,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACxC,OAAO,MAAM,CAAC;QAChB,CAAC;aAAM,IAAI,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1C,OAAO,QAAQ,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;GAOG;AACH,KAAK,UAAU,uBAAuB,CACpC,OAAoE,EACpE,SAA2B,EAC3B,cAAsB;IAEtB,MAAM,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,UAEhC,CAAC;IACd,MAAM,mBAAmB,GAAG,SAAS,CAAC,UAAU,CAAC,UAEpC,CAAC;IAEd,qDAAqD;IACrD,IAAI,KAAK,GAAG,iBAAiB,EAAE,CAAC,+BAA+B,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IAC5E,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,oDAAoD;IACpD,KAAK,GAAG,mBAAmB,EAAE,CAAC,+BAA+B,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IAC1E,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACjD,IAAI,WAAW,EAAE,OAAO,EAAE,CAAC;QACzB,+DAA+D;QAC/D,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;QACnD,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,+CAA+C;QAC/C,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAyB,CAAC;QACrE,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,KAAK,MAAM,SAAS,IAAI,MAAM,EAAE,CAAC;gBAC/B,MAAM,KAAK,GAAG,6BAA6B,CAAC,IAAA,mBAAO,EAAC,SAAS,CAAC,CAAC,CAAC;gBAChE,IAAI,KAAK,EAAE,CAAC;oBACV,OAAO,KAAK,CAAC;gBACf,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,gEAAgE;IAChE,KAAK,MAAM,GAAG,IAAI,2BAA2B,EAAE,CAAC;QAC9C,IAAI,CAAC;YACH,MAAM,IAAA,eAAI,EAAC,IAAA,gBAAI,EAAC,cAAc,EAAE,UAAU,GAAG,EAAE,CAAC,CAAC,CAAC;YAElD,OAAO,GAAG,CAAC;QACb,CAAC;QAAC,MAAM,CAAC;YACP,kEAAkE;YAClE,4DAA4D;QAC9D,CAAC;IACH,CAAC;IAED,wBAAwB;IACxB,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,qBAAqB,CAClC,UAAkB,EAClB,SAAsB;IAEtB,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,IAAA,mBAAO,EAAC,UAAU,CAAC,CAAC;QACzC,IAAI,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;YAChC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,2BAA2B;QACtE,CAAC;QACD,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAE5B,MAAM,EAAE,GAAG,MAAM,yBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,MAAM,aAAa,GAAG,IAAA,mBAAO,EAAC,UAAU,CAAC,CAAC;QAC1C,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;YACpD,MAAM,UAAU,GAAG,iBAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,UAAU,IAAI,KAAK,CAAC,CAAC;YACzE,MAAM,cAAc,GAAG,IAAA,gBAAI,EAAC,aAAa,EAAE,UAAU,CAAC,CAAC;YACvD,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;YAC5E,MAAM,aAAa,GAAG,MAAM,uBAAuB,CAAC,OAAO,EAAE,EAAE,EAAE,cAAc,CAAC,CAAC;YAEjF,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI;gBACJ,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,aAAa,CAA0C;gBAChF,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,OAAO;gBAC9C,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,UAAU;gBACV,cAAc,EAAE,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAW;gBACtD,iBAAiB;gBACjB,aAAa;aACd,CAAC,CAAC;QACL,CAAC;QAED,OAAO,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACpE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,OAAO,CAAC;QACZ,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,mDAAmD,CAAC;QAChE,CAAC;QAED,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;IACvE,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,KAAK,UAAU,iBAAiB,CAC9B,UAAkB,EAClB,UAAkB,EAClB,SAAsB,EACtB,YAA6C;IAM7C,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,MAAM,qBAAqB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IAChF,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;IACjC,CAAC;IAED,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,EAAE,CAAC,CAAC,kCAAkC;IAC/C,CAAC;IAED,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,IAAA,mBAAO,EAAC,UAAU,CAAC,CAAC;QACzC,SAAS,CAAC,gBAAgB,GAAG,MAAM,sBAAsB,CACvD,YAAY,EACZ,YAAY,EACZ,UAAU,CACX,CAAC;QAEF,OAAO,EAAE,SAAS,EAAE,CAAC;IACvB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO;YACL,SAAS;YACT,eAAe,EAAE;gBACf,QAAQ,EAAE,SAAS,CAAC,IAAI;gBACxB,OAAO,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,4BAA4B;aACvE;SACF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,yBAAyB,CAAC,EAAE,MAAM,EAAkB;IACjE,OAAO,KAAK,IAAI,EAAE;QAChB,MAAM,UAAU,GAAoB,EAAE,CAAC;QACvC,MAAM,aAAa,GAAmB,EAAE,CAAC;QACzC,MAAM,gBAAgB,GAA8D,EAAE,CAAC;QACvF,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;QACpC,MAAM,YAAY,GAAG,IAAI,GAAG,EAA8B,CAAC;QAE3D,IAAI,WAAqB,CAAC;QAC1B,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC;QACjE,IAAI,kBAAkB,EAAE,KAAK,EAAE,CAAC;YAC9B,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YAClD,WAAW,GAAG,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,qBAAS,EAAC,IAAA,wBAAa,EAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACzE,CAAC;aAAM,CAAC;YACN,6EAA6E;YAC7E,WAAW,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAChC,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,IAAI,KAAK,EAAE,MAAM,UAAU,IAAI,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1D,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,eAAe,EAAE,GAAG,MAAM,iBAAiB,CAC1E,UAAU,EACV,IAAI,EACJ,SAAS,EACT,YAAY,CACb,CAAC;gBAEF,IAAI,SAAS,EAAE,CAAC;oBACd,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC7B,CAAC;gBACD,IAAI,YAAY,EAAE,CAAC;oBACjB,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACnC,CAAC;gBACD,IAAI,eAAe,EAAE,CAAC;oBACpB,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBACzC,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1D,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EACF,6BAA6B;4BAC7B,+DAA+D;4BAC/D,kFAAkF;qBACrF;iBACF;gBACD,iBAAiB,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;aACtC,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,GAAG,SAAS,UAAU,CAAC,MAAM,mBAAmB,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;QACzF,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,IAAI,IAAI,8BAA8B,aAAa,CAAC,MAAM,kDAAkD,CAAC;YAC7G,IAAI,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/E,CAAC;QACD,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,IAAI,IAAI,wDAAwD,gBAAgB,CAAC,MAAM,0CAA0C,CAAC;YAClI,IAAI,IAAI,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClF,CAAC;QAED,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC;YAC1C,iBAAiB,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE,gBAAgB,EAAE;SACnE,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -6,8 +6,9 @@
|
|
|
6
6
|
* found in the LICENSE file at https://angular.dev/license
|
|
7
7
|
*/
|
|
8
8
|
import type { McpServer, ToolCallback } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
9
|
-
import { ZodRawShape } from 'zod';
|
|
9
|
+
import type { ZodRawShape } from 'zod';
|
|
10
10
|
import type { AngularWorkspace } from '../../../utilities/config';
|
|
11
|
+
import type { DevServer } from '../dev-server';
|
|
11
12
|
type ToolConfig = Parameters<McpServer['registerTool']>[1];
|
|
12
13
|
export interface McpToolContext {
|
|
13
14
|
server: McpServer;
|
|
@@ -16,6 +17,7 @@ export interface McpToolContext {
|
|
|
16
17
|
warn(text: string): void;
|
|
17
18
|
};
|
|
18
19
|
exampleDatabasePath?: string;
|
|
20
|
+
devServers: Map<string, DevServer>;
|
|
19
21
|
}
|
|
20
22
|
export type McpToolFactory<TInput extends ZodRawShape> = (context: McpToolContext) => ToolCallback<TInput> | Promise<ToolCallback<TInput>>;
|
|
21
23
|
export interface McpToolDeclaration<TInput extends ZodRawShape, TOutput extends ZodRawShape> {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-registry.js","sourceRoot":"","sources":["tool-registry.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;
|
|
1
|
+
{"version":3,"file":"tool-registry.js","sourceRoot":"","sources":["tool-registry.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AAqCH,kCAIC;AAED,sCA2BC;AAjCD,SAAgB,WAAW,CACzB,WAAgD;IAEhD,OAAO,WAAW,CAAC;AACrB,CAAC;AAEM,KAAK,UAAU,aAAa,CACjC,MAAiB,EACjB,OAAuC,EACvC,YAAqC;IAErC,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;QACvC,MAAM,WAAW,GAAG,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,CAAC;QAC3C,IAAI,WAAW,CAAC,cAAc,IAAI,CAAC,CAAC,MAAM,WAAW,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;YACnF,SAAS;QACX,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,MAAM,EAAE,GAAG,WAAW,CAAC;QAE1F,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC;QAE3C,iDAAiD;QACjD,MAAM,CAAC,WAAW,KAAK,EAAE,CAAC;QAC1B,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,CAAC,WAAW,CAAC,YAAY,GAAG,UAAU,CAAC;QAC/C,CAAC;QACD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,wCAAwC;YACxC,MAAM,CAAC,WAAW,CAAC,aAAa,GAAG,CAAC,WAAW,CAAC;QAClD,CAAC;QAED,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright Google LLC All Rights Reserved.
|
|
4
|
+
*
|
|
5
|
+
* Use of this source code is governed by an MIT-style license that can be
|
|
6
|
+
* found in the LICENSE file at https://angular.dev/license
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Returns simple structured content output from an MCP tool.
|
|
10
|
+
*
|
|
11
|
+
* @returns A structure with both `content` and `structuredContent` for maximum compatibility.
|
|
12
|
+
*/
|
|
13
|
+
export declare function createStructuredContentOutput<OutputType>(structuredContent: OutputType): {
|
|
14
|
+
content: {
|
|
15
|
+
type: "text";
|
|
16
|
+
text: string;
|
|
17
|
+
}[];
|
|
18
|
+
structuredContent: OutputType;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Searches for an angular.json file by traversing up the directory tree from a starting directory.
|
|
22
|
+
*
|
|
23
|
+
* @param startDir The directory path to start searching from
|
|
24
|
+
* @param host The workspace host instance used to check file existence. Defaults to LocalWorkspaceHost
|
|
25
|
+
* @returns The absolute path to the directory containing angular.json, or null if not found
|
|
26
|
+
*
|
|
27
|
+
* @remarks
|
|
28
|
+
* This function performs an upward directory traversal starting from `startDir`.
|
|
29
|
+
* It checks each directory for the presence of an angular.json file until either:
|
|
30
|
+
* - The file is found (returns the directory path)
|
|
31
|
+
* - The root of the filesystem is reached (returns null)
|
|
32
|
+
*/
|
|
33
|
+
export declare function findAngularJsonDir(startDir: string, host?: import("./host").Host): string | null;
|
|
@@ -0,0 +1,55 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.createStructuredContentOutput = createStructuredContentOutput;
|
|
11
|
+
exports.findAngularJsonDir = findAngularJsonDir;
|
|
12
|
+
/**
|
|
13
|
+
* @fileoverview
|
|
14
|
+
* Utility functions shared across MCP tools.
|
|
15
|
+
*/
|
|
16
|
+
const node_path_1 = require("node:path");
|
|
17
|
+
const host_1 = require("./host");
|
|
18
|
+
/**
|
|
19
|
+
* Returns simple structured content output from an MCP tool.
|
|
20
|
+
*
|
|
21
|
+
* @returns A structure with both `content` and `structuredContent` for maximum compatibility.
|
|
22
|
+
*/
|
|
23
|
+
function createStructuredContentOutput(structuredContent) {
|
|
24
|
+
return {
|
|
25
|
+
content: [{ type: 'text', text: JSON.stringify(structuredContent, null, 2) }],
|
|
26
|
+
structuredContent,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Searches for an angular.json file by traversing up the directory tree from a starting directory.
|
|
31
|
+
*
|
|
32
|
+
* @param startDir The directory path to start searching from
|
|
33
|
+
* @param host The workspace host instance used to check file existence. Defaults to LocalWorkspaceHost
|
|
34
|
+
* @returns The absolute path to the directory containing angular.json, or null if not found
|
|
35
|
+
*
|
|
36
|
+
* @remarks
|
|
37
|
+
* This function performs an upward directory traversal starting from `startDir`.
|
|
38
|
+
* It checks each directory for the presence of an angular.json file until either:
|
|
39
|
+
* - The file is found (returns the directory path)
|
|
40
|
+
* - The root of the filesystem is reached (returns null)
|
|
41
|
+
*/
|
|
42
|
+
function findAngularJsonDir(startDir, host = host_1.LocalWorkspaceHost) {
|
|
43
|
+
let currentDir = startDir;
|
|
44
|
+
while (true) {
|
|
45
|
+
if (host.existsSync((0, node_path_1.join)(currentDir, 'angular.json'))) {
|
|
46
|
+
return currentDir;
|
|
47
|
+
}
|
|
48
|
+
const parentDir = (0, node_path_1.dirname)(currentDir);
|
|
49
|
+
if (parentDir === currentDir) {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
currentDir = parentDir;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["utils.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AAeH,sEAKC;AAeD,gDAYC;AA7CD;;;GAGG;AAEH,yCAA0C;AAC1C,iCAA4C;AAE5C;;;;GAIG;AACH,SAAgB,6BAA6B,CAAa,iBAA6B;IACrF,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;QACtF,iBAAiB;KAClB,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAgB,kBAAkB,CAAC,QAAgB,EAAE,IAAI,GAAG,yBAAkB;IAC5E,IAAI,UAAU,GAAG,QAAQ,CAAC;IAC1B,OAAO,IAAI,EAAE,CAAC;QACZ,IAAI,IAAI,CAAC,UAAU,CAAC,IAAA,gBAAI,EAAC,UAAU,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;YACtD,OAAO,UAAU,CAAC;QACpB,CAAC;QACD,MAAM,SAAS,GAAG,IAAA,mBAAO,EAAC,UAAU,CAAC,CAAC;QACtC,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,UAAU,GAAG,SAAS,CAAC;IACzB,CAAC;AACH,CAAC"}
|