{"_id":"@boruto_vk7/upload-api","name":"@boruto_vk7/upload-api","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@boruto_vk7/upload-api","version":"1.0.0","description":"TypeScript/JavaScript client for Okarun Cloud — UploadEngine with API key support (ESM + CommonJS).","author":{"name":"boruto_vk7"},"license":"MIT","keywords":["okarun","upload","api","file-hosting","cloud","typescript"],"type":"module","main":"./dist/cjs/index.js","module":"./dist/esm/index.js","types":"./dist/types/index.d.ts","exports":{".":{"types":"./dist/types/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js","default":"./dist/esm/index.js"},"./package.json":"./package.json"},"scripts":{"build":"npm run clean && npm run build:esm && npm run build:cjs && npm run build:types && npm run build:cjs-package","build:esm":"tsc -p tsconfig.esm.json","build:cjs":"tsc -p tsconfig.cjs.json","build:types":"tsc -p tsconfig.types.json","build:cjs-package":"node ./scripts/write-cjs-package.mjs","clean":"node ./scripts/clean.mjs","prepublishOnly":"npm run build","typecheck":"tsc -p tsconfig.json --noEmit"},"engines":{"node":">=18"},"sideEffects":false,"devDependencies":{"@types/node":"^20.11.0","typescript":"^5.4.5"},"repository":{"type":"git","url":"git+https://github.com/boruto_vk7/Upload-api.git"},"bugs":{"url":"https://github.com/boruto_vk7/Upload-api/issues"},"homepage":"https://cloud.okarunsystem.com.br/docs","publishConfig":{"access":"public"},"_id":"@boruto_vk7/upload-api@1.0.0","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-+3nykTkjVRvIaWUh7Q7qPDwKj6h5cDFlMJ6QQ9SxsXzpZRbD2qoG3HQGMLBmBnIX/0AqG8y9eBPzHN9lCcCMMw==","shasum":"eadbd4cbdb9ed93b5372de219262eb8f358e85aa","tarball":"https://registry.npmjs.org/@boruto_vk7/upload-api/-/upload-api-1.0.0.tgz","fileCount":34,"unpackedSize":92906,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIHBWpTl+W9Y6+QS3iyCd4QSCS1xVxYtpvJNokGl4M4SvAiEAj1kIWz83kC1QSLyQRUMUnxeHPnIFflor0G0KZKgDMyM="}]},"_npmUser":{"name":"eduh_dev021","email":"kentakakura021028@gmail.com"},"directories":{},"maintainers":[{"name":"eduh_dev021","email":"kentakakura021028@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/upload-api_1.0.0_1784947121988_0.9967786721092686"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-25T02:38:41.833Z","1.0.0":"2026-07-25T02:38:42.144Z","modified":"2026-07-25T02:38:42.375Z"},"maintainers":[{"name":"eduh_dev021","email":"kentakakura021028@gmail.com"}],"description":"TypeScript/JavaScript client for Okarun Cloud — UploadEngine with API key support (ESM + CommonJS).","homepage":"https://cloud.okarunsystem.com.br/docs","keywords":["okarun","upload","api","file-hosting","cloud","typescript"],"repository":{"type":"git","url":"git+https://github.com/boruto_vk7/Upload-api.git"},"author":{"name":"boruto_vk7"},"bugs":{"url":"https://github.com/boruto_vk7/Upload-api/issues"},"license":"MIT","readme":"# @boruto_vk7/upload-api\n\nTypeScript/JavaScript client for [Okarun Cloud](https://cloud.okarunsystem.com.br) built around the **`UploadEngine`** class.\n\n- Dual package: **ESM + CommonJS**\n- API key auth (`ok_live_…`)\n- File / URL / text upload\n- List, stats, delete, albums\n- Node.js ≥ 18 (native `fetch`)\n\n## Install\n\n```bash\nnpm install @boruto_vk7/upload-api\n```\n\n## Quick start\n\n### ESM / TypeScript\n\n```ts\nimport { UploadEngine } from '@boruto_vk7/upload-api';\n\nconst engine = new UploadEngine({\n  apiKey: process.env.OKARUN_API_KEY, // ok_live_…\n  // baseUrl: 'https://cloud.okarunsystem.com.br', // default\n});\n\n// local file (Node)\nconst file = await engine.uploadFile('./photo.jpg');\nconsole.log(file.url); // https://…/abc123.jpg\n\n// Blob / Buffer\nconst buf = await engine.upload({\n  data: Buffer.from('hello'),\n  filename: 'hello.txt',\n});\n\n// remote URL\nconst remote = await engine.uploadFromUrl('https://example.com/a.png');\n\n// text snippet\nconst snip = await engine.uploadText({ text: 'log…', name: 'debug' });\n```\n\n### CommonJS\n\n```js\nconst { UploadEngine } = require('@boruto_vk7/upload-api');\n\nconst engine = new UploadEngine({\n  apiKey: process.env.OKARUN_API_KEY,\n});\n\nengine.uploadFile('./video.mp4').then((f) => console.log(f.url));\n```\n\n## Configuration\n\n```ts\nnew UploadEngine({\n  apiKey: 'ok_live_…',          // required by default\n  baseUrl: 'https://…',         // default: https://cloud.okarunsystem.com.br\n  timeoutMs: 120_000,\n  requireApiKey: true,          // set false to allow anonymous uploads\n  headers: { 'X-App': 'bot' },\n  fetch: customFetch,           // optional override\n});\n```\n\n| Option | Default | Description |\n|--------|---------|-------------|\n| `apiKey` | — | Account API key (`ok_live_…`). Accepts raw key or `Bearer …`. |\n| `baseUrl` | `https://cloud.okarunsystem.com.br` | API host (no trailing slash). |\n| `timeoutMs` | `120000` | Per-request timeout. |\n| `requireApiKey` | `true` | If `false`, uploads work without a key (anonymous / 24h). |\n| `headers` | `{}` | Extra headers on every request. |\n| `fetch` | `globalThis.fetch` | Custom fetch (tests, polyfills). |\n\n## Methods\n\n| Method | Endpoint | Auth |\n|--------|----------|------|\n| `upload(source)` / `uploadMany()` | `POST /api/upload` | API key* |\n| `uploadFile(path)` | same (Node path helper) | API key* |\n| `uploadFromUrl({ url, name? })` | `POST /api/upload/url` | API key* |\n| `uploadText({ text, name? })` | `POST /api/upload/text` | API key* |\n| `listFiles({ page, limit, type })` | `GET /api/account/files` | API key |\n| `stats()` | `GET /api/account/stats` | API key |\n| `me()` | `GET /api/me` | API key |\n| `delete(shortId, token?)` | `POST /api/delete/:id` | API key or anonymous token |\n| `createAlbum({ name, ids })` | `POST /api/album` | API key |\n| `getFile(shortId)` | `GET /api/file/:id` | public |\n| `health()` | `GET /api/health` | public |\n| `publicUrl(id, ext)` / `viewerUrl(id)` | helpers | — |\n\n\\* Without a key and with `requireApiKey: false` → anonymous upload (24h TTL).\n\n## Upload sources\n\n`upload()` / `uploadMany()` accept:\n\n- `Blob` / `File` (browser)\n- `Buffer` / `Uint8Array` / `ArrayBuffer` (Node)\n- `Readable` streams (Node)\n- `{ data, filename?, contentType? }` wrapper\n\n```ts\nawait engine.upload(fs.createReadStream('./clip.mp4')); // via buffer wrap internally when needed\nawait engine.upload({ data: buffer, filename: 'clip.mp4', contentType: 'video/mp4' });\n```\n\n## Errors\n\n```ts\nimport { UploadEngine, UploadApiError, UploadConfigError } from '@boruto_vk7/upload-api';\n\ntry {\n  await engine.uploadFile('./a.png');\n} catch (e) {\n  if (e instanceof UploadConfigError) {\n    // missing apiKey, invalid source, etc.\n  }\n  if (e instanceof UploadApiError) {\n    console.error(e.status, e.code, e.message, e.data);\n  }\n}\n```\n\n## Bot example\n\n```ts\nimport { UploadEngine, UploadApiError } from '@boruto_vk7/upload-api';\n\nconst up = new UploadEngine({ apiKey: process.env.OKARUN_API_KEY! });\n\nexport async function sendMedia(buffer: Buffer, name: string) {\n  try {\n    const f = await up.upload({ data: buffer, filename: name });\n    return f.url; // always ends with file extension\n  } catch (e) {\n    if (e instanceof UploadApiError) {\n      console.error(e.status, e.code, e.message);\n    }\n    throw e;\n  }\n}\n```\n\n## Response shape (upload)\n\n```json\n{\n  \"ok\": true,\n  \"shortId\": \"abc123\",\n  \"name\": \"photo.jpg\",\n  \"ext\": \"jpg\",\n  \"size\": 102400,\n  \"mimetype\": \"image/jpeg\",\n  \"type\": \"image\",\n  \"url\": \"https://cdn…/abc123.jpg\",\n  \"viewerUrl\": \"https://…/v/abc123\",\n  \"reused\": false\n}\n```\n\nPublic URLs **always include the file extension**.\n\n## Build (development)\n\n```bash\ncd packages/upload-api\nnpm install\nnpm run build\n# → dist/esm  dist/cjs  dist/types\n```\n\n## License\n\nMIT · [@boruto_vk7](https://github.com/boruto_vk7)\n","readmeFilename":"README.md","_rev":"1-b80c44576737973e763a9f98c2ff0b0b"}