UNPKG

@voiceflow/common

Version:

Junk drawer of utility functions

35 lines (34 loc) 1.59 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.generate = exports.generateHash = void 0; const id_1 = require("./id"); const CHARACTERS = Array.from({ length: 26 }).map((_, index) => String.fromCharCode(97 + index)); const generateHash = (object) => { const objectStr = typeof object === 'object' ? JSON.stringify(object) : String(object); if (objectStr.length === 0) { return ''; } let hash = 0; for (let i = 0; i < objectStr.length; i++) { const chr = objectStr.charCodeAt(i); // eslint-disable-next-line no-bitwise hash = (hash << 5) - hash + chr; // eslint-disable-next-line no-bitwise hash |= 0; // Convert to 32bit integer } return Math.abs(hash).toString(); }; exports.generateHash = generateHash; exports.generate = { hash: exports.generateHash, oneOf: (options) => options[exports.generate.number(0, options.length - 1)], number: (min = 0, max = 100) => min + Math.floor(Math.random() * (max - min)), id: (slug = true) => (slug ? id_1.cuid.slug() : (0, id_1.cuid)()), string: (length = 10) => Array.from({ length }) .map(() => exports.generate.oneOf(CHARACTERS)) .join(''), object: (entryCount = 3, factory = exports.generate.string) => Array.from({ length: entryCount }) .map(() => [exports.generate.string(), factory()]) .reduce((acc, [key, value]) => Object.assign(acc, { [key]: value }), {}), array: (length = 3, factory = exports.generate.string) => Array.from({ length }).map(() => factory()), };