{"_id":"@alteran/astro","_rev":"38-31ae0fe685ddbab42bb0494aae74fd91","name":"@alteran/astro","dist-tags":{"latest":"0.8.5"},"versions":{"0.1.0":{"name":"@alteran/astro","version":"0.1.0","license":"MIT","_id":"@alteran/astro@0.1.0","maintainers":[{"name":"rawkode","email":"david@rawkode.com"}],"homepage":"https://github.com/alteran-dev/alteran#readme","bugs":{"url":"https://github.com/alteran-dev/alteran/issues"},"dist":{"shasum":"f48ed4e6101b49dd7aa0de58ed6c47f746372e08","tarball":"https://registry.npmjs.org/@alteran/astro/-/astro-0.1.0.tgz","fileCount":90,"integrity":"sha512-LKPiT2SUdNPbPkXzUtBFNb1OlGqdkKhSSuU6GHEdANsy7YSKgeAIxfM0nynJAYhvbuPym3MKT9AKXsY4hs9x1Q==","signatures":[{"sig":"MEUCIQCr8c0qxQeBZUgXnzKaMA1eADIct35P74wSYmPD2rcFIwIgECWiOzsq2Coli313q1hknm9OkeLVXMdORRHdwBcmD1c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":227994},"type":"module","types":"index.d.ts","module":"index.js","exports":{".":{"types":"./index.d.ts","import":"./index.js"}},"gitHead":"f83c36f6c5b1b16c3eb0facce936583745b41d0b","scripts":{"dev":"astro dev","build":"astro build","deploy":"astro build && wrangler deploy","preview":"astro preview","db:apply":"wrangler d1 migrations apply pds","iac:plan":"bunx alchemy plan iac/alchemy.run.ts","iac:deploy":"bunx alchemy deploy iac/alchemy.run.ts","db:generate":"bunx drizzle-kit generate","iac:destroy":"bunx alchemy destroy iac/alchemy.run.ts","db:apply:local":"bunx wrangler d1 migrations apply pds --local","db:reset:local":"rm -rf .wrangler/state && rm -rf drizzle && bun run db:generate && bun run db:apply:local","db:apply:local:direct":"wrangler d1 migrations apply pds --local"},"_npmUser":{"name":"rawkode","email":"david@rawkode.com"},"repository":{"url":"git+https://github.com/alteran-dev/alteran.git","type":"git"},"_npmVersion":"10.9.3","description":"Astro integration for running a Cloudflare-hosted Bluesky PDS with Alteran.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"hono":"^4.9.9","dotenv":"^17.2.3","get-port":"^7.1.0","@ipld/car":"^5.4.2","astro-icon":"^1.1.5","drizzle-orm":"^0.44.6","uint8arrays":"^5.1.0","multiformats":"^13.4.1","@noble/hashes":"^2.0.1","@ipld/dag-cbor":"^9.2.5","@cloudflare/workers-types":"^4.20251001.0","@iconify-json/simple-icons":"^1.2.53"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.8","astro":"^4.16.9","alchemy":"^0.70.2","wrangler":"^4.40.3","miniflare":"3","@types/bun":"latest","drizzle-kit":"^0.31.5","@atproto/api":"^0.17.0","@astrojs/cloudflare":"^11.0.4","@cloudflare/vite-plugin":"^1.13.8"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/astro_0.1.0_1759501110988_0.050188074053129084","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@alteran/astro","version":"0.1.3","license":"MIT","_id":"@alteran/astro@0.1.3","maintainers":[{"name":"rawkode","email":"david@rawkode.com"}],"homepage":"https://github.com/alteran-dev/alteran#readme","bugs":{"url":"https://github.com/alteran-dev/alteran/issues"},"dist":{"shasum":"fc9534bb1bbd4b0ebfc578ab5c1d28928f3adb18","tarball":"https://registry.npmjs.org/@alteran/astro/-/astro-0.1.3.tgz","fileCount":101,"integrity":"sha512-OCrt5Po2JeeAjYlwkhc54AdeQZd+m3/scjwW1ZHpeOrji98zOp1x8+fky4kdK2xWsTCey0q+9ayzbmAKbmr7hw==","signatures":[{"sig":"MEYCIQD8CXsJhhn1JwZKPlLpmBYoWdW2r0t70cyNktUMUXMMMwIhANDlqw3yL1NZKkJzbS/lFgjKEqkC3+ref34JSs9P7QIR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":269242},"type":"module","types":"index.d.ts","module":"index.js","exports":{".":{"types":"./index.d.ts","import":"./index.js"}},"gitHead":"45fe24a3f14c577901b009ad538394cc992b5350","scripts":{"dev":"astro dev","build":"astro build","deploy":"astro build && wrangler deploy","preview":"astro preview","db:apply":"wrangler d1 migrations apply pds","iac:plan":"bunx alchemy plan iac/alchemy.run.ts","iac:deploy":"bunx alchemy deploy iac/alchemy.run.ts","db:generate":"bunx drizzle-kit generate","iac:destroy":"bunx alchemy destroy iac/alchemy.run.ts","db:apply:local":"bunx wrangler d1 migrations apply pds --local","db:reset:local":"rm -rf .wrangler/state && rm -rf drizzle && bun run db:generate && bun run db:apply:local","db:apply:local:direct":"wrangler d1 migrations apply pds --local"},"_npmUser":{"name":"rawkode","email":"david@rawkode.com"},"repository":{"url":"git+https://github.com/alteran-dev/alteran.git","type":"git"},"_npmVersion":"10.9.3","description":"Astro integration for running a Cloudflare-hosted Bluesky PDS with Alteran.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"hono":"^4.9.9","dotenv":"^17.2.3","get-port":"^7.1.0","@ipld/car":"^5.4.2","astro-icon":"^1.1.5","drizzle-orm":"^0.44.6","uint8arrays":"^5.1.0","multiformats":"^13.4.1","@noble/hashes":"^2.0.1","@ipld/dag-cbor":"^9.2.5","@cloudflare/workers-types":"^4.20251001.0","@iconify-json/simple-icons":"^1.2.53"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.8","astro":"^4.16.9","alchemy":"^0.70.2","wrangler":"^4.40.3","miniflare":"3","@types/bun":"latest","drizzle-kit":"^0.31.5","@atproto/api":"^0.17.0","@astrojs/cloudflare":"^11.0.4","@cloudflare/vite-plugin":"^1.13.8"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/astro_0.1.3_1759503446280_0.37482642620534645","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@alteran/astro","version":"0.1.4","license":"MIT","_id":"@alteran/astro@0.1.4","maintainers":[{"name":"rawkode","email":"david@rawkode.com"}],"homepage":"https://github.com/alteran-dev/alteran#readme","bugs":{"url":"https://github.com/alteran-dev/alteran/issues"},"dist":{"shasum":"435649f28b50ab452f5f05816550b43842345e38","tarball":"https://registry.npmjs.org/@alteran/astro/-/astro-0.1.4.tgz","fileCount":101,"integrity":"sha512-EJJIMzJ2njEQyMEQv4oY3uQ+AZsy8bzsoUKE1Seq9xLzqzLxaskk8ujFiy3+DGWCCQhenbo3qnj11qEmNCGKww==","signatures":[{"sig":"MEUCIQDNxL0MjZZhwXdrRsQY0LjEpUPXdr+0Yo0h43ECu2+RcQIgTUaxEClacs9Qh5X7tU+hx3mfhx+Aibn3Rxm6Q5guMew=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":268863},"type":"module","types":"index.d.ts","module":"index.js","exports":{".":{"types":"./index.d.ts","import":"./index.js"}},"gitHead":"0a415027dc88d3d10ebcadce4fbbbf0be1f0a3a4","scripts":{"dev":"astro dev","build":"astro build","deploy":"astro build && wrangler deploy","preview":"astro preview","db:apply":"wrangler d1 migrations apply pds","iac:plan":"bunx alchemy plan iac/alchemy.run.ts","iac:deploy":"bunx alchemy deploy iac/alchemy.run.ts","db:generate":"bunx drizzle-kit generate","iac:destroy":"bunx alchemy destroy iac/alchemy.run.ts","db:apply:local":"bunx wrangler d1 migrations apply pds --local","db:reset:local":"rm -rf .wrangler/state && rm -rf drizzle && bun run db:generate && bun run db:apply:local","db:apply:local:direct":"wrangler d1 migrations apply pds --local"},"_npmUser":{"name":"rawkode","email":"david@rawkode.com"},"repository":{"url":"git+https://github.com/alteran-dev/alteran.git","type":"git"},"_npmVersion":"10.9.3","description":"Astro integration for running a Cloudflare-hosted Bluesky PDS with Alteran.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"hono":"^4.9.9","dotenv":"^17.2.3","get-port":"^7.1.0","@ipld/car":"^5.4.2","astro-icon":"^1.1.5","drizzle-orm":"^0.44.6","uint8arrays":"^5.1.0","multiformats":"^13.4.1","@noble/hashes":"^2.0.1","@ipld/dag-cbor":"^9.2.5","@cloudflare/workers-types":"^4.20251001.0","@iconify-json/simple-icons":"^1.2.53"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.8","astro":"^4.16.9","alchemy":"^0.70.2","wrangler":"^4.40.3","miniflare":"3","@types/bun":"latest","drizzle-kit":"^0.31.5","@atproto/api":"^0.17.0","@astrojs/cloudflare":"^11.0.4","@cloudflare/vite-plugin":"^1.13.8"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/astro_0.1.4_1759505952741_0.2666835485403616","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@alteran/astro","version":"0.1.5","license":"MIT","_id":"@alteran/astro@0.1.5","maintainers":[{"name":"rawkode","email":"david@rawkode.com"}],"homepage":"https://github.com/alteran-dev/alteran#readme","bugs":{"url":"https://github.com/alteran-dev/alteran/issues"},"dist":{"shasum":"d87822e90cc10720faa0ef3898bbc05bb0f7fc8d","tarball":"https://registry.npmjs.org/@alteran/astro/-/astro-0.1.5.tgz","fileCount":104,"integrity":"sha512-Xrto7hAGnVtxWKvDmaTRcx7xDukOqljBwACE1+lcktSs7Nm2UqnOnMp3BDXUAdkuvamZqxWsRMkKer8R+RAJVA==","signatures":[{"sig":"MEUCIHU+lAnoYFUD0n+Zyq3Jz4l/Kb2L6FtoGo5cLO2VG253AiEAtPqSUUgZP3K6s5pF+VlSWdjMOkNyV9/uE92w8I9U0ns=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":271298},"type":"module","types":"index.d.ts","module":"index.js","exports":{".":{"types":"./index.d.ts","import":"./index.js"},"./worker":{"types":"./types/worker.d.ts","import":"./src/worker/index.ts"}},"gitHead":"ee813640195fd99598335e3c60d3391696645f02","scripts":{"dev":"astro dev","build":"astro build","deploy":"astro build && wrangler deploy","preview":"astro preview","db:apply":"wrangler d1 migrations apply pds","iac:plan":"bunx alchemy plan iac/alchemy.run.ts","iac:deploy":"bunx alchemy deploy iac/alchemy.run.ts","db:generate":"bunx drizzle-kit generate","iac:destroy":"bunx alchemy destroy iac/alchemy.run.ts","db:apply:local":"bunx wrangler d1 migrations apply pds --local","db:reset:local":"rm -rf .wrangler/state && rm -rf drizzle && bun run db:generate && bun run db:apply:local","db:apply:local:direct":"wrangler d1 migrations apply pds --local"},"_npmUser":{"name":"rawkode","email":"david@rawkode.com"},"repository":{"url":"git+https://github.com/alteran-dev/alteran.git","type":"git"},"_npmVersion":"10.9.3","description":"Astro integration for running a Cloudflare-hosted Bluesky PDS with Alteran.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"hono":"^4.9.9","dotenv":"^17.2.3","get-port":"^7.1.0","@ipld/car":"^5.4.2","astro-icon":"^1.1.5","drizzle-orm":"^0.44.6","uint8arrays":"^5.1.0","multiformats":"^13.4.1","@noble/hashes":"^2.0.1","@ipld/dag-cbor":"^9.2.5","@cloudflare/workers-types":"^4.20251001.0","@iconify-json/simple-icons":"^1.2.53"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.8","astro":"^4.16.9","alchemy":"^0.70.2","wrangler":"^4.40.3","miniflare":"3","@types/bun":"latest","drizzle-kit":"^0.31.5","@atproto/api":"^0.17.0","@astrojs/cloudflare":"^11.0.4","@cloudflare/vite-plugin":"^1.13.8"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/astro_0.1.5_1759507350904_0.6072436715216858","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@alteran/astro","version":"0.1.6","license":"MIT","_id":"@alteran/astro@0.1.6","maintainers":[{"name":"rawkode","email":"david@rawkode.com"}],"homepage":"https://github.com/alteran-dev/alteran#readme","bugs":{"url":"https://github.com/alteran-dev/alteran/issues"},"dist":{"shasum":"36c0d4ae349d47de1d0b19418a4b07e754732714","tarball":"https://registry.npmjs.org/@alteran/astro/-/astro-0.1.6.tgz","fileCount":102,"integrity":"sha512-X4h+fNQr913sdfxRzU6/D6hFKStQsvOaHg+XNglW9A76q1zov5GXI7Rki8P80dBST3mfUaiK71qfYhHiPGroLg==","signatures":[{"sig":"MEYCIQC59cI1Krf+GQaFIdSL+Jebnp3c8YqkL8eKRzRG50mqUQIhALpHjutfyd88UdgHTsHJskugb+REOYlD6qkx0ImggaBQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":273438},"type":"module","types":"index.d.ts","module":"index.js","exports":{".":{"types":"./index.d.ts","import":"./index.js"},"./worker":{"types":"./types/worker.d.ts","import":"./src/worker/index.ts"}},"gitHead":"30e100021edf4039f82226693dec0f0016ac120a","scripts":{"dev":"astro dev","build":"astro build","deploy":"astro build && wrangler deploy","preview":"astro preview","db:apply":"wrangler d1 migrations apply pds","iac:plan":"bunx alchemy plan iac/alchemy.run.ts","iac:deploy":"bunx alchemy deploy iac/alchemy.run.ts","db:generate":"bunx drizzle-kit generate","iac:destroy":"bunx alchemy destroy iac/alchemy.run.ts","db:apply:local":"bunx wrangler d1 migrations apply pds --local","db:reset:local":"rm -rf .wrangler/state && rm -rf drizzle && bun run db:generate && bun run db:apply:local","db:apply:local:direct":"wrangler d1 migrations apply pds --local"},"_npmUser":{"name":"rawkode","email":"david@rawkode.com"},"repository":{"url":"git+https://github.com/alteran-dev/alteran.git","type":"git"},"_npmVersion":"10.9.3","description":"Astro integration for running a Cloudflare-hosted Bluesky PDS with Alteran.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"hono":"^4.9.9","astro":"^5.14.1","dotenv":"^17.2.3","get-port":"^7.1.0","@ipld/car":"^5.4.2","astro-icon":"^1.1.5","drizzle-orm":"^0.44.6","uint8arrays":"^5.1.0","multiformats":"^13.4.1","@noble/hashes":"^2.0.1","@ipld/dag-cbor":"^9.2.5","@cloudflare/workers-types":"^4.20251001.0","@iconify-json/simple-icons":"^1.2.53"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.6","wrangler":"^4.40.3","miniflare":"3","@types/bun":"latest","drizzle-kit":"^0.31.5","@atproto/api":"^0.17.0","@astrojs/cloudflare":"^12.6.9","@cloudflare/vite-plugin":"^1.13.8"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/astro_0.1.6_1759508988665_0.2275293645632659","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@alteran/astro","version":"0.1.7","license":"MIT","_id":"@alteran/astro@0.1.7","maintainers":[{"name":"rawkode","email":"david@rawkode.com"}],"homepage":"https://github.com/alteran-dev/alteran#readme","bugs":{"url":"https://github.com/alteran-dev/alteran/issues"},"dist":{"shasum":"c7fb4db96cd01e23fb01ec5bb91c6f8267e92ea4","tarball":"https://registry.npmjs.org/@alteran/astro/-/astro-0.1.7.tgz","fileCount":103,"integrity":"sha512-wPyMblwp0t9ojFtzIJv835DwelBauZdepKXAfXFeuG5CO30mDaxG9mcGdLHinfPAS66j56q9B+aU9+gEwmGvRw==","signatures":[{"sig":"MEQCIATFOY7wIaF2Iv/Bg83pCxW1xqyKQkqczvmC8gjh1R8FAiBdTUnEtXrKzwL0QXLBaI3E71pl760d7jkRHJf/o2AAcA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":274802},"type":"module","types":"index.d.ts","module":"index.js","exports":{".":{"types":"./index.d.ts","import":"./index.js"},"./worker":{"types":"./types/worker.d.ts","import":"./src/worker/index.ts"}},"gitHead":"7f41bba14887ee0bb07eaa1be3dcfa6ebd6781db","scripts":{"dev":"astro dev","build":"astro build","deploy":"astro build && wrangler deploy","preview":"astro preview","db:apply":"wrangler d1 migrations apply pds","iac:plan":"bunx alchemy plan iac/alchemy.run.ts","iac:deploy":"bunx alchemy deploy iac/alchemy.run.ts","db:generate":"bunx drizzle-kit generate","iac:destroy":"bunx alchemy destroy iac/alchemy.run.ts","db:apply:local":"bunx wrangler d1 migrations apply pds --local","db:reset:local":"rm -rf .wrangler/state && rm -rf drizzle && bun run db:generate && bun run db:apply:local","db:apply:local:direct":"wrangler d1 migrations apply pds --local"},"_npmUser":{"name":"rawkode","email":"david@rawkode.com"},"repository":{"url":"git+https://github.com/alteran-dev/alteran.git","type":"git"},"_npmVersion":"10.9.3","description":"Astro integration for running a Cloudflare-hosted Bluesky PDS with Alteran.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"hono":"^4.9.9","astro":"^5.14.1","dotenv":"^17.2.3","get-port":"^7.1.0","@ipld/car":"^5.4.2","astro-icon":"^1.1.5","drizzle-orm":"^0.44.6","uint8arrays":"^5.1.0","multiformats":"^13.4.1","@noble/hashes":"^2.0.1","@ipld/dag-cbor":"^9.2.5","@cloudflare/workers-types":"^4.20251001.0","@iconify-json/simple-icons":"^1.2.53"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.6","wrangler":"^4.40.3","miniflare":"3","@types/bun":"latest","drizzle-kit":"^0.31.5","@atproto/api":"^0.17.0","@astrojs/cloudflare":"^12.6.9","@cloudflare/vite-plugin":"^1.13.8"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/astro_0.1.7_1759511181082_0.45165044104431273","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@alteran/astro","version":"0.1.8","license":"MIT","_id":"@alteran/astro@0.1.8","maintainers":[{"name":"rawkode","email":"david@rawkode.com"}],"homepage":"https://github.com/alteran-dev/alteran#readme","bugs":{"url":"https://github.com/alteran-dev/alteran/issues"},"dist":{"shasum":"0627183471688a1454e4cb7f1b677debbb6a32f0","tarball":"https://registry.npmjs.org/@alteran/astro/-/astro-0.1.8.tgz","fileCount":115,"integrity":"sha512-EX5SoFd/QtO9ZdWBs5XiicxaCRQYnZ8xIqALYxjnfjYs6lJGGjd5xpNPTKmxn+MrMJNN+UI4WNcMmVwC/3/tQQ==","signatures":[{"sig":"MEUCIGGTPhGnf2MdT7/d5lUavepH6jvHDp0HD7k+iSBGmRo9AiEAmxp8hE0Vu3Dj1kk2YXTE88EUEDa/TO9cgsdUbMB6pB0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":315321},"type":"module","types":"index.d.ts","module":"index.js","exports":{".":{"types":"./index.d.ts","import":"./index.js"},"./worker":{"types":"./types/worker.d.ts","import":"./src/worker/index.ts"}},"gitHead":"d50b7fa265a67ec957049fc0310fbd2311e95db4","scripts":{"dev":"astro dev","build":"astro build","deploy":"astro build && wrangler deploy","preview":"astro preview","db:apply":"wrangler d1 migrations apply pds","iac:plan":"bunx alchemy plan iac/alchemy.run.ts","iac:deploy":"bunx alchemy deploy iac/alchemy.run.ts","db:generate":"bunx drizzle-kit generate","iac:destroy":"bunx alchemy destroy iac/alchemy.run.ts","secrets:setup":"bun run scripts/setup-secrets.ts","db:apply:local":"bunx wrangler d1 migrations apply pds --local","db:reset:local":"rm -rf .wrangler/state && rm -rf drizzle && bun run db:generate && bun run db:apply:local","db:apply:local:direct":"wrangler d1 migrations apply pds --local"},"_npmUser":{"name":"rawkode","email":"david@rawkode.com"},"repository":{"url":"git+https://github.com/alteran-dev/alteran.git","type":"git"},"_npmVersion":"10.9.3","description":"Astro integration for running a Cloudflare-hosted Bluesky PDS with Alteran.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"hono":"^4.9.9","astro":"^5.14.1","dotenv":"^17.2.3","get-port":"^7.1.0","@ipld/car":"^5.4.2","astro-icon":"^1.1.5","drizzle-orm":"^0.44.6","uint8arrays":"^5.1.0","multiformats":"^13.4.1","@noble/hashes":"^2.0.1","@ipld/dag-cbor":"^9.2.5","@cloudflare/workers-types":"^4.20251001.0","@iconify-json/simple-icons":"^1.2.53"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.6","wrangler":"^4.40.3","miniflare":"3","@types/bun":"latest","drizzle-kit":"^0.31.5","@atproto/api":"^0.17.0","@astrojs/cloudflare":"^12.6.9","@cloudflare/vite-plugin":"^1.13.8"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/astro_0.1.8_1759515639293_0.5613028866267951","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@alteran/astro","version":"0.1.9","license":"MIT","_id":"@alteran/astro@0.1.9","maintainers":[{"name":"rawkode","email":"david@rawkode.com"}],"homepage":"https://github.com/alteran-dev/alteran#readme","bugs":{"url":"https://github.com/alteran-dev/alteran/issues"},"dist":{"shasum":"d45852f8288ab461fa87554c35ac71765aa6efff","tarball":"https://registry.npmjs.org/@alteran/astro/-/astro-0.1.9.tgz","fileCount":115,"integrity":"sha512-am4ha1Afrti+6SUsS7O2yL6KoN8Kp7Vk2yzIKW/K3titYBgC00ZRnbR2xFwzg9mKjjkLpcI2LPNvZ25U/XtDUg==","signatures":[{"sig":"MEUCIQCyG+CEhnnaBD3HmLdOKCbezhlCrrd0OVQgvtwazOgiZQIgInlBdeyQY/SRw4F8vNa1m8wsqBSMwcvd4Xsq1WcnYZw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":316905},"type":"module","types":"index.d.ts","module":"index.js","exports":{".":{"types":"./index.d.ts","import":"./index.js"},"./worker":{"types":"./types/worker.d.ts","import":"./src/worker/index.ts"}},"gitHead":"fb7db686b7157fe4d1a0f36cd4176779be08a690","scripts":{"dev":"astro dev","build":"astro build","deploy":"astro build && wrangler deploy","preview":"astro preview","db:apply":"wrangler d1 migrations apply pds","iac:plan":"bunx alchemy plan iac/alchemy.run.ts","iac:deploy":"bunx alchemy deploy iac/alchemy.run.ts","db:generate":"bunx drizzle-kit generate","iac:destroy":"bunx alchemy destroy iac/alchemy.run.ts","secrets:setup":"bun run scripts/setup-secrets.ts","db:apply:local":"bunx wrangler d1 migrations apply pds --local","db:reset:local":"rm -rf .wrangler/state && rm -rf drizzle && bun run db:generate && bun run db:apply:local","db:apply:local:direct":"wrangler d1 migrations apply pds --local"},"_npmUser":{"name":"rawkode","email":"david@rawkode.com"},"repository":{"url":"git+https://github.com/alteran-dev/alteran.git","type":"git"},"_npmVersion":"10.9.3","description":"Astro integration for running a Cloudflare-hosted Bluesky PDS with Alteran.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"hono":"^4.9.9","astro":"^5.14.1","dotenv":"^17.2.3","get-port":"^7.1.0","@ipld/car":"^5.4.2","astro-icon":"^1.1.5","drizzle-orm":"^0.44.6","uint8arrays":"^5.1.0","multiformats":"^13.4.1","@noble/hashes":"^2.0.1","@ipld/dag-cbor":"^9.2.5","@cloudflare/workers-types":"^4.20251001.0","@iconify-json/simple-icons":"^1.2.53"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.6","wrangler":"^4.40.3","miniflare":"3","@types/bun":"latest","drizzle-kit":"^0.31.5","@atproto/api":"^0.17.0","@astrojs/cloudflare":"^12.6.9","@cloudflare/vite-plugin":"^1.13.8"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/astro_0.1.9_1759524704804_0.14397695349441175","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"@alteran/astro","version":"0.1.10","license":"MIT","_id":"@alteran/astro@0.1.10","maintainers":[{"name":"rawkode","email":"david@rawkode.com"}],"homepage":"https://github.com/alteran-dev/alteran#readme","bugs":{"url":"https://github.com/alteran-dev/alteran/issues"},"dist":{"shasum":"8f680c2e58a2d2a8585232986e34f0d0a8e77abf","tarball":"https://registry.npmjs.org/@alteran/astro/-/astro-0.1.10.tgz","fileCount":116,"integrity":"sha512-IXAgFJHyedkUO+Bf6+Fc5JDF55WPVm191BJ2ns5QUieA5iX2pfKIhDZeChcMcsovi/Ro9O4koAQrO5YrDv21Vg==","signatures":[{"sig":"MEUCIQDkDxw67zwd6I9O+TkjaKMw2N7LlBWGY2qZulgbhST8bAIgBkYhrMtZWD0pYoREiNM1uX4R2PEBRIR72URGa3a/+XI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":319526},"type":"module","types":"index.d.ts","module":"index.js","exports":{".":{"types":"./index.d.ts","import":"./index.js"},"./worker":{"types":"./types/worker.d.ts","import":"./src/worker/index.ts"}},"gitHead":"4d2d3ee794b4c0cec8e2da567baa9c9ceb082870","scripts":{"dev":"astro dev","build":"astro build","deploy":"astro build && wrangler deploy","preview":"astro preview","db:apply":"wrangler d1 migrations apply pds","iac:plan":"bunx alchemy plan iac/alchemy.run.ts","iac:deploy":"bunx alchemy deploy iac/alchemy.run.ts","db:generate":"bunx drizzle-kit generate","iac:destroy":"bunx alchemy destroy iac/alchemy.run.ts","secrets:setup":"bun run scripts/setup-secrets.ts","db:apply:local":"bunx wrangler d1 migrations apply pds --local","db:reset:local":"rm -rf .wrangler/state && rm -rf drizzle && bun run db:generate && bun run db:apply:local","db:apply:local:direct":"wrangler d1 migrations apply pds --local"},"_npmUser":{"name":"rawkode","email":"david@rawkode.com"},"repository":{"url":"git+https://github.com/alteran-dev/alteran.git","type":"git"},"_npmVersion":"10.9.3","description":"Astro integration for running a Cloudflare-hosted Bluesky PDS with Alteran.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"hono":"^4.9.9","astro":"^5.14.1","dotenv":"^17.2.3","get-port":"^7.1.0","@ipld/car":"^5.4.2","astro-icon":"^1.1.5","drizzle-orm":"^0.44.6","uint8arrays":"^5.1.0","multiformats":"^13.4.1","@noble/hashes":"^2.0.1","@ipld/dag-cbor":"^9.2.5","@cloudflare/workers-types":"^4.20251001.0","@iconify-json/simple-icons":"^1.2.53"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.6","wrangler":"^4.40.3","miniflare":"3","@types/bun":"latest","drizzle-kit":"^0.31.5","@atproto/api":"^0.17.0","@astrojs/cloudflare":"^12.6.9","@cloudflare/vite-plugin":"^1.13.8"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/astro_0.1.10_1759525664765_0.029576221508052614","host":"s3://npm-registry-packages-npm-production"}},"0.1.11":{"name":"@alteran/astro","version":"0.1.11","license":"MIT","_id":"@alteran/astro@0.1.11","maintainers":[{"name":"rawkode","email":"david@rawkode.com"}],"homepage":"https://github.com/alteran-dev/alteran#readme","bugs":{"url":"https://github.com/alteran-dev/alteran/issues"},"dist":{"shasum":"dea8e035991f4ea2dfce58fe859a2baff6ae95c5","tarball":"https://registry.npmjs.org/@alteran/astro/-/astro-0.1.11.tgz","fileCount":116,"integrity":"sha512-e66+XzQsEEbvrLt9Myeskrf4q/MHGLybg+di05th3B3IoVgHL9cQEukcmj4FT8Wpmnf7GRTe1fJIey6J6qxIkw==","signatures":[{"sig":"MEQCIBJSJqSi3mreS+sOH/csKmgxitA+04JwKKVb2ZkF4h+YAiASEqAsG3w1r0eYcdpuUBYRhso9jDc1mfMvIMmA09ZoWg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":319505},"type":"module","types":"index.d.ts","module":"index.js","exports":{".":{"types":"./index.d.ts","import":"./index.js"},"./worker":{"types":"./types/worker.d.ts","import":"./src/worker/index.ts"}},"gitHead":"558aa764ceb9dc9be384c788a9e2b44e3c93ec90","scripts":{"dev":"astro dev","build":"astro build","deploy":"astro build && wrangler deploy","preview":"astro preview","db:apply":"wrangler d1 migrations apply pds","iac:plan":"bunx alchemy plan iac/alchemy.run.ts","iac:deploy":"bunx alchemy deploy iac/alchemy.run.ts","db:generate":"bunx drizzle-kit generate","iac:destroy":"bunx alchemy destroy iac/alchemy.run.ts","secrets:setup":"bun run scripts/setup-secrets.ts","db:apply:local":"bunx wrangler d1 migrations apply pds --local","db:reset:local":"rm -rf .wrangler/state && rm -rf drizzle && bun run db:generate && bun run db:apply:local","db:apply:local:direct":"wrangler d1 migrations apply pds --local"},"_npmUser":{"name":"rawkode","email":"david@rawkode.com"},"repository":{"url":"git+https://github.com/alteran-dev/alteran.git","type":"git"},"_npmVersion":"10.9.3","description":"Astro integration for running a Cloudflare-hosted Bluesky PDS with Alteran.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"hono":"^4.9.9","astro":"^5.14.1","dotenv":"^17.2.3","get-port":"^7.1.0","@ipld/car":"^5.4.2","astro-icon":"^1.1.5","drizzle-orm":"^0.44.6","uint8arrays":"^5.1.0","multiformats":"^13.4.1","@noble/hashes":"^2.0.1","@ipld/dag-cbor":"^9.2.5","@cloudflare/workers-types":"^4.20251001.0","@iconify-json/simple-icons":"^1.2.53"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.6","wrangler":"^4.40.3","miniflare":"3","@types/bun":"latest","drizzle-kit":"^0.31.5","@atproto/api":"^0.17.0","@astrojs/cloudflare":"^12.6.9","@cloudflare/vite-plugin":"^1.13.8"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/astro_0.1.11_1759526700594_0.26074845555294157","host":"s3://npm-registry-packages-npm-production"}},"0.1.12":{"name":"@alteran/astro","version":"0.1.12","license":"MIT","_id":"@alteran/astro@0.1.12","maintainers":[{"name":"rawkode","email":"david@rawkode.com"}],"homepage":"https://github.com/alteran-dev/alteran#readme","bugs":{"url":"https://github.com/alteran-dev/alteran/issues"},"dist":{"shasum":"68af90a29635e0d953da64c6a62490b244f0db44","tarball":"https://registry.npmjs.org/@alteran/astro/-/astro-0.1.12.tgz","fileCount":116,"integrity":"sha512-XG0AP7i6YmySvAi7k9JsgFsa/dGMkSu4k4GIFJCwrjjU/LLWfQrxJNMnPG4v2mdnShKE9a9tdVD7fk1/K7LVXw==","signatures":[{"sig":"MEQCIBSgHs2xBmqFJEdNG68/5+jzDAR9EACFW5clKZ4uG+e2AiAU+jXVWzWmULZzodh9YSmCCZP5d6lZLyn0q2TAx1yD1g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":320066},"type":"module","types":"index.d.ts","module":"index.js","exports":{".":{"types":"./index.d.ts","import":"./index.js"},"./worker":{"types":"./types/worker.d.ts","import":"./src/worker/index.ts"}},"gitHead":"6de4fbb80f4d1cf8202c18fcaa88d4b4a3107220","scripts":{"dev":"astro dev","build":"astro build","deploy":"astro build && wrangler deploy","preview":"astro preview","db:apply":"wrangler d1 migrations apply pds","iac:plan":"bunx alchemy plan iac/alchemy.run.ts","iac:deploy":"bunx alchemy deploy iac/alchemy.run.ts","db:generate":"bunx drizzle-kit generate","iac:destroy":"bunx alchemy destroy iac/alchemy.run.ts","secrets:setup":"bun run scripts/setup-secrets.ts","db:apply:local":"bunx wrangler d1 migrations apply pds --local","db:reset:local":"rm -rf .wrangler/state && rm -rf drizzle && bun run db:generate && bun run db:apply:local","db:apply:local:direct":"wrangler d1 migrations apply pds --local"},"_npmUser":{"name":"rawkode","email":"david@rawkode.com"},"repository":{"url":"git+https://github.com/alteran-dev/alteran.git","type":"git"},"_npmVersion":"10.9.3","description":"Astro integration for running a Cloudflare-hosted Bluesky PDS with Alteran.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"hono":"^4.9.9","astro":"^5.14.1","dotenv":"^17.2.3","get-port":"^7.1.0","@ipld/car":"^5.4.2","astro-icon":"^1.1.5","drizzle-orm":"^0.44.6","uint8arrays":"^5.1.0","multiformats":"^13.4.1","@noble/hashes":"^2.0.1","@ipld/dag-cbor":"^9.2.5","@cloudflare/workers-types":"^4.20251001.0","@iconify-json/simple-icons":"^1.2.53"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.6","wrangler":"^4.40.3","miniflare":"3","@types/bun":"latest","drizzle-kit":"^0.31.5","@atproto/api":"^0.17.0","@astrojs/cloudflare":"^12.6.9","@cloudflare/vite-plugin":"^1.13.8"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/astro_0.1.12_1759528410133_0.9825299451006371","host":"s3://npm-registry-packages-npm-production"}},"0.1.13":{"name":"@alteran/astro","version":"0.1.13","license":"MIT","_id":"@alteran/astro@0.1.13","maintainers":[{"name":"rawkode","email":"david@rawkode.com"}],"homepage":"https://github.com/alteran-dev/alteran#readme","bugs":{"url":"https://github.com/alteran-dev/alteran/issues"},"dist":{"shasum":"09fd692af95cdd853f7ccaf27c3ad45394a64a19","tarball":"https://registry.npmjs.org/@alteran/astro/-/astro-0.1.13.tgz","fileCount":116,"integrity":"sha512-F4zNYnWyED4vrvJZYxLNW+au+PcCRRo+Q4azgg1lXT/WqyrgCMbqN8F76nUNYDJtxOi4TvbuEgDOcXsdjeT3oA==","signatures":[{"sig":"MEUCIQCeKHQZZ9JtwYnUNJOvKv/3OruqDzo2zAEcTrdK30o8RwIgPHE/xZNXWk8GeK7XNTlSMf3+/8WxBB99keqS6yOZxts=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":321577},"type":"module","types":"index.d.ts","module":"index.js","exports":{".":{"types":"./index.d.ts","import":"./index.js"},"./worker":{"types":"./types/worker.d.ts","import":"./src/worker/index.ts"}},"gitHead":"963d9e24b2adeb95987ba02833d5051721f1fc8f","scripts":{"dev":"astro dev","build":"astro build","deploy":"astro build && wrangler deploy","preview":"astro preview","db:apply":"wrangler d1 migrations apply pds","iac:plan":"bunx alchemy plan iac/alchemy.run.ts","iac:deploy":"bunx alchemy deploy iac/alchemy.run.ts","db:generate":"bunx drizzle-kit generate","iac:destroy":"bunx alchemy destroy iac/alchemy.run.ts","secrets:setup":"bun run scripts/setup-secrets.ts","db:apply:local":"bunx wrangler d1 migrations apply pds --local","db:reset:local":"rm -rf .wrangler/state && rm -rf drizzle && bun run db:generate && bun run db:apply:local","db:apply:local:direct":"wrangler d1 migrations apply pds --local"},"_npmUser":{"name":"rawkode","email":"david@rawkode.com"},"repository":{"url":"git+https://github.com/alteran-dev/alteran.git","type":"git"},"_npmVersion":"10.9.3","description":"Astro integration for running a Cloudflare-hosted Bluesky PDS with Alteran.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"hono":"^4.9.9","astro":"^5.14.1","dotenv":"^17.2.3","get-port":"^7.1.0","@ipld/car":"^5.4.2","astro-icon":"^1.1.5","drizzle-orm":"^0.44.6","uint8arrays":"^5.1.0","multiformats":"^13.4.1","@noble/hashes":"^2.0.1","@ipld/dag-cbor":"^9.2.5","@cloudflare/workers-types":"^4.20251001.0","@iconify-json/simple-icons":"^1.2.53"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.6","wrangler":"^4.40.3","miniflare":"3","@types/bun":"latest","drizzle-kit":"^0.31.5","@atproto/api":"^0.17.0","@astrojs/cloudflare":"^12.6.9","@cloudflare/vite-plugin":"^1.13.8"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/astro_0.1.13_1759529173241_0.5662139365128969","host":"s3://npm-registry-packages-npm-production"}},"0.1.14":{"name":"@alteran/astro","version":"0.1.14","license":"MIT","_id":"@alteran/astro@0.1.14","maintainers":[{"name":"rawkode","email":"david@rawkode.com"}],"homepage":"https://github.com/alteran-dev/alteran#readme","bugs":{"url":"https://github.com/alteran-dev/alteran/issues"},"dist":{"shasum":"ab5d6fff38c4b824f8f9601df9ed1dd6788cb593","tarball":"https://registry.npmjs.org/@alteran/astro/-/astro-0.1.14.tgz","fileCount":116,"integrity":"sha512-2StYxxJOfIWhUUGDjzDmwyRdflRpiGAv5k69SUbOJnHgDukIkG/fwJg725T3qssrUshqkupuOeD2oAdRYqoPMw==","signatures":[{"sig":"MEUCIQCFngylqAGHpmFw9/oB0NVBbPC0FTXh5kDC2Us7/XiNkwIgUKJf+2shfPRthiLiF0CmRXV1vvwS98F5VSzBaJ4f7Lk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":321870},"type":"module","types":"index.d.ts","module":"index.js","exports":{".":{"types":"./index.d.ts","import":"./index.js"},"./worker":{"types":"./types/worker.d.ts","import":"./src/worker/index.ts"}},"gitHead":"1e26b2bbaf7d085667a5b5593237ef960aab2a42","scripts":{"dev":"astro dev","build":"astro build","deploy":"astro build && wrangler deploy","preview":"astro preview","db:apply":"wrangler d1 migrations apply pds","iac:plan":"bunx alchemy plan iac/alchemy.run.ts","iac:deploy":"bunx alchemy deploy iac/alchemy.run.ts","db:generate":"bunx drizzle-kit generate","iac:destroy":"bunx alchemy destroy iac/alchemy.run.ts","secrets:setup":"bun run scripts/setup-secrets.ts","db:apply:local":"bunx wrangler d1 migrations apply pds --local","db:reset:local":"rm -rf .wrangler/state && rm -rf drizzle && bun run db:generate && bun run db:apply:local","db:apply:local:direct":"wrangler d1 migrations apply pds --local"},"_npmUser":{"name":"rawkode","email":"david@rawkode.com"},"repository":{"url":"git+https://github.com/alteran-dev/alteran.git","type":"git"},"_npmVersion":"10.9.3","description":"Astro integration for running a Cloudflare-hosted Bluesky PDS with Alteran.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"hono":"^4.9.9","astro":"^5.14.1","dotenv":"^17.2.3","get-port":"^7.1.0","@ipld/car":"^5.4.2","astro-icon":"^1.1.5","drizzle-orm":"^0.44.6","uint8arrays":"^5.1.0","multiformats":"^13.4.1","@noble/hashes":"^2.0.1","@ipld/dag-cbor":"^9.2.5","@cloudflare/workers-types":"^4.20251001.0","@iconify-json/simple-icons":"^1.2.53"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.6","wrangler":"^4.40.3","miniflare":"3","@types/bun":"latest","drizzle-kit":"^0.31.5","@atproto/api":"^0.17.0","@astrojs/cloudflare":"^12.6.9","@cloudflare/vite-plugin":"^1.13.8"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/astro_0.1.14_1759529644856_0.16235425955491412","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@alteran/astro","version":"0.3.0","license":"MIT","_id":"@alteran/astro@0.3.0","maintainers":[{"name":"rawkode","email":"david@rawkode.com"}],"homepage":"https://github.com/alteran-dev/alteran#readme","bugs":{"url":"https://github.com/alteran-dev/alteran/issues"},"dist":{"shasum":"3be6a74638289397c01fa2d5a53d1540804d73ec","tarball":"https://registry.npmjs.org/@alteran/astro/-/astro-0.3.0.tgz","fileCount":145,"integrity":"sha512-k5oocgiEYCQqKM+/pmMV7TcHVl5asUeg6yMxNYd0FmiPSd88cwG4+OFxw+AdAN2uwn8ymF6HLdpVRF6xnSML7Q==","signatures":[{"sig":"MEUCIQCg4c1QhIXa9Bf+6L22q65k7I76SCeOAOLNJaJGYSrwTQIgKmuy7IaSUqv6+Lr6R1KnfT6mqzoy+v3KxRwRZIEPFKQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":414581},"type":"module","types":"index.d.ts","module":"index.js","exports":{".":{"types":"./index.d.ts","import":"./index.js"},"./worker":{"types":"./types/worker.d.ts","import":"./src/worker/index.ts"}},"gitHead":"b56e998179dc3335c217ea837cc2b81260f2ef75","scripts":{"dev":"astro dev","build":"astro build","deploy":"astro build && wrangler deploy","preview":"astro preview","db:apply":"wrangler d1 migrations apply pds","iac:plan":"bunx alchemy plan iac/alchemy.run.ts","iac:deploy":"bunx alchemy deploy iac/alchemy.run.ts","db:generate":"bunx drizzle-kit generate","iac:destroy":"bunx alchemy destroy iac/alchemy.run.ts","secrets:setup":"bun run scripts/setup-secrets.ts","db:apply:local":"bunx wrangler d1 migrations apply pds --local","db:reset:local":"rm -rf .wrangler/state && rm -rf drizzle && bun run db:generate && bun run db:apply:local","relay:request-crawl":"bun run scripts/request-crawl.ts","db:apply:local:direct":"wrangler d1 migrations apply pds --local"},"_npmUser":{"name":"rawkode","email":"david@rawkode.com"},"repository":{"url":"git+https://github.com/alteran-dev/alteran.git","type":"git"},"_npmVersion":"10.9.3","description":"Astro integration for running a Cloudflare-hosted Bluesky PDS with Alteran.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"hono":"^4.9.9","astro":"^5.14.1","dotenv":"^17.2.3","get-port":"^7.1.0","@ipld/car":"^5.4.2","astro-icon":"^1.1.5","drizzle-orm":"^0.44.6","uint8arrays":"^5.1.0","@did-plc/lib":"^0.0.4","multiformats":"^13.4.1","@noble/hashes":"^2.0.1","@ipld/dag-cbor":"^9.2.5","@atproto/crypto":"^0.4.4","@cloudflare/workers-types":"^4.20251001.0","@iconify-json/simple-icons":"^1.2.53"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.6","wrangler":"^4.40.3","miniflare":"3","@types/bun":"latest","drizzle-kit":"^0.31.5","@atproto/api":"^0.17.0","@astrojs/cloudflare":"^12.6.9","@cloudflare/vite-plugin":"^1.13.8"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/astro_0.3.0_1759744335921_0.5585624846926482","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@alteran/astro","version":"0.3.1","license":"MIT","_id":"@alteran/astro@0.3.1","maintainers":[{"name":"rawkode","email":"david@rawkode.com"}],"homepage":"https://github.com/alteran-dev/alteran#readme","bugs":{"url":"https://github.com/alteran-dev/alteran/issues"},"dist":{"shasum":"c91616cb678e860edc88121ffbb80e5005f733fa","tarball":"https://registry.npmjs.org/@alteran/astro/-/astro-0.3.1.tgz","fileCount":145,"integrity":"sha512-Ro7y83h060Awi0iFHlTlXHTrn5hDPOyqX5SDcNfJWa7PGlBYJCXPXCFT+4zZDmHkHZFqgEWxSf17exbPRiKgrg==","signatures":[{"sig":"MEQCIGK/ki+YoVVkK68StSrWUbuPLpBbHVsIh43RfdGXHlfZAiBlW6a/r7X57wKHEyhx3p91/80+yfCrmrAoBgIaNhT5sA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":415310},"type":"module","types":"index.d.ts","module":"index.js","exports":{".":{"types":"./index.d.ts","import":"./index.js"},"./worker":{"types":"./types/worker.d.ts","import":"./src/worker/index.ts"}},"gitHead":"a67bc924e5e511231ef18c671ad4ed8bb3517c55","scripts":{"dev":"astro dev","build":"astro build","deploy":"astro build && wrangler deploy","preview":"astro preview","db:apply":"wrangler d1 migrations apply pds","iac:plan":"bunx alchemy plan iac/alchemy.run.ts","iac:deploy":"bunx alchemy deploy iac/alchemy.run.ts","db:generate":"bunx drizzle-kit generate","iac:destroy":"bunx alchemy destroy iac/alchemy.run.ts","secrets:setup":"bun run scripts/setup-secrets.ts","db:apply:local":"bunx wrangler d1 migrations apply pds --local","db:reset:local":"rm -rf .wrangler/state && rm -rf drizzle && bun run db:generate && bun run db:apply:local","relay:request-crawl":"bun run scripts/request-crawl.ts","db:apply:local:direct":"wrangler d1 migrations apply pds --local","pds:test-create-session":"bun run scripts/test-create-session.ts"},"_npmUser":{"name":"rawkode","email":"david@rawkode.com"},"repository":{"url":"git+https://github.com/alteran-dev/alteran.git","type":"git"},"_npmVersion":"10.9.3","description":"Astro integration for running a Cloudflare-hosted Bluesky PDS with Alteran.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"hono":"^4.9.9","astro":"^5.14.1","dotenv":"^17.2.3","get-port":"^7.1.0","@ipld/car":"^5.4.2","astro-icon":"^1.1.5","drizzle-orm":"^0.44.6","uint8arrays":"^5.1.0","@did-plc/lib":"^0.0.4","multiformats":"^13.4.1","@noble/hashes":"^2.0.1","@ipld/dag-cbor":"^9.2.5","@atproto/crypto":"^0.4.4","@cloudflare/workers-types":"^4.20251001.0","@iconify-json/simple-icons":"^1.2.53"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.6","wrangler":"^4.40.3","miniflare":"3","@types/bun":"latest","drizzle-kit":"^0.31.5","@atproto/api":"^0.17.0","@astrojs/cloudflare":"^12.6.9","@cloudflare/vite-plugin":"^1.13.8"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/astro_0.3.1_1759747976392_0.015999309612523493","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@alteran/astro","version":"0.3.2","license":"MIT","_id":"@alteran/astro@0.3.2","maintainers":[{"name":"rawkode","email":"david@rawkode.com"}],"homepage":"https://github.com/alteran-dev/alteran#readme","bugs":{"url":"https://github.com/alteran-dev/alteran/issues"},"dist":{"shasum":"7aed37b0ffa8979a32506d4dc2094eecde0f2ece","tarball":"https://registry.npmjs.org/@alteran/astro/-/astro-0.3.2.tgz","fileCount":145,"integrity":"sha512-A36dKRC2Pzjtb6VLeoFfBD1c6l6QsBgJSSEwRYjGaE6zPVegq6XIoyHdMgnO7xFSms43GuLYbpEhiuxS1EA44A==","signatures":[{"sig":"MEUCIC4KnSqq12aUkb6Mazc9bW9YcdhxVfypq1b4/SRHGf2JAiEAj69BxHjIwQ/DKnUnydZ5ZMOojEemP6ba/0m6/A320pI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":418109},"type":"module","types":"index.d.ts","module":"index.js","exports":{".":{"types":"./index.d.ts","import":"./index.js"},"./worker":{"types":"./types/worker.d.ts","import":"./src/worker/index.ts"}},"gitHead":"1da8fbbbb397544e03ee79374981f1ead9eaf139","scripts":{"dev":"astro dev","build":"astro build","deploy":"astro build && wrangler deploy","preview":"astro preview","db:apply":"wrangler d1 migrations apply pds","iac:plan":"bunx alchemy plan iac/alchemy.run.ts","iac:deploy":"bunx alchemy deploy iac/alchemy.run.ts","db:generate":"bunx drizzle-kit generate","iac:destroy":"bunx alchemy destroy iac/alchemy.run.ts","secrets:setup":"bun run scripts/setup-secrets.ts","db:apply:local":"bunx wrangler d1 migrations apply pds --local","db:reset:local":"rm -rf .wrangler/state && rm -rf drizzle && bun run db:generate && bun run db:apply:local","relay:request-crawl":"bun run scripts/request-crawl.ts","db:apply:local:direct":"wrangler d1 migrations apply pds --local","pds:test-create-session":"bun run scripts/test-create-session.ts"},"_npmUser":{"name":"rawkode","email":"david@rawkode.com"},"repository":{"url":"git+https://github.com/alteran-dev/alteran.git","type":"git"},"_npmVersion":"10.9.3","description":"Astro integration for running a Cloudflare-hosted Bluesky PDS with Alteran.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"hono":"^4.9.9","astro":"^5.14.1","dotenv":"^17.2.3","get-port":"^7.1.0","@ipld/car":"^5.4.2","astro-icon":"^1.1.5","drizzle-orm":"^0.44.6","uint8arrays":"^5.1.0","@did-plc/lib":"^0.0.4","multiformats":"^13.4.1","@noble/hashes":"^2.0.1","@ipld/dag-cbor":"^9.2.5","@atproto/crypto":"^0.4.4","@cloudflare/workers-types":"^4.20251001.0","@iconify-json/simple-icons":"^1.2.53"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.6","wrangler":"^4.40.3","miniflare":"3","@types/bun":"latest","drizzle-kit":"^0.31.5","@atproto/api":"^0.17.0","@astrojs/cloudflare":"^12.6.9","@cloudflare/vite-plugin":"^1.13.8"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/astro_0.3.2_1759748802845_0.20111201335808482","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@alteran/astro","version":"0.3.3","license":"MIT","_id":"@alteran/astro@0.3.3","maintainers":[{"name":"rawkode","email":"david@rawkode.com"}],"homepage":"https://github.com/alteran-dev/alteran#readme","bugs":{"url":"https://github.com/alteran-dev/alteran/issues"},"dist":{"shasum":"d1faf0e49a21a5d9c3dfe3a713762025d90a8f52","tarball":"https://registry.npmjs.org/@alteran/astro/-/astro-0.3.3.tgz","fileCount":145,"integrity":"sha512-VgpUnocbV+oZRB5Vtt/hFjXojO0fahjN+WnjzxyCNhkTPfWYAzCdi5u8u1iUq30n2FNCtftvg8BnUOib5poPDA==","signatures":[{"sig":"MEYCIQDPZbal3+kSeFCv2rf9r7Du8BmtV8KtoHtdger/LanmkQIhALLGi0VVI48Oy3tjKH8fZZTVpJo8TknNgVWi3ipgqMaM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":418980},"type":"module","types":"index.d.ts","module":"index.js","exports":{".":{"types":"./index.d.ts","import":"./index.js"},"./worker":{"types":"./types/worker.d.ts","import":"./src/worker/index.ts"}},"gitHead":"94d99915c3a79ec7ed973969c0df08e2452538b8","scripts":{"dev":"astro dev","build":"astro build","deploy":"astro build && wrangler deploy","preview":"astro preview","db:apply":"wrangler d1 migrations apply pds","iac:plan":"bunx alchemy plan iac/alchemy.run.ts","iac:deploy":"bunx alchemy deploy iac/alchemy.run.ts","db:generate":"bunx drizzle-kit generate","iac:destroy":"bunx alchemy destroy iac/alchemy.run.ts","secrets:setup":"bun run scripts/setup-secrets.ts","db:apply:local":"bunx wrangler d1 migrations apply pds --local","db:reset:local":"rm -rf .wrangler/state && rm -rf drizzle && bun run db:generate && bun run db:apply:local","relay:request-crawl":"bun run scripts/request-crawl.ts","db:apply:local:direct":"wrangler d1 migrations apply pds --local","pds:test-create-session":"bun run scripts/test-create-session.ts"},"_npmUser":{"name":"rawkode","email":"david@rawkode.com"},"repository":{"url":"git+https://github.com/alteran-dev/alteran.git","type":"git"},"_npmVersion":"10.9.3","description":"Astro integration for running a Cloudflare-hosted Bluesky PDS with Alteran.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"hono":"^4.9.9","astro":"^5.14.1","dotenv":"^17.2.3","get-port":"^7.1.0","@ipld/car":"^5.4.2","astro-icon":"^1.1.5","drizzle-orm":"^0.44.6","uint8arrays":"^5.1.0","@did-plc/lib":"^0.0.4","multiformats":"^13.4.1","@noble/hashes":"^2.0.1","@ipld/dag-cbor":"^9.2.5","@atproto/crypto":"^0.4.4","@cloudflare/workers-types":"^4.20251001.0","@iconify-json/simple-icons":"^1.2.53"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.6","wrangler":"^4.40.3","miniflare":"3","@types/bun":"latest","drizzle-kit":"^0.31.5","@atproto/api":"^0.17.0","@astrojs/cloudflare":"^12.6.9","@cloudflare/vite-plugin":"^1.13.8"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/astro_0.3.3_1759751325455_0.40960640388891134","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"@alteran/astro","version":"0.3.4","license":"MIT","_id":"@alteran/astro@0.3.4","maintainers":[{"name":"rawkode","email":"david@rawkode.com"}],"homepage":"https://github.com/alteran-dev/alteran#readme","bugs":{"url":"https://github.com/alteran-dev/alteran/issues"},"dist":{"shasum":"2667620f736c00193b16df1a08e57572f396688c","tarball":"https://registry.npmjs.org/@alteran/astro/-/astro-0.3.4.tgz","fileCount":145,"integrity":"sha512-EBKydsdVOygGwgaGF5wYxC+dsZ+0b6bN5M/vFBFgHP/XwgEpt3sMZhbeUBzxnkMuOY5sD+KrFkdalF7vXQEKUg==","signatures":[{"sig":"MEQCIGCSaK3kUpChJP96RNgVTBXISuJHsCBUHZozSf94oGEwAiAskCNW5igPZXV+YCbT8yHqb1LOzhzIjtj3w4fmWKMKIA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":420034},"type":"module","types":"index.d.ts","module":"index.js","exports":{".":{"types":"./index.d.ts","import":"./index.js"},"./worker":{"types":"./types/worker.d.ts","import":"./src/worker/index.ts"}},"gitHead":"6d54fb407fa6d104a7cb8ba74ef812afde13c8ff","scripts":{"dev":"astro dev","build":"astro build","deploy":"astro build && wrangler deploy","preview":"astro preview","db:apply":"wrangler d1 migrations apply pds","iac:plan":"bunx alchemy plan iac/alchemy.run.ts","iac:deploy":"bunx alchemy deploy iac/alchemy.run.ts","db:generate":"bunx drizzle-kit generate","iac:destroy":"bunx alchemy destroy iac/alchemy.run.ts","secrets:setup":"bun run scripts/setup-secrets.ts","db:apply:local":"bunx wrangler d1 migrations apply pds --local","db:reset:local":"rm -rf .wrangler/state && rm -rf drizzle && bun run db:generate && bun run db:apply:local","relay:request-crawl":"bun run scripts/request-crawl.ts","db:apply:local:direct":"wrangler d1 migrations apply pds --local","pds:test-create-session":"bun run scripts/test-create-session.ts"},"_npmUser":{"name":"rawkode","email":"david@rawkode.com"},"repository":{"url":"git+https://github.com/alteran-dev/alteran.git","type":"git"},"_npmVersion":"10.9.3","description":"Astro integration for running a Cloudflare-hosted Bluesky PDS with Alteran.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"hono":"^4.9.9","astro":"^5.14.1","dotenv":"^17.2.3","get-port":"^7.1.0","@ipld/car":"^5.4.2","astro-icon":"^1.1.5","drizzle-orm":"^0.44.6","uint8arrays":"^5.1.0","@did-plc/lib":"^0.0.4","multiformats":"^13.4.1","@noble/hashes":"^2.0.1","@ipld/dag-cbor":"^9.2.5","@atproto/crypto":"^0.4.4","@cloudflare/workers-types":"^4.20251001.0","@iconify-json/simple-icons":"^1.2.53"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.6","wrangler":"^4.40.3","miniflare":"3","@types/bun":"latest","drizzle-kit":"^0.31.5","@atproto/api":"^0.17.0","@astrojs/cloudflare":"^12.6.9","@cloudflare/vite-plugin":"^1.13.8"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/astro_0.3.4_1759753204917_0.9151087906764044","host":"s3://npm-registry-packages-npm-production"}},"0.3.5":{"name":"@alteran/astro","version":"0.3.5","license":"MIT","_id":"@alteran/astro@0.3.5","maintainers":[{"name":"rawkode","email":"david@rawkode.com"}],"homepage":"https://github.com/alteran-dev/alteran#readme","bugs":{"url":"https://github.com/alteran-dev/alteran/issues"},"dist":{"shasum":"57c9342cb26c3d8b03ca4e4d8500d91e180efe67","tarball":"https://registry.npmjs.org/@alteran/astro/-/astro-0.3.5.tgz","fileCount":145,"integrity":"sha512-oukn6TxXpLIaP9qPzUQ/FR5E0hfsQPz8GP1ubd0rP/oey5qgXjVZc+Kp/C8uDCKGaAxo0m5L6DV3i/gxdCcniA==","signatures":[{"sig":"MEUCIQDC2RT5emy2GIhJragOGYUpaurXeOHOsLVbqhWNGHDViAIgGjl6EACGpnw75L95JfK7IbpLgPklW9PmiGPbaw7zz34=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":420022},"type":"module","types":"index.d.ts","module":"index.js","exports":{".":{"types":"./index.d.ts","import":"./index.js"},"./worker":{"types":"./types/worker.d.ts","import":"./src/worker/index.ts"}},"gitHead":"bcc63a2ab214ff385dae7659c3478f3f4f29aab8","scripts":{"dev":"astro dev","build":"astro build","deploy":"astro build && wrangler deploy","preview":"astro preview","db:apply":"wrangler d1 migrations apply pds","iac:plan":"bunx alchemy plan iac/alchemy.run.ts","iac:deploy":"bunx alchemy deploy iac/alchemy.run.ts","db:generate":"bunx drizzle-kit generate","iac:destroy":"bunx alchemy destroy iac/alchemy.run.ts","secrets:setup":"bun run scripts/setup-secrets.ts","db:apply:local":"bunx wrangler d1 migrations apply pds --local","db:reset:local":"rm -rf .wrangler/state && rm -rf drizzle && bun run db:generate && bun run db:apply:local","relay:request-crawl":"bun run scripts/request-crawl.ts","db:apply:local:direct":"wrangler d1 migrations apply pds --local","pds:test-create-session":"bun run scripts/test-create-session.ts"},"_npmUser":{"name":"rawkode","email":"david@rawkode.com"},"repository":{"url":"git+https://github.com/alteran-dev/alteran.git","type":"git"},"_npmVersion":"10.9.3","description":"Astro integration for running a Cloudflare-hosted Bluesky PDS with Alteran.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"hono":"^4.9.9","astro":"^5.14.1","dotenv":"^17.2.3","get-port":"^7.1.0","@ipld/car":"^5.4.2","astro-icon":"^1.1.5","drizzle-orm":"^0.44.6","uint8arrays":"^5.1.0","@did-plc/lib":"^0.0.4","multiformats":"^13.4.1","@noble/hashes":"^2.0.1","@ipld/dag-cbor":"^9.2.5","@atproto/crypto":"^0.4.4","@cloudflare/workers-types":"^4.20251001.0","@iconify-json/simple-icons":"^1.2.53"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.6","wrangler":"^4.40.3","miniflare":"3","@types/bun":"latest","drizzle-kit":"^0.31.5","@atproto/api":"^0.17.0","@astrojs/cloudflare":"^12.6.9","@cloudflare/vite-plugin":"^1.13.8"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/astro_0.3.5_1759753517429_0.46532222442590565","host":"s3://npm-registry-packages-npm-production"}},"0.3.6":{"name":"@alteran/astro","version":"0.3.6","license":"MIT","_id":"@alteran/astro@0.3.6","maintainers":[{"name":"rawkode","email":"david@rawkode.com"}],"homepage":"https://github.com/alteran-dev/alteran#readme","bugs":{"url":"https://github.com/alteran-dev/alteran/issues"},"dist":{"shasum":"7dd0c349bd85f564784d7ea72f5e6f787a62e674","tarball":"https://registry.npmjs.org/@alteran/astro/-/astro-0.3.6.tgz","fileCount":145,"integrity":"sha512-R12g7Ot+pjMYkzuFtsemquyEQ+19HFDz5Nft8hD2UDOUmvA35Vx8WCWF88IR1UV9eC2Cw0SQWOEFtewHjVGulw==","signatures":[{"sig":"MEYCIQC2YJgErR5TGkiU+w7sNYw66+aRv+R896Uripzp1j8PiAIhAIr8R+mo4P311rEenXtgtjZbB+iaGd+kSviMgOdCCxDL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":420398},"type":"module","types":"index.d.ts","module":"index.js","exports":{".":{"types":"./index.d.ts","import":"./index.js"},"./worker":{"types":"./types/worker.d.ts","import":"./src/worker/index.ts"}},"gitHead":"e79f6a7c88acfcecbb28da96bc3d986191c9cf37","scripts":{"dev":"astro dev","build":"astro build","deploy":"astro build && wrangler deploy","preview":"astro preview","db:apply":"wrangler d1 migrations apply pds","iac:plan":"bunx alchemy plan iac/alchemy.run.ts","iac:deploy":"bunx alchemy deploy iac/alchemy.run.ts","db:generate":"bunx drizzle-kit generate","iac:destroy":"bunx alchemy destroy iac/alchemy.run.ts","secrets:setup":"bun run scripts/setup-secrets.ts","db:apply:local":"bunx wrangler d1 migrations apply pds --local","db:reset:local":"rm -rf .wrangler/state && rm -rf drizzle && bun run db:generate && bun run db:apply:local","relay:request-crawl":"bun run scripts/request-crawl.ts","db:apply:local:direct":"wrangler d1 migrations apply pds --local","pds:test-create-session":"bun run scripts/test-create-session.ts"},"_npmUser":{"name":"rawkode","email":"david@rawkode.com"},"repository":{"url":"git+https://github.com/alteran-dev/alteran.git","type":"git"},"_npmVersion":"10.9.3","description":"Astro integration for running a Cloudflare-hosted Bluesky PDS with Alteran.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"hono":"^4.9.9","astro":"^5.14.1","dotenv":"^17.2.3","get-port":"^7.1.0","@ipld/car":"^5.4.2","astro-icon":"^1.1.5","drizzle-orm":"^0.44.6","uint8arrays":"^5.1.0","@did-plc/lib":"^0.0.4","multiformats":"^13.4.1","@noble/hashes":"^2.0.1","@ipld/dag-cbor":"^9.2.5","@atproto/crypto":"^0.4.4","@cloudflare/workers-types":"^4.20251001.0","@iconify-json/simple-icons":"^1.2.53"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.6","wrangler":"^4.40.3","miniflare":"3","@types/bun":"latest","drizzle-kit":"^0.31.5","@atproto/api":"^0.17.0","@astrojs/cloudflare":"^12.6.9","@cloudflare/vite-plugin":"^1.13.8"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/astro_0.3.6_1759753704157_0.7141306999918162","host":"s3://npm-registry-packages-npm-production"}},"0.3.7":{"name":"@alteran/astro","version":"0.3.7","license":"MIT","_id":"@alteran/astro@0.3.7","maintainers":[{"name":"rawkode","email":"david@rawkode.com"}],"homepage":"https://github.com/alteran-dev/alteran#readme","bugs":{"url":"https://github.com/alteran-dev/alteran/issues"},"dist":{"shasum":"1e1b1854161472a761ee7d4f8a3062bcfa453f22","tarball":"https://registry.npmjs.org/@alteran/astro/-/astro-0.3.7.tgz","fileCount":147,"integrity":"sha512-kmqvaBoO/kBaxdrzxcKwT3Ng+vxwJH1wzJ/ZhTe3XebhQEtjv9fWYbp8bFG1+uogMw8iRG9v5/AAk1jK3w8Djg==","signatures":[{"sig":"MEUCIB9BFG7Vgg5/zQvRRZ5Ltiar3lnFANmq8XF/Xeegq7S5AiEA6pJOquMVZMgE4V7KeJJvLBhLEGjorBPyHcRFV6t834M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":421978},"type":"module","types":"index.d.ts","module":"index.js","exports":{".":{"types":"./index.d.ts","import":"./index.js"},"./worker":{"types":"./types/worker.d.ts","import":"./src/worker/index.ts"}},"gitHead":"fa25829dcce3fe284c7079a3491d177ec3f3f0c9","scripts":{"dev":"astro dev","build":"astro build","deploy":"astro build && wrangler deploy","preview":"astro preview","db:apply":"wrangler d1 migrations apply pds","iac:plan":"bunx alchemy plan iac/alchemy.run.ts","iac:deploy":"bunx alchemy deploy iac/alchemy.run.ts","db:generate":"bunx drizzle-kit generate","iac:destroy":"bunx alchemy destroy iac/alchemy.run.ts","secrets:setup":"bun run scripts/setup-secrets.ts","db:apply:local":"bunx wrangler d1 migrations apply pds --local","db:reset:local":"rm -rf .wrangler/state && rm -rf drizzle && bun run db:generate && bun run db:apply:local","relay:request-crawl":"bun run scripts/request-crawl.ts","db:apply:local:direct":"wrangler d1 migrations apply pds --local","pds:test-create-session":"bun run scripts/test-create-session.ts"},"_npmUser":{"name":"rawkode","email":"david@rawkode.com"},"repository":{"url":"git+https://github.com/alteran-dev/alteran.git","type":"git"},"_npmVersion":"10.9.3","description":"Astro integration for running a Cloudflare-hosted Bluesky PDS with Alteran.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"hono":"^4.9.9","astro":"^5.14.1","dotenv":"^17.2.3","get-port":"^7.1.0","@ipld/car":"^5.4.2","astro-icon":"^1.1.5","drizzle-orm":"^0.44.6","uint8arrays":"^5.1.0","@did-plc/lib":"^0.0.4","multiformats":"^13.4.1","@noble/hashes":"^2.0.1","@ipld/dag-cbor":"^9.2.5","@atproto/crypto":"^0.4.4","@cloudflare/workers-types":"^4.20251001.0","@iconify-json/simple-icons":"^1.2.53"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.6","wrangler":"^4.40.3","miniflare":"3","@types/bun":"latest","drizzle-kit":"^0.31.5","@atproto/api":"^0.17.0","@astrojs/cloudflare":"^12.6.9","@cloudflare/vite-plugin":"^1.13.8"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/astro_0.3.7_1759753835235_0.07438195644375911","host":"s3://npm-registry-packages-npm-production"}},"0.3.8":{"name":"@alteran/astro","version":"0.3.8","license":"MIT","_id":"@alteran/astro@0.3.8","maintainers":[{"name":"rawkode","email":"david@rawkode.com"}],"homepage":"https://github.com/alteran-dev/alteran#readme","bugs":{"url":"https://github.com/alteran-dev/alteran/issues"},"dist":{"shasum":"2515c9012ccaf590da618f6beeea5d7848566a8c","tarball":"https://registry.npmjs.org/@alteran/astro/-/astro-0.3.8.tgz","fileCount":147,"integrity":"sha512-YP5SlyLRFCPEUjs5o6F0QX/E1UgqLJ09oCvxMD9OBygBlaMmQHSrmD3U2CjieH5x4LSWl8EoL31q+PQcKTBkQg==","signatures":[{"sig":"MEUCIE1ioq8RPmPL7lrqDo3SdsGStUUVc4wjrxcDnaqJvFfvAiEAidSfUP6C66cLb0Dp+0huIJgKLXhJMAC4yVZ1c2tH5LA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":425020},"type":"module","types":"index.d.ts","module":"index.js","exports":{".":{"types":"./index.d.ts","import":"./index.js"},"./worker":{"types":"./types/worker.d.ts","import":"./src/worker/index.ts"}},"gitHead":"9d3deeb74fa4012d6fac196fd766a4065675a903","scripts":{"dev":"astro dev","build":"astro build","deploy":"astro build && wrangler deploy","preview":"astro preview","db:apply":"wrangler d1 migrations apply pds","iac:plan":"bunx alchemy plan iac/alchemy.run.ts","iac:deploy":"bunx alchemy deploy iac/alchemy.run.ts","db:generate":"bunx drizzle-kit generate","iac:destroy":"bunx alchemy destroy iac/alchemy.run.ts","secrets:setup":"bun run scripts/setup-secrets.ts","db:apply:local":"bunx wrangler d1 migrations apply pds --local","db:reset:local":"rm -rf .wrangler/state && rm -rf drizzle && bun run db:generate && bun run db:apply:local","relay:request-crawl":"bun run scripts/request-crawl.ts","db:apply:local:direct":"wrangler d1 migrations apply pds --local","pds:test-create-session":"bun run scripts/test-create-session.ts"},"_npmUser":{"name":"rawkode","email":"david@rawkode.com"},"repository":{"url":"git+https://github.com/alteran-dev/alteran.git","type":"git"},"_npmVersion":"10.9.3","description":"Astro integration for running a Cloudflare-hosted Bluesky PDS with Alteran.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"hono":"^4.9.9","astro":"^5.14.1","dotenv":"^17.2.3","get-port":"^7.1.0","@ipld/car":"^5.4.2","astro-icon":"^1.1.5","drizzle-orm":"^0.44.6","uint8arrays":"^5.1.0","@did-plc/lib":"^0.0.4","multiformats":"^13.4.1","@noble/hashes":"^2.0.1","@ipld/dag-cbor":"^9.2.5","@atproto/crypto":"^0.4.4","@cloudflare/workers-types":"^4.20251001.0","@iconify-json/simple-icons":"^1.2.53"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.6","wrangler":"^4.40.3","miniflare":"3","@types/bun":"latest","drizzle-kit":"^0.31.5","@atproto/api":"^0.17.0","@astrojs/cloudflare":"^12.6.9","@cloudflare/vite-plugin":"^1.13.8"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/astro_0.3.8_1759754832607_0.788722131390295","host":"s3://npm-registry-packages-npm-production"}},"0.3.9":{"name":"@alteran/astro","version":"0.3.9","license":"MIT","_id":"@alteran/astro@0.3.9","maintainers":[{"name":"rawkode","email":"david@rawkode.com"}],"homepage":"https://github.com/alteran-dev/alteran#readme","bugs":{"url":"https://github.com/alteran-dev/alteran/issues"},"dist":{"shasum":"9cf091643306718b16b70339c118bf4d2b2b058f","tarball":"https://registry.npmjs.org/@alteran/astro/-/astro-0.3.9.tgz","fileCount":149,"integrity":"sha512-qQlvxySmVpwPWiYaZxQ/1dDBPQbeYoFgPO7/AwWTguSIwjQGlJ64+ppmNgkW/jqfUlRjNCLfjdbbC4IFnddMrA==","signatures":[{"sig":"MEUCIQCTG2fwrhqu7DWy6UHdGJGbm1EJhZnsvEs9lGS+FCn3/gIgbGx3vmqyNlAbvZlSTY/4KKi97AdnLDgnI2Szz1x7/nI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":427416},"type":"module","types":"index.d.ts","module":"index.js","exports":{".":{"types":"./index.d.ts","import":"./index.js"},"./worker":{"types":"./types/worker.d.ts","import":"./src/worker/index.ts"}},"gitHead":"e8410e85b58fd784d3e41901cb9bbc49b0ea2b5b","scripts":{"dev":"astro dev","build":"astro build","deploy":"astro build && wrangler deploy","preview":"astro preview","db:apply":"wrangler d1 migrations apply pds","iac:plan":"bunx alchemy plan iac/alchemy.run.ts","iac:deploy":"bunx alchemy deploy iac/alchemy.run.ts","db:generate":"bunx drizzle-kit generate","iac:destroy":"bunx alchemy destroy iac/alchemy.run.ts","secrets:setup":"bun run scripts/setup-secrets.ts","db:apply:local":"bunx wrangler d1 migrations apply pds --local","db:reset:local":"rm -rf .wrangler/state && rm -rf drizzle && bun run db:generate && bun run db:apply:local","relay:request-crawl":"bun run scripts/request-crawl.ts","db:apply:local:direct":"wrangler d1 migrations apply pds --local","pds:test-create-session":"bun run scripts/test-create-session.ts"},"_npmUser":{"name":"rawkode","email":"david@rawkode.com"},"repository":{"url":"git+https://github.com/alteran-dev/alteran.git","type":"git"},"_npmVersion":"10.9.3","description":"Astro integration for running a Cloudflare-hosted Bluesky PDS with Alteran.","directories":{},"_nodeVersion":"22.19.0","dependencies":{"hono":"^4.9.9","astro":"^5.14.1","dotenv":"^17.2.3","get-port":"^7.1.0","@ipld/car":"^5.4.2","astro-icon":"^1.1.5","drizzle-orm":"^0.44.6","uint8arrays":"^5.1.0","@did-plc/lib":"^0.0.4","multiformats":"^13.4.1","@noble/hashes":"^2.0.1","@ipld/dag-cbor":"^9.2.5","@atproto/crypto":"^0.4.4","@cloudflare/workers-types":"^4.20251001.0","@iconify-json/simple-icons":"^1.2.53"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.6","wrangler":"^4.40.3","miniflare":"3","@types/bun":"latest","drizzle-kit":"^0.31.5","@atproto/api":"^0.17.0","@astrojs/cloudflare":"^12.6.9","@cloudflare/vite-plugin":"^1.13.8"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/astro_0.3.9_1759755914376_0.3005759574551594","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"@alteran/astro","version":"0.5.2","license":"MIT","_id":"@alteran/astro@0.5.2","maintainers":[{"name":"rawkode","email":"david@rawkode.com"}],"homepage":"https://github.com/alteran-social/alteran#readme","bugs":{"url":"https://github.com/alteran-social/alteran/issues"},"dist":{"shasum":"591eed382db97c4de89e37d0bd75a2e16f7e3b39","tarball":"https://registry.npmjs.org/@alteran/astro/-/astro-0.5.2.tgz","fileCount":176,"integrity":"sha512-tBSLt3ixUg/9xdVSvdfQ0sIIKTO0Qju9qjHcbBPRbvqqwQYzFL64i2FX46poDBZs81Um4RquhYwcY9M5tclKnw==","signatures":[{"sig":"MEUCIQCI0BVoMYy8nKd34D4iLrEm/uPBeF90vfsXt+cLbKIxKAIgf0zepXNSl5anQRGVZFdxEdgBkYnm8vNRuzLuNfANTJc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@alteran%2fastro@0.5.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":557106},"type":"module","types":"index.d.ts","module":"index.js","exports":{".":{"types":"./index.d.ts","import":"./index.js"},"./worker":{"types":"./types/worker.d.ts","import":"./src/worker/index.ts"}},"gitHead":"a6f80e8a4bbc0f8a3d1d94b84237545bbcffa9e8","scripts":{"dev":"astro dev","build":"astro build","deploy":"astro build && bunx wrangler deploy --env production","preview":"astro preview","db:apply":"bunx wrangler d1 migrations apply pds","iac:plan":"bunx alchemy plan iac/alchemy.run.ts","iac:deploy":"bunx alchemy deploy iac/alchemy.run.ts","db:generate":"bunx drizzle-kit generate","iac:destroy":"bunx alchemy destroy iac/alchemy.run.ts","secrets:setup":"bun run scripts/setup-secrets.ts","db:apply:local":"bunx wrangler d1 migrations apply pds --local","db:reset:local":"rm -rf .wrangler/state && rm -rf migrations && bun run db:generate && bun run db:apply:local","relay:request-crawl":"bun run scripts/request-crawl.ts","db:apply:local:direct":"wrangler d1 migrations apply pds --local","pds:test-create-session":"bun run scripts/test-create-session.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:22685873-2b72-4421-bb52-a0d4e87b8fea"}},"repository":{"url":"git+https://github.com/alteran-social/alteran.git","type":"git"},"_npmVersion":"11.11.0","description":"Astro integration for running a Cloudflare-hosted Bluesky PDS with Alteran.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"hono":"^4.9.9","jose":"^5.9.6","astro":"^6.1.5","dotenv":"^17.2.3","get-port":"^7.1.0","@ipld/car":"^5.4.2","astro-icon":"^1.1.5","drizzle-orm":"^0.44.6","uint8arrays":"^5.1.0","@did-plc/lib":"^0.0.4","multiformats":"^13.4.1","@noble/hashes":"^2.0.1","@ipld/dag-cbor":"^9.2.5","@atproto/crypto":"^0.4.4","@cloudflare/workers-types":"^4.20251001.0","@iconify-json/simple-icons":"^1.2.53"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.6","wrangler":"^4.40.3","miniflare":"3","@types/bun":"latest","drizzle-kit":"^0.31.5","@atproto/api":"^0.17.0","@astrojs/cloudflare":"^12.6.9","@cloudflare/vite-plugin":"^1.13.8"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/astro_0.5.2_1778541285468_0.17886645610797292","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@alteran/astro","version":"0.6.1","license":"MIT","_id":"@alteran/astro@0.6.1","maintainers":[{"name":"rawkode","email":"david@rawkode.com"}],"homepage":"https://github.com/alteran-social/alteran#readme","bugs":{"url":"https://github.com/alteran-social/alteran/issues"},"dist":{"shasum":"6137ed4d7b9d09ac7e8a2961f994d87e12ec85f8","tarball":"https://registry.npmjs.org/@alteran/astro/-/astro-0.6.1.tgz","fileCount":176,"integrity":"sha512-n+zsKbyrUlAT3FVUlL07N8qeozN2jA1Z85bb9u3QVI+EmlmsgvlJCkPvafKP22e+gWoijTFlYkBF8+G/dlTjzA==","signatures":[{"sig":"MEUCIGIykc+4OubptO8jDjnDYa7GB8i2lXwtMg+GD1up8ORvAiEA6KP0wiUHSYv5gJ7vgmDLZSSQEZnNNM/Q7kkAcYTZpVY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@alteran%2fastro@0.6.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":557826},"type":"module","types":"index.d.ts","module":"index.js","exports":{".":{"types":"./index.d.ts","import":"./index.js"},"./worker":{"types":"./types/worker.d.ts","import":"./src/worker/index.ts"}},"gitHead":"7a230fe2224c5ee1f2091affb2a2c8ddf8a28a44","scripts":{"dev":"astro dev","build":"astro build","deploy":"astro build && bunx wrangler deploy --env production","preview":"astro preview","db:apply":"bunx wrangler d1 migrations apply pds","iac:plan":"bunx alchemy plan iac/alchemy.run.ts","iac:deploy":"bunx alchemy deploy iac/alchemy.run.ts","db:generate":"bunx drizzle-kit generate","iac:destroy":"bunx alchemy destroy iac/alchemy.run.ts","secrets:setup":"bun run scripts/setup-secrets.ts","db:apply:local":"bunx wrangler d1 migrations apply pds --local","db:reset:local":"rm -rf .wrangler/state && rm -rf migrations && bun run db:generate && bun run db:apply:local","relay:request-crawl":"bun run scripts/request-crawl.ts","db:apply:local:direct":"wrangler d1 migrations apply pds --local","pds:test-create-session":"bun run scripts/test-create-session.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:22685873-2b72-4421-bb52-a0d4e87b8fea"}},"repository":{"url":"git+https://github.com/alteran-social/alteran.git","type":"git"},"_npmVersion":"11.11.0","description":"Astro integration for running a Cloudflare-hosted Bluesky PDS with Alteran.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"hono":"^4.9.9","jose":"^5.9.6","astro":"^6.1.5","dotenv":"^17.2.3","get-port":"^7.1.0","@ipld/car":"^5.4.2","astro-icon":"^1.1.5","drizzle-orm":"^0.44.6","uint8arrays":"^5.1.0","@did-plc/lib":"^0.0.4","multiformats":"^13.4.1","@noble/hashes":"^2.0.1","@ipld/dag-cbor":"^9.2.5","@atproto/crypto":"^0.4.4","@cloudflare/workers-types":"^4.20251001.0","@iconify-json/simple-icons":"^1.2.53"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.6","wrangler":"^4.40.3","miniflare":"3","@types/bun":"latest","drizzle-kit":"^0.31.5","@atproto/api":"^0.17.0","@astrojs/cloudflare":"^12.6.9","@cloudflare/vite-plugin":"^1.13.8"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/astro_0.6.1_1778591270295_0.6499867489864217","host":"s3://npm-registry-packages-npm-production"}},"0.6.3":{"name":"@alteran/astro","version":"0.6.3","license":"MIT","_id":"@alteran/astro@0.6.3","maintainers":[{"name":"rawkode","email":"david@rawkode.com"}],"homepage":"https://github.com/alteran-social/alteran#readme","bugs":{"url":"https://github.com/alteran-social/alteran/issues"},"dist":{"shasum":"ff8cc3b6688c4d05c9db0bdcfa97a6c6901fa432","tarball":"https://registry.npmjs.org/@alteran/astro/-/astro-0.6.3.tgz","fileCount":176,"integrity":"sha512-EmTvvsTFTVVFkz65xIAdQlZPjvn2NKU/yTJFRyBdnOxvvJez6BTKR3B3zI88BtDwoGnK5VaDhb8/Kx0E8M6pjw==","signatures":[{"sig":"MEQCIGZYp4nCoc300R0EARAjpU3wVhGETJXn0hte8NtDNlPUAiA8Pg5r7PfNpUS18BcGqFwH4LsVCy2gJegQZ0tza7q7Fg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@alteran%2fastro@0.6.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":559427},"type":"module","types":"index.d.ts","module":"index.js","exports":{".":{"types":"./index.d.ts","import":"./index.js"},"./worker":{"types":"./types/worker.d.ts","import":"./src/worker/index.ts"}},"gitHead":"72095308b11a6123896dbd94cb57162adb9177b2","scripts":{"dev":"astro dev","build":"astro build","deploy":"astro build && bunx wrangler deploy --env production","preview":"astro preview","db:apply":"bunx wrangler d1 migrations apply pds","iac:plan":"bunx alchemy plan iac/alchemy.run.ts","iac:deploy":"bunx alchemy deploy iac/alchemy.run.ts","db:generate":"bunx drizzle-kit generate","iac:destroy":"bunx alchemy destroy iac/alchemy.run.ts","secrets:setup":"bun run scripts/setup-secrets.ts","db:apply:local":"bunx wrangler d1 migrations apply pds --local","db:reset:local":"rm -rf .wrangler/state && rm -rf migrations && bun run db:generate && bun run db:apply:local","relay:request-crawl":"bun run scripts/request-crawl.ts","db:apply:local:direct":"wrangler d1 migrations apply pds --local","pds:test-create-session":"bun run scripts/test-create-session.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:22685873-2b72-4421-bb52-a0d4e87b8fea"}},"repository":{"url":"git+https://github.com/alteran-social/alteran.git","type":"git"},"_npmVersion":"11.11.0","description":"Astro integration for running a Cloudflare-hosted Bluesky PDS with Alteran.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"hono":"^4.9.9","jose":"^5.9.6","astro":"^6.1.5","dotenv":"^17.2.3","get-port":"^7.1.0","@ipld/car":"^5.4.2","astro-icon":"^1.1.5","drizzle-orm":"^0.44.6","uint8arrays":"^5.1.0","@did-plc/lib":"^0.0.4","multiformats":"^13.4.1","@noble/hashes":"^2.0.1","@ipld/dag-cbor":"^9.2.5","@atproto/crypto":"^0.4.4","@cloudflare/workers-types":"^4.20251001.0","@iconify-json/simple-icons":"^1.2.53"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.6","wrangler":"^4.40.3","miniflare":"3","@types/bun":"latest","drizzle-kit":"^0.31.5","@atproto/api":"^0.17.0","@astrojs/cloudflare":"^12.6.9","@cloudflare/vite-plugin":"^1.13.8"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/astro_0.6.3_1778616424607_0.7468812441021895","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@alteran/astro","version":"0.7.0","license":"MIT","_id":"@alteran/astro@0.7.0","maintainers":[{"name":"rawkode","email":"david@rawkode.com"}],"homepage":"https://github.com/alteran-social/alteran#readme","bugs":{"url":"https://github.com/alteran-social/alteran/issues"},"dist":{"shasum":"65c5a12a604a8544984607652a0b29df80d6e038","tarball":"https://registry.npmjs.org/@alteran/astro/-/astro-0.7.0.tgz","fileCount":182,"integrity":"sha512-3Vl8TvJMJd+Ggodwda3ALX8LlsoQhuNrnq8vlKm/k2CqDe/9cE/xzA3EEBsX1flPYY74/nkxnNLjhGmistJjbQ==","signatures":[{"sig":"MEQCIGmLJDjkiB/KhI9vxGNfA3N5XpeLlvMblZyB9Dj7uc64AiAVP0psasKXQY24EqV/yf8jeHALOR6hGErvyqU5161Zlg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@alteran%2fastro@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":625494},"type":"module","types":"index.d.ts","module":"index.js","exports":{".":{"types":"./index.d.ts","import":"./index.js"},"./worker":{"types":"./types/worker.d.ts","import":"./src/worker/index.ts"}},"gitHead":"7d59936e0d84ea13575eab948a4459faa2f28b17","scripts":{"dev":"astro dev","build":"astro build","deploy":"astro build && bunx wrangler deploy --env production","preview":"astro preview","db:apply":"bunx wrangler d1 migrations apply pds","iac:plan":"bunx alchemy plan iac/alchemy.run.ts","iac:deploy":"bunx alchemy deploy iac/alchemy.run.ts","test:oauth":"bun test tests/oauth-*.test.ts tests/resource-auth.test.ts","db:generate":"bunx drizzle-kit generate","iac:destroy":"bunx alchemy destroy iac/alchemy.run.ts","secrets:setup":"bun run scripts/setup-secrets.ts","db:apply:local":"bunx wrangler d1 migrations apply pds --local","db:reset:local":"rm -rf .wrangler/state && rm -rf migrations && bun run db:generate && bun run db:apply:local","relay:request-crawl":"bun run scripts/request-crawl.ts","db:apply:local:direct":"wrangler d1 migrations apply pds --local","pds:test-create-session":"bun run scripts/test-create-session.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:22685873-2b72-4421-bb52-a0d4e87b8fea"}},"repository":{"url":"git+https://github.com/alteran-social/alteran.git","type":"git"},"_npmVersion":"11.11.0","description":"Astro integration for running a Cloudflare-hosted Bluesky PDS with Alteran.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"hono":"^4.9.9","jose":"^5.9.6","astro":"^6.1.5","dotenv":"^17.2.3","get-port":"^7.1.0","@ipld/car":"^5.4.2","astro-icon":"^1.1.5","drizzle-orm":"^0.44.6","uint8arrays":"^5.1.0","@did-plc/lib":"^0.0.4","multiformats":"^13.4.1","@noble/hashes":"^2.0.1","@ipld/dag-cbor":"^9.2.5","@atproto/crypto":"^0.4.4","@cloudflare/workers-types":"^4.20251001.0","@iconify-json/simple-icons":"^1.2.53"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.6","wrangler":"^4.40.3","miniflare":"3","@types/bun":"latest","drizzle-kit":"^0.31.5","@atproto/api":"^0.17.0","@astrojs/cloudflare":"^12.6.9","@cloudflare/vite-plugin":"^1.13.8"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/astro_0.7.0_1778625740633_0.1330661375252482","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"@alteran/astro","version":"0.7.1","license":"MIT","_id":"@alteran/astro@0.7.1","maintainers":[{"name":"rawkode","email":"david@rawkode.com"}],"homepage":"https://github.com/alteran-social/alteran#readme","bugs":{"url":"https://github.com/alteran-social/alteran/issues"},"dist":{"shasum":"31b122c4d30336bbd69469cd014af476e8aba080","tarball":"https://registry.npmjs.org/@alteran/astro/-/astro-0.7.1.tgz","fileCount":182,"integrity":"sha512-C3NsPZjRUW061bHvZs7s/6xV6G6z5vRNpIxE1KMuGIPQoQWz4AEX4/lNtrbq/YasuVVqAqIdMlSCoVHzxLFGsQ==","signatures":[{"sig":"MEQCIGWL8+Rogh70R4mr9xYIJ1oYP3uaPO44jwu9aWUQcYxbAiBfe+GDnb6VLlsJk2b081ZANimJuDZv5rHa6w91+Sm//g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@alteran%2fastro@0.7.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":625445},"type":"module","types":"index.d.ts","module":"index.js","exports":{".":{"types":"./index.d.ts","import":"./index.js"},"./worker":{"types":"./types/worker.d.ts","import":"./src/worker/index.ts"}},"gitHead":"601c85b230ea782a042d77d5fa05abb32fb1c3aa","scripts":{"dev":"astro dev","build":"astro build","deploy":"astro build && bunx wrangler deploy --env production","preview":"astro preview","db:apply":"bunx wrangler d1 migrations apply pds","iac:plan":"bunx alchemy plan iac/alchemy.run.ts","iac:deploy":"bunx alchemy deploy iac/alchemy.run.ts","test:oauth":"bun test tests/oauth-*.test.ts tests/resource-auth.test.ts","db:generate":"bunx drizzle-kit generate","iac:destroy":"bunx alchemy destroy iac/alchemy.run.ts","secrets:setup":"bun run scripts/setup-secrets.ts","db:apply:local":"bunx wrangler d1 migrations apply pds --local","db:reset:local":"rm -rf .wrangler/state && rm -rf migrations && bun run db:generate && bun run db:apply:local","relay:request-crawl":"bun run scripts/request-crawl.ts","db:apply:local:direct":"wrangler d1 migrations apply pds --local","pds:test-create-session":"bun run scripts/test-create-session.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:22685873-2b72-4421-bb52-a0d4e87b8fea"}},"repository":{"url":"git+https://github.com/alteran-social/alteran.git","type":"git"},"_npmVersion":"11.11.0","description":"Astro integration for running a Cloudflare-hosted Bluesky PDS with Alteran.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"hono":"^4.9.9","jose":"^5.9.6","astro":"^6.1.5","dotenv":"^17.2.3","get-port":"^7.1.0","@ipld/car":"^5.4.2","astro-icon":"^1.1.5","drizzle-orm":"^0.44.6","uint8arrays":"^5.1.0","@did-plc/lib":"^0.0.4","multiformats":"^13.4.1","@noble/hashes":"^2.0.1","@ipld/dag-cbor":"^9.2.5","@atproto/crypto":"^0.4.4","@cloudflare/workers-types":"^4.20251001.0","@iconify-json/simple-icons":"^1.2.53"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.6","wrangler":"^4.40.3","miniflare":"3","@types/bun":"latest","drizzle-kit":"^0.31.5","@atproto/api":"^0.17.0","@astrojs/cloudflare":"^12.6.9","@cloudflare/vite-plugin":"^1.13.8"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/astro_0.7.1_1778626109931_0.5805460516036638","host":"s3://npm-registry-packages-npm-production"}},"0.7.2":{"name":"@alteran/astro","version":"0.7.2","license":"MIT","_id":"@alteran/astro@0.7.2","maintainers":[{"name":"rawkode","email":"david@rawkode.com"}],"homepage":"https://github.com/alteran-social/alteran#readme","bugs":{"url":"https://github.com/alteran-social/alteran/issues"},"dist":{"shasum":"c66c1280f4cade28f2289ef2eab8977c2ff031fd","tarball":"https://registry.npmjs.org/@alteran/astro/-/astro-0.7.2.tgz","fileCount":182,"integrity":"sha512-BXufbl5sl/fF89MxnodAvfuVtrauFZBycEwlo38vNBUFViZW8t4GKg5OZ0gaKLSlAg2SfRBsKAGkipUU2ooElA==","signatures":[{"sig":"MEUCIGnPFrj8NrEjPnSE3W4cFWRUdVnfm3+06xyEFc3BjaSCAiEAoieB+aVKjVlsfiNfqcmpRMuH4nkNOa8XDzUjMpi6daE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@alteran%2fastro@0.7.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":625747},"type":"module","types":"index.d.ts","module":"index.js","exports":{".":{"types":"./index.d.ts","import":"./index.js"},"./worker":{"types":"./types/worker.d.ts","import":"./src/worker/index.ts"}},"gitHead":"484ad1de47617ab2e1b48ca6bab2c4e9ca00cd6b","scripts":{"dev":"astro dev","build":"astro build","deploy":"astro build && bunx wrangler deploy --env production","preview":"astro preview","db:apply":"bunx wrangler d1 migrations apply pds","iac:plan":"bunx alchemy plan iac/alchemy.run.ts","iac:deploy":"bunx alchemy deploy iac/alchemy.run.ts","test:oauth":"bun test tests/oauth-*.test.ts tests/resource-auth.test.ts","db:generate":"bunx drizzle-kit generate","iac:destroy":"bunx alchemy destroy iac/alchemy.run.ts","secrets:setup":"bun run scripts/setup-secrets.ts","db:apply:local":"bunx wrangler d1 migrations apply pds --local","db:reset:local":"rm -rf .wrangler/state && rm -rf migrations && bun run db:generate && bun run db:apply:local","relay:request-crawl":"bun run scripts/request-crawl.ts","db:apply:local:direct":"wrangler d1 migrations apply pds --local","pds:test-create-session":"bun run scripts/test-create-session.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:22685873-2b72-4421-bb52-a0d4e87b8fea"}},"repository":{"url":"git+https://github.com/alteran-social/alteran.git","type":"git"},"_npmVersion":"11.11.0","description":"Astro integration for running a Cloudflare-hosted Bluesky PDS with Alteran.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"hono":"^4.9.9","jose":"^5.9.6","astro":"^6.1.5","dotenv":"^17.2.3","get-port":"^7.1.0","@ipld/car":"^5.4.2","astro-icon":"^1.1.5","drizzle-orm":"^0.44.6","uint8arrays":"^5.1.0","@did-plc/lib":"^0.0.4","multiformats":"^13.4.1","@noble/hashes":"^2.0.1","@ipld/dag-cbor":"^9.2.5","@atproto/crypto":"^0.4.4","@cloudflare/workers-types":"^4.20251001.0","@iconify-json/simple-icons":"^1.2.53"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.6","wrangler":"^4.40.3","miniflare":"3","@types/bun":"latest","drizzle-kit":"^0.31.5","@atproto/api":"^0.17.0","@astrojs/cloudflare":"^12.6.9","@cloudflare/vite-plugin":"^1.13.8"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/astro_0.7.2_1778626667983_0.859126085660475","host":"s3://npm-registry-packages-npm-production"}},"0.7.3":{"name":"@alteran/astro","version":"0.7.3","license":"MIT","_id":"@alteran/astro@0.7.3","maintainers":[{"name":"rawkode","email":"david@rawkode.com"}],"homepage":"https://github.com/alteran-social/alteran#readme","bugs":{"url":"https://github.com/alteran-social/alteran/issues"},"dist":{"shasum":"6a31c23f4edda47f0aa92f3f3c74f86c1cf619cf","tarball":"https://registry.npmjs.org/@alteran/astro/-/astro-0.7.3.tgz","fileCount":182,"integrity":"sha512-3YGZcnTTCc5YANOBIiqPYYphDrv7KI8FqgSCj+B0FVcuBTTd0lbnqgOzxbukLiXA7iW1JLAJfrsuRZHbAK9UXA==","signatures":[{"sig":"MEYCIQD232/ZsHzYaxb/1V5tOwmnfWGAR9qJp+B7gwLDcj2cMQIhAOHqMIAhQ1iXByJnwy9/fy5TaSmXQHEMwiuki+bIS4wB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@alteran%2fastro@0.7.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":625819},"type":"module","types":"index.d.ts","module":"index.js","exports":{".":{"types":"./index.d.ts","import":"./index.js"},"./worker":{"types":"./types/worker.d.ts","import":"./src/worker/index.ts"}},"gitHead":"9eada9cd91e3d59212cfad2bda24728cb02304db","scripts":{"dev":"astro dev","build":"astro build","deploy":"astro build && bunx wrangler deploy --env production","preview":"astro preview","db:apply":"bunx wrangler d1 migrations apply pds","iac:plan":"bunx alchemy plan iac/alchemy.run.ts","iac:deploy":"bunx alchemy deploy iac/alchemy.run.ts","test:oauth":"bun test tests/oauth-*.test.ts tests/resource-auth.test.ts","db:generate":"bunx drizzle-kit generate","iac:destroy":"bunx alchemy destroy iac/alchemy.run.ts","secrets:setup":"bun run scripts/setup-secrets.ts","db:apply:local":"bunx wrangler d1 migrations apply pds --local","db:reset:local":"rm -rf .wrangler/state && rm -rf migrations && bun run db:generate && bun run db:apply:local","relay:request-crawl":"bun run scripts/request-crawl.ts","db:apply:local:direct":"wrangler d1 migrations apply pds --local","pds:test-create-session":"bun run scripts/test-create-session.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:22685873-2b72-4421-bb52-a0d4e87b8fea"}},"repository":{"url":"git+https://github.com/alteran-social/alteran.git","type":"git"},"_npmVersion":"11.11.0","description":"Astro integration for running a Cloudflare-hosted Bluesky PDS with Alteran.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"hono":"^4.9.9","jose":"^5.9.6","astro":"^6.1.5","dotenv":"^17.2.3","get-port":"^7.1.0","@ipld/car":"^5.4.2","astro-icon":"^1.1.5","drizzle-orm":"^0.44.6","uint8arrays":"^5.1.0","@did-plc/lib":"^0.0.4","multiformats":"^13.4.1","@noble/hashes":"^2.0.1","@ipld/dag-cbor":"^9.2.5","@atproto/crypto":"^0.4.4","@cloudflare/workers-types":"^4.20251001.0","@iconify-json/simple-icons":"^1.2.53"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.6","wrangler":"^4.40.3","miniflare":"3","@types/bun":"latest","drizzle-kit":"^0.31.5","@atproto/api":"^0.17.0","@astrojs/cloudflare":"^12.6.9","@cloudflare/vite-plugin":"^1.13.8"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/astro_0.7.3_1778627184474_0.7792339907479542","host":"s3://npm-registry-packages-npm-production"}},"0.7.5":{"name":"@alteran/astro","version":"0.7.5","license":"MIT","_id":"@alteran/astro@0.7.5","maintainers":[{"name":"rawkode","email":"david@rawkode.com"}],"homepage":"https://github.com/alteran-social/alteran#readme","bugs":{"url":"https://github.com/alteran-social/alteran/issues"},"dist":{"shasum":"7889607c865c81b65fa22df69c5524bbabafc081","tarball":"https://registry.npmjs.org/@alteran/astro/-/astro-0.7.5.tgz","fileCount":182,"integrity":"sha512-2w2ry3ANQ97dDWLY1RYhDzAvCiAoN4vaabO1C6Mg44AHaLB5EjdH4lQBFiGYaP/WbqAXxX24UOK1nqE8L1RJoQ==","signatures":[{"sig":"MEUCIG7Gqctw2VuT2XGqidWeXKhO1pk3rALb5PdwVyAm07ORAiEAv2z928l43llAeV4sU6+UdCGy2DSL2L0uZ1zZf17XLVk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@alteran%2fastro@0.7.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":626952},"type":"module","types":"index.d.ts","module":"index.js","exports":{".":{"types":"./index.d.ts","import":"./index.js"},"./worker":{"types":"./types/worker.d.ts","import":"./src/worker/index.ts"}},"gitHead":"98876d97d0fdccd1e5b8801c64cfdab328739e16","scripts":{"dev":"astro dev","build":"astro build","deploy":"astro build && bunx wrangler deploy --env production","preview":"astro preview","db:apply":"bunx wrangler d1 migrations apply pds","iac:plan":"bunx alchemy plan iac/alchemy.run.ts","iac:deploy":"bunx alchemy deploy iac/alchemy.run.ts","test:oauth":"bun test tests/oauth-*.test.ts tests/resource-auth.test.ts","db:generate":"bunx drizzle-kit generate","iac:destroy":"bunx alchemy destroy iac/alchemy.run.ts","secrets:setup":"bun run scripts/setup-secrets.ts","db:apply:local":"bunx wrangler d1 migrations apply pds --local","db:reset:local":"rm -rf .wrangler/state && rm -rf migrations && bun run db:generate && bun run db:apply:local","relay:request-crawl":"bun run scripts/request-crawl.ts","db:apply:local:direct":"wrangler d1 migrations apply pds --local","pds:test-create-session":"bun run scripts/test-create-session.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:22685873-2b72-4421-bb52-a0d4e87b8fea"}},"repository":{"url":"git+https://github.com/alteran-social/alteran.git","type":"git"},"_npmVersion":"11.11.0","description":"Astro integration for running a Cloudflare-hosted Bluesky PDS with Alteran.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"hono":"^4.9.9","jose":"^5.9.6","astro":"^6.1.5","dotenv":"^17.2.3","get-port":"^7.1.0","@ipld/car":"^5.4.2","astro-icon":"^1.1.5","drizzle-orm":"^0.44.6","uint8arrays":"^5.1.0","@did-plc/lib":"^0.0.4","multiformats":"^13.4.1","@noble/hashes":"^2.0.1","@ipld/dag-cbor":"^9.2.5","@atproto/crypto":"^0.4.4","@cloudflare/workers-types":"^4.20251001.0","@iconify-json/simple-icons":"^1.2.53"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.6","wrangler":"^4.40.3","miniflare":"3","@types/bun":"latest","drizzle-kit":"^0.31.5","@atproto/api":"^0.17.0","@astrojs/cloudflare":"^12.6.9","@cloudflare/vite-plugin":"^1.13.8"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/astro_0.7.5_1778628076494_0.7759013970473185","host":"s3://npm-registry-packages-npm-production"}},"0.7.6":{"name":"@alteran/astro","version":"0.7.6","license":"MIT","_id":"@alteran/astro@0.7.6","maintainers":[{"name":"rawkode","email":"david@rawkode.com"}],"homepage":"https://github.com/alteran-social/alteran#readme","bugs":{"url":"https://github.com/alteran-social/alteran/issues"},"dist":{"shasum":"51980b5131e044bbce35704a5e5c3c723b731e1a","tarball":"https://registry.npmjs.org/@alteran/astro/-/astro-0.7.6.tgz","fileCount":183,"integrity":"sha512-GM/w7m2bkrn9FHAiV0aGspL+x+DsBcDxzRoPRlECX4F30l7sIpE5IRvNwFVgQPI6l+P3Q6EvkeSHlp7T0chrUQ==","signatures":[{"sig":"MEQCID38BymwAMtYlF2GzgczgH+0Re9O0tPcSQOB2Bm3KP5VAiBExwVH1xeAL79yaP+Bb15Jvx0qOTA/SQrRKoZI+qLJAg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@alteran%2fastro@0.7.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":633493},"type":"module","types":"index.d.ts","module":"index.js","exports":{".":{"types":"./index.d.ts","import":"./index.js"},"./worker":{"types":"./types/worker.d.ts","import":"./src/worker/index.ts"}},"gitHead":"dd6fb6492b8e2c75a70a94f78bdcb666ae001db3","scripts":{"dev":"astro dev","build":"astro build","deploy":"astro build && bunx wrangler deploy --env production","preview":"astro preview","db:apply":"bunx wrangler d1 migrations apply pds","iac:plan":"bunx alchemy plan iac/alchemy.run.ts","iac:deploy":"bunx alchemy deploy iac/alchemy.run.ts","test:oauth":"bun test tests/oauth-*.test.ts tests/resource-auth.test.ts","db:generate":"bunx drizzle-kit generate","iac:destroy":"bunx alchemy destroy iac/alchemy.run.ts","secrets:setup":"bun run scripts/setup-secrets.ts","db:apply:local":"bunx wrangler d1 migrations apply pds --local","db:reset:local":"rm -rf .wrangler/state && rm -rf migrations && bun run db:generate && bun run db:apply:local","relay:request-crawl":"bun run scripts/request-crawl.ts","db:apply:local:direct":"wrangler d1 migrations apply pds --local","pds:test-create-session":"bun run scripts/test-create-session.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:22685873-2b72-4421-bb52-a0d4e87b8fea"}},"repository":{"url":"git+https://github.com/alteran-social/alteran.git","type":"git"},"_npmVersion":"11.11.0","description":"Astro integration for running a Cloudflare-hosted Bluesky PDS with Alteran.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"hono":"^4.9.9","jose":"^5.9.6","astro":"^6.1.5","dotenv":"^17.2.3","get-port":"^7.1.0","@ipld/car":"^5.4.2","astro-icon":"^1.1.5","drizzle-orm":"^0.44.6","uint8arrays":"^5.1.0","@did-plc/lib":"^0.0.4","multiformats":"^13.4.1","@noble/hashes":"^2.0.1","@ipld/dag-cbor":"^9.2.5","@atproto/crypto":"^0.4.4","@cloudflare/workers-types":"^4.20251001.0","@iconify-json/simple-icons":"^1.2.53"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.6","wrangler":"^4.40.3","miniflare":"3","@types/bun":"latest","drizzle-kit":"^0.31.5","@atproto/api":"^0.17.0","@astrojs/cloudflare":"^12.6.9","@cloudflare/vite-plugin":"^1.13.8"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/astro_0.7.6_1778630452447_0.6701349810972164","host":"s3://npm-registry-packages-npm-production"}},"0.7.7":{"name":"@alteran/astro","version":"0.7.7","license":"MIT","_id":"@alteran/astro@0.7.7","maintainers":[{"name":"rawkode","email":"david@rawkode.com"}],"homepage":"https://github.com/alteran-social/alteran#readme","bugs":{"url":"https://github.com/alteran-social/alteran/issues"},"dist":{"shasum":"cb1417837c78301b2d6a33b3a7b2e903c8202571","tarball":"https://registry.npmjs.org/@alteran/astro/-/astro-0.7.7.tgz","fileCount":183,"integrity":"sha512-JnJF8tMPhRwKv3OeiZqaQ/l+lk49d2+G9kzNx8MgSnqH3IhVLuES0uIZ06Fqx0xNNeW9fPqfjblTwbSVVHj9ZA==","signatures":[{"sig":"MEQCIEDlVjKY2dJTIV+p7PlFrpY+WKH8ihr9E6lmB/99VCoKAiBtBqIhdE9llq4hmG9TPO3GWbYVdwt8i4xp2Ep7NPmHGA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@alteran%2fastro@0.7.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":636125},"type":"module","types":"index.d.ts","module":"index.js","exports":{".":{"types":"./index.d.ts","import":"./index.js"},"./worker":{"types":"./types/worker.d.ts","import":"./src/worker/index.ts"}},"gitHead":"7a6a279c47f508b43560075fc9401c0c0bb32f77","scripts":{"dev":"astro dev","build":"astro build","deploy":"astro build && bunx wrangler deploy --env production","preview":"astro preview","db:apply":"bunx wrangler d1 migrations apply pds","iac:plan":"bunx alchemy plan iac/alchemy.run.ts","iac:deploy":"bunx alchemy deploy iac/alchemy.run.ts","test:oauth":"bun test tests/oauth-*.test.ts tests/resource-auth.test.ts","db:generate":"bunx drizzle-kit generate","iac:destroy":"bunx alchemy destroy iac/alchemy.run.ts","secrets:setup":"bun run scripts/setup-secrets.ts","db:apply:local":"bunx wrangler d1 migrations apply pds --local","db:reset:local":"rm -rf .wrangler/state && rm -rf migrations && bun run db:generate && bun run db:apply:local","relay:request-crawl":"bun run scripts/request-crawl.ts","db:apply:local:direct":"wrangler d1 migrations apply pds --local","pds:test-create-session":"bun run scripts/test-create-session.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:22685873-2b72-4421-bb52-a0d4e87b8fea"}},"repository":{"url":"git+https://github.com/alteran-social/alteran.git","type":"git"},"_npmVersion":"11.11.0","description":"Astro integration for running a Cloudflare-hosted Bluesky PDS with Alteran.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"hono":"^4.9.9","jose":"^5.9.6","astro":"^6.1.5","dotenv":"^17.2.3","get-port":"^7.1.0","@ipld/car":"^5.4.2","astro-icon":"^1.1.5","drizzle-orm":"^0.44.6","uint8arrays":"^5.1.0","@did-plc/lib":"^0.0.4","multiformats":"^13.4.1","@noble/hashes":"^2.0.1","@ipld/dag-cbor":"^9.2.5","@atproto/crypto":"^0.4.4","@cloudflare/workers-types":"^4.20251001.0","@iconify-json/simple-icons":"^1.2.53"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.6","wrangler":"^4.40.3","miniflare":"3","@types/bun":"latest","drizzle-kit":"^0.31.5","@atproto/api":"^0.17.0","@astrojs/cloudflare":"^12.6.9","@cloudflare/vite-plugin":"^1.13.8"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/astro_0.7.7_1778630763858_0.2434439457255928","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"@alteran/astro","version":"0.8.1","license":"MIT","_id":"@alteran/astro@0.8.1","maintainers":[{"name":"rawkode","email":"david@rawkode.com"}],"homepage":"https://github.com/alteran-social/alteran#readme","bugs":{"url":"https://github.com/alteran-social/alteran/issues"},"dist":{"shasum":"5f49654fe71b9ee76069495f21ea37e92ff61edc","tarball":"https://registry.npmjs.org/@alteran/astro/-/astro-0.8.1.tgz","fileCount":201,"integrity":"sha512-iD0YJgGrFIwGRovArpw8k+cX2xhwY6jY3AJuLOkYwfvifLyp236R3UzDIHAhOvVWzEVEPWSt4ADGk1vjyj9rpg==","signatures":[{"sig":"MEYCIQCX1SwUMc0F5c4tXzDvxenk0a56pkWFG/+aNcoQsz0ngwIhAMCiD8Kuj4NabI4qgk4JMBkhev+W4GSEc6EMPT20TdqS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@alteran%2fastro@0.8.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":786692},"type":"module","types":"index.d.ts","module":"index.js","exports":{".":{"types":"./index.d.ts","import":"./index.js"},"./worker":{"types":"./types/worker.d.ts","import":"./src/worker/index.ts"}},"gitHead":"c9ac31ffb3907458ad896127622cc5917ad68529","scripts":{},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:22685873-2b72-4421-bb52-a0d4e87b8fea"}},"repository":{"url":"git+https://github.com/alteran-social/alteran.git","type":"git"},"_npmVersion":"11.11.0","description":"Astro integration for running a Cloudflare-hosted Bluesky PDS with Alteran.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"hono":"^4.12.18","jose":"^5.10.0","astro":"^6.3.3","dotenv":"^17.4.2","get-port":"^7.2.0","@ipld/car":"^5.4.6","astro-icon":"^1.1.5","drizzle-orm":"^0.44.7","uint8arrays":"^5.1.1","@atproto/api":"^0.17.7","@did-plc/lib":"^0.0.4","multiformats":"^13.4.2","@noble/hashes":"^2.2.0","@ipld/dag-cbor":"^9.2.7","@atproto/crypto":"^0.4.5","@atproto/syntax":"^0.4.3","@cloudflare/workers-types":"^4.20260511.1","@iconify-json/simple-icons":"^1.2.82"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.4.2","wrangler":"^4.91.0","miniflare":"^3.20250718.3","drizzle-kit":"^0.31.10","@astrojs/cloudflare":"^12.6.13","@cloudflare/vite-plugin":"^1.37.0"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/astro_0.8.1_1778775523283_0.3857713645669276","host":"s3://npm-registry-packages-npm-production"}},"0.8.2":{"name":"@alteran/astro","version":"0.8.2","license":"MIT","_id":"@alteran/astro@0.8.2","maintainers":[{"name":"rawkode","email":"david@rawkode.com"}],"homepage":"https://github.com/alteran-social/alteran#readme","bugs":{"url":"https://github.com/alteran-social/alteran/issues"},"dist":{"shasum":"662d48f00ad14dade460a3dde4e95be2fd4f0909","tarball":"https://registry.npmjs.org/@alteran/astro/-/astro-0.8.2.tgz","fileCount":201,"integrity":"sha512-jC0yGFsuhlAd/QV7nnScboDudXCv+lp7+vv+gOqld4pn0II44TbpMm8GPQ0LkhBeCKoMqPqsit79fIGBXjWYMw==","signatures":[{"sig":"MEQCIDZ3qxt2x+/C/kWPkC8d3aGJ6C36OZLhjQO4lzKsBOdMAiA0HGYyxYY+kErh7wta+qquRT2t/MoOfJje5cZwEMlCfg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@alteran%2fastro@0.8.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":786692},"type":"module","types":"index.d.ts","module":"index.js","exports":{".":{"types":"./index.d.ts","import":"./index.js"},"./worker":{"types":"./types/worker.d.ts","import":"./src/worker/index.ts"}},"gitHead":"201f65f428a71a5c211929f481334733c3b752a0","scripts":{},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:22685873-2b72-4421-bb52-a0d4e87b8fea"}},"repository":{"url":"git+https://github.com/alteran-social/alteran.git","type":"git"},"_npmVersion":"11.11.0","description":"Astro integration for running a Cloudflare-hosted Bluesky PDS with Alteran.","directories":{},"_nodeVersion":"24.14.1","dependencies":{"hono":"^4.12.18","jose":"^5.10.0","astro":"^6.3.3","dotenv":"^17.4.2","get-port":"^7.2.0","@ipld/car":"^5.4.6","astro-icon":"^1.1.5","drizzle-orm":"^0.44.7","uint8arrays":"^5.1.1","@atproto/api":"^0.17.7","@did-plc/lib":"^0.0.4","multiformats":"^13.4.2","@noble/hashes":"^2.2.0","@ipld/dag-cbor":"^9.2.7","@atproto/crypto":"^0.4.5","@atproto/syntax":"^0.4.3","@cloudflare/workers-types":"^4.20260511.1","@iconify-json/simple-icons":"^1.2.82"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.4.2","wrangler":"^4.91.0","miniflare":"^3.20250718.3","drizzle-kit":"^0.31.10","@astrojs/cloudflare":"^12.6.13","@cloudflare/vite-plugin":"^1.37.0"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/astro_0.8.2_1778776431363_0.6164755251592553","host":"s3://npm-registry-packages-npm-production"}},"0.8.3":{"name":"@alteran/astro","version":"0.8.3","license":"MIT","_id":"@alteran/astro@0.8.3","maintainers":[{"name":"rawkode","email":"david@rawkode.com"}],"homepage":"https://github.com/alteran-social/alteran#readme","bugs":{"url":"https://github.com/alteran-social/alteran/issues"},"dist":{"shasum":"b5f44a29f74b26c081510e2b4cec192119fb095a","tarball":"https://registry.npmjs.org/@alteran/astro/-/astro-0.8.3.tgz","fileCount":201,"integrity":"sha512-9cQvCi9C7tKb7nTNqBv3mzxoxaFHj/rO0bKo8P+QHE5Fxg90tG6nPgyPc/8fomUOM2GOmYf3eu8+IB00TzsDRw==","signatures":[{"sig":"MEQCIC76bbFFm77BY5oSptYOY3QTmvIMIynLsI439qKujR9jAiByDSBiq5WxvuJcYm8Nzm3OimtAMiaNknI8aQiJbmoDhw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@alteran%2fastro@0.8.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":786580},"type":"module","types":"index.d.ts","module":"index.js","exports":{".":{"types":"./index.d.ts","import":"./index.js"},"./worker":{"types":"./types/worker.d.ts","import":"./src/worker/index.ts"}},"gitHead":"17cbc0e298e0071b8ec0dfe2b64e7d54d450079c","scripts":{},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:22685873-2b72-4421-bb52-a0d4e87b8fea"}},"repository":{"url":"git+https://github.com/alteran-social/alteran.git","type":"git"},"_npmVersion":"11.12.1","description":"Astro integration for running a Cloudflare-hosted Bluesky PDS with Alteran.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"hono":"^4.12.18","jose":"^5.10.0","astro":"^6.3.3","dotenv":"^17.4.2","get-port":"^7.2.0","@ipld/car":"^5.4.6","astro-icon":"^1.1.5","drizzle-orm":"^0.44.7","uint8arrays":"^5.1.1","@atproto/api":"^0.17.7","@did-plc/lib":"^0.0.4","multiformats":"^13.4.2","@noble/hashes":"^2.2.0","@ipld/dag-cbor":"^9.2.7","@atproto/crypto":"^0.4.5","@atproto/syntax":"^0.4.3","@cloudflare/workers-types":"^4.20260511.1","@iconify-json/simple-icons":"^1.2.82"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.4.2","wrangler":"^4.91.0","miniflare":"^3.20250718.3","drizzle-kit":"^0.31.10","@astrojs/cloudflare":"^12.6.13","@cloudflare/vite-plugin":"^1.37.0"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/astro_0.8.3_1778777540078_0.23669268030286372","host":"s3://npm-registry-packages-npm-production"}},"0.8.4":{"name":"@alteran/astro","version":"0.8.4","license":"MIT","_id":"@alteran/astro@0.8.4","maintainers":[{"name":"rawkode","email":"david@rawkode.com"}],"homepage":"https://github.com/alteran-social/alteran#readme","bugs":{"url":"https://github.com/alteran-social/alteran/issues"},"dist":{"shasum":"32f3a4d85bf3328bfc076be505f4cc55139d3d83","tarball":"https://registry.npmjs.org/@alteran/astro/-/astro-0.8.4.tgz","fileCount":201,"integrity":"sha512-SvwUCDQ5NXpQN/03Ld75h8IryF4Td5ScpCeyC7+StExHrNzP99uOq7KNMO10nCCX+mKEQqXcWFskdoemy0GWWw==","signatures":[{"sig":"MEQCIAaqwxdIabqEMmluXD5aheauK0ns6FEpWCpDaQ4N9DSJAiBusqfCBxGVQ15N1GuJjTRlv/XIin6F+hHwh3zgodfEFw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@alteran%2fastro@0.8.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":786580},"type":"module","types":"index.d.ts","module":"index.js","exports":{".":{"types":"./index.d.ts","import":"./index.js"},"./worker":{"types":"./types/worker.d.ts","import":"./src/worker/index.ts"}},"gitHead":"396f4110743c54ee82f80036dc77771e39efd438","scripts":{},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:22685873-2b72-4421-bb52-a0d4e87b8fea"}},"repository":{"url":"git+https://github.com/alteran-social/alteran.git","type":"git"},"_npmVersion":"11.12.1","description":"Astro integration for running a Cloudflare-hosted Bluesky PDS with Alteran.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"hono":"^4.12.18","jose":"^5.10.0","astro":"^6.3.3","dotenv":"^17.4.2","get-port":"^7.2.0","@ipld/car":"^5.4.6","astro-icon":"^1.1.5","drizzle-orm":"^0.44.7","uint8arrays":"^5.1.1","@atproto/api":"^0.17.7","@did-plc/lib":"^0.0.4","multiformats":"^13.4.2","@noble/hashes":"^2.2.0","@ipld/dag-cbor":"^9.2.7","@atproto/crypto":"^0.4.5","@atproto/syntax":"^0.4.3","@cloudflare/workers-types":"^4.20260511.1","@iconify-json/simple-icons":"^1.2.82"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.4.2","wrangler":"^4.91.0","miniflare":"^3.20250718.3","drizzle-kit":"^0.31.10","@astrojs/cloudflare":"^12.6.13","@cloudflare/vite-plugin":"^1.37.0"},"peerDependencies":{"typescript":"^5"},"_npmOperationalInternal":{"tmp":"tmp/astro_0.8.4_1778781319003_0.304511625412317","host":"s3://npm-registry-packages-npm-production"}},"0.8.5":{"name":"@alteran/astro","version":"0.8.5","description":"Astro integration for running a Cloudflare-hosted Bluesky PDS with Alteran.","module":"index.js","types":"index.d.ts","exports":{".":{"types":"./index.d.ts","import":"./index.js"},"./worker":{"types":"./types/worker.d.ts","import":"./src/worker/index.ts"}},"type":"module","publishConfig":{"access":"public"},"scripts":{},"devDependencies":{"@astrojs/cloudflare":"^12.6.13","@cloudflare/vite-plugin":"^1.37.0","drizzle-kit":"^0.31.10","miniflare":"^3.20250718.3","vite":"^6.4.2","wrangler":"^4.91.0"},"peerDependencies":{"typescript":"^5"},"dependencies":{"@atproto/api":"^0.17.7","@atproto/crypto":"^0.4.5","@atproto/syntax":"^0.4.3","@cloudflare/workers-types":"^4.20260511.1","@did-plc/lib":"^0.0.4","@iconify-json/simple-icons":"^1.2.82","@ipld/car":"^5.4.6","@ipld/dag-cbor":"^9.2.7","@noble/hashes":"^2.2.0","astro":"^6.3.3","astro-icon":"^1.1.5","dotenv":"^17.4.2","drizzle-orm":"^0.44.7","get-port":"^7.2.0","hono":"^4.12.18","multiformats":"^13.4.2","uint8arrays":"^5.1.1","jose":"^5.10.0"},"repository":{"type":"git","url":"git+https://github.com/alteran-social/alteran.git"},"bugs":{"url":"https://github.com/alteran-social/alteran/issues"},"homepage":"https://github.com/alteran-social/alteran#readme","license":"MIT","gitHead":"3aef0624e9e3cfb9ee999d71d4b8d7d119241109","_id":"@alteran/astro@0.8.5","_nodeVersion":"24.14.1","_npmVersion":"11.11.0","dist":{"integrity":"sha512-ggGz7Qk5OCykZC5CAFjgPUaDwvx7a1bfG2bnZhmVvQkkvvyr8GY2gZAtYUw23ojueU5Aeua0hZ3GVaLv90OpvQ==","shasum":"0dedc66c8701f49d49683fb1f5c8157ba56fc7f5","tarball":"https://registry.npmjs.org/@alteran/astro/-/astro-0.8.5.tgz","fileCount":206,"unpackedSize":788470,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@alteran%2fastro@0.8.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIGL56OWWFCaTQVLGmeKioYPTESSUamN3s4owTX79EHabAiEA823JPfVHu7iaKRK0fbSh0QI5ZZzukdBcVJSguLMNBcE="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:22685873-2b72-4421-bb52-a0d4e87b8fea"}},"directories":{},"maintainers":[{"name":"rawkode","email":"david@rawkode.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/astro_0.8.5_1778783340913_0.41466728470315584"},"_hasShrinkwrap":false}},"time":{"created":"2025-10-03T14:18:30.915Z","modified":"2026-05-14T18:29:01.364Z","0.1.0":"2025-10-03T14:18:31.211Z","0.1.3":"2025-10-03T14:57:26.560Z","0.1.4":"2025-10-03T15:39:12.929Z","0.1.5":"2025-10-03T16:02:31.095Z","0.1.6":"2025-10-03T16:29:48.862Z","0.1.7":"2025-10-03T17:06:21.301Z","0.1.8":"2025-10-03T18:20:39.525Z","0.1.9":"2025-10-03T20:51:45.081Z","0.1.10":"2025-10-03T21:07:44.951Z","0.1.11":"2025-10-03T21:25:00.799Z","0.1.12":"2025-10-03T21:53:30.342Z","0.1.13":"2025-10-03T22:06:13.413Z","0.1.14":"2025-10-03T22:14:05.045Z","0.3.0":"2025-10-06T09:52:16.219Z","0.3.1":"2025-10-06T10:52:56.585Z","0.3.2":"2025-10-06T11:06:43.106Z","0.3.3":"2025-10-06T11:48:45.632Z","0.3.4":"2025-10-06T12:20:05.110Z","0.3.5":"2025-10-06T12:25:17.670Z","0.3.6":"2025-10-06T12:28:24.341Z","0.3.7":"2025-10-06T12:30:35.445Z","0.3.8":"2025-10-06T12:47:12.779Z","0.3.9":"2025-10-06T13:05:14.575Z","0.5.2":"2026-05-11T23:14:45.630Z","0.6.1":"2026-05-12T13:07:50.445Z","0.6.3":"2026-05-12T20:07:04.800Z","0.7.0":"2026-05-12T22:42:20.927Z","0.7.1":"2026-05-12T22:48:30.149Z","0.7.2":"2026-05-12T22:57:48.148Z","0.7.3":"2026-05-12T23:06:24.687Z","0.7.5":"2026-05-12T23:21:16.657Z","0.7.6":"2026-05-13T00:00:52.746Z","0.7.7":"2026-05-13T00:06:04.087Z","0.8.1":"2026-05-14T16:18:43.481Z","0.8.2":"2026-05-14T16:33:51.561Z","0.8.3":"2026-05-14T16:52:20.294Z","0.8.4":"2026-05-14T17:55:19.305Z","0.8.5":"2026-05-14T18:29:01.077Z"},"bugs":{"url":"https://github.com/alteran-social/alteran/issues"},"license":"MIT","homepage":"https://github.com/alteran-social/alteran#readme","repository":{"type":"git","url":"git+https://github.com/alteran-social/alteran.git"},"description":"Astro integration for running a Cloudflare-hosted Bluesky PDS with Alteran.","maintainers":[{"name":"rawkode","email":"david@rawkode.com"}],"readme":"# Alteran\n\n> [!WARNING]\n> This project was built using agentic coding tools and is currently undergoing a systematic review by a human in their spare time. Nobody should use this project as their PDS yet.\n\n## Astro Integration\n\nThis repository now ships an Astro integration that turns any Cloudflare Worker-backed Astro app into a single-user ATProto Personal Data Server. Install the package (or link it locally), then add the integration to your `astro.config.mjs`:\n\n```bash\nnpm install @alteran/astro\n# or, in a Deno project\ndeno add npm:@alteran/astro\n```\n\n```ts\nimport { defineConfig } from 'astro/config';\nimport cloudflare from '@astrojs/cloudflare';\nimport alteran from '@alteran/astro';\n\nexport default defineConfig({\n  adapter: cloudflare({ mode: 'advanced' }),\n  integrations: [alteran()],\n});\n```\n\nBy default the integration injects all `/xrpc/*` ATProto routes, health/ready checks, and the Cloudflare Worker entrypoint that wires `locals.runtime`. Optional flags let you expose the `/debug/*` utilities or keep your own homepage:\n\n```ts\nalteran({\n  debugRoutes: process.env.NODE_ENV !== 'production',\n  includeRootEndpoint: false,\n  injectServerEntry: true, // opt in if you don't maintain your own worker entrypoint\n});\n```\n\nThe integration automatically:\n- Resolves all injected routes against the packaged runtime without requiring a Vite alias\n- Registers the middleware that applies structured logging and CORS enforcement\n- Injects all PDS HTTP endpoints into the host project\n- Offers the packaged Cloudflare worker entrypoint when you enable `{ injectServerEntry: true }`\n- Publishes ambient env typings so `Env` and `App.Locals` are available from TypeScript\n\nWhen deploying, continue to configure Wrangler/D1/R2 secrets exactly as before—the integration does not change the runtime requirements.\n\n### Custom Worker Entrypoint\n\nThe integration no longer overrides `build.serverEntry` by default. If you need to export additional Durable Objects or otherwise customise the worker, keep your own entrypoint and compose Alteran's runtime helpers instead of copying the internal logic.\n\n```ts\n// src/_worker.ts in your Astro project\nimport { createPdsFetchHandler, Sequencer } from '@alteran/astro/worker';\n\nconst fetch = createPdsFetchHandler();\n\nexport default { fetch };\n\n// Re-export Sequencer so Wrangler can bind the Durable Object namespace\nexport { Sequencer };\n\n// Export any additional Durable Objects after this line\nexport { MyDurableObject } from './worker/my-durable-object';\n```\n\nHelpers like `onRequest`, `seed`, and `validateConfigOrThrow` are also exported from `@alteran/astro/worker` if you need to build more advanced wrappers (for example, to add request instrumentation before delegating to the PDS handler).\n\nTo install dependencies:\n\n```bash\ndeno install\n```\n\nDev server (Vite dev):\n\n```bash\ndeno task dev\n```\n\nCloudflare local dev (optional):\n\n```bash\ndeno run -A npm:wrangler dev --local\n```\n\nBuild and deploy:\n\n```bash\ndeno task build\ndeno task deploy\n```\n\nHealth endpoints: `GET /health` and `GET /ready` return `200 ok`.\n\nAuth (JWT)\n- `POST /xrpc/com.atproto.server.createSession` returns `accessJwt` and `refreshJwt` (HS256).\n- `POST /xrpc/com.atproto.server.refreshSession` expects `Authorization: Bearer <refreshJwt>` and issues a new pair.\n- Use `Authorization: Bearer <accessJwt>` on write routes.\n- Secrets to set (Wrangler secrets or local bindings):\n  - `USER_PASSWORD` (dev login password)\n  - `ACCESS_TOKEN`, `REFRESH_TOKEN` (HMAC keys)\n  - `PDS_DID`, `PDS_HANDLE`\n\nRate limiting & limits\n- Per‑IP rate limit (best‑effort, D1‑backed): set `PDS_RATE_LIMIT_PER_MIN` (default writes=60/min, blobs=30/min). Responses include `x-ratelimit-*` headers.\n- JSON body size cap via `PDS_MAX_JSON_BYTES` (default 65536/64 KiB).\n- CORS: allow `*` by default in dev. In production, set `PDS_CORS_ORIGIN` to a CSV of allowed origins (e.g., `https://example.com,https://app.example.com`). Requests with an `Origin` not in this set are denied at the CORS layer (no wildcard fallback).\n\nThis project targets Cloudflare Workers via Astro with `@cloudflare/vite-plugin`, and is developed with Deno as the task runner / package manager.\n\n## Database Migrations\n\nThis project uses Drizzle Kit for database schema management and migrations.\n\n### Migration Workflow\n\n1. **Modify Schema**: Edit [`src/db/schema.ts`](src/db/schema.ts:1) to add/modify tables or indexes\n2. **Generate Migration**: Run `deno task db:generate` to create a new migration file in `migrations/`\n3. **Review Migration**: Check the generated SQL in `migrations/XXXX_*.sql`\n4. **Apply Locally**: Run `deno task db:apply:local` to apply to local D1 database\n5. **Apply to Production**: Run `wrangler d1 migrations apply pds --remote` after deployment\n\n### Migration Versioning\n\n- Migrations are versioned sequentially (0000, 0001, 0002, etc.)\n- Each migration is tracked in `migrations/meta/_journal.json`\n- Migrations are applied in order and cannot be skipped\n- Applied migrations are recorded in D1's `_cf_KV` table\n\n### Rollback Procedures\n\n**Important**: D1 does not support automatic rollbacks. To rollback:\n\n1. Create a new migration that reverses the changes\n2. Test thoroughly in local/staging environment\n3. Apply the rollback migration to production\n\nExample rollback migration:\n```sql\n-- Rollback: Remove index added in 0002\nDROP INDEX IF EXISTS `record_cid_idx`;\n```\n\n### Data Retention & Pruning\n\n**Commit Log**: Stores full commit history for firehose and sync\n- Default retention: Last 10,000 commits\n- Pruning: Use [`pruneOldCommits()`](src/lib/commit-log-pruning.ts:19) utility\n- Older commits can be safely removed as current state is in MST\n\n**Blockstore**: Stores MST nodes (Merkle Search Tree blocks)\n- Retention: Blocks referenced by recent commits\n- GC: Use [`pruneOrphanedBlocks()`](src/lib/blockstore-gc.ts:127) utility\n- Orphaned blocks (not in recent commits) can be removed\n\n**Token Revocation**: Stores revoked JWT tokens\n- Automatic cleanup: Expired tokens removed lazily (1% of requests)\n- Manual cleanup: Use token cleanup utility\n## Configuration Management\n\n### Environment Setup\n\nThis PDS supports multiple environments (dev, staging, production) with separate configurations.\n\n**Deploy to specific environment:**\n```bash\n# Development\nwrangler deploy --env dev\n\n# Staging\nwrangler deploy --env staging\n\n# Production\nwrangler deploy --env production\n```\n\n### Required Secrets\n\nSet these secrets for each environment using `wrangler secret put <NAME> --env <environment>`:\n\n| Secret | Description | Example |\n|--------|-------------|---------|\n| `PDS_DID` | Your DID identifier | `did:plc:abc123` or `did:web:example.com` |\n| `PDS_HANDLE` | Your handle | `user.bsky.social` |\n| `USER_PASSWORD` | Login password | Strong password |\n| `ACCESS_TOKEN` | JWT access token secret | Random 32+ char string |\n| `REFRESH_TOKEN` | JWT refresh token secret | Random 32+ char string |\n| `REPO_SIGNING_KEY` | secp256k1 signing key (hex or base64 32 bytes). Used for commits and service-auth | From `scripts/setup-secrets.ts` |\n\n**Generate secrets:**\n```bash\n# One-shot bootstrap (recommended)\n# Generates all required secrets and prints wrangler commands\ndeno run -A scripts/setup-secrets.ts --env production --did did:web:example.com --handle user.example.com\n\n# After generation, set secrets (example for production)\nwrangler secret put PDS_DID --env production\nwrangler secret put PDS_HANDLE --env production\nwrangler secret put USER_PASSWORD --env production\nwrangler secret put ACCESS_TOKEN --env production\nwrangler secret put REFRESH_TOKEN --env production\nwrangler secret put REPO_SIGNING_KEY --env production\n```\n\n### Using Cloudflare Secret Store (optional)\n\nInstead of Wrangler Secrets, you may bind secrets from Cloudflare Secret Store. This repo now supports both. Bind each secret you want to source from Secret Store via `secrets_store_secrets` in `wrangler.jsonc`:\n\n```jsonc\n{\n  // ...\n  \"secrets_store_secrets\": [\n    { \"binding\": \"USER_PASSWORD\", \"secret_name\": \"user_password\", \"store_id\": \"<your-store-id>\" },\n    { \"binding\": \"ACCESS_TOKEN\", \"secret_name\": \"access_token\", \"store_id\": \"<your-store-id>\" },\n    { \"binding\": \"REFRESH_TOKEN\", \"secret_name\": \"refresh_token\", \"store_id\": \"<your-store-id>\" },\n    { \"binding\": \"PDS_DID\", \"secret_name\": \"pds_did\", \"store_id\": \"<your-store-id>\" },\n    { \"binding\": \"PDS_HANDLE\", \"secret_name\": \"pds_handle\", \"store_id\": \"<your-store-id>\" }\n  ]\n}\n```\n\nNotes:\n- Bindings can use the same names as the existing env vars. Only one source should be configured per secret (Wrangler Secret OR Secret Store binding).\n- At runtime, the worker resolves Secret Store bindings via `await env.<BINDING>.get()` and passes them to the app as plain strings.\n\n### Optional Configuration\n\nThese can be set as environment variables in [`wrangler.jsonc`](wrangler.jsonc:1) or as secrets:\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `PDS_ALLOWED_MIME` | `image/jpeg,image/png,...` | Comma-separated MIME types |\n| `PDS_MAX_BLOB_SIZE` | `5242880` (5MB) | Max blob size in bytes |\n| `PDS_MAX_JSON_BYTES` | `65536` (64KB) | Max JSON body size |\n| `PDS_RATE_LIMIT_PER_MIN` | `60` | Write requests per minute |\n| `PDS_CORS_ORIGIN` | `*` (dev), specific (prod) | Allowed CORS origins |\n| `PDS_SEQ_WINDOW` | `512` | Firehose sequence window |\n| `PDS_HOSTNAME` | - | Public hostname |\n| `PDS_ACCESS_TTL_SEC` | `3600` (1 hour) | Access token TTL |\n| `PDS_REFRESH_TTL_SEC` | `2592000` (30 days) | Refresh token TTL |\n\n### Configuration Validation\n\nThe PDS validates configuration on startup and will fail fast if required secrets are missing:\n\n```typescript\n// Automatic validation in src/_worker.ts\nvalidateConfigOrThrow(env);\n```\n\n**Validation checks:**\n- All required secrets are present\n- CORS is not wildcard in production\n- DID format is valid\n- Handle format is valid\n- Numeric values are positive\n\n### Cloudflare Security Rules\n\n`com.atproto.server.refreshSession` is a valid bodyless `POST`. Production deployments must allow this request shape through to the XRPC handler:\n\n```txt\n(http.request.method eq \"POST\" and http.request.uri.path eq \"/xrpc/com.atproto.server.refreshSession\")\n```\n\nAstro's SSR origin-check middleware rejects unsafe requests with no `Origin` header before project middleware runs. Alteran normalizes `/xrpc/*` requests at the Worker entrypoint so bearer-token XRPC clients can send bodyless POSTs without tripping Astro's form CSRF guard.\n\nIf Cloudflare WAF/API Shield also protects the deployment, keep any exception narrow to the expression above. This exception is not configured in `wrangler.jsonc`; Wrangler only manages the Worker deployment and bindings.\n\n### Environment-Specific Settings\n\nSee [`wrangler.jsonc`](wrangler.jsonc:40) for environment-specific configurations:\n\n- **Development**: Relaxed CORS, larger blob limits, local D1/R2\n- **Staging**: Production-like settings, separate D1/R2 instances\n- **Production**: Strict CORS, production D1/R2, observability enabled\n\n\nDebugging & storage\n- D1 schema/migrations: generated with Drizzle Kit into `drizzle/`. Generate with `deno run -A npm:drizzle-kit generate`.\n- Apply schema locally: `deno run -A npm:wrangler d1 migrations apply pds --local` (requires dev DB named `pds`).\n- Bootstrap route (alt): `POST /debug/db/bootstrap` creates a minimal `record` table.\n- Insert a test record: `POST /debug/record` with `{ \"uri\": \"at://did:example/app.bsky.feed.post/123\", \"json\": {\"msg\":\"hi\"} }`.\n- Get a record: `GET /debug/record?uri=at://did:example/app.bsky.feed.post/123`.\n- R2 test: `PUT /debug/blob/<key>` and `GET /debug/blob/<key>`.\n- Run GC: `POST /debug/gc/blobs` removes R2 objects with no references\n\nXRPC surface\n- `GET /xrpc/com.atproto.server.describeServer`\n- `POST /xrpc/com.atproto.server.createSession` (returns JWTs)\n- `POST /xrpc/com.atproto.server.refreshSession`\n- `GET /xrpc/com.atproto.repo.getRecord?uri=...` (reads from D1 `record` table) or `repo+collection+rkey`\n- `POST /xrpc/com.atproto.repo.createRecord` (auth required)\n- `POST /xrpc/com.atproto.repo.putRecord` (auth required)\n- `POST /xrpc/com.atproto.repo.deleteRecord` (auth required)\n- `POST /xrpc/com.atproto.repo.uploadBlob` (auth + MIME allowlist)\n  - Stores blob metadata in `blob` table (`cid`=sha256 b64url, `mime`, `size`)\n  - Blob references inside records tracked by R2 key; deleting a record drops usage and GC can reclaim orphaned objects\n\nSync (minimal JSON variants)\n- `GET /xrpc/com.atproto.sync.getHead` → `{ root, rev }`\n- `GET /xrpc/com.atproto.sync.getRepo.json?did=<did>` → `{ did, head, rev, records: [{uri,cid,value}] }`\n- `GET /xrpc/com.atproto.sync.getCheckout.json?did=<did>` → same as above\n- `GET /xrpc/com.atproto.sync.getBlocks.json?cids=<cid1,cid2>` → `{ blocks: [{cid,value}] }`\n\nSync (CAR v1)\n- `GET /xrpc/com.atproto.sync.getRepo?did=<did>` → `application/vnd.ipld.car` snapshot\n- `GET /xrpc/com.atproto.sync.getCheckout?did=<did>` → same as above\n- `GET /xrpc/com.atproto.sync.getBlocks?cids=<cid1,cid2>` → `application/vnd.ipld.car` with requested blocks\n  - Blocks are DAG-CBOR encoded; CIDs are CIDv1 (dag-cbor + sha2-256)\n\nFirehose (WebSocket)\n- `GET /xrpc/com.atproto.sync.subscribeRepos` upgrades to WebSocket.\n- On writes, the worker POSTs a small commit frame to the `Sequencer` Durable Object, which broadcasts to all subscribers.\n- Frames (subject to change):\n  - `{\"type\":\"hello\",\"now\":<ms>}` once on connect\n  - `{\"type\":\"commit\",\"did\":\"...\",\"commitCid\":\"...\",\"rev\":<n>,\"ts\":<ms>}` on each write\n\nBlob storage\n- Keys are content-addressed: `blobs/by-cid/<sha256-b64url>`; upload response `$link` equals this key.\n- Allowed MIME types via `PDS_ALLOWED_MIME` (CSV). Size limit via `PDS_MAX_BLOB_SIZE` (bytes).\n\nSecrets & config (Wrangler)\n- Required:\n  - `PDS_DID`, `PDS_HANDLE`, `USER_PASSWORD`\n  - `ACCESS_TOKEN`, `REFRESH_TOKEN`\n- Optional:\n  - `PDS_ALLOWED_MIME`, `PDS_MAX_BLOB_SIZE`, `PDS_MAX_JSON_BYTES`, `PDS_RATE_LIMIT_PER_MIN`, `PDS_CORS_ORIGIN`\n- Durable Objects: ensure binding for `Sequencer` exists and migration tag added (see `wrangler.jsonc`).\n\nIdentity (DID)\n- This single‑user PDS uses `did:web`.\n- Host `/.well-known/atproto-did` on your production domain with the DID value.\n- Set `PDS_DID` and `PDS_HANDLE` secrets to match your deployment.\n\n## P0 Implementation - Core Protocol Compliance ✅\n\nThis PDS now implements full AT Protocol core compliance with:\n\n### MST (Merkle Search Tree)\n- ✅ Sorted, deterministic tree structure\n- ✅ Automatic rebalancing (~4 fanout)\n- ✅ Prefix compression for efficiency\n- ✅ D1 blockstore integration\n\n### Signed Commits\n- ✅ secp256k1 cryptographic signatures\n- ✅ AT Protocol v3 commit structure\n- ✅ TID-based revisions\n- ✅ Commit chain tracking\n\n### Firehose\n- ✅ WebSocket-based event stream\n- ✅ CBOR-encoded frames (#info, #commit, #identity, #account)\n- ✅ Cursor-based replay\n- ✅ Backpressure handling\n- ✅ Durable Object coordination\n\n### XRPC Endpoints\n- ✅ Server: getSession, deleteSession\n- ✅ Repo: listRecords, describeRepo, applyWrites\n- ✅ Sync: listBlobs, getRecord, listRepos, getLatestCommit\n- ✅ Identity: resolveHandle, updateHandle\n\n## Setup Instructions\n\n### 1. Generate Secrets\n```bash\n# Recommended: bootstrap all secrets (prints wrangler commands)\ndeno run -A scripts/setup-secrets.ts --env production --did did:web:example.com --handle user.example.com\n\n# Alternatively, supply your own secp256k1 key (32‑byte hex/base64)\n```\n\n### 2. Configure Secrets\n\n**Required Secrets:**\n```bash\nwrangler secret put REPO_SIGNING_KEY         # secp256k1 (from setup-secrets)\nwrangler secret put PDS_DID                  # Your DID\nwrangler secret put PDS_HANDLE               # Your handle\nwrangler secret put USER_PASSWORD            # Login password\nwrangler secret put REFRESH_TOKEN\nwrangler secret put REFRESH_TOKEN_SECRET\n```\n\n**For Local Development (.dev.vars):**\n```env\nPDS_DID=did:plc:your-did-here\nPDS_HANDLE=your-handle.bsky.social\nREPO_SIGNING_KEY=<hex-secp256k1-private-key>\nUSER_PASSWORD=your-password\nREFRESH_TOKEN=your-access-secret\nREFRESH_TOKEN_SECRET=your-refresh-secret\nPDS_SEQ_WINDOW=512\n```\n\nOAuth client metadata and JWKS documents are fetched dynamically from public\nHTTPS URLs using hardened fetch checks: no redirects, public DNS only, size\nlimits, and timeouts.\n\n### 3. Run Database Migration\n```bash\ndeno task db:generate\ndeno task db:apply:local\n```\n\nUpgrade note: migration `0009_oauth_session_state` revokes existing refresh\ntokens when adding OAuth session state. Existing clients may need to sign in\nagain after this migration. This is intentional because older refresh-token\nrows cannot prove whether they came from legacy sessions or pre-hardening OAuth\nflows.\n\n### 4. Run Tests\n```bash\ndeno test -A tests/mst.test.ts\ndeno test -A tests/commit.test.ts\n```\n\n### 5. Start Development\n```bash\ndeno task dev\n```\n\n## Testing the Implementation\n\n### Test Firehose\n```bash\nnpm install -g wscat\nwscat -c \"ws://localhost:4321/xrpc/com.atproto.sync.subscribeRepos\"\n```\n\n### Publish to a Relay (Bluesky)\n\nRelays discover PDSes via `com.atproto.sync.requestCrawl`. Your deployment will automatically notify relays on the first request it handles (and at most every 12 hours per isolate).\n\n- Set your public hostname (bare domain, no protocol):\n```\nPDS_HOSTNAME=your-pds.example.com\n```\n\n- Optional: choose relays to notify (CSV of hostnames). Defaults to `bsky.network`.\n```\nPDS_RELAY_HOSTS=bsky.network\n```\n\n- To trigger manually from your machine:\n```bash\ncurl -X POST \"https://bsky.network/xrpc/com.atproto.sync.requestCrawl\" \\\n     -H \"Content-Type: application/json\" \\\n     -d '{\"hostname\":\"your-pds.example.com\"}'\n```\n\nNotes:\n- Use only the hostname in `hostname` (no `https://`).\n- Ensure your PDS is publicly reachable over HTTPS/WSS and that DID documents resolve to this hostname.\n\n### Test XRPC Endpoints\n```bash\n# Get session\ncurl http://localhost:4321/xrpc/com.atproto.server.getSession\n\n# Describe repo\ncurl \"http://localhost:4321/xrpc/com.atproto.repo.describeRepo?repo=did:example:single-user\"\n\n# List records\ncurl \"http://localhost:4321/xrpc/com.atproto.repo.listRecords?repo=did:example:single-user&collection=app.bsky.feed.post\"\n```\n\n## Documentation\n\n- [`P0_COMPLETE.md`](P0_COMPLETE.md) - Full P0 implementation details\n- [`P0_IMPLEMENTATION_SUMMARY.md`](P0_IMPLEMENTATION_SUMMARY.md) - Technical summary\n- [`PROGRESS.md`](PROGRESS.md) - Development progress notes\n\nRepo signing key (REQUIRED)\n  \n- Store as `REPO_SIGNING_KEY` secret (base64-encoded private key)\n\n## P1 Implementation - Production Readiness 🚀\n\nThis PDS now includes production-grade features for security, observability, and reliability:\n\n### Authentication Hardening\n- ✅ **Single-use refresh tokens** with JTI tracking\n- ✅ **Token rotation** on every refresh\n- ✅ **Automatic token cleanup** (lazy cleanup on 1% of requests)\n- ✅ **Account lockout** after 5 failed login attempts (15-minute lockout)\n  \n- ✅ **Proper JWT claims**: `sub`, `aud`, `iat`, `exp`, `jti`, `scope`\n- ✅ **Production CORS validation** (no wildcard in production)\n\n### Error Handling\n- ✅ **XRPC error hierarchy** with AT Protocol error codes\n- ✅ **Consistent error responses** with user-friendly messages\n- ✅ **Error categorization** (client vs server errors)\n- ✅ **Request ID tracking** in all error responses\n\n### Observability\n- ✅ **Structured JSON logging** with levels (debug, info, warn, error)\n- ✅ **Request ID tracking** in all logs and response headers\n- ✅ **Enhanced health checks** for D1 and R2 dependencies\n- ✅ **Performance metrics** in request logs (duration, status)\n\n### Additional Configuration\n\n**JWT Configuration:**\n```bash\n# Service-auth uses ES256K (secp256k1) exclusively\nPDS_HOSTNAME=your-pds.example.com\nPDS_ACCESS_TTL_SEC=3600          # 1 hour\nPDS_REFRESH_TTL_SEC=2592000      # 30 days\n# No JWT_ALGORITHM flag; ES256K is always used for AppView service tokens\n```\n\n**CORS Configuration:**\n```bash\n# Comma-separated list of allowed origins (no wildcard in production)\nPDS_CORS_ORIGIN=https://app.example.com,https://admin.example.com\n```\n\n### Logging & Monitoring\n\n**View logs in development:**\n```bash\nwrangler tail --format=pretty\n```\n\n**View logs in production:**\n```bash\nwrangler tail --env production --format=json\n```\n\n**Configure Logpush (production):**\n1. Set up Logpush in Cloudflare dashboard\n2. Send logs to your preferred service (Datadog, Splunk, S3, etc.)\n3. Filter by `requestId` for request tracing\n\n**Log format:**\n```json\n{\n  \"level\": \"info\",\n  \"type\": \"request\",\n  \"requestId\": \"uuid\",\n  \"method\": \"POST\",\n  \"path\": \"/xrpc/com.atproto.repo.createRecord\",\n  \"status\": 200,\n  \"duration\": 45,\n  \"timestamp\": \"2025-10-02T22:00:00.000Z\"\n}\n```\n\n### Health Check\n\n**Endpoint:** `GET /health`\n\n**Response:**\n```json\n{\n  \"status\": \"healthy\",\n  \"timestamp\": \"2025-10-02T22:00:00.000Z\",\n  \"checks\": {\n    \"database\": { \"status\": \"ok\" },\n    \"storage\": { \"status\": \"ok\" }\n  }\n}\n```\n\nReturns `503` if any dependency is unhealthy.\n\n### Security Best Practices\n\n1. **Never use wildcard CORS in production** - Set explicit origins in `PDS_CORS_ORIGIN`\n2. **Use strong secrets** - Generate cryptographically secure values for all secrets\n3. **Use ES256K (secp256k1) signing**\n4. **Monitor failed login attempts** - Check logs for suspicious activity\n5. **Set appropriate token TTLs** - Balance security and user experience\n\n### Documentation\n\n- [`P1_IMPLEMENTATION_SUMMARY.md`](P1_IMPLEMENTATION_SUMMARY.md) - Full P1 implementation details\n- [`P1.md`](P1.md) - P1 task breakdown and requirements\n\n## P3 Implementation - Optimization & Interoperability 🚀\n\nThis PDS now includes optimization for Cloudflare Workers and interoperability features:\n\n### Cloudflare Workers Optimization\n- ✅ **Streaming CAR encoding** for memory efficiency (< 128MB)\n- ✅ **Edge caching** for DID documents and static assets\n- ✅ **Performance tests** verifying CPU and memory constraints\n- ✅ **Memory-efficient operations** for large repositories\n\n### Blob Storage Enhancement\n- ✅ **Blob quota tracking** per DID (default: 10GB)\n- ✅ **Quota enforcement** on upload\n- ✅ **Reference counting** for garbage collection\n- ✅ **Deduplication** by content-addressed storage\n\n### Identity Enhancement\n- ✅ **DID document generation** at `/.well-known/did.json`\n- ✅ **Handle validation** and normalization\n- ✅ **Service endpoints** in DID document\n- ✅ **Edge caching** for identity documents\n\n### Interoperability Testing\n- ✅ **Federation test stubs** for PDS-to-PDS sync\n- ✅ **Compliance test stubs** for AT Protocol\n- ✅ **Protocol version** documentation\n- ✅ **Lexicon validation** framework\n\n### Configuration\n\n**Blob Quota:**\n```bash\nPDS_BLOB_QUOTA_BYTES=10737418240  # Default: 10GB\n```\n\n**Caching (automatic):**\n- DID documents: 1 hour TTL, 24 hour stale-while-revalidate\n- Records: 1 minute TTL, 5 minute stale-while-revalidate\n- Repo snapshots: 5 minute TTL, 1 hour stale-while-revalidate\n\n### Testing\n\n```bash\n# Performance tests\ndeno test -A tests/performance.test.ts\n\n# Memory tests\ndeno test -A tests/memory.test.ts\n\n# Blob tests\ndeno test -A tests/blob.test.ts\n\n# Identity tests\ndeno test -A tests/identity.test.ts\n\n# Federation tests\ndeno test -A tests/federation.test.ts\n\n# Compliance tests\ndeno test -A tests/compliance.test.ts\n```\n\n### Documentation\n\n- [`P3_IMPLEMENTATION_SUMMARY.md`](P3_IMPLEMENTATION_SUMMARY.md) - Full P3 implementation details\n- [`P3.md`](P3.md) - P3 task breakdown and requirements\n\n- Used for signing all repository commits\n","readmeFilename":"README.md"}