{"_id":"@aquienpz/sdk","_rev":"30-4ad28f8e937d734914e67fa1c207cbf3","name":"@aquienpz/sdk","dist-tags":{"latest":"0.20.0"},"versions":{"0.1.0":{"name":"@aquienpz/sdk","version":"0.1.0","keywords":["aquienpz","asset-management","cdn","cloudinary-alternative","multi-tenant","r2","cloudflare"],"license":"UNLICENSED","_id":"@aquienpz/sdk@0.1.0","maintainers":[{"name":"espaciofuturo","email":"dev@espaciofuturo.io"}],"homepage":"https://github.com/espaciofuturoio/aquienpz/tree/main/packages/sdk","bugs":{"url":"https://github.com/espaciofuturoio/aquienpz/issues"},"dist":{"shasum":"b15a0e159156c085ba734605de094e580847f2cf","tarball":"https://registry.npmjs.org/@aquienpz/sdk/-/sdk-0.1.0.tgz","fileCount":6,"integrity":"sha512-L0aM+Pc43mt18WdSh20LNDkHtvh/9ztM5w4g6OTI5xGeLR4mdIvKASnMO0eQLCwb6v27OuVwwdZO0n80PKtKRA==","signatures":[{"sig":"MEQCICJoGd6mrSCgogBO92FxLI3IEPxRf9sUVpDCoKVBN+AvAiAsjcsMR+oFIL8hPxE1bFaMVv8oaeEWZAMk/VNmjA5YHQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38220},"type":"module","shasum":"b15a0e159156c085ba734605de094e580847f2cf","exports":{".":{"types":"./src/index.ts","import":"./src/index.ts"},"./web":{"types":"./src/web/index.ts","import":"./src/web/index.ts"},"./expo":{"types":"./src/expo/index.ts","import":"./src/expo/index.ts"},"./react":{"types":"./src/react/index.ts","import":"./src/react/index.ts"}},"private":false,"scripts":{"test:e2e":"bun test test/e2e","type-check":"tsc --noEmit"},"_npmUser":{"name":"espaciofuturo","email":"dev@espaciofuturo.io"},"_integrity":"sha512-L0aM+Pc43mt18WdSh20LNDkHtvh/9ztM5w4g6OTI5xGeLR4mdIvKASnMO0eQLCwb6v27OuVwwdZO0n80PKtKRA==","repository":{"url":"https://github.com/espaciofuturoio/aquienpz.git","type":"git","directory":"packages/sdk"},"_npmVersion":"10.8.3","description":"Universal SDK for the aquienpz multi-tenant asset platform. Cloudinary-style asset management with slot bindings, presets, and Better Auth API keys.","directories":{},"_nodeVersion":"24.3.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","@types/bun":"^1.3.13","typescript":"^6.0.3","@types/react":"^19.0.0","@aquienpz/asset-client":"0.1.0","@aquienpz/asset-uploader-web":"0.1.0","@aquienpz/asset-uploader-expo":"0.1.0"},"peerDependencies":{"react":">=18","@aquienpz/asset-client":"0.1.0","@aquienpz/asset-uploader-web":"0.1.0","@aquienpz/asset-uploader-expo":"0.1.0"},"peerDependenciesMeta":{"react":{"optional":true},"@aquienpz/asset-uploader-web":{"optional":true},"@aquienpz/asset-uploader-expo":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.1.0_1778918524946_0.6141069122308147","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@aquienpz/sdk","version":"0.1.1","keywords":["aquienpz","asset-management","cdn","cloudinary-alternative","multi-tenant","r2","cloudflare"],"license":"UNLICENSED","_id":"@aquienpz/sdk@0.1.1","maintainers":[{"name":"espaciofuturo","email":"dev@espaciofuturo.io"}],"homepage":"https://github.com/espaciofuturoio/aquienpz/tree/main/packages/sdk","bugs":{"url":"https://github.com/espaciofuturoio/aquienpz/issues"},"dist":{"shasum":"375d7317783a633b3d87b823330467652f3761a2","tarball":"https://registry.npmjs.org/@aquienpz/sdk/-/sdk-0.1.1.tgz","fileCount":6,"integrity":"sha512-jahHs1xl0EJpI21wZauSGbcj9lburUVdIR+hIEKy2GNRsjsnLnxpeB4CFNb5ZyAIZDbXcpOWFtaIwA2/ZsYLSA==","signatures":[{"sig":"MEUCIAStWhaTmmYPYsix/MpxRJXhzIlbRR4r+UW88R28CkC4AiEAmt3IGHTUetqzp1/0vypIJphpBi3EYmeSMI0cwd9/SFw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44220},"type":"module","shasum":"375d7317783a633b3d87b823330467652f3761a2","exports":{".":{"types":"./src/index.ts","import":"./src/index.ts"},"./web":{"types":"./src/web/index.ts","import":"./src/web/index.ts"},"./expo":{"types":"./src/expo/index.ts","import":"./src/expo/index.ts"},"./react":{"types":"./src/react/index.ts","import":"./src/react/index.ts"}},"private":false,"scripts":{"test:e2e":"bun test test/e2e","type-check":"tsc --noEmit"},"_npmUser":{"name":"espaciofuturo","email":"dev@espaciofuturo.io"},"_integrity":"sha512-jahHs1xl0EJpI21wZauSGbcj9lburUVdIR+hIEKy2GNRsjsnLnxpeB4CFNb5ZyAIZDbXcpOWFtaIwA2/ZsYLSA==","repository":{"url":"https://github.com/espaciofuturoio/aquienpz.git","type":"git","directory":"packages/sdk"},"_npmVersion":"10.8.3","description":"Universal SDK for the aquienpz multi-tenant asset platform. Cloudinary-style asset management with slot bindings, presets, and Better Auth API keys.","directories":{},"_nodeVersion":"24.3.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","@types/bun":"^1.3.13","typescript":"^6.0.3","@types/react":"^19.0.0","@aquienpz/asset-client":"0.1.0","@aquienpz/asset-uploader-web":"0.1.0","@aquienpz/asset-uploader-expo":"0.1.0"},"peerDependencies":{"react":">=18","@aquienpz/asset-client":"0.1.0","@aquienpz/asset-uploader-web":"0.1.0","@aquienpz/asset-uploader-expo":"0.1.0"},"peerDependenciesMeta":{"react":{"optional":true},"@aquienpz/asset-uploader-web":{"optional":true},"@aquienpz/asset-uploader-expo":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.1.1_1778918777084_0.6430593557807633","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@aquienpz/sdk","version":"0.1.2","keywords":["aquienpz","asset-management","cdn","cloudinary-alternative","multi-tenant","r2","cloudflare"],"license":"UNLICENSED","_id":"@aquienpz/sdk@0.1.2","maintainers":[{"name":"espaciofuturo","email":"dev@espaciofuturo.io"}],"homepage":"https://github.com/espaciofuturoio/aquienpz/tree/main/packages/sdk","bugs":{"url":"https://github.com/espaciofuturoio/aquienpz/issues"},"dist":{"shasum":"e008268dc7d2cd96129d2917773979d5dae1be55","tarball":"https://registry.npmjs.org/@aquienpz/sdk/-/sdk-0.1.2.tgz","fileCount":6,"integrity":"sha512-1BE8JsYXpsFu5NQdHupmNz97a5mqQZIaM5VvpcWMyCC5JXkaN77DsKyD0tov5smzlNLwaUTOpWeEYqatawNFHg==","signatures":[{"sig":"MEYCIQCOrooW1vLhz26m6XflVrxBlAkpHnBy9x6uOfeqEVetaAIhAIfGrgFVWEjIJ6r/nJeupCpCsG3d6Y+7On/VXn8vpkKF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46215},"type":"module","shasum":"e008268dc7d2cd96129d2917773979d5dae1be55","exports":{".":{"types":"./src/index.ts","import":"./src/index.ts"},"./web":{"types":"./src/web/index.ts","import":"./src/web/index.ts"},"./expo":{"types":"./src/expo/index.ts","import":"./src/expo/index.ts"},"./react":{"types":"./src/react/index.ts","import":"./src/react/index.ts"}},"private":false,"scripts":{"test:e2e":"bun test test/e2e","type-check":"tsc --noEmit"},"_npmUser":{"name":"espaciofuturo","email":"dev@espaciofuturo.io"},"_integrity":"sha512-1BE8JsYXpsFu5NQdHupmNz97a5mqQZIaM5VvpcWMyCC5JXkaN77DsKyD0tov5smzlNLwaUTOpWeEYqatawNFHg==","repository":{"url":"https://github.com/espaciofuturoio/aquienpz.git","type":"git","directory":"packages/sdk"},"_npmVersion":"10.8.3","description":"Universal SDK for the aquienpz multi-tenant asset platform. Cloudinary-style asset management with slot bindings, presets, and Better Auth API keys.","directories":{},"_nodeVersion":"24.3.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","@types/bun":"^1.3.13","typescript":"^6.0.3","@types/react":"^19.0.0","@aquienpz/asset-client":"0.1.0","@aquienpz/asset-uploader-web":"0.1.0","@aquienpz/asset-uploader-expo":"0.1.0"},"peerDependencies":{"react":">=18","@aquienpz/asset-client":"0.1.0","@aquienpz/asset-uploader-web":"0.1.0","@aquienpz/asset-uploader-expo":"0.1.0"},"peerDependenciesMeta":{"react":{"optional":true},"@aquienpz/asset-uploader-web":{"optional":true},"@aquienpz/asset-uploader-expo":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.1.2_1778919775628_0.40264927153782115","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@aquienpz/sdk","version":"0.2.0","keywords":["aquienpz","asset-management","cdn","cloudinary-alternative","multi-tenant","r2","cloudflare"],"license":"UNLICENSED","_id":"@aquienpz/sdk@0.2.0","maintainers":[{"name":"espaciofuturo","email":"dev@espaciofuturo.io"}],"homepage":"https://github.com/espaciofuturoio/aquienpz/tree/main/packages/sdk","bugs":{"url":"https://github.com/espaciofuturoio/aquienpz/issues"},"dist":{"shasum":"07ecd0fa435060b8eb1e7cad349f25f643367b71","tarball":"https://registry.npmjs.org/@aquienpz/sdk/-/sdk-0.2.0.tgz","fileCount":6,"integrity":"sha512-EIy2MtGKSnhFmogvWsTdZlTQtrWPiLpr5QCL2yH2q1tUdMKAbDACfDZPw9uRnA7BB6unAOWO7eGFA0dx1TeWqg==","signatures":[{"sig":"MEYCIQCSPxzhinxsPZSbItKTJAye6ImgBM3nnDeXOsvzND46cwIhAKdCJPSUyOMlYqGAO7o9sFyzIN3VTABWBu7h6w3TYbkQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":48586},"type":"module","shasum":"07ecd0fa435060b8eb1e7cad349f25f643367b71","exports":{".":{"types":"./src/index.ts","import":"./src/index.ts"},"./web":{"types":"./src/web/index.ts","import":"./src/web/index.ts"},"./expo":{"types":"./src/expo/index.ts","import":"./src/expo/index.ts"},"./react":{"types":"./src/react/index.ts","import":"./src/react/index.ts"}},"private":false,"scripts":{"test:e2e":"bun test test/e2e","type-check":"tsc --noEmit"},"_npmUser":{"name":"espaciofuturo","email":"dev@espaciofuturo.io"},"_integrity":"sha512-EIy2MtGKSnhFmogvWsTdZlTQtrWPiLpr5QCL2yH2q1tUdMKAbDACfDZPw9uRnA7BB6unAOWO7eGFA0dx1TeWqg==","repository":{"url":"https://github.com/espaciofuturoio/aquienpz.git","type":"git","directory":"packages/sdk"},"_npmVersion":"10.8.3","description":"Universal SDK for the aquienpz multi-tenant asset platform. Cloudinary-style asset management with slot bindings, presets, and Better Auth API keys.","directories":{},"_nodeVersion":"24.3.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","@types/bun":"^1.3.13","typescript":"^6.0.3","@types/react":"^19.0.0","@aquienpz/asset-client":"0.1.0","@aquienpz/asset-uploader-web":"0.1.0","@aquienpz/asset-uploader-expo":"0.1.0"},"peerDependencies":{"react":">=18","@aquienpz/asset-client":"0.1.0","@aquienpz/asset-uploader-web":"0.1.0","@aquienpz/asset-uploader-expo":"0.1.0"},"peerDependenciesMeta":{"react":{"optional":true},"@aquienpz/asset-uploader-web":{"optional":true},"@aquienpz/asset-uploader-expo":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.2.0_1778921390835_0.5035454593909303","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@aquienpz/sdk","version":"0.2.1","keywords":["aquienpz","asset-management","cdn","cloudinary-alternative","multi-tenant","r2","cloudflare"],"license":"UNLICENSED","_id":"@aquienpz/sdk@0.2.1","maintainers":[{"name":"espaciofuturo","email":"dev@espaciofuturo.io"}],"homepage":"https://github.com/espaciofuturoio/aquienpz/tree/main/packages/sdk","bugs":{"url":"https://github.com/espaciofuturoio/aquienpz/issues"},"dist":{"shasum":"e7bee91df54695005a77b963cc47a2e1f84fb07f","tarball":"https://registry.npmjs.org/@aquienpz/sdk/-/sdk-0.2.1.tgz","fileCount":6,"integrity":"sha512-PiFhXscrxiTDWGKhVhBaEBpW+0KMSj9zzeVXo8+zdc2lbSwrgfsGQFfJdXoflB3NeAc35pIQ/ScLGgyrkJwAdg==","signatures":[{"sig":"MEUCIDoWuHNMPYFyA89FVg1ph0BtA9IJTkmjrCJiZsivPAR8AiEA+TJ3JgG04xuKN4mQeSG4tTKvttdVISewnnMZTzb4T6Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49440},"type":"module","shasum":"e7bee91df54695005a77b963cc47a2e1f84fb07f","exports":{".":{"types":"./src/index.ts","import":"./src/index.ts"},"./web":{"types":"./src/web/index.ts","import":"./src/web/index.ts"},"./expo":{"types":"./src/expo/index.ts","import":"./src/expo/index.ts"},"./react":{"types":"./src/react/index.ts","import":"./src/react/index.ts"}},"private":false,"scripts":{"test:e2e":"bun test test/e2e","type-check":"tsc --noEmit"},"_npmUser":{"name":"espaciofuturo","email":"dev@espaciofuturo.io"},"_integrity":"sha512-PiFhXscrxiTDWGKhVhBaEBpW+0KMSj9zzeVXo8+zdc2lbSwrgfsGQFfJdXoflB3NeAc35pIQ/ScLGgyrkJwAdg==","repository":{"url":"https://github.com/espaciofuturoio/aquienpz.git","type":"git","directory":"packages/sdk"},"_npmVersion":"10.8.3","description":"Universal SDK for the aquienpz multi-tenant asset platform. Cloudinary-style asset management with slot bindings, presets, and Better Auth API keys.","directories":{},"_nodeVersion":"24.3.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","@types/bun":"^1.3.13","typescript":"^6.0.3","@types/react":"^19.0.0","@aquienpz/asset-client":"0.1.0","@aquienpz/asset-uploader-web":"0.1.0","@aquienpz/asset-uploader-expo":"0.1.0"},"peerDependencies":{"react":">=18","@aquienpz/asset-client":"0.1.0","@aquienpz/asset-uploader-web":"0.1.0","@aquienpz/asset-uploader-expo":"0.1.0"},"peerDependenciesMeta":{"react":{"optional":true},"@aquienpz/asset-uploader-web":{"optional":true},"@aquienpz/asset-uploader-expo":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.2.1_1778922024208_0.5537283762116911","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@aquienpz/sdk","version":"0.3.0","keywords":["aquienpz","asset-management","cdn","cloudinary-alternative","multi-tenant","r2","cloudflare"],"license":"UNLICENSED","_id":"@aquienpz/sdk@0.3.0","maintainers":[{"name":"espaciofuturo","email":"dev@espaciofuturo.io"}],"homepage":"https://github.com/espaciofuturoio/aquienpz/tree/main/packages/sdk","bugs":{"url":"https://github.com/espaciofuturoio/aquienpz/issues"},"dist":{"shasum":"665138724c9020bec575e3fd036f6064b91204d7","tarball":"https://registry.npmjs.org/@aquienpz/sdk/-/sdk-0.3.0.tgz","fileCount":6,"integrity":"sha512-rjUSxz72q/gahjQG3AKiHGlCJh9JQjszV/rmdE2P8Wn2WcMvBt8NI6tH2FPEpQD45PZKWeef8xg0LmNATzP2zA==","signatures":[{"sig":"MEUCIQDEpa9/oUoRGt7Ou6EE/iJXddRDYSGNkDbUV09vHKhe1AIgK89d7NLgv7XjiwByy2FUAyyEEUNRkS0z15X0qHx2FFw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":56009},"type":"module","shasum":"665138724c9020bec575e3fd036f6064b91204d7","exports":{".":{"types":"./src/index.ts","import":"./src/index.ts"},"./web":{"types":"./src/web/index.ts","import":"./src/web/index.ts"},"./expo":{"types":"./src/expo/index.ts","import":"./src/expo/index.ts"},"./react":{"types":"./src/react/index.ts","import":"./src/react/index.ts"}},"private":false,"scripts":{"test:e2e":"bun test test/e2e","type-check":"tsc --noEmit"},"_npmUser":{"name":"espaciofuturo","email":"dev@espaciofuturo.io"},"_integrity":"sha512-rjUSxz72q/gahjQG3AKiHGlCJh9JQjszV/rmdE2P8Wn2WcMvBt8NI6tH2FPEpQD45PZKWeef8xg0LmNATzP2zA==","repository":{"url":"https://github.com/espaciofuturoio/aquienpz.git","type":"git","directory":"packages/sdk"},"_npmVersion":"10.8.3","description":"Universal SDK for the aquienpz multi-tenant asset platform. Cloudinary-style asset management with slot bindings, presets, and Better Auth API keys.","directories":{},"_nodeVersion":"24.3.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","@types/bun":"^1.3.13","typescript":"^6.0.3","@types/react":"^19.0.0","@aquienpz/asset-client":"0.1.0","@aquienpz/asset-uploader-web":"0.1.0","@aquienpz/asset-uploader-expo":"0.1.0"},"peerDependencies":{"react":">=18","@aquienpz/asset-client":"0.1.0","@aquienpz/asset-uploader-web":"0.1.0","@aquienpz/asset-uploader-expo":"0.1.0"},"peerDependenciesMeta":{"react":{"optional":true},"@aquienpz/asset-uploader-web":{"optional":true},"@aquienpz/asset-uploader-expo":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.3.0_1778945143394_0.6767285524285771","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@aquienpz/sdk","version":"0.3.1","keywords":["aquienpz","asset-management","cdn","cloudinary-alternative","multi-tenant","r2","cloudflare"],"license":"UNLICENSED","_id":"@aquienpz/sdk@0.3.1","maintainers":[{"name":"espaciofuturo","email":"dev@espaciofuturo.io"}],"homepage":"https://github.com/espaciofuturoio/aquienpz/tree/main/packages/sdk","bugs":{"url":"https://github.com/espaciofuturoio/aquienpz/issues"},"dist":{"shasum":"843c36050e022729ea1ee6b39aefb37bbe94a716","tarball":"https://registry.npmjs.org/@aquienpz/sdk/-/sdk-0.3.1.tgz","fileCount":6,"integrity":"sha512-pj3W3th/Gzb6nA6w7vzDf56jWvc9lP4Epbg39BUnFjl97EBVu+WTH2WPhXM265wKCx6cATFmAxsKWz/s/1cvnA==","signatures":[{"sig":"MEYCIQCJXVCuiptMqZw3HVCIZ9YRVzSXHodv6O4DG/Wyn/DJpwIhAJ7n/VwF3Ii+8D5i8WlYofpyp/aGOiUX/gs7+U5ShdOb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":58320},"type":"module","shasum":"843c36050e022729ea1ee6b39aefb37bbe94a716","exports":{".":{"types":"./src/index.ts","import":"./src/index.ts"},"./web":{"types":"./src/web/index.ts","import":"./src/web/index.ts"},"./expo":{"types":"./src/expo/index.ts","import":"./src/expo/index.ts"},"./react":{"types":"./src/react/index.ts","import":"./src/react/index.ts"}},"private":false,"scripts":{"test:e2e":"bun test test/e2e","type-check":"tsc --noEmit"},"_npmUser":{"name":"espaciofuturo","email":"dev@espaciofuturo.io"},"_integrity":"sha512-pj3W3th/Gzb6nA6w7vzDf56jWvc9lP4Epbg39BUnFjl97EBVu+WTH2WPhXM265wKCx6cATFmAxsKWz/s/1cvnA==","repository":{"url":"https://github.com/espaciofuturoio/aquienpz.git","type":"git","directory":"packages/sdk"},"_npmVersion":"10.8.3","description":"Universal SDK for the aquienpz multi-tenant asset platform. Cloudinary-style asset management with slot bindings, presets, and Better Auth API keys.","directories":{},"_nodeVersion":"24.3.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","@types/bun":"^1.3.13","typescript":"^6.0.3","@types/react":"^19.0.0","@aquienpz/asset-client":"0.1.0","@aquienpz/asset-uploader-web":"0.1.0","@aquienpz/asset-uploader-expo":"0.1.0"},"peerDependencies":{"react":">=18","@aquienpz/asset-client":"0.1.0","@aquienpz/asset-uploader-web":"0.1.0","@aquienpz/asset-uploader-expo":"0.1.0"},"peerDependenciesMeta":{"react":{"optional":true},"@aquienpz/asset-uploader-web":{"optional":true},"@aquienpz/asset-uploader-expo":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.3.1_1778946114451_0.8443601678245136","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@aquienpz/sdk","version":"0.3.2","keywords":["aquienpz","asset-management","cdn","cloudinary-alternative","multi-tenant","r2","cloudflare"],"license":"UNLICENSED","_id":"@aquienpz/sdk@0.3.2","maintainers":[{"name":"espaciofuturo","email":"dev@espaciofuturo.io"}],"homepage":"https://github.com/espaciofuturoio/aquienpz/tree/main/packages/sdk","bugs":{"url":"https://github.com/espaciofuturoio/aquienpz/issues"},"dist":{"shasum":"ce71f55355ba8e42749fcdd7f32d528664e5fae0","tarball":"https://registry.npmjs.org/@aquienpz/sdk/-/sdk-0.3.2.tgz","fileCount":6,"integrity":"sha512-iNeQiyFhLJAlVY7IVOzxj04tvVVCU6NyQr4Ytp1D7wsMliKo76m34sg7IDKhQEpRtz8BTwIihFfkSOnmP9jgFg==","signatures":[{"sig":"MEYCIQCn8CmMMnHtALXP2fPtxu8ywlWwqhQ2QkugGNq0rUEzLgIhAKWyhwOLmkXHhAQNhYMp5VROjAUMzGIMJ18BU2cj3j2O","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":58320},"type":"module","shasum":"ce71f55355ba8e42749fcdd7f32d528664e5fae0","exports":{".":{"types":"./src/index.ts","import":"./src/index.ts"},"./web":{"types":"./src/web/index.ts","import":"./src/web/index.ts"},"./expo":{"types":"./src/expo/index.ts","import":"./src/expo/index.ts"},"./react":{"types":"./src/react/index.ts","import":"./src/react/index.ts"}},"private":false,"scripts":{"test:e2e":"bun test test/e2e","type-check":"tsc --noEmit"},"_npmUser":{"name":"espaciofuturo","email":"dev@espaciofuturo.io"},"_integrity":"sha512-iNeQiyFhLJAlVY7IVOzxj04tvVVCU6NyQr4Ytp1D7wsMliKo76m34sg7IDKhQEpRtz8BTwIihFfkSOnmP9jgFg==","repository":{"url":"https://github.com/espaciofuturoio/aquienpz.git","type":"git","directory":"packages/sdk"},"_npmVersion":"10.8.3","description":"Universal SDK for the aquienpz multi-tenant asset platform. Cloudinary-style asset management with slot bindings, presets, and Better Auth API keys.","directories":{},"_nodeVersion":"24.3.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","@types/bun":"^1.3.13","typescript":"^6.0.3","@types/react":"^19.0.0","@aquienpz/asset-client":"0.1.0","@aquienpz/asset-uploader-web":"0.1.0","@aquienpz/asset-uploader-expo":"0.1.0"},"peerDependencies":{"react":">=18","@aquienpz/asset-client":"0.1.0","@aquienpz/asset-uploader-web":"0.1.0","@aquienpz/asset-uploader-expo":"0.1.0"},"peerDependenciesMeta":{"react":{"optional":true},"@aquienpz/asset-uploader-web":{"optional":true},"@aquienpz/asset-uploader-expo":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.3.2_1778946185057_0.7586146678899666","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@aquienpz/sdk","version":"0.5.0","keywords":["aquienpz","asset-management","cdn","cloudinary-alternative","multi-tenant","r2","cloudflare"],"license":"UNLICENSED","_id":"@aquienpz/sdk@0.5.0","maintainers":[{"name":"espaciofuturo","email":"dev@espaciofuturo.io"}],"homepage":"https://github.com/espaciofuturoio/aquienpz/tree/main/packages/sdk","bugs":{"url":"https://github.com/espaciofuturoio/aquienpz/issues"},"dist":{"shasum":"9cf1a3572a84d1e0243494b178c26cdc2e0802b1","tarball":"https://registry.npmjs.org/@aquienpz/sdk/-/sdk-0.5.0.tgz","fileCount":6,"integrity":"sha512-pcrBcwN4gDWRmS6c6V1YMqbayGNEF01SGMuCW9/6uTVi2UBWrmFKaER0l0zeF9fcNheOJVdtb3oajL19/aVP8w==","signatures":[{"sig":"MEQCIDwN2moXpv01q7Bdn1bTeugnHCoGrCY/aIYIbAxncwaWAiALKDpITHaY9+oIWcmKAWPkoge4GmXHR/tSKXea7Nztvw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74687},"type":"module","shasum":"9cf1a3572a84d1e0243494b178c26cdc2e0802b1","exports":{".":{"types":"./src/index.ts","import":"./src/index.ts"},"./web":{"types":"./src/web/index.ts","import":"./src/web/index.ts"},"./expo":{"types":"./src/expo/index.ts","import":"./src/expo/index.ts"},"./react":{"types":"./src/react/index.ts","import":"./src/react/index.ts"}},"private":false,"scripts":{"test:e2e":"bun test test/e2e","type-check":"tsc --noEmit"},"_npmUser":{"name":"espaciofuturo","email":"dev@espaciofuturo.io"},"_integrity":"sha512-pcrBcwN4gDWRmS6c6V1YMqbayGNEF01SGMuCW9/6uTVi2UBWrmFKaER0l0zeF9fcNheOJVdtb3oajL19/aVP8w==","repository":{"url":"https://github.com/espaciofuturoio/aquienpz.git","type":"git","directory":"packages/sdk"},"_npmVersion":"10.8.3","description":"Universal SDK for the aquienpz multi-tenant asset platform. Cloudinary-style asset management with slot bindings, presets, and Better Auth API keys.","directories":{},"_nodeVersion":"24.3.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","@types/bun":"^1.3.13","typescript":"^6.0.3","@types/react":"^19.0.0","@aquienpz/asset-client":"0.4.0","@aquienpz/asset-uploader-web":"0.1.0","@aquienpz/asset-uploader-expo":"0.1.0","@aquienpz/asset-compressor-web":"0.4.0"},"peerDependencies":{"react":">=18","@aquienpz/asset-client":"0.4.0","@aquienpz/asset-uploader-web":"0.1.0","@aquienpz/asset-uploader-expo":"0.1.0","@aquienpz/asset-compressor-web":"0.4.0"},"peerDependenciesMeta":{"react":{"optional":true},"@aquienpz/asset-uploader-web":{"optional":true},"@aquienpz/asset-uploader-expo":{"optional":true},"@aquienpz/asset-compressor-web":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.5.0_1778951324492_0.4893671122224299","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@aquienpz/sdk","version":"0.6.0","keywords":["aquienpz","asset-management","cdn","cloudinary-alternative","multi-tenant","r2","cloudflare"],"license":"UNLICENSED","_id":"@aquienpz/sdk@0.6.0","maintainers":[{"name":"espaciofuturo","email":"dev@espaciofuturo.io"}],"homepage":"https://github.com/espaciofuturoio/aquienpz/tree/main/packages/sdk","bugs":{"url":"https://github.com/espaciofuturoio/aquienpz/issues"},"dist":{"shasum":"cd2db12854d57735605ac355b77cd2c1e8c6642f","tarball":"https://registry.npmjs.org/@aquienpz/sdk/-/sdk-0.6.0.tgz","fileCount":6,"integrity":"sha512-2xKkDkFK520oE0vjIQ1eqdzAAKBcm9YUz3ffPD1wK13qYQX0oNgQUOVKCh+Xs5ZipPkpIWrM8gEQNnRuchAhWQ==","signatures":[{"sig":"MEUCIQCcQrtoipmkAqKEu6rYrIAken70iEIjn11auVJPg7NmRAIgZj/vPQXX5TTli3HWfdSKgs6LmTX9Edkq8Dq3qF8uDgo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":75973},"type":"module","shasum":"cd2db12854d57735605ac355b77cd2c1e8c6642f","exports":{".":{"types":"./src/index.ts","import":"./src/index.ts"},"./web":{"types":"./src/web/index.ts","import":"./src/web/index.ts"},"./expo":{"types":"./src/expo/index.ts","import":"./src/expo/index.ts"},"./react":{"types":"./src/react/index.ts","import":"./src/react/index.ts"}},"private":false,"scripts":{"test:e2e":"bun test test/e2e","type-check":"tsc --noEmit"},"_npmUser":{"name":"espaciofuturo","email":"dev@espaciofuturo.io"},"_integrity":"sha512-2xKkDkFK520oE0vjIQ1eqdzAAKBcm9YUz3ffPD1wK13qYQX0oNgQUOVKCh+Xs5ZipPkpIWrM8gEQNnRuchAhWQ==","repository":{"url":"https://github.com/espaciofuturoio/aquienpz.git","type":"git","directory":"packages/sdk"},"_npmVersion":"10.8.3","description":"Universal SDK for the aquienpz multi-tenant asset platform. Cloudinary-style asset management with slot bindings, presets, and Better Auth API keys.","directories":{},"_nodeVersion":"24.3.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","@types/bun":"^1.3.13","typescript":"^6.0.3","@types/react":"^19.0.0","@aquienpz/asset-client":"0.4.0","@aquienpz/asset-uploader-web":"0.1.0","@aquienpz/asset-uploader-expo":"0.1.0","@aquienpz/asset-compressor-web":"0.4.0"},"peerDependencies":{"react":">=18","@aquienpz/asset-client":"0.4.0","@aquienpz/asset-uploader-web":"0.1.0","@aquienpz/asset-uploader-expo":"0.1.0","@aquienpz/asset-compressor-web":"0.4.0"},"peerDependenciesMeta":{"react":{"optional":true},"@aquienpz/asset-uploader-web":{"optional":true},"@aquienpz/asset-uploader-expo":{"optional":true},"@aquienpz/asset-compressor-web":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.6.0_1778952793243_0.052454242478455315","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@aquienpz/sdk","version":"0.7.0","keywords":["aquienpz","asset-management","cdn","cloudinary-alternative","multi-tenant","r2","cloudflare"],"license":"UNLICENSED","_id":"@aquienpz/sdk@0.7.0","maintainers":[{"name":"espaciofuturo","email":"dev@espaciofuturo.io"}],"homepage":"https://github.com/espaciofuturoio/aquienpz/tree/main/packages/sdk","bugs":{"url":"https://github.com/espaciofuturoio/aquienpz/issues"},"dist":{"shasum":"f15d3bd5f2814d4f491caa407b0d33a66ac315a7","tarball":"https://registry.npmjs.org/@aquienpz/sdk/-/sdk-0.7.0.tgz","fileCount":6,"integrity":"sha512-ni0dAhKsB5mzKxx1k6f+7ckTPrR5qbtFW1WvopH5wxOqBDAwDuDXvhVbeleRevKWDfF015OV3eb0V4Hfk8WPiw==","signatures":[{"sig":"MEUCIQCDUs9wAPfbtqfx8DqfFpTotfUxw+tKF8IPyMhWSwFulAIgIcqw27JolPTzv5G6KUW06uitTdTQQ5KZHAC0BFaKcgg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80442},"type":"module","shasum":"f15d3bd5f2814d4f491caa407b0d33a66ac315a7","exports":{".":{"types":"./src/index.ts","import":"./src/index.ts"},"./web":{"types":"./src/web/index.ts","import":"./src/web/index.ts"},"./expo":{"types":"./src/expo/index.ts","import":"./src/expo/index.ts"},"./react":{"types":"./src/react/index.ts","import":"./src/react/index.ts"}},"private":false,"scripts":{"test:e2e":"bun test test/e2e","type-check":"tsc --noEmit"},"_npmUser":{"name":"espaciofuturo","email":"dev@espaciofuturo.io"},"_integrity":"sha512-ni0dAhKsB5mzKxx1k6f+7ckTPrR5qbtFW1WvopH5wxOqBDAwDuDXvhVbeleRevKWDfF015OV3eb0V4Hfk8WPiw==","repository":{"url":"https://github.com/espaciofuturoio/aquienpz.git","type":"git","directory":"packages/sdk"},"_npmVersion":"10.8.3","description":"Universal SDK for the aquienpz multi-tenant asset platform. Cloudinary-style asset management with slot bindings, presets, and Better Auth API keys.","directories":{},"_nodeVersion":"24.3.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","@types/bun":"^1.3.13","typescript":"^6.0.3","@types/react":"^19.0.0","@aquienpz/asset-client":"0.4.0","@aquienpz/asset-uploader-web":"0.1.0","@aquienpz/asset-uploader-expo":"0.1.0","@aquienpz/asset-compressor-web":"0.4.0"},"peerDependencies":{"react":">=18","@aquienpz/asset-client":"0.4.0","@aquienpz/asset-uploader-web":"0.1.0","@aquienpz/asset-uploader-expo":"0.1.0","@aquienpz/asset-compressor-web":"0.4.0"},"peerDependenciesMeta":{"react":{"optional":true},"@aquienpz/asset-uploader-web":{"optional":true},"@aquienpz/asset-uploader-expo":{"optional":true},"@aquienpz/asset-compressor-web":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.7.0_1778959878507_0.6442173444011936","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@aquienpz/sdk","version":"0.8.0","keywords":["aquienpz","asset-management","cdn","cloudinary-alternative","multi-tenant","r2","cloudflare"],"license":"UNLICENSED","_id":"@aquienpz/sdk@0.8.0","maintainers":[{"name":"espaciofuturo","email":"dev@espaciofuturo.io"}],"homepage":"https://github.com/espaciofuturoio/aquienpz/tree/main/packages/sdk","bugs":{"url":"https://github.com/espaciofuturoio/aquienpz/issues"},"dist":{"shasum":"dfaa090e7d364475c405d772e0a8f905fe9339c3","tarball":"https://registry.npmjs.org/@aquienpz/sdk/-/sdk-0.8.0.tgz","fileCount":6,"integrity":"sha512-zar2kuETxrP5czfEcnhL1bGPGx6PM9kPdg+ueQYIU6gQFta7QSc0Z6r1fqDMm0HBazVeyxhtrKB6omKxHPDp2w==","signatures":[{"sig":"MEYCIQC3KPIZo8OddKlDngV4lF6w4nsGuc5rDD7NjuSZagCC1QIhAPOfbheM0dWmwfJv1mkM9i0dQy8oZEyJOZrCKIIxmjya","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":82414},"type":"module","shasum":"dfaa090e7d364475c405d772e0a8f905fe9339c3","exports":{".":{"types":"./src/index.ts","import":"./src/index.ts"},"./web":{"types":"./src/web/index.ts","import":"./src/web/index.ts"},"./expo":{"types":"./src/expo/index.ts","import":"./src/expo/index.ts"},"./react":{"types":"./src/react/index.ts","import":"./src/react/index.ts"}},"private":false,"scripts":{"test:e2e":"bun test test/e2e","type-check":"tsc --noEmit"},"_npmUser":{"name":"espaciofuturo","email":"dev@espaciofuturo.io"},"_integrity":"sha512-zar2kuETxrP5czfEcnhL1bGPGx6PM9kPdg+ueQYIU6gQFta7QSc0Z6r1fqDMm0HBazVeyxhtrKB6omKxHPDp2w==","repository":{"url":"https://github.com/espaciofuturoio/aquienpz.git","type":"git","directory":"packages/sdk"},"_npmVersion":"10.8.3","description":"Universal SDK for the aquienpz multi-tenant asset platform. Cloudinary-style asset management with slot bindings, presets, and Better Auth API keys.","directories":{},"_nodeVersion":"24.3.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","@types/bun":"^1.3.13","typescript":"^6.0.3","@types/react":"^19.0.0","@aquienpz/asset-client":"0.5.0","@aquienpz/asset-uploader-web":"0.1.0","@aquienpz/asset-uploader-expo":"0.1.0","@aquienpz/asset-compressor-web":"0.4.0"},"peerDependencies":{"react":">=18","@aquienpz/asset-client":"0.5.0","@aquienpz/asset-uploader-web":"0.1.0","@aquienpz/asset-uploader-expo":"0.1.0","@aquienpz/asset-compressor-web":"0.4.0"},"peerDependenciesMeta":{"react":{"optional":true},"@aquienpz/asset-uploader-web":{"optional":true},"@aquienpz/asset-uploader-expo":{"optional":true},"@aquienpz/asset-compressor-web":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.8.0_1778970267441_0.6459366614196993","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@aquienpz/sdk","version":"0.9.0","keywords":["aquienpz","asset-management","cdn","cloudinary-alternative","multi-tenant","r2","cloudflare"],"license":"UNLICENSED","_id":"@aquienpz/sdk@0.9.0","maintainers":[{"name":"espaciofuturo","email":"dev@espaciofuturo.io"}],"homepage":"https://github.com/espaciofuturoio/aquienpz/tree/main/packages/sdk","bugs":{"url":"https://github.com/espaciofuturoio/aquienpz/issues"},"dist":{"shasum":"07da40df66ec6d03730ddba35a73c62da0f3d4f0","tarball":"https://registry.npmjs.org/@aquienpz/sdk/-/sdk-0.9.0.tgz","fileCount":6,"integrity":"sha512-L3ahfXIeQpmPPVIflExHY4iauJadyZNWBDGxF38/o3DSNkRYFvnAMN109lo501Ua66ltxu5K+wiMhM6UkibNEQ==","signatures":[{"sig":"MEQCIFhefnMsFxdmgHWtJwV9d8QJkeo/XludbwIEnaFMu3M4AiAPUz7k3VMYhaYmhlUTXqUZ5yG6MtH/3minZhn6WbG3eg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":85559},"type":"module","shasum":"07da40df66ec6d03730ddba35a73c62da0f3d4f0","exports":{".":{"types":"./src/index.ts","import":"./src/index.ts"},"./web":{"types":"./src/web/index.ts","import":"./src/web/index.ts"},"./expo":{"types":"./src/expo/index.ts","import":"./src/expo/index.ts"},"./react":{"types":"./src/react/index.ts","import":"./src/react/index.ts"}},"private":false,"scripts":{"test:e2e":"bun test test/e2e","type-check":"tsc --noEmit"},"_npmUser":{"name":"espaciofuturo","email":"dev@espaciofuturo.io"},"_integrity":"sha512-L3ahfXIeQpmPPVIflExHY4iauJadyZNWBDGxF38/o3DSNkRYFvnAMN109lo501Ua66ltxu5K+wiMhM6UkibNEQ==","repository":{"url":"https://github.com/espaciofuturoio/aquienpz.git","type":"git","directory":"packages/sdk"},"_npmVersion":"10.8.3","description":"Universal SDK for the aquienpz multi-tenant asset platform. Cloudinary-style asset management with slot bindings, presets, and Better Auth API keys.","directories":{},"_nodeVersion":"24.3.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","@types/bun":"^1.3.13","typescript":"^6.0.3","@types/react":"^19.0.0","@aquienpz/asset-client":"0.5.0","@aquienpz/asset-uploader-web":"0.1.0","@aquienpz/asset-uploader-expo":"0.1.0","@aquienpz/asset-compressor-web":"0.4.0"},"peerDependencies":{"react":">=18","@aquienpz/asset-client":"0.5.0","@aquienpz/asset-uploader-web":"0.1.0","@aquienpz/asset-uploader-expo":"0.1.0","@aquienpz/asset-compressor-web":"0.4.0"},"peerDependenciesMeta":{"react":{"optional":true},"@aquienpz/asset-uploader-web":{"optional":true},"@aquienpz/asset-uploader-expo":{"optional":true},"@aquienpz/asset-compressor-web":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.9.0_1778971850683_0.820404827806293","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"@aquienpz/sdk","version":"0.10.0","keywords":["aquienpz","asset-management","cdn","cloudinary-alternative","multi-tenant","r2","cloudflare"],"license":"UNLICENSED","_id":"@aquienpz/sdk@0.10.0","maintainers":[{"name":"espaciofuturo","email":"dev@espaciofuturo.io"}],"homepage":"https://github.com/espaciofuturoio/aquienpz/tree/main/packages/sdk","bugs":{"url":"https://github.com/espaciofuturoio/aquienpz/issues"},"dist":{"shasum":"c6d4456a048bc727da2727672902345e5a72f989","tarball":"https://registry.npmjs.org/@aquienpz/sdk/-/sdk-0.10.0.tgz","fileCount":6,"integrity":"sha512-dhv+Qgax36TtnsVJ7hj4dvjaZCmFb2A9Tt22CRXkMnukgoCP04ItAsfAq3ZHyYwIWTrT5Dvjxrl8ifcnZLGNBw==","signatures":[{"sig":"MEUCIQCAwsQ+lvB7+QxceXnOx5utOIdkot24U9bMVdQitXn63gIgatI8swkZ4fq8JtPL95IXV+60Ac8JOADlzCCQb2c2d84=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":87949},"type":"module","shasum":"c6d4456a048bc727da2727672902345e5a72f989","exports":{".":{"types":"./src/index.ts","import":"./src/index.ts"},"./web":{"types":"./src/web/index.ts","import":"./src/web/index.ts"},"./expo":{"types":"./src/expo/index.ts","import":"./src/expo/index.ts"},"./react":{"types":"./src/react/index.ts","import":"./src/react/index.ts"}},"private":false,"scripts":{"test:e2e":"bun test test/e2e","type-check":"tsc --noEmit"},"_npmUser":{"name":"espaciofuturo","email":"dev@espaciofuturo.io"},"_integrity":"sha512-dhv+Qgax36TtnsVJ7hj4dvjaZCmFb2A9Tt22CRXkMnukgoCP04ItAsfAq3ZHyYwIWTrT5Dvjxrl8ifcnZLGNBw==","repository":{"url":"https://github.com/espaciofuturoio/aquienpz.git","type":"git","directory":"packages/sdk"},"_npmVersion":"10.8.3","description":"Universal SDK for the aquienpz multi-tenant asset platform. Cloudinary-style asset management with slot bindings, presets, and Better Auth API keys.","directories":{},"_nodeVersion":"24.3.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","@types/bun":"^1.3.13","typescript":"^6.0.3","@types/react":"^19.0.0","@aquienpz/asset-client":"0.5.0","@aquienpz/asset-uploader-web":"0.1.0","@aquienpz/asset-uploader-expo":"0.1.0","@aquienpz/asset-compressor-web":"0.4.0"},"peerDependencies":{"react":">=18","@aquienpz/asset-client":"0.5.0","@aquienpz/asset-uploader-web":"0.1.0","@aquienpz/asset-uploader-expo":"0.1.0","@aquienpz/asset-compressor-web":"0.4.0"},"peerDependenciesMeta":{"react":{"optional":true},"@aquienpz/asset-uploader-web":{"optional":true},"@aquienpz/asset-uploader-expo":{"optional":true},"@aquienpz/asset-compressor-web":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.10.0_1778974939121_0.7406362767888033","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"@aquienpz/sdk","version":"0.11.0","keywords":["aquienpz","asset-management","cdn","cloudinary-alternative","multi-tenant","r2","cloudflare"],"license":"UNLICENSED","_id":"@aquienpz/sdk@0.11.0","maintainers":[{"name":"espaciofuturo","email":"dev@espaciofuturo.io"}],"homepage":"https://github.com/espaciofuturoio/aquienpz/tree/main/packages/sdk","bugs":{"url":"https://github.com/espaciofuturoio/aquienpz/issues"},"dist":{"shasum":"929f27c495b1c0bee26f272d551e04b17609d910","tarball":"https://registry.npmjs.org/@aquienpz/sdk/-/sdk-0.11.0.tgz","fileCount":7,"integrity":"sha512-AOIL5r+mtxstM/wknrBoPnxs/sjrHfpiv4dOQ+v9Z6w2U2d/C3e0FpdB2g8+BFzss7Z/lykmEvcRBoNOzLqLhA==","signatures":[{"sig":"MEUCIDUyklw9Qo0aL5LXsaDusCJpwaiT3gmuPxwbwzLGZx4CAiEAzZWIGHFIB3LeRfP/P284O1Fv0Yv90UPxP1AR+ETnWBY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":90601},"type":"module","shasum":"929f27c495b1c0bee26f272d551e04b17609d910","exports":{".":{"types":"./src/index.ts","import":"./src/index.ts"},"./web":{"types":"./src/web/index.ts","import":"./src/web/index.ts"},"./expo":{"types":"./src/expo/index.ts","import":"./src/expo/index.ts"},"./react":{"types":"./src/react/index.ts","import":"./src/react/index.ts"},"./native":{"types":"./src/native/index.ts","import":"./src/native/index.ts"}},"private":false,"scripts":{"test:e2e":"bun test test/e2e","type-check":"tsc --noEmit"},"_npmUser":{"name":"espaciofuturo","email":"dev@espaciofuturo.io"},"_integrity":"sha512-AOIL5r+mtxstM/wknrBoPnxs/sjrHfpiv4dOQ+v9Z6w2U2d/C3e0FpdB2g8+BFzss7Z/lykmEvcRBoNOzLqLhA==","repository":{"url":"https://github.com/espaciofuturoio/aquienpz.git","type":"git","directory":"packages/sdk"},"_npmVersion":"10.8.3","description":"Universal SDK for the aquienpz multi-tenant asset platform. Cloudinary-style asset management with slot bindings, presets, and Better Auth API keys.","directories":{},"_nodeVersion":"24.3.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","@types/bun":"^1.3.13","typescript":"^6.0.3","@types/react":"^19.0.0","@aquienpz/asset-client":"0.8.0","@aquienpz/asset-uploader-web":"0.1.0","@aquienpz/asset-uploader-expo":"0.1.0","@aquienpz/asset-compressor-web":"0.4.0","@aquienpz/asset-compressor-native":"0.1.0"},"peerDependencies":{"react":">=18","@aquienpz/asset-client":"0.8.0","@aquienpz/asset-uploader-web":"0.1.0","@aquienpz/asset-uploader-expo":"0.1.0","@aquienpz/asset-compressor-web":"0.4.0","@aquienpz/asset-compressor-native":"0.1.0"},"peerDependenciesMeta":{"react":{"optional":true},"@aquienpz/asset-uploader-web":{"optional":true},"@aquienpz/asset-uploader-expo":{"optional":true},"@aquienpz/asset-compressor-web":{"optional":true},"@aquienpz/asset-compressor-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.11.0_1778982632316_0.5693774205543616","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"@aquienpz/sdk","version":"0.13.0","keywords":["aquienpz","asset-management","cdn","cloudinary-alternative","multi-tenant","r2","cloudflare"],"license":"UNLICENSED","_id":"@aquienpz/sdk@0.13.0","maintainers":[{"name":"espaciofuturo","email":"dev@espaciofuturo.io"}],"homepage":"https://github.com/espaciofuturoio/aquienpz/tree/main/packages/sdk","bugs":{"url":"https://github.com/espaciofuturoio/aquienpz/issues"},"dist":{"shasum":"c4ef96d9d4126539641017d64498feb206ce0c14","tarball":"https://registry.npmjs.org/@aquienpz/sdk/-/sdk-0.13.0.tgz","fileCount":8,"integrity":"sha512-TVjwOMco+M/iKH9H6r2oxD81XwNMebEkPHfVaMu2i1RQfg2Vl+k4SQwzfultsRMrQaGN5wK4IGZCh1Ut/E3A9A==","signatures":[{"sig":"MEUCIQDSyqg5+jh8xdnqpEOwyP8X+EWAyCiqCxlP59b48uyVIwIgWuTWOGHr16tmhUddAvMZ4IE5GLsyE1wR2HrIYpYCvF4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":97510},"type":"module","shasum":"c4ef96d9d4126539641017d64498feb206ce0c14","exports":{".":{"types":"./src/index.ts","import":"./src/index.ts"},"./web":{"types":"./src/web/index.ts","import":"./src/web/index.ts"},"./expo":{"types":"./src/expo/index.ts","import":"./src/expo/index.ts"},"./react":{"types":"./src/react/index.ts","import":"./src/react/index.ts"},"./native":{"types":"./src/native/index.ts","import":"./src/native/index.ts"},"./server":{"types":"./src/server/index.ts","import":"./src/server/index.ts"}},"private":false,"scripts":{"test:e2e":"bun test test/e2e","type-check":"tsc --noEmit"},"_npmUser":{"name":"espaciofuturo","email":"dev@espaciofuturo.io"},"_integrity":"sha512-TVjwOMco+M/iKH9H6r2oxD81XwNMebEkPHfVaMu2i1RQfg2Vl+k4SQwzfultsRMrQaGN5wK4IGZCh1Ut/E3A9A==","repository":{"url":"https://github.com/espaciofuturoio/aquienpz.git","type":"git","directory":"packages/sdk"},"_npmVersion":"10.8.3","description":"Universal SDK for the aquienpz multi-tenant asset platform. Cloudinary-style asset management with slot bindings, presets, and Better Auth API keys.","directories":{},"_nodeVersion":"24.3.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","@types/bun":"^1.3.13","typescript":"^6.0.3","@types/react":"^19.0.0","@aquienpz/asset-client":"0.10.0","@aquienpz/asset-uploader-web":"0.1.0","@aquienpz/asset-uploader-expo":"0.1.0","@aquienpz/asset-compressor-web":"0.4.0","@aquienpz/asset-compressor-native":"0.1.0"},"peerDependencies":{"react":">=18","@aquienpz/asset-client":"0.10.0","@aquienpz/asset-uploader-web":"0.1.0","@aquienpz/asset-uploader-expo":"0.1.0","@aquienpz/asset-compressor-web":"0.4.0","@aquienpz/asset-compressor-native":"0.1.0"},"peerDependenciesMeta":{"react":{"optional":true},"@aquienpz/asset-uploader-web":{"optional":true},"@aquienpz/asset-uploader-expo":{"optional":true},"@aquienpz/asset-compressor-web":{"optional":true},"@aquienpz/asset-compressor-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.13.0_1778989710778_0.5582893293846591","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"@aquienpz/sdk","version":"0.14.0","keywords":["aquienpz","asset-management","cdn","cloudinary-alternative","multi-tenant","r2","cloudflare"],"license":"UNLICENSED","_id":"@aquienpz/sdk@0.14.0","maintainers":[{"name":"espaciofuturo","email":"dev@espaciofuturo.io"}],"homepage":"https://github.com/espaciofuturoio/aquienpz/tree/main/packages/sdk","bugs":{"url":"https://github.com/espaciofuturoio/aquienpz/issues"},"dist":{"shasum":"e979da969b4ef1f7ca3e447600c64625501629a6","tarball":"https://registry.npmjs.org/@aquienpz/sdk/-/sdk-0.14.0.tgz","fileCount":8,"integrity":"sha512-DO0P2MdrbVZ3cVrzpsVbBGqo3rY98/3xBXasA+EzXQXc8iU/okBFH0nYUP58qxvOdtvMDrA5Uiv9to2dfmqFAQ==","signatures":[{"sig":"MEQCIAUd71PXrKRWmTj8y3/IMendAl/WWk3VJy0ZCFIRHetpAiBqa+fAhd5tcMp6OJHqKin7PsnA7bSos+z+6olU+iiD6Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98376},"type":"module","shasum":"e979da969b4ef1f7ca3e447600c64625501629a6","exports":{".":{"types":"./src/index.ts","import":"./src/index.ts"},"./web":{"types":"./src/web/index.ts","import":"./src/web/index.ts"},"./expo":{"types":"./src/expo/index.ts","import":"./src/expo/index.ts"},"./react":{"types":"./src/react/index.ts","import":"./src/react/index.ts"},"./native":{"types":"./src/native/index.ts","import":"./src/native/index.ts"},"./server":{"types":"./src/server/index.ts","import":"./src/server/index.ts"}},"private":false,"scripts":{"test:e2e":"bun test test/e2e","type-check":"tsc --noEmit"},"_npmUser":{"name":"espaciofuturo","email":"dev@espaciofuturo.io"},"_integrity":"sha512-DO0P2MdrbVZ3cVrzpsVbBGqo3rY98/3xBXasA+EzXQXc8iU/okBFH0nYUP58qxvOdtvMDrA5Uiv9to2dfmqFAQ==","repository":{"url":"https://github.com/espaciofuturoio/aquienpz.git","type":"git","directory":"packages/sdk"},"_npmVersion":"10.8.3","description":"Universal SDK for the aquienpz multi-tenant asset platform. Cloudinary-style asset management with slot bindings, presets, and Better Auth API keys.","directories":{},"_nodeVersion":"24.3.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","@types/bun":"^1.3.13","typescript":"^6.0.3","@types/react":"^19.0.0","@aquienpz/asset-client":"0.10.0","@aquienpz/asset-uploader-web":"0.1.0","@aquienpz/asset-uploader-expo":"0.1.0","@aquienpz/asset-compressor-web":"0.4.0","@aquienpz/asset-compressor-native":"0.1.0"},"peerDependencies":{"react":">=18","@aquienpz/asset-client":"0.10.0","@aquienpz/asset-uploader-web":"0.1.0","@aquienpz/asset-uploader-expo":"0.1.0","@aquienpz/asset-compressor-web":"0.4.0","@aquienpz/asset-compressor-native":"0.1.0"},"peerDependenciesMeta":{"react":{"optional":true},"@aquienpz/asset-uploader-web":{"optional":true},"@aquienpz/asset-uploader-expo":{"optional":true},"@aquienpz/asset-compressor-web":{"optional":true},"@aquienpz/asset-compressor-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.14.0_1779000600127_0.8208120638440772","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"@aquienpz/sdk","version":"0.15.0","keywords":["aquienpz","asset-management","cdn","cloudinary-alternative","multi-tenant","r2","cloudflare"],"license":"UNLICENSED","_id":"@aquienpz/sdk@0.15.0","maintainers":[{"name":"espaciofuturo","email":"dev@espaciofuturo.io"}],"homepage":"https://github.com/espaciofuturoio/aquienpz/tree/main/packages/sdk","bugs":{"url":"https://github.com/espaciofuturoio/aquienpz/issues"},"dist":{"shasum":"cdc9c44e3c7bbd700f04aa2e864f4d82a39101b8","tarball":"https://registry.npmjs.org/@aquienpz/sdk/-/sdk-0.15.0.tgz","fileCount":8,"integrity":"sha512-l4S9P5tsfMgv7fjaUFyTk0eHJCWisXIEXiBBUZ2Otr1ijb9zGlZNg12hlxcEmi1i7AC3t6IEMSY0meTqM+PXYA==","signatures":[{"sig":"MEUCIQDCC0ZnSVwRDlOI+JWq4wXPI302oC5jyX68BrkG0q73zAIgJzncWdN/YBugKfRkNtKxXYfxfrAgtciWW2xTVhntFMQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":104884},"type":"module","shasum":"cdc9c44e3c7bbd700f04aa2e864f4d82a39101b8","exports":{".":{"types":"./src/index.ts","import":"./src/index.ts"},"./web":{"types":"./src/web/index.ts","import":"./src/web/index.ts"},"./expo":{"types":"./src/expo/index.ts","import":"./src/expo/index.ts"},"./react":{"types":"./src/react/index.ts","import":"./src/react/index.ts"},"./native":{"types":"./src/native/index.ts","import":"./src/native/index.ts"},"./server":{"types":"./src/server/index.ts","import":"./src/server/index.ts"}},"private":false,"scripts":{"test":"bun test test/assets-gaps.test.ts","test:e2e":"bun test test/e2e","type-check":"tsc --noEmit"},"_npmUser":{"name":"espaciofuturo","email":"dev@espaciofuturo.io"},"_integrity":"sha512-l4S9P5tsfMgv7fjaUFyTk0eHJCWisXIEXiBBUZ2Otr1ijb9zGlZNg12hlxcEmi1i7AC3t6IEMSY0meTqM+PXYA==","repository":{"url":"https://github.com/espaciofuturoio/aquienpz.git","type":"git","directory":"packages/sdk"},"_npmVersion":"10.8.3","description":"Universal SDK for the aquienpz multi-tenant asset platform. Cloudinary-style asset management with slot bindings, presets, and Better Auth API keys.","directories":{},"_nodeVersion":"24.3.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.0.0","@types/bun":"^1.3.13","typescript":"^6.0.3","@types/react":"^19.0.0","@aquienpz/asset-client":"0.10.0","@aquienpz/asset-uploader-web":"0.1.0","@aquienpz/asset-uploader-expo":"0.1.0","@aquienpz/asset-compressor-web":"0.4.0","@aquienpz/asset-compressor-native":"0.1.0"},"peerDependencies":{"react":">=18","@aquienpz/asset-client":"0.10.0","@aquienpz/asset-uploader-web":"0.1.0","@aquienpz/asset-uploader-expo":"0.1.0","@aquienpz/asset-compressor-web":"0.4.0","@aquienpz/asset-compressor-native":"0.1.0"},"peerDependenciesMeta":{"react":{"optional":true},"@aquienpz/asset-uploader-web":{"optional":true},"@aquienpz/asset-uploader-expo":{"optional":true},"@aquienpz/asset-compressor-web":{"optional":true},"@aquienpz/asset-compressor-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.15.0_1779001284539_0.0986802144550889","host":"s3://npm-registry-packages-npm-production"}},"0.16.0":{"name":"@aquienpz/sdk","version":"0.16.0","keywords":["aquienpz","asset-management","cdn","cloudinary-alternative","multi-tenant","r2","cloudflare"],"license":"UNLICENSED","_id":"@aquienpz/sdk@0.16.0","maintainers":[{"name":"espaciofuturo","email":"dev@espaciofuturo.io"}],"homepage":"https://github.com/espaciofuturoio/aquienpz/tree/main/packages/sdk","bugs":{"url":"https://github.com/espaciofuturoio/aquienpz/issues"},"dist":{"shasum":"3a36620e1a06ebf4b44ab8c44ce5c077d6229e5e","tarball":"https://registry.npmjs.org/@aquienpz/sdk/-/sdk-0.16.0.tgz","fileCount":26,"integrity":"sha512-3eigPPy15PhhCwcniUcl6VNpsSuBDOD0hH2mdAL0GSGSd+1H0fu80/n3eLBFALvIfnT7ZExSi3mRhzF536aX+w==","signatures":[{"sig":"MEYCIQDUDlKWSD+cm8+i2vUgzlITqvMjW/VaIkGPruseaFjjigIhAPrPQpaLRfpv1lXRCQXHwjuo6+/wJctOOJ+/QFH5O9/K","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":463497},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","shasum":"3a36620e1a06ebf4b44ab8c44ce5c077d6229e5e","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./web":{"import":{"types":"./dist/web.d.ts","default":"./dist/web.js"}},"./expo":{"import":{"types":"./dist/expo.d.ts","default":"./dist/expo.js"}},"./react":{"import":{"types":"./dist/react.d.ts","default":"./dist/react.js"}},"./native":{"import":{"types":"./dist/native.d.ts","default":"./dist/native.js"}},"./server":{"import":{"types":"./dist/server.d.ts","default":"./dist/server.js"}}},"private":false,"scripts":{"test":"bun test test/assets-gaps.test.ts","build":"tsup","test:e2e":"bun test test/e2e","type-check":"tsc --noEmit","build:watch":"tsup --watch","prepublishOnly":"bun run build"},"_npmUser":{"name":"espaciofuturo","email":"dev@espaciofuturo.io"},"_integrity":"sha512-3eigPPy15PhhCwcniUcl6VNpsSuBDOD0hH2mdAL0GSGSd+1H0fu80/n3eLBFALvIfnT7ZExSi3mRhzF536aX+w==","repository":{"url":"https://github.com/espaciofuturoio/aquienpz.git","type":"git","directory":"packages/sdk"},"_npmVersion":"10.8.3","description":"Universal SDK for the aquienpz multi-tenant asset platform. Cloudinary-style asset management with slot bindings, presets, and Better Auth API keys.","directories":{},"sideEffects":false,"_nodeVersion":"24.3.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","react":"^19.0.0","@types/bun":"^1.3.13","typescript":"^6.0.3","@types/react":"^19.0.0","@aquienpz/asset-client":"0.12.0","@aquienpz/asset-uploader-web":"0.1.0","@aquienpz/asset-uploader-expo":"0.1.0","@aquienpz/asset-compressor-web":"0.5.0","@aquienpz/asset-compressor-native":"0.2.0"},"peerDependencies":{"react":">=18","@aquienpz/asset-client":"0.12.0","@aquienpz/asset-uploader-web":"0.1.0","@aquienpz/asset-uploader-expo":"0.1.0","@aquienpz/asset-compressor-web":"0.5.0","@aquienpz/asset-compressor-native":"0.2.0"},"peerDependenciesMeta":{"react":{"optional":true},"@aquienpz/asset-uploader-web":{"optional":true},"@aquienpz/asset-uploader-expo":{"optional":true},"@aquienpz/asset-compressor-web":{"optional":true},"@aquienpz/asset-compressor-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.16.0_1779002079354_0.07190253447658956","host":"s3://npm-registry-packages-npm-production"}},"0.16.1":{"name":"@aquienpz/sdk","version":"0.16.1","keywords":["aquienpz","asset-management","cdn","cloudinary-alternative","multi-tenant","r2","cloudflare"],"license":"UNLICENSED","_id":"@aquienpz/sdk@0.16.1","maintainers":[{"name":"espaciofuturo","email":"dev@espaciofuturo.io"}],"homepage":"https://github.com/espaciofuturoio/aquienpz/tree/main/packages/sdk","bugs":{"url":"https://github.com/espaciofuturoio/aquienpz/issues"},"dist":{"shasum":"ff3e889440cb7d5f611ccab4e7335fcde80b60b9","tarball":"https://registry.npmjs.org/@aquienpz/sdk/-/sdk-0.16.1.tgz","fileCount":26,"integrity":"sha512-RfyumAsjshoTeMtznKipHuWtfAxVHz5c3L4o6ksnCKkrypIQl4j4arAmj113UbmS0l6geAOsPu3e5eJuH1ieAA==","signatures":[{"sig":"MEUCIQDgMmA3AH8O5hUnFNQdNqUrYHklyJ8uMpLXqXWN0QQvkAIgcwBHB9bKwNHVvbjBsuuOYaPbrn+jGBgM4dUQdE8/QGU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":421767},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","shasum":"ff3e889440cb7d5f611ccab4e7335fcde80b60b9","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./web":{"import":{"types":"./dist/web.d.ts","default":"./dist/web.js"}},"./expo":{"import":{"types":"./dist/expo.d.ts","default":"./dist/expo.js"}},"./react":{"import":{"types":"./dist/react.d.ts","default":"./dist/react.js"}},"./native":{"import":{"types":"./dist/native.d.ts","default":"./dist/native.js"}},"./server":{"import":{"types":"./dist/server.d.ts","default":"./dist/server.js"}}},"private":false,"scripts":{"test":"bun test test/assets-gaps.test.ts","build":"tsup","test:e2e":"bun test test/e2e","type-check":"tsc --noEmit","build:watch":"tsup --watch","prepublishOnly":"bun run build"},"_npmUser":{"name":"espaciofuturo","email":"dev@espaciofuturo.io"},"_integrity":"sha512-RfyumAsjshoTeMtznKipHuWtfAxVHz5c3L4o6ksnCKkrypIQl4j4arAmj113UbmS0l6geAOsPu3e5eJuH1ieAA==","repository":{"url":"https://github.com/espaciofuturoio/aquienpz.git","type":"git","directory":"packages/sdk"},"_npmVersion":"10.8.3","description":"Universal SDK for the aquienpz multi-tenant asset platform. Cloudinary-style asset management with slot bindings, presets, and Better Auth API keys.","directories":{},"sideEffects":false,"_nodeVersion":"24.3.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","react":"^19.0.0","@types/bun":"^1.3.13","typescript":"^6.0.3","@types/react":"^19.0.0","@aquienpz/asset-client":"0.12.0","@aquienpz/asset-uploader-web":"0.1.0","@aquienpz/asset-uploader-expo":"0.1.0","@aquienpz/asset-compressor-web":"0.5.0","@aquienpz/asset-compressor-native":"0.2.0"},"peerDependencies":{"react":">=18","@aquienpz/asset-client":"0.12.0","@aquienpz/asset-uploader-web":"0.1.0","@aquienpz/asset-uploader-expo":"0.1.0","@aquienpz/asset-compressor-web":"0.5.0","@aquienpz/asset-compressor-native":"0.2.0"},"peerDependenciesMeta":{"react":{"optional":true},"@aquienpz/asset-uploader-web":{"optional":true},"@aquienpz/asset-uploader-expo":{"optional":true},"@aquienpz/asset-compressor-web":{"optional":true},"@aquienpz/asset-compressor-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.16.1_1779002523487_0.47567423642570517","host":"s3://npm-registry-packages-npm-production"}},"0.16.2":{"name":"@aquienpz/sdk","version":"0.16.2","keywords":["aquienpz","asset-management","cdn","cloudinary-alternative","multi-tenant","r2","cloudflare"],"license":"UNLICENSED","_id":"@aquienpz/sdk@0.16.2","maintainers":[{"name":"espaciofuturo","email":"dev@espaciofuturo.io"}],"homepage":"https://github.com/espaciofuturoio/aquienpz/tree/main/packages/sdk","bugs":{"url":"https://github.com/espaciofuturoio/aquienpz/issues"},"dist":{"shasum":"fc508b0ddd4b6b1b128ed138189983818e427ef3","tarball":"https://registry.npmjs.org/@aquienpz/sdk/-/sdk-0.16.2.tgz","fileCount":26,"integrity":"sha512-oLSP/hr7S1GC7rD4X/ZNHXpHHv2iCEUTGLDJL6orQPGHRujIe4Pkh9qZI6ehMyCtMqfBxHigVc2xXn3IB441gw==","signatures":[{"sig":"MEQCID0ViAc9NONma2GG5RdLgRQtA8K3cjlQb/kPrASccp2yAiBIodFS4S/c3cI8U2/zejXFpoRR2aO/2eZtS0u1QCmi1Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":424601},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","shasum":"fc508b0ddd4b6b1b128ed138189983818e427ef3","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./web":{"import":{"types":"./dist/web.d.ts","default":"./dist/web.js"}},"./expo":{"import":{"types":"./dist/expo.d.ts","default":"./dist/expo.js"}},"./react":{"import":{"types":"./dist/react.d.ts","default":"./dist/react.js"}},"./native":{"import":{"types":"./dist/native.d.ts","default":"./dist/native.js"}},"./server":{"import":{"types":"./dist/server.d.ts","default":"./dist/server.js"}}},"private":false,"scripts":{"test":"bun test test/assets-gaps.test.ts","build":"tsup","test:e2e":"bun test test/e2e","type-check":"tsc --noEmit","build:watch":"tsup --watch","prepublishOnly":"bun run build"},"_npmUser":{"name":"espaciofuturo","email":"dev@espaciofuturo.io"},"_integrity":"sha512-oLSP/hr7S1GC7rD4X/ZNHXpHHv2iCEUTGLDJL6orQPGHRujIe4Pkh9qZI6ehMyCtMqfBxHigVc2xXn3IB441gw==","repository":{"url":"https://github.com/espaciofuturoio/aquienpz.git","type":"git","directory":"packages/sdk"},"_npmVersion":"10.8.3","description":"Universal SDK for the aquienpz multi-tenant asset platform. Cloudinary-style asset management with slot bindings, presets, and Better Auth API keys.","directories":{},"sideEffects":false,"_nodeVersion":"24.3.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","react":"^19.0.0","@types/bun":"^1.3.13","typescript":"^6.0.3","@types/react":"^19.0.0","@aquienpz/asset-client":"0.12.0","@aquienpz/asset-uploader-web":"0.1.0","@aquienpz/asset-uploader-expo":"0.1.0","@aquienpz/asset-compressor-web":"0.5.0","@aquienpz/asset-compressor-native":"0.2.0"},"peerDependencies":{"react":">=18","@aquienpz/asset-client":"0.12.0","@aquienpz/asset-uploader-web":"0.1.0","@aquienpz/asset-uploader-expo":"0.1.0","@aquienpz/asset-compressor-web":"0.5.0","@aquienpz/asset-compressor-native":"0.2.0"},"peerDependenciesMeta":{"react":{"optional":true},"@aquienpz/asset-uploader-web":{"optional":true},"@aquienpz/asset-uploader-expo":{"optional":true},"@aquienpz/asset-compressor-web":{"optional":true},"@aquienpz/asset-compressor-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.16.2_1779005336003_0.5417102755141834","host":"s3://npm-registry-packages-npm-production"}},"0.16.3":{"name":"@aquienpz/sdk","version":"0.16.3","keywords":["aquienpz","asset-management","cdn","cloudinary-alternative","multi-tenant","r2","cloudflare"],"license":"UNLICENSED","_id":"@aquienpz/sdk@0.16.3","maintainers":[{"name":"espaciofuturo","email":"dev@espaciofuturo.io"}],"homepage":"https://github.com/espaciofuturoio/aquienpz/tree/main/packages/sdk","bugs":{"url":"https://github.com/espaciofuturoio/aquienpz/issues"},"dist":{"shasum":"98058a5b599e310733bada58b927c919003ea171","tarball":"https://registry.npmjs.org/@aquienpz/sdk/-/sdk-0.16.3.tgz","fileCount":26,"integrity":"sha512-Op31fdjf6y4o2eSdH1QkfJdTWKSPWEn8nAf1WY6kIKCjRSwnqRmENvjf1Jv8/iP9nB65/l0UXhOApaMUv+cs5Q==","signatures":[{"sig":"MEYCIQCv8u8TMjQ/jziuDG1OZuiyq6+Mln5T2p4X+IDq/q57bgIhANeAvYjoMTH8gzDIEYGrg4kbL1EWyBXr1pW8bpwACzp5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":426213},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","shasum":"98058a5b599e310733bada58b927c919003ea171","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./web":{"import":{"types":"./dist/web.d.ts","default":"./dist/web.js"}},"./expo":{"import":{"types":"./dist/expo.d.ts","default":"./dist/expo.js"}},"./react":{"import":{"types":"./dist/react.d.ts","default":"./dist/react.js"}},"./native":{"import":{"types":"./dist/native.d.ts","default":"./dist/native.js"}},"./server":{"import":{"types":"./dist/server.d.ts","default":"./dist/server.js"}}},"private":false,"scripts":{"test":"bun test test/assets-gaps.test.ts","build":"tsup","test:e2e":"bun test test/e2e","type-check":"tsc --noEmit","build:watch":"tsup --watch","prepublishOnly":"bun run build"},"_npmUser":{"name":"espaciofuturo","email":"dev@espaciofuturo.io"},"_integrity":"sha512-Op31fdjf6y4o2eSdH1QkfJdTWKSPWEn8nAf1WY6kIKCjRSwnqRmENvjf1Jv8/iP9nB65/l0UXhOApaMUv+cs5Q==","repository":{"url":"https://github.com/espaciofuturoio/aquienpz.git","type":"git","directory":"packages/sdk"},"_npmVersion":"10.8.3","description":"Universal SDK for the aquienpz multi-tenant asset platform. Cloudinary-style asset management with slot bindings, presets, and Better Auth API keys.","directories":{},"sideEffects":false,"_nodeVersion":"24.3.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","react":"^19.0.0","@types/bun":"^1.3.13","typescript":"^6.0.3","@types/react":"^19.0.0","@aquienpz/asset-client":"0.12.0","@aquienpz/asset-uploader-web":"0.1.0","@aquienpz/asset-uploader-expo":"0.1.0","@aquienpz/asset-compressor-web":"0.5.0","@aquienpz/asset-compressor-native":"0.2.0"},"peerDependencies":{"react":">=18","@aquienpz/asset-client":"0.12.0","@aquienpz/asset-uploader-web":"0.1.0","@aquienpz/asset-uploader-expo":"0.1.0","@aquienpz/asset-compressor-web":"0.5.0","@aquienpz/asset-compressor-native":"0.2.0"},"peerDependenciesMeta":{"react":{"optional":true},"@aquienpz/asset-uploader-web":{"optional":true},"@aquienpz/asset-uploader-expo":{"optional":true},"@aquienpz/asset-compressor-web":{"optional":true},"@aquienpz/asset-compressor-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.16.3_1779006945907_0.3950472983146345","host":"s3://npm-registry-packages-npm-production"}},"0.17.0":{"name":"@aquienpz/sdk","version":"0.17.0","keywords":["aquienpz","asset-management","cdn","cloudinary-alternative","multi-tenant","r2","cloudflare"],"license":"UNLICENSED","_id":"@aquienpz/sdk@0.17.0","maintainers":[{"name":"espaciofuturo","email":"dev@espaciofuturo.io"}],"homepage":"https://github.com/espaciofuturoio/aquienpz/tree/main/packages/sdk","bugs":{"url":"https://github.com/espaciofuturoio/aquienpz/issues"},"dist":{"shasum":"a336ee1689a91963d5724f28f271809d00759030","tarball":"https://registry.npmjs.org/@aquienpz/sdk/-/sdk-0.17.0.tgz","fileCount":26,"integrity":"sha512-pS8DvQRiWZ9Zz8r0IiHFBe1YA5H3XraHBHVCe3yLbSKSnGE+6kUlM2Z0Aj+Jnam47PZZAcixlyf3RWU8SSv1nw==","signatures":[{"sig":"MEQCIGFVl1It8vqV+bFfF3EznIvNaVyl587G9iNGH+CVhH1+AiANxfBR6EZZUNIBYylG7XA5rejCYdJDpVEheoR68/RiSw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":459999},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","shasum":"a336ee1689a91963d5724f28f271809d00759030","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./web":{"import":{"types":"./dist/web.d.ts","default":"./dist/web.js"}},"./expo":{"import":{"types":"./dist/expo.d.ts","default":"./dist/expo.js"}},"./react":{"import":{"types":"./dist/react.d.ts","default":"./dist/react.js"}},"./native":{"import":{"types":"./dist/native.d.ts","default":"./dist/native.js"}},"./server":{"import":{"types":"./dist/server.d.ts","default":"./dist/server.js"}}},"private":false,"scripts":{"test":"bun test test/assets-gaps.test.ts","build":"tsup","test:e2e":"bun test test/e2e","type-check":"tsc --noEmit","build:watch":"tsup --watch","prepublishOnly":"bun run build"},"_npmUser":{"name":"espaciofuturo","email":"dev@espaciofuturo.io"},"_integrity":"sha512-pS8DvQRiWZ9Zz8r0IiHFBe1YA5H3XraHBHVCe3yLbSKSnGE+6kUlM2Z0Aj+Jnam47PZZAcixlyf3RWU8SSv1nw==","repository":{"url":"https://github.com/espaciofuturoio/aquienpz.git","type":"git","directory":"packages/sdk"},"_npmVersion":"10.8.3","description":"Universal SDK for the aquienpz multi-tenant asset platform. Cloudinary-style asset management with slot bindings, presets, and Better Auth API keys.","directories":{},"sideEffects":false,"_nodeVersion":"24.3.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","react":"^19.0.0","@types/bun":"^1.3.13","typescript":"^6.0.3","@types/react":"^19.0.0","@aquienpz/asset-client":"0.12.0","@aquienpz/asset-uploader-web":"0.1.0","@aquienpz/asset-uploader-expo":"0.1.0","@aquienpz/asset-compressor-web":"0.5.0","@aquienpz/asset-compressor-native":"0.2.0"},"peerDependencies":{"react":">=18","@aquienpz/asset-client":"0.12.0","@aquienpz/asset-uploader-web":"0.1.0","@aquienpz/asset-uploader-expo":"0.1.0","@aquienpz/asset-compressor-web":"0.5.0","@aquienpz/asset-compressor-native":"0.2.0"},"peerDependenciesMeta":{"react":{"optional":true},"@aquienpz/asset-uploader-web":{"optional":true},"@aquienpz/asset-uploader-expo":{"optional":true},"@aquienpz/asset-compressor-web":{"optional":true},"@aquienpz/asset-compressor-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.17.0_1779038092432_0.4851809904436202","host":"s3://npm-registry-packages-npm-production"}},"0.17.1":{"name":"@aquienpz/sdk","version":"0.17.1","keywords":["aquienpz","asset-management","cdn","cloudinary-alternative","multi-tenant","r2","cloudflare"],"license":"UNLICENSED","_id":"@aquienpz/sdk@0.17.1","maintainers":[{"name":"espaciofuturo","email":"dev@espaciofuturo.io"}],"homepage":"https://github.com/espaciofuturoio/aquienpz/tree/main/packages/sdk","bugs":{"url":"https://github.com/espaciofuturoio/aquienpz/issues"},"dist":{"shasum":"a83a4519a46e530a5f0a991c9474db48d5f989cc","tarball":"https://registry.npmjs.org/@aquienpz/sdk/-/sdk-0.17.1.tgz","fileCount":26,"integrity":"sha512-yYTeCl8sGRv4a0Zw4QdNaMhkWjZ/1xXLslFbLS1zZGgKh72MCsSmVW95M9rkrxnudmtQ5BtZGSD3gntux7ahxw==","signatures":[{"sig":"MEUCIQD2C7Sq+4ystwd5f0aTJxgsd9uDPboqI3nJDx1kdSdT4QIgVl3h/PHJc4z2VFPNt2C2xTEqCUlS94zYaV3zmsGFV3s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":455821},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","shasum":"a83a4519a46e530a5f0a991c9474db48d5f989cc","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./web":{"import":{"types":"./dist/web.d.ts","default":"./dist/web.js"}},"./expo":{"import":{"types":"./dist/expo.d.ts","default":"./dist/expo.js"}},"./react":{"import":{"types":"./dist/react.d.ts","default":"./dist/react.js"}},"./native":{"import":{"types":"./dist/native.d.ts","default":"./dist/native.js"}},"./server":{"import":{"types":"./dist/server.d.ts","default":"./dist/server.js"}}},"private":false,"scripts":{"test":"bun test test/assets-gaps.test.ts","build":"tsup","test:e2e":"bun test test/e2e","type-check":"tsc --noEmit","build:watch":"tsup --watch","prepublishOnly":"bun run build"},"_npmUser":{"name":"espaciofuturo","email":"dev@espaciofuturo.io"},"_integrity":"sha512-yYTeCl8sGRv4a0Zw4QdNaMhkWjZ/1xXLslFbLS1zZGgKh72MCsSmVW95M9rkrxnudmtQ5BtZGSD3gntux7ahxw==","repository":{"url":"https://github.com/espaciofuturoio/aquienpz.git","type":"git","directory":"packages/sdk"},"_npmVersion":"10.8.3","description":"Universal SDK for the aquienpz multi-tenant asset platform. Cloudinary-style asset management with slot bindings, presets, and Better Auth API keys.","directories":{},"sideEffects":false,"_nodeVersion":"24.3.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","react":"^19.0.0","@types/bun":"^1.3.13","typescript":"^6.0.3","@types/react":"^19.0.0","@aquienpz/asset-client":"0.12.0","@aquienpz/asset-uploader-web":"0.1.0","@aquienpz/asset-uploader-expo":"0.1.0","@aquienpz/asset-compressor-web":"0.5.0","@aquienpz/asset-compressor-native":"0.2.0"},"peerDependencies":{"react":">=18","@aquienpz/asset-client":"0.12.0","@aquienpz/asset-uploader-web":"0.1.0","@aquienpz/asset-uploader-expo":"0.1.0","@aquienpz/asset-compressor-web":"0.5.0","@aquienpz/asset-compressor-native":"0.2.0"},"peerDependenciesMeta":{"react":{"optional":true},"@aquienpz/asset-uploader-web":{"optional":true},"@aquienpz/asset-uploader-expo":{"optional":true},"@aquienpz/asset-compressor-web":{"optional":true},"@aquienpz/asset-compressor-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.17.1_1779040385913_0.13068627747987804","host":"s3://npm-registry-packages-npm-production"}},"0.17.2":{"name":"@aquienpz/sdk","version":"0.17.2","keywords":["aquienpz","asset-management","cdn","cloudinary-alternative","multi-tenant","r2","cloudflare"],"license":"UNLICENSED","_id":"@aquienpz/sdk@0.17.2","maintainers":[{"name":"espaciofuturo","email":"dev@espaciofuturo.io"}],"homepage":"https://github.com/espaciofuturoio/aquienpz/tree/main/packages/sdk","bugs":{"url":"https://github.com/espaciofuturoio/aquienpz/issues"},"dist":{"shasum":"a8ef056d4ad407bb837e7966eb640c32de5c7e4c","tarball":"https://registry.npmjs.org/@aquienpz/sdk/-/sdk-0.17.2.tgz","fileCount":26,"integrity":"sha512-xSR2976l4fmLcneRdH+3896W9Sz3F2EUFZu9QMzsmuem+ZJIfuEKiwYbE3Ua/yRWuh1glfKmwG7tlL0cKZr39w==","signatures":[{"sig":"MEUCIBOqj2zRqOb+JfoTftC35LVtGaVvhS/cBYfCnZ4Xi0j4AiEAnPfLFqybnqieOFjRQZsi3qvyG0QY0v8Wv9FeqzIoNvI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":458201},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","shasum":"a8ef056d4ad407bb837e7966eb640c32de5c7e4c","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./web":{"import":{"types":"./dist/web.d.ts","default":"./dist/web.js"}},"./expo":{"import":{"types":"./dist/expo.d.ts","default":"./dist/expo.js"}},"./react":{"import":{"types":"./dist/react.d.ts","default":"./dist/react.js"}},"./native":{"import":{"types":"./dist/native.d.ts","default":"./dist/native.js"}},"./server":{"import":{"types":"./dist/server.d.ts","default":"./dist/server.js"}}},"private":false,"scripts":{"test":"bun test test/assets-gaps.test.ts","build":"tsup","test:e2e":"bun test test/e2e","type-check":"tsc --noEmit","build:watch":"tsup --watch","prepublishOnly":"bun run build"},"_npmUser":{"name":"espaciofuturo","email":"dev@espaciofuturo.io"},"_integrity":"sha512-xSR2976l4fmLcneRdH+3896W9Sz3F2EUFZu9QMzsmuem+ZJIfuEKiwYbE3Ua/yRWuh1glfKmwG7tlL0cKZr39w==","repository":{"url":"https://github.com/espaciofuturoio/aquienpz.git","type":"git","directory":"packages/sdk"},"_npmVersion":"10.8.3","description":"Universal SDK for the aquienpz multi-tenant asset platform. Cloudinary-style asset management with slot bindings, presets, and Better Auth API keys.","directories":{},"sideEffects":false,"_nodeVersion":"24.3.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","react":"^19.0.0","@types/bun":"^1.3.13","typescript":"^6.0.3","@types/react":"^19.0.0","@aquienpz/asset-client":"0.12.0","@aquienpz/asset-uploader-web":"0.1.0","@aquienpz/asset-uploader-expo":"0.1.0","@aquienpz/asset-compressor-web":"0.5.0","@aquienpz/asset-compressor-native":"0.2.0"},"peerDependencies":{"react":">=18","@aquienpz/asset-client":"0.12.0","@aquienpz/asset-uploader-web":"0.1.0","@aquienpz/asset-uploader-expo":"0.1.0","@aquienpz/asset-compressor-web":"0.5.0","@aquienpz/asset-compressor-native":"0.2.0"},"peerDependenciesMeta":{"react":{"optional":true},"@aquienpz/asset-uploader-web":{"optional":true},"@aquienpz/asset-uploader-expo":{"optional":true},"@aquienpz/asset-compressor-web":{"optional":true},"@aquienpz/asset-compressor-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.17.2_1779040826983_0.7695223908629685","host":"s3://npm-registry-packages-npm-production"}},"0.17.3":{"name":"@aquienpz/sdk","version":"0.17.3","keywords":["aquienpz","asset-management","cdn","cloudinary-alternative","multi-tenant","r2","cloudflare"],"license":"UNLICENSED","_id":"@aquienpz/sdk@0.17.3","maintainers":[{"name":"espaciofuturo","email":"dev@espaciofuturo.io"}],"homepage":"https://github.com/espaciofuturoio/aquienpz/tree/main/packages/sdk","bugs":{"url":"https://github.com/espaciofuturoio/aquienpz/issues"},"dist":{"shasum":"76a85478391c77c6e26220f6d49328c8d24fb2f8","tarball":"https://registry.npmjs.org/@aquienpz/sdk/-/sdk-0.17.3.tgz","fileCount":26,"integrity":"sha512-6wVKRFEKnJqMnAmulsRzBwL/vMTi7JGenjLV/8qemshj/xM1TJ9nOC4yAskrg5vhw9/UoG7hioTkh7KlIELqHw==","signatures":[{"sig":"MEQCIGAtm9n4FQKc5XIIewlI37xe7zuhr6z+rNYgDLyffzWFAiAnHuyi1duXTrMEjPI0Oa4XcdPcckMZcgb5dUf2RZVJrg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":462429},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","shasum":"76a85478391c77c6e26220f6d49328c8d24fb2f8","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./web":{"import":{"types":"./dist/web.d.ts","default":"./dist/web.js"}},"./expo":{"import":{"types":"./dist/expo.d.ts","default":"./dist/expo.js"}},"./react":{"import":{"types":"./dist/react.d.ts","default":"./dist/react.js"}},"./native":{"import":{"types":"./dist/native.d.ts","default":"./dist/native.js"}},"./server":{"import":{"types":"./dist/server.d.ts","default":"./dist/server.js"}}},"private":false,"scripts":{"test":"bun test test/assets-gaps.test.ts","build":"tsup","test:e2e":"bun test test/e2e","type-check":"tsc --noEmit","build:watch":"tsup --watch","prepublishOnly":"bun run build"},"_npmUser":{"name":"espaciofuturo","email":"dev@espaciofuturo.io"},"_integrity":"sha512-6wVKRFEKnJqMnAmulsRzBwL/vMTi7JGenjLV/8qemshj/xM1TJ9nOC4yAskrg5vhw9/UoG7hioTkh7KlIELqHw==","repository":{"url":"https://github.com/espaciofuturoio/aquienpz.git","type":"git","directory":"packages/sdk"},"_npmVersion":"10.8.3","description":"Universal SDK for the aquienpz multi-tenant asset platform. Cloudinary-style asset management with slot bindings, presets, and Better Auth API keys.","directories":{},"sideEffects":false,"_nodeVersion":"24.3.0","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","react":"^19.0.0","@types/bun":"^1.3.13","typescript":"^6.0.3","@types/react":"^19.0.0","@aquienpz/asset-client":"0.12.0","@aquienpz/asset-uploader-web":"0.1.0","@aquienpz/asset-uploader-expo":"0.1.0","@aquienpz/asset-compressor-web":"0.5.0","@aquienpz/asset-compressor-native":"0.2.0"},"peerDependencies":{"react":">=18","@aquienpz/asset-client":"0.12.0","@aquienpz/asset-uploader-web":"0.1.0","@aquienpz/asset-uploader-expo":"0.1.0","@aquienpz/asset-compressor-web":"0.5.0","@aquienpz/asset-compressor-native":"0.2.0"},"peerDependenciesMeta":{"react":{"optional":true},"@aquienpz/asset-uploader-web":{"optional":true},"@aquienpz/asset-uploader-expo":{"optional":true},"@aquienpz/asset-compressor-web":{"optional":true},"@aquienpz/asset-compressor-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.17.3_1779087825254_0.23339213405596015","host":"s3://npm-registry-packages-npm-production"}},"0.18.0":{"name":"@aquienpz/sdk","version":"0.18.0","keywords":["aquienpz","asset-management","cdn","cloudinary-alternative","multi-tenant","r2","cloudflare"],"license":"UNLICENSED","_id":"@aquienpz/sdk@0.18.0","maintainers":[{"name":"espaciofuturo","email":"dev@espaciofuturo.io"}],"homepage":"https://github.com/espaciofuturoio/aquienpz/tree/main/packages/sdk","bugs":{"url":"https://github.com/espaciofuturoio/aquienpz/issues"},"dist":{"shasum":"6ee463c42771ff337202463b893d878d4e615d68","tarball":"https://registry.npmjs.org/@aquienpz/sdk/-/sdk-0.18.0.tgz","fileCount":26,"integrity":"sha512-/I6Px99wKi3h3sI9mC/Sf/vXsEcB3bUDlillBMWp+YjKbi2aHTifEFw9Jmdrjm1Hj4Ydie8/aAVZF4jx4SNWRQ==","signatures":[{"sig":"MEUCIQClGGkiR1OUsTj73MxXIfabyHZP0081UixogT3QHfIBMwIgblros5FXONXvB6DyK1G8CNfW+Vq8TC0prCgkEJwFqkM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":464354},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./web":{"import":{"types":"./dist/web.d.ts","default":"./dist/web.js"}},"./expo":{"import":{"types":"./dist/expo.d.ts","default":"./dist/expo.js"}},"./react":{"import":{"types":"./dist/react.d.ts","default":"./dist/react.js"}},"./native":{"import":{"types":"./dist/native.d.ts","default":"./dist/native.js"}},"./server":{"import":{"types":"./dist/server.d.ts","default":"./dist/server.js"}}},"gitHead":"1de91ff1faa3d2c899e8ccd2839b955585ce17f3","private":false,"scripts":{"test":"bun test test/assets-gaps.test.ts","build":"tsup","test:e2e":"bun test test/e2e","type-check":"tsc --noEmit","build:watch":"tsup --watch","prepublishOnly":"bun run build"},"_npmUser":{"name":"espaciofuturo","email":"dev@espaciofuturo.io"},"repository":{"url":"git+https://github.com/espaciofuturoio/aquienpz.git","type":"git","directory":"packages/sdk"},"_npmVersion":"10.9.8","description":"Universal SDK for the aquienpz multi-tenant asset platform. Cloudinary-style asset management with slot bindings, presets, and Better Auth API keys.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","publishConfig":{"access":"public","provenance":false},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","react":"^19.0.0","@types/bun":"^1.3.13","typescript":"^6.0.3","@types/react":"^19.0.0","@aquienpz/asset-client":"workspace:*","@aquienpz/asset-uploader-web":"workspace:*","@aquienpz/asset-uploader-expo":"workspace:*","@aquienpz/asset-compressor-web":"workspace:*","@aquienpz/asset-compressor-native":"workspace:*"},"peerDependencies":{"react":">=18","@aquienpz/asset-client":"^0.13.0","@aquienpz/asset-uploader-web":"^0.1.0","@aquienpz/asset-uploader-expo":"^0.1.0","@aquienpz/asset-compressor-web":"^0.5.0","@aquienpz/asset-compressor-native":"^0.2.0"},"peerDependenciesMeta":{"react":{"optional":true},"@aquienpz/asset-uploader-web":{"optional":true},"@aquienpz/asset-uploader-expo":{"optional":true},"@aquienpz/asset-compressor-web":{"optional":true},"@aquienpz/asset-compressor-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.18.0_1779491088530_0.02468673355092732","host":"s3://npm-registry-packages-npm-production"}},"0.19.0":{"name":"@aquienpz/sdk","version":"0.19.0","keywords":["aquienpz","asset-management","cdn","cloudinary-alternative","multi-tenant","r2","cloudflare"],"license":"UNLICENSED","_id":"@aquienpz/sdk@0.19.0","maintainers":[{"name":"espaciofuturo","email":"dev@espaciofuturo.io"}],"homepage":"https://github.com/espaciofuturoio/aquienpz/tree/main/packages/sdk","bugs":{"url":"https://github.com/espaciofuturoio/aquienpz/issues"},"dist":{"shasum":"875574da857fc9bbe792c27281b7e6f87a594ada","tarball":"https://registry.npmjs.org/@aquienpz/sdk/-/sdk-0.19.0.tgz","fileCount":26,"integrity":"sha512-JHoIVeVBMxPVIvcRgICCe45vgrkE9N72qM1wyMo7JhRP0P/94jI9WsfjKJyeGGtao7p0QgPQtjlIly2QYiO4+w==","signatures":[{"sig":"MEUCIC0yZZKXODGrEkJhqAitGd3ZD38wUv/ZC698yO5Hb44mAiEA/KcfgVJcSE76bIAwVZglBMRMrHXrNlOTqMSpQV9+u1Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":490896},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./web":{"import":{"types":"./dist/web.d.ts","default":"./dist/web.js"}},"./expo":{"import":{"types":"./dist/expo.d.ts","default":"./dist/expo.js"}},"./react":{"import":{"types":"./dist/react.d.ts","default":"./dist/react.js"}},"./native":{"import":{"types":"./dist/native.d.ts","default":"./dist/native.js"}},"./server":{"import":{"types":"./dist/server.d.ts","default":"./dist/server.js"}}},"gitHead":"77fa25aa003e35c8fe1fdd3eacbccc868f1c4264","private":false,"scripts":{"test":"bun test test/assets-gaps.test.ts","build":"tsup","test:e2e":"bun test test/e2e","type-check":"tsc --noEmit","build:watch":"tsup --watch","prepublishOnly":"bun run build"},"_npmUser":{"name":"espaciofuturo","email":"dev@espaciofuturo.io"},"repository":{"url":"git+https://github.com/espaciofuturoio/aquienpz.git","type":"git","directory":"packages/sdk"},"_npmVersion":"10.9.8","description":"Universal SDK for the aquienpz multi-tenant asset platform. Cloudinary-style asset management with slot bindings, presets, and Better Auth API keys.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","publishConfig":{"access":"public","provenance":false},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","react":"^19.2.6","@types/bun":"^1.3.14","typescript":"^6.0.3","@types/react":"^19","@aquienpz/asset-client":"workspace:*","@aquienpz/asset-uploader-web":"workspace:*","@aquienpz/asset-uploader-expo":"workspace:*","@aquienpz/asset-compressor-web":"workspace:*","@aquienpz/asset-compressor-native":"workspace:*"},"peerDependencies":{"react":">=18","@aquienpz/asset-client":"^0.14.0","@aquienpz/asset-uploader-web":"^0.1.0","@aquienpz/asset-uploader-expo":"^0.1.0","@aquienpz/asset-compressor-web":"^0.5.0","@aquienpz/asset-compressor-native":"^0.2.0"},"peerDependenciesMeta":{"react":{"optional":true},"@aquienpz/asset-uploader-web":{"optional":true},"@aquienpz/asset-uploader-expo":{"optional":true},"@aquienpz/asset-compressor-web":{"optional":true},"@aquienpz/asset-compressor-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.19.0_1780288513062_0.5494935495001663","host":"s3://npm-registry-packages-npm-production"}},"0.19.2":{"name":"@aquienpz/sdk","version":"0.19.2","keywords":["aquienpz","asset-management","cdn","cloudinary-alternative","multi-tenant","r2","cloudflare"],"license":"UNLICENSED","_id":"@aquienpz/sdk@0.19.2","maintainers":[{"name":"espaciofuturo","email":"dev@espaciofuturo.io"}],"homepage":"https://github.com/espaciofuturoio/aquienpz/tree/main/packages/sdk","bugs":{"url":"https://github.com/espaciofuturoio/aquienpz/issues"},"dist":{"shasum":"59b746803e384b65df9a6a7f04fa69766a4af746","tarball":"https://registry.npmjs.org/@aquienpz/sdk/-/sdk-0.19.2.tgz","fileCount":26,"integrity":"sha512-4POjZyGJzZpXP4XXOZ+0QSm9qxV88Aqi2EmaOOL3p5pD/sPMXcFpzqsRnPSCpf+1vyTJYsRVU6VxgYweJ3n3yw==","signatures":[{"sig":"MEUCIAC2Ynhq7av1cUItpZ+xsAZrunqzhcZRFLdHfTCgxJBtAiEAzoVZa4Sr6zYqgvdD4vxZv8Wg4+TjRKnQn26i5QxtpdU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":499921},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./web":{"import":{"types":"./dist/web.d.ts","default":"./dist/web.js"}},"./expo":{"import":{"types":"./dist/expo.d.ts","default":"./dist/expo.js"}},"./react":{"import":{"types":"./dist/react.d.ts","default":"./dist/react.js"}},"./native":{"import":{"types":"./dist/native.d.ts","default":"./dist/native.js"}},"./server":{"import":{"types":"./dist/server.d.ts","default":"./dist/server.js"}}},"gitHead":"8d82fb588de3ee0165e414a4ef094b85e987802b","private":false,"scripts":{"test":"bun test test/assets-gaps.test.ts test/upload-mime.test.ts test/presets.test.ts","build":"tsup","test:e2e":"bun test test/e2e","type-check":"tsc --noEmit","build:watch":"tsup --watch","prepublishOnly":"bun run build"},"_npmUser":{"name":"espaciofuturo","email":"dev@espaciofuturo.io"},"repository":{"url":"git+https://github.com/espaciofuturoio/aquienpz.git","type":"git","directory":"packages/sdk"},"_npmVersion":"10.9.8","description":"Universal SDK for the aquienpz multi-tenant asset platform. Cloudinary-style asset management with slot bindings, presets, and Better Auth API keys.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","publishConfig":{"access":"public","provenance":false},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","react":"^19.2.6","@types/bun":"^1.3.14","typescript":"^6.0.3","@types/react":"^19","@aquienpz/asset-client":"workspace:*","@aquienpz/asset-uploader-web":"workspace:*","@aquienpz/asset-uploader-expo":"workspace:*","@aquienpz/asset-compressor-web":"workspace:*","@aquienpz/asset-compressor-native":"workspace:*"},"peerDependencies":{"react":">=18","@aquienpz/asset-client":"^0.14.1","@aquienpz/asset-uploader-web":"^0.1.0","@aquienpz/asset-uploader-expo":"^0.1.0","@aquienpz/asset-compressor-web":"^0.6.0","@aquienpz/asset-compressor-native":"^0.2.0"},"peerDependenciesMeta":{"react":{"optional":true},"@aquienpz/asset-uploader-web":{"optional":true},"@aquienpz/asset-uploader-expo":{"optional":true},"@aquienpz/asset-compressor-web":{"optional":true},"@aquienpz/asset-compressor-native":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/sdk_0.19.2_1782216536117_0.14808806972434163","host":"s3://npm-registry-packages-npm-production"}},"0.20.0":{"name":"@aquienpz/sdk","version":"0.20.0","description":"Universal SDK for the aquienpz multi-tenant asset platform. Cloudinary-style asset management with slot bindings, presets, and Better Auth API keys.","private":false,"publishConfig":{"access":"public","provenance":false},"repository":{"type":"git","url":"git+https://github.com/espaciofuturoio/aquienpz.git","directory":"packages/sdk"},"homepage":"https://github.com/espaciofuturoio/aquienpz/tree/main/packages/sdk","bugs":{"url":"https://github.com/espaciofuturoio/aquienpz/issues"},"license":"UNLICENSED","type":"module","sideEffects":false,"main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"./server":{"import":{"types":"./dist/server.d.ts","default":"./dist/server.js"}},"./react":{"import":{"types":"./dist/react.d.ts","default":"./dist/react.js"}},"./web":{"import":{"types":"./dist/web.d.ts","default":"./dist/web.js"}},"./expo":{"import":{"types":"./dist/expo.d.ts","default":"./dist/expo.js"}},"./native":{"import":{"types":"./dist/native.d.ts","default":"./dist/native.js"}}},"scripts":{"build":"tsup","build:watch":"tsup --watch","prepublishOnly":"bun run build","type-check":"tsc --noEmit","test":"bun test test/assets-gaps.test.ts test/upload-mime.test.ts test/presets.test.ts","test:e2e":"bun test test/e2e"},"peerDependencies":{"react":">=18","@aquienpz/asset-client":"^0.14.1","@aquienpz/asset-compressor-web":"^0.6.0","@aquienpz/asset-compressor-native":"^0.2.0","@aquienpz/asset-uploader-web":"^0.1.0","@aquienpz/asset-uploader-expo":"^0.1.0"},"peerDependenciesMeta":{"react":{"optional":true},"@aquienpz/asset-compressor-web":{"optional":true},"@aquienpz/asset-compressor-native":{"optional":true},"@aquienpz/asset-uploader-web":{"optional":true},"@aquienpz/asset-uploader-expo":{"optional":true}},"devDependencies":{"@types/react":"^19","@types/bun":"^1.3.14","react":"^19.2.6","tsup":"^8.5.1","typescript":"^6.0.3","@aquienpz/asset-client":"workspace:*","@aquienpz/asset-compressor-web":"workspace:*","@aquienpz/asset-compressor-native":"workspace:*","@aquienpz/asset-uploader-web":"workspace:*","@aquienpz/asset-uploader-expo":"workspace:*"},"keywords":["aquienpz","asset-management","cdn","cloudinary-alternative","multi-tenant","r2","cloudflare"],"_id":"@aquienpz/sdk@0.20.0","gitHead":"7cd674915ff2e8c840ec94c8367e473ec08abc26","_nodeVersion":"22.23.0","_npmVersion":"10.9.8","dist":{"integrity":"sha512-fS1A9yTBcL9pe4jA2RZVsCcwqKOjVLlcyQGzfrKpjNeSDqruowKk/arvuk4IcSSSS1h1GKMgzfC6KRPCTbIAcQ==","shasum":"30cf67598874cb888e3c668398a3e45c2fa2d4a3","tarball":"https://registry.npmjs.org/@aquienpz/sdk/-/sdk-0.20.0.tgz","fileCount":26,"unpackedSize":509394,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIC6vTytEG00UoTJ4PflqcTBwPv4rchC7g211nKD2zRl6AiBeFCA1SuQiH455H0iIVVGSLBV+YiJs9o4azlAAIeEHpA=="}]},"_npmUser":{"name":"espaciofuturo","email":"dev@espaciofuturo.io"},"directories":{},"maintainers":[{"name":"espaciofuturo","email":"dev@espaciofuturo.io"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sdk_0.20.0_1782618822033_0.5064289075385622"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-16T08:02:04.764Z","modified":"2026-06-28T03:53:42.309Z","0.1.0":"2026-05-16T08:02:05.098Z","0.1.1":"2026-05-16T08:06:17.232Z","0.1.2":"2026-05-16T08:22:55.773Z","0.2.0":"2026-05-16T08:49:50.984Z","0.2.1":"2026-05-16T09:00:24.356Z","0.3.0":"2026-05-16T15:25:43.559Z","0.3.1":"2026-05-16T15:41:54.595Z","0.3.2":"2026-05-16T15:43:05.209Z","0.5.0":"2026-05-16T17:08:44.645Z","0.6.0":"2026-05-16T17:33:13.410Z","0.7.0":"2026-05-16T19:31:18.657Z","0.8.0":"2026-05-16T22:24:27.590Z","0.9.0":"2026-05-16T22:50:50.831Z","0.10.0":"2026-05-16T23:42:19.269Z","0.11.0":"2026-05-17T01:50:32.460Z","0.13.0":"2026-05-17T03:48:30.918Z","0.14.0":"2026-05-17T06:50:00.294Z","0.15.0":"2026-05-17T07:01:24.690Z","0.16.0":"2026-05-17T07:14:39.509Z","0.16.1":"2026-05-17T07:22:03.617Z","0.16.2":"2026-05-17T08:08:56.218Z","0.16.3":"2026-05-17T08:35:46.088Z","0.17.0":"2026-05-17T17:14:52.580Z","0.17.1":"2026-05-17T17:53:06.064Z","0.17.2":"2026-05-17T18:00:27.160Z","0.17.3":"2026-05-18T07:03:45.382Z","0.18.0":"2026-05-22T23:04:48.697Z","0.19.0":"2026-06-01T04:35:13.199Z","0.19.2":"2026-06-23T12:08:56.252Z","0.20.0":"2026-06-28T03:53:42.188Z"},"bugs":{"url":"https://github.com/espaciofuturoio/aquienpz/issues"},"license":"UNLICENSED","homepage":"https://github.com/espaciofuturoio/aquienpz/tree/main/packages/sdk","keywords":["aquienpz","asset-management","cdn","cloudinary-alternative","multi-tenant","r2","cloudflare"],"repository":{"type":"git","url":"git+https://github.com/espaciofuturoio/aquienpz.git","directory":"packages/sdk"},"description":"Universal SDK for the aquienpz multi-tenant asset platform. Cloudinary-style asset management with slot bindings, presets, and Better Auth API keys.","maintainers":[{"name":"espaciofuturo","email":"dev@espaciofuturo.io"}],"readme":"# `@aquienpz/sdk`\n\nUniversal SDK for the [aquienpz](https://aquienpz.com) multi-tenant asset platform.\nA Cloudinary-style asset manager with deterministic CDN URLs, content-addressed\ndedup, server-side variants (thumb / sm / md / lg / poster / video), and **slot\nbindings** — admin-managed names that resolve to assets at runtime.\n\n## One client, every environment\n\nThe whole SDK ships as **one `AquienpzClient` class** behind environment-\nspecific subpath entries. Each subpath bundles the same client PLUS the\nhelpers safe for that runtime — same pattern as **Vercel Blob** (`@vercel/blob`\nvs `@vercel/blob/client`), **Better Auth**, **Uploadthing**, and the **Vercel AI\nSDK**. Stripe/Cloudinary's split into two separate npm packages is the legacy\nshape — modern bundlers tree-shake subpaths perfectly and a single version\neliminates type drift between server and client surfaces.\n\n| Where you run | Import | What it bundles |\n|---|---|---|\n| Node 20+, Bun, Cloud Run, Lambda, Edge, agents, cron | **`@aquienpz/sdk/server`** | `AquienpzClient` + URL builders + `signTransformUrl`. **No browser-only code.** Hard guarantee against shipping `Blob`-workflow helpers to the wrong runtime. |\n| Browser (Next.js client, Vite, CRA, web workers) | **`@aquienpz/sdk/web`** | `AquienpzClient` + everything in `/server` + `createWebUploader` (multipart, parallel parts, IndexedDB resume) + `compressImage` (HEIC→WebP, compressorjs). |\n| React Native / Expo apps | `@aquienpz/sdk/native` | `compressImage` for RN (libjpeg-turbo via `react-native-compressor`). Pair with `/expo`. |\n| Expo background uploads | `@aquienpz/sdk/expo` | `createExpoUploader` — native `URLSession` (iOS) / `WorkManager` (Android) sessions that survive app backgrounding. |\n| Next.js / React (hooks) | `@aquienpz/sdk/react` | `AquienpzProvider` + `useSlot` / `useSlots` / `useAsset`. |\n| Backwards-compat (root) | `@aquienpz/sdk` | Same shape as today; equivalent to `/web` for the public symbols. **Prefer the explicit subpath in new code.** |\n\nUploaders + compressors are **optional** peer deps (`@aquienpz/asset-uploader-{web,expo}`,\n`@aquienpz/asset-compressor-{web,native}`). Skip them if your app only resolves\nslots and reads assets — your bundle stays a few KB.\n\n### Quick decision tree\n\n- Server-side rendering, API routes, BFF, cron, agents → `@aquienpz/sdk/server`.\n- Browser components, build-time pre-resolution → `@aquienpz/sdk/web`.\n- Expo / React Native app → `@aquienpz/sdk/native` + `@aquienpz/sdk/expo`.\n- React hooks (any env) → `@aquienpz/sdk/react`.\n\n**Never ship the API key to the browser.** Whichever subpath you import,\nthe long-lived `amk_rt_*` key lives on the server. Browser flows hit a BFF\nroute that proxies to aquienpz with the real key.\n\n## Which subpath do I import from?\n\n| Context | Import | Notes |\n|---|---|---|\n| Browser (Next.js client component, SPA, Worker, web extension) | `@aquienpz/sdk/web` | **No `apiKey`** — your BFF injects it. Type omits the field; build error if you try. |\n| Node/Bun server (API route, Server Action, Cloud Run, Fly, BFF) | `@aquienpz/sdk/server` | Requires `apiKey` at construction. |\n| React Native / Expo | `@aquienpz/sdk/native` or `@aquienpz/sdk/expo` | Same BFF model as `/web` — keep keys server-side. |\n| Universal React hook | `@aquienpz/sdk/react` | Wraps the right subpath for the runtime. |\n\n### Why subpaths, not a runtime flag\n\nIf you import `/server` in browser code, the bundler throws a build error.\nIf we used a runtime `{ mode: \"browser\" }` flag and you forgot it, your API\nkey would silently bundle into the client. Subpaths make security mistakes\nloud — same pattern as `@vercel/blob/client`, `better-auth/client`, AI SDK's\n`/edge` subpath.\n\n`@aquienpz/sdk/web` v0.17+ enforces this physically: the constructor type\nis `Omit<AquienpzClientOptions, \"apiKey\" | \"signingKey\">`. Passing `apiKey`\nwon't compile, period.\n\n## BFF-proxy mode (browser → your route → aquienpz)\n\nBrowser code constructs the client against a **relative endpoint** that\npoints at your own route handler. The handler attaches the real bearer\ntoken and forwards to aquienpz. Same pattern Vercel Blob uses for\n`@vercel/blob/client.upload`.\n\n### Next.js — client component\n\n```tsx\n\"use client\";\nimport { AquienpzClient } from \"@aquienpz/sdk/web\";\n\nconst aq = new AquienpzClient({\n  endpoint:   \"/api/am\",              // OK: relative → same-origin BFF\n  tenantCode: \"realtyone-cr\",\n  tenantId:   1,\n  // apiKey: ... ERROR: TS error: not assignable to WebClientOptions\n});\n\nexport function HeroPicker() {\n  return <input type=\"file\" onChange={async (e) => {\n    const file = e.target.files?.[0];\n    if (file) await aq.upload(file, { compress: true });\n  }} />;\n}\n```\n\n### Next.js — BFF route handler\n\n```ts\n// app/api/am/[...path]/route.ts\nimport { NextRequest } from \"next/server\";\n\nconst UPSTREAM = process.env.AQUIENPZ_URL!;        // server-only\nconst API_KEY = process.env.AQUIENPZ_API_KEY!;     // server-only\nconst TENANT  = process.env.AQUIENPZ_TENANT_CODE!; // e.g. \"realtyone-cr\"\n\nasync function proxy(req: NextRequest, { params }: { params: { path: string[] } }) {\n  const search = new URL(req.url).search;\n  const url = `${UPSTREAM}/${params.path.join(\"/\")}${search}`;\n  const body = [\"GET\", \"HEAD\"].includes(req.method) ? undefined : await req.arrayBuffer();\n  return fetch(url, {\n    method:  req.method,\n    body,\n    headers: {\n      Authorization:    `Bearer ${API_KEY}`,\n      \"X-Tenant-Code\":  TENANT,\n      \"Content-Type\":   req.headers.get(\"content-type\") ?? \"application/json\",\n    },\n  });\n}\n\nexport { proxy as GET, proxy as POST, proxy as PUT, proxy as PATCH, proxy as DELETE };\n```\n\n### Bun / Elysia backend\n\n```ts\nimport { AquienpzClient } from \"@aquienpz/sdk/server\";\n\nconst aq = new AquienpzClient({\n  endpoint:   process.env.AQUIENPZ_URL!,\n  apiKey:     process.env.AQUIENPZ_API_KEY!,   // OK: required by ServerClientOptions\n  tenantCode: \"realtyone-cr\",\n  tenantId:   1,\n});\n```\n\n### Expo\n\n```ts\nimport { AquienpzClient } from \"@aquienpz/sdk/web\"; // same browser-safe type\n// Construct against your /api/am proxy; no apiKey in the app bundle.\n```\n\n### SSG storefront (build-time)\n\nUse `/server` at build time (Node/Bun) with the absolute aquienpz URL —\nno proxy needed because keys never reach the browser bundle. Static\nHTML output references the CDN directly.\n\n## Install\n\n```bash\nbun add @aquienpz/sdk @aquienpz/asset-client\n# or\nnpm install @aquienpz/sdk @aquienpz/asset-client\n```\n\nOptional, only if you need large uploads:\n\n```bash\n# Web / Vite / Next.js client uploads\nbun add @aquienpz/asset-uploader-web\n\n# Expo / React Native background uploads\nbun add @aquienpz/asset-uploader-expo\n```\n\nPeer deps: `@aquienpz/asset-client` (URL builders + types) and `react` (only if\nyou use the `/react` subpath).\n\n## Quick start\n\n```ts\nimport { AquienpzClient } from \"@aquienpz/sdk\";\n\nconst aq = new AquienpzClient({\n  endpoint: \"https://aquienpz-asset-manager-xxxx.run.app\",\n  apiKey:   process.env.ASSET_MANAGER_RUNTIME_KEY!, // amk_rt_* Better Auth API key\n  tenantCode: \"your-tenant\",\n  tenantId:   42,                  // numeric tenant id (used in CDN URL prefix)\n  cdnBase:    \"https://8ok.uk\",    // optional, defaults to https://8ok.uk\n});\n\n// Slots — the recommended way to reference brand assets in code.\n// Source never hardcodes a CDN URL; admin rebinds from asset-lab-web.\nconst hero = await aq.slots.resolve(\"storefront.home.hero\");\n//   → { slot: { asset, preset, … }, preset: \"lg\", url: \"https://8ok.uk/2a/v/<sha>-l.webp\" }\n\n// Bulk resolution in one round-trip.\nconst heroes = await aq.slots.resolveMany([\n  \"storefront.home.hero\",\n  \"storefront.home.tile-1\",\n  \"storefront.home.tile-2\",\n]);\n\n// Lower-level operations.\nconst asset = await aq.assets.byHash(\"3c…<64 hex>…\");\nconst { assets, nextCursor } = await aq.assets.list({ limit: 50 });\n\n// Uploads — hash-deduped; returns the canonical v2 URL immediately.\nconst result = await aq.upload(file, { fileName: \"cover.jpg\" });\n// → { assetId, sha256, cdnUrl }\n\n// Uploading raw bytes (Node/Bun, e.g. re-hosting a remote image)? A Uint8Array has no\n// inherent MIME, so give it one — otherwise it stores as kind:\"other\" (NO image variants):\nawait aq.upload(bytes, { fileName: \"cover.webp\" });              // MIME inferred from .webp ✓\nawait aq.upload(bytes, { contentType: \"image/webp\" });          // or be explicit ✓\n// And request the variants you'll render — `presets` DEFAULTS TO [\"original\"] (just the raw\n// bytes), so getAssetUrl(sha, \"md\") style preset URLs 404 unless you ask for the ladder:\nawait aq.upload(bytes, { contentType: \"image/webp\", presets: [\"thumb\", \"sm\", \"md\", \"lg\", \"xl\"] });\n\n// Bind a slot (admin operation).\nawait aq.slots.bind(\"storefront.home.hero\", {\n  assetId: result.assetId,\n  preset:  \"lg\",\n  description: \"Homepage hero — uploaded by admin on 2026-05-16\",\n});\n```\n\n## Client-side compression (browsers)\n\n`aq.upload(file, { compress: true })` runs the file through\ncompressorjs + heic2any before the PUT, saving the user's bandwidth.\nTypical result for an 8 MB iPhone HEIC photo: ~800 KB uploaded after\nHEIC → JPEG → WebP @ q=0.80, max-edge 3840 px.\n\n```ts\n// Default — uses DEFAULT_COMPRESSION_OPTIONS (webapp-tuned values)\nconst result = await aq.upload(file, {\n  compress: true,\n  presets: [\"thumb\", \"sm\", \"md\", \"lg\"],\n});\n\n// Custom tuning per call\nawait aq.upload(file, {\n  compress: { quality: 0.7, maxWidth: 2048 },\n});\n\n// Track progress for UI\nawait aq.upload(file, {\n  compress: {\n    onProgress: (stage) => console.log(stage),\n    // stage ∈ \"convertingHeic\" | \"compressing\" | \"compressingKeepingDimensions\"\n  },\n});\n```\n\n**Defaults** (matched to the realtyone-cr production webapp:\n`LISTING_STANDARD_*` constants):\n\n| Option | Default |\n|---|---|\n| `quality` | `0.80` |\n| `mimeType` | `\"image/webp\"` |\n| `maxWidth` / `maxHeight` | `3840` |\n| `convertSize` (PNG → JPEG threshold) | `5 MB` |\n| `strict` | `true` |\n\n**Caveats**:\n\n- Browser-only. In Node / Bun the call is a silent no-op (warns to\n  console) and the raw bytes upload as-is.\n- Non-image MIMEs (video, PDF) are passed through regardless of\n  `compress: true`. Safe to set blanket-fashion on mixed media batches.\n- Adds ~50 KB to the runtime bundle **only when used** — lazy-imported\n  from `@aquienpz/sdk/web`.\n- HEIC inputs go through heic2any first (additional ~200 KB lazy bundle).\n- Expo / React Native: the `/expo` subpath uses native\n  `expo-image-manipulator` instead (already wired in the uploader). The\n  `compress` option on `aq.upload` is web-only.\n- The server-side `assets.client_original_bytes` column is populated\n  from the original pre-compression size, surfacing the savings story\n  in admin dashboards.\n\nDirect access to the compressor (without going through `aq.upload`):\n\n```ts\nimport { compressImage, compressImages, DEFAULT_COMPRESSION_OPTIONS }\n  from \"@aquienpz/sdk/web\";\n\nconst { blob, originalBytes } = await compressImage(file, { quality: 0.85 });\nconst results = await compressImages([fileA, fileB, fileC]);\n```\n\n## Large uploads (web)\n\nThe core `aq.upload()` handles files under 50 MB in a single PUT. For\nbigger files use the `/web` subpath — it delegates to\n`@aquienpz/asset-uploader-web`'s multipart `UploadTask` (chunks, parallel\nparts, retries with backoff, IndexedDB-persisted progress, Web Worker\nSHA-256).\n\n```ts\nimport { createWebUploader } from \"@aquienpz/sdk/web\";\n\nconst task = createWebUploader(aq, { file });\ntask.on(\"progress\", ({ ratio }) => setProgress(ratio));\ntask.on(\"ready\",    ({ assetId }) => bindSlot(assetId));\nconst { assetId, deduped } = await task.start();\n```\n\nPeer dep: `@aquienpz/asset-uploader-web` (lazy — apps that only need\nsmall uploads skip it).\n\n## Large uploads (Expo / React Native)\n\nNative background uploads survive app suspend, low-memory kills, and\nnetwork blips. iOS uses URLSession's background config; Android uses\nWorkManager. Same JS API as the web flavor.\n\n```tsx\nimport { useEffect, useState } from \"react\";\nimport { Image } from \"react-native\";\nimport * as ImagePicker from \"expo-image-picker\";\nimport { AquienpzClient } from \"@aquienpz/sdk\";\nimport {\n  createExpoUploader,\n  listResumableSessions,\n} from \"@aquienpz/sdk/expo\";\n\nconst aq = new AquienpzClient({\n  endpoint:   process.env.EXPO_PUBLIC_AQUIENPZ_URL!,\n  apiKey:     process.env.EXPO_PUBLIC_AQUIENPZ_API_KEY!, // amk_rt_*\n  tenantCode: \"your-tenant\",\n  tenantId:   42,\n});\n\nexport function UploadHeroScreen() {\n  const [progress, setProgress] = useState(0);\n  const [url, setUrl] = useState<string | null>(null);\n\n  // Offer to resume anything from a prior app launch on boot.\n  useEffect(() => {\n    listResumableSessions().then((sessions) => {\n      // …show a banner if sessions.length > 0\n    });\n  }, []);\n\n  async function pickAndUpload() {\n    const picked = await ImagePicker.launchImageLibraryAsync({\n      mediaTypes: ImagePicker.MediaTypeOptions.Videos,\n      allowsMultipleSelection: false,\n    });\n    if (picked.canceled || !picked.assets[0]) return;\n    const { uri, mimeType, fileName } = picked.assets[0];\n\n    const task = createExpoUploader(aq, {\n      file: {\n        uri,\n        mime: mimeType ?? \"video/mp4\",\n        name:  fileName ?? \"tour.mp4\",\n      },\n    });\n    task.on(\"progress\", ({ ratio }) => setProgress(ratio));\n\n    const { assetId } = await task.start();\n    // Bind to a slot so the storefront picks it up without a redeploy.\n    await aq.slots.bind(\"storefront.tour.video\", { assetId, preset: \"video\" });\n    const resolved = await aq.slots.resolve(\"storefront.tour.video\");\n    setUrl(resolved.url);\n  }\n\n  return /* …UI with pickAndUpload + progress bar + <Image source={{ uri: url }}/> */;\n}\n```\n\nPeer dep: `@aquienpz/asset-uploader-expo`. Ships a config plugin for the Expo\nprebuild step (background mode + native module registration); add it to\n`app.json` under `plugins` before running `expo prebuild`.\n\n## Next.js App Router (Server Components)\n\nThe cheapest path: resolve slots at render time on the server. No client JS,\nno provider, no hook. The slot URLs ship as plain `<img>` markup.\n\n```tsx\n// app/page.tsx — Server Component\nimport { AquienpzClient } from \"@aquienpz/sdk\";\n\nconst aq = new AquienpzClient({\n  endpoint:   process.env.AQUIENPZ_URL!,\n  apiKey:     process.env.AQUIENPZ_API_KEY!, // amk_rt_* — server-only\n  tenantCode: \"your-tenant\",\n  tenantId:   42,\n});\n\nexport default async function Page() {\n  const heroes = await aq.slots.resolveMany([\n    \"storefront.home.hero\",\n    \"storefront.home.tile-1\",\n    \"storefront.home.tile-2\",\n  ]);\n\n  return (\n    <>\n      {heroes[\"storefront.home.hero\"].url && (\n        <img src={heroes[\"storefront.home.hero\"].url} alt=\"\" />\n      )}\n      {/* … */}\n    </>\n  );\n}\n```\n\nKeep the API key on the server — never expose `amk_rt_*` to `NEXT_PUBLIC_*`.\nUploads from Client Components should go through a thin BFF route handler that\nproxies `aq.upload()` server-side.\n\nFor images that benefit from `next/image`, use `aq.urlFor()` + `aq.srcSetFor()`\nto emit a static URL set; Next then handles its own optimization pipeline.\n\n## React hooks (Client Components / SPA)\n\nReactive resolution on the client. The provider holds the configured client;\neach hook subscribes to the in-process cache.\n\n```tsx\n// app/providers.tsx — Client Component\n\"use client\";\nimport { AquienpzClient } from \"@aquienpz/sdk\";\nimport { AquienpzProvider } from \"@aquienpz/sdk/react\";\n\n// In production, get apiKey from a /session route instead of bundling it.\nconst client = new AquienpzClient({\n  endpoint:   process.env.NEXT_PUBLIC_AQUIENPZ_URL!,\n  apiKey:     process.env.NEXT_PUBLIC_AQUIENPZ_API_KEY!,\n  tenantCode: \"your-tenant\",\n  tenantId:   42,\n});\n\nexport function Providers({ children }: { children: React.ReactNode }) {\n  return <AquienpzProvider client={client}>{children}</AquienpzProvider>;\n}\n```\n\n```tsx\n// app/hero.tsx\n\"use client\";\nimport { useSlot } from \"@aquienpz/sdk/react\";\n\nexport function Hero() {\n  const { url, isLoading } = useSlot(\"storefront.home.hero\");\n  if (isLoading) return <Skeleton />;\n  if (!url) return <PlaceholderHero />;\n  return <img src={url} alt=\"\" />;\n}\n```\n\nWorks in any React 18+ host: Vite, CRA, Remix, Astro islands, Expo Router,\nReact Native — wherever `react-dom` (or `react-native`) runs.\n\n## Why slots?\n\nHardcoding `https://cdn.your-tenant.com/abc123.webp` in source code couples\ndeploys to brand decisions. With slots:\n\n| Without slots | With slots |\n|---|---|\n| Edit URL in code | Drag-drop a new asset in asset-lab-web |\n| Commit + PR + deploy | Cache refreshes (60s default) |\n| 5-30 minute roundtrip | Instant |\n\nThe slot key (`storefront.home.hero`, `webapp.wizard.pool-type.icon-1`) is the\n**stable contract** between code and brand operations. Tenants own the bindings;\ncode is a passive consumer.\n\n## URL conventions — variants are tenant-scoped, transforms are not\n\nTwo delivery paths, **by design**:\n\n| Kind | Builder | URL shape | Tenant in path? |\n|---|---|---|---|\n| Variant / preset | `urlFor`, `srcSetFor`, upload `cdnUrl` | `<cdn>/<tenantId b36>/v/<sha>-<preset>.<ext>` | **Yes** — `/4/v/<sha>-lg.webp` |\n| On-the-fly transform | `transform`, `transformSrcSet` | `<cdn>/t/<dsl>/<sha>.<ext>` | **No** — `/t/width=1280,.../<sha>.webp` |\n\nThe transform service is content-addressed by `sha` and resizes from the source on demand,\nso it carries **no tenant segment**. Hand-building a transform URL as `/<tenant>/t/...` **404s**.\n(Variants are stored per-tenant, so those DO carry the tenant prefix.) Always use the SDK\nbuilders rather than concatenating paths — and never prepend the tenant to a `/t/` URL.\n\n## Presets\n\nPresets are **platform-wide and fixed** — every tenant gets the same set,\ngenerated server-side by the asset-manager's variant pipeline. A tenant\ncannot define custom dimensions through the SDK; they pick which preset a\nslot defaults to and emit responsive `srcSet` for browser-side resizing.\n\n### Image presets\n\n| Preset    | Code | Max-side           | Typical use |\n|-----------|------|--------------------|---|\n| `thumb`   | `q`  | 256×256 smart-crop | avatars, micro-tiles |\n| `sm`      | `s`  | 640                | mobile thumbs, list cards |\n| `md`      | `m`  | 1280               | desktop cards, modal previews |\n| `lg`      | `l`  | 1920 (≈2K)         | hero, full-bleed |\n| `xl`      | `x`  | 3840 (4K)          | print, 4K screens |\n\n**Defaults — what actually runs:**\n\n| Caller path                                           | Variants generated on upload |\n|-------------------------------------------------------|------------------------------|\n| `aq.upload(file)` (SDK, no `presets`)                 | `original` only              |\n| `POST /assets/upload-url` (HTTP direct, no `presets`) | `original` only (same as SDK) |\n| `presets: [\"original\"]` (either path)                 | `original` only              |\n| `presets: [\"thumb\",\"sm\",\"md\",\"lg\"]`                   | exactly the four listed      |\n\nOmitting `presets` is always equivalent to `[\"original\"]` — the platform\nnever auto-generates the responsive ladder. This keeps logo / SVG /\none-shot uploads cheap and avoids surprise R2 writes (the ladder is 4×\nthe source bytes). Apps that want responsive sizes pass them explicitly:\n\n```ts\nawait aq.upload(file, {\n  presets: [\"thumb\", \"sm\", \"md\", \"lg\"],   // four WebP variants\n});\n```\n\nOr add missing variants later without re-uploading:\n\n```ts\nawait aq.assets.regenerate(assetId, { presets: [\"thumb\", \"sm\", \"md\", \"lg\"] });\n```\n\nVariants are WebP `quality: 75–80`. Total R2 cost when generating the\nfull responsive ladder ≈ 4× source bytes.\n\n**Variants never upscale.** The pipeline clamps each preset's target to\n`min(presetMaxSide, sourceMaxSide)`. A 1080×720 photo asked for `xl`\n(3840) yields a 1080×720 `xl` variant, not a blurry 3840-wide stretch.\nThe preset is a **ceiling**, not a target.\n\n### Non-image / passthrough\n\n| Preset    | Code | Purpose |\n|-----------|------|---|\n| `original`| `o`  | Raw uploaded bytes, no transformation. Used today for non-image MIMEs (PDFs, audio, etc.). |\n\n### Video presets\n\n| Preset    | Code | Purpose                |\n|-----------|------|------------------------|\n| `poster`  | `p`  | extracted poster WebP  |\n| `video`   | `v`  | original MP4           |\n| `aiproxy` | `a`  | low-res proxy for AI captioning / search (opt-in) |\n\n### Per-upload preset selection\n\n**The SDK's default is `[\"original\"]`** — calling `aq.upload(file)`\nwith no `presets` option stores only the raw bytes. Add the\nresponsive ladder when you actually need it, or generate it later\nwith `aq.assets.regenerate()` (no re-upload required).\n\n```ts\n// Default: only the original variant lands on the CDN.\nconst { assetId, cdnUrl } = await aq.upload(logoFile);\n// asset.presets === \"o\"\n// cdnUrl = https://8ok.uk/<sha>-o.svg\n```\n\n**Responsive ladder (the old default — now explicit):**\n\n```ts\nawait aq.upload(heroFile, {\n  fileName: \"homepage-hero.jpg\",\n  presets: [\"thumb\", \"sm\", \"md\", \"lg\"],  // classic 4-step\n});\n```\n\n**4K hero with the full size ladder:**\n\n```ts\nawait aq.upload(heroFile, {\n  presets: [\"thumb\", \"sm\", \"md\", \"lg\", \"xl\"],\n});\n// asset.presets === \"qsmlx\"; aq.srcSetFor(asset) now emits an xl entry.\n```\n\n**Video without the AI proxy transcode:**\n\n```ts\nawait aq.upload(videoFile, {\n  presets: [\"poster\", \"video\"],  // skip aiproxy\n});\n```\n\n**Large video — bump the readiness timeout:**\n\n`aq.upload()` waits up to **5 minutes** by default for the asset to\ntransition to `ready`. Transcode time scales with input size and CPU,\nso videos ≥30 MB (especially HLS ladders) can blow past that. Opt in\nto a longer deadline via `timeoutMs`:\n\n```ts\n// Large video (>30MB): bump timeout to 15min\nawait aq.upload(file, { timeoutMs: 15 * 60_000 });\n```\n\nThe default is unchanged — existing call sites need no migration.\n\nVariants never upscale — each size preset is a **ceiling**, not a\ntarget. A 1080×720 source asked for `xl` (3840) yields a 1080×720 xl\nvariant.\n\n**Caveat (content-addressed dedup):** if someone already uploaded the\nsame bytes with different presets, `aq.upload()` returns the existing\nasset without re-processing. The result's `cdnUrl` will use whichever\npreset is actually available on that asset (the SDK picks `lg → md → sm\n→ thumb → xl → original` for images, `video → poster` for videos). To\nadd variants to an existing asset, use `aq.assets.regenerate()`.\n\n## Adding variants later (no re-upload)\n\nThe most common flow with the new default:\n\n```ts\n// Day 0 — upload original only.\nconst { assetId } = await aq.upload(logoFile);\n\n// Day 7 — peek at what's there.\nconst variants = await aq.assets.variants(assetId);\nconsole.log(variants.map((v) => v.preset));  // → [\"original\"]\n\n// Day 7 — need a thumb for an avatar slot. Generate it server-side,\n// merged with the existing variant set.\nawait aq.assets.regenerate(assetId, { presets: [\"thumb\"] });\n\nconst after = await aq.assets.variants(assetId);\nconsole.log(after.map((v) => v.preset));     // → [\"original\", \"thumb\"]\n```\n\n`regenerate()` merges — existing variants you didn't ask for stay put.\nYou can call it many times; it's idempotent per preset.\n\n### Source-byte lifecycle (why regenerate always works)\n\nTwo distinct R2 prefixes; most people only care about one:\n\n| R2 path | Role | Lifetime |\n|---|---|---|\n| `raw/<sha>.<ext>` | Landing zone for the presigned PUT. `/process` reads it once to verify the SHA. Never CDN-served. | Deleted ~24h after upload by the cleanup job |\n| `variants/<sha>-<preset>.<ext>` | The CDN-served files. `<sha>-o.<ext>` is the permanent home of `original`. | **Permanent** — only deleted by explicit DELETE on the asset or variant |\n\n`regenerate()` walks a fidelity-ordered fallback chain until it finds\nusable bytes — it **never fails on a still-present asset**:\n\n```\n1. variants/<sha>-o.<ext>     ← permanent original (best)\n2. raw/<sha>.<ext>            ← exact upload bytes, only during the 24h grace\n3. variants/<sha>-x.webp      ← xl\n4. variants/<sha>-l.webp      ← lg\n5. variants/<sha>-m.webp      ← md\n6. variants/<sha>-s.webp      ← sm\n7. variants/<sha>-q.webp      ← thumb (last resort — smart-cropped square,\n                                  so aspect ratio of derived variants\n                                  will inherit the thumb's crop)\n```\n\nThe no-upscale clamp guarantees we never invent pixels: asking for\n`lg` (1920) from a 640 `sm` source yields a 640-side `lg` variant.\nThe result type's `sourceUsed` field tells you which fallback was\npicked so you can decide whether the quality is good enough:\n\n```ts\nconst result = await aq.assets.regenerate(assetId, { presets: [\"xl\"] });\nif (result.kind === \"image\" && result.sourceUsed !== \"original\" && result.sourceUsed !== \"raw\") {\n  console.warn(`xl was derived from ${result.sourceUsed} — quality degraded`);\n}\n```\n\n**Recommendation:** include `\"original\"` in the upload preset list\nwhen you want guaranteed lossless future re-derivation. The SDK's\ndefault (`[\"original\"]`) already does this for you.\n\n`aq.assets.variants(id)` and `aq.assets.regenerate(id, opts)` are\nfully typed — your editor autocompletes the preset names and the\nreturned shape gives you `{ preset, url, width?, height?, bytes }[]`.\n\n## On-the-fly transformations\n\nPre-generated presets (`thumb`/`sm`/`md`/`lg`/`xl`) cover the common cases.\nFor everything else — exact CSS pixel widths, art-directed crops, devicePixelRatio\nladders, square thumbs from rectangular sources — call `aq.transform()`:\n\n```tsx\nimport { AquienpzClient } from \"@aquienpz/sdk\";\n\nconst aq = new AquienpzClient({ /* ... */ });\nconst asset = await aq.assets.byHash(sha256);\n\n// Single URL\n<Image\n  src={aq.transform(asset!, { width: 1280, format: \"auto\" })}\n  alt=\"...\"\n/>\n\n// Responsive — one transform URL per width, all other params shared\n<Image\n  src={aq.transform(asset!, { width: 1280 })}\n  srcSet={aq.transformSrcSet(asset!, [640, 960, 1280, 1920])}\n  sizes=\"(max-width: 768px) 100vw, 50vw\"\n  alt=\"...\"\n/>\n```\n\n### DSL params\n\n| Param | Values | Default |\n|---|---|---|\n| `width` | a **`TransformWidth`** — predefined ladder; off-ladder → compile error (see note) | — |\n| `height` | `1`–`7680` (`number`; aspect ratio derived from `width`) | — |\n| `fit` | `cover` / `contain` / `fill` / `inside` / `outside` | `cover` |\n| `gravity` | `auto` / `face` / `center` / `north` / `south` / `east` / `west` | `center` |\n| `format` | `auto` / `avif` / `webp` / `jpeg` / `png` | `auto` (→ `webp`) |\n| `quality` | `auto` / `1`–`100` | `auto` (source-complexity-adaptive) |\n| `dpr` | `1` / `2` / `3` | `1` |\n\n> **`width` is strongly typed.** `TransformOptions.width` is a **`TransformWidth`** — the\n> predefined CDN ladder (`160, 240, 256, 320, 400, 480, 600, 640, 800, 960, 1080, 1200,\n> 1280, 1440, 1600, 1920, 2560, 3840`, exported as `TRANSFORM_WIDTHS`). An off-ladder\n> width is a **compile error**: the edge whitelists exactly these as a DoS guard and\n> HTTP 400s anything else on unsigned URLs. Need a custom off-ladder width? **Sign it** —\n> `aq.transform(asset, { width: 1490 }, { sign: true })` and `getSignedTransformUrl` take\n> `SignedTransformOptions` (where `width` widens to `number`); a valid `?sig=` earns the\n> edge-whitelist bypass. `transformSrcSet` / `getTransformSrcSet` deliberately keep\n> `number[]` because a responsive ladder may legitimately include DPR-row widths (e.g.\n> `2400`). `height` stays `number` — for the responsive path it's derived from `width`\n> by aspect ratio; only fixed-canvas crops / `genfill` set it explicitly.\n\n`format=auto` resolves to **WebP** by default. The bench in `apps/asset-manager/bench/avif-vs-webp-summary.md`\n(100 random realtyone-cr `lg.webp` samples, sharp 0.34.5) showed AVIF was 4.5–9.8% **larger**\nthan WebP in every source-size bracket with virtually identical SSIM. The policy lives\nin a single function (`pickAutoFormat` in `transform.format-policy.ts`) so re-evaluation\nwhen libavif improves is a one-file swap.\n\n`gravity=face` runs the source image through a ~1 MB Ultra-Light face\ndetector (ultraface-RFB-320 via ONNX Runtime) and crops to the\nhighest-confidence face with sensible padding (50 % of face dimensions\non each side, clamped to source bounds, keeping the requested aspect\nratio). When no face is detected, it falls back to sharp's `attention`\nstrategy and returns the response with `X-Transform-Face: fallback` so\nyou can detect the cache state. Cost: ~10 ms inference per image\n(warm); ~150 ms cold-start on the first request after a new Cloud Run\ninstance boots.\n\n`quality=auto` adapts the per-format quality to source complexity\n(luminance stddev via sharp `.stats()`):\n\n| Bucket (stddev) | WebP | AVIF | JPEG |\n|---|---:|---:|---:|\n| simple (< 25) — logos, solids | 55 | 45 | 70 |\n| normal (25–55) — most photos | 70 | 60 | 80 |\n| complex (≥ 55) — busy textures | 72 | 65 | 82 |\n\nValidated on 100 random realtyone-cr `lg.webp` samples: **+15.4 %\nbytes saved vs fixed `quality=80` baseline, |ΔSSIM| 0.0011** (budget\n0.005). See `bench/auto-quality-summary.md`. Both the bucket\nboundaries and per-format table live in\n`transform.quality-policy.ts` — re-tune by editing the constant and\nre-running `bun run apps/asset-manager/scripts/bench-auto-quality.ts`.\n\n### Canonicalization & caching\n\nURLs with the same params in different order share the same R2 cache entry:\n\n```ts\naq.transform(asset, { width: 480, fit: \"contain\" })\n// → https://8ok.uk/t/fit=contain,width=480/<sha>.webp\n\naq.transform(asset, { fit: \"contain\", width: 480 })\n// → https://8ok.uk/t/fit=contain,width=480/<sha>.webp   (same URL)\n```\n\nThe server canonicalizes incoming DSL the same way the SDK does (sort keys\nalphabetically, lowercase string values, drop `undefined`) and hashes the\ncanonical string into the R2 cache key — so even non-SDK URLs (e.g. typed\nby a developer in a browser bar) collapse onto the same cache entry as long\nas they specify the same params.\n\n### Signed URLs + strict mode (Phase 3)\n\nEvery tenant has an HMAC-SHA256 signing key (`signing_key` column in\n`public.tenants`, 32 random bytes generated on tenant creation).\nOptionally enable `strict_transforms = true` to reject unsigned URLs\nwith a 401 — useful when transform URLs leak from a private surface\n(internal admin, b2b portal) and you don't want third parties\ngenerating arbitrary crops.\n\n```ts\nconst aq = new AquienpzClient({\n  endpoint:   process.env.AQUIENPZ_URL!,\n  apiKey:     process.env.AQUIENPZ_API_KEY!,\n  tenantCode: \"your-tenant\",\n  tenantId:   42,\n  // Fetch via GET /admin/projects/your-tenant; do NOT ship to the browser.\n  signingKey: process.env.AQUIENPZ_SIGNING_KEY!,\n});\n\n// Async when { sign: true } is set — overload returns Promise<string>.\nconst signed = await aq.transform(asset, { width: 1280 }, { sign: true });\n// → https://8ok.uk/t/width=1280/<sha>.webp?sig=<64-hex>\n\n// Responsive\nconst srcset = await aq.transformSrcSet(\n  asset,\n  [640, 960, 1280, 1920],\n  {},\n  { sign: true },\n);\n```\n\nSignature shape: `HMAC-SHA256(signingKey, \"<canonical-DSL>/<filename>\")`,\nhex-encoded. The server canonicalizes the URL the same way the SDK does\n(sort keys, lowercase strings), so two URLs with the same params in\ndifferent order accept the same signature.\n\n**Admin operations** (system-scope admin key):\n\n```bash\n# Rotate the signing key — invalidates every URL signed with the old one.\ncurl -X POST -H \"Authorization: Bearer amk_ad_...\" \\\n  https://aquienpz-asset-manager.../admin/projects/your-tenant/rotate-signing-key\n# → { ok: true, tenantId, code, signingKey: \"<64-hex>\" }\n\n# Flip strict mode on/off.\ncurl -X PATCH -H \"Authorization: Bearer amk_ad_...\" -H \"Content-Type: application/json\" \\\n  -d '{\"enabled\":true}' \\\n  https://aquienpz-asset-manager.../admin/projects/your-tenant/strict-transforms\n```\n\n**Rotation cost**: cached transform variants on R2 are NOT re-keyed by\nthe signature, so they keep serving the same bytes. Only the URLs your\nconsumers hold need re-signing. Coordinate the rotation with anyone who\npre-signs at build time (e.g. SSG / next-build).\n\n### Background removal (`effect=removebg`)\n\n```ts\n// Full-resolution transparent PNG cutout\nconst url = aq.transform(asset, { effect: \"removebg\" });\n// → https://8ok.uk/t/effect=removebg/<sha>.png\n\n// Cut out + resize in one call\nconst thumbUrl = aq.transform(asset, { effect: \"removebg\", width: 400 });\n// → https://8ok.uk/t/effect=removebg,width=400/<sha>.png\n\n// Or convert format alone (no resize / no effect) — useful e.g. to\n// force a JPEG copy of a WebP source for legacy email clients\nconst jpegUrl = aq.transform(asset, { format: \"jpeg\" });\n// → https://8ok.uk/t/format=jpeg/<sha>.jpg\n```\n\n`effect=removebg` is provider-pluggable via the\n`BG_REMOVAL_BACKEND` env on the asset-manager:\n\n- **`local`** (default) — U²-Net ONNX inference, Apache 2.0 weights\n  shipped under `/app/models/u2net.onnx` (~176 MB, fetched at\n  Docker build time, sha256-verified). ~1-2 s warm CPU inference,\n  ~5-7 s cold-start. Free runtime.\n- **`replicate`** — proxies to Replicate's `851-labs/background-remover`\n  (BRIA-quality, commercially licensed via Replicate). ~3-8 s GPU,\n  ~$0.001-0.005 per image. Requires `REPLICATE_API_TOKEN` in Secret\n  Manager.\n\nIn both cases the route caches the PNG in R2 under the standard\n`<sha>-t<dslHash>.png` key, so subsequent identical requests are 302\nredirects to the CDN — no inference, no per-image cost. **Always\nforces `format=png`** because the entire point is preserving alpha.\n\nThe output is the same dimensions as the source. Chain with `width`\nto resize the cutout in a single request (cached as one R2 entry per\ncanonical DSL).\n\nTo re-tune or swap the model:\n1. Drop a new `.onnx` into `apps/asset-manager/src/features/assets/bg/`\n2. Update `MODEL_PATH` + preprocessing constants in `bg/remove.ts`\n3. Update the Dockerfile's `COPY src/features/assets/bg/*.onnx /app/models/`\n4. Re-bench against a sample set (a CSV in `apps/asset-manager/bench/`\n   makes sense once the comparison is non-trivial).\n\n### Generative fill / aspect outpaint (`effect=genfill`)\n\nExtend a source image into a different aspect ratio without the\nawkward edge mirroring that classic content-aware fill produces.\nPrimary use case: building OG cards (1200×630) from portrait listing\nphotos, or 1:1 social tiles from 16:9 originals.\n\n```ts\n// 1200×630 OG card from a portrait listing cover — gutters generated\n// by Flux-Fill Pro, source pasted centered.\nconst ogUrl = aq.transform(asset, {\n  effect: \"genfill\",\n  width: 1200,\n  height: 630,\n});\n// → https://8ok.uk/t/effect=genfill,height=630,width=1200/<sha>.png\n\n// 1:1 social tile from a landscape original\nconst tileUrl = aq.transform(asset, {\n  effect: \"genfill\",\n  width: 1080,\n  height: 1080,\n});\n```\n\n**Requires both `width` and `height`.** Without them the route returns\n422 — the effect needs an explicit target canvas to know what to\noutpaint.\n\n**Output defaults to WebP** at q=85 (~150KB for a 1200×630 OG card —\n12× lighter than raw Flux-Fill PNG output). Honors `format=` for\nexplicit overrides:\n\n| Format | Bytes (typical 1200×630) | Use case |\n|---|---|---|\n| `format=webp` (default) | ~150KB | OG cards, social tiles, storefront cards |\n| `format=png` | ~1.7MB | Lossless — print, marketing fold-outs |\n| `format=avif` | ~120KB | Modern browsers, even better compression |\n| `format=jpeg` | ~180KB | Legacy email clients |\n\n**Real-estate caveat**: outpainting is mediocre when the target aspect\ndiffers heavily from the source (1:1 from horizontal photo → tiled\nartifacts because the model has to invent rooftops and floors).\nReserve `genfill` for SMALL aspect deltas (OG card 1200×630 from\nlandscape source ✓). For bigger crops, prefer `gravity=auto` smart-crop\nwhich is deterministic and free (no Replicate cost, no AI invention).\n\nPowered by Replicate's `black-forest-labs/flux-fill-pro`. ~$0.05 per\nfirst request per (sha, dsl, format) tuple; subsequent identical\nrequests are 302 redirects to the R2 cache — zero Replicate cost.\n\nRequires `REPLICATE_API_TOKEN` in the asset-manager's Secret Manager\nsecrets. Same token as `BG_REMOVAL_BACKEND=replicate`; no separate\nprovisioning needed.\n\n**Short-circuit**: when the source already matches the target aspect\nexactly (resized to fill the canvas with zero padding), the server\nreturns the resized PNG without calling Replicate — you don't pay\n$0.05 for an effective no-op.\n\n### Video transforms (`aq.transformVideo`)\n\nThe same DSL works for videos too — the server branches on the asset's\n`kind` column. Image params (`width`, `height`, `fit`) carry over;\nvideo adds `start` (seconds, decimal OK) + `duration` (seconds, 1..300).\n\n```ts\n// 16:9 source → 9:16 mobile clip, first 15 s, h.264 mp4\nconst portraitUrl = aq.transformVideo(asset, {\n  width: 1080,\n  height: 1920,\n  fit: \"cover\",\n  start: 0,\n  duration: 15,\n});\n\n// WebM output for bandwidth-conscious storefronts\nconst webmUrl = aq.transformVideo(asset, { format: \"webm\", width: 1280 });\n```\n\n**First request is async**. Cache miss → Cloud Run Job runs ffmpeg\n(typically 5-30 s for short clips) → output written to R2. The route\nreturns **202 Accepted** with `Retry-After: 10` and a `Location`\nheader pointing at the eventual CDN URL. The response body has\n`{ status, message, retryAfterSec, outputUrl }`. Subsequent requests\nhit the cache → **302** to the CDN.\n\nConsumer pattern with Video.js v10 / `<video>`:\n\n```tsx\nconst src = aq.transformVideo(asset, { width: 1080, height: 1920 });\n// Pass directly to <video src={src} />. While the Job runs the\n// browser sees 202 → retry; once cached, the 302 → CDN. Most players\n// retry transparently; if yours doesn't, poll `src` every 5 s until\n// `Response.redirected` is true or the body content-type starts with\n// \"video/\".\n```\n\nImplementation: extends the EXISTING `asset-processing` Cloud Run Job\nwith a `transform-video` op. Reuses the same Cloud Tasks dispatch\npattern as `process-video` and `compose-slideshow`. Idempotent —\nre-dispatching the same DSL noops if R2 already has the output.\n\n### Adaptive HLS streaming (`aq.streamingUrl`)\n\nFor long-form video — property tours, walkthroughs — point an\nHLS-aware player at the master playlist:\n\n```tsx\n<video\n  src={aq.streamingUrl(asset)}\n  controls playsInline\n  // Video.js v10 ships native HLS via @videojs/http-streaming —\n  // no plugin needed. Same with hls.js or iOS Safari.\n/>\n\n// Sub-clip (HLS ladder built only for the clipped range)\nconst teaser = aq.streamingUrl(asset, { start: 0, duration: 30 });\n```\n\nFirst request to a new HLS URL returns **202 Accepted** with\n`Retry-After: 20` while a Cloud Run Job builds the multi-rung ladder\n(typically 1-3 min for a 90 s source). Subsequent requests get\n**302** to the cached `master.m3u8`. The R2 layout:\n\n```\n<tid>/v/<sha>-hls<dslHash>/master.m3u8        ← entry point\n<tid>/v/<sha>-hls<dslHash>/240p/playlist.m3u8\n<tid>/v/<sha>-hls<dslHash>/240p/seg-000.ts\n<tid>/v/<sha>-hls<dslHash>/360p/...\n…\n<tid>/v/<sha>-hls<dslHash>/1080p/...\n```\n\nThe ladder shrinks to fit the source: a 480p source produces three\nrungs (240p / 360p / 480p), a 1080p source produces five, and a 4K\nsource goes up to 2160p. The player picks the right rung on the fly\nbased on the current connection — a user on 3G starts at 240p and\nclimbs to 1080p as bandwidth improves, vs the monolithic MP4 that\neither loaded or timed out.\n\n### Billing model\n\nTransforms are billed as **storage**, not as \"transformations\" the way\nCloudinary does — one R2 PUT per unique canonical DSL, then served from\nthe CDN cache forever (until manually invalidated). The cache key is\ndeterministic, so identical DSLs across deploys/tenants don't re-encode;\nmounting an existing CDN URL costs zero compute.\n\n## Palette + LQIP (compact placeholder UX)\n\nEvery successfully decoded image gets a palette extracted alongside\nthe upload — a tiny 7-color set you can use for ambient gradients,\nfallback backgrounds, or themed UI accents. It survives across all\npreset selections (yes, even `presets: [\"original\"]`), because\npalette is metadata derived from the source bytes, not from a\nspecific resized variant.\n\n```ts\nimport {\n  getPaletteBlurBackground,\n  pickAmbientBackground,\n  getAmbientGradient,\n  getTextColorForBackground,\n} from \"@aquienpz/sdk\";\n\nconst asset = await aq.assets.get(assetId);\n//   asset.palette = { d: \"#1a1a1a\", v: \"#c5a95e\", m: \"#8b7d4f\", ... }\n//   asset.blur    = \"data:image/webp;base64,UklGRhAA...\"  // tiny LQIP\n\n// Compact 4-stop gradient for hero / card backgrounds:\nconst bg = getAmbientGradient(asset.palette);\n//   bg = \"linear-gradient(135deg, oklch(...), oklch(...))\"\n\n// Auto-pick text color that contrasts with the chosen ambient:\nconst fg = getTextColorForBackground(asset.palette);\n//   fg = \"#fff\" | \"#000\" | similar\n\n// Or just the blurry LQIP for a CSS background placeholder:\nconst placeholder = getPaletteBlurBackground(asset.palette);\n```\n\nThe wire format is intentionally tight: `{d, v, m, dv, lv, dm, lm}`\n(dominant, vibrant, muted, dark-vibrant, light-vibrant, dark-muted,\nlight-muted). 7 hex strings per asset — much smaller than a full\nbase64 LQIP, but composes into nicer ambient UX.\n\nWhen sharp can't decode the image (SVG sources, exotic formats,\ndeliberately corrupted bytes), palette + blur silently come back\n`null`. The rest of the pipeline still succeeds.\n\nPer-slot default:\n\n```ts\nawait aq.slots.bind(\"storefront.hero\", { assetId, preset: \"lg\" });\n```\n\nPer-call override (the resolver respects this over the slot's default):\n\n```ts\nconst { url } = await aq.slots.resolve(\"storefront.hero\", { preset: \"md\" });\n```\n\nResponsive `<img srcSet>` across all available presets:\n\n```tsx\n<img\n  src={aq.urlFor(asset, \"lg\")}\n  srcSet={aq.srcSetFor(asset)}\n  sizes=\"(max-width: 768px) 100vw, 1280px\"\n  alt=\"\"\n/>\n```\n\nIf you need a dimension that doesn't exist, two options: use the closest\npreset and let the browser scale, or file an issue to add it to the\nserver-side pipeline (a platform-wide addition, not a per-tenant one).\n\n### CDN URL format\n\n`<cdnBase>/<sha16>-<presetCode>.<ext>`\n\nExample: `https://8ok.uk/c482458e824c730e-q.webp` (the `thumb` preset of\nsha `c482458e…` rendered as WebP). The path is content-addressed, so the\nsame source bytes produce the same URL regardless of which tenant uploaded\nthem — and the same URL never invalidates.\n\n## Auth\n\nAuth is a Better Auth API key (`amk_rt_*`) emitted by\n`aquienpz/bootstrap-project.ts` per tenant. The key's metadata holds the tenant\nid, so `X-Tenant-Code` is log-only.\n\nAPI key tiers:\n\n- `amk_rt_*` — runtime / read-and-write\n- `amk_ad_*` — admin (slot bind, asset delete)\n- `amk_ci_*` — CI / batch jobs\n\n## API surface\n\n| Namespace | Method | Description |\n|---|---|---|\n| `aq.slots` | `resolve(key)` / `resolveMany(keys)` | Read-side, cached 60s |\n| `aq.slots` | `list({prefix})` | Admin tree view |\n| `aq.slots` | `bind(key, {assetId, preset})` | Admin rebind |\n| `aq.slots` | `unbind(key)` | Remove binding |\n| `aq.slots` | `invalidateCache(key?)` | After admin rebind |\n| `aq.assets` | `byHash(sha)` / `byHashes([])` | Lookup |\n| `aq.assets` | `list({limit, cursor})` | Paginated |\n| `aq.assets` | `get(id)` | Full DTO |\n| `aq.assets` | `patchMetadata(id, {…})` | Merge JSON |\n| `aq.upload(file, {fileName})` | | Hash-dedup, returns canonical URL |\n| `aq.urlFor(asset, preset)` | | Build URL from DTO |\n| `aq.srcSetFor(asset)` | | Responsive `<img srcSet>` |\n| `aq.usage` | `snapshot()` | Storage + today + last 30 days totals (current tenant) |\n| `aq.usage` | `timeseries(days)` | Daily rollup for charts (1..365 days) |\n| `aq.usage` | `keys()` | Per-API-key breakdown month-to-date |\n\n## Usage / consumption\n\nCloudinary-style \"where am I in my plan\" view, scoped to the API key's\nown tenant (no cross-tenant data ever leaks):\n\n```ts\nconst usage = await aq.usage.snapshot();\n// {\n//   tenant: { id: 4, code: \"realtyone-cr\" },\n//   storage: { totalBytes: 4_810_000_000, assetCount: 15_760 },\n//   today: { reads: 3201, writes: 18, processes: 6, bytesIn: 12_400_000, ... },\n//   last30Days: { reads: 86_400, writes: 412, ... }\n// }\n\nconst chart = await aq.usage.timeseries(30); // for a 30-day line chart\nconst byKey = await aq.usage.keys();         // who's using the most quota\n```\n\nBacked by the daily rollup of `assets.api_key_usage` →\n`assets.tenant_usage_daily`. The \"today\" window queries the raw\n`api_key_usage` table since the rollup runs once per day at ~00:30 UTC.\n\n## License\n\nUNLICENSED — internal use only.\n","readmeFilename":"README.md"}