{"_id":"@mjackson/file-storage","_rev":"10-0b9190ac3252a3c5295902f7fcfc45fa","name":"@mjackson/file-storage","dist-tags":{"latest":"0.7.0"},"versions":{"0.1.0":{"name":"@mjackson/file-storage","version":"0.1.0","keywords":["file","storage","stream","fs"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@mjackson/file-storage@0.1.0","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/mjackson/file-storage#readme","bugs":{"url":"https://github.com/mjackson/file-storage/issues"},"dist":{"shasum":"ee4036454259ce8af70a5487c6d9d2c034657502","tarball":"https://registry.npmjs.org/@mjackson/file-storage/-/file-storage-0.1.0.tgz","fileCount":11,"integrity":"sha512-zqFOqGk/KvLunJHdMWLd4sr8LGopfUFy2XvmH9bIGU/coo89G05Lt9z5h4L0M1D75q15gbDQNx/Jwtq1i5NAhw==","signatures":[{"sig":"MEUCIBgG5+UfGeeFBDF+w1Iuus+xwuW2uaKUdBJbEcC727t2AiEA7cDyHYwXg6rQAh6d50BrKjEPsbPmbnV/cVyazkOYKo4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@mjackson%2ffile-storage@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":9927},"type":"module","exports":{".":"./dist/file-storage.js","./package.json":"./package.json"},"gitHead":"e04eaa64fbc06e867d8e4f19ad4dd482773316ad","scripts":{"test":"node --import tsimp/import --test ./src/**/*.spec.ts","build":"tsc --outDir dist --project tsconfig.lib.json","clean":"git clean -fdX .","prepare":"npm run build","version":"node scripts/version.js"},"_npmUser":{"name":"mjackson","email":"mjijackson+npm@gmail.com"},"repository":{"url":"git+https://github.com/mjackson/file-storage.git","type":"git"},"_npmVersion":"10.8.1","description":"Key/value storage for JavaScript File objects","directories":{},"_nodeVersion":"20.16.0","dependencies":{"@mjackson/lazy-file":"^2.2.0"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.7.1","devDependencies":{"tsimp":"^2.0.11","prettier":"^3.3.3","typescript":"^5.5.3","@types/node":"^20.14.10"},"_npmOperationalInternal":{"tmp":"tmp/file-storage_0.1.0_1724547342172_0.2731547489312196","host":"s3://npm-registry-packages"}},"0.2.0":{"name":"@mjackson/file-storage","version":"0.2.0","keywords":["file","storage","stream","fs"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@mjackson/file-storage@0.2.0","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/mjackson/file-storage#readme","bugs":{"url":"https://github.com/mjackson/file-storage/issues"},"dist":{"shasum":"700c44a3b51059d10ab0ca9a66108399d3760d21","tarball":"https://registry.npmjs.org/@mjackson/file-storage/-/file-storage-0.2.0.tgz","fileCount":15,"integrity":"sha512-jXnq7AbeDhLwBw23I6Rjfmu/dzeG8yYzitEJW+K/b2SQr7LUaEro8d3v3eputNUVTtJkzoSet0JU8EL9mgpnkA==","signatures":[{"sig":"MEUCIQDfey5Mtqe4SHm30RYQE2Qg0wS3SFd/RerPZ6nXfK/HZwIgWaoIayO4tb0Tws9apsAIhMLdoFpmfZfM/65hHqHQCO8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@mjackson%2ffile-storage@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":11412},"type":"module","exports":{".":"./dist/file-storage.js","./local":"./dist/local.js","./memory":"./dist/memory.js","./package.json":"./package.json"},"gitHead":"0093ad7f5b0222d041b0f29ee77cd755bd90d761","scripts":{"test":"node --import tsimp/import --test ./src/**/*.spec.ts","build":"tsc --outDir dist --project tsconfig.lib.json","clean":"git clean -fdX .","prepare":"npm run build","version":"node scripts/version.js"},"_npmUser":{"name":"mjackson","email":"mjijackson+npm@gmail.com"},"repository":{"url":"git+https://github.com/mjackson/file-storage.git","type":"git"},"_npmVersion":"10.8.1","description":"Key/value storage for JavaScript File objects","directories":{},"_nodeVersion":"20.16.0","dependencies":{"@mjackson/lazy-file":"^2.2.0"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.7.1","devDependencies":{"tsimp":"^2.0.11","prettier":"^3.3.3","typescript":"^5.5.3","@types/node":"^20.14.10"},"_npmOperationalInternal":{"tmp":"tmp/file-storage_0.2.0_1724656151645_0.6530361124447193","host":"s3://npm-registry-packages"}},"0.2.1":{"name":"@mjackson/file-storage","version":"0.2.1","keywords":["file","storage","stream","fs"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@mjackson/file-storage@0.2.1","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/mjackson/remix-the-web#readme","bugs":{"url":"https://github.com/mjackson/remix-the-web/issues"},"dist":{"shasum":"d2eeffb315b64b07d01f8443bad965b43c24a5a8","tarball":"https://registry.npmjs.org/@mjackson/file-storage/-/file-storage-0.2.1.tgz","fileCount":15,"integrity":"sha512-th38A3CEcV4UEqQ0ou6PGajR2WDs9FYsV51OkbiK/PwAsN1/rd/aMQ9vG6ZumtB17yhkzNjzotP+OB5BjcCUsQ==","signatures":[{"sig":"MEUCIQCY8v7AH8sdE4zdQ2RvpEap6Ri7LrkDCgosivigm4EmPwIgIawShZrynZua4ajFUD+q0faOJ1ZZ+ezPgN1GIzbqbEw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":11273},"type":"module","_from":"file:mjackson-file-storage-0.2.1.tgz","exports":{".":"./dist/file-storage.js","./local":"./dist/local.js","./memory":"./dist/memory.js","./package.json":"./package.json"},"scripts":{"test":"node --import @swc-node/register/esm-register --test ./src/**/*.spec.ts","build":"tsc --outDir dist --project tsconfig.lib.json"},"_npmUser":{"name":"mjackson","email":"mjijackson+npm@gmail.com"},"_resolved":"/private/var/folders/n5/1lxhnzk56hg6b7vnl558364m0000gn/T/4fbe15f62abf1c6202ee6966f67b86fb/mjackson-file-storage-0.2.1.tgz","_integrity":"sha512-th38A3CEcV4UEqQ0ou6PGajR2WDs9FYsV51OkbiK/PwAsN1/rd/aMQ9vG6ZumtB17yhkzNjzotP+OB5BjcCUsQ==","repository":{"url":"git+https://github.com/mjackson/remix-the-web.git","type":"git","directory":"packages/file-storage"},"_npmVersion":"10.7.0","description":"Key/value storage for JavaScript File objects","directories":{},"_nodeVersion":"22.1.0","dependencies":{"@mjackson/lazy-file":"^3.1.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^20.14.10"},"_npmOperationalInternal":{"tmp":"tmp/file-storage_0.2.1_1725524701462_0.8134345276566444","host":"s3://npm-registry-packages"}},"0.3.0":{"name":"@mjackson/file-storage","version":"0.3.0","keywords":["file","storage","stream","fs"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@mjackson/file-storage@0.3.0","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/mjackson/remix-the-web/tree/main/packages/file-storage#readme","bugs":{"url":"https://github.com/mjackson/remix-the-web/issues"},"dist":{"shasum":"a35fb44a820031d3e06bd17f12a775d8596a026c","tarball":"https://registry.npmjs.org/@mjackson/file-storage/-/file-storage-0.3.0.tgz","fileCount":15,"integrity":"sha512-VhVPmLEaHemr9+vGNJWHMI3g4p4tm0evk8U6pVSoFq7Sid3xeOJwXgx6ELK8ewqRZDiMdJQjsnYU+/LVBfSu4w==","signatures":[{"sig":"MEUCIHfVjwMEXTCkb8DAOK5FqcW/u0ggxLCwd0ltTqedOiWzAiEA/A9DzGTbd+lHSbj4VtYFq093rYBi79Hf5UN9kYaFfps=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":21635},"main":"./dist/file-storage.js","type":"module","_from":"file:mjackson-file-storage-0.3.0.tgz","types":"./dist/file-storage.d.ts","exports":{".":{"import":{"types":"./dist/file-storage.d.ts","default":"./dist/file-storage.js"},"default":{"types":"./dist/file-storage.d.ts","default":"./dist/file-storage.js"},"require":{"types":"./dist/file-storage.d.cts","default":"./dist/file-storage.cjs"},"module-sync":{"types":"./dist/file-storage.d.ts","default":"./dist/file-storage.js"}},"./local":{"import":{"types":"./dist/local.d.ts","default":"./dist/local.js"},"default":{"types":"./dist/local.d.ts","default":"./dist/local.js"},"require":{"types":"./dist/local.d.cts","default":"./dist/local.cjs"},"module-sync":{"types":"./dist/local.d.ts","default":"./dist/local.js"}},"./memory":{"import":{"types":"./dist/memory.d.ts","default":"./dist/memory.js"},"default":{"types":"./dist/memory.d.ts","default":"./dist/memory.js"},"require":{"types":"./dist/memory.d.cts","default":"./dist/memory.cjs"},"module-sync":{"types":"./dist/memory.d.ts","default":"./dist/memory.js"}},"./package.json":"./package.json"},"scripts":{"test":"node --import @swc-node/register/esm-register --test ./src/**/*.spec.ts","build":"tsup","release":"node --import @swc-node/register/esm-register ../../scripts/release.ts"},"_npmUser":{"name":"mjackson","email":"mjijackson+npm@gmail.com"},"_resolved":"/private/var/folders/n5/1lxhnzk56hg6b7vnl558364m0000gn/T/561b1cb3d99a28e635b2011732553449/mjackson-file-storage-0.3.0.tgz","_integrity":"sha512-VhVPmLEaHemr9+vGNJWHMI3g4p4tm0evk8U6pVSoFq7Sid3xeOJwXgx6ELK8ewqRZDiMdJQjsnYU+/LVBfSu4w==","repository":{"url":"git+https://github.com/mjackson/remix-the-web.git","type":"git","directory":"packages/file-storage"},"_npmVersion":"10.8.2","description":"Key/value storage for JavaScript File objects","directories":{},"_nodeVersion":"22.8.0","dependencies":{"@mjackson/lazy-file":"^3.3.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","typescript":"^5.6.3","@types/node":"^20.14.10","@swc-node/register":"^1.10.9"},"_npmOperationalInternal":{"tmp":"tmp/file-storage_0.3.0_1731627661184_0.4991341669562879","host":"s3://npm-registry-packages"}},"0.4.0":{"name":"@mjackson/file-storage","version":"0.4.0","keywords":["file","storage","stream","fs"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@mjackson/file-storage@0.4.0","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/mjackson/remix-the-web/tree/main/packages/file-storage#readme","bugs":{"url":"https://github.com/mjackson/remix-the-web/issues"},"dist":{"shasum":"e8fb3a9cb5a185baadf343666c2bedf21282cc38","tarball":"https://registry.npmjs.org/@mjackson/file-storage/-/file-storage-0.4.0.tgz","fileCount":13,"integrity":"sha512-5fhRWK6USAvxr2EAUlPem7nSUAspCpxdbUMLNF09PBhTs2qZzBjSsUGzFHzP5fi8oJCDDry0OV4dcsamyJCdcw==","signatures":[{"sig":"MEUCIDMgoMaZvmuA3z8jW0d4iyXbUUf+g+ckZ97JRzWmROLZAiEAnk2nG6hvndrgmDKDLM5/P4nYRmcTd1xHlC7EpOO5EXM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":17820},"main":"./dist/file-storage.js","type":"module","_from":"file:mjackson-file-storage-0.4.0.tgz","types":"./dist/file-storage.d.ts","exports":{".":{"import":{"types":"./dist/file-storage.d.ts","default":"./dist/file-storage.js"},"default":{"types":"./dist/file-storage.d.ts","default":"./dist/file-storage.js"},"require":{"types":"./dist/file-storage.d.cts","default":"./dist/file-storage.cjs"},"module-sync":{"types":"./dist/file-storage.d.ts","default":"./dist/file-storage.js"}},"./local":{"import":{"types":"./dist/local.d.ts","default":"./dist/local.js"},"default":{"types":"./dist/local.d.ts","default":"./dist/local.js"},"require":{"types":"./dist/local.d.cts","default":"./dist/local.cjs"},"module-sync":{"types":"./dist/local.d.ts","default":"./dist/local.js"}},"./memory":{"import":{"types":"./dist/memory.d.ts","default":"./dist/memory.js"},"default":{"types":"./dist/memory.d.ts","default":"./dist/memory.js"},"require":{"types":"./dist/memory.d.cts","default":"./dist/memory.cjs"},"module-sync":{"types":"./dist/memory.d.ts","default":"./dist/memory.js"}},"./package.json":"./package.json"},"scripts":{"test":"node --experimental-strip-types --disable-warning=ExperimentalWarning --test ./src/**/*.test.ts","build":"tsup"},"_npmUser":{"name":"mjackson","email":"mjijackson+npm@gmail.com"},"_resolved":"/tmp/b856ee5b477bd5f01d18f457c1bfd702/mjackson-file-storage-0.4.0.tgz","_integrity":"sha512-5fhRWK6USAvxr2EAUlPem7nSUAspCpxdbUMLNF09PBhTs2qZzBjSsUGzFHzP5fi8oJCDDry0OV4dcsamyJCdcw==","repository":{"url":"git+https://github.com/mjackson/remix-the-web.git","type":"git","directory":"packages/file-storage"},"_npmVersion":"10.9.0","description":"Key/value storage for JavaScript File objects","directories":{},"_nodeVersion":"22.12.0","dependencies":{"@mjackson/lazy-file":"^3.3.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","@types/node":"^20.14.10"},"_npmOperationalInternal":{"tmp":"tmp/file-storage_0.4.0_1736301452785_0.4209588335546264","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@mjackson/file-storage","version":"0.4.1","keywords":["file","storage","stream","fs"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@mjackson/file-storage@0.4.1","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/mjackson/remix-the-web/tree/main/packages/file-storage#readme","bugs":{"url":"https://github.com/mjackson/remix-the-web/issues"},"dist":{"shasum":"461c6d0668b0daf048a4361cd4caf957f6fb97bc","tarball":"https://registry.npmjs.org/@mjackson/file-storage/-/file-storage-0.4.1.tgz","fileCount":15,"integrity":"sha512-Mqth7HB2HelJIG2tQP0B2NKnd0zSlmaAnBMDdS7u6yhwwZJa0GgoMhVRVmoV1Q0Zbd50vZ7+HHlL2oNmcBMfQg==","signatures":[{"sig":"MEQCIGOnctsjbf0LdkfKCN9l2bLAJz4BXRJy2MFYKSVUgunOAiB3jvmNnz5LOvHjTJUTHx5U0nEgL2VErLsrddHzQbLUDw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":20604},"main":"./dist/file-storage.js","type":"module","_from":"file:mjackson-file-storage-0.4.1.tgz","types":"./dist/file-storage.d.ts","exports":{".":{"import":{"types":"./dist/file-storage.d.ts","default":"./dist/file-storage.js"},"default":{"types":"./dist/file-storage.d.ts","default":"./dist/file-storage.js"},"require":{"types":"./dist/file-storage.d.cts","default":"./dist/file-storage.cjs"},"module-sync":{"types":"./dist/file-storage.d.ts","default":"./dist/file-storage.js"}},"./local":{"import":{"types":"./dist/local.d.ts","default":"./dist/local.js"},"default":{"types":"./dist/local.d.ts","default":"./dist/local.js"},"require":{"types":"./dist/local.d.cts","default":"./dist/local.cjs"},"module-sync":{"types":"./dist/local.d.ts","default":"./dist/local.js"}},"./memory":{"import":{"types":"./dist/memory.d.ts","default":"./dist/memory.js"},"default":{"types":"./dist/memory.d.ts","default":"./dist/memory.js"},"require":{"types":"./dist/memory.d.cts","default":"./dist/memory.cjs"},"module-sync":{"types":"./dist/memory.d.ts","default":"./dist/memory.js"}},"./package.json":"./package.json"},"scripts":{"test":"node --experimental-strip-types --disable-warning=ExperimentalWarning --test ./src/**/*.test.ts","build":"tsup"},"_npmUser":{"name":"mjackson","email":"mjijackson+npm@gmail.com"},"_resolved":"/tmp/38bfa157acc7f126eb142685e9a832b0/mjackson-file-storage-0.4.1.tgz","_integrity":"sha512-Mqth7HB2HelJIG2tQP0B2NKnd0zSlmaAnBMDdS7u6yhwwZJa0GgoMhVRVmoV1Q0Zbd50vZ7+HHlL2oNmcBMfQg==","repository":{"url":"git+https://github.com/mjackson/remix-the-web.git","type":"git","directory":"packages/file-storage"},"_npmVersion":"10.9.0","description":"Key/value storage for JavaScript File objects","directories":{},"_nodeVersion":"22.12.0","dependencies":{"@mjackson/lazy-file":"^3.3.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","@types/node":"^20.14.10"},"_npmOperationalInternal":{"tmp":"tmp/file-storage_0.4.1_1736546243053_0.9169497286920496","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@mjackson/file-storage","version":"0.5.0","keywords":["file","storage","stream","fs"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@mjackson/file-storage@0.5.0","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/mjackson/remix-the-web/tree/main/packages/file-storage#readme","bugs":{"url":"https://github.com/mjackson/remix-the-web/issues"},"dist":{"shasum":"a7ddd37c73ebe9047a54c8993e1cd366bab6d5b0","tarball":"https://registry.npmjs.org/@mjackson/file-storage/-/file-storage-0.5.0.tgz","fileCount":15,"integrity":"sha512-Zcqym2n+jQZ4JAUhCUSYncVu9l01tdmLri+WWzRAxUJ+InfFzvCv4+qRT8i94RG0Ef5gnajECmQNzvwCd2ns1Q==","signatures":[{"sig":"MEQCIC+vu913h9lRYkdC6pYtq0hr0hZ4OjIBBbZjMq9mfQRXAiBAT0MwkiJ1QlFcFtWTMZxlmQOLY+BYYa0BOafwx+gf4A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24734},"main":"./dist/file-storage.js","type":"module","_from":"file:mjackson-file-storage-0.5.0.tgz","types":"./dist/file-storage.d.ts","exports":{".":{"import":{"types":"./dist/file-storage.d.ts","default":"./dist/file-storage.js"},"default":{"types":"./dist/file-storage.d.ts","default":"./dist/file-storage.js"},"require":{"types":"./dist/file-storage.d.cts","default":"./dist/file-storage.cjs"},"module-sync":{"types":"./dist/file-storage.d.ts","default":"./dist/file-storage.js"}},"./local":{"import":{"types":"./dist/local.d.ts","default":"./dist/local.js"},"default":{"types":"./dist/local.d.ts","default":"./dist/local.js"},"require":{"types":"./dist/local.d.cts","default":"./dist/local.cjs"},"module-sync":{"types":"./dist/local.d.ts","default":"./dist/local.js"}},"./memory":{"import":{"types":"./dist/memory.d.ts","default":"./dist/memory.js"},"default":{"types":"./dist/memory.d.ts","default":"./dist/memory.js"},"require":{"types":"./dist/memory.d.cts","default":"./dist/memory.cjs"},"module-sync":{"types":"./dist/memory.d.ts","default":"./dist/memory.js"}},"./package.json":"./package.json"},"scripts":{"test":"node --experimental-strip-types --disable-warning=ExperimentalWarning --test ./src/**/*.test.ts","build":"tsup"},"_npmUser":{"name":"mjackson","email":"mjijackson+npm@gmail.com"},"_resolved":"/tmp/f8c3f6e518c9165700399a6d8e84a585/mjackson-file-storage-0.5.0.tgz","_integrity":"sha512-Zcqym2n+jQZ4JAUhCUSYncVu9l01tdmLri+WWzRAxUJ+InfFzvCv4+qRT8i94RG0Ef5gnajECmQNzvwCd2ns1Q==","repository":{"url":"git+https://github.com/mjackson/remix-the-web.git","type":"git","directory":"packages/file-storage"},"_npmVersion":"10.9.2","description":"Key/value storage for JavaScript File objects","directories":{},"_nodeVersion":"22.13.0","dependencies":{"@mjackson/lazy-file":"^3.3.1"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","@types/node":"^20.14.10"},"_npmOperationalInternal":{"tmp":"tmp/file-storage_0.5.0_1737833677851_0.9542709070741293","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@mjackson/file-storage","version":"0.6.0","keywords":["file","storage","stream","fs"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@mjackson/file-storage@0.6.0","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/mjackson/remix-the-web/tree/main/packages/file-storage#readme","bugs":{"url":"https://github.com/mjackson/remix-the-web/issues"},"dist":{"shasum":"46c93cafac6fc24707c107dbfed0618740c07055","tarball":"https://registry.npmjs.org/@mjackson/file-storage/-/file-storage-0.6.0.tgz","fileCount":15,"integrity":"sha512-rY340LbbjX2sgqPMHlaJms9swFdmncpCkjA7KPRNxrV9jWq/fFNLh6Gv9lw/xmppYC3/ts0x7HjPZNk7JT5Wug==","signatures":[{"sig":"MEUCIE3tV/OHiyw103lDbPFTBi+GgPz6o8Qy/k6Aj6TS6A+hAiEA95Ir86x5n2iOVgz3x1UVKjTSpL4RVSUnZuvzbikL9T4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43928},"main":"./dist/file-storage.js","type":"module","_from":"file:mjackson-file-storage-0.6.0.tgz","types":"./dist/file-storage.d.ts","exports":{".":{"import":{"types":"./dist/file-storage.d.ts","default":"./dist/file-storage.js"},"default":{"types":"./dist/file-storage.d.ts","default":"./dist/file-storage.js"},"require":{"types":"./dist/file-storage.d.cts","default":"./dist/file-storage.cjs"},"module-sync":{"types":"./dist/file-storage.d.ts","default":"./dist/file-storage.js"}},"./local":{"import":{"types":"./dist/local.d.ts","default":"./dist/local.js"},"default":{"types":"./dist/local.d.ts","default":"./dist/local.js"},"require":{"types":"./dist/local.d.cts","default":"./dist/local.cjs"},"module-sync":{"types":"./dist/local.d.ts","default":"./dist/local.js"}},"./memory":{"import":{"types":"./dist/memory.d.ts","default":"./dist/memory.js"},"default":{"types":"./dist/memory.d.ts","default":"./dist/memory.js"},"require":{"types":"./dist/memory.d.cts","default":"./dist/memory.cjs"},"module-sync":{"types":"./dist/memory.d.ts","default":"./dist/memory.js"}},"./package.json":"./package.json"},"scripts":{"test":"node --experimental-strip-types --disable-warning=ExperimentalWarning --test ./src/**/*.test.ts","build":"tsup"},"_npmUser":{"name":"mjackson","email":"mjijackson+npm@gmail.com"},"_resolved":"/tmp/e7a20c60186a157e5b5eea5e141e1e6a/mjackson-file-storage-0.6.0.tgz","_integrity":"sha512-rY340LbbjX2sgqPMHlaJms9swFdmncpCkjA7KPRNxrV9jWq/fFNLh6Gv9lw/xmppYC3/ts0x7HjPZNk7JT5Wug==","repository":{"url":"git+https://github.com/mjackson/remix-the-web.git","type":"git","directory":"packages/file-storage"},"_npmVersion":"10.9.2","description":"Key/value storage for JavaScript File objects","directories":{},"_nodeVersion":"22.13.1","dependencies":{"@mjackson/lazy-file":"^3.3.1"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","@types/node":"^20.14.10"},"_npmOperationalInternal":{"tmp":"tmp/file-storage_0.6.0_1738633301399_0.3052835695129703","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@mjackson/file-storage","version":"0.6.1","keywords":["file","storage","stream","fs"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@mjackson/file-storage@0.6.1","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/mjackson/remix-the-web/tree/main/packages/file-storage#readme","bugs":{"url":"https://github.com/mjackson/remix-the-web/issues"},"dist":{"shasum":"8d5428206eb69e23f154448dac969b57c462a5fe","tarball":"https://registry.npmjs.org/@mjackson/file-storage/-/file-storage-0.6.1.tgz","fileCount":15,"integrity":"sha512-H3GEVpmfmNryNoYloddIOba5OAwckfVGMvutPeI94Shbv/R+NVh89gIYa8SK3Vfa+ky9PitclP+5XQ6/zlSdQQ==","signatures":[{"sig":"MEUCIQDcJdYxhg5pmhLsxN96uXvbMDNw1JIjylCIcKXwJ2vntgIgJz7zMpC4VqX6Hg3VfkutE9Mzt6z8k0BcC5GjRLS23S4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44152},"main":"./dist/file-storage.js","type":"module","_from":"file:mjackson-file-storage-0.6.1.tgz","types":"./dist/file-storage.d.ts","exports":{".":{"import":{"types":"./dist/file-storage.d.ts","default":"./dist/file-storage.js"},"default":{"types":"./dist/file-storage.d.ts","default":"./dist/file-storage.js"},"require":{"types":"./dist/file-storage.d.cts","default":"./dist/file-storage.cjs"},"module-sync":{"types":"./dist/file-storage.d.ts","default":"./dist/file-storage.js"}},"./local":{"import":{"types":"./dist/local.d.ts","default":"./dist/local.js"},"default":{"types":"./dist/local.d.ts","default":"./dist/local.js"},"require":{"types":"./dist/local.d.cts","default":"./dist/local.cjs"},"module-sync":{"types":"./dist/local.d.ts","default":"./dist/local.js"}},"./memory":{"import":{"types":"./dist/memory.d.ts","default":"./dist/memory.js"},"default":{"types":"./dist/memory.d.ts","default":"./dist/memory.js"},"require":{"types":"./dist/memory.d.cts","default":"./dist/memory.cjs"},"module-sync":{"types":"./dist/memory.d.ts","default":"./dist/memory.js"}},"./package.json":"./package.json"},"scripts":{"test":"node --experimental-strip-types --disable-warning=ExperimentalWarning --test ./src/**/*.test.ts","build":"tsup"},"_npmUser":{"name":"mjackson","email":"mjijackson+npm@gmail.com"},"_resolved":"/tmp/6bca93bf6e06c86281e2ff371e1472d5/mjackson-file-storage-0.6.1.tgz","_integrity":"sha512-H3GEVpmfmNryNoYloddIOba5OAwckfVGMvutPeI94Shbv/R+NVh89gIYa8SK3Vfa+ky9PitclP+5XQ6/zlSdQQ==","repository":{"url":"git+https://github.com/mjackson/remix-the-web.git","type":"git","directory":"packages/file-storage"},"_npmVersion":"10.9.2","description":"Key/value storage for JavaScript File objects","directories":{},"_nodeVersion":"22.13.1","dependencies":{"@mjackson/lazy-file":"^3.3.1"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","@types/node":"^20.14.10","@mjackson/form-data-parser":"^0.7.0"},"_npmOperationalInternal":{"tmp":"tmp/file-storage_0.6.1_1738885673019_0.3999507222583032","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@mjackson/file-storage","version":"0.7.0","description":"Key/value storage for JavaScript File objects","author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"repository":{"type":"git","url":"git+https://github.com/mjackson/remix-the-web.git","directory":"packages/file-storage"},"homepage":"https://github.com/mjackson/remix-the-web/tree/main/packages/file-storage#readme","license":"MIT","type":"module","types":"./dist/file-storage.d.ts","module":"./dist/file-storage.js","main":"./dist/file-storage.cjs","exports":{".":{"types":"./dist/file-storage.d.ts","import":"./dist/file-storage.js","require":"./dist/file-storage.cjs","default":"./dist/file-storage.js"},"./local":{"types":"./dist/local.d.ts","import":"./dist/local.js","require":"./dist/local.cjs","default":"./dist/local.js"},"./memory":{"types":"./dist/memory.d.ts","import":"./dist/memory.js","require":"./dist/memory.cjs","default":"./dist/memory.js"},"./package.json":"./package.json"},"dependencies":{"@mjackson/lazy-file":"^3.4.0"},"devDependencies":{"@types/node":"^20.14.10","esbuild":"^0.25.5","@mjackson/form-data-parser":"^0.8.0"},"keywords":["file","storage","stream","fs"],"scripts":{"build:types":"tsc --project tsconfig.build.json","build:esm":"esbuild src/file-storage.ts --bundle --outfile=dist/file-storage.js --format=esm --platform=neutral --sourcemap","build:cjs":"esbuild src/file-storage.ts --bundle --outfile=dist/file-storage.cjs --format=cjs --platform=neutral --sourcemap","build:esm:local":"esbuild src/local.ts --bundle --outfile=dist/local.js --format=esm --platform=node --sourcemap","build:cjs:local":"esbuild src/local.ts --bundle --outfile=dist/local.cjs --format=cjs --platform=node --sourcemap","build:esm:memory":"esbuild src/memory.ts --bundle --outfile=dist/memory.js --format=esm --platform=neutral --sourcemap","build:cjs:memory":"esbuild src/memory.ts --bundle --outfile=dist/memory.cjs --format=cjs --platform=neutral --sourcemap","build":"pnpm run clean && pnpm run build:types && pnpm run build:esm && pnpm run build:cjs && pnpm run build:esm:local && pnpm run build:cjs:local && pnpm run build:esm:memory && pnpm run build:cjs:memory","clean":"rm -rf dist","test":"node --experimental-strip-types --disable-warning=ExperimentalWarning --test ./src/**/*.test.ts"},"_id":"@mjackson/file-storage@0.7.0","bugs":{"url":"https://github.com/mjackson/remix-the-web/issues"},"_integrity":"sha512-M1v2PvE/b7bIAQZOdiqnjh9WcyuEqRcIJrdHdZj/6ixjNER+V2jkTFUdKTt/2XTEpbgRhERO/G8C/sjK05tewA==","_resolved":"/tmp/a003057942dcb9f74c8ad11aed452044/mjackson-file-storage-0.7.0.tgz","_from":"file:mjackson-file-storage-0.7.0.tgz","_nodeVersion":"22.16.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-M1v2PvE/b7bIAQZOdiqnjh9WcyuEqRcIJrdHdZj/6ixjNER+V2jkTFUdKTt/2XTEpbgRhERO/G8C/sjK05tewA==","shasum":"81748f46e697ee9f95c2e1770901bc0a965ab3bc","tarball":"https://registry.npmjs.org/@mjackson/file-storage/-/file-storage-0.7.0.tgz","fileCount":35,"unpackedSize":201568,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDMhJCvv2reiYG/+0dtFdA3ZSdBN8b1U+CSqA3ZssdhgAiB6F1LT2EocVmZ/9tEHRW0E0I2nCWq9rY7D5hG4EbfOeQ=="}]},"_npmUser":{"name":"mjackson","email":"mjijackson+npm@gmail.com"},"directories":{},"maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/file-storage_0.7.0_1749598417727_0.012178865573956532"},"_hasShrinkwrap":false}},"time":{"created":"2024-08-25T00:55:42.033Z","modified":"2025-06-10T23:33:38.109Z","0.1.0":"2024-08-25T00:55:42.365Z","0.2.0":"2024-08-26T07:09:11.796Z","0.2.1":"2024-09-05T08:25:01.596Z","0.3.0":"2024-11-14T23:41:01.443Z","0.4.0":"2025-01-08T01:57:32.954Z","0.4.1":"2025-01-10T21:57:23.317Z","0.5.0":"2025-01-25T19:34:38.034Z","0.6.0":"2025-02-04T01:41:41.574Z","0.6.1":"2025-02-06T23:47:53.200Z","0.7.0":"2025-06-10T23:33:37.932Z"},"bugs":{"url":"https://github.com/mjackson/remix-the-web/issues"},"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","homepage":"https://github.com/mjackson/remix-the-web/tree/main/packages/file-storage#readme","keywords":["file","storage","stream","fs"],"repository":{"type":"git","url":"git+https://github.com/mjackson/remix-the-web.git","directory":"packages/file-storage"},"description":"Key/value storage for JavaScript File objects","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"readme":"# file-storage\n\n`file-storage` is a key/value interface for storing [`File` objects](https://developer.mozilla.org/en-US/docs/Web/API/File) in JavaScript. Similar to how `localStorage` allows you to store key/value pairs of strings in the browser, `file-storage` allows you to store key/value pairs of files on the server.\n\n## Features\n\n- Simple, intuitive key/value API (like [Web Storage](https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API), but for `File`s instead of strings)\n- A generic `FileStorage` interface that works for various large object storage backends (can be adapted to AWS S3, Cloudflare R2, etc.)\n- Support streaming file content to and from storage\n- Preserves all `File` metadata including `file.name`, `file.type`, and `file.lastModified`\n\n## Installation\n\nInstall from [npm](https://www.npmjs.com/):\n\n```sh\nnpm install @mjackson/file-storage\n```\n\n## Usage\n\n```ts\nimport { LocalFileStorage } from '@mjackson/file-storage/local';\n\nlet storage = new LocalFileStorage('./user/files');\n\nlet file = new File(['hello world'], 'hello.txt', { type: 'text/plain' });\nlet key = 'hello-key';\n\n// Put the file in storage.\nawait storage.set(key, file);\n\n// Then, sometime later...\nlet fileFromStorage = await storage.get(key);\n// All of the original file's metadata is intact\nfileFromStorage.name; // 'hello.txt'\nfileFromStorage.type; // 'text/plain'\n\n// To remove from storage\nawait storage.remove(key);\n```\n\nThe `FileStorage` interface allows you to implement your own file storage for custom storage backends:\n\n```ts\nimport { type FileStorage } from '@mjackson/file-storage';\n\nclass CustomFileStorage implements FileStorage {\n  /**\n   * Returns `true` if a file with the given key exists, `false` otherwise.\n   */\n  has(key: string): boolean | Promise<boolean> {\n    // ...\n  }\n  /**\n   * Puts a file in storage at the given key.\n   */\n  set(key: string, file: File): void | Promise<void> {\n    // ...\n  }\n  /**\n   * Returns the file with the given key, or `null` if no such key exists.\n   */\n  get(key: string): File | null | Promise<File | null> {\n    // ...\n  }\n  /**\n   * Removes the file with the given key from storage.\n   */\n  remove(key: string): void | Promise<void> {\n    // ...\n  }\n}\n```\n\n## Related Packages\n\n- [`form-data-parser`](https://github.com/mjackson/remix-the-web/tree/main/packages/form-data-parser) - Pairs well with this library for storing `FileUpload` objects received in `multipart/form-data` requests\n- [`lazy-file`](https://github.com/mjackson/remix-the-web/tree/main/packages/lazy-file) - The streaming `File` implementation used internally to stream files from storage\n\n## License\n\nSee [LICENSE](https://github.com/mjackson/remix-the-web/blob/main/LICENSE)\n","readmeFilename":"README.md"}