@drzl/cli 4.19.0 → 4.23.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/chunk-54E2IO7N.js +1030 -0
- package/dist/chunk-54E2IO7N.js.map +1 -0
- package/dist/{dist-TRJLPIWT.js → chunk-KKPDOZOD.js} +239 -48
- package/dist/chunk-KKPDOZOD.js.map +1 -0
- package/dist/cli.cjs +6850 -1434
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.js +2958 -679
- package/dist/cli.js.map +1 -1
- package/dist/config.cjs +632 -70
- package/dist/config.cjs.map +1 -1
- package/dist/config.d.cts +314 -6
- package/dist/config.d.ts +314 -6
- package/dist/config.js +29 -1
- package/dist/dist-KQMPKOFK.js +350 -0
- package/dist/dist-KQMPKOFK.js.map +1 -0
- package/dist/{dist-CZDVFYFW.js → dist-KX62ETKK.js} +112 -37
- package/dist/dist-KX62ETKK.js.map +1 -0
- package/dist/dist-P24ILO5N.js +431 -0
- package/dist/dist-P24ILO5N.js.map +1 -0
- package/dist/dist-QYH7DRFY.js +27 -0
- package/dist/dist-QYH7DRFY.js.map +1 -0
- package/dist/dist-SGI2I53L.js +434 -0
- package/dist/dist-SGI2I53L.js.map +1 -0
- package/dist/dist-T5376MW7.js +489 -0
- package/dist/dist-T5376MW7.js.map +1 -0
- package/dist/dist-UVP6B4XJ.js +646 -0
- package/dist/dist-UVP6B4XJ.js.map +1 -0
- package/dist/{dist-XBGVORL3.js → dist-ZIHNXQ7U.js} +16 -6
- package/dist/dist-ZIHNXQ7U.js.map +1 -0
- package/dist/drzl.config.schema.json +717 -0
- package/package.json +19 -13
- package/dist/chunk-V2IXXAC2.js +0 -465
- package/dist/chunk-V2IXXAC2.js.map +0 -1
- package/dist/dist-CZDVFYFW.js.map +0 -1
- package/dist/dist-TRJLPIWT.js.map +0 -1
- package/dist/dist-XBGVORL3.js.map +0 -1
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
// ../generator-effect/dist/index.js
|
|
2
|
+
import { fileWriter } from "@drzl/validation-core";
|
|
2
3
|
import {
|
|
4
|
+
buildBrandPlan,
|
|
3
5
|
buildNestedPlan,
|
|
4
6
|
formatCode,
|
|
5
7
|
nestedArmNotes,
|
|
@@ -7,11 +9,22 @@ import {
|
|
|
7
9
|
nestedSchemaName,
|
|
8
10
|
nestedTypeName,
|
|
9
11
|
resolveNestedDepth,
|
|
12
|
+
applyWirePolicy,
|
|
13
|
+
canonicalMembers,
|
|
14
|
+
canonicalNumericText,
|
|
15
|
+
comparisonWire,
|
|
16
|
+
describeSet,
|
|
17
|
+
needsNumericCanon,
|
|
10
18
|
CODEPOINT_LENGTH,
|
|
11
19
|
COERCIBLE_DATE_STRING,
|
|
12
20
|
COLUMN_FORMATS,
|
|
21
|
+
NUMERIC_CANON_NAME,
|
|
22
|
+
NUMERIC_CANON_SOURCE,
|
|
13
23
|
insertColumns,
|
|
14
24
|
isIntegerColumn,
|
|
25
|
+
lengthCheckLabel,
|
|
26
|
+
lengthMeasure,
|
|
27
|
+
measureExpression,
|
|
15
28
|
moduleFileName,
|
|
16
29
|
moduleSpecifier,
|
|
17
30
|
nonFiniteAccepted,
|
|
@@ -23,7 +36,8 @@ import {
|
|
|
23
36
|
schemaName,
|
|
24
37
|
selectColumns,
|
|
25
38
|
typeName,
|
|
26
|
-
updateColumns
|
|
39
|
+
updateColumns,
|
|
40
|
+
wireNumberLiteral
|
|
27
41
|
} from "@drzl/validation-core";
|
|
28
42
|
var DEFAULT_FILE_SUFFIX = ".effect.ts";
|
|
29
43
|
var STANDARD_PREFIX = "Standard";
|
|
@@ -148,13 +162,16 @@ function capSteps(c, mode) {
|
|
|
148
162
|
return steps;
|
|
149
163
|
}
|
|
150
164
|
function lengthSteps(c, lengths) {
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
(
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
165
|
+
return lengths.filter((k) => k.column === c.name).flatMap((k) => {
|
|
166
|
+
const measure = lengthMeasure(c, k);
|
|
167
|
+
if (!measure) return [];
|
|
168
|
+
return [
|
|
169
|
+
filter(
|
|
170
|
+
`${measureExpression(measure, "v")} ${OPS[k.operator]} ${k.value}`,
|
|
171
|
+
lengthCheckLabel(k)
|
|
172
|
+
)
|
|
173
|
+
];
|
|
174
|
+
});
|
|
158
175
|
}
|
|
159
176
|
function cardinalitySteps(c, cardinalities) {
|
|
160
177
|
if (!c.arrayDimensions) return [];
|
|
@@ -168,12 +185,19 @@ function cardinalitySteps(c, cardinalities) {
|
|
|
168
185
|
function checkSteps(c, checks) {
|
|
169
186
|
if (c.arrayDimensions || c.shape) return [];
|
|
170
187
|
const folded = foldedIntoBounds(c, checks);
|
|
188
|
+
const numericWire = comparisonWire(c) === "numeric-string";
|
|
171
189
|
return checks.filter((k) => k.column === c.name && !folded.has(k)).map((k) => {
|
|
172
|
-
const
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
190
|
+
const label = `${k.name ? `${k.name}: ` : ""}${c.name} ${k.operator} ${k.value}`;
|
|
191
|
+
if (numericWire) {
|
|
192
|
+
if (k.operator === "=" || k.operator === "<>") {
|
|
193
|
+
const canon = JSON.stringify(canonicalNumericText(k.value));
|
|
194
|
+
const op = k.operator === "=" ? "===" : "!==";
|
|
195
|
+
return filter(`${NUMERIC_CANON_NAME}(v) ${op} ${canon}`, label);
|
|
196
|
+
}
|
|
197
|
+
return filter(`Number(v) ${OPS[k.operator]} ${k.value}`, label);
|
|
198
|
+
}
|
|
199
|
+
const literal = k.kind === "string" ? JSON.stringify(k.value) : wireNumberLiteral(c, k.value);
|
|
200
|
+
return filter(`v ${OPS[k.operator]} ${literal}`, label);
|
|
177
201
|
});
|
|
178
202
|
}
|
|
179
203
|
function hasNoRuntimeType(c) {
|
|
@@ -211,10 +235,19 @@ function shapeExpr(c, mode, replaced = false) {
|
|
|
211
235
|
}
|
|
212
236
|
function exprForColumn(c, mode, coerceDates, checks, sets, lengths, replaced) {
|
|
213
237
|
const shaped = shapeExpr(c, mode, replaced);
|
|
214
|
-
if (shaped) return shaped;
|
|
238
|
+
if (shaped) return piped(shaped, lengthSteps(c, lengths));
|
|
215
239
|
const set = sets.find((x) => x.column === c.name);
|
|
216
240
|
if (set) {
|
|
217
|
-
|
|
241
|
+
if (comparisonWire(c) === "numeric-string") {
|
|
242
|
+
const members = canonicalMembers(set.values);
|
|
243
|
+
const test = members.map((m) => `canon === ${JSON.stringify(m)}`).join(" || ");
|
|
244
|
+
return piped(`${NS}.String`, [
|
|
245
|
+
filter(`((canon) => ${test})(${NUMERIC_CANON_NAME}(v))`, describeSet(set))
|
|
246
|
+
]);
|
|
247
|
+
}
|
|
248
|
+
const values = set.values.map(
|
|
249
|
+
(v) => set.kind === "string" ? JSON.stringify(v) : wireNumberLiteral(c, v)
|
|
250
|
+
);
|
|
218
251
|
return `${NS}.Literal(${values.join(", ")})`;
|
|
219
252
|
}
|
|
220
253
|
if (c.arrayDimensions) checks = [];
|
|
@@ -222,8 +255,8 @@ function exprForColumn(c, mode, coerceDates, checks, sets, lengths, replaced) {
|
|
|
222
255
|
return `${NS}.Literal(${c.enumValues.map((v) => JSON.stringify(v)).join(", ")})`;
|
|
223
256
|
}
|
|
224
257
|
const eq = checks.find((k) => k.column === c.name && k.operator === "=");
|
|
225
|
-
if (eq && !c.shape) {
|
|
226
|
-
return `${NS}.Literal(${eq.kind === "string" ? JSON.stringify(eq.value) : eq.value})`;
|
|
258
|
+
if (eq && !c.shape && comparisonWire(c) !== "numeric-string") {
|
|
259
|
+
return `${NS}.Literal(${eq.kind === "string" ? JSON.stringify(eq.value) : wireNumberLiteral(c, eq.value)})`;
|
|
227
260
|
}
|
|
228
261
|
const rest = [...checkSteps(c, checks), ...lengthSteps(c, lengths)];
|
|
229
262
|
switch (c.tsType) {
|
|
@@ -254,7 +287,7 @@ function exprForColumn(c, mode, coerceDates, checks, sets, lengths, replaced) {
|
|
|
254
287
|
return UNKNOWN_EXPR;
|
|
255
288
|
}
|
|
256
289
|
}
|
|
257
|
-
function renderField(c, mode, coerceDates, checks, sets, lengths, cardinalities, applyDefault, narrowRef) {
|
|
290
|
+
function renderField(c, mode, coerceDates, checks, sets, lengths, cardinalities, applyDefault, narrowRef, brand) {
|
|
258
291
|
let expr = exprForColumn(
|
|
259
292
|
c,
|
|
260
293
|
mode,
|
|
@@ -269,8 +302,9 @@ function renderField(c, mode, coerceDates, checks, sets, lengths, cardinalities,
|
|
|
269
302
|
expr = `${NS}.Array(${expr})`;
|
|
270
303
|
if (i === dims - 1) expr = piped(expr, cardinalitySteps(c, cardinalities));
|
|
271
304
|
}
|
|
305
|
+
if (brand) expr = piped(expr, [`${NS}.brand(${JSON.stringify(brand)})`]);
|
|
272
306
|
if (c.nullable && !isUnknownExpr(expr)) expr = `${NS}.NullOr(${expr})`;
|
|
273
|
-
if (narrowRef) expr = withNarrowedType(expr, narrowRef);
|
|
307
|
+
if (narrowRef && !brand) expr = withNarrowedType(expr, narrowRef);
|
|
274
308
|
if (mode === "select") return expr;
|
|
275
309
|
const wantsDefault = mode === "insert" && applyDefault && c.defaultValue !== void 0;
|
|
276
310
|
if (wantsDefault) {
|
|
@@ -282,7 +316,7 @@ function renderField(c, mode, coerceDates, checks, sets, lengths, cardinalities,
|
|
|
282
316
|
function wantsRef(c, allColumns) {
|
|
283
317
|
return allColumns || hasNoRuntimeType(c);
|
|
284
318
|
}
|
|
285
|
-
function renderObjectShape(cols, mode, coerceDates, checks, sets, lengths, cardinalities, typedJson, applyDefaults) {
|
|
319
|
+
function renderObjectShape(cols, mode, coerceDates, checks, sets, lengths, cardinalities, typedJson, applyDefaults, brands) {
|
|
286
320
|
return cols.map((c) => {
|
|
287
321
|
const ref = typedJson && wantsRef(c, !!typedJson.allColumns) ? `(typeof ${typedJson.table}.$infer${typedJson.mode === "insert" ? "Insert" : "Select"})[${JSON.stringify(c.name)}]` : void 0;
|
|
288
322
|
const field = renderField(
|
|
@@ -294,7 +328,8 @@ function renderObjectShape(cols, mode, coerceDates, checks, sets, lengths, cardi
|
|
|
294
328
|
lengths,
|
|
295
329
|
cardinalities,
|
|
296
330
|
applyDefaults,
|
|
297
|
-
ref
|
|
331
|
+
ref,
|
|
332
|
+
brands?.plan.brandOf(brands.tsName, c.name)
|
|
298
333
|
);
|
|
299
334
|
return ` ${JSON.stringify(c.name)}: ${field},`;
|
|
300
335
|
}).join("\n");
|
|
@@ -313,9 +348,14 @@ function indentBlock(code, by = " ") {
|
|
|
313
348
|
}
|
|
314
349
|
function parsedChecksFor(table) {
|
|
315
350
|
const parsed = (table.checks ?? []).map((k) => parseCheck(k.expression, k.name));
|
|
351
|
+
const { checks, sets } = applyWirePolicy(
|
|
352
|
+
table.columns,
|
|
353
|
+
parsed.flatMap((p) => p.ok ? p.checks : []),
|
|
354
|
+
parsed.flatMap((p) => p.ok ? p.sets ?? [] : [])
|
|
355
|
+
);
|
|
316
356
|
return {
|
|
317
|
-
checks
|
|
318
|
-
sets
|
|
357
|
+
checks,
|
|
358
|
+
sets,
|
|
319
359
|
rows: parsed.flatMap((p) => p.ok ? p.rows ?? [] : []),
|
|
320
360
|
lengths: parsed.flatMap((p) => p.ok ? p.lengths ?? [] : []),
|
|
321
361
|
cardinalities: parsed.flatMap((p) => p.ok ? p.cardinalities ?? [] : [])
|
|
@@ -330,7 +370,7 @@ function nestedNodes(node, into = []) {
|
|
|
330
370
|
for (const arm of node.arms) nestedNodes(arm.child, into);
|
|
331
371
|
return into;
|
|
332
372
|
}
|
|
333
|
-
function renderNestedObject(node, mode, coerceDates, typedJson, applyDefaults) {
|
|
373
|
+
function renderNestedObject(node, mode, coerceDates, typedJson, applyDefaults, brands) {
|
|
334
374
|
const cols = nestedNodeCols(node, mode);
|
|
335
375
|
const { checks, sets, rows, lengths, cardinalities } = parsedChecksFor(node.table);
|
|
336
376
|
const tj = typedJson ? { table: node.table.tsName, mode, allColumns: typedJson.allColumns } : void 0;
|
|
@@ -343,12 +383,20 @@ function renderNestedObject(node, mode, coerceDates, typedJson, applyDefaults) {
|
|
|
343
383
|
lengths,
|
|
344
384
|
cardinalities,
|
|
345
385
|
tj,
|
|
346
|
-
applyDefaults
|
|
386
|
+
applyDefaults,
|
|
387
|
+
brands ? { plan: brands, tsName: node.table.tsName } : void 0
|
|
347
388
|
);
|
|
348
389
|
const arms = node.arms.map((arm) => {
|
|
349
390
|
const notes = nestedArmNotes(arm).map((n) => ` // ${n}
|
|
350
391
|
`).join("");
|
|
351
|
-
const child = renderNestedObject(
|
|
392
|
+
const child = renderNestedObject(
|
|
393
|
+
arm.child,
|
|
394
|
+
mode,
|
|
395
|
+
coerceDates,
|
|
396
|
+
typedJson,
|
|
397
|
+
applyDefaults,
|
|
398
|
+
brands
|
|
399
|
+
);
|
|
352
400
|
const inner = arm.single ? `${NS}.NullOr(
|
|
353
401
|
${indentBlock(indentBlock(child))}
|
|
354
402
|
)` : `${NS}.Array(
|
|
@@ -361,14 +409,14 @@ ${indentBlock(indentBlock(child))}
|
|
|
361
409
|
${body}
|
|
362
410
|
})`, rowSteps(rows, cols));
|
|
363
411
|
}
|
|
364
|
-
function renderNestedSchemas(table, affix, coerceDates, typedJson, applyDefaults, plans) {
|
|
412
|
+
function renderNestedSchemas(table, affix, coerceDates, typedJson, applyDefaults, plans, brands) {
|
|
365
413
|
const out = [];
|
|
366
414
|
for (const mode of ["insert", "select"]) {
|
|
367
415
|
const plan = plans[mode];
|
|
368
416
|
if (!plan) continue;
|
|
369
417
|
const name = nestedSchemaName(mode, table.tsName, affix);
|
|
370
418
|
const tname = nestedTypeName(mode, table.tsName, affix);
|
|
371
|
-
const expr = renderNestedObject(plan, mode, coerceDates, typedJson, applyDefaults);
|
|
419
|
+
const expr = renderNestedObject(plan, mode, coerceDates, typedJson, applyDefaults, brands);
|
|
372
420
|
out.push(
|
|
373
421
|
`export const ${name} = ${expr};
|
|
374
422
|
|
|
@@ -390,7 +438,7 @@ function nestedPlansFor(table, analysis, depth) {
|
|
|
390
438
|
}
|
|
391
439
|
return out;
|
|
392
440
|
}
|
|
393
|
-
function renderTableSchemas(table, affix, coerceDates, typedJson, applyDefaults = false, wantsDuplicateFinder = false, nested = {}) {
|
|
441
|
+
function renderTableSchemas(table, affix, coerceDates, typedJson, applyDefaults = false, wantsDuplicateFinder = false, nested = {}, brands) {
|
|
394
442
|
const T = table.tsName;
|
|
395
443
|
const insertCols = insertColumns(table);
|
|
396
444
|
const updateCols = updateColumns(table);
|
|
@@ -416,7 +464,8 @@ function renderTableSchemas(table, affix, coerceDates, typedJson, applyDefaults
|
|
|
416
464
|
// The update schema references the insert-side inferred types: both describe a value going
|
|
417
465
|
// in, and `$inferSelect` would name the post-default type for a column a write may omit.
|
|
418
466
|
tj ? { ...tj, mode: mode === "select" ? "select" : "insert" } : void 0,
|
|
419
|
-
applyDefaults
|
|
467
|
+
applyDefaults,
|
|
468
|
+
brands ? { plan: brands, tsName: T } : void 0
|
|
420
469
|
);
|
|
421
470
|
const expr = piped(`${NS}.Struct({
|
|
422
471
|
${body}
|
|
@@ -457,13 +506,34 @@ ${finder}
|
|
|
457
506
|
coerceDates,
|
|
458
507
|
typedJson,
|
|
459
508
|
applyDefaults,
|
|
460
|
-
nested
|
|
509
|
+
nested,
|
|
510
|
+
brands
|
|
461
511
|
);
|
|
512
|
+
const selectName = schemaName("select", T, affix);
|
|
513
|
+
const brandAliases = (brands?.aliasesFor(T) ?? []).map(
|
|
514
|
+
(a) => `/** The nominal type of ${T}.${a.column}. */
|
|
515
|
+
export type ${a.alias} = ${NS}.Schema.Type<typeof ${selectName}>[${JSON.stringify(a.column)}];`
|
|
516
|
+
).join("\n\n");
|
|
517
|
+
const brandCode = brandAliases ? `
|
|
518
|
+
${brandAliases}
|
|
519
|
+
` : "";
|
|
520
|
+
const involved = [
|
|
521
|
+
table,
|
|
522
|
+
...["insert", "select"].flatMap((m) => {
|
|
523
|
+
const plan = nested[m];
|
|
524
|
+
return plan ? nestedNodes(plan).map((n) => n.table) : [];
|
|
525
|
+
})
|
|
526
|
+
];
|
|
527
|
+
const canonPreamble = involved.some((t) => {
|
|
528
|
+
const own = parsedChecksFor(t);
|
|
529
|
+
return needsNumericCanon(t.columns, own.checks, own.sets);
|
|
530
|
+
}) ? `
|
|
531
|
+
${NUMERIC_CANON_SOURCE}` : "";
|
|
462
532
|
return `import * as ${NS} from 'effect/Schema';
|
|
463
533
|
${schemaImport}${needsJson ? `
|
|
464
|
-
${JSON_PREAMBLE}` : ""}
|
|
534
|
+
${JSON_PREAMBLE}` : ""}${canonPreamble}
|
|
465
535
|
${blocks.join("\n\n")}
|
|
466
|
-
${nestedCode}${duplicates}`;
|
|
536
|
+
${brandCode}${nestedCode}${duplicates}`;
|
|
467
537
|
}
|
|
468
538
|
var EffectGenerator = class {
|
|
469
539
|
constructor(analysis) {
|
|
@@ -471,7 +541,7 @@ var EffectGenerator = class {
|
|
|
471
541
|
this.library = "effect";
|
|
472
542
|
}
|
|
473
543
|
async generate(opts) {
|
|
474
|
-
const fs =
|
|
544
|
+
const fs = fileWriter(opts.fileSink);
|
|
475
545
|
const path = await import("path");
|
|
476
546
|
const out = path.resolve(process.cwd(), opts.outDir);
|
|
477
547
|
const files = [];
|
|
@@ -495,6 +565,8 @@ var EffectGenerator = class {
|
|
|
495
565
|
);
|
|
496
566
|
}
|
|
497
567
|
const nestedDepth = opts.nestedSchemas ? resolveNestedDepth(opts.nestedDepth, (m) => console.warn(m)) : 0;
|
|
568
|
+
const brands = buildBrandPlan(this.analysis.tables, opts.branded);
|
|
569
|
+
for (const note of brands?.notes ?? []) console.warn(`[drzl] ${note}`);
|
|
498
570
|
for (const table of this.analysis.tables) {
|
|
499
571
|
const filePath = path.join(out, moduleFileName(table.tsName, fileSuffix));
|
|
500
572
|
const code = renderTableSchemas(
|
|
@@ -504,7 +576,8 @@ var EffectGenerator = class {
|
|
|
504
576
|
typedJson,
|
|
505
577
|
!!opts.applyDefaults,
|
|
506
578
|
!!opts?.duplicateFinder,
|
|
507
|
-
opts.nestedSchemas ? nestedPlansFor(table, this.analysis, nestedDepth) : {}
|
|
579
|
+
opts.nestedSchemas ? nestedPlansFor(table, this.analysis, nestedDepth) : {},
|
|
580
|
+
brands
|
|
508
581
|
);
|
|
509
582
|
const formatted = await formatCode(
|
|
510
583
|
buildHeader(opts.outputHeader) + code,
|
|
@@ -531,7 +604,9 @@ var EffectGenerator = class {
|
|
|
531
604
|
opts?.coerceDates ?? "input",
|
|
532
605
|
void 0,
|
|
533
606
|
!!opts?.applyDefaults,
|
|
534
|
-
!!opts?.duplicateFinder
|
|
607
|
+
!!opts?.duplicateFinder,
|
|
608
|
+
{},
|
|
609
|
+
buildBrandPlan(this.analysis.tables, opts?.branded)
|
|
535
610
|
);
|
|
536
611
|
}
|
|
537
612
|
defaultIndex(analysis, opts) {
|
|
@@ -556,4 +631,4 @@ export {
|
|
|
556
631
|
EffectGenerator,
|
|
557
632
|
index_default as default
|
|
558
633
|
};
|
|
559
|
-
//# sourceMappingURL=dist-
|
|
634
|
+
//# sourceMappingURL=dist-KX62ETKK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../generator-effect/dist/index.js"],"sourcesContent":["// src/index.ts\nimport { fileWriter } from \"@drzl/validation-core\";\nimport {\n buildBrandPlan,\n buildNestedPlan,\n formatCode,\n nestedArmNotes,\n nestedNodeColumns,\n nestedSchemaName,\n nestedTypeName,\n resolveNestedDepth,\n applyWirePolicy,\n canonicalMembers,\n canonicalNumericText,\n comparisonWire,\n describeSet,\n needsNumericCanon,\n CODEPOINT_LENGTH,\n COERCIBLE_DATE_STRING,\n COLUMN_FORMATS,\n NUMERIC_CANON_NAME,\n NUMERIC_CANON_SOURCE,\n insertColumns,\n isIntegerColumn,\n lengthCheckLabel,\n lengthMeasure,\n measureExpression,\n moduleFileName,\n moduleSpecifier,\n nonFiniteAccepted,\n parseCheck,\n parsesToADate,\n renderDuplicateFinder,\n resolveAffix,\n resolveConfiguredImport,\n schemaName,\n selectColumns,\n typeName,\n updateColumns,\n wireNumberLiteral\n} from \"@drzl/validation-core\";\nvar DEFAULT_FILE_SUFFIX = \".effect.ts\";\nvar STANDARD_PREFIX = \"Standard\";\nvar NS = \"Schema\";\nvar OPS = {\n \">=\": \">=\",\n \">\": \">\",\n \"<=\": \"<=\",\n \"<\": \"<\",\n \"=\": \"===\",\n \"<>\": \"!==\"\n};\nfunction filter(expr, description) {\n return `${NS}.filter((v) => ${expr}, { description: ${JSON.stringify(description)} })`;\n}\nfunction piped(base, steps) {\n return steps.length ? `${base}.pipe(${steps.join(\", \")})` : base;\n}\nvar JSON_CONST = \"DrzlJsonValue\";\nvar JSON_PREAMBLE = `type ${JSON_CONST}Type =\n | string\n | number\n | boolean\n | null\n | readonly ${JSON_CONST}Type[]\n | { readonly [key: string]: ${JSON_CONST}Type };\n\nconst ${JSON_CONST}: ${NS}.Schema<${JSON_CONST}Type, unknown> = ${NS}.suspend(() =>\n ${NS}.Union(\n ${NS}.String,\n ${NS}.Finite,\n ${NS}.Boolean,\n ${NS}.Null,\n ${NS}.Array(${JSON_CONST}),\n // The plain-object test comes before the record, not after it. \\`Schema.Record\\` rebuilds its\n // output, so a check placed after it inspects that new object and reports every input as\n // plain. A Date sailed through: it has no own enumerable keys, so the record accepted it and\n // rebuilt it as \\`{}\\`.\n ${NS}.Unknown.pipe(\n ${NS}.filter(\n (o) => {\n if (typeof o !== 'object' || o === null || Array.isArray(o)) return false;\n const p = Object.getPrototypeOf(o);\n return p === Object.prototype || p === null;\n },\n { description: 'a plain object' }\n ),\n ${NS}.compose(${NS}.Record({ key: ${NS}.String, value: ${JSON_CONST} }), { strict: false })\n )\n )\n);\n`;\nvar UNKNOWN_EXPR = `${NS}.Unknown`;\nfunction isUnknownExpr(expr) {\n return expr === UNKNOWN_EXPR;\n}\nfunction withNarrowedType(expr, ref) {\n return `${expr} as unknown as ${NS}.Schema<${ref}>`;\n}\nfunction numericBounds(c, checks) {\n let lo = c.min !== void 0 ? { fn: \"greaterThanOrEqualTo\", value: c.min } : void 0;\n let hi = c.max !== void 0 ? { fn: \"lessThanOrEqualTo\", value: c.max } : void 0;\n for (const k of checks.filter((x) => x.column === c.name && x.kind === \"number\")) {\n if (k.operator === \">=\") lo = { fn: \"greaterThanOrEqualTo\", value: k.value };\n else if (k.operator === \">\") lo = { fn: \"greaterThan\", value: k.value };\n else if (k.operator === \"<=\") hi = { fn: \"lessThanOrEqualTo\", value: k.value };\n else if (k.operator === \"<\") hi = { fn: \"lessThan\", value: k.value };\n }\n return [lo, hi].filter(Boolean).map((x) => `${NS}.${x.fn}(${x.value})`);\n}\nfunction foldedIntoBounds(c, checks) {\n if (c.arrayDimensions || c.shape) return /* @__PURE__ */ new Set();\n if (c.tsType !== \"number\" && c.tsType !== \"bigint\") return /* @__PURE__ */ new Set();\n return new Set(\n checks.filter(\n (k) => k.column === c.name && k.kind === \"number\" && k.operator !== \"=\" && k.operator !== \"<>\"\n )\n );\n}\nfunction nonFiniteBranches(c) {\n const { nan, infinity } = nonFiniteAccepted(c);\n return [\n ...nan ? [`${NS}.Number.pipe(${filter(\"Number.isNaN(v)\", \"NaN, which this column stores\")})`] : [],\n ...infinity ? [`${NS}.Literal(Infinity, -Infinity)`] : []\n ];\n}\nfunction withNonFinite(c, base) {\n const branches = nonFiniteBranches(c);\n return branches.length ? `${NS}.Union(${base}, ${branches.join(\", \")})` : base;\n}\nfunction dateExpr(mode, coerceDates) {\n const plain = `${NS}.ValidDateFromSelf`;\n if (coerceDates === \"none\") return plain;\n const fromString = piped(`${NS}.String`, [\n `${NS}.pattern(new RegExp(${JSON.stringify(COERCIBLE_DATE_STRING)}))`,\n filter(parsesToADate(\"new Date(v)\"), \"a date the runtime can parse\")\n ]);\n const fromNumber = piped(`${NS}.Number`, [\n filter(parsesToADate(\"new Date(v)\"), \"a date the runtime can parse\")\n ]);\n const union = `${NS}.Union(${plain}, ${fromString}, ${fromNumber})`;\n if (coerceDates === \"all\") return union;\n return mode === \"select\" ? plain : union;\n}\nfunction capSteps(c, mode) {\n const steps = [];\n if (c.shape?.kind === \"byteString\") {\n const n = c.shape.length;\n if (!n) return steps;\n return mode === \"select\" ? [filter(`${CODEPOINT_LENGTH} <= ${n}`, `at most ${n} characters`)] : [filter(`new TextEncoder().encode(v).length <= ${n}`, `at most ${n} bytes`)];\n }\n if (c.maxLength) {\n steps.push(\n filter(`${CODEPOINT_LENGTH} <= ${c.maxLength}`, `at most ${c.maxLength} characters`)\n );\n }\n if (c.maxBytes) {\n steps.push(\n filter(`new TextEncoder().encode(v).length <= ${c.maxBytes}`, `at most ${c.maxBytes} bytes`)\n );\n }\n return steps;\n}\nfunction lengthSteps(c, lengths) {\n return lengths.filter((k) => k.column === c.name).flatMap((k) => {\n const measure = lengthMeasure(c, k);\n if (!measure) return [];\n return [\n filter(\n `${measureExpression(measure, \"v\")} ${OPS[k.operator]} ${k.value}`,\n lengthCheckLabel(k)\n )\n ];\n });\n}\nfunction cardinalitySteps(c, cardinalities) {\n if (!c.arrayDimensions) return [];\n return cardinalities.filter((k) => k.column === c.name).map(\n (k) => filter(\n `v.length ${OPS[k.operator]} ${k.value}`,\n `${k.name ? `${k.name}: ` : \"\"}cardinality(${c.name}) ${k.operator} ${k.value}`\n )\n );\n}\nfunction checkSteps(c, checks) {\n if (c.arrayDimensions || c.shape) return [];\n const folded = foldedIntoBounds(c, checks);\n const numericWire = comparisonWire(c) === \"numeric-string\";\n return checks.filter((k) => k.column === c.name && !folded.has(k)).map((k) => {\n const label = `${k.name ? `${k.name}: ` : \"\"}${c.name} ${k.operator} ${k.value}`;\n if (numericWire) {\n if (k.operator === \"=\" || k.operator === \"<>\") {\n const canon = JSON.stringify(canonicalNumericText(k.value));\n const op = k.operator === \"=\" ? \"===\" : \"!==\";\n return filter(`${NUMERIC_CANON_NAME}(v) ${op} ${canon}`, label);\n }\n return filter(`Number(v) ${OPS[k.operator]} ${k.value}`, label);\n }\n const literal = k.kind === \"string\" ? JSON.stringify(k.value) : wireNumberLiteral(c, k.value);\n return filter(`v ${OPS[k.operator]} ${literal}`, label);\n });\n}\nfunction hasNoRuntimeType(c) {\n return c.tsType === \"any\" || c.shape?.kind === \"custom\" || c.shape?.kind === \"json\";\n}\nfunction shapeExpr(c, mode, replaced = false) {\n const s = c.shape;\n if (!s) return void 0;\n switch (s.kind) {\n case \"json\":\n return replaced ? UNKNOWN_EXPR : JSON_CONST;\n case \"custom\":\n return UNKNOWN_EXPR;\n case \"buffer\":\n return `${NS}.Uint8ArrayFromSelf`;\n case \"tuple\":\n return `${NS}.Tuple(${Array.from({ length: s.length }, () => `${NS}.Number`).join(\", \")})`;\n case \"numberObject\":\n return `${NS}.Struct({ ${s.fields.map((f) => `${f}: ${NS}.Number`).join(\", \")} })`;\n case \"numberVector\":\n return piped(\n `${NS}.Array(${NS}.Number)`,\n s.length ? [filter(`v.length === ${s.length}`, `exactly ${s.length} elements`)] : []\n );\n case \"bitstring\":\n return piped(`${NS}.String`, [\n `${NS}.pattern(/^[01]*$/)`,\n ...s.length ? [\n s.exact ? filter(`v.length === ${s.length}`, `exactly ${s.length} binary digits`) : filter(`v.length <= ${s.length}`, `at most ${s.length} binary digits`)\n ] : []\n ]);\n case \"byteString\":\n return piped(`${NS}.String`, capSteps(c, mode));\n }\n}\nfunction exprForColumn(c, mode, coerceDates, checks, sets, lengths, replaced) {\n const shaped = shapeExpr(c, mode, replaced);\n if (shaped) return piped(shaped, lengthSteps(c, lengths));\n const set = sets.find((x) => x.column === c.name);\n if (set) {\n if (comparisonWire(c) === \"numeric-string\") {\n const members = canonicalMembers(set.values);\n const test = members.map((m) => `canon === ${JSON.stringify(m)}`).join(\" || \");\n return piped(`${NS}.String`, [\n filter(`((canon) => ${test})(${NUMERIC_CANON_NAME}(v))`, describeSet(set))\n ]);\n }\n const values = set.values.map(\n (v) => set.kind === \"string\" ? JSON.stringify(v) : wireNumberLiteral(c, v)\n );\n return `${NS}.Literal(${values.join(\", \")})`;\n }\n if (c.arrayDimensions) checks = [];\n if (c.enumValues && c.enumValues.length) {\n return `${NS}.Literal(${c.enumValues.map((v) => JSON.stringify(v)).join(\", \")})`;\n }\n const eq = checks.find((k) => k.column === c.name && k.operator === \"=\");\n if (eq && !c.shape && comparisonWire(c) !== \"numeric-string\") {\n return `${NS}.Literal(${eq.kind === \"string\" ? JSON.stringify(eq.value) : wireNumberLiteral(c, eq.value)})`;\n }\n const rest = [...checkSteps(c, checks), ...lengthSteps(c, lengths)];\n switch (c.tsType) {\n case \"string\": {\n const base = c.format === \"uuid\" ? `${NS}.UUID` : `${NS}.String`;\n const pattern = c.format && c.format !== \"uuid\" && COLUMN_FORMATS[c.format] ? [`${NS}.pattern(new RegExp(${JSON.stringify(COLUMN_FORMATS[c.format])}))`] : [];\n return piped(base, [...pattern, ...capSteps(c, mode), ...rest]);\n }\n case \"number\": {\n const base = isIntegerColumn(c) ? `${NS}.Int` : `${NS}.Finite`;\n return withNonFinite(c, piped(base, [...numericBounds(c, checks), ...rest]));\n }\n case \"bigint\":\n return piped(`${NS}.BigIntFromSelf`, [\n ...c.min !== void 0 ? [`${NS}.greaterThanOrEqualToBigInt(${c.min}n)`] : [],\n ...c.max !== void 0 ? [`${NS}.lessThanOrEqualToBigInt(${c.max}n)`] : [],\n ...rest\n ]);\n case \"boolean\":\n return `${NS}.Boolean`;\n case \"Date\":\n return dateExpr(mode, coerceDates);\n case \"Uint8Array\":\n return `${NS}.Uint8ArrayFromSelf`;\n case \"any\":\n return UNKNOWN_EXPR;\n default:\n return UNKNOWN_EXPR;\n }\n}\nfunction renderField(c, mode, coerceDates, checks, sets, lengths, cardinalities, applyDefault, narrowRef, brand) {\n let expr = exprForColumn(\n c,\n mode,\n coerceDates,\n checks,\n sets,\n lengths,\n !!narrowRef && hasNoRuntimeType(c)\n );\n const dims = c.arrayDimensions ?? 0;\n for (let i = 0; i < dims; i++) {\n expr = `${NS}.Array(${expr})`;\n if (i === dims - 1) expr = piped(expr, cardinalitySteps(c, cardinalities));\n }\n if (brand) expr = piped(expr, [`${NS}.brand(${JSON.stringify(brand)})`]);\n if (c.nullable && !isUnknownExpr(expr)) expr = `${NS}.NullOr(${expr})`;\n if (narrowRef && !brand) expr = withNarrowedType(expr, narrowRef);\n if (mode === \"select\") return expr;\n const wantsDefault = mode === \"insert\" && applyDefault && c.defaultValue !== void 0;\n if (wantsDefault) {\n return `${NS}.optionalWith(${expr}, { default: () => ${JSON.stringify(c.defaultValue)} })`;\n }\n if (mode === \"update\" || c.nullable || c.hasDefault) return `${NS}.optional(${expr})`;\n return expr;\n}\nfunction wantsRef(c, allColumns) {\n return allColumns || hasNoRuntimeType(c);\n}\nfunction renderObjectShape(cols, mode, coerceDates, checks, sets, lengths, cardinalities, typedJson, applyDefaults, brands) {\n return cols.map((c) => {\n const ref = typedJson && wantsRef(c, !!typedJson.allColumns) ? `(typeof ${typedJson.table}.$infer${typedJson.mode === \"insert\" ? \"Insert\" : \"Select\"})[${JSON.stringify(c.name)}]` : void 0;\n const field = renderField(\n c,\n mode,\n coerceDates,\n checks,\n sets,\n lengths,\n cardinalities,\n applyDefaults,\n ref,\n brands?.plan.brandOf(brands.tsName, c.name)\n );\n return ` ${JSON.stringify(c.name)}: ${field},`;\n }).join(\"\\n\");\n}\nfunction rowSteps(rows, cols) {\n const present = new Set(cols.map((c) => c.name));\n return rows.filter((r) => present.has(r.left) && present.has(r.right)).map((r) => {\n const l = `o[${JSON.stringify(r.left)}]`;\n const rt = `o[${JSON.stringify(r.right)}]`;\n const msg = `${r.name ? `${r.name}: ` : \"\"}${r.left} ${r.operator} ${r.right}`;\n return `${NS}.filter((o) => ${l} == null || ${rt} == null || ${l} ${OPS[r.operator]} ${rt}, { description: ${JSON.stringify(msg)} })`;\n });\n}\nfunction indentBlock(code, by = \" \") {\n return code.split(\"\\n\").map((line) => line ? by + line : line).join(\"\\n\");\n}\nfunction parsedChecksFor(table) {\n const parsed = (table.checks ?? []).map((k) => parseCheck(k.expression, k.name));\n const { checks, sets } = applyWirePolicy(\n table.columns,\n parsed.flatMap((p) => p.ok ? p.checks : []),\n parsed.flatMap((p) => p.ok ? p.sets ?? [] : [])\n );\n return {\n checks,\n sets,\n rows: parsed.flatMap((p) => p.ok ? p.rows ?? [] : []),\n lengths: parsed.flatMap((p) => p.ok ? p.lengths ?? [] : []),\n cardinalities: parsed.flatMap((p) => p.ok ? p.cardinalities ?? [] : [])\n };\n}\nfunction nestedNodeCols(node, mode) {\n const all = mode === \"insert\" ? insertColumns(node.table) : selectColumns(node.table);\n return nestedNodeColumns(all, node);\n}\nfunction nestedNodes(node, into = []) {\n into.push(node);\n for (const arm of node.arms) nestedNodes(arm.child, into);\n return into;\n}\nfunction renderNestedObject(node, mode, coerceDates, typedJson, applyDefaults, brands) {\n const cols = nestedNodeCols(node, mode);\n const { checks, sets, rows, lengths, cardinalities } = parsedChecksFor(node.table);\n const tj = typedJson ? { table: node.table.tsName, mode, allColumns: typedJson.allColumns } : void 0;\n const fields = renderObjectShape(\n cols,\n mode,\n coerceDates,\n checks,\n sets,\n lengths,\n cardinalities,\n tj,\n applyDefaults,\n brands ? { plan: brands, tsName: node.table.tsName } : void 0\n );\n const arms = node.arms.map((arm) => {\n const notes = nestedArmNotes(arm).map((n) => ` // ${n}\n`).join(\"\");\n const child = renderNestedObject(\n arm.child,\n mode,\n coerceDates,\n typedJson,\n applyDefaults,\n brands\n );\n const inner = arm.single ? `${NS}.NullOr(\n${indentBlock(indentBlock(child))}\n )` : `${NS}.Array(\n${indentBlock(indentBlock(child))}\n )`;\n return `${notes} ${JSON.stringify(arm.key)}: ${NS}.optional(${inner}),`;\n });\n const body = [fields, ...arms].filter(Boolean).join(\"\\n\");\n return piped(`${NS}.Struct({\n${body}\n})`, rowSteps(rows, cols));\n}\nfunction renderNestedSchemas(table, affix, coerceDates, typedJson, applyDefaults, plans, brands) {\n const out = [];\n for (const mode of [\"insert\", \"select\"]) {\n const plan = plans[mode];\n if (!plan) continue;\n const name = nestedSchemaName(mode, table.tsName, affix);\n const tname = nestedTypeName(mode, table.tsName, affix);\n const expr = renderNestedObject(plan, mode, coerceDates, typedJson, applyDefaults, brands);\n out.push(\n `export const ${name} = ${expr};\n\nexport type ${tname} = ${NS}.Schema.Type<typeof ${name}>;\n\nexport const ${STANDARD_PREFIX}${name} = ${NS}.standardSchemaV1(${name});`\n );\n }\n return out.length ? `\n${out.join(\"\\n\\n\")}\n` : \"\";\n}\nfunction nestedPlansFor(table, analysis, depth) {\n const out = {};\n for (const mode of [\"insert\", \"select\"]) {\n if (mode === \"insert\" && table.readOnly) continue;\n const plan = buildNestedPlan(table, analysis.tables, analysis.relations ?? [], mode, depth);\n if (plan) out[mode] = plan;\n }\n return out;\n}\nfunction renderTableSchemas(table, affix, coerceDates, typedJson, applyDefaults = false, wantsDuplicateFinder = false, nested = {}, brands) {\n const T = table.tsName;\n const insertCols = insertColumns(table);\n const updateCols = updateColumns(table);\n const selectCols = selectColumns(table);\n const { checks, sets, rows, lengths, cardinalities } = parsedChecksFor(table);\n const tj = typedJson ? { table: T, allColumns: typedJson.allColumns } : void 0;\n const modes = [\n [\"insert\", insertCols],\n [\"update\", updateCols],\n [\"select\", selectCols]\n ];\n const blocks = modes.map(([mode, cols]) => {\n const name = schemaName(mode, T, affix);\n const tname = typeName(mode, T, affix);\n const body = renderObjectShape(\n cols,\n mode,\n coerceDates,\n checks,\n sets,\n lengths,\n cardinalities,\n // The update schema references the insert-side inferred types: both describe a value going\n // in, and `$inferSelect` would name the post-default type for a column a write may omit.\n tj ? { ...tj, mode: mode === \"select\" ? \"select\" : \"insert\" } : void 0,\n applyDefaults,\n brands ? { plan: brands, tsName: T } : void 0\n );\n const expr = piped(`${NS}.Struct({\n${body}\n})`, rowSteps(rows, cols));\n return `export const ${name} = ${expr};\n\nexport type ${tname} = ${NS}.Schema.Type<typeof ${name}>;\n\nexport const ${STANDARD_PREFIX}${name} = ${NS}.standardSchemaV1(${name});`;\n });\n const nestedByTable = [\"insert\", \"select\"].flatMap((m) => {\n const plan = nested[m];\n return plan ? nestedNodes(plan).map((n) => [n.table.tsName, nestedNodeCols(n, m)]) : [];\n });\n const nestedCols = nestedByTable.flatMap(([, cs]) => cs);\n const referenced = /* @__PURE__ */ new Set();\n if (typedJson) {\n const all = !!typedJson.allColumns;\n if ([...insertCols, ...updateCols, ...selectCols].some((c) => wantsRef(c, all))) {\n referenced.add(T);\n }\n for (const [name, cs] of nestedByTable) {\n if (cs.some((c) => wantsRef(c, all))) referenced.add(name);\n }\n }\n const schemaImport = referenced.size ? `import type { ${[...referenced].join(\", \")} } from '${typedJson.schemaSpecifier}';\n` : \"\";\n const needsJson = !typedJson && [...insertCols, ...updateCols, ...selectCols, ...nestedCols].some(\n (c) => c.shape?.kind === \"json\"\n );\n const finder = wantsDuplicateFinder ? renderDuplicateFinder(table, `findDuplicate${T}`, typeName(\"insert\", T, affix)) : void 0;\n const duplicates = finder ? `\n${finder}\n` : \"\";\n const nestedCode = renderNestedSchemas(\n table,\n affix,\n coerceDates,\n typedJson,\n applyDefaults,\n nested,\n brands\n );\n const selectName = schemaName(\"select\", T, affix);\n const brandAliases = (brands?.aliasesFor(T) ?? []).map(\n (a) => `/** The nominal type of ${T}.${a.column}. */\nexport type ${a.alias} = ${NS}.Schema.Type<typeof ${selectName}>[${JSON.stringify(a.column)}];`\n ).join(\"\\n\\n\");\n const brandCode = brandAliases ? `\n${brandAliases}\n` : \"\";\n const involved = [\n table,\n ...[\"insert\", \"select\"].flatMap((m) => {\n const plan = nested[m];\n return plan ? nestedNodes(plan).map((n) => n.table) : [];\n })\n ];\n const canonPreamble = involved.some((t) => {\n const own = parsedChecksFor(t);\n return needsNumericCanon(t.columns, own.checks, own.sets);\n }) ? `\n${NUMERIC_CANON_SOURCE}` : \"\";\n return `import * as ${NS} from 'effect/Schema';\n${schemaImport}${needsJson ? `\n${JSON_PREAMBLE}` : \"\"}${canonPreamble}\n${blocks.join(\"\\n\\n\")}\n${brandCode}${nestedCode}${duplicates}`;\n}\nvar EffectGenerator = class {\n constructor(analysis) {\n this.analysis = analysis;\n this.library = \"effect\";\n }\n async generate(opts) {\n const fs = fileWriter(opts.fileSink);\n const path = await import(\"path\");\n const out = path.resolve(process.cwd(), opts.outDir);\n const files = [];\n await fs.mkdir(out, { recursive: true });\n const affix = resolveAffix(opts);\n const coerceDates = opts.coerceDates ?? \"input\";\n const fileSuffix = opts.fileSuffix ?? DEFAULT_FILE_SUFFIX;\n const wantsTypes = opts.typedJson || opts.typedColumns;\n const typedJson = wantsTypes && opts.schemaPath ? {\n schemaSpecifier: resolveConfiguredImport(\n opts.schemaPath,\n out,\n process.cwd(),\n opts.importExtension\n ),\n allColumns: !!opts.typedColumns\n } : void 0;\n if (wantsTypes && !opts.schemaPath) {\n console.warn(\n \"[drzl] typedJson was requested but the schema path is unknown, so json columns keep their wide type.\"\n );\n }\n const nestedDepth = opts.nestedSchemas ? resolveNestedDepth(opts.nestedDepth, (m) => console.warn(m)) : 0;\n const brands = buildBrandPlan(this.analysis.tables, opts.branded);\n for (const note of brands?.notes ?? []) console.warn(`[drzl] ${note}`);\n for (const table of this.analysis.tables) {\n const filePath = path.join(out, moduleFileName(table.tsName, fileSuffix));\n const code = renderTableSchemas(\n table,\n affix,\n coerceDates,\n typedJson,\n !!opts.applyDefaults,\n !!opts?.duplicateFinder,\n opts.nestedSchemas ? nestedPlansFor(table, this.analysis, nestedDepth) : {},\n brands\n );\n const formatted = await formatCode(\n buildHeader(opts.outputHeader) + code,\n filePath,\n opts.format\n );\n await fs.writeFile(filePath, formatted, \"utf8\");\n files.push(filePath);\n }\n const indexPath = path.join(out, \"index.ts\");\n const indexFormatted = await formatCode(\n buildHeader(opts.outputHeader) + this.defaultIndex(this.analysis, opts),\n indexPath,\n opts.format\n );\n await fs.writeFile(indexPath, indexFormatted, \"utf8\");\n files.push(indexPath);\n return files;\n }\n renderTable(table, opts) {\n return renderTableSchemas(\n table,\n resolveAffix(opts),\n opts?.coerceDates ?? \"input\",\n void 0,\n !!opts?.applyDefaults,\n !!opts?.duplicateFinder,\n {},\n buildBrandPlan(this.analysis.tables, opts?.branded)\n );\n }\n defaultIndex(analysis, opts) {\n const fileSuffix = opts.fileSuffix ?? DEFAULT_FILE_SUFFIX;\n return analysis.tables.map(\n (t) => `export * from '${moduleSpecifier(t.tsName, fileSuffix, opts.importExtension)}';`\n ).join(\"\\n\") + \"\\n\";\n }\n};\nvar index_default = EffectGenerator;\nfunction buildHeader(h) {\n if (h && h.enabled === false) return \"\";\n const text = h?.text?.trim();\n const lines = text ? text.split(/\\r?\\n/).map((l) => `// ${l}`) : [\n \"// Generated by DRZL (@drzl/*)\",\n \"// Generated output is granted to you under your project's license.\",\n \"// You may use, copy, modify, and distribute without attribution.\"\n ];\n return lines.join(\"\\n\") + \"\\n\\n\";\n}\nexport {\n EffectGenerator,\n index_default as default\n};\n"],"mappings":"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","names":[]}
|