{"_id":"@ducktors/storagebus-abstract","_rev":"6-8ee0a71ed73bec7c23c397e1cb4681d1","name":"@ducktors/storagebus-abstract","dist-tags":{"latest":"0.10.4"},"versions":{"0.10.0":{"name":"@ducktors/storagebus-abstract","version":"0.10.0","keywords":[],"author":{"url":"https://ducktors.dev","name":"Ducktors","email":"your@ducktors.dev"},"license":"MIT","_id":"@ducktors/storagebus-abstract@0.10.0","maintainers":[{"name":"tehkapa","email":"kapa89@me.com"},{"name":"fox1t","email":"maksim@sinik.it"}],"dist":{"shasum":"4feac49eebad0a5c24cc13213ee0e0dc08d21413","tarball":"https://registry.npmjs.org/@ducktors/storagebus-abstract/-/storagebus-abstract-0.10.0.tgz","fileCount":14,"integrity":"sha512-ocUqCJqh/7zZEUlP0NPexRKqkUjXTp7xVo804p7XSbzk9moplj9XZk5cvCV6S2TM6ZEMrkGYkGom2NIcM6qoZw==","signatures":[{"sig":"MEQCIA9jNNFeE623vRpvVsRr5YXTXGxDu4YYv7in7iupRA8mAiBjszFVm6syn6LKgOxKCpyAF2vO1UILqzWLPveU67lzwA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":55637,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjhfwSACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq0Hg/+PJvH9UukeBxpQJZcva44da2GJDulybX8/QEYmF7SwILSw1hZ\r\ncv0ILH/1rnz6XBy9SGC2ncZM4XBEAmzC3ZxhWdDOjzCLETC1PJOMv9Nptv6v\r\ngDrOYF5zrbed4mHqEiXu6KjR2SZw1xI9RIQCt91VXOa4aysWj/W6z9ZZLSA9\r\nzf4TOOrisJ6Ppk+QaJmy1OZ3ROWNr8n+w9svIhGrD5w3bo6QkSqAcKIsciqj\r\nvawLJ5mZlOEEtViNxP9TDHALysg0IJKtRscDxS8TZzExuy57a6BE/U4nC2+N\r\n4LSmaAF2aEScSkEYu7dJgT3RL9ZmxkdrvylRLHbnbnQmVz/JmVJ9jEn0Oa7g\r\nKbitf36Ohqbg1tgR+2xvkn3qzEgTBu9GPVc9rdmhNO3OlmiFuH3gaazE8ZKF\r\nSS10HiISoZKSeO6EwGbwAxVBnQZkbW1lkcPeHUM5ta93d/dOZ9RuJISgVDgi\r\nkC5btx6UjXREi+CdxDojTAvXldvGEYz0VzO/ky1WBM30f38Q2cU+GJs+84kA\r\ne05tj35+9BckEpjIykuOXlNeeqoxVkkbqoO7QqhICnQ9ZFo3LXlCxOdzRWVV\r\nu3V3FlwbFFz+c+lqMO+o7kDkON03c3nvnuG2giim33xELvXBis3hCKDxUXeS\r\nbZBLtbV4/SD6CmjLLnW3tEp+LFPNiESRh70=\r\n=AUqg\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:ducktors-storagebus-abstract-0.10.0.tgz","types":"dist/index.d.ts","private":false,"scripts":{"test":"vitest run","build":"rimraf ./dist && tsc -p ./tsconfig.build.json","test:ci":"vitest run --coverage --silent --reporter=default --reporter=junit","prepublish":"pnpm build","test:watch":"vitest --watch"},"_npmUser":{"name":"fox1t","email":"maksim@sinik.it"},"_resolved":"/private/var/folders/3g/jcxt_27d69s9lvp3jdvq_rh40000gp/T/8802a37e0d220631d21865d79f739a6f/ducktors-storagebus-abstract-0.10.0.tgz","_integrity":"sha512-ocUqCJqh/7zZEUlP0NPexRKqkUjXTp7xVo804p7XSbzk9moplj9XZk5cvCV6S2TM6ZEMrkGYkGom2NIcM6qoZw==","_npmVersion":"8.19.2","description":"","directories":{},"_nodeVersion":"16.18.1","dependencies":{"tslib":"^2.4.1","mime-types":"^2.1.35"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^3.0.2","vitest":"^0.24.5","typescript":"^4.9.3","@types/node":"^16.18.3","fox1t-tsconfig":"^0.2.0","@vitest/coverage-istanbul":"^0.24.5"},"_npmOperationalInternal":{"tmp":"tmp/storagebus-abstract_0.10.0_1669725202356_0.8037434896153428","host":"s3://npm-registry-packages"},"deprecated":"Package renamed to @storagebus/storage. Please migrate to @storagebus/storage@^1.0.0."},"0.10.1":{"name":"@ducktors/storagebus-abstract","version":"0.10.1","keywords":[],"author":{"url":"https://ducktors.dev","name":"Ducktors","email":"your@ducktors.dev"},"license":"MIT","_id":"@ducktors/storagebus-abstract@0.10.1","maintainers":[{"name":"tehkapa","email":"kapa89@me.com"},{"name":"fox1t","email":"maksim@sinik.it"}],"dist":{"shasum":"5a8dbefa1b668fde53bdc487e37cd21afa7a0269","tarball":"https://registry.npmjs.org/@ducktors/storagebus-abstract/-/storagebus-abstract-0.10.1.tgz","fileCount":14,"integrity":"sha512-MoGR/JAod1xA7lAKjhDSVjW0vV1Dk9Z4YSpf4HDrur0jdcxSITi4A2ooO34nnwycYVBLQYtDWEY8/rmX7APzFg==","signatures":[{"sig":"MEYCIQCJ7+VmksbQoMdlJOSFOBdJVM0zgXYxqlkS/H/cvOQVtgIhALaS5UOr4jV9fFfhxsBiW/GGHltmAf3CR210O69p7/1n","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":55601,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjxXv/ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqJ7A/9EC2V2ET0P+ZgGiYjxxAX51xMT0NGtxUzRpNXHaThMbZHbPdh\r\nxp/nP097anzngdIRH/k+FKT2t0vPm5kH+N+mqZQMg5bimeVXgpCRqM1+zD/m\r\naw6T+BGGR6safA4S+NYmePE0Txgv2IvJUwZ3WYl3Bw0eNCAKDEtXVeesnrUK\r\n6QeZsbgFiiozliAN+rnFDAGHaEjE1Jy6NQ3c8NQn6aNxS6xpRxrMLCbbDjzp\r\nI5ldLDALZKl1t64uotFrUxI/vztTprHTGrtJLfZGgi3+0aZFldxngE+KT5Yi\r\n8Iu6DrKCswg3wOP6ArqFsuAX6uho5ltTVs41b951J5v5NPF2yukGqANuStBY\r\nQZJyqtxjRmy1/h7zeHi2sa3iLld5wF68v0ovq3jpe5I+mgzNXFeW4RXY2hc8\r\n2yvekVlkIfkr45iIAD5q43c0UHU6K3md4bpmDPJi1BRaI4Nt3643nwdGn4gz\r\nv/BRcbiv4JfoXmEsEFHcTTszroPY9qr58dvP8PdQrJ1lH0wlk6F8PCsJbeKZ\r\nXgqOKa6xjWFmpgTGgSa/VriAihk1bCfqTWj5NG/G4Y21muFpFnpUumKLF++m\r\nNVIkdYA4lGMl593BQX8XFP1kDyYAQBhQvv6Eo500CYFqM0O3Q5cT0x4IE3+r\r\nKlD2QZ5BGstua9S04AXMXLZ7QTddssSZv4Y=\r\n=MlLJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:ducktors-storagebus-abstract-0.10.1.tgz","types":"dist/index.d.ts","private":false,"scripts":{"test":"vitest run","build":"rimraf ./dist && tsc -p ./tsconfig.build.json","test:ci":"vitest run --coverage --silent","prepublish":"pnpm build","test:watch":"vitest --watch"},"_npmUser":{"name":"fox1t","email":"maksim@sinik.it"},"_resolved":"/private/var/folders/hk/y6vf52197k5cngxd93rxtzd80000gn/T/77914ad5aa84c00a5e2302f438c96373/ducktors-storagebus-abstract-0.10.1.tgz","_integrity":"sha512-MoGR/JAod1xA7lAKjhDSVjW0vV1Dk9Z4YSpf4HDrur0jdcxSITi4A2ooO34nnwycYVBLQYtDWEY8/rmX7APzFg==","_npmVersion":"8.19.3","description":"","directories":{},"_nodeVersion":"16.19.0","dependencies":{"tslib":"^2.4.1","mime-types":"^2.1.35"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^4.0.7","vitest":"^0.27.1","typescript":"^4.9.4","@types/node":"^16.18.3","fox1t-tsconfig":"^0.2.0","@vitest/coverage-istanbul":"^0.27.1"},"_npmOperationalInternal":{"tmp":"tmp/storagebus-abstract_0.10.1_1673886718869_0.242444162594448","host":"s3://npm-registry-packages"},"deprecated":"Package renamed to @storagebus/storage. Please migrate to @storagebus/storage@^1.0.0."},"0.10.2":{"name":"@ducktors/storagebus-abstract","version":"0.10.2","keywords":[],"author":{"url":"https://ducktors.dev","name":"Ducktors","email":"your@ducktors.dev"},"license":"MIT","_id":"@ducktors/storagebus-abstract@0.10.2","maintainers":[{"name":"tehkapa","email":"kapa89@me.com"},{"name":"fox1t","email":"maksim@sinik.it"}],"dist":{"shasum":"878fb40eede4d4f351f3a468d1cc86839f9f057e","tarball":"https://registry.npmjs.org/@ducktors/storagebus-abstract/-/storagebus-abstract-0.10.2.tgz","fileCount":14,"integrity":"sha512-WVZ/AlGJ4OV1zBfNvRUuMTnQJBCWlsjILN8RdJFDBSSErv06/phyFyL7B/WcIuF14s2icc2P/lUhwEBxH2fCBQ==","signatures":[{"sig":"MEQCIBUr/C6sAnxDy5zOM9ii8C9BDg6rw7QmZ5by5xXb8PL2AiBL67ZzylO0Wu8dl9gx6sFLQaCViY9cvQMU7Kw/P2drhw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":55601,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj3jAKACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrHHhAAg/77rmPTHicUKbR0di9PAW4ask/55awWu3l0DtYiYUbaLd5J\r\nVTSlu1Q6I9rTkEdObNJfPy5rsl5+kpgOLwr0kcRJhoauKjGlUZdQnPrzxno1\r\nbAsZyhXlP3x91q1thYliZQcVKMVsR2EwqzVX58cPIrnurvkk5vjEQq1paaxa\r\nkqHIndGUUKKRmClz1BFOctbxqV+0ntJ8H7CpaFgqJ+9j4a3R/zbaQw3xvXht\r\nkvOLHJYQiQUmCrKR1yyHyHeM02dFSD/Fh2j6j+pJ5jX/rOkV27WzIYjxQOMf\r\nTGWVRiVvU6HQ8aelASQv8kwxDuDrD0L5g4hdQO034hy+yQzdLy96uFoq3JG0\r\n9ifzWMTm2NoR4GGMHZrKv/JA25DMvkGiTV6wnEBaQWiL5YI5FDvZcIrwcxfc\r\njhwLJmEaMaeHJLCErfNvOQb+BysOfNkYlIZvHSdoXQZ4jScGIwRiRchNwWeQ\r\np8qGdsij+U1SeEk+T8swt0cmX8JJjszf5uainmiEjFBieC+e9M3gHi3tFpK7\r\nrX2zEfm/LoP7S49N7M3J8OqSXYvobw/DfYi4o0Nllx5tAfA+Tk9PWDGNJ+sg\r\nX9WnCVkPItnSB6ZNbECxMxPgOICnLcTRpke8WJqxSxjNO8lAzD8mkTLq7J0o\r\nGq1+1+XkOLruL/6B915YkhU3b7yMIoQEPlk=\r\n=XfSi\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:ducktors-storagebus-abstract-0.10.2.tgz","types":"dist/index.d.ts","private":false,"scripts":{"test":"vitest run","build":"rimraf ./dist && tsc -p ./tsconfig.build.json","test:ci":"vitest run --coverage --silent","prepublish":"pnpm build","test:watch":"vitest --watch"},"_npmUser":{"name":"fox1t","email":"maksim@sinik.it"},"_resolved":"/tmp/b82174e722d31e77d83fdb23353b88bc/ducktors-storagebus-abstract-0.10.2.tgz","_integrity":"sha512-WVZ/AlGJ4OV1zBfNvRUuMTnQJBCWlsjILN8RdJFDBSSErv06/phyFyL7B/WcIuF14s2icc2P/lUhwEBxH2fCBQ==","_npmVersion":"8.19.3","description":"","directories":{},"_nodeVersion":"16.19.0","dependencies":{"tslib":"^2.4.1","mime-types":"^2.1.35"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^4.0.7","vitest":"^0.27.1","typescript":"^4.9.4","@types/node":"^16.18.3","fox1t-tsconfig":"^0.2.0","@vitest/coverage-istanbul":"^0.27.3"},"_npmOperationalInternal":{"tmp":"tmp/storagebus-abstract_0.10.2_1675505673822_0.19808928066357057","host":"s3://npm-registry-packages"},"deprecated":"Package renamed to @storagebus/storage. Please migrate to @storagebus/storage@^1.0.0."},"0.10.3":{"name":"@ducktors/storagebus-abstract","version":"0.10.3","keywords":[],"author":{"url":"https://ducktors.dev","name":"Ducktors","email":"your@ducktors.dev"},"license":"MIT","_id":"@ducktors/storagebus-abstract@0.10.3","maintainers":[{"name":"tehkapa","email":"kapa89@me.com"},{"name":"fox1t","email":"maksim@sinik.it"}],"dist":{"shasum":"d1d9642dfbe37d823ce336ab5fcb1097fc153ab1","tarball":"https://registry.npmjs.org/@ducktors/storagebus-abstract/-/storagebus-abstract-0.10.3.tgz","fileCount":14,"integrity":"sha512-CwvivU8hjJFn7hfc9sevmFZRYhbMlj+L3D/HFGpnEB6txVEGGaoFxoZEWbdLX/cyHwbpmuNkeoz0KwWi+L6wRA==","signatures":[{"sig":"MEUCIQCUEXKgG/BHg/bDfPxXCT84oJ1YqzqWZHFHk95oD9h93gIgXEZe3R4rgzdfmk3eq2XxWNk3HkZZ/dzEbB3Dt43ZBAE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":55601,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj/4EuACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp+thAAlUjJNpLfo3LSF7YwxZDwDwcS3uq6PAydH7rebTc8Sn6/B+NI\r\ndNNDMPg2uw1moE7vHXduKkkYzDJ5cVoINrIjIUrTKVtEYVGQPDDaJsNm5gGd\r\nRNGMZJil1Hfd5GtPC469iBvy++O0e1ZQyG3Jvb3CfZN43JKK/Bjhd6xmTa3K\r\n/LABUyeX9KG6TpDFpK97g3IkPMU4qAh9fp9+mFe783lt4iWRGU5vO4ny0FYo\r\nNHm2QtsXbEhtOUJ+EmXhWUM+NOI/M9JBoDPTsicqqy4K/AIMqYsVq93LCWR1\r\nAkE8Wg1yIVdRYvA4hazNQ7fJSvBfAiu6PuJL4lDwvmHK04Mjf/uNsSsCebQu\r\ndUC17aaWv+Xe30ukF5qp+8QY/YfVhlJ2xUCBgaytjupKMWl4gYZ5DfCWrmXS\r\nvFeE96IJ/sVV/g4S9IzX2zPM/A7VBnY73jrKToseKP2wTF3RVW7q+8DTcja6\r\nbdNdIrvg2WtLHYfH8gP3MOZ5BARIxr6YGnelvClrb8CQ9bd/ANq1MiWc6mhU\r\n4shtFGgtgige5QKvJKsR0xbkc7MSRCHh7b/+z87wz3iWJMAp/rTSVHglbEZZ\r\ng3LEF/QwMhYww4jKwWAXQSx5v9j0iBsu0CYqHk90ZFjabUiXvBqjsyNBqIFk\r\nwmNDZmXAUHKD/BnM6mvslgsSeEf378qqV90=\r\n=82em\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","_from":"file:ducktors-storagebus-abstract-0.10.3.tgz","types":"dist/index.d.ts","private":false,"scripts":{"test":"vitest run","build":"rimraf ./dist && tsc -p ./tsconfig.build.json","test:ci":"vitest run --coverage --silent","prepublish":"pnpm build","test:watch":"vitest --watch"},"_npmUser":{"name":"fox1t","email":"maksim@sinik.it"},"_resolved":"/tmp/4ca6a5d2dbfaff99f1075cb502416619/ducktors-storagebus-abstract-0.10.3.tgz","_integrity":"sha512-CwvivU8hjJFn7hfc9sevmFZRYhbMlj+L3D/HFGpnEB6txVEGGaoFxoZEWbdLX/cyHwbpmuNkeoz0KwWi+L6wRA==","_npmVersion":"8.19.3","description":"","directories":{},"_nodeVersion":"16.19.1","dependencies":{"tslib":"^2.5.0","mime-types":"^2.1.35"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^4.1.2","vitest":"^0.28.5","typescript":"^4.9.5","@types/node":"^18.14.2","fox1t-tsconfig":"^0.2.0","@vitest/coverage-istanbul":"^0.28.5"},"_npmOperationalInternal":{"tmp":"tmp/storagebus-abstract_0.10.3_1677689134169_0.5814843082580561","host":"s3://npm-registry-packages"},"deprecated":"Package renamed to @storagebus/storage. Please migrate to @storagebus/storage@^1.0.0."},"0.10.4":{"name":"@ducktors/storagebus-abstract","version":"0.10.4","keywords":[],"author":{"url":"https://ducktors.dev","name":"Ducktors","email":"your@ducktors.dev"},"license":"MIT","_id":"@ducktors/storagebus-abstract@0.10.4","maintainers":[{"name":"fox1t","email":"maksim@sinik.it"},{"name":"tehkapa","email":"kapa89@me.com"}],"homepage":"https://github.com/ducktors/storagebus#readme","bugs":{"url":"https://github.com/ducktors/storagebus/issues"},"dist":{"shasum":"256d804dc66d2a14c817fae008ce00e78ce6cfc9","tarball":"https://registry.npmjs.org/@ducktors/storagebus-abstract/-/storagebus-abstract-0.10.4.tgz","fileCount":21,"integrity":"sha512-iQh1HkB623dwVQ2hRhmGHVNWmEIRZmxlbYSqR0TG+Ud6xDpokwSUGUtXhCf09SQkGXRi57HG5TB9zIwoNLeVDw==","signatures":[{"sig":"MEYCIQD/qZ7mfIXOMDxy7AaCj3bkfPH+9wnkmD2IOTgGTNC6AQIhAKGAIaNKtz0sNcDLt5/mldMb+G4N6njSDqnw8ZAuZ9Y7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ducktors%2fstoragebus-abstract@0.10.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":63504},"main":"dist/index.js","type":"commonjs","_from":"file:ducktors-storagebus-abstract-0.10.4.tgz","types":"./dist/index.d.ts","exports":{".":{"import":"./dist/index.js","require":"./dist/index.js"},"./latin-chars.json":"./dist/latin-chars.json"},"private":false,"scripts":{"lint":"biome check .","test":"tsx --test ./test/*.ts","build":"rimraf dist && tsc && cp src/latin-chars.json dist/latin-chars.json","format":"biome format --write .","test:ci":"c8 --all --src src --reporter lcov --reporter text tsx --test ./test/*.ts","preinstall":"npx only-allow pnpm","test:watch":"tsx --watch --test ./test/*.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b64b67c4-60d7-4a3d-9026-1da6044700d8"}},"_resolved":"/tmp/4a8f1e3293940418d5ad5e5738fcbede/ducktors-storagebus-abstract-0.10.4.tgz","_integrity":"sha512-iQh1HkB623dwVQ2hRhmGHVNWmEIRZmxlbYSqR0TG+Ud6xDpokwSUGUtXhCf09SQkGXRi57HG5TB9zIwoNLeVDw==","repository":{"url":"git+https://github.com/ducktors/storagebus.git","type":"git","directory":"packages/abstract"},"_npmVersion":"11.6.2","description":"[![npm version](https://img.shields.io/npm/v/@ducktors/storagebus-abstract)](https://www.npmjs.com/package/@ducktors/storagebus-abstract) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)","directories":{},"_nodeVersion":"24.12.0","dependencies":{"tslib":"^2.5.0","mime-types":"^2.1.35"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^8.0.1","tsx":"^3.13.0","rimraf":"^5.0.10","typescript":"^5.2.2","@types/node":"^22.0.2","@biomejs/biome":"^1.2.2","@ducktors/tsconfig":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/storagebus-abstract_0.10.4_1766161553681_0.3585596269293112","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package renamed to @storagebus/storage. Please migrate to @storagebus/storage@^1.0.0."}},"time":{"created":"2022-11-29T12:33:22.289Z","modified":"2026-06-12T11:20:14.753Z","0.10.0":"2022-11-29T12:33:22.591Z","0.10.1":"2023-01-16T16:31:59.028Z","0.10.2":"2023-02-04T10:14:33.979Z","0.10.3":"2023-03-01T16:45:34.298Z","0.10.4":"2025-12-19T16:25:53.845Z"},"bugs":{"url":"https://github.com/ducktors/storagebus/issues"},"author":{"url":"https://ducktors.dev","name":"Ducktors","email":"your@ducktors.dev"},"license":"MIT","homepage":"https://github.com/ducktors/storagebus#readme","keywords":[],"repository":{"url":"git+https://github.com/ducktors/storagebus.git","type":"git","directory":"packages/abstract"},"description":"[![npm version](https://img.shields.io/npm/v/@ducktors/storagebus-abstract)](https://www.npmjs.com/package/@ducktors/storagebus-abstract) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)","maintainers":[{"name":"fox1t","email":"maksim@sinik.it"},{"name":"tehkapa","email":"kapa89@me.com"}],"readme":"# @ducktors/storagebus-abstract\n\n[![npm version](https://img.shields.io/npm/v/@ducktors/storagebus-abstract)](https://www.npmjs.com/package/@ducktors/storagebus-abstract)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nAbstract base class for Storagebus storage adapters. This package provides the foundation for creating storage adapters that work with the Storagebus ecosystem.\n\n## Installation\n\n```bash\nnpm install @ducktors/storagebus-abstract\n# or\npnpm add @ducktors/storagebus-abstract\n# or\nyarn add @ducktors/storagebus-abstract\n```\n\n## Usage\n\nThis package is intended to be used as a base class for implementing custom storage adapters. If you're looking to use a storage solution directly, check out the available adapters:\n\n- [@ducktors/storagebus-local](https://www.npmjs.com/package/@ducktors/storagebus-local) - Local filesystem storage\n- [@ducktors/storagebus-s3](https://www.npmjs.com/package/@ducktors/storagebus-s3) - AWS S3 storage\n- [@ducktors/storagebus-gcs](https://www.npmjs.com/package/@ducktors/storagebus-gcs) - Google Cloud Storage\n- [@ducktors/storagebus-memory](https://www.npmjs.com/package/@ducktors/storagebus-memory) - In-memory storage\n\n### Creating a Custom Adapter\n\n```typescript\nimport { Readable } from 'node:stream'\nimport { Storage, AbstractStorageOptions } from '@ducktors/storagebus-abstract'\n\ninterface MyStorageOptions extends AbstractStorageOptions {\n  // Add your custom options here\n}\n\nclass MyStorage extends Storage {\n  constructor(opts: MyStorageOptions) {\n    super(opts)\n  }\n\n  async write(fileName: string, fileReadable: Readable): Promise<string> {\n    // Implement write logic\n  }\n\n  async exists(fileName: string): Promise<boolean> {\n    // Implement exists logic\n  }\n\n  async read(fileName: string): Promise<Readable> {\n    // Implement read logic\n  }\n\n  async remove(fileName: string): Promise<void> {\n    // Implement remove logic\n  }\n\n  async copy(key: string, destKey: string): Promise<string> {\n    // Implement copy logic\n  }\n\n  async move(key: string, destKey: string): Promise<string> {\n    // Implement move logic\n  }\n}\n```\n\n## API\n\n### Constructor Options\n\n| Option | Type | Default | Description |\n|--------|------|---------|-------------|\n| `debug` | `boolean` | `false` | Enable debug logging |\n| `logger` | `Logger` | `defaultLogger` | Custom logger instance |\n| `sanitizeKey` | `boolean \\| (key: string) => string` | `false` | Sanitize file keys. When `true`, uses built-in sanitizer. Can also be a custom function |\n\n### Abstract Methods\n\nAll storage adapters must implement these methods:\n\n| Method | Signature | Description |\n|--------|-----------|-------------|\n| `write` | `(fileName: string, fileReadable: Readable) => Promise<string>` | Write a file to storage |\n| `exists` | `(fileName: string) => Promise<boolean>` | Check if a file exists |\n| `read` | `(fileName: string) => Promise<Readable>` | Read a file from storage |\n| `remove` | `(fileName: string) => Promise<void>` | Delete a file from storage |\n| `copy` | `(key: string, destKey: string) => Promise<string>` | Copy a file within storage |\n| `move` | `(key: string, destKey: string) => Promise<string>` | Move a file within storage |\n\n### Helper Methods\n\n| Method | Signature | Description |\n|--------|-----------|-------------|\n| `toBuffer` | `(readableStream: Readable) => Promise<Buffer>` | Convert a readable stream to a Buffer |\n\n## License\n\nMIT\n","readmeFilename":"README.md"}