معرفی strfi: کاملترین کتابخانهٔ ابزارهای کار با رشته برای جاوااسکریپت و تایپاسکریپت
با هیجان فراوان strfi را معرفی میکنم – مجموعهای جامع، بدون وابستگی و tree-shakeable از بیش از ۱۵۰ تابع خالص کار با رشته برای پروژههای مدرن جاوااسکریپت و تایپاسکریپت.
از اینکه برای کارهای سادهٔ رشتهای مثل slugify کردن متن، escape کردن HTML، محاسبهٔ فاصلهٔ ویرایشی (edit distance) یا قالببندی بایتها مجبور باشید کتابخانههای سنگینی را به پروژه اضافه کنید خسته شدهاید؟ strfi اینجاست تا جعبهابزار سبک اما فوقالعاده قدرتمند شما برای کار با رشتهها باشد.
ویژگیهای کلیدی
- بدون هیچگونه وابستگی runtime
- کاملاً tree-shakeable – فقط توابع موردنیاز خود را import کنید
- پشتیبانی عالی از تایپاسکریپت همراه با تایپهای دقیق
- آگاه به یونیکد (Unicode-aware) و در موارد لازم حساس به locale
- بدون هیچ شیوهٔ ناامنی (خبری از
eval()و امثال آن نیست) - باندل minify شدهٔ بسیار کمحجم: ~22KB
- همهجا کار میکند: _Node.js 16+، مرورگرهای مدرن، Deno، Bun، React Native، Cloudflare Workers_
نصب
npm install strfiیا با yarn/pnpm:
yarn add strfi
# or
pnpm add strfiچند مثال سریع از نحوهٔ استفاده:
import {
slugify,
escapeHtml,
capitalize,
levenshteinDistance,
formatBytes,
camelCase,
truncate,
isEmail
} from 'strfi';
console.log(slugify('Hello World! 🚀')); // "hello-world"
console.log(escapeHtml('<script>alert("xss")</script>')); // "<script>alert("xss")</script>"
console.log(capitalize('javascript')); // "Javascript"
console.log(levenshteinDistance('kitten', 'sitting')); // 3
console.log(formatBytes(1500000)); // "1.43 MB"
console.log(camelCase('foo-bar_baz')); // "fooBarBaz"
console.log(truncate('Very long text here', { length: 10 })); // "Very lo..."
console.log(isEmail('test@example.com')); // true
همهٔ امکانات – دستهبندیشده بر اساس موضوع strfi مجموعهٔ گستردهای از ابزارها را ارائه میکند که در دستهبندیهایی روشن سازماندهی شدهاند:
تبدیلهای Case
toUpperCase, toLowerCase, capitalize, uncapitalize, titleCase, camelCase, pascalCase, snakeCase, kebabCase, constantCase, dotCase, pathCase, sentenceCase, swapCase, isUpperCase, isLowerCase, isTitleCaseعملیات مربوط به Whitespace
trim, trimStart, trimEnd, trimChars, trimCharsStart, trimCharsEnd, collapseWhitespace, removeWhitespace, padStart, padEnd, center, repeat, insert, removeAt, indent, dedentدستکاری رشتهها
reverse, truncate, truncateMiddle, wordWrap, slugify, between, betweenAll, remove, replaceFirst, replaceLast, replaceAll, mask, shuffle, chunk, splitBy, join, stripTags, normalizeLineEndings, surround, ensurePrefix, ensureSuffix, removePrefix, removeSuffix, lines, first, lastاعتبارسنجی رشتهها
isBlank, isNotBlank, isEmpty, isNotEmpty, isAlpha, isAlphanumeric, isNumeric, isInteger, isDecimal, isAscii, isPrintableAscii, isHexadecimal, isUUID, isEmail, isURL, isJSON, isIPv4, isIPv6, isCreditCard, isSlug, startsWith, endsWith, contains, containsAll, containsAny, matches, compare, equals, equalsIgnoreCase, isPalindrome, isWhitespace, hasUpperCase, hasLowerCase, hasDigits, hasSpecialCharsEncoding و Escaping
escapeHtml, unescapeHtml, escapeXml, unescapeXml, escapeRegex, escapeSqlLike, escapeShell, toBase64, fromBase64, toBase64Url, fromBase64Url, encodeUrl, decodeUrl, toHex, fromHex, toAsciiCodes, fromAsciiCodes, rot13جستجو و تحلیل
countOccurrences, countWords, countLines, countSentences, countParagraphs, charFrequency, wordFrequency, indicesOf, nthIndexOf, extractNumbers, extractWords, extractEmails, extractUrls, extractHashtags, extractMentions, levenshteinDistance, similarity, longestCommonSubstring, longestCommonPrefix, longestCommonSuffixیونیکد و i18n
normalize, removeDiacritics, toCodePoints, fromCodePoints, graphemeLength, toGraphemes, toWords, isLetter, isDigit, isSpace, isPunctuation, isRTL, isLTR, getDirection, formatNumber, formatDate, formatCurrency, formatRelativeTime, pluralize, collate, getLocaleDisplayName, getRegionDisplayNameقالببندی و ابزارهای کمکی
template, format, formatNamed, sprintf, zeroPad, formatThousands, formatBytes, formatDuration, ordinal, loremIpsum, randomString, uuid, hashCodeقدم بعدی چیست؟ این نسخهٔ v1.0.0 است – از همان روز اول پر از امکانات! قصد دارم بهبودهای بیشتری در حوزهٔ i18n، بهینهسازیهای کارایی و ابزارهای پیشنهادشده از سوی جامعهٔ توسعهدهندگان اضافه کنم. از مشارکت، گزارش باگ و درخواست قابلیتهای جدید بسیار استقبال میشود! لینکها
npm: https://www.npmjs.com/package/strfi پروفایل GitHub: https://github.com/sepehr-mohseni/strfi
اگر strfi را امتحان کردید، در کامنتها به من بگویید – ابزار موردعلاقهتان کدام است؟ چه قابلیتی جایش خالی است و دوست دارید اضافه شود؟ ستاره دادن، بازخورد و بهاشتراکگذاری شما واقعاً ارزشمند است. ممنونم! 🚀 کدنویسی خوش بگذرد!
این یادداشت ترجمهٔ فارسی نوشتهٔ خودم است — نسخهٔ اصلی (انگلیسی) در dev.to