@metrostar/comet-mcp 1.1.0 → 1.3.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/dist/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { describe, test, expect, vi, beforeEach, afterEach } from 'vitest';
2
- import { getFriendlyDirectoryName, getComponentsFromPackage, getComponentDetails, extractJSDocDescription, extractProps, extractTypes, findComponentFile, findComponentDirectory, } from './utils';
2
+ import { getFriendlyDirectoryName, getComponentsFromPackage, getComponentDetails, extractJSDocDescription, extractProps, extractTypes, findComponentFile, findComponentDirectory, fetchUrl, parseSitemapForUrls, extractUSWDSContent, determineContentType, } from './utils';
3
3
  import fs from 'fs';
4
4
  import path from 'path';
5
5
  // Mock fs and path modules
@@ -1080,5 +1080,485 @@ export { type AnotherType, interface SomeInterface } from './another-module';
1080
1080
  expect(result).toBeNull();
1081
1081
  });
1082
1082
  });
1083
+ describe('fetchUrl', () => {
1084
+ beforeEach(() => {
1085
+ // Mock the global fetch function
1086
+ global.fetch = vi.fn();
1087
+ });
1088
+ afterEach(() => {
1089
+ vi.restoreAllMocks();
1090
+ });
1091
+ test('should successfully fetch content from a URL', async () => {
1092
+ const mockContent = '<html><body>Test content</body></html>';
1093
+ const mockResponse = {
1094
+ ok: true,
1095
+ status: 200,
1096
+ text: vi.fn().mockResolvedValue(mockContent),
1097
+ };
1098
+ vi.mocked(global.fetch).mockResolvedValue(mockResponse);
1099
+ const result = await fetchUrl('https://example.com');
1100
+ expect(global.fetch).toHaveBeenCalledWith('https://example.com');
1101
+ expect(mockResponse.text).toHaveBeenCalled();
1102
+ expect(result).toBe(mockContent);
1103
+ });
1104
+ test('should throw error when response is not ok', async () => {
1105
+ const mockResponse = {
1106
+ ok: false,
1107
+ status: 404,
1108
+ text: vi.fn(),
1109
+ };
1110
+ vi.mocked(global.fetch).mockResolvedValue(mockResponse);
1111
+ await expect(fetchUrl('https://example.com/not-found')).rejects.toThrow('HTTP error! status: 404');
1112
+ expect(global.fetch).toHaveBeenCalledWith('https://example.com/not-found');
1113
+ expect(mockResponse.text).not.toHaveBeenCalled();
1114
+ });
1115
+ test('should throw error when fetch throws an exception', async () => {
1116
+ const fetchError = new Error('Network error');
1117
+ vi.mocked(global.fetch).mockRejectedValue(fetchError);
1118
+ await expect(fetchUrl('https://example.com')).rejects.toThrow('Network error');
1119
+ expect(global.fetch).toHaveBeenCalledWith('https://example.com');
1120
+ });
1121
+ test('should handle different HTTP status codes', async () => {
1122
+ const mockResponse = {
1123
+ ok: false,
1124
+ status: 500,
1125
+ text: vi.fn(),
1126
+ };
1127
+ vi.mocked(global.fetch).mockResolvedValue(mockResponse);
1128
+ await expect(fetchUrl('https://example.com/server-error')).rejects.toThrow('HTTP error! status: 500');
1129
+ });
1130
+ test('should handle empty response content', async () => {
1131
+ const mockResponse = {
1132
+ ok: true,
1133
+ status: 200,
1134
+ text: vi.fn().mockResolvedValue(''),
1135
+ };
1136
+ vi.mocked(global.fetch).mockResolvedValue(mockResponse);
1137
+ const result = await fetchUrl('https://example.com/empty');
1138
+ expect(result).toBe('');
1139
+ });
1140
+ test('should handle response.text() rejection', async () => {
1141
+ const mockResponse = {
1142
+ ok: true,
1143
+ status: 200,
1144
+ text: vi.fn().mockRejectedValue(new Error('Failed to read response')),
1145
+ };
1146
+ vi.mocked(global.fetch).mockResolvedValue(mockResponse);
1147
+ await expect(fetchUrl('https://example.com')).rejects.toThrow('Failed to read response');
1148
+ });
1149
+ });
1150
+ describe('parseSitemapForUrls', () => {
1151
+ test('should extract URLs that match patterns from sitemap XML', () => {
1152
+ const sitemapContent = `<?xml version="1.0" encoding="UTF-8"?>
1153
+ <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
1154
+ <url>
1155
+ <loc>https://example.com/components/button</loc>
1156
+ <lastmod>2023-01-01</lastmod>
1157
+ </url>
1158
+ <url>
1159
+ <loc>https://example.com/utilities/spacing</loc>
1160
+ <lastmod>2023-01-02</lastmod>
1161
+ </url>
1162
+ <url>
1163
+ <loc>https://example.com/about</loc>
1164
+ <lastmod>2023-01-03</lastmod>
1165
+ </url>
1166
+ </urlset>`;
1167
+ const patterns = ['components', 'utilities'];
1168
+ const result = parseSitemapForUrls(sitemapContent, patterns);
1169
+ expect(result).toEqual([
1170
+ 'https://example.com/components/button',
1171
+ 'https://example.com/utilities/spacing',
1172
+ ]);
1173
+ });
1174
+ test('should return empty array when no URLs match patterns', () => {
1175
+ const sitemapContent = `<?xml version="1.0" encoding="UTF-8"?>
1176
+ <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
1177
+ <url>
1178
+ <loc>https://example.com/about</loc>
1179
+ </url>
1180
+ <url>
1181
+ <loc>https://example.com/contact</loc>
1182
+ </url>
1183
+ </urlset>`;
1184
+ const patterns = ['components', 'utilities'];
1185
+ const result = parseSitemapForUrls(sitemapContent, patterns);
1186
+ expect(result).toEqual([]);
1187
+ });
1188
+ test('should handle empty sitemap content', () => {
1189
+ const patterns = ['components'];
1190
+ const result = parseSitemapForUrls('', patterns);
1191
+ expect(result).toEqual([]);
1192
+ });
1193
+ test('should handle malformed XML gracefully', () => {
1194
+ const sitemapContent = 'not valid xml content';
1195
+ const patterns = ['components'];
1196
+ const result = parseSitemapForUrls(sitemapContent, patterns);
1197
+ expect(result).toEqual([]);
1198
+ });
1199
+ test('should handle sitemap without loc tags', () => {
1200
+ const sitemapContent = `<?xml version="1.0" encoding="UTF-8"?>
1201
+ <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
1202
+ <url>
1203
+ <lastmod>2023-01-01</lastmod>
1204
+ </url>
1205
+ </urlset>`;
1206
+ const patterns = ['components'];
1207
+ const result = parseSitemapForUrls(sitemapContent, patterns);
1208
+ expect(result).toEqual([]);
1209
+ });
1210
+ test('should handle empty patterns array', () => {
1211
+ const sitemapContent = `<?xml version="1.0" encoding="UTF-8"?>
1212
+ <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
1213
+ <url>
1214
+ <loc>https://example.com/components/button</loc>
1215
+ </url>
1216
+ </urlset>`;
1217
+ const patterns = [];
1218
+ const result = parseSitemapForUrls(sitemapContent, patterns);
1219
+ expect(result).toEqual([]);
1220
+ });
1221
+ test('should perform case-insensitive pattern matching', () => {
1222
+ const sitemapContent = `<?xml version="1.0" encoding="UTF-8"?>
1223
+ <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
1224
+ <url>
1225
+ <loc>https://example.com/components/Button</loc>
1226
+ </url>
1227
+ <url>
1228
+ <loc>https://example.com/utilities/spacing</loc>
1229
+ </url>
1230
+ </urlset>`;
1231
+ const patterns = ['COMPONENTS', 'UTILITIES'];
1232
+ const result = parseSitemapForUrls(sitemapContent, patterns);
1233
+ expect(result).toEqual([
1234
+ 'https://example.com/components/Button',
1235
+ 'https://example.com/utilities/spacing',
1236
+ ]);
1237
+ });
1238
+ test('should handle multiple pattern matches for same URL', () => {
1239
+ const sitemapContent = `<?xml version="1.0" encoding="UTF-8"?>
1240
+ <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
1241
+ <url>
1242
+ <loc>https://example.com/components/utilities/button-utils</loc>
1243
+ </url>
1244
+ </urlset>`;
1245
+ const patterns = ['components', 'utilities'];
1246
+ const result = parseSitemapForUrls(sitemapContent, patterns);
1247
+ expect(result).toEqual(['https://example.com/components/utilities/button-utils']);
1248
+ });
1249
+ test('should handle URLs with special characters', () => {
1250
+ const sitemapContent = `<?xml version="1.0" encoding="UTF-8"?>
1251
+ <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
1252
+ <url>
1253
+ <loc>https://example.com/components/button-group?version=1.0&amp;type=primary</loc>
1254
+ </url>
1255
+ </urlset>`;
1256
+ const patterns = ['components'];
1257
+ const result = parseSitemapForUrls(sitemapContent, patterns);
1258
+ expect(result).toEqual([
1259
+ 'https://example.com/components/button-group?version=1.0&amp;type=primary',
1260
+ ]);
1261
+ });
1262
+ test('should handle partial pattern matches', () => {
1263
+ const sitemapContent = `<?xml version="1.0" encoding="UTF-8"?>
1264
+ <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
1265
+ <url>
1266
+ <loc>https://example.com/component-library</loc>
1267
+ </url>
1268
+ <url>
1269
+ <loc>https://example.com/utility-classes</loc>
1270
+ </url>
1271
+ </urlset>`;
1272
+ const patterns = ['component', 'utility'];
1273
+ const result = parseSitemapForUrls(sitemapContent, patterns);
1274
+ expect(result).toEqual([
1275
+ 'https://example.com/component-library',
1276
+ 'https://example.com/utility-classes',
1277
+ ]);
1278
+ });
1279
+ test('should handle large sitemap with many URLs', () => {
1280
+ const urls = Array.from({ length: 100 }, (_, i) => {
1281
+ const type = i % 3 === 0 ? 'components' : i % 3 === 1 ? 'utilities' : 'other';
1282
+ return ` <url><loc>https://example.com/${type}/item-${i}</loc></url>`;
1283
+ }).join('\n');
1284
+ const sitemapContent = `<?xml version="1.0" encoding="UTF-8"?>
1285
+ <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
1286
+ ${urls}
1287
+ </urlset>`;
1288
+ const patterns = ['components', 'utilities'];
1289
+ const result = parseSitemapForUrls(sitemapContent, patterns);
1290
+ // Should find approximately 66 URLs (components and utilities, not 'other')
1291
+ expect(result.length).toBe(67); // 34 components + 33 utilities
1292
+ expect(result.every((url) => url.includes('components') || url.includes('utilities'))).toBe(true);
1293
+ });
1294
+ });
1295
+ describe('determineContentType', () => {
1296
+ test('should return "utility" for utility URLs', () => {
1297
+ const url = 'https://designsystem.digital.gov/utilities/spacing/';
1298
+ expect(determineContentType(url)).toBe('utility');
1299
+ });
1300
+ test('should return "design-token" for design token URLs', () => {
1301
+ const url = 'https://designsystem.digital.gov/design-tokens/color/';
1302
+ expect(determineContentType(url)).toBe('design-token');
1303
+ });
1304
+ test('should return "component" for component URLs', () => {
1305
+ const url = 'https://designsystem.digital.gov/components/button/';
1306
+ expect(determineContentType(url)).toBe('component');
1307
+ });
1308
+ test('should return "pattern" for pattern URLs', () => {
1309
+ const url = 'https://designsystem.digital.gov/patterns/create-a-user-profile/';
1310
+ expect(determineContentType(url)).toBe('pattern');
1311
+ });
1312
+ test('should return "template" for template URLs', () => {
1313
+ const url = 'https://designsystem.digital.gov/templates/landing-page/';
1314
+ expect(determineContentType(url)).toBe('template');
1315
+ });
1316
+ test('should return "other" for unrecognized URLs', () => {
1317
+ const url = 'https://designsystem.digital.gov/about/';
1318
+ expect(determineContentType(url)).toBe('other');
1319
+ });
1320
+ test('should handle URLs with multiple matching segments', () => {
1321
+ const url = 'https://designsystem.digital.gov/components/utilities/button/';
1322
+ expect(determineContentType(url)).toBe('utility'); // First match wins
1323
+ });
1324
+ });
1325
+ describe('extractUSWDSContent', () => {
1326
+ test('should extract basic content from HTML with main tag', () => {
1327
+ const html = `
1328
+ <!DOCTYPE html>
1329
+ <html>
1330
+ <head>
1331
+ <title>Button Component - USWDS</title>
1332
+ </head>
1333
+ <body>
1334
+ <nav>Navigation content</nav>
1335
+ <main>
1336
+ <h1>Button Component</h1>
1337
+ <p>The button component allows users to take actions.</p>
1338
+ <code>usa-button</code>
1339
+ <p>Available classes: usa-button, usa-button--secondary</p>
1340
+ </main>
1341
+ <footer>Footer content</footer>
1342
+ </body>
1343
+ </html>
1344
+ `;
1345
+ const result = extractUSWDSContent(html, 'https://designsystem.digital.gov/components/button/');
1346
+ expect(result.url).toBe('https://designsystem.digital.gov/components/button/');
1347
+ expect(result.title).toBe('Button Component - USWDS');
1348
+ expect(result.content).toContain('Button Component');
1349
+ expect(result.content).toContain('The button component allows users to take actions');
1350
+ expect(result.content).not.toContain('Navigation content');
1351
+ expect(result.content).not.toContain('Footer content');
1352
+ expect(result.codeExamples).toEqual(['usa-button']);
1353
+ expect(result.type).toBe('component');
1354
+ });
1355
+ test('should extract content from HTML with article tag', () => {
1356
+ const html = `
1357
+ <html>
1358
+ <head><title>Spacing Utility</title></head>
1359
+ <body>
1360
+ <article>
1361
+ <h1>Spacing Utilities</h1>
1362
+ <p>Use spacing utilities to control margin and padding.</p>
1363
+ <code>margin-1</code>
1364
+ <code>padding-2</code>
1365
+ </article>
1366
+ </body>
1367
+ </html>
1368
+ `;
1369
+ const result = extractUSWDSContent(html, 'https://designsystem.digital.gov/utilities/spacing/');
1370
+ expect(result.title).toBe('Spacing Utility');
1371
+ expect(result.content).toContain('Spacing Utilities');
1372
+ expect(result.codeExamples).toEqual(['margin-1', 'padding-2']);
1373
+ expect(result.type).toBe('utility');
1374
+ });
1375
+ test('should extract content from HTML with content class div', () => {
1376
+ const html = `
1377
+ <html>
1378
+ <head><title>Design Tokens</title></head>
1379
+ <body>
1380
+ <div class="main-content">
1381
+ <h1>Color Tokens</h1>
1382
+ <p>Color tokens provide consistent color values.</p>
1383
+ <code>color-primary</code>
1384
+ </div>
1385
+ </body>
1386
+ </html>
1387
+ `;
1388
+ const result = extractUSWDSContent(html, 'https://designsystem.digital.gov/design-tokens/color/');
1389
+ expect(result.title).toBe('Design Tokens');
1390
+ expect(result.content).toContain('Color Tokens');
1391
+ expect(result.codeExamples).toEqual(['color-primary']);
1392
+ expect(result.type).toBe('design-token');
1393
+ });
1394
+ test('should fall back to body content when no main containers found', () => {
1395
+ const html = `
1396
+ <html>
1397
+ <head><title>Simple Page</title></head>
1398
+ <body>
1399
+ <h1>Simple Content</h1>
1400
+ <p>This is body content without main containers.</p>
1401
+ <code>simple-class</code>
1402
+ </body>
1403
+ </html>
1404
+ `;
1405
+ const result = extractUSWDSContent(html, 'https://example.com/other/');
1406
+ expect(result.title).toBe('Simple Page');
1407
+ expect(result.content).toContain('Simple Content');
1408
+ expect(result.codeExamples).toEqual(['simple-class']);
1409
+ expect(result.type).toBe('other');
1410
+ });
1411
+ test('should remove script and style tags', () => {
1412
+ const html = `
1413
+ <html>
1414
+ <head>
1415
+ <title>Test Page</title>
1416
+ <style>body { margin: 0; }</style>
1417
+ </head>
1418
+ <body>
1419
+ <script>console.log('test');</script>
1420
+ <main>
1421
+ <h1>Clean Content</h1>
1422
+ <p>This content should remain.</p>
1423
+ </main>
1424
+ <script src="analytics.js"></script>
1425
+ </body>
1426
+ </html>
1427
+ `;
1428
+ const result = extractUSWDSContent(html, 'https://example.com/');
1429
+ expect(result.content).toContain('Clean Content');
1430
+ expect(result.content).not.toContain('console.log');
1431
+ expect(result.content).not.toContain('margin: 0');
1432
+ expect(result.content).not.toContain('analytics.js');
1433
+ });
1434
+ test('should handle empty title', () => {
1435
+ const html = `
1436
+ <html>
1437
+ <head></head>
1438
+ <body>
1439
+ <main>Content without title</main>
1440
+ </body>
1441
+ </html>
1442
+ `;
1443
+ const result = extractUSWDSContent(html, 'https://example.com/');
1444
+ expect(result.title).toBe('');
1445
+ expect(result.content).toContain('Content without title');
1446
+ });
1447
+ test('should normalize whitespace in title and content', () => {
1448
+ const html = `
1449
+ <html>
1450
+ <head>
1451
+ <title> Multiple Spaces Title </title>
1452
+ </head>
1453
+ <body>
1454
+ <main>
1455
+ <h1> Header with spaces </h1>
1456
+ <p> Text with multiple spaces </p>
1457
+ </main>
1458
+ </body>
1459
+ </html>
1460
+ `;
1461
+ const result = extractUSWDSContent(html, 'https://example.com/');
1462
+ expect(result.title).toBe('Multiple Spaces Title');
1463
+ expect(result.content).toMatch(/Header with spaces/);
1464
+ expect(result.content).toMatch(/Text with multiple spaces/);
1465
+ expect(result.content).not.toMatch(/ {3}/); // No multiple spaces
1466
+ });
1467
+ test('should extract utilities from content', () => {
1468
+ const html = `
1469
+ <html>
1470
+ <body>
1471
+ <main>
1472
+ <p>Use margin-top and padding-left for spacing.</p>
1473
+ <p>Available classes: .usa-button, text-center, bg-primary.</p>
1474
+ <p>Responsive: tablet:margin, desktop:padding</p>
1475
+ </main>
1476
+ </body>
1477
+ </html>
1478
+ `;
1479
+ const result = extractUSWDSContent(html, 'https://example.com/');
1480
+ // Remove console.log and test what actually works
1481
+ expect(result.utilities).toContain('usa-button');
1482
+ expect(result.utilities).toContain('text-center');
1483
+ expect(result.utilities).toContain('bg-primary');
1484
+ expect(result.utilities).toContain('margin-top');
1485
+ expect(result.utilities).toContain('padding-left');
1486
+ });
1487
+ test('should limit content length to 2000 characters', () => {
1488
+ const longContent = 'a'.repeat(3000);
1489
+ const html = `
1490
+ <html>
1491
+ <body>
1492
+ <main>${longContent}</main>
1493
+ </body>
1494
+ </html>
1495
+ `;
1496
+ const result = extractUSWDSContent(html, 'https://example.com/');
1497
+ expect(result.content.length).toBe(2000);
1498
+ expect(result.content).toBe('a'.repeat(2000));
1499
+ });
1500
+ test('should handle code tags with attributes', () => {
1501
+ const html = `
1502
+ <html>
1503
+ <body>
1504
+ <main>
1505
+ <code class="language-html">usa-button</code>
1506
+ <code data-lang="css">margin-top-1</code>
1507
+ <code>simple-code</code>
1508
+ </main>
1509
+ </body>
1510
+ </html>
1511
+ `;
1512
+ const result = extractUSWDSContent(html, 'https://example.com/');
1513
+ expect(result.codeExamples).toEqual(['usa-button', 'margin-top-1', 'simple-code']);
1514
+ });
1515
+ test('should handle empty HTML', () => {
1516
+ const html = '';
1517
+ const result = extractUSWDSContent(html, 'https://example.com/');
1518
+ expect(result.url).toBe('https://example.com/');
1519
+ expect(result.title).toBe('');
1520
+ expect(result.content).toBe('');
1521
+ expect(result.codeExamples).toEqual([]);
1522
+ expect(result.utilities).toEqual([]);
1523
+ expect(result.type).toBe('other');
1524
+ });
1525
+ test('should remove nav, header, and footer content', () => {
1526
+ const html = `
1527
+ <html>
1528
+ <body>
1529
+ <header>Header navigation</header>
1530
+ <nav>Main navigation</nav>
1531
+ <main>
1532
+ <h1>Main Content</h1>
1533
+ <p>This is the important content.</p>
1534
+ </main>
1535
+ <footer>Footer links</footer>
1536
+ </body>
1537
+ </html>
1538
+ `;
1539
+ const result = extractUSWDSContent(html, 'https://example.com/');
1540
+ expect(result.content).toContain('Main Content');
1541
+ expect(result.content).toContain('important content');
1542
+ expect(result.content).not.toContain('Header navigation');
1543
+ expect(result.content).not.toContain('Main navigation');
1544
+ expect(result.content).not.toContain('Footer links');
1545
+ });
1546
+ test('should handle malformed HTML gracefully', () => {
1547
+ const html = `
1548
+ <html>
1549
+ <head><title>Test</title>
1550
+ <body>
1551
+ <main>
1552
+ <p>Content with unclosed tags
1553
+ <div>More content
1554
+ </main>
1555
+ </html>
1556
+ `;
1557
+ const result = extractUSWDSContent(html, 'https://example.com/');
1558
+ expect(result.title).toBe('Test');
1559
+ expect(result.content).toContain('Content with unclosed tags');
1560
+ expect(result.content).toContain('More content');
1561
+ });
1562
+ });
1083
1563
  });
1084
1564
  //# sourceMappingURL=utils.test.js.map