UNPKG

@techmely/utils

Version:

Collection of helpful JavaScript / TypeScript utils

90 lines (84 loc) 2.73 kB
/*! * @techmely/utils * Copyright(c) 2021-2024 Techmely <techmely.creation@gmail.com> * MIT Licensed */ "use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/id.ts var id_exports = {}; __export(id_exports, { DEFAULT_PREFIX_ID_LENGTH: () => DEFAULT_PREFIX_ID_LENGTH, generateId: () => generateId, generatePrefixId: () => generatePrefixId }); module.exports = __toCommonJS(id_exports); // ../../node_modules/nanoid/index.js var import_node_crypto = require("crypto"); var POOL_SIZE_MULTIPLIER = 128; var pool; var poolOffset; function fillPool(bytes) { if (!pool || pool.length < bytes) { pool = Buffer.allocUnsafe(bytes * POOL_SIZE_MULTIPLIER); import_node_crypto.webcrypto.getRandomValues(pool); poolOffset = 0; } else if (poolOffset + bytes > pool.length) { import_node_crypto.webcrypto.getRandomValues(pool); poolOffset = 0; } poolOffset += bytes; } function random(bytes) { fillPool(bytes -= 0); return pool.subarray(poolOffset - bytes, poolOffset); } function customRandom(alphabet, defaultSize, getRandom) { let mask = (2 << 31 - Math.clz32(alphabet.length - 1 | 1)) - 1; let step = Math.ceil(1.6 * mask * defaultSize / alphabet.length); return (size = defaultSize) => { let id = ""; while (true) { let bytes = getRandom(step); let i = step; while (i--) { id += alphabet[bytes[i] & mask] || ""; if (id.length === size) return id; } } }; } function customAlphabet(alphabet, size = 21) { return customRandom(alphabet, size, random); } // src/id.ts var generateId = customAlphabet( "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz" ); var DEFAULT_PREFIX_ID_LENGTH = 22; function generatePrefixId(prefix = "key", length = DEFAULT_PREFIX_ID_LENGTH) { return `${prefix}_${generateId(length)}`; } // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { DEFAULT_PREFIX_ID_LENGTH, generateId, generatePrefixId });