{"version":3,"file":"create-type.mjs","sources":["../../src/utils/create-type.mts"],"sourcesContent":["import { type Type } from '../type.mjs';\nimport { createAssertFn } from './create-assert-fn.mjs';\nimport { createCastFn } from './create-cast-fn.mjs';\nimport { createIsFn } from './create-is-fn.mjs';\n\nexport const createType = <A,>({\n  defaultValue,\n  fill,\n  prune,\n  typeName,\n  validate,\n}: Readonly<{\n  typeName: string;\n  defaultValue: A;\n  validate: Type<A>['validate'];\n  fill?: Type<A>['fill'];\n  prune?: Type<A>['prune'];\n}>): Type<A> => {\n  const is = createIsFn<A>(validate);\n\n  return {\n    typeName,\n    defaultValue,\n    validate,\n    is,\n    assertIs: createAssertFn(validate),\n    fill: fill ?? ((a) => (is(a) ? a : defaultValue)),\n    prune: prune ?? ((a) => a),\n    cast: createCastFn(validate),\n  };\n};\n"],"names":[],"mappings":";;;;AAKO,MAAM,aAAa,CAAK;AAAA,EAC7B,YAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAA,KAMgB;AACd,EAAA,MAAM,EAAA,GAAK,WAAc,QAAQ,CAAA;AAEjC,EAAA,OAAO;AAAA,IACL,QAAA;AAAA,IACA,YAAA;AAAA,IACA,QAAA;AAAA,IACA,EAAA;AAAA,IACA,QAAA,EAAU,eAAe,QAAQ,CAAA;AAAA,IACjC,MAAM,IAAA,KAAS,CAAC,MAAO,EAAA,CAAG,CAAC,IAAI,CAAA,GAAI,YAAA,CAAA;AAAA,IACnC,KAAA,EAAO,KAAA,KAAU,CAAC,CAAA,KAAM,CAAA,CAAA;AAAA,IACxB,IAAA,EAAM,aAAa,QAAQ;AAAA,GAC7B;AACF;;;;"}