{"version":3,"sources":["../../../src/api/core.ts"],"sourcesContent":["import { PipeError } from './base'\nimport { define, standard } from './base/pipes'\nimport { equal } from '../utils/differ'\n\nexport const custom = <T>(condition: (input: T) => boolean, err = `doesn't pass custom rule`) =>\n\tdefine<T, T>(\n\t\t(input) => {\n\t\t\tif (condition(input)) return input\n\t\t\treturn PipeError.root(err, input)\n\t\t},\n\t\t{\n\t\t\tcontext: { custom: condition },\n\t\t},\n\t)\n\nexport const eq = <T>(compare: T, err?: string) =>\n\tstandard<T, T>(\n\t\t({ input, context, path }, opts) =>\n\t\t\topts.wrapError(\n\t\t\t\t`${input} !== ${context}.eq && !${context}.equal(${input}, ${context}.eq)`,\n\t\t\t\t`PipeError.root(\\`${err ?? `is not equal to \\${${context}.eq}`}\\`, ${input}, ${path})`,\n\t\t\t),\n\t\t{\n\t\t\tcontext: { eq: compare, equal },\n\t\t\tschema: (context) => ({ const: context.eq ?? compare }),\n\t\t},\n\t)\n\nexport const is = eq\n\nexport const ne = <T>(compare: T, err?: string) =>\n\tstandard<T, T>(\n\t\t({ input, context, path }, opts) =>\n\t\t\topts.wrapError(\n\t\t\t\t`${input} === ${context}.ne || ${context}.equal(${input}, ${context}.ne)`,\n\t\t\t\t`PipeError.root(\\`${err ?? `is equal to \\${${context}.ne}`}\\`, ${input}, ${path})`,\n\t\t\t),\n\t\t{\n\t\t\tcontext: { ne: compare, equal },\n\t\t\tschema: (context) => ({ not: { const: context.eq ?? compare } }),\n\t\t},\n\t)\n\nconst inArray = <T>(array: Readonly<T[]>, err?: string) =>\n\tstandard<T, T>(\n\t\t({ input, context, path }, opts) =>\n\t\t\topts.wrapError(\n\t\t\t\t`!${context}.in.some((x) => ${input} === x || ${context}.equal(${input}, x))`,\n\t\t\t\t`PipeError.root(\\`${err ?? `is not in the list: [\\${${context}.in}]`}\\`, ${input}, ${path})`,\n\t\t\t),\n\t\t{\n\t\t\tcontext: { in: array, equal },\n\t\t\tschema: (context) => ({ enum: [...(context.in ?? array)] }),\n\t\t},\n\t)\n\nexport const nin = <T>(array: Readonly<T[]>, err?: string) =>\n\tstandard<T, T>(\n\t\t({ input, context, path }, opts) =>\n\t\t\topts.wrapError(\n\t\t\t\t`${context}.nin.some((x) => ${input} === x || ${context}.equal(${input}, x))`,\n\t\t\t\t`PipeError.root(\\`${err ?? `is in the list: [\\${${context}.nin}]`}\\`, ${input}, ${path})`,\n\t\t\t),\n\t\t{\n\t\t\tcontext: { nin: array, equal },\n\t\t\tschema: (context) => ({ not: { enum: [...(context.nin ?? array)] } }),\n\t\t},\n\t)\n\nfunction itemType(input: unknown) {\n\treturn input?.constructor?.name === 'String' ? 'characters' : 'items'\n}\n\nexport const has = <T extends { length: number }>(length: number, err?: string) =>\n\tstandard<T, T>(\n\t\t({ input, context, path }, opts) =>\n\t\t\topts.wrapError(\n\t\t\t\t`${input}.length !== ${context}.has`,\n\t\t\t\t`PipeError.root(\\`${err ?? `must contain \\${${context}.has} \\${${context}.itemType(${input})}`}\\`, ${input}, ${path})`,\n\t\t\t),\n\t\t{\n\t\t\tcontext: { has: length, itemType },\n\t\t\tschema: (context) => {\n\t\t\t\tconst val = context.has ?? length\n\t\t\t\treturn {\n\t\t\t\t\tminItems: val,\n\t\t\t\t\tmaxItems: val,\n\t\t\t\t\tminLength: val,\n\t\t\t\t\tmaxLength: val,\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t)\n\nexport const min = <T extends { length: number }>(length: number, err?: string) =>\n\tstandard<T, T>(\n\t\t({ input, context, path }, opts) =>\n\t\t\topts.wrapError(\n\t\t\t\t`${input}.length < ${context}.min`,\n\t\t\t\t`PipeError.root(\\`${err ?? `must contain \\${${context}.min} or more \\${${context}.itemType(${input})}`}\\`, ${input}, ${path})`,\n\t\t\t),\n\t\t{\n\t\t\tcontext: { min: length, itemType },\n\t\t\tschema: (context) => {\n\t\t\t\tconst val = context.min ?? length\n\t\t\t\treturn { minItems: val, minLength: val }\n\t\t\t},\n\t\t},\n\t)\n\nexport const max = <T extends { length: number }>(length: number, err?: string) =>\n\tstandard<T, T>(\n\t\t({ input, context, path }, opts) =>\n\t\t\topts.wrapError(\n\t\t\t\t`${input}.length > ${context}.max`,\n\t\t\t\t`PipeError.root(\\`${err ?? `must contain \\${${context}.max} or less \\${${context}.itemType(${input})}`}\\`, ${input}, ${path})`,\n\t\t\t),\n\t\t{\n\t\t\tcontext: { max: length, itemType },\n\t\t\tschema: (context) => {\n\t\t\t\tconst val = context.min ?? length\n\t\t\t\treturn { maxItems: val, maxLength: val }\n\t\t\t},\n\t\t},\n\t)\n\nexport { inArray as in }\n"],"mappings":"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","names":["PipeError","define","standard","equal","custom","condition","err","input","eq","compare","context","path","opts","is","ne","inArray","array","nin","itemType","has","length","val","min","max"]}