{"_id":"@alsania-io/utils","name":"@alsania-io/utils","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@alsania-io/utils","version":"0.1.0","description":"Shared utilities for Alsania ecosystem","main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"}},"scripts":{"build":"tsc","dev":"tsc --watch","clean":"rm -rf dist","prepublishOnly":"npm run build"},"keywords":["utils","alsania","shared","utilities","hash","parse"],"author":{"name":"Alsania I/O","email":"admin@alsania-io.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/alsania-dev/alsania-io-utils.git"},"engines":{"node":">=18.0.0"},"devDependencies":{"@types/node":"^20.0.0","typescript":"^5.0.0"},"gitHead":"db32871ef13ff20ccf69e74a63dec3ccaf7ff1db","_id":"@alsania-io/utils@0.1.0","bugs":{"url":"https://github.com/alsania-dev/alsania-io-utils/issues"},"homepage":"https://github.com/alsania-dev/alsania-io-utils#readme","_nodeVersion":"24.14.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-9JZFmeAcN+HwustLmELrvfNKlI/bPvBIFkHo+N9Q/7MtEMVhcmlKNIrHd9bnnmP9SWIYxDeFIZ5D63sj0/ialg==","shasum":"3c8253ecb49ed681a9beed3441189ec22a09cc42","tarball":"https://registry.npmjs.org/@alsania-io/utils/-/utils-0.1.0.tgz","fileCount":6,"unpackedSize":33978,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIFFn4mw2ZW4/rnFFl4pJCtXNCdM6C/8Z0T1VlA2EjsM7AiEAhMwcHFPH+lHeol9qkIJPR7mHnKLjyXpW/CHhMGw5QB8="}]},"_npmUser":{"name":"sigmasauer07","email":"sigma.sauer07@gmail.com"},"directories":{},"maintainers":[{"name":"sigmasauer07","email":"sigma.sauer07@gmail.com"},{"name":"echo-dev","email":"alsaniasoftware@gmail.com"},{"name":"sigmasauer-dev","email":"sigmasauer.dev@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/utils_0.1.0_1784583083574_0.2571029036651056"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-20T21:31:23.325Z","0.1.0":"2026-07-20T21:31:23.751Z","modified":"2026-07-20T21:31:24.015Z"},"maintainers":[{"name":"sigmasauer07","email":"sigma.sauer07@gmail.com"},{"name":"echo-dev","email":"alsaniasoftware@gmail.com"},{"name":"sigmasauer-dev","email":"sigmasauer.dev@gmail.com"}],"description":"Shared utilities for Alsania ecosystem","homepage":"https://github.com/alsania-dev/alsania-io-utils#readme","keywords":["utils","alsania","shared","utilities","hash","parse"],"repository":{"type":"git","url":"git+https://github.com/alsania-dev/alsania-io-utils.git"},"author":{"name":"Alsania I/O","email":"admin@alsania-io.com"},"bugs":{"url":"https://github.com/alsania-dev/alsania-io-utils/issues"},"license":"MIT","readme":"# @alsania-io/utils\n\n> Shared utilities for Alsania ecosystem\n\n## Features\n\n- 📝 **Response Parsing** — Extract text from various AI response formats (OpenAI, Anthropic, etc.)\n- 🔐 **Hash Utilities** — BLAKE3, SHA3-256, SHA256, HMAC-SHA256\n- 🆔 **UUID Generation** — Random UUIDs and short IDs\n- ⏱️ **Async Utilities** — Sleep, retry with exponential backoff, timeout\n- 📦 **Object Utilities** — Deep merge, deep clone, pick, omit\n- 📝 **String Utilities** — Truncate, capitalize, camelCase, snake_case\n- 🔍 **Type Guards** — isNotNull, isString, isObject, isArray\n- 🌐 **Environment Utilities** — Type-safe env variable access\n\n## Installation\n\n```bash\nnpm install @alsania-io/utils\n```\n\n## Usage\n\n### Response Parsing\n\n```typescript\nimport { extractText } from '@alsania-io/utils';\n\n// OpenAI format\nconst openaiResponse = {\n  choices: [{ message: { content: 'Hello!' } }]\n};\nconsole.log(extractText(openaiResponse)); // 'Hello!'\n\n// Anthropic format\nconst anthropicResponse = {\n  content: [{ text: 'Hello!' }]\n};\nconsole.log(extractText(anthropicResponse)); // 'Hello!'\n\n// Direct text\nconsole.log(extractText('Hello!')); // 'Hello!'\n```\n\n### Hashing\n\n```typescript\nimport { blake3Hash, sha3Hash, sha256Hash } from '@alsania-io/utils';\n\nconst data = 'hello world';\nconsole.log(sha3Hash(data)); // 0x...\nconsole.log(sha256Hash(data)); // ...\n```\n\n### Async Utilities\n\n```typescript\nimport { sleep, retry, timeout } from '@alsania-io/utils';\n\n// Sleep\nawait sleep(1000); // Wait 1 second\n\n// Retry with exponential backoff\nconst result = await retry(\n  async () => {\n    // Your async operation\n    return await fetchData();\n  },\n  { maxAttempts: 5, initialDelay: 100 }\n);\n\n// Timeout\nconst result = await timeout(fetchData(), 5000);\n```\n\n### Object Utilities\n\n```typescript\nimport { deepMerge, pick, omit } from '@alsania-io/utils';\n\nconst obj1 = { a: 1, b: { c: 2 } };\nconst obj2 = { b: { d: 3 }, e: 4 };\nconsole.log(deepMerge(obj1, obj2)); // { a: 1, b: { c: 2, d: 3 }, e: 4 }\n\nconst picked = pick(obj1, ['a']); // { a: 1 }\nconst omitted = omit(obj1, ['a']); // { b: { c: 2 } }\n```\n\n### String Utilities\n\n```typescript\nimport { capitalize, toCamelCase, toSnakeCase, truncate } from '@alsania-io/utils';\n\nconsole.log(capitalize('hello')); // 'Hello'\nconsole.log(toCamelCase('hello-world')); // 'helloWorld'\nconsole.log(toSnakeCase('helloWorld')); // 'hello_world'\nconsole.log(truncate('hello world', 5)); // 'hello...'\n```\n\n### Environment Utilities\n\n```typescript\nimport { getEnv, getEnvNumber, getEnvBoolean } from '@alsania-io/utils';\n\nconst apiKey = getEnv('API_KEY', 'default-key');\nconst port = getEnvNumber('PORT', 3000);\nconst debug = getEnvBoolean('DEBUG', false);\n```\n\n## API Reference\n\n### Response Parsing\n- `extractText(data: any): string` — Extract text from various AI response formats\n- `safeJsonParse<T>(json: string, fallback: T): T` — Safe JSON parsing\n- `safeStringify(obj: any, indent?: number): string` — Safe JSON stringify with circular ref handling\n\n### Hash Utilities\n- `blake3Hash(data: string | Buffer): string` — BLAKE3 hash (SHA3-256 fallback)\n- `sha3Hash(data: string | Buffer): string` — SHA3-256 hash\n- `sha256Hash(data: string | Buffer): string` — SHA256 hash\n- `hmacSha256(key: string | Buffer, data: string | Buffer): string` — HMAC-SHA256\n\n### UUID\n- `uuid(): string` — Generate UUID v4\n- `shortId(length?: number): string` — Generate short ID\n\n### Async\n- `sleep(ms: number): Promise<void>` — Sleep\n- `retry<T>(fn: () => Promise<T>, options?): Promise<T>` — Retry with exponential backoff\n- `timeout<T>(promise: Promise<T>, ms: number): Promise<T>` — Timeout a promise\n\n### Object\n- `deepMerge<T>(target: T, source: Partial<T>): T` — Deep merge objects\n- `deepClone<T>(obj: T): T` — Deep clone\n- `pick<T, K>(obj: T, keys: K[]): Pick<T, K>` — Pick specific keys\n- `omit<T, K>(obj: T, keys: K[]): Omit<T, K>` — Omit specific keys\n\n### String\n- `truncate(str: string, maxLength: number, suffix?: string): string` — Truncate string\n- `capitalize(str: string): string` — Capitalize first letter\n- `toCamelCase(str: string): string` — Convert to camelCase\n- `toSnakeCase(str: string): string` — Convert to snake_case\n\n### Type Guards\n- `isNotNull<T>(value: T | null | undefined): value is T`\n- `isString(value: unknown): value is string`\n- `isObject(value: unknown): value is Record<string, any>`\n- `isArray(value: unknown): value is any[]`\n\n### Environment\n- `getEnv(key: string, defaultValue?: string): string`\n- `getEnvNumber(key: string, defaultValue?: number): number`\n- `getEnvBoolean(key: string, defaultValue?: boolean): boolean`\n\n## License\n\nMIT\n","readmeFilename":"README.md","_rev":"1-40dc0629bbbe2e2f7b70cba4c48247df"}