import { HasTag, SomeSpec, Spec, SpecSuccess, SpecTag, SpectypesError } from './types.js' import { error } from './error.js' /** * Creates a spec that transforms the result of successful validation. * * @param spec Basis spec * @param transform Success mapping function */ export const map: ( spec: HasTag extends true ? SpectypesError<'optional', 'map'> : HasTag extends true ? SpectypesError<'filter', 'map'> : HasTag extends true ? SpectypesError<'lazy', 'map'> : ItemSpec, transform: (form: SpecSuccess) => To ) => Spec<['map', ...SpecTag], 'transformer', To> = error