{"_id":"@avelonjs/neon","_rev":"15-3b131830f51d2766193067ded722d557","name":"@avelonjs/neon","dist-tags":{"latest":"0.8.3"},"versions":{"0.3.0":{"name":"@avelonjs/neon","version":"0.3.0","keywords":["avelon","typescript","neon","postgres","s3"],"author":{"name":"Ryan Yannelli","email":"ryanyannelli@gmail.com"},"license":"MIT","_id":"@avelonjs/neon@0.3.0","maintainers":[{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"}],"homepage":"https://github.com/yannelli/avelon","bugs":{"url":"https://github.com/yannelli/avelon/issues"},"dist":{"shasum":"968f1d10507776b62209d2797f97ab60919924b8","tarball":"https://registry.npmjs.org/@avelonjs/neon/-/neon-0.3.0.tgz","fileCount":23,"integrity":"sha512-vG2VMAE40CjSZTBgu8GePidQ8tobPieJZJ9wKrqVf66jGBIpujzypYFIfTkK7tLUwmWGkJufPqRvHpg9fvPgoA==","signatures":[{"sig":"MEYCIQCYDWVvepzlv/VSektHiWmgw3A203o0y2PN3LBjn9uBxgIhALREuw6FZORra/sxMEXbAVB2vml3GqdhvhyvL6CgqzHM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":112842},"type":"module","engines":{"bun":">=1.3.14"},"exports":{".":"./src/index.ts","./database":"./src/database/index.ts"},"gitHead":"5ca2de946d13813afe58a4fe89b01ef65edc2870","private":false,"scripts":{"test":"bun test","typecheck":"tsc --noEmit"},"_npmUser":{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"},"repository":{"url":"git+https://github.com/yannelli/avelon.git","type":"git","directory":"packages/neon"},"_npmVersion":"10.9.8","description":"Neon drivers for Avelon's database, identity, social, tokens, storage, and queue contracts.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@avelonjs/core":"workspace:*","@avelonjs/postgres":"workspace:*","@aws-sdk/client-s3":"3.899.0","@neondatabase/serverless":"1.0.2","@aws-sdk/s3-request-presigner":"3.899.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"1.3.14","typescript":"5.9.3","@avelonjs/conformance":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/neon_0.3.0_1788023475514_0.5979613596754756","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@avelonjs/neon","version":"0.3.1","keywords":["avelon","typescript","neon","postgres","s3"],"author":{"name":"Ryan Yannelli","email":"ryanyannelli@gmail.com"},"license":"MIT","_id":"@avelonjs/neon@0.3.1","maintainers":[{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"}],"homepage":"https://github.com/yannelli/avelon","bugs":{"url":"https://github.com/yannelli/avelon/issues"},"dist":{"shasum":"4009ffe534de8f97b3771c368bcc17373189132e","tarball":"https://registry.npmjs.org/@avelonjs/neon/-/neon-0.3.1.tgz","fileCount":23,"integrity":"sha512-un2Vvp6tz0NOQAqAPB1ohY1pXMsdZ3Ihy3L81ukammcg/0ZDyBdYFlwTRrfy44HwJNDAnAWcUqdJF3oWn2IusQ==","signatures":[{"sig":"MEQCIFiHKUVyySo7UoEfSjLyzTl7adxOtohVhYjtC7F5wUZoAiAHFMBz47XKwjI501+CTx4PifwwA4rnZKvZu4QZSYXFnA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":112842},"type":"module","engines":{"bun":">=1.3.14"},"exports":{".":"./src/index.ts","./database":"./src/database/index.ts"},"gitHead":"7db3e1301e4ce243c5b34a813b50c6b286d5bd81","private":false,"scripts":{"test":"bun test","typecheck":"tsc --noEmit"},"_npmUser":{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"},"repository":{"url":"git+https://github.com/yannelli/avelon.git","type":"git","directory":"packages/neon"},"_npmVersion":"10.9.8","description":"Neon drivers for Avelon's database, identity, social, tokens, storage, and queue contracts.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@avelonjs/core":"workspace:*","@avelonjs/postgres":"workspace:*","@aws-sdk/client-s3":"3.899.0","@neondatabase/serverless":"1.0.2","@aws-sdk/s3-request-presigner":"3.899.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"1.3.14","typescript":"5.9.3","@avelonjs/conformance":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/neon_0.3.1_1788024214110_0.46959291824391625","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@avelonjs/neon","version":"0.3.2","keywords":["avelon","typescript","neon","postgres","s3"],"author":{"name":"Ryan Yannelli","email":"ryanyannelli@gmail.com"},"license":"MIT","_id":"@avelonjs/neon@0.3.2","maintainers":[{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"}],"homepage":"https://github.com/yannelli/avelon","bugs":{"url":"https://github.com/yannelli/avelon/issues"},"dist":{"shasum":"5f806d91144260a58831e683f459dc89b6832196","tarball":"https://registry.npmjs.org/@avelonjs/neon/-/neon-0.3.2.tgz","fileCount":23,"integrity":"sha512-u4GT3fwAl5rhTUjA2JvhlZ/Fuc6k/VPzwmtxKBTRTpPvXYlpSCPWMB5QPBcqlm7whTph2bJzwLqMEYVYQAausA==","signatures":[{"sig":"MEUCIQCrNOsg+dX0WuML/iFTgGGRAU18B2UTqu4IZ/ihlHR6hwIgHPwyYpfYYdwUa9oHLrZHRwNEBSj+R9+umSQszXGUxZk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":112842},"type":"module","engines":{"bun":">=1.3.14"},"exports":{".":"./src/index.ts","./database":"./src/database/index.ts"},"gitHead":"373016ed35e1c24c983e76bd76fab0959b249021","private":false,"scripts":{"test":"bun test","typecheck":"tsc --noEmit"},"_npmUser":{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"},"repository":{"url":"git+https://github.com/yannelli/avelon.git","type":"git","directory":"packages/neon"},"_npmVersion":"10.9.8","description":"Neon drivers for Avelon's database, identity, social, tokens, storage, and queue contracts.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@avelonjs/core":"workspace:*","@avelonjs/postgres":"workspace:*","@aws-sdk/client-s3":"3.899.0","@neondatabase/serverless":"1.0.2","@aws-sdk/s3-request-presigner":"3.899.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"1.3.14","typescript":"5.9.3","@avelonjs/conformance":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/neon_0.3.2_1788025875729_0.08652391413123883","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@avelonjs/neon","version":"0.3.3","keywords":["avelon","typescript","neon","postgres","s3"],"author":{"name":"Ryan Yannelli","email":"ryanyannelli@gmail.com"},"license":"MIT","_id":"@avelonjs/neon@0.3.3","maintainers":[{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"}],"homepage":"https://github.com/yannelli/avelon","bugs":{"url":"https://github.com/yannelli/avelon/issues"},"dist":{"shasum":"e9c3214f821732c7092e873d38df9a5df49418ac","tarball":"https://registry.npmjs.org/@avelonjs/neon/-/neon-0.3.3.tgz","fileCount":23,"integrity":"sha512-i40GZSbi+e43aeMoKzMhY7TxIDKp/EUUdC6x9xxbFQS1BFTj7kDY6lU7kbRLJNCabXSetyeQwlfBo9YPNVO3tA==","signatures":[{"sig":"MEUCIGaF1Z9/1U113jPddJli0NHkjrkuuZoGA0yJa2v8WNUfAiEAgpwl26V537IU5BHrzfdsv7/Erh0igLcHBPVjzX2yZZ0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":113117},"type":"module","engines":{"bun":">=1.3.14"},"exports":{".":"./src/index.ts","./database":"./src/database/index.ts"},"gitHead":"7cf9902a019c313c1754d81e2ff067147b39cc8f","private":false,"scripts":{"test":"bun test","typecheck":"tsc --noEmit"},"_npmUser":{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"},"repository":{"url":"git+https://github.com/yannelli/avelon.git","type":"git","directory":"packages/neon"},"_npmVersion":"10.9.8","description":"Neon drivers for Avelon's database, identity, social, tokens, storage, and queue contracts.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@avelonjs/core":"workspace:*","@avelonjs/postgres":"workspace:*","@aws-sdk/client-s3":"3.899.0","@neondatabase/serverless":"1.0.2","@aws-sdk/s3-request-presigner":"3.899.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"1.3.14","typescript":"5.9.3","@avelonjs/conformance":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/neon_0.3.3_1788028623842_0.4780404227223285","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"@avelonjs/neon","version":"0.3.4","keywords":["avelon","typescript","neon","postgres","s3"],"author":{"name":"Ryan Yannelli","email":"ryanyannelli@gmail.com"},"license":"MIT","_id":"@avelonjs/neon@0.3.4","maintainers":[{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"}],"homepage":"https://github.com/yannelli/avelon","bugs":{"url":"https://github.com/yannelli/avelon/issues"},"dist":{"shasum":"a197517a2220b9cd0ae90778023d355961d5c4d9","tarball":"https://registry.npmjs.org/@avelonjs/neon/-/neon-0.3.4.tgz","fileCount":23,"integrity":"sha512-gU+n6q0hglstuCJeDMst42KzIKnAFiUmo0nKo/KJ7UheN5ApqPVaPFuNuPUlKojqElcolx2rqRkyBQaeERJCxw==","signatures":[{"sig":"MEYCIQCbbAfTGDECWsmOpaLEZ++EVYLP3UIxwKXqKxjwgrEsLgIhAKlx84qsZ8lRFRz20FLGN4OjjvMmCrTLRrW3IaVyZzSH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":113117},"type":"module","engines":{"bun":">=1.3.14"},"exports":{".":"./src/index.ts","./database":"./src/database/index.ts"},"gitHead":"90bba7a154835ac71d6aca6c0e3a83dea5d5a709","private":false,"scripts":{"test":"bun test","typecheck":"tsc --noEmit"},"_npmUser":{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"},"repository":{"url":"git+https://github.com/yannelli/avelon.git","type":"git","directory":"packages/neon"},"_npmVersion":"10.9.8","description":"Neon drivers for Avelon's database, identity, social, tokens, storage, and queue contracts.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@avelonjs/core":"workspace:*","@avelonjs/postgres":"workspace:*","@aws-sdk/client-s3":"3.899.0","@neondatabase/serverless":"1.0.2","@aws-sdk/s3-request-presigner":"3.899.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"1.3.14","typescript":"5.9.3","@avelonjs/conformance":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/neon_0.3.4_1788030148659_0.17490595440803758","host":"s3://npm-registry-packages-npm-production"}},"0.3.5":{"name":"@avelonjs/neon","version":"0.3.5","keywords":["avelon","typescript","neon","postgres","s3"],"author":{"name":"Ryan Yannelli","email":"ryanyannelli@gmail.com"},"license":"MIT","_id":"@avelonjs/neon@0.3.5","maintainers":[{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"}],"homepage":"https://github.com/yannelli/avelon","bugs":{"url":"https://github.com/yannelli/avelon/issues"},"dist":{"shasum":"7d9217d52ebf92e55bbfd28f4338fae5e9fa843b","tarball":"https://registry.npmjs.org/@avelonjs/neon/-/neon-0.3.5.tgz","fileCount":23,"integrity":"sha512-HimNT32GKS4aKo/Brt0BLNouqJBAIieNhJxoAy1cJTOk9fUqFQzLEcF3hvcnNEaTZSCdoM4sT3Byia5+peyNzg==","signatures":[{"sig":"MEYCIQCXPHKHDcb+sDpwl6oz0Vdo6NryEHoCqo3DCYHZ4L0LwgIhAMcRyDhdUygbSWYya/RdYELjcWXmRqCoiUZTu8qWR53Z","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":113117},"type":"module","engines":{"bun":">=1.3.14"},"exports":{".":"./src/index.ts","./database":"./src/database/index.ts"},"gitHead":"3f76dd494bd9e721f9088db1a8f4daea53410a7a","private":false,"scripts":{"test":"bun test","typecheck":"tsc --noEmit"},"_npmUser":{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"},"repository":{"url":"git+https://github.com/yannelli/avelon.git","type":"git","directory":"packages/neon"},"_npmVersion":"10.9.8","description":"Neon drivers for Avelon's database, identity, social, tokens, storage, and queue contracts.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@avelonjs/core":"workspace:*","@avelonjs/postgres":"workspace:*","@aws-sdk/client-s3":"3.899.0","@neondatabase/serverless":"1.0.2","@aws-sdk/s3-request-presigner":"3.899.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"1.3.14","typescript":"5.9.3","@avelonjs/conformance":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/neon_0.3.5_1788032068330_0.638515246699237","host":"s3://npm-registry-packages-npm-production"}},"0.3.6":{"name":"@avelonjs/neon","version":"0.3.6","keywords":["avelon","typescript","neon","postgres","s3"],"author":{"name":"Ryan Yannelli","email":"ryanyannelli@gmail.com"},"license":"MIT","_id":"@avelonjs/neon@0.3.6","maintainers":[{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"}],"homepage":"https://github.com/yannelli/avelon","bugs":{"url":"https://github.com/yannelli/avelon/issues"},"dist":{"shasum":"74c2e64d4474e5f43875a2d41b81524dde12d5f8","tarball":"https://registry.npmjs.org/@avelonjs/neon/-/neon-0.3.6.tgz","fileCount":23,"integrity":"sha512-6QbK2V7fpwTvsluNRSNoZeMA5JotAN6t0+gmABERUVVsfydwO1Y4CeH16DkHFNEqVl1TBPE3rtWZligF7KHKzg==","signatures":[{"sig":"MEUCIGk3AVXkXGdjNTEDiLf3KX5iCGDp809bPFtW7HAYH++rAiEAz9gUn1Ab8rjZ5o8utRI1YJOny2VFZqwASdI/ayFIYzE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":113117},"type":"module","engines":{"bun":">=1.3.14"},"exports":{".":"./src/index.ts","./database":"./src/database/index.ts"},"gitHead":"3ef55fff54a51fd6085a5ed18163ddd0b8ccebb4","private":false,"scripts":{"test":"bun test","typecheck":"tsc --noEmit"},"_npmUser":{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"},"repository":{"url":"git+https://github.com/yannelli/avelon.git","type":"git","directory":"packages/neon"},"_npmVersion":"10.9.8","description":"Neon drivers for Avelon's database, identity, social, tokens, storage, and queue contracts.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@avelonjs/core":"workspace:*","@avelonjs/postgres":"workspace:*","@aws-sdk/client-s3":"3.899.0","@neondatabase/serverless":"1.0.2","@aws-sdk/s3-request-presigner":"3.899.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"1.3.14","typescript":"5.9.3","@avelonjs/conformance":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/neon_0.3.6_1788039400299_0.5508081727300922","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@avelonjs/neon","version":"0.4.0","keywords":["avelon","typescript","neon","postgres","s3"],"author":{"name":"Ryan Yannelli","email":"ryanyannelli@gmail.com"},"license":"MIT","_id":"@avelonjs/neon@0.4.0","maintainers":[{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"}],"homepage":"https://github.com/yannelli/avelon","bugs":{"url":"https://github.com/yannelli/avelon/issues"},"dist":{"shasum":"55ef115d6d35628f621b9846a8c930609d917f9f","tarball":"https://registry.npmjs.org/@avelonjs/neon/-/neon-0.4.0.tgz","fileCount":23,"integrity":"sha512-imtzWP9tp2M7SDCZO6CeV6So/IuENBgoI6CGEVrcgzgjjQ1VNI3JsjGusQVE7o3+vNvKavcS3Ut+drnb2WbB5w==","signatures":[{"sig":"MEUCIDsVDdODj9FpOJC4t445oFl5cWtIkfRmcN5p0rv7bYcMAiEAn3+2pUiU381lXGJOCQWNo1o8hVCfG/YtQFZNmkmQLcc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":113117},"type":"module","engines":{"bun":">=1.3.14"},"exports":{".":"./src/index.ts","./database":"./src/database/index.ts"},"gitHead":"012a24ec3e5cbf2682493e79398779c5f4ce50d5","private":false,"scripts":{"test":"bun test","typecheck":"tsc --noEmit"},"_npmUser":{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"},"repository":{"url":"git+https://github.com/yannelli/avelon.git","type":"git","directory":"packages/neon"},"_npmVersion":"10.9.8","description":"Neon drivers for Avelon's database, identity, social, tokens, storage, and queue contracts.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@avelonjs/core":"workspace:*","@avelonjs/postgres":"workspace:*","@aws-sdk/client-s3":"3.899.0","@neondatabase/serverless":"1.0.2","@aws-sdk/s3-request-presigner":"3.899.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"1.3.14","typescript":"5.9.3","@avelonjs/conformance":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/neon_0.4.0_1788047797776_0.6998308333058159","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@avelonjs/neon","version":"0.5.0","keywords":["avelon","typescript","neon","postgres","s3"],"author":{"name":"Ryan Yannelli","email":"ryanyannelli@gmail.com"},"license":"MIT","_id":"@avelonjs/neon@0.5.0","maintainers":[{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"}],"homepage":"https://github.com/yannelli/avelon","bugs":{"url":"https://github.com/yannelli/avelon/issues"},"dist":{"shasum":"ea8c8cd2a458652b8e14a23fb790441bd0f67efa","tarball":"https://registry.npmjs.org/@avelonjs/neon/-/neon-0.5.0.tgz","fileCount":23,"integrity":"sha512-BCttAzTnHu8KXcwucY9WAiCWJ6S5RZSX37rCxjrXrJcPyVM9aND51HjJext5MeZ4FdigVJd/uy2khvGM/I45Jg==","signatures":[{"sig":"MEYCIQDrEphTtmw4dEL8w4Spgh92x1qGTqu/K7YXy92KERc7GgIhAL6o5VMQmGng5uCdzCdXnpd5qojkRuF8//ijwlAjTMdV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":113117},"type":"module","engines":{"bun":">=1.3.14"},"exports":{".":"./src/index.ts","./database":"./src/database/index.ts"},"gitHead":"9605f4db9921b323684a72cca1eb125fca936237","private":false,"scripts":{"test":"bun test","typecheck":"tsc --noEmit"},"_npmUser":{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"},"repository":{"url":"git+https://github.com/yannelli/avelon.git","type":"git","directory":"packages/neon"},"_npmVersion":"10.9.8","description":"Neon drivers for Avelon's database, identity, social, tokens, storage, and queue contracts.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@avelonjs/core":"workspace:*","@avelonjs/postgres":"workspace:*","@aws-sdk/client-s3":"3.899.0","@neondatabase/serverless":"1.0.2","@aws-sdk/s3-request-presigner":"3.899.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"1.3.14","typescript":"5.9.3","@avelonjs/conformance":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/neon_0.5.0_1788054176216_0.7882177232660317","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@avelonjs/neon","version":"0.6.0","keywords":["avelon","typescript","neon","postgres","s3"],"author":{"name":"Ryan Yannelli","email":"ryanyannelli@gmail.com"},"license":"MIT","_id":"@avelonjs/neon@0.6.0","maintainers":[{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"}],"homepage":"https://github.com/yannelli/avelon","bugs":{"url":"https://github.com/yannelli/avelon/issues"},"dist":{"shasum":"a56e3beab989c5767896154860a0da4c25e274fc","tarball":"https://registry.npmjs.org/@avelonjs/neon/-/neon-0.6.0.tgz","fileCount":23,"integrity":"sha512-qH3HNJkZaIRe37aNej9CO/t2dWRELa//VzYejLq3agmCNTx9OJKSJgwlzSxOcyLXeyAAgPylkZ66Rl5LpaGvrw==","signatures":[{"sig":"MEQCIGOxiR6mdjOEk5MWY32hxUihSEKnbLSQ6Z0Ci3qqx2KtAiBPvct4PF2uDPfNOJI+ux3tqa22ObokxwVrqMV9YcisZw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":113117},"type":"module","engines":{"bun":">=1.3.14"},"exports":{".":"./src/index.ts","./database":"./src/database/index.ts"},"gitHead":"54023b71e432677d2cf32a6b5cceeb2eb90aac3f","private":false,"scripts":{"test":"bun test","typecheck":"tsc --noEmit"},"_npmUser":{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"},"repository":{"url":"git+https://github.com/yannelli/avelon.git","type":"git","directory":"packages/neon"},"_npmVersion":"10.9.8","description":"Neon drivers for Avelon's database, identity, social, tokens, storage, and queue contracts.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@avelonjs/core":"workspace:*","@avelonjs/postgres":"workspace:*","@aws-sdk/client-s3":"3.899.0","@neondatabase/serverless":"1.0.2","@aws-sdk/s3-request-presigner":"3.899.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"1.3.14","typescript":"5.9.3","@avelonjs/conformance":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/neon_0.6.0_1788059425941_0.3617978681580194","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@avelonjs/neon","version":"0.7.0","keywords":["avelon","typescript","neon","postgres","s3"],"author":{"name":"Ryan Yannelli","email":"ryanyannelli@gmail.com"},"license":"MIT","_id":"@avelonjs/neon@0.7.0","maintainers":[{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"}],"homepage":"https://github.com/yannelli/avelon","bugs":{"url":"https://github.com/yannelli/avelon/issues"},"dist":{"shasum":"07aba79c87c60a72ae7fcfb48738579f300e87d9","tarball":"https://registry.npmjs.org/@avelonjs/neon/-/neon-0.7.0.tgz","fileCount":23,"integrity":"sha512-H8ts4Z+L0eEUGc2qmtm21p/ZBQTssDHllD0+7X2dTzs3KoEVgRFQwhBEY2aEi353KIInvmT0SiEatPghxXNX2A==","signatures":[{"sig":"MEQCIGtTlNQ5lp97GlNmPTXIcSbbk+A6+GY2ttrP6x5WXLjdAiAXnqtG3FgoQS2fZgxPxbUy77lP6DV2OCYfqAK9yDYNuA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":113117},"type":"module","engines":{"bun":">=1.3.14"},"exports":{".":"./src/index.ts","./database":"./src/database/index.ts"},"gitHead":"b8ce5ffcbba806b76a3a92f0e92e5455f42e5802","private":false,"scripts":{"test":"bun test","typecheck":"tsc --noEmit"},"_npmUser":{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"},"repository":{"url":"git+https://github.com/yannelli/avelon.git","type":"git","directory":"packages/neon"},"_npmVersion":"10.9.8","description":"Neon drivers for Avelon's database, identity, social, tokens, storage, and queue contracts.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@avelonjs/core":"workspace:*","@avelonjs/postgres":"workspace:*","@aws-sdk/client-s3":"3.899.0","@neondatabase/serverless":"1.0.2","@aws-sdk/s3-request-presigner":"3.899.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"1.3.14","typescript":"5.9.3","@avelonjs/conformance":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/neon_0.7.0_1788061403551_0.12078034184789765","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@avelonjs/neon","version":"0.8.0","keywords":["avelon","typescript","neon","postgres","s3"],"author":{"name":"Ryan Yannelli","email":"ryanyannelli@gmail.com"},"license":"MIT","_id":"@avelonjs/neon@0.8.0","maintainers":[{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"}],"homepage":"https://github.com/yannelli/avelon","bugs":{"url":"https://github.com/yannelli/avelon/issues"},"dist":{"shasum":"dd9532a7ad5316c51ab211e118c781574773cf2b","tarball":"https://registry.npmjs.org/@avelonjs/neon/-/neon-0.8.0.tgz","fileCount":23,"integrity":"sha512-DnYa4crAfgmOUig5n8xAj4LjIjElnxFbSgTQEu84HcH1ZOEKK5PKmhjYvZkNGFcfqmRQvcnxJ/iixaoMzisJgQ==","signatures":[{"sig":"MEYCIQCCkfnudkNwg4gkfOqVAY2OYKK0O6/9qAQfE1WeSbr9ZgIhANK7xztQQexyYdbHg/0wrfGj2q2n5IgB8/tOndXBaqpc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":113117},"type":"module","engines":{"bun":">=1.3.14"},"exports":{".":"./src/index.ts","./database":"./src/database/index.ts"},"gitHead":"85231d8c4b64ac61a0a67f1ae8d1610bd8e609ac","private":false,"scripts":{"test":"bun test","typecheck":"tsc --noEmit"},"_npmUser":{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"},"repository":{"url":"git+https://github.com/yannelli/avelon.git","type":"git","directory":"packages/neon"},"_npmVersion":"10.9.8","description":"Neon drivers for Avelon's database, identity, social, tokens, storage, and queue contracts.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@avelonjs/core":"workspace:*","@avelonjs/postgres":"workspace:*","@aws-sdk/client-s3":"3.899.0","@neondatabase/serverless":"1.0.2","@aws-sdk/s3-request-presigner":"3.899.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"1.3.14","typescript":"5.9.3","@avelonjs/conformance":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/neon_0.8.0_1788068895163_0.16529681805524876","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"@avelonjs/neon","version":"0.8.1","keywords":["avelon","typescript","neon","postgres","s3"],"author":{"name":"Ryan Yannelli","email":"ryanyannelli@gmail.com"},"license":"MIT","_id":"@avelonjs/neon@0.8.1","maintainers":[{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"}],"homepage":"https://github.com/yannelli/avelon","bugs":{"url":"https://github.com/yannelli/avelon/issues"},"dist":{"shasum":"2b1c184b67721414b165e5d2096bb0c61d7ffb35","tarball":"https://registry.npmjs.org/@avelonjs/neon/-/neon-0.8.1.tgz","fileCount":23,"integrity":"sha512-HUd+HW5sN1uATiOIIc1weX6f89CjnrBYh4GSpSQHdMOiDFyxa+Nsy9Ci+nxR/6SlZh4spEXhteub9cIK35//fA==","signatures":[{"sig":"MEQCIFjnoO02Ir1gkSGThmj9e8qFZX1lTIBYZLovWXnUgqijAiBRRcG8bLql2pB4WiWZ6KLMDjhCzJQDEMedhFNqYKhJ3A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":113117},"type":"module","engines":{"bun":">=1.3.14"},"exports":{".":"./src/index.ts","./database":"./src/database/index.ts"},"gitHead":"3d7d0c0ff7f417e9f9a5c54dc85f037e8901bf81","private":false,"scripts":{"test":"bun test","typecheck":"tsc --noEmit"},"_npmUser":{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"},"repository":{"url":"git+https://github.com/yannelli/avelon.git","type":"git","directory":"packages/neon"},"_npmVersion":"10.9.8","description":"Neon drivers for Avelon's database, identity, social, tokens, storage, and queue contracts.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@avelonjs/core":"workspace:*","@avelonjs/postgres":"workspace:*","@aws-sdk/client-s3":"3.899.0","@neondatabase/serverless":"1.0.2","@aws-sdk/s3-request-presigner":"3.899.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"1.3.14","typescript":"5.9.3","@avelonjs/conformance":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/neon_0.8.1_1788573053651_0.3477138173852965","host":"s3://npm-registry-packages-npm-production"}},"0.8.2":{"name":"@avelonjs/neon","version":"0.8.2","keywords":["avelon","typescript","neon","postgres","s3"],"author":{"name":"Ryan Yannelli","email":"ryanyannelli@gmail.com"},"license":"MIT","_id":"@avelonjs/neon@0.8.2","maintainers":[{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"}],"homepage":"https://github.com/yannelli/avelon","bugs":{"url":"https://github.com/yannelli/avelon/issues"},"dist":{"shasum":"33a7a45e7c41a2e9f18e6ce4cb16d225fb7eca75","tarball":"https://registry.npmjs.org/@avelonjs/neon/-/neon-0.8.2.tgz","fileCount":23,"integrity":"sha512-3ffVMrezyph3wMxX3s43+IyGBj+gU1qiLKR/sZ3blOpFIQxKBVLHMcZCL4YFFnLMTVMimVh7C33J+wiftJBydQ==","signatures":[{"sig":"MEYCIQDneI9JwXe76BzmgS0TNMOobz+agpX3eDrfN44BXrLshAIhAIYrc+FPijUi8TMktnCuD2bmGjkNAU51GVo8Z8eakBDn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDKykBXMS7Xe8AYgv3x1SFoWQrjRH0JAXMSRSPLmhAtPQIhANanRmiv8nVlSLSBZQPnfQPdDzzcGvlgoFpCg7ytrYHr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":113117},"type":"module","engines":{"bun":">=1.3.14"},"exports":{".":"./src/index.ts","./database":"./src/database/index.ts"},"gitHead":"25bfcd03379ae9ef7fc42aab33748eebc468170b","private":false,"scripts":{"test":"bun test","typecheck":"tsc --noEmit"},"_npmUser":{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"},"repository":{"url":"git+https://github.com/yannelli/avelon.git","type":"git","directory":"packages/neon"},"_npmVersion":"10.9.8","description":"Neon drivers for Avelon's database, identity, social, tokens, storage, and queue contracts.","directories":{},"_nodeVersion":"24.3.0","dependencies":{"@avelonjs/core":"workspace:*","@avelonjs/postgres":"workspace:*","@aws-sdk/client-s3":"3.899.0","@neondatabase/serverless":"1.0.2","@aws-sdk/s3-request-presigner":"3.899.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"1.3.14","typescript":"5.9.3","@avelonjs/conformance":"workspace:*"},"_npmOperationalInternal":{"tmp":"tmp/neon_0.8.2_1789879594288_0.030120910848721483","host":"s3://npm-registry-packages-npm-production"}},"0.8.3":{"_id":"@avelonjs/neon@0.8.3","bugs":{"url":"https://github.com/yannelli/avelon/issues"},"dist":{"shasum":"1587770de1880a25f51e3d34566119e1b6f13048","tarball":"https://registry.npmjs.org/@avelonjs/neon/-/neon-0.8.3.tgz","fileCount":23,"integrity":"sha512-TZb6LLpNTvDYDUtApf0r74pjNfet/qvcZxLDsaU5VJBKaC8Lry1CPuXVnhGRsVoFu1iOMQO2otBMiIa2Dbef1g==","signatures":[{"sig":"MEQCIH9kI8MNUrIIWwCQNNv9gfu9EghN2LXaAmtcuEMEPRzsAiBRrDlgoJb8mTDCUy1kCX1TYAP5qb06XB+R/rgycy1nAg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCbHHJrCjYlnb8kpTe/tTfLGQHaGxuqwzXuoaU6bZqVYQIhAMKBS4+sszxSMRXrKa8iXcRPnMFX+8hwxM15lvj0Qdmr"}],"unpackedSize":113117},"name":"@avelonjs/neon","type":"module","author":{"name":"Ryan Yannelli","email":"ryanyannelli@gmail.com"},"engines":{"bun":">=1.3.14"},"exports":{".":"./src/index.ts","./database":"./src/database/index.ts"},"gitHead":"1231a6430f47d15b9e6fe6cbc04dbbb5d189124e","license":"MIT","private":false,"scripts":{"test":"bun test","typecheck":"tsc --noEmit"},"version":"0.8.3","_npmUser":{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"},"homepage":"https://github.com/yannelli/avelon","keywords":["avelon","typescript","neon","postgres","s3"],"repository":{"url":"git+https://github.com/yannelli/avelon.git","type":"git","directory":"packages/neon"},"_npmVersion":"10.9.8","description":"Neon drivers for Avelon's database, identity, social, tokens, storage, and queue contracts.","directories":{},"maintainers":[{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"}],"_nodeVersion":"24.3.0","dependencies":{"@avelonjs/core":"workspace:*","@avelonjs/postgres":"workspace:*","@aws-sdk/client-s3":"3.899.0","@neondatabase/serverless":"1.0.2","@aws-sdk/s3-request-presigner":"3.899.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"1.3.14","typescript":"5.9.3","@avelonjs/conformance":"workspace:*"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/neon_0.8.3_1789881699214_0.8923161451424115"}}},"time":{"created":"2026-08-29T17:11:15.274Z","modified":"2026-09-20T05:21:39.535Z","0.3.0":"2026-08-29T17:11:15.653Z","0.3.1":"2026-08-29T17:23:34.239Z","0.3.2":"2026-08-29T17:51:15.869Z","0.3.3":"2026-08-29T18:37:03.987Z","0.3.4":"2026-08-29T19:02:28.799Z","0.3.5":"2026-08-29T19:34:28.467Z","0.3.6":"2026-08-29T21:36:40.436Z","0.4.0":"2026-08-29T23:56:37.909Z","0.5.0":"2026-08-30T01:42:56.337Z","0.6.0":"2026-08-30T03:10:26.074Z","0.7.0":"2026-08-30T03:43:23.700Z","0.8.0":"2026-08-30T05:48:15.305Z","0.8.1":"2026-09-05T01:50:53.792Z","0.8.2":"2026-09-20T04:46:34.360Z","0.8.3":"2026-09-20T05:21:39.302Z"},"bugs":{"url":"https://github.com/yannelli/avelon/issues"},"author":{"name":"Ryan Yannelli","email":"ryanyannelli@gmail.com"},"license":"MIT","homepage":"https://github.com/yannelli/avelon","keywords":["avelon","typescript","neon","postgres","s3"],"repository":{"url":"git+https://github.com/yannelli/avelon.git","type":"git","directory":"packages/neon"},"description":"Neon drivers for Avelon's database, identity, social, tokens, storage, and queue contracts.","maintainers":[{"name":"ryanyannelli","email":"ryanyannelli@gmail.com"}],"readme":"# @avelonjs/neon\n\n`@avelonjs/neon` is the Neon stack for Avelon: a transaction-capable Postgres database, Neon Auth identity and social login, S3 object storage, and Postgres-backed Signets and queues. Reach for this package when you want the same six contracts `@avelonjs/supabase` covers, without PostgREST or GoTrue.\n\n## Installation\n\n```sh\nbun add @avelonjs/neon\n```\n\n```sh\nexport NEON_DATABASE_URL=postgresql://user:pass@ep-xxx.us-east-1.aws.neon.tech/neondb?sslmode=require\nexport NEON_AUTH_URL=https://ep-xxx.neonauth.net\nexport NEON_S3_BUCKET=avelon-uploads\nexport AWS_REGION=us-east-1\nexport AWS_ACCESS_KEY_ID=AKIA...\nexport AWS_SECRET_ACCESS_KEY=...\n```\n\nWire drivers only in `avelon.config.ts`. Application folders never import `@neondatabase/serverless` or `@aws-sdk/client-s3`.\n\n## Basic Usage\n\n```ts\nimport { createNeonDatabase } from '@avelonjs/neon'\nimport type { QueryIR } from '@avelonjs/core'\n\nconst db = createNeonDatabase({\n  url: process.env.NEON_DATABASE_URL,\n  instance: 'primary',\n})\n\nconst latest: QueryIR = {\n  table: 'posts',\n  mode: 'select',\n  select: ['id', 'title'],\n  where: [{ kind: 'null', column: 'published_at', negated: true }],\n  relations: [],\n  order: [{ column: 'published_at', direction: 'desc' }],\n  limit: 10,\n}\n\nawait db.execute(latest)\n```\n\n## Capabilities\n\n| Surface  | Notable capabilities                                                              |\n| -------- | --------------------------------------------------------------------------------- |\n| database | `transactions: true`, `upsert: true`, `returning: true`, `maxRelationDepth: 8`    |\n| identity | `passwords: true`, `magicLinks: true`, `mfa: ['totp']`, `emailVerification: true` |\n| social   | providers `github`, `google`                                                      |\n| tokens   | `abilities: true`, `expiration: true`                                             |\n| storage  | `signedUrls: true`, transforms empty                                              |\n| queue    | `delayed: true`, `retries: true`, `deadLetter: true`                              |\n\n`rowSecurity` stays `false`. Ward predicates still inject into Query IR. Neon is Postgres, so you can compile RLS yourself through `raw()`; this package does not ship a PostgREST-shaped `syncWards()` surface.\n\n## Database\n\nQuery IR, migrations, and schema checks compile through `@avelonjs/postgres/sql`, the subpath of that package whose import graph carries no `bun` specifier, so `@avelonjs/neon/database` runs on Node as well as Bun. `raw()` returns the `@neondatabase/serverless` query function.\n\nReads, writes, `rpc()`, and migrations go over Neon's HTTP endpoint, which holds no connection between calls. `transaction()` is the exception: the callback reads rows before deciding what to issue next, and Neon's HTTP transactions are non-interactive, so the first call opens a WebSocket `Pool` connection and `close()` ends it. That path needs a global `WebSocket`, which Node has from 22 on; on older runtimes set `neonConfig.webSocketConstructor` before the first transaction.\n\nImport from `@avelonjs/neon/database` rather than the package root when the runtime is Node. The root barrel also exports the queue and token drivers, which are built on Bun's SQL client.\n\n```ts\nimport { createNeonDatabase } from '@avelonjs/neon'\n\nconst db = createNeonDatabase({\n  migrations: [\n    {\n      id: '20260828_create_posts',\n      up: ['CREATE TABLE posts (id text PRIMARY KEY, title text NOT NULL)'],\n      down: ['DROP TABLE posts'],\n    },\n  ],\n})\n\nawait db.plan()\nawait db.apply()\nawait db.transaction(async (tx) => {\n  await tx.execute({\n    table: 'posts',\n    mode: 'insert',\n    select: [],\n    where: [],\n    relations: [],\n    order: [],\n    values: { id: 'post-1', title: 'Hello' },\n  })\n})\n```\n\n## Identity\n\nNeon Auth speaks the Better Auth HTTP surface. The config-time factory receives request-scoped cookies.\n\n```ts\nimport { createNeonIdentity } from '@avelonjs/neon'\n\nconst auth = createNeonIdentity({\n  authUrl: process.env.NEON_AUTH_URL,\n})\n\nexport async function currentUser(cookies: import('@avelonjs/core').RequestCookies) {\n  return auth(cookies).user()\n}\n```\n\nCapabilities: `passwords: true`, `magicLinks: true`, `oauth: false`, `organizations: false`, `mfa: ['totp']`, `emailVerification: true`. After password sign-in you challenge the enrolled TOTP factor and verify the authenticator code. `challengeMfa()` without an argument uses `totp`. Email confirmation uses Better Auth's send-and-verify token pair.\n\n```ts\nimport { createNeonIdentity } from '@avelonjs/neon'\nimport type { RequestCookies } from '@avelonjs/core'\n\nexport async function completeTotpAndEmail(cookies: RequestCookies) {\n  const identity = createNeonIdentity({\n    authUrl: process.env.NEON_AUTH_URL,\n  })(cookies)\n\n  await identity.signInWithPassword('jordan@example.com', 'correct-horse-battery')\n  const challenge = await identity.challengeMfa('totp')\n  await identity.verifyMfa(challenge.id, '123456')\n  await identity.sendEmailVerification()\n  await identity.verifyEmail('confirmation-token')\n}\n```\n\nOAuth linking stays undeclared until a live Neon Auth project exercises that surface in CI.\n\n## Social\n\n```ts\nimport { createNeonSocial } from '@avelonjs/neon'\n\nconst social = createNeonSocial({\n  authUrl: process.env.NEON_AUTH_URL,\n})\n\nexport async function githubRedirect(callbackUrl: string): Promise<string> {\n  return social.redirect('github', callbackUrl)\n}\n```\n\nProviders are the literal list `github` and `google`. Undeclared providers raise `Invalid`. A mismatched or missing OAuth `state` raises `Unauthenticated`.\n\n## Tokens\n\nNeon Auth does not issue named API tokens. Hashed Signets live in Postgres on the Neon database.\n\n```ts\nimport { createNeonTokens } from '@avelonjs/neon'\n\nconst tokens = createNeonTokens({\n  url: process.env.NEON_DATABASE_URL,\n  subject: 'user-1',\n})\n\nconst issued = await tokens.issue('deployment', { abilities: ['records:read'] })\nawait tokens.verify(issued.plainText)\n```\n\n## Storage\n\nObject bytes persist in S3. Point `endpoint` at AWS, Cloudflare R2, MinIO, or the in-process `LocalS3Server` used by conformance. Signed reads are SigV4 query URLs.\n\n```ts\nimport { createNeonStorage } from '@avelonjs/neon'\n\nconst disk = createNeonStorage({\n  bucket: process.env.NEON_S3_BUCKET,\n  instance: 'uploads',\n})\nawait disk.put('avatars/me.bin', new Uint8Array([1, 2, 3]), {\n  contentType: 'application/octet-stream',\n})\nconst url = await disk.signedUrl('avatars/me.bin', 60)\n```\n\nTransforms are undeclared in v1 (D28). Signed uploads and listing are deferred.\n\n## Queue\n\nDurable jobs use Postgres `FOR UPDATE SKIP LOCKED` on the Neon database.\n\n```ts\nimport { createNeonQueue } from '@avelonjs/neon'\n\nconst queue = createNeonQueue({\n  url: process.env.NEON_DATABASE_URL,\n})\nconst id = await queue.enqueue({ name: 'GenerateReport', payload: { reportId: 'report-1' } })\nawait queue.drain(async (receipt) => {\n  if (receipt.id !== id) return\n})\n```\n\n## Method Reference\n\n| Method / export                      | Signature                                                                                                                         | Description                                                           |\n| ------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- |\n| `createNeonDatabase`                 | `(options?: NeonDatabaseOptions) => NeonDatabase`                                                                                 | Constructs the Neon database driver.                                  |\n| `NeonDatabase`                       | `class NeonDatabase`                                                                                                              | Neon database implementation wrapping the Postgres Query IR compiler. |\n| `NeonDatabase.execute`               | `(query: QueryIR) => Promise<QueryResult>`                                                                                        | Compiles and executes one query IR operation.                         |\n| `NeonDatabase.rpc`                   | `(routine: string, args: Readonly<Record<string, unknown>>) => Promise<T>`                                                        | Invokes a Postgres routine; missing routines raise `Invalid`.         |\n| `NeonDatabase.plan`                  | `() => Promise<MigrationPlan>`                                                                                                    | Returns pending migration identifiers and SQL steps.                  |\n| `NeonDatabase.apply`                 | `() => Promise<readonly MigrationStatus[]>`                                                                                       | Applies pending migrations.                                           |\n| `NeonDatabase.rollback`              | `(steps?: number) => Promise<readonly MigrationStatus[]>`                                                                         | Rolls back the newest applied migration batches.                      |\n| `NeonDatabase.status`                | `() => Promise<readonly MigrationStatus[]>`                                                                                       | Lists applied and pending migration states.                           |\n| `NeonDatabase.transaction`           | `(callback) => Promise<T>`                                                                                                        | Runs a callback inside a Postgres transaction.                        |\n| `NeonDatabase.resetFixtures`         | `() => Promise<void>`                                                                                                             | Recreates assay fixtures used by live conformance.                    |\n| `NeonDatabase.raw`                   | `() => NeonSql`                                                                                                                   | Returns the `@neondatabase/serverless` query function.                |\n| `NeonDatabase.close`                 | `() => Promise<void>`                                                                                                             | Closes the underlying SQL client pool.                                |\n| `neonDatabaseCapabilities`           | `const`                                                                                                                           | Literal database capability declaration.                              |\n| `NeonDatabaseOptions`                | `interface`                                                                                                                       | Construction options for the database driver.                         |\n| `NeonSql`                            | `type`                                                                                                                            | Vendor client returned by `NeonDatabase.raw()`.                       |\n| `PostgresMigration`                  | `interface`                                                                                                                       | Driver-owned `id`, `up`, and `down` SQL pair.                         |\n| `createNeonIdentity`                 | `(options?: NeonIdentityOptions) => (cookies: RequestCookies) => NeonIdentity`                                                    | Returns the pinned config-time identity factory.                      |\n| `NeonIdentity`                       | `class NeonIdentity`                                                                                                              | Neon Auth identity implementation.                                    |\n| `NeonIdentity.user`                  | `() => Promise<NeonActor \\| null>`                                                                                                | Returns the current actor from the request cookie session.            |\n| `NeonIdentity.session`               | `() => Promise<NeonSession \\| null>`                                                                                              | Returns the current session or null.                                  |\n| `NeonIdentity.register`              | `(email: string, password: string) => Promise<NeonActor>`                                                                         | Registers and establishes a session cookie.                           |\n| `NeonIdentity.signInWithPassword`    | `(email: string, password: string) => Promise<NeonActor>`                                                                         | Signs in and writes the session cookie.                               |\n| `NeonIdentity.signOut`               | `() => Promise<void>`                                                                                                             | Ends the Auth session and clears the cookie.                          |\n| `NeonIdentity.sendPasswordReset`     | `(email: string) => Promise<void>`                                                                                                | Sends a recovery request without revealing account existence.         |\n| `NeonIdentity.resetPassword`         | `(token: string, password: string) => Promise<void>`                                                                              | Replaces a password after validating a recovery token.                |\n| `NeonIdentity.updatePassword`        | `(password: string) => Promise<void>`                                                                                             | Changes the current actor's password.                                 |\n| `NeonIdentity.sendMagicLink`         | `(email: string, redirectTo?: string) => Promise<void>`                                                                           | Sends a passwordless sign-in link.                                    |\n| `NeonIdentity.signInWithMagicLink`   | `(token: string) => Promise<NeonActor>`                                                                                           | Redeems a link token for a session.                                   |\n| `NeonIdentity.challengeMfa`          | `(factor?: 'totp') => Promise<MfaChallenge<'totp'>>`                                                                              | Begins a TOTP challenge for the current session.                      |\n| `NeonIdentity.verifyMfa`             | `(challengeId: string, code: string) => Promise<void>`                                                                            | Verifies a TOTP challenge response.                                   |\n| `NeonIdentity.sendEmailVerification` | `(email?: string) => Promise<void>`                                                                                               | Sends a confirmation message without revealing account existence.     |\n| `NeonIdentity.verifyEmail`           | `(token: string) => Promise<void>`                                                                                                | Confirms an email address after validating a vendor token.            |\n| `NeonIdentity.raw`                   | `() => { authUrl: string }`                                                                                                       | Returns the Auth HTTP root at the vendor boundary.                    |\n| `neonIdentityCapabilities`           | `const`                                                                                                                           | Literal identity capability declaration.                              |\n| `NeonIdentityOptions`                | `interface`                                                                                                                       | Construction options for the identity factory.                        |\n| `NeonActor`                          | `interface`                                                                                                                       | Actor payload with `id` and `email`.                                  |\n| `NeonSession`                        | `interface`                                                                                                                       | Cookie session with access and refresh tokens.                        |\n| `readSessionCookie`                  | `(cookies: RequestCookies, cookieName: string) => NeonSession \\| null`                                                            | Parses the request-scoped session cookie.                             |\n| `writeSessionCookie`                 | `(cookies: RequestCookies, cookieName: string, session: NeonSession) => void`                                                     | Writes the session cookie for the current request.                    |\n| `clearSessionCookie`                 | `(cookies: RequestCookies, cookieName: string) => void`                                                                           | Deletes the session cookie for the current request.                   |\n| `DEFAULT_SESSION_COOKIE`             | `string`                                                                                                                          | Default session cookie name.                                          |\n| `LocalAuthServer`                    | `class LocalAuthServer`                                                                                                           | Better Auth-shaped fixture for identity conformance.                  |\n| `LocalAuthServer.start`              | `() => Promise<string>`                                                                                                           | Starts the fixture on an ephemeral port.                              |\n| `LocalAuthServer.reset`              | `() => void`                                                                                                                      | Clears users, sessions, and recovery tokens.                          |\n| `LocalAuthServer.stop`               | `() => Promise<void>`                                                                                                             | Stops the fixture listener.                                           |\n| `LocalAuthServer.recoveryToken`      | `(email: string) => string \\| undefined`                                                                                          | Returns the recovery token issued for an email.                       |\n| `LocalAuthServer.magicLinkToken`     | `(email: string) => string \\| undefined`                                                                                          | Returns the magic-link token issued for an email.                     |\n| `NEON_IDENTITY_ERROR_MAP`            | `readonly { code: string; framework: string; meaning: string }[]`                                                                 | Better Auth error codes and the taxonomy member each becomes.         |\n| `LocalAuthServer.verificationToken`  | `(email: string) => string \\| undefined`                                                                                          | Returns the email confirmation token issued for an email.             |\n| `createNeonSocial`                   | `(options?: NeonSocialOptions) => NeonSocial`                                                                                     | Constructs the Neon Auth social driver.                               |\n| `NeonSocial`                         | `class NeonSocial`                                                                                                                | Neon Auth social implementation.                                      |\n| `NeonSocial.redirect`                | `(provider: string, callbackUrl: string, state?: string) => Promise<string>`                                                      | Builds a Better Auth authorize URL and records CSRF state.            |\n| `NeonSocial.callback`                | `(provider: string, params: Readonly<Record<string, string>>, callbackUrl: string) => Promise<SocialIdentity>`                    | Verifies state and exchanges the authorization code.                  |\n| `NeonSocial.raw`                     | `() => { authUrl: string }`                                                                                                       | Returns the Auth HTTP root at the vendor boundary.                    |\n| `neonSocialCapabilities`             | `const`                                                                                                                           | Literal social provider declaration.                                  |\n| `NeonSocialOptions`                  | `interface`                                                                                                                       | Construction options for the social driver.                           |\n| `NeonSocialProfile`                  | `interface`                                                                                                                       | Normalized provider profile.                                          |\n| `LocalSocialServer`                  | `class LocalSocialServer`                                                                                                         | Better Auth-shaped token fixture for social conformance.              |\n| `LocalSocialServer.start`            | `() => Promise<string>`                                                                                                           | Starts the social fixture on an ephemeral port.                       |\n| `LocalSocialServer.stop`             | `() => Promise<void>`                                                                                                             | Stops the social fixture listener.                                    |\n| `createNeonTokens`                   | `(options?: NeonTokenOptions) => NeonTokens`                                                                                      | Constructs the Postgres-backed Signet driver.                         |\n| `NeonTokens`                         | `class NeonTokens`                                                                                                                | Neon Signet implementation.                                           |\n| `NeonTokens.issue`                   | `(name: string, options?: TokenIssueOptions) => Promise<IssuedToken>`                                                             | Issues a named token and returns plaintext once.                      |\n| `NeonTokens.verify`                  | `(plainText: string) => Promise<TokenRecord>`                                                                                     | Authenticates a plaintext token or raises `Unauthenticated`.          |\n| `NeonTokens.list`                    | `() => Promise<readonly TokenRecord[]>`                                                                                           | Lists metadata for the current subject without plaintext.             |\n| `NeonTokens.revoke`                  | `(id: string) => Promise<void>`                                                                                                   | Revokes one token by stable identifier.                               |\n| `NeonTokens.reset`                   | `() => Promise<void>`                                                                                                             | Recreates the empty signet table.                                     |\n| `NeonTokens.raw`                     | `() => SQL`                                                                                                                       | Returns the Bun SQL client at the vendor boundary.                    |\n| `NeonTokens.close`                   | `() => Promise<void>`                                                                                                             | Closes the SQL client pool.                                           |\n| `neonTokenCapabilities`              | `const`                                                                                                                           | Literal token capability declaration.                                 |\n| `NeonTokenOptions`                   | `interface`                                                                                                                       | Construction options for the token driver.                            |\n| `createNeonStorage`                  | `(options?: NeonStorageOptions) => NeonStorage`                                                                                   | Constructs the S3 storage driver.                                     |\n| `NeonStorage`                        | `class NeonStorage`                                                                                                               | S3 storage implementation.                                            |\n| `NeonStorage.put`                    | `(path: string, contents: Uint8Array \\| AsyncIterable<Uint8Array>, options?: { contentType?: string }) => Promise<StorageObject>` | Stores bytes and returns metadata.                                    |\n| `NeonStorage.get`                    | `(path: string) => Promise<Uint8Array>`                                                                                           | Reads object bytes or raises `NotFound`.                              |\n| `NeonStorage.delete`                 | `(path: string) => Promise<void>`                                                                                                 | Deletes an object if it exists.                                       |\n| `NeonStorage.exists`                 | `(path: string) => Promise<boolean>`                                                                                              | Reports whether an object exists.                                     |\n| `NeonStorage.signedUrl`              | `(path: string, expiresInSeconds: number) => Promise<string>`                                                                     | Creates a SigV4 signed read URL.                                      |\n| `NeonStorage.raw`                    | `() => S3Client`                                                                                                                  | Returns the AWS S3 client at the vendor boundary.                     |\n| `neonStorageCapabilities`            | `const`                                                                                                                           | Literal storage capability declaration.                               |\n| `NeonStorageOptions`                 | `interface`                                                                                                                       | Construction options for the storage driver.                          |\n| `LocalS3Server`                      | `class LocalS3Server`                                                                                                             | Path-style S3 fixture for storage conformance.                        |\n| `LocalS3Server.start`                | `() => Promise<string>`                                                                                                           | Starts the S3 fixture on an ephemeral port.                           |\n| `LocalS3Server.reset`                | `() => void`                                                                                                                      | Clears stored objects.                                                |\n| `LocalS3Server.stop`                 | `() => Promise<void>`                                                                                                             | Stops the S3 fixture listener.                                        |\n| `signedUrlExpiryMs`                  | `(url: URL) => number \\| undefined`                                                                                               | Parses SigV4 query expiry to epoch milliseconds.                      |\n| `createNeonQueue`                    | `(options?: NeonQueueOptions) => NeonQueue`                                                                                       | Constructs the skip-locked Postgres queue driver.                     |\n| `NeonQueue`                          | `class NeonQueue`                                                                                                                 | Neon queue implementation.                                            |\n| `NeonQueue.enqueue`                  | `(job: QueueJob) => Promise<string>`                                                                                              | Enqueues a job for immediate delivery.                                |\n| `NeonQueue.enqueueAt`                | `(job: QueueJob, availableAt: Date) => Promise<string>`                                                                           | Enqueues a job no earlier than the supplied time.                     |\n| `NeonQueue.drain`                    | `(handler: (receipt: QueueReceipt) => Promise<void>, options?: { queue?: string; limit?: number }) => Promise<number>`            | Delivers available jobs and counts attempts.                          |\n| `NeonQueue.retry`                    | `(id: string, delaySeconds?: number) => Promise<void>`                                                                            | Releases a failed job, optionally after a delay.                      |\n| `NeonQueue.failed`                   | `(queue?: string) => Promise<readonly FailedQueueJob[]>`                                                                          | Lists retained terminal failures.                                     |\n| `NeonQueue.replay`                   | `(id: string) => Promise<void>`                                                                                                   | Replays a terminal failure with a fresh attempt budget.               |\n| `NeonQueue.forget`                   | `(id: string) => Promise<void>`                                                                                                   | Permanently removes a terminal failure.                               |\n| `NeonQueue.reset`                    | `() => Promise<void>`                                                                                                             | Recreates empty job tables.                                           |\n| `NeonQueue.raw`                      | `() => SQL`                                                                                                                       | Returns the Bun SQL client at the vendor boundary.                    |\n| `NeonQueue.close`                    | `() => Promise<void>`                                                                                                             | Closes the SQL client pool.                                           |\n| `neonQueueCapabilities`              | `const`                                                                                                                           | Literal queue capability declaration.                                 |\n| `NeonQueueOptions`                   | `interface`                                                                                                                       | Construction options for the queue driver.                            |\n\n## Testing\n\nRun the shared suites. Identity and social use Better Auth-shaped local servers. Storage uses `LocalS3Server` so SigV4 signed reads stay fetchable without AWS. Database, tokens, and queue require a reachable Neon or Postgres URL and fail closed when it is missing.\n\nThe database driver talks to Neon's HTTP and WebSocket endpoints, which a plain Postgres does not serve. When the configured URL is not a `neon.tech` host, `tests/neon-local.ts` starts both endpoints locally in front of that Postgres, so live conformance exercises the real vendor client end to end.\n\n```ts\nimport { identitySuite, storageSuite } from '@avelonjs/conformance/suites'\nimport {\n  createNeonIdentity,\n  createNeonStorage,\n  LocalAuthServer,\n  LocalS3Server,\n} from '@avelonjs/neon'\n\nconst auth = new LocalAuthServer()\nconst authUrl = await auth.start()\nidentitySuite({\n  name: 'neon identity',\n  create: () => {\n    auth.reset()\n    return createNeonIdentity({ authUrl })\n  },\n  recoveryToken: async (email) => {\n    const token = auth.recoveryToken(email)\n    if (token === undefined) throw new Error(`No recovery token for ${email}`)\n    return token\n  },\n  emailVerificationToken: async (email) => {\n    const token = auth.verificationToken(email)\n    if (token === undefined) throw new Error(`No verification token for ${email}`)\n    return token\n  },\n})\n\nconst s3 = new LocalS3Server()\nconst endpoint = await s3.start()\nstorageSuite({\n  name: 'neon storage',\n  create: () => createNeonStorage({ endpoint, bucket: 'assay' }),\n})\n```\n\n```sh\nbun test\nbun run typecheck\nreeve docs:check\n```\n","readmeFilename":"README.md"}