@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 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../generator-effect/dist/index.js"],"sourcesContent":["// src/index.ts\nimport {\n buildNestedPlan,\n formatCode,\n nestedArmNotes,\n nestedNodeColumns,\n nestedSchemaName,\n nestedTypeName,\n resolveNestedDepth,\n CODEPOINT_LENGTH,\n COERCIBLE_DATE_STRING,\n COLUMN_FORMATS,\n insertColumns,\n isIntegerColumn,\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} 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 if (c.arrayDimensions || c.shape) return [];\n return lengths.filter((k) => k.column === c.name).map(\n (k) => filter(\n `${CODEPOINT_LENGTH} ${OPS[k.operator]} ${k.value}`,\n `${k.name ? `${k.name}: ` : \"\"}length(${c.name}) ${k.operator} ${k.value}`\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 return checks.filter((k) => k.column === c.name && !folded.has(k)).map((k) => {\n const literal = k.kind === \"string\" ? JSON.stringify(k.value) : k.value;\n return filter(\n `v ${OPS[k.operator]} ${literal}`,\n `${k.name ? `${k.name}: ` : \"\"}${c.name} ${k.operator} ${k.value}`\n );\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 shaped;\n const set = sets.find((x) => x.column === c.name);\n if (set) {\n const values = set.values.map((v) => set.kind === \"string\" ? JSON.stringify(v) : v);\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) {\n return `${NS}.Literal(${eq.kind === \"string\" ? JSON.stringify(eq.value) : 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) {\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 (c.nullable && !isUnknownExpr(expr)) expr = `${NS}.NullOr(${expr})`;\n if (narrowRef) 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) {\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 );\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 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 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) {\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 );\n const arms = node.arms.map((arm) => {\n const notes = nestedArmNotes(arm).map((n) => ` // ${n}\n`).join(\"\");\n const child = renderNestedObject(arm.child, mode, coerceDates, typedJson, applyDefaults);\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) {\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);\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 = {}) {\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 );\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 );\n return `import * as ${NS} from 'effect/Schema';\n${schemaImport}${needsJson ? `\n${JSON_PREAMBLE}` : \"\"}\n${blocks.join(\"\\n\\n\")}\n${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 = 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 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 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 );\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 }\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":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../generator-json-schema/dist/index.js"],"sourcesContent":["// src/index.ts\nimport {\n formatCode,\n moduleFileName,\n moduleSpecifier,\n resolveAffix,\n schemaName,\n typeName\n} from \"@drzl/validation-core\";\n\n// src/schemas.ts\nimport {\n COLUMN_FORMATS,\n insertColumns,\n isIntegerColumn,\n parseCheck,\n selectColumns,\n updateColumns\n} from \"@drzl/validation-core\";\nvar DRAFT = \"https://json-schema.org/draft/2020-12/schema\";\nvar UUID_FORMAT = \"uuid\";\nvar base64 = (target) => target === \"openapi-3.0\" ? { type: \"string\", format: \"byte\" } : { type: \"string\", contentEncoding: \"base64\" };\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 base64(target);\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) {\n const only = eq.kind === \"string\" ? eq.value : Number(eq.value);\n return target === \"openapi-3.0\" ? { enum: [only] } : { const: only };\n }\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 base64(target);\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 build2 = (cols, mode) => tableSchema(table, cols, mode, target, !!opts.applyDefaults, parsed);\n return {\n insert: build2(insertColumns(table), \"insert\"),\n update: build2(updateColumns(table), \"update\"),\n select: build2(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}\n\n// src/openapi.ts\nvar ERROR_SCHEMA = \"Error\";\nvar componentName = (table, mode) => `${table.tsName}${mode[0].toUpperCase()}${mode.slice(1)}`;\nvar ref = (name) => ({ $ref: `#/components/schemas/${name}` });\nvar pascal = (s) => s.charAt(0).toUpperCase() + s.slice(1);\nfunction keyColumns(table) {\n const names = table.primaryKey?.columns ?? [];\n if (!names.length) return null;\n const cols = names.map((n) => table.columns.find((c) => c.name === n));\n if (cols.some((c) => !c)) return null;\n return cols;\n}\nvar modesFor = (table, key) => [\n ...table.readOnly ? [] : [\"insert\"],\n ...table.readOnly || !key ? [] : [\"update\"],\n \"select\"\n];\nvar resourceSegment = (table) => encodeURIComponent(table.name);\nfunction foreignKeysOf(table) {\n if (table.foreignKeys?.length) return table.foreignKeys;\n return table.columns.filter((c) => c.references).map((c) => ({\n columns: [c.name],\n foreignTable: c.references.table,\n foreignColumns: [c.references.column]\n }));\n}\nvar jsonBody = (schema) => ({ content: { \"application/json\": { schema } } });\nfunction build(tables, opts) {\n const target = opts.target ?? \"draft-2020-12\";\n const schemaTarget = target === \"openapi-3.0\" ? \"openapi-3.0\" : \"openapi-3.1\";\n const failure = String(opts.validationStatus ?? 400);\n const paths = {};\n const schemas = {};\n const tags = [];\n const operationIds = /* @__PURE__ */ new Map();\n const owner = /* @__PURE__ */ new Map();\n const claim = (path, by, label) => {\n const taken = owner.get(path);\n if (taken !== void 0 && taken.by !== by) {\n throw new Error(\n `@drzl/generator-json-schema: the OpenAPI path \"${path}\" is claimed twice: by table \"${taken.label}\" (exported as ${taken.by}) and by table \"${label}\" (exported as ${by}). A path names one resource, so one of the two has to be left out of this generator with the config's \"exclude\" list.`\n );\n }\n owner.set(path, { by, label });\n };\n const operation = (id, table, rest) => {\n const clash = operationIds.get(id);\n if (clash !== void 0) {\n throw new Error(\n `@drzl/generator-json-schema: the operationId \"${id}\" would be emitted for both \"${clash}\" and \"${table.name}\". An operationId is the method name a client generator derives, and the specification requires it to be unique across the document.`\n );\n }\n operationIds.set(id, table.name);\n return { operationId: id, tags: [table.name], ...rest };\n };\n const built = tables.map((table) => ({\n table,\n key: keyColumns(table),\n segment: resourceSegment(table),\n schemas: tableSchemas(table, { target: schemaTarget, applyDefaults: opts.applyDefaults })\n }));\n for (const { table, key, segment, schemas: built3 } of built) {\n for (const mode of modesFor(table, key)) {\n const { $schema: _dialect, $id: _id, ...rest } = built3[mode];\n schemas[componentName(table, mode)] = rest;\n }\n const notes = [];\n if (!key) notes.push(\"It has no primary key, so no path addresses a single row.\");\n if (table.readOnly) {\n notes.push(\"It refuses every write, so only reads are described.\");\n }\n tags.push({ name: table.name, description: [`Table \"${table.name}\".`, ...notes].join(\" \") });\n const T = pascal(table.tsName);\n const select = ref(componentName(table, \"select\"));\n const validationFailed = {\n description: \"The request does not match the schema for this operation.\",\n ...jsonBody(ref(ERROR_SCHEMA))\n };\n const collidable = [\n ...table.primaryKey ? [`primary key (${table.primaryKey.columns.join(\", \")})`] : [],\n ...table.unique.map((u) => `${u.name ? `${u.name} ` : \"\"}(${u.columns.join(\", \")})`)\n ];\n const conflict = (constraints) => ({\n description: `The row collides with an existing one on ${constraints.join(\"; \")}.`,\n ...jsonBody(ref(ERROR_SCHEMA))\n });\n const collection = `/${segment}`;\n claim(collection, table.tsName, table.name);\n const item = {\n get: operation(`list${T}`, table, {\n summary: `List every ${table.name} row.`,\n // No pagination parameters. Whether the server implements a limit, an offset or a cursor is\n // not something a Drizzle schema states, and a declared parameter nothing honours is worse\n // than an undeclared one.\n responses: {\n \"200\": {\n description: `Every ${table.name} row.`,\n ...jsonBody({ type: \"array\", items: select })\n }\n }\n })\n };\n if (!table.readOnly) {\n item.post = operation(`create${T}`, table, {\n summary: `Create a ${table.name} row.`,\n requestBody: { required: true, ...jsonBody(ref(componentName(table, \"insert\"))) },\n responses: {\n \"201\": { description: `The ${table.name} row that was created.`, ...jsonBody(select) },\n [failure]: validationFailed,\n ...collidable.length ? { \"409\": conflict(collidable) } : {}\n }\n });\n }\n paths[collection] = item;\n if (!key) continue;\n const itemPath = `${collection}/${key.map((c) => `{${c.name}}`).join(\"/\")}`;\n claim(itemPath, table.tsName, table.name);\n const parameters = key.map((c) => ({\n name: c.name,\n in: \"path\",\n required: true,\n description: `${c.name}, from the primary key of ${table.name}.`,\n // The column's own schema rather than a string, so an integer key is declared as one and a\n // uuid key carries its format. This is the whole point of reading the real key.\n schema: built3.select.properties[c.name] ?? {}\n }));\n const missing = {\n description: `No ${table.name} row has that ${key.map((c) => c.name).join(\" and \")}.`,\n ...jsonBody(ref(ERROR_SCHEMA))\n };\n const byId = {\n parameters,\n get: operation(`get${T}`, table, {\n summary: `Read one ${table.name} row.`,\n responses: {\n \"200\": { description: `The requested ${table.name} row.`, ...jsonBody(select) },\n [failure]: validationFailed,\n \"404\": missing\n }\n })\n };\n if (!table.readOnly) {\n byId.patch = operation(`update${T}`, table, {\n summary: `Patch one ${table.name} row.`,\n requestBody: { required: true, ...jsonBody(ref(componentName(table, \"update\"))) },\n responses: {\n \"200\": { description: `The ${table.name} row after the patch.`, ...jsonBody(select) },\n [failure]: validationFailed,\n \"404\": missing,\n // The primary key is not in the update schema, so a patch cannot collide on it. Only a\n // unique constraint over other columns can.\n ...table.unique.length ? {\n \"409\": conflict(\n table.unique.map((u) => `${u.name ? `${u.name} ` : \"\"}(${u.columns.join(\", \")})`)\n )\n } : {}\n }\n });\n byId.delete = operation(`delete${T}`, table, {\n summary: `Delete one ${table.name} row.`,\n responses: {\n // No body. Handing back the deleted row is the alternative and it is not a true statement\n // on every dialect DRZL supports: RETURNING is Postgres and SQLite, and MySQL has no such\n // clause, so an implementation there has nothing to send.\n \"204\": { description: `The ${table.name} row was deleted. No content is returned.` },\n [failure]: validationFailed,\n \"404\": missing\n }\n });\n }\n paths[itemPath] = byId;\n if (!opts.includeRelations) continue;\n for (const child of built) {\n if (child.table === table) continue;\n const matching = foreignKeysOf(child.table).filter(\n (fk) => fk.foreignTable === table.name && fk.foreignColumns.length === key.length && fk.foreignColumns.every((c, i) => c === key[i].name)\n );\n if (matching.length !== 1) continue;\n const subPath = `${itemPath}/${child.segment}`;\n claim(\n subPath,\n `${table.tsName} -> ${child.table.tsName}`,\n `${table.name} -> ${child.table.name}`\n );\n paths[subPath] = {\n parameters,\n get: operation(`list${T}${pascal(child.table.tsName)}`, child.table, {\n summary: `List the ${child.table.name} rows belonging to one ${table.name} row.`,\n responses: {\n \"200\": {\n description: `The ${child.table.name} rows whose ${matching[0].columns.join(\", \")} names this ${table.name} row.`,\n ...jsonBody({ type: \"array\", items: ref(componentName(child.table, \"select\")) })\n },\n [failure]: validationFailed,\n \"404\": missing\n }\n })\n };\n }\n }\n return { paths, schemas, tags };\n}\nvar errorSchema = () => ({\n title: \"error\",\n description: \"What an operation returns when it does not return the row.\",\n type: \"object\",\n properties: {\n message: { type: \"string\" },\n code: { type: \"string\" }\n },\n required: [\"message\"],\n additionalProperties: true\n});\nfunction openApiDocument(tables, opts = {}) {\n const target = opts.target ?? \"draft-2020-12\";\n const { paths, schemas, tags } = build(tables, opts);\n if (ERROR_SCHEMA in schemas) {\n throw new Error(\n `@drzl/generator-json-schema: a table produced the component schema name \"${ERROR_SCHEMA}\", which the document already uses for its error responses.`\n );\n }\n return {\n openapi: target === \"openapi-3.0\" ? \"3.0.3\" : \"3.1.1\",\n info: {\n title: opts.info?.title ?? \"API\",\n version: opts.info?.version ?? \"0.0.0\",\n description: opts.info?.description ?? \"Generated by DRZL from a Drizzle schema. Paths, request bodies and response bodies are derived from the schema alone; nothing here has been checked against a running server.\"\n },\n ...opts.servers?.length ? { servers: opts.servers } : {},\n paths,\n components: { schemas: { ...schemas, [ERROR_SCHEMA]: errorSchema() } },\n tags\n };\n}\n\n// src/index.ts\nvar DEFAULT_FILE_SUFFIX = \".schema.ts\";\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}\nfunction resolveDocument(opt) {\n if (!opt) return null;\n const o = opt === true ? {} : opt;\n if (o.enabled === false) return null;\n return { ...o, format: o.format ?? \"ts\" };\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 const document = resolveDocument(opts.document);\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 if (document) {\n const built = openApiDocument(this.analysis.tables, {\n target,\n applyDefaults: !!opts.applyDefaults,\n includeRelations: !!opts.includeRelations,\n info: document.info,\n servers: document.servers,\n validationStatus: document.validationStatus\n });\n const body = JSON.stringify(built, null, 2);\n if (document.format !== \"json\") {\n const tsPath = path.join(out, \"openapi.ts\");\n const code = `export const openapi = ${body} as const;\n`;\n await fs.writeFile(\n tsPath,\n await formatCode(buildHeader(opts.outputHeader) + code, tsPath, opts.format),\n \"utf8\"\n );\n files.push(tsPath);\n }\n if (document.format !== \"ts\") {\n const jsonPath = path.join(out, \"openapi.json\");\n await fs.writeFile(jsonPath, body + \"\\n\", \"utf8\");\n files.push(jsonPath);\n }\n }\n const ext = opts.importExtension === \"none\" ? \"\" : \".js\";\n const indexPath = path.join(out, \"index.ts\");\n const index = this.analysis.tables.map(\n (t) => `export * from '${moduleSpecifier(t.tsName, fileSuffix, opts.importExtension)}';`\n ).concat(opts.components ? [`export * from './components${ext}';`] : []).concat(document && document.format !== \"json\" ? [`export * from './openapi${ext}';`] : []).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 DRAFT,\n JsonSchemaGenerator,\n componentsDocument,\n index_default as default,\n openApiDocument,\n tableSchemas\n};\n"],"mappings":"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","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../generator-trpc/dist/index.js"],"sourcesContent":["// src/index.ts\nimport {\n formatCode,\n importSpecifier,\n resolveAffix,\n resolveConfiguredImport,\n schemaName\n} from \"@drzl/validation-core\";\nvar TRPC_MAJOR = 11;\nvar q = (v) => JSON.stringify(v);\nvar LIB_IMPORTS = {\n zod: \"import { z } from 'zod';\",\n valibot: \"import * as v from 'valibot';\",\n arktype: \"import { type } from 'arktype';\"\n};\nvar LIB_USAGE = {\n zod: /\\bz\\./,\n valibot: /\\bv\\./,\n arktype: /\\btype\\(/\n};\nvar LIBS = {\n zod: {\n number: \"z.number()\",\n string: \"z.string()\",\n boolean: \"z.boolean()\",\n date: \"z.date()\",\n unknown: \"z.unknown()\",\n tuple: (n) => `z.tuple([${Array.from({ length: n }, () => \"z.number()\").join(\", \")}])`,\n numberObject: (fields) => `z.object({ ${fields.map((f) => `${f}: z.number()`).join(\", \")} })`,\n enum: (vals) => `z.enum([${vals.map(q).join(\", \")}] as const)`,\n nullable: (b) => `${b}.nullable()`,\n optional: (b) => `${b}.optional()`,\n object: (body) => `z.object({\n${body}\n})`,\n objectInline: (body) => `z.object({ ${body} })`,\n partialUpdate: (s) => `${s}.partial()`,\n arrayOf: (s) => `z.array(${s})`,\n nullableOf: (s) => `${s}.nullable()`,\n booleanSchema: \"z.boolean()\"\n },\n valibot: {\n number: \"v.number()\",\n string: \"v.string()\",\n boolean: \"v.boolean()\",\n date: \"v.date()\",\n unknown: \"v.unknown()\",\n tuple: (n) => `v.tuple([${Array.from({ length: n }, () => \"v.number()\").join(\", \")}])`,\n numberObject: (fields) => `v.object({ ${fields.map((f) => `${f}: v.number()`).join(\", \")} })`,\n enum: (vals) => `v.picklist([${vals.map(q).join(\", \")}] as const)`,\n nullable: (b) => `v.nullable(${b})`,\n optional: (b) => `v.optional(${b})`,\n object: (body) => `v.object({\n${body}\n})`,\n objectInline: (body) => `v.object({ ${body} })`,\n arrayOf: (s) => `v.array(${s})`,\n nullableOf: (s) => `v.nullable(${s})`,\n booleanSchema: \"v.boolean()\"\n },\n arktype: {\n number: \"number\",\n string: \"string\",\n boolean: \"boolean\",\n date: \"Date\",\n unknown: \"unknown\",\n // The surrounding encode adds the quotes, so the union is built with the inner quoting\n // ArkType expects. Emitting `'${...}'` here produces `''admin' | 'user''`, which does not parse.\n enum: (vals) => vals.map((x) => `'${x.replace(/'/g, \"\\\\'\")}'`).join(\" | \"),\n nullable: (b) => `(${b} | null)`,\n optional: (b) => `${b}?`,\n object: (body) => `type({\n${body}\n})`,\n objectInline: (body) => `type({ ${body} })`,\n fieldIsString: true,\n arrayOf: (s) => `${s}.array()`,\n nullableOf: (s) => `${s}.or('null')`,\n booleanSchema: `type('boolean')`\n }\n};\nfunction isWide(column) {\n if (column.enumValues && column.enumValues.length) return false;\n if (column.shape?.kind === \"tuple\" || column.shape?.kind === \"numberObject\") return false;\n return ![\"number\", \"string\", \"boolean\", \"Date\"].includes(column.tsType);\n}\nfunction mapExpr(column, lib, mode) {\n const d = LIBS[lib];\n let base = (() => {\n if (column.enumValues && column.enumValues.length) return d.enum(column.enumValues);\n if (column.shape?.kind === \"tuple\" && d.tuple) return d.tuple(column.shape.length);\n if (column.shape?.kind === \"numberObject\" && d.numberObject) {\n return d.numberObject(column.shape.fields);\n }\n switch (column.tsType) {\n case \"number\":\n return d.number;\n case \"string\":\n return d.string;\n case \"boolean\":\n return d.boolean;\n case \"Date\":\n return d.date;\n default:\n return d.unknown;\n }\n })();\n if (column.nullable) base = d.nullable(base);\n if (mode !== \"select\") {\n const optional = mode === \"update\" || column.nullable || column.hasDefault;\n if (optional) base = d.optional(base);\n }\n return base;\n}\nfunction field(column, lib, mode) {\n const d = LIBS[lib];\n const expr = mapExpr(column, lib, mode);\n return `${objectKey(column.name)}: ${d.fieldIsString ? JSON.stringify(expr) : expr}`;\n}\nfunction objectKey(name) {\n return isIdent(name) ? name : JSON.stringify(name);\n}\nfunction renderSchema(table, lib, mode) {\n const d = LIBS[lib];\n const cols = table.columns.filter((c) => mode === \"select\" ? true : !c.isGenerated);\n const body = cols.map((c) => ` ${field(c, lib, mode)},`).join(\"\\n\");\n const schema = d.object(body);\n return mode === \"update\" && d.partialUpdate ? d.partialUpdate(schema) : schema;\n}\nfunction toCase(s, c) {\n if (!c) return s;\n const parts = s.replace(/([a-z0-9])([A-Z])/g, \"$1 $2\").replace(/[_-]/g, \" \").split(/\\s+/);\n if (c === \"camel\") {\n return parts.map(\n (p, i) => i === 0 ? p.toLowerCase() : p.charAt(0).toUpperCase() + p.slice(1).toLowerCase()\n ).join(\"\");\n }\n if (c === \"kebab\") return parts.map((p) => p.toLowerCase()).join(\"-\");\n if (c === \"snake\") return parts.map((p) => p.toLowerCase()).join(\"_\");\n return s;\n}\nvar cap = (s) => s.charAt(0).toUpperCase() + s.slice(1);\nvar singularize = (s) => s.endsWith(\"ies\") ? s.slice(0, -3) + \"y\" : s.endsWith(\"s\") ? s.slice(0, -1) : s;\nvar isIdent = (s) => /^[A-Za-z_$][A-Za-z0-9_$]*$/.test(s);\nvar BASE_MODULE = \"trpc\";\nfunction keyColumns(table) {\n const names = table.primaryKey?.columns ?? [];\n if (!names.length) return null;\n const cols = names.map((n) => table.columns.find((c) => c.name === n));\n if (cols.some((c) => !c)) return null;\n return cols;\n}\nvar TRPCGenerator = class {\n constructor(analysis) {\n this.analysis = analysis;\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.outputDir);\n const ctx = {\n out,\n services: path.resolve(process.cwd(), opts.servicesDir ?? \"src/services\")\n };\n await fs.mkdir(out, { recursive: true });\n const files = [];\n const write = async (filePath, content) => {\n const formatted = await formatCode(\n buildHeader(opts.outputHeader) + content,\n filePath,\n opts.format\n );\n await fs.writeFile(filePath, formatted, \"utf8\");\n files.push(filePath);\n };\n const basePath = path.join(out, `${BASE_MODULE}.ts`);\n await write(basePath, renderBase(opts));\n const routers = [];\n const total = this.analysis.tables.length;\n let index = 0;\n for (const table of this.analysis.tables) {\n const base = `${table.tsName}${opts.naming?.routerSuffix ?? \"\"}`;\n const filePath = path.join(out, `${toCase(base, opts.naming?.procedureCase)}.ts`);\n if (filePath === basePath) {\n throw new Error(\n `@drzl/generator-trpc: the router for table \"${table.name}\" would be written to ${filePath}, which is the shared tRPC base module this generator also writes. Set naming.routerSuffix to move it out of the way.`\n );\n }\n await write(filePath, renderRouter(table, opts, ctx));\n routers.push({ table, filePath, exportName: routerExportName(table, opts.naming) });\n index++;\n opts.onProgress?.({ index, total, table: table.name, filePath });\n }\n await write(path.join(out, \"index.ts\"), renderBarrel(routers, ctx, path, opts));\n return { files };\n }\n};\nvar index_default = TRPCGenerator;\nfunction renderBase(opts) {\n const injection = opts.databaseInjection?.enabled === true;\n const dbType = opts.databaseInjection?.databaseType ?? \"unknown\";\n const typeImport = opts.databaseInjection?.databaseTypeImport ? `import type { ${opts.databaseInjection.databaseTypeImport.name} } from '${opts.databaseInjection.databaseTypeImport.from}';\n` : \"\";\n const trpcImport = injection ? `import { initTRPC, TRPCError } from '@trpc/server';` : `import { initTRPC } from '@trpc/server';`;\n const context = injection ? `/**\n * What your \\`createContext\\` hands every procedure.\n *\n * \\`db\\` is optional here and required by \\`dbProcedure\\` below. That split is what lets an adapter\n * build a context without a handle, for a health check or a public route, while every generated\n * procedure still sees one that is present.\n */\nexport interface Context {\n db?: ${dbType};\n}` : `/**\n * What your \\`createContext\\` hands every procedure. Nothing generated reads it, so it is left\n * open; narrow it to the shape your own context really has.\n */\nexport type Context = Record<string, unknown>;`;\n const middleware = injection ? `\n/**\n * The builder every generated procedure is built from: it refuses to run without a database\n * handle, and narrows \\`ctx.db\\` from optional to present for everything downstream.\n */\nexport const dbProcedure = t.procedure.use(async ({ ctx, next }) => {\n if (!ctx.db) {\n throw new TRPCError({\n code: 'INTERNAL_SERVER_ERROR',\n message: 'No database handle on the tRPC context. Provide one from createContext.',\n });\n }\n return next({ ctx: { db: ctx.db } });\n});\n` : \"\";\n return `// Generated by @drzl/generator-trpc\n// The shared tRPC base. Every generated router imports from here.\n${trpcImport}\n${typeImport}\n${context}\n\nconst t = initTRPC.context<Context>().create();\n\nexport const router = t.router;\nexport const mergeRouters = t.mergeRouters;\nexport const middleware = t.middleware;\n/** Needed to call this router in-process, from a test or from SSR. */\nexport const createCallerFactory = t.createCallerFactory;\nexport const publicProcedure = t.procedure;\n${middleware}`;\n}\nfunction renderRouter(table, opts, ctx) {\n const lib = opts.validation?.library ?? \"zod\";\n const d = LIBS[lib];\n const service = opts.template === \"service\";\n const injection = opts.databaseInjection?.enabled === true;\n const builder = injection ? \"dbProcedure\" : \"publicProcedure\";\n const insertName = `Insert${table.tsName}Schema`;\n const updateName = `Update${table.tsName}Schema`;\n const selectName = `Select${table.tsName}Schema`;\n const writable = !table.readOnly;\n const key = keyColumns(table);\n const Service = `${cap(singularize(table.tsName))}Service`;\n const serviceKeyable = !!key && key.length === 1 && key[0].tsType === \"number\";\n const keyArg = key && key.length === 1 ? `input.${key[0].name}` : \"\";\n const dbArg = injection ? \"ctx.db, \" : \"\";\n const wiredParams = injection ? \"{ ctx, input }\" : \"{ input }\";\n const procedures = [];\n const notImplemented = (what) => `throw new Error('Not implemented: ${what} ${table.tsName}.');`;\n procedures.push({\n name: \"list\",\n kind: \"query\",\n output: d.arrayOf(selectName),\n params: service && injection ? \"{ ctx }\" : \"\",\n body: service ? [`return await ${Service}.getAll(${injection ? \"ctx.db\" : \"\"});`] : [\"return [];\"]\n });\n const keyInput = key ? d.objectInline(key.map((c) => field(c, lib, \"select\")).join(\", \")) : void 0;\n if (key && keyInput) {\n const wired = service && serviceKeyable;\n procedures.push({\n name: \"byId\",\n kind: \"query\",\n input: keyInput,\n output: d.nullableOf(selectName),\n params: wired ? wiredParams : \"{ input: _input }\",\n body: wired ? [`return await ${Service}.getById(${dbArg}${keyArg});`] : service ? [serviceKeyNote(table), notImplemented(\"byId\")] : [\"return null;\"]\n });\n if (writable) {\n const updateInput = d.objectInline(\n [...key.map((c) => field(c, lib, \"select\")), `data: ${updateName}`].join(\", \")\n );\n procedures.push({\n name: \"update\",\n kind: \"mutation\",\n input: updateInput,\n output: selectName,\n params: wired ? wiredParams : \"{ input: _input }\",\n body: wired ? [`return await ${Service}.update(${dbArg}${keyArg}, input.data);`] : service ? [serviceKeyNote(table), notImplemented(\"update\")] : [notImplemented(\"update\")]\n });\n procedures.push({\n name: \"delete\",\n kind: \"mutation\",\n input: keyInput,\n output: d.booleanSchema,\n params: wired ? wiredParams : \"{ input: _input }\",\n body: wired ? [`return await ${Service}.delete(${dbArg}${keyArg});`] : service ? [serviceKeyNote(table), notImplemented(\"delete\")] : [\"return true;\"]\n });\n }\n }\n if (writable) {\n procedures.push({\n name: \"create\",\n kind: \"mutation\",\n input: insertName,\n output: selectName,\n params: service ? wiredParams : \"{ input: _input }\",\n body: service ? [`return await ${Service}.create(${dbArg}input);`] : [notImplemented(\"create\")]\n });\n }\n if (opts.includeRelations) {\n const taken = new Set(procedures.map((p) => p.name));\n procedures.push(...relationProcedures(table, lib, selectName, taken, service));\n }\n const order = [\"list\", \"byId\", \"create\", \"update\", \"delete\"];\n const rank = (n) => order.indexOf(n) === -1 ? order.length : order.indexOf(n);\n procedures.sort((a, b) => rank(a.name) - rank(b.name));\n const routerName = routerExportName(table, opts.naming);\n const entries = procedures.map((p) => {\n const rawKey = toCase(p.name, opts.naming?.procedureCase);\n const propKey = isIdent(rawKey) ? rawKey : JSON.stringify(rawKey);\n return [\n ` ${propKey}: ${builder}`,\n ...p.input ? [` .input(${p.input})`] : [],\n ` .output(${p.output})`,\n ` .${p.kind}(async (${p.params}) => {`,\n ...p.body.map((line) => ` ${line}`),\n ` }),`\n ].join(\"\\n\");\n }).join(\"\\n\");\n const body = `export const ${routerName} = router({\n${entries}\n});\n`;\n const useShared = !!opts.validation?.useShared && !!opts.validation?.importPath;\n const declared = [];\n if (!useShared) {\n if (writable) {\n declared.push(`export const ${insertName} = ${renderSchema(table, lib, \"insert\")};`);\n declared.push(`export const ${updateName} = ${renderSchema(table, lib, \"update\")};`);\n }\n declared.push(`export const ${selectName} = ${renderSchema(table, lib, \"select\")};`);\n }\n const decided = [...declared, body].join(\"\\n\\n\");\n const imports = [];\n if (useShared) {\n const sharedAffix = resolveAffix({\n affix: opts.validation?.affix,\n schemaSuffix: opts.validation?.schemaSuffix\n });\n const wanted = [\n [\"insert\", insertName],\n [\"update\", updateName],\n [\"select\", selectName]\n ].filter(([, local]) => decided.includes(local));\n if (wanted.length) {\n const spec = resolveConfiguredImport(\n opts.validation.importPath,\n ctx.out,\n process.cwd(),\n opts.importExtension\n );\n const names = wanted.map(([mode, local]) => {\n const exported = schemaName(mode, table.tsName, sharedAffix);\n return exported === local ? local : `${exported} as ${local}`;\n }).join(\", \");\n imports.push(`import { ${names} } from '${spec}';`);\n }\n }\n imports.push(\n `import { ${[builder, \"router\"].sort().join(\", \")} } from '${importSpecifier(\n `./${BASE_MODULE}.ts`,\n opts.importExtension\n )}';`\n );\n if (service) {\n imports.push(`import { ${Service} } from '${serviceImportSpecifier(table, ctx, opts)}';`);\n }\n if (LIB_USAGE[lib].test(decided)) imports.unshift(LIB_IMPORTS[lib]);\n const wide = table.columns.filter(isWide).map((c) => c.name);\n const wideNote = wide.length ? `// No validated type for ${wide.length === 1 ? \"this column\" : \"these columns\"}: ${wide.join(\", \")}.\n// DRZL could not derive one from the schema, so the router accepts any value there.\n` : \"\";\n return `// Generated by @drzl/generator-trpc\n// Router for table: ${table.name}\n${wideNote}${imports.join(\"\\n\")}\n\n${decided}`;\n}\nfunction relationProcedures(table, lib, selectSchemaName, taken, service) {\n const d = LIBS[lib];\n const out = [];\n for (const fk of table.foreignKeys ?? []) {\n if (fk.columns.length !== 1) continue;\n const colName = fk.columns[0];\n const column = table.columns.find((c) => c.name === colName);\n if (!column) continue;\n const name = `listBy${cap(colName)}`;\n if (taken.has(name)) continue;\n taken.add(name);\n out.push({\n name,\n kind: \"query\",\n input: d.objectInline(field(column, lib, \"select\")),\n output: d.arrayOf(selectSchemaName),\n params: \"{ input: _input }\",\n body: [\n `// Rows of ${table.name} whose ${JSON.stringify(colName)} matches _input.${colName}.`,\n // In `service` mode every other procedure really does reach the database, so a lookup\n // quietly answering with an empty array would read as \"no matching rows\". There is no\n // generated service method for it, so it says so instead. In `standard` mode everything\n // is a stub and `[]` is consistent with `list`.\n service ? `throw new Error('Not implemented: ${name} ${table.tsName}.');` : \"return [];\"\n ]\n });\n }\n return out;\n}\nfunction renderBarrel(routers, ctx, path, opts) {\n const baseSpec = importSpecifier(`./${BASE_MODULE}.ts`, opts.importExtension);\n const reExports = `export { createCallerFactory, publicProcedure, router } from '${baseSpec}';\n` + (opts.databaseInjection?.enabled === true ? `export { dbProcedure } from '${baseSpec}';\n` : \"\") + `export type { Context } from '${baseSpec}';\n`;\n if (!routers.length) {\n return `// Generated by @drzl/generator-trpc\n// No tables detected in analysis. Add tables to your schema and regenerate.\nimport { router } from '${baseSpec}';\n\nexport const appRouter = router({});\n\n/** The type a tRPC client is parameterised by: \\`createTRPCClient<AppRouter>()\\`. */\nexport type AppRouter = typeof appRouter;\n\n${reExports}`;\n }\n const entries = routers.map(({ filePath, exportName, table }) => ({\n rel: importSpecifier(\n \"./\" + path.relative(ctx.out, filePath).replace(/\\\\/g, \"/\"),\n opts.importExtension\n ),\n exportName,\n // The namespace a client reaches this table's procedures through: `trpc.userProfiles.list`.\n // `tsName` verbatim, because it is already a valid identifier and it is the name the user\n // wrote in their schema. The oRPC barrel lowercases this key, turning `userProfiles` into\n // `userprofiles`: harmless in an object literal nobody reads, and not harmless when the key\n // is the public API of a typed client.\n key: table.tsName\n }));\n const importLines = entries.map(({ rel, exportName }) => `import { ${exportName} } from '${rel}';`).join(\"\\n\");\n const bodyLines = entries.map(({ key, exportName }) => ` ${isIdent(key) ? key : JSON.stringify(key)}: ${exportName},`).join(\"\\n\");\n return `// Generated by @drzl/generator-trpc\nimport { router } from '${baseSpec}';\n${importLines}\n\nexport const appRouter = router({\n${bodyLines}\n});\n\n/** The type a tRPC client is parameterised by: \\`createTRPCClient<AppRouter>()\\`. */\nexport type AppRouter = typeof appRouter;\n\n${reExports}`;\n}\nfunction serviceKeyNote(table) {\n const cols = table.primaryKey?.columns ?? [];\n const shape = cols.length > 1 ? `has a composite primary key (${cols.join(\", \")})` : `has a non-numeric primary key (${cols[0]})`;\n return `// ${table.name} ${shape}, and @drzl/generator-service types its key parameter as one number.\n// Wire this to your own lookup.`;\n}\nfunction routerExportName(table, naming) {\n const base = `${table.tsName}${naming?.routerSuffix ?? \"Router\"}`;\n const c = naming?.procedureCase;\n return toCase(base, c === \"kebab\" ? \"camel\" : c);\n}\nfunction serviceImportSpecifier(table, ctx, opts) {\n const rel = relativePosix(ctx.out, ctx.services);\n const dir = !rel ? \".\" : rel.startsWith(\".\") ? rel : `./${rel}`;\n return importSpecifier(`${dir}/${singularize(table.tsName)}Service.ts`, opts.importExtension);\n}\nfunction relativePosix(from, to) {\n const norm = (p) => p.replace(/\\\\/g, \"/\").replace(/\\/+$/, \"\");\n const a = norm(from).split(\"/\");\n const b = norm(to).split(\"/\");\n let i = 0;\n while (i < a.length && i < b.length && a[i] === b[i]) i++;\n return [...Array.from({ length: a.length - i }, () => \"..\"), ...b.slice(i)].join(\"/\");\n}\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 BASE_MODULE,\n TRPCGenerator,\n TRPC_MAJOR,\n index_default as default\n};\n"],"mappings":";AACA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,IAAI,aAAa;AACjB,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,CAAC;AAC/B,IAAI,cAAc;AAAA,EAChB,KAAK;AAAA,EACL,SAAS;AAAA,EACT,SAAS;AACX;AACA,IAAI,YAAY;AAAA,EACd,KAAK;AAAA,EACL,SAAS;AAAA,EACT,SAAS;AACX;AACA,IAAI,OAAO;AAAA,EACT,KAAK;AAAA,IACH,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,MAAM;AAAA,IACN,SAAS;AAAA,IACT,OAAO,CAAC,MAAM,YAAY,MAAM,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,YAAY,EAAE,KAAK,IAAI,CAAC;AAAA,IAClF,cAAc,CAAC,WAAW,cAAc,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,cAAc,EAAE,KAAK,IAAI,CAAC;AAAA,IACxF,MAAM,CAAC,SAAS,WAAW,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC;AAAA,IACjD,UAAU,CAAC,MAAM,GAAG,CAAC;AAAA,IACrB,UAAU,CAAC,MAAM,GAAG,CAAC;AAAA,IACrB,QAAQ,CAAC,SAAS;AAAA,EACpB,IAAI;AAAA;AAAA,IAEF,cAAc,CAAC,SAAS,cAAc,IAAI;AAAA,IAC1C,eAAe,CAAC,MAAM,GAAG,CAAC;AAAA,IAC1B,SAAS,CAAC,MAAM,WAAW,CAAC;AAAA,IAC5B,YAAY,CAAC,MAAM,GAAG,CAAC;AAAA,IACvB,eAAe;AAAA,EACjB;AAAA,EACA,SAAS;AAAA,IACP,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,MAAM;AAAA,IACN,SAAS;AAAA,IACT,OAAO,CAAC,MAAM,YAAY,MAAM,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,YAAY,EAAE,KAAK,IAAI,CAAC;AAAA,IAClF,cAAc,CAAC,WAAW,cAAc,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,cAAc,EAAE,KAAK,IAAI,CAAC;AAAA,IACxF,MAAM,CAAC,SAAS,eAAe,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC;AAAA,IACrD,UAAU,CAAC,MAAM,cAAc,CAAC;AAAA,IAChC,UAAU,CAAC,MAAM,cAAc,CAAC;AAAA,IAChC,QAAQ,CAAC,SAAS;AAAA,EACpB,IAAI;AAAA;AAAA,IAEF,cAAc,CAAC,SAAS,cAAc,IAAI;AAAA,IAC1C,SAAS,CAAC,MAAM,WAAW,CAAC;AAAA,IAC5B,YAAY,CAAC,MAAM,cAAc,CAAC;AAAA,IAClC,eAAe;AAAA,EACjB;AAAA,EACA,SAAS;AAAA,IACP,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,MAAM;AAAA,IACN,SAAS;AAAA;AAAA;AAAA,IAGT,MAAM,CAAC,SAAS,KAAK,IAAI,CAAC,MAAM,IAAI,EAAE,QAAQ,MAAM,KAAK,CAAC,GAAG,EAAE,KAAK,KAAK;AAAA,IACzE,UAAU,CAAC,MAAM,IAAI,CAAC;AAAA,IACtB,UAAU,CAAC,MAAM,GAAG,CAAC;AAAA,IACrB,QAAQ,CAAC,SAAS;AAAA,EACpB,IAAI;AAAA;AAAA,IAEF,cAAc,CAAC,SAAS,UAAU,IAAI;AAAA,IACtC,eAAe;AAAA,IACf,SAAS,CAAC,MAAM,GAAG,CAAC;AAAA,IACpB,YAAY,CAAC,MAAM,GAAG,CAAC;AAAA,IACvB,eAAe;AAAA,EACjB;AACF;AACA,SAAS,OAAO,QAAQ;AACtB,MAAI,OAAO,cAAc,OAAO,WAAW,OAAQ,QAAO;AAC1D,MAAI,OAAO,OAAO,SAAS,WAAW,OAAO,OAAO,SAAS,eAAgB,QAAO;AACpF,SAAO,CAAC,CAAC,UAAU,UAAU,WAAW,MAAM,EAAE,SAAS,OAAO,MAAM;AACxE;AACA,SAAS,QAAQ,QAAQ,KAAK,MAAM;AAClC,QAAM,IAAI,KAAK,GAAG;AAClB,MAAI,QAAQ,MAAM;AAChB,QAAI,OAAO,cAAc,OAAO,WAAW,OAAQ,QAAO,EAAE,KAAK,OAAO,UAAU;AAClF,QAAI,OAAO,OAAO,SAAS,WAAW,EAAE,MAAO,QAAO,EAAE,MAAM,OAAO,MAAM,MAAM;AACjF,QAAI,OAAO,OAAO,SAAS,kBAAkB,EAAE,cAAc;AAC3D,aAAO,EAAE,aAAa,OAAO,MAAM,MAAM;AAAA,IAC3C;AACA,YAAQ,OAAO,QAAQ;AAAA,MACrB,KAAK;AACH,eAAO,EAAE;AAAA,MACX,KAAK;AACH,eAAO,EAAE;AAAA,MACX,KAAK;AACH,eAAO,EAAE;AAAA,MACX,KAAK;AACH,eAAO,EAAE;AAAA,MACX;AACE,eAAO,EAAE;AAAA,IACb;AAAA,EACF,GAAG;AACH,MAAI,OAAO,SAAU,QAAO,EAAE,SAAS,IAAI;AAC3C,MAAI,SAAS,UAAU;AACrB,UAAM,WAAW,SAAS,YAAY,OAAO,YAAY,OAAO;AAChE,QAAI,SAAU,QAAO,EAAE,SAAS,IAAI;AAAA,EACtC;AACA,SAAO;AACT;AACA,SAAS,MAAM,QAAQ,KAAK,MAAM;AAChC,QAAM,IAAI,KAAK,GAAG;AAClB,QAAM,OAAO,QAAQ,QAAQ,KAAK,IAAI;AACtC,SAAO,GAAG,UAAU,OAAO,IAAI,CAAC,KAAK,EAAE,gBAAgB,KAAK,UAAU,IAAI,IAAI,IAAI;AACpF;AACA,SAAS,UAAU,MAAM;AACvB,SAAO,QAAQ,IAAI,IAAI,OAAO,KAAK,UAAU,IAAI;AACnD;AACA,SAAS,aAAa,OAAO,KAAK,MAAM;AACtC,QAAM,IAAI,KAAK,GAAG;AAClB,QAAM,OAAO,MAAM,QAAQ,OAAO,CAAC,MAAM,SAAS,WAAW,OAAO,CAAC,EAAE,WAAW;AAClF,QAAM,OAAO,KAAK,IAAI,CAAC,MAAM,KAAK,MAAM,GAAG,KAAK,IAAI,CAAC,GAAG,EAAE,KAAK,IAAI;AACnE,QAAM,SAAS,EAAE,OAAO,IAAI;AAC5B,SAAO,SAAS,YAAY,EAAE,gBAAgB,EAAE,cAAc,MAAM,IAAI;AAC1E;AACA,SAAS,OAAO,GAAG,GAAG;AACpB,MAAI,CAAC,EAAG,QAAO;AACf,QAAM,QAAQ,EAAE,QAAQ,sBAAsB,OAAO,EAAE,QAAQ,SAAS,GAAG,EAAE,MAAM,KAAK;AACxF,MAAI,MAAM,SAAS;AACjB,WAAO,MAAM;AAAA,MACX,CAAC,GAAG,MAAM,MAAM,IAAI,EAAE,YAAY,IAAI,EAAE,OAAO,CAAC,EAAE,YAAY,IAAI,EAAE,MAAM,CAAC,EAAE,YAAY;AAAA,IAC3F,EAAE,KAAK,EAAE;AAAA,EACX;AACA,MAAI,MAAM,QAAS,QAAO,MAAM,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,KAAK,GAAG;AACpE,MAAI,MAAM,QAAS,QAAO,MAAM,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,KAAK,GAAG;AACpE,SAAO;AACT;AACA,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,IAAI,EAAE,MAAM,CAAC;AACtD,IAAI,cAAc,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI,EAAE,MAAM,GAAG,EAAE,IAAI,MAAM,EAAE,SAAS,GAAG,IAAI,EAAE,MAAM,GAAG,EAAE,IAAI;AACvG,IAAI,UAAU,CAAC,MAAM,6BAA6B,KAAK,CAAC;AACxD,IAAI,cAAc;AAClB,SAAS,WAAW,OAAO;AACzB,QAAM,QAAQ,MAAM,YAAY,WAAW,CAAC;AAC5C,MAAI,CAAC,MAAM,OAAQ,QAAO;AAC1B,QAAM,OAAO,MAAM,IAAI,CAAC,MAAM,MAAM,QAAQ,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AACrE,MAAI,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC,EAAG,QAAO;AACjC,SAAO;AACT;AACA,IAAI,gBAAgB,MAAM;AAAA,EACxB,YAAY,UAAU;AACpB,SAAK,WAAW;AAAA,EAClB;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,SAAS;AACtD,UAAM,MAAM;AAAA,MACV;AAAA,MACA,UAAU,KAAK,QAAQ,QAAQ,IAAI,GAAG,KAAK,eAAe,cAAc;AAAA,IAC1E;AACA,UAAM,GAAG,MAAM,KAAK,EAAE,WAAW,KAAK,CAAC;AACvC,UAAM,QAAQ,CAAC;AACf,UAAM,QAAQ,OAAO,UAAU,YAAY;AACzC,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,UAAM,WAAW,KAAK,KAAK,KAAK,GAAG,WAAW,KAAK;AACnD,UAAM,MAAM,UAAU,WAAW,IAAI,CAAC;AACtC,UAAM,UAAU,CAAC;AACjB,UAAM,QAAQ,KAAK,SAAS,OAAO;AACnC,QAAI,QAAQ;AACZ,eAAW,SAAS,KAAK,SAAS,QAAQ;AACxC,YAAM,OAAO,GAAG,MAAM,MAAM,GAAG,KAAK,QAAQ,gBAAgB,EAAE;AAC9D,YAAM,WAAW,KAAK,KAAK,KAAK,GAAG,OAAO,MAAM,KAAK,QAAQ,aAAa,CAAC,KAAK;AAChF,UAAI,aAAa,UAAU;AACzB,cAAM,IAAI;AAAA,UACR,+CAA+C,MAAM,IAAI,yBAAyB,QAAQ;AAAA,QAC5F;AAAA,MACF;AACA,YAAM,MAAM,UAAU,aAAa,OAAO,MAAM,GAAG,CAAC;AACpD,cAAQ,KAAK,EAAE,OAAO,UAAU,YAAY,iBAAiB,OAAO,KAAK,MAAM,EAAE,CAAC;AAClF;AACA,WAAK,aAAa,EAAE,OAAO,OAAO,OAAO,MAAM,MAAM,SAAS,CAAC;AAAA,IACjE;AACA,UAAM,MAAM,KAAK,KAAK,KAAK,UAAU,GAAG,aAAa,SAAS,KAAK,MAAM,IAAI,CAAC;AAC9E,WAAO,EAAE,MAAM;AAAA,EACjB;AACF;AACA,IAAI,gBAAgB;AACpB,SAAS,WAAW,MAAM;AACxB,QAAM,YAAY,KAAK,mBAAmB,YAAY;AACtD,QAAM,SAAS,KAAK,mBAAmB,gBAAgB;AACvD,QAAM,aAAa,KAAK,mBAAmB,qBAAqB,iBAAiB,KAAK,kBAAkB,mBAAmB,IAAI,YAAY,KAAK,kBAAkB,mBAAmB,IAAI;AAAA,IACvL;AACF,QAAM,aAAa,YAAY,wDAAwD;AACvF,QAAM,UAAU,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,SAQrB,MAAM;AAAA,KACV;AAAA;AAAA;AAAA;AAAA;AAKH,QAAM,aAAa,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAc7B;AACF,SAAO;AAAA;AAAA,EAEP,UAAU;AAAA,EACV,UAAU;AAAA,EACV,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUP,UAAU;AACZ;AACA,SAAS,aAAa,OAAO,MAAM,KAAK;AACtC,QAAM,MAAM,KAAK,YAAY,WAAW;AACxC,QAAM,IAAI,KAAK,GAAG;AAClB,QAAM,UAAU,KAAK,aAAa;AAClC,QAAM,YAAY,KAAK,mBAAmB,YAAY;AACtD,QAAM,UAAU,YAAY,gBAAgB;AAC5C,QAAM,aAAa,SAAS,MAAM,MAAM;AACxC,QAAM,aAAa,SAAS,MAAM,MAAM;AACxC,QAAM,aAAa,SAAS,MAAM,MAAM;AACxC,QAAM,WAAW,CAAC,MAAM;AACxB,QAAM,MAAM,WAAW,KAAK;AAC5B,QAAM,UAAU,GAAG,IAAI,YAAY,MAAM,MAAM,CAAC,CAAC;AACjD,QAAM,iBAAiB,CAAC,CAAC,OAAO,IAAI,WAAW,KAAK,IAAI,CAAC,EAAE,WAAW;AACtE,QAAM,SAAS,OAAO,IAAI,WAAW,IAAI,SAAS,IAAI,CAAC,EAAE,IAAI,KAAK;AAClE,QAAM,QAAQ,YAAY,aAAa;AACvC,QAAM,cAAc,YAAY,mBAAmB;AACnD,QAAM,aAAa,CAAC;AACpB,QAAM,iBAAiB,CAAC,SAAS,qCAAqC,IAAI,IAAI,MAAM,MAAM;AAC1F,aAAW,KAAK;AAAA,IACd,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ,EAAE,QAAQ,UAAU;AAAA,IAC5B,QAAQ,WAAW,YAAY,YAAY;AAAA,IAC3C,MAAM,UAAU,CAAC,gBAAgB,OAAO,WAAW,YAAY,WAAW,EAAE,IAAI,IAAI,CAAC,YAAY;AAAA,EACnG,CAAC;AACD,QAAM,WAAW,MAAM,EAAE,aAAa,IAAI,IAAI,CAAC,MAAM,MAAM,GAAG,KAAK,QAAQ,CAAC,EAAE,KAAK,IAAI,CAAC,IAAI;AAC5F,MAAI,OAAO,UAAU;AACnB,UAAM,QAAQ,WAAW;AACzB,eAAW,KAAK;AAAA,MACd,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,MACP,QAAQ,EAAE,WAAW,UAAU;AAAA,MAC/B,QAAQ,QAAQ,cAAc;AAAA,MAC9B,MAAM,QAAQ,CAAC,gBAAgB,OAAO,YAAY,KAAK,GAAG,MAAM,IAAI,IAAI,UAAU,CAAC,eAAe,KAAK,GAAG,eAAe,MAAM,CAAC,IAAI,CAAC,cAAc;AAAA,IACrJ,CAAC;AACD,QAAI,UAAU;AACZ,YAAM,cAAc,EAAE;AAAA,QACpB,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,MAAM,GAAG,KAAK,QAAQ,CAAC,GAAG,SAAS,UAAU,EAAE,EAAE,KAAK,IAAI;AAAA,MAC/E;AACA,iBAAW,KAAK;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,QAAQ,QAAQ,cAAc;AAAA,QAC9B,MAAM,QAAQ,CAAC,gBAAgB,OAAO,WAAW,KAAK,GAAG,MAAM,gBAAgB,IAAI,UAAU,CAAC,eAAe,KAAK,GAAG,eAAe,QAAQ,CAAC,IAAI,CAAC,eAAe,QAAQ,CAAC;AAAA,MAC5K,CAAC;AACD,iBAAW,KAAK;AAAA,QACd,MAAM;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,QACP,QAAQ,EAAE;AAAA,QACV,QAAQ,QAAQ,cAAc;AAAA,QAC9B,MAAM,QAAQ,CAAC,gBAAgB,OAAO,WAAW,KAAK,GAAG,MAAM,IAAI,IAAI,UAAU,CAAC,eAAe,KAAK,GAAG,eAAe,QAAQ,CAAC,IAAI,CAAC,cAAc;AAAA,MACtJ,CAAC;AAAA,IACH;AAAA,EACF;AACA,MAAI,UAAU;AACZ,eAAW,KAAK;AAAA,MACd,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,QAAQ,UAAU,cAAc;AAAA,MAChC,MAAM,UAAU,CAAC,gBAAgB,OAAO,WAAW,KAAK,SAAS,IAAI,CAAC,eAAe,QAAQ,CAAC;AAAA,IAChG,CAAC;AAAA,EACH;AACA,MAAI,KAAK,kBAAkB;AACzB,UAAM,QAAQ,IAAI,IAAI,WAAW,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;AACnD,eAAW,KAAK,GAAG,mBAAmB,OAAO,KAAK,YAAY,OAAO,OAAO,CAAC;AAAA,EAC/E;AACA,QAAM,QAAQ,CAAC,QAAQ,QAAQ,UAAU,UAAU,QAAQ;AAC3D,QAAM,OAAO,CAAC,MAAM,MAAM,QAAQ,CAAC,MAAM,KAAK,MAAM,SAAS,MAAM,QAAQ,CAAC;AAC5E,aAAW,KAAK,CAAC,GAAG,MAAM,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,IAAI,CAAC;AACrD,QAAM,aAAa,iBAAiB,OAAO,KAAK,MAAM;AACtD,QAAM,UAAU,WAAW,IAAI,CAAC,MAAM;AACpC,UAAM,SAAS,OAAO,EAAE,MAAM,KAAK,QAAQ,aAAa;AACxD,UAAM,UAAU,QAAQ,MAAM,IAAI,SAAS,KAAK,UAAU,MAAM;AAChE,WAAO;AAAA,MACL,KAAK,OAAO,KAAK,OAAO;AAAA,MACxB,GAAG,EAAE,QAAQ,CAAC,cAAc,EAAE,KAAK,GAAG,IAAI,CAAC;AAAA,MAC3C,eAAe,EAAE,MAAM;AAAA,MACvB,QAAQ,EAAE,IAAI,WAAW,EAAE,MAAM;AAAA,MACjC,GAAG,EAAE,KAAK,IAAI,CAAC,SAAS,SAAS,IAAI,EAAE;AAAA,MACvC;AAAA,IACF,EAAE,KAAK,IAAI;AAAA,EACb,CAAC,EAAE,KAAK,IAAI;AACZ,QAAM,OAAO,gBAAgB,UAAU;AAAA,EACvC,OAAO;AAAA;AAAA;AAGP,QAAM,YAAY,CAAC,CAAC,KAAK,YAAY,aAAa,CAAC,CAAC,KAAK,YAAY;AACrE,QAAM,WAAW,CAAC;AAClB,MAAI,CAAC,WAAW;AACd,QAAI,UAAU;AACZ,eAAS,KAAK,gBAAgB,UAAU,MAAM,aAAa,OAAO,KAAK,QAAQ,CAAC,GAAG;AACnF,eAAS,KAAK,gBAAgB,UAAU,MAAM,aAAa,OAAO,KAAK,QAAQ,CAAC,GAAG;AAAA,IACrF;AACA,aAAS,KAAK,gBAAgB,UAAU,MAAM,aAAa,OAAO,KAAK,QAAQ,CAAC,GAAG;AAAA,EACrF;AACA,QAAM,UAAU,CAAC,GAAG,UAAU,IAAI,EAAE,KAAK,MAAM;AAC/C,QAAM,UAAU,CAAC;AACjB,MAAI,WAAW;AACb,UAAM,cAAc,aAAa;AAAA,MAC/B,OAAO,KAAK,YAAY;AAAA,MACxB,cAAc,KAAK,YAAY;AAAA,IACjC,CAAC;AACD,UAAM,SAAS;AAAA,MACb,CAAC,UAAU,UAAU;AAAA,MACrB,CAAC,UAAU,UAAU;AAAA,MACrB,CAAC,UAAU,UAAU;AAAA,IACvB,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,MAAM,QAAQ,SAAS,KAAK,CAAC;AAC/C,QAAI,OAAO,QAAQ;AACjB,YAAM,OAAO;AAAA,QACX,KAAK,WAAW;AAAA,QAChB,IAAI;AAAA,QACJ,QAAQ,IAAI;AAAA,QACZ,KAAK;AAAA,MACP;AACA,YAAM,QAAQ,OAAO,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM;AAC1C,cAAM,WAAW,WAAW,MAAM,MAAM,QAAQ,WAAW;AAC3D,eAAO,aAAa,QAAQ,QAAQ,GAAG,QAAQ,OAAO,KAAK;AAAA,MAC7D,CAAC,EAAE,KAAK,IAAI;AACZ,cAAQ,KAAK,YAAY,KAAK,YAAY,IAAI,IAAI;AAAA,IACpD;AAAA,EACF;AACA,UAAQ;AAAA,IACN,YAAY,CAAC,SAAS,QAAQ,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC,YAAY;AAAA,MAC3D,KAAK,WAAW;AAAA,MAChB,KAAK;AAAA,IACP,CAAC;AAAA,EACH;AACA,MAAI,SAAS;AACX,YAAQ,KAAK,YAAY,OAAO,YAAY,uBAAuB,OAAO,KAAK,IAAI,CAAC,IAAI;AAAA,EAC1F;AACA,MAAI,UAAU,GAAG,EAAE,KAAK,OAAO,EAAG,SAAQ,QAAQ,YAAY,GAAG,CAAC;AAClE,QAAM,OAAO,MAAM,QAAQ,OAAO,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI;AAC3D,QAAM,WAAW,KAAK,SAAS,4BAA4B,KAAK,WAAW,IAAI,gBAAgB,eAAe,KAAK,KAAK,KAAK,IAAI,CAAC;AAAA;AAAA,IAEhI;AACF,SAAO;AAAA,uBACc,MAAM,IAAI;AAAA,EAC/B,QAAQ,GAAG,QAAQ,KAAK,IAAI,CAAC;AAAA;AAAA,EAE7B,OAAO;AACT;AACA,SAAS,mBAAmB,OAAO,KAAK,kBAAkB,OAAO,SAAS;AACxE,QAAM,IAAI,KAAK,GAAG;AAClB,QAAM,MAAM,CAAC;AACb,aAAW,MAAM,MAAM,eAAe,CAAC,GAAG;AACxC,QAAI,GAAG,QAAQ,WAAW,EAAG;AAC7B,UAAM,UAAU,GAAG,QAAQ,CAAC;AAC5B,UAAM,SAAS,MAAM,QAAQ,KAAK,CAAC,MAAM,EAAE,SAAS,OAAO;AAC3D,QAAI,CAAC,OAAQ;AACb,UAAM,OAAO,SAAS,IAAI,OAAO,CAAC;AAClC,QAAI,MAAM,IAAI,IAAI,EAAG;AACrB,UAAM,IAAI,IAAI;AACd,QAAI,KAAK;AAAA,MACP;AAAA,MACA,MAAM;AAAA,MACN,OAAO,EAAE,aAAa,MAAM,QAAQ,KAAK,QAAQ,CAAC;AAAA,MAClD,QAAQ,EAAE,QAAQ,gBAAgB;AAAA,MAClC,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,cAAc,MAAM,IAAI,UAAU,KAAK,UAAU,OAAO,CAAC,mBAAmB,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,QAKnF,UAAU,qCAAqC,IAAI,IAAI,MAAM,MAAM,SAAS;AAAA,MAC9E;AAAA,IACF,CAAC;AAAA,EACH;AACA,SAAO;AACT;AACA,SAAS,aAAa,SAAS,KAAK,MAAM,MAAM;AAC9C,QAAM,WAAW,gBAAgB,KAAK,WAAW,OAAO,KAAK,eAAe;AAC5E,QAAM,YAAY,iEAAiE,QAAQ;AAAA,KACxF,KAAK,mBAAmB,YAAY,OAAO,gCAAgC,QAAQ;AAAA,IACpF,MAAM,iCAAiC,QAAQ;AAAA;AAEjD,MAAI,CAAC,QAAQ,QAAQ;AACnB,WAAO;AAAA;AAAA,0BAEe,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOhC,SAAS;AAAA,EACT;AACA,QAAM,UAAU,QAAQ,IAAI,CAAC,EAAE,UAAU,YAAY,MAAM,OAAO;AAAA,IAChE,KAAK;AAAA,MACH,OAAO,KAAK,SAAS,IAAI,KAAK,QAAQ,EAAE,QAAQ,OAAO,GAAG;AAAA,MAC1D,KAAK;AAAA,IACP;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA,KAAK,MAAM;AAAA,EACb,EAAE;AACF,QAAM,cAAc,QAAQ,IAAI,CAAC,EAAE,KAAK,WAAW,MAAM,YAAY,UAAU,YAAY,GAAG,IAAI,EAAE,KAAK,IAAI;AAC7G,QAAM,YAAY,QAAQ,IAAI,CAAC,EAAE,KAAK,WAAW,MAAM,KAAK,QAAQ,GAAG,IAAI,MAAM,KAAK,UAAU,GAAG,CAAC,KAAK,UAAU,GAAG,EAAE,KAAK,IAAI;AACjI,SAAO;AAAA,0BACiB,QAAQ;AAAA,EAChC,WAAW;AAAA;AAAA;AAAA,EAGX,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMT,SAAS;AACX;AACA,SAAS,eAAe,OAAO;AAC7B,QAAM,OAAO,MAAM,YAAY,WAAW,CAAC;AAC3C,QAAM,QAAQ,KAAK,SAAS,IAAI,gCAAgC,KAAK,KAAK,IAAI,CAAC,MAAM,kCAAkC,KAAK,CAAC,CAAC;AAC9H,SAAO,MAAM,MAAM,IAAI,IAAI,KAAK;AAAA;AAElC;AACA,SAAS,iBAAiB,OAAO,QAAQ;AACvC,QAAM,OAAO,GAAG,MAAM,MAAM,GAAG,QAAQ,gBAAgB,QAAQ;AAC/D,QAAM,IAAI,QAAQ;AAClB,SAAO,OAAO,MAAM,MAAM,UAAU,UAAU,CAAC;AACjD;AACA,SAAS,uBAAuB,OAAO,KAAK,MAAM;AAChD,QAAM,MAAM,cAAc,IAAI,KAAK,IAAI,QAAQ;AAC/C,QAAM,MAAM,CAAC,MAAM,MAAM,IAAI,WAAW,GAAG,IAAI,MAAM,KAAK,GAAG;AAC7D,SAAO,gBAAgB,GAAG,GAAG,IAAI,YAAY,MAAM,MAAM,CAAC,cAAc,KAAK,eAAe;AAC9F;AACA,SAAS,cAAc,MAAM,IAAI;AAC/B,QAAM,OAAO,CAAC,MAAM,EAAE,QAAQ,OAAO,GAAG,EAAE,QAAQ,QAAQ,EAAE;AAC5D,QAAM,IAAI,KAAK,IAAI,EAAE,MAAM,GAAG;AAC9B,QAAM,IAAI,KAAK,EAAE,EAAE,MAAM,GAAG;AAC5B,MAAI,IAAI;AACR,SAAO,IAAI,EAAE,UAAU,IAAI,EAAE,UAAU,EAAE,CAAC,MAAM,EAAE,CAAC,EAAG;AACtD,SAAO,CAAC,GAAG,MAAM,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAM,IAAI,GAAG,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,KAAK,GAAG;AACtF;AACA,SAAS,YAAY,GAAG;AACtB,MAAI,KAAK,EAAE,YAAY,MAAO,QAAO;AACrC,QAAM,OAAO,GAAG,MAAM,KAAK;AAC3B,QAAM,QAAQ,OAAO,KAAK,MAAM,OAAO,EAAE,IAAI,CAAC,MAAM,MAAM,CAAC,EAAE,IAAI;AAAA,IAC/D;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,SAAO,MAAM,KAAK,IAAI,IAAI;AAC5B;","names":[]}
|