{
  "version": 3,
  "sources": ["../../../src/orm/internal-libs.ts", "../../../src/utils.ts", "../../../node_modules/uuid/dist-node/stringify.js", "../../../node_modules/uuid/dist-node/rng.js", "../../../node_modules/uuid/dist-node/v4.js"],
  "sourcesContent": ["import { PropertyType, PrimaryKeyType } from '../types.js'\nimport { createUuid, getRandomValues } from '../utils.js'\nimport {\n  DatabaseKeyPropertyConfig,\n  PrimaryKeyGenerator,\n  PrimaryKeyPropertyType,\n} from './types.js'\n\nconst _getModelIdPropertyType = (\n  config: DatabaseKeyPropertyConfig<any> = {}\n): PrimaryKeyPropertyType => {\n  return config.dataType || PropertyType.UniqueId\n}\n\nexport const getPrimaryKeyGenerator = <TValue extends PrimaryKeyType>(\n  config: DatabaseKeyPropertyConfig<TValue> = {}\n): PrimaryKeyGenerator => {\n  const custom = config.primaryKeyGenerator\n  if (custom) {\n    return custom\n  }\n  const idType = _getModelIdPropertyType(config)\n  switch (idType) {\n    case PropertyType.Integer:\n      return () => Promise.resolve(getRandomValues()[0]!)\n    default: {\n      return () => Promise.resolve(createUuid())\n    }\n  }\n}\n", "import AsyncLock from 'async-lock'\nimport { v4 as uuidv4 } from 'uuid'\n// @ts-ignore\nimport getRandomValuesFunc from 'get-random-values'\n\nconst getRandomValues = (): Uint8Array => {\n  const array = new Uint8Array(1)\n  if (typeof window !== 'undefined') {\n    if (window.crypto) {\n      return window.crypto.getRandomValues(array)\n    }\n    // @ts-ignore\n    if (window.msCrypto) {\n      // @ts-ignore\n      return window.msCrypto.getRandomValues(array)\n    }\n  }\n\n  return getRandomValuesFunc(array)\n}\n\nconst toTitleCase = (string: string) => {\n  return `${string.slice(0, 1).toUpperCase()}${string.slice(1)}`\n}\n\nconst loweredTitleCase = (string: string) => {\n  return `${string.slice(0, 1).toLowerCase()}${string.slice(1)}`\n}\n\nconst isPromise = <T>(something: any): something is Promise<T> => {\n  if (something?.then) {\n    return true\n  }\n  return false\n}\n\nenum PluralEndings {\n  ves = 'fe',\n  ies = 'y',\n  i = 'us',\n  zes = 'ze',\n  ses = 's',\n  es = 'e',\n  s = '',\n}\nconst _singularizingRe = new RegExp(\n  `(${Object.keys(PluralEndings).join('|')})$`,\n  'u'\n)\n\nconst singularize = (word: string) => {\n  // @ts-ignore\n  return word.replace(_singularizingRe, r => PluralEndings[r])\n}\n\nconst createHeadAndTail = (values: readonly string[], joiner: string) => {\n  const head = values[0]\n  const tail = values.slice(1).join(joiner)\n  return [head, tail]\n}\n\nconst flowFindFirst =\n  <T, TResult>(funcs: ((t: T) => undefined | TResult)[]) =>\n  (input: T) => {\n    return funcs.reduce((acc: undefined | TResult, func) => {\n      if (acc) {\n        return acc\n      }\n      return func(input)\n    }, undefined) as string | TResult\n  }\n\nconst memoizeSync = <T, A extends Array<any>>(method: (...args: A) => T) => {\n  /* eslint-disable functional/no-let */\n  let value: any = undefined\n  let called = false\n  return (...args: A): T => {\n    if (!called) {\n      called = true\n      value = method(...args)\n    }\n\n    return value\n  }\n  /* eslint-enable functional/no-let */\n}\n\nconst memoizeAsync = <T, A extends Array<any>>(method: (...args: A) => T) => {\n  const key = uuidv4()\n  const lock = new AsyncLock()\n  /* eslint-disable functional/no-let */\n  let value: any = undefined\n  let called = false\n  return async (...args: A): Promise<T> => {\n    return lock.acquire(key, async () => {\n      if (!called) {\n        called = true\n        value = await method(...args)\n      }\n\n      return value\n    })\n  }\n  /* eslint-enable functional/no-let */\n}\n\nconst createUuid = uuidv4\n\nexport {\n  getRandomValues,\n  loweredTitleCase,\n  toTitleCase,\n  isPromise,\n  createHeadAndTail,\n  singularize,\n  flowFindFirst,\n  memoizeSync,\n  memoizeAsync,\n  createUuid,\n}\n", "import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n    byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n    return (byteToHex[arr[offset + 0]] +\n        byteToHex[arr[offset + 1]] +\n        byteToHex[arr[offset + 2]] +\n        byteToHex[arr[offset + 3]] +\n        '-' +\n        byteToHex[arr[offset + 4]] +\n        byteToHex[arr[offset + 5]] +\n        '-' +\n        byteToHex[arr[offset + 6]] +\n        byteToHex[arr[offset + 7]] +\n        '-' +\n        byteToHex[arr[offset + 8]] +\n        byteToHex[arr[offset + 9]] +\n        '-' +\n        byteToHex[arr[offset + 10]] +\n        byteToHex[arr[offset + 11]] +\n        byteToHex[arr[offset + 12]] +\n        byteToHex[arr[offset + 13]] +\n        byteToHex[arr[offset + 14]] +\n        byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n    const uuid = unsafeStringify(arr, offset);\n    if (!validate(uuid)) {\n        throw TypeError('Stringified UUID is invalid');\n    }\n    return uuid;\n}\nexport default stringify;\n", "const rnds8 = new Uint8Array(16);\nexport default function rng() {\n    return crypto.getRandomValues(rnds8);\n}\n", "import rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction v4(options, buf, offset) {\n    if (!buf && !options && crypto.randomUUID) {\n        return crypto.randomUUID();\n    }\n    return _v4(options, buf, offset);\n}\nfunction _v4(options, buf, offset) {\n    options = options || {};\n    const rnds = options.random ?? options.rng?.() ?? rng();\n    if (rnds.length < 16) {\n        throw new Error('Random bytes length must be >= 16');\n    }\n    rnds[6] = (rnds[6] & 0x0f) | 0x40;\n    rnds[8] = (rnds[8] & 0x3f) | 0x80;\n    if (buf) {\n        offset = offset || 0;\n        if (offset < 0 || offset + 16 > buf.length) {\n            throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n        }\n        for (let i = 0; i < 16; ++i) {\n            buf[offset + i] = rnds[i];\n        }\n        return buf;\n    }\n    return unsafeStringify(rnds);\n}\nexport default v4;\n"],
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,wBAAsB;;;ACCtB,IAAM,YAAY,CAAC;AACnB,SAAS,IAAI,GAAG,IAAI,KAAK,EAAE,GAAG;AAC1B,YAAU,MAAM,IAAI,KAAO,SAAS,EAAE,EAAE,MAAM,CAAC,CAAC;AACpD;AACO,SAAS,gBAAgB,KAAK,SAAS,GAAG;AAC7C,UAAQ,UAAU,IAAI,SAAS,CAAC,CAAC,IAC7B,UAAU,IAAI,SAAS,CAAC,CAAC,IACzB,UAAU,IAAI,SAAS,CAAC,CAAC,IACzB,UAAU,IAAI,SAAS,CAAC,CAAC,IACzB,MACA,UAAU,IAAI,SAAS,CAAC,CAAC,IACzB,UAAU,IAAI,SAAS,CAAC,CAAC,IACzB,MACA,UAAU,IAAI,SAAS,CAAC,CAAC,IACzB,UAAU,IAAI,SAAS,CAAC,CAAC,IACzB,MACA,UAAU,IAAI,SAAS,CAAC,CAAC,IACzB,UAAU,IAAI,SAAS,CAAC,CAAC,IACzB,MACA,UAAU,IAAI,SAAS,EAAE,CAAC,IAC1B,UAAU,IAAI,SAAS,EAAE,CAAC,IAC1B,UAAU,IAAI,SAAS,EAAE,CAAC,IAC1B,UAAU,IAAI,SAAS,EAAE,CAAC,IAC1B,UAAU,IAAI,SAAS,EAAE,CAAC,IAC1B,UAAU,IAAI,SAAS,EAAE,CAAC,GAAG,YAAY;AACjD;;;AC1BA,IAAM,QAAQ,IAAI,WAAW,EAAE;AAChB,SAAR,MAAuB;AAC1B,SAAO,OAAO,gBAAgB,KAAK;AACvC;;;ACDA,SAAS,GAAG,SAAS,KAAK,QAAQ;AAC9B,MAAI,CAAC,OAAO,CAAC,WAAW,OAAO,YAAY;AACvC,WAAO,OAAO,WAAW;AAAA,EAC7B;AACA,SAAO,IAAI,SAAS,KAAK,MAAM;AACnC;AACA,SAAS,IAAI,SAAS,KAAK,QAAQ;AAC/B,YAAU,WAAW,CAAC;AACtB,QAAM,OAAO,QAAQ,UAAU,QAAQ,MAAM,KAAK,IAAI;AACtD,MAAI,KAAK,SAAS,IAAI;AAClB,UAAM,IAAI,MAAM,mCAAmC;AAAA,EACvD;AACA,OAAK,CAAC,IAAK,KAAK,CAAC,IAAI,KAAQ;AAC7B,OAAK,CAAC,IAAK,KAAK,CAAC,IAAI,KAAQ;AAC7B,MAAI,KAAK;AACL,aAAS,UAAU;AACnB,QAAI,SAAS,KAAK,SAAS,KAAK,IAAI,QAAQ;AACxC,YAAM,IAAI,WAAW,mBAAmB,MAAM,IAAI,SAAS,EAAE,0BAA0B;AAAA,IAC3F;AACA,aAAS,IAAI,GAAG,IAAI,IAAI,EAAE,GAAG;AACzB,UAAI,SAAS,CAAC,IAAI,KAAK,CAAC;AAAA,IAC5B;AACA,WAAO;AAAA,EACX;AACA,SAAO,gBAAgB,IAAI;AAC/B;AACA,IAAO,aAAQ;;;AHzBf,+BAAgC;AAEhC,IAAM,kBAAkB,MAAkB;AACxC,QAAM,QAAQ,IAAI,WAAW,CAAC;AAC9B,MAAI,OAAO,WAAW,aAAa;AACjC,QAAI,OAAO,QAAQ;AACjB,aAAO,OAAO,OAAO,gBAAgB,KAAK;AAAA,IAC5C;AAEA,QAAI,OAAO,UAAU;AAEnB,aAAO,OAAO,SAAS,gBAAgB,KAAK;AAAA,IAC9C;AAAA,EACF;AAEA,aAAO,yBAAAA,SAAoB,KAAK;AAClC;AAiBA,IAAK,gBAAL,kBAAKC,mBAAL;AACE,EAAAA,eAAA,SAAM;AACN,EAAAA,eAAA,SAAM;AACN,EAAAA,eAAA,OAAI;AACJ,EAAAA,eAAA,SAAM;AACN,EAAAA,eAAA,SAAM;AACN,EAAAA,eAAA,QAAK;AACL,EAAAA,eAAA,OAAI;AAPD,SAAAA;AAAA,GAAA;AASL,IAAM,mBAAmB,IAAI;AAAA,EAC3B,IAAI,OAAO,KAAK,aAAa,EAAE,KAAK,GAAG,CAAC;AAAA,EACxC;AACF;AA0DA,IAAM,aAAa;;;ADlGnB,IAAM,0BAA0B,CAC9B,SAAyC,CAAC,MACf;AAC3B,SAAO,OAAO;AAChB;AAEO,IAAM,yBAAyB,CACpC,SAA4C,CAAC,MACrB;AACxB,QAAM,SAAS,OAAO;AACtB,MAAI,QAAQ;AACV,WAAO;AAAA,EACT;AACA,QAAM,SAAS,wBAAwB,MAAM;AAC7C,UAAQ,QAAQ;AAAA,IACd;AACE,aAAO,MAAM,QAAQ,QAAQ,gBAAgB,EAAE,CAAC,CAAE;AAAA,IACpD,SAAS;AACP,aAAO,MAAM,QAAQ,QAAQ,WAAW,CAAC;AAAA,IAC3C;AAAA,EACF;AACF;",
  "names": ["getRandomValuesFunc", "PluralEndings"]
}
