{"_id":"@caoyang7394/base62","name":"@caoyang7394/base62","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@caoyang7394/base62","version":"1.0.0","description":"base62加密和解密","type":"module","scripts":{"prebuild":"rm -rf dist","build":"npm run prebuild && vite build"},"main":"./dist/node/caoyBase62.umd.js","module":"./dist/node/caoyBase62.es.js","types":"./dist/types/index.d.ts","exports":{".":{"import":{"types":"./dist/types/index.d.ts","default":"./dist/node/caoyBase62.es.js"},"require":{"types":"./dist/types/index.d.ts","default":"./dist/node/caoyBase62.umd.js"},"types":"./dist/types/index.d.ts"}},"keywords":["base62","加密","解密"],"author":{"name":"cy7394"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/cy7394/caoy-base62.git"},"publishConfig":{"access":"public"},"devDependencies":{"typescript":"^5.9.3","vite":"^7.3.0","vite-plugin-dts":"^4.5.4"},"_id":"@caoyang7394/base62@1.0.0","gitHead":"98d77134605b02b623e72ef9e1fda1d75ee7ce88","bugs":{"url":"https://github.com/cy7394/caoy-base62/issues"},"homepage":"https://github.com/cy7394/caoy-base62#readme","_nodeVersion":"21.7.3","_npmVersion":"10.5.0","dist":{"integrity":"sha512-Sv5o1B/8kzmlh6VDnj4om5OiAvRIwJlLD6XbVrw7aTDROXZDkAvBPrCT+x7OIdMK92MzenrSVYOcGzMuHPajrw==","shasum":"056c0d60983fdaadc999e73f17dc3f2d07426b0f","tarball":"https://registry.npmjs.org/@caoyang7394/base62/-/base62-1.0.0.tgz","fileCount":10,"unpackedSize":12320,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDb7WkDbtVUuMurX/itQleQ7dzPDpnjKtDDbNxAC1oSQAIhAKcN2NITLSHFP0t0Ww0AfYl2wvY0ar72tKmvgtwhFZZx"}]},"_npmUser":{"name":"caoyang7394","email":"2685709100@qq.com"},"directories":{},"maintainers":[{"name":"caoyang7394","email":"2685709100@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/base62_1.0.0_1766218586208_0.6946049884578809"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-20T08:16:25.947Z","1.0.0":"2025-12-20T08:16:26.369Z","modified":"2025-12-20T08:16:26.763Z"},"maintainers":[{"name":"caoyang7394","email":"2685709100@qq.com"}],"description":"base62加密和解密","homepage":"https://github.com/cy7394/caoy-base62#readme","keywords":["base62","加密","解密"],"repository":{"type":"git","url":"git+https://github.com/cy7394/caoy-base62.git"},"author":{"name":"cy7394"},"bugs":{"url":"https://github.com/cy7394/caoy-base62/issues"},"license":"MIT","readme":"# @caoyang7394/base62\r\n\r\n一个轻量级、高性能的 Base62 编码/解码库，支持将数字转换为 Base62 字符串，适用于短链接生成、ID 编码等场景。\r\n\r\n[![npm version](https://img.shields.io/npm/v/@caoyang7394/base62.svg)](https://www.npmjs.com/package/@caoyang7394/base62)\r\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\r\n\r\n## ✨ 特性\r\n\r\n- 🚀 **轻量级** - 体积小，无外部依赖\r\n- ⚡ **高性能** - 使用预计算字典，编码解码速度快\r\n- 🔒 **类型安全** - 完整的 TypeScript 类型定义\r\n- ✅ **输入验证** - 完善的错误处理和边界情况处理\r\n- 📦 **多格式支持** - 支持 ES Module、UMD、IIFE 多种格式\r\n- 🎯 **零配置** - 开箱即用，无需额外配置\r\n\r\n## 📦 安装\r\n\r\n```bash\r\nnpm install @caoyang7394/base62\r\n```\r\n\r\n或使用 yarn：\r\n\r\n```bash\r\nyarn add @caoyang7394/base62\r\n```\r\n\r\n或使用 pnpm：\r\n\r\n```bash\r\npnpm add @caoyang7394/base62\r\n```\r\n\r\n## 🚀 快速开始\r\n\r\n### ES Module\r\n\r\nimport { base62Encode, base62Decode } from '@caoyang7394/base62';\r\n\r\n// 编码数字为 Base62 字符串\r\nconst encoded = base62Encode(123456789);\r\nconsole.log(encoded); // '8M0kX'\r\n\r\n// 解码 Base62 字符串为数字\r\nconst decoded = base62Decode('8M0kX');\r\nconsole.log(decoded); // 123456789\r\n```\r\n\r\n### CommonJS\r\n\r\n```javascript\r\nconst { base62Encode, base62Decode } = require('@caoyang7394/base62');\r\n\r\nconst encoded = base62Encode(123);\r\nconsole.log(encoded); // '1Z'\r\n\r\nconst decoded = base62Decode('1Z');\r\nconsole.log(decoded); // 123\r\n```\r\n\r\n### 浏览器 (UMD)\r\n\r\n```html\r\n<script src=\"https://unpkg.com/@caoyang7394/base62/dist/node/caoyBase62.umd.js\"></script>\r\n<script>\r\n  const encoded = caoyBase62.base62Encode(123456);\r\n  console.log(encoded); // 'w7e'\r\n  \r\n  const decoded = caoyBase62.base62Decode('w7e');\r\n  console.log(decoded); // 123456\r\n</script>\r\n```\r\n\r\n## 📖 API 文档\r\n\r\n### `base62Encode(number: number): string`\r\n\r\n将非负整数编码为 Base62 字符串。\r\n\r\n**参数：**\r\n- `number` (number): 要编码的非负整数\r\n\r\n**返回值：**\r\n- `string`: Base62 编码后的字符串\r\n\r\n**异常：**\r\n- `TypeError`: 当输入不是数字或不是整数时抛出\r\n- `RangeError`: 当输入为负数时抛出\r\n\r\n**示例：**\r\n\r\n```javascript\r\nbase62Encode(0);        // '0'\r\nbase62Encode(123);      // '1Z'\r\nbase62Encode(123456789); // '8M0kX'\r\nbase62Encode(999999999); // '15FTGf'\r\n```\r\n\r\n### `base62Decode(encodedString: string): number`\r\n\r\n将 Base62 字符串解码为数字。\r\n\r\n**参数：**\r\n- `encodedString` (string): Base62 编码的字符串\r\n\r\n**返回值：**\r\n- `number`: 解码后的数字\r\n\r\n**异常：**\r\n- `TypeError`: 当输入不是字符串时抛出\r\n- `Error`: 当输入为空字符串或包含无效的 Base62 字符时抛出\r\n\r\n**示例：**\r\n\r\n```javascript\r\nbase62Decode('0');      // 0\r\nbase62Decode('1Z');     // 123\r\nbase62Decode('8M0kX');  // 123456789\r\nbase62Decode('15FTGf'); // 999999999\r\n```\r\n\r\n## 💡 使用场景\r\n\r\n### 短链接生成\r\n\r\n```javascript\r\nimport { base62Encode } from '@caoyang7394/base62';\r\n\r\n// 将数据库 ID 转换为短链接\r\nfunction generateShortUrl(databaseId) {\r\n  const encoded = base62Encode(databaseId);\r\n  return `https://example.com/${encoded}`;\r\n}\r\n\r\nconst shortUrl = generateShortUrl(123456789);\r\nconsole.log(shortUrl); // 'https://example.com/8M0kX'\r\n```\r\n\r\n### ID 编码\r\n\r\nimport { base62Encode, base62Decode } from '@caoyang7394/base62';\r\n\r\n// 编码用户 ID\r\nconst userId = 1001;\r\nconst encodedId = base62Encode(userId);\r\nconsole.log(encodedId); // 'g9'\r\n\r\n// 解码用户 ID\r\nconst decodedId = base62Decode(encodedId);\r\nconsole.log(decodedId); // 1001\r\n```\r\n\r\n### 双向转换验证\r\n\r\nimport { base62Encode, base62Decode } from '@caoyang7394/base62';\r\n\r\nfunction testRoundTrip(number) {\r\n  const encoded = base62Encode(number);\r\n  const decoded = base62Decode(encoded);\r\n  console.log(`${number} -> ${encoded} -> ${decoded}`);\r\n  return number === decoded;\r\n}\r\n\r\ntestRoundTrip(123456789); // true\r\ntestRoundTrip(0);         // true\r\ntestRoundTrip(999999);    // true\r\n```\r\n\r\n## ⚠️ 错误处理\r\n\r\n库提供了完善的错误处理机制：\r\n\r\nimport { base62Encode, base62Decode } from '@caoyang7394/base62';\r\n\r\ntry {\r\n  // 无效输入：负数\r\n  base62Encode(-1);\r\n} catch (error) {\r\n  console.error(error.message);\r\n  // Expected a non-negative number, but got -1\r\n}\r\n\r\ntry {\r\n  // 无效输入：非整数\r\n  base62Encode(123.45);\r\n} catch (error) {\r\n  console.error(error.message);\r\n  // Expected an integer, but got 123.45\r\n}\r\n\r\ntry {\r\n  // 无效输入：无效字符\r\n  base62Decode('abc@123');\r\n} catch (error) {\r\n  console.error(error.message);\r\n  // Invalid Base62 character \"@\" at position 3. Valid characters are: 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\r\n}\r\n```\r\n\r\n## 🔧 Base62 字符集\r\n\r\nBase62 使用以下 62 个字符：\r\n- 数字：`0-9` (10 个字符)\r\n- 小写字母：`a-z` (26 个字符)\r\n- 大写字母：`A-Z` (26 个字符)\r\n\r\n字符集顺序：`0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ`\r\n\r\n## 📊 性能\r\n\r\n- 编码/解码操作时间复杂度：O(n)，其中 n 为字符串长度\r\n- 字典预计算，避免重复初始化\r\n- 无外部依赖，体积小\r\n\r\n## 🤝 贡献\r\n\r\n欢迎提交 Issue 和 Pull Request！\r\n\r\n## 📄 许可证\r\n\r\nMIT License\r\n\r\n## 🔗 相关链接\r\n\r\n- [GitHub 仓库](https://github.com/cy7394/caoy-base62)\r\n- [npm 包](https://www.npmjs.com/package/@caoyang7394/base62)\r\n\r\n---\r\n\r\nMade with ❤️ by [cy7394](https://github.com/cy7394)\r\n","readmeFilename":"README.md","_rev":"1-497eb29d9475cec0049fcccde4cc089b"}