@open-condo/miniapp-utils
Version:
A set of helper functions / components / hooks used to build new condo apps fast
1 lines • 2.44 kB
Source Map (JSON)
{"version":3,"sources":["../../src/helpers/uuid.ts"],"sourcesContent":["/**\n * Generates v4 UUIDs in both browser and Node environments\n * @example\n * const uuid = generateUUIDv4()\n */\nexport function generateUUIDv4 (): string {\n // globalThis.crypto is available in: browsers, ESM Node ≥ 15, CJS Node ≥ 15\n const webCrypto = typeof globalThis !== 'undefined' ? globalThis.crypto : undefined\n\n if (webCrypto && typeof webCrypto.randomUUID === 'function') {\n return webCrypto.randomUUID()\n }\n\n let randomValues: Uint8Array\n\n if (webCrypto && typeof webCrypto.getRandomValues === 'function') {\n randomValues = new Uint8Array(16)\n webCrypto.getRandomValues(randomValues)\n } else {\n // Fallback for CJS Node < 15 where globalThis.crypto is absent.\n // Wrapped in try/catch so bundlers (webpack/esbuild) can tree-shake it safely.\n try {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const { randomBytes } = require('crypto')\n randomValues = randomBytes(16)\n } catch {\n throw new Error('No secure random source available in this environment')\n }\n }\n\n // Setting the version (4) and variant (RFC4122)\n randomValues[6] = (randomValues[6] & 0x0f) | 0x40 // version 4\n randomValues[8] = (randomValues[8] & 0x3f) | 0x80 // variant\n\n return [...randomValues]\n .map((value, index) => {\n const hex = value.toString(16).padStart(2, '0')\n if (index === 4 || index === 6 || index === 8 || index === 10) {\n return `-${hex}`\n }\n return hex\n })\n .join('')\n}\n"],"mappings":";;;;;;;;AAKO,SAAS,iBAA0B;AAEtC,QAAM,YAAY,OAAO,eAAe,cAAc,WAAW,SAAS;AAE1E,MAAI,aAAa,OAAO,UAAU,eAAe,YAAY;AACzD,WAAO,UAAU,WAAW;AAAA,EAChC;AAEA,MAAI;AAEJ,MAAI,aAAa,OAAO,UAAU,oBAAoB,YAAY;AAC9D,mBAAe,IAAI,WAAW,EAAE;AAChC,cAAU,gBAAgB,YAAY;AAAA,EAC1C,OAAO;AAGH,QAAI;AAEA,YAAM,EAAE,YAAY,IAAI,UAAQ,QAAQ;AACxC,qBAAe,YAAY,EAAE;AAAA,IACjC,QAAQ;AACJ,YAAM,IAAI,MAAM,uDAAuD;AAAA,IAC3E;AAAA,EACJ;AAGA,eAAa,CAAC,IAAK,aAAa,CAAC,IAAI,KAAQ;AAC7C,eAAa,CAAC,IAAK,aAAa,CAAC,IAAI,KAAQ;AAE7C,SAAO,CAAC,GAAG,YAAY,EAClB,IAAI,CAAC,OAAO,UAAU;AACnB,UAAM,MAAM,MAAM,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG;AAC9C,QAAI,UAAU,KAAK,UAAU,KAAK,UAAU,KAAK,UAAU,IAAI;AAC3D,aAAO,IAAI,GAAG;AAAA,IAClB;AACA,WAAO;AAAA,EACX,CAAC,EACA,KAAK,EAAE;AAChB;","names":[]}