@enricai/barnacle 1.9.5 → 1.9.7
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/README.md
CHANGED
|
@@ -253,24 +253,13 @@ pnpm run recon:generate -- --site-id my-site --form-schema ./src/recon/my-form-s
|
|
|
253
253
|
- `fieldNameKeys` models two roles: the first key is a machine code (PascalCased directly), the second is a human label (run through the section-heading heuristic). Supply one key for a label-only ATS, or two for one that exposes both. Additional keys are unused.
|
|
254
254
|
- Omit `--form-schema` (or pass `none`) and ATS form-key recovery does not run — the engine hardcodes no vendor's wire format. A site whose ATS exposes a form definition must supply one to recover its option fields. See issue #57.
|
|
255
255
|
|
|
256
|
-
####
|
|
257
|
-
|
|
258
|
-
If the site asks screening questions, tell the generator which payload field answers each one — the same reasoning applies, it cannot know what your site asks:
|
|
256
|
+
#### Filtering analytics noise
|
|
259
257
|
|
|
260
258
|
| Env var | Default | Description |
|
|
261
259
|
| --- | --- | --- |
|
|
262
|
-
| `RECON_QUESTION_KEYWORDS` | `{}` | JSON object mapping a payload field name to the keywords that identify its question. A question must match **at least 2** keywords to map. |
|
|
263
260
|
| `RECON_TELEMETRY_URL_PATTERNS` | *(empty)* | Comma-separated extra URL fragments to treat as analytics noise, on top of the built-in list. Put your site's trackers here. |
|
|
264
261
|
|
|
265
|
-
|
|
266
|
-
RECON_QUESTION_KEYWORDS='{
|
|
267
|
-
"VisaSponsorship": ["visa", "sponsor"],
|
|
268
|
-
"RelatedToEmployee": ["related", "employee"],
|
|
269
|
-
"CanPerformJobFunctions":["perform", "job functions", "duties"]
|
|
270
|
-
}' pnpm run recon:generate -- --site-id my-site
|
|
271
|
-
```
|
|
272
|
-
|
|
273
|
-
Any question that matches no field is **logged by prompt** rather than skipped — an unmapped required question is how a generated plugin ends up submitting nothing for it. Read those warnings and either add keywords or accept that the question goes unanswered. Malformed JSON logs a warning and is treated as empty, so a typo cannot kill a recon run mid-flight.
|
|
262
|
+
Screening-question answers with coded options (dropdowns) are recovered generically: when a flow step selects an answer by its label and the site's response carries the option list (JSON-Schema `enum`/`enumNames`, or `{label,value}` option objects), the generator maps the label to the wire code and emits a `z.enum` payload field, so the caller supplies the human-readable answer.
|
|
274
263
|
|
|
275
264
|
Optionally generate the human-readable findings doc alongside:
|
|
276
265
|
|
|
@@ -39,6 +39,65 @@ import { type Capture } from "../scripts/recon-shared";
|
|
|
39
39
|
* @returns the PascalCase payload field name to splice, or null to keep literal
|
|
40
40
|
*/
|
|
41
41
|
export declare function resolveStepPayloadField(instruction: string, explicit?: string, forceNone?: boolean, vocabulary?: ReconVocabulary): string | null;
|
|
42
|
+
/**
|
|
43
|
+
* Extracts the concrete persona VALUE a flow step fills — the recon-supplied
|
|
44
|
+
* constant that appears verbatim in the captured request body — so the body
|
|
45
|
+
* emitter can bind it to `${payload.<field>}`. This is a stricter job than
|
|
46
|
+
* {@link buildStepInstructionExpr}'s browser-flow splice, which only needs *a*
|
|
47
|
+
* span to replace: here the extracted string must equal the wire value exactly,
|
|
48
|
+
* or the value-identity substitution silently misses.
|
|
49
|
+
*
|
|
50
|
+
* Two grammar facts, both verified against real ATS flows, drive the rule:
|
|
51
|
+
* 1. The possessive apostrophe in "the candidate's first name 'Reginald'"
|
|
52
|
+
* opens a false quote — a naive `/'[^']*'/` yields `s first name `, not
|
|
53
|
+
* `Reginald`. Neutralizing `\w's` → `\ws` before matching removes it.
|
|
54
|
+
* 2. A `Select`/`Choose` step names the ANSWER first, then the question
|
|
55
|
+
* ("Select 'No' for the 'sponsorship' question"), so the value is the
|
|
56
|
+
* FIRST quoted token; a `Fill`/`Enter`/`Type` step names the field label
|
|
57
|
+
* first and the value last, so it is the LAST quoted token.
|
|
58
|
+
* A `${RECON_EMAIL}` token (or the literal email `env` value) short-circuits to
|
|
59
|
+
* the env-resolved address, matching recon-browser's own env substitution.
|
|
60
|
+
*
|
|
61
|
+
* @param instruction the flow step's plain-English instruction
|
|
62
|
+
* @param env process env (or a stub) supplying `${VAR}` token values, e.g. RECON_EMAIL
|
|
63
|
+
* @returns the persona value, or null when the step carries no spliceable constant
|
|
64
|
+
*/
|
|
65
|
+
export declare function extractStepPersonaValue(instruction: string, env: NodeJS.ProcessEnv): string | null;
|
|
66
|
+
/**
|
|
67
|
+
* Derives a payload field name from the field LABEL in a fill/enter/type
|
|
68
|
+
* instruction, for steps the consumer vocabulary does not cover.
|
|
69
|
+
*
|
|
70
|
+
* WHY: `fill in the <LABEL> field with '<VALUE>'` is self-describing — the label
|
|
71
|
+
* names the caller coordinate regardless of domain, so a vocabulary miss on a
|
|
72
|
+
* legitimate identity field (a "middle name" a recruiting vocab forgot to list)
|
|
73
|
+
* need not freeze the recon persona's value into every submission. This reads
|
|
74
|
+
* only the generic instruction grammar; it hardcodes no field or site name.
|
|
75
|
+
*
|
|
76
|
+
* Scoped to Fill/Enter/Type by design. Those name the field label FIRST and a
|
|
77
|
+
* quoted caller VALUE last, so a label→field claim is safe. Select/Choose name
|
|
78
|
+
* the ANSWER first and often only a facet second ("select the departure port
|
|
79
|
+
* from the Country dropdown") — deriving a field from the label there re-opens
|
|
80
|
+
* the exact off-domain false-splice `ReconVocabulary.subject` exists to prevent,
|
|
81
|
+
* so Select/Choose is deliberately excluded and stays vocabulary-gated.
|
|
82
|
+
*
|
|
83
|
+
* @param instruction the flow step's plain-English instruction
|
|
84
|
+
* @returns the PascalCase field name, or null when the shape does not match
|
|
85
|
+
*/
|
|
86
|
+
export declare function deriveFillLabelField(instruction: string): string | null;
|
|
87
|
+
/**
|
|
88
|
+
* Builds the map from a recon persona VALUE (as it appears in the captured
|
|
89
|
+
* request body) to the `payload.<Field>` accessor that should replace it, by
|
|
90
|
+
* pairing each flow step's resolved field ({@link resolveStepPayloadField})
|
|
91
|
+
* with its extracted value ({@link extractStepPersonaValue}). This is the
|
|
92
|
+
* value→field reconciliation the browser flow and payload schema already do,
|
|
93
|
+
* finally applied to the request-body templates.
|
|
94
|
+
*
|
|
95
|
+
* Earliest step wins on a duplicate value. Site-agnostic: the field mapping
|
|
96
|
+
* lives entirely in the consumer's `--vocabulary`, with a generic
|
|
97
|
+
* label-derivation ({@link deriveFillLabelField}) fallback for fill steps the
|
|
98
|
+
* vocabulary doesn't recognize — the vocabulary always wins when it has a match.
|
|
99
|
+
*/
|
|
100
|
+
export declare function harvestPersonaBindings(flowSteps: FlowStepInput[], vocabulary: ReconVocabulary, env: NodeJS.ProcessEnv): Map<string, string>;
|
|
42
101
|
interface InferOpts {
|
|
43
102
|
multipartCoerce?: boolean;
|
|
44
103
|
maxDepth?: number;
|
|
@@ -102,6 +161,20 @@ export declare function selectReturnAction<T extends {
|
|
|
102
161
|
export declare function selectEffectiveResponseBody<T extends {
|
|
103
162
|
capture: Capture;
|
|
104
163
|
}>(isSubmissionFlow: boolean, actionSteps: readonly T[], replayResponseBody: unknown): unknown;
|
|
164
|
+
/**
|
|
165
|
+
* Extracts caller-supplied job/context coordinates from the recon ENTRY URL's
|
|
166
|
+
* query string, mapping each param VALUE to a `payload.<param>` accessor. The
|
|
167
|
+
* first capture is the landing navigation, and a submission flow's job context
|
|
168
|
+
* (`?jobSeqNo=...`, `?jobId=...`) rides its query string — it belongs to the
|
|
169
|
+
* target posting, not the recon run, so it must be caller-supplied. Values
|
|
170
|
+
* below {@link MIN_STATE_VALUE_LENGTH} and cache-buster keys are skipped, since
|
|
171
|
+
* a 1–7 char value collides with arbitrary substrings elsewhere in the body.
|
|
172
|
+
*
|
|
173
|
+
* Site-agnostic: reads only the entry URL's own query keys; no site-specific
|
|
174
|
+
* param knowledge. Downstream, `interpolateStateValues`' length-descending pass
|
|
175
|
+
* composes embedded substrings (a jobId inside a longer jobSeqNo) automatically.
|
|
176
|
+
*/
|
|
177
|
+
export declare function extractEntryUrlParams(entryUrl: string): Map<string, string>;
|
|
105
178
|
interface ActionCapture {
|
|
106
179
|
capture: Capture;
|
|
107
180
|
index: number;
|
|
@@ -231,6 +304,80 @@ export declare function detectFormSchemaFieldNames(captures: Capture[], formSche
|
|
|
231
304
|
fieldOptionsMap: FieldOptionsMap;
|
|
232
305
|
allSchemaUuids: Set<string>;
|
|
233
306
|
};
|
|
307
|
+
/** A resolved dropdown answer: the wire KEY the ATS submits under, the option
|
|
308
|
+
* CODE it expects, the human LABEL the flow step named, and the full label set
|
|
309
|
+
* (used to build the caller-facing z.enum). Anchored on the wire key so the
|
|
310
|
+
* body-slot rewrite is a closed-set JSON-key match. */
|
|
311
|
+
interface SelectOptionResolution {
|
|
312
|
+
wireKey: string;
|
|
313
|
+
semanticName: string;
|
|
314
|
+
code: string;
|
|
315
|
+
label: string;
|
|
316
|
+
/** Every caller-selectable label paired with its wire code, so OPT_<Name>
|
|
317
|
+
* maps the full option set (not just the recon-answered choice). */
|
|
318
|
+
options: Array<{
|
|
319
|
+
label: string;
|
|
320
|
+
code: string;
|
|
321
|
+
}>;
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Indexes the JSON-Schema `enum`/`enumNames` PARALLEL-ARRAY convention across
|
|
325
|
+
* every response body: an object carrying a string `name` plus equal-length
|
|
326
|
+
* `enum` (option codes) and `enumNames` (option labels) declares one dropdown's
|
|
327
|
+
* label→code mapping, disambiguated per-question by `name`. This is the PRIMARY
|
|
328
|
+
* label→code source for ATS demographic/eligibility dropdowns whose submitted
|
|
329
|
+
* value is an opaque code, not the label.
|
|
330
|
+
*
|
|
331
|
+
* The same `name` can appear in several captures with progressively fuller
|
|
332
|
+
* option lists (a later page reveals the "decline to answer" choice), so the
|
|
333
|
+
* entry with the MOST non-i18n labels wins rather than first-seen — the flow's
|
|
334
|
+
* answer might be the choice only the fuller list carries.
|
|
335
|
+
*
|
|
336
|
+
* Site-agnostic: `enum`/`enumNames` are generic JSON-Schema keys; the field
|
|
337
|
+
* identities are discovered from the response, never hardcoded.
|
|
338
|
+
*/
|
|
339
|
+
export declare function indexEnumEnumNamesSchemas(captures: Capture[]): Map<string, {
|
|
340
|
+
codes: string[];
|
|
341
|
+
labels: string[];
|
|
342
|
+
}>;
|
|
343
|
+
/**
|
|
344
|
+
* Indexes the `{label,value}`-shaped option-object convention: arrays of
|
|
345
|
+
* objects each carrying both a `label` and a `value` string (state/country
|
|
346
|
+
* pickers ship these). Builds a GLOBAL label→code map used as the fallback
|
|
347
|
+
* source for dropdowns whose flow step carries no `id=` hint (so the
|
|
348
|
+
* enum/enumNames index can't be keyed) — the answer label is looked up
|
|
349
|
+
* directly. First non-i18n binding wins on a duplicate label.
|
|
350
|
+
*
|
|
351
|
+
* Site-agnostic: `label`/`value` are generic option-object keys; no field name
|
|
352
|
+
* is assumed.
|
|
353
|
+
*/
|
|
354
|
+
export declare function indexLabelValueOptionCodes(captures: Capture[]): Map<string, string>;
|
|
355
|
+
/**
|
|
356
|
+
* Reconciles each flow SELECT step to a submitted option CODE so the body-slot
|
|
357
|
+
* literal (`"applyHealthCareExclusion":"5395"`) can be rewritten to a
|
|
358
|
+
* caller-driven `${OPT_<Name>[payload.<Name>]}` lookup. Real ATS bodies carry
|
|
359
|
+
* codes, not labels; the flow carries labels — this bridges them via the two
|
|
360
|
+
* generic label→code conventions ({@link indexEnumEnumNamesSchemas} primary,
|
|
361
|
+
* {@link indexLabelValueOptionCodes} fallback).
|
|
362
|
+
*
|
|
363
|
+
* The wire KEY is discovered from the step's `id=<field>` hint when present
|
|
364
|
+
* (the enum/enumNames schema is keyed by that same field name); steps without
|
|
365
|
+
* an `id=` (state/country) fall back to the vocabulary-resolved persona field
|
|
366
|
+
* lowercased, matched against the `{label,value}` map by label. A dropdown
|
|
367
|
+
* whose labels are all i18n placeholders (e.g. gender) yields no enum and is
|
|
368
|
+
* reported separately for the raw-code channel.
|
|
369
|
+
*
|
|
370
|
+
* Returns structured resolutions plus the set of i18n-only wire keys (raw-code
|
|
371
|
+
* fallbacks). Site-agnostic: field identities come from the flow's own `id=`
|
|
372
|
+
* hints and the consumer vocabulary, never a hardcoded key.
|
|
373
|
+
*/
|
|
374
|
+
export declare function buildSelectOptionResolutions(flowSteps: FlowStepInput[], captures: Capture[], vocabulary: ReconVocabulary, env: NodeJS.ProcessEnv): {
|
|
375
|
+
resolutions: SelectOptionResolution[];
|
|
376
|
+
rawCodeFields: Map<string, {
|
|
377
|
+
wireKey: string;
|
|
378
|
+
code: string;
|
|
379
|
+
}>;
|
|
380
|
+
};
|
|
234
381
|
/**
|
|
235
382
|
* Splits a raw `Set-Cookie` response-header string into `name`/`value` pairs.
|
|
236
383
|
* Captures store `responseHeaders` as a flat `Record<string, string>`
|
|
@@ -339,19 +486,59 @@ export declare function compileActionSteps(actions: ActionCapture[], stateIndex:
|
|
|
339
486
|
* sequences.
|
|
340
487
|
*/
|
|
341
488
|
export declare function collectHeaderBindings(actionSteps: ActionStep[]): HeaderProduce[];
|
|
489
|
+
/** A producer-boundary coordinate: the capture value, its `payload.<field>`
|
|
490
|
+
* accessor, the bare field name to declare in the emitted schema, and the index
|
|
491
|
+
* of the step that produces it (the only step whose body is bound whole — later
|
|
492
|
+
* steps thread the produced state var as usual). */
|
|
493
|
+
interface ProducerBoundaryBinding {
|
|
494
|
+
accessor: string;
|
|
495
|
+
field: string;
|
|
496
|
+
producerIndex: number;
|
|
497
|
+
}
|
|
342
498
|
/**
|
|
343
|
-
*
|
|
344
|
-
*
|
|
499
|
+
* Finds the request-body coordinates a PRODUCING step must source from the
|
|
500
|
+
* caller's payload instead of a frozen capture literal.
|
|
501
|
+
*
|
|
502
|
+
* A response-produced state var (see {@link compileActionSteps}' produces[]) is
|
|
503
|
+
* threaded as `${var}` in every step AFTER its producer. In the producer itself
|
|
504
|
+
* the value predates its own response, so {@link interpolateStateValues} has no
|
|
505
|
+
* prior binding for it and the frozen recon literal (the recon persona's
|
|
506
|
+
* jobId/jobSeqNo/jobTitle/jobLocation) leaks into every caller's submission. The
|
|
507
|
+
* value's real origin for the producer is the same coordinate the caller
|
|
508
|
+
* supplies — a payload field.
|
|
509
|
+
*
|
|
510
|
+
* WHY it keys off produces[] ∩ the producer's own body, never a field/site name:
|
|
511
|
+
* the signal is purely structural — "a value this flow threads downstream AND
|
|
512
|
+
* re-sends in the very step that first emitted it". The field name is the
|
|
513
|
+
* produced var name verbatim (`pathToVarName`'s output = the wire key), so the
|
|
514
|
+
* producer's payload field and the downstream `${var}` describe one logical
|
|
515
|
+
* coordinate and share the same runtime value (the caller passes it, the site
|
|
516
|
+
* echoes it).
|
|
345
517
|
*
|
|
346
|
-
*
|
|
347
|
-
* (
|
|
348
|
-
*
|
|
349
|
-
*
|
|
518
|
+
* A coordinate that a HIGHER-priority source already maps to a `payload.<field>`
|
|
519
|
+
* (an entry-URL param — e.g. a jobSeqNo) is NOT skipped: it is re-emitted here so
|
|
520
|
+
* the whole-value pass binds it atomically on the producer step, reusing that
|
|
521
|
+
* source's accessor. Otherwise state threading fragments the composite (a prefix
|
|
522
|
+
* that a prior step produced) before the length-descending payload pass can match
|
|
523
|
+
* it, and the collision guard then refuses the embedded remainder — stranding the
|
|
524
|
+
* middle of the coordinate frozen. A value mapped to a NON-payload target (the
|
|
525
|
+
* threaded txn id) is left untouched. UUID-shaped values are excluded entirely —
|
|
526
|
+
* a re-sent UUID is a volatile/threaded id owned by another pass, not a caller
|
|
527
|
+
* coordinate — and only WHOLE request-body leaves qualify, so every returned
|
|
528
|
+
* value is one the whole-value pass will bind (and whose field must be declared).
|
|
529
|
+
*
|
|
530
|
+
* @param actions the compiled action steps (carry produces[] + request bodies)
|
|
531
|
+
* @param alreadyBound capture value → existing accessor; a `payload.*` accessor
|
|
532
|
+
* is reused, a non-payload one (e.g. `txnId`) vetoes the value
|
|
533
|
+
* @returns capture value → { accessor: "payload.<field>"; field; producerIndex }
|
|
350
534
|
*/
|
|
351
|
-
export declare function
|
|
535
|
+
export declare function deriveProducerBoundaryBindings(actions: ActionStep[], alreadyBound: ReadonlyMap<string, string>): Map<string, ProducerBoundaryBinding>;
|
|
352
536
|
/** Exported for unit testing — lets tests drive the multipart-upload code path directly
|
|
353
537
|
* without going through the full emitContractTs pipeline. */
|
|
354
|
-
export declare function emitMultiStepExecuteHttp(actions: ActionStep[], inputBody: unknown, errorSignals: ErrorSignals, fieldNameMap: FieldNameMap, outDiscoveredFields: Set<string>, fieldOptionsMap: FieldOptionsMap, outDiscoveredOptionFields: Set<string>, outDiscoveredRawOptionFields: Map<string, string>, outDiscoveredAdditionalBodyKeys: Map<string, "string" | "number" | "boolean">, baseUrl: string, baseUrlDerivedHeaders: Map<string, string>, tenantSubdomainHeaders: Map<string, string>,
|
|
538
|
+
export declare function emitMultiStepExecuteHttp(actions: ActionStep[], inputBody: unknown, errorSignals: ErrorSignals, fieldNameMap: FieldNameMap, outDiscoveredFields: Set<string>, fieldOptionsMap: FieldOptionsMap, outDiscoveredOptionFields: Set<string>, outDiscoveredRawOptionFields: Map<string, string>, outDiscoveredAdditionalBodyKeys: Map<string, "string" | "number" | "boolean">, baseUrl: string, baseUrlDerivedHeaders: Map<string, string>, tenantSubdomainHeaders: Map<string, string>, formSchema?: ReconFormSchema | null, personaBindings?: Map<string, string>, entryUrlParams?: Map<string, string>, shieldedUuids?: Set<string>, selectResolutions?: SelectOptionResolution[], outStructuredKeys?: Map<string, string>, rawCodeFields?: Map<string, {
|
|
539
|
+
wireKey: string;
|
|
540
|
+
code: string;
|
|
541
|
+
}>): string;
|
|
355
542
|
/** Generates a complete contract.ts source string for a plugin — exported so
|
|
356
543
|
* unit tests can drive the emitter directly without spawning the CLI. */
|
|
357
544
|
export declare function emitContractTs(opts: {
|
|
@@ -394,12 +581,17 @@ export declare function emitContractTs(opts: {
|
|
|
394
581
|
* (inputBody). Mapped to their value type. Each becomes a payload field
|
|
395
582
|
* (string → z.string(), number → z.number(), boolean → z.boolean()). */
|
|
396
583
|
discoveredAdditionalBodyKeys?: Map<string, "string" | "number" | "boolean">;
|
|
584
|
+
/** Mechanism B: top-level body keys whose value is a whole caller-supplied
|
|
585
|
+
* nested structure (arrays like experienceData/educationData, or the opaque
|
|
586
|
+
* eventData blob), mapped to the inferred Zod schema expression for that
|
|
587
|
+
* value. Each becomes a `<key>: <schema>` payload field so the caller passes
|
|
588
|
+
* its own history/analytics rather than replaying the recon sample. */
|
|
589
|
+
discoveredStructuredKeys?: Map<string, string>;
|
|
397
590
|
/** PascalCase candidate-PII field names the browser flow splices as
|
|
398
591
|
* `payload.<field>` (from resolveStepPayloadField). Each is added to the
|
|
399
592
|
* payload schema so those references typecheck. Shares the accumulator with
|
|
400
593
|
* emitBrowserFlowTs so schema and flow can never drift. */
|
|
401
594
|
payloadFieldNames?: Set<string>;
|
|
402
|
-
base64ContentHelper?: string;
|
|
403
595
|
/** Response-header/cookie-origin state bindings collected from the action
|
|
404
596
|
* sequence's produces[] (see `collectHeaderBindings`) — rendered as
|
|
405
597
|
* `createHttpClient`'s `bind` option so a value like a `Set-Cookie`-minted
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recon-generate.d.ts","sourceRoot":"","sources":["../../src/scripts/recon-generate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAiBH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAG3D,OAAO,EAAoB,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EACL,KAAK,OAAO,EAKb,MAAM,wBAAwB,CAAC;AA2BhC;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,OAAO,EACnB,UAAU,GAAE,eAAkC,GAC7C,MAAM,GAAG,IAAI,CAoBf;AAUD,UAAU,SAAS;IACjB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,SAAS,OAAO,EAAE,EAC3B,KAAK,SAAI,EACT,MAAM,SAAK,EACX,IAAI,GAAE,SAAc,GACnB,MAAM,CA+DR;AA8DD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAMjG;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAMhG;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CAAC,CAAC,SAAS;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,EACxE,gBAAgB,EAAE,OAAO,EACzB,WAAW,EAAE,SAAS,CAAC,EAAE,EACzB,kBAAkB,EAAE,OAAO,GAC1B,OAAO,CAGT;
|
|
1
|
+
{"version":3,"file":"recon-generate.d.ts","sourceRoot":"","sources":["../../src/scripts/recon-generate.ts"],"names":[],"mappings":"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"}
|