@specverse/engines 6.30.5 → 6.32.11
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/ai/analyse-runner.d.ts.map +1 -1
- package/dist/ai/analyse-runner.js +19 -0
- package/dist/ai/analyse-runner.js.map +1 -1
- package/dist/ai/behaviours-runner.d.ts.map +1 -1
- package/dist/ai/behaviours-runner.js +47 -7
- package/dist/ai/behaviours-runner.js.map +1 -1
- package/dist/ai/create-runner.d.ts.map +1 -1
- package/dist/ai/create-runner.js +6 -0
- package/dist/ai/create-runner.js.map +1 -1
- package/dist/ai/manifest-emitter.d.ts +35 -10
- package/dist/ai/manifest-emitter.d.ts.map +1 -1
- package/dist/ai/manifest-emitter.js +140 -54
- package/dist/ai/manifest-emitter.js.map +1 -1
- package/dist/ai/microcall-orchestrator.d.ts +8 -0
- package/dist/ai/microcall-orchestrator.d.ts.map +1 -1
- package/dist/ai/microcall-orchestrator.js +5 -1
- package/dist/ai/microcall-orchestrator.js.map +1 -1
- package/dist/ai/processes-to-microcall-context.d.ts +66 -0
- package/dist/ai/processes-to-microcall-context.d.ts.map +1 -0
- package/dist/ai/processes-to-microcall-context.js +148 -0
- package/dist/ai/processes-to-microcall-context.js.map +1 -0
- package/dist/ai/skeleton-emitter.d.ts +1 -1
- package/dist/ai/skeleton-emitter.d.ts.map +1 -1
- package/dist/ai/skeleton-emitter.js +162 -14
- package/dist/ai/skeleton-emitter.js.map +1 -1
- package/dist/analyse-prepass/adapters/react-views.d.ts +85 -0
- package/dist/analyse-prepass/adapters/react-views.d.ts.map +1 -1
- package/dist/analyse-prepass/adapters/react-views.js +290 -0
- package/dist/analyse-prepass/adapters/react-views.js.map +1 -1
- package/dist/analyse-prepass/imports-graph.d.ts +133 -0
- package/dist/analyse-prepass/imports-graph.d.ts.map +1 -0
- package/dist/analyse-prepass/imports-graph.js +430 -0
- package/dist/analyse-prepass/imports-graph.js.map +1 -0
- package/dist/analyse-prepass/index.d.ts +31 -0
- package/dist/analyse-prepass/index.d.ts.map +1 -1
- package/dist/analyse-prepass/index.js +22 -0
- package/dist/analyse-prepass/index.js.map +1 -1
- package/dist/inference/logical/generators/view-generator.d.ts +10 -0
- package/dist/inference/logical/generators/view-generator.d.ts.map +1 -1
- package/dist/inference/logical/generators/view-generator.js +20 -0
- package/dist/inference/logical/generators/view-generator.js.map +1 -1
- package/dist/libs/instance-factories/cli/templates/commander/command-generator.js +10 -3
- package/libs/instance-factories/cli/templates/commander/command-generator.ts +10 -3
- package/package.json +3 -3
|
@@ -46,6 +46,29 @@ export interface ReactViewDeclaration {
|
|
|
46
46
|
* above the component declaration, when present. Stripped of comment
|
|
47
47
|
* markers and reformatted as a single line. */
|
|
48
48
|
docstring?: string;
|
|
49
|
+
/** Engines 6.31.0+. Classified view type from JSX shape — one of the
|
|
50
|
+
* standard SpecVerse view types (`list`, `form`, `detail`, `dashboard`,
|
|
51
|
+
* `modal`, `provider`, `screen`, `layout`, `widget`, `page`).
|
|
52
|
+
* See `classifyViewType` for the full pattern table. */
|
|
53
|
+
viewType?: string;
|
|
54
|
+
/** Engines 6.31.0+. Sub-component names rendered inside this view's
|
|
55
|
+
* JSX. Captures composition graph deterministically without resolving
|
|
56
|
+
* imports — the consumer (skeleton-emitter) cross-references against
|
|
57
|
+
* detected views to filter to known names. */
|
|
58
|
+
usesComponents?: string[];
|
|
59
|
+
/** Engines 6.31.0+. Action handles extracted from `<button onClick={X}>`
|
|
60
|
+
* patterns. The label is captured from the button's text content
|
|
61
|
+
* when present. The handler ref is the function name (used to resolve
|
|
62
|
+
* CURVED-op binding later). */
|
|
63
|
+
actions?: Array<{
|
|
64
|
+
name: string;
|
|
65
|
+
label?: string;
|
|
66
|
+
variant?: 'primary' | 'destructive' | 'secondary';
|
|
67
|
+
}>;
|
|
68
|
+
/** Engines 6.31.0+. True when the JSX has a "no items" / "empty list"
|
|
69
|
+
* branch (detected via `length === 0` / `isEmpty` / `!items.length`
|
|
70
|
+
* conditional rendering). */
|
|
71
|
+
emptyState?: boolean;
|
|
49
72
|
}
|
|
50
73
|
export interface ReactViewFile {
|
|
51
74
|
filePath: string;
|
|
@@ -60,4 +83,66 @@ export declare function looksLikeReactSource(source: string): boolean;
|
|
|
60
83
|
* Returns at most one entry per name (per-file dedup).
|
|
61
84
|
*/
|
|
62
85
|
export declare function parseReactViews(filePath: string, source: string): ReactViewFile;
|
|
86
|
+
/**
|
|
87
|
+
* Engines 6.31.0+. Classify a React component into one of SpecVerse's
|
|
88
|
+
* standard view types from JSX shape + filename hints. Returns the
|
|
89
|
+
* canonical type string. Falls back to `page` (the catch-all
|
|
90
|
+
* top-level type) when no specific pattern matches.
|
|
91
|
+
*
|
|
92
|
+
* Detection table (first match wins, ordered most-specific first):
|
|
93
|
+
*
|
|
94
|
+
* `provider` — Renders `Context.Provider` or `<XContext.Provider>` and
|
|
95
|
+
* little else. Distinguished from generic wrappers by
|
|
96
|
+
* being focused on the Provider alone.
|
|
97
|
+
* `layout` — Filename ends `Layout` AND component renders children
|
|
98
|
+
* via `{children}` or `<Outlet/>` (Next.js / RR shapes).
|
|
99
|
+
* `screen` — Filename ends `Screen` OR uses `SafeAreaView` /
|
|
100
|
+
* `<Screen>` wrapper (RN convention).
|
|
101
|
+
* `modal` — Renders `<Modal>` / `<Dialog>` / `createPortal` /
|
|
102
|
+
* `<dialog>`.
|
|
103
|
+
* `wizard` — Multi-step flow detected by `step` state + numeric
|
|
104
|
+
* progression (heuristic).
|
|
105
|
+
* `dashboard` — Multiple grid/panel children at top level.
|
|
106
|
+
* `form` — Renders a `<form>` with submit handler, or has
|
|
107
|
+
* `onSubmit` / `useForm` patterns.
|
|
108
|
+
* `list` — Renders `<table>`, `.map(item =>`, or `<ul>`/`<ol>`
|
|
109
|
+
* with iteration.
|
|
110
|
+
* `widget` — Tiny render — single root element, no state, ≤2 JSX
|
|
111
|
+
* nodes deep. Pills, badges, icons, status chips.
|
|
112
|
+
* `detail` — Single-entity readonly render (h1 + dl/dt/dd or
|
|
113
|
+
* similar information-display shape).
|
|
114
|
+
* `page` — Default catch-all when nothing more specific matches.
|
|
115
|
+
*/
|
|
116
|
+
export declare function classifyViewType(input: {
|
|
117
|
+
name: string;
|
|
118
|
+
kind: ReactViewDeclaration['kind'];
|
|
119
|
+
filePath: string;
|
|
120
|
+
body: string;
|
|
121
|
+
}): string;
|
|
122
|
+
/**
|
|
123
|
+
* Engines 6.31.0+. Extract sub-component names rendered in this view.
|
|
124
|
+
* Captures `<UpperCaseTag` patterns; consumer (skeleton-emitter) can
|
|
125
|
+
* filter against detected views to keep only known refs. PascalCase-
|
|
126
|
+
* gated to skip HTML tags (`<div>`, `<span>`, etc.).
|
|
127
|
+
*/
|
|
128
|
+
export declare function extractUsesComponents(body: string): string[];
|
|
129
|
+
/**
|
|
130
|
+
* Engines 6.31.0+. Extract action declarations from button/link click
|
|
131
|
+
* handlers. Each action gets a name (the handler reference), an
|
|
132
|
+
* optional label (the button's visible text), and an optional variant
|
|
133
|
+
* inferred from context (destructive / primary / secondary).
|
|
134
|
+
*
|
|
135
|
+
* Patterns recognised:
|
|
136
|
+
* <button onClick={handler}>Label</button>
|
|
137
|
+
* <Button onClick={handler} variant="destructive">Label</Button>
|
|
138
|
+
* <Pressable onPress={handler}>Label</Pressable> (RN)
|
|
139
|
+
* <Link onClick={handler}>Label</Link>
|
|
140
|
+
*/
|
|
141
|
+
export declare function extractActions(body: string): NonNullable<ReactViewDeclaration['actions']>;
|
|
142
|
+
/**
|
|
143
|
+
* Engines 6.31.0+. Detect a "no items" / empty-state branch in the JSX.
|
|
144
|
+
* Returns true when the body has a conditional render path for the
|
|
145
|
+
* zero-data case.
|
|
146
|
+
*/
|
|
147
|
+
export declare function detectEmptyState(body: string): boolean;
|
|
63
148
|
//# sourceMappingURL=react-views.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react-views.d.ts","sourceRoot":"","sources":["../../../src/analyse-prepass/adapters/react-views.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,MAAM,WAAW,oBAAoB;IACnC,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,kFAAkF;IAClF,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,kEAAkE;IAClE,IAAI,EAAE,oBAAoB,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,gBAAgB,CAAC;IACtF,iFAAiF;IACjF,QAAQ,EAAE,OAAO,CAAC;IAClB;;oDAEgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"react-views.d.ts","sourceRoot":"","sources":["../../../src/analyse-prepass/adapters/react-views.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,MAAM,WAAW,oBAAoB;IACnC,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,kFAAkF;IAClF,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,kEAAkE;IAClE,IAAI,EAAE,oBAAoB,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,gBAAgB,CAAC;IACtF,iFAAiF;IACjF,QAAQ,EAAE,OAAO,CAAC;IAClB;;oDAEgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;6DAGyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;mDAG+C;IAC/C,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B;;;oCAGgC;IAChC,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,SAAS,GAAG,aAAa,GAAG,WAAW,CAAA;KAAE,CAAC,CAAC;IACrG;;kCAE8B;IAC9B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,oBAAoB,EAAE,CAAC;CAC/B;AAED,kEAAkE;AAClE,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED,yFAAyF;AACzF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAM5D;AAyFD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,aAAa,CAqG/E;AA2FD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,oBAAoB,CAAC,MAAM,CAAC,CAAC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,MAAM,CA+DT;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAW5D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,CA6CzF;AAkFD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAWtD"}
|
|
@@ -201,6 +201,15 @@ export function parseReactViews(filePath, source) {
|
|
|
201
201
|
// the declaration (within 3 source lines). Looks at the ORIGINAL
|
|
202
202
|
// source so comments aren't already stripped.
|
|
203
203
|
const docstring = extractLeadingDocstring(source, startLine);
|
|
204
|
+
// Engines 6.31.0+: extract richer structural facts from the
|
|
205
|
+
// component body. Body is the text between the start and end of
|
|
206
|
+
// the declaration in the cleaned (comment-stripped) source.
|
|
207
|
+
const bodyEnd = endOffset !== undefined ? endOffset : Math.min(cleaned.length, offset + 4000);
|
|
208
|
+
const body = cleaned.slice(offset, bodyEnd);
|
|
209
|
+
const viewType = classifyViewType({ name, kind, filePath, body });
|
|
210
|
+
const usesComponents = extractUsesComponents(body);
|
|
211
|
+
const actions = extractActions(body);
|
|
212
|
+
const emptyState = detectEmptyState(body);
|
|
204
213
|
found.set(name, {
|
|
205
214
|
name,
|
|
206
215
|
filePath,
|
|
@@ -208,6 +217,10 @@ export function parseReactViews(filePath, source) {
|
|
|
208
217
|
kind,
|
|
209
218
|
isScreen: name.endsWith('Screen'),
|
|
210
219
|
...(docstring ? { docstring } : {}),
|
|
220
|
+
viewType,
|
|
221
|
+
...(usesComponents.length > 0 ? { usesComponents } : {}),
|
|
222
|
+
...(actions.length > 0 ? { actions } : {}),
|
|
223
|
+
...(emptyState ? { emptyState: true } : {}),
|
|
211
224
|
});
|
|
212
225
|
};
|
|
213
226
|
// 1. Class components: `class Name extends (React.)Component`
|
|
@@ -372,6 +385,283 @@ function cleanLineComments(raw) {
|
|
|
372
385
|
return null;
|
|
373
386
|
return joined.length > 240 ? joined.slice(0, 237) + '...' : joined;
|
|
374
387
|
}
|
|
388
|
+
/**
|
|
389
|
+
* Engines 6.31.0+. Classify a React component into one of SpecVerse's
|
|
390
|
+
* standard view types from JSX shape + filename hints. Returns the
|
|
391
|
+
* canonical type string. Falls back to `page` (the catch-all
|
|
392
|
+
* top-level type) when no specific pattern matches.
|
|
393
|
+
*
|
|
394
|
+
* Detection table (first match wins, ordered most-specific first):
|
|
395
|
+
*
|
|
396
|
+
* `provider` — Renders `Context.Provider` or `<XContext.Provider>` and
|
|
397
|
+
* little else. Distinguished from generic wrappers by
|
|
398
|
+
* being focused on the Provider alone.
|
|
399
|
+
* `layout` — Filename ends `Layout` AND component renders children
|
|
400
|
+
* via `{children}` or `<Outlet/>` (Next.js / RR shapes).
|
|
401
|
+
* `screen` — Filename ends `Screen` OR uses `SafeAreaView` /
|
|
402
|
+
* `<Screen>` wrapper (RN convention).
|
|
403
|
+
* `modal` — Renders `<Modal>` / `<Dialog>` / `createPortal` /
|
|
404
|
+
* `<dialog>`.
|
|
405
|
+
* `wizard` — Multi-step flow detected by `step` state + numeric
|
|
406
|
+
* progression (heuristic).
|
|
407
|
+
* `dashboard` — Multiple grid/panel children at top level.
|
|
408
|
+
* `form` — Renders a `<form>` with submit handler, or has
|
|
409
|
+
* `onSubmit` / `useForm` patterns.
|
|
410
|
+
* `list` — Renders `<table>`, `.map(item =>`, or `<ul>`/`<ol>`
|
|
411
|
+
* with iteration.
|
|
412
|
+
* `widget` — Tiny render — single root element, no state, ≤2 JSX
|
|
413
|
+
* nodes deep. Pills, badges, icons, status chips.
|
|
414
|
+
* `detail` — Single-entity readonly render (h1 + dl/dt/dd or
|
|
415
|
+
* similar information-display shape).
|
|
416
|
+
* `page` — Default catch-all when nothing more specific matches.
|
|
417
|
+
*/
|
|
418
|
+
export function classifyViewType(input) {
|
|
419
|
+
const { name, filePath, body } = input;
|
|
420
|
+
const filenameStem = filePath.split('/').pop()?.replace(/\.(tsx|jsx)$/, '') ?? '';
|
|
421
|
+
// Provider — most specific, check first.
|
|
422
|
+
if (/<\w+\s*\.\s*Provider\b/.test(body) || /createContext\b[\s\S]{0,200}\.\s*Provider/.test(body)) {
|
|
423
|
+
return 'provider';
|
|
424
|
+
}
|
|
425
|
+
// Layout — RootLayout / TabLayout pattern (Next.js / Expo Router).
|
|
426
|
+
if (/Layout$/.test(name) || /Layout$/.test(filenameStem)) {
|
|
427
|
+
if (/\{\s*children\s*\}/.test(body) || /<Outlet\b/.test(body) || /<Slot\b/.test(body)) {
|
|
428
|
+
return 'layout';
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
// Screen — RN convention.
|
|
432
|
+
if (/Screen$/.test(name) || /Screen$/.test(filenameStem))
|
|
433
|
+
return 'screen';
|
|
434
|
+
if (/<SafeAreaView\b/.test(body))
|
|
435
|
+
return 'screen';
|
|
436
|
+
// Modal / Dialog / Portal.
|
|
437
|
+
if (/<Modal\b|<Dialog\b|<Drawer\b|createPortal\b|<dialog\b/.test(body))
|
|
438
|
+
return 'modal';
|
|
439
|
+
// Wizard heuristic — multi-step state.
|
|
440
|
+
if (/useState[\s\S]{0,100}\bstep\b/.test(body) && /(setStep|nextStep|step\s*\+)/.test(body)) {
|
|
441
|
+
return 'wizard';
|
|
442
|
+
}
|
|
443
|
+
// Form — submit handler or useForm hook.
|
|
444
|
+
if (/<form\b/.test(body) || /\buseForm\s*\(/.test(body) || /onSubmit\s*=/.test(body)) {
|
|
445
|
+
return 'form';
|
|
446
|
+
}
|
|
447
|
+
// List — table / array.map() / ul/ol with iteration.
|
|
448
|
+
if (/<table\b/.test(body))
|
|
449
|
+
return 'list';
|
|
450
|
+
if (/\.\s*map\s*\(\s*[\w(]+\s*=>/.test(body) && /<(ul|ol|tbody|tr)\b/.test(body)) {
|
|
451
|
+
return 'list';
|
|
452
|
+
}
|
|
453
|
+
if (/\.\s*map\s*\(\s*[\w(]+\s*=>\s*<\w/.test(body)) {
|
|
454
|
+
// Generic .map → JSX (e.g. .map(g => <Card key={g.id}>...))
|
|
455
|
+
return 'list';
|
|
456
|
+
}
|
|
457
|
+
// Dashboard — multiple top-level panels in a grid.
|
|
458
|
+
if (/(grid-cols-|<Grid\b|<Stack\b)/.test(body) && (body.match(/<Card\b|<Panel\b|<Section\b/g) || []).length >= 2) {
|
|
459
|
+
return 'dashboard';
|
|
460
|
+
}
|
|
461
|
+
// Detail — readonly single-entity display shape.
|
|
462
|
+
if (/<dl\b/.test(body) || (/<h1\b/.test(body) && /<dd\b|<p>\s*\{[\w.]+\}/.test(body))) {
|
|
463
|
+
return 'detail';
|
|
464
|
+
}
|
|
465
|
+
// Widget — small/single-element render, no state machinery.
|
|
466
|
+
// Heuristic: short body (<800 chars after JSX trim) AND no useState AND
|
|
467
|
+
// few JSX nodes (≤3 distinct tag opens).
|
|
468
|
+
const tagOpens = (body.match(/<[A-Za-z]/g) || []).length;
|
|
469
|
+
if (body.length < 1500 && !/useState\s*\(/.test(body) && tagOpens <= 5) {
|
|
470
|
+
return 'widget';
|
|
471
|
+
}
|
|
472
|
+
// Default — page (top-level navigable / catch-all).
|
|
473
|
+
return 'page';
|
|
474
|
+
}
|
|
475
|
+
/**
|
|
476
|
+
* Engines 6.31.0+. Extract sub-component names rendered in this view.
|
|
477
|
+
* Captures `<UpperCaseTag` patterns; consumer (skeleton-emitter) can
|
|
478
|
+
* filter against detected views to keep only known refs. PascalCase-
|
|
479
|
+
* gated to skip HTML tags (`<div>`, `<span>`, etc.).
|
|
480
|
+
*/
|
|
481
|
+
export function extractUsesComponents(body) {
|
|
482
|
+
const found = new Set();
|
|
483
|
+
const re = /<([A-Z][A-Za-z0-9_]+)/g;
|
|
484
|
+
let m;
|
|
485
|
+
while ((m = re.exec(body)) !== null) {
|
|
486
|
+
const tag = m[1];
|
|
487
|
+
// Skip Context.Provider / Fragment / known React internals.
|
|
488
|
+
if (tag === 'Fragment')
|
|
489
|
+
continue;
|
|
490
|
+
found.add(tag);
|
|
491
|
+
}
|
|
492
|
+
return [...found];
|
|
493
|
+
}
|
|
494
|
+
/**
|
|
495
|
+
* Engines 6.31.0+. Extract action declarations from button/link click
|
|
496
|
+
* handlers. Each action gets a name (the handler reference), an
|
|
497
|
+
* optional label (the button's visible text), and an optional variant
|
|
498
|
+
* inferred from context (destructive / primary / secondary).
|
|
499
|
+
*
|
|
500
|
+
* Patterns recognised:
|
|
501
|
+
* <button onClick={handler}>Label</button>
|
|
502
|
+
* <Button onClick={handler} variant="destructive">Label</Button>
|
|
503
|
+
* <Pressable onPress={handler}>Label</Pressable> (RN)
|
|
504
|
+
* <Link onClick={handler}>Label</Link>
|
|
505
|
+
*/
|
|
506
|
+
export function extractActions(body) {
|
|
507
|
+
const out = [];
|
|
508
|
+
const seen = new Set();
|
|
509
|
+
// Match opening tag with onClick OR onPress + handler ref + capture
|
|
510
|
+
// tag content up to closing tag.
|
|
511
|
+
const re = /<(?:button|Button|Pressable|TouchableOpacity|Link|a)\b([^>]*?)on(?:Click|Press)\s*=\s*\{([\s\S]*?)\}([^>]*)>([\s\S]*?)<\/(?:button|Button|Pressable|TouchableOpacity|Link|a)>/g;
|
|
512
|
+
let m;
|
|
513
|
+
while ((m = re.exec(body)) !== null) {
|
|
514
|
+
const beforeAttrs = m[1];
|
|
515
|
+
const rawHandlerExpr = m[2];
|
|
516
|
+
const afterAttrs = m[3];
|
|
517
|
+
const innerText = m[4];
|
|
518
|
+
const handler = parseHandlerName(rawHandlerExpr);
|
|
519
|
+
if (!handler || seen.has(handler))
|
|
520
|
+
continue;
|
|
521
|
+
seen.add(handler);
|
|
522
|
+
// Extract label — first plain-text content inside the tag. Use the
|
|
523
|
+
// balanced-brace stripper so nested template literals + ternaries
|
|
524
|
+
// (`{cond ? `${x}` : ''}`) don't leak partial expression fragments
|
|
525
|
+
// through the label.
|
|
526
|
+
const labelMatch = stripJsxNoise(innerText)
|
|
527
|
+
.replace(/\s+/g, ' ')
|
|
528
|
+
.trim();
|
|
529
|
+
const label = labelMatch.length > 0 && labelMatch.length < 80
|
|
530
|
+
? labelMatch.slice(0, 80)
|
|
531
|
+
: undefined;
|
|
532
|
+
// Extract variant from class / variant attribute.
|
|
533
|
+
let variant;
|
|
534
|
+
const attrs = beforeAttrs + afterAttrs;
|
|
535
|
+
if (/variant\s*=\s*["']destructive["']|delete|destructive|red-/.test(attrs + handler.toLowerCase())) {
|
|
536
|
+
variant = 'destructive';
|
|
537
|
+
}
|
|
538
|
+
else if (/variant\s*=\s*["']primary["']|primary|cta/.test(attrs)) {
|
|
539
|
+
variant = 'primary';
|
|
540
|
+
}
|
|
541
|
+
else if (/variant\s*=\s*["']secondary["']|secondary/.test(attrs)) {
|
|
542
|
+
variant = 'secondary';
|
|
543
|
+
}
|
|
544
|
+
out.push({
|
|
545
|
+
name: handler,
|
|
546
|
+
...(label ? { label } : {}),
|
|
547
|
+
...(variant ? { variant } : {}),
|
|
548
|
+
});
|
|
549
|
+
}
|
|
550
|
+
return out;
|
|
551
|
+
}
|
|
552
|
+
/**
|
|
553
|
+
* Engines 6.31.2+. Pick the most useful identifier out of a JSX-event
|
|
554
|
+
* handler expression. Walks the expression in order of preference:
|
|
555
|
+
*
|
|
556
|
+
* 1. Bare identifier ref (`save`, `props.deleteItem` → `deleteItem`)
|
|
557
|
+
* 2. First call inside an arrow / async arrow / function body
|
|
558
|
+
* (`async () => doStuff()` → `doStuff`)
|
|
559
|
+
*
|
|
560
|
+
* Reserved JS keywords (`async`, `function`, `return`, `await`, `void`,
|
|
561
|
+
* `null`, `undefined`, `true`, `false`) are rejected as handler names so
|
|
562
|
+
* we don't end up emitting `actions: { async: {} }` from
|
|
563
|
+
* `onClick={async () => ...}`.
|
|
564
|
+
*/
|
|
565
|
+
function parseHandlerName(expr) {
|
|
566
|
+
const RESERVED = new Set([
|
|
567
|
+
'async', 'await', 'function', 'return', 'void',
|
|
568
|
+
'null', 'undefined', 'true', 'false', 'new', 'this',
|
|
569
|
+
]);
|
|
570
|
+
const cleaned = expr.trim();
|
|
571
|
+
// Bare identifier or dotted access (`save`, `props.save`, `this.save`).
|
|
572
|
+
const bare = cleaned.match(/^[\w.$]+$/);
|
|
573
|
+
if (bare) {
|
|
574
|
+
const tail = cleaned.replace(/^.*\./, '');
|
|
575
|
+
if (!RESERVED.has(tail))
|
|
576
|
+
return tail;
|
|
577
|
+
}
|
|
578
|
+
// Find the first call expression `someFn(...)` inside the handler body.
|
|
579
|
+
const callRe = /\b([A-Za-z_$][\w$]*)\s*\(/g;
|
|
580
|
+
let m;
|
|
581
|
+
while ((m = callRe.exec(cleaned)) !== null) {
|
|
582
|
+
const candidate = m[1];
|
|
583
|
+
if (RESERVED.has(candidate))
|
|
584
|
+
continue;
|
|
585
|
+
return candidate;
|
|
586
|
+
}
|
|
587
|
+
return '';
|
|
588
|
+
}
|
|
589
|
+
/**
|
|
590
|
+
* Engines 6.31.2+. Strip JSX noise (tags + balanced `{...}` expressions
|
|
591
|
+
* including nested template literals) so the visible inner text falls
|
|
592
|
+
* through cleanly. The naive `\{[^}]*\}` regex breaks on
|
|
593
|
+
* `{cond ? `${x}` : ''}` because the first `}` it finds is inside the
|
|
594
|
+
* template literal, not the JSX expression.
|
|
595
|
+
*/
|
|
596
|
+
function stripJsxNoise(s) {
|
|
597
|
+
let out = '';
|
|
598
|
+
let i = 0;
|
|
599
|
+
while (i < s.length) {
|
|
600
|
+
const c = s[i];
|
|
601
|
+
if (c === '<') {
|
|
602
|
+
// Skip a balanced tag `<...>`.
|
|
603
|
+
const end = s.indexOf('>', i);
|
|
604
|
+
if (end === -1) {
|
|
605
|
+
i = s.length;
|
|
606
|
+
break;
|
|
607
|
+
}
|
|
608
|
+
i = end + 1;
|
|
609
|
+
continue;
|
|
610
|
+
}
|
|
611
|
+
if (c === '{') {
|
|
612
|
+
// Skip a balanced JSX expression, tracking braces + template
|
|
613
|
+
// literals so embedded `${...}` doesn't terminate us early.
|
|
614
|
+
let depth = 1;
|
|
615
|
+
let inBacktick = false;
|
|
616
|
+
i++;
|
|
617
|
+
while (i < s.length && depth > 0) {
|
|
618
|
+
const ch = s[i];
|
|
619
|
+
if (ch === '\\') {
|
|
620
|
+
i += 2;
|
|
621
|
+
continue;
|
|
622
|
+
}
|
|
623
|
+
if (ch === '`') {
|
|
624
|
+
inBacktick = !inBacktick;
|
|
625
|
+
i++;
|
|
626
|
+
continue;
|
|
627
|
+
}
|
|
628
|
+
if (!inBacktick) {
|
|
629
|
+
if (ch === '{')
|
|
630
|
+
depth++;
|
|
631
|
+
else if (ch === '}')
|
|
632
|
+
depth--;
|
|
633
|
+
}
|
|
634
|
+
i++;
|
|
635
|
+
}
|
|
636
|
+
out += ' ';
|
|
637
|
+
continue;
|
|
638
|
+
}
|
|
639
|
+
out += c;
|
|
640
|
+
i++;
|
|
641
|
+
}
|
|
642
|
+
return out;
|
|
643
|
+
}
|
|
644
|
+
/**
|
|
645
|
+
* Engines 6.31.0+. Detect a "no items" / empty-state branch in the JSX.
|
|
646
|
+
* Returns true when the body has a conditional render path for the
|
|
647
|
+
* zero-data case.
|
|
648
|
+
*/
|
|
649
|
+
export function detectEmptyState(body) {
|
|
650
|
+
// Common patterns:
|
|
651
|
+
// if (items.length === 0) return <Empty/>
|
|
652
|
+
// {items.length === 0 && <NoItems/>}
|
|
653
|
+
// {!items.length ? <Empty/> : ...}
|
|
654
|
+
// {isEmpty && <Empty/>}
|
|
655
|
+
if (/\.length\s*===\s*0/.test(body))
|
|
656
|
+
return true;
|
|
657
|
+
if (/!\w+\.length/.test(body))
|
|
658
|
+
return true;
|
|
659
|
+
if (/\bisEmpty\b/.test(body))
|
|
660
|
+
return true;
|
|
661
|
+
if (/<(Empty|NoItems|EmptyState|NoData|NoResults)\b/.test(body))
|
|
662
|
+
return true;
|
|
663
|
+
return false;
|
|
664
|
+
}
|
|
375
665
|
/** Lightweight paren-matcher (string-aware). Used by parseReactViews's function-decl path. */
|
|
376
666
|
function findMatchingParenLite(source, openIdx) {
|
|
377
667
|
let depth = 1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react-views.js","sourceRoot":"","sources":["../../../src/analyse-prepass/adapters/react-views.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"react-views.js","sourceRoot":"","sources":["../../../src/analyse-prepass/adapters/react-views.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-component imports graph (engines 6.32.6+).
|
|
3
|
+
*
|
|
4
|
+
* Phase A of Dom Williams's "shared library / reference vs implicit
|
|
5
|
+
* include" feedback (2026-05-07). When the analysed source is a
|
|
6
|
+
* monorepo with shared/ libraries (idle_meta has shared/services/,
|
|
7
|
+
* shared/ui/, shared/data/, shared/schemas/), the prepass already
|
|
8
|
+
* decomposes the source into one component per top-level dir — but
|
|
9
|
+
* never models the dependency direction. `IdleApiService` ends up
|
|
10
|
+
* with action steps like `[call] AuthService.login` without any
|
|
11
|
+
* spec-level binding to the `Services` component that owns AuthService.
|
|
12
|
+
*
|
|
13
|
+
* This module walks each component's TS/JS files for `import { X } from
|
|
14
|
+
* '...'` statements, resolves the import path relative to the source
|
|
15
|
+
* tree, and matches the resolved path against the other components'
|
|
16
|
+
* sourceDirs. Result: a map of consumer → (target component → set of
|
|
17
|
+
* imported symbol names). The skeleton-emitter consumes that map to
|
|
18
|
+
* emit `import:` blocks per consumer component.
|
|
19
|
+
*
|
|
20
|
+
* Detection is regex-based — same approach as the express-routes /
|
|
21
|
+
* zod-schemas adapters. Good enough for ES module + CommonJS source;
|
|
22
|
+
* misses dynamic `await import()` and `require(variable)` (rare in
|
|
23
|
+
* spec-able codebases). Type-only imports are included; the realize
|
|
24
|
+
* engine will ignore unused selects.
|
|
25
|
+
*/
|
|
26
|
+
import type { StructuralPrepass } from './interface.js';
|
|
27
|
+
import type { SpecVerseFacts } from './index.js';
|
|
28
|
+
export interface ParsedImport {
|
|
29
|
+
/** Raw module specifier from `from '...'`. */
|
|
30
|
+
source: string;
|
|
31
|
+
/**
|
|
32
|
+
* Imported symbol names — what the spec's `import: select:` should
|
|
33
|
+
* list. Default-imports contribute their local name; named imports
|
|
34
|
+
* contribute the imported (not local-aliased) name. Namespace
|
|
35
|
+
* imports (`import * as M from 'mod'`) DO NOT contribute — `M` is a
|
|
36
|
+
* local module alias, not an exported symbol; emitting it as
|
|
37
|
+
* `select: [M]` would be misleading. The `namespaceAlias` field
|
|
38
|
+
* captures it separately for downstream tools that care.
|
|
39
|
+
*/
|
|
40
|
+
names: string[];
|
|
41
|
+
/** Local alias for `import * as <X> from 'mod'`, when present. */
|
|
42
|
+
namespaceAlias?: string;
|
|
43
|
+
/** True for type-only imports (`import type { ... } from '...'`). */
|
|
44
|
+
typeOnly: boolean;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Extract all import statements from a TS/JS source file. Handles:
|
|
48
|
+
* - `import { A, B as C } from 'mod'` — named
|
|
49
|
+
* - `import D from 'mod'` — default
|
|
50
|
+
* - `import * as M from 'mod'` — namespace
|
|
51
|
+
* - `import 'mod'` — side-effect (returns names: [])
|
|
52
|
+
* - `import type { A } from 'mod'` — type-only
|
|
53
|
+
* - `const { A } = require('mod')` — CommonJS destructuring
|
|
54
|
+
*
|
|
55
|
+
* Returns an empty array on empty input. Skips comments and string
|
|
56
|
+
* literals (basic heuristic — strips block comments and line comments).
|
|
57
|
+
*/
|
|
58
|
+
export declare function parseImports(source: string): ParsedImport[];
|
|
59
|
+
/**
|
|
60
|
+
* Resolve a relative import path against the file that contains the
|
|
61
|
+
* import. Returns a normalised path (no `..` / `.` segments, no leading
|
|
62
|
+
* `./`). Non-relative specifiers (`react`, `@scope/pkg`) return null
|
|
63
|
+
* unless they match an alias in `aliases` (Engines 6.32.7+).
|
|
64
|
+
*
|
|
65
|
+
* The result is the path as it would appear in the source tree, NOT
|
|
66
|
+
* the absolute disk path. Caller compares it against component
|
|
67
|
+
* sourceDirs (which are also tree-relative) to see if the import
|
|
68
|
+
* crosses a component boundary.
|
|
69
|
+
*
|
|
70
|
+
* @param aliases Optional map of alias resolutions from a tsconfig
|
|
71
|
+
* `paths` block. Keys are alias patterns (e.g. `@shared/ui`,
|
|
72
|
+
* `@/*`); values are pre-resolved tree-paths. The resolver
|
|
73
|
+
* substitutes a longest-prefix match before falling back
|
|
74
|
+
* to relative-only resolution.
|
|
75
|
+
*/
|
|
76
|
+
export declare function resolveImportPath(fromFile: string, importSpec: string, aliases?: Record<string, string>): string | null;
|
|
77
|
+
/**
|
|
78
|
+
* Engines 6.32.7+ — parse the `compilerOptions.paths` block from a
|
|
79
|
+
* tsconfig.json and return an absolute alias map.
|
|
80
|
+
*
|
|
81
|
+
* tsconfig paths are relative to the tsconfig's directory (or to
|
|
82
|
+
* `compilerOptions.baseUrl` if set). This function resolves them to
|
|
83
|
+
* tree-relative absolute paths so the import resolver can match them
|
|
84
|
+
* against component sourceDirs without further normalisation.
|
|
85
|
+
*
|
|
86
|
+
* Returns an empty object when the tsconfig has no paths block, or
|
|
87
|
+
* when parsing fails (best-effort — broken tsconfigs shouldn't break
|
|
88
|
+
* the analyse pipeline).
|
|
89
|
+
*
|
|
90
|
+
* Note: paths entries like `[ "../../shared/ui/src/index.ts" ]` — we
|
|
91
|
+
* strip the trailing `index.ts` segment so the alias maps to the
|
|
92
|
+
* directory level (which is what the import resolver needs to match
|
|
93
|
+
* against component sourceDirs).
|
|
94
|
+
*/
|
|
95
|
+
export declare function parseTsconfigPaths(tsconfigSource: string, tsconfigDir: string): Record<string, string>;
|
|
96
|
+
/**
|
|
97
|
+
* Match a resolved import path against component sourceDirs and return
|
|
98
|
+
* the owning component's suggestedName. Picks the LONGEST matching
|
|
99
|
+
* sourceDir prefix (handles the case where one component's dir is
|
|
100
|
+
* nested inside another's). Returns null if no component owns the path.
|
|
101
|
+
*/
|
|
102
|
+
export declare function findOwningComponent(resolvedPath: string, components: NonNullable<SpecVerseFacts['suggestedComponents']>): string | null;
|
|
103
|
+
/**
|
|
104
|
+
* Per-consumer import index: `{ [consumer]: { [target]: [...names] } }`.
|
|
105
|
+
*
|
|
106
|
+
* Symbols are imported names (we don't dedup against locally-defined
|
|
107
|
+
* symbols; the spec-level `import:` block lists what's pulled in, not
|
|
108
|
+
* what's used). Plain-object shape so it serialises cleanly into
|
|
109
|
+
* facts.json and can be re-loaded by downstream consumers (the
|
|
110
|
+
* skeleton emitter, future tools that want a cross-component
|
|
111
|
+
* dependency view, etc.).
|
|
112
|
+
*/
|
|
113
|
+
export type ImportsByComponent = Record<string, Record<string, string[]>>;
|
|
114
|
+
export interface BuildImportsByComponentOpts {
|
|
115
|
+
facts: SpecVerseFacts;
|
|
116
|
+
/** Async file reader — accepts a tree-relative or absolute path. */
|
|
117
|
+
readFile: (path: string) => Promise<string>;
|
|
118
|
+
/** Optional: limit which file extensions get parsed. Defaults to TS/JS. */
|
|
119
|
+
extensionFilter?: (path: string) => boolean;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Build the per-consumer imports graph. Each component's files are
|
|
123
|
+
* walked, their imports parsed, and resolved against the source tree;
|
|
124
|
+
* imports that cross into another component's sourceDir are aggregated.
|
|
125
|
+
*/
|
|
126
|
+
export declare function buildImportsByComponent(opts: BuildImportsByComponentOpts): Promise<ImportsByComponent>;
|
|
127
|
+
/**
|
|
128
|
+
* Convenience: build the imports graph from a StructuralPrepass backend.
|
|
129
|
+
* The backend's `fileSourceText` provides the file reader; this is the
|
|
130
|
+
* same surface the adapters use to read files.
|
|
131
|
+
*/
|
|
132
|
+
export declare function buildImportsByComponentFromBackend(facts: SpecVerseFacts, backend: StructuralPrepass): Promise<ImportsByComponent>;
|
|
133
|
+
//# sourceMappingURL=imports-graph.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"imports-graph.d.ts","sourceRoot":"","sources":["../../src/analyse-prepass/imports-graph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,MAAM,WAAW,YAAY;IAC3B,8CAA8C;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;;;OAQG;IACH,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,kEAAkE;IAClE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qEAAqE;IACrE,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,EAAE,CAkD3D;AAgBD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GACnC,MAAM,GAAG,IAAI,CAkCf;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,kBAAkB,CAChC,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,MAAM,GAClB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAqBxB;AA2DD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,WAAW,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC,GAC7D,MAAM,GAAG,IAAI,CAYf;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;AAE1E,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,cAAc,CAAC;IACtB,oEAAoE;IACpE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5C,2EAA2E;IAC3E,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;CAC7C;AAED;;;;GAIG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,2BAA2B,GAChC,OAAO,CAAC,kBAAkB,CAAC,CAwG7B;AAMD;;;;GAIG;AACH,wBAAsB,kCAAkC,CACtD,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,kBAAkB,CAAC,CAK7B"}
|