@drzl/cli 4.14.2 → 4.14.4
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 +4 -0
- package/dist/cli.cjs +99 -64
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.js +85 -64
- package/dist/cli.js.map +1 -1
- package/dist/{dist-EVB4YOPK.js → dist-UE55LTXV.js} +15 -1
- package/dist/dist-UE55LTXV.js.map +1 -0
- package/package.json +10 -10
- package/dist/dist-EVB4YOPK.js.map +0 -1
|
@@ -33,6 +33,12 @@ function baseSchema(c, mode, target, checks, sets, lengths) {
|
|
|
33
33
|
minItems: s.length,
|
|
34
34
|
maxItems: s.length
|
|
35
35
|
};
|
|
36
|
+
case "numberObject":
|
|
37
|
+
return {
|
|
38
|
+
type: "object",
|
|
39
|
+
properties: Object.fromEntries(s.fields.map((f) => [f, { type: "number" }])),
|
|
40
|
+
required: [...s.fields]
|
|
41
|
+
};
|
|
36
42
|
case "numberVector":
|
|
37
43
|
return {
|
|
38
44
|
type: "array",
|
|
@@ -45,6 +51,8 @@ function baseSchema(c, mode, target, checks, sets, lengths) {
|
|
|
45
51
|
pattern: "^[01]*$",
|
|
46
52
|
...s.length ? s.exact ? { minLength: s.length, maxLength: s.length } : { maxLength: s.length } : {}
|
|
47
53
|
};
|
|
54
|
+
case "byteString":
|
|
55
|
+
return { type: "string", ...s.length ? { maxLength: s.length } : {} };
|
|
48
56
|
}
|
|
49
57
|
}
|
|
50
58
|
const set = sets.find((x) => x.column === c.name);
|
|
@@ -59,6 +67,7 @@ function baseSchema(c, mode, target, checks, sets, lengths) {
|
|
|
59
67
|
if (c.format === "uuid") out.format = UUID_FORMAT;
|
|
60
68
|
else if (c.format && COLUMN_FORMATS[c.format]) out.pattern = COLUMN_FORMATS[c.format];
|
|
61
69
|
if (c.maxLength !== void 0) out.maxLength = c.maxLength;
|
|
70
|
+
applyByteCap(out, c);
|
|
62
71
|
applyLengths(out, c, lengths);
|
|
63
72
|
return out;
|
|
64
73
|
}
|
|
@@ -79,6 +88,11 @@ function baseSchema(c, mode, target, checks, sets, lengths) {
|
|
|
79
88
|
return {};
|
|
80
89
|
}
|
|
81
90
|
}
|
|
91
|
+
function applyByteCap(out, c) {
|
|
92
|
+
if (!c.maxBytes) return;
|
|
93
|
+
out.maxLength = Math.min(Number(out.maxLength ?? Infinity), c.maxBytes);
|
|
94
|
+
out.description = `At most ${c.maxBytes} bytes of UTF-8, which JSON Schema has no keyword for. maxLength counts characters: it refuses nothing the column accepts, and a string of multi-byte characters can satisfy it and still be too long for the column.`;
|
|
95
|
+
}
|
|
82
96
|
function applyLengths(out, c, lengths) {
|
|
83
97
|
for (const k of lengths.filter((x) => x.column === c.name)) {
|
|
84
98
|
const n = Number(k.value);
|
|
@@ -310,4 +324,4 @@ export {
|
|
|
310
324
|
index_default as default,
|
|
311
325
|
tableSchemas
|
|
312
326
|
};
|
|
313
|
-
//# sourceMappingURL=dist-
|
|
327
|
+
//# sourceMappingURL=dist-UE55LTXV.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../generator-json-schema/dist/index.js"],"sourcesContent":["// src/index.ts\nimport {\n COLUMN_FORMATS,\n formatCode,\n insertColumns,\n isIntegerColumn,\n moduleFileName,\n moduleSpecifier,\n parseCheck,\n resolveAffix,\n schemaName,\n selectColumns,\n typeName,\n updateColumns\n} from \"@drzl/validation-core\";\nvar DEFAULT_FILE_SUFFIX = \".schema.ts\";\nvar DRAFT = \"https://json-schema.org/draft/2020-12/schema\";\nvar UUID_FORMAT = \"uuid\";\nfunction baseSchema(c, mode, target, checks, sets, lengths) {\n const s = c.shape;\n if (s) {\n switch (s.kind) {\n case \"json\":\n return {};\n case \"custom\":\n return {};\n case \"buffer\":\n return { type: \"string\", contentEncoding: \"base64\" };\n case \"tuple\":\n return target === \"openapi-3.0\" ? { type: \"array\", items: { type: \"number\" }, minItems: s.length, maxItems: s.length } : {\n type: \"array\",\n prefixItems: Array.from({ length: s.length }, () => ({ type: \"number\" })),\n minItems: s.length,\n maxItems: s.length\n };\n case \"numberObject\":\n return {\n type: \"object\",\n properties: Object.fromEntries(s.fields.map((f) => [f, { type: \"number\" }])),\n required: [...s.fields]\n };\n case \"numberVector\":\n return {\n type: \"array\",\n items: { type: \"number\" },\n ...s.length ? { minItems: s.length, maxItems: s.length } : {}\n };\n case \"bitstring\":\n return {\n type: \"string\",\n pattern: \"^[01]*$\",\n ...s.length ? s.exact ? { minLength: s.length, maxLength: s.length } : { maxLength: s.length } : {}\n };\n case \"byteString\":\n return { type: \"string\", ...s.length ? { maxLength: s.length } : {} };\n }\n }\n const set = sets.find((x) => x.column === c.name);\n if (set) return { enum: set.values.map((v) => set.kind === \"string\" ? v : Number(v)) };\n if (c.enumValues && c.enumValues.length) return { enum: [...c.enumValues] };\n const mine = c.arrayDimensions ? [] : checks.filter((k) => k.column === c.name);\n const eq = mine.find((k) => k.operator === \"=\");\n if (eq) return { const: eq.kind === \"string\" ? eq.value : Number(eq.value) };\n switch (c.tsType) {\n case \"string\": {\n const out = { type: \"string\" };\n if (c.format === \"uuid\") out.format = UUID_FORMAT;\n else if (c.format && COLUMN_FORMATS[c.format]) out.pattern = COLUMN_FORMATS[c.format];\n if (c.maxLength !== void 0) out.maxLength = c.maxLength;\n applyByteCap(out, c);\n applyLengths(out, c, lengths);\n return out;\n }\n case \"number\": {\n const out = { type: isIntegerColumn(c) ? \"integer\" : \"number\" };\n if (!c.arrayDimensions) applyNumericBounds(out, c, checks, target);\n return out;\n }\n case \"bigint\":\n return { type: \"string\", pattern: \"^-?\\\\d+$\" };\n case \"boolean\":\n return { type: \"boolean\" };\n case \"Date\":\n return { type: \"string\", format: \"date-time\" };\n case \"Uint8Array\":\n return { type: \"string\", contentEncoding: \"base64\" };\n default:\n return {};\n }\n}\nfunction applyByteCap(out, c) {\n if (!c.maxBytes) return;\n out.maxLength = Math.min(Number(out.maxLength ?? Infinity), c.maxBytes);\n out.description = `At most ${c.maxBytes} bytes of UTF-8, which JSON Schema has no keyword for. maxLength counts characters: it refuses nothing the column accepts, and a string of multi-byte characters can satisfy it and still be too long for the column.`;\n}\nfunction applyLengths(out, c, lengths) {\n for (const k of lengths.filter((x) => x.column === c.name)) {\n const n = Number(k.value);\n if (k.operator === \">=\") out.minLength = Math.max(Number(out.minLength ?? 0), n);\n else if (k.operator === \">\") out.minLength = Math.max(Number(out.minLength ?? 0), n + 1);\n else if (k.operator === \"<=\") out.maxLength = Math.min(Number(out.maxLength ?? Infinity), n);\n else if (k.operator === \"<\") out.maxLength = Math.min(Number(out.maxLength ?? Infinity), n - 1);\n else if (k.operator === \"=\") {\n out.minLength = n;\n out.maxLength = n;\n }\n }\n}\nfunction applyNumericBounds(out, c, checks, target) {\n let min = c.min !== void 0 ? { value: Number(c.min), exclusive: false } : void 0;\n let max = c.max !== void 0 ? { value: Number(c.max), exclusive: false } : void 0;\n for (const k of checks.filter((x) => x.column === c.name && x.kind === \"number\")) {\n if (k.operator === \">=\") min = { value: Number(k.value), exclusive: false };\n else if (k.operator === \">\") min = { value: Number(k.value), exclusive: true };\n else if (k.operator === \"<=\") max = { value: Number(k.value), exclusive: false };\n else if (k.operator === \"<\") max = { value: Number(k.value), exclusive: true };\n }\n const old = target === \"openapi-3.0\";\n if (min) {\n if (min.exclusive && !old) out.exclusiveMinimum = min.value;\n else {\n out.minimum = min.value;\n if (min.exclusive) out.exclusiveMinimum = true;\n }\n }\n if (max) {\n if (max.exclusive && !old) out.exclusiveMaximum = max.value;\n else {\n out.maximum = max.value;\n if (max.exclusive) out.exclusiveMaximum = true;\n }\n }\n}\nfunction cardinalityBounds(c, cardinalities) {\n if (!c.arrayDimensions) return {};\n const out = {};\n for (const k of cardinalities.filter((x) => x.column === c.name)) {\n const n = Number(k.value);\n if (k.operator === \">=\") out.minItems = n;\n else if (k.operator === \">\") out.minItems = n + 1;\n else if (k.operator === \"<=\") out.maxItems = n;\n else if (k.operator === \"<\") out.maxItems = n - 1;\n else if (k.operator === \"=\") {\n out.minItems = n;\n out.maxItems = n;\n }\n }\n return out;\n}\nfunction makeNullable(s, target) {\n if (target === \"openapi-3.0\") return { ...s, nullable: true };\n if (s.type === void 0) {\n if (Array.isArray(s.enum)) return { ...s, enum: [...s.enum, null] };\n if (\"const\" in s) {\n const { const: k, ...rest } = s;\n return { ...rest, enum: [k, null] };\n }\n return s;\n }\n return { ...s, type: [s.type, \"null\"] };\n}\nfunction columnSchema(c, mode, target, checks, sets, lengths, cardinalities, applyDefault) {\n let s = baseSchema(c, mode, target, checks, sets, lengths);\n const dims = c.arrayDimensions ?? 0;\n for (let i = 0; i < dims; i++) {\n s = { type: \"array\", items: s, ...i === dims - 1 ? cardinalityBounds(c, cardinalities) : {} };\n }\n if (c.nullable) s = makeNullable(s, target);\n if (mode === \"insert\" && applyDefault && c.defaultValue !== void 0) {\n s = { ...s, default: c.defaultValue };\n }\n return s;\n}\nfunction rowDescription(rows, cols) {\n const present = new Set(cols.map((c) => c.name));\n const applicable = rows.filter((r) => present.has(r.left) && present.has(r.right));\n if (!applicable.length) return void 0;\n const list = applicable.map((r) => `${r.name ? `${r.name}: ` : \"\"}${r.left} ${r.operator} ${r.right}`).join(\"; \");\n return `Row constraints not expressible in JSON Schema: ${list}`;\n}\nfunction tableSchema(table, cols, mode, target, applyDefaults, parsed) {\n const properties = {};\n const required = [];\n for (const c of cols) {\n properties[c.name] = columnSchema(\n c,\n mode,\n target,\n parsed.checks,\n parsed.sets,\n parsed.lengths,\n parsed.cardinalities,\n applyDefaults\n );\n const suppliedOnInsert = c.hasDefault || applyDefaults && c.defaultValue !== void 0 || c.isGenerated;\n const optional = mode === \"update\" || mode === \"insert\" && suppliedOnInsert;\n if (!optional) required.push(c.name);\n }\n const desc = rowDescription(parsed.rows, cols);\n return {\n ...target === \"draft-2020-12\" ? { $schema: DRAFT } : {},\n $id: `${table.tsName}.${mode}`,\n title: `${mode} ${table.tsName}`,\n ...desc ? { description: desc } : {},\n type: \"object\",\n properties,\n ...required.length ? { required } : {},\n additionalProperties: false\n };\n}\nfunction collect(table) {\n const parsed = (table.checks ?? []).map((k) => parseCheck(k.expression, k.name));\n return {\n checks: parsed.flatMap((p) => p.ok ? p.checks : []),\n sets: parsed.flatMap((p) => p.ok ? p.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 tableSchemas(table, opts = {}) {\n const target = opts.target ?? \"draft-2020-12\";\n const parsed = collect(table);\n const build = (cols, mode) => tableSchema(table, cols, mode, target, !!opts.applyDefaults, parsed);\n return {\n insert: build(insertColumns(table), \"insert\"),\n update: build(updateColumns(table), \"update\"),\n select: build(selectColumns(table), \"select\")\n };\n}\nfunction componentsDocument(tables, opts = {}) {\n const schemas = {};\n for (const table of tables) {\n const built = tableSchemas(table, opts);\n for (const mode of [\"insert\", \"update\", \"select\"]) {\n const name = `${table.tsName}${mode[0].toUpperCase()}${mode.slice(1)}`;\n const { $schema: _dialect, $id: _id, ...rest } = built[mode];\n schemas[name] = rest;\n }\n }\n return { schemas };\n}\nfunction renderTableModule(table, affix, target, applyDefaults) {\n const T = table.tsName;\n const schemas = tableSchemas(table, { target, applyDefaults });\n const decl = (mode) => `export const ${schemaName(mode, T, affix)} = ${JSON.stringify(schemas[mode], null, 2)} as const;\n\nexport type ${typeName(mode, T, affix)} = typeof ${schemaName(mode, T, affix)};`;\n return [decl(\"insert\"), decl(\"update\"), decl(\"select\")].join(\"\\n\\n\") + \"\\n\";\n}\nvar JsonSchemaGenerator = class {\n constructor(analysis) {\n this.analysis = analysis;\n this.library = \"json-schema\";\n }\n async generate(opts) {\n const fs = await import(\"fs/promises\");\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 fileSuffix = opts.fileSuffix ?? DEFAULT_FILE_SUFFIX;\n const target = opts.target ?? \"draft-2020-12\";\n for (const table of this.analysis.tables) {\n const filePath = path.join(out, moduleFileName(table.tsName, fileSuffix));\n const code = renderTableModule(table, affix, target, !!opts.applyDefaults);\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 if (opts.components) {\n const doc = componentsDocument(this.analysis.tables, {\n target,\n applyDefaults: !!opts.applyDefaults\n });\n const componentsPath = path.join(out, \"components.ts\");\n const code = `export const components = ${JSON.stringify(doc, null, 2)} as const;\n`;\n await fs.writeFile(\n componentsPath,\n await formatCode(buildHeader(opts.outputHeader) + code, componentsPath, opts.format),\n \"utf8\"\n );\n files.push(componentsPath);\n }\n const indexPath = path.join(out, \"index.ts\");\n const index = this.analysis.tables.map((t) => `export * from '${moduleSpecifier(t.tsName, fileSuffix, opts.importExtension)}';`).concat(\n opts.components ? [`export * from './components${opts.importExtension === \"none\" ? \"\" : \".js\"}';`] : []\n ).join(\"\\n\") + \"\\n\";\n const indexFormatted = await formatCode(\n buildHeader(opts.outputHeader) + index,\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 renderTableModule(\n table,\n resolveAffix(opts),\n opts?.target ?? \"draft-2020-12\",\n !!opts?.applyDefaults\n );\n }\n};\nvar index_default = JsonSchemaGenerator;\nfunction buildHeader(h) {\n if (h?.enabled === false) return \"\";\n const text = h?.text ?? \"// Generated by DRZL. Do not edit by hand.\";\n return `${text}\n\n`;\n}\nexport {\n JsonSchemaGenerator,\n componentsDocument,\n index_default as default,\n tableSchemas\n};\n"],"mappings":";AACA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,IAAI,sBAAsB;AAC1B,IAAI,QAAQ;AACZ,IAAI,cAAc;AAClB,SAAS,WAAW,GAAG,MAAM,QAAQ,QAAQ,MAAM,SAAS;AAC1D,QAAM,IAAI,EAAE;AACZ,MAAI,GAAG;AACL,YAAQ,EAAE,MAAM;AAAA,MACd,KAAK;AACH,eAAO,CAAC;AAAA,MACV,KAAK;AACH,eAAO,CAAC;AAAA,MACV,KAAK;AACH,eAAO,EAAE,MAAM,UAAU,iBAAiB,SAAS;AAAA,MACrD,KAAK;AACH,eAAO,WAAW,gBAAgB,EAAE,MAAM,SAAS,OAAO,EAAE,MAAM,SAAS,GAAG,UAAU,EAAE,QAAQ,UAAU,EAAE,OAAO,IAAI;AAAA,UACvH,MAAM;AAAA,UACN,aAAa,MAAM,KAAK,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,EAAE,MAAM,SAAS,EAAE;AAAA,UACxE,UAAU,EAAE;AAAA,UACZ,UAAU,EAAE;AAAA,QACd;AAAA,MACF,KAAK;AACH,eAAO;AAAA,UACL,MAAM;AAAA,UACN,YAAY,OAAO,YAAY,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,SAAS,CAAC,CAAC,CAAC;AAAA,UAC3E,UAAU,CAAC,GAAG,EAAE,MAAM;AAAA,QACxB;AAAA,MACF,KAAK;AACH,eAAO;AAAA,UACL,MAAM;AAAA,UACN,OAAO,EAAE,MAAM,SAAS;AAAA,UACxB,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,UAAU,EAAE,OAAO,IAAI,CAAC;AAAA,QAC9D;AAAA,MACF,KAAK;AACH,eAAO;AAAA,UACL,MAAM;AAAA,UACN,SAAS;AAAA,UACT,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,WAAW,EAAE,OAAO,IAAI,EAAE,WAAW,EAAE,OAAO,IAAI,CAAC;AAAA,QACpG;AAAA,MACF,KAAK;AACH,eAAO,EAAE,MAAM,UAAU,GAAG,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,IAAI,CAAC,EAAE;AAAA,IACxE;AAAA,EACF;AACA,QAAM,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI;AAChD,MAAI,IAAK,QAAO,EAAE,MAAM,IAAI,OAAO,IAAI,CAAC,MAAM,IAAI,SAAS,WAAW,IAAI,OAAO,CAAC,CAAC,EAAE;AACrF,MAAI,EAAE,cAAc,EAAE,WAAW,OAAQ,QAAO,EAAE,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE;AAC1E,QAAM,OAAO,EAAE,kBAAkB,CAAC,IAAI,OAAO,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI;AAC9E,QAAM,KAAK,KAAK,KAAK,CAAC,MAAM,EAAE,aAAa,GAAG;AAC9C,MAAI,GAAI,QAAO,EAAE,OAAO,GAAG,SAAS,WAAW,GAAG,QAAQ,OAAO,GAAG,KAAK,EAAE;AAC3E,UAAQ,EAAE,QAAQ;AAAA,IAChB,KAAK,UAAU;AACb,YAAM,MAAM,EAAE,MAAM,SAAS;AAC7B,UAAI,EAAE,WAAW,OAAQ,KAAI,SAAS;AAAA,eAC7B,EAAE,UAAU,eAAe,EAAE,MAAM,EAAG,KAAI,UAAU,eAAe,EAAE,MAAM;AACpF,UAAI,EAAE,cAAc,OAAQ,KAAI,YAAY,EAAE;AAC9C,mBAAa,KAAK,CAAC;AACnB,mBAAa,KAAK,GAAG,OAAO;AAC5B,aAAO;AAAA,IACT;AAAA,IACA,KAAK,UAAU;AACb,YAAM,MAAM,EAAE,MAAM,gBAAgB,CAAC,IAAI,YAAY,SAAS;AAC9D,UAAI,CAAC,EAAE,gBAAiB,oBAAmB,KAAK,GAAG,QAAQ,MAAM;AACjE,aAAO;AAAA,IACT;AAAA,IACA,KAAK;AACH,aAAO,EAAE,MAAM,UAAU,SAAS,WAAW;AAAA,IAC/C,KAAK;AACH,aAAO,EAAE,MAAM,UAAU;AAAA,IAC3B,KAAK;AACH,aAAO,EAAE,MAAM,UAAU,QAAQ,YAAY;AAAA,IAC/C,KAAK;AACH,aAAO,EAAE,MAAM,UAAU,iBAAiB,SAAS;AAAA,IACrD;AACE,aAAO,CAAC;AAAA,EACZ;AACF;AACA,SAAS,aAAa,KAAK,GAAG;AAC5B,MAAI,CAAC,EAAE,SAAU;AACjB,MAAI,YAAY,KAAK,IAAI,OAAO,IAAI,aAAa,QAAQ,GAAG,EAAE,QAAQ;AACtE,MAAI,cAAc,WAAW,EAAE,QAAQ;AACzC;AACA,SAAS,aAAa,KAAK,GAAG,SAAS;AACrC,aAAW,KAAK,QAAQ,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,GAAG;AAC1D,UAAM,IAAI,OAAO,EAAE,KAAK;AACxB,QAAI,EAAE,aAAa,KAAM,KAAI,YAAY,KAAK,IAAI,OAAO,IAAI,aAAa,CAAC,GAAG,CAAC;AAAA,aACtE,EAAE,aAAa,IAAK,KAAI,YAAY,KAAK,IAAI,OAAO,IAAI,aAAa,CAAC,GAAG,IAAI,CAAC;AAAA,aAC9E,EAAE,aAAa,KAAM,KAAI,YAAY,KAAK,IAAI,OAAO,IAAI,aAAa,QAAQ,GAAG,CAAC;AAAA,aAClF,EAAE,aAAa,IAAK,KAAI,YAAY,KAAK,IAAI,OAAO,IAAI,aAAa,QAAQ,GAAG,IAAI,CAAC;AAAA,aACrF,EAAE,aAAa,KAAK;AAC3B,UAAI,YAAY;AAChB,UAAI,YAAY;AAAA,IAClB;AAAA,EACF;AACF;AACA,SAAS,mBAAmB,KAAK,GAAG,QAAQ,QAAQ;AAClD,MAAI,MAAM,EAAE,QAAQ,SAAS,EAAE,OAAO,OAAO,EAAE,GAAG,GAAG,WAAW,MAAM,IAAI;AAC1E,MAAI,MAAM,EAAE,QAAQ,SAAS,EAAE,OAAO,OAAO,EAAE,GAAG,GAAG,WAAW,MAAM,IAAI;AAC1E,aAAW,KAAK,OAAO,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,QAAQ,GAAG;AAChF,QAAI,EAAE,aAAa,KAAM,OAAM,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,WAAW,MAAM;AAAA,aACjE,EAAE,aAAa,IAAK,OAAM,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,WAAW,KAAK;AAAA,aACpE,EAAE,aAAa,KAAM,OAAM,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,WAAW,MAAM;AAAA,aACtE,EAAE,aAAa,IAAK,OAAM,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,WAAW,KAAK;AAAA,EAC/E;AACA,QAAM,MAAM,WAAW;AACvB,MAAI,KAAK;AACP,QAAI,IAAI,aAAa,CAAC,IAAK,KAAI,mBAAmB,IAAI;AAAA,SACjD;AACH,UAAI,UAAU,IAAI;AAClB,UAAI,IAAI,UAAW,KAAI,mBAAmB;AAAA,IAC5C;AAAA,EACF;AACA,MAAI,KAAK;AACP,QAAI,IAAI,aAAa,CAAC,IAAK,KAAI,mBAAmB,IAAI;AAAA,SACjD;AACH,UAAI,UAAU,IAAI;AAClB,UAAI,IAAI,UAAW,KAAI,mBAAmB;AAAA,IAC5C;AAAA,EACF;AACF;AACA,SAAS,kBAAkB,GAAG,eAAe;AAC3C,MAAI,CAAC,EAAE,gBAAiB,QAAO,CAAC;AAChC,QAAM,MAAM,CAAC;AACb,aAAW,KAAK,cAAc,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,GAAG;AAChE,UAAM,IAAI,OAAO,EAAE,KAAK;AACxB,QAAI,EAAE,aAAa,KAAM,KAAI,WAAW;AAAA,aAC/B,EAAE,aAAa,IAAK,KAAI,WAAW,IAAI;AAAA,aACvC,EAAE,aAAa,KAAM,KAAI,WAAW;AAAA,aACpC,EAAE,aAAa,IAAK,KAAI,WAAW,IAAI;AAAA,aACvC,EAAE,aAAa,KAAK;AAC3B,UAAI,WAAW;AACf,UAAI,WAAW;AAAA,IACjB;AAAA,EACF;AACA,SAAO;AACT;AACA,SAAS,aAAa,GAAG,QAAQ;AAC/B,MAAI,WAAW,cAAe,QAAO,EAAE,GAAG,GAAG,UAAU,KAAK;AAC5D,MAAI,EAAE,SAAS,QAAQ;AACrB,QAAI,MAAM,QAAQ,EAAE,IAAI,EAAG,QAAO,EAAE,GAAG,GAAG,MAAM,CAAC,GAAG,EAAE,MAAM,IAAI,EAAE;AAClE,QAAI,WAAW,GAAG;AAChB,YAAM,EAAE,OAAO,GAAG,GAAG,KAAK,IAAI;AAC9B,aAAO,EAAE,GAAG,MAAM,MAAM,CAAC,GAAG,IAAI,EAAE;AAAA,IACpC;AACA,WAAO;AAAA,EACT;AACA,SAAO,EAAE,GAAG,GAAG,MAAM,CAAC,EAAE,MAAM,MAAM,EAAE;AACxC;AACA,SAAS,aAAa,GAAG,MAAM,QAAQ,QAAQ,MAAM,SAAS,eAAe,cAAc;AACzF,MAAI,IAAI,WAAW,GAAG,MAAM,QAAQ,QAAQ,MAAM,OAAO;AACzD,QAAM,OAAO,EAAE,mBAAmB;AAClC,WAAS,IAAI,GAAG,IAAI,MAAM,KAAK;AAC7B,QAAI,EAAE,MAAM,SAAS,OAAO,GAAG,GAAG,MAAM,OAAO,IAAI,kBAAkB,GAAG,aAAa,IAAI,CAAC,EAAE;AAAA,EAC9F;AACA,MAAI,EAAE,SAAU,KAAI,aAAa,GAAG,MAAM;AAC1C,MAAI,SAAS,YAAY,gBAAgB,EAAE,iBAAiB,QAAQ;AAClE,QAAI,EAAE,GAAG,GAAG,SAAS,EAAE,aAAa;AAAA,EACtC;AACA,SAAO;AACT;AACA,SAAS,eAAe,MAAM,MAAM;AAClC,QAAM,UAAU,IAAI,IAAI,KAAK,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;AAC/C,QAAM,aAAa,KAAK,OAAO,CAAC,MAAM,QAAQ,IAAI,EAAE,IAAI,KAAK,QAAQ,IAAI,EAAE,KAAK,CAAC;AACjF,MAAI,CAAC,WAAW,OAAQ,QAAO;AAC/B,QAAM,OAAO,WAAW,IAAI,CAAC,MAAM,GAAG,EAAE,OAAO,GAAG,EAAE,IAAI,OAAO,EAAE,GAAG,EAAE,IAAI,IAAI,EAAE,QAAQ,IAAI,EAAE,KAAK,EAAE,EAAE,KAAK,IAAI;AAChH,SAAO,mDAAmD,IAAI;AAChE;AACA,SAAS,YAAY,OAAO,MAAM,MAAM,QAAQ,eAAe,QAAQ;AACrE,QAAM,aAAa,CAAC;AACpB,QAAM,WAAW,CAAC;AAClB,aAAW,KAAK,MAAM;AACpB,eAAW,EAAE,IAAI,IAAI;AAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA,MACA,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP;AAAA,IACF;AACA,UAAM,mBAAmB,EAAE,cAAc,iBAAiB,EAAE,iBAAiB,UAAU,EAAE;AACzF,UAAM,WAAW,SAAS,YAAY,SAAS,YAAY;AAC3D,QAAI,CAAC,SAAU,UAAS,KAAK,EAAE,IAAI;AAAA,EACrC;AACA,QAAM,OAAO,eAAe,OAAO,MAAM,IAAI;AAC7C,SAAO;AAAA,IACL,GAAG,WAAW,kBAAkB,EAAE,SAAS,MAAM,IAAI,CAAC;AAAA,IACtD,KAAK,GAAG,MAAM,MAAM,IAAI,IAAI;AAAA,IAC5B,OAAO,GAAG,IAAI,IAAI,MAAM,MAAM;AAAA,IAC9B,GAAG,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;AAAA,IACnC,MAAM;AAAA,IACN;AAAA,IACA,GAAG,SAAS,SAAS,EAAE,SAAS,IAAI,CAAC;AAAA,IACrC,sBAAsB;AAAA,EACxB;AACF;AACA,SAAS,QAAQ,OAAO;AACtB,QAAM,UAAU,MAAM,UAAU,CAAC,GAAG,IAAI,CAAC,MAAM,WAAW,EAAE,YAAY,EAAE,IAAI,CAAC;AAC/E,SAAO;AAAA,IACL,QAAQ,OAAO,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;AAAA,IAClD,MAAM,OAAO,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;AAAA,IACpD,MAAM,OAAO,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;AAAA,IACpD,SAAS,OAAO,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;AAAA,IAC1D,eAAe,OAAO,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAAA,EACxE;AACF;AACA,SAAS,aAAa,OAAO,OAAO,CAAC,GAAG;AACtC,QAAM,SAAS,KAAK,UAAU;AAC9B,QAAM,SAAS,QAAQ,KAAK;AAC5B,QAAM,QAAQ,CAAC,MAAM,SAAS,YAAY,OAAO,MAAM,MAAM,QAAQ,CAAC,CAAC,KAAK,eAAe,MAAM;AACjG,SAAO;AAAA,IACL,QAAQ,MAAM,cAAc,KAAK,GAAG,QAAQ;AAAA,IAC5C,QAAQ,MAAM,cAAc,KAAK,GAAG,QAAQ;AAAA,IAC5C,QAAQ,MAAM,cAAc,KAAK,GAAG,QAAQ;AAAA,EAC9C;AACF;AACA,SAAS,mBAAmB,QAAQ,OAAO,CAAC,GAAG;AAC7C,QAAM,UAAU,CAAC;AACjB,aAAW,SAAS,QAAQ;AAC1B,UAAM,QAAQ,aAAa,OAAO,IAAI;AACtC,eAAW,QAAQ,CAAC,UAAU,UAAU,QAAQ,GAAG;AACjD,YAAM,OAAO,GAAG,MAAM,MAAM,GAAG,KAAK,CAAC,EAAE,YAAY,CAAC,GAAG,KAAK,MAAM,CAAC,CAAC;AACpE,YAAM,EAAE,SAAS,UAAU,KAAK,KAAK,GAAG,KAAK,IAAI,MAAM,IAAI;AAC3D,cAAQ,IAAI,IAAI;AAAA,IAClB;AAAA,EACF;AACA,SAAO,EAAE,QAAQ;AACnB;AACA,SAAS,kBAAkB,OAAO,OAAO,QAAQ,eAAe;AAC9D,QAAM,IAAI,MAAM;AAChB,QAAM,UAAU,aAAa,OAAO,EAAE,QAAQ,cAAc,CAAC;AAC7D,QAAM,OAAO,CAAC,SAAS,gBAAgB,WAAW,MAAM,GAAG,KAAK,CAAC,MAAM,KAAK,UAAU,QAAQ,IAAI,GAAG,MAAM,CAAC,CAAC;AAAA;AAAA,cAEjG,SAAS,MAAM,GAAG,KAAK,CAAC,aAAa,WAAW,MAAM,GAAG,KAAK,CAAC;AAC3E,SAAO,CAAC,KAAK,QAAQ,GAAG,KAAK,QAAQ,GAAG,KAAK,QAAQ,CAAC,EAAE,KAAK,MAAM,IAAI;AACzE;AACA,IAAI,sBAAsB,MAAM;AAAA,EAC9B,YAAY,UAAU;AACpB,SAAK,WAAW;AAChB,SAAK,UAAU;AAAA,EACjB;AAAA,EACA,MAAM,SAAS,MAAM;AACnB,UAAM,KAAK,MAAM,OAAO,aAAa;AACrC,UAAM,OAAO,MAAM,OAAO,MAAM;AAChC,UAAM,MAAM,KAAK,QAAQ,QAAQ,IAAI,GAAG,KAAK,MAAM;AACnD,UAAM,QAAQ,CAAC;AACf,UAAM,GAAG,MAAM,KAAK,EAAE,WAAW,KAAK,CAAC;AACvC,UAAM,QAAQ,aAAa,IAAI;AAC/B,UAAM,aAAa,KAAK,cAAc;AACtC,UAAM,SAAS,KAAK,UAAU;AAC9B,eAAW,SAAS,KAAK,SAAS,QAAQ;AACxC,YAAM,WAAW,KAAK,KAAK,KAAK,eAAe,MAAM,QAAQ,UAAU,CAAC;AACxE,YAAM,OAAO,kBAAkB,OAAO,OAAO,QAAQ,CAAC,CAAC,KAAK,aAAa;AACzE,YAAM,YAAY,MAAM;AAAA,QACtB,YAAY,KAAK,YAAY,IAAI;AAAA,QACjC;AAAA,QACA,KAAK;AAAA,MACP;AACA,YAAM,GAAG,UAAU,UAAU,WAAW,MAAM;AAC9C,YAAM,KAAK,QAAQ;AAAA,IACrB;AACA,QAAI,KAAK,YAAY;AACnB,YAAM,MAAM,mBAAmB,KAAK,SAAS,QAAQ;AAAA,QACnD;AAAA,QACA,eAAe,CAAC,CAAC,KAAK;AAAA,MACxB,CAAC;AACD,YAAM,iBAAiB,KAAK,KAAK,KAAK,eAAe;AACrD,YAAM,OAAO,6BAA6B,KAAK,UAAU,KAAK,MAAM,CAAC,CAAC;AAAA;AAEtE,YAAM,GAAG;AAAA,QACP;AAAA,QACA,MAAM,WAAW,YAAY,KAAK,YAAY,IAAI,MAAM,gBAAgB,KAAK,MAAM;AAAA,QACnF;AAAA,MACF;AACA,YAAM,KAAK,cAAc;AAAA,IAC3B;AACA,UAAM,YAAY,KAAK,KAAK,KAAK,UAAU;AAC3C,UAAM,QAAQ,KAAK,SAAS,OAAO,IAAI,CAAC,MAAM,kBAAkB,gBAAgB,EAAE,QAAQ,YAAY,KAAK,eAAe,CAAC,IAAI,EAAE;AAAA,MAC/H,KAAK,aAAa,CAAC,8BAA8B,KAAK,oBAAoB,SAAS,KAAK,KAAK,IAAI,IAAI,CAAC;AAAA,IACxG,EAAE,KAAK,IAAI,IAAI;AACf,UAAM,iBAAiB,MAAM;AAAA,MAC3B,YAAY,KAAK,YAAY,IAAI;AAAA,MACjC;AAAA,MACA,KAAK;AAAA,IACP;AACA,UAAM,GAAG,UAAU,WAAW,gBAAgB,MAAM;AACpD,UAAM,KAAK,SAAS;AACpB,WAAO;AAAA,EACT;AAAA,EACA,YAAY,OAAO,MAAM;AACvB,WAAO;AAAA,MACL;AAAA,MACA,aAAa,IAAI;AAAA,MACjB,MAAM,UAAU;AAAA,MAChB,CAAC,CAAC,MAAM;AAAA,IACV;AAAA,EACF;AACF;AACA,IAAI,gBAAgB;AACpB,SAAS,YAAY,GAAG;AACtB,MAAI,GAAG,YAAY,MAAO,QAAO;AACjC,QAAM,OAAO,GAAG,QAAQ;AACxB,SAAO,GAAG,IAAI;AAAA;AAAA;AAGhB;","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@drzl/cli",
|
|
3
|
-
"version": "4.14.
|
|
3
|
+
"version": "4.14.4",
|
|
4
4
|
"private": false,
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
@@ -29,14 +29,14 @@
|
|
|
29
29
|
"jiti": "^2.7.0",
|
|
30
30
|
"ora": "^9.4.1",
|
|
31
31
|
"zod": "^4.4.3",
|
|
32
|
-
"@drzl/analyzer": "^1.
|
|
33
|
-
"@drzl/generator-orpc": "^2.
|
|
34
|
-
"@drzl/generator-
|
|
35
|
-
"@drzl/generator-
|
|
36
|
-
"@drzl/generator-
|
|
37
|
-
"@drzl/generator-
|
|
38
|
-
"@drzl/
|
|
39
|
-
"@drzl/
|
|
32
|
+
"@drzl/analyzer": "^1.17.1",
|
|
33
|
+
"@drzl/generator-orpc": "^2.8.0",
|
|
34
|
+
"@drzl/generator-arktype": "^3.13.0",
|
|
35
|
+
"@drzl/generator-service": "^2.4.0",
|
|
36
|
+
"@drzl/generator-valibot": "^3.16.0",
|
|
37
|
+
"@drzl/generator-typebox": "^0.10.0",
|
|
38
|
+
"@drzl/generator-zod": "^3.17.0",
|
|
39
|
+
"@drzl/validation-core": "^3.16.1"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
42
|
"drizzle-orm": "^0.45.2",
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
"url": "https://github.com/sponsors/omar-dulaimi"
|
|
63
63
|
},
|
|
64
64
|
"optionalDependencies": {
|
|
65
|
-
"@drzl/generator-json-schema": "^0.
|
|
65
|
+
"@drzl/generator-json-schema": "^0.5.0"
|
|
66
66
|
},
|
|
67
67
|
"scripts": {
|
|
68
68
|
"build": "tsup src/cli.ts src/config.ts --format esm,cjs --sourcemap --dts --clean",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../generator-json-schema/dist/index.js"],"sourcesContent":["// src/index.ts\nimport {\n COLUMN_FORMATS,\n formatCode,\n insertColumns,\n isIntegerColumn,\n moduleFileName,\n moduleSpecifier,\n parseCheck,\n resolveAffix,\n schemaName,\n selectColumns,\n typeName,\n updateColumns\n} from \"@drzl/validation-core\";\nvar DEFAULT_FILE_SUFFIX = \".schema.ts\";\nvar DRAFT = \"https://json-schema.org/draft/2020-12/schema\";\nvar UUID_FORMAT = \"uuid\";\nfunction baseSchema(c, mode, target, checks, sets, lengths) {\n const s = c.shape;\n if (s) {\n switch (s.kind) {\n case \"json\":\n return {};\n case \"custom\":\n return {};\n case \"buffer\":\n return { type: \"string\", contentEncoding: \"base64\" };\n case \"tuple\":\n return target === \"openapi-3.0\" ? { type: \"array\", items: { type: \"number\" }, minItems: s.length, maxItems: s.length } : {\n type: \"array\",\n prefixItems: Array.from({ length: s.length }, () => ({ type: \"number\" })),\n minItems: s.length,\n maxItems: s.length\n };\n case \"numberVector\":\n return {\n type: \"array\",\n items: { type: \"number\" },\n ...s.length ? { minItems: s.length, maxItems: s.length } : {}\n };\n case \"bitstring\":\n return {\n type: \"string\",\n pattern: \"^[01]*$\",\n ...s.length ? s.exact ? { minLength: s.length, maxLength: s.length } : { maxLength: s.length } : {}\n };\n }\n }\n const set = sets.find((x) => x.column === c.name);\n if (set) return { enum: set.values.map((v) => set.kind === \"string\" ? v : Number(v)) };\n if (c.enumValues && c.enumValues.length) return { enum: [...c.enumValues] };\n const mine = c.arrayDimensions ? [] : checks.filter((k) => k.column === c.name);\n const eq = mine.find((k) => k.operator === \"=\");\n if (eq) return { const: eq.kind === \"string\" ? eq.value : Number(eq.value) };\n switch (c.tsType) {\n case \"string\": {\n const out = { type: \"string\" };\n if (c.format === \"uuid\") out.format = UUID_FORMAT;\n else if (c.format && COLUMN_FORMATS[c.format]) out.pattern = COLUMN_FORMATS[c.format];\n if (c.maxLength !== void 0) out.maxLength = c.maxLength;\n applyLengths(out, c, lengths);\n return out;\n }\n case \"number\": {\n const out = { type: isIntegerColumn(c) ? \"integer\" : \"number\" };\n if (!c.arrayDimensions) applyNumericBounds(out, c, checks, target);\n return out;\n }\n case \"bigint\":\n return { type: \"string\", pattern: \"^-?\\\\d+$\" };\n case \"boolean\":\n return { type: \"boolean\" };\n case \"Date\":\n return { type: \"string\", format: \"date-time\" };\n case \"Uint8Array\":\n return { type: \"string\", contentEncoding: \"base64\" };\n default:\n return {};\n }\n}\nfunction applyLengths(out, c, lengths) {\n for (const k of lengths.filter((x) => x.column === c.name)) {\n const n = Number(k.value);\n if (k.operator === \">=\") out.minLength = Math.max(Number(out.minLength ?? 0), n);\n else if (k.operator === \">\") out.minLength = Math.max(Number(out.minLength ?? 0), n + 1);\n else if (k.operator === \"<=\") out.maxLength = Math.min(Number(out.maxLength ?? Infinity), n);\n else if (k.operator === \"<\") out.maxLength = Math.min(Number(out.maxLength ?? Infinity), n - 1);\n else if (k.operator === \"=\") {\n out.minLength = n;\n out.maxLength = n;\n }\n }\n}\nfunction applyNumericBounds(out, c, checks, target) {\n let min = c.min !== void 0 ? { value: Number(c.min), exclusive: false } : void 0;\n let max = c.max !== void 0 ? { value: Number(c.max), exclusive: false } : void 0;\n for (const k of checks.filter((x) => x.column === c.name && x.kind === \"number\")) {\n if (k.operator === \">=\") min = { value: Number(k.value), exclusive: false };\n else if (k.operator === \">\") min = { value: Number(k.value), exclusive: true };\n else if (k.operator === \"<=\") max = { value: Number(k.value), exclusive: false };\n else if (k.operator === \"<\") max = { value: Number(k.value), exclusive: true };\n }\n const old = target === \"openapi-3.0\";\n if (min) {\n if (min.exclusive && !old) out.exclusiveMinimum = min.value;\n else {\n out.minimum = min.value;\n if (min.exclusive) out.exclusiveMinimum = true;\n }\n }\n if (max) {\n if (max.exclusive && !old) out.exclusiveMaximum = max.value;\n else {\n out.maximum = max.value;\n if (max.exclusive) out.exclusiveMaximum = true;\n }\n }\n}\nfunction cardinalityBounds(c, cardinalities) {\n if (!c.arrayDimensions) return {};\n const out = {};\n for (const k of cardinalities.filter((x) => x.column === c.name)) {\n const n = Number(k.value);\n if (k.operator === \">=\") out.minItems = n;\n else if (k.operator === \">\") out.minItems = n + 1;\n else if (k.operator === \"<=\") out.maxItems = n;\n else if (k.operator === \"<\") out.maxItems = n - 1;\n else if (k.operator === \"=\") {\n out.minItems = n;\n out.maxItems = n;\n }\n }\n return out;\n}\nfunction makeNullable(s, target) {\n if (target === \"openapi-3.0\") return { ...s, nullable: true };\n if (s.type === void 0) {\n if (Array.isArray(s.enum)) return { ...s, enum: [...s.enum, null] };\n if (\"const\" in s) {\n const { const: k, ...rest } = s;\n return { ...rest, enum: [k, null] };\n }\n return s;\n }\n return { ...s, type: [s.type, \"null\"] };\n}\nfunction columnSchema(c, mode, target, checks, sets, lengths, cardinalities, applyDefault) {\n let s = baseSchema(c, mode, target, checks, sets, lengths);\n const dims = c.arrayDimensions ?? 0;\n for (let i = 0; i < dims; i++) {\n s = { type: \"array\", items: s, ...i === dims - 1 ? cardinalityBounds(c, cardinalities) : {} };\n }\n if (c.nullable) s = makeNullable(s, target);\n if (mode === \"insert\" && applyDefault && c.defaultValue !== void 0) {\n s = { ...s, default: c.defaultValue };\n }\n return s;\n}\nfunction rowDescription(rows, cols) {\n const present = new Set(cols.map((c) => c.name));\n const applicable = rows.filter((r) => present.has(r.left) && present.has(r.right));\n if (!applicable.length) return void 0;\n const list = applicable.map((r) => `${r.name ? `${r.name}: ` : \"\"}${r.left} ${r.operator} ${r.right}`).join(\"; \");\n return `Row constraints not expressible in JSON Schema: ${list}`;\n}\nfunction tableSchema(table, cols, mode, target, applyDefaults, parsed) {\n const properties = {};\n const required = [];\n for (const c of cols) {\n properties[c.name] = columnSchema(\n c,\n mode,\n target,\n parsed.checks,\n parsed.sets,\n parsed.lengths,\n parsed.cardinalities,\n applyDefaults\n );\n const suppliedOnInsert = c.hasDefault || applyDefaults && c.defaultValue !== void 0 || c.isGenerated;\n const optional = mode === \"update\" || mode === \"insert\" && suppliedOnInsert;\n if (!optional) required.push(c.name);\n }\n const desc = rowDescription(parsed.rows, cols);\n return {\n ...target === \"draft-2020-12\" ? { $schema: DRAFT } : {},\n $id: `${table.tsName}.${mode}`,\n title: `${mode} ${table.tsName}`,\n ...desc ? { description: desc } : {},\n type: \"object\",\n properties,\n ...required.length ? { required } : {},\n additionalProperties: false\n };\n}\nfunction collect(table) {\n const parsed = (table.checks ?? []).map((k) => parseCheck(k.expression, k.name));\n return {\n checks: parsed.flatMap((p) => p.ok ? p.checks : []),\n sets: parsed.flatMap((p) => p.ok ? p.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 tableSchemas(table, opts = {}) {\n const target = opts.target ?? \"draft-2020-12\";\n const parsed = collect(table);\n const build = (cols, mode) => tableSchema(table, cols, mode, target, !!opts.applyDefaults, parsed);\n return {\n insert: build(insertColumns(table), \"insert\"),\n update: build(updateColumns(table), \"update\"),\n select: build(selectColumns(table), \"select\")\n };\n}\nfunction componentsDocument(tables, opts = {}) {\n const schemas = {};\n for (const table of tables) {\n const built = tableSchemas(table, opts);\n for (const mode of [\"insert\", \"update\", \"select\"]) {\n const name = `${table.tsName}${mode[0].toUpperCase()}${mode.slice(1)}`;\n const { $schema: _dialect, $id: _id, ...rest } = built[mode];\n schemas[name] = rest;\n }\n }\n return { schemas };\n}\nfunction renderTableModule(table, affix, target, applyDefaults) {\n const T = table.tsName;\n const schemas = tableSchemas(table, { target, applyDefaults });\n const decl = (mode) => `export const ${schemaName(mode, T, affix)} = ${JSON.stringify(schemas[mode], null, 2)} as const;\n\nexport type ${typeName(mode, T, affix)} = typeof ${schemaName(mode, T, affix)};`;\n return [decl(\"insert\"), decl(\"update\"), decl(\"select\")].join(\"\\n\\n\") + \"\\n\";\n}\nvar JsonSchemaGenerator = class {\n constructor(analysis) {\n this.analysis = analysis;\n this.library = \"json-schema\";\n }\n async generate(opts) {\n const fs = await import(\"fs/promises\");\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 fileSuffix = opts.fileSuffix ?? DEFAULT_FILE_SUFFIX;\n const target = opts.target ?? \"draft-2020-12\";\n for (const table of this.analysis.tables) {\n const filePath = path.join(out, moduleFileName(table.tsName, fileSuffix));\n const code = renderTableModule(table, affix, target, !!opts.applyDefaults);\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 if (opts.components) {\n const doc = componentsDocument(this.analysis.tables, {\n target,\n applyDefaults: !!opts.applyDefaults\n });\n const componentsPath = path.join(out, \"components.ts\");\n const code = `export const components = ${JSON.stringify(doc, null, 2)} as const;\n`;\n await fs.writeFile(\n componentsPath,\n await formatCode(buildHeader(opts.outputHeader) + code, componentsPath, opts.format),\n \"utf8\"\n );\n files.push(componentsPath);\n }\n const indexPath = path.join(out, \"index.ts\");\n const index = this.analysis.tables.map((t) => `export * from '${moduleSpecifier(t.tsName, fileSuffix, opts.importExtension)}';`).concat(\n opts.components ? [`export * from './components${opts.importExtension === \"none\" ? \"\" : \".js\"}';`] : []\n ).join(\"\\n\") + \"\\n\";\n const indexFormatted = await formatCode(\n buildHeader(opts.outputHeader) + index,\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 renderTableModule(\n table,\n resolveAffix(opts),\n opts?.target ?? \"draft-2020-12\",\n !!opts?.applyDefaults\n );\n }\n};\nvar index_default = JsonSchemaGenerator;\nfunction buildHeader(h) {\n if (h?.enabled === false) return \"\";\n const text = h?.text ?? \"// Generated by DRZL. Do not edit by hand.\";\n return `${text}\n\n`;\n}\nexport {\n JsonSchemaGenerator,\n componentsDocument,\n index_default as default,\n tableSchemas\n};\n"],"mappings":"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","names":[]}
|