SEPEHR.SYS

Starting SEPEHR.SYS…

Loading

سپهر محسنی

مهندس نرم‌افزار فول‌استک و هوش مصنوعی

NOTES.TXT ×

معرفی strfi: کامل‌ترین کتابخانهٔ ابزارهای کار با رشته برای جاوااسکریپت و تایپ‌اسکریپت

2′ · ۱۴ دی ۱۴۰۴

با هیجان فراوان 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>')); // "&lt;script&gt;alert(&quot;xss&quot;)&lt;/script&gt;"
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, hasSpecialChars

Encoding و 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