UNPKG

@techmely/utils

Version:

Collection of helpful JavaScript / TypeScript utils

65 lines (60 loc) 1.71 kB
/*! * @techmely/utils * Copyright(c) 2021-2024 Techmely <techmely.creation@gmail.com> * MIT Licensed */ import { cacheStringFunction } from "./chunk-JVHWN7V7.mjs"; // src/string.ts var camelizeRE = /-(\w)/g; var camelize = cacheStringFunction((str) => { return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : ""); }); var hyphenateRE = /\B([A-Z])/g; var hyphenate = cacheStringFunction( (str) => str.replace(hyphenateRE, "-$1").toLowerCase() ); var snake2camel = cacheStringFunction((str) => { return str.replace(/_([a-z])/g, (g) => g[1].toUpperCase()); }); var camel2snake = cacheStringFunction((str) => { return str.replace(/[A-Z0-9]/g, (char) => `_${char.toLocaleLowerCase()}`); }); var capitalizeFirst = cacheStringFunction((value) => { return value.replace(/^./, value[0].toUpperCase()); }); function slugify(text) { if (!text) { return ""; } return text.toString().normalize("NFKD").toLowerCase().trim().replace(/\s+/g, "-").replace(/[Đđ]/g, "d").replace(/[^\w-]+/g, "").replace(/--+/g, "-"); } function getRandomString(length, alphanumeric) { let str = ""; let i = 0; const min = alphanumeric === "a" ? 10 : 0; const max = alphanumeric === "n" ? 10 : 62; while (i++ < length) { let r = Math.trunc(Math.random() * (max - min) + min); str += String.fromCodePoint(r += r > 9 ? r < 36 ? 55 : 61 : 48); } return str; } function cutString(value, limit) { if (!value && typeof value !== "string") return void 0; if (value.length === 0) return value; return value.split("").slice(0, limit).join(""); } export { camelize, hyphenate, snake2camel, camel2snake, capitalizeFirst, slugify, getRandomString, cutString };