{"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":[]}