{"_id":"@bubblystorage/sdk-js","_rev":"3-d79eaecec7b9996d9d2d5a99a852f7cb","name":"@bubblystorage/sdk-js","dist-tags":{"latest":"1.0.3"},"versions":{"1.0.1":{"name":"@bubblystorage/sdk-js","version":"1.0.1","keywords":["bubbly-storage","sdk-js","javascript-sdk","typescript-sdk","file-upload","storage","typescript","nodejs","nextjs","browser","api-client"],"author":{"name":"Ahmed Ayad"},"license":"Apache-2.0","_id":"@bubblystorage/sdk-js@1.0.1","maintainers":[{"name":"grey-cotton","email":"shoshan01@gmail.com"}],"homepage":"https://github.com/a-ayad-dev/SDK-bubbly-storage#readme","bugs":{"url":"https://github.com/a-ayad-dev/SDK-bubbly-storage/issues"},"dist":{"shasum":"be2f600eb810e7ce853a1ae34d414318d0f63737","tarball":"https://registry.npmjs.org/@bubblystorage/sdk-js/-/sdk-js-1.0.1.tgz","fileCount":28,"integrity":"sha512-hzdOJHFjbGFiBJKlnzU8DGbvy1jNL+fMJn11A1vtUtsse1ZSvrRCOQAl5FmpeRuwqi8322+NA+z3d9o2hvmuKw==","signatures":[{"sig":"MEUCIQCizbdf83Dr/jfVJcZg1RB+Q0UCHGp+NKzTkAvvO+8+VAIgbKAdMoCQU+mmUTuu9T2synJitVHOvD4n76GjTpEHkIk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":73182},"main":"./dist/index.cjs","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":"./dist/index.mjs","require":"./dist/index.cjs"},"./types":{"import":"./dist/types.mjs","require":"./dist/types.cjs"},"./errors":{"import":"./dist/errors.mjs","require":"./dist/errors.cjs"}},"gitHead":"3849808bedfdf6d728a2a4cf8a1622dbdd654f87","scripts":{"build":"tsup","clean":"rimraf dist","release":"npm run build && npm run version-packages && npx changeset publish","changeset":"npx changeset","prepublishOnly":"npm run clean && npm run build","version-packages":"npx changeset version"},"_npmUser":{"name":"grey-cotton","email":"shoshan01@gmail.com"},"repository":{"url":"git+https://github.com/a-ayad-dev/SDK-bubbly-storage.git","type":"git"},"_npmVersion":"10.9.3","description":"Official JavaScript/TypeScript SDK for Bubbly Storage API - supports Node.js, Next.js, and browsers","directories":{},"_nodeVersion":"22.18.0","dependencies":{"form-data":"^4.0.4"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","rimraf":"^6.0.1","typescript":"^5.9.2","@types/node":"^24.3.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_1.0.1_1760734479509_0.8213721636544005","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@bubblystorage/sdk-js","version":"1.0.2","keywords":["bubbly-storage","sdk-js","javascript-sdk","typescript-sdk","file-upload","storage","typescript","nodejs","nextjs","browser","api-client"],"author":{"name":"Ahmed Ayad"},"license":"Apache-2.0","_id":"@bubblystorage/sdk-js@1.0.2","maintainers":[{"name":"grey-cotton","email":"shoshan01@gmail.com"}],"homepage":"https://github.com/a-ayad-dev/SDK-bubbly-storage#readme","bugs":{"url":"https://github.com/a-ayad-dev/SDK-bubbly-storage/issues"},"dist":{"shasum":"77e9a7710fd699c32631b0715e7cb592ab73a199","tarball":"https://registry.npmjs.org/@bubblystorage/sdk-js/-/sdk-js-1.0.2.tgz","fileCount":28,"integrity":"sha512-aAsDedmhvBfzBdm8Sm2lqbowzJFBQELD8rQPUWbDlQOIIQIkDP37Z6a42q3aDgOUWWF1IWbYtm/oxki9yFyP4g==","signatures":[{"sig":"MEYCIQCbcLV8hmValLxVpE0kNWWv+vgr/lROPTPC2RyusN/vygIhAJCPYPvg+HAeCorQT4wgSRiuYY92pHQNEZmSSnu4HcDv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74292},"main":"./dist/index.cjs","types":"./dist/index.d.ts","module":"./dist/index.mjs","exports":{".":{"import":"./dist/index.mjs","require":"./dist/index.cjs"},"./types":{"import":"./dist/types.mjs","require":"./dist/types.cjs"},"./errors":{"import":"./dist/errors.mjs","require":"./dist/errors.cjs"}},"gitHead":"a65e6a335fd56f63923c2d7c28c3d29cb01e699c","scripts":{"build":"tsup","clean":"rimraf dist","release":"npm run build && npm run version-packages && npx changeset publish","changeset":"npx changeset","prepublishOnly":"npm run clean && npm run build","version-packages":"npx changeset version"},"_npmUser":{"name":"grey-cotton","email":"shoshan01@gmail.com"},"repository":{"url":"git+https://github.com/a-ayad-dev/SDK-bubbly-storage.git","type":"git"},"_npmVersion":"10.9.3","description":"Official JavaScript/TypeScript SDK for Bubbly Storage API - supports Node.js, Next.js, and browsers","directories":{},"_nodeVersion":"22.18.0","dependencies":{"form-data":"^4.0.4"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","rimraf":"^6.0.1","typescript":"^5.9.2","@types/node":"^24.3.0"},"_npmOperationalInternal":{"tmp":"tmp/sdk-js_1.0.2_1760925321089_0.19539414635759056","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@bubblystorage/sdk-js","version":"1.0.3","description":"JavaScript and TypeScript SDK for Bubbly Storage - Fast, secure cloud file storage. Upload files effortlessly in Node.js, Next.js, React, and browsers with full TypeScript support.","main":"./dist/index.cjs","module":"./dist/index.mjs","types":"./dist/index.d.ts","exports":{".":{"import":"./dist/index.mjs","require":"./dist/index.cjs"},"./errors":{"import":"./dist/errors.mjs","require":"./dist/errors.cjs"},"./types":{"import":"./dist/types.mjs","require":"./dist/types.cjs"}},"scripts":{"build":"tsup","clean":"rimraf dist","changeset":"npx changeset","version-packages":"npx changeset version","release":"npm run build && npm run version-packages && npx changeset publish","prepublishOnly":"npm run clean && npm run build"},"homepage":"https://bubblystorage.com","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"keywords":["bubbly-storage","sdk-js","javascript-sdk","typescript-sdk","file-upload","storage","typescript","nodejs","nextjs","browser","api-client"],"author":{"name":"Bubbly Storage"},"license":"Apache-2.0","dependencies":{"form-data":"^4.0.4"},"devDependencies":{"@types/node":"^24.3.0","rimraf":"^6.0.1","tsup":"^8.5.0","typescript":"^5.9.2"},"_id":"@bubblystorage/sdk-js@1.0.3","gitHead":"a65e6a335fd56f63923c2d7c28c3d29cb01e699c","_nodeVersion":"22.18.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-Qfw5Stw8H09bbvfybWWrVJXPsnrwFgoDVUXLlWa3F+4ViSSy8CGzl0DqtWremSB+wqZ6AtU/jXHD7WUeAbBbPA==","shasum":"6140aa3ddc14e9bf0d0089e3abdd7298ecc7b8ea","tarball":"https://registry.npmjs.org/@bubblystorage/sdk-js/-/sdk-js-1.0.3.tgz","fileCount":28,"unpackedSize":74098,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCCC+edCmthyHQgxU6St4zoIACZFvZOMZJK631ws/pb/QIgQmPF7wvD3zW2QO01XuvA2ei3E9pfFqdgiMpjzrcPRI4="}]},"_npmUser":{"name":"grey-cotton","email":"shoshan01@gmail.com"},"directories":{},"maintainers":[{"name":"grey-cotton","email":"shoshan01@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sdk-js_1.0.3_1760925772881_0.004295332222303383"},"_hasShrinkwrap":false}},"time":{"created":"2025-10-17T20:54:39.432Z","modified":"2025-10-20T02:02:53.296Z","1.0.1":"2025-10-17T20:54:39.754Z","1.0.2":"2025-10-20T01:55:21.250Z","1.0.3":"2025-10-20T02:02:53.061Z"},"author":{"name":"Bubbly Storage"},"license":"Apache-2.0","homepage":"https://bubblystorage.com","keywords":["bubbly-storage","sdk-js","javascript-sdk","typescript-sdk","file-upload","storage","typescript","nodejs","nextjs","browser","api-client"],"description":"JavaScript and TypeScript SDK for Bubbly Storage - Fast, secure cloud file storage. Upload files effortlessly in Node.js, Next.js, React, and browsers with full TypeScript support.","maintainers":[{"name":"grey-cotton","email":"shoshan01@gmail.com"}],"readme":"# @bubblystorage/sdk-js\n\n**Official JavaScript/TypeScript SDK for Bubbly Storage API**\n\n[![NPM version](https://img.shields.io/npm/v/@bubblystorage/sdk-js.svg)](https://npmjs.org/package/@bubblystorage/sdk-js)\n![Bundle Size](https://img.shields.io/bundlephobia/minzip/@bubblystorage/sdk-js)\n\nA TypeScript library for uploading files to Bubbly Storage API. Works in Node.js, Next.js, and browsers.\n\n## Installation\n\n```bash\nnpm install @bubblystorage/sdk-js\n# or\npnpm add @bubblystorage/sdk-js\n# or\nyarn add @bubblystorage/sdk-js\n```\n\n## Quick Start\n\n```typescript\nimport { BubblyStorageClient } from \"@bubblystorage/sdk-js\";\n\nconst client = new BubblyStorageClient({\n  apiKey: \"your-api-key\",\n});\n\n// Upload files\nconst result = await client.uploadFiles(files);\nconsole.log(result.files);\n```\n\n## Configuration Options\n\n```typescript\nconst client = new BubblyStorageClient({\n  apiKey: \"your-api-key\",                   // Required: Your Bubbly Storage API key\n  apiUrl: \"https://api.bubblystorage.com/v1\", // Optional: Custom API URL (default shown)\n  isBrowser: false,                         // Optional: Set to true for browser environments\n});\n```\n\n## Usage Examples\n\n### Node.js - File Paths\n\n```typescript\n// Upload from file path\nawait client.uploadFiles(\"/path/to/file.jpg\");\n\n// Multiple files\nawait client.uploadFiles([\"/path/to/file1.jpg\", \"/path/to/file2.pdf\"]);\n```\n\n### Node.js - Buffers\n\n```typescript\nimport fs from \"fs\";\n\nconst buffer = fs.readFileSync(\"image.jpg\");\n// Add metadata to buffer\nbuffer.name = \"image.jpg\";\nbuffer.type = \"image/jpeg\";\n\nawait client.uploadFiles(buffer);\n```\n\n### Browser/Next.js - File Objects\n\n```typescript\n// From file input\nconst fileInput = document.querySelector('input[type=\"file\"]');\nawait client.uploadFiles(fileInput.files[0]);\n\n// Multiple files\nawait client.uploadFiles(Array.from(fileInput.files));\n```\n\n### Next.js Server Actions\n\n```typescript\n// app/upload/page.tsx\nimport { BubblyStorageClient } from \"@bubblystorage/sdk-js\";\n\nasync function uploadAction(formData: FormData) {\n  \"use server\";\n\n  const client = new BubblyStorageClient({\n    apiKey: process.env.BUBBLYSTORAGE_API_KEY!,\n  });\n\n  const file = formData.get(\"file\") as File;\n  const result = await client.uploadFiles(file);\n\n  return result;\n}\n```\n\n## Supported File Types\n\n- **Node.js**: File paths (strings), Buffers\n- **Browser**: File objects, Blob objects\n- **Next.js**: File objects, Blob objects (server actions/API routes)\n\n## Error Handling\n\n```typescript\nimport { ValidationError, UploadError } from \"@bubblystorage/sdk-js/errors\";\n\ntry {\n  await client.uploadFiles(files);\n} catch (error) {\n  if (error instanceof ValidationError) {\n    console.log(\"Invalid file type:\", error.message);\n  } else if (error instanceof UploadError) {\n    console.log(\"Upload failed:\", error.message);\n  }\n}\n```\n\n## TypeScript Support\n\nFull TypeScript support with type definitions:\n\n```typescript\nimport type { UploadFileResponse } from \"@bubblystorage/sdk-js/types\";\n\nconst result: UploadFileResponse = await client.uploadFiles(files);\n```\n\n## Requirements\n\n- **Node.js**: 18+\n- **TypeScript**: 4.5+ (optional)\n- **Browsers**: Modern browsers with fetch support\n- **Next.js**: 13+ (App Router recommended)\n\n## License\n\nApache-2.0\n","readmeFilename":"README.md"}