@glubean/scanner 0.5.2 → 0.8.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.
@@ -8,7 +8,6 @@
8
8
  * Output:
9
9
  * - NormalizedContractMeta — JSON-safe contract projection (mirrors
10
10
  * ExtractedContractProjection from sdk, plus `exportName`)
11
- * - NormalizedFlowMeta — JSON-safe flow projection (mirrors
12
11
  * ExtractedFlowProjection, plus `exportName`)
13
12
  *
14
13
  * Schema conversion: anywhere scanner sees a value with `.toJSONSchema()`
@@ -18,6 +17,7 @@
18
17
  import { pathToFileURL } from "node:url";
19
18
  import { resolve, basename } from "node:path";
20
19
  import { readdirSync, statSync } from "node:fs";
20
+ import { GLUBEAN_KINDS, buildSuffixes } from "./kinds.js";
21
21
  // =============================================================================
22
22
  // Duck typing
23
23
  // =============================================================================
@@ -57,24 +57,37 @@ export function isProtocolContract(val) {
57
57
  val._extracted !== null);
58
58
  }
59
59
  /**
60
- * Check if a value looks like a FlowContract.
61
- * FlowContract extends Array<Test> and has `_flow.protocol === "flow"`.
62
- *
63
- * May also carry `_extracted`a pre-computed ExtractedFlowProjection
64
- * populated by the SDK's flow builder via `normalizeFlow(_flow)`. When
65
- * present it is the source of truth for scanner output (full field
66
- * mappings, compute reads/writes). When absent we degrade to duck-typing
67
- * `_flow` directly (no lens proxy tracing in scanner since it is
68
- * dependency-free).
60
+ * If the export is an un-built vNext `WorkflowBuilder` (user omitted the
61
+ * trailing `.build()`), call `.build()` to resolve it to a `BuiltWorkflow`.
62
+ * Duck-typed like the flow builder; a build() that throws (poisoned builder)
63
+ * leaves the value unrecognizedthe import error surface is the SDK's.
69
64
  */
70
- export function isFlowContract(val) {
65
+ function autoBuildWorkflowBuilder(val) {
66
+ if (typeof val === "object" &&
67
+ val !== null &&
68
+ val.__glubean_type === "workflow-builder" &&
69
+ typeof val.build === "function") {
70
+ try {
71
+ return val.build();
72
+ }
73
+ catch {
74
+ return val;
75
+ }
76
+ }
77
+ return val;
78
+ }
79
+ /**
80
+ * Type guard — a built vNext workflow handle (`workflow(...).build()`):
81
+ * a Test[] array carrying the workflow IR + the pre-computed `_projection`
82
+ * (the same dual shape as FlowContract, recognized the same dep-free way).
83
+ */
84
+ export function isBuiltWorkflow(val) {
71
85
  return (Array.isArray(val) &&
72
- typeof val._flow === "object" &&
73
- val._flow !== null &&
74
- val._flow.protocol === "flow");
86
+ val.__glubean_type === "workflow" &&
87
+ typeof val._projection === "object" &&
88
+ val._projection !== null &&
89
+ typeof val._projection.id === "string");
75
90
  }
76
- // =============================================================================
77
- // Mapping: projection → NormalizedContractMeta
78
91
  //
79
92
  // Reads the adapter-produced `_extracted` (JSON-safe form). The SDK's
80
93
  // `dispatchContract` populates this field unconditionally by calling
@@ -97,6 +110,9 @@ export function protocolContractToNormalized(value, exportName) {
97
110
  extensions: ex.extensions,
98
111
  schemas: ex.schemas,
99
112
  meta: ex.meta,
113
+ ...(Array.isArray(ex.unprojectableSchemas) && ex.unprojectableSchemas.length > 0
114
+ ? { unprojectableSchemas: ex.unprojectableSchemas }
115
+ : {}),
100
116
  cases: (ex.cases ?? []).map((c) => ({
101
117
  key: c.key,
102
118
  description: c.description,
@@ -116,178 +132,11 @@ export function protocolContractToNormalized(value, exportName) {
116
132
  runnability: c.runnability,
117
133
  hasNeeds: c.hasNeeds,
118
134
  needsSchema: c.needsSchema,
135
+ direction: c.direction,
136
+ runnable: c.runnable,
119
137
  })),
120
138
  };
121
139
  }
