{"version":3,"sources":["../../source/primitive/primitive.ts"],"names":["z","PRIMITIVE_NAMES","PRIMITIVE_NAME_SCHEMA","BIG_INT_SCHEMA","BOOLEAN_SCHEMA","NUMBER_SCHEMA","NULL_SCHEMA","STRING_SCHEMA","SYMBOL_SCHEMA","UNDEFINED_SCHEMA","PRIMITIVE_SCHEMAS","validatePrimitiveName","name","isPrimitiveName","getPrimitiveName","value","typeName","validatePrimitive","primitiveName","isPrimitive"],"mappings":"AACA,OAAS,KAAAA,MAAS,MAIX,IAAMC,EAAkB,CAC9B,SACA,UACA,SACA,OACA,SACA,SACA,WACD,EAEaC,EAAwBF,EAAE,KAAKC,CAAe,EAe9CE,EAAiBH,EAAE,OAAO,EAC1BI,EAAiBJ,EAAE,QAAQ,EAC3BK,EAAgBL,EAAE,OAAO,EACzBM,EAAcN,EAAE,KAAK,EACrBO,EAAgBP,EAAE,OAAO,EACzBQ,EAAgBR,EAAE,OAAO,EACzBS,EAAmBT,EAAE,UAAU,EAE/BU,EAAoB,CAChC,OAAQP,EACR,QAASC,EACT,OAAQC,EACR,KAAMC,EACN,OAAQC,EACR,OAAQC,EACR,UAAWC,CACZ,EAEO,SAASE,EAAsBC,EAA8C,CACnFV,EAAsB,MAAMU,CAAI,CACjC,CAEO,SAASC,EAAgBD,EAAsC,CACrE,OAAOV,EAAsB,UAAUU,CAAI,EAAE,OAC9C,CAEO,SAASE,EAA0CC,EAAgBC,EAAyC,CAClH,IAAMJ,EAAOI,GAAY,OAAOD,EAEhC,GAAIF,EAAgBD,CAAI,EACvB,OAAOA,CAET,CAEO,SAASK,EACfF,EACAC,EACiC,CACjC,IAAME,EAAgBJ,EAAiBC,EAAOC,CAAQ,EAEtD,GAAIE,EACHR,EAAkBQ,CAAa,EAAE,MAAMH,CAAK,MAE5C,OAAM,IAAI,UAAU,oBAAoB,CAE1C,CAEO,SAASI,EAAqCJ,EAAgBC,EAAsC,CAC1G,IAAME,EAAgBJ,EAAiBC,EAAOC,CAAQ,EAEtD,OAAOE,EAAgBR,EAAkBQ,CAAa,EAAE,UAAUH,CAAK,EAAE,QAAU,EACpF","sourcesContent":["/* eslint-disable unicorn/prefer-number-properties, unicorn/no-null */\nimport { z } from \"zod\";\n\n/* prettier-ignore */\n/** @see {@link https://developer.mozilla.org/en-US/docs/Glossary/Primitive} */\nexport const PRIMITIVE_NAMES = [\n\t\"bigint\",\n\t\"boolean\",\n\t\"number\",\n\t\"null\",\n\t\"string\",\n\t\"symbol\",\n\t\"undefined\",\n] as const;\n\nexport const PRIMITIVE_NAME_SCHEMA = z.enum(PRIMITIVE_NAMES);\n\nexport interface Primitives {\n\tbigint: bigint;\n\tboolean: boolean;\n\tnumber: number;\n\tnull: null;\n\tstring: string;\n\tsymbol: symbol;\n\tundefined: undefined;\n}\n\nexport type PrimitiveName = keyof Primitives;\nexport type Primitive = Primitives[PrimitiveName];\n\nexport const BIG_INT_SCHEMA = z.bigint();\nexport const BOOLEAN_SCHEMA = z.boolean();\nexport const NUMBER_SCHEMA = z.number();\nexport const NULL_SCHEMA = z.null();\nexport const STRING_SCHEMA = z.string();\nexport const SYMBOL_SCHEMA = z.symbol();\nexport const UNDEFINED_SCHEMA = z.undefined();\n\nexport const PRIMITIVE_SCHEMAS = {\n\tbigint: BIG_INT_SCHEMA,\n\tboolean: BOOLEAN_SCHEMA,\n\tnumber: NUMBER_SCHEMA,\n\tnull: NULL_SCHEMA,\n\tstring: STRING_SCHEMA,\n\tsymbol: SYMBOL_SCHEMA,\n\tundefined: UNDEFINED_SCHEMA,\n} as const;\n\nexport function validatePrimitiveName(name: unknown): asserts name is PrimitiveName {\n\tPRIMITIVE_NAME_SCHEMA.parse(name);\n}\n\nexport function isPrimitiveName(name: unknown): name is PrimitiveName {\n\treturn PRIMITIVE_NAME_SCHEMA.safeParse(name).success;\n}\n\nexport function getPrimitiveName<T extends PrimitiveName>(value: unknown, typeName?: T): PrimitiveName | undefined {\n\tconst name = typeName ?? typeof value;\n\n\tif (isPrimitiveName(name)) {\n\t\treturn name;\n\t}\n}\n\nexport function validatePrimitive<T extends PrimitiveName>(\n\tvalue: unknown,\n\ttypeName?: T,\n): asserts value is Primitives[T] {\n\tconst primitiveName = getPrimitiveName(value, typeName);\n\n\tif (primitiveName) {\n\t\tPRIMITIVE_SCHEMAS[primitiveName].parse(value);\n\t} else {\n\t\tthrow new TypeError(`Invalid primitive.`);\n\t}\n}\n\nexport function isPrimitive<T extends PrimitiveName>(value: unknown, typeName?: T): value is Primitives[T] {\n\tconst primitiveName = getPrimitiveName(value, typeName);\n\n\treturn primitiveName ? PRIMITIVE_SCHEMAS[primitiveName].safeParse(value).success : false;\n}\n"]}