{"version":3,"sources":["../../../src/api/records.ts"],"sourcesContent":["import type { PipeInput, PipeOutput, Pipe } from './base'\nimport { compileNested, context, schema, standard } from './base/pipes'\nimport { getRandomValue } from '../utils/functions'\n\ntype ObjectPipe<T extends Record<string, Pipe<any, any>>> = Pipe<{ [K in keyof T]: PipeInput<T[K]> }, { [K in keyof T]: PipeOutput<T[K]> }>\n\nconst objCompile: (branches: Record<string, Pipe<any, any>>) => Parameters<typeof standard>[0] =\n\t(branches) =>\n\t({ input, path }, opts) => {\n\t\tconst resVarname = `res_${getRandomValue()}`\n\t\tconst errorsVarname = `errors_${getRandomValue()}`\n\t\tconst validatedVarname = `validated_${getRandomValue()}`\n\t\treturn [\n\t\t\topts.wrapError(\n\t\t\t\t`typeof ${input} !== 'object' || ${input} === null || Array.isArray(${input})`,\n\t\t\t\t`PipeError.root('is not an object', ${input}, ${path})`,\n\t\t\t),\n\t\t\t`const ${resVarname} = {}`,\n\t\t\topts.failEarly ? '' : `const ${errorsVarname} = []`,\n\t\t\t`let ${validatedVarname}`,\n\t\t\t...Object.entries(branches).flatMap(([k, branch]) => [\n\t\t\t\t`${validatedVarname} = ${input}['${k}']`,\n\t\t\t\t...compileNested({ opts, pipe: branch, input: validatedVarname, key: k, errorType: 'assign' }),\n\t\t\t\topts.failEarly\n\t\t\t\t\t? opts.wrapError(`${validatedVarname} instanceof PipeError`, validatedVarname)\n\t\t\t\t\t: `if (${validatedVarname} instanceof PipeError) ${errorsVarname}.push(${validatedVarname})`,\n\t\t\t\t`${resVarname}['${k}'] = ${validatedVarname}`,\n\t\t\t]),\n\t\t\topts.failEarly ? '' : opts.wrapError(`${errorsVarname}.length`, `PipeError.rootFrom(${errorsVarname})`),\n\t\t\t`${input} = ${resVarname}`,\n\t\t]\n\t}\n\nexport const object = <T extends Record<string, Pipe<any, any>>>(branches: T) =>\n\tstandard<PipeInput<ObjectPipe<T>>, PipeOutput<ObjectPipe<T>>>(objCompile(branches), {\n\t\tschema: () => ({\n\t\t\ttype: 'object',\n\t\t\tproperties: Object.fromEntries(\n\t\t\t\tObject.entries(branches ?? {})\n\t\t\t\t\t.filter(([_, pipe]) => !context(pipe).jsonRedacted)\n\t\t\t\t\t.map(([key, pipe]) => [key, schema(pipe)]),\n\t\t\t),\n\t\t\trequired: Object.entries(branches ?? {})\n\t\t\t\t.filter(([, pipe]) => !context(pipe).optional && !context(pipe).jsonRedacted)\n\t\t\t\t.map(([key]) => key),\n\t\t\tadditionalProperties: false,\n\t\t}),\n\t\tcontext: { branches },\n\t})\n\nexport const objectPick = <T extends ObjectPipe<Record<string, Pipe<any, any>>>, S extends ReadonlyArray<keyof PipeInput<T> & string>>(\n\tbranch: T,\n\tkeys: S,\n) => {\n\tconst ctx = context(branch)\n\tconst sch = schema(branch)\n\tconst branches = Object.fromEntries(\n\t\tObject.entries((ctx.branches as Record<string, Pipe<any, any>>) ?? {}).filter(([key]) => keys.includes(key as S[number])),\n\t)\n\treturn standard<Pick<PipeInput<T>, S[number]>, Pick<PipeOutput<T>, S[number]>>(objCompile(branches), {\n\t\tschema: () => ({\n\t\t\t...sch,\n\t\t\tproperties: Object.fromEntries(Object.entries(sch.properties ?? {}).filter(([key]) => keys.includes(key as S[number]))),\n\t\t\trequired: (sch.required ?? []).filter((key) => keys.includes(key as S[number])),\n\t\t}),\n\t\tcontext: { ...ctx, branches },\n\t})\n}\n\nexport const objectOmit = <T extends ObjectPipe<Record<string, Pipe<any, any>>>, S extends ReadonlyArray<keyof PipeInput<T> & string>>(\n\tbranch: T,\n\tkeys: S,\n) => {\n\tconst ctx = context(branch)\n\tconst sch = schema(branch)\n\tconst branches = Object.fromEntries(\n\t\tObject.entries((ctx.branches as Record<string, Pipe<any, any>>) ?? {}).filter(([key]) => !keys.includes(key as S[number])),\n\t)\n\treturn standard<Omit<PipeInput<T>, S[number]>, Omit<PipeOutput<T>, S[number]>>(objCompile(branches), {\n\t\tschema: () => ({\n\t\t\t...sch,\n\t\t\tproperties: Object.fromEntries(Object.entries(sch.properties ?? {}).filter(([key]) => !keys.includes(key as S[number]))),\n\t\t\trequired: (sch.required ?? []).filter((key) => !keys.includes(key as S[number])),\n\t\t}),\n\t\tcontext: { ...ctx, branches },\n\t})\n}\n\nexport const record = <K extends Pipe<any, PropertyKey>, V extends Pipe<any, any>>(kPipe: K, vPipe: V) => {\n\tconst kValidatedVarname = `kValidated_${getRandomValue()}`\n\tconst vValidatedVarname = `vValidated_${getRandomValue()}`\n\tconst resVarname = `res_${getRandomValue()}`\n\tconst errorsVarname = `errors_${getRandomValue()}`\n\treturn standard<Record<PipeInput<K>, PipeInput<V>>, Record<PipeOutput<K>, PipeOutput<V>>>(\n\t\t({ input, path }, opts) => [\n\t\t\topts.wrapError(\n\t\t\t\t`typeof ${input} !== 'object' || ${input} === null || Array.isArray(${input})`,\n\t\t\t\t`PipeError.root(['is not an object'], ${input}, ${path})`,\n\t\t\t),\n\t\t\t`const ${resVarname} = {}`,\n\t\t\topts.failEarly ? '' : `const ${errorsVarname} = []`,\n\t\t\t`for (let [k, v] of Object.entries(${input})) {`,\n\t\t\t...[\n\t\t\t\t`let ${kValidatedVarname} = k`,\n\t\t\t\t`let ${vValidatedVarname} = v`,\n\t\t\t\t...compileNested({ opts, pipe: kPipe, input: kValidatedVarname, errorType: 'assign', key: kValidatedVarname }),\n\t\t\t\topts.failEarly\n\t\t\t\t\t? opts.wrapError(\n\t\t\t\t\t\t\t`${kValidatedVarname} instanceof PipeError`,\n\t\t\t\t\t\t\t`PipeError.path(k, '${kValidatedVarname}', ${kValidatedVarname})`,\n\t\t\t\t\t\t)\n\t\t\t\t\t: `\tif (${kValidatedVarname} instanceof PipeError) ${errorsVarname}.push(PipeError.path(k, '${kValidatedVarname}', ${kValidatedVarname}))`,\n\t\t\t\t...compileNested({ opts, pipe: vPipe, input: vValidatedVarname, errorType: 'assign', key: kValidatedVarname }),\n\t\t\t\topts.failEarly\n\t\t\t\t\t? opts.wrapError(\n\t\t\t\t\t\t\t`${vValidatedVarname} instanceof PipeError`,\n\t\t\t\t\t\t\t`PipeError.path(k, '${kValidatedVarname}', ${vValidatedVarname})`,\n\t\t\t\t\t\t)\n\t\t\t\t\t: `\tif (${vValidatedVarname} instanceof PipeError) ${errorsVarname}.push(PipeError.path(k, '${kValidatedVarname}', ${vValidatedVarname}))`,\n\t\t\t\t`\tif (!(${kValidatedVarname} instanceof PipeError) && !(${vValidatedVarname} instanceof PipeError)) ${resVarname}[${kValidatedVarname}] = ${vValidatedVarname};`,\n\t\t\t],\n\t\t\t`}`,\n\t\t\topts.failEarly ? '' : opts.wrapError(`${errorsVarname}.length`, `PipeError.rootFrom(${errorsVarname})`),\n\t\t\t`${input} = ${resVarname}`,\n\t\t],\n\t\t{\n\t\t\tschema: () => ({\n\t\t\t\ttype: 'object',\n\t\t\t\tpropertyNames: schema(kPipe),\n\t\t\t\tadditionalProperties: schema(vPipe),\n\t\t\t}),\n\t\t},\n\t)\n}\n\nexport const asMap = <K extends PropertyKey, V>() =>\n\tstandard<Record<K, V>, Map<K, V>>(({ input }) => [`${input} = new Map(Object.entries(${input}))`])\n"],"mappings":"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","names":["records_exports","__export","asMap","object","objectOmit","objectPick","record","__toCommonJS","import_pipes","import_functions","objCompile","branches","input","path","opts","resVarname","errorsVarname","validatedVarname","k","branch","_","pipe","key","keys","ctx","sch","kPipe","vPipe","kValidatedVarname","vValidatedVarname"]}