{"version":3,"sources":["../../../src/api/optionals.ts"],"sourcesContent":["import type { Pipe, PipeInput, PipeOutput } from './base'\nimport { standard, compileNested, context, schema } from './base/pipes'\nimport type { DeepPartial } from '../utils/types'\n\nconst partial = <T extends Pipe<any, any>, P>(\n\tbranch: T,\n\tpartialCondition: (i: unknown) => boolean,\n\tconfig: Parameters<typeof standard<PipeInput<T> | P, PipeOutput<T> | P>>[1],\n) =>\n\tstandard<PipeInput<T> | P, PipeOutput<T> | P>(\n\t\t({ input, context }, opts) => [\n\t\t\t`if (!${context}.partialCondition(${input})) {`,\n\t\t\t...compileNested({ opts, pipe: branch, input }).map((l) => `  ${l}`),\n\t\t\t`}`,\n\t\t],\n\t\t{\n\t\t\t...config,\n\t\t\tcontext: { ...config?.context, partialCondition },\n\t\t},\n\t)\n\nexport const nullable = <T extends Pipe<any, any>>(branch: T) =>\n\tpartial<T, null>(branch, (i) => i === null, {\n\t\tschema: () => ({ oneOf: [schema(branch), { type: 'null' }] }),\n\t})\n\nexport const optional = <T extends Pipe<any, any>>(branch: T) =>\n\tpartial<T, undefined>(branch, (i) => i === undefined, {\n\t\tcontext: { optional: true },\n\t})\n\nexport const nullish = <T extends Pipe<any, any>>(branch: T) =>\n\tpartial<T, null | undefined>(branch, (i) => i === null || i === undefined, {\n\t\tschema: () => ({ oneOf: [schema(branch), { type: 'null' }] }),\n\t\tcontext: { ...context(branch), optional: true },\n\t})\n\nexport const conditional = <T extends Pipe<any, any>>(branch: T, condition: () => boolean) =>\n\tpartial<T, never>(branch, () => !condition(), {\n\t\tschema: () => schema(branch),\n\t\tcontext: { ...context(branch), optional: true },\n\t})\n\ntype DefaultValue<T> = T extends object ? DeepPartial<T> : T\n\nexport const defaults = <T extends Pipe<any, any>>(branch: T, def: DefaultValue<PipeInput<T>>) =>\n\tstandard<PipeInput<T> | undefined, Exclude<PipeOutput<T>, undefined>>(\n\t\t({ input, context }, opts) => [\n\t\t\t`if (${input} === undefined) ${input} = ${context}.defaults`,\n\t\t\t...compileNested({ opts, pipe: branch, input }),\n\t\t],\n\t\t{\n\t\t\tschema: (c) => ({ ...schema(branch), default: c.defaults ?? def }),\n\t\t\tcontext: { ...context(branch), defaults: def, optional: true },\n\t\t},\n\t)\n\nconst onCatch = <T extends Pipe<any, any>>(branch: T, def: DefaultValue<PipeInput<T>>) =>\n\tstandard<PipeInput<T>, PipeOutput<T>>(\n\t\t({ input, context }, opts) => [\n\t\t\t...compileNested({ opts, pipe: branch, input, errorType: 'assign' }),\n\t\t\t`if (${input} instanceof PipeError) ${input} = ${context}.catch`,\n\t\t],\n\t\t{\n\t\t\tschema: (c) => ({ ...schema(branch), default: c.catch ?? def }),\n\t\t\tcontext: { ...context(branch), catch: def },\n\t\t},\n\t)\n\nexport { onCatch as catch }\n"],"mappings":"AACA,OAAS,YAAAA,EAAU,iBAAAC,EAAe,WAAAC,EAAS,UAAAC,MAAc,eAGzD,MAAMC,EAAU,CACfC,EACAC,EACAC,IAEAP,EACC,CAAC,CAAE,MAAAQ,EAAO,QAAAN,CAAQ,EAAGO,IAAS,CAC7B,QAAQP,CAAO,qBAAqBM,CAAK,OACzC,GAAGP,EAAc,CAAE,KAAAQ,EAAM,KAAMJ,EAAQ,MAAAG,CAAM,CAAC,EAAE,IAAKE,GAAM,KAAKA,CAAC,EAAE,EACnE,GACD,EACA,CACC,GAAGH,EACH,QAAS,CAAE,GAAGA,GAAQ,QAAS,iBAAAD,CAAiB,CACjD,CACD,EAEYK,EAAsCN,GAClDD,EAAiBC,EAASO,GAAMA,IAAM,KAAM,CAC3C,OAAQ,KAAO,CAAE,MAAO,CAACT,EAAOE,CAAM,EAAG,CAAE,KAAM,MAAO,CAAC,CAAE,EAC5D,CAAC,EAEWQ,EAAsCR,GAClDD,EAAsBC,EAASO,GAAMA,IAAM,OAAW,CACrD,QAAS,CAAE,SAAU,EAAK,CAC3B,CAAC,EAEWE,EAAqCT,GACjDD,EAA6BC,EAASO,GAAMA,GAAM,KAAyB,CAC1E,OAAQ,KAAO,CAAE,MAAO,CAACT,EAAOE,CAAM,EAAG,CAAE,KAAM,MAAO,CAAC,CAAE,GAC3D,QAAS,CAAE,GAAGH,EAAQG,CAAM,EAAG,SAAU,EAAK,CAC/C,CAAC,EAEWU,EAAc,CAA2BV,EAAWW,IAChEZ,EAAkBC,EAAQ,IAAM,CAACW,EAAU,EAAG,CAC7C,OAAQ,IAAMb,EAAOE,CAAM,EAC3B,QAAS,CAAE,GAAGH,EAAQG,CAAM,EAAG,SAAU,EAAK,CAC/C,CAAC,EAIWY,EAAW,CAA2BZ,EAAWa,IAC7DlB,EACC,CAAC,CAAE,MAAAQ,EAAO,QAAAN,CAAQ,EAAGO,IAAS,CAC7B,OAAOD,CAAK,mBAAmBA,CAAK,MAAMN,CAAO,YACjD,GAAGD,EAAc,CAAE,KAAAQ,EAAM,KAAMJ,EAAQ,MAAAG,CAAM,CAAC,CAC/C,EACA,CACC,OAASW,IAAO,CAAE,GAAGhB,EAAOE,CAAM,EAAG,QAASc,EAAE,UAAYD,CAAI,GAChE,QAAS,CAAE,GAAGhB,EAAQG,CAAM,EAAG,SAAUa,EAAK,SAAU,EAAK,CAC9D,CACD,EAEKE,EAAU,CAA2Bf,EAAWa,IACrDlB,EACC,CAAC,CAAE,MAAAQ,EAAO,QAAAN,CAAQ,EAAGO,IAAS,CAC7B,GAAGR,EAAc,CAAE,KAAAQ,EAAM,KAAMJ,EAAQ,MAAAG,EAAO,UAAW,QAAS,CAAC,EACnE,OAAOA,CAAK,0BAA0BA,CAAK,MAAMN,CAAO,QACzD,EACA,CACC,OAASiB,IAAO,CAAE,GAAGhB,EAAOE,CAAM,EAAG,QAASc,EAAE,OAASD,CAAI,GAC7D,QAAS,CAAE,GAAGhB,EAAQG,CAAM,EAAG,MAAOa,CAAI,CAC3C,CACD","names":["standard","compileNested","context","schema","partial","branch","partialCondition","config","input","opts","l","nullable","i","optional","nullish","conditional","condition","defaults","def","c","onCatch"]}