{"version":3,"file":"create-primitive-type.mjs","sources":["../../src/utils/create-primitive-type.mts"],"sourcesContent":["import { Result } from 'ts-data-forge';\nimport { type Primitive } from 'ts-type-forge';\nimport { type Type } from '../type.mjs';\nimport { createAssertFn } from './create-assert-fn.mjs';\nimport { createCastFn } from './create-cast-fn.mjs';\nimport { createPrimitiveValidationError } from './validation-error.mjs';\n\nexport const createPrimitiveType = <A extends Primitive>({\n  defaultValue,\n  is,\n  typeName,\n}: Readonly<{\n  typeName: string;\n  defaultValue: A;\n  is: (value: unknown) => value is A;\n}>): Type<A> => {\n  const validate: Type<A>['validate'] = (a) =>\n    is(a)\n      ? Result.ok(a)\n      : Result.err([\n          createPrimitiveValidationError({\n            actualValue: a,\n            expectedType: typeName,\n            typeName,\n            details: undefined,\n          }),\n        ]);\n\n  return {\n    typeName,\n    defaultValue,\n    is,\n    fill: (a) => (is(a) ? a : defaultValue),\n    prune: (a) => a,\n    validate,\n    assertIs: createAssertFn(validate),\n    cast: createCastFn(validate),\n  };\n};\n"],"names":[],"mappings":";;;;;AAOO,MAAM,sBAAsB,CAAsB;AAAA,EACvD,YAAA;AAAA,EACA,EAAA;AAAA,EACA;AACF,CAAA,KAIgB;AACd,EAAA,MAAM,QAAA,GAAgC,CAAC,CAAA,KACrC,EAAA,CAAG,CAAC,CAAA,GACA,MAAA,CAAO,EAAA,CAAG,CAAC,CAAA,GACX,MAAA,CAAO,GAAA,CAAI;AAAA,IACT,8BAAA,CAA+B;AAAA,MAC7B,WAAA,EAAa,CAAA;AAAA,MACb,YAAA,EAAc,QAAA;AAAA,MACd,QAAA;AAAA,MACA,OAAA,EAAS;AAAA,KACV;AAAA,GACF,CAAA;AAEP,EAAA,OAAO;AAAA,IACL,QAAA;AAAA,IACA,YAAA;AAAA,IACA,EAAA;AAAA,IACA,MAAM,CAAC,CAAA,KAAO,EAAA,CAAG,CAAC,IAAI,CAAA,GAAI,YAAA;AAAA,IAC1B,KAAA,EAAO,CAAC,CAAA,KAAM,CAAA;AAAA,IACd,QAAA;AAAA,IACA,QAAA,EAAU,eAAe,QAAQ,CAAA;AAAA,IACjC,IAAA,EAAM,aAAa,QAAQ;AAAA,GAC7B;AACF;;;;"}