{"version":3,"sources":["../src/runtime/flatten.ts","../src/runtime/pluralize.ts","../src/types/kind.enum.ts","../src/runtime/is-class.ts","../src/runtime/kind-of.ts","../src/runtime/args-names.ts","../src/runtime/event-emitter.ts","../src/runtime/debug-string.ts","../src/runtime/call-all.ts"],"names":["Kind"],"mappings":"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","file":"index.cjs","sourcesContent":["import { Primitive } from '../types/primitive.type';\n\nexport function flatten(input: unknown, unpackArrays = false): unknown {\n  if (Array.isArray(input)) {\n    // recursively flatten array\n    return input.reduce<unknown[]>((acc, val) => {\n      if (Array.isArray(val)) {\n        acc.push(...(flatten(val, unpackArrays) as unknown[]));\n      } else if (typeof val === 'object' && val !== null) {\n        acc.push(flatten(val, unpackArrays)); // nested objects remain objects\n      } else {\n        acc.push(val);\n      }\n      return acc;\n    }, []);\n  } else if (typeof input === 'object' && input !== null) {\n    // object → flat object\n    const result: Record<string, Primitive> = {};\n\n    const recurse = (obj: Record<string, unknown>, parentKey = '') => {\n      for (const [key, val] of Object.entries(obj)) {\n        const newKey = parentKey ? `${parentKey}.${key}` : key;\n        if (Array.isArray(val)) {\n          if (unpackArrays) {\n            // unpack array into separate properties\n            const flattenedArray = flatten(val, unpackArrays) as unknown[];\n            flattenedArray.forEach((item, index) => {\n              result[`${newKey}.${index}`] = item as Primitive;\n            });\n          } else {\n            // keep array as is\n            result[newKey] = flatten(val, unpackArrays) as unknown as Primitive;\n          }\n        } else if (typeof val === 'object' && val !== null) {\n          recurse(val as Record<string, unknown>, newKey);\n        } else {\n          result[newKey] = val as Primitive;\n        }\n      }\n    };\n\n    recurse(input as Record<string, unknown>);\n    return result;\n  }\n\n  // if primitive\n  return input;\n}\n\nexport default flatten;\n","import flatten from './flatten';\n\nexport const pluralize = (\n  count: number,\n  ...words: Array<string | string[]>\n) => {\n  let cases = [2, 0, 1, 1, 1, 2],\n    titles = flatten(words) as string[];\n  return titles[\n    count % 100 > 4 && count % 100 < 20\n      ? 2\n      : cases[count % 10 < 5 ? count % 10 : 5]\n  ];\n};\n\nexport default pluralize;\n","export enum Kind {\n  Null = 'null',\n  String = 'string',\n  Undefined = 'undefined',\n  Array = 'array',\n  ArrayLike = 'arraylike',\n  Class = 'class',\n  Function = 'function',\n  Symbol = 'symbol',\n  Number = 'number',\n  Date = 'date',\n  Boolean = 'boolean',\n  RegExp = 'regexp',\n  Buffer = 'buffer',\n  NaN = 'nan',\n  Set = 'set',\n  Map = 'map',\n  ArrayBuffer = 'arraybuffer',\n  Error = 'error',\n  Promise = 'promise',\n  WeakMap = 'weakmap',\n  WeakSet = 'weakset',\n  Int8Array = 'int8array',\n  Uint8Array = 'uint8array',\n  Uint8ClampedArray = 'uint8clampedarray',\n  Object = 'object',\n  Element = 'element',\n}\n\nexport default Kind;\n","export function isClass(Class: any) {\n  if (typeof Class !== 'function') {\n    return false;\n  }\n  if (/^class\\s/.test(Function.prototype.toString.call(Class))) {\n    return true;\n  }\n  try {\n    new Class();\n    return /^[A-Z]/gm.test(Class.name);\n  } catch (err: any) {\n    return !err.message.includes('is not a constructor');\n  }\n}\n\nexport default isClass;\n","import { isClass } from './is-class';\nimport Kind from '../types/kind.enum';\n\nexport function kindOf(value: unknown): Kind {\n  if (value === null) return Kind.Null;\n  if (value === undefined) return Kind.Undefined;\n\n  if (typeof value === 'string') return Kind.String;\n\n  // Check for Buffer (Node.js)\n  if (typeof Buffer !== 'undefined' && Buffer.isBuffer(value)) {\n    return Kind.Buffer;\n  }\n\n  if (value instanceof ArrayBuffer) return Kind.ArrayBuffer;\n\n  if (typeof value === 'number' && Number.isNaN(value)) {\n    return Kind.NaN;\n  }\n\n  if (value instanceof Error) return Kind.Error;\n  if (value instanceof Promise) return Kind.Promise;\n  if (value instanceof WeakMap) return Kind.WeakMap;\n  if (value instanceof WeakSet) return Kind.WeakSet;\n  if (value instanceof Int8Array) return Kind.Int8Array;\n  if (value instanceof Uint8Array) return Kind.Uint8Array;\n  if (value instanceof Uint8ClampedArray) return Kind.Uint8ClampedArray;\n\n  if (typeof value === 'function') {\n    return isClass(value) ? Kind.Class : Kind.Function;\n  }\n\n  if (Array.isArray(value)) return Kind.Array;\n\n  if (value instanceof Set) return Kind.Set;\n  if (value instanceof Map) return Kind.Map;\n\n  // Array-like: has length, not string and not function\n  if (\n    typeof value === 'object' &&\n    value !== null &&\n    'length' in (value as any) &&\n    typeof (value as any).length === 'number' &&\n    !(value instanceof String)\n  ) {\n    return Kind.ArrayLike;\n  }\n\n  if (typeof value === 'symbol') return Kind.Symbol;\n  if (typeof value === 'number') return Kind.Number;\n  if (typeof value === 'boolean') return Kind.Boolean;\n\n  if (value instanceof Date) return Kind.Date;\n  if (value instanceof RegExp) return Kind.RegExp;\n\n  if (typeof Element === 'function' && value instanceof Element)\n    return Kind.Element;\n\n  if (typeof value === 'object') return Kind.Object;\n\n  return (typeof value as Kind) || Kind.Undefined;\n}\n\nexport default kindOf;\n","export function argsNames(fn: Function): string[] {\n  const fnStr = fn\n    .toString()\n    // remove comments\n    .replace(/\\/\\*.*?\\*\\//g, '')\n    .replace(/\\/\\/.*$/gm, '');\n\n  // regular expression to find arguments\n  const result = fnStr.match(/^[^(]*\\(([^)]*)\\)/);\n  if (!result) return [];\n\n  const args = result[1]\n    .split(',')\n    .map((arg) => arg.trim())\n    .filter(Boolean)\n    // remove default values and destructuring\n    .map((arg) => arg.split('=')[0].trim())\n    .map((arg) => arg.replace(/[\\{\\}\\[\\]\\s]/g, '')) // remove destructuring brackets\n    .filter(Boolean);\n\n  return args;\n}\n\nexport default argsNames;\n","type EventMap = Record<string, any[]>;\n\nexport class EventEmitter<Events extends EventMap> {\n  private listeners: {\n    [K in keyof Events]?: Array<(...args: Events[K]) => void>;\n  } = {};\n\n  on<K extends keyof Events>(\n    event: K,\n    listener: (...args: Events[K]) => void\n  ): this {\n    (this.listeners[event] ??= []).push(listener);\n    return this;\n  }\n\n  once<K extends keyof Events>(\n    event: K,\n    listener: (...args: Events[K]) => void\n  ): this {\n    const onceWrapper = (...args: Events[K]) => {\n      this.off(event, onceWrapper);\n      listener(...args);\n    };\n    return this.on(event, onceWrapper);\n  }\n\n  off<K extends keyof Events>(\n    event: K,\n    listener: (...args: Events[K]) => void\n  ): this {\n    this.listeners[event] = (this.listeners[event] ?? []).filter(\n      (l) => l !== listener\n    );\n    return this;\n  }\n\n  emit<K extends keyof Events>(event: K, ...args: Events[K]): boolean {\n    const ls = this.listeners[event];\n    if (!ls || ls.length === 0) return false;\n    ls.forEach((listener) => listener(...args));\n    return true;\n  }\n\n  removeAllListeners<K extends keyof Events>(event?: K): this {\n    if (event) {\n      delete this.listeners[event];\n    } else {\n      this.listeners = {};\n    }\n    return this;\n  }\n}\n\nexport default EventEmitter;\n","import { Kind } from '../index';\nimport argsNames from './args-names';\nimport kindOf from './kind-of';\n\nexport const debugString = (val: any): string => {\n  if (kindOf(val) === Kind.Error) {\n    return val.stack;\n  }\n\n  if (kindOf(val) === Kind.Undefined) return 'undefined';\n\n  if (kindOf(val) === Kind.Null) return 'null';\n\n  if (kindOf(val) === Kind.Symbol) return val.toString();\n\n  if (kindOf(val) === Kind.String) return val;\n\n  if (kindOf(val) === Kind.Class) return `[class ${val.name}]`;\n\n  if (kindOf(val) === Kind.Function)\n    return `[function ${val.name}(${argsNames(val).join(', ')})]`;\n\n  if (kindOf(val) === Kind.NaN) return 'NaN';\n\n  if (kindOf(val) === Kind.Array) {\n    return `[${val.map((v: any) => debugString(v)).join(', ')}]`;\n  }\n\n  if (kindOf(val) === Kind.Element) {\n    const id = val.getAttribute('id');\n    const className = val.getAttribute('class');\n    const attrs = `${val.tagName.toLowerCase()}${id ? ` id=\"${id}\"` : ''}${\n      className ? ` class=\"${className}\"` : ''\n    }`;\n    let html = val.innerHTML?.trim();\n    if (!html) {\n      return val.outerHTML;\n    }\n    if (html.length > 30) {\n      html = `${html.slice(0, 30)}...`;\n    }\n    return `<${attrs}>${html}</${val.tagName.toLowerCase()}>`;\n  }\n\n  if (typeof NodeList === 'function' && val instanceof NodeList) {\n    return debugString([...val]);\n  }\n\n  if (typeof HTMLCollection === 'function' && val instanceof HTMLCollection) {\n    return debugString([...val]);\n  }\n\n  try {\n    const s = JSON.stringify(val, null, 2);\n    if (s === '{}') {\n      return val.toString();\n    } else {\n      return s;\n    }\n  } catch (err) {\n    return val?.toString();\n  }\n};\n\nexport default debugString;\n","export const callAll = (\n  ...fns: Array<((...args: any[]) => any) | undefined | null>\n) => {\n  return (...args: any[]) => {\n    fns.forEach((fn) => {\n      if (typeof fn === 'function') {\n        fn(...args);\n      }\n    });\n  };\n};\n\nexport default callAll;\n"]}