{"_id":"@absolutejs/secure-transfer-local","_rev":"5-7641ff170b4ea2a715bd294ab5ccf53c","name":"@absolutejs/secure-transfer-local","dist-tags":{"latest":"0.2.2"},"versions":{"0.0.1":{"name":"@absolutejs/secure-transfer-local","version":"0.0.1","author":{"name":"Alex Kahn"},"license":"Apache-2.0","_id":"@absolutejs/secure-transfer-local@0.0.1","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/secure-transfer-adapters/tree/master/local","bugs":{"url":"https://github.com/absolutejs/secure-transfer-adapters/issues"},"dist":{"shasum":"e8cf7d63588d09362c9ee403ad50bb9c197502e5","tarball":"https://registry.npmjs.org/@absolutejs/secure-transfer-local/-/secure-transfer-local-0.0.1.tgz","fileCount":12,"integrity":"sha512-ZZPbNi/3l4cJACwMAQacdatbnTroFT31Kqjr2lTll4+gUOUDNUvQf0AlwQ4ArV56PSbX1nQhO9iLAnONhJz2PA==","signatures":[{"sig":"MEQCIGz9kXkyFUzNuXZgpHqePVFk45ixeiYKCa4uCAsuprfHAiAFLVd+tdYF8TMfZTnRF92wKvICvYiAZrwZUOyDHTTqbg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39262},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./manifest":{"types":"./dist/manifest.d.ts","import":"./dist/manifest.js","default":"./dist/manifest.js"},"./manifest.json":"./dist/manifest.json"},"gitHead":"12781671f444c8855750cb3eb3e9aacd81aaaff4","scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/manifest.ts --outdir dist --root src --sourcemap --target=bun --external @absolutejs/secure-transfer --external @absolutejs/manifest --external @sinclair/typebox && tsc --project tsconfig.build.json && absolute-manifest emit","release":"bun run check:package && npm publish --access public","typecheck":"tsc --noEmit","format:check":"prettier --check \"./**/*.{ts,json,md}\"","check:package":"bun run format:check && bun run typecheck && bun run test && bun run build && bun run verify-package","verify-package":"absolute-manifest verify-package"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"absolutejs":{"manifestContract":2},"repository":{"url":"git+https://github.com/absolutejs/secure-transfer-adapters.git","type":"git","directory":"local"},"_npmVersion":"10.9.2","description":"Atomic local-filesystem storage adapter for @absolutejs/secure-transfer.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@sinclair/typebox":"^0.34.0","@absolutejs/manifest":"^0.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"3.9.0","@types/bun":"1.3.14","typescript":"5.9.3","@absolutejs/secure-transfer":"https://registry.npmjs.org/@absolutejs/secure-transfer/-/secure-transfer-0.0.3.tgz"},"peerDependencies":{"@absolutejs/secure-transfer":">=0.0.3 <0.1"},"_npmOperationalInternal":{"tmp":"tmp/secure-transfer-local_0.0.1_1787793264232_0.9474408312474607","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@absolutejs/secure-transfer-local","version":"0.1.0","author":{"name":"Alex Kahn"},"license":"Apache-2.0","_id":"@absolutejs/secure-transfer-local@0.1.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/secure-transfer-adapters/tree/master/local","bugs":{"url":"https://github.com/absolutejs/secure-transfer-adapters/issues"},"dist":{"shasum":"753a59b7584b6b2e484e2929894753ae8c21d1ab","tarball":"https://registry.npmjs.org/@absolutejs/secure-transfer-local/-/secure-transfer-local-0.1.0.tgz","fileCount":13,"integrity":"sha512-EpAx1rGJNdSFZ3X6LkbMUtk9qsbBjUSjOmLqfmJNrvBNs5aii6eZ7wFJE05BCnck8Ew4CukZd2LMmfNPP3pa6w==","signatures":[{"sig":"MEQCIA/rfwDPyTNVXvHZHimazQWLRmTDF+hr4oYR9AOAT/1GAiBMh5q8SuU7vmjMDx5mu947ghfm00p/GEtCiGX6lXZ5Xg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":70542},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./manifest":{"types":"./dist/manifest.d.ts","import":"./dist/manifest.js","default":"./dist/manifest.js"},"./manifest.json":"./dist/manifest.json"},"gitHead":"35656a420a6bd75ed2b2245526cacdf88f638e24","scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/manifest.ts --outdir dist --root src --sourcemap --target=bun --external @absolutejs/secure-transfer --external @absolutejs/manifest --external @sinclair/typebox && tsc --project tsconfig.build.json && absolute-manifest emit","release":"bun run check:package && npm publish --access public","typecheck":"tsc --noEmit","format:check":"prettier --check \"./**/*.{ts,json,md}\"","check:package":"bun run format:check && bun run typecheck && bun run test && bun run build && bun run verify-package","verify-package":"absolute-manifest verify-package"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"absolutejs":{"manifestContract":2},"repository":{"url":"git+https://github.com/absolutejs/secure-transfer-adapters.git","type":"git","directory":"local"},"_npmVersion":"10.9.2","description":"Atomic local-filesystem storage adapter for @absolutejs/secure-transfer.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@sinclair/typebox":"^0.34.0","@absolutejs/manifest":"^0.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"3.9.0","@types/bun":"1.3.14","typescript":"5.9.3","@absolutejs/secure-transfer":"https://registry.npmjs.org/@absolutejs/secure-transfer/-/secure-transfer-0.1.1.tgz"},"peerDependencies":{"@absolutejs/secure-transfer":">=0.1.1 <0.2"},"_npmOperationalInternal":{"tmp":"tmp/secure-transfer-local_0.1.0_1787794722243_0.36612139794517673","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@absolutejs/secure-transfer-local","version":"0.2.0","author":{"name":"Alex Kahn"},"license":"Apache-2.0","_id":"@absolutejs/secure-transfer-local@0.2.0","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/secure-transfer-adapters/tree/master/local","bugs":{"url":"https://github.com/absolutejs/secure-transfer-adapters/issues"},"dist":{"shasum":"0a0ac4256afaa538341a3bea9ad61cd40fd41087","tarball":"https://registry.npmjs.org/@absolutejs/secure-transfer-local/-/secure-transfer-local-0.2.0.tgz","fileCount":14,"integrity":"sha512-YpcRIA4/bmSDQr7fbaTEmw7PnrWNVe/a2I3KEGFCsWYIXy2CahicZ0kl81cMbRPT6HEvvapABaRzNisus4AIBg==","signatures":[{"sig":"MEYCIQCvTN/X8jStxwL3DdBJlQSEn547f5BbLXHgsJIvmSIA7gIhAKJv0magZBXaA1do5LjkL6CVfnFaZgmE1zvbqLiF2pou","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":87837},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./manifest":{"types":"./dist/manifest.d.ts","import":"./dist/manifest.js","default":"./dist/manifest.js"},"./manifest.json":"./dist/manifest.json"},"gitHead":"b8994ad2466a7f3c7f0573fdd0d4c8c4047f2b0c","scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/manifest.ts --outdir dist --root src --sourcemap --target=bun --external @absolutejs/secure-transfer --external @absolutejs/manifest --external @sinclair/typebox && tsc --project tsconfig.build.json && absolute-manifest emit","release":"bun run check:package && npm publish --access public","typecheck":"tsc --noEmit","format:check":"prettier --check \"./**/*.{ts,json,md}\"","check:package":"bun run format:check && bun run typecheck && bun run test && bun run build && bun run verify-package","verify-package":"absolute-manifest verify-package"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"absolutejs":{"manifestContract":2},"repository":{"url":"git+https://github.com/absolutejs/secure-transfer-adapters.git","type":"git","directory":"local"},"_npmVersion":"10.9.2","description":"Atomic local-filesystem storage adapter for @absolutejs/secure-transfer.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@sinclair/typebox":"^0.34.0","@absolutejs/manifest":"^0.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"3.9.0","@types/bun":"1.3.14","typescript":"5.9.3","@absolutejs/secure-transfer":"https://registry.npmjs.org/@absolutejs/secure-transfer/-/secure-transfer-0.2.0.tgz"},"peerDependencies":{"@absolutejs/secure-transfer":">=0.2.0 <0.3"},"_npmOperationalInternal":{"tmp":"tmp/secure-transfer-local_0.2.0_1787796089499_0.0910188036189401","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@absolutejs/secure-transfer-local","version":"0.2.1","author":{"name":"Alex Kahn"},"license":"Apache-2.0","_id":"@absolutejs/secure-transfer-local@0.2.1","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"homepage":"https://github.com/absolutejs/secure-transfer-adapters/tree/master/local","bugs":{"url":"https://github.com/absolutejs/secure-transfer-adapters/issues"},"dist":{"shasum":"5c88625149ec2ce1d7847d4765342fdcdaa08f27","tarball":"https://registry.npmjs.org/@absolutejs/secure-transfer-local/-/secure-transfer-local-0.2.1.tgz","fileCount":14,"integrity":"sha512-AX2ZjjAe3rTjiqLezL8jJgXG4NPEkkcShlnmu4M//w+xXlrvt5semNY6IlXAhTj54XOIFJUioYpN24e7aRewOw==","signatures":[{"sig":"MEUCIAo0S+y+r+kQv+yvnLSkIMUHdfknyv27DbgC7yr/YRkJAiEAiawOp91UNaaZ/gpwFpkDdotLYE/ZgnPEVFAcfKlkArw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":88273},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./manifest":{"types":"./dist/manifest.d.ts","import":"./dist/manifest.js","default":"./dist/manifest.js"},"./manifest.json":"./dist/manifest.json"},"gitHead":"3330724d1b569afe4bcee809fed5066b004e3691","scripts":{"test":"bun test tests/","build":"rm -rf dist && bun build src/index.ts src/manifest.ts --outdir dist --root src --sourcemap --target=bun --external @absolutejs/secure-transfer --external @absolutejs/manifest --external @sinclair/typebox && tsc --project tsconfig.build.json && absolute-manifest emit","release":"bun run check:package && npm publish --access public","typecheck":"tsc --noEmit","format:check":"prettier --check \"./**/*.{ts,json,md}\"","check:package":"bun run format:check && bun run typecheck && bun run test && bun run build && bun run verify-package","verify-package":"absolute-manifest verify-package"},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"absolutejs":{"manifestContract":2},"repository":{"url":"git+https://github.com/absolutejs/secure-transfer-adapters.git","type":"git","directory":"local"},"_npmVersion":"10.9.2","description":"Atomic local-filesystem storage adapter for @absolutejs/secure-transfer.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"@sinclair/typebox":"^0.34.0","@absolutejs/manifest":"^0.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"3.9.0","@types/bun":"1.3.14","typescript":"5.9.3","@absolutejs/secure-transfer":"https://registry.npmjs.org/@absolutejs/secure-transfer/-/secure-transfer-0.2.0.tgz"},"peerDependencies":{"@absolutejs/secure-transfer":">=0.2.0 <0.3"},"_npmOperationalInternal":{"tmp":"tmp/secure-transfer-local_0.2.1_1787796229408_0.3887789717366885","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@absolutejs/secure-transfer-local","version":"0.2.2","description":"Atomic local-filesystem storage adapter for @absolutejs/secure-transfer.","type":"module","license":"Apache-2.0","author":{"name":"Alex Kahn"},"repository":{"type":"git","url":"git+https://github.com/absolutejs/secure-transfer-adapters.git","directory":"local"},"homepage":"https://github.com/absolutejs/secure-transfer-adapters/tree/master/local","bugs":{"url":"https://github.com/absolutejs/secure-transfer-adapters/issues"},"main":"./dist/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./manifest":{"types":"./dist/manifest.d.ts","import":"./dist/manifest.js","default":"./dist/manifest.js"},"./manifest.json":"./dist/manifest.json"},"publishConfig":{"access":"public"},"scripts":{"build":"rm -rf dist && bun build src/index.ts src/manifest.ts --outdir dist --root src --sourcemap --target=bun --external @absolutejs/secure-transfer --external @absolutejs/manifest --external @sinclair/typebox && tsc --project tsconfig.build.json && absolute-manifest emit","check:package":"bun run format:check && bun run typecheck && bun run test && bun run build && bun run verify-package","format:check":"prettier --check \"./**/*.{ts,json,md}\"","release":"bun run check:package && npm publish --access public","test":"bun test tests/","typecheck":"tsc --noEmit","verify-package":"absolute-manifest verify-package"},"dependencies":{"@absolutejs/manifest":"^0.9.0","@sinclair/typebox":"^0.34.0"},"peerDependencies":{"@absolutejs/secure-transfer":">=0.2.0 <0.4"},"devDependencies":{"@absolutejs/secure-transfer":"https://registry.npmjs.org/@absolutejs/secure-transfer/-/secure-transfer-0.3.0.tgz","@types/bun":"1.3.14","prettier":"3.9.0","typescript":"5.9.3"},"absolutejs":{"manifestContract":2},"_id":"@absolutejs/secure-transfer-local@0.2.2","gitHead":"939dc2275d8ca4dddab486b6904aaebe035af437","_nodeVersion":"22.14.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-5HTvWIobC21jkH6Bx0iE4AJLiyszct3OOPElv4g+FvFOdivGBaL3UKEOLRRmKfO9fpjft/h3kE/MXEkNM6ROGg==","shasum":"e231bbe4a8f9affccd0d486987c352adb5451d5b","tarball":"https://registry.npmjs.org/@absolutejs/secure-transfer-local/-/secure-transfer-local-0.2.2.tgz","fileCount":14,"unpackedSize":88418,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDDGpBSAz6aTRZPr/fEjffxuWHo1V9xRKDOw/WEYjOg+QIgHexWdgKr9N8c2blKKsF3GzLHy+C3gdBT30x4KSBXBGw="}]},"_npmUser":{"name":"alexkahndev","email":"alexkahn2019@gmail.com"},"directories":{},"maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/secure-transfer-local_0.2.2_1787797282873_0.8450884449081655"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-27T01:14:24.078Z","modified":"2026-08-27T02:21:23.282Z","0.0.1":"2026-08-27T01:14:24.418Z","0.1.0":"2026-08-27T01:38:42.378Z","0.2.0":"2026-08-27T02:01:29.632Z","0.2.1":"2026-08-27T02:03:49.547Z","0.2.2":"2026-08-27T02:21:23.034Z"},"bugs":{"url":"https://github.com/absolutejs/secure-transfer-adapters/issues"},"author":{"name":"Alex Kahn"},"license":"Apache-2.0","homepage":"https://github.com/absolutejs/secure-transfer-adapters/tree/master/local","repository":{"type":"git","url":"git+https://github.com/absolutejs/secure-transfer-adapters.git","directory":"local"},"description":"Atomic local-filesystem storage adapter for @absolutejs/secure-transfer.","maintainers":[{"name":"alexkahndev","email":"alexkahn2019@gmail.com"}],"readme":"# `@absolutejs/secure-transfer-local`\n\nLocal-filesystem `SecureTransferLifecycleStore` for development, tests, and\nsingle-host deployments.\n\n```ts\nimport {\n  localProtectedReceiptStore,\n  localSecureTransferRevocationStore,\n  localSecureTransferStore,\n} from \"@absolutejs/secure-transfer-local\";\n\nconst store = localSecureTransferStore({ root: \"/srv/private/ciphertext\" });\nconst receiptStore = localProtectedReceiptStore({\n  root: \"/srv/private/ciphertext\",\n});\nconst revocations = localSecureTransferRevocationStore({\n  root: \"/srv/private/policy\",\n});\n```\n\nRecords are atomically installed with a same-filesystem hard link. Existing\nrecords are never overwritten. Each record carries a private binary expiry\nheader so an interrupted write cannot leave ciphertext without cleanup data.\n\nRun `sweepExpired()` on a schedule and repeat while `truncated` is true. The\nadapter validates transfer IDs and never follows caller-controlled paths.\nExpiry-stamped temporary writes are swept too, including partial files left by a\nprocess crash before the atomic link.\n\nThe receipt store persists only bytes already protected by a\n`SecureTransferReceiptProtector`. It uses cross-process lock directories, lease\nexpiry, version checks, and atomic rename. Run `sweepExpiredReceipts()` for\nabandoned resumable-upload state.\n\nThe revocation store creates immutable SHA-256 descriptor tombstones without\nplacing transfer IDs in paths or plaintext files. Use a policy root protected\nfrom ciphertext-storage credentials. Run `sweepExpiredRevocations()` repeatedly\nwith its cursor only after each tombstone's required retention has ended.\n","readmeFilename":"README.md"}