@versantonlinesolutions/prismabox 2.2.2 → 2.2.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.
Files changed (3) hide show
  1. package/cli.js +48 -45
  2. package/cli.js.map +4 -4
  3. package/package.json +1 -1
package/cli.js CHANGED
@@ -1,53 +1,56 @@
1
1
  #!/usr/bin/env node
2
- "use strict";var D=require("node:fs/promises"),Pe=require("@prisma/generator-helper");var f=require("@sinclair/typebox"),N=require("@sinclair/typebox/value"),h=f.Type.Object({output:f.Type.String({default:"./prisma/prismabox"}),typeboxImportVariableName:f.Type.String({default:"Type"}),typeboxImportDependencyName:f.Type.String({default:"@sinclair/typebox"}),additionalProperties:f.Type.Boolean({default:!1}),inputModel:f.Type.Boolean({default:!1}),ignoreIdOnInputModel:f.Type.Boolean({default:!0}),ignoreCreatedAtOnInputModel:f.Type.Boolean({default:!0}),ignoreUpdatedAtOnInputModel:f.Type.Boolean({default:!0}),ignoreForeignOnInputModel:f.Type.Boolean({default:!0}),nullableName:f.Type.String({default:"__nullable__"}),allowRecursion:f.Type.Boolean({default:!0}),additionalFieldsPlain:f.Type.Optional(f.Type.Array(f.Type.String())),transformDateName:f.Type.String({default:"__transformDate__"}),useJsonTypes:f.Type.Union([f.Type.Boolean(),f.Type.Literal("transformer")],{default:!1}),importFileExtension:f.Type.String({default:""}),exportedTypePrefix:f.Type.String({default:""})},{additionalProperties:!1}),z={};function Z(e){try{N.Value.Clean(h,e),N.Value.Default(h,e),z=N.Value.Decode(h,N.Value.Convert(h,e)),Object.freeze(z)}catch(t){throw console.error(N.Value.Errors(h,e).First),t}}function n(){return z}function ee(e){return e.type==="OPTIONS"}function x(e){return e.type==="TYPE_OVERWRITE"}var Ne=[{type:"HIDDEN_INPUT_CREATE",keys:["@prismabox.create.input.hide","@prismabox.create.input.hidden"]},{type:"HIDDEN_INPUT_UPDATE",keys:["@prismabox.update.input.hide","@prismabox.update.input.hidden"]},{type:"HIDDEN_INPUT",keys:["@prismabox.input.hide","@prismabox.input.hidden"]},{type:"HIDDEN",keys:["@prismabox.hide","@prismabox.hidden"]},{type:"OPTIONS",keys:["@prismabox.options"]},{type:"TYPE_OVERWRITE",keys:["@prismabox.typeOverwrite"]}];function l(e){let t=[],r="",i=e??"";for(let s of i.split(`
3
- `).map(o=>o.trim()).filter(o=>o.length>0)){let o=Ne.find(a=>a.keys.some(m=>s.startsWith(m)));if(o)if(o.type==="OPTIONS"){if(!s.startsWith(`${o.keys[0]}{`))throw new Error("Invalid syntax, expected opening { after prismabox.options");if(!s.endsWith("}"))throw new Error("Invalid syntax, expected closing } for prismabox.options");t.push({type:"OPTIONS",value:s.substring(o.keys[0].length+1,s.length-1)})}else if(o.type==="TYPE_OVERWRITE"){if(!s.startsWith(`${o.keys[0]}=`))throw new Error("Invalid syntax, expected = after prismabox.type");t.push({type:"TYPE_OVERWRITE",value:s.split("=")[1]})}else t.push({type:o.type});else r+=`${s}
4
- `}return r=r.trim().replaceAll("`","\\`"),{annotations:t,description:r.length>0?r:void 0,isHidden:De(t),isHiddenInput:Te(t),isHiddenInputCreate:he(t),isHiddenInputUpdate:Oe(t)}}function De(e){return e.some(t=>t.type==="HIDDEN")}function Te(e){return e.some(t=>t.type==="HIDDEN_INPUT")}function he(e){return e.some(t=>t.type==="HIDDEN_INPUT_CREATE")}function Oe(e){return e.some(t=>t.type==="HIDDEN_INPUT_UPDATE")}function p({input:e,exludeAdditionalProperties:t}={}){t===void 0&&(t=!n().additionalProperties);let r=[];for(let i of e?.annotations??[])ee(i)&&r.push(i.value);return t&&r.push(`additionalProperties: ${n().additionalProperties}`),e?.description&&r.push(`description: \`${e.description}\``),r.length>0?`{${r.join(",")}}`:""}function I(e,t=p({exludeAdditionalProperties:!0})){return`${n().typeboxImportVariableName}.Union([${e.join(",")}], ${t})
5
- `}var v=[],y=new Map;function te(e){for(let t of e){let r=Re(t);if(r){let i={name:t.name,stringRepresentation:r};v.push(i),y.set(t.name,i)}}Object.freeze(v)}function Re(e){let t=l(e.documentation);if(t.isHidden)return;let r=e.values.map(i=>`${n().typeboxImportVariableName}.Literal('${i.name}')`);return I(r,p({input:t}))}var Fe=["Int","BigInt","Float","Decimal","String","DateTime","Json","Boolean","Bytes"];function b(e){return Fe.includes(e)}function M({fieldType:e,options:t}){if(["Int","BigInt"].includes(e))return`${n().typeboxImportVariableName}.Integer(${t})`;if(["Float","Decimal"].includes(e))return`${n().typeboxImportVariableName}.Number(${t})`;if(e==="String")return`${n().typeboxImportVariableName}.String(${t})`;if(["DateTime"].includes(e)){let r=n();if(r.useJsonTypes==="transformer")return`${n().transformDateName}(${t})`;if(r.useJsonTypes){let i=t;return i.includes("{")&&i.includes("}")?i=i.replace("{","{ format: 'date-time', "):i="{ format: 'date-time' }",`${r.typeboxImportVariableName}.String(${i})`}return`${n().typeboxImportVariableName}.Date(${t})`}if(e==="Json")return`${n().typeboxImportVariableName}.Any(${t})`;if(e==="Boolean")return`${n().typeboxImportVariableName}.Boolean(${t})`;if(e==="Bytes")return`${n().typeboxImportVariableName}.Uint8Array(${t})`;throw new Error("Invalid type for primitive generation")}function c(e,t=!1){return`${n().typeboxImportVariableName}.Partial(${e}, ${p({exludeAdditionalProperties:t})})`}var w=[];function ne(e){for(let t of e){let r=Ve(t);r&&w.push({name:t.name,stringRepresentation:r})}Object.freeze(w)}function Ve(e){let t=l(e.documentation);if(t.isHidden)return;let r=e.fields.map(s=>{if(!l(s.documentation).isHidden&&!b(s.type))return`${s.name}: ${n().typeboxImportVariableName}.Boolean()`}).filter(s=>s);r.push(`_count: ${n().typeboxImportVariableName}.Boolean()`);let i=`${n().typeboxImportVariableName}.Object({${[...r].join(",")}},${p({input:t})})
6
- `;return c(i)}var A=[];function oe(e){for(let t of e){let r=Ee(t);r&&A.push({name:t.name,stringRepresentation:r})}Object.freeze(A)}function Ee(e){let t=l(e.documentation);if(t.isHidden)return;let r=e.fields.map(s=>{if(!l(s.documentation).isHidden&&b(s.type))return`${s.name}: ${I([`${n().typeboxImportVariableName}.Literal('asc')`,`${n().typeboxImportVariableName}.Literal('desc')`])}`}).filter(s=>s),i=`${n().typeboxImportVariableName}.Object({${[...r].join(",")}},${p({input:t})})
7
- `;return c(i)}function g(e){return`${n().typeboxImportVariableName}.Array(${e}, ${p({exludeAdditionalProperties:!0})})`}function re(){return`import { ${n().typeboxImportVariableName}, type TSchema } from "${n().typeboxImportDependencyName}"
2
+ "use strict";var R=require("node:fs/promises"),he=require("@prisma/generator-helper");var c=require("@sinclair/typebox"),T=require("@sinclair/typebox/value");var G=process.env.DEBUG==="*"||process.env.DEBUG==="prismabox"||(process.env.DEBUG??"").split(",").includes("prismabox");function f(t){G&&process.stderr.write(`[prismabox] ${t}
3
+ `)}function x(t,e){if(!G)return e();let o=performance.now(),i=e(),a=(performance.now()-o).toFixed(1);return process.stderr.write(`[prismabox] ${t} (${a}ms)
4
+ `),i}async function ne(t,e){if(!G)return e();let o=performance.now(),i=await e(),a=(performance.now()-o).toFixed(1);return process.stderr.write(`[prismabox] ${t} (${a}ms)
5
+ `),i}var V=c.Type.Object({output:c.Type.String({default:"./prisma/prismabox"}),typeboxImportVariableName:c.Type.String({default:"Type"}),typeboxImportDependencyName:c.Type.String({default:"@sinclair/typebox"}),additionalProperties:c.Type.Boolean({default:!1}),inputModel:c.Type.Boolean({default:!1}),ignoreIdOnInputModel:c.Type.Boolean({default:!0}),ignoreCreatedAtOnInputModel:c.Type.Boolean({default:!0}),ignoreUpdatedAtOnInputModel:c.Type.Boolean({default:!0}),ignoreForeignOnInputModel:c.Type.Boolean({default:!0}),nullableName:c.Type.String({default:"__nullable__"}),allowRecursion:c.Type.Boolean({default:!0}),additionalFieldsPlain:c.Type.Optional(c.Type.Array(c.Type.String())),transformDateName:c.Type.String({default:"__transformDate__"}),useJsonTypes:c.Type.Union([c.Type.Boolean(),c.Type.Literal("transformer")],{default:!1}),importFileExtension:c.Type.String({default:""}),exportedTypePrefix:c.Type.String({default:""}),disableFormatting:c.Type.Boolean({default:!1})},{additionalProperties:!1}),h={};function oe(t){try{T.Value.Clean(V,t),T.Value.Default(V,t),h=T.Value.Decode(V,T.Value.Convert(V,t)),f(`config: inputModel=${h.inputModel}, useJsonTypes=${h.useJsonTypes}, additionalProperties=${h.additionalProperties}`),Object.freeze(h)}catch(e){throw console.error(T.Value.Errors(V,t).First),e}}function n(){return h}function re(t){return t.type==="OPTIONS"}function M(t){return t.type==="TYPE_OVERWRITE"}var Oe=[{type:"HIDDEN_INPUT_CREATE",keys:["@prismabox.create.input.hide","@prismabox.create.input.hidden"]},{type:"HIDDEN_INPUT_UPDATE",keys:["@prismabox.update.input.hide","@prismabox.update.input.hidden"]},{type:"HIDDEN_INPUT",keys:["@prismabox.input.hide","@prismabox.input.hidden"]},{type:"HIDDEN",keys:["@prismabox.hide","@prismabox.hidden"]},{type:"OPTIONS",keys:["@prismabox.options"]},{type:"TYPE_OVERWRITE",keys:["@prismabox.typeOverwrite"]}];function d(t){let e=[],o="",i=t??"";for(let a of i.split(`
6
+ `).map(r=>r.trim()).filter(r=>r.length>0)){let r=Oe.find(s=>s.keys.some(m=>a.startsWith(m)));if(r)if(r.type==="OPTIONS"){if(!a.startsWith(`${r.keys[0]}{`))throw new Error("Invalid syntax, expected opening { after prismabox.options");if(!a.endsWith("}"))throw new Error("Invalid syntax, expected closing } for prismabox.options");e.push({type:"OPTIONS",value:a.substring(r.keys[0].length+1,a.length-1)})}else if(r.type==="TYPE_OVERWRITE"){if(!a.startsWith(`${r.keys[0]}=`))throw new Error("Invalid syntax, expected = after prismabox.type");e.push({type:"TYPE_OVERWRITE",value:a.split("=")[1]})}else e.push({type:r.type});else o+=`${a}
7
+ `}return o=o.trim().replaceAll("`","\\`"),{annotations:e,description:o.length>0?o:void 0,isHidden:Re(e),isHiddenInput:Fe(e),isHiddenInputCreate:Ve(e),isHiddenInputUpdate:Ee(e)}}function Re(t){return t.some(e=>e.type==="HIDDEN")}function Fe(t){return t.some(e=>e.type==="HIDDEN_INPUT")}function Ve(t){return t.some(e=>e.type==="HIDDEN_INPUT_CREATE")}function Ee(t){return t.some(e=>e.type==="HIDDEN_INPUT_UPDATE")}function p({input:t,exludeAdditionalProperties:e}={}){e===void 0&&(e=!n().additionalProperties);let o=[];for(let i of t?.annotations??[])re(i)&&o.push(i.value);return e&&o.push(`additionalProperties: ${n().additionalProperties}`),t?.description&&o.push(`description: \`${t.description}\``),o.length>0?`{${o.join(",")}}`:""}function P(t,e=p({exludeAdditionalProperties:!0})){return`${n().typeboxImportVariableName}.Union([${t.join(",")}], ${e})
8
+ `}var E=[],b=new Map;function ie(t){for(let e of t){let o=we(e);if(o){let i={name:e.name,stringRepresentation:o};E.push(i),b.set(e.name,i)}}f(` enums: ${E.length} processed`),Object.freeze(E)}function we(t){let e=d(t.documentation);if(e.isHidden)return;let o=t.values.map(i=>`${n().typeboxImportVariableName}.Literal('${i.name}')`);return P(o,p({input:e}))}var ve=["Int","BigInt","Float","Decimal","String","DateTime","Json","Boolean","Bytes"];function g(t){return ve.includes(t)}function N({fieldType:t,options:e}){if(["Int","BigInt"].includes(t))return`${n().typeboxImportVariableName}.Integer(${e})`;if(["Float","Decimal"].includes(t))return`${n().typeboxImportVariableName}.Number(${e})`;if(t==="String")return`${n().typeboxImportVariableName}.String(${e})`;if(["DateTime"].includes(t)){let o=n();if(o.useJsonTypes==="transformer")return`${n().transformDateName}(${e})`;if(o.useJsonTypes){let i=e;return i.includes("{")&&i.includes("}")?i=i.replace("{","{ format: 'date-time', "):i="{ format: 'date-time' }",`${o.typeboxImportVariableName}.String(${i})`}return`${n().typeboxImportVariableName}.Date(${e})`}if(t==="Json")return`${n().typeboxImportVariableName}.Any(${e})`;if(t==="Boolean")return`${n().typeboxImportVariableName}.Boolean(${e})`;if(t==="Bytes")return`${n().typeboxImportVariableName}.Uint8Array(${e})`;throw new Error("Invalid type for primitive generation")}function y(t,e=!1){return`${n().typeboxImportVariableName}.Partial(${t}, ${p({exludeAdditionalProperties:e})})`}var C=[];function ae(t){for(let e of t){let o=He(e);o&&C.push({name:e.name,stringRepresentation:o})}Object.freeze(C)}function He(t){let e=d(t.documentation);if(e.isHidden)return;let o=t.fields.map(a=>{if(!d(a.documentation).isHidden&&!g(a.type))return`${a.name}: ${n().typeboxImportVariableName}.Boolean()`}).filter(a=>a);o.push(`_count: ${n().typeboxImportVariableName}.Boolean()`);let i=`${n().typeboxImportVariableName}.Object({${[...o].join(",")}},${p({input:e})})
9
+ `;return y(i)}var S=[];function se(t){for(let e of t){let o=Ae(e);o&&S.push({name:e.name,stringRepresentation:o})}Object.freeze(S)}function Ae(t){let e=d(t.documentation);if(e.isHidden)return;let o=t.fields.map(a=>{if(!d(a.documentation).isHidden&&g(a.type))return`${a.name}: ${P([`${n().typeboxImportVariableName}.Literal('asc')`,`${n().typeboxImportVariableName}.Literal('desc')`])}`}).filter(a=>a),i=`${n().typeboxImportVariableName}.Object({${[...o].join(",")}},${p({input:e})})
10
+ `;return y(i)}function $(t){return`${n().typeboxImportVariableName}.Array(${t}, ${p({exludeAdditionalProperties:!0})})`}function pe(){return`import { ${n().typeboxImportVariableName}, type TSchema } from "${n().typeboxImportDependencyName}"
8
11
  export const ${n().nullableName} = <T extends TSchema>(schema: T) => ${n().typeboxImportVariableName}.Union([${n().typeboxImportVariableName}.Null(), schema])
9
- `}function ie(){return`import { ${n().nullableName} } from "./${n().nullableName}${n().importFileExtension}"
10
- `}function j(e){return`${n().nullableName}(${e})`}function Y(e){return`${n().typeboxImportVariableName}.Optional(${e})`}var C=[],O=new Map;function ae(e){for(let t of e){let r=R(t);if(r){let i={name:t.name,stringRepresentation:r};C.push(i),O.set(t.name,i)}}Object.freeze(C)}function R(e,t=!1,r=!1){let i=l(e.documentation);if(i.isHidden||(t||r)&&i.isHiddenInput||t&&i.isHiddenInputCreate||r&&i.isHiddenInputUpdate)return;let s=e.fields.map(o=>{let a=l(o.documentation);if(a.isHidden||(t||r)&&a.isHiddenInput||t&&a.isHiddenInputCreate||r&&a.isHiddenInputUpdate||n().ignoreIdOnInputModel&&(t||r)&&o.isId||n().ignoreCreatedAtOnInputModel&&(t||r)&&o.name==="createdAt"&&o.hasDefaultValue||n().ignoreUpdatedAtOnInputModel&&(t||r)&&o.isUpdatedAt||n().ignoreForeignOnInputModel&&(t||r)&&(o.name.toLowerCase().endsWith("id")||o.name.toLowerCase().endsWith("foreign")||o.name.toLowerCase().endsWith("foreignkey")))return;let m="";if(b(o.type)){let u=a.annotations.filter(x).at(0)?.value;u?m=u:m=M({fieldType:o.type,options:p({input:a,exludeAdditionalProperties:!1})})}else if(y.has(o.type))m=y.get(o.type).stringRepresentation;else return;o.isList&&(m=g(m));let d=!1;return o.isRequired||(m=j(m)),(r||t&&!o.isRequired&&!o.hasDefaultValue)&&(m=Y(m),d=!0),!d&&o.hasDefaultValue&&(t||r)&&(m=Y(m),d=!0),`${o.name}: ${m}`}).filter(o=>o);return`${n().typeboxImportVariableName}.Object({${[...s,t||r?[]:n().additionalFieldsPlain??[]].join(",")}},${p({input:i})})
11
- `}var S=[];function se(e){for(let t of e){let r=R(t,!0,!1);r&&S.push({name:t.name,stringRepresentation:r})}Object.freeze(S)}var U=[];function pe(e){for(let t of e){let r=R(t,!1,!0);r&&U.push({name:t.name,stringRepresentation:r})}Object.freeze(U)}var F=[];function me(e){for(let t of e){let r=He(t);r&&F.push({name:t.name,stringRepresentation:r})}Object.freeze(F)}function He(e){let t=l(e.documentation);if(t.isHidden)return;let r=e.fields.map(i=>{if(l(i.documentation).isHidden||b(i.type)||y.has(i.type))return;let o=O.get(i.type)?.stringRepresentation;if(o)return i.isList&&(o=g(o)),i.isRequired||(o=j(o)),`${i.name}: ${o}`}).filter(i=>i);return`${n().typeboxImportVariableName}.Object({${r.join(",")}},${p({input:t})})
12
- `}var V=[];function de(e){let t=new Map;for(let r of e)t.set(r.name,r);for(let r of e){let i=ve(r,t);i&&V.push({name:r.name,stringRepresentation:i})}Object.freeze(V)}function ve(e,t){let r=l(e.documentation);if(r.isHidden||r.isHiddenInput||r.isHiddenInputCreate)return;let i=e.fields.map(s=>{let o=l(s.documentation);if(o.isHidden||o.isHiddenInput||o.isHiddenInputCreate||b(s.type)||y.has(s.type))return;let a="String";switch(t.get(s.type)?.fields.find(L=>L.isId)?.type){case"String":a="String";break;case"Int":a="Integer";break;case"BigInt":a="Integer";break;default:return}let d=`${n().typeboxImportVariableName}.Object({
13
- id: ${n().typeboxImportVariableName}.${a}(${p({input:o})}),
14
- },${p({input:o})})`;s.isList&&(d=g(d));let u=`${n().typeboxImportVariableName}.Object({
15
- connect: ${d},
16
- }, ${p()})`;return(!s.isRequired||s.isList)&&(u=`${n().typeboxImportVariableName}.Optional(${u})`),`${s.name}: ${u}`}).filter(s=>s);return`${n().typeboxImportVariableName}.Object({${i.join(",")}},${p({input:r})})
17
- `}var E=[];function le(e){let t=new Map;for(let r of e)t.set(r.name,r);for(let r of e){let i=we(r,t);i&&E.push({name:r.name,stringRepresentation:i})}Object.freeze(E)}function we(e,t){let r=l(e.documentation);if(r.isHidden||r.isHiddenInput||r.isHiddenInputUpdate)return;let i=e.fields.map(s=>{let o=l(s.documentation);if(o.isHidden||o.isHiddenInput||o.isHiddenInputUpdate||b(s.type)||y.has(s.type))return;let a="String";switch(t.get(s.type)?.fields.find(u=>u.isId)?.type){case"String":a="String";break;case"Int":a="Integer";break;case"BigInt":a="Integer";break;default:return}let d;return s.isList?d=c(`${n().typeboxImportVariableName}.Object({
18
- connect: ${g(`${n().typeboxImportVariableName}.Object({
19
- id: ${n().typeboxImportVariableName}.${a}(${p({input:o})})
20
- }, ${p({input:o})})`)},
21
- disconnect: ${g(`${n().typeboxImportVariableName}.Object({
22
- id: ${n().typeboxImportVariableName}.${a}(${p({input:o})})
23
- }, ${p({input:o})})`)}
24
- }, ${p({input:o})})`):s.isRequired?d=`${n().typeboxImportVariableName}.Object({
12
+ `}function me(){return`import { ${n().nullableName} } from "./${n().nullableName}${n().importFileExtension}"
13
+ `}function _(t){return`${n().nullableName}(${t})`}function K(t){return`${n().typeboxImportVariableName}.Optional(${t})`}var w=[],v=new Map;function le(t){for(let e of t){let o=H(e);if(o){let i={name:e.name,stringRepresentation:o};w.push(i),v.set(e.name,i)}}f(` plain: ${w.length} of ${t.length} models`),Object.freeze(w)}function H(t,e=!1,o=!1){let i=d(t.documentation);if(i.isHidden||(e||o)&&i.isHiddenInput||e&&i.isHiddenInputCreate||o&&i.isHiddenInputUpdate)return;let a=t.fields.map(r=>{let s=d(r.documentation);if(s.isHidden||(e||o)&&s.isHiddenInput||e&&s.isHiddenInputCreate||o&&s.isHiddenInputUpdate||n().ignoreIdOnInputModel&&(e||o)&&r.isId||n().ignoreCreatedAtOnInputModel&&(e||o)&&r.name==="createdAt"&&r.hasDefaultValue||n().ignoreUpdatedAtOnInputModel&&(e||o)&&r.isUpdatedAt||n().ignoreForeignOnInputModel&&(e||o)&&(r.name.toLowerCase().endsWith("id")||r.name.toLowerCase().endsWith("foreign")||r.name.toLowerCase().endsWith("foreignkey")))return;let m="";if(g(r.type)){let u=s.annotations.filter(M).at(0)?.value;u?m=u:m=N({fieldType:r.type,options:p({input:s,exludeAdditionalProperties:!1})})}else if(b.has(r.type))m=b.get(r.type).stringRepresentation;else return;r.isList&&(m=$(m));let l=!1;return r.isRequired||(m=_(m)),(o||e&&!r.isRequired&&!r.hasDefaultValue)&&(m=K(m),l=!0),!l&&r.hasDefaultValue&&(e||o)&&(m=K(m),l=!0),`${r.name}: ${m}`}).filter(r=>r);return`${n().typeboxImportVariableName}.Object({${[...a,e||o?[]:n().additionalFieldsPlain??[]].join(",")}},${p({input:i})})
14
+ `}var W=[];function de(t){for(let e of t){let o=H(e,!0,!1);o&&W.push({name:e.name,stringRepresentation:o})}Object.freeze(W)}var k=[];function ue(t){for(let e of t){let o=H(e,!1,!0);o&&k.push({name:e.name,stringRepresentation:o})}Object.freeze(k)}var O=[];function ce(t){for(let e of t){let o=je(e);o&&O.push({name:e.name,stringRepresentation:o})}f(` relations: ${O.length} of ${t.length} models`),Object.freeze(O)}function je(t){let e=d(t.documentation);if(e.isHidden)return;let o=t.fields.map(i=>{if(d(i.documentation).isHidden||g(i.type)||b.has(i.type))return;let r=v.get(i.type)?.stringRepresentation;if(r)return i.isList&&(r=$(r)),i.isRequired||(r=_(r)),`${i.name}: ${r}`}).filter(i=>i);return`${n().typeboxImportVariableName}.Object({${o.join(",")}},${p({input:e})})
15
+ `}var A=[];function fe(t){let e=new Map;for(let o of t)e.set(o.name,o);for(let o of t){let i=Ue(o,e);i&&A.push({name:o.name,stringRepresentation:i})}Object.freeze(A)}function Ue(t,e){let o=d(t.documentation);if(o.isHidden||o.isHiddenInput||o.isHiddenInputCreate)return;let i=t.fields.map(a=>{let r=d(a.documentation);if(r.isHidden||r.isHiddenInput||r.isHiddenInputCreate||g(a.type)||b.has(a.type))return;let s="String";switch(e.get(a.type)?.fields.find(Y=>Y.isId)?.type){case"String":s="String";break;case"Int":s="Integer";break;case"BigInt":s="Integer";break;default:f(` skipping ${t.name}.${a.name} -> ${a.type} (no simple @id)`);return}let l=`${n().typeboxImportVariableName}.Object({
16
+ id: ${n().typeboxImportVariableName}.${s}(${p({input:r})}),
17
+ },${p({input:r})})`;a.isList&&(l=$(l));let u=`${n().typeboxImportVariableName}.Object({
18
+ connect: ${l},
19
+ }, ${p()})`;return(!a.isRequired||a.isList)&&(u=`${n().typeboxImportVariableName}.Optional(${u})`),`${a.name}: ${u}`}).filter(a=>a);return`${n().typeboxImportVariableName}.Object({${i.join(",")}},${p({input:o})})
20
+ `}var j=[];function ye(t){let e=new Map;for(let o of t)e.set(o.name,o);for(let o of t){let i=Ce(o,e);i&&j.push({name:o.name,stringRepresentation:i})}Object.freeze(j)}function Ce(t,e){let o=d(t.documentation);if(o.isHidden||o.isHiddenInput||o.isHiddenInputUpdate)return;let i=t.fields.map(a=>{let r=d(a.documentation);if(r.isHidden||r.isHiddenInput||r.isHiddenInputUpdate||g(a.type)||b.has(a.type))return;let s="String";switch(e.get(a.type)?.fields.find(u=>u.isId)?.type){case"String":s="String";break;case"Int":s="Integer";break;case"BigInt":s="Integer";break;default:f(` skipping ${t.name}.${a.name} -> ${a.type} (no simple @id)`);return}let l;return a.isList?l=y(`${n().typeboxImportVariableName}.Object({
21
+ connect: ${$(`${n().typeboxImportVariableName}.Object({
22
+ id: ${n().typeboxImportVariableName}.${s}(${p({input:r})})
23
+ }, ${p({input:r})})`)},
24
+ disconnect: ${$(`${n().typeboxImportVariableName}.Object({
25
+ id: ${n().typeboxImportVariableName}.${s}(${p({input:r})})
26
+ }, ${p({input:r})})`)}
27
+ }, ${p({input:r})})`):a.isRequired?l=`${n().typeboxImportVariableName}.Object({
25
28
  connect: ${n().typeboxImportVariableName}.Object({
26
- id: ${n().typeboxImportVariableName}.${a}(${p({input:o})})
27
- }, ${p({input:o})})
28
- }, ${p({input:o})})`:d=c(`${n().typeboxImportVariableName}.Object({
29
+ id: ${n().typeboxImportVariableName}.${s}(${p({input:r})})
30
+ }, ${p({input:r})})
31
+ }, ${p({input:r})})`:l=y(`${n().typeboxImportVariableName}.Object({
29
32
  connect: ${n().typeboxImportVariableName}.Object({
30
- id: ${n().typeboxImportVariableName}.${a}(${p({input:o})})
31
- }, ${p({input:o})}),
33
+ id: ${n().typeboxImportVariableName}.${s}(${p({input:r})})
34
+ }, ${p({input:r})}),
32
35
  disconnect: ${n().typeboxImportVariableName}.Boolean()
33
- }, ${p({input:o})})`),`${s.name}: ${d}`}).filter(s=>s);return c(`${n().typeboxImportVariableName}.Object({${i.join(",")}},${p({input:r})})`)}var _=[];function ue(e){for(let t of e){let r=Ae(t);r&&_.push({name:t.name,stringRepresentation:r})}Object.freeze(_)}function Ae(e){let t=l(e.documentation);if(t.isHidden)return;let r=e.fields.map(s=>{if(!l(s.documentation).isHidden)return`${s.name}: ${n().typeboxImportVariableName}.Boolean()`}).filter(s=>s);r.push(`_count: ${n().typeboxImportVariableName}.Boolean()`);let i=`${n().typeboxImportVariableName}.Object({${[...r].join(",")}},${p({input:t})})
34
- `;return c(i)}function J(e,t=p({exludeAdditionalProperties:!0})){return`${n().typeboxImportVariableName}.Intersect([${e.join(",")}], ${t})
35
- `}var P="Self",W=[];function fe(e){for(let t of e){let r=je(t);r&&W.push({name:t.name,stringRepresentation:r})}Object.freeze(W)}function je(e){let t=l(e.documentation);if(t.isHidden)return;let r=e.fields.map(i=>{let s=l(i.documentation);if(s.isHidden)return;let o="";if(b(i.type)){let a=s.annotations.filter(x).at(0)?.value;a?o=a:o=M({fieldType:i.type,options:p({exludeAdditionalProperties:!1,input:s})})}else if(y.has(i.type))o=y.get(i.type).stringRepresentation;else return;return i.isList&&(o=g(o)),`${i.name}: ${o}`}).filter(i=>i);return n().allowRecursion?c(`${n().typeboxImportVariableName}.Recursive(${P} =>${n().typeboxImportVariableName}.Object({${ye()},${r.join(",")}},${p({exludeAdditionalProperties:!0,input:t})}), { $id: "${e.name}"})`):c(`${n().typeboxImportVariableName}.Object({${r.join(",")}},${p({exludeAdditionalProperties:!0,input:t})})`)}var k=[];function ce(e){for(let t of e){let r=Ce(t);r&&k.push({name:t.name,stringRepresentation:r})}Object.freeze(k)}function Ce(e){let t=l(e.documentation);if(t.isHidden)return;let r=e.uniqueFields.filter(a=>a.length>1).map(a=>{let m=a.join("_"),u=a.map($=>e.fields.find(T=>T.name===$)).map($=>{let T=l($.documentation);if(T.isHidden)return;let H="";if(b($.type)){let X=T.annotations.filter(x).at(0)?.value;X?H=X:H=M({fieldType:$.type,options:p({exludeAdditionalProperties:!1,input:T})})}else if(y.has($.type))H=y.get($.type).stringRepresentation;else throw new Error("Invalid type for unique composite generation");return`${$.name}: ${H}`}),L=`${n().typeboxImportVariableName}.Object({${u.join(",")}}, ${p({exludeAdditionalProperties:!0})})`;return`${m}: ${L}`}),i=e.fields.map(a=>{let m=l(a.documentation);if(m.isHidden)return;let d="";if(b(a.type)){let u=m.annotations.filter(x).at(0)?.value;u?d=u:d=M({fieldType:a.type,options:p({exludeAdditionalProperties:!1,input:m})})}else if(y.has(a.type))d=y.get(a.type).stringRepresentation;else return;return a.isList&&(d=g(d)),`${a.name}: ${d}`}).filter(a=>a),s=e.fields.map(a=>{let m=l(a.documentation);if(m.isHidden||!a.isUnique&&!a.isId)return;let d="";if(b(a.type)){let u=m.annotations.filter(x).at(0)?.value;u?d=u:d=M({fieldType:a.type,options:p({exludeAdditionalProperties:!1,input:m})})}else if(y.has(a.type))d=y.get(a.type).stringRepresentation;else return;return a.isList&&(d=g(d)),`${a.name}: ${d}`}).filter(a=>a),o=`${n().typeboxImportVariableName}.Object({${[...s,...r].join(",")}},${p({exludeAdditionalProperties:!0,input:t})})`;return n().allowRecursion?`${n().typeboxImportVariableName}.Recursive(${P} => ${J([c(o,!0),I([...s,...r].map(a=>`${n().typeboxImportVariableName}.Object({${a}})`)),c(`${n().typeboxImportVariableName}.Object({${ye()}})`,!0),c(`${n().typeboxImportVariableName}.Object({${i.join(",")}}, ${p()})`)])}, { $id: "${e.name}"})`:J([c(o,!0),I([...s,...r].map(a=>`${n().typeboxImportVariableName}.Object({${a}})`)),c(`${n().typeboxImportVariableName}.Object({${i.join(",")}})`)])}function ye(){return`AND: ${n().typeboxImportVariableName}.Union([${P}, ${g(P)}]),
36
- NOT: ${n().typeboxImportVariableName}.Union([${P}, ${g(P)}]),
37
- OR: ${g(P)}`}var G=require("node:fs/promises"),Q=require("node:path");function be(e){return e.map(t=>`export * from "./${t}${n().importFileExtension}";`).join(`
38
- `)}var ge=require("prettier");async function K(e){try{return await(0,ge.format)(e,{parser:"typescript"})}catch(t){return console.error("Error formatting file",t),e}}function $e(){return`import { ${n().typeboxImportVariableName} } from "${n().typeboxImportDependencyName}";
36
+ }, ${p({input:r})})`),`${a.name}: ${l}`}).filter(a=>a);return y(`${n().typeboxImportVariableName}.Object({${i.join(",")}},${p({input:o})})`)}var B=[];function be(t){for(let e of t){let o=Se(e);o&&B.push({name:e.name,stringRepresentation:o})}Object.freeze(B)}function Se(t){let e=d(t.documentation);if(e.isHidden)return;let o=t.fields.map(a=>{if(!d(a.documentation).isHidden)return`${a.name}: ${n().typeboxImportVariableName}.Boolean()`}).filter(a=>a);o.push(`_count: ${n().typeboxImportVariableName}.Boolean()`);let i=`${n().typeboxImportVariableName}.Object({${[...o].join(",")}},${p({input:e})})
37
+ `;return y(i)}function Q(t,e=p({exludeAdditionalProperties:!0})){return`${n().typeboxImportVariableName}.Intersect([${t.join(",")}], ${e})
38
+ `}var D="Self",q=[];function ge(t){for(let e of t){let o=_e(e);o&&q.push({name:e.name,stringRepresentation:o})}Object.freeze(q)}function _e(t){let e=d(t.documentation);if(e.isHidden)return;let o=t.fields.map(i=>{let a=d(i.documentation);if(a.isHidden)return;let r="";if(g(i.type)){let s=a.annotations.filter(M).at(0)?.value;s?r=s:r=N({fieldType:i.type,options:p({exludeAdditionalProperties:!1,input:a})})}else if(b.has(i.type))r=b.get(i.type).stringRepresentation;else return;return i.isList&&(r=$(r)),`${i.name}: ${r}`}).filter(i=>i);return n().allowRecursion?y(`${n().typeboxImportVariableName}.Recursive(${D} =>${n().typeboxImportVariableName}.Object({${xe()},${o.join(",")}},${p({exludeAdditionalProperties:!0,input:e})}), { $id: "${t.name}"})`):y(`${n().typeboxImportVariableName}.Object({${o.join(",")}},${p({exludeAdditionalProperties:!0,input:e})})`)}var L=[];function $e(t){for(let e of t){let o=We(e);o&&L.push({name:e.name,stringRepresentation:o})}Object.freeze(L)}function We(t){let e=d(t.documentation);if(e.isHidden)return;let o=t.uniqueFields.filter(s=>s.length>1).map(s=>{let m=s.join("_"),u=s.map(I=>t.fields.find(F=>F.name===I)).map(I=>{let F=d(I.documentation);if(F.isHidden)return;let U="";if(g(I.type)){let te=F.annotations.filter(M).at(0)?.value;te?U=te:U=N({fieldType:I.type,options:p({exludeAdditionalProperties:!1,input:F})})}else if(b.has(I.type))U=b.get(I.type).stringRepresentation;else throw new Error("Invalid type for unique composite generation");return`${I.name}: ${U}`}),Y=`${n().typeboxImportVariableName}.Object({${u.join(",")}}, ${p({exludeAdditionalProperties:!0})})`;return`${m}: ${Y}`}),i=t.fields.map(s=>{let m=d(s.documentation);if(m.isHidden)return;let l="";if(g(s.type)){let u=m.annotations.filter(M).at(0)?.value;u?l=u:l=N({fieldType:s.type,options:p({exludeAdditionalProperties:!1,input:m})})}else if(b.has(s.type))l=b.get(s.type).stringRepresentation;else return;return s.isList&&(l=$(l)),`${s.name}: ${l}`}).filter(s=>s),a=t.fields.map(s=>{let m=d(s.documentation);if(m.isHidden||!s.isUnique&&!s.isId)return;let l="";if(g(s.type)){let u=m.annotations.filter(M).at(0)?.value;u?l=u:l=N({fieldType:s.type,options:p({exludeAdditionalProperties:!1,input:m})})}else if(b.has(s.type))l=b.get(s.type).stringRepresentation;else return;return s.isList&&(l=$(l)),`${s.name}: ${l}`}).filter(s=>s),r=`${n().typeboxImportVariableName}.Object({${[...a,...o].join(",")}},${p({exludeAdditionalProperties:!0,input:e})})`;return n().allowRecursion?`${n().typeboxImportVariableName}.Recursive(${D} => ${Q([y(r,!0),P([...a,...o].map(s=>`${n().typeboxImportVariableName}.Object({${s}})`)),y(`${n().typeboxImportVariableName}.Object({${xe()}})`,!0),y(`${n().typeboxImportVariableName}.Object({${i.join(",")}}, ${p()})`)])}, { $id: "${t.name}"})`:Q([y(r,!0),P([...a,...o].map(s=>`${n().typeboxImportVariableName}.Object({${s}})`)),y(`${n().typeboxImportVariableName}.Object({${i.join(",")}})`)])}function xe(){return`AND: ${n().typeboxImportVariableName}.Union([${D}, ${$(D)}]),
39
+ NOT: ${n().typeboxImportVariableName}.Union([${D}, ${$(D)}]),
40
+ OR: ${$(D)}`}var Z=require("node:fs/promises"),ee=require("node:path");function Ie(t){return t.map(e=>`export * from "./${e}${n().importFileExtension}";`).join(`
41
+ `)}var Me=require("prettier");async function X(t){if(n().disableFormatting)return t;try{return await(0,Me.format)(t,{parser:"typescript"})}catch(e){return console.error("Error formatting file",e),t}}function Pe(){return`import { ${n().typeboxImportVariableName} } from "${n().typeboxImportDependencyName}";
39
42
  export const ${n().transformDateName} = (options?: Parameters<typeof ${n().typeboxImportVariableName}.String>[0]) => ${n().typeboxImportVariableName}.Transform(${n().typeboxImportVariableName}.String({ format: 'date-time', ...options }))
40
43
  .Decode((value) => new Date(value))
41
44
  .Encode((value) => value.toISOString())
42
- `}function xe(){return`import { ${n().transformDateName} } from "./${n().transformDateName}${n().importFileExtension}"
43
- `}function B(e){return`${n().typeboxImportVariableName}.Composite([${e.map(t=>`${n().exportedTypePrefix}${t}`).join(",")}], ${p()})
44
- `}function q(e){return`export const ${n().exportedTypePrefix}${e.name} = ${e.stringRepresentation}
45
- `}function Se(){return`import { ${n().typeboxImportVariableName} } from "${n().typeboxImportDependencyName}"
46
- `}function Ie(){let e=new Map,t=(o,a)=>{for(let m of o){let d=q({...m,name:`${m.name}${a}`}),u=e.get(m.name);u?e.set(m.name,`${u}
47
- ${d}`):e.set(m.name,d)}};t(v,""),t(C,"Plain"),t(F,"Relations"),t(S,"PlainInputCreate"),t(U,"PlainInputUpdate"),t(V,"RelationsInputCreate"),t(E,"RelationsInputUpdate"),t(W,"Where"),t(k,"WhereUnique"),t(_,"Select"),t(w,"Include"),t(A,"OrderBy");let r=new Set(F.map(o=>o.name)),i=new Set(V.map(o=>o.name)),s=new Set(E.map(o=>o.name));for(let[o,a]of e){let m=O.has(o),d=r.has(o),u;if(m&&d)u=B([`${o}Plain`,`${o}Relations`]);else if(m)u=`${o}Plain`;else if(d)u=`${o}Relations`;else continue;e.set(o,`${a}
48
- ${q({name:o,stringRepresentation:u})}`)}for(let[o,a]of e)if(i.has(o)){let m=B([`${o}PlainInputCreate`,`${o}RelationsInputCreate`]);e.set(o,`${a}
49
- ${q({name:`${o}InputCreate`,stringRepresentation:m})}`)}for(let[o,a]of e)if(s.has(o)){let m=B([`${o}PlainInputUpdate`,`${o}RelationsInputUpdate`]);e.set(o,`${a}
50
- ${q({name:`${o}InputUpdate`,stringRepresentation:m})}`)}for(let[o,a]of e)e.set(o,`${Se()}
51
- ${xe()}
52
- ${ie()}
53
- ${a}`);return e.set(n().nullableName,re()),e.set(n().transformDateName,$e()),e}async function Me(){let e=Array.from(Ie().entries());for(let[t,r]of e)await(0,G.writeFile)((0,Q.join)(n().output,`${t}.ts`),await K(r));await(0,G.writeFile)((0,Q.join)(n().output,"barrel.ts"),await K(be(e.map(([t])=>t))))}(0,Pe.generatorHandler)({onManifest(){return{defaultOutput:"./prismabox",prettyName:"prismabox"}},async onGenerate(e){Z({...e.generator.config,output:e.generator.output?.value});try{await(0,D.access)(n().output),await(0,D.rm)(n().output,{recursive:!0})}catch{}await(0,D.mkdir)(n().output,{recursive:!0}),te(e.dmmf.datamodel.enums),ae(e.dmmf.datamodel.models),me(e.dmmf.datamodel.models),fe(e.dmmf.datamodel.models),ce(e.dmmf.datamodel.models),n().inputModel&&(se(e.dmmf.datamodel.models),pe(e.dmmf.datamodel.models),de(e.dmmf.datamodel.models),le(e.dmmf.datamodel.models)),ue(e.dmmf.datamodel.models),ne(e.dmmf.datamodel.models),oe(e.dmmf.datamodel.models),await Me()}});
45
+ `}function Ne(){return`import { ${n().transformDateName} } from "./${n().transformDateName}${n().importFileExtension}"
46
+ `}function z(t){return`${n().typeboxImportVariableName}.Composite([${t.map(e=>`${n().exportedTypePrefix}${e}`).join(",")}], ${p()})
47
+ `}function J(t){return`export const ${n().exportedTypePrefix}${t.name} = ${t.stringRepresentation}
48
+ `}function ke(){return`import { ${n().typeboxImportVariableName} } from "${n().typeboxImportDependencyName}"
49
+ `}function De(){let t=new Map,e=(r,s)=>{for(let m of r){let l=J({...m,name:`${m.name}${s}`}),u=t.get(m.name);u?t.set(m.name,`${u}
50
+ ${l}`):t.set(m.name,l)}};e(E,""),e(w,"Plain"),e(O,"Relations"),e(W,"PlainInputCreate"),e(k,"PlainInputUpdate"),e(A,"RelationsInputCreate"),e(j,"RelationsInputUpdate"),e(q,"Where"),e(L,"WhereUnique"),e(B,"Select"),e(C,"Include"),e(S,"OrderBy");let o=new Set(O.map(r=>r.name)),i=new Set(A.map(r=>r.name)),a=new Set(j.map(r=>r.name));for(let[r,s]of t){let m=v.has(r),l=o.has(r),u;if(m&&l)u=z([`${r}Plain`,`${r}Relations`]);else if(m)u=`${r}Plain`;else if(l)u=`${r}Relations`;else continue;t.set(r,`${s}
51
+ ${J({name:r,stringRepresentation:u})}`)}for(let[r,s]of t)if(i.has(r)){let m=z([`${r}PlainInputCreate`,`${r}RelationsInputCreate`]);t.set(r,`${s}
52
+ ${J({name:`${r}InputCreate`,stringRepresentation:m})}`)}for(let[r,s]of t)if(a.has(r)){let m=z([`${r}PlainInputUpdate`,`${r}RelationsInputUpdate`]);t.set(r,`${s}
53
+ ${J({name:`${r}InputUpdate`,stringRepresentation:m})}`)}for(let[r,s]of t)t.set(r,`${ke()}
54
+ ${Ne()}
55
+ ${me()}
56
+ ${s}`);return t.set(n().nullableName,pe()),t.set(n().transformDateName,Pe()),t}async function Te(){let t=Array.from(De().entries());f(`write: ${t.length} files`);for(let e=0;e<t.length;e++){let[o,i]=t[e];f(` [${e+1}/${t.length}] ${o}.ts`),await(0,Z.writeFile)((0,ee.join)(n().output,`${o}.ts`),await X(i))}f("writing barrel.ts"),await(0,Z.writeFile)((0,ee.join)(n().output,"barrel.ts"),await X(Ie(t.map(([e])=>e))))}(0,he.generatorHandler)({onManifest(){return{defaultOutput:"./prismabox",prettyName:"prismabox"}},async onGenerate(t){oe({...t.generator.config,output:t.generator.output?.value});let e=t.dmmf.datamodel.models,o=t.dmmf.datamodel.enums;f(`output: ${n().output}`),f(`models: ${e.length}, enums: ${o.length}`),f(`inputModel: ${n().inputModel}`);try{await(0,R.access)(n().output),await(0,R.rm)(n().output,{recursive:!0})}catch{}await(0,R.mkdir)(n().output,{recursive:!0}),x(`processEnums: ${o.length} enums`,()=>ie(o)),x(`processPlain: ${e.length} models`,()=>le(e)),x("processRelations",()=>ce(e)),x("processWhere",()=>ge(e)),x("processWhereUnique",()=>$e(e)),n().inputModel&&(x("processPlainInputCreate",()=>de(e)),x("processPlainInputUpdate",()=>ue(e)),x("processRelationsInputCreate",()=>fe(e)),x("processRelationsInputUpdate",()=>ye(e))),x("processSelect",()=>be(e)),x("processInclude",()=>ae(e)),x("processOrderBy",()=>se(e)),await ne("write (format + disk)",()=>Te()),f("generation complete")}});
package/cli.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/index.ts", "../src/config.ts", "../src/annotations/annotations.ts", "../src/annotations/options.ts", "../src/generators/wrappers/union.ts", "../src/generators/enum.ts", "../src/generators/primitiveField.ts", "../src/generators/wrappers/partial.ts", "../src/generators/include.ts", "../src/generators/orderBy.ts", "../src/generators/wrappers/array.ts", "../src/generators/wrappers/nullable.ts", "../src/generators/wrappers/optional.ts", "../src/generators/plain.ts", "../src/generators/plainInputCreate.ts", "../src/generators/plainInputUpdate.ts", "../src/generators/relations.ts", "../src/generators/select.ts", "../src/generators/wrappers/intersect.ts", "../src/generators/where.ts", "../src/writer.ts", "../src/barrel.ts", "../src/format.ts", "../src/generators/transformDate.ts", "../src/generators/wrappers/composite.ts", "../src/model.ts"],
4
- "sourcesContent": ["import { access, mkdir, rm } from \"node:fs/promises\";\nimport { generatorHandler } from \"@prisma/generator-helper\";\nimport { getConfig, setConfig } from \"./config\";\nimport { processEnums } from \"./generators/enum\";\nimport { processInclude } from \"./generators/include\";\nimport { processOrderBy } from \"./generators/orderBy\";\nimport { processPlain } from \"./generators/plain\";\nimport { processPlainInputCreate } from \"./generators/plainInputCreate\";\nimport { processPlainInputUpdate } from \"./generators/plainInputUpdate\";\nimport {\n processRelations,\n processRelationsInputCreate,\n processRelationsInputUpdate,\n} from \"./generators/relations\";\nimport { processSelect } from \"./generators/select\";\nimport { processWhere, processWhereUnique } from \"./generators/where\";\nimport { write } from \"./writer\";\n\ngeneratorHandler({\n onManifest() {\n return {\n defaultOutput: \"./prismabox\",\n prettyName: \"prismabox\",\n };\n },\n async onGenerate(options) {\n setConfig({\n ...options.generator.config,\n // for some reason, the output is an object with a value key\n output: options.generator.output?.value,\n });\n\n try {\n await access(getConfig().output);\n await rm(getConfig().output, { recursive: true });\n } catch (_error) {}\n\n await mkdir(getConfig().output, { recursive: true });\n\n processEnums(options.dmmf.datamodel.enums);\n processPlain(options.dmmf.datamodel.models);\n processRelations(options.dmmf.datamodel.models);\n processWhere(options.dmmf.datamodel.models);\n processWhereUnique(options.dmmf.datamodel.models);\n if (getConfig().inputModel) {\n processPlainInputCreate(options.dmmf.datamodel.models);\n processPlainInputUpdate(options.dmmf.datamodel.models);\n processRelationsInputCreate(options.dmmf.datamodel.models);\n processRelationsInputUpdate(options.dmmf.datamodel.models);\n }\n processSelect(options.dmmf.datamodel.models);\n processInclude(options.dmmf.datamodel.models);\n processOrderBy(options.dmmf.datamodel.models);\n\n await write();\n },\n});\n", "import { type Static, Type } from \"@sinclair/typebox\";\nimport { Value } from \"@sinclair/typebox/value\";\n\nconst configSchema = Type.Object(\n {\n /**\n * Where to output the generated files\n */\n output: Type.String({ default: \"./prisma/prismabox\" }),\n /**\n * The name of the variable to import the Type from typebox\n */\n typeboxImportVariableName: Type.String({ default: \"Type\" }),\n /**\n * The name of the dependency to import the Type from typebox\n */\n typeboxImportDependencyName: Type.String({ default: \"@sinclair/typebox\" }),\n /**\n * Whether to allow additional properties in the generated schemes\n */\n additionalProperties: Type.Boolean({ default: false }),\n /**\n * Should the input schemes be generated\n */\n inputModel: Type.Boolean({ default: false }),\n /**\n * Prevents the ID field from being generated in the input model\n */\n ignoreIdOnInputModel: Type.Boolean({ default: true }),\n /**\n * Prevents the createdAt field from being generated in the input model\n */\n ignoreCreatedAtOnInputModel: Type.Boolean({ default: true }),\n /**\n * Prevents the updatedAt field from being generated in the input model\n */\n ignoreUpdatedAtOnInputModel: Type.Boolean({ default: true }),\n /**\n * Prevents the foreignId field from being generated in the input model\n */\n ignoreForeignOnInputModel: Type.Boolean({ default: true }),\n /**\n * How the nullable union should be named\n */\n nullableName: Type.String({ default: \"__nullable__\" }),\n /**\n * Whether to allow recursion in the generated schemes (enabling reduces code size)\n */\n allowRecursion: Type.Boolean({ default: true }),\n /**\n\t\t * Additional fields to add to the generated schemes (must be valid strings in the context of usage)\n\t * @example \n\t * ```prisma\n\t * generator prismabox {\n\t\t\tprovider = \"node ./dist/cli.js\"\n\t\t\t inputModel = true\n\t\t\t output = \"./generated/schema\"\n\t\t\t additionalFieldsPlain = [\"additional: Type.Optional(Type.String())\"]\n\t\t }\n\t ```\n\t\t */\n additionalFieldsPlain: Type.Optional(Type.Array(Type.String())),\n /**\n * How the transform date type should be named\n */\n transformDateName: Type.String({ default: \"__transformDate__\" }),\n /**\n * When enabled, this option ensures that only primitive types are generated as JSON types.\n * This ensures compatibility with tooling that only supports the serilization to JSON primitive types.\n *\n * This can be false (off), true (will result in formatted string type) or \"transformer\" which will use Tybepox transformers\n * to output native JS Date types but transforms those to strings on processing\n *\n * E.g. Date will be of Type String when enabled.\n */\n useJsonTypes: Type.Union([Type.Boolean(), Type.Literal(\"transformer\")], {\n default: false,\n }),\n /**\n * What file extension, if any, to add to src file imports. Set to \".js\" to support nodenext module resolution\n */\n importFileExtension: Type.String({ default: \"\" }),\n /**\n * The prefix to add to exported types\n */\n exportedTypePrefix: Type.String({ default: \"\" }),\n },\n { additionalProperties: false },\n);\n\n// biome-ignore lint/suspicious/noExplicitAny: we want to set the default value\nlet config: Static<typeof configSchema> = {} as unknown as any;\n\nexport function setConfig(input: unknown) {\n try {\n Value.Clean(configSchema, input);\n Value.Default(configSchema, input);\n config = Value.Decode(configSchema, Value.Convert(configSchema, input));\n Object.freeze(config);\n } catch (error) {\n console.error(Value.Errors(configSchema, input).First);\n throw error;\n }\n}\nexport function getConfig() {\n return config;\n}\n", "import type { DMMF } from \"@prisma/generator-helper\";\n\nexport type Annotation =\n | { type: \"HIDDEN\" }\n | { type: \"HIDDEN_INPUT\" }\n | { type: \"HIDDEN_INPUT_CREATE\" }\n | { type: \"HIDDEN_INPUT_UPDATE\" }\n | { type: \"OPTIONS\"; value: string }\n | { type: \"TYPE_OVERWRITE\"; value: string };\n\nexport function isHiddenVariant(\n annotation: Annotation,\n): annotation is { type: \"HIDDEN\"; value: number } {\n return annotation.type === \"HIDDEN\";\n}\n\nexport function isHiddenInputVariant(\n annotation: Annotation,\n): annotation is { type: \"HIDDEN_INPUT\"; value: number } {\n return annotation.type === \"HIDDEN_INPUT\";\n}\n\nexport function isHiddenInputCreateVariant(\n annotation: Annotation,\n): annotation is { type: \"HIDDEN_INPUT_CREATE\"; value: number } {\n return annotation.type === \"HIDDEN_INPUT_CREATE\";\n}\n\nexport function isHiddenInputUpdateVariant(\n annotation: Annotation,\n): annotation is { type: \"HIDDEN_INPUT_UPDATE\"; value: number } {\n return annotation.type === \"HIDDEN_INPUT_UPDATE\";\n}\n\nexport function isOptionsVariant(\n annotation: Annotation,\n): annotation is { type: \"OPTIONS\"; value: string } {\n return annotation.type === \"OPTIONS\";\n}\n\nexport function isTypeOverwriteVariant(\n annotation: Annotation,\n): annotation is { type: \"TYPE_OVERWRITE\"; value: string } {\n return annotation.type === \"TYPE_OVERWRITE\";\n}\n\nconst annotationKeys: { type: Annotation[\"type\"]; keys: string[] }[] = [\n {\n type: \"HIDDEN_INPUT_CREATE\",\n keys: [\"@prismabox.create.input.hide\", \"@prismabox.create.input.hidden\"],\n },\n {\n type: \"HIDDEN_INPUT_UPDATE\",\n keys: [\"@prismabox.update.input.hide\", \"@prismabox.update.input.hidden\"],\n },\n {\n type: \"HIDDEN_INPUT\",\n keys: [\n // we need to use input.hide instead of hide.input because the latter is a substring of input.hidden\n // and will falsely match\n \"@prismabox.input.hide\",\n \"@prismabox.input.hidden\",\n ],\n },\n {\n type: \"HIDDEN\",\n keys: [\"@prismabox.hide\", \"@prismabox.hidden\"],\n },\n {\n type: \"OPTIONS\",\n keys: [\"@prismabox.options\"],\n },\n {\n type: \"TYPE_OVERWRITE\",\n keys: [\"@prismabox.typeOverwrite\"],\n },\n];\n\nexport function extractAnnotations(\n input: DMMF.Model[\"fields\"][number][\"documentation\"],\n): {\n annotations: Annotation[];\n description: string | undefined;\n isHidden: boolean;\n isHiddenInput: boolean;\n isHiddenInputCreate: boolean;\n isHiddenInputUpdate: boolean;\n} {\n const annotations: Annotation[] = [];\n let description = \"\";\n\n const raw = input ?? \"\";\n\n for (const line of raw\n .split(\"\\n\")\n .map((l) => l.trim())\n .filter((l) => l.length > 0)) {\n const annotationKey = annotationKeys.find((key) =>\n key.keys.some((k) => line.startsWith(k)),\n );\n\n if (annotationKey) {\n if (annotationKey.type === \"OPTIONS\") {\n if (!line.startsWith(`${annotationKey.keys[0]}{`)) {\n throw new Error(\n \"Invalid syntax, expected opening { after prismabox.options\",\n );\n }\n if (!line.endsWith(\"}\")) {\n throw new Error(\n \"Invalid syntax, expected closing } for prismabox.options\",\n );\n }\n\n annotations.push({\n type: \"OPTIONS\",\n value: line.substring(\n annotationKey.keys[0].length + 1,\n line.length - 1,\n ),\n });\n } else if (annotationKey.type === \"TYPE_OVERWRITE\") {\n if (!line.startsWith(`${annotationKey.keys[0]}=`)) {\n throw new Error(\"Invalid syntax, expected = after prismabox.type\");\n }\n\n annotations.push({\n type: \"TYPE_OVERWRITE\",\n value: line.split(\"=\")[1],\n });\n } else {\n annotations.push({ type: annotationKey.type });\n }\n } else {\n description += `${line}\\n`;\n }\n }\n\n description = description.trim().replaceAll(\"`\", \"\\\\`\");\n return {\n annotations,\n description: description.length > 0 ? description : undefined,\n isHidden: isHidden(annotations),\n isHiddenInput: isHiddenInput(annotations),\n isHiddenInputCreate: isHiddenInputCreate(annotations),\n isHiddenInputUpdate: isHiddenInputUpdate(annotations),\n };\n}\n\nexport function isHidden(annotations: Annotation[]): boolean {\n return annotations.some((a) => a.type === \"HIDDEN\");\n}\n\nexport function isHiddenInput(annotations: Annotation[]): boolean {\n return annotations.some((a) => a.type === \"HIDDEN_INPUT\");\n}\n\nexport function isHiddenInputCreate(annotations: Annotation[]): boolean {\n return annotations.some((a) => a.type === \"HIDDEN_INPUT_CREATE\");\n}\n\nexport function isHiddenInputUpdate(annotations: Annotation[]): boolean {\n return annotations.some((a) => a.type === \"HIDDEN_INPUT_UPDATE\");\n}\n", "import { getConfig } from \"../config\";\nimport { type extractAnnotations, isOptionsVariant } from \"./annotations\";\n\nexport function generateTypeboxOptions({\n input,\n exludeAdditionalProperties,\n}: {\n input?: ReturnType<typeof extractAnnotations>;\n exludeAdditionalProperties?: boolean;\n} = {}): string {\n if (exludeAdditionalProperties === undefined) {\n exludeAdditionalProperties = !getConfig().additionalProperties;\n }\n\n const stringifiedOptions: string[] = [];\n for (const annotation of input?.annotations ?? []) {\n if (isOptionsVariant(annotation)) {\n stringifiedOptions.push(annotation.value);\n }\n }\n\n if (exludeAdditionalProperties) {\n stringifiedOptions.push(\n `additionalProperties: ${getConfig().additionalProperties}`,\n );\n }\n\n if (input?.description) {\n stringifiedOptions.push(`description: \\`${input.description}\\``);\n }\n\n return stringifiedOptions.length > 0\n ? `{${stringifiedOptions.join(\",\")}}`\n : \"\";\n}\n", "import { generateTypeboxOptions } from \"../../annotations/options\";\nimport { getConfig } from \"../../config\";\n\nexport function makeUnion(\n inputModels: string[],\n options = generateTypeboxOptions({ exludeAdditionalProperties: true }),\n) {\n return `${getConfig().typeboxImportVariableName}.Union([${inputModels.join(\n \",\",\n )}], ${options})\\n`;\n}\n", "import type { DMMF } from \"@prisma/generator-helper\";\nimport { extractAnnotations } from \"../annotations/annotations\";\nimport { generateTypeboxOptions } from \"../annotations/options\";\nimport { getConfig } from \"../config\";\nimport type { ProcessedModel } from \"../model\";\nimport { makeUnion } from \"./wrappers/union\";\n\nexport const processedEnums: ProcessedModel[] = [];\nexport const processedEnumsMap = new Map<string, ProcessedModel>();\n\nexport function processEnums(\n enums: DMMF.DatamodelEnum[] | Readonly<DMMF.DatamodelEnum[]>,\n) {\n for (const e of enums) {\n const stringRepresentation = stringifyEnum(e);\n if (stringRepresentation) {\n const model = { name: e.name, stringRepresentation };\n processedEnums.push(model);\n processedEnumsMap.set(e.name, model);\n }\n }\n Object.freeze(processedEnums);\n}\n\nexport function stringifyEnum(data: DMMF.DatamodelEnum) {\n const annotations = extractAnnotations(data.documentation);\n if (annotations.isHidden) return undefined;\n\n const variantsString = data.values.map(\n (v) => `${getConfig().typeboxImportVariableName}.Literal('${v.name}')`,\n );\n\n return makeUnion(\n variantsString,\n generateTypeboxOptions({ input: annotations }),\n );\n}\n", "import { getConfig } from \"../config\";\n\nconst PrimitiveFields = [\n \"Int\",\n \"BigInt\",\n \"Float\",\n \"Decimal\",\n \"String\",\n \"DateTime\",\n \"Json\",\n \"Boolean\",\n \"Bytes\",\n] as const;\n\nexport type PrimitivePrismaFieldType = (typeof PrimitiveFields)[number];\n\nexport function isPrimitivePrismaFieldType(\n str: string,\n): str is PrimitivePrismaFieldType {\n // biome-ignore lint/suspicious/noExplicitAny: we want to check if the string is a valid primitive field\n return PrimitiveFields.includes(str as any);\n}\n\nexport function stringifyPrimitiveType({\n fieldType,\n options,\n}: {\n fieldType: PrimitivePrismaFieldType;\n options: string;\n}) {\n if ([\"Int\", \"BigInt\"].includes(fieldType)) {\n return `${getConfig().typeboxImportVariableName}.Integer(${options})`;\n }\n\n if ([\"Float\", \"Decimal\"].includes(fieldType)) {\n return `${getConfig().typeboxImportVariableName}.Number(${options})`;\n }\n\n if (fieldType === \"String\") {\n return `${getConfig().typeboxImportVariableName}.String(${options})`;\n }\n\n if ([\"DateTime\"].includes(fieldType)) {\n const config = getConfig();\n if (config.useJsonTypes === \"transformer\") {\n return `${getConfig().transformDateName}(${options})`;\n }\n\n if (config.useJsonTypes) {\n let opts = options;\n if (opts.includes(\"{\") && opts.includes(\"}\")) {\n opts = opts.replace(\"{\", \"{ format: 'date-time', \");\n } else {\n opts = `{ format: 'date-time' }`;\n }\n return `${config.typeboxImportVariableName}.String(${opts})`;\n }\n\n return `${getConfig().typeboxImportVariableName}.Date(${options})`;\n }\n\n if (fieldType === \"Json\") {\n return `${getConfig().typeboxImportVariableName}.Any(${options})`;\n }\n\n if (fieldType === \"Boolean\") {\n return `${getConfig().typeboxImportVariableName}.Boolean(${options})`;\n }\n\n if (fieldType === \"Bytes\") {\n return `${getConfig().typeboxImportVariableName}.Uint8Array(${options})`;\n }\n\n throw new Error(\"Invalid type for primitive generation\");\n}\n", "import { generateTypeboxOptions } from \"../../annotations/options\";\nimport { getConfig } from \"../../config\";\n\nexport function wrapWithPartial(\n input: string,\n exludeAdditionalPropertiesInOptions = false,\n) {\n return `${\n getConfig().typeboxImportVariableName\n }.Partial(${input}, ${generateTypeboxOptions({ exludeAdditionalProperties: exludeAdditionalPropertiesInOptions })})`;\n}\n", "import type { DMMF } from \"@prisma/generator-helper\";\nimport { extractAnnotations } from \"../annotations/annotations\";\nimport { generateTypeboxOptions } from \"../annotations/options\";\nimport { getConfig } from \"../config\";\nimport type { ProcessedModel } from \"../model\";\nimport { isPrimitivePrismaFieldType } from \"./primitiveField\";\nimport { wrapWithPartial } from \"./wrappers/partial\";\n\nexport const processedInclude: ProcessedModel[] = [];\n\nexport function processInclude(models: DMMF.Model[] | Readonly<DMMF.Model[]>) {\n for (const m of models) {\n const o = stringifyInclude(m);\n if (o) {\n processedInclude.push({ name: m.name, stringRepresentation: o });\n }\n }\n Object.freeze(processedInclude);\n}\n\nexport function stringifyInclude(data: DMMF.Model) {\n const annotations = extractAnnotations(data.documentation);\n\n if (annotations.isHidden) return undefined;\n\n const fields = data.fields\n .map((field) => {\n const annotations = extractAnnotations(field.documentation);\n if (annotations.isHidden) return undefined;\n\n if (isPrimitivePrismaFieldType(field.type)) return undefined;\n\n return `${field.name}: ${getConfig().typeboxImportVariableName}.Boolean()`;\n })\n .filter((x) => x) as string[];\n\n fields.push(`_count: ${getConfig().typeboxImportVariableName}.Boolean()`);\n\n const ret = `${getConfig().typeboxImportVariableName}.Object({${[\n ...fields,\n ].join(\",\")}},${generateTypeboxOptions({ input: annotations })})\\n`;\n\n return wrapWithPartial(ret);\n}\n", "import type { DMMF } from \"@prisma/generator-helper\";\nimport { extractAnnotations } from \"../annotations/annotations\";\nimport { generateTypeboxOptions } from \"../annotations/options\";\nimport { getConfig } from \"../config\";\nimport type { ProcessedModel } from \"../model\";\nimport { isPrimitivePrismaFieldType } from \"./primitiveField\";\nimport { wrapWithPartial } from \"./wrappers/partial\";\nimport { makeUnion } from \"./wrappers/union\";\n\nexport const processedOrderBy: ProcessedModel[] = [];\n\nexport function processOrderBy(models: DMMF.Model[] | Readonly<DMMF.Model[]>) {\n for (const m of models) {\n const o = stringifyOrderBy(m);\n if (o) {\n processedOrderBy.push({ name: m.name, stringRepresentation: o });\n }\n }\n Object.freeze(processedOrderBy);\n}\n\nexport function stringifyOrderBy(data: DMMF.Model) {\n const annotations = extractAnnotations(data.documentation);\n\n if (annotations.isHidden) return undefined;\n\n const fields = data.fields\n .map((field) => {\n const annotations = extractAnnotations(field.documentation);\n if (annotations.isHidden) return undefined;\n\n if (isPrimitivePrismaFieldType(field.type)) {\n return `${field.name}: ${makeUnion([\n `${getConfig().typeboxImportVariableName}.Literal('asc')`,\n `${getConfig().typeboxImportVariableName}.Literal('desc')`,\n ])}`;\n }\n\n //TODO if this is a many to one relation this is the wrong schema\n // return `${field.name}: ${getConfig().typeboxImportVariableName}.Object({_count: ${makeUnion(\n // [\n // `${getConfig().typeboxImportVariableName}.Literal('asc')`,\n // `${getConfig().typeboxImportVariableName}.Literal('desc')`,\n // ]\n // )}})`;\n })\n .filter((x) => x) as string[];\n\n const ret = `${getConfig().typeboxImportVariableName}.Object({${[\n ...fields,\n ].join(\",\")}},${generateTypeboxOptions({ input: annotations })})\\n`;\n\n return wrapWithPartial(ret);\n}\n", "import { generateTypeboxOptions } from \"../../annotations/options\";\nimport { getConfig } from \"../../config\";\n\nexport function wrapWithArray(input: string) {\n return `${\n getConfig().typeboxImportVariableName\n }.Array(${input}, ${generateTypeboxOptions({ exludeAdditionalProperties: true })})`;\n}\n", "import { getConfig } from \"../../config\";\n\nexport function nullableType() {\n return `import { ${\n getConfig().typeboxImportVariableName\n }, type TSchema } from \"${getConfig().typeboxImportDependencyName}\"\nexport const ${getConfig().nullableName} = <T extends TSchema>(schema: T) => ${\n getConfig().typeboxImportVariableName\n }.Union([${getConfig().typeboxImportVariableName}.Null(), schema])\\n`;\n}\n\nexport function nullableImport() {\n return `import { ${getConfig().nullableName} } from \"./${\n getConfig().nullableName\n }${getConfig().importFileExtension}\"\\n`;\n}\n\nexport function wrapWithNullable(input: string) {\n return `${getConfig().nullableName}(${input})`;\n}\n", "import { getConfig } from \"../../config\";\n\nexport function wrapWithOptional(input: string) {\n return `${getConfig().typeboxImportVariableName}.Optional(${input})`;\n}\n", "import type { DMMF } from \"@prisma/generator-helper\";\nimport {\n extractAnnotations,\n isTypeOverwriteVariant,\n} from \"../annotations/annotations\";\nimport { generateTypeboxOptions } from \"../annotations/options\";\nimport { getConfig } from \"../config\";\nimport type { ProcessedModel } from \"../model\";\nimport { processedEnumsMap } from \"./enum\";\nimport {\n isPrimitivePrismaFieldType,\n type PrimitivePrismaFieldType,\n stringifyPrimitiveType,\n} from \"./primitiveField\";\nimport { wrapWithArray } from \"./wrappers/array\";\nimport { wrapWithNullable } from \"./wrappers/nullable\";\nimport { wrapWithOptional } from \"./wrappers/optional\";\n\nexport const processedPlain: ProcessedModel[] = [];\nexport const processedPlainMap = new Map<string, ProcessedModel>();\n\nexport function processPlain(models: DMMF.Model[] | Readonly<DMMF.Model[]>) {\n for (const m of models) {\n const o = stringifyPlain(m);\n if (o) {\n const model = { name: m.name, stringRepresentation: o };\n processedPlain.push(model);\n processedPlainMap.set(m.name, model);\n }\n }\n Object.freeze(processedPlain);\n}\n\nexport function stringifyPlain(\n data: DMMF.Model,\n isInputModelCreate = false,\n isInputModelUpdate = false,\n) {\n const annotations = extractAnnotations(data.documentation);\n\n if (\n annotations.isHidden ||\n ((isInputModelCreate || isInputModelUpdate) && annotations.isHiddenInput) ||\n (isInputModelCreate && annotations.isHiddenInputCreate) ||\n (isInputModelUpdate && annotations.isHiddenInputUpdate)\n )\n return undefined;\n\n const fields = data.fields\n .map((field) => {\n const annotations = extractAnnotations(field.documentation);\n if (\n annotations.isHidden ||\n ((isInputModelCreate || isInputModelUpdate) &&\n annotations.isHiddenInput) ||\n (isInputModelCreate && annotations.isHiddenInputCreate) ||\n (isInputModelUpdate && annotations.isHiddenInputUpdate)\n )\n return undefined;\n\n // ===============================\n // INPUT MODEL FILTERS\n // ===============================\n // if we generate an input model we want to omit certain fields\n\n if (\n getConfig().ignoreIdOnInputModel &&\n (isInputModelCreate || isInputModelUpdate) &&\n field.isId\n )\n return undefined;\n if (\n getConfig().ignoreCreatedAtOnInputModel &&\n (isInputModelCreate || isInputModelUpdate) &&\n field.name === \"createdAt\" &&\n field.hasDefaultValue\n )\n return undefined;\n if (\n getConfig().ignoreUpdatedAtOnInputModel &&\n (isInputModelCreate || isInputModelUpdate) &&\n field.isUpdatedAt\n )\n return undefined;\n\n if (\n getConfig().ignoreForeignOnInputModel &&\n (isInputModelCreate || isInputModelUpdate) &&\n (field.name.toLowerCase().endsWith(\"id\") ||\n field.name.toLowerCase().endsWith(\"foreign\") ||\n field.name.toLowerCase().endsWith(\"foreignkey\"))\n ) {\n return undefined;\n }\n\n // ===============================\n // INPUT MODEL FILTERS END\n // ===============================\n\n let stringifiedType = \"\";\n\n if (isPrimitivePrismaFieldType(field.type)) {\n const overwrittenType = annotations.annotations\n .filter(isTypeOverwriteVariant)\n .at(0)?.value;\n\n if (overwrittenType) {\n stringifiedType = overwrittenType;\n } else {\n stringifiedType = stringifyPrimitiveType({\n fieldType: field.type as PrimitivePrismaFieldType,\n options: generateTypeboxOptions({\n input: annotations,\n exludeAdditionalProperties: false,\n }),\n });\n }\n } else if (processedEnumsMap.has(field.type)) {\n // biome-ignore lint/style/noNonNullAssertion: we checked this manually\n stringifiedType = processedEnumsMap.get(field.type)!.stringRepresentation;\n } else {\n return undefined;\n }\n\n if (field.isList) {\n stringifiedType = wrapWithArray(stringifiedType);\n }\n\n let madeOptional = false;\n\n if (!field.isRequired) {\n stringifiedType = wrapWithNullable(stringifiedType);\n }\n\n if (\n isInputModelUpdate ||\n (isInputModelCreate && !field.isRequired && !field.hasDefaultValue)\n ) {\n stringifiedType = wrapWithOptional(stringifiedType);\n madeOptional = true;\n }\n\n if (\n !madeOptional &&\n field.hasDefaultValue &&\n (isInputModelCreate || isInputModelUpdate)\n ) {\n stringifiedType = wrapWithOptional(stringifiedType);\n madeOptional = true;\n }\n\n return `${field.name}: ${stringifiedType}`;\n })\n .filter((x) => x) as string[];\n\n return `${getConfig().typeboxImportVariableName}.Object({${[\n ...fields,\n !(isInputModelCreate || isInputModelUpdate)\n ? (getConfig().additionalFieldsPlain ?? [])\n : [],\n ].join(\",\")}},${generateTypeboxOptions({ input: annotations })})\\n`;\n}\n", "import type { DMMF } from \"@prisma/generator-helper\";\nimport type { ProcessedModel } from \"../model\";\nimport { stringifyPlain } from \"./plain\";\n\nexport const processedPlainInputCreate: ProcessedModel[] = [];\n\nexport function processPlainInputCreate(\n models: DMMF.Model[] | Readonly<DMMF.Model[]>,\n) {\n for (const m of models) {\n const o = stringifyPlain(m, true, false);\n if (o) {\n processedPlainInputCreate.push({ name: m.name, stringRepresentation: o });\n }\n }\n Object.freeze(processedPlainInputCreate);\n}\n", "import type { DMMF } from \"@prisma/generator-helper\";\nimport type { ProcessedModel } from \"../model\";\nimport { stringifyPlain } from \"./plain\";\n\nexport const processedPlainInputUpdate: ProcessedModel[] = [];\n\nexport function processPlainInputUpdate(\n models: DMMF.Model[] | Readonly<DMMF.Model[]>,\n) {\n for (const m of models) {\n const o = stringifyPlain(m, false, true);\n if (o) {\n processedPlainInputUpdate.push({ name: m.name, stringRepresentation: o });\n }\n }\n Object.freeze(processedPlainInputUpdate);\n}\n", "import type { DMMF } from \"@prisma/generator-helper\";\nimport { extractAnnotations } from \"../annotations/annotations\";\nimport { generateTypeboxOptions } from \"../annotations/options\";\nimport { getConfig } from \"../config\";\nimport type { ProcessedModel } from \"../model\";\nimport { processedEnumsMap } from \"./enum\";\nimport { processedPlainMap } from \"./plain\";\nimport { isPrimitivePrismaFieldType } from \"./primitiveField\";\nimport { wrapWithArray } from \"./wrappers/array\";\nimport { wrapWithNullable } from \"./wrappers/nullable\";\nimport { wrapWithPartial } from \"./wrappers/partial\";\n\nexport const processedRelations: ProcessedModel[] = [];\n\nexport function processRelations(\n models: DMMF.Model[] | Readonly<DMMF.Model[]>,\n) {\n for (const m of models) {\n const o = stringifyRelations(m);\n if (o) {\n processedRelations.push({ name: m.name, stringRepresentation: o });\n }\n }\n Object.freeze(processedRelations);\n}\n\nexport function stringifyRelations(data: DMMF.Model) {\n const annotations = extractAnnotations(data.documentation);\n if (annotations.isHidden) return undefined;\n\n const fields = data.fields\n .map((field) => {\n const annotations = extractAnnotations(field.documentation);\n\n if (\n annotations.isHidden ||\n isPrimitivePrismaFieldType(field.type) ||\n processedEnumsMap.has(field.type)\n ) {\n return undefined;\n }\n\n let stringifiedType = processedPlainMap.get(\n field.type,\n )?.stringRepresentation;\n\n if (!stringifiedType) {\n return undefined;\n }\n\n if (field.isList) {\n stringifiedType = wrapWithArray(stringifiedType);\n }\n\n if (!field.isRequired) {\n stringifiedType = wrapWithNullable(stringifiedType);\n }\n\n return `${field.name}: ${stringifiedType}`;\n })\n .filter((x) => x) as string[];\n\n return `${getConfig().typeboxImportVariableName}.Object({${fields.join(\n \",\",\n )}},${generateTypeboxOptions({ input: annotations })})\\n`;\n}\n\nexport const processedRelationsInputCreate: ProcessedModel[] = [];\n\nexport function processRelationsInputCreate(\n models: DMMF.Model[] | Readonly<DMMF.Model[]>,\n) {\n const modelsMap = new Map<string, DMMF.Model>();\n for (const m of models) {\n modelsMap.set(m.name, m);\n }\n for (const m of models) {\n const o = stringifyRelationsInputCreate(m, modelsMap);\n if (o) {\n processedRelationsInputCreate.push({\n name: m.name,\n stringRepresentation: o,\n });\n }\n }\n Object.freeze(processedRelationsInputCreate);\n}\n\nexport function stringifyRelationsInputCreate(\n data: DMMF.Model,\n allModels: Map<string, DMMF.Model>,\n) {\n const annotations = extractAnnotations(data.documentation);\n if (\n annotations.isHidden ||\n annotations.isHiddenInput ||\n annotations.isHiddenInputCreate\n )\n return undefined;\n\n const fields = data.fields\n .map((field) => {\n const annotations = extractAnnotations(field.documentation);\n\n if (\n annotations.isHidden ||\n annotations.isHiddenInput ||\n annotations.isHiddenInputCreate ||\n isPrimitivePrismaFieldType(field.type) ||\n processedEnumsMap.has(field.type)\n ) {\n return undefined;\n }\n\n let typeboxIdType = \"String\";\n\n const relatedIdType = allModels\n .get(field.type)\n ?.fields.find((f) => f.isId)?.type;\n\n switch (relatedIdType) {\n case \"String\":\n typeboxIdType = \"String\";\n break;\n case \"Int\":\n typeboxIdType = \"Integer\";\n break;\n case \"BigInt\":\n typeboxIdType = \"Integer\";\n break;\n default:\n // Skip relation fields pointing to models without a simple @id\n return undefined;\n }\n\n let connectString = `${getConfig().typeboxImportVariableName}.Object({\n\t\t\t\tid: ${\n getConfig().typeboxImportVariableName\n }.${typeboxIdType}(${generateTypeboxOptions({ input: annotations })}),\n\t\t\t},${generateTypeboxOptions({ input: annotations })})`;\n\n if (field.isList) {\n connectString = wrapWithArray(connectString);\n }\n\n let stringifiedType = `${getConfig().typeboxImportVariableName}.Object({\n\t\t\t\tconnect: ${connectString},\n\t\t\t}, ${generateTypeboxOptions()})`;\n\n if (!field.isRequired || field.isList) {\n stringifiedType = `${\n getConfig().typeboxImportVariableName\n }.Optional(${stringifiedType})`;\n }\n\n return `${field.name}: ${stringifiedType}`;\n })\n .filter((x) => x) as string[];\n\n return `${getConfig().typeboxImportVariableName}.Object({${fields.join(\n \",\",\n )}},${generateTypeboxOptions({ input: annotations })})\\n`;\n}\n\nexport const processedRelationsInputUpdate: ProcessedModel[] = [];\n\nexport function processRelationsInputUpdate(\n models: DMMF.Model[] | Readonly<DMMF.Model[]>,\n) {\n const modelsMap = new Map<string, DMMF.Model>();\n for (const m of models) {\n modelsMap.set(m.name, m);\n }\n for (const m of models) {\n const o = stringifyRelationsInputUpdate(m, modelsMap);\n if (o) {\n processedRelationsInputUpdate.push({\n name: m.name,\n stringRepresentation: o,\n });\n }\n }\n Object.freeze(processedRelationsInputUpdate);\n}\n\nexport function stringifyRelationsInputUpdate(\n data: DMMF.Model,\n allModels: Map<string, DMMF.Model>,\n) {\n const annotations = extractAnnotations(data.documentation);\n if (\n annotations.isHidden ||\n annotations.isHiddenInput ||\n annotations.isHiddenInputUpdate\n )\n return undefined;\n\n const fields = data.fields\n .map((field) => {\n const annotations = extractAnnotations(field.documentation);\n\n if (\n annotations.isHidden ||\n annotations.isHiddenInput ||\n annotations.isHiddenInputUpdate ||\n isPrimitivePrismaFieldType(field.type) ||\n processedEnumsMap.has(field.type)\n ) {\n return undefined;\n }\n\n let typeboxIdType = \"String\";\n\n const relatedIdType = allModels\n .get(field.type)\n ?.fields.find((f) => f.isId)?.type;\n\n switch (relatedIdType) {\n case \"String\":\n typeboxIdType = \"String\";\n break;\n case \"Int\":\n typeboxIdType = \"Integer\";\n break;\n case \"BigInt\":\n typeboxIdType = \"Integer\";\n break;\n default:\n // Skip relation fields pointing to models without a simple @id\n return undefined;\n }\n\n let stringifiedType: string;\n\n if (field.isList) {\n stringifiedType = wrapWithPartial(`${\n getConfig().typeboxImportVariableName\n }.Object({\n\t\t\t\t\t\tconnect: ${wrapWithArray(`${getConfig().typeboxImportVariableName}.Object({\n\t\t\t\t\t\t\t\tid: ${\n getConfig().typeboxImportVariableName\n }.${typeboxIdType}(${generateTypeboxOptions({ input: annotations })})\n\t\t\t\t\t\t\t}, ${generateTypeboxOptions({ input: annotations })})`)},\n\t\t\t\t\t\tdisconnect: ${wrapWithArray(`${getConfig().typeboxImportVariableName}.Object({\n\t\t\t\t\t\t\t\tid: ${\n getConfig().typeboxImportVariableName\n }.${typeboxIdType}(${generateTypeboxOptions({ input: annotations })})\n\t\t\t\t\t\t\t}, ${generateTypeboxOptions({ input: annotations })})`)}\n\t\t\t\t\t}, ${generateTypeboxOptions({ input: annotations })})`);\n } else {\n if (field.isRequired) {\n stringifiedType = `${getConfig().typeboxImportVariableName}.Object({\n\t\t\t\t\t\tconnect: ${getConfig().typeboxImportVariableName}.Object({\n\t\t\t\t\t\t\tid: ${\n getConfig().typeboxImportVariableName\n }.${typeboxIdType}(${generateTypeboxOptions({ input: annotations })})\n\t\t\t\t\t\t}, ${generateTypeboxOptions({ input: annotations })})\n\t\t\t\t\t}, ${generateTypeboxOptions({ input: annotations })})`;\n } else {\n stringifiedType = wrapWithPartial(`${\n getConfig().typeboxImportVariableName\n }.Object({\n\t\t\t\t\t\tconnect: ${getConfig().typeboxImportVariableName}.Object({\n\t\t\t\t\t\t\tid: ${\n getConfig().typeboxImportVariableName\n }.${typeboxIdType}(${generateTypeboxOptions({ input: annotations })})\n\t\t\t\t\t\t}, ${generateTypeboxOptions({ input: annotations })}),\n\t\t\t\t\t\tdisconnect: ${getConfig().typeboxImportVariableName}.Boolean()\n\t\t\t\t\t}, ${generateTypeboxOptions({ input: annotations })})`);\n }\n }\n\n return `${field.name}: ${stringifiedType}`;\n })\n .filter((x) => x) as string[];\n\n return wrapWithPartial(\n `${getConfig().typeboxImportVariableName}.Object({${fields.join(\n \",\",\n )}},${generateTypeboxOptions({ input: annotations })})`,\n );\n}\n", "import type { DMMF } from \"@prisma/generator-helper\";\nimport { extractAnnotations } from \"../annotations/annotations\";\nimport { generateTypeboxOptions } from \"../annotations/options\";\nimport { getConfig } from \"../config\";\nimport type { ProcessedModel } from \"../model\";\nimport { wrapWithPartial } from \"./wrappers/partial\";\n\nexport const processedSelect: ProcessedModel[] = [];\n\nexport function processSelect(models: DMMF.Model[] | Readonly<DMMF.Model[]>) {\n for (const m of models) {\n const o = stringifySelect(m);\n if (o) {\n processedSelect.push({ name: m.name, stringRepresentation: o });\n }\n }\n Object.freeze(processedSelect);\n}\n\nexport function stringifySelect(data: DMMF.Model) {\n const annotations = extractAnnotations(data.documentation);\n\n if (annotations.isHidden) return undefined;\n\n const fields = data.fields\n .map((field) => {\n const annotations = extractAnnotations(field.documentation);\n if (annotations.isHidden) return undefined;\n\n return `${field.name}: ${getConfig().typeboxImportVariableName}.Boolean()`;\n })\n .filter((x) => x) as string[];\n\n fields.push(`_count: ${getConfig().typeboxImportVariableName}.Boolean()`);\n\n const ret = `${getConfig().typeboxImportVariableName}.Object({${[\n ...fields,\n ].join(\",\")}},${generateTypeboxOptions({ input: annotations })})\\n`;\n\n return wrapWithPartial(ret);\n}\n", "import { generateTypeboxOptions } from \"../../annotations/options\";\nimport { getConfig } from \"../../config\";\n\nexport function makeIntersection(\n inputModels: string[],\n options = generateTypeboxOptions({ exludeAdditionalProperties: true }),\n) {\n return `${getConfig().typeboxImportVariableName}.Intersect([${inputModels.join(\n \",\",\n )}], ${options})\\n`;\n}\n", "import type { DMMF } from \"@prisma/generator-helper\";\nimport {\n extractAnnotations,\n isTypeOverwriteVariant,\n} from \"../annotations/annotations\";\nimport { generateTypeboxOptions } from \"../annotations/options\";\nimport { getConfig } from \"../config\";\nimport type { ProcessedModel } from \"../model\";\nimport { processedEnumsMap } from \"./enum\";\nimport {\n isPrimitivePrismaFieldType,\n type PrimitivePrismaFieldType,\n stringifyPrimitiveType,\n} from \"./primitiveField\";\nimport { wrapWithArray } from \"./wrappers/array\";\nimport { makeIntersection } from \"./wrappers/intersect\";\nimport { wrapWithPartial } from \"./wrappers/partial\";\nimport { makeUnion } from \"./wrappers/union\";\n\nconst selfReferenceName = \"Self\";\n\nexport const processedWhere: ProcessedModel[] = [];\n\nexport function processWhere(models: DMMF.Model[] | Readonly<DMMF.Model[]>) {\n for (const m of models) {\n const o = stringifyWhere(m);\n if (o) {\n processedWhere.push({ name: m.name, stringRepresentation: o });\n }\n }\n Object.freeze(processedWhere);\n}\n\nexport function stringifyWhere(data: DMMF.Model) {\n const annotations = extractAnnotations(data.documentation);\n if (annotations.isHidden) return undefined;\n\n const fields = data.fields\n .map((field) => {\n const annotations = extractAnnotations(field.documentation);\n if (annotations.isHidden) return undefined;\n\n let stringifiedType = \"\";\n\n if (isPrimitivePrismaFieldType(field.type)) {\n const overwrittenType = annotations.annotations\n .filter(isTypeOverwriteVariant)\n .at(0)?.value;\n\n if (overwrittenType) {\n stringifiedType = overwrittenType;\n } else {\n stringifiedType = stringifyPrimitiveType({\n fieldType: field.type as PrimitivePrismaFieldType,\n options: generateTypeboxOptions({\n exludeAdditionalProperties: false,\n input: annotations,\n }),\n });\n }\n } else if (processedEnumsMap.has(field.type)) {\n // biome-ignore lint/style/noNonNullAssertion: we checked this manually\n stringifiedType = processedEnumsMap.get(field.type)!.stringRepresentation;\n } else {\n return undefined;\n }\n\n if (field.isList) {\n stringifiedType = wrapWithArray(stringifiedType);\n }\n\n return `${field.name}: ${stringifiedType}`;\n })\n .filter((x) => x) as string[];\n\n if (getConfig().allowRecursion) {\n return wrapWithPartial(\n `${\n getConfig().typeboxImportVariableName\n }.Recursive(${selfReferenceName} =>${\n getConfig().typeboxImportVariableName\n }.Object({${AND_OR_NOT()},${fields.join(\",\")}},${generateTypeboxOptions({\n exludeAdditionalProperties: true,\n input: annotations,\n })}), { $id: \"${data.name}\"})`,\n );\n }\n\n return wrapWithPartial(\n `${getConfig().typeboxImportVariableName}.Object({${fields.join(\n \",\",\n )}},${generateTypeboxOptions({ exludeAdditionalProperties: true, input: annotations })})`,\n );\n}\n\nexport const processedWhereUnique: ProcessedModel[] = [];\n\nexport function processWhereUnique(\n models: DMMF.Model[] | Readonly<DMMF.Model[]>,\n) {\n for (const m of models) {\n const o = stringifyWhereUnique(m);\n if (o) {\n processedWhereUnique.push({ name: m.name, stringRepresentation: o });\n }\n }\n Object.freeze(processedWhereUnique);\n}\n\nexport function stringifyWhereUnique(data: DMMF.Model) {\n const annotations = extractAnnotations(data.documentation);\n if (annotations.isHidden) return undefined;\n\n const uniqueCompositeFields = data.uniqueFields\n .filter((fields) => fields.length > 1)\n .map((fields) => {\n const compositeName = fields.join(\"_\");\n const fieldObjects = fields.map(\n // biome-ignore lint/style/noNonNullAssertion: this must exist\n (f) => data.fields.find((field) => field.name === f)!,\n );\n\n const stringifiedFieldObjects = fieldObjects.map((f) => {\n const annotations = extractAnnotations(f.documentation);\n if (annotations.isHidden) return undefined;\n let stringifiedType = \"\";\n\n if (isPrimitivePrismaFieldType(f.type)) {\n const overwrittenType = annotations.annotations\n .filter(isTypeOverwriteVariant)\n .at(0)?.value;\n\n if (overwrittenType) {\n stringifiedType = overwrittenType;\n } else {\n stringifiedType = stringifyPrimitiveType({\n fieldType: f.type as PrimitivePrismaFieldType,\n options: generateTypeboxOptions({\n exludeAdditionalProperties: false,\n input: annotations,\n }),\n });\n }\n } else if (processedEnumsMap.has(f.type)) {\n // biome-ignore lint/style/noNonNullAssertion: we checked this manually\n stringifiedType = processedEnumsMap.get(f.type)!.stringRepresentation;\n } else {\n throw new Error(\"Invalid type for unique composite generation\");\n }\n\n return `${f.name}: ${stringifiedType}`;\n });\n\n const compositeObject = `${\n getConfig().typeboxImportVariableName\n }.Object({${stringifiedFieldObjects.join(\n \",\",\n )}}, ${generateTypeboxOptions({ exludeAdditionalProperties: true })})`;\n\n return `${compositeName}: ${compositeObject}`;\n });\n\n const allFields = data.fields\n .map((field) => {\n const annotations = extractAnnotations(field.documentation);\n if (annotations.isHidden) return undefined;\n\n let stringifiedType = \"\";\n\n if (isPrimitivePrismaFieldType(field.type)) {\n const overwrittenType = annotations.annotations\n .filter(isTypeOverwriteVariant)\n .at(0)?.value;\n\n if (overwrittenType) {\n stringifiedType = overwrittenType;\n } else {\n stringifiedType = stringifyPrimitiveType({\n fieldType: field.type as PrimitivePrismaFieldType,\n options: generateTypeboxOptions({\n exludeAdditionalProperties: false,\n input: annotations,\n }),\n });\n }\n } else if (processedEnumsMap.has(field.type)) {\n // biome-ignore lint/style/noNonNullAssertion: we checked this manually\n stringifiedType = processedEnumsMap.get(field.type)!.stringRepresentation;\n } else {\n return undefined;\n }\n\n if (field.isList) {\n stringifiedType = wrapWithArray(stringifiedType);\n }\n\n return `${field.name}: ${stringifiedType}`;\n })\n .filter((x) => x) as string[];\n\n const uniqueFields = data.fields\n .map((field) => {\n const annotations = extractAnnotations(field.documentation);\n if (annotations.isHidden) return undefined;\n if (!field.isUnique && !field.isId) return undefined;\n\n let stringifiedType = \"\";\n\n if (isPrimitivePrismaFieldType(field.type)) {\n const overwrittenType = annotations.annotations\n .filter(isTypeOverwriteVariant)\n .at(0)?.value;\n\n if (overwrittenType) {\n stringifiedType = overwrittenType;\n } else {\n stringifiedType = stringifyPrimitiveType({\n fieldType: field.type as PrimitivePrismaFieldType,\n options: generateTypeboxOptions({\n exludeAdditionalProperties: false,\n input: annotations,\n }),\n });\n }\n } else if (processedEnumsMap.has(field.type)) {\n // biome-ignore lint/style/noNonNullAssertion: we checked this manually\n stringifiedType = processedEnumsMap.get(field.type)!.stringRepresentation;\n } else {\n return undefined;\n }\n\n if (field.isList) {\n stringifiedType = wrapWithArray(stringifiedType);\n }\n\n return `${field.name}: ${stringifiedType}`;\n })\n .filter((x) => x) as string[];\n\n const uniqueBaseObject = `${getConfig().typeboxImportVariableName}.Object({${[\n ...uniqueFields,\n ...uniqueCompositeFields,\n ].join(\n \",\",\n )}},${generateTypeboxOptions({ exludeAdditionalProperties: true, input: annotations })})`;\n\n if (getConfig().allowRecursion) {\n return `${\n getConfig().typeboxImportVariableName\n }.Recursive(${selfReferenceName} => ${makeIntersection([\n wrapWithPartial(uniqueBaseObject, true),\n makeUnion(\n [...uniqueFields, ...uniqueCompositeFields].map(\n (f) => `${getConfig().typeboxImportVariableName}.Object({${f}})`,\n ),\n ),\n wrapWithPartial(\n `${getConfig().typeboxImportVariableName}.Object({${AND_OR_NOT()}})`,\n true,\n ),\n wrapWithPartial(\n `${\n getConfig().typeboxImportVariableName\n }.Object({${allFields.join(\",\")}}, ${generateTypeboxOptions()})`,\n ),\n ])}, { $id: \"${data.name}\"})`;\n }\n\n return makeIntersection([\n wrapWithPartial(uniqueBaseObject, true),\n makeUnion(\n [...uniqueFields, ...uniqueCompositeFields].map(\n (f) => `${getConfig().typeboxImportVariableName}.Object({${f}})`,\n ),\n ),\n wrapWithPartial(\n `${getConfig().typeboxImportVariableName}.Object({${allFields.join(\n \",\",\n )}})`,\n ),\n ]);\n}\n\nfunction AND_OR_NOT() {\n return `AND: ${\n getConfig().typeboxImportVariableName\n }.Union([${selfReferenceName}, ${wrapWithArray(selfReferenceName)}]),\n\tNOT: ${\n getConfig().typeboxImportVariableName\n }.Union([${selfReferenceName}, ${wrapWithArray(selfReferenceName)}]),\n\tOR: ${wrapWithArray(selfReferenceName)}`;\n}\n", "import { writeFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { generateBarrelFile } from \"./barrel\";\nimport { getConfig } from \"./config\";\nimport { format } from \"./format\";\nimport { mapAllModelsForWrite } from \"./model\";\n\nexport async function write() {\n const mappings = Array.from(mapAllModelsForWrite().entries());\n\n // Process files sequentially to avoid overwhelming CPU/memory\n // in resource-constrained environments (e.g. Docker containers)\n for (const [name, content] of mappings) {\n await writeFile(\n join(getConfig().output, `${name}.ts`),\n await format(content),\n );\n }\n\n await writeFile(\n join(getConfig().output, \"barrel.ts\"),\n await format(generateBarrelFile(mappings.map(([key]) => key))),\n );\n}\n", "import { getConfig } from \"./config\";\n\nexport function generateBarrelFile(imports: string[]) {\n return imports\n .map((i) => `export * from \"./${i}${getConfig().importFileExtension}\";`)\n .join(\"\\n\");\n}\n", "import { format as prettierFormat } from \"prettier\";\n\nexport async function format(input: string) {\n try {\n return await prettierFormat(input, { parser: \"typescript\" });\n } catch (error) {\n console.error(\"Error formatting file\", error);\n return input;\n }\n}\n", "import { getConfig } from \"../config\";\n\nexport function transformDateType() {\n return `import { ${getConfig().typeboxImportVariableName} } from \"${getConfig().typeboxImportDependencyName}\";\n export const ${getConfig().transformDateName} = (options?: Parameters<typeof ${getConfig().typeboxImportVariableName}.String>[0]) => ${\n getConfig().typeboxImportVariableName\n }.Transform(${getConfig().typeboxImportVariableName}.String({ format: 'date-time', ...options }))\n .Decode((value) => new Date(value))\n .Encode((value) => value.toISOString())\\n`;\n}\n\nexport function transformDateImportStatement() {\n return `import { ${getConfig().transformDateName} } from \"./${\n getConfig().transformDateName\n }${getConfig().importFileExtension}\"\\n`;\n}\n", "import { generateTypeboxOptions } from \"../../annotations/options\";\nimport { getConfig } from \"../../config\";\n\nexport function makeComposite(inputModels: string[]) {\n return `${\n getConfig().typeboxImportVariableName\n }.Composite([${inputModels.map((i) => `${getConfig().exportedTypePrefix}${i}`).join(\",\")}], ${generateTypeboxOptions()})\\n`;\n}\n", "import { getConfig } from \"./config\";\nimport { processedEnums } from \"./generators/enum\";\nimport { processedInclude } from \"./generators/include\";\nimport { processedOrderBy } from \"./generators/orderBy\";\nimport { processedPlain, processedPlainMap } from \"./generators/plain\";\nimport { processedPlainInputCreate } from \"./generators/plainInputCreate\";\nimport { processedPlainInputUpdate } from \"./generators/plainInputUpdate\";\nimport {\n processedRelations,\n processedRelationsInputCreate,\n processedRelationsInputUpdate,\n} from \"./generators/relations\";\nimport { processedSelect } from \"./generators/select\";\nimport {\n transformDateImportStatement,\n transformDateType,\n} from \"./generators/transformDate\";\nimport { processedWhere, processedWhereUnique } from \"./generators/where\";\nimport { makeComposite } from \"./generators/wrappers/composite\";\nimport { nullableImport, nullableType } from \"./generators/wrappers/nullable\";\n\nexport type ProcessedModel = {\n name: string;\n stringRepresentation: string;\n};\n\nfunction convertModelToStandalone(\n input: Pick<ProcessedModel, \"name\" | \"stringRepresentation\">,\n) {\n return `export const ${getConfig().exportedTypePrefix}${input.name} = ${input.stringRepresentation}\\n`;\n}\n\nfunction typepoxImportStatement() {\n return `import { ${getConfig().typeboxImportVariableName} } from \"${\n getConfig().typeboxImportDependencyName\n }\"\\n`;\n}\n\nexport function mapAllModelsForWrite() {\n const modelsPerName = new Map<\n ProcessedModel[\"name\"],\n ProcessedModel[\"stringRepresentation\"]\n >();\n\n const process = (models: ProcessedModel[], suffix: string) => {\n for (const processedModel of models) {\n const standalone = convertModelToStandalone({\n ...processedModel,\n name: `${processedModel.name}${suffix}`,\n });\n const current = modelsPerName.get(processedModel.name);\n if (current) {\n modelsPerName.set(processedModel.name, `${current}\\n${standalone}`);\n } else {\n modelsPerName.set(processedModel.name, standalone);\n }\n }\n };\n\n process(processedEnums, \"\");\n process(processedPlain, \"Plain\");\n process(processedRelations, \"Relations\");\n process(processedPlainInputCreate, \"PlainInputCreate\");\n process(processedPlainInputUpdate, \"PlainInputUpdate\");\n process(processedRelationsInputCreate, \"RelationsInputCreate\");\n process(processedRelationsInputUpdate, \"RelationsInputUpdate\");\n process(processedWhere, \"Where\");\n process(processedWhereUnique, \"WhereUnique\");\n process(processedSelect, \"Select\");\n process(processedInclude, \"Include\");\n process(processedOrderBy, \"OrderBy\");\n\n const relationsSet = new Set(processedRelations.map((e) => e.name));\n const relationsInputCreateSet = new Set(\n processedRelationsInputCreate.map((e) => e.name),\n );\n const relationsInputUpdateSet = new Set(\n processedRelationsInputUpdate.map((e) => e.name),\n );\n\n for (const [key, value] of modelsPerName) {\n const hasPlain = processedPlainMap.has(key);\n const hasRelations = relationsSet.has(key);\n let composite: string;\n if (hasPlain && hasRelations) {\n composite = makeComposite([`${key}Plain`, `${key}Relations`]);\n } else if (hasPlain) {\n composite = `${key}Plain`;\n } else if (hasRelations) {\n composite = `${key}Relations`;\n } else {\n continue;\n }\n\n modelsPerName.set(\n key,\n `${value}\\n${convertModelToStandalone({\n name: key,\n stringRepresentation: composite,\n })}`,\n );\n }\n\n for (const [key, value] of modelsPerName) {\n if (relationsInputCreateSet.has(key)) {\n const composite = makeComposite([\n `${key}PlainInputCreate`,\n `${key}RelationsInputCreate`,\n ]);\n modelsPerName.set(\n key,\n `${value}\\n${convertModelToStandalone({\n name: `${key}InputCreate`,\n stringRepresentation: composite,\n })}`,\n );\n }\n }\n\n for (const [key, value] of modelsPerName) {\n if (relationsInputUpdateSet.has(key)) {\n const composite = makeComposite([\n `${key}PlainInputUpdate`,\n `${key}RelationsInputUpdate`,\n ]);\n modelsPerName.set(\n key,\n `${value}\\n${convertModelToStandalone({\n name: `${key}InputUpdate`,\n stringRepresentation: composite,\n })}`,\n );\n }\n }\n\n for (const [key, value] of modelsPerName) {\n modelsPerName.set(\n key,\n `${typepoxImportStatement()}\\n${transformDateImportStatement()}\\n${nullableImport()}\\n${value}`,\n );\n }\n\n modelsPerName.set(getConfig().nullableName, nullableType());\n modelsPerName.set(getConfig().transformDateName, transformDateType());\n\n return modelsPerName;\n}\n"],
5
- "mappings": "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",
6
- "names": ["import_promises", "import_generator_helper", "import_typebox", "import_value", "configSchema", "config", "setConfig", "input", "error", "getConfig", "isOptionsVariant", "annotation", "isTypeOverwriteVariant", "annotationKeys", "extractAnnotations", "input", "annotations", "description", "raw", "line", "l", "annotationKey", "key", "k", "isHidden", "isHiddenInput", "isHiddenInputCreate", "isHiddenInputUpdate", "a", "generateTypeboxOptions", "input", "exludeAdditionalProperties", "getConfig", "stringifiedOptions", "annotation", "isOptionsVariant", "makeUnion", "inputModels", "options", "generateTypeboxOptions", "getConfig", "processedEnums", "processedEnumsMap", "processEnums", "enums", "e", "stringRepresentation", "stringifyEnum", "model", "data", "annotations", "extractAnnotations", "variantsString", "v", "getConfig", "makeUnion", "generateTypeboxOptions", "PrimitiveFields", "isPrimitivePrismaFieldType", "str", "stringifyPrimitiveType", "fieldType", "options", "getConfig", "config", "opts", "wrapWithPartial", "input", "exludeAdditionalPropertiesInOptions", "getConfig", "generateTypeboxOptions", "processedInclude", "processInclude", "models", "m", "o", "stringifyInclude", "data", "annotations", "extractAnnotations", "fields", "field", "isPrimitivePrismaFieldType", "getConfig", "x", "ret", "generateTypeboxOptions", "wrapWithPartial", "processedOrderBy", "processOrderBy", "models", "m", "o", "stringifyOrderBy", "data", "annotations", "extractAnnotations", "fields", "field", "isPrimitivePrismaFieldType", "makeUnion", "getConfig", "x", "ret", "generateTypeboxOptions", "wrapWithPartial", "wrapWithArray", "input", "getConfig", "generateTypeboxOptions", "nullableType", "getConfig", "nullableImport", "wrapWithNullable", "input", "wrapWithOptional", "input", "getConfig", "processedPlain", "processedPlainMap", "processPlain", "models", "m", "o", "stringifyPlain", "model", "data", "isInputModelCreate", "isInputModelUpdate", "annotations", "extractAnnotations", "fields", "field", "getConfig", "stringifiedType", "isPrimitivePrismaFieldType", "overwrittenType", "isTypeOverwriteVariant", "stringifyPrimitiveType", "generateTypeboxOptions", "processedEnumsMap", "wrapWithArray", "madeOptional", "wrapWithNullable", "wrapWithOptional", "x", "processedPlainInputCreate", "processPlainInputCreate", "models", "m", "o", "stringifyPlain", "processedPlainInputUpdate", "processPlainInputUpdate", "models", "m", "o", "stringifyPlain", "processedRelations", "processRelations", "models", "m", "o", "stringifyRelations", "data", "annotations", "extractAnnotations", "fields", "field", "isPrimitivePrismaFieldType", "processedEnumsMap", "stringifiedType", "processedPlainMap", "wrapWithArray", "wrapWithNullable", "x", "getConfig", "generateTypeboxOptions", "processedRelationsInputCreate", "processRelationsInputCreate", "modelsMap", "stringifyRelationsInputCreate", "allModels", "typeboxIdType", "f", "connectString", "processedRelationsInputUpdate", "processRelationsInputUpdate", "stringifyRelationsInputUpdate", "wrapWithPartial", "processedSelect", "processSelect", "models", "m", "o", "stringifySelect", "data", "annotations", "extractAnnotations", "fields", "field", "getConfig", "x", "ret", "generateTypeboxOptions", "wrapWithPartial", "makeIntersection", "inputModels", "options", "generateTypeboxOptions", "getConfig", "selfReferenceName", "processedWhere", "processWhere", "models", "m", "o", "stringifyWhere", "data", "annotations", "extractAnnotations", "fields", "field", "stringifiedType", "isPrimitivePrismaFieldType", "overwrittenType", "isTypeOverwriteVariant", "stringifyPrimitiveType", "generateTypeboxOptions", "processedEnumsMap", "wrapWithArray", "x", "getConfig", "wrapWithPartial", "AND_OR_NOT", "processedWhereUnique", "processWhereUnique", "stringifyWhereUnique", "uniqueCompositeFields", "compositeName", "stringifiedFieldObjects", "f", "compositeObject", "allFields", "uniqueFields", "uniqueBaseObject", "makeIntersection", "makeUnion", "import_promises", "import_node_path", "generateBarrelFile", "imports", "i", "getConfig", "import_prettier", "format", "input", "prettierFormat", "error", "transformDateType", "getConfig", "transformDateImportStatement", "makeComposite", "inputModels", "getConfig", "i", "generateTypeboxOptions", "convertModelToStandalone", "input", "getConfig", "typepoxImportStatement", "mapAllModelsForWrite", "modelsPerName", "process", "models", "suffix", "processedModel", "standalone", "current", "processedEnums", "processedPlain", "processedRelations", "processedPlainInputCreate", "processedPlainInputUpdate", "processedRelationsInputCreate", "processedRelationsInputUpdate", "processedWhere", "processedWhereUnique", "processedSelect", "processedInclude", "processedOrderBy", "relationsSet", "e", "relationsInputCreateSet", "relationsInputUpdateSet", "key", "value", "hasPlain", "processedPlainMap", "hasRelations", "composite", "makeComposite", "transformDateImportStatement", "nullableImport", "nullableType", "transformDateType", "write", "mappings", "mapAllModelsForWrite", "name", "content", "getConfig", "format", "generateBarrelFile", "key", "options", "setConfig", "getConfig", "processEnums", "processPlain", "processRelations", "processWhere", "processWhereUnique", "processPlainInputCreate", "processPlainInputUpdate", "processRelationsInputCreate", "processRelationsInputUpdate", "processSelect", "processInclude", "processOrderBy", "write"]
3
+ "sources": ["../src/index.ts", "../src/config.ts", "../src/debug.ts", "../src/annotations/annotations.ts", "../src/annotations/options.ts", "../src/generators/wrappers/union.ts", "../src/generators/enum.ts", "../src/generators/primitiveField.ts", "../src/generators/wrappers/partial.ts", "../src/generators/include.ts", "../src/generators/orderBy.ts", "../src/generators/wrappers/array.ts", "../src/generators/wrappers/nullable.ts", "../src/generators/wrappers/optional.ts", "../src/generators/plain.ts", "../src/generators/plainInputCreate.ts", "../src/generators/plainInputUpdate.ts", "../src/generators/relations.ts", "../src/generators/select.ts", "../src/generators/wrappers/intersect.ts", "../src/generators/where.ts", "../src/writer.ts", "../src/barrel.ts", "../src/format.ts", "../src/generators/transformDate.ts", "../src/generators/wrappers/composite.ts", "../src/model.ts"],
4
+ "sourcesContent": ["import { access, mkdir, rm } from \"node:fs/promises\";\nimport { generatorHandler } from \"@prisma/generator-helper\";\nimport { getConfig, setConfig } from \"./config\";\nimport { debug, timed, timedAsync } from \"./debug\";\nimport { processEnums } from \"./generators/enum\";\nimport { processInclude } from \"./generators/include\";\nimport { processOrderBy } from \"./generators/orderBy\";\nimport { processPlain } from \"./generators/plain\";\nimport { processPlainInputCreate } from \"./generators/plainInputCreate\";\nimport { processPlainInputUpdate } from \"./generators/plainInputUpdate\";\nimport {\n processRelations,\n processRelationsInputCreate,\n processRelationsInputUpdate,\n} from \"./generators/relations\";\nimport { processSelect } from \"./generators/select\";\nimport { processWhere, processWhereUnique } from \"./generators/where\";\nimport { write } from \"./writer\";\n\ngeneratorHandler({\n onManifest() {\n return {\n defaultOutput: \"./prismabox\",\n prettyName: \"prismabox\",\n };\n },\n async onGenerate(options) {\n setConfig({\n ...options.generator.config,\n // for some reason, the output is an object with a value key\n output: options.generator.output?.value,\n });\n\n const models = options.dmmf.datamodel.models;\n const enums = options.dmmf.datamodel.enums;\n debug(`output: ${getConfig().output}`);\n debug(`models: ${models.length}, enums: ${enums.length}`);\n debug(`inputModel: ${getConfig().inputModel}`);\n\n try {\n await access(getConfig().output);\n await rm(getConfig().output, { recursive: true });\n } catch (_error) {}\n\n await mkdir(getConfig().output, { recursive: true });\n\n timed(`processEnums: ${enums.length} enums`, () => processEnums(enums));\n timed(`processPlain: ${models.length} models`, () => processPlain(models));\n timed(\"processRelations\", () => processRelations(models));\n timed(\"processWhere\", () => processWhere(models));\n timed(\"processWhereUnique\", () => processWhereUnique(models));\n if (getConfig().inputModel) {\n timed(\"processPlainInputCreate\", () => processPlainInputCreate(models));\n timed(\"processPlainInputUpdate\", () => processPlainInputUpdate(models));\n timed(\"processRelationsInputCreate\", () =>\n processRelationsInputCreate(models),\n );\n timed(\"processRelationsInputUpdate\", () =>\n processRelationsInputUpdate(models),\n );\n }\n timed(\"processSelect\", () => processSelect(models));\n timed(\"processInclude\", () => processInclude(models));\n timed(\"processOrderBy\", () => processOrderBy(models));\n\n await timedAsync(\"write (format + disk)\", () => write());\n\n debug(\"generation complete\");\n },\n});\n", "import { type Static, Type } from \"@sinclair/typebox\";\nimport { Value } from \"@sinclair/typebox/value\";\nimport { debug } from \"./debug\";\n\nconst configSchema = Type.Object(\n {\n /**\n * Where to output the generated files\n */\n output: Type.String({ default: \"./prisma/prismabox\" }),\n /**\n * The name of the variable to import the Type from typebox\n */\n typeboxImportVariableName: Type.String({ default: \"Type\" }),\n /**\n * The name of the dependency to import the Type from typebox\n */\n typeboxImportDependencyName: Type.String({ default: \"@sinclair/typebox\" }),\n /**\n * Whether to allow additional properties in the generated schemes\n */\n additionalProperties: Type.Boolean({ default: false }),\n /**\n * Should the input schemes be generated\n */\n inputModel: Type.Boolean({ default: false }),\n /**\n * Prevents the ID field from being generated in the input model\n */\n ignoreIdOnInputModel: Type.Boolean({ default: true }),\n /**\n * Prevents the createdAt field from being generated in the input model\n */\n ignoreCreatedAtOnInputModel: Type.Boolean({ default: true }),\n /**\n * Prevents the updatedAt field from being generated in the input model\n */\n ignoreUpdatedAtOnInputModel: Type.Boolean({ default: true }),\n /**\n * Prevents the foreignId field from being generated in the input model\n */\n ignoreForeignOnInputModel: Type.Boolean({ default: true }),\n /**\n * How the nullable union should be named\n */\n nullableName: Type.String({ default: \"__nullable__\" }),\n /**\n * Whether to allow recursion in the generated schemes (enabling reduces code size)\n */\n allowRecursion: Type.Boolean({ default: true }),\n /**\n\t\t * Additional fields to add to the generated schemes (must be valid strings in the context of usage)\n\t * @example \n\t * ```prisma\n\t * generator prismabox {\n\t\t\tprovider = \"node ./dist/cli.js\"\n\t\t\t inputModel = true\n\t\t\t output = \"./generated/schema\"\n\t\t\t additionalFieldsPlain = [\"additional: Type.Optional(Type.String())\"]\n\t\t }\n\t ```\n\t\t */\n additionalFieldsPlain: Type.Optional(Type.Array(Type.String())),\n /**\n * How the transform date type should be named\n */\n transformDateName: Type.String({ default: \"__transformDate__\" }),\n /**\n * When enabled, this option ensures that only primitive types are generated as JSON types.\n * This ensures compatibility with tooling that only supports the serilization to JSON primitive types.\n *\n * This can be false (off), true (will result in formatted string type) or \"transformer\" which will use Tybepox transformers\n * to output native JS Date types but transforms those to strings on processing\n *\n * E.g. Date will be of Type String when enabled.\n */\n useJsonTypes: Type.Union([Type.Boolean(), Type.Literal(\"transformer\")], {\n default: false,\n }),\n /**\n * What file extension, if any, to add to src file imports. Set to \".js\" to support nodenext module resolution\n */\n importFileExtension: Type.String({ default: \"\" }),\n /**\n * The prefix to add to exported types\n */\n exportedTypePrefix: Type.String({ default: \"\" }),\n /**\n * Disables Prettier formatting of generated files. Significantly speeds up generation for large schemas.\n */\n disableFormatting: Type.Boolean({ default: false }),\n },\n { additionalProperties: false },\n);\n\n// biome-ignore lint/suspicious/noExplicitAny: we want to set the default value\nlet config: Static<typeof configSchema> = {} as unknown as any;\n\nexport function setConfig(input: unknown) {\n try {\n Value.Clean(configSchema, input);\n Value.Default(configSchema, input);\n config = Value.Decode(configSchema, Value.Convert(configSchema, input));\n debug(`config: inputModel=${config.inputModel}, useJsonTypes=${config.useJsonTypes}, additionalProperties=${config.additionalProperties}`);\n Object.freeze(config);\n } catch (error) {\n console.error(Value.Errors(configSchema, input).First);\n throw error;\n }\n}\nexport function getConfig() {\n return config;\n}\n", "const ENABLED =\n process.env.DEBUG === \"*\" ||\n process.env.DEBUG === \"prismabox\" ||\n (process.env.DEBUG ?? \"\").split(\",\").includes(\"prismabox\");\n\nexport function debug(message: string): void {\n if (!ENABLED) return;\n process.stderr.write(`[prismabox] ${message}\\n`);\n}\n\nexport function timed<T>(label: string, fn: () => T): T {\n if (!ENABLED) return fn();\n const start = performance.now();\n const result = fn();\n const elapsed = (performance.now() - start).toFixed(1);\n process.stderr.write(`[prismabox] ${label} (${elapsed}ms)\\n`);\n return result;\n}\n\nexport async function timedAsync<T>(\n label: string,\n fn: () => Promise<T>,\n): Promise<T> {\n if (!ENABLED) return fn();\n const start = performance.now();\n const result = await fn();\n const elapsed = (performance.now() - start).toFixed(1);\n process.stderr.write(`[prismabox] ${label} (${elapsed}ms)\\n`);\n return result;\n}\n", "import type { DMMF } from \"@prisma/generator-helper\";\n\nexport type Annotation =\n | { type: \"HIDDEN\" }\n | { type: \"HIDDEN_INPUT\" }\n | { type: \"HIDDEN_INPUT_CREATE\" }\n | { type: \"HIDDEN_INPUT_UPDATE\" }\n | { type: \"OPTIONS\"; value: string }\n | { type: \"TYPE_OVERWRITE\"; value: string };\n\nexport function isHiddenVariant(\n annotation: Annotation,\n): annotation is { type: \"HIDDEN\"; value: number } {\n return annotation.type === \"HIDDEN\";\n}\n\nexport function isHiddenInputVariant(\n annotation: Annotation,\n): annotation is { type: \"HIDDEN_INPUT\"; value: number } {\n return annotation.type === \"HIDDEN_INPUT\";\n}\n\nexport function isHiddenInputCreateVariant(\n annotation: Annotation,\n): annotation is { type: \"HIDDEN_INPUT_CREATE\"; value: number } {\n return annotation.type === \"HIDDEN_INPUT_CREATE\";\n}\n\nexport function isHiddenInputUpdateVariant(\n annotation: Annotation,\n): annotation is { type: \"HIDDEN_INPUT_UPDATE\"; value: number } {\n return annotation.type === \"HIDDEN_INPUT_UPDATE\";\n}\n\nexport function isOptionsVariant(\n annotation: Annotation,\n): annotation is { type: \"OPTIONS\"; value: string } {\n return annotation.type === \"OPTIONS\";\n}\n\nexport function isTypeOverwriteVariant(\n annotation: Annotation,\n): annotation is { type: \"TYPE_OVERWRITE\"; value: string } {\n return annotation.type === \"TYPE_OVERWRITE\";\n}\n\nconst annotationKeys: { type: Annotation[\"type\"]; keys: string[] }[] = [\n {\n type: \"HIDDEN_INPUT_CREATE\",\n keys: [\"@prismabox.create.input.hide\", \"@prismabox.create.input.hidden\"],\n },\n {\n type: \"HIDDEN_INPUT_UPDATE\",\n keys: [\"@prismabox.update.input.hide\", \"@prismabox.update.input.hidden\"],\n },\n {\n type: \"HIDDEN_INPUT\",\n keys: [\n // we need to use input.hide instead of hide.input because the latter is a substring of input.hidden\n // and will falsely match\n \"@prismabox.input.hide\",\n \"@prismabox.input.hidden\",\n ],\n },\n {\n type: \"HIDDEN\",\n keys: [\"@prismabox.hide\", \"@prismabox.hidden\"],\n },\n {\n type: \"OPTIONS\",\n keys: [\"@prismabox.options\"],\n },\n {\n type: \"TYPE_OVERWRITE\",\n keys: [\"@prismabox.typeOverwrite\"],\n },\n];\n\nexport function extractAnnotations(\n input: DMMF.Model[\"fields\"][number][\"documentation\"],\n): {\n annotations: Annotation[];\n description: string | undefined;\n isHidden: boolean;\n isHiddenInput: boolean;\n isHiddenInputCreate: boolean;\n isHiddenInputUpdate: boolean;\n} {\n const annotations: Annotation[] = [];\n let description = \"\";\n\n const raw = input ?? \"\";\n\n for (const line of raw\n .split(\"\\n\")\n .map((l) => l.trim())\n .filter((l) => l.length > 0)) {\n const annotationKey = annotationKeys.find((key) =>\n key.keys.some((k) => line.startsWith(k)),\n );\n\n if (annotationKey) {\n if (annotationKey.type === \"OPTIONS\") {\n if (!line.startsWith(`${annotationKey.keys[0]}{`)) {\n throw new Error(\n \"Invalid syntax, expected opening { after prismabox.options\",\n );\n }\n if (!line.endsWith(\"}\")) {\n throw new Error(\n \"Invalid syntax, expected closing } for prismabox.options\",\n );\n }\n\n annotations.push({\n type: \"OPTIONS\",\n value: line.substring(\n annotationKey.keys[0].length + 1,\n line.length - 1,\n ),\n });\n } else if (annotationKey.type === \"TYPE_OVERWRITE\") {\n if (!line.startsWith(`${annotationKey.keys[0]}=`)) {\n throw new Error(\"Invalid syntax, expected = after prismabox.type\");\n }\n\n annotations.push({\n type: \"TYPE_OVERWRITE\",\n value: line.split(\"=\")[1],\n });\n } else {\n annotations.push({ type: annotationKey.type });\n }\n } else {\n description += `${line}\\n`;\n }\n }\n\n description = description.trim().replaceAll(\"`\", \"\\\\`\");\n return {\n annotations,\n description: description.length > 0 ? description : undefined,\n isHidden: isHidden(annotations),\n isHiddenInput: isHiddenInput(annotations),\n isHiddenInputCreate: isHiddenInputCreate(annotations),\n isHiddenInputUpdate: isHiddenInputUpdate(annotations),\n };\n}\n\nexport function isHidden(annotations: Annotation[]): boolean {\n return annotations.some((a) => a.type === \"HIDDEN\");\n}\n\nexport function isHiddenInput(annotations: Annotation[]): boolean {\n return annotations.some((a) => a.type === \"HIDDEN_INPUT\");\n}\n\nexport function isHiddenInputCreate(annotations: Annotation[]): boolean {\n return annotations.some((a) => a.type === \"HIDDEN_INPUT_CREATE\");\n}\n\nexport function isHiddenInputUpdate(annotations: Annotation[]): boolean {\n return annotations.some((a) => a.type === \"HIDDEN_INPUT_UPDATE\");\n}\n", "import { getConfig } from \"../config\";\nimport { type extractAnnotations, isOptionsVariant } from \"./annotations\";\n\nexport function generateTypeboxOptions({\n input,\n exludeAdditionalProperties,\n}: {\n input?: ReturnType<typeof extractAnnotations>;\n exludeAdditionalProperties?: boolean;\n} = {}): string {\n if (exludeAdditionalProperties === undefined) {\n exludeAdditionalProperties = !getConfig().additionalProperties;\n }\n\n const stringifiedOptions: string[] = [];\n for (const annotation of input?.annotations ?? []) {\n if (isOptionsVariant(annotation)) {\n stringifiedOptions.push(annotation.value);\n }\n }\n\n if (exludeAdditionalProperties) {\n stringifiedOptions.push(\n `additionalProperties: ${getConfig().additionalProperties}`,\n );\n }\n\n if (input?.description) {\n stringifiedOptions.push(`description: \\`${input.description}\\``);\n }\n\n return stringifiedOptions.length > 0\n ? `{${stringifiedOptions.join(\",\")}}`\n : \"\";\n}\n", "import { generateTypeboxOptions } from \"../../annotations/options\";\nimport { getConfig } from \"../../config\";\n\nexport function makeUnion(\n inputModels: string[],\n options = generateTypeboxOptions({ exludeAdditionalProperties: true }),\n) {\n return `${getConfig().typeboxImportVariableName}.Union([${inputModels.join(\n \",\",\n )}], ${options})\\n`;\n}\n", "import type { DMMF } from \"@prisma/generator-helper\";\nimport { extractAnnotations } from \"../annotations/annotations\";\nimport { generateTypeboxOptions } from \"../annotations/options\";\nimport { getConfig } from \"../config\";\nimport { debug } from \"../debug\";\nimport type { ProcessedModel } from \"../model\";\nimport { makeUnion } from \"./wrappers/union\";\n\nexport const processedEnums: ProcessedModel[] = [];\nexport const processedEnumsMap = new Map<string, ProcessedModel>();\n\nexport function processEnums(\n enums: DMMF.DatamodelEnum[] | Readonly<DMMF.DatamodelEnum[]>,\n) {\n for (const e of enums) {\n const stringRepresentation = stringifyEnum(e);\n if (stringRepresentation) {\n const model = { name: e.name, stringRepresentation };\n processedEnums.push(model);\n processedEnumsMap.set(e.name, model);\n }\n }\n debug(` enums: ${processedEnums.length} processed`);\n Object.freeze(processedEnums);\n}\n\nexport function stringifyEnum(data: DMMF.DatamodelEnum) {\n const annotations = extractAnnotations(data.documentation);\n if (annotations.isHidden) return undefined;\n\n const variantsString = data.values.map(\n (v) => `${getConfig().typeboxImportVariableName}.Literal('${v.name}')`,\n );\n\n return makeUnion(\n variantsString,\n generateTypeboxOptions({ input: annotations }),\n );\n}\n", "import { getConfig } from \"../config\";\n\nconst PrimitiveFields = [\n \"Int\",\n \"BigInt\",\n \"Float\",\n \"Decimal\",\n \"String\",\n \"DateTime\",\n \"Json\",\n \"Boolean\",\n \"Bytes\",\n] as const;\n\nexport type PrimitivePrismaFieldType = (typeof PrimitiveFields)[number];\n\nexport function isPrimitivePrismaFieldType(\n str: string,\n): str is PrimitivePrismaFieldType {\n // biome-ignore lint/suspicious/noExplicitAny: we want to check if the string is a valid primitive field\n return PrimitiveFields.includes(str as any);\n}\n\nexport function stringifyPrimitiveType({\n fieldType,\n options,\n}: {\n fieldType: PrimitivePrismaFieldType;\n options: string;\n}) {\n if ([\"Int\", \"BigInt\"].includes(fieldType)) {\n return `${getConfig().typeboxImportVariableName}.Integer(${options})`;\n }\n\n if ([\"Float\", \"Decimal\"].includes(fieldType)) {\n return `${getConfig().typeboxImportVariableName}.Number(${options})`;\n }\n\n if (fieldType === \"String\") {\n return `${getConfig().typeboxImportVariableName}.String(${options})`;\n }\n\n if ([\"DateTime\"].includes(fieldType)) {\n const config = getConfig();\n if (config.useJsonTypes === \"transformer\") {\n return `${getConfig().transformDateName}(${options})`;\n }\n\n if (config.useJsonTypes) {\n let opts = options;\n if (opts.includes(\"{\") && opts.includes(\"}\")) {\n opts = opts.replace(\"{\", \"{ format: 'date-time', \");\n } else {\n opts = `{ format: 'date-time' }`;\n }\n return `${config.typeboxImportVariableName}.String(${opts})`;\n }\n\n return `${getConfig().typeboxImportVariableName}.Date(${options})`;\n }\n\n if (fieldType === \"Json\") {\n return `${getConfig().typeboxImportVariableName}.Any(${options})`;\n }\n\n if (fieldType === \"Boolean\") {\n return `${getConfig().typeboxImportVariableName}.Boolean(${options})`;\n }\n\n if (fieldType === \"Bytes\") {\n return `${getConfig().typeboxImportVariableName}.Uint8Array(${options})`;\n }\n\n throw new Error(\"Invalid type for primitive generation\");\n}\n", "import { generateTypeboxOptions } from \"../../annotations/options\";\nimport { getConfig } from \"../../config\";\n\nexport function wrapWithPartial(\n input: string,\n exludeAdditionalPropertiesInOptions = false,\n) {\n return `${\n getConfig().typeboxImportVariableName\n }.Partial(${input}, ${generateTypeboxOptions({ exludeAdditionalProperties: exludeAdditionalPropertiesInOptions })})`;\n}\n", "import type { DMMF } from \"@prisma/generator-helper\";\nimport { extractAnnotations } from \"../annotations/annotations\";\nimport { generateTypeboxOptions } from \"../annotations/options\";\nimport { getConfig } from \"../config\";\nimport type { ProcessedModel } from \"../model\";\nimport { isPrimitivePrismaFieldType } from \"./primitiveField\";\nimport { wrapWithPartial } from \"./wrappers/partial\";\n\nexport const processedInclude: ProcessedModel[] = [];\n\nexport function processInclude(models: DMMF.Model[] | Readonly<DMMF.Model[]>) {\n for (const m of models) {\n const o = stringifyInclude(m);\n if (o) {\n processedInclude.push({ name: m.name, stringRepresentation: o });\n }\n }\n Object.freeze(processedInclude);\n}\n\nexport function stringifyInclude(data: DMMF.Model) {\n const annotations = extractAnnotations(data.documentation);\n\n if (annotations.isHidden) return undefined;\n\n const fields = data.fields\n .map((field) => {\n const annotations = extractAnnotations(field.documentation);\n if (annotations.isHidden) return undefined;\n\n if (isPrimitivePrismaFieldType(field.type)) return undefined;\n\n return `${field.name}: ${getConfig().typeboxImportVariableName}.Boolean()`;\n })\n .filter((x) => x) as string[];\n\n fields.push(`_count: ${getConfig().typeboxImportVariableName}.Boolean()`);\n\n const ret = `${getConfig().typeboxImportVariableName}.Object({${[\n ...fields,\n ].join(\",\")}},${generateTypeboxOptions({ input: annotations })})\\n`;\n\n return wrapWithPartial(ret);\n}\n", "import type { DMMF } from \"@prisma/generator-helper\";\nimport { extractAnnotations } from \"../annotations/annotations\";\nimport { generateTypeboxOptions } from \"../annotations/options\";\nimport { getConfig } from \"../config\";\nimport type { ProcessedModel } from \"../model\";\nimport { isPrimitivePrismaFieldType } from \"./primitiveField\";\nimport { wrapWithPartial } from \"./wrappers/partial\";\nimport { makeUnion } from \"./wrappers/union\";\n\nexport const processedOrderBy: ProcessedModel[] = [];\n\nexport function processOrderBy(models: DMMF.Model[] | Readonly<DMMF.Model[]>) {\n for (const m of models) {\n const o = stringifyOrderBy(m);\n if (o) {\n processedOrderBy.push({ name: m.name, stringRepresentation: o });\n }\n }\n Object.freeze(processedOrderBy);\n}\n\nexport function stringifyOrderBy(data: DMMF.Model) {\n const annotations = extractAnnotations(data.documentation);\n\n if (annotations.isHidden) return undefined;\n\n const fields = data.fields\n .map((field) => {\n const annotations = extractAnnotations(field.documentation);\n if (annotations.isHidden) return undefined;\n\n if (isPrimitivePrismaFieldType(field.type)) {\n return `${field.name}: ${makeUnion([\n `${getConfig().typeboxImportVariableName}.Literal('asc')`,\n `${getConfig().typeboxImportVariableName}.Literal('desc')`,\n ])}`;\n }\n\n //TODO if this is a many to one relation this is the wrong schema\n // return `${field.name}: ${getConfig().typeboxImportVariableName}.Object({_count: ${makeUnion(\n // [\n // `${getConfig().typeboxImportVariableName}.Literal('asc')`,\n // `${getConfig().typeboxImportVariableName}.Literal('desc')`,\n // ]\n // )}})`;\n })\n .filter((x) => x) as string[];\n\n const ret = `${getConfig().typeboxImportVariableName}.Object({${[\n ...fields,\n ].join(\",\")}},${generateTypeboxOptions({ input: annotations })})\\n`;\n\n return wrapWithPartial(ret);\n}\n", "import { generateTypeboxOptions } from \"../../annotations/options\";\nimport { getConfig } from \"../../config\";\n\nexport function wrapWithArray(input: string) {\n return `${\n getConfig().typeboxImportVariableName\n }.Array(${input}, ${generateTypeboxOptions({ exludeAdditionalProperties: true })})`;\n}\n", "import { getConfig } from \"../../config\";\n\nexport function nullableType() {\n return `import { ${\n getConfig().typeboxImportVariableName\n }, type TSchema } from \"${getConfig().typeboxImportDependencyName}\"\nexport const ${getConfig().nullableName} = <T extends TSchema>(schema: T) => ${\n getConfig().typeboxImportVariableName\n }.Union([${getConfig().typeboxImportVariableName}.Null(), schema])\\n`;\n}\n\nexport function nullableImport() {\n return `import { ${getConfig().nullableName} } from \"./${\n getConfig().nullableName\n }${getConfig().importFileExtension}\"\\n`;\n}\n\nexport function wrapWithNullable(input: string) {\n return `${getConfig().nullableName}(${input})`;\n}\n", "import { getConfig } from \"../../config\";\n\nexport function wrapWithOptional(input: string) {\n return `${getConfig().typeboxImportVariableName}.Optional(${input})`;\n}\n", "import type { DMMF } from \"@prisma/generator-helper\";\nimport {\n extractAnnotations,\n isTypeOverwriteVariant,\n} from \"../annotations/annotations\";\nimport { generateTypeboxOptions } from \"../annotations/options\";\nimport { getConfig } from \"../config\";\nimport { debug } from \"../debug\";\nimport type { ProcessedModel } from \"../model\";\nimport { processedEnumsMap } from \"./enum\";\nimport {\n isPrimitivePrismaFieldType,\n type PrimitivePrismaFieldType,\n stringifyPrimitiveType,\n} from \"./primitiveField\";\nimport { wrapWithArray } from \"./wrappers/array\";\nimport { wrapWithNullable } from \"./wrappers/nullable\";\nimport { wrapWithOptional } from \"./wrappers/optional\";\n\nexport const processedPlain: ProcessedModel[] = [];\nexport const processedPlainMap = new Map<string, ProcessedModel>();\n\nexport function processPlain(models: DMMF.Model[] | Readonly<DMMF.Model[]>) {\n for (const m of models) {\n const o = stringifyPlain(m);\n if (o) {\n const model = { name: m.name, stringRepresentation: o };\n processedPlain.push(model);\n processedPlainMap.set(m.name, model);\n }\n }\n debug(` plain: ${processedPlain.length} of ${models.length} models`);\n Object.freeze(processedPlain);\n}\n\nexport function stringifyPlain(\n data: DMMF.Model,\n isInputModelCreate = false,\n isInputModelUpdate = false,\n) {\n const annotations = extractAnnotations(data.documentation);\n\n if (\n annotations.isHidden ||\n ((isInputModelCreate || isInputModelUpdate) && annotations.isHiddenInput) ||\n (isInputModelCreate && annotations.isHiddenInputCreate) ||\n (isInputModelUpdate && annotations.isHiddenInputUpdate)\n )\n return undefined;\n\n const fields = data.fields\n .map((field) => {\n const annotations = extractAnnotations(field.documentation);\n if (\n annotations.isHidden ||\n ((isInputModelCreate || isInputModelUpdate) &&\n annotations.isHiddenInput) ||\n (isInputModelCreate && annotations.isHiddenInputCreate) ||\n (isInputModelUpdate && annotations.isHiddenInputUpdate)\n )\n return undefined;\n\n // ===============================\n // INPUT MODEL FILTERS\n // ===============================\n // if we generate an input model we want to omit certain fields\n\n if (\n getConfig().ignoreIdOnInputModel &&\n (isInputModelCreate || isInputModelUpdate) &&\n field.isId\n )\n return undefined;\n if (\n getConfig().ignoreCreatedAtOnInputModel &&\n (isInputModelCreate || isInputModelUpdate) &&\n field.name === \"createdAt\" &&\n field.hasDefaultValue\n )\n return undefined;\n if (\n getConfig().ignoreUpdatedAtOnInputModel &&\n (isInputModelCreate || isInputModelUpdate) &&\n field.isUpdatedAt\n )\n return undefined;\n\n if (\n getConfig().ignoreForeignOnInputModel &&\n (isInputModelCreate || isInputModelUpdate) &&\n (field.name.toLowerCase().endsWith(\"id\") ||\n field.name.toLowerCase().endsWith(\"foreign\") ||\n field.name.toLowerCase().endsWith(\"foreignkey\"))\n ) {\n return undefined;\n }\n\n // ===============================\n // INPUT MODEL FILTERS END\n // ===============================\n\n let stringifiedType = \"\";\n\n if (isPrimitivePrismaFieldType(field.type)) {\n const overwrittenType = annotations.annotations\n .filter(isTypeOverwriteVariant)\n .at(0)?.value;\n\n if (overwrittenType) {\n stringifiedType = overwrittenType;\n } else {\n stringifiedType = stringifyPrimitiveType({\n fieldType: field.type as PrimitivePrismaFieldType,\n options: generateTypeboxOptions({\n input: annotations,\n exludeAdditionalProperties: false,\n }),\n });\n }\n } else if (processedEnumsMap.has(field.type)) {\n // biome-ignore lint/style/noNonNullAssertion: we checked this manually\n stringifiedType = processedEnumsMap.get(field.type)!.stringRepresentation;\n } else {\n return undefined;\n }\n\n if (field.isList) {\n stringifiedType = wrapWithArray(stringifiedType);\n }\n\n let madeOptional = false;\n\n if (!field.isRequired) {\n stringifiedType = wrapWithNullable(stringifiedType);\n }\n\n if (\n isInputModelUpdate ||\n (isInputModelCreate && !field.isRequired && !field.hasDefaultValue)\n ) {\n stringifiedType = wrapWithOptional(stringifiedType);\n madeOptional = true;\n }\n\n if (\n !madeOptional &&\n field.hasDefaultValue &&\n (isInputModelCreate || isInputModelUpdate)\n ) {\n stringifiedType = wrapWithOptional(stringifiedType);\n madeOptional = true;\n }\n\n return `${field.name}: ${stringifiedType}`;\n })\n .filter((x) => x) as string[];\n\n return `${getConfig().typeboxImportVariableName}.Object({${[\n ...fields,\n !(isInputModelCreate || isInputModelUpdate)\n ? (getConfig().additionalFieldsPlain ?? [])\n : [],\n ].join(\",\")}},${generateTypeboxOptions({ input: annotations })})\\n`;\n}\n", "import type { DMMF } from \"@prisma/generator-helper\";\nimport type { ProcessedModel } from \"../model\";\nimport { stringifyPlain } from \"./plain\";\n\nexport const processedPlainInputCreate: ProcessedModel[] = [];\n\nexport function processPlainInputCreate(\n models: DMMF.Model[] | Readonly<DMMF.Model[]>,\n) {\n for (const m of models) {\n const o = stringifyPlain(m, true, false);\n if (o) {\n processedPlainInputCreate.push({ name: m.name, stringRepresentation: o });\n }\n }\n Object.freeze(processedPlainInputCreate);\n}\n", "import type { DMMF } from \"@prisma/generator-helper\";\nimport type { ProcessedModel } from \"../model\";\nimport { stringifyPlain } from \"./plain\";\n\nexport const processedPlainInputUpdate: ProcessedModel[] = [];\n\nexport function processPlainInputUpdate(\n models: DMMF.Model[] | Readonly<DMMF.Model[]>,\n) {\n for (const m of models) {\n const o = stringifyPlain(m, false, true);\n if (o) {\n processedPlainInputUpdate.push({ name: m.name, stringRepresentation: o });\n }\n }\n Object.freeze(processedPlainInputUpdate);\n}\n", "import type { DMMF } from \"@prisma/generator-helper\";\nimport { extractAnnotations } from \"../annotations/annotations\";\nimport { generateTypeboxOptions } from \"../annotations/options\";\nimport { getConfig } from \"../config\";\nimport { debug } from \"../debug\";\nimport type { ProcessedModel } from \"../model\";\nimport { processedEnumsMap } from \"./enum\";\nimport { processedPlainMap } from \"./plain\";\nimport { isPrimitivePrismaFieldType } from \"./primitiveField\";\nimport { wrapWithArray } from \"./wrappers/array\";\nimport { wrapWithNullable } from \"./wrappers/nullable\";\nimport { wrapWithPartial } from \"./wrappers/partial\";\n\nexport const processedRelations: ProcessedModel[] = [];\n\nexport function processRelations(\n models: DMMF.Model[] | Readonly<DMMF.Model[]>,\n) {\n for (const m of models) {\n const o = stringifyRelations(m);\n if (o) {\n processedRelations.push({ name: m.name, stringRepresentation: o });\n }\n }\n debug(` relations: ${processedRelations.length} of ${models.length} models`);\n Object.freeze(processedRelations);\n}\n\nexport function stringifyRelations(data: DMMF.Model) {\n const annotations = extractAnnotations(data.documentation);\n if (annotations.isHidden) return undefined;\n\n const fields = data.fields\n .map((field) => {\n const annotations = extractAnnotations(field.documentation);\n\n if (\n annotations.isHidden ||\n isPrimitivePrismaFieldType(field.type) ||\n processedEnumsMap.has(field.type)\n ) {\n return undefined;\n }\n\n let stringifiedType = processedPlainMap.get(\n field.type,\n )?.stringRepresentation;\n\n if (!stringifiedType) {\n return undefined;\n }\n\n if (field.isList) {\n stringifiedType = wrapWithArray(stringifiedType);\n }\n\n if (!field.isRequired) {\n stringifiedType = wrapWithNullable(stringifiedType);\n }\n\n return `${field.name}: ${stringifiedType}`;\n })\n .filter((x) => x) as string[];\n\n return `${getConfig().typeboxImportVariableName}.Object({${fields.join(\n \",\",\n )}},${generateTypeboxOptions({ input: annotations })})\\n`;\n}\n\nexport const processedRelationsInputCreate: ProcessedModel[] = [];\n\nexport function processRelationsInputCreate(\n models: DMMF.Model[] | Readonly<DMMF.Model[]>,\n) {\n const modelsMap = new Map<string, DMMF.Model>();\n for (const m of models) {\n modelsMap.set(m.name, m);\n }\n for (const m of models) {\n const o = stringifyRelationsInputCreate(m, modelsMap);\n if (o) {\n processedRelationsInputCreate.push({\n name: m.name,\n stringRepresentation: o,\n });\n }\n }\n Object.freeze(processedRelationsInputCreate);\n}\n\nexport function stringifyRelationsInputCreate(\n data: DMMF.Model,\n allModels: Map<string, DMMF.Model>,\n) {\n const annotations = extractAnnotations(data.documentation);\n if (\n annotations.isHidden ||\n annotations.isHiddenInput ||\n annotations.isHiddenInputCreate\n )\n return undefined;\n\n const fields = data.fields\n .map((field) => {\n const annotations = extractAnnotations(field.documentation);\n\n if (\n annotations.isHidden ||\n annotations.isHiddenInput ||\n annotations.isHiddenInputCreate ||\n isPrimitivePrismaFieldType(field.type) ||\n processedEnumsMap.has(field.type)\n ) {\n return undefined;\n }\n\n let typeboxIdType = \"String\";\n\n const relatedIdType = allModels\n .get(field.type)\n ?.fields.find((f) => f.isId)?.type;\n\n switch (relatedIdType) {\n case \"String\":\n typeboxIdType = \"String\";\n break;\n case \"Int\":\n typeboxIdType = \"Integer\";\n break;\n case \"BigInt\":\n typeboxIdType = \"Integer\";\n break;\n default:\n debug(` skipping ${data.name}.${field.name} -> ${field.type} (no simple @id)`);\n return undefined;\n }\n\n let connectString = `${getConfig().typeboxImportVariableName}.Object({\n\t\t\t\tid: ${\n getConfig().typeboxImportVariableName\n }.${typeboxIdType}(${generateTypeboxOptions({ input: annotations })}),\n\t\t\t},${generateTypeboxOptions({ input: annotations })})`;\n\n if (field.isList) {\n connectString = wrapWithArray(connectString);\n }\n\n let stringifiedType = `${getConfig().typeboxImportVariableName}.Object({\n\t\t\t\tconnect: ${connectString},\n\t\t\t}, ${generateTypeboxOptions()})`;\n\n if (!field.isRequired || field.isList) {\n stringifiedType = `${\n getConfig().typeboxImportVariableName\n }.Optional(${stringifiedType})`;\n }\n\n return `${field.name}: ${stringifiedType}`;\n })\n .filter((x) => x) as string[];\n\n return `${getConfig().typeboxImportVariableName}.Object({${fields.join(\n \",\",\n )}},${generateTypeboxOptions({ input: annotations })})\\n`;\n}\n\nexport const processedRelationsInputUpdate: ProcessedModel[] = [];\n\nexport function processRelationsInputUpdate(\n models: DMMF.Model[] | Readonly<DMMF.Model[]>,\n) {\n const modelsMap = new Map<string, DMMF.Model>();\n for (const m of models) {\n modelsMap.set(m.name, m);\n }\n for (const m of models) {\n const o = stringifyRelationsInputUpdate(m, modelsMap);\n if (o) {\n processedRelationsInputUpdate.push({\n name: m.name,\n stringRepresentation: o,\n });\n }\n }\n Object.freeze(processedRelationsInputUpdate);\n}\n\nexport function stringifyRelationsInputUpdate(\n data: DMMF.Model,\n allModels: Map<string, DMMF.Model>,\n) {\n const annotations = extractAnnotations(data.documentation);\n if (\n annotations.isHidden ||\n annotations.isHiddenInput ||\n annotations.isHiddenInputUpdate\n )\n return undefined;\n\n const fields = data.fields\n .map((field) => {\n const annotations = extractAnnotations(field.documentation);\n\n if (\n annotations.isHidden ||\n annotations.isHiddenInput ||\n annotations.isHiddenInputUpdate ||\n isPrimitivePrismaFieldType(field.type) ||\n processedEnumsMap.has(field.type)\n ) {\n return undefined;\n }\n\n let typeboxIdType = \"String\";\n\n const relatedIdType = allModels\n .get(field.type)\n ?.fields.find((f) => f.isId)?.type;\n\n switch (relatedIdType) {\n case \"String\":\n typeboxIdType = \"String\";\n break;\n case \"Int\":\n typeboxIdType = \"Integer\";\n break;\n case \"BigInt\":\n typeboxIdType = \"Integer\";\n break;\n default:\n debug(` skipping ${data.name}.${field.name} -> ${field.type} (no simple @id)`);\n return undefined;\n }\n\n let stringifiedType: string;\n\n if (field.isList) {\n stringifiedType = wrapWithPartial(`${\n getConfig().typeboxImportVariableName\n }.Object({\n\t\t\t\t\t\tconnect: ${wrapWithArray(`${getConfig().typeboxImportVariableName}.Object({\n\t\t\t\t\t\t\t\tid: ${\n getConfig().typeboxImportVariableName\n }.${typeboxIdType}(${generateTypeboxOptions({ input: annotations })})\n\t\t\t\t\t\t\t}, ${generateTypeboxOptions({ input: annotations })})`)},\n\t\t\t\t\t\tdisconnect: ${wrapWithArray(`${getConfig().typeboxImportVariableName}.Object({\n\t\t\t\t\t\t\t\tid: ${\n getConfig().typeboxImportVariableName\n }.${typeboxIdType}(${generateTypeboxOptions({ input: annotations })})\n\t\t\t\t\t\t\t}, ${generateTypeboxOptions({ input: annotations })})`)}\n\t\t\t\t\t}, ${generateTypeboxOptions({ input: annotations })})`);\n } else {\n if (field.isRequired) {\n stringifiedType = `${getConfig().typeboxImportVariableName}.Object({\n\t\t\t\t\t\tconnect: ${getConfig().typeboxImportVariableName}.Object({\n\t\t\t\t\t\t\tid: ${\n getConfig().typeboxImportVariableName\n }.${typeboxIdType}(${generateTypeboxOptions({ input: annotations })})\n\t\t\t\t\t\t}, ${generateTypeboxOptions({ input: annotations })})\n\t\t\t\t\t}, ${generateTypeboxOptions({ input: annotations })})`;\n } else {\n stringifiedType = wrapWithPartial(`${\n getConfig().typeboxImportVariableName\n }.Object({\n\t\t\t\t\t\tconnect: ${getConfig().typeboxImportVariableName}.Object({\n\t\t\t\t\t\t\tid: ${\n getConfig().typeboxImportVariableName\n }.${typeboxIdType}(${generateTypeboxOptions({ input: annotations })})\n\t\t\t\t\t\t}, ${generateTypeboxOptions({ input: annotations })}),\n\t\t\t\t\t\tdisconnect: ${getConfig().typeboxImportVariableName}.Boolean()\n\t\t\t\t\t}, ${generateTypeboxOptions({ input: annotations })})`);\n }\n }\n\n return `${field.name}: ${stringifiedType}`;\n })\n .filter((x) => x) as string[];\n\n return wrapWithPartial(\n `${getConfig().typeboxImportVariableName}.Object({${fields.join(\n \",\",\n )}},${generateTypeboxOptions({ input: annotations })})`,\n );\n}\n", "import type { DMMF } from \"@prisma/generator-helper\";\nimport { extractAnnotations } from \"../annotations/annotations\";\nimport { generateTypeboxOptions } from \"../annotations/options\";\nimport { getConfig } from \"../config\";\nimport type { ProcessedModel } from \"../model\";\nimport { wrapWithPartial } from \"./wrappers/partial\";\n\nexport const processedSelect: ProcessedModel[] = [];\n\nexport function processSelect(models: DMMF.Model[] | Readonly<DMMF.Model[]>) {\n for (const m of models) {\n const o = stringifySelect(m);\n if (o) {\n processedSelect.push({ name: m.name, stringRepresentation: o });\n }\n }\n Object.freeze(processedSelect);\n}\n\nexport function stringifySelect(data: DMMF.Model) {\n const annotations = extractAnnotations(data.documentation);\n\n if (annotations.isHidden) return undefined;\n\n const fields = data.fields\n .map((field) => {\n const annotations = extractAnnotations(field.documentation);\n if (annotations.isHidden) return undefined;\n\n return `${field.name}: ${getConfig().typeboxImportVariableName}.Boolean()`;\n })\n .filter((x) => x) as string[];\n\n fields.push(`_count: ${getConfig().typeboxImportVariableName}.Boolean()`);\n\n const ret = `${getConfig().typeboxImportVariableName}.Object({${[\n ...fields,\n ].join(\",\")}},${generateTypeboxOptions({ input: annotations })})\\n`;\n\n return wrapWithPartial(ret);\n}\n", "import { generateTypeboxOptions } from \"../../annotations/options\";\nimport { getConfig } from \"../../config\";\n\nexport function makeIntersection(\n inputModels: string[],\n options = generateTypeboxOptions({ exludeAdditionalProperties: true }),\n) {\n return `${getConfig().typeboxImportVariableName}.Intersect([${inputModels.join(\n \",\",\n )}], ${options})\\n`;\n}\n", "import type { DMMF } from \"@prisma/generator-helper\";\nimport {\n extractAnnotations,\n isTypeOverwriteVariant,\n} from \"../annotations/annotations\";\nimport { generateTypeboxOptions } from \"../annotations/options\";\nimport { getConfig } from \"../config\";\nimport type { ProcessedModel } from \"../model\";\nimport { processedEnumsMap } from \"./enum\";\nimport {\n isPrimitivePrismaFieldType,\n type PrimitivePrismaFieldType,\n stringifyPrimitiveType,\n} from \"./primitiveField\";\nimport { wrapWithArray } from \"./wrappers/array\";\nimport { makeIntersection } from \"./wrappers/intersect\";\nimport { wrapWithPartial } from \"./wrappers/partial\";\nimport { makeUnion } from \"./wrappers/union\";\n\nconst selfReferenceName = \"Self\";\n\nexport const processedWhere: ProcessedModel[] = [];\n\nexport function processWhere(models: DMMF.Model[] | Readonly<DMMF.Model[]>) {\n for (const m of models) {\n const o = stringifyWhere(m);\n if (o) {\n processedWhere.push({ name: m.name, stringRepresentation: o });\n }\n }\n Object.freeze(processedWhere);\n}\n\nexport function stringifyWhere(data: DMMF.Model) {\n const annotations = extractAnnotations(data.documentation);\n if (annotations.isHidden) return undefined;\n\n const fields = data.fields\n .map((field) => {\n const annotations = extractAnnotations(field.documentation);\n if (annotations.isHidden) return undefined;\n\n let stringifiedType = \"\";\n\n if (isPrimitivePrismaFieldType(field.type)) {\n const overwrittenType = annotations.annotations\n .filter(isTypeOverwriteVariant)\n .at(0)?.value;\n\n if (overwrittenType) {\n stringifiedType = overwrittenType;\n } else {\n stringifiedType = stringifyPrimitiveType({\n fieldType: field.type as PrimitivePrismaFieldType,\n options: generateTypeboxOptions({\n exludeAdditionalProperties: false,\n input: annotations,\n }),\n });\n }\n } else if (processedEnumsMap.has(field.type)) {\n // biome-ignore lint/style/noNonNullAssertion: we checked this manually\n stringifiedType = processedEnumsMap.get(field.type)!.stringRepresentation;\n } else {\n return undefined;\n }\n\n if (field.isList) {\n stringifiedType = wrapWithArray(stringifiedType);\n }\n\n return `${field.name}: ${stringifiedType}`;\n })\n .filter((x) => x) as string[];\n\n if (getConfig().allowRecursion) {\n return wrapWithPartial(\n `${\n getConfig().typeboxImportVariableName\n }.Recursive(${selfReferenceName} =>${\n getConfig().typeboxImportVariableName\n }.Object({${AND_OR_NOT()},${fields.join(\",\")}},${generateTypeboxOptions({\n exludeAdditionalProperties: true,\n input: annotations,\n })}), { $id: \"${data.name}\"})`,\n );\n }\n\n return wrapWithPartial(\n `${getConfig().typeboxImportVariableName}.Object({${fields.join(\n \",\",\n )}},${generateTypeboxOptions({ exludeAdditionalProperties: true, input: annotations })})`,\n );\n}\n\nexport const processedWhereUnique: ProcessedModel[] = [];\n\nexport function processWhereUnique(\n models: DMMF.Model[] | Readonly<DMMF.Model[]>,\n) {\n for (const m of models) {\n const o = stringifyWhereUnique(m);\n if (o) {\n processedWhereUnique.push({ name: m.name, stringRepresentation: o });\n }\n }\n Object.freeze(processedWhereUnique);\n}\n\nexport function stringifyWhereUnique(data: DMMF.Model) {\n const annotations = extractAnnotations(data.documentation);\n if (annotations.isHidden) return undefined;\n\n const uniqueCompositeFields = data.uniqueFields\n .filter((fields) => fields.length > 1)\n .map((fields) => {\n const compositeName = fields.join(\"_\");\n const fieldObjects = fields.map(\n // biome-ignore lint/style/noNonNullAssertion: this must exist\n (f) => data.fields.find((field) => field.name === f)!,\n );\n\n const stringifiedFieldObjects = fieldObjects.map((f) => {\n const annotations = extractAnnotations(f.documentation);\n if (annotations.isHidden) return undefined;\n let stringifiedType = \"\";\n\n if (isPrimitivePrismaFieldType(f.type)) {\n const overwrittenType = annotations.annotations\n .filter(isTypeOverwriteVariant)\n .at(0)?.value;\n\n if (overwrittenType) {\n stringifiedType = overwrittenType;\n } else {\n stringifiedType = stringifyPrimitiveType({\n fieldType: f.type as PrimitivePrismaFieldType,\n options: generateTypeboxOptions({\n exludeAdditionalProperties: false,\n input: annotations,\n }),\n });\n }\n } else if (processedEnumsMap.has(f.type)) {\n // biome-ignore lint/style/noNonNullAssertion: we checked this manually\n stringifiedType = processedEnumsMap.get(f.type)!.stringRepresentation;\n } else {\n throw new Error(\"Invalid type for unique composite generation\");\n }\n\n return `${f.name}: ${stringifiedType}`;\n });\n\n const compositeObject = `${\n getConfig().typeboxImportVariableName\n }.Object({${stringifiedFieldObjects.join(\n \",\",\n )}}, ${generateTypeboxOptions({ exludeAdditionalProperties: true })})`;\n\n return `${compositeName}: ${compositeObject}`;\n });\n\n const allFields = data.fields\n .map((field) => {\n const annotations = extractAnnotations(field.documentation);\n if (annotations.isHidden) return undefined;\n\n let stringifiedType = \"\";\n\n if (isPrimitivePrismaFieldType(field.type)) {\n const overwrittenType = annotations.annotations\n .filter(isTypeOverwriteVariant)\n .at(0)?.value;\n\n if (overwrittenType) {\n stringifiedType = overwrittenType;\n } else {\n stringifiedType = stringifyPrimitiveType({\n fieldType: field.type as PrimitivePrismaFieldType,\n options: generateTypeboxOptions({\n exludeAdditionalProperties: false,\n input: annotations,\n }),\n });\n }\n } else if (processedEnumsMap.has(field.type)) {\n // biome-ignore lint/style/noNonNullAssertion: we checked this manually\n stringifiedType = processedEnumsMap.get(field.type)!.stringRepresentation;\n } else {\n return undefined;\n }\n\n if (field.isList) {\n stringifiedType = wrapWithArray(stringifiedType);\n }\n\n return `${field.name}: ${stringifiedType}`;\n })\n .filter((x) => x) as string[];\n\n const uniqueFields = data.fields\n .map((field) => {\n const annotations = extractAnnotations(field.documentation);\n if (annotations.isHidden) return undefined;\n if (!field.isUnique && !field.isId) return undefined;\n\n let stringifiedType = \"\";\n\n if (isPrimitivePrismaFieldType(field.type)) {\n const overwrittenType = annotations.annotations\n .filter(isTypeOverwriteVariant)\n .at(0)?.value;\n\n if (overwrittenType) {\n stringifiedType = overwrittenType;\n } else {\n stringifiedType = stringifyPrimitiveType({\n fieldType: field.type as PrimitivePrismaFieldType,\n options: generateTypeboxOptions({\n exludeAdditionalProperties: false,\n input: annotations,\n }),\n });\n }\n } else if (processedEnumsMap.has(field.type)) {\n // biome-ignore lint/style/noNonNullAssertion: we checked this manually\n stringifiedType = processedEnumsMap.get(field.type)!.stringRepresentation;\n } else {\n return undefined;\n }\n\n if (field.isList) {\n stringifiedType = wrapWithArray(stringifiedType);\n }\n\n return `${field.name}: ${stringifiedType}`;\n })\n .filter((x) => x) as string[];\n\n const uniqueBaseObject = `${getConfig().typeboxImportVariableName}.Object({${[\n ...uniqueFields,\n ...uniqueCompositeFields,\n ].join(\n \",\",\n )}},${generateTypeboxOptions({ exludeAdditionalProperties: true, input: annotations })})`;\n\n if (getConfig().allowRecursion) {\n return `${\n getConfig().typeboxImportVariableName\n }.Recursive(${selfReferenceName} => ${makeIntersection([\n wrapWithPartial(uniqueBaseObject, true),\n makeUnion(\n [...uniqueFields, ...uniqueCompositeFields].map(\n (f) => `${getConfig().typeboxImportVariableName}.Object({${f}})`,\n ),\n ),\n wrapWithPartial(\n `${getConfig().typeboxImportVariableName}.Object({${AND_OR_NOT()}})`,\n true,\n ),\n wrapWithPartial(\n `${\n getConfig().typeboxImportVariableName\n }.Object({${allFields.join(\",\")}}, ${generateTypeboxOptions()})`,\n ),\n ])}, { $id: \"${data.name}\"})`;\n }\n\n return makeIntersection([\n wrapWithPartial(uniqueBaseObject, true),\n makeUnion(\n [...uniqueFields, ...uniqueCompositeFields].map(\n (f) => `${getConfig().typeboxImportVariableName}.Object({${f}})`,\n ),\n ),\n wrapWithPartial(\n `${getConfig().typeboxImportVariableName}.Object({${allFields.join(\n \",\",\n )}})`,\n ),\n ]);\n}\n\nfunction AND_OR_NOT() {\n return `AND: ${\n getConfig().typeboxImportVariableName\n }.Union([${selfReferenceName}, ${wrapWithArray(selfReferenceName)}]),\n\tNOT: ${\n getConfig().typeboxImportVariableName\n }.Union([${selfReferenceName}, ${wrapWithArray(selfReferenceName)}]),\n\tOR: ${wrapWithArray(selfReferenceName)}`;\n}\n", "import { writeFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { generateBarrelFile } from \"./barrel\";\nimport { getConfig } from \"./config\";\nimport { debug } from \"./debug\";\nimport { format } from \"./format\";\nimport { mapAllModelsForWrite } from \"./model\";\n\nexport async function write() {\n const mappings = Array.from(mapAllModelsForWrite().entries());\n debug(`write: ${mappings.length} files`);\n\n // Process files sequentially to avoid overwhelming CPU/memory\n // in resource-constrained environments (e.g. Docker containers)\n for (let i = 0; i < mappings.length; i++) {\n const [name, content] = mappings[i];\n debug(` [${i + 1}/${mappings.length}] ${name}.ts`);\n await writeFile(\n join(getConfig().output, `${name}.ts`),\n await format(content),\n );\n }\n\n debug(\"writing barrel.ts\");\n await writeFile(\n join(getConfig().output, \"barrel.ts\"),\n await format(generateBarrelFile(mappings.map(([key]) => key))),\n );\n}\n", "import { getConfig } from \"./config\";\n\nexport function generateBarrelFile(imports: string[]) {\n return imports\n .map((i) => `export * from \"./${i}${getConfig().importFileExtension}\";`)\n .join(\"\\n\");\n}\n", "import { format as prettierFormat } from \"prettier\";\nimport { getConfig } from \"./config\";\n\nexport async function format(input: string) {\n if (getConfig().disableFormatting) {\n return input;\n }\n try {\n return await prettierFormat(input, { parser: \"typescript\" });\n } catch (error) {\n console.error(\"Error formatting file\", error);\n return input;\n }\n}\n", "import { getConfig } from \"../config\";\n\nexport function transformDateType() {\n return `import { ${getConfig().typeboxImportVariableName} } from \"${getConfig().typeboxImportDependencyName}\";\n export const ${getConfig().transformDateName} = (options?: Parameters<typeof ${getConfig().typeboxImportVariableName}.String>[0]) => ${\n getConfig().typeboxImportVariableName\n }.Transform(${getConfig().typeboxImportVariableName}.String({ format: 'date-time', ...options }))\n .Decode((value) => new Date(value))\n .Encode((value) => value.toISOString())\\n`;\n}\n\nexport function transformDateImportStatement() {\n return `import { ${getConfig().transformDateName} } from \"./${\n getConfig().transformDateName\n }${getConfig().importFileExtension}\"\\n`;\n}\n", "import { generateTypeboxOptions } from \"../../annotations/options\";\nimport { getConfig } from \"../../config\";\n\nexport function makeComposite(inputModels: string[]) {\n return `${\n getConfig().typeboxImportVariableName\n }.Composite([${inputModels.map((i) => `${getConfig().exportedTypePrefix}${i}`).join(\",\")}], ${generateTypeboxOptions()})\\n`;\n}\n", "import { getConfig } from \"./config\";\nimport { processedEnums } from \"./generators/enum\";\nimport { processedInclude } from \"./generators/include\";\nimport { processedOrderBy } from \"./generators/orderBy\";\nimport { processedPlain, processedPlainMap } from \"./generators/plain\";\nimport { processedPlainInputCreate } from \"./generators/plainInputCreate\";\nimport { processedPlainInputUpdate } from \"./generators/plainInputUpdate\";\nimport {\n processedRelations,\n processedRelationsInputCreate,\n processedRelationsInputUpdate,\n} from \"./generators/relations\";\nimport { processedSelect } from \"./generators/select\";\nimport {\n transformDateImportStatement,\n transformDateType,\n} from \"./generators/transformDate\";\nimport { processedWhere, processedWhereUnique } from \"./generators/where\";\nimport { makeComposite } from \"./generators/wrappers/composite\";\nimport { nullableImport, nullableType } from \"./generators/wrappers/nullable\";\n\nexport type ProcessedModel = {\n name: string;\n stringRepresentation: string;\n};\n\nfunction convertModelToStandalone(\n input: Pick<ProcessedModel, \"name\" | \"stringRepresentation\">,\n) {\n return `export const ${getConfig().exportedTypePrefix}${input.name} = ${input.stringRepresentation}\\n`;\n}\n\nfunction typepoxImportStatement() {\n return `import { ${getConfig().typeboxImportVariableName} } from \"${\n getConfig().typeboxImportDependencyName\n }\"\\n`;\n}\n\nexport function mapAllModelsForWrite() {\n const modelsPerName = new Map<\n ProcessedModel[\"name\"],\n ProcessedModel[\"stringRepresentation\"]\n >();\n\n const process = (models: ProcessedModel[], suffix: string) => {\n for (const processedModel of models) {\n const standalone = convertModelToStandalone({\n ...processedModel,\n name: `${processedModel.name}${suffix}`,\n });\n const current = modelsPerName.get(processedModel.name);\n if (current) {\n modelsPerName.set(processedModel.name, `${current}\\n${standalone}`);\n } else {\n modelsPerName.set(processedModel.name, standalone);\n }\n }\n };\n\n process(processedEnums, \"\");\n process(processedPlain, \"Plain\");\n process(processedRelations, \"Relations\");\n process(processedPlainInputCreate, \"PlainInputCreate\");\n process(processedPlainInputUpdate, \"PlainInputUpdate\");\n process(processedRelationsInputCreate, \"RelationsInputCreate\");\n process(processedRelationsInputUpdate, \"RelationsInputUpdate\");\n process(processedWhere, \"Where\");\n process(processedWhereUnique, \"WhereUnique\");\n process(processedSelect, \"Select\");\n process(processedInclude, \"Include\");\n process(processedOrderBy, \"OrderBy\");\n\n const relationsSet = new Set(processedRelations.map((e) => e.name));\n const relationsInputCreateSet = new Set(\n processedRelationsInputCreate.map((e) => e.name),\n );\n const relationsInputUpdateSet = new Set(\n processedRelationsInputUpdate.map((e) => e.name),\n );\n\n for (const [key, value] of modelsPerName) {\n const hasPlain = processedPlainMap.has(key);\n const hasRelations = relationsSet.has(key);\n let composite: string;\n if (hasPlain && hasRelations) {\n composite = makeComposite([`${key}Plain`, `${key}Relations`]);\n } else if (hasPlain) {\n composite = `${key}Plain`;\n } else if (hasRelations) {\n composite = `${key}Relations`;\n } else {\n continue;\n }\n\n modelsPerName.set(\n key,\n `${value}\\n${convertModelToStandalone({\n name: key,\n stringRepresentation: composite,\n })}`,\n );\n }\n\n for (const [key, value] of modelsPerName) {\n if (relationsInputCreateSet.has(key)) {\n const composite = makeComposite([\n `${key}PlainInputCreate`,\n `${key}RelationsInputCreate`,\n ]);\n modelsPerName.set(\n key,\n `${value}\\n${convertModelToStandalone({\n name: `${key}InputCreate`,\n stringRepresentation: composite,\n })}`,\n );\n }\n }\n\n for (const [key, value] of modelsPerName) {\n if (relationsInputUpdateSet.has(key)) {\n const composite = makeComposite([\n `${key}PlainInputUpdate`,\n `${key}RelationsInputUpdate`,\n ]);\n modelsPerName.set(\n key,\n `${value}\\n${convertModelToStandalone({\n name: `${key}InputUpdate`,\n stringRepresentation: composite,\n })}`,\n );\n }\n }\n\n for (const [key, value] of modelsPerName) {\n modelsPerName.set(\n key,\n `${typepoxImportStatement()}\\n${transformDateImportStatement()}\\n${nullableImport()}\\n${value}`,\n );\n }\n\n modelsPerName.set(getConfig().nullableName, nullableType());\n modelsPerName.set(getConfig().transformDateName, transformDateType());\n\n return modelsPerName;\n}\n"],
5
+ "mappings": ";aAAA,IAAAA,EAAkC,4BAClCC,GAAiC,oCCDjC,IAAAC,EAAkC,6BAClCC,EAAsB,mCCDtB,IAAMC,EACJ,QAAQ,IAAI,QAAU,KACtB,QAAQ,IAAI,QAAU,cACrB,QAAQ,IAAI,OAAS,IAAI,MAAM,GAAG,EAAE,SAAS,WAAW,EAEpD,SAASC,EAAMC,EAAuB,CACtCF,GACL,QAAQ,OAAO,MAAM,eAAeE,CAAO;AAAA,CAAI,CACjD,CAEO,SAASC,EAASC,EAAeC,EAAgB,CACtD,GAAI,CAACL,EAAS,OAAOK,EAAG,EACxB,IAAMC,EAAQ,YAAY,IAAI,EACxBC,EAASF,EAAG,EACZG,GAAW,YAAY,IAAI,EAAIF,GAAO,QAAQ,CAAC,EACrD,eAAQ,OAAO,MAAM,eAAeF,CAAK,KAAKI,CAAO;AAAA,CAAO,EACrDD,CACT,CAEA,eAAsBE,GACpBL,EACAC,EACY,CACZ,GAAI,CAACL,EAAS,OAAOK,EAAG,EACxB,IAAMC,EAAQ,YAAY,IAAI,EACxBC,EAAS,MAAMF,EAAG,EAClBG,GAAW,YAAY,IAAI,EAAIF,GAAO,QAAQ,CAAC,EACrD,eAAQ,OAAO,MAAM,eAAeF,CAAK,KAAKI,CAAO;AAAA,CAAO,EACrDD,CACT,CDzBA,IAAMG,EAAe,OAAK,OACxB,CAIE,OAAQ,OAAK,OAAO,CAAE,QAAS,oBAAqB,CAAC,EAIrD,0BAA2B,OAAK,OAAO,CAAE,QAAS,MAAO,CAAC,EAI1D,4BAA6B,OAAK,OAAO,CAAE,QAAS,mBAAoB,CAAC,EAIzE,qBAAsB,OAAK,QAAQ,CAAE,QAAS,EAAM,CAAC,EAIrD,WAAY,OAAK,QAAQ,CAAE,QAAS,EAAM,CAAC,EAI3C,qBAAsB,OAAK,QAAQ,CAAE,QAAS,EAAK,CAAC,EAIpD,4BAA6B,OAAK,QAAQ,CAAE,QAAS,EAAK,CAAC,EAI3D,4BAA6B,OAAK,QAAQ,CAAE,QAAS,EAAK,CAAC,EAI3D,0BAA2B,OAAK,QAAQ,CAAE,QAAS,EAAK,CAAC,EAIzD,aAAc,OAAK,OAAO,CAAE,QAAS,cAAe,CAAC,EAIrD,eAAgB,OAAK,QAAQ,CAAE,QAAS,EAAK,CAAC,EAa9C,sBAAuB,OAAK,SAAS,OAAK,MAAM,OAAK,OAAO,CAAC,CAAC,EAI9D,kBAAmB,OAAK,OAAO,CAAE,QAAS,mBAAoB,CAAC,EAU/D,aAAc,OAAK,MAAM,CAAC,OAAK,QAAQ,EAAG,OAAK,QAAQ,aAAa,CAAC,EAAG,CACtE,QAAS,EACX,CAAC,EAID,oBAAqB,OAAK,OAAO,CAAE,QAAS,EAAG,CAAC,EAIhD,mBAAoB,OAAK,OAAO,CAAE,QAAS,EAAG,CAAC,EAI/C,kBAAmB,OAAK,QAAQ,CAAE,QAAS,EAAM,CAAC,CACpD,EACA,CAAE,qBAAsB,EAAM,CAChC,EAGIC,EAAsC,CAAC,EAEpC,SAASC,GAAUC,EAAgB,CACxC,GAAI,CACF,QAAM,MAAMH,EAAcG,CAAK,EAC/B,QAAM,QAAQH,EAAcG,CAAK,EACjCF,EAAS,QAAM,OAAOD,EAAc,QAAM,QAAQA,EAAcG,CAAK,CAAC,EACtEC,EAAM,sBAAsBH,EAAO,UAAU,kBAAkBA,EAAO,YAAY,0BAA0BA,EAAO,oBAAoB,EAAE,EACzI,OAAO,OAAOA,CAAM,CACtB,OAASI,EAAO,CACd,cAAQ,MAAM,QAAM,OAAOL,EAAcG,CAAK,EAAE,KAAK,EAC/CE,CACR,CACF,CACO,SAASC,GAAY,CAC1B,OAAOL,CACT,CE9EO,SAASM,GACdC,EACkD,CAClD,OAAOA,EAAW,OAAS,SAC7B,CAEO,SAASC,EACdD,EACyD,CACzD,OAAOA,EAAW,OAAS,gBAC7B,CAEA,IAAME,GAAiE,CACrE,CACE,KAAM,sBACN,KAAM,CAAC,+BAAgC,gCAAgC,CACzE,EACA,CACE,KAAM,sBACN,KAAM,CAAC,+BAAgC,gCAAgC,CACzE,EACA,CACE,KAAM,eACN,KAAM,CAGJ,wBACA,yBACF,CACF,EACA,CACE,KAAM,SACN,KAAM,CAAC,kBAAmB,mBAAmB,CAC/C,EACA,CACE,KAAM,UACN,KAAM,CAAC,oBAAoB,CAC7B,EACA,CACE,KAAM,iBACN,KAAM,CAAC,0BAA0B,CACnC,CACF,EAEO,SAASC,EACdC,EAQA,CACA,IAAMC,EAA4B,CAAC,EAC/BC,EAAc,GAEZC,EAAMH,GAAS,GAErB,QAAWI,KAAQD,EAChB,MAAM;AAAA,CAAI,EACV,IAAKE,GAAMA,EAAE,KAAK,CAAC,EACnB,OAAQA,GAAMA,EAAE,OAAS,CAAC,EAAG,CAC9B,IAAMC,EAAgBR,GAAe,KAAMS,GACzCA,EAAI,KAAK,KAAMC,GAAMJ,EAAK,WAAWI,CAAC,CAAC,CACzC,EAEA,GAAIF,EACF,GAAIA,EAAc,OAAS,UAAW,CACpC,GAAI,CAACF,EAAK,WAAW,GAAGE,EAAc,KAAK,CAAC,CAAC,GAAG,EAC9C,MAAM,IAAI,MACR,4DACF,EAEF,GAAI,CAACF,EAAK,SAAS,GAAG,EACpB,MAAM,IAAI,MACR,0DACF,EAGFH,EAAY,KAAK,CACf,KAAM,UACN,MAAOG,EAAK,UACVE,EAAc,KAAK,CAAC,EAAE,OAAS,EAC/BF,EAAK,OAAS,CAChB,CACF,CAAC,CACH,SAAWE,EAAc,OAAS,iBAAkB,CAClD,GAAI,CAACF,EAAK,WAAW,GAAGE,EAAc,KAAK,CAAC,CAAC,GAAG,EAC9C,MAAM,IAAI,MAAM,iDAAiD,EAGnEL,EAAY,KAAK,CACf,KAAM,iBACN,MAAOG,EAAK,MAAM,GAAG,EAAE,CAAC,CAC1B,CAAC,CACH,MACEH,EAAY,KAAK,CAAE,KAAMK,EAAc,IAAK,CAAC,OAG/CJ,GAAe,GAAGE,CAAI;AAAA,CAE1B,CAEA,OAAAF,EAAcA,EAAY,KAAK,EAAE,WAAW,IAAK,KAAK,EAC/C,CACL,YAAAD,EACA,YAAaC,EAAY,OAAS,EAAIA,EAAc,OACpD,SAAUO,GAASR,CAAW,EAC9B,cAAeS,GAAcT,CAAW,EACxC,oBAAqBU,GAAoBV,CAAW,EACpD,oBAAqBW,GAAoBX,CAAW,CACtD,CACF,CAEO,SAASQ,GAASR,EAAoC,CAC3D,OAAOA,EAAY,KAAMY,GAAMA,EAAE,OAAS,QAAQ,CACpD,CAEO,SAASH,GAAcT,EAAoC,CAChE,OAAOA,EAAY,KAAMY,GAAMA,EAAE,OAAS,cAAc,CAC1D,CAEO,SAASF,GAAoBV,EAAoC,CACtE,OAAOA,EAAY,KAAMY,GAAMA,EAAE,OAAS,qBAAqB,CACjE,CAEO,SAASD,GAAoBX,EAAoC,CACtE,OAAOA,EAAY,KAAMY,GAAMA,EAAE,OAAS,qBAAqB,CACjE,CChKO,SAASC,EAAuB,CACrC,MAAAC,EACA,2BAAAC,CACF,EAGI,CAAC,EAAW,CACVA,IAA+B,SACjCA,EAA6B,CAACC,EAAU,EAAE,sBAG5C,IAAMC,EAA+B,CAAC,EACtC,QAAWC,KAAcJ,GAAO,aAAe,CAAC,EAC1CK,GAAiBD,CAAU,GAC7BD,EAAmB,KAAKC,EAAW,KAAK,EAI5C,OAAIH,GACFE,EAAmB,KACjB,yBAAyBD,EAAU,EAAE,oBAAoB,EAC3D,EAGEF,GAAO,aACTG,EAAmB,KAAK,kBAAkBH,EAAM,WAAW,IAAI,EAG1DG,EAAmB,OAAS,EAC/B,IAAIA,EAAmB,KAAK,GAAG,CAAC,IAChC,EACN,CC/BO,SAASG,EACdC,EACAC,EAAUC,EAAuB,CAAE,2BAA4B,EAAK,CAAC,EACrE,CACA,MAAO,GAAGC,EAAU,EAAE,yBAAyB,WAAWH,EAAY,KACpE,GACF,CAAC,MAAMC,CAAO;AAAA,CAChB,CCFO,IAAMG,EAAmC,CAAC,EACpCC,EAAoB,IAAI,IAE9B,SAASC,GACdC,EACA,CACA,QAAW,KAAKA,EAAO,CACrB,IAAMC,EAAuBC,GAAc,CAAC,EAC5C,GAAID,EAAsB,CACxB,IAAME,EAAQ,CAAE,KAAM,EAAE,KAAM,qBAAAF,CAAqB,EACnDJ,EAAe,KAAKM,CAAK,EACzBL,EAAkB,IAAI,EAAE,KAAMK,CAAK,CACrC,CACF,CACAC,EAAM,YAAYP,EAAe,MAAM,YAAY,EACnD,OAAO,OAAOA,CAAc,CAC9B,CAEO,SAASK,GAAcG,EAA0B,CACtD,IAAMC,EAAcC,EAAmBF,EAAK,aAAa,EACzD,GAAIC,EAAY,SAAU,OAE1B,IAAME,EAAiBH,EAAK,OAAO,IAChCI,GAAM,GAAGC,EAAU,EAAE,yBAAyB,aAAaD,EAAE,IAAI,IACpE,EAEA,OAAOE,EACLH,EACAI,EAAuB,CAAE,MAAON,CAAY,CAAC,CAC/C,CACF,CCpCA,IAAMO,GAAkB,CACtB,MACA,SACA,QACA,UACA,SACA,WACA,OACA,UACA,OACF,EAIO,SAASC,EACdC,EACiC,CAEjC,OAAOF,GAAgB,SAASE,CAAU,CAC5C,CAEO,SAASC,EAAuB,CACrC,UAAAC,EACA,QAAAC,CACF,EAGG,CACD,GAAI,CAAC,MAAO,QAAQ,EAAE,SAASD,CAAS,EACtC,MAAO,GAAGE,EAAU,EAAE,yBAAyB,YAAYD,CAAO,IAGpE,GAAI,CAAC,QAAS,SAAS,EAAE,SAASD,CAAS,EACzC,MAAO,GAAGE,EAAU,EAAE,yBAAyB,WAAWD,CAAO,IAGnE,GAAID,IAAc,SAChB,MAAO,GAAGE,EAAU,EAAE,yBAAyB,WAAWD,CAAO,IAGnE,GAAI,CAAC,UAAU,EAAE,SAASD,CAAS,EAAG,CACpC,IAAMG,EAASD,EAAU,EACzB,GAAIC,EAAO,eAAiB,cAC1B,MAAO,GAAGD,EAAU,EAAE,iBAAiB,IAAID,CAAO,IAGpD,GAAIE,EAAO,aAAc,CACvB,IAAIC,EAAOH,EACX,OAAIG,EAAK,SAAS,GAAG,GAAKA,EAAK,SAAS,GAAG,EACzCA,EAAOA,EAAK,QAAQ,IAAK,yBAAyB,EAElDA,EAAO,0BAEF,GAAGD,EAAO,yBAAyB,WAAWC,CAAI,GAC3D,CAEA,MAAO,GAAGF,EAAU,EAAE,yBAAyB,SAASD,CAAO,GACjE,CAEA,GAAID,IAAc,OAChB,MAAO,GAAGE,EAAU,EAAE,yBAAyB,QAAQD,CAAO,IAGhE,GAAID,IAAc,UAChB,MAAO,GAAGE,EAAU,EAAE,yBAAyB,YAAYD,CAAO,IAGpE,GAAID,IAAc,QAChB,MAAO,GAAGE,EAAU,EAAE,yBAAyB,eAAeD,CAAO,IAGvE,MAAM,IAAI,MAAM,uCAAuC,CACzD,CCvEO,SAASI,EACdC,EACAC,EAAsC,GACtC,CACA,MAAO,GACLC,EAAU,EAAE,yBACd,YAAYF,CAAK,KAAKG,EAAuB,CAAE,2BAA4BF,CAAoC,CAAC,CAAC,GACnH,CCFO,IAAMG,EAAqC,CAAC,EAE5C,SAASC,GAAeC,EAA+C,CAC5E,QAAWC,KAAKD,EAAQ,CACtB,IAAM,EAAIE,GAAiBD,CAAC,EACxB,GACFH,EAAiB,KAAK,CAAE,KAAMG,EAAE,KAAM,qBAAsB,CAAE,CAAC,CAEnE,CACA,OAAO,OAAOH,CAAgB,CAChC,CAEO,SAASI,GAAiBC,EAAkB,CACjD,IAAMC,EAAcC,EAAmBF,EAAK,aAAa,EAEzD,GAAIC,EAAY,SAAU,OAE1B,IAAME,EAASH,EAAK,OACjB,IAAKI,GAAU,CAEd,GAAI,CADgBF,EAAmBE,EAAM,aAAa,EAC1C,UAEZ,CAAAC,EAA2BD,EAAM,IAAI,EAEzC,MAAO,GAAGA,EAAM,IAAI,KAAKE,EAAU,EAAE,yBAAyB,YAChE,CAAC,EACA,OAAQC,GAAMA,CAAC,EAElBJ,EAAO,KAAK,WAAWG,EAAU,EAAE,yBAAyB,YAAY,EAExE,IAAME,EAAM,GAAGF,EAAU,EAAE,yBAAyB,YAAY,CAC9D,GAAGH,CACL,EAAE,KAAK,GAAG,CAAC,KAAKM,EAAuB,CAAE,MAAOR,CAAY,CAAC,CAAC;AAAA,EAE9D,OAAOS,EAAgBF,CAAG,CAC5B,CClCO,IAAMG,EAAqC,CAAC,EAE5C,SAASC,GAAeC,EAA+C,CAC5E,QAAWC,KAAKD,EAAQ,CACtB,IAAM,EAAIE,GAAiBD,CAAC,EACxB,GACFH,EAAiB,KAAK,CAAE,KAAMG,EAAE,KAAM,qBAAsB,CAAE,CAAC,CAEnE,CACA,OAAO,OAAOH,CAAgB,CAChC,CAEO,SAASI,GAAiBC,EAAkB,CACjD,IAAMC,EAAcC,EAAmBF,EAAK,aAAa,EAEzD,GAAIC,EAAY,SAAU,OAE1B,IAAME,EAASH,EAAK,OACjB,IAAKI,GAAU,CAEd,GAAI,CADgBF,EAAmBE,EAAM,aAAa,EAC1C,UAEZC,EAA2BD,EAAM,IAAI,EACvC,MAAO,GAAGA,EAAM,IAAI,KAAKE,EAAU,CACjC,GAAGC,EAAU,EAAE,yBAAyB,kBACxC,GAAGA,EAAU,EAAE,yBAAyB,kBAC1C,CAAC,CAAC,EAUN,CAAC,EACA,OAAQC,GAAMA,CAAC,EAEZC,EAAM,GAAGF,EAAU,EAAE,yBAAyB,YAAY,CAC9D,GAAGJ,CACL,EAAE,KAAK,GAAG,CAAC,KAAKO,EAAuB,CAAE,MAAOT,CAAY,CAAC,CAAC;AAAA,EAE9D,OAAOU,EAAgBF,CAAG,CAC5B,CClDO,SAASG,EAAcC,EAAe,CAC3C,MAAO,GACLC,EAAU,EAAE,yBACd,UAAUD,CAAK,KAAKE,EAAuB,CAAE,2BAA4B,EAAK,CAAC,CAAC,GAClF,CCLO,SAASC,IAAe,CAC7B,MAAO,YACLC,EAAU,EAAE,yBACd,0BAA0BA,EAAU,EAAE,2BAA2B;AAAA,eACpDA,EAAU,EAAE,YAAY,wCACnCA,EAAU,EAAE,yBACd,WAAWA,EAAU,EAAE,yBAAyB;AAAA,CAClD,CAEO,SAASC,IAAiB,CAC/B,MAAO,YAAYD,EAAU,EAAE,YAAY,cACzCA,EAAU,EAAE,YACd,GAAGA,EAAU,EAAE,mBAAmB;AAAA,CACpC,CAEO,SAASE,EAAiBC,EAAe,CAC9C,MAAO,GAAGH,EAAU,EAAE,YAAY,IAAIG,CAAK,GAC7C,CCjBO,SAASC,EAAiBC,EAAe,CAC9C,MAAO,GAAGC,EAAU,EAAE,yBAAyB,aAAaD,CAAK,GACnE,CCeO,IAAME,EAAmC,CAAC,EACpCC,EAAoB,IAAI,IAE9B,SAASC,GAAaC,EAA+C,CAC1E,QAAWC,KAAKD,EAAQ,CACtB,IAAM,EAAIE,EAAeD,CAAC,EAC1B,GAAI,EAAG,CACL,IAAME,EAAQ,CAAE,KAAMF,EAAE,KAAM,qBAAsB,CAAE,EACtDJ,EAAe,KAAKM,CAAK,EACzBL,EAAkB,IAAIG,EAAE,KAAME,CAAK,CACrC,CACF,CACAC,EAAM,YAAYP,EAAe,MAAM,OAAOG,EAAO,MAAM,SAAS,EACpE,OAAO,OAAOH,CAAc,CAC9B,CAEO,SAASK,EACdG,EACAC,EAAqB,GACrBC,EAAqB,GACrB,CACA,IAAMC,EAAcC,EAAmBJ,EAAK,aAAa,EAEzD,GACEG,EAAY,WACVF,GAAsBC,IAAuBC,EAAY,eAC1DF,GAAsBE,EAAY,qBAClCD,GAAsBC,EAAY,oBAEnC,OAEF,IAAME,EAASL,EAAK,OACjB,IAAKM,GAAU,CACd,IAAMH,EAAcC,EAAmBE,EAAM,aAAa,EAmC1D,GAjCEH,EAAY,WACVF,GAAsBC,IACtBC,EAAY,eACbF,GAAsBE,EAAY,qBAClCD,GAAsBC,EAAY,qBAUnCI,EAAU,EAAE,uBACXN,GAAsBC,IACvBI,EAAM,MAINC,EAAU,EAAE,8BACXN,GAAsBC,IACvBI,EAAM,OAAS,aACfA,EAAM,iBAINC,EAAU,EAAE,8BACXN,GAAsBC,IACvBI,EAAM,aAKNC,EAAU,EAAE,4BACXN,GAAsBC,KACtBI,EAAM,KAAK,YAAY,EAAE,SAAS,IAAI,GACrCA,EAAM,KAAK,YAAY,EAAE,SAAS,SAAS,GAC3CA,EAAM,KAAK,YAAY,EAAE,SAAS,YAAY,GAEhD,OAOF,IAAIE,EAAkB,GAEtB,GAAIC,EAA2BH,EAAM,IAAI,EAAG,CAC1C,IAAMI,EAAkBP,EAAY,YACjC,OAAOQ,CAAsB,EAC7B,GAAG,CAAC,GAAG,MAEND,EACFF,EAAkBE,EAElBF,EAAkBI,EAAuB,CACvC,UAAWN,EAAM,KACjB,QAASO,EAAuB,CAC9B,MAAOV,EACP,2BAA4B,EAC9B,CAAC,CACH,CAAC,CAEL,SAAWW,EAAkB,IAAIR,EAAM,IAAI,EAEzCE,EAAkBM,EAAkB,IAAIR,EAAM,IAAI,EAAG,yBAErD,QAGEA,EAAM,SACRE,EAAkBO,EAAcP,CAAe,GAGjD,IAAIQ,EAAe,GAEnB,OAAKV,EAAM,aACTE,EAAkBS,EAAiBT,CAAe,IAIlDN,GACCD,GAAsB,CAACK,EAAM,YAAc,CAACA,EAAM,mBAEnDE,EAAkBU,EAAiBV,CAAe,EAClDQ,EAAe,IAIf,CAACA,GACDV,EAAM,kBACLL,GAAsBC,KAEvBM,EAAkBU,EAAiBV,CAAe,EAClDQ,EAAe,IAGV,GAAGV,EAAM,IAAI,KAAKE,CAAe,EAC1C,CAAC,EACA,OAAQW,GAAMA,CAAC,EAElB,MAAO,GAAGZ,EAAU,EAAE,yBAAyB,YAAY,CACzD,GAAGF,EACDJ,GAAsBC,EAEpB,CAAC,EADAK,EAAU,EAAE,uBAAyB,CAAC,CAE7C,EAAE,KAAK,GAAG,CAAC,KAAKM,EAAuB,CAAE,MAAOV,CAAY,CAAC,CAAC;AAAA,CAChE,CC/JO,IAAMiB,EAA8C,CAAC,EAErD,SAASC,GACdC,EACA,CACA,QAAWC,KAAKD,EAAQ,CACtB,IAAM,EAAIE,EAAeD,EAAG,GAAM,EAAK,EACnC,GACFH,EAA0B,KAAK,CAAE,KAAMG,EAAE,KAAM,qBAAsB,CAAE,CAAC,CAE5E,CACA,OAAO,OAAOH,CAAyB,CACzC,CCZO,IAAMK,EAA8C,CAAC,EAErD,SAASC,GACdC,EACA,CACA,QAAWC,KAAKD,EAAQ,CACtB,IAAM,EAAIE,EAAeD,EAAG,GAAO,EAAI,EACnC,GACFH,EAA0B,KAAK,CAAE,KAAMG,EAAE,KAAM,qBAAsB,CAAE,CAAC,CAE5E,CACA,OAAO,OAAOH,CAAyB,CACzC,CCHO,IAAMK,EAAuC,CAAC,EAE9C,SAASC,GACdC,EACA,CACA,QAAWC,KAAKD,EAAQ,CACtB,IAAM,EAAIE,GAAmBD,CAAC,EAC1B,GACFH,EAAmB,KAAK,CAAE,KAAMG,EAAE,KAAM,qBAAsB,CAAE,CAAC,CAErE,CACAE,EAAM,gBAAgBL,EAAmB,MAAM,OAAOE,EAAO,MAAM,SAAS,EAC5E,OAAO,OAAOF,CAAkB,CAClC,CAEO,SAASI,GAAmBE,EAAkB,CACnD,IAAMC,EAAcC,EAAmBF,EAAK,aAAa,EACzD,GAAIC,EAAY,SAAU,OAE1B,IAAME,EAASH,EAAK,OACjB,IAAKI,GAAU,CAGd,GAFoBF,EAAmBE,EAAM,aAAa,EAG5C,UACZC,EAA2BD,EAAM,IAAI,GACrCE,EAAkB,IAAIF,EAAM,IAAI,EAEhC,OAGF,IAAIG,EAAkBC,EAAkB,IACtCJ,EAAM,IACR,GAAG,qBAEH,GAAKG,EAIL,OAAIH,EAAM,SACRG,EAAkBE,EAAcF,CAAe,GAG5CH,EAAM,aACTG,EAAkBG,EAAiBH,CAAe,GAG7C,GAAGH,EAAM,IAAI,KAAKG,CAAe,EAC1C,CAAC,EACA,OAAQI,GAAMA,CAAC,EAElB,MAAO,GAAGC,EAAU,EAAE,yBAAyB,YAAYT,EAAO,KAChE,GACF,CAAC,KAAKU,EAAuB,CAAE,MAAOZ,CAAY,CAAC,CAAC;AAAA,CACtD,CAEO,IAAMa,EAAkD,CAAC,EAEzD,SAASC,GACdnB,EACA,CACA,IAAMoB,EAAY,IAAI,IACtB,QAAWnB,KAAKD,EACdoB,EAAU,IAAInB,EAAE,KAAMA,CAAC,EAEzB,QAAWA,KAAKD,EAAQ,CACtB,IAAMqB,EAAIC,GAA8BrB,EAAGmB,CAAS,EAChDC,GACFH,EAA8B,KAAK,CACjC,KAAMjB,EAAE,KACR,qBAAsBoB,CACxB,CAAC,CAEL,CACA,OAAO,OAAOH,CAA6B,CAC7C,CAEO,SAASI,GACdlB,EACAmB,EACA,CACA,IAAMlB,EAAcC,EAAmBF,EAAK,aAAa,EACzD,GACEC,EAAY,UACZA,EAAY,eACZA,EAAY,oBAEZ,OAEF,IAAME,EAASH,EAAK,OACjB,IAAKI,GAAU,CACd,IAAMH,EAAcC,EAAmBE,EAAM,aAAa,EAE1D,GACEH,EAAY,UACZA,EAAY,eACZA,EAAY,qBACZI,EAA2BD,EAAM,IAAI,GACrCE,EAAkB,IAAIF,EAAM,IAAI,EAEhC,OAGF,IAAIgB,EAAgB,SAMpB,OAJsBD,EACnB,IAAIf,EAAM,IAAI,GACb,OAAO,KAAMiB,GAAMA,EAAE,IAAI,GAAG,KAET,CACrB,IAAK,SACHD,EAAgB,SAChB,MACF,IAAK,MACHA,EAAgB,UAChB,MACF,IAAK,SACHA,EAAgB,UAChB,MACF,QACErB,EAAM,cAAcC,EAAK,IAAI,IAAII,EAAM,IAAI,OAAOA,EAAM,IAAI,kBAAkB,EAC9E,MACJ,CAEA,IAAIkB,EAAgB,GAAGV,EAAU,EAAE,yBAAyB;AAAA,UAExDA,EAAU,EAAE,yBACd,IAAIQ,CAAa,IAAIP,EAAuB,CAAE,MAAOZ,CAAY,CAAC,CAAC;AAAA,OACpEY,EAAuB,CAAE,MAAOZ,CAAY,CAAC,CAAC,IAE3CG,EAAM,SACRkB,EAAgBb,EAAca,CAAa,GAG7C,IAAIf,EAAkB,GAAGK,EAAU,EAAE,yBAAyB;AAAA,eACrDU,CAAa;AAAA,QACpBT,EAAuB,CAAC,IAE1B,OAAI,CAACT,EAAM,YAAcA,EAAM,UAC7BG,EAAkB,GAChBK,EAAU,EAAE,yBACd,aAAaL,CAAe,KAGvB,GAAGH,EAAM,IAAI,KAAKG,CAAe,EAC1C,CAAC,EACA,OAAQI,GAAMA,CAAC,EAElB,MAAO,GAAGC,EAAU,EAAE,yBAAyB,YAAYT,EAAO,KAChE,GACF,CAAC,KAAKU,EAAuB,CAAE,MAAOZ,CAAY,CAAC,CAAC;AAAA,CACtD,CAEO,IAAMsB,EAAkD,CAAC,EAEzD,SAASC,GACd5B,EACA,CACA,IAAMoB,EAAY,IAAI,IACtB,QAAWnB,KAAKD,EACdoB,EAAU,IAAInB,EAAE,KAAMA,CAAC,EAEzB,QAAWA,KAAKD,EAAQ,CACtB,IAAMqB,EAAIQ,GAA8B5B,EAAGmB,CAAS,EAChDC,GACFM,EAA8B,KAAK,CACjC,KAAM1B,EAAE,KACR,qBAAsBoB,CACxB,CAAC,CAEL,CACA,OAAO,OAAOM,CAA6B,CAC7C,CAEO,SAASE,GACdzB,EACAmB,EACA,CACA,IAAMlB,EAAcC,EAAmBF,EAAK,aAAa,EACzD,GACEC,EAAY,UACZA,EAAY,eACZA,EAAY,oBAEZ,OAEF,IAAME,EAASH,EAAK,OACjB,IAAKI,GAAU,CACd,IAAMH,EAAcC,EAAmBE,EAAM,aAAa,EAE1D,GACEH,EAAY,UACZA,EAAY,eACZA,EAAY,qBACZI,EAA2BD,EAAM,IAAI,GACrCE,EAAkB,IAAIF,EAAM,IAAI,EAEhC,OAGF,IAAIgB,EAAgB,SAMpB,OAJsBD,EACnB,IAAIf,EAAM,IAAI,GACb,OAAO,KAAMiB,GAAMA,EAAE,IAAI,GAAG,KAET,CACrB,IAAK,SACHD,EAAgB,SAChB,MACF,IAAK,MACHA,EAAgB,UAChB,MACF,IAAK,SACHA,EAAgB,UAChB,MACF,QACErB,EAAM,cAAcC,EAAK,IAAI,IAAII,EAAM,IAAI,OAAOA,EAAM,IAAI,kBAAkB,EAC9E,MACJ,CAEA,IAAIG,EAEJ,OAAIH,EAAM,OACRG,EAAkBmB,EAAgB,GAChCd,EAAU,EAAE,yBACd;AAAA,iBACSH,EAAc,GAAGG,EAAU,EAAE,yBAAyB;AAAA,cAErDA,EAAU,EAAE,yBACd,IAAIQ,CAAa,IAAIP,EAAuB,CAAE,MAAOZ,CAAY,CAAC,CAAC;AAAA,YACvEY,EAAuB,CAAE,MAAOZ,CAAY,CAAC,CAAC,GAAG,CAAC;AAAA,oBAC1CQ,EAAc,GAAGG,EAAU,EAAE,yBAAyB;AAAA,cAExDA,EAAU,EAAE,yBACd,IAAIQ,CAAa,IAAIP,EAAuB,CAAE,MAAOZ,CAAY,CAAC,CAAC;AAAA,YACvEY,EAAuB,CAAE,MAAOZ,CAAY,CAAC,CAAC,GAAG,CAAC;AAAA,UACpDY,EAAuB,CAAE,MAAOZ,CAAY,CAAC,CAAC,GAAG,EAE/CG,EAAM,WACRG,EAAkB,GAAGK,EAAU,EAAE,yBAAyB;AAAA,iBACnDA,EAAU,EAAE,yBAAyB;AAAA,aAEtCA,EAAU,EAAE,yBACd,IAAIQ,CAAa,IAAIP,EAAuB,CAAE,MAAOZ,CAAY,CAAC,CAAC;AAAA,WACtEY,EAAuB,CAAE,MAAOZ,CAAY,CAAC,CAAC;AAAA,UAC/CY,EAAuB,CAAE,MAAOZ,CAAY,CAAC,CAAC,IAE9CM,EAAkBmB,EAAgB,GAChCd,EAAU,EAAE,yBACd;AAAA,iBACOA,EAAU,EAAE,yBAAyB;AAAA,aAEtCA,EAAU,EAAE,yBACd,IAAIQ,CAAa,IAAIP,EAAuB,CAAE,MAAOZ,CAAY,CAAC,CAAC;AAAA,WACtEY,EAAuB,CAAE,MAAOZ,CAAY,CAAC,CAAC;AAAA,oBACrCW,EAAU,EAAE,yBAAyB;AAAA,UAC/CC,EAAuB,CAAE,MAAOZ,CAAY,CAAC,CAAC,GAAG,EAI9C,GAAGG,EAAM,IAAI,KAAKG,CAAe,EAC1C,CAAC,EACA,OAAQI,GAAMA,CAAC,EAElB,OAAOe,EACL,GAAGd,EAAU,EAAE,yBAAyB,YAAYT,EAAO,KACzD,GACF,CAAC,KAAKU,EAAuB,CAAE,MAAOZ,CAAY,CAAC,CAAC,GACtD,CACF,CCpRO,IAAM0B,EAAoC,CAAC,EAE3C,SAASC,GAAcC,EAA+C,CAC3E,QAAWC,KAAKD,EAAQ,CACtB,IAAM,EAAIE,GAAgBD,CAAC,EACvB,GACFH,EAAgB,KAAK,CAAE,KAAMG,EAAE,KAAM,qBAAsB,CAAE,CAAC,CAElE,CACA,OAAO,OAAOH,CAAe,CAC/B,CAEO,SAASI,GAAgBC,EAAkB,CAChD,IAAMC,EAAcC,EAAmBF,EAAK,aAAa,EAEzD,GAAIC,EAAY,SAAU,OAE1B,IAAME,EAASH,EAAK,OACjB,IAAKI,GAAU,CAEd,GAAI,CADgBF,EAAmBE,EAAM,aAAa,EAC1C,SAEhB,MAAO,GAAGA,EAAM,IAAI,KAAKC,EAAU,EAAE,yBAAyB,YAChE,CAAC,EACA,OAAQC,GAAMA,CAAC,EAElBH,EAAO,KAAK,WAAWE,EAAU,EAAE,yBAAyB,YAAY,EAExE,IAAME,EAAM,GAAGF,EAAU,EAAE,yBAAyB,YAAY,CAC9D,GAAGF,CACL,EAAE,KAAK,GAAG,CAAC,KAAKK,EAAuB,CAAE,MAAOP,CAAY,CAAC,CAAC;AAAA,EAE9D,OAAOQ,EAAgBF,CAAG,CAC5B,CCrCO,SAASG,EACdC,EACAC,EAAUC,EAAuB,CAAE,2BAA4B,EAAK,CAAC,EACrE,CACA,MAAO,GAAGC,EAAU,EAAE,yBAAyB,eAAeH,EAAY,KACxE,GACF,CAAC,MAAMC,CAAO;AAAA,CAChB,CCSA,IAAMG,EAAoB,OAEbC,EAAmC,CAAC,EAE1C,SAASC,GAAaC,EAA+C,CAC1E,QAAWC,KAAKD,EAAQ,CACtB,IAAM,EAAIE,GAAeD,CAAC,EACtB,GACFH,EAAe,KAAK,CAAE,KAAMG,EAAE,KAAM,qBAAsB,CAAE,CAAC,CAEjE,CACA,OAAO,OAAOH,CAAc,CAC9B,CAEO,SAASI,GAAeC,EAAkB,CAC/C,IAAMC,EAAcC,EAAmBF,EAAK,aAAa,EACzD,GAAIC,EAAY,SAAU,OAE1B,IAAME,EAASH,EAAK,OACjB,IAAKI,GAAU,CACd,IAAMH,EAAcC,EAAmBE,EAAM,aAAa,EAC1D,GAAIH,EAAY,SAAU,OAE1B,IAAII,EAAkB,GAEtB,GAAIC,EAA2BF,EAAM,IAAI,EAAG,CAC1C,IAAMG,EAAkBN,EAAY,YACjC,OAAOO,CAAsB,EAC7B,GAAG,CAAC,GAAG,MAEND,EACFF,EAAkBE,EAElBF,EAAkBI,EAAuB,CACvC,UAAWL,EAAM,KACjB,QAASM,EAAuB,CAC9B,2BAA4B,GAC5B,MAAOT,CACT,CAAC,CACH,CAAC,CAEL,SAAWU,EAAkB,IAAIP,EAAM,IAAI,EAEzCC,EAAkBM,EAAkB,IAAIP,EAAM,IAAI,EAAG,yBAErD,QAGF,OAAIA,EAAM,SACRC,EAAkBO,EAAcP,CAAe,GAG1C,GAAGD,EAAM,IAAI,KAAKC,CAAe,EAC1C,CAAC,EACA,OAAQQ,GAAMA,CAAC,EAElB,OAAIC,EAAU,EAAE,eACPC,EACL,GACED,EAAU,EAAE,yBACd,cAAcpB,CAAiB,MAC7BoB,EAAU,EAAE,yBACd,YAAYE,GAAW,CAAC,IAAIb,EAAO,KAAK,GAAG,CAAC,KAAKO,EAAuB,CACtE,2BAA4B,GAC5B,MAAOT,CACT,CAAC,CAAC,cAAcD,EAAK,IAAI,KAC3B,EAGKe,EACL,GAAGD,EAAU,EAAE,yBAAyB,YAAYX,EAAO,KACzD,GACF,CAAC,KAAKO,EAAuB,CAAE,2BAA4B,GAAM,MAAOT,CAAY,CAAC,CAAC,GACxF,CACF,CAEO,IAAMgB,EAAyC,CAAC,EAEhD,SAASC,GACdrB,EACA,CACA,QAAWC,KAAKD,EAAQ,CACtB,IAAM,EAAIsB,GAAqBrB,CAAC,EAC5B,GACFmB,EAAqB,KAAK,CAAE,KAAMnB,EAAE,KAAM,qBAAsB,CAAE,CAAC,CAEvE,CACA,OAAO,OAAOmB,CAAoB,CACpC,CAEO,SAASE,GAAqBnB,EAAkB,CACrD,IAAMC,EAAcC,EAAmBF,EAAK,aAAa,EACzD,GAAIC,EAAY,SAAU,OAE1B,IAAMmB,EAAwBpB,EAAK,aAChC,OAAQG,GAAWA,EAAO,OAAS,CAAC,EACpC,IAAKA,GAAW,CACf,IAAMkB,EAAgBlB,EAAO,KAAK,GAAG,EAM/BmB,EALenB,EAAO,IAEzBoB,GAAMvB,EAAK,OAAO,KAAMI,GAAUA,EAAM,OAASmB,CAAC,CACrD,EAE6C,IAAKA,GAAM,CACtD,IAAMtB,EAAcC,EAAmBqB,EAAE,aAAa,EACtD,GAAItB,EAAY,SAAU,OAC1B,IAAII,EAAkB,GAEtB,GAAIC,EAA2BiB,EAAE,IAAI,EAAG,CACtC,IAAMhB,GAAkBN,EAAY,YACjC,OAAOO,CAAsB,EAC7B,GAAG,CAAC,GAAG,MAEND,GACFF,EAAkBE,GAElBF,EAAkBI,EAAuB,CACvC,UAAWc,EAAE,KACb,QAASb,EAAuB,CAC9B,2BAA4B,GAC5B,MAAOT,CACT,CAAC,CACH,CAAC,CAEL,SAAWU,EAAkB,IAAIY,EAAE,IAAI,EAErClB,EAAkBM,EAAkB,IAAIY,EAAE,IAAI,EAAG,yBAEjD,OAAM,IAAI,MAAM,8CAA8C,EAGhE,MAAO,GAAGA,EAAE,IAAI,KAAKlB,CAAe,EACtC,CAAC,EAEKmB,EAAkB,GACtBV,EAAU,EAAE,yBACd,YAAYQ,EAAwB,KAClC,GACF,CAAC,MAAMZ,EAAuB,CAAE,2BAA4B,EAAK,CAAC,CAAC,IAEnE,MAAO,GAAGW,CAAa,KAAKG,CAAe,EAC7C,CAAC,EAEGC,EAAYzB,EAAK,OACpB,IAAKI,GAAU,CACd,IAAMH,EAAcC,EAAmBE,EAAM,aAAa,EAC1D,GAAIH,EAAY,SAAU,OAE1B,IAAII,EAAkB,GAEtB,GAAIC,EAA2BF,EAAM,IAAI,EAAG,CAC1C,IAAMG,EAAkBN,EAAY,YACjC,OAAOO,CAAsB,EAC7B,GAAG,CAAC,GAAG,MAEND,EACFF,EAAkBE,EAElBF,EAAkBI,EAAuB,CACvC,UAAWL,EAAM,KACjB,QAASM,EAAuB,CAC9B,2BAA4B,GAC5B,MAAOT,CACT,CAAC,CACH,CAAC,CAEL,SAAWU,EAAkB,IAAIP,EAAM,IAAI,EAEzCC,EAAkBM,EAAkB,IAAIP,EAAM,IAAI,EAAG,yBAErD,QAGF,OAAIA,EAAM,SACRC,EAAkBO,EAAcP,CAAe,GAG1C,GAAGD,EAAM,IAAI,KAAKC,CAAe,EAC1C,CAAC,EACA,OAAQQ,GAAMA,CAAC,EAEZa,EAAe1B,EAAK,OACvB,IAAKI,GAAU,CACd,IAAMH,EAAcC,EAAmBE,EAAM,aAAa,EAE1D,GADIH,EAAY,UACZ,CAACG,EAAM,UAAY,CAACA,EAAM,KAAM,OAEpC,IAAIC,EAAkB,GAEtB,GAAIC,EAA2BF,EAAM,IAAI,EAAG,CAC1C,IAAMG,EAAkBN,EAAY,YACjC,OAAOO,CAAsB,EAC7B,GAAG,CAAC,GAAG,MAEND,EACFF,EAAkBE,EAElBF,EAAkBI,EAAuB,CACvC,UAAWL,EAAM,KACjB,QAASM,EAAuB,CAC9B,2BAA4B,GAC5B,MAAOT,CACT,CAAC,CACH,CAAC,CAEL,SAAWU,EAAkB,IAAIP,EAAM,IAAI,EAEzCC,EAAkBM,EAAkB,IAAIP,EAAM,IAAI,EAAG,yBAErD,QAGF,OAAIA,EAAM,SACRC,EAAkBO,EAAcP,CAAe,GAG1C,GAAGD,EAAM,IAAI,KAAKC,CAAe,EAC1C,CAAC,EACA,OAAQQ,GAAMA,CAAC,EAEZc,EAAmB,GAAGb,EAAU,EAAE,yBAAyB,YAAY,CAC3E,GAAGY,EACH,GAAGN,CACL,EAAE,KACA,GACF,CAAC,KAAKV,EAAuB,CAAE,2BAA4B,GAAM,MAAOT,CAAY,CAAC,CAAC,IAEtF,OAAIa,EAAU,EAAE,eACP,GACLA,EAAU,EAAE,yBACd,cAAcpB,CAAiB,OAAOkC,EAAiB,CACrDb,EAAgBY,EAAkB,EAAI,EACtCE,EACE,CAAC,GAAGH,EAAc,GAAGN,CAAqB,EAAE,IACzCG,GAAM,GAAGT,EAAU,EAAE,yBAAyB,YAAYS,CAAC,IAC9D,CACF,EACAR,EACE,GAAGD,EAAU,EAAE,yBAAyB,YAAYE,GAAW,CAAC,KAChE,EACF,EACAD,EACE,GACED,EAAU,EAAE,yBACd,YAAYW,EAAU,KAAK,GAAG,CAAC,MAAMf,EAAuB,CAAC,GAC/D,CACF,CAAC,CAAC,aAAaV,EAAK,IAAI,MAGnB4B,EAAiB,CACtBb,EAAgBY,EAAkB,EAAI,EACtCE,EACE,CAAC,GAAGH,EAAc,GAAGN,CAAqB,EAAE,IACzCG,GAAM,GAAGT,EAAU,EAAE,yBAAyB,YAAYS,CAAC,IAC9D,CACF,EACAR,EACE,GAAGD,EAAU,EAAE,yBAAyB,YAAYW,EAAU,KAC5D,GACF,CAAC,IACH,CACF,CAAC,CACH,CAEA,SAAST,IAAa,CACpB,MAAO,QACLF,EAAU,EAAE,yBACd,WAAWpB,CAAiB,KAAKkB,EAAclB,CAAiB,CAAC;AAAA,QAE/DoB,EAAU,EAAE,yBACd,WAAWpB,CAAiB,KAAKkB,EAAclB,CAAiB,CAAC;AAAA,OAC5DkB,EAAclB,CAAiB,CAAC,EACvC,CCnSA,IAAAoC,EAA0B,4BAC1BC,GAAqB,qBCCd,SAASC,GAAmBC,EAAmB,CACpD,OAAOA,EACJ,IAAKC,GAAM,oBAAoBA,CAAC,GAAGC,EAAU,EAAE,mBAAmB,IAAI,EACtE,KAAK;AAAA,CAAI,CACd,CCNA,IAAAC,GAAyC,oBAGzC,eAAsBC,EAAOC,EAAe,CAC1C,GAAIC,EAAU,EAAE,kBACd,OAAOD,EAET,GAAI,CACF,OAAO,QAAM,GAAAE,QAAeF,EAAO,CAAE,OAAQ,YAAa,CAAC,CAC7D,OAASG,EAAO,CACd,eAAQ,MAAM,wBAAyBA,CAAK,EACrCH,CACT,CACF,CCXO,SAASI,IAAoB,CAClC,MAAO,YAAYC,EAAU,EAAE,yBAAyB,YAAYA,EAAU,EAAE,2BAA2B;AAAA,iBAC5FA,EAAU,EAAE,iBAAiB,mCAAmCA,EAAU,EAAE,yBAAyB,mBAClHA,EAAU,EAAE,yBACd,cAAcA,EAAU,EAAE,yBAAyB;AAAA;AAAA;AAAA,CAGrD,CAEO,SAASC,IAA+B,CAC7C,MAAO,YAAYD,EAAU,EAAE,iBAAiB,cAC9CA,EAAU,EAAE,iBACd,GAAGA,EAAU,EAAE,mBAAmB;AAAA,CACpC,CCZO,SAASE,EAAcC,EAAuB,CACnD,MAAO,GACLC,EAAU,EAAE,yBACd,eAAeD,EAAY,IAAKE,GAAM,GAAGD,EAAU,EAAE,kBAAkB,GAAGC,CAAC,EAAE,EAAE,KAAK,GAAG,CAAC,MAAMC,EAAuB,CAAC;AAAA,CACxH,CCmBA,SAASC,EACPC,EACA,CACA,MAAO,gBAAgBC,EAAU,EAAE,kBAAkB,GAAGD,EAAM,IAAI,MAAMA,EAAM,oBAAoB;AAAA,CACpG,CAEA,SAASE,IAAyB,CAChC,MAAO,YAAYD,EAAU,EAAE,yBAAyB,YACtDA,EAAU,EAAE,2BACd;AAAA,CACF,CAEO,SAASE,IAAuB,CACrC,IAAMC,EAAgB,IAAI,IAKpBC,EAAU,CAACC,EAA0BC,IAAmB,CAC5D,QAAWC,KAAkBF,EAAQ,CACnC,IAAMG,EAAaV,EAAyB,CAC1C,GAAGS,EACH,KAAM,GAAGA,EAAe,IAAI,GAAGD,CAAM,EACvC,CAAC,EACKG,EAAUN,EAAc,IAAII,EAAe,IAAI,EACjDE,EACFN,EAAc,IAAII,EAAe,KAAM,GAAGE,CAAO;AAAA,EAAKD,CAAU,EAAE,EAElEL,EAAc,IAAII,EAAe,KAAMC,CAAU,CAErD,CACF,EAEAJ,EAAQM,EAAgB,EAAE,EAC1BN,EAAQO,EAAgB,OAAO,EAC/BP,EAAQQ,EAAoB,WAAW,EACvCR,EAAQS,EAA2B,kBAAkB,EACrDT,EAAQU,EAA2B,kBAAkB,EACrDV,EAAQW,EAA+B,sBAAsB,EAC7DX,EAAQY,EAA+B,sBAAsB,EAC7DZ,EAAQa,EAAgB,OAAO,EAC/Bb,EAAQc,EAAsB,aAAa,EAC3Cd,EAAQe,EAAiB,QAAQ,EACjCf,EAAQgB,EAAkB,SAAS,EACnChB,EAAQiB,EAAkB,SAAS,EAEnC,IAAMC,EAAe,IAAI,IAAIV,EAAmB,IAAKW,GAAMA,EAAE,IAAI,CAAC,EAC5DC,EAA0B,IAAI,IAClCT,EAA8B,IAAKQ,GAAMA,EAAE,IAAI,CACjD,EACME,EAA0B,IAAI,IAClCT,EAA8B,IAAKO,GAAMA,EAAE,IAAI,CACjD,EAEA,OAAW,CAACG,EAAKC,CAAK,IAAKxB,EAAe,CACxC,IAAMyB,EAAWC,EAAkB,IAAIH,CAAG,EACpCI,EAAeR,EAAa,IAAII,CAAG,EACrCK,EACJ,GAAIH,GAAYE,EACdC,EAAYC,EAAc,CAAC,GAAGN,CAAG,QAAS,GAAGA,CAAG,WAAW,CAAC,UACnDE,EACTG,EAAY,GAAGL,CAAG,gBACTI,EACTC,EAAY,GAAGL,CAAG,gBAElB,UAGFvB,EAAc,IACZuB,EACA,GAAGC,CAAK;AAAA,EAAK7B,EAAyB,CACpC,KAAM4B,EACN,qBAAsBK,CACxB,CAAC,CAAC,EACJ,CACF,CAEA,OAAW,CAACL,EAAKC,CAAK,IAAKxB,EACzB,GAAIqB,EAAwB,IAAIE,CAAG,EAAG,CACpC,IAAMK,EAAYC,EAAc,CAC9B,GAAGN,CAAG,mBACN,GAAGA,CAAG,sBACR,CAAC,EACDvB,EAAc,IACZuB,EACA,GAAGC,CAAK;AAAA,EAAK7B,EAAyB,CACpC,KAAM,GAAG4B,CAAG,cACZ,qBAAsBK,CACxB,CAAC,CAAC,EACJ,CACF,CAGF,OAAW,CAACL,EAAKC,CAAK,IAAKxB,EACzB,GAAIsB,EAAwB,IAAIC,CAAG,EAAG,CACpC,IAAMK,EAAYC,EAAc,CAC9B,GAAGN,CAAG,mBACN,GAAGA,CAAG,sBACR,CAAC,EACDvB,EAAc,IACZuB,EACA,GAAGC,CAAK;AAAA,EAAK7B,EAAyB,CACpC,KAAM,GAAG4B,CAAG,cACZ,qBAAsBK,CACxB,CAAC,CAAC,EACJ,CACF,CAGF,OAAW,CAACL,EAAKC,CAAK,IAAKxB,EACzBA,EAAc,IACZuB,EACA,GAAGzB,GAAuB,CAAC;AAAA,EAAKgC,GAA6B,CAAC;AAAA,EAAKC,GAAe,CAAC;AAAA,EAAKP,CAAK,EAC/F,EAGF,OAAAxB,EAAc,IAAIH,EAAU,EAAE,aAAcmC,GAAa,CAAC,EAC1DhC,EAAc,IAAIH,EAAU,EAAE,kBAAmBoC,GAAkB,CAAC,EAE7DjC,CACT,CL1IA,eAAsBkC,IAAQ,CAC5B,IAAMC,EAAW,MAAM,KAAKC,GAAqB,EAAE,QAAQ,CAAC,EAC5DC,EAAM,UAAUF,EAAS,MAAM,QAAQ,EAIvC,QAASG,EAAI,EAAGA,EAAIH,EAAS,OAAQG,IAAK,CACxC,GAAM,CAACC,EAAMC,CAAO,EAAIL,EAASG,CAAC,EAClCD,EAAM,MAAMC,EAAI,CAAC,IAAIH,EAAS,MAAM,KAAKI,CAAI,KAAK,EAClD,QAAM,gBACJ,SAAKE,EAAU,EAAE,OAAQ,GAAGF,CAAI,KAAK,EACrC,MAAMG,EAAOF,CAAO,CACtB,CACF,CAEAH,EAAM,mBAAmB,EACzB,QAAM,gBACJ,SAAKI,EAAU,EAAE,OAAQ,WAAW,EACpC,MAAMC,EAAOC,GAAmBR,EAAS,IAAI,CAAC,CAACS,CAAG,IAAMA,CAAG,CAAC,CAAC,CAC/D,CACF,IrBTA,qBAAiB,CACf,YAAa,CACX,MAAO,CACL,cAAe,cACf,WAAY,WACd,CACF,EACA,MAAM,WAAWC,EAAS,CACxBC,GAAU,CACR,GAAGD,EAAQ,UAAU,OAErB,OAAQA,EAAQ,UAAU,QAAQ,KACpC,CAAC,EAED,IAAME,EAASF,EAAQ,KAAK,UAAU,OAChCG,EAAQH,EAAQ,KAAK,UAAU,MACrCI,EAAM,WAAWC,EAAU,EAAE,MAAM,EAAE,EACrCD,EAAM,WAAWF,EAAO,MAAM,YAAYC,EAAM,MAAM,EAAE,EACxDC,EAAM,eAAeC,EAAU,EAAE,UAAU,EAAE,EAE7C,GAAI,CACF,QAAM,UAAOA,EAAU,EAAE,MAAM,EAC/B,QAAM,MAAGA,EAAU,EAAE,OAAQ,CAAE,UAAW,EAAK,CAAC,CAClD,MAAiB,CAAC,CAElB,QAAM,SAAMA,EAAU,EAAE,OAAQ,CAAE,UAAW,EAAK,CAAC,EAEnDC,EAAM,iBAAiBH,EAAM,MAAM,SAAU,IAAMI,GAAaJ,CAAK,CAAC,EACtEG,EAAM,iBAAiBJ,EAAO,MAAM,UAAW,IAAMM,GAAaN,CAAM,CAAC,EACzEI,EAAM,mBAAoB,IAAMG,GAAiBP,CAAM,CAAC,EACxDI,EAAM,eAAgB,IAAMI,GAAaR,CAAM,CAAC,EAChDI,EAAM,qBAAsB,IAAMK,GAAmBT,CAAM,CAAC,EACxDG,EAAU,EAAE,aACdC,EAAM,0BAA2B,IAAMM,GAAwBV,CAAM,CAAC,EACtEI,EAAM,0BAA2B,IAAMO,GAAwBX,CAAM,CAAC,EACtEI,EAAM,8BAA+B,IACnCQ,GAA4BZ,CAAM,CACpC,EACAI,EAAM,8BAA+B,IACnCS,GAA4Bb,CAAM,CACpC,GAEFI,EAAM,gBAAiB,IAAMU,GAAcd,CAAM,CAAC,EAClDI,EAAM,iBAAkB,IAAMW,GAAef,CAAM,CAAC,EACpDI,EAAM,iBAAkB,IAAMY,GAAehB,CAAM,CAAC,EAEpD,MAAMiB,GAAW,wBAAyB,IAAMC,GAAM,CAAC,EAEvDhB,EAAM,qBAAqB,CAC7B,CACF,CAAC",
6
+ "names": ["import_promises", "import_generator_helper", "import_typebox", "import_value", "ENABLED", "debug", "message", "timed", "label", "fn", "start", "result", "elapsed", "timedAsync", "configSchema", "config", "setConfig", "input", "debug", "error", "getConfig", "isOptionsVariant", "annotation", "isTypeOverwriteVariant", "annotationKeys", "extractAnnotations", "input", "annotations", "description", "raw", "line", "l", "annotationKey", "key", "k", "isHidden", "isHiddenInput", "isHiddenInputCreate", "isHiddenInputUpdate", "a", "generateTypeboxOptions", "input", "exludeAdditionalProperties", "getConfig", "stringifiedOptions", "annotation", "isOptionsVariant", "makeUnion", "inputModels", "options", "generateTypeboxOptions", "getConfig", "processedEnums", "processedEnumsMap", "processEnums", "enums", "stringRepresentation", "stringifyEnum", "model", "debug", "data", "annotations", "extractAnnotations", "variantsString", "v", "getConfig", "makeUnion", "generateTypeboxOptions", "PrimitiveFields", "isPrimitivePrismaFieldType", "str", "stringifyPrimitiveType", "fieldType", "options", "getConfig", "config", "opts", "wrapWithPartial", "input", "exludeAdditionalPropertiesInOptions", "getConfig", "generateTypeboxOptions", "processedInclude", "processInclude", "models", "m", "stringifyInclude", "data", "annotations", "extractAnnotations", "fields", "field", "isPrimitivePrismaFieldType", "getConfig", "x", "ret", "generateTypeboxOptions", "wrapWithPartial", "processedOrderBy", "processOrderBy", "models", "m", "stringifyOrderBy", "data", "annotations", "extractAnnotations", "fields", "field", "isPrimitivePrismaFieldType", "makeUnion", "getConfig", "x", "ret", "generateTypeboxOptions", "wrapWithPartial", "wrapWithArray", "input", "getConfig", "generateTypeboxOptions", "nullableType", "getConfig", "nullableImport", "wrapWithNullable", "input", "wrapWithOptional", "input", "getConfig", "processedPlain", "processedPlainMap", "processPlain", "models", "m", "stringifyPlain", "model", "debug", "data", "isInputModelCreate", "isInputModelUpdate", "annotations", "extractAnnotations", "fields", "field", "getConfig", "stringifiedType", "isPrimitivePrismaFieldType", "overwrittenType", "isTypeOverwriteVariant", "stringifyPrimitiveType", "generateTypeboxOptions", "processedEnumsMap", "wrapWithArray", "madeOptional", "wrapWithNullable", "wrapWithOptional", "x", "processedPlainInputCreate", "processPlainInputCreate", "models", "m", "stringifyPlain", "processedPlainInputUpdate", "processPlainInputUpdate", "models", "m", "stringifyPlain", "processedRelations", "processRelations", "models", "m", "stringifyRelations", "debug", "data", "annotations", "extractAnnotations", "fields", "field", "isPrimitivePrismaFieldType", "processedEnumsMap", "stringifiedType", "processedPlainMap", "wrapWithArray", "wrapWithNullable", "x", "getConfig", "generateTypeboxOptions", "processedRelationsInputCreate", "processRelationsInputCreate", "modelsMap", "o", "stringifyRelationsInputCreate", "allModels", "typeboxIdType", "f", "connectString", "processedRelationsInputUpdate", "processRelationsInputUpdate", "stringifyRelationsInputUpdate", "wrapWithPartial", "processedSelect", "processSelect", "models", "m", "stringifySelect", "data", "annotations", "extractAnnotations", "fields", "field", "getConfig", "x", "ret", "generateTypeboxOptions", "wrapWithPartial", "makeIntersection", "inputModels", "options", "generateTypeboxOptions", "getConfig", "selfReferenceName", "processedWhere", "processWhere", "models", "m", "stringifyWhere", "data", "annotations", "extractAnnotations", "fields", "field", "stringifiedType", "isPrimitivePrismaFieldType", "overwrittenType", "isTypeOverwriteVariant", "stringifyPrimitiveType", "generateTypeboxOptions", "processedEnumsMap", "wrapWithArray", "x", "getConfig", "wrapWithPartial", "AND_OR_NOT", "processedWhereUnique", "processWhereUnique", "stringifyWhereUnique", "uniqueCompositeFields", "compositeName", "stringifiedFieldObjects", "f", "compositeObject", "allFields", "uniqueFields", "uniqueBaseObject", "makeIntersection", "makeUnion", "import_promises", "import_node_path", "generateBarrelFile", "imports", "i", "getConfig", "import_prettier", "format", "input", "getConfig", "prettierFormat", "error", "transformDateType", "getConfig", "transformDateImportStatement", "makeComposite", "inputModels", "getConfig", "i", "generateTypeboxOptions", "convertModelToStandalone", "input", "getConfig", "typepoxImportStatement", "mapAllModelsForWrite", "modelsPerName", "process", "models", "suffix", "processedModel", "standalone", "current", "processedEnums", "processedPlain", "processedRelations", "processedPlainInputCreate", "processedPlainInputUpdate", "processedRelationsInputCreate", "processedRelationsInputUpdate", "processedWhere", "processedWhereUnique", "processedSelect", "processedInclude", "processedOrderBy", "relationsSet", "e", "relationsInputCreateSet", "relationsInputUpdateSet", "key", "value", "hasPlain", "processedPlainMap", "hasRelations", "composite", "makeComposite", "transformDateImportStatement", "nullableImport", "nullableType", "transformDateType", "write", "mappings", "mapAllModelsForWrite", "debug", "i", "name", "content", "getConfig", "format", "generateBarrelFile", "key", "options", "setConfig", "models", "enums", "debug", "getConfig", "timed", "processEnums", "processPlain", "processRelations", "processWhere", "processWhereUnique", "processPlainInputCreate", "processPlainInputUpdate", "processRelationsInputCreate", "processRelationsInputUpdate", "processSelect", "processInclude", "processOrderBy", "timedAsync", "write"]
7
7
  }
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"@versantonlinesolutions/prismabox","version":"2.2.2","license":"MIT","description":"Typebox generator for prisma schema","author":{"name":"Ade Yahya Prasetyo, m1212e"},"keywords":["prisma2","prisma","prisma-generator","prisma-schema","code-generation","typebox","typebox-generator","prismabox"],"homepage":"https://github.com/m1212e/prismabox","repository":{"url":"https://github.com/m1212e/prismabox.git"},"scripts":{"dev":"bun run build && bunx prisma generate","build":"bun run typecheck && bun build.ts","lint":"biome check --write .","format":"bun run lint","typecheck":"tsc --noEmit"},"dependencies":{"@prisma/generator-helper":"^6.13.0","@sinclair/typebox":"^0.34.3","prettier":"^3.6.2"},"devDependencies":{"@biomejs/biome":"^2.1.3","@prisma/client":"6.13.0","@types/bun":"latest","esbuild":"^0.25.8","prisma":"6.13.0","typescript":"^5.9.2"},"bin":{"prismabox":"cli.js"}}
1
+ {"name":"@versantonlinesolutions/prismabox","version":"2.2.4","license":"MIT","description":"Typebox generator for prisma schema","author":{"name":"Ade Yahya Prasetyo, m1212e"},"keywords":["prisma2","prisma","prisma-generator","prisma-schema","code-generation","typebox","typebox-generator","prismabox"],"homepage":"https://github.com/m1212e/prismabox","repository":{"url":"https://github.com/m1212e/prismabox.git"},"scripts":{"dev":"bun run build && bunx prisma generate","build":"bun run typecheck && bun build.ts","lint":"biome check --write .","format":"bun run lint","typecheck":"tsc --noEmit"},"dependencies":{"@prisma/generator-helper":"^6.13.0","@sinclair/typebox":"^0.34.3","prettier":"^3.6.2"},"devDependencies":{"@biomejs/biome":"^2.1.3","@prisma/client":"6.13.0","@types/bun":"latest","esbuild":"^0.25.8","prisma":"6.13.0","typescript":"^5.9.2"},"bin":{"prismabox":"cli.js"}}