{"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":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,mBAAyD;AAGzD,MAAM,UAAU,CACf,QACA,kBACA,eAEA;AAAA,EACC,CAAC,EAAE,OAAO,SAAAA,SAAQ,GAAG,SAAS;AAAA,IAC7B,QAAQA,QAAO,qBAAqB,KAAK;AAAA,IACzC,OAAG,4BAAc,EAAE,MAAM,MAAM,QAAQ,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;AAAA,IACnE;AAAA,EACD;AAAA,EACA;AAAA,IACC,GAAG;AAAA,IACH,SAAS,EAAE,GAAG,QAAQ,SAAS,iBAAiB;AAAA,EACjD;AACD;AAEM,MAAM,WAAW,CAA2B,WAClD,QAAiB,QAAQ,CAAC,MAAM,MAAM,MAAM;AAAA,EAC3C,QAAQ,OAAO,EAAE,OAAO,KAAC,qBAAO,MAAM,GAAG,EAAE,MAAM,OAAO,CAAC,EAAE;AAC5D,CAAC;AAEK,MAAM,WAAW,CAA2B,WAClD,QAAsB,QAAQ,CAAC,MAAM,MAAM,QAAW;AAAA,EACrD,SAAS,EAAE,UAAU,KAAK;AAC3B,CAAC;AAEK,MAAM,UAAU,CAA2B,WACjD,QAA6B,QAAQ,CAAC,MAAM,MAAM,QAAQ,MAAM,QAAW;AAAA,EAC1E,QAAQ,OAAO,EAAE,OAAO,KAAC,qBAAO,MAAM,GAAG,EAAE,MAAM,OAAO,CAAC,EAAE;AAAA,EAC3D,SAAS,EAAE,OAAG,sBAAQ,MAAM,GAAG,UAAU,KAAK;AAC/C,CAAC;AAEK,MAAM,cAAc,CAA2B,QAAW,cAChE,QAAkB,QAAQ,MAAM,CAAC,UAAU,GAAG;AAAA,EAC7C,QAAQ,UAAM,qBAAO,MAAM;AAAA,EAC3B,SAAS,EAAE,OAAG,sBAAQ,MAAM,GAAG,UAAU,KAAK;AAC/C,CAAC;AAIK,MAAM,WAAW,CAA2B,QAAW,YAC7D;AAAA,EACC,CAAC,EAAE,OAAO,SAAAA,SAAQ,GAAG,SAAS;AAAA,IAC7B,OAAO,KAAK,mBAAmB,KAAK,MAAMA,QAAO;AAAA,IACjD,OAAG,4BAAc,EAAE,MAAM,MAAM,QAAQ,MAAM,CAAC;AAAA,EAC/C;AAAA,EACA;AAAA,IACC,QAAQ,CAAC,OAAO,EAAE,OAAG,qBAAO,MAAM,GAAG,SAAS,EAAE,YAAY,IAAI;AAAA,IAChE,SAAS,EAAE,OAAG,sBAAQ,MAAM,GAAG,UAAU,KAAK,UAAU,KAAK;AAAA,EAC9D;AACD;AAED,MAAM,UAAU,CAA2B,QAAW,YACrD;AAAA,EACC,CAAC,EAAE,OAAO,SAAAA,SAAQ,GAAG,SAAS;AAAA,IAC7B,OAAG,4BAAc,EAAE,MAAM,MAAM,QAAQ,OAAO,WAAW,SAAS,CAAC;AAAA,IACnE,OAAO,KAAK,0BAA0B,KAAK,MAAMA,QAAO;AAAA,EACzD;AAAA,EACA;AAAA,IACC,QAAQ,CAAC,OAAO,EAAE,OAAG,qBAAO,MAAM,GAAG,SAAS,EAAE,SAAS,IAAI;AAAA,IAC7D,SAAS,EAAE,OAAG,sBAAQ,MAAM,GAAG,OAAO,IAAI;AAAA,EAC3C;AACD;","names":["context"]}