122
- export function flowContractToNormalized(value, exportName) {
123
- // Prefer the pre-computed extracted projection. The SDK's flow builder
124
- // populates `_extracted` via `normalizeFlow(_flow)` — this path carries
125
- // full FieldMapping data for `.step()` lenses and reads/writes for
126
- // `.compute()` nodes. Scanner just attaches `exportName`.
127
- if (value._extracted) {
128
- const ex = value._extracted;
129
- return {
130
- id: ex.id,
131
- exportName,
132
- protocol: "flow",
133
- description: ex.description,
134
- tags: ex.tags,
135
- extensions: ex.extensions,
136
- ...(ex.skip !== undefined ? { skip: ex.skip } : {}),
137
- ...(ex.only !== undefined ? { only: ex.only } : {}),
138
- setupDynamic: ex.setupDynamic,
139
- steps: (ex.steps ?? []).map(mapExtractedStep),
140
- };
141
- }
142
- // Fallback: duck-type `_flow` directly. Lens tracing is unavailable
143
- // here (scanner is dep-free); callers downstream lose FieldMappings +
144
- // compute reads/writes. In practice this only fires for flows
145
- // constructed outside the canonical SDK path (e.g. test fixtures).
146
- const f = value._flow;
147
- return {
148
- id: f.id,
149
- exportName,
150
- protocol: "flow",
151
- description: f.description,
152
- tags: f.tags,
153
- extensions: f.extensions,
154
- ...(f.skip !== undefined ? { skip: f.skip } : {}),
155
- ...(f.only !== undefined ? { only: f.only } : {}),
156
- setupDynamic: f.setup ? true : undefined,
157
- steps: (f.steps ?? []).map(mapRuntimeFlowStep),
158
- };
159
- }
160
- /**
161
- * Recursively normalize a step from the pre-computed `_extracted` projection
162
- * (JSON-safe). Branch cases + default nest through the same mapper so nested
163
- * branches and their leaf steps are preserved rather than collapsed into an
164
- * empty contract-call.
165
- */
166
- function mapExtractedStep(s) {
167
- if (s.kind === "compute") {
168
- return { kind: "compute", name: s.name, reads: s.reads ?? [], writes: s.writes ?? [] };
169
- }
170
- if (s.kind === "branch") {
171
- return {
172
- kind: "branch",
173
- mode: s.mode,
174
- ...(s.name !== undefined ? { name: s.name } : {}),
175
- ...(s.subjectPath !== undefined ? { subjectPath: s.subjectPath } : {}),
176
- cases: (s.cases ?? []).map((c) => ({
177
- ...(c.value !== undefined ? { value: c.value } : {}),
178
- ...(c.message !== undefined ? { message: c.message } : {}),
179
- ...(c.predicate !== undefined ? { predicate: c.predicate } : {}),
180
- steps: (c.steps ?? []).map(mapExtractedStep),
181
- })),
182
- default: (s.default ?? []).map(mapExtractedStep),
183
- };
184
- }
185
- if (s.kind === "poll") {
186
- return {
187
- kind: "poll",
188
- ...(s.name !== undefined ? { name: s.name } : {}),
189
- contractId: s.contractId ?? "",
190
- caseKey: s.caseKey ?? "",
191
- protocol: s.protocol ?? "",
192
- target: s.target ?? "",
193
- inputs: s.inputs,
194
- outputs: s.outputs,
195
- ...(Array.isArray(s.accept) ? { accept: s.accept } : {}),
196
- ...(s.until !== undefined ? { until: s.until } : {}),
197
- ...(s.message !== undefined ? { message: s.message } : {}),
198
- every: s.every ?? 0,
199
- backoff: s.backoff ?? 1,
200
- ...(s.timeoutMs !== undefined ? { timeoutMs: s.timeoutMs } : {}),
201
- ...(s.perAttemptTimeoutMs !== undefined ? { perAttemptTimeoutMs: s.perAttemptTimeoutMs } : {}),
202
- ...(s.maxAttempts !== undefined ? { maxAttempts: s.maxAttempts } : {}),
203
- };
204
- }
205
- return {
206
- kind: "contract-call",
207
- name: s.name,
208
- contractId: s.contractId ?? "",
209
- caseKey: s.caseKey ?? "",
210
- protocol: s.protocol ?? "",
211
- target: s.target ?? "",
212
- inputs: s.inputs,
213
- outputs: s.outputs,
214
- ...(Array.isArray(s.accept) ? { accept: s.accept } : {}),
215
- };
216
- }
217
- /**
218
- * Recursively normalize a step from a duck-typed runtime `_flow`. The runtime
219
- * predicate is not JSON-safe (branded builder object), so the predicate is
220
- * omitted in this fallback path; sub-steps are still preserved.
221
- */
222
- function mapRuntimeFlowStep(s) {
223
- if (s.kind === "compute") {
224
- return { kind: "compute", name: s.name, reads: [], writes: [] };
225
- }
226
- if (s.kind === "branch") {
227
- return {
228
- kind: "branch",
229
- mode: s.mode,
230
- ...(s.name !== undefined ? { name: s.name } : {}),
231
- ...(s.subject?.path !== undefined ? { subjectPath: [...s.subject.path] } : {}),
232
- cases: (s.cases ?? []).map((c) => ({
233
- ...(c.value !== undefined ? { value: c.value } : {}),
234
- ...(c.message !== undefined ? { message: c.message } : {}),
235
- steps: (c.steps ?? []).map(mapRuntimeFlowStep),
236
- })),
237
- default: (s.default ?? []).map(mapRuntimeFlowStep),
238
- };
239
- }
240
- if (s.kind === "poll") {
241
- // `until` omitted: the runtime exit predicate is a branded builder object
242
- // (not JSON-safe), like a branch predicate in this fallback path.
243
- return {
244
- kind: "poll",
245
- ...(s.name !== undefined ? { name: s.name } : {}),
246
- contractId: s.contract?._projection?.id ?? s.ref?.contractId ?? "",
247
- caseKey: s.caseKey ?? s.ref?.caseKey ?? "",
248
- protocol: s.ref?.protocol ?? "",
249
- target: s.ref?.target ?? "",
250
- ...(Array.isArray(s.bindings?.accept) ? { accept: s.bindings.accept } : {}),
251
- ...(s.message !== undefined ? { message: s.message } : {}),
252
- every: s.every ?? 0,
253
- backoff: s.backoff ?? 1,
254
- ...(s.timeoutMs !== undefined ? { timeoutMs: s.timeoutMs } : {}),
255
- ...(s.perAttemptTimeoutMs !== undefined ? { perAttemptTimeoutMs: s.perAttemptTimeoutMs } : {}),
256
- ...(s.maxAttempts !== undefined ? { maxAttempts: s.maxAttempts } : {}),
257
- };
258
- }
259
- return {
260
- kind: "contract-call",
261
- name: s.name,
262
- contractId: s.contract?._projection?.id ?? s.ref?.contractId ?? "",
263
- caseKey: s.caseKey ?? s.ref?.caseKey ?? "",
264
- protocol: s.ref?.protocol ?? "",
265
- target: s.ref?.target ?? "",
266
- ...(Array.isArray(s.bindings?.accept) ? { accept: s.bindings.accept } : {}),
267
- };
268
- }
269
- // =============================================================================
270
- // FlowBuilder auto-build
271
- // =============================================================================
272
- /**
273
- * If `val` is an unbuilt FlowBuilder (from `contract.flow(id).step(...)`
274
- * without a trailing `.build()`), call `.build()` to resolve it to a
275
- * FlowContract. Scanner is dep-free, so we duck-type the builder shape.
276
- */
277
- function autoBuildFlowBuilder(val) {
278
- if (typeof val === "object" &&
279
- val !== null &&
280
- val.__glubean_type === "flow-builder" &&
281
- typeof val.build === "function") {
282
- try {
283
- return val.build();
284
- }
285
- catch {
286
- return val;
287
- }
288
- }
289
- return val;
290
- }
291
140
  /**
292
141
  * Convert a BootstrapAttachment runtime export to a marker. Splits
293
142
  * `testId` into contractId + caseKey at the LAST dot (contractId can have
@@ -331,14 +180,13 @@ function normalizeRunnability(runnability) {
331
180
  * available per §5.1).
332
181
  * 3. Duplicate detection: two markers with the same testId → push a
333
182
  * load-time error. Keep the first; subsequent overlays ignored.
334
- * 4. Append flows as `kind: "flow"` entries.
335
183
  *
336
184
  * Overlays whose testId doesn't match any contract case stand alone —
337
185
  * we still emit them as `bootstrap-overlay` (no `rawBypass`, no targetRef
338
186
  * verification). This keeps cross-file overlay registration discoverable
339
187
  * even when the contract module hasn't been scanned yet.
340
188
  */
341
- export function synthesizeAttachments(contracts, flows, markers) {
189
+ export function synthesizeAttachments(contracts, markers) {
342
190
  const errors = [];
343
191
  // Index cases by testId for O(1) lookup during overlay application.
344
192
  const caseByTestId = new Map();
@@ -352,6 +200,11 @@ export function synthesizeAttachments(contracts, flows, markers) {
352
200
  // first-class field, no longer hidden under `extensions`).
353
201
  const byTestId = new Map();
354
202
  for (const [testId, { contract, case: c }] of caseByTestId) {
203
+ // Non-runnable cases (direction: "inbound", inbound-contract-design §9.5)
204
+ // never enter the runnable inventory: the SDK dispatcher registered no
205
+ // Test for them, so advertising a raw attachment would point at nothing.
206
+ if (c.runnable === false)
207
+ continue;
355
208
  const runnability = normalizeRunnability(c.runnability);
356
209
  byTestId.set(testId, {
357
210
  kind: "raw",
@@ -397,16 +250,7 @@ export function synthesizeAttachments(contracts, flows, markers) {
397
250
  };
398
251
  byTestId.set(marker.testId, overlay);
399
252
  }
400
- // Step 4: append flows.
401
253
  const attachments = Array.from(byTestId.values());
402
- for (const flow of flows) {
403
- attachments.push({
404
- kind: "flow",
405
- testId: flow.id,
406
- exportName: flow.exportName,
407
- flow,
408
- });
409
- }
410
254
  return { attachments, errors };
411
255
  }
412
256
  // Per-path mtime cache used by collectRawMaterials() to decide when to
@@ -422,7 +266,7 @@ const _importMtimeCache = new Map();
422
266
  */
423
267
  async function collectRawMaterials(filePath) {
424
268
  const contracts = [];
425
- const flows = [];
269
+ const workflows = [];
426
270
  const markers = [];
427
271
  const errors = [];
428
272
  const absolutePath = resolve(filePath);
@@ -465,9 +309,19 @@ async function collectRawMaterials(filePath) {
465
309
  // `export const signup = contract.flow(...).step(...)` returns a
466
310
  // FlowBuilder (not a FlowContract) because `.build()` is optional.
467
311
  // Scanner must build it to reach the `_flow` projection.
468
- const value = autoBuildFlowBuilder(rawValue);
469
- if (isFlowContract(value)) {
470
- flows.push(flowContractToNormalized(value, exportName));
312
+ const value = autoBuildWorkflowBuilder(rawValue);
313
+ if (isBuiltWorkflow(value)) {
314
+ // The projection is pre-computed by the SDK's build() (S2.6) — carry
315
+ // it verbatim, stamped with the export name like flows are.
316
+ workflows.push({ ...value._projection, exportName });
317
+ }
318
+ else if (Array.isArray(value) && value.some(isBuiltWorkflow)) {
319
+ // workflow.each() exports a BuiltWorkflow[] (addendum §3) — collect
320
+ // every member's projection (rows share one structure; ids/tags vary).
321
+ for (const member of value) {
322
+ if (isBuiltWorkflow(member))
323
+ workflows.push({ ...member._projection, exportName });
324
+ }
471
325
  }
472
326
  else if (isProtocolContract(value)) {
473
327
  contracts.push(protocolContractToNormalized(value, exportName));
@@ -483,22 +337,23 @@ async function collectRawMaterials(filePath) {
483
337
  const message = err instanceof Error ? err.message : String(err);
484
338
  errors.push({ file: absolutePath, error: message });
485
339
  }
486
- return { contracts, flows, markers, errors };
340
+ return { contracts, workflows, markers, errors };
487
341
  }
488
342
  /**
489
343
  * Extract contracts + attachments from a single file by dynamic import.
490
344
  * One file's import failure does not block others.
491
345
  *
492
- * Per-file synthesis: only this file's contracts/flows/markers are seen.
346
+ * Per-file synthesis: only this file's contracts/markers are seen.
493
347
  * Cross-file overlay replacement (overlay in fileA targets case in fileB)
494
348
  * only resolves at project level via `extractContractsFromProject`.
495
349
  */
496
350
  export async function extractContractFromFile(filePath) {
497
351
  const raw = await collectRawMaterials(filePath);
498
- const synth = synthesizeAttachments(raw.contracts, raw.flows, raw.markers);
352
+ const synth = synthesizeAttachments(raw.contracts, raw.markers);
499
353
  return {
500
354
  contracts: raw.contracts,
501
355
  attachments: synth.attachments,
356
+ workflows: raw.workflows,
502
357
  errors: [...raw.errors, ...synth.errors],
503
358
  };
504
359
  }
@@ -506,14 +361,22 @@ export async function extractContractFromFile(filePath) {
506
361
  // Project-level extraction
507
362
  // =============================================================================
508
363
  /**
509
- * Find all .contract.{ts,js,mjs}, .flow.{ts,js,mjs}, and
510
- * .bootstrap.{ts,js,mjs} files in a directory tree.
364
+ * Find all .contract.{ts,js,mjs}, .workflow.{ts,js,mjs}, .flow.{ts,js,mjs},
365
+ * and .bootstrap.{ts,js,mjs} files in a directory tree.
511
366
  *
512
367
  * v10 attachment model §7.4 mandates eager loading of `.bootstrap.` files
513
368
  * so overlay registrations fire during module evaluation. Without this,
514
369
  * filtered runs (CLI / MCP) could miss overlay registrations and silently
515
370
  * fall through to the no-overlay path.
516
371
  */
372
+ // Declaration files safe to runtime-import. Matched by SUFFIX, not substring:
373
+ // a `.workflow.` substring would also import `checkout.workflow.test.ts` /
374
+ // `foo.workflow.config.ts` — non-artifact files that can throw on import or
375
+ // run top-level side effects, and (for test files) violate the scanner's
376
+ // never-import-test-files invariant (codex 0.6 P2).
377
+ // Artifact files safe to eagerly runtime-import (contract / workflow / flow /
378
+ // bootstrap), derived from the canonical kind registry (kinds.ts).
379
+ const ARTIFACT_FILE_SUFFIXES = GLUBEAN_KINDS.filter((k) => k.runtimeArtifact).flatMap((k) => buildSuffixes(k.stems));
517
380
  function findContractAndFlowFiles(dir) {
518
381
  const files = [];
519
382
  const walk = (d) => {
@@ -525,9 +388,7 @@ function findContractAndFlowFiles(dir) {
525
388
  walk(full);
526
389
  else {
527
390
  const base = basename(entry);
528
- if (base.includes(".contract.") ||
529
- base.includes(".flow.") ||
530
- base.includes(".bootstrap.")) {
391
+ if (ARTIFACT_FILE_SUFFIXES.some((suffix) => base.endsWith(suffix))) {
531
392
  files.push(full);
532
393
  }
533
394
  }
@@ -549,23 +410,24 @@ function findContractAndFlowFiles(dir) {
549
410
  export async function extractContractsFromProject(dir) {
550
411
  const files = findContractAndFlowFiles(dir);
551
412
  if (files.length === 0) {
552
- return { contracts: [], attachments: [], errors: [] };
413
+ return { contracts: [], attachments: [], workflows: [], errors: [] };
553
414
  }
554
415
  const allContracts = [];
555
- const allFlows = [];
416
+ const allWorkflows = [];
556
417
  const allMarkers = [];
557
418
  const allErrors = [];
558
419
  for (const filePath of files) {
559
420
  const raw = await collectRawMaterials(filePath);
560
421
  allContracts.push(...raw.contracts);
561
- allFlows.push(...raw.flows);
422
+ allWorkflows.push(...raw.workflows);
562
423
  allMarkers.push(...raw.markers);
563
424
  allErrors.push(...raw.errors);
564
425
  }
565
- const synth = synthesizeAttachments(allContracts, allFlows, allMarkers);
426
+ const synth = synthesizeAttachments(allContracts, allMarkers);
566
427
  return {
567
428
  contracts: allContracts,
568
429
  attachments: synth.attachments,
430
+ workflows: allWorkflows,
569
431
  errors: [...allErrors, ...synth.errors],
570
432
  };
571
433
  }
@@ -1 +1 @@
1
- {"version":3,"file":"contract-extraction.js","sourceRoot":"","sources":["../src/contract-extraction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contract-extraction.js","sourceRoot":"","sources":["../src/contract-extraction.ts"],"names":[],"mappings":"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"}
@@ -13,7 +13,7 @@
13
13
  * AST-migrated in later phases.
14
14
  */
15
15
  import type { ExportMeta } from "./types.js";
16
- import type { ContractStaticMeta, FlowStaticMeta, PickMeta } from "./extractor-static.js";
16
+ import type { ContractStaticMeta, PickMeta } from "./extractor-static.js";
17
17
  /**
18
18
  * Extract test metadata from TypeScript source via @babel/parser AST.
19
19
  * Drop-in replacement for the regex `extractFromSource` — same `ExportMeta[]`.
@@ -36,14 +36,6 @@ export declare function extractFromSource(content: string, customFns?: string[])
36
36
  export declare function extractContractCases(content: string, opts?: {
37
37
  broad?: boolean;
38
38
  }): ContractStaticMeta[];
39
- /**
40
- * Structural (marker-free) flow extraction: every `export const X = <fn>.flow("id")…`
41
- * → `FlowStaticMeta`. Replaces vscode's `// @flow`-gated extractMarkedFlows — AST
42
- * recognizes the `.flow("id")` call shape directly, so no magic comment is needed
43
- * (aligns vscode discovery with the CLI, which never required markers). Returns []
44
- * on parse error.
45
- */
46
- export declare function extractFlows(content: string): FlowStaticMeta[];
47
39
  /**
48
40
  * AST replacement for the regex `extractPickExamples` — discovers
49
41
  * `<fn>.pick(data)("id-template", ...)` exports for CodeLens. Inline object data
@@ -1 +1 @@
1
- {"version":3,"file":"extractor-ast.d.ts","sourceRoot":"","sources":["../src/extractor-ast.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAgBH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAA0B,kBAAkB,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAqMlH;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,CAcrF;AA8HD;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GACzB,kBAAkB,EAAE,CAuCtB;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,EAAE,CAkC9D;AA2GD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1E,QAAQ,EAAE,CAmFZ;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,EAC3C,SAAS,CAAC,EAAE,MAAM,EAAE,GACnB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,UAAU,EAAE,CAAC,CASpE"}
1
+ {"version":3,"file":"extractor-ast.d.ts","sourceRoot":"","sources":["../src/extractor-ast.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAiBH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAA0B,kBAAkB,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AA81BlG;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,CAerF;AAoJD;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GACzB,kBAAkB,EAAE,CAuCtB;AAyED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1E,QAAQ,EAAE,CAmFZ;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,EAC3C,SAAS,CAAC,EAAE,MAAM,EAAE,GACnB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,UAAU,EAAE,CAAC,CASpE"}