{"_id":"@byoc/provider-sdk","_rev":"4-2410594be2226fa7478e98178a06e6c2","name":"@byoc/provider-sdk","dist-tags":{"latest":"0.4.0"},"versions":{"0.2.0":{"name":"@byoc/provider-sdk","version":"0.2.0","keywords":["byoc","sdk","compliance","certification","storage-adapter"],"author":{"name":"BYOC Team"},"license":"Apache-2.0","_id":"@byoc/provider-sdk@0.2.0","maintainers":[{"name":"ajayvarmaramineni","email":"ajayvarmawork11@gmail.com"}],"homepage":"https://github.com/Ajayvarmaramineni/BYOC#readme","bugs":{"url":"https://github.com/Ajayvarmaramineni/BYOC/issues"},"dist":{"shasum":"791b9f143101c3d97e8849ffb2a1ec1beefac8ea","tarball":"https://registry.npmjs.org/@byoc/provider-sdk/-/provider-sdk-0.2.0.tgz","fileCount":11,"integrity":"sha512-Le2i9PcLQCH3naq4Co4KE8RekDXDyPzCnD4/ZeyZpzJCAsuMfMYHZewc/oYYlgmR+xkzvxeaDlPXakFYdp7GHA==","signatures":[{"sig":"MEUCIQCA2YdZ4KwMJTjCNA6imozeioN1/RGOwTRHuFqx29NnvAIgcfHEn8C6y0ANzH7kdIX6StBsI3JxMD0JICbh8rqvIR0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26614},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"3bb0599bc8e926588b1d052d5dbd82ac1c598772","scripts":{"build":"tsc -b","clean":"rm -rf dist tsconfig.tsbuildinfo"},"_npmUser":{"name":"ajayvarmaramineni","email":"ajayvarmawork11@gmail.com"},"repository":{"url":"git+https://github.com/Ajayvarmaramineni/BYOC.git","type":"git","directory":"packages/provider-sdk"},"_npmVersion":"11.11.0","description":"BYOC Provider SDK — Certification suite and developer tools for building BYOC storage adapters","directories":{},"_nodeVersion":"25.8.1","dependencies":{"@byoc/core":"^0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/provider-sdk_0.2.0_1787717988441_0.013409137157915474","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@byoc/provider-sdk","version":"0.2.1","keywords":["byoc","sdk","compliance","certification","storage-adapter"],"author":{"name":"Ajay Ramineni"},"license":"Apache-2.0","_id":"@byoc/provider-sdk@0.2.1","maintainers":[{"name":"ajayvarmaramineni","email":"ajayvarmawork11@gmail.com"}],"homepage":"https://github.com/Ajayvarmaramineni/BYOC/tree/main/packages/provider-sdk#readme","bugs":{"url":"https://github.com/Ajayvarmaramineni/BYOC/issues"},"dist":{"shasum":"10bc70782d3e7d719b54846461d37a716afb2f83","tarball":"https://registry.npmjs.org/@byoc/provider-sdk/-/provider-sdk-0.2.1.tgz","fileCount":11,"integrity":"sha512-HGsm1mKrOXsZ8UHhqHPk/p1UG3wLjYZdOGDhJtV+D07slKoiLO/SmfsXWJ8oTz4RXXXbBANTVu0+iszfPxzk+Q==","signatures":[{"sig":"MEUCIHg/R56sg616R3gYqa9m0cv9F+gSMdMzZZJrdr2iPZhmAiEAoe3Hf4LzFWkuYsYLraswScMMux96Dd5NXi7+AIn73QA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26862},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"ed39479c5c352a8dd388011f0b968f3c8dca9d9c","scripts":{"build":"tsc -b","clean":"rm -rf dist tsconfig.tsbuildinfo"},"_npmUser":{"name":"ajayvarmaramineni","email":"ajayvarmawork11@gmail.com"},"repository":{"url":"git+https://github.com/Ajayvarmaramineni/BYOC.git","type":"git","directory":"packages/provider-sdk"},"_npmVersion":"11.11.0","description":"BYOC Provider SDK — Certification suite and developer tools for building BYOC storage adapters","directories":{},"sideEffects":false,"_nodeVersion":"25.8.1","dependencies":{"@byoc/core":"^0.2.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/provider-sdk_0.2.1_1787800937858_0.6389376163152738","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@byoc/provider-sdk","version":"0.3.0","keywords":["byoc","sdk","compliance","certification","storage-adapter"],"author":{"name":"Ajay Ramineni"},"license":"Apache-2.0","_id":"@byoc/provider-sdk@0.3.0","maintainers":[{"name":"ajayvarmaramineni","email":"ajayvarmawork11@gmail.com"}],"homepage":"https://github.com/Ajayvarmaramineni/BYOC/tree/main/packages/provider-sdk#readme","bugs":{"url":"https://github.com/Ajayvarmaramineni/BYOC/issues"},"dist":{"shasum":"ce1e98fee541f3305f934cab985f948f3655a544","tarball":"https://registry.npmjs.org/@byoc/provider-sdk/-/provider-sdk-0.3.0.tgz","fileCount":11,"integrity":"sha512-qt79pxWGHLrFS5UTr8EfaEzcHmadP6USJGnPSqor3mbZJ688t/Rx4ueyVMkF4boh8o+rDT8kWAcgvCBLH0lD8w==","signatures":[{"sig":"MEQCIC+6pX5k/hxCveTdaPL/sf7RBJu25hG+HRMDtstsKJ8OAiAWwcjwD9xprJ+Y/ylB342GVC5BcAULgl7PxiciwTwDMA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26862},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"08cd88be6fa4b7a9c3cbf29275c8eee04c88bcf6","scripts":{"build":"tsc -b","clean":"rm -rf dist tsconfig.tsbuildinfo"},"_npmUser":{"name":"ajayvarmaramineni","email":"ajayvarmawork11@gmail.com"},"repository":{"url":"git+https://github.com/Ajayvarmaramineni/BYOC.git","type":"git","directory":"packages/provider-sdk"},"_npmVersion":"11.11.0","description":"BYOC Provider SDK — Certification suite and developer tools for building BYOC storage adapters","directories":{},"sideEffects":false,"_nodeVersion":"25.8.1","dependencies":{"@byoc/core":"^0.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/provider-sdk_0.3.0_1788102943112_0.868831227941312","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@byoc/provider-sdk","version":"0.4.0","description":"BYOC Provider SDK — Certification suite and developer tools for building BYOC storage adapters","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"build":"tsc -b","clean":"rm -rf dist tsconfig.tsbuildinfo"},"dependencies":{"@byoc/core":"^0.4.0"},"keywords":["byoc","sdk","compliance","certification","storage-adapter"],"author":{"name":"Ajay Ramineni"},"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/Ajayvarmaramineni/BYOC.git","directory":"packages/provider-sdk"},"publishConfig":{"access":"public"},"homepage":"https://github.com/Ajayvarmaramineni/BYOC/tree/main/packages/provider-sdk#readme","bugs":{"url":"https://github.com/Ajayvarmaramineni/BYOC/issues"},"engines":{"node":">=20"},"sideEffects":false,"gitHead":"4b2a714094177d387691f4a1bc7fb04d89a74081","_id":"@byoc/provider-sdk@0.4.0","_nodeVersion":"25.8.1","_npmVersion":"11.11.0","dist":{"integrity":"sha512-M2s0HPJXa3chpnsR6mkzE2xe3nIo0jrMlfqPefE5k9XJIqQAduMtzuTM2M1xFQJMZ5W36Nr7FNOU60/UOnvUrA==","shasum":"00a1f31103adb94c318658dce0970da7d955eacf","tarball":"https://registry.npmjs.org/@byoc/provider-sdk/-/provider-sdk-0.4.0.tgz","fileCount":11,"unpackedSize":26862,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDrr/FDJt+Nf9C9DQJGFLIJBfp3srPAGwau30ULd2DKwgIhAN16CKWOFsEBscNnBpNZGLNPcvA86ppZXmnlJCn1xBiO"}]},"_npmUser":{"name":"ajayvarmaramineni","email":"ajayvarmawork11@gmail.com"},"directories":{},"maintainers":[{"name":"ajayvarmaramineni","email":"ajayvarmawork11@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/provider-sdk_0.4.0_1788653109307_0.6621719560328365"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-26T04:19:48.297Z","modified":"2026-09-06T00:05:09.653Z","0.2.0":"2026-08-26T04:19:48.569Z","0.2.1":"2026-08-27T03:22:18.000Z","0.3.0":"2026-08-30T15:15:43.256Z","0.4.0":"2026-09-06T00:05:09.453Z"},"bugs":{"url":"https://github.com/Ajayvarmaramineni/BYOC/issues"},"author":{"name":"Ajay Ramineni"},"license":"Apache-2.0","homepage":"https://github.com/Ajayvarmaramineni/BYOC/tree/main/packages/provider-sdk#readme","keywords":["byoc","sdk","compliance","certification","storage-adapter"],"repository":{"type":"git","url":"git+https://github.com/Ajayvarmaramineni/BYOC.git","directory":"packages/provider-sdk"},"description":"BYOC Provider SDK — Certification suite and developer tools for building BYOC storage adapters","maintainers":[{"name":"ajayvarmaramineni","email":"ajayvarmawork11@gmail.com"}],"readme":"# @byoc/provider-sdk\n\nCertification suite for **BYOC (Bring Your Own Cloud)** provider adapters: verify that a custom storage adapter behaves the way `@byoc/core` expects before you ship it.\n\n> Part of the [BYOC monorepo](https://github.com/Ajayvarmaramineni/BYOC). Requires `@byoc/core`.\n>\n> **Status: v0.2.0.**\n\n## Install\n\n```bash\nnpm install --save-dev @byoc/provider-sdk\n```\n\n## Usage\n\nPoint the suite at a factory that returns your adapter. It exercises the full `BYOCProvider` contract against a live instance and returns a structured report.\n\n```ts\nimport { runProviderComplianceSuite } from \"@byoc/provider-sdk\";\nimport { MyCustomProvider } from \"./my-provider.js\";\n\nconst report = await runProviderComplianceSuite(\n  () => new MyCustomProvider({ /* ... */ })\n);\n\nconsole.log(`${report.passed}/${report.total} passed`);\n\nfor (const result of report.results) {\n  if (!result.passed) console.error(`✗ ${result.name}: ${result.error}`);\n}\n```\n\nAdapters that legitimately lack a capability can skip those assertions:\n\n```ts\nawait runProviderComplianceSuite(factory, {\n  skipQuota: true,    // provider has no quota concept (e.g. S3)\n  skipFolders: true   // provider has no explicit folders\n});\n```\n\n## What it checks\n\nManifest structure, capability declarations, the connect/disconnect lifecycle, upload and download round-trips, metadata and `exists()` accuracy, listing, deletion, and correct `StorageError` codes for missing objects and unsupported capabilities.\n\n## Report shape\n\n```ts\ninterface ComplianceReport {\n  providerId: string;\n  providerName: string;\n  total: number;\n  passed: number;\n  failed: number;\n  results: Array<{\n    name: string;\n    passed: boolean;\n    error?: string;\n    durationMs: number;\n  }>;\n}\n```\n\nThe suite catches per-test failures rather than throwing, so one broken operation still produces a full report. `vitest` is an optional peer dependency; the suite runs standalone and doesn't require a test runner.\n\n## License\n\n[Apache-2.0](./LICENSE)\n","readmeFilename":"README.md"}