{"version":3,"sources":["../../source/emoji/emoji.ts"],"names":["isBuiltInObjectName","getConstructorName","getPrimitiveName","isPrimitiveName","PRIMITIVES_EMOJIS","BUILT_IN_OBJECTS_EMOJIS","CUSTOM_TYPE_EMOJIS","UNRECOGNIZED_TYPE_EMOJI","VALUE_TYPE_EMOJIS","getPrimitiveEmoji","value","primitiveName","getValueTypeEmoji","name"],"mappings":"AAAA,OAAiC,uBAAAA,MAA2B,yCAC5D,OAAS,sBAAAC,MAA0B,4CACnC,OAAS,oBAAAC,EAAkB,mBAAAC,MAA2C,0CAE/D,IAAMC,EAAoB,CAChC,OAAQ,YACR,QAAS,CACR,MAAO,YACP,KAAM,WACP,EACA,KAAM,SACN,OAAQ,YACR,OAAQ,YACR,OAAQ,YACR,UAAW,WACZ,EAKaC,EAA0B,CAEtC,SAAU,YACV,OAAQ,YAER,MAAO,YACP,eAAgB,YAChB,UAAW,YACX,WAAY,YACZ,eAAgB,YAChB,YAAa,YACb,UAAW,YACX,SAAU,YAEV,KAAM,kBACN,KAAM,YAEN,OAAQ,sBAER,MAAO,YACP,UAAW,SACX,WAAY,SACZ,kBAAmB,SACnB,WAAY,SACZ,YAAa,SACb,WAAY,SACZ,YAAa,SACb,cAAe,SACf,eAAgB,SAChB,aAAc,SACd,aAAc,SAEd,IAAK,YACL,IAAK,YACL,QAAS,SACT,QAAS,SAET,YAAa,SACb,kBAAmB,SACnB,SAAU,SACV,QAAS,SACT,KAAM,SAEN,QAAS,SACT,qBAAsB,SAEtB,QAAS,SACT,cAAe,SACf,uBAAwB,SACxB,kBAAmB,SAInB,QAAS,SACT,MAAO,SAEP,KAAM,WACP,EAKaC,EAAqB,CACjC,SAAU,WACX,EAKaC,EAA0B,SAG1BC,EAAoB,CAChC,GAAGJ,EACH,GAAGC,EACH,GAAGC,EACH,wBAAAC,CACD,EAQA,SAASE,EAAkBC,EAAgC,CAC1D,IAAMC,EAAgBT,EAAiBQ,CAAK,EAE5C,GAAIC,EACH,OAAOA,IAAkB,UACtBP,EAAkB,QAAW,OAAOM,CAAK,CAAqB,EAC9DN,EAAkBO,CAAa,EAElC,MAAM,IAAI,UAAU,2CAA2C,CAEjE,CAEO,SAASC,EAAkBF,EAAgC,CACjE,IAAMG,EAAOZ,EAAmBS,CAAK,EAErC,OAAIP,EAAgBU,EAAK,YAAY,CAAC,EAC9BJ,EAAkBC,CAAK,EACpBV,EAAoBa,CAAI,EAC3BR,EAAwBQ,CAAoC,EAGrDP,EAAmBO,CAAI,GAErBN,CAElB","sourcesContent":["import { type BuiltInObjectName, isBuiltInObjectName } from \"@terminal-nerds/snippets-type/built-in\";\nimport { getConstructorName } from \"@terminal-nerds/snippets-type/constructor\";\nimport { getPrimitiveName, isPrimitiveName, type PrimitiveName } from \"@terminal-nerds/snippets-type/primitive\";\n\nexport const PRIMITIVES_EMOJIS = {\n\tbigint: `🇧`,\n\tboolean: {\n\t\tfalse: `🔴`,\n\t\ttrue: `🟢`,\n\t},\n\tnull: `❎`,\n\tnumber: `🇳`,\n\tsymbol: `💠`,\n\tstring: `🇸`,\n\tundefined: `🫥`,\n} as const;\nexport type PrimitiveEmoji =\n\t| (typeof PRIMITIVES_EMOJIS)[Exclude<PrimitiveName, \"boolean\">]\n\t| (typeof PRIMITIVES_EMOJIS.boolean)[\"false\" | \"true\"];\n\nexport const BUILT_IN_OBJECTS_EMOJIS = {\n\t// Fundamental\n\tFunction: `🇫`,\n\tObject: `🇴`,\n\t// Error\n\tError: `📛`,\n\tAggregateError: `📛`,\n\tEvalError: `📛`,\n\tRangeError: `📛`,\n\tReferenceError: `📛`,\n\tSyntaxError: `📛`,\n\tTypeError: `📛`,\n\tURIError: `📛`,\n\t// Math and date\n\tDate: `🗓️`,\n\tMath: `🧮`,\n\t// Text processing\n\tRegExp: `🔎🇸\"`,\n\t// Indexed collection\n\tArray: `🇦`,\n\tInt8Array: `❔`,\n\tUint8Array: `❔`,\n\tUint8ClampedArray: `❔`,\n\tInt16Array: `❔`,\n\tUint16Array: `❔`,\n\tInt32Array: `❔`,\n\tUint32Array: `❔`,\n\tBigInt64Array: `❔`,\n\tBigUint64Array: `❔`,\n\tFloat32Array: `❔`,\n\tFloat64Array: `❔`,\n\t// Keyed collection\n\tMap: `🇲`,\n\tSet: `🦄`,\n\tWeakMap: `❔`,\n\tWeakSet: `❔`,\n\t// Structured data\n\tArrayBuffer: `❔`,\n\tSharedArrayBuffer: `❔`,\n\tDataView: `❔`,\n\tAtomics: `❔`,\n\tJSON: `❔`,\n\t// Managing memory\n\tWeakRef: `❔`,\n\tFinalizationRegistry: `❔`,\n\t// Control abstraction\n\tPromise: `❔`,\n\tAsyncFunction: `❔`,\n\tAsyncGeneratorFunction: `❔`,\n\tGeneratorFunction: `❔`,\n\t// AsyncGenerator: `❔`,\n\t// Generator: `❔`,\n\t// Reflection\n\tReflect: `❔`,\n\tProxy: `❔`,\n\t// Internationalization\n\tIntl: `🌐`,\n} as const;\n\ntype BuiltInNameWithoutPrimitives = Exclude<BuiltInObjectName, \"BigInt\" | \"Boolean\" | \"Number\" | \"String\" | \"Symbol\">;\nexport type BuiltInEmoji = (typeof BUILT_IN_OBJECTS_EMOJIS)[BuiltInNameWithoutPrimitives];\n\nexport const CUSTOM_TYPE_EMOJIS = {\n\tZodError: `📛`,\n} as const;\n\nexport type CustomTypeName = keyof typeof CUSTOM_TYPE_EMOJIS;\nexport type CustomTypeEmoji = (typeof CUSTOM_TYPE_EMOJIS)[CustomTypeName];\n\nexport const UNRECOGNIZED_TYPE_EMOJI = `❓`;\nexport type UnrecognizedTypeEmoji = typeof UNRECOGNIZED_TYPE_EMOJI;\n\nexport const VALUE_TYPE_EMOJIS = {\n\t...PRIMITIVES_EMOJIS,\n\t...BUILT_IN_OBJECTS_EMOJIS,\n\t...CUSTOM_TYPE_EMOJIS,\n\tUNRECOGNIZED_TYPE_EMOJI,\n} as const;\n\nexport type ValueTypeName = keyof typeof PRIMITIVES_EMOJIS | keyof typeof BUILT_IN_OBJECTS_EMOJIS;\nexport type ValueTypeEmoji =\n\t| (typeof VALUE_TYPE_EMOJIS)[Exclude<ValueTypeName, \"boolean\">]\n\t| (typeof PRIMITIVES_EMOJIS)[\"boolean\"][\"true\" | \"false\"]\n\t| UnrecognizedTypeEmoji;\n\nfunction getPrimitiveEmoji(value: unknown): PrimitiveEmoji {\n\tconst primitiveName = getPrimitiveName(value);\n\n\tif (primitiveName) {\n\t\treturn primitiveName === \"boolean\"\n\t\t\t? PRIMITIVES_EMOJIS[\"boolean\"][String(value) as \"true\" | \"false\"]\n\t\t\t: PRIMITIVES_EMOJIS[primitiveName];\n\t} else {\n\t\tthrow new TypeError(`Unrecognized primitive, cannot get emoji.`);\n\t}\n}\n\nexport function getValueTypeEmoji(value: unknown): ValueTypeEmoji {\n\tconst name = getConstructorName(value);\n\n\tif (isPrimitiveName(name.toLowerCase())) {\n\t\treturn getPrimitiveEmoji(value);\n\t} else if (isBuiltInObjectName(name)) {\n\t\treturn BUILT_IN_OBJECTS_EMOJIS[name as BuiltInNameWithoutPrimitives];\n\t} else {\n\t\t// @ts-ignore TODO: Add type safety for custom objects?\n\t\tconst emoji = CUSTOM_TYPE_EMOJIS[name];\n\n\t\treturn emoji ?? UNRECOGNIZED_TYPE_EMOJI;\n\t}\n}\n"]}