@schemyx/mcp 0.1.2 → 0.1.3
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/codebase-scanner/bundle.js +51 -1
- package/dist/codebase-scanner/bundle.js.map +1 -1
- package/dist/codebase-scanner/extractors.d.ts +3 -0
- package/dist/codebase-scanner/extractors.js +63 -3
- package/dist/codebase-scanner/extractors.js.map +1 -1
- package/dist/codebase-scanner/recipes.d.ts +7 -0
- package/dist/codebase-scanner/recipes.js +186 -0
- package/dist/codebase-scanner/recipes.js.map +1 -1
- package/dist/codebase-scanner/types.d.ts +1 -0
- package/package.json +1 -1
|
@@ -151,6 +151,7 @@ export declare function createRoleDensityKey(classes: string[], children?: UiEle
|
|
|
151
151
|
export declare function createRoleSurfaceKey(classes: string[]): string;
|
|
152
152
|
export declare function createRoleLayoutKey(kind: string, tagName: string, classes: string[], children?: UiElementChildSummary[], parentClasses?: string[]): string;
|
|
153
153
|
export declare function isCompactHeroEyebrow(classes: string[]): boolean;
|
|
154
|
+
export declare function isPlainTextEyebrow(classes: string[], layoutRole?: string): boolean;
|
|
154
155
|
export declare function isOverlayPill(classes: string[]): boolean;
|
|
155
156
|
export declare function isHeroHeadingScale(classes: string[]): boolean;
|
|
156
157
|
export declare function isOversizedHeadingScale(classes: string[]): boolean;
|
|
@@ -158,6 +159,8 @@ export declare function isMetricValueScale(classes: string[]): boolean;
|
|
|
158
159
|
export declare function isCompactStatValue(classes: string[]): boolean;
|
|
159
160
|
export declare function isLargeMetricValue(classes: string[]): boolean;
|
|
160
161
|
export declare function isCompactStatCard(classes: string[], childRoles: string[]): boolean;
|
|
162
|
+
export declare function isCompactMetricGrid(classes: string[]): boolean;
|
|
163
|
+
export declare function isCtaPanelShell(classes: string[], childRoles?: string[]): boolean;
|
|
161
164
|
export declare function isInteractiveServiceCard(classes: string[]): boolean;
|
|
162
165
|
export declare function isStaticArticleCard(classes: string[]): boolean;
|
|
163
166
|
export declare function isMediaPanelCard(classes: string[], childKinds: string[], childRoles: string[]): boolean;
|
|
@@ -120,6 +120,7 @@ exports.createRoleDensityKey = createRoleDensityKey;
|
|
|
120
120
|
exports.createRoleSurfaceKey = createRoleSurfaceKey;
|
|
121
121
|
exports.createRoleLayoutKey = createRoleLayoutKey;
|
|
122
122
|
exports.isCompactHeroEyebrow = isCompactHeroEyebrow;
|
|
123
|
+
exports.isPlainTextEyebrow = isPlainTextEyebrow;
|
|
123
124
|
exports.isOverlayPill = isOverlayPill;
|
|
124
125
|
exports.isHeroHeadingScale = isHeroHeadingScale;
|
|
125
126
|
exports.isOversizedHeadingScale = isOversizedHeadingScale;
|
|
@@ -127,6 +128,8 @@ exports.isMetricValueScale = isMetricValueScale;
|
|
|
127
128
|
exports.isCompactStatValue = isCompactStatValue;
|
|
128
129
|
exports.isLargeMetricValue = isLargeMetricValue;
|
|
129
130
|
exports.isCompactStatCard = isCompactStatCard;
|
|
131
|
+
exports.isCompactMetricGrid = isCompactMetricGrid;
|
|
132
|
+
exports.isCtaPanelShell = isCtaPanelShell;
|
|
130
133
|
exports.isInteractiveServiceCard = isInteractiveServiceCard;
|
|
131
134
|
exports.isStaticArticleCard = isStaticArticleCard;
|
|
132
135
|
exports.isMediaPanelCard = isMediaPanelCard;
|
|
@@ -1766,6 +1769,7 @@ function isTypographyClass(className) {
|
|
|
1766
1769
|
}
|
|
1767
1770
|
function isTypographyScaleBase(base) {
|
|
1768
1771
|
return (/^(?:font-|leading-|tracking-|line-clamp|whitespace-|break-|truncate|text-balance|text-pretty|text-nowrap|text-wrap)/.test(base) ||
|
|
1772
|
+
/^(?:uppercase|lowercase|capitalize|normal-case)$/.test(base) ||
|
|
1769
1773
|
/^(?:fs-|fw-|lh-|display-|lead|small|text-uppercase|text-lowercase|text-capitalize)/.test(base) ||
|
|
1770
1774
|
/^text-(?:xs|sm|base|lg|xl|[2-9]xl|\[[^\]]+\])/.test(base) ||
|
|
1771
1775
|
/^max-w-\[(?:\d+(?:\.\d+)?)?ch\]/.test(base));
|
|
@@ -2254,7 +2258,11 @@ function createUiRoleSignature(input) {
|
|
|
2254
2258
|
}
|
|
2255
2259
|
if (kind === 'layout') {
|
|
2256
2260
|
roleGroup = 'layout';
|
|
2257
|
-
if (layout === '
|
|
2261
|
+
if (layout === 'compact-metric-grid-layout') {
|
|
2262
|
+
role = 'compact-metric-grid-layout';
|
|
2263
|
+
flags.add('compact-metric-grid');
|
|
2264
|
+
}
|
|
2265
|
+
else if (layout === 'split-media-layout') {
|
|
2258
2266
|
role = 'split-media-layout';
|
|
2259
2267
|
flags.add('split-media');
|
|
2260
2268
|
}
|
|
@@ -2317,6 +2325,10 @@ function createUiRoleSignature(input) {
|
|
|
2317
2325
|
role = 'hero-stat-card-compact';
|
|
2318
2326
|
flags.add('compact-stat-card');
|
|
2319
2327
|
}
|
|
2328
|
+
else if (isCtaPanelShell(classes, childRoles)) {
|
|
2329
|
+
role = 'cta-panel-shell';
|
|
2330
|
+
flags.add('cta-panel');
|
|
2331
|
+
}
|
|
2320
2332
|
else if (isInteractiveServiceCard(classes)) {
|
|
2321
2333
|
role = 'interactive-service-card';
|
|
2322
2334
|
flags.add('interactive-card');
|
|
@@ -2335,7 +2347,11 @@ function createUiRoleSignature(input) {
|
|
|
2335
2347
|
}
|
|
2336
2348
|
if (kind === 'text') {
|
|
2337
2349
|
roleGroup = 'text';
|
|
2338
|
-
if (
|
|
2350
|
+
if (isPlainTextEyebrow(classes, input.layoutRole)) {
|
|
2351
|
+
role = 'section-eyebrow-text';
|
|
2352
|
+
flags.add('plain-eyebrow');
|
|
2353
|
+
}
|
|
2354
|
+
else if (isCompactStatValue(classes)) {
|
|
2339
2355
|
role = 'compact-stat-value';
|
|
2340
2356
|
flags.add('compact-stat-value');
|
|
2341
2357
|
}
|
|
@@ -2389,7 +2405,7 @@ function exactRoleClassFacts(classes) {
|
|
|
2389
2405
|
isSizingClass(className) ||
|
|
2390
2406
|
isLayoutClass(className) ||
|
|
2391
2407
|
isStateClass(className) ||
|
|
2392
|
-
/^(?:bg-|text-|border|rounded|shadow|backdrop|opacity|ring|outline|z-|absolute|relative|fixed|sticky|top-|right-|bottom-|left-|overflow-|object-|aspect-|group|transition|duration|ease)/.test(base));
|
|
2408
|
+
/^(?:bg-|text-|border|rounded|shadow|backdrop|opacity|ring|outline|z-|absolute|relative|fixed|sticky|top-|right-|bottom-|left-|overflow-|object-|aspect-|auto-rows-|grid-cols-|grid-rows-|group|transition|duration|ease)/.test(base));
|
|
2393
2409
|
})).slice(0, 120);
|
|
2394
2410
|
}
|
|
2395
2411
|
function createRoleScaleKey(classes, children = []) {
|
|
@@ -2461,6 +2477,10 @@ function createRoleLayoutKey(kind, tagName, classes, children = [], parentClasse
|
|
|
2461
2477
|
(baseSet.has('right-3') || baseSet.has('right-4'))) {
|
|
2462
2478
|
return 'absolute-bottom-right-overlay';
|
|
2463
2479
|
}
|
|
2480
|
+
if (isCompactMetricGrid(classes) ||
|
|
2481
|
+
isCompactMetricGrid(parentClasses)) {
|
|
2482
|
+
return 'compact-metric-grid-layout';
|
|
2483
|
+
}
|
|
2464
2484
|
if ((baseSet.has('grid') || parentBaseSet.has('grid')) &&
|
|
2465
2485
|
hasMediaChild &&
|
|
2466
2486
|
hasTextChildren &&
|
|
@@ -2492,6 +2512,18 @@ function isCompactHeroEyebrow(classes) {
|
|
|
2492
2512
|
bases.some((base) => /^py-(?:1\.5|2)$/.test(base)) &&
|
|
2493
2513
|
bases.some((base) => /^px-(?:3|4|5)$/.test(base)));
|
|
2494
2514
|
}
|
|
2515
|
+
function isPlainTextEyebrow(classes, layoutRole) {
|
|
2516
|
+
const bases = classes.map(utils_1.classBase);
|
|
2517
|
+
const baseSet = new Set(bases);
|
|
2518
|
+
const hasPlainTextScale = classes.some((className) => /(?:^|:)text-(?:xs|sm|\[(?:10|11|12|13|14)px\])(?:\/\d+|\]\/\d+)?$/.test(className));
|
|
2519
|
+
const hasSurfaceTreatment = bases.some((base) => /^(?:bg-|border|rounded|shadow|ring|outline|backdrop)/.test(base));
|
|
2520
|
+
const hasPillSpacing = bases.some((base) => /^px-/.test(base)) || bases.some((base) => /^py-/.test(base));
|
|
2521
|
+
return (layoutRole === 'eyebrow-or-badge' &&
|
|
2522
|
+
baseSet.has('uppercase') &&
|
|
2523
|
+
hasPlainTextScale &&
|
|
2524
|
+
!hasSurfaceTreatment &&
|
|
2525
|
+
!hasPillSpacing);
|
|
2526
|
+
}
|
|
2495
2527
|
function isOverlayPill(classes) {
|
|
2496
2528
|
const bases = classes.map(utils_1.classBase);
|
|
2497
2529
|
const baseSet = new Set(bases);
|
|
@@ -2544,6 +2576,34 @@ function isCompactStatCard(classes, childRoles) {
|
|
|
2544
2576
|
bases.some((base) => /^p-(?:4|5)$/.test(base)) &&
|
|
2545
2577
|
!baseSet.has('group')));
|
|
2546
2578
|
}
|
|
2579
|
+
function isCompactMetricGrid(classes) {
|
|
2580
|
+
const bases = classes.map(utils_1.classBase);
|
|
2581
|
+
const baseSet = new Set(bases);
|
|
2582
|
+
const hasCompactGap = bases.some((base) => /^gap-(?:2|3|4)$/.test(base));
|
|
2583
|
+
const hasConstrainedWidth = classes.some((className) => /(?:^|:)(?:max-w-(?:2xl|3xl|4xl)|lg:max-w-(?:2xl|3xl|4xl)|max-w-\[[^\]]+\])$/.test(className));
|
|
2584
|
+
const hasDenseColumns = classes.some((className) => /(?:^|:)(?:grid-cols-[34]|grid-cols-\[[^\]]+\]|lg:grid-cols-[34]|md:grid-cols-[34])$/.test(className));
|
|
2585
|
+
return (baseSet.has('grid') &&
|
|
2586
|
+
(baseSet.has('auto-rows-fr') || baseSet.has('items-stretch')) &&
|
|
2587
|
+
hasCompactGap &&
|
|
2588
|
+
hasDenseColumns &&
|
|
2589
|
+
hasConstrainedWidth);
|
|
2590
|
+
}
|
|
2591
|
+
function isCtaPanelShell(classes, childRoles = []) {
|
|
2592
|
+
const bases = classes.map(utils_1.classBase);
|
|
2593
|
+
const baseSet = new Set(bases);
|
|
2594
|
+
const hasLargePanelShape = bases.some((base) => /^rounded-\[(?:2[4-9]|3\d)px\]$/.test(base)) ||
|
|
2595
|
+
bases.some((base) => /^rounded-(?:2xl|3xl)$/.test(base));
|
|
2596
|
+
const hasSpaciousPadding = bases.some((base) => /^p-(?:8|10|12|14|16)$/.test(base)) ||
|
|
2597
|
+
classes.some((className) => /(?:^|:)p-(?:8|10|12|14|16)$/.test(className));
|
|
2598
|
+
const hasCalloutSurface = bases.some((base) => /^bg-/.test(base)) &&
|
|
2599
|
+
bases.some((base) => /^border/.test(base)) &&
|
|
2600
|
+
(baseSet.has('overflow-hidden') || bases.some((base) => /^shadow/.test(base)));
|
|
2601
|
+
const hasTextHierarchy = childRoles.includes('section-heading') ||
|
|
2602
|
+
childRoles.includes('section-eyebrow-text') ||
|
|
2603
|
+
childRoles.includes('body-copy') ||
|
|
2604
|
+
childRoles.includes('action-button');
|
|
2605
|
+
return hasLargePanelShape && hasSpaciousPadding && hasCalloutSurface && hasTextHierarchy;
|
|
2606
|
+
}
|
|
2547
2607
|
function isInteractiveServiceCard(classes) {
|
|
2548
2608
|
const bases = classes.map(utils_1.classBase);
|
|
2549
2609
|
const baseSet = new Set(bases);
|