{"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":["core_exports","__export","custom","eq","has","inArray","is","max","min","ne","nin","__toCommonJS","import_base","import_pipes","import_differ","condition","err","input","compare","context","path","opts","array","itemType","length","val"]}