{"_id":"@atmo-dev/contrail","_rev":"40-fc08f3efc0a7e7985ab1cb676798bf06","name":"@atmo-dev/contrail","dist-tags":{"latest":"0.23.0"},"versions":{"0.0.4":{"name":"@atmo-dev/contrail","version":"0.0.4","keywords":["atproto","bluesky","cloudflare","d1","indexer","xrpc"],"license":"MIT","_id":"@atmo-dev/contrail@0.0.4","maintainers":[{"name":"flo-bit128","email":"flo.bit128@gmail.com"}],"homepage":"https://github.com/flo-bit/contrail#readme","bugs":{"url":"https://github.com/flo-bit/contrail/issues"},"dist":{"shasum":"0159c7d80a9077dc6c95d4e876509e1ec2afcd4f","tarball":"https://registry.npmjs.org/@atmo-dev/contrail/-/contrail-0.0.4.tgz","fileCount":18,"integrity":"sha512-D81g8S1ud9OH30wJdxJbyrySHuLjFTVoh6qduDgA79QVoD6QDNqzDpga2TDHoMaLFHxbaMrb113eMDRPm9CvNA==","signatures":[{"sig":"MEYCIQCGcTNJgHz8Jv7SDkn5VqQPQNYD0+0VN2XcWZrrAho1dwIhAMs2dv0oGETqISsrzGDJYOggfj6uBw7ZVicbWk0C0t1H","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":346025},"type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./sqlite":{"types":"./dist/adapters/sqlite.d.ts","import":"./dist/adapters/sqlite.js"},"./generate":{"types":"./dist/generate.d.ts","import":"./dist/generate.js"}},"gitHead":"2c037ee5c5ec9e14c764464c86d36343701f1f5b","scripts":{"dev":"wrangler dev --test-scheduled","sync":"tsx app/sync.ts","test":"vitest run","build":"tsup","clean":"tsx scripts/clean.ts","deploy":"wrangler deploy","ingest":"curl -s http://localhost:8787/__scheduled?cron=*/1+*+*+*+*","dev:auto":"tsx scripts/dev.ts","generate":"tsx app/generate.ts","typecheck":"tsc --noEmit","test:watch":"vitest","generate:pull":"tsx app/generate.ts && lex-cli pull && tsx app/generate.ts && lex-cli pull && lex-cli generate","prepublishOnly":"pnpm build"},"_npmUser":{"name":"flo-bit128","email":"flo.bit128@gmail.com"},"repository":{"url":"git+https://github.com/flo-bit/contrail.git","type":"git"},"_npmVersion":"10.9.2","description":"Index AT Protocol records with typed XRPC endpoints. Cloudflare Workers + D1, SvelteKit, Node.js.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"hono":"^4.12.8","@atcute/client":"^4.2.1","@atcute/atproto":"^3.1.10","@atcute/lexicons":"^1.2.7","@atcute/jetstream":"^1.0.2","@atcute/identity-resolver":"^1.2.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.0","vitest":"^4.1.0","wrangler":"^4.63.0","typescript":"^5.7.3","@types/node":"^25.5.0","better-sqlite3":"^12.8.0","@atcute/lex-cli":"^2.5.3","@atcute/lexicon-doc":"^2.1.2","@types/better-sqlite3":"^7.6.13","@cloudflare/workers-types":"^4.20250124.0"},"_npmOperationalInternal":{"tmp":"tmp/contrail_0.0.4_1775084299276_0.7597914854216754","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"@atmo-dev/contrail","version":"0.0.5","keywords":["atproto","bluesky","cloudflare","d1","indexer","xrpc"],"license":"MIT","_id":"@atmo-dev/contrail@0.0.5","maintainers":[{"name":"flo-bit128","email":"flo.bit128@gmail.com"}],"homepage":"https://github.com/flo-bit/contrail#readme","bugs":{"url":"https://github.com/flo-bit/contrail/issues"},"dist":{"shasum":"c3454b87548cf99ccb713d96af7e301fedb713d5","tarball":"https://registry.npmjs.org/@atmo-dev/contrail/-/contrail-0.0.5.tgz","fileCount":18,"integrity":"sha512-vcP1BAIRmn08zXkmx5h+PUPG5k+XiV+m5L7taUuGKEpS9629zfSyA5lPGxgOShPYflyVE1LjpqmA7bNm8N/n+A==","signatures":[{"sig":"MEUCIHBMImk+3Ww2N7/LrkbpfCc/T1CPxhSp9D29NkKqJ1viAiEAu6ShGBnldKyaVoodSTh9HVx7KNw6kDycAzubLiXgDVY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atmo-dev%2fcontrail@0.0.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":346603},"type":"module","_from":"file:atmo-dev-contrail-0.0.5.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./sqlite":{"types":"./dist/adapters/sqlite.d.ts","import":"./dist/adapters/sqlite.js"},"./generate":{"types":"./dist/generate.d.ts","import":"./dist/generate.js"}},"scripts":{"dev":"wrangler dev --test-scheduled","sync":"tsx app/sync.ts","test":"vitest run","build":"tsup","clean":"tsx scripts/clean.ts","deploy":"wrangler deploy","ingest":"curl -s http://localhost:8787/__scheduled?cron=*/1+*+*+*+*","release":"changeset publish","dev:auto":"tsx scripts/dev.ts","generate":"tsx app/generate.ts","typecheck":"tsc --noEmit","test:watch":"vitest","generate:pull":"tsx app/generate.ts && lex-cli pull && tsx app/generate.ts && lex-cli pull && lex-cli generate"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:202f4496-6f2a-49a3-bc12-ded8e4f784a6"}},"_resolved":"/tmp/719d5eabff2974f38469b25bd13fccd4/atmo-dev-contrail-0.0.5.tgz","_integrity":"sha512-vcP1BAIRmn08zXkmx5h+PUPG5k+XiV+m5L7taUuGKEpS9629zfSyA5lPGxgOShPYflyVE1LjpqmA7bNm8N/n+A==","repository":{"url":"git+https://github.com/flo-bit/contrail.git","type":"git"},"_npmVersion":"11.5.1","description":"Index AT Protocol records with typed XRPC endpoints. Cloudflare Workers + D1, SvelteKit, Node.js.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"hono":"^4.12.8","@atcute/client":"^4.2.1","@atcute/atproto":"^3.1.10","@atcute/lexicons":"^1.2.7","@atcute/jetstream":"^1.0.2","@atcute/identity-resolver":"^1.2.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.21.0","tsup":"^8.5.0","vitest":"^4.1.0","wrangler":"^4.63.0","typescript":"^5.7.3","@types/node":"^25.5.0","@atcute/lex-cli":"^2.5.3","@changesets/cli":"^2.29.4","@atcute/lexicon-doc":"^2.1.2","@cloudflare/workers-types":"^4.20250124.0"},"_npmOperationalInternal":{"tmp":"tmp/contrail_0.0.5_1775085906459_0.7599812473760226","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"@atmo-dev/contrail","version":"0.0.6","keywords":["atproto","bluesky","cloudflare","d1","indexer","xrpc"],"license":"MIT","_id":"@atmo-dev/contrail@0.0.6","maintainers":[{"name":"flo-bit128","email":"flo.bit128@gmail.com"}],"homepage":"https://github.com/flo-bit/contrail#readme","bugs":{"url":"https://github.com/flo-bit/contrail/issues"},"dist":{"shasum":"0c8c69efc057c626da7a89c73eded22e1ab5046b","tarball":"https://registry.npmjs.org/@atmo-dev/contrail/-/contrail-0.0.6.tgz","fileCount":23,"integrity":"sha512-0cJ6Ftg2DJKp6MX1RCGHR7tHT8k7ZwWwJqjvdIfKN+ciVqsv5i0BvEBxs+MQ/0xF4wfddGYFxrAJRetLkzWU9w==","signatures":[{"sig":"MEQCIHtb7CI/RwZLF/wcibesH57IVcA3HQnk9hHxjyN/VY1UAiAYeEkmVFfBJ2jPzxztUL1VS0I3Cj/u0uOEonQG+GfKqg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atmo-dev%2fcontrail@0.0.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":388084},"type":"module","_from":"file:atmo-dev-contrail-0.0.6.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./sqlite":{"types":"./dist/adapters/sqlite.d.ts","import":"./dist/adapters/sqlite.js"},"./generate":{"types":"./dist/generate.d.ts","import":"./dist/generate.js"},"./postgres":{"types":"./dist/adapters/postgres.d.ts","import":"./dist/adapters/postgres.js"}},"scripts":{"dev":"wrangler dev --test-scheduled","sync":"tsx app/sync.ts","test":"vitest run","build":"tsup","clean":"tsx scripts/clean.ts","deploy":"wrangler deploy","ingest":"curl -s http://localhost:8787/__scheduled?cron=*/1+*+*+*+*","release":"changeset publish","dev:auto":"tsx scripts/dev.ts","generate":"tsx app/generate.ts","typecheck":"tsc --noEmit","test:watch":"vitest","generate:pull":"tsx app/generate.ts && lex-cli pull && tsx app/generate.ts && lex-cli pull && lex-cli generate"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:202f4496-6f2a-49a3-bc12-ded8e4f784a6"}},"_resolved":"/tmp/211ab0be4bc59f83888aaaf4b12c2561/atmo-dev-contrail-0.0.6.tgz","_integrity":"sha512-0cJ6Ftg2DJKp6MX1RCGHR7tHT8k7ZwWwJqjvdIfKN+ciVqsv5i0BvEBxs+MQ/0xF4wfddGYFxrAJRetLkzWU9w==","repository":{"url":"git+https://github.com/flo-bit/contrail.git","type":"git"},"_npmVersion":"11.5.1","description":"Index AT Protocol records with typed XRPC endpoints. Cloudflare Workers + D1, SvelteKit, Node.js.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"hono":"^4.12.8","@atcute/client":"^4.2.1","@atcute/atproto":"^3.1.10","@atcute/lexicons":"^1.2.7","@atcute/jetstream":"^1.0.2","@atcute/identity-resolver":"^1.2.2"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.20.0","tsx":"^4.21.0","tsup":"^8.5.0","vitest":"^4.1.0","wrangler":"^4.63.0","@types/pg":"^8.20.0","typescript":"^5.7.3","@types/node":"^25.5.0","@atcute/lex-cli":"^2.5.3","@changesets/cli":"^2.29.4","@atcute/lexicon-doc":"^2.1.2","@cloudflare/workers-types":"^4.20250124.0"},"peerDependencies":{"pg":"^8.0.0"},"peerDependenciesMeta":{"pg":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/contrail_0.0.6_1775087551849_0.814221391701204","host":"s3://npm-registry-packages-npm-production"}},"0.0.7":{"name":"@atmo-dev/contrail","version":"0.0.7","keywords":["atproto","bluesky","cloudflare","d1","indexer","xrpc"],"license":"MIT","_id":"@atmo-dev/contrail@0.0.7","maintainers":[{"name":"flo-bit128","email":"flo.bit128@gmail.com"}],"homepage":"https://github.com/flo-bit/contrail#readme","bugs":{"url":"https://github.com/flo-bit/contrail/issues"},"dist":{"shasum":"54b128df6af20eb16a119ca43b37dc4a3cbdfd51","tarball":"https://registry.npmjs.org/@atmo-dev/contrail/-/contrail-0.0.7.tgz","fileCount":23,"integrity":"sha512-mhPL5YqOVxQY93Mdsb+LHadhrkn3bQMktFz9Fzq7Uat5pPmOO771ZhMOIXiGgzIg24drmyLKKBYZa+kMOkC06Q==","signatures":[{"sig":"MEQCICAk7qF94lrn7zKEhYBwBi+Sc9bZxhUvPic/9JV5eTtJAiBBI6F2x2FOCQU37mt2A2J3iMWOCEOsLxIPA7vwS+x7bQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atmo-dev%2fcontrail@0.0.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":393382},"type":"module","_from":"file:atmo-dev-contrail-0.0.7.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./sqlite":{"types":"./dist/adapters/sqlite.d.ts","import":"./dist/adapters/sqlite.js"},"./generate":{"types":"./dist/generate.d.ts","import":"./dist/generate.js"},"./postgres":{"types":"./dist/adapters/postgres.d.ts","import":"./dist/adapters/postgres.js"}},"scripts":{"dev":"wrangler dev --test-scheduled","sync":"tsx app/sync.ts","test":"vitest run","build":"tsup","clean":"tsx scripts/clean.ts","deploy":"wrangler deploy","ingest":"curl -s http://localhost:8787/__scheduled?cron=*/1+*+*+*+*","release":"changeset publish","dev:auto":"tsx scripts/dev.ts","generate":"tsx app/generate.ts","typecheck":"tsc --noEmit","test:watch":"vitest","generate:pull":"tsx app/generate.ts && lex-cli pull && tsx app/generate.ts && lex-cli pull && lex-cli generate"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:202f4496-6f2a-49a3-bc12-ded8e4f784a6"}},"_resolved":"/tmp/6c1f27dd0206d2d7598b2ab70104ec7e/atmo-dev-contrail-0.0.7.tgz","_integrity":"sha512-mhPL5YqOVxQY93Mdsb+LHadhrkn3bQMktFz9Fzq7Uat5pPmOO771ZhMOIXiGgzIg24drmyLKKBYZa+kMOkC06Q==","repository":{"url":"git+https://github.com/flo-bit/contrail.git","type":"git"},"_npmVersion":"11.5.1","description":"Index AT Protocol records with typed XRPC endpoints. Cloudflare Workers + D1, SvelteKit, Node.js.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"hono":"^4.12.8","@atcute/client":"^4.2.1","@atcute/atproto":"^3.1.10","@atcute/lexicons":"^1.2.7","@atcute/jetstream":"^1.0.2","@atcute/identity-resolver":"^1.2.2"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.20.0","tsx":"^4.21.0","tsup":"^8.5.0","vitest":"^4.1.0","wrangler":"^4.63.0","@types/pg":"^8.20.0","typescript":"^5.7.3","@types/node":"^25.5.0","@atcute/lex-cli":"^2.5.3","@changesets/cli":"^2.29.4","@atcute/lexicon-doc":"^2.1.2","@cloudflare/workers-types":"^4.20250124.0"},"peerDependencies":{"pg":"^8.0.0"},"peerDependenciesMeta":{"pg":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/contrail_0.0.7_1775090271899_0.3196499746022503","host":"s3://npm-registry-packages-npm-production"}},"0.0.8":{"name":"@atmo-dev/contrail","version":"0.0.8","keywords":["atproto","bluesky","cloudflare","d1","indexer","xrpc"],"license":"MIT","_id":"@atmo-dev/contrail@0.0.8","maintainers":[{"name":"flo-bit128","email":"flo.bit128@gmail.com"}],"homepage":"https://github.com/flo-bit/contrail#readme","bugs":{"url":"https://github.com/flo-bit/contrail/issues"},"dist":{"shasum":"40aa300954946283e87f56acd9574e568e2510ee","tarball":"https://registry.npmjs.org/@atmo-dev/contrail/-/contrail-0.0.8.tgz","fileCount":23,"integrity":"sha512-sXtdd3Z8VNVoSinrX3ww978ctxtHBl0bX5tP51XOY0IWKJ4xl9zqkPOIIBMzbVE3IyU2Vq2B9Whi3VAhyd2Qdg==","signatures":[{"sig":"MEUCIBjOARyykxEYwju53bHuI9X1Fra71h5NYxXBEgp/DF1oAiEA6/sczKX0QT3nU4Gjnqo1wvzqEUrVBi0ex1pFasSBRCc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atmo-dev%2fcontrail@0.0.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":396596},"type":"module","_from":"file:atmo-dev-contrail-0.0.8.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./sqlite":{"types":"./dist/adapters/sqlite.d.ts","import":"./dist/adapters/sqlite.js"},"./generate":{"types":"./dist/generate.d.ts","import":"./dist/generate.js"},"./postgres":{"types":"./dist/adapters/postgres.d.ts","import":"./dist/adapters/postgres.js"}},"scripts":{"dev":"wrangler dev --test-scheduled","sync":"tsx app/sync.ts","test":"vitest run","build":"tsup","clean":"tsx scripts/clean.ts","deploy":"wrangler deploy","ingest":"curl -s http://localhost:8787/__scheduled?cron=*/1+*+*+*+*","release":"changeset publish","dev:auto":"tsx scripts/dev.ts","generate":"tsx app/generate.ts","typecheck":"tsc --noEmit","test:watch":"vitest","generate:pull":"tsx app/generate.ts && lex-cli pull && tsx app/generate.ts && lex-cli pull && lex-cli generate"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:202f4496-6f2a-49a3-bc12-ded8e4f784a6"}},"_resolved":"/tmp/7565f5e3d9a85afbec341b62afadd1da/atmo-dev-contrail-0.0.8.tgz","_integrity":"sha512-sXtdd3Z8VNVoSinrX3ww978ctxtHBl0bX5tP51XOY0IWKJ4xl9zqkPOIIBMzbVE3IyU2Vq2B9Whi3VAhyd2Qdg==","repository":{"url":"git+https://github.com/flo-bit/contrail.git","type":"git"},"_npmVersion":"11.5.1","description":"Index AT Protocol records with typed XRPC endpoints. Cloudflare Workers + D1, SvelteKit, Node.js.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"hono":"^4.12.8","@atcute/client":"^4.2.1","@atcute/atproto":"^3.1.10","@atcute/lexicons":"^1.2.7","@atcute/jetstream":"^1.0.2","@atcute/identity-resolver":"^1.2.2"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.20.0","tsx":"^4.21.0","tsup":"^8.5.0","vitest":"^4.1.0","wrangler":"^4.63.0","@types/pg":"^8.20.0","typescript":"^5.7.3","@types/node":"^25.5.0","@atcute/lex-cli":"^2.5.3","@changesets/cli":"^2.29.4","@atcute/lexicon-doc":"^2.1.2","@cloudflare/workers-types":"^4.20250124.0"},"peerDependencies":{"pg":"^8.0.0"},"peerDependenciesMeta":{"pg":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/contrail_0.0.8_1775696949616_0.6540276372681444","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@atmo-dev/contrail","version":"0.1.0","keywords":["atproto","bluesky","cloudflare","d1","indexer","xrpc"],"license":"MIT","_id":"@atmo-dev/contrail@0.1.0","maintainers":[{"name":"flo-bit128","email":"flo.bit128@gmail.com"}],"homepage":"https://github.com/flo-bit/contrail#readme","bugs":{"url":"https://github.com/flo-bit/contrail/issues"},"dist":{"shasum":"016c24e50e8d35e83db5ebcb68af09cf3eca8848","tarball":"https://registry.npmjs.org/@atmo-dev/contrail/-/contrail-0.1.0.tgz","fileCount":45,"integrity":"sha512-YTOZbdReiVYCE+F1b71PUgDJSRDZD38ZjZweNa14o38uQt17XBEherQ+2z8IYnfB+CGAFJ1ln6O0R7sAIo0vIA==","signatures":[{"sig":"MEYCIQDBBWTgKty2Xmprd70bWVYH9wKb4ikfVsDsr0N1olqtIQIhAIa1kpW2Sp7KcOoKcuQjlSeYcXLMob5joI+QLHq31iS5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atmo-dev%2fcontrail@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":653595},"type":"module","_from":"file:atmo-dev-contrail-0.1.0.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./sqlite":{"types":"./dist/adapters/sqlite.d.ts","import":"./dist/adapters/sqlite.js"},"./publish":{"types":"./dist/publish.d.ts","import":"./dist/publish.js"},"./generate":{"types":"./dist/generate.d.ts","import":"./dist/generate.js"},"./postgres":{"types":"./dist/adapters/postgres.d.ts","import":"./dist/adapters/postgres.js"},"./spaces-lexicon-templates/*.json":"./spaces-lexicon-templates/*.json"},"scripts":{"dev":"wrangler dev --test-scheduled","sync":"tsx app/sync.ts","test":"vitest run","build":"tsup","clean":"tsx scripts/clean.ts","deploy":"wrangler deploy","ingest":"curl -s http://localhost:8787/__scheduled?cron=*/1+*+*+*+*","release":"changeset publish","dev:auto":"tsx scripts/dev.ts","generate":"tsx app/generate.ts","typecheck":"tsc --noEmit","test:watch":"vitest","generate:pull":"tsx app/generate.ts && lex-cli pull && tsx app/generate.ts && lex-cli pull && lex-cli generate","publish-lexicons":"tsx scripts/publish-lexicons.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:202f4496-6f2a-49a3-bc12-ded8e4f784a6"}},"_resolved":"/tmp/13f86d0349bf79f2fcbfe26deaee10be/atmo-dev-contrail-0.1.0.tgz","_integrity":"sha512-YTOZbdReiVYCE+F1b71PUgDJSRDZD38ZjZweNa14o38uQt17XBEherQ+2z8IYnfB+CGAFJ1ln6O0R7sAIo0vIA==","repository":{"url":"git+https://github.com/flo-bit/contrail.git","type":"git"},"_npmVersion":"11.5.1","description":"Index AT Protocol records with typed XRPC endpoints. Cloudflare Workers + D1, SvelteKit, Node.js.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"hono":"^4.12.8","@atcute/client":"^4.2.1","@atcute/atproto":"^3.1.10","@atcute/identity":"^1.1.4","@atcute/lexicons":"^1.2.9","@atcute/jetstream":"^1.0.2","@atcute/xrpc-server":"^0.1.12","@atcute/identity-resolver":"^1.2.2"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.20.0","tsx":"^4.21.0","tsup":"^8.5.0","vitest":"^4.1.0","wrangler":"^4.63.0","@types/pg":"^8.20.0","typescript":"^5.7.3","@types/node":"^25.5.0","@atcute/lex-cli":"^2.5.3","@changesets/cli":"^2.29.4","@atcute/lexicon-doc":"^2.1.2","@cloudflare/workers-types":"^4.20250124.0"},"peerDependencies":{"pg":"^8.0.0"},"peerDependenciesMeta":{"pg":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/contrail_0.1.0_1776545108754_0.20434628466563742","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@atmo-dev/contrail","version":"0.1.1","keywords":["atproto","bluesky","cloudflare","d1","indexer","xrpc"],"license":"MIT","_id":"@atmo-dev/contrail@0.1.1","maintainers":[{"name":"flo-bit128","email":"flo.bit128@gmail.com"}],"homepage":"https://github.com/flo-bit/contrail#readme","bugs":{"url":"https://github.com/flo-bit/contrail/issues"},"dist":{"shasum":"44e8831aee7817f48acff63200080dc98a355c70","tarball":"https://registry.npmjs.org/@atmo-dev/contrail/-/contrail-0.1.1.tgz","fileCount":44,"integrity":"sha512-7BdLYjHHGC2EKlT/p3KszJAE6Pv1FPPuLVG+eYRpXSTF6iwrk/FVA0Dep7lTowbLlo5mQBpbEpo2CrQtUZAPfQ==","signatures":[{"sig":"MEUCIQCPHm2yjsHZ6PVy6D7WeiXoj9u0PPUgGyXKxfz1stMJ1AIgd9NrGITxzze2HWLPohe0U13jIOOIFkww7QJDOFWmyD0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atmo-dev%2fcontrail@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":647857},"type":"module","_from":"file:atmo-dev-contrail-0.1.1.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./sqlite":{"types":"./dist/adapters/sqlite.d.ts","import":"./dist/adapters/sqlite.js"},"./publish":{"types":"./dist/publish.d.ts","import":"./dist/publish.js"},"./generate":{"types":"./dist/generate.d.ts","import":"./dist/generate.js"},"./postgres":{"types":"./dist/adapters/postgres.d.ts","import":"./dist/adapters/postgres.js"},"./spaces-lexicon-templates/*.json":"./spaces-lexicon-templates/*.json"},"scripts":{"dev":"wrangler dev --test-scheduled","sync":"tsx app/sync.ts","test":"vitest run","build":"tsup","clean":"tsx scripts/clean.ts","deploy":"wrangler deploy","ingest":"curl -s http://localhost:8787/__scheduled?cron=*/1+*+*+*+*","release":"changeset publish","dev:auto":"tsx scripts/dev.ts","generate":"tsx app/generate.ts","typecheck":"tsc --noEmit","test:watch":"vitest","generate:pull":"tsx app/generate.ts && lex-cli pull && tsx app/generate.ts && lex-cli pull && lex-cli generate","publish-lexicons":"tsx scripts/publish-lexicons.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:202f4496-6f2a-49a3-bc12-ded8e4f784a6"}},"_resolved":"/tmp/bb0bb9cdfc751097b742c1e800ec6aed/atmo-dev-contrail-0.1.1.tgz","_integrity":"sha512-7BdLYjHHGC2EKlT/p3KszJAE6Pv1FPPuLVG+eYRpXSTF6iwrk/FVA0Dep7lTowbLlo5mQBpbEpo2CrQtUZAPfQ==","repository":{"url":"git+https://github.com/flo-bit/contrail.git","type":"git"},"_npmVersion":"11.5.1","description":"Index AT Protocol records with typed XRPC endpoints. Cloudflare Workers + D1, SvelteKit, Node.js.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"hono":"^4.12.8","@atcute/client":"^4.2.1","@atcute/atproto":"^3.1.10","@atcute/identity":"^1.1.4","@atcute/lexicons":"^1.2.9","@atcute/jetstream":"^1.0.2","@atcute/xrpc-server":"^0.1.12","@atcute/identity-resolver":"^1.2.2"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.20.0","tsx":"^4.21.0","tsup":"^8.5.0","vitest":"^4.1.0","wrangler":"^4.63.0","@types/pg":"^8.20.0","typescript":"^5.7.3","@types/node":"^25.5.0","@atcute/lex-cli":"^2.5.3","@changesets/cli":"^2.29.4","@atcute/lexicon-doc":"^2.1.2","@cloudflare/workers-types":"^4.20250124.0"},"peerDependencies":{"pg":"^8.0.0"},"peerDependenciesMeta":{"pg":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/contrail_0.1.1_1776620392887_0.8213436261615861","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@atmo-dev/contrail","version":"0.2.0","keywords":["atproto","bluesky","cloudflare","d1","indexer","xrpc"],"license":"MIT","_id":"@atmo-dev/contrail@0.2.0","maintainers":[{"name":"flo-bit128","email":"flo.bit128@gmail.com"}],"homepage":"https://github.com/flo-bit/contrail#readme","bugs":{"url":"https://github.com/flo-bit/contrail/issues"},"dist":{"shasum":"8924b93925e85b43c97c5b037df86cd9ec338a80","tarball":"https://registry.npmjs.org/@atmo-dev/contrail/-/contrail-0.2.0.tgz","fileCount":21,"integrity":"sha512-F2apx8RjgHEh0J9jbILMlxFT00tzNzApAyRSCWZ9LqfpmIFM47Sw0GA87Kq34aWKsWOvBVQAtYT9dTvjoe+N2Q==","signatures":[{"sig":"MEUCIQD1sqGpbCIfy8v0e+kW/NXqIlBvqc6q+0ZyxFquKlsCVgIgA440/4Uk0J723WkZJeSK+Z6BO+R/De1TAv5qqrOQeJw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atmo-dev%2fcontrail@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1006462},"type":"module","_from":"file:atmo-dev-contrail-0.2.0.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./sqlite":{"types":"./dist/adapters/sqlite.d.ts","import":"./dist/adapters/sqlite.js"},"./postgres":{"types":"./dist/adapters/postgres.d.ts","import":"./dist/adapters/postgres.js"}},"scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:202f4496-6f2a-49a3-bc12-ded8e4f784a6"}},"_resolved":"/tmp/b55f5da3cd8a34f9183de0ffa4514253/atmo-dev-contrail-0.2.0.tgz","_integrity":"sha512-F2apx8RjgHEh0J9jbILMlxFT00tzNzApAyRSCWZ9LqfpmIFM47Sw0GA87Kq34aWKsWOvBVQAtYT9dTvjoe+N2Q==","repository":{"url":"git+https://github.com/flo-bit/contrail.git","type":"git","directory":"packages/contrail"},"_npmVersion":"11.5.1","description":"Index AT Protocol records with typed XRPC endpoints. Cloudflare Workers + D1, SvelteKit, Node.js.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"hono":"^4.12.8","@atcute/cid":"^2.4.1","@atcute/client":"^4.2.1","@atcute/atproto":"^3.1.10","@atcute/identity":"^1.1.4","@atcute/lexicons":"^1.2.9","@atcute/jetstream":"^1.0.2","@atcute/xrpc-server":"^0.1.12","@atcute/identity-resolver":"^1.2.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.20.0","tsup":"^8.5.0","vitest":"^4.1.0","@types/pg":"^8.20.0","typescript":"^5.7.3","@types/node":"^25.5.0","@cloudflare/workers-types":"^4.20250124.0"},"peerDependencies":{"pg":"^8.0.0"},"peerDependenciesMeta":{"pg":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/contrail_0.2.0_1777027983379_0.9404912707334048","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@atmo-dev/contrail","version":"0.3.0","keywords":["atproto","bluesky","cloudflare","d1","indexer","xrpc"],"license":"MIT","_id":"@atmo-dev/contrail@0.3.0","maintainers":[{"name":"flo-bit128","email":"flo.bit128@gmail.com"}],"homepage":"https://github.com/flo-bit/contrail#readme","bugs":{"url":"https://github.com/flo-bit/contrail/issues"},"bin":{"contrail":"dist/cli.js"},"dist":{"shasum":"06dd14d2468a630cf5bba194e5ad246ab6d5856d","tarball":"https://registry.npmjs.org/@atmo-dev/contrail/-/contrail-0.3.0.tgz","fileCount":42,"integrity":"sha512-/tQ40JStrECG2jZkgZNlTnHxOABmpv1SE28voSiU1ruCuc06yXxTEEZYSoYEwdfMN3wTj01WVcTKkhyEKbt3KQ==","signatures":[{"sig":"MEQCIGNrkoiIooQy2c7ZIP1CyqgHKN5xQpDvEqAephsT2KiyAiBEkvM+IXv7mojwewPb2L1QeDwUMg+8IiqZtxwZtgsYtQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atmo-dev%2fcontrail@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1082160},"type":"module","_from":"file:atmo-dev-contrail-0.3.0.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./sqlite":{"types":"./dist/adapters/sqlite.d.ts","import":"./dist/adapters/sqlite.js"},"./worker":{"types":"./dist/worker/index.d.ts","import":"./dist/worker/index.js"},"./workers":{"types":"./dist/workers/backfill.d.ts","import":"./dist/workers/backfill.js"},"./postgres":{"types":"./dist/adapters/postgres.d.ts","import":"./dist/adapters/postgres.js"},"./cli-config":{"types":"./dist/cli-config.d.ts","import":"./dist/cli-config.js"}},"scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:202f4496-6f2a-49a3-bc12-ded8e4f784a6"}},"_resolved":"/tmp/3aa204c5f4f1515e06bb2336c323df56/atmo-dev-contrail-0.3.0.tgz","_integrity":"sha512-/tQ40JStrECG2jZkgZNlTnHxOABmpv1SE28voSiU1ruCuc06yXxTEEZYSoYEwdfMN3wTj01WVcTKkhyEKbt3KQ==","repository":{"url":"git+https://github.com/flo-bit/contrail.git","type":"git","directory":"packages/contrail"},"_npmVersion":"11.5.1","description":"Index AT Protocol records with typed XRPC endpoints. Cloudflare Workers + D1, SvelteKit, Node.js.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"hono":"^4.12.8","jiti":"^2.4.0","@atcute/cid":"^2.4.1","@atcute/client":"^4.2.1","@atcute/atproto":"^3.1.10","@atcute/identity":"^1.1.4","@atcute/lexicons":"^1.2.9","@atcute/jetstream":"^1.0.2","@atcute/xrpc-server":"^0.1.12","@atcute/identity-resolver":"^1.2.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.20.0","tsup":"^8.5.0","vitest":"^4.1.0","wrangler":"^4.63.0","@types/pg":"^8.20.0","typescript":"^5.7.3","@types/node":"^25.5.0","@cloudflare/workers-types":"^4.20250124.0"},"peerDependencies":{"pg":"^8.0.0","wrangler":"^4.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"wrangler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/contrail_0.3.0_1777115969396_0.048082448602164485","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@atmo-dev/contrail","version":"0.4.0","keywords":["atproto","bluesky","cloudflare","d1","indexer","xrpc"],"license":"MIT","_id":"@atmo-dev/contrail@0.4.0","maintainers":[{"name":"flo-bit128","email":"flo.bit128@gmail.com"}],"homepage":"https://github.com/flo-bit/contrail#readme","bugs":{"url":"https://github.com/flo-bit/contrail/issues"},"bin":{"contrail":"dist/cli.js"},"dist":{"shasum":"f82c9e2ed7b09f877a094860bfaa7f8afe43e031","tarball":"https://registry.npmjs.org/@atmo-dev/contrail/-/contrail-0.4.0.tgz","fileCount":42,"integrity":"sha512-NHAt+Pej9m1KVZgI8J5BX9vZtltTJX430a5iUDJDvsEIHd6SGbkoUlqLclwuRM2JggxPi6CYgs0fXDnJp0bTQQ==","signatures":[{"sig":"MEQCIH9OwG2TTy1Uyb5xbHJRSW3k1Sdl+chptnSXN5fGob6UAiBYxTNxl/Km3+rJYJbulzerBpHgfcTmLaE4dAvOzdFzTg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atmo-dev%2fcontrail@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1160362},"type":"module","_from":"file:atmo-dev-contrail-0.4.0.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./sqlite":{"types":"./dist/adapters/sqlite.d.ts","import":"./dist/adapters/sqlite.js"},"./worker":{"types":"./dist/worker/index.d.ts","import":"./dist/worker/index.js"},"./workers":{"types":"./dist/workers/backfill.d.ts","import":"./dist/workers/backfill.js"},"./postgres":{"types":"./dist/adapters/postgres.d.ts","import":"./dist/adapters/postgres.js"},"./cli-config":{"types":"./dist/cli-config.d.ts","import":"./dist/cli-config.js"}},"scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:202f4496-6f2a-49a3-bc12-ded8e4f784a6"}},"_resolved":"/tmp/db524e2fcd07367ad5245d1090713ae1/atmo-dev-contrail-0.4.0.tgz","_integrity":"sha512-NHAt+Pej9m1KVZgI8J5BX9vZtltTJX430a5iUDJDvsEIHd6SGbkoUlqLclwuRM2JggxPi6CYgs0fXDnJp0bTQQ==","repository":{"url":"git+https://github.com/flo-bit/contrail.git","type":"git","directory":"packages/contrail"},"_npmVersion":"11.5.1","description":"Index AT Protocol records with typed XRPC endpoints. Cloudflare Workers + D1, SvelteKit, Node.js.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"hono":"^4.12.8","jiti":"^2.4.0","@atcute/cid":"^2.4.1","@atcute/cbor":"^2.3.2","@atcute/client":"^4.2.1","@atcute/atproto":"^3.1.10","@atcute/identity":"^1.1.4","@atcute/lexicons":"^1.2.9","@atcute/jetstream":"^1.0.2","@atcute/xrpc-server":"^0.1.12","@atcute/identity-resolver":"^1.2.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.20.0","tsup":"^8.5.0","vitest":"^4.1.0","wrangler":"^4.63.0","@types/pg":"^8.20.0","typescript":"^5.7.3","@types/node":"^25.5.0","@cloudflare/workers-types":"^4.20250124.0"},"peerDependencies":{"pg":"^8.0.0","wrangler":"^4.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"wrangler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/contrail_0.4.0_1777125125205_0.5709575405140281","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@atmo-dev/contrail","version":"0.4.1","keywords":["atproto","bluesky","cloudflare","d1","indexer","xrpc"],"license":"MIT","_id":"@atmo-dev/contrail@0.4.1","maintainers":[{"name":"flo-bit128","email":"flo.bit128@gmail.com"}],"homepage":"https://github.com/flo-bit/contrail#readme","bugs":{"url":"https://github.com/flo-bit/contrail/issues"},"bin":{"contrail":"dist/cli.js"},"dist":{"shasum":"ff4e76fdf9bac73ee4e0ecacf21d74bf2387bd2b","tarball":"https://registry.npmjs.org/@atmo-dev/contrail/-/contrail-0.4.1.tgz","fileCount":42,"integrity":"sha512-unipt2ZiLbX7WAXz/82s732VqVvJFb4xMxgyRxwCKO7wXcNyL+CxpA8YnG3DjKyE0t0pp13Sh31JTP2XBggkBQ==","signatures":[{"sig":"MEUCIHf0Kl2ty6sICrowwwYN/Fpf0YcCMIKDX6TsAGIaoP4DAiEAzwLfDJ8lhYD6jYOQ47n9oAFRr/mFft3dVwoPbmPSXag=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atmo-dev%2fcontrail@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1171013},"type":"module","_from":"file:atmo-dev-contrail-0.4.1.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./sqlite":{"types":"./dist/adapters/sqlite.d.ts","import":"./dist/adapters/sqlite.js"},"./worker":{"types":"./dist/worker/index.d.ts","import":"./dist/worker/index.js"},"./workers":{"types":"./dist/workers/backfill.d.ts","import":"./dist/workers/backfill.js"},"./postgres":{"types":"./dist/adapters/postgres.d.ts","import":"./dist/adapters/postgres.js"},"./cli-config":{"types":"./dist/cli-config.d.ts","import":"./dist/cli-config.js"}},"scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:202f4496-6f2a-49a3-bc12-ded8e4f784a6"}},"_resolved":"/tmp/936f7f985fe5c7022d69ea94377dc8cc/atmo-dev-contrail-0.4.1.tgz","_integrity":"sha512-unipt2ZiLbX7WAXz/82s732VqVvJFb4xMxgyRxwCKO7wXcNyL+CxpA8YnG3DjKyE0t0pp13Sh31JTP2XBggkBQ==","repository":{"url":"git+https://github.com/flo-bit/contrail.git","type":"git","directory":"packages/contrail"},"_npmVersion":"11.5.1","description":"Index AT Protocol records with typed XRPC endpoints. Cloudflare Workers + D1, SvelteKit, Node.js.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"cac":"^7.0.0","hono":"^4.12.8","jiti":"^2.4.0","@atcute/cid":"^2.4.1","@atcute/cbor":"^2.3.2","@atcute/client":"^4.2.1","@atcute/atproto":"^3.1.10","@atcute/identity":"^1.1.4","@atcute/lexicons":"^1.2.9","@atcute/jetstream":"^1.0.2","@atcute/xrpc-server":"^0.1.12","@atcute/identity-resolver":"^1.2.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.20.0","tsup":"^8.5.0","vitest":"^4.1.0","wrangler":"^4.63.0","@types/pg":"^8.20.0","typescript":"^5.7.3","@types/node":"^25.5.0","@cloudflare/workers-types":"^4.20250124.0"},"peerDependencies":{"pg":"^8.0.0","wrangler":"^4.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"wrangler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/contrail_0.4.1_1777322229461_0.7736443180362802","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@atmo-dev/contrail","version":"0.4.2","keywords":["atproto","bluesky","cloudflare","d1","indexer","xrpc"],"license":"MIT","_id":"@atmo-dev/contrail@0.4.2","maintainers":[{"name":"flo-bit128","email":"flo.bit128@gmail.com"}],"homepage":"https://github.com/flo-bit/contrail#readme","bugs":{"url":"https://github.com/flo-bit/contrail/issues"},"bin":{"contrail":"dist/cli.js"},"dist":{"shasum":"3cc67591df0954c75c289f0d4869c456ee146aae","tarball":"https://registry.npmjs.org/@atmo-dev/contrail/-/contrail-0.4.2.tgz","fileCount":42,"integrity":"sha512-ixPuxovCMnXQtjhxFhGzlDLxFt3r5FfozrQ0e9ABOjujqzP7nYpfCT1ltPJxSt2nHQJ43IUnVqqkPvV9GO0AaA==","signatures":[{"sig":"MEQCIBX6J2PBeNi3UbZlsHHL6eHwN8AVRykzBj3etB8k1y0fAiADoAALmhIe1cv9vlmnaI2Y4nhlHN04KTMiJE8nuecEYA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atmo-dev%2fcontrail@0.4.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1173102},"type":"module","_from":"file:atmo-dev-contrail-0.4.2.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./sqlite":{"types":"./dist/adapters/sqlite.d.ts","import":"./dist/adapters/sqlite.js"},"./worker":{"types":"./dist/worker/index.d.ts","import":"./dist/worker/index.js"},"./workers":{"types":"./dist/workers/backfill.d.ts","import":"./dist/workers/backfill.js"},"./postgres":{"types":"./dist/adapters/postgres.d.ts","import":"./dist/adapters/postgres.js"},"./cli-config":{"types":"./dist/cli-config.d.ts","import":"./dist/cli-config.js"}},"scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:202f4496-6f2a-49a3-bc12-ded8e4f784a6"}},"_resolved":"/tmp/6f04d82ed989c1a7eaca38bc7aa78b89/atmo-dev-contrail-0.4.2.tgz","_integrity":"sha512-ixPuxovCMnXQtjhxFhGzlDLxFt3r5FfozrQ0e9ABOjujqzP7nYpfCT1ltPJxSt2nHQJ43IUnVqqkPvV9GO0AaA==","repository":{"url":"git+https://github.com/flo-bit/contrail.git","type":"git","directory":"packages/contrail"},"_npmVersion":"11.5.1","description":"Index AT Protocol records with typed XRPC endpoints. Cloudflare Workers + D1, SvelteKit, Node.js.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"cac":"^7.0.0","hono":"^4.12.8","jiti":"^2.4.0","@atcute/cid":"^2.4.1","@atcute/cbor":"^2.3.2","@atcute/client":"^4.2.1","@atcute/atproto":"^3.1.10","@atcute/identity":"^1.1.4","@atcute/lexicons":"^1.2.9","@atcute/jetstream":"^1.0.2","@atcute/xrpc-server":"^0.1.12","@atcute/identity-resolver":"^1.2.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.20.0","tsup":"^8.5.0","vitest":"^4.1.0","wrangler":"^4.63.0","@types/pg":"^8.20.0","typescript":"^5.7.3","@types/node":"^25.5.0","@cloudflare/workers-types":"^4.20250124.0"},"peerDependencies":{"pg":"^8.0.0","wrangler":"^4.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"wrangler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/contrail_0.4.2_1777557007061_0.08229989765245782","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@atmo-dev/contrail","version":"0.5.0","keywords":["atproto","bluesky","cloudflare","d1","indexer","xrpc"],"license":"MIT","_id":"@atmo-dev/contrail@0.5.0","maintainers":[{"name":"flo-bit128","email":"flo.bit128@gmail.com"}],"homepage":"https://github.com/flo-bit/contrail#readme","bugs":{"url":"https://github.com/flo-bit/contrail/issues"},"bin":{"contrail":"dist/cli.js"},"dist":{"shasum":"9ebc8017b7018d30f33c19afd372fe12fad6bf95","tarball":"https://registry.npmjs.org/@atmo-dev/contrail/-/contrail-0.5.0.tgz","fileCount":42,"integrity":"sha512-PeeA3Q6NDwaho2dgaW4QANPRvhjKBml17MMxjcq6DwQG7p0MTUqoa2RM1G7DpA8CAIPrRXTVcosb6ybqshlWtQ==","signatures":[{"sig":"MEYCIQDfLNH8f0yfjsPDlAwlCJBtLb+3AT8cZzen1HDdhQNnQQIhAKsPsRWlD+gIUbBuJaeqp5Cj83CPenIuAvjhc3QPo/MN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atmo-dev%2fcontrail@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1220294},"type":"module","_from":"file:atmo-dev-contrail-0.5.0.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./sqlite":{"types":"./dist/adapters/sqlite.d.ts","import":"./dist/adapters/sqlite.js"},"./worker":{"types":"./dist/worker/index.d.ts","import":"./dist/worker/index.js"},"./workers":{"types":"./dist/workers/backfill.d.ts","import":"./dist/workers/backfill.js"},"./postgres":{"types":"./dist/adapters/postgres.d.ts","import":"./dist/adapters/postgres.js"},"./cli-config":{"types":"./dist/cli-config.d.ts","import":"./dist/cli-config.js"}},"scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:202f4496-6f2a-49a3-bc12-ded8e4f784a6"}},"_resolved":"/tmp/3d5fca352d234062d1b82b39fb7f2685/atmo-dev-contrail-0.5.0.tgz","_integrity":"sha512-PeeA3Q6NDwaho2dgaW4QANPRvhjKBml17MMxjcq6DwQG7p0MTUqoa2RM1G7DpA8CAIPrRXTVcosb6ybqshlWtQ==","repository":{"url":"git+https://github.com/flo-bit/contrail.git","type":"git","directory":"packages/contrail"},"_npmVersion":"11.5.1","description":"Index AT Protocol records with typed XRPC endpoints. Cloudflare Workers + D1, SvelteKit, Node.js.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"cac":"^7.0.0","hono":"^4.12.8","jiti":"^2.4.0","@atcute/cid":"^2.4.1","@atcute/cbor":"^2.3.2","@atcute/client":"^4.2.1","@atcute/atproto":"^3.1.10","@atcute/identity":"^1.1.4","@atcute/lexicons":"^1.2.9","@atcute/jetstream":"^1.0.2","@atcute/xrpc-server":"^0.1.12","@atcute/identity-resolver":"^1.2.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.20.0","tsup":"^8.5.0","vitest":"^4.1.0","wrangler":"^4.63.0","@types/pg":"^8.20.0","typescript":"^5.7.3","@types/node":"^25.5.0","@cloudflare/workers-types":"^4.20250124.0"},"peerDependencies":{"pg":"^8.0.0","wrangler":"^4.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"wrangler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/contrail_0.5.0_1777837041300_0.8765152160879812","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@atmo-dev/contrail","version":"0.6.0","keywords":["atproto","bluesky","cloudflare","d1","indexer","xrpc"],"license":"MIT","_id":"@atmo-dev/contrail@0.6.0","maintainers":[{"name":"flo-bit128","email":"flo.bit128@gmail.com"}],"homepage":"https://github.com/flo-bit/contrail#readme","bugs":{"url":"https://github.com/flo-bit/contrail/issues"},"bin":{"contrail":"dist/cli.js"},"dist":{"shasum":"28945776702ce443cda82c2aaace5cf3ff291aae","tarball":"https://registry.npmjs.org/@atmo-dev/contrail/-/contrail-0.6.0.tgz","fileCount":42,"integrity":"sha512-R5xlhQFT+nUkxCNKS41TwnVID2GZl2heh6Zz3Mw7+Zn0zrDLKkcbc4znNLw7q0VZk04Wx9xNxZQGlmfwUooJ1Q==","signatures":[{"sig":"MEYCIQCOOD+zruikSmTzJh+xdDoyQ38cbo1qGtUmqsdekm6WhQIhANRlkd/WxljHsnuzAr9bv0C/TTXXzn5qB5N1ESKk7nRA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atmo-dev%2fcontrail@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1226857},"type":"module","_from":"file:atmo-dev-contrail-0.6.0.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./sqlite":{"types":"./dist/adapters/sqlite.d.ts","import":"./dist/adapters/sqlite.js"},"./worker":{"types":"./dist/worker/index.d.ts","import":"./dist/worker/index.js"},"./workers":{"types":"./dist/workers/backfill.d.ts","import":"./dist/workers/backfill.js"},"./postgres":{"types":"./dist/adapters/postgres.d.ts","import":"./dist/adapters/postgres.js"},"./cli-config":{"types":"./dist/cli-config.d.ts","import":"./dist/cli-config.js"}},"scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:202f4496-6f2a-49a3-bc12-ded8e4f784a6"}},"_resolved":"/tmp/50d7378c35caee1ac6c2f0998314116d/atmo-dev-contrail-0.6.0.tgz","_integrity":"sha512-R5xlhQFT+nUkxCNKS41TwnVID2GZl2heh6Zz3Mw7+Zn0zrDLKkcbc4znNLw7q0VZk04Wx9xNxZQGlmfwUooJ1Q==","repository":{"url":"git+https://github.com/flo-bit/contrail.git","type":"git","directory":"packages/contrail"},"_npmVersion":"11.5.1","description":"Index AT Protocol records with typed XRPC endpoints. Cloudflare Workers + D1, SvelteKit, Node.js.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"cac":"^7.0.0","hono":"^4.12.8","jiti":"^2.4.0","@atcute/cid":"^2.4.1","@atcute/cbor":"^2.3.2","@atcute/client":"^4.2.1","@atcute/atproto":"^3.1.10","@atcute/identity":"^1.1.4","@atcute/lexicons":"^1.2.9","@atcute/jetstream":"^1.0.2","@atcute/xrpc-server":"^0.1.12","@atcute/identity-resolver":"^1.2.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.20.0","tsup":"^8.5.0","vitest":"^4.1.0","wrangler":"^4.63.0","@types/pg":"^8.20.0","typescript":"^5.7.3","@types/node":"^25.5.0","@cloudflare/workers-types":"^4.20250124.0"},"peerDependencies":{"pg":"^8.0.0","wrangler":"^4.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"wrangler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/contrail_0.6.0_1778009889976_0.5720656945017117","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@atmo-dev/contrail","version":"0.7.0","keywords":["atproto","bluesky","cloudflare","d1","indexer","xrpc"],"license":"MIT","_id":"@atmo-dev/contrail@0.7.0","maintainers":[{"name":"flo-bit128","email":"flo.bit128@gmail.com"}],"homepage":"https://github.com/flo-bit/contrail#readme","bugs":{"url":"https://github.com/flo-bit/contrail/issues"},"bin":{"contrail":"dist/cli.js"},"dist":{"shasum":"b1d3c12f5cc98281b095708bd47f1c56a9ae58ef","tarball":"https://registry.npmjs.org/@atmo-dev/contrail/-/contrail-0.7.0.tgz","fileCount":37,"integrity":"sha512-/U7T2rnrrxpx3dTxXlTslElIup/u69H82fAYl7sqw/jODYTSluU/JTcvv3gg3xOEEM3XLmp8B4o32lMXbfc94w==","signatures":[{"sig":"MEUCIQCyQAHeebUZKV1DCCXwHrEGU5DZMl22nV0edaaHjX7FUAIgDRtRsDahxILaoQFWtOVgMHp2Cy0BYyHMJwTmEiGsKqI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":137997},"type":"module","_from":"file:atmo-dev-contrail-0.7.0.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./sqlite":{"types":"./dist/adapters/sqlite.d.ts","import":"./dist/adapters/sqlite.js"},"./worker":{"types":"./dist/worker/index.d.ts","import":"./dist/worker/index.js"},"./workers":{"types":"./dist/workers/backfill.d.ts","import":"./dist/workers/backfill.js"},"./postgres":{"types":"./dist/adapters/postgres.d.ts","import":"./dist/adapters/postgres.js"},"./cli-config":{"types":"./dist/cli-config.d.ts","import":"./dist/cli-config.js"}},"scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"flo-bit128","email":"flo.bit128@gmail.com"},"_resolved":"/private/var/folders/g1/r7fl0mt11k74dtms01xbys680000gn/T/e0dd83bef39dfe101ff5e5fb03f9b324/atmo-dev-contrail-0.7.0.tgz","_integrity":"sha512-/U7T2rnrrxpx3dTxXlTslElIup/u69H82fAYl7sqw/jODYTSluU/JTcvv3gg3xOEEM3XLmp8B4o32lMXbfc94w==","repository":{"url":"git+https://github.com/flo-bit/contrail.git","type":"git","directory":"packages/contrail"},"_npmVersion":"10.9.2","description":"Index AT Protocol records with typed XRPC endpoints. Cloudflare Workers + D1, SvelteKit, Node.js.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"cac":"^7.0.0","hono":"^4.12.8","jiti":"^2.4.0","@atcute/cid":"^2.4.1","@atcute/cbor":"^2.3.2","@atcute/client":"^4.2.1","@atcute/atproto":"^3.1.10","@atcute/identity":"^1.1.4","@atcute/lexicons":"^1.2.9","@atcute/jetstream":"^1.0.2","@atcute/xrpc-server":"^0.1.12","@atmo-dev/contrail-base":"0.7.0","@atcute/identity-resolver":"^1.2.2","@atmo-dev/contrail-appview":"0.7.0","@atmo-dev/contrail-authority":"0.7.0","@atmo-dev/contrail-record-host":"0.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.20.0","tsup":"^8.5.0","vitest":"^4.1.0","wrangler":"^4.63.0","@types/pg":"^8.20.0","typescript":"^5.7.3","@types/node":"^25.5.0","@cloudflare/workers-types":"^4.20250124.0"},"peerDependencies":{"pg":"^8.0.0","wrangler":"^4.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"wrangler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/contrail_0.7.0_1780575882336_0.8683640590402908","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@atmo-dev/contrail","version":"0.8.0","keywords":["atproto","bluesky","cloudflare","d1","indexer","xrpc"],"license":"MIT","_id":"@atmo-dev/contrail@0.8.0","maintainers":[{"name":"flo-bit128","email":"flo.bit128@gmail.com"}],"homepage":"https://github.com/flo-bit/contrail#readme","bugs":{"url":"https://github.com/flo-bit/contrail/issues"},"bin":{"contrail":"dist/cli.js"},"dist":{"shasum":"fcddb1f5ef1e7f8f135452c29b5518235476618b","tarball":"https://registry.npmjs.org/@atmo-dev/contrail/-/contrail-0.8.0.tgz","fileCount":37,"integrity":"sha512-Mm1z4orWtPxkKDWtcgxBE6Shqk2Ks8HklAw/gMmibHLJzgN05C5vGQ6g8oJ6W3DInQ9JvxYbpTzZukus6yUopg==","signatures":[{"sig":"MEYCIQDAVL/j9ZbIAKpAw9vjVp+QYlPxdgFh8MaAJvpVaf4MdwIhALBmobIJqPmzKacPTdzNs8+zg84DlSEwjAv7tjsT52FW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atmo-dev%2fcontrail@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":140843},"type":"module","_from":"file:atmo-dev-contrail-0.8.0.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./sqlite":{"types":"./dist/adapters/sqlite.d.ts","import":"./dist/adapters/sqlite.js"},"./worker":{"types":"./dist/worker/index.d.ts","import":"./dist/worker/index.js"},"./workers":{"types":"./dist/workers/backfill.d.ts","import":"./dist/workers/backfill.js"},"./postgres":{"types":"./dist/adapters/postgres.d.ts","import":"./dist/adapters/postgres.js"},"./cli-config":{"types":"./dist/cli-config.d.ts","import":"./dist/cli-config.js"}},"scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:202f4496-6f2a-49a3-bc12-ded8e4f784a6"}},"_resolved":"/tmp/31c185b43fdc7e8db631f9cb0690a295/atmo-dev-contrail-0.8.0.tgz","_integrity":"sha512-Mm1z4orWtPxkKDWtcgxBE6Shqk2Ks8HklAw/gMmibHLJzgN05C5vGQ6g8oJ6W3DInQ9JvxYbpTzZukus6yUopg==","repository":{"url":"git+https://github.com/flo-bit/contrail.git","type":"git","directory":"packages/contrail"},"_npmVersion":"11.5.1","description":"Index AT Protocol records with typed XRPC endpoints. Cloudflare Workers + D1, SvelteKit, Node.js.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"cac":"^7.0.0","hono":"^4.12.8","jiti":"^2.4.0","@atcute/cid":"^2.4.1","@atcute/cbor":"^2.3.2","@atcute/client":"^4.2.1","@atcute/atproto":"^3.1.10","@atcute/identity":"^1.1.4","@atcute/lexicons":"^1.2.9","@atcute/jetstream":"^1.0.2","@atcute/xrpc-server":"^0.1.12","@atmo-dev/contrail-base":"0.8.0","@atcute/identity-resolver":"^1.2.2","@atmo-dev/contrail-appview":"0.8.0","@atmo-dev/contrail-authority":"0.8.0","@atmo-dev/contrail-record-host":"0.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.20.0","tsup":"^8.5.0","vitest":"^4.1.0","wrangler":"^4.63.0","@types/pg":"^8.20.0","typescript":"^5.7.3","@types/node":"^25.5.0","@cloudflare/workers-types":"^4.20250124.0"},"peerDependencies":{"pg":"^8.0.0","wrangler":"^4.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"wrangler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/contrail_0.8.0_1780684543621_0.8911914291578089","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@atmo-dev/contrail","version":"0.9.0","keywords":["atproto","bluesky","cloudflare","d1","indexer","xrpc"],"license":"MIT","_id":"@atmo-dev/contrail@0.9.0","maintainers":[{"name":"flo-bit128","email":"flo.bit128@gmail.com"}],"homepage":"https://github.com/flo-bit/contrail#readme","bugs":{"url":"https://github.com/flo-bit/contrail/issues"},"bin":{"contrail":"dist/cli.js"},"dist":{"shasum":"9016010385b25e5227a5114c2f2fa675f77915b4","tarball":"https://registry.npmjs.org/@atmo-dev/contrail/-/contrail-0.9.0.tgz","fileCount":37,"integrity":"sha512-6L6+cNWyCel79Hjwk/G3P/vq9m2ENjMCf0J6RGf2nk+rJl3uZ/Ai7JvzU/HDNAMRf36fPjNME05zqL6AzVelhg==","signatures":[{"sig":"MEUCIEKTfEwGgzwf9ngtcqqTmcqeVadJ6zDm15ss/9oIzyV0AiEAvr81BcUQjrcK2OlXP82e3FrAg/vAcy/7/yoI5W6ewkY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atmo-dev%2fcontrail@0.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":140843},"type":"module","_from":"file:atmo-dev-contrail-0.9.0.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./sqlite":{"types":"./dist/adapters/sqlite.d.ts","import":"./dist/adapters/sqlite.js"},"./worker":{"types":"./dist/worker/index.d.ts","import":"./dist/worker/index.js"},"./workers":{"types":"./dist/workers/backfill.d.ts","import":"./dist/workers/backfill.js"},"./postgres":{"types":"./dist/adapters/postgres.d.ts","import":"./dist/adapters/postgres.js"},"./cli-config":{"types":"./dist/cli-config.d.ts","import":"./dist/cli-config.js"}},"scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:202f4496-6f2a-49a3-bc12-ded8e4f784a6"}},"_resolved":"/tmp/635d4bfd2ef707bd4d8328541d0003f0/atmo-dev-contrail-0.9.0.tgz","_integrity":"sha512-6L6+cNWyCel79Hjwk/G3P/vq9m2ENjMCf0J6RGf2nk+rJl3uZ/Ai7JvzU/HDNAMRf36fPjNME05zqL6AzVelhg==","repository":{"url":"git+https://github.com/flo-bit/contrail.git","type":"git","directory":"packages/contrail"},"_npmVersion":"11.5.1","description":"Index AT Protocol records with typed XRPC endpoints. Cloudflare Workers + D1, SvelteKit, Node.js.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"cac":"^7.0.0","hono":"^4.12.8","jiti":"^2.4.0","@atcute/cid":"^2.4.1","@atcute/cbor":"^2.3.2","@atcute/client":"^4.2.1","@atcute/atproto":"^3.1.10","@atcute/identity":"^1.1.4","@atcute/lexicons":"^1.2.9","@atcute/jetstream":"^1.0.2","@atcute/xrpc-server":"^0.1.12","@atmo-dev/contrail-base":"0.9.0","@atcute/identity-resolver":"^1.2.2","@atmo-dev/contrail-appview":"0.9.0","@atmo-dev/contrail-authority":"0.9.0","@atmo-dev/contrail-record-host":"0.9.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.20.0","tsup":"^8.5.0","vitest":"^4.1.0","wrangler":"^4.63.0","@types/pg":"^8.20.0","typescript":"^5.7.3","@types/node":"^25.5.0","@cloudflare/workers-types":"^4.20250124.0"},"peerDependencies":{"pg":"^8.0.0","wrangler":"^4.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"wrangler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/contrail_0.9.0_1780848203723_0.551624754771384","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"@atmo-dev/contrail","version":"0.9.1","keywords":["atproto","bluesky","cloudflare","d1","indexer","xrpc"],"license":"MIT","_id":"@atmo-dev/contrail@0.9.1","maintainers":[{"name":"flo-bit128","email":"flo.bit128@gmail.com"}],"homepage":"https://github.com/flo-bit/contrail#readme","bugs":{"url":"https://github.com/flo-bit/contrail/issues"},"bin":{"contrail":"dist/cli.js"},"dist":{"shasum":"087c95a0ed589d6a09bed0d47628103e5fe1bc44","tarball":"https://registry.npmjs.org/@atmo-dev/contrail/-/contrail-0.9.1.tgz","fileCount":37,"integrity":"sha512-1ZABz4NWybxuREAXUSOxF7m2XHIuER7svCdS/ycbCtEE6ClmF71jX1Ss5zraISaFL1vXpfDidRU3TaxagOk+OQ==","signatures":[{"sig":"MEQCIBLx2MWF7YVi6KISleARFUhQ106P7/Uy9ggZO5ZDuumPAiBrawNiNhzrlhH1vndt3ka38BGbmkwoLdtvhRzm0Qzy1Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atmo-dev%2fcontrail@0.9.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":140843},"type":"module","_from":"file:atmo-dev-contrail-0.9.1.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./sqlite":{"types":"./dist/adapters/sqlite.d.ts","import":"./dist/adapters/sqlite.js"},"./worker":{"types":"./dist/worker/index.d.ts","import":"./dist/worker/index.js"},"./workers":{"types":"./dist/workers/backfill.d.ts","import":"./dist/workers/backfill.js"},"./postgres":{"types":"./dist/adapters/postgres.d.ts","import":"./dist/adapters/postgres.js"},"./cli-config":{"types":"./dist/cli-config.d.ts","import":"./dist/cli-config.js"}},"scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:202f4496-6f2a-49a3-bc12-ded8e4f784a6"}},"_resolved":"/tmp/ebd796567da5a0f8d347b8da82e77e42/atmo-dev-contrail-0.9.1.tgz","_integrity":"sha512-1ZABz4NWybxuREAXUSOxF7m2XHIuER7svCdS/ycbCtEE6ClmF71jX1Ss5zraISaFL1vXpfDidRU3TaxagOk+OQ==","repository":{"url":"git+https://github.com/flo-bit/contrail.git","type":"git","directory":"packages/contrail"},"_npmVersion":"11.5.1","description":"Index AT Protocol records with typed XRPC endpoints. Cloudflare Workers + D1, SvelteKit, Node.js.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"cac":"^7.0.0","hono":"^4.12.8","jiti":"^2.4.0","@atcute/cid":"^2.4.1","@atcute/cbor":"^2.3.2","@atcute/client":"^4.2.1","@atcute/atproto":"^3.1.10","@atcute/identity":"^1.1.4","@atcute/lexicons":"^1.2.9","@atcute/jetstream":"^1.0.2","@atcute/xrpc-server":"^0.1.12","@atmo-dev/contrail-base":"0.9.1","@atcute/identity-resolver":"^1.2.2","@atmo-dev/contrail-appview":"0.9.1","@atmo-dev/contrail-authority":"0.9.1","@atmo-dev/contrail-record-host":"0.9.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.20.0","tsup":"^8.5.0","vitest":"^4.1.0","wrangler":"^4.63.0","@types/pg":"^8.20.0","typescript":"^5.7.3","@types/node":"^25.5.0","@cloudflare/workers-types":"^4.20250124.0"},"peerDependencies":{"pg":"^8.0.0","wrangler":"^4.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"wrangler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/contrail_0.9.1_1780859907862_0.6309338186651872","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"@atmo-dev/contrail","version":"0.10.0","keywords":["atproto","bluesky","cloudflare","d1","indexer","xrpc"],"license":"MIT","_id":"@atmo-dev/contrail@0.10.0","maintainers":[{"name":"flo-bit128","email":"flo.bit128@gmail.com"}],"homepage":"https://github.com/flo-bit/contrail#readme","bugs":{"url":"https://github.com/flo-bit/contrail/issues"},"bin":{"contrail":"dist/cli.js"},"dist":{"shasum":"5603d7f5dbbcd01e4e2f5c5e5805074b796cafe8","tarball":"https://registry.npmjs.org/@atmo-dev/contrail/-/contrail-0.10.0.tgz","fileCount":37,"integrity":"sha512-xc4DCcNkqvr+XB6cr4EyBIXi09e7jp+yqzGPlBiNqMLsngNIV2go5jS7aaktXBlCdKQes/aA32LFIIsBlPfGfg==","signatures":[{"sig":"MEUCIQCCqQmVtrCEKFbtxeKUd2Kw3i11hp6iPlgdIJjxIbzMEQIgH1yTKZDdUlQ8cbYK3Q0MZqRNpp2MN7stEsglPFKFlQg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atmo-dev%2fcontrail@0.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":142709},"type":"module","_from":"file:atmo-dev-contrail-0.10.0.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./sqlite":{"types":"./dist/adapters/sqlite.d.ts","import":"./dist/adapters/sqlite.js"},"./worker":{"types":"./dist/worker/index.d.ts","import":"./dist/worker/index.js"},"./workers":{"types":"./dist/workers/backfill.d.ts","import":"./dist/workers/backfill.js"},"./postgres":{"types":"./dist/adapters/postgres.d.ts","import":"./dist/adapters/postgres.js"},"./cli-config":{"types":"./dist/cli-config.d.ts","import":"./dist/cli-config.js"}},"scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:202f4496-6f2a-49a3-bc12-ded8e4f784a6"}},"_resolved":"/tmp/46efcb12367c2c203ac2be4909d435c9/atmo-dev-contrail-0.10.0.tgz","_integrity":"sha512-xc4DCcNkqvr+XB6cr4EyBIXi09e7jp+yqzGPlBiNqMLsngNIV2go5jS7aaktXBlCdKQes/aA32LFIIsBlPfGfg==","repository":{"url":"git+https://github.com/flo-bit/contrail.git","type":"git","directory":"packages/contrail"},"_npmVersion":"11.5.1","description":"Index AT Protocol records with typed XRPC endpoints. Cloudflare Workers + D1, SvelteKit, Node.js.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"cac":"^7.0.0","hono":"^4.12.8","jiti":"^2.4.0","@atcute/cid":"^2.4.1","@atcute/cbor":"^2.3.2","@atcute/client":"^4.2.1","@atcute/atproto":"^3.1.10","@atcute/identity":"^1.1.4","@atcute/lexicons":"^1.2.9","@atcute/jetstream":"^1.0.2","@atcute/xrpc-server":"^0.1.12","@atmo-dev/contrail-base":"0.10.0","@atcute/identity-resolver":"^1.2.2","@atmo-dev/contrail-appview":"0.10.0","@atmo-dev/contrail-authority":"0.10.0","@atmo-dev/contrail-record-host":"0.10.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.20.0","tsup":"^8.5.0","vitest":"^4.1.0","wrangler":"^4.63.0","@types/pg":"^8.20.0","typescript":"^5.7.3","@types/node":"^25.5.0","@cloudflare/workers-types":"^4.20250124.0"},"peerDependencies":{"pg":"^8.0.0","wrangler":"^4.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"wrangler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/contrail_0.10.0_1780860809629_0.11264072172577011","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"@atmo-dev/contrail","version":"0.11.0","keywords":["atproto","bluesky","cloudflare","d1","indexer","xrpc"],"license":"MIT","_id":"@atmo-dev/contrail@0.11.0","maintainers":[{"name":"flo-bit128","email":"flo.bit128@gmail.com"}],"homepage":"https://github.com/flo-bit/contrail#readme","bugs":{"url":"https://github.com/flo-bit/contrail/issues"},"bin":{"contrail":"dist/cli.js"},"dist":{"shasum":"3181f8c9794b608e49a946a421f81016df5200b6","tarball":"https://registry.npmjs.org/@atmo-dev/contrail/-/contrail-0.11.0.tgz","fileCount":37,"integrity":"sha512-oPN50OqG9KiEAZVSc9va2mGu5CzhTGX/QPHkCV1bfQ92Z+I9NkMRxvLzXEGjFYZLDtXgKDkpKW8a0U9QLCpioA==","signatures":[{"sig":"MEYCIQDhZlhxFA1P6BVNRwgnOeTzlMFys2+Yiof0Rvf7oXs9jAIhAM8weEY1AYuRmE4YIcoDT4pHZlZwxTppUvxhspdFJxDk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atmo-dev%2fcontrail@0.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":142709},"type":"module","_from":"file:atmo-dev-contrail-0.11.0.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./sqlite":{"types":"./dist/adapters/sqlite.d.ts","import":"./dist/adapters/sqlite.js"},"./worker":{"types":"./dist/worker/index.d.ts","import":"./dist/worker/index.js"},"./workers":{"types":"./dist/workers/backfill.d.ts","import":"./dist/workers/backfill.js"},"./postgres":{"types":"./dist/adapters/postgres.d.ts","import":"./dist/adapters/postgres.js"},"./cli-config":{"types":"./dist/cli-config.d.ts","import":"./dist/cli-config.js"}},"scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:202f4496-6f2a-49a3-bc12-ded8e4f784a6"}},"_resolved":"/tmp/1c165dfaa9fa5868db017e9ac687d0a1/atmo-dev-contrail-0.11.0.tgz","_integrity":"sha512-oPN50OqG9KiEAZVSc9va2mGu5CzhTGX/QPHkCV1bfQ92Z+I9NkMRxvLzXEGjFYZLDtXgKDkpKW8a0U9QLCpioA==","repository":{"url":"git+https://github.com/flo-bit/contrail.git","type":"git","directory":"packages/contrail"},"_npmVersion":"11.5.1","description":"Index AT Protocol records with typed XRPC endpoints. Cloudflare Workers + D1, SvelteKit, Node.js.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"cac":"^7.0.0","hono":"^4.12.8","jiti":"^2.4.0","@atcute/cid":"^2.4.1","@atcute/cbor":"^2.3.2","@atcute/client":"^4.2.1","@atcute/atproto":"^3.1.10","@atcute/identity":"^1.1.4","@atcute/lexicons":"^1.2.9","@atcute/jetstream":"^1.0.2","@atcute/xrpc-server":"^0.1.12","@atmo-dev/contrail-base":"0.11.0","@atcute/identity-resolver":"^1.2.2","@atmo-dev/contrail-appview":"0.11.0","@atmo-dev/contrail-authority":"0.11.0","@atmo-dev/contrail-record-host":"0.11.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.20.0","tsup":"^8.5.0","vitest":"^4.1.0","wrangler":"^4.63.0","@types/pg":"^8.20.0","typescript":"^5.7.3","@types/node":"^25.5.0","@cloudflare/workers-types":"^4.20250124.0"},"peerDependencies":{"pg":"^8.0.0","wrangler":"^4.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"wrangler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/contrail_0.11.0_1780862470406_0.6494240401895413","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"@atmo-dev/contrail","version":"0.12.0","keywords":["atproto","bluesky","cloudflare","d1","indexer","xrpc"],"license":"MIT","_id":"@atmo-dev/contrail@0.12.0","maintainers":[{"name":"flo-bit128","email":"flo.bit128@gmail.com"}],"homepage":"https://github.com/flo-bit/contrail#readme","bugs":{"url":"https://github.com/flo-bit/contrail/issues"},"bin":{"contrail":"dist/cli.js"},"dist":{"shasum":"755484dcd28447544814b7e443c36e2d17752c42","tarball":"https://registry.npmjs.org/@atmo-dev/contrail/-/contrail-0.12.0.tgz","fileCount":37,"integrity":"sha512-eXYBqrRiIYuY96X56BhoC6er0siZvwhxG5/1gLCqpBrklYaP7h202+Pyc/Tqnv4L4bzO8cUctV8PzO6OByyeTQ==","signatures":[{"sig":"MEUCIC/R0ROpuz2qhcKbUk1KFK4cWD6jRW2HRgujXLQv7Rv+AiEAmojYU59C/xHB3+7RqN1OAcFC+gB3T2DeJ9R++3Uhv2s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atmo-dev%2fcontrail@0.12.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":142709},"type":"module","_from":"file:atmo-dev-contrail-0.12.0.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./sqlite":{"types":"./dist/adapters/sqlite.d.ts","import":"./dist/adapters/sqlite.js"},"./worker":{"types":"./dist/worker/index.d.ts","import":"./dist/worker/index.js"},"./workers":{"types":"./dist/workers/backfill.d.ts","import":"./dist/workers/backfill.js"},"./postgres":{"types":"./dist/adapters/postgres.d.ts","import":"./dist/adapters/postgres.js"},"./cli-config":{"types":"./dist/cli-config.d.ts","import":"./dist/cli-config.js"}},"scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:202f4496-6f2a-49a3-bc12-ded8e4f784a6"}},"_resolved":"/tmp/e3c5e4264d072c310adb98a39254a45f/atmo-dev-contrail-0.12.0.tgz","_integrity":"sha512-eXYBqrRiIYuY96X56BhoC6er0siZvwhxG5/1gLCqpBrklYaP7h202+Pyc/Tqnv4L4bzO8cUctV8PzO6OByyeTQ==","repository":{"url":"git+https://github.com/flo-bit/contrail.git","type":"git","directory":"packages/contrail"},"_npmVersion":"11.5.1","description":"Index AT Protocol records with typed XRPC endpoints. Cloudflare Workers + D1, SvelteKit, Node.js.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"cac":"^7.0.0","hono":"^4.12.8","jiti":"^2.4.0","@atcute/cid":"^2.4.1","@atcute/cbor":"^2.3.2","@atcute/client":"^4.2.1","@atcute/atproto":"^3.1.10","@atcute/identity":"^1.1.4","@atcute/lexicons":"^1.2.9","@atcute/jetstream":"^1.0.2","@atcute/xrpc-server":"^0.1.12","@atmo-dev/contrail-base":"0.12.0","@atcute/identity-resolver":"^1.2.2","@atmo-dev/contrail-appview":"0.12.0","@atmo-dev/contrail-authority":"0.12.0","@atmo-dev/contrail-record-host":"0.12.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.20.0","tsup":"^8.5.0","vitest":"^4.1.0","wrangler":"^4.63.0","@types/pg":"^8.20.0","typescript":"^5.7.3","@types/node":"^25.5.0","@cloudflare/workers-types":"^4.20250124.0"},"peerDependencies":{"pg":"^8.0.0","wrangler":"^4.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"wrangler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/contrail_0.12.0_1781294412034_0.0017020856965634934","host":"s3://npm-registry-packages-npm-production"}},"0.12.1":{"name":"@atmo-dev/contrail","version":"0.12.1","keywords":["atproto","bluesky","cloudflare","d1","indexer","xrpc"],"license":"MIT","_id":"@atmo-dev/contrail@0.12.1","maintainers":[{"name":"flo-bit128","email":"flo.bit128@gmail.com"}],"homepage":"https://github.com/flo-bit/contrail#readme","bugs":{"url":"https://github.com/flo-bit/contrail/issues"},"bin":{"contrail":"dist/cli.js"},"dist":{"shasum":"24c031e2bf610a51fc8b445b38b99622a867904b","tarball":"https://registry.npmjs.org/@atmo-dev/contrail/-/contrail-0.12.1.tgz","fileCount":37,"integrity":"sha512-YwC1+ChwmWyWNE23EXRA/Sl5qX8Mj7TRox4CgiJT1ta9KGlPoHwMFgfXtc6psZaNix2dRu3PtW+D9ECPEW0SxA==","signatures":[{"sig":"MEQCIHIZyD+5s+Sp1gZzoqnZclpqHU1qbk8MKmszRoB95LOIAiA93oozm6OdC0Uelp51c4inF89olUuI5Qwut6GUSafoqw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atmo-dev%2fcontrail@0.12.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":142709},"type":"module","_from":"file:atmo-dev-contrail-0.12.1.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./sqlite":{"types":"./dist/adapters/sqlite.d.ts","import":"./dist/adapters/sqlite.js"},"./worker":{"types":"./dist/worker/index.d.ts","import":"./dist/worker/index.js"},"./workers":{"types":"./dist/workers/backfill.d.ts","import":"./dist/workers/backfill.js"},"./postgres":{"types":"./dist/adapters/postgres.d.ts","import":"./dist/adapters/postgres.js"},"./cli-config":{"types":"./dist/cli-config.d.ts","import":"./dist/cli-config.js"}},"scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:202f4496-6f2a-49a3-bc12-ded8e4f784a6"}},"_resolved":"/tmp/465258cfe4800eee1257cc7952ac4dd4/atmo-dev-contrail-0.12.1.tgz","_integrity":"sha512-YwC1+ChwmWyWNE23EXRA/Sl5qX8Mj7TRox4CgiJT1ta9KGlPoHwMFgfXtc6psZaNix2dRu3PtW+D9ECPEW0SxA==","repository":{"url":"git+https://github.com/flo-bit/contrail.git","type":"git","directory":"packages/contrail"},"_npmVersion":"11.5.1","description":"Index AT Protocol records with typed XRPC endpoints. Cloudflare Workers + D1, SvelteKit, Node.js.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"cac":"^7.0.0","hono":"^4.12.8","jiti":"^2.4.0","@atcute/cid":"^2.4.1","@atcute/cbor":"^2.3.2","@atcute/client":"^4.2.1","@atcute/atproto":"^3.1.10","@atcute/identity":"^1.1.4","@atcute/lexicons":"^1.2.9","@atcute/jetstream":"^1.0.2","@atcute/xrpc-server":"^0.1.12","@atmo-dev/contrail-base":"0.12.1","@atcute/identity-resolver":"^1.2.2","@atmo-dev/contrail-appview":"0.12.1","@atmo-dev/contrail-authority":"0.12.1","@atmo-dev/contrail-record-host":"0.12.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.20.0","tsup":"^8.5.0","vitest":"^4.1.0","wrangler":"^4.63.0","@types/pg":"^8.20.0","typescript":"^5.7.3","@types/node":"^25.5.0","@cloudflare/workers-types":"^4.20250124.0"},"peerDependencies":{"pg":"^8.0.0","wrangler":"^4.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"wrangler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/contrail_0.12.1_1781565261999_0.9363514596274294","host":"s3://npm-registry-packages-npm-production"}},"0.12.2":{"name":"@atmo-dev/contrail","version":"0.12.2","keywords":["atproto","bluesky","cloudflare","d1","indexer","xrpc"],"license":"MIT","_id":"@atmo-dev/contrail@0.12.2","maintainers":[{"name":"flo-bit128","email":"flo.bit128@gmail.com"}],"homepage":"https://github.com/flo-bit/contrail#readme","bugs":{"url":"https://github.com/flo-bit/contrail/issues"},"bin":{"contrail":"dist/cli.js"},"dist":{"shasum":"ba0a0c0f36a27ecb12d4d9f2a0a7029c5632b8dd","tarball":"https://registry.npmjs.org/@atmo-dev/contrail/-/contrail-0.12.2.tgz","fileCount":37,"integrity":"sha512-VrJpZeV+Tv5c25Dksn0X550oBTMh4sxcWUPLSRcd7FjhCGcyV2tA7z5HTQyPGeFMKGNReMs2Bnjp80sy2s9plA==","signatures":[{"sig":"MEUCIFhXBC7D8ZjMwynyaY0ZNi+Yx7M0e4P5nCvDZlkNYWwmAiEAnk+f6PM55+NkH7m4L3zh3tOuT3/VXU6ji5JYpYJ2FOE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atmo-dev%2fcontrail@0.12.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":142709},"type":"module","_from":"file:atmo-dev-contrail-0.12.2.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./sqlite":{"types":"./dist/adapters/sqlite.d.ts","import":"./dist/adapters/sqlite.js"},"./worker":{"types":"./dist/worker/index.d.ts","import":"./dist/worker/index.js"},"./workers":{"types":"./dist/workers/backfill.d.ts","import":"./dist/workers/backfill.js"},"./postgres":{"types":"./dist/adapters/postgres.d.ts","import":"./dist/adapters/postgres.js"},"./cli-config":{"types":"./dist/cli-config.d.ts","import":"./dist/cli-config.js"}},"scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:202f4496-6f2a-49a3-bc12-ded8e4f784a6"}},"_resolved":"/tmp/bddd65b01012a896c36f2f28831b51ad/atmo-dev-contrail-0.12.2.tgz","_integrity":"sha512-VrJpZeV+Tv5c25Dksn0X550oBTMh4sxcWUPLSRcd7FjhCGcyV2tA7z5HTQyPGeFMKGNReMs2Bnjp80sy2s9plA==","repository":{"url":"git+https://github.com/flo-bit/contrail.git","type":"git","directory":"packages/contrail"},"_npmVersion":"11.5.1","description":"Index AT Protocol records with typed XRPC endpoints. Cloudflare Workers + D1, SvelteKit, Node.js.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"cac":"^7.0.0","hono":"^4.12.8","jiti":"^2.4.0","@atcute/cid":"^2.4.1","@atcute/cbor":"^2.3.2","@atcute/client":"^4.2.1","@atcute/atproto":"^3.1.10","@atcute/identity":"^1.1.4","@atcute/lexicons":"^1.2.9","@atcute/jetstream":"^1.0.2","@atcute/xrpc-server":"^0.1.12","@atmo-dev/contrail-base":"0.12.2","@atcute/identity-resolver":"^1.2.2","@atmo-dev/contrail-appview":"0.12.2","@atmo-dev/contrail-authority":"0.12.2","@atmo-dev/contrail-record-host":"0.12.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.20.0","tsup":"^8.5.0","vitest":"^4.1.0","wrangler":"^4.63.0","@types/pg":"^8.20.0","typescript":"^5.7.3","@types/node":"^25.5.0","@cloudflare/workers-types":"^4.20250124.0"},"peerDependencies":{"pg":"^8.0.0","wrangler":"^4.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"wrangler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/contrail_0.12.2_1781715284355_0.7951389204683921","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"@atmo-dev/contrail","version":"0.13.0","keywords":["atproto","bluesky","cloudflare","d1","indexer","xrpc"],"license":"MIT","_id":"@atmo-dev/contrail@0.13.0","maintainers":[{"name":"flo-bit128","email":"flo.bit128@gmail.com"}],"homepage":"https://github.com/flo-bit/contrail#readme","bugs":{"url":"https://github.com/flo-bit/contrail/issues"},"bin":{"contrail":"dist/cli.js"},"dist":{"shasum":"aa89117b816e3f9414e01989db2eed473f92f581","tarball":"https://registry.npmjs.org/@atmo-dev/contrail/-/contrail-0.13.0.tgz","fileCount":41,"integrity":"sha512-5g/JWxJIvn2NZlD6sn4WrgMS/5KgXLbs232/jr6p8TyKVBl5bdECI6NpfXzHlYQYjG/5tVdNR9hcnh/u7FnPwQ==","signatures":[{"sig":"MEUCIQDg2Tys06PKhdKf7eDB2mlFF71Z96ZVVgjPGvzkfu3vxQIgVgkSQuWHKFHPhtpruN0ezwinwpsPX/fNCz3TBNmlKWA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atmo-dev%2fcontrail@0.13.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":770369},"type":"module","_from":"file:atmo-dev-contrail-0.13.0.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./sqlite":{"types":"./dist/adapters/sqlite.d.ts","import":"./dist/adapters/sqlite.js"},"./worker":{"types":"./dist/worker/index.d.ts","import":"./dist/worker/index.js"},"./workers":{"types":"./dist/workers/backfill.d.ts","import":"./dist/workers/backfill.js"},"./postgres":{"types":"./dist/adapters/postgres.d.ts","import":"./dist/adapters/postgres.js"},"./cli-config":{"types":"./dist/cli-config.d.ts","import":"./dist/cli-config.js"}},"scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:built":"node tests/built-sqlite.mjs","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:202f4496-6f2a-49a3-bc12-ded8e4f784a6"}},"_resolved":"/tmp/d2fde3d9000a157ea752f5b9fb2417af/atmo-dev-contrail-0.13.0.tgz","_integrity":"sha512-5g/JWxJIvn2NZlD6sn4WrgMS/5KgXLbs232/jr6p8TyKVBl5bdECI6NpfXzHlYQYjG/5tVdNR9hcnh/u7FnPwQ==","repository":{"url":"git+https://github.com/flo-bit/contrail.git","type":"git","directory":"packages/contrail"},"_npmVersion":"11.5.1","description":"Index AT Protocol records with typed XRPC endpoints. Cloudflare Workers + D1, SvelteKit, Node.js.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"cac":"^7.0.0","hono":"^4.12.8","jiti":"^2.4.0","@atcute/cbor":"^2.3.2","@atcute/client":"^4.2.1","@atcute/atproto":"^3.1.10","@atcute/lexicons":"^1.2.9","@atcute/jetstream":"^1.0.2","@atcute/identity-resolver":"^1.2.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.20.0","tsup":"^8.5.0","vitest":"^4.1.0","wrangler":"^4.63.0","@types/pg":"^8.20.0","typescript":"^5.7.3","@types/node":"^25.5.0","@cloudflare/workers-types":"^4.20250124.0"},"peerDependencies":{"pg":"^8.0.0","wrangler":"^4.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"wrangler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/contrail_0.13.0_1785890824618_0.3358241021761641","host":"s3://npm-registry-packages-npm-production"}},"0.13.1":{"name":"@atmo-dev/contrail","version":"0.13.1","keywords":["atproto","bluesky","cloudflare","d1","indexer","xrpc"],"license":"MIT","_id":"@atmo-dev/contrail@0.13.1","maintainers":[{"name":"flo-bit128","email":"flo.bit128@gmail.com"}],"homepage":"https://github.com/flo-bit/contrail#readme","bugs":{"url":"https://github.com/flo-bit/contrail/issues"},"bin":{"contrail":"dist/cli.js"},"dist":{"shasum":"468b3415ec87326855223332f1382004be0e9e72","tarball":"https://registry.npmjs.org/@atmo-dev/contrail/-/contrail-0.13.1.tgz","fileCount":41,"integrity":"sha512-Nb42UM7hrbQOk7oIwY+IkqoSzSuPRdeM8SyZv9vyI4lJ7KT0g8Hum5WY8iubjB0wKEbjOc+Uy6iqJH0ogaUtPA==","signatures":[{"sig":"MEYCIQDE04hZF/LgaMai76ILMYIuu8JwkUD/wbu/Rr60BymJXAIhAOS7aSDHnicfRxeorlQnLiafPe16ULKO6kbGKhriLdf7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atmo-dev%2fcontrail@0.13.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":805631},"type":"module","_from":"file:atmo-dev-contrail-0.13.1.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./sqlite":{"types":"./dist/adapters/sqlite.d.ts","import":"./dist/adapters/sqlite.js"},"./worker":{"types":"./dist/worker/index.d.ts","import":"./dist/worker/index.js"},"./workers":{"types":"./dist/workers/backfill.d.ts","import":"./dist/workers/backfill.js"},"./postgres":{"types":"./dist/adapters/postgres.d.ts","import":"./dist/adapters/postgres.js"},"./cli-config":{"types":"./dist/cli-config.d.ts","import":"./dist/cli-config.js"}},"scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:built":"node tests/built-sqlite.mjs","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:202f4496-6f2a-49a3-bc12-ded8e4f784a6"}},"_resolved":"/tmp/636be82c53459373f3e061acef74b221/atmo-dev-contrail-0.13.1.tgz","_integrity":"sha512-Nb42UM7hrbQOk7oIwY+IkqoSzSuPRdeM8SyZv9vyI4lJ7KT0g8Hum5WY8iubjB0wKEbjOc+Uy6iqJH0ogaUtPA==","repository":{"url":"git+https://github.com/flo-bit/contrail.git","type":"git","directory":"packages/contrail"},"_npmVersion":"11.5.1","description":"Index AT Protocol records with typed XRPC endpoints. Cloudflare Workers + D1, SvelteKit, Node.js.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"cac":"^7.0.0","hono":"^4.13.0","jiti":"^2.7.0","@atcute/cbor":"^2.3.6","@atcute/client":"^5.1.1","@atcute/atproto":"^4.0.4","@atcute/lexicons":"^2.0.3","@atcute/jetstream":"^2.0.2","@atcute/identity-resolver":"^2.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.22.0","tsup":"^8.5.1","vitest":"^4.1.10","wrangler":"^4.118.0","@types/pg":"^8.20.4","typescript":"^6.0.3","@types/node":"^26.1.2","@cloudflare/workers-types":"^5.20260804.1"},"peerDependencies":{"pg":"^8.0.0","wrangler":"^4.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"wrangler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/contrail_0.13.1_1785937907969_0.7793098566234087","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"@atmo-dev/contrail","version":"0.14.0","keywords":["atproto","bluesky","cloudflare","d1","indexer","xrpc"],"license":"MIT","_id":"@atmo-dev/contrail@0.14.0","maintainers":[{"name":"flo-bit128","email":"flo.bit128@gmail.com"}],"homepage":"https://github.com/flo-bit/contrail#readme","bugs":{"url":"https://github.com/flo-bit/contrail/issues"},"bin":{"contrail":"dist/cli.js"},"dist":{"shasum":"70506872a1df8fafabb8fb67f7f5bbd85b149ae8","tarball":"https://registry.npmjs.org/@atmo-dev/contrail/-/contrail-0.14.0.tgz","fileCount":41,"integrity":"sha512-M9ksq/4LBzHmPk/i0cuPs/zlBUefYBFllg4wmhrai5FFx2oNr7o0ZeROHjXtle65EGjdsAVGudMAdCGNm2gpWA==","signatures":[{"sig":"MEUCIGdwobqtA4zo6XL/IKkFWu1H1weXa0m3uiVe0sCFsihPAiEApbuLaCKwgY+GYWqd8Dg4RFXCTjYyeVMsjD37ixs9Tgo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atmo-dev%2fcontrail@0.14.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":848340},"type":"module","_from":"file:atmo-dev-contrail-0.14.0.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./sqlite":{"types":"./dist/adapters/sqlite.d.ts","import":"./dist/adapters/sqlite.js"},"./worker":{"types":"./dist/worker/index.d.ts","import":"./dist/worker/index.js"},"./workers":{"types":"./dist/workers/backfill.d.ts","import":"./dist/workers/backfill.js"},"./postgres":{"types":"./dist/adapters/postgres.d.ts","import":"./dist/adapters/postgres.js"},"./cli-config":{"types":"./dist/cli-config.d.ts","import":"./dist/cli-config.js"}},"scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:built":"node tests/built-sqlite.mjs","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:202f4496-6f2a-49a3-bc12-ded8e4f784a6"}},"_resolved":"/tmp/32b84578ef484f31a436651e2bab91b4/atmo-dev-contrail-0.14.0.tgz","_integrity":"sha512-M9ksq/4LBzHmPk/i0cuPs/zlBUefYBFllg4wmhrai5FFx2oNr7o0ZeROHjXtle65EGjdsAVGudMAdCGNm2gpWA==","repository":{"url":"git+https://github.com/flo-bit/contrail.git","type":"git","directory":"packages/contrail"},"_npmVersion":"11.5.1","description":"Index AT Protocol records with typed XRPC endpoints. Cloudflare Workers + D1, SvelteKit, Node.js.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"cac":"^7.0.0","hono":"^4.13.0","jiti":"^2.7.0","valibot":"1.4.2","@atcute/cid":"2.4.2","@atcute/tid":"1.1.4","@atcute/cbor":"^2.3.6","@atcute/client":"^5.1.1","@atcute/atproto":"^4.0.4","@atcute/lexicons":"^2.0.3","@atcute/jetstream":"^2.0.2","@atcute/lexicon-doc":"3.0.2","@atcute/identity-resolver":"^2.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.22.0","tsup":"^8.5.1","vitest":"^4.1.10","wrangler":"^4.118.0","@types/pg":"^8.20.4","typescript":"^6.0.3","@types/node":"^26.1.2","@cloudflare/workers-types":"^5.20260804.1"},"peerDependencies":{"pg":"^8.0.0","wrangler":"^4.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"wrangler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/contrail_0.14.0_1785940124637_0.29134387131043504","host":"s3://npm-registry-packages-npm-production"}},"0.14.1":{"name":"@atmo-dev/contrail","version":"0.14.1","keywords":["atproto","bluesky","cloudflare","d1","indexer","xrpc"],"license":"MIT","_id":"@atmo-dev/contrail@0.14.1","maintainers":[{"name":"flo-bit128","email":"flo.bit128@gmail.com"}],"homepage":"https://github.com/flo-bit/contrail#readme","bugs":{"url":"https://github.com/flo-bit/contrail/issues"},"bin":{"contrail":"dist/cli.js"},"dist":{"shasum":"0bbe68469acc01954b781a52d05bbc7c4d899a29","tarball":"https://registry.npmjs.org/@atmo-dev/contrail/-/contrail-0.14.1.tgz","fileCount":41,"integrity":"sha512-J67ciVLWMKusnXgm7rbUB0grN4yaUjurSsasqoil4Q8hNtaP9UmJcg/dBwJZB3ojb875zrrKecSdrobSf8dCgw==","signatures":[{"sig":"MEYCIQCxWhE7HA8HD7O9GMs+JgFelxekfoCJdgAw64gRL6KwsQIhAPuyfa1m16lyctgJJutt05itRUPca3fDrYgYuGGIja4/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atmo-dev%2fcontrail@0.14.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":842305},"type":"module","_from":"file:atmo-dev-contrail-0.14.1.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./sqlite":{"types":"./dist/adapters/sqlite.d.ts","import":"./dist/adapters/sqlite.js"},"./worker":{"types":"./dist/worker/index.d.ts","import":"./dist/worker/index.js"},"./workers":{"types":"./dist/workers/backfill.d.ts","import":"./dist/workers/backfill.js"},"./postgres":{"types":"./dist/adapters/postgres.d.ts","import":"./dist/adapters/postgres.js"},"./cli-config":{"types":"./dist/cli-config.d.ts","import":"./dist/cli-config.js"}},"scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:built":"node tests/built-sqlite.mjs","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:202f4496-6f2a-49a3-bc12-ded8e4f784a6"}},"_resolved":"/tmp/d0f09229f49ed79a2f3ea44180614466/atmo-dev-contrail-0.14.1.tgz","_integrity":"sha512-J67ciVLWMKusnXgm7rbUB0grN4yaUjurSsasqoil4Q8hNtaP9UmJcg/dBwJZB3ojb875zrrKecSdrobSf8dCgw==","repository":{"url":"git+https://github.com/flo-bit/contrail.git","type":"git","directory":"packages/contrail"},"_npmVersion":"11.5.1","description":"Index AT Protocol records with typed XRPC endpoints. Cloudflare Workers + D1, SvelteKit, Node.js.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"cac":"^7.0.0","hono":"^4.13.0","jiti":"^2.7.0","valibot":"1.4.2","@atcute/cid":"2.4.2","@atcute/tid":"1.1.4","@atcute/cbor":"^2.3.6","@atcute/client":"^5.1.1","@atcute/atproto":"^4.0.4","@atcute/lexicons":"^2.0.3","@atcute/jetstream":"^2.0.2","@atcute/lexicon-doc":"3.0.2","@atcute/identity-resolver":"^2.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.22.0","tsup":"^8.5.1","vitest":"^4.1.10","wrangler":"^4.118.0","@types/pg":"^8.20.4","typescript":"^6.0.3","@types/node":"^26.1.2","@cloudflare/workers-types":"^5.20260804.1"},"peerDependencies":{"pg":"^8.0.0","wrangler":"^4.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"wrangler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/contrail_0.14.1_1785981821595_0.10939059980449994","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"@atmo-dev/contrail","version":"0.15.0","keywords":["atproto","bluesky","cloudflare","d1","indexer","xrpc"],"license":"MIT","_id":"@atmo-dev/contrail@0.15.0","maintainers":[{"name":"flo-bit128","email":"flo.bit128@gmail.com"}],"homepage":"https://github.com/flo-bit/contrail#readme","bugs":{"url":"https://github.com/flo-bit/contrail/issues"},"bin":{"contrail":"dist/cli.js"},"dist":{"shasum":"c7ad2128cfd7397cbd113449adc93dbc6064e0ee","tarball":"https://registry.npmjs.org/@atmo-dev/contrail/-/contrail-0.15.0.tgz","fileCount":41,"integrity":"sha512-hIH+5Kt5ihHS1D02Vm5lmEhSs6LA7WnPB8dibqaPO02RwBJQ+ZHGUpQWKb1BvemZUOhKY09kx4FLZUoKJ7n1uA==","signatures":[{"sig":"MEUCIQCi/NHeDvx+t94DWW1d8SOVYdaWafCIg+EBSsU2x4UkkAIgHbO8wCoFoGSp+6YA4agR1ILH4kRft1IeYKt4UUUN+fM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atmo-dev%2fcontrail@0.15.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1036674},"type":"module","_from":"file:atmo-dev-contrail-0.15.0.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./sqlite":{"types":"./dist/adapters/sqlite.d.ts","import":"./dist/adapters/sqlite.js"},"./worker":{"types":"./dist/worker/index.d.ts","import":"./dist/worker/index.js"},"./workers":{"types":"./dist/workers/backfill.d.ts","import":"./dist/workers/backfill.js"},"./postgres":{"types":"./dist/adapters/postgres.d.ts","import":"./dist/adapters/postgres.js"},"./cli-config":{"types":"./dist/cli-config.d.ts","import":"./dist/cli-config.js"}},"scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:built":"node tests/built-sqlite.mjs","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:202f4496-6f2a-49a3-bc12-ded8e4f784a6"}},"_resolved":"/tmp/ca3ac87ae9677a210073d95b4ae5a0ed/atmo-dev-contrail-0.15.0.tgz","_integrity":"sha512-hIH+5Kt5ihHS1D02Vm5lmEhSs6LA7WnPB8dibqaPO02RwBJQ+ZHGUpQWKb1BvemZUOhKY09kx4FLZUoKJ7n1uA==","repository":{"url":"git+https://github.com/flo-bit/contrail.git","type":"git","directory":"packages/contrail"},"_npmVersion":"11.5.1","description":"Index AT Protocol records with typed XRPC endpoints. Cloudflare Workers + D1, SvelteKit, Node.js.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"cac":"^7.0.0","hono":"^4.13.0","jiti":"^2.7.0","valibot":"1.4.2","@atcute/cid":"2.4.2","@atcute/tid":"1.1.4","@atcute/cbor":"^2.3.6","@atcute/client":"^5.1.1","@atcute/atproto":"^4.0.4","@atcute/lexicons":"^2.0.3","@atcute/jetstream":"^2.0.2","@atcute/lexicon-doc":"3.0.2","@atcute/identity-resolver":"^2.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.22.0","tsup":"^8.5.1","vitest":"^4.1.10","wrangler":"^4.118.0","@types/pg":"^8.20.4","typescript":"^6.0.3","@types/node":"^26.1.2","@cloudflare/workers-types":"^5.20260804.1"},"peerDependencies":{"pg":"^8.0.0","wrangler":"^4.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"wrangler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/contrail_0.15.0_1786077203695_0.876863594374627","host":"s3://npm-registry-packages-npm-production"}},"0.16.0":{"name":"@atmo-dev/contrail","version":"0.16.0","keywords":["atproto","bluesky","cloudflare","d1","indexer","xrpc"],"license":"MIT","_id":"@atmo-dev/contrail@0.16.0","maintainers":[{"name":"flo-bit128","email":"flo.bit128@gmail.com"}],"homepage":"https://github.com/flo-bit/contrail#readme","bugs":{"url":"https://github.com/flo-bit/contrail/issues"},"bin":{"contrail":"dist/cli.js"},"dist":{"shasum":"375554c14b23ca06392b05c9e8def76b2a316007","tarball":"https://registry.npmjs.org/@atmo-dev/contrail/-/contrail-0.16.0.tgz","fileCount":54,"integrity":"sha512-cGPCgo+J1PvMvGXcA8F+J+P5Vkcq9Fwqrt+ww/aSXneDbIeepcwLiy55Yt4u3H2v93wUzHSnuMMFwOIJAGu0oA==","signatures":[{"sig":"MEYCIQCkYrrFyx0i+fVTXMPIljExrjserN1xSIIhhEJLIdksPAIhAI8h5ifopWjPJOsVD9GhWPIL0GV4oJo9KJZProt7Nx00","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atmo-dev%2fcontrail@0.16.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1308160},"type":"module","_from":"file:atmo-dev-contrail-0.16.0.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./client":{"types":"./dist/public-client.d.ts","import":"./dist/public-client.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./sqlite":{"types":"./dist/adapters/sqlite.d.ts","import":"./dist/adapters/sqlite.js"},"./worker":{"types":"./dist/worker/index.d.ts","import":"./dist/worker/index.js"},"./workers":{"types":"./dist/workers/backfill.d.ts","import":"./dist/workers/backfill.js"},"./lexicons":{"types":"./dist/lexicons/index.d.ts","import":"./dist/lexicons/index.js"},"./postgres":{"types":"./dist/adapters/postgres.d.ts","import":"./dist/adapters/postgres.js"},"./cli-config":{"types":"./dist/cli-config.d.ts","import":"./dist/cli-config.js"}},"scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:built":"node tests/built-sqlite.mjs && node tests/built-lexicons.mjs && node tests/built-client.mjs","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:202f4496-6f2a-49a3-bc12-ded8e4f784a6"}},"_resolved":"/tmp/26367ba5421e6222335799dfcaae63ef/atmo-dev-contrail-0.16.0.tgz","_integrity":"sha512-cGPCgo+J1PvMvGXcA8F+J+P5Vkcq9Fwqrt+ww/aSXneDbIeepcwLiy55Yt4u3H2v93wUzHSnuMMFwOIJAGu0oA==","repository":{"url":"git+https://github.com/flo-bit/contrail.git","type":"git","directory":"packages/contrail"},"_npmVersion":"11.5.1","description":"Index AT Protocol records with typed XRPC endpoints. Cloudflare Workers + D1, SvelteKit, Node.js.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"cac":"^7.0.0","hono":"^4.13.0","jiti":"^2.7.0","valibot":"1.4.2","@atcute/cid":"2.4.2","@atcute/tid":"1.1.4","@atcute/cbor":"^2.3.6","@atcute/client":"^5.1.1","@atcute/atproto":"^4.0.4","@atcute/lex-cli":"^3.2.1","@atcute/lexicons":"^2.0.3","@atcute/jetstream":"^2.0.2","@atcute/lexicon-doc":"3.0.2","@atcute/xrpc-server":"^2.0.2","@atcute/identity-resolver":"^2.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.22.0","tsup":"^8.5.1","vitest":"^4.1.10","wrangler":"^4.118.0","@types/pg":"^8.20.4","typescript":"^6.0.3","@types/node":"^26.1.2","@atcute/crypto":"2.4.4","@cloudflare/workers-types":"^5.20260804.1"},"peerDependencies":{"pg":"^8.0.0","wrangler":"^4.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"wrangler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/contrail_0.16.0_1786532300831_0.5905932628111648","host":"s3://npm-registry-packages-npm-production"}},"0.17.0":{"name":"@atmo-dev/contrail","version":"0.17.0","keywords":["atproto","bluesky","cloudflare","d1","indexer","xrpc"],"license":"MIT","_id":"@atmo-dev/contrail@0.17.0","maintainers":[{"name":"flo-bit128","email":"flo.bit128@gmail.com"}],"homepage":"https://github.com/flo-bit/contrail#readme","bugs":{"url":"https://github.com/flo-bit/contrail/issues"},"bin":{"contrail":"dist/cli.js"},"dist":{"shasum":"fb183278c95e116878a39b8c70622b62cd782e90","tarball":"https://registry.npmjs.org/@atmo-dev/contrail/-/contrail-0.17.0.tgz","fileCount":67,"integrity":"sha512-VtC+PExsGb7oUqcOje2gF54HbY4JHU6HU1xmewsl+5IslLam3hh80SleG/0kqQM+YApE8LQzNxypING8sqLmOA==","signatures":[{"sig":"MEYCIQCuWIFISZGqbJv3VifIGKn9onZockjontxCRWL7az6J7QIhAIxpsAwLgqCF70CkG6bIcHutKWutX92yJ6dHj/Lae9IQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atmo-dev%2fcontrail@0.17.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1518032},"type":"module","_from":"file:atmo-dev-contrail-0.17.0.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./client":{"types":"./dist/public-client.d.ts","import":"./dist/public-client.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./sqlite":{"types":"./dist/adapters/sqlite.d.ts","import":"./dist/adapters/sqlite.js"},"./worker":{"types":"./dist/worker/index.d.ts","import":"./dist/worker/index.js"},"./workers":{"types":"./dist/workers/backfill.d.ts","import":"./dist/workers/backfill.js"},"./alluvium":{"types":"./dist/adapters/alluvium.d.ts","import":"./dist/adapters/alluvium.js"},"./lexicons":{"types":"./dist/lexicons/index.d.ts","import":"./dist/lexicons/index.js"},"./postgres":{"types":"./dist/adapters/postgres.d.ts","import":"./dist/adapters/postgres.js"},"./cli-config":{"types":"./dist/cli-config.d.ts","import":"./dist/cli-config.js"}},"scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:built":"node tests/built-sqlite.mjs && node tests/built-alluvium.mjs && node tests/built-lexicons.mjs && node tests/built-client.mjs","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:202f4496-6f2a-49a3-bc12-ded8e4f784a6"}},"_resolved":"/tmp/ecee99c3899e4f0801b0bf0ae7125463/atmo-dev-contrail-0.17.0.tgz","_integrity":"sha512-VtC+PExsGb7oUqcOje2gF54HbY4JHU6HU1xmewsl+5IslLam3hh80SleG/0kqQM+YApE8LQzNxypING8sqLmOA==","repository":{"url":"git+https://github.com/flo-bit/contrail.git","type":"git","directory":"packages/contrail"},"_npmVersion":"11.5.1","description":"Index AT Protocol records with typed XRPC endpoints. Cloudflare Workers + D1, SvelteKit, Node.js.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"cac":"^7.0.0","hono":"^4.13.0","jiti":"^2.7.0","valibot":"1.4.2","@atcute/cid":"2.4.2","@atcute/tid":"1.1.4","@atcute/cbor":"^2.3.6","@atcute/client":"^5.1.1","@atcute/atproto":"^4.0.4","@atcute/lex-cli":"^3.2.1","@atcute/lexicons":"^2.0.3","@atcute/jetstream":"^2.0.2","@atcute/lexicon-doc":"3.0.2","@atcute/xrpc-server":"^2.0.2","@atcute/identity-resolver":"^2.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.22.0","tsup":"^8.5.1","vitest":"^4.1.10","wrangler":"^4.118.0","@types/pg":"^8.20.4","typescript":"^6.0.3","@types/node":"^26.1.2","@atcute/crypto":"2.4.4","@cloudflare/workers-types":"^5.20260804.1"},"peerDependencies":{"pg":"^8.0.0","wrangler":"^4.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"wrangler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/contrail_0.17.0_1786750796719_0.7167772977020799","host":"s3://npm-registry-packages-npm-production"}},"0.17.1":{"name":"@atmo-dev/contrail","version":"0.17.1","keywords":["atproto","bluesky","cloudflare","d1","indexer","xrpc"],"license":"MIT","_id":"@atmo-dev/contrail@0.17.1","maintainers":[{"name":"flo-bit128","email":"flo.bit128@gmail.com"}],"homepage":"https://github.com/flo-bit/contrail#readme","bugs":{"url":"https://github.com/flo-bit/contrail/issues"},"bin":{"contrail":"dist/cli.js"},"dist":{"shasum":"6862956b7684878a6c2d83b2f06bc486eff52d13","tarball":"https://registry.npmjs.org/@atmo-dev/contrail/-/contrail-0.17.1.tgz","fileCount":67,"integrity":"sha512-HRBHamk/x3xGYb6+d4yDg3aF75Crq+OFRwOqTDCvXXiMT9iOHDIb0Z/zXUbD5GxaVxuMGGZxljlH4+5QgQaEig==","signatures":[{"sig":"MEUCIQCfsR/EF3Vu6js2I1Ws8rHW03tnsyLs48bdFVEruHJ+JwIgY4bvhFPGuOEKIdm7fxYP0Nw85G4OFWOkBp77RNCn6+k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atmo-dev%2fcontrail@0.17.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1543369},"type":"module","_from":"file:atmo-dev-contrail-0.17.1.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./client":{"types":"./dist/public-client.d.ts","import":"./dist/public-client.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./sqlite":{"types":"./dist/adapters/sqlite.d.ts","import":"./dist/adapters/sqlite.js"},"./worker":{"types":"./dist/worker/index.d.ts","import":"./dist/worker/index.js"},"./workers":{"types":"./dist/workers/backfill.d.ts","import":"./dist/workers/backfill.js"},"./alluvium":{"types":"./dist/adapters/alluvium.d.ts","import":"./dist/adapters/alluvium.js"},"./lexicons":{"types":"./dist/lexicons/index.d.ts","import":"./dist/lexicons/index.js"},"./postgres":{"types":"./dist/adapters/postgres.d.ts","import":"./dist/adapters/postgres.js"},"./cli-config":{"types":"./dist/cli-config.d.ts","import":"./dist/cli-config.js"}},"scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:built":"node tests/built-sqlite.mjs && node tests/built-alluvium.mjs && node tests/built-lexicons.mjs && node tests/built-client.mjs","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:202f4496-6f2a-49a3-bc12-ded8e4f784a6"}},"_resolved":"/tmp/a5e999a2311c5a8eb3d5a0e58592dbff/atmo-dev-contrail-0.17.1.tgz","_integrity":"sha512-HRBHamk/x3xGYb6+d4yDg3aF75Crq+OFRwOqTDCvXXiMT9iOHDIb0Z/zXUbD5GxaVxuMGGZxljlH4+5QgQaEig==","repository":{"url":"git+https://github.com/flo-bit/contrail.git","type":"git","directory":"packages/contrail"},"_npmVersion":"11.5.1","description":"Index AT Protocol records with typed XRPC endpoints. Cloudflare Workers + D1, SvelteKit, Node.js.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"cac":"^7.0.0","hono":"^4.13.0","jiti":"^2.7.0","valibot":"1.4.2","@atcute/cid":"2.4.2","@atcute/tid":"1.1.4","@atcute/cbor":"^2.3.6","@atcute/client":"^5.1.1","@atcute/atproto":"^4.0.4","@atcute/lex-cli":"^3.2.1","@atcute/lexicons":"^2.0.3","@atcute/jetstream":"^2.0.2","@atcute/lexicon-doc":"3.0.2","@atcute/xrpc-server":"^2.0.2","@atcute/identity-resolver":"^2.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.22.0","tsup":"^8.5.1","vitest":"^4.1.10","wrangler":"^4.118.0","@types/pg":"^8.20.4","typescript":"^6.0.3","@types/node":"^26.1.2","@atcute/crypto":"2.4.4","@cloudflare/workers-types":"^5.20260804.1"},"peerDependencies":{"pg":"^8.0.0","wrangler":"^4.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"wrangler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/contrail_0.17.1_1787147703291_0.6450296174789611","host":"s3://npm-registry-packages-npm-production"}},"0.18.0":{"name":"@atmo-dev/contrail","version":"0.18.0","keywords":["atproto","bluesky","cloudflare","d1","indexer","xrpc"],"license":"MIT","_id":"@atmo-dev/contrail@0.18.0","maintainers":[{"name":"flo-bit128","email":"flo.bit128@gmail.com"}],"homepage":"https://github.com/flo-bit/contrail#readme","bugs":{"url":"https://github.com/flo-bit/contrail/issues"},"bin":{"contrail":"dist/cli.js"},"dist":{"shasum":"847766b821c0997758a7e907ac19bbef9fc9164a","tarball":"https://registry.npmjs.org/@atmo-dev/contrail/-/contrail-0.18.0.tgz","fileCount":67,"integrity":"sha512-TF95h+oJrxTS1IYT+FElXPrIAnvhRkAht/LTefJyuwBvlAje/0FxigWIi9hN2vudUhh3s9wNIm0DL8T/Qk01Fg==","signatures":[{"sig":"MEUCIH9ZVuJd3n0S+/DLufHY/o+un2pN6kXx3ukGuvJRNLO+AiEA7gPhhl4uXlbf2LTyzONS2cVRslYiI8kKcZx6ei5gDsI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atmo-dev%2fcontrail@0.18.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1557825},"type":"module","_from":"file:atmo-dev-contrail-0.18.0.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./client":{"types":"./dist/public-client.d.ts","import":"./dist/public-client.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./sqlite":{"types":"./dist/adapters/sqlite.d.ts","import":"./dist/adapters/sqlite.js"},"./worker":{"types":"./dist/worker/index.d.ts","import":"./dist/worker/index.js"},"./workers":{"types":"./dist/workers/backfill.d.ts","import":"./dist/workers/backfill.js"},"./alluvium":{"types":"./dist/adapters/alluvium.d.ts","import":"./dist/adapters/alluvium.js"},"./lexicons":{"types":"./dist/lexicons/index.d.ts","import":"./dist/lexicons/index.js"},"./postgres":{"types":"./dist/adapters/postgres.d.ts","import":"./dist/adapters/postgres.js"},"./cli-config":{"types":"./dist/cli-config.d.ts","import":"./dist/cli-config.js"}},"scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:built":"node tests/built-sqlite.mjs && node tests/built-alluvium.mjs && node tests/built-lexicons.mjs && node tests/built-client.mjs","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:202f4496-6f2a-49a3-bc12-ded8e4f784a6"}},"_resolved":"/tmp/b4632a4c61326dd084f60e2349d3e5fb/atmo-dev-contrail-0.18.0.tgz","_integrity":"sha512-TF95h+oJrxTS1IYT+FElXPrIAnvhRkAht/LTefJyuwBvlAje/0FxigWIi9hN2vudUhh3s9wNIm0DL8T/Qk01Fg==","repository":{"url":"git+https://github.com/flo-bit/contrail.git","type":"git","directory":"packages/contrail"},"_npmVersion":"11.5.1","description":"Index AT Protocol records with typed XRPC endpoints. Cloudflare Workers + D1, SvelteKit, Node.js.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"cac":"^7.0.0","hono":"^4.13.0","jiti":"^2.7.0","valibot":"1.4.2","@atcute/cid":"2.4.2","@atcute/tid":"1.1.4","@atcute/cbor":"^2.3.6","@atcute/client":"^5.1.1","@atcute/atproto":"^4.0.4","@atcute/lex-cli":"^3.2.1","@atcute/lexicons":"^2.0.3","@atcute/jetstream":"^2.0.2","@atcute/lexicon-doc":"3.0.2","@atcute/xrpc-server":"^2.0.2","@atcute/identity-resolver":"^2.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.22.0","tsup":"^8.5.1","vitest":"^4.1.10","wrangler":"^4.118.0","@types/pg":"^8.20.4","typescript":"^6.0.3","@types/node":"^26.1.2","@atcute/crypto":"2.4.4","@cloudflare/workers-types":"^5.20260804.1"},"peerDependencies":{"pg":"^8.0.0","wrangler":"^4.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"wrangler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/contrail_0.18.0_1787296196638_0.8562918558804258","host":"s3://npm-registry-packages-npm-production"}},"0.19.0":{"name":"@atmo-dev/contrail","version":"0.19.0","keywords":["atproto","bluesky","cloudflare","d1","indexer","xrpc"],"license":"MIT","_id":"@atmo-dev/contrail@0.19.0","maintainers":[{"name":"flo-bit128","email":"flo.bit128@gmail.com"}],"homepage":"https://github.com/flo-bit/contrail#readme","bugs":{"url":"https://github.com/flo-bit/contrail/issues"},"bin":{"contrail":"dist/cli.js"},"dist":{"shasum":"8e623a77f30b937dfa87f5c115c23c370a0ce643","tarball":"https://registry.npmjs.org/@atmo-dev/contrail/-/contrail-0.19.0.tgz","fileCount":68,"integrity":"sha512-4eP4uHcX2r5f0/fQY+NvsiIHBz4BGwOlAWJ0GxMFW3Sr0sSVZm1Y1hC80S+BK8XL/Iv4JIC9RwbeawwZ7wg8IA==","signatures":[{"sig":"MEYCIQDmxc7IroQakE9ZHqn+C1r5eAK0ET1c2NaYA8Gv0EYW3QIhANk4vAiERxBA/WT/LYZWDwWmso3nuVoDxhtKLQRJzZSn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atmo-dev%2fcontrail@0.19.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1589023},"type":"module","_from":"file:atmo-dev-contrail-0.19.0.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./client":{"types":"./dist/public-client.d.ts","import":"./dist/public-client.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./sqlite":{"types":"./dist/adapters/sqlite.d.ts","import":"./dist/adapters/sqlite.js"},"./worker":{"types":"./dist/worker/index.d.ts","import":"./dist/worker/index.js"},"./workers":{"types":"./dist/workers/backfill.d.ts","import":"./dist/workers/backfill.js"},"./alluvium":{"types":"./dist/adapters/alluvium.d.ts","import":"./dist/adapters/alluvium.js"},"./lexicons":{"types":"./dist/lexicons/index.d.ts","import":"./dist/lexicons/index.js"},"./postgres":{"types":"./dist/adapters/postgres.d.ts","import":"./dist/adapters/postgres.js"},"./cli-config":{"types":"./dist/cli-config.d.ts","import":"./dist/cli-config.js"}},"scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:built":"node tests/built-sqlite.mjs && node tests/built-alluvium.mjs && node tests/built-lexicons.mjs && node tests/built-client.mjs","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:202f4496-6f2a-49a3-bc12-ded8e4f784a6"}},"_resolved":"/tmp/2f765bbe0b501776b05410baa189d0ba/atmo-dev-contrail-0.19.0.tgz","_integrity":"sha512-4eP4uHcX2r5f0/fQY+NvsiIHBz4BGwOlAWJ0GxMFW3Sr0sSVZm1Y1hC80S+BK8XL/Iv4JIC9RwbeawwZ7wg8IA==","repository":{"url":"git+https://github.com/flo-bit/contrail.git","type":"git","directory":"packages/contrail"},"_npmVersion":"11.5.1","description":"Index AT Protocol records with typed XRPC endpoints. Cloudflare Workers + D1, SvelteKit, Node.js.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"cac":"^7.0.0","hono":"^4.13.0","jiti":"^2.7.0","valibot":"1.4.2","@atcute/cid":"2.4.2","@atcute/tid":"1.1.4","@atcute/cbor":"^2.3.6","@atcute/client":"^5.1.1","@atcute/atproto":"^4.0.4","@atcute/lex-cli":"^3.2.1","@atcute/identity":"^2.0.2","@atcute/lexicons":"^2.0.3","@atcute/jetstream":"^2.0.2","@atcute/lexicon-doc":"3.0.2","@atcute/oauth-types":"^1.0.1","@atcute/xrpc-server":"^2.0.2","@atcute/identity-resolver":"^2.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.22.0","tsup":"^8.5.1","vitest":"^4.1.10","wrangler":"^4.118.0","@types/pg":"^8.20.4","typescript":"^6.0.3","@types/node":"^26.1.2","@atcute/crypto":"2.4.4","@cloudflare/workers-types":"^5.20260804.1"},"peerDependencies":{"pg":"^8.0.0","wrangler":"^4.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"wrangler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/contrail_0.19.0_1787296495174_0.6282676495387807","host":"s3://npm-registry-packages-npm-production"}},"0.20.0":{"name":"@atmo-dev/contrail","version":"0.20.0","keywords":["atproto","bluesky","cloudflare","d1","indexer","xrpc"],"license":"MIT","_id":"@atmo-dev/contrail@0.20.0","maintainers":[{"name":"flo-bit128","email":"flo.bit128@gmail.com"}],"homepage":"https://github.com/flo-bit/contrail#readme","bugs":{"url":"https://github.com/flo-bit/contrail/issues"},"bin":{"contrail":"dist/cli.js"},"dist":{"shasum":"db68343fcccfe0aa55e2b43aa39c0f1c052cc0ad","tarball":"https://registry.npmjs.org/@atmo-dev/contrail/-/contrail-0.20.0.tgz","fileCount":68,"integrity":"sha512-ZE6Bmp44WIN0kvj4FyRVB1CspgiyMBpn2UMb2eZNjy4sNRkFkE6x3jeHbdaXQCpZBUIrmAdddI3usAWrtogdmw==","signatures":[{"sig":"MEUCIQCwez4uLwNwAdX+onYXCmSkrqFOiLhQBmA6I6rbwaRfzwIgYYqeKPe7awTOsditysvulyJwOVJwZtCnF9oeu7F1038=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atmo-dev%2fcontrail@0.20.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1906243},"type":"module","_from":"file:atmo-dev-contrail-0.20.0.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./client":{"types":"./dist/public-client.d.ts","import":"./dist/public-client.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./sqlite":{"types":"./dist/adapters/sqlite.d.ts","import":"./dist/adapters/sqlite.js"},"./worker":{"types":"./dist/worker/index.d.ts","import":"./dist/worker/index.js"},"./workers":{"types":"./dist/workers/backfill.d.ts","import":"./dist/workers/backfill.js"},"./alluvium":{"types":"./dist/adapters/alluvium.d.ts","import":"./dist/adapters/alluvium.js"},"./lexicons":{"types":"./dist/lexicons/index.d.ts","import":"./dist/lexicons/index.js"},"./postgres":{"types":"./dist/adapters/postgres.d.ts","import":"./dist/adapters/postgres.js"},"./cli-config":{"types":"./dist/cli-config.d.ts","import":"./dist/cli-config.js"}},"scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:built":"node tests/built-sqlite.mjs && node tests/built-alluvium.mjs && node tests/built-lexicons.mjs && node tests/built-client.mjs && node tests/built-changes.mjs","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:202f4496-6f2a-49a3-bc12-ded8e4f784a6"}},"_resolved":"/tmp/0573de409a73dcd2e6ffb435b7410784/atmo-dev-contrail-0.20.0.tgz","_integrity":"sha512-ZE6Bmp44WIN0kvj4FyRVB1CspgiyMBpn2UMb2eZNjy4sNRkFkE6x3jeHbdaXQCpZBUIrmAdddI3usAWrtogdmw==","repository":{"url":"git+https://github.com/flo-bit/contrail.git","type":"git","directory":"packages/contrail"},"_npmVersion":"11.5.1","description":"Index AT Protocol records with typed XRPC endpoints. Cloudflare Workers + D1, SvelteKit, Node.js.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"cac":"^7.0.0","hono":"^4.13.0","jiti":"^2.7.0","valibot":"1.4.2","@atcute/cid":"2.4.2","@atcute/tid":"1.1.4","@atcute/cbor":"^2.3.6","@atcute/client":"^5.1.1","@atcute/atproto":"^4.0.4","@atcute/lex-cli":"^3.2.1","@atcute/identity":"^2.0.2","@atcute/lexicons":"^2.0.3","@atcute/jetstream":"^2.0.2","@atcute/lexicon-doc":"3.0.2","@atcute/oauth-types":"^1.0.1","@atcute/xrpc-server":"^2.0.2","@atcute/identity-resolver":"^2.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.22.0","tsup":"^8.5.1","vitest":"^4.1.10","wrangler":"^4.118.0","@types/pg":"^8.20.4","typescript":"^6.0.3","@types/node":"^26.1.2","@atcute/crypto":"2.4.4","@cloudflare/workers-types":"^5.20260804.1"},"peerDependencies":{"pg":"^8.0.0","wrangler":"^4.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"wrangler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/contrail_0.20.0_1787915065551_0.6629094258420456","host":"s3://npm-registry-packages-npm-production"}},"0.20.1":{"name":"@atmo-dev/contrail","version":"0.20.1","keywords":["atproto","bluesky","cloudflare","d1","indexer","xrpc"],"license":"MIT","_id":"@atmo-dev/contrail@0.20.1","maintainers":[{"name":"flo-bit128","email":"flo.bit128@gmail.com"}],"homepage":"https://github.com/flo-bit/contrail#readme","bugs":{"url":"https://github.com/flo-bit/contrail/issues"},"bin":{"contrail":"dist/cli.js"},"dist":{"shasum":"4f2736ec9214862eb641dc55950c6b456b75407d","tarball":"https://registry.npmjs.org/@atmo-dev/contrail/-/contrail-0.20.1.tgz","fileCount":68,"integrity":"sha512-OgwtE4jBLHuD8iNATx+8+pAeUKtWhfVPCdnslI5BQZVhlwmhWPRZXV7y+AGgWcHTJhDrAMKz6EpzPZjVyonliQ==","signatures":[{"sig":"MEUCIQDWJmCU8vMzlSLr4BGJ2bNHScecZJuG5hEX2NOGcnzydwIgHEkDGZD63aZjUUvaCMKMVvNWJzsUe8xOwwHGcNBQ4/c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atmo-dev%2fcontrail@0.20.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1947756},"type":"module","_from":"file:atmo-dev-contrail-0.20.1.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./client":{"types":"./dist/public-client.d.ts","import":"./dist/public-client.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./sqlite":{"types":"./dist/adapters/sqlite.d.ts","import":"./dist/adapters/sqlite.js"},"./worker":{"types":"./dist/worker/index.d.ts","import":"./dist/worker/index.js"},"./workers":{"types":"./dist/workers/backfill.d.ts","import":"./dist/workers/backfill.js"},"./alluvium":{"types":"./dist/adapters/alluvium.d.ts","import":"./dist/adapters/alluvium.js"},"./lexicons":{"types":"./dist/lexicons/index.d.ts","import":"./dist/lexicons/index.js"},"./postgres":{"types":"./dist/adapters/postgres.d.ts","import":"./dist/adapters/postgres.js"},"./cli-config":{"types":"./dist/cli-config.d.ts","import":"./dist/cli-config.js"}},"scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:built":"node tests/built-sqlite.mjs && node tests/built-alluvium.mjs && node tests/built-lexicons.mjs && node tests/built-client.mjs && node tests/built-changes.mjs","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:202f4496-6f2a-49a3-bc12-ded8e4f784a6"}},"_resolved":"/tmp/eca67597c02da46c94e4f143ce9300f8/atmo-dev-contrail-0.20.1.tgz","_integrity":"sha512-OgwtE4jBLHuD8iNATx+8+pAeUKtWhfVPCdnslI5BQZVhlwmhWPRZXV7y+AGgWcHTJhDrAMKz6EpzPZjVyonliQ==","repository":{"url":"git+https://github.com/flo-bit/contrail.git","type":"git","directory":"packages/contrail"},"_npmVersion":"11.5.1","description":"Index AT Protocol records with typed XRPC endpoints. Cloudflare Workers + D1, SvelteKit, Node.js.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"cac":"^7.0.0","hono":"^4.13.0","jiti":"^2.7.0","valibot":"1.4.2","@atcute/cid":"2.4.2","@atcute/tid":"1.1.4","@atcute/cbor":"^2.3.6","@atcute/client":"^5.1.1","@atcute/atproto":"^4.0.4","@atcute/lex-cli":"^3.2.1","@atcute/identity":"^2.0.2","@atcute/lexicons":"^2.0.3","@atcute/jetstream":"^2.0.2","@atcute/lexicon-doc":"3.0.2","@atcute/oauth-types":"^1.0.1","@atcute/xrpc-server":"^2.0.2","@atcute/identity-resolver":"^2.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.22.0","tsup":"^8.5.1","vitest":"^4.1.10","wrangler":"^4.118.0","@types/pg":"^8.20.4","typescript":"^6.0.3","@types/node":"^26.1.2","@atcute/crypto":"2.4.4","@cloudflare/workers-types":"^5.20260804.1"},"peerDependencies":{"pg":"^8.0.0","wrangler":"^4.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"wrangler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/contrail_0.20.1_1787916679419_0.4124281988217766","host":"s3://npm-registry-packages-npm-production"}},"0.21.0":{"name":"@atmo-dev/contrail","version":"0.21.0","keywords":["atproto","bluesky","cloudflare","d1","indexer","xrpc"],"license":"MIT","_id":"@atmo-dev/contrail@0.21.0","maintainers":[{"name":"flo-bit128","email":"flo.bit128@gmail.com"}],"homepage":"https://github.com/flo-bit/contrail#readme","bugs":{"url":"https://github.com/flo-bit/contrail/issues"},"bin":{"contrail":"dist/cli.js"},"dist":{"shasum":"9e8797896f2af0784feff56d2f3cd288ecdfde95","tarball":"https://registry.npmjs.org/@atmo-dev/contrail/-/contrail-0.21.0.tgz","fileCount":68,"integrity":"sha512-HQOEE0LCDlBOVeQlSgo0qlZUqMi6+cqQipvBiUOBgIiDOb6756asdvlvUNx0m6NFZaP1vAip9MSUJ6dzcYRldw==","signatures":[{"sig":"MEMCH1lpXP1A7kV4a7yE9sdoZ32/o3UVd/jGxPgkJ0WPW50CIB+fMObh3Az6JmMv4Z/5+5jDq2hTicJEoCx9ayUUwRB6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atmo-dev%2fcontrail@0.21.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1951825},"type":"module","_from":"file:atmo-dev-contrail-0.21.0.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./client":{"types":"./dist/public-client.d.ts","import":"./dist/public-client.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./sqlite":{"types":"./dist/adapters/sqlite.d.ts","import":"./dist/adapters/sqlite.js"},"./worker":{"types":"./dist/worker/index.d.ts","import":"./dist/worker/index.js"},"./workers":{"types":"./dist/workers/backfill.d.ts","import":"./dist/workers/backfill.js"},"./alluvium":{"types":"./dist/adapters/alluvium.d.ts","import":"./dist/adapters/alluvium.js"},"./lexicons":{"types":"./dist/lexicons/index.d.ts","import":"./dist/lexicons/index.js"},"./postgres":{"types":"./dist/adapters/postgres.d.ts","import":"./dist/adapters/postgres.js"},"./cli-config":{"types":"./dist/cli-config.d.ts","import":"./dist/cli-config.js"}},"scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:built":"node tests/built-sqlite.mjs && node tests/built-alluvium.mjs && node tests/built-lexicons.mjs && node tests/built-client.mjs && node tests/built-changes.mjs","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:202f4496-6f2a-49a3-bc12-ded8e4f784a6"}},"_resolved":"/tmp/6d6423d7caece678b9b84bdee85643a4/atmo-dev-contrail-0.21.0.tgz","_integrity":"sha512-HQOEE0LCDlBOVeQlSgo0qlZUqMi6+cqQipvBiUOBgIiDOb6756asdvlvUNx0m6NFZaP1vAip9MSUJ6dzcYRldw==","repository":{"url":"git+https://github.com/flo-bit/contrail.git","type":"git","directory":"packages/contrail"},"_npmVersion":"11.5.1","description":"Index AT Protocol records with typed XRPC endpoints. Cloudflare Workers + D1, SvelteKit, Node.js.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"cac":"^7.0.0","hono":"^4.13.0","jiti":"^2.7.0","valibot":"1.4.2","@atcute/cid":"2.4.2","@atcute/tid":"1.1.4","@atcute/cbor":"^2.3.6","@atcute/client":"^5.1.1","@atcute/atproto":"^4.0.4","@atcute/lex-cli":"^3.2.1","@atcute/identity":"^2.0.2","@atcute/lexicons":"^2.0.3","@atcute/jetstream":"^2.0.2","@atcute/lexicon-doc":"3.0.2","@atcute/oauth-types":"^1.0.1","@atcute/xrpc-server":"^2.0.2","@atcute/identity-resolver":"^2.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.22.0","tsup":"^8.5.1","vitest":"^4.1.10","wrangler":"^4.118.0","@types/pg":"^8.20.4","typescript":"^6.0.3","@types/node":"^26.1.2","@atcute/crypto":"2.4.4","@cloudflare/workers-types":"^5.20260804.1"},"peerDependencies":{"pg":"^8.0.0","wrangler":"^4.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"wrangler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/contrail_0.21.0_1787917865111_0.9728145042979961","host":"s3://npm-registry-packages-npm-production"}},"0.21.1":{"name":"@atmo-dev/contrail","version":"0.21.1","keywords":["atproto","bluesky","cloudflare","d1","indexer","xrpc"],"license":"MIT","_id":"@atmo-dev/contrail@0.21.1","maintainers":[{"name":"flo-bit128","email":"flo.bit128@gmail.com"}],"homepage":"https://github.com/flo-bit/contrail#readme","bugs":{"url":"https://github.com/flo-bit/contrail/issues"},"bin":{"contrail":"dist/cli.js"},"dist":{"shasum":"650d52e77920a69b14f17da51aa24cee230e8295","tarball":"https://registry.npmjs.org/@atmo-dev/contrail/-/contrail-0.21.1.tgz","fileCount":68,"integrity":"sha512-NqNHBAFwvVgzaWlXOiDMDxJRSxrQdrjb3tIkzrT85BV7ryutOK08D8HT/gnh2pr4ZlkQCKwx2V3Efy05LBwn8A==","signatures":[{"sig":"MEUCIGRrF667eujOpWkSLWSSeWE7sjQSvvicUbHtvl9MyCaxAiEAw2Wd3qGSHYc6NNRUMLoqahiCwVR8+J4PdhSNStQncs4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atmo-dev%2fcontrail@0.21.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1951860},"type":"module","_from":"file:atmo-dev-contrail-0.21.1.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./client":{"types":"./dist/public-client.d.ts","import":"./dist/public-client.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./sqlite":{"types":"./dist/adapters/sqlite.d.ts","import":"./dist/adapters/sqlite.js"},"./worker":{"types":"./dist/worker/index.d.ts","import":"./dist/worker/index.js"},"./workers":{"types":"./dist/workers/backfill.d.ts","import":"./dist/workers/backfill.js"},"./alluvium":{"types":"./dist/adapters/alluvium.d.ts","import":"./dist/adapters/alluvium.js"},"./lexicons":{"types":"./dist/lexicons/index.d.ts","import":"./dist/lexicons/index.js"},"./postgres":{"types":"./dist/adapters/postgres.d.ts","import":"./dist/adapters/postgres.js"},"./cli-config":{"types":"./dist/cli-config.d.ts","import":"./dist/cli-config.js"}},"scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:built":"node tests/built-sqlite.mjs && node tests/built-alluvium.mjs && node tests/built-lexicons.mjs && node tests/built-client.mjs && node tests/built-changes.mjs","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:202f4496-6f2a-49a3-bc12-ded8e4f784a6"}},"_resolved":"/tmp/39fd6753272b3f0328e880460ee3888d/atmo-dev-contrail-0.21.1.tgz","_integrity":"sha512-NqNHBAFwvVgzaWlXOiDMDxJRSxrQdrjb3tIkzrT85BV7ryutOK08D8HT/gnh2pr4ZlkQCKwx2V3Efy05LBwn8A==","repository":{"url":"git+https://github.com/flo-bit/contrail.git","type":"git","directory":"packages/contrail"},"_npmVersion":"11.5.1","description":"Index AT Protocol records with typed XRPC endpoints. Cloudflare Workers + D1, SvelteKit, Node.js.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"cac":"^7.0.0","hono":"^4.13.0","jiti":"^2.7.0","valibot":"1.4.2","@atcute/cid":"2.4.2","@atcute/tid":"1.1.4","@atcute/cbor":"^2.3.6","@atcute/client":"^5.1.1","@atcute/atproto":"^4.0.4","@atcute/lex-cli":"^3.2.1","@atcute/identity":"^2.0.2","@atcute/lexicons":"^2.0.3","@atcute/jetstream":"^2.0.2","@atcute/uint8array":"1.1.5","@atcute/lexicon-doc":"3.0.2","@atcute/oauth-types":"^1.0.1","@atcute/xrpc-server":"^2.0.2","@atcute/identity-resolver":"^2.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.22.0","tsup":"^8.5.1","vitest":"^4.1.10","wrangler":"^4.118.0","@types/pg":"^8.20.4","typescript":"^6.0.3","@types/node":"^26.1.2","@atcute/crypto":"2.4.4","@cloudflare/workers-types":"^5.20260804.1"},"peerDependencies":{"pg":"^8.0.0","wrangler":"^4.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"wrangler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/contrail_0.21.1_1787924385580_0.6535464802775872","host":"s3://npm-registry-packages-npm-production"}},"0.21.2":{"name":"@atmo-dev/contrail","version":"0.21.2","keywords":["atproto","bluesky","cloudflare","d1","indexer","xrpc"],"license":"MIT","_id":"@atmo-dev/contrail@0.21.2","maintainers":[{"name":"flo-bit128","email":"flo.bit128@gmail.com"}],"homepage":"https://github.com/flo-bit/contrail#readme","bugs":{"url":"https://github.com/flo-bit/contrail/issues"},"bin":{"contrail":"dist/cli.js"},"dist":{"shasum":"824cf9a44f9ab0cc736f7d62f3619f0e5b5ea731","tarball":"https://registry.npmjs.org/@atmo-dev/contrail/-/contrail-0.21.2.tgz","fileCount":68,"integrity":"sha512-we+qZZSHHwBa/FpA1O0G4eYMY6fo9ZHGOEBflkJUXsZRXSaB9UC88WhsaoVTKIbYmXyrGWkZjIGPUcmd1rlRTA==","signatures":[{"sig":"MEQCIByfw1YLL7tqfl/m3ZJqQ6p3xsKp2vfa3DNsUn8fA27uAiBjQY3Rog59ls9cjAjmYY2Hffeat8wT2TIDl3IN2KPYrA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atmo-dev%2fcontrail@0.21.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1954455},"type":"module","_from":"file:atmo-dev-contrail-0.21.2.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./client":{"types":"./dist/public-client.d.ts","import":"./dist/public-client.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./sqlite":{"types":"./dist/adapters/sqlite.d.ts","import":"./dist/adapters/sqlite.js"},"./worker":{"types":"./dist/worker/index.d.ts","import":"./dist/worker/index.js"},"./workers":{"types":"./dist/workers/backfill.d.ts","import":"./dist/workers/backfill.js"},"./alluvium":{"types":"./dist/adapters/alluvium.d.ts","import":"./dist/adapters/alluvium.js"},"./lexicons":{"types":"./dist/lexicons/index.d.ts","import":"./dist/lexicons/index.js"},"./postgres":{"types":"./dist/adapters/postgres.d.ts","import":"./dist/adapters/postgres.js"},"./cli-config":{"types":"./dist/cli-config.d.ts","import":"./dist/cli-config.js"}},"scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:built":"node tests/built-sqlite.mjs && node tests/built-alluvium.mjs && node tests/built-lexicons.mjs && node tests/built-client.mjs && node tests/built-changes.mjs","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:202f4496-6f2a-49a3-bc12-ded8e4f784a6"}},"_resolved":"/tmp/999d25cf7a216cfc9c48943c8c304fcb/atmo-dev-contrail-0.21.2.tgz","_integrity":"sha512-we+qZZSHHwBa/FpA1O0G4eYMY6fo9ZHGOEBflkJUXsZRXSaB9UC88WhsaoVTKIbYmXyrGWkZjIGPUcmd1rlRTA==","repository":{"url":"git+https://github.com/flo-bit/contrail.git","type":"git","directory":"packages/contrail"},"_npmVersion":"11.5.1","description":"Index AT Protocol records with typed XRPC endpoints. Cloudflare Workers + D1, SvelteKit, Node.js.","directories":{},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"cac":"^7.0.0","hono":"^4.13.0","jiti":"^2.7.0","valibot":"1.4.2","@atcute/cid":"2.4.2","@atcute/tid":"1.1.4","@atcute/cbor":"^2.3.6","@atcute/client":"^5.1.1","@atcute/atproto":"^4.0.4","@atcute/lex-cli":"^3.2.1","@atcute/identity":"^2.0.2","@atcute/lexicons":"^2.0.3","@atcute/jetstream":"^2.0.2","@atcute/uint8array":"1.1.5","@atcute/lexicon-doc":"3.0.2","@atcute/oauth-types":"^1.0.1","@atcute/xrpc-server":"^2.0.2","@atcute/identity-resolver":"^2.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.22.0","tsup":"^8.5.1","vitest":"^4.1.10","wrangler":"^4.118.0","@types/pg":"^8.20.4","typescript":"^6.0.3","@types/node":"^26.1.2","@atcute/crypto":"2.4.4","@cloudflare/workers-types":"^5.20260804.1"},"peerDependencies":{"pg":"^8.0.0","wrangler":"^4.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"wrangler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/contrail_0.21.2_1787938230960_0.2265484488365188","host":"s3://npm-registry-packages-npm-production"}},"0.22.0":{"name":"@atmo-dev/contrail","version":"0.22.0","keywords":["atproto","bluesky","cloudflare","d1","indexer","xrpc"],"license":"MIT","_id":"@atmo-dev/contrail@0.22.0","maintainers":[{"name":"flo-bit128","email":"flo.bit128@gmail.com"}],"homepage":"https://github.com/flo-bit/contrail#readme","bugs":{"url":"https://github.com/flo-bit/contrail/issues"},"bin":{"contrail":"dist/cli.js"},"dist":{"shasum":"a483c363776677ad979fcf84fd7ab0caa01bcf75","tarball":"https://registry.npmjs.org/@atmo-dev/contrail/-/contrail-0.22.0.tgz","fileCount":68,"integrity":"sha512-zqDhYA16VjxUExzYHowdt8lRlE55e+j8VS1nPKfHrNXEstlbEk3/mju/ORaNfNbmSEMjrdJ9nFeXhxAJtKwnng==","signatures":[{"sig":"MEQCIDSBTihGtr9BvUGXU8eQHov3zJYHbMRk9az05wp80OjyAiBwFunN9kJf92MhlGhvm0ocUIazD9c+ogDMqT8Vt0Mggg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atmo-dev%2fcontrail@0.22.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2005630},"type":"module","_from":"file:atmo-dev-contrail-0.22.0.tgz","engines":{"node":">=22.15.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./client":{"types":"./dist/public-client.d.ts","import":"./dist/public-client.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./sqlite":{"types":"./dist/adapters/sqlite.d.ts","import":"./dist/adapters/sqlite.js"},"./worker":{"types":"./dist/worker/index.d.ts","import":"./dist/worker/index.js"},"./workers":{"types":"./dist/workers/backfill.d.ts","import":"./dist/workers/backfill.js"},"./alluvium":{"types":"./dist/adapters/alluvium.d.ts","import":"./dist/adapters/alluvium.js"},"./lexicons":{"types":"./dist/lexicons/index.d.ts","import":"./dist/lexicons/index.js"},"./postgres":{"types":"./dist/adapters/postgres.d.ts","import":"./dist/adapters/postgres.js"},"./cli-config":{"types":"./dist/cli-config.d.ts","import":"./dist/cli-config.js"}},"scripts":{"test":"vitest run","build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:built":"node tests/built-sqlite.mjs && node tests/built-alluvium.mjs && node tests/built-lexicons.mjs && node tests/built-client.mjs && node tests/built-changes.mjs","test:watch":"vitest"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:202f4496-6f2a-49a3-bc12-ded8e4f784a6"}},"_resolved":"/tmp/46d501c795722cd449d1098d26009341/atmo-dev-contrail-0.22.0.tgz","_integrity":"sha512-zqDhYA16VjxUExzYHowdt8lRlE55e+j8VS1nPKfHrNXEstlbEk3/mju/ORaNfNbmSEMjrdJ9nFeXhxAJtKwnng==","repository":{"url":"git+https://github.com/flo-bit/contrail.git","type":"git","directory":"packages/contrail"},"_npmVersion":"11.5.1","description":"Index AT Protocol records with typed XRPC endpoints. Cloudflare Workers + D1, SvelteKit, Node.js.","directories":{},"sideEffects":false,"_nodeVersion":"22.15.1","dependencies":{"cac":"^7.0.0","hono":"^4.13.0","jiti":"^2.7.0","valibot":"1.4.2","@atcute/cid":"2.4.2","@atcute/tid":"1.1.4","@atcute/cbor":"^2.3.6","@atproto/lex":"^0.3.8","@atcute/client":"^5.1.1","@atcute/atproto":"^4.0.4","@atcute/lex-cli":"^3.2.1","@bsky/jetstream":"^1.0.0","@atcute/identity":"^2.0.2","@atcute/lexicons":"^2.0.3","@atcute/jetstream":"^2.0.2","@atcute/uint8array":"1.1.5","@atcute/lexicon-doc":"3.0.2","@atcute/oauth-types":"^1.0.1","@atcute/xrpc-server":"^2.0.2","@atcute/identity-resolver":"^2.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.22.0","tsup":"^8.5.1","vitest":"^4.1.10","wrangler":"^4.118.0","@types/pg":"^8.20.4","typescript":"^6.0.3","@types/node":"^26.1.2","@atcute/crypto":"2.4.4","@cloudflare/workers-types":"^5.20260804.1"},"peerDependencies":{"pg":"^8.0.0","wrangler":"^4.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"wrangler":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/contrail_0.22.0_1788180011830_0.5767687740993466","host":"s3://npm-registry-packages-npm-production"}},"0.23.0":{"name":"@atmo-dev/contrail","version":"0.23.0","description":"Index AT Protocol records with typed XRPC endpoints. Cloudflare Workers + D1, SvelteKit, Node.js.","type":"module","sideEffects":false,"engines":{"node":">=22.15.0"},"publishConfig":{"access":"public"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./server":{"types":"./dist/server.d.ts","import":"./dist/server.js"},"./client":{"types":"./dist/public-client.d.ts","import":"./dist/public-client.js"},"./sqlite":{"types":"./dist/adapters/sqlite.d.ts","import":"./dist/adapters/sqlite.js"},"./postgres":{"types":"./dist/adapters/postgres.d.ts","import":"./dist/adapters/postgres.js"},"./alluvium":{"types":"./dist/adapters/alluvium.d.ts","import":"./dist/adapters/alluvium.js"},"./workers":{"types":"./dist/workers/backfill.d.ts","import":"./dist/workers/backfill.js"},"./worker":{"types":"./dist/worker/index.d.ts","import":"./dist/worker/index.js"},"./cli-config":{"types":"./dist/cli-config.d.ts","import":"./dist/cli-config.js"},"./lexicons":{"types":"./dist/lexicons/index.d.ts","import":"./dist/lexicons/index.js"}},"bin":{"contrail":"dist/cli.js"},"repository":{"type":"git","url":"git+https://github.com/flo-bit/contrail.git","directory":"packages/contrail"},"keywords":["atproto","bluesky","cloudflare","d1","indexer","xrpc"],"dependencies":{"@atcute/atproto":"^4.0.4","@atcute/cbor":"^2.3.6","@atcute/cid":"2.4.2","@atcute/client":"^5.1.1","@atcute/identity":"^2.0.2","@atcute/identity-resolver":"^2.0.1","@atcute/jetstream":"^2.0.2","@atcute/lex-cli":"^3.2.1","@atcute/lexicon-doc":"3.0.2","@atcute/lexicons":"^2.0.3","@atcute/oauth-types":"^1.0.1","@atcute/tid":"1.1.4","@atcute/uint8array":"1.1.5","@atcute/xrpc-server":"^2.0.2","@atproto/lex":"^0.3.8","@bsky/jetstream":"^1.0.0","cac":"^7.0.0","hono":"^4.13.0","jiti":"^2.7.0","valibot":"1.4.2"},"devDependencies":{"@atcute/crypto":"2.4.4","@cloudflare/workers-types":"5.20260815.1","@types/node":"^26.1.2","@types/pg":"^8.20.4","pg":"^8.22.0","tsup":"^8.5.1","typescript":"^6.0.3","vitest":"^4.1.10","wrangler":"4.123.0"},"peerDependencies":{"pg":"^8.0.0","wrangler":"^4.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"wrangler":{"optional":true}},"license":"MIT","scripts":{"build":"tsup","clean":"rm -rf dist","typecheck":"tsc --noEmit","test":"vitest run","test:built":"node tests/built-sqlite.mjs && node tests/built-alluvium.mjs && node tests/built-lexicons.mjs && node tests/built-client.mjs && node tests/built-changes.mjs","test:workerd":"node tests/workerd-smoke.mjs","test:watch":"vitest"},"_id":"@atmo-dev/contrail@0.23.0","bugs":{"url":"https://github.com/flo-bit/contrail/issues"},"homepage":"https://github.com/flo-bit/contrail#readme","_integrity":"sha512-yr09R9trqj76gSBkydoMcQplGaLI+nucnMOZaTZkcfOmksTSgVNIIq/XNSqUpBDovMNBDfDSm7bhuq7EgYu8WA==","_resolved":"/tmp/33306f9ddd39646b15af5afbd4be54ea/atmo-dev-contrail-0.23.0.tgz","_from":"file:atmo-dev-contrail-0.23.0.tgz","_nodeVersion":"22.15.1","_npmVersion":"11.5.1","dist":{"integrity":"sha512-yr09R9trqj76gSBkydoMcQplGaLI+nucnMOZaTZkcfOmksTSgVNIIq/XNSqUpBDovMNBDfDSm7bhuq7EgYu8WA==","shasum":"1e20cb9248df2b5d2b2941719fcfe3c4766ca06a","tarball":"https://registry.npmjs.org/@atmo-dev/contrail/-/contrail-0.23.0.tgz","fileCount":68,"unpackedSize":2133604,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@atmo-dev%2fcontrail@0.23.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQD+l5vaq58Dtc48h0vULOHBzF9FUUYkIK9lh4SXLCywWgIgHgXdfl0b1U+NsvUf/spXkYjeFkxabZCrcos/gN6PVBE="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:202f4496-6f2a-49a3-bc12-ded8e4f784a6"}},"directories":{},"maintainers":[{"name":"flo-bit128","email":"flo.bit128@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/contrail_0.23.0_1788356366200_0.8963055516499014"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-01T22:58:19.185Z","modified":"2026-09-02T13:39:26.667Z","0.0.4":"2026-04-01T22:58:19.626Z","0.0.5":"2026-04-01T23:25:06.628Z","0.0.6":"2026-04-01T23:52:32.011Z","0.0.7":"2026-04-02T00:37:52.057Z","0.0.8":"2026-04-09T01:09:09.859Z","0.1.0":"2026-04-18T20:45:08.947Z","0.1.1":"2026-04-19T17:39:53.037Z","0.2.0":"2026-04-24T10:53:03.623Z","0.3.0":"2026-04-25T11:19:29.566Z","0.4.0":"2026-04-25T13:52:05.347Z","0.4.1":"2026-04-27T20:37:09.663Z","0.4.2":"2026-04-30T13:50:07.383Z","0.5.0":"2026-05-03T19:37:21.455Z","0.6.0":"2026-05-05T19:38:10.167Z","0.7.0":"2026-06-04T12:24:42.523Z","0.8.0":"2026-06-05T18:35:43.769Z","0.9.0":"2026-06-07T16:03:23.891Z","0.9.1":"2026-06-07T19:18:27.988Z","0.10.0":"2026-06-07T19:33:29.832Z","0.11.0":"2026-06-07T20:01:10.549Z","0.12.0":"2026-06-12T20:00:12.191Z","0.12.1":"2026-06-15T23:14:22.130Z","0.12.2":"2026-06-17T16:54:44.514Z","0.13.0":"2026-08-05T00:47:04.779Z","0.13.1":"2026-08-05T13:51:48.145Z","0.14.0":"2026-08-05T14:28:44.794Z","0.14.1":"2026-08-06T02:03:41.776Z","0.15.0":"2026-08-07T04:33:23.860Z","0.16.0":"2026-08-12T10:58:20.997Z","0.17.0":"2026-08-14T23:39:56.878Z","0.17.1":"2026-08-19T13:55:03.464Z","0.18.0":"2026-08-21T07:09:56.780Z","0.19.0":"2026-08-21T07:14:55.369Z","0.20.0":"2026-08-28T11:04:25.749Z","0.20.1":"2026-08-28T11:31:19.556Z","0.21.0":"2026-08-28T11:51:05.256Z","0.21.1":"2026-08-28T13:39:45.720Z","0.21.2":"2026-08-28T17:30:31.172Z","0.22.0":"2026-08-31T12:40:11.988Z","0.23.0":"2026-09-02T13:39:26.335Z"},"bugs":{"url":"https://github.com/flo-bit/contrail/issues"},"license":"MIT","homepage":"https://github.com/flo-bit/contrail#readme","keywords":["atproto","bluesky","cloudflare","d1","indexer","xrpc"],"repository":{"type":"git","url":"git+https://github.com/flo-bit/contrail.git","directory":"packages/contrail"},"description":"Index AT Protocol records with typed XRPC endpoints. Cloudflare Workers + D1, SvelteKit, Node.js.","maintainers":[{"name":"flo-bit128","email":"flo.bit128@gmail.com"}],"readme":"# `@atmo-dev/contrail`\n\n> Pre-alpha. Expect breaking changes.\n\nOne package for indexing and querying public AT Protocol records.\n\n## Basic use\n\n```ts\nimport { Contrail } from \"@atmo-dev/contrail\";\n\nconst contrail = new Contrail({\n  namespace: \"com.example\",\n  db,\n  collections: {\n    event: {\n      collection: \"community.lexicon.calendar.event\",\n      queryable: {\n        mode: {},\n        startsAt: { type: \"range\" },\n      },\n      searchable: [\"name\", \"description\"],\n      relations: {\n        rsvps: {\n          collection: \"rsvp\",\n          field: \"subject.uri\",\n          groupBy: \"status\",\n          groups: {\n            going: \"community.lexicon.calendar.rsvp#going\",\n          },\n        },\n      },\n    },\n    rsvp: {\n      collection: \"community.lexicon.calendar.rsvp\",\n      references: {\n        event: { collection: \"event\", field: \"subject.uri\" },\n      },\n    },\n  },\n});\n\nawait contrail.init();\nawait contrail.backfillAll({ concurrency: 100 });\n```\n\n## Query\n\n```ts\nconst result = await contrail.query(\"event\", {\n  filters: { mode: \"in-person\" },\n  sort: { countType: \"rsvp\", direction: \"desc\" },\n  limit: 20,\n});\n```\n\nHTTP routes expose the same pipeline, including relationship/reference hydration, counts, profiles, search, and custom queries.\n\n## Keep records current\n\n```ts\nawait contrail.ingest(); // bounded Jetstream cycle\n\n// Optional per-cycle overrides (defaults: 25s, 250 candidates,\n// 250 distinct identity updates, and 4 MiB).\nawait contrail.ingest({\n  maxDrainMs: 20_000,\n  maxCandidates: 200,\n  maxIdentityUpdates: 200,\n  maxSerializedBytes: 3 * 1024 * 1024,\n});\n\nawait contrail.runPersistent({\n  signal: abortController.signal,\n  batchSize: 50,\n  flushIntervalMs: 5_000,\n});\n```\n\nAfter a write to a user's PDS, `contrail.notify(uri)` can fetch the authoritative record immediately. Only an authoritative not-found response deletes local state; rate limits, server errors, timeouts, malformed responses, and network failures leave it unchanged. Authentication and abuse controls for the public HTTP operation remain under design.\n\nContrail stores source event time, repository revision, source cursor, CID, and local index time separately from record/application time. Live ingestion speaks Jetstream v2 and checkpoints its unique monotonic `seq`; the RFC 3339 event time remains display/source metadata and is never used as the resume coordinate. Scheduled collection drops exact observations before admission, counts UTF-8 record bodies plus a fixed 512-byte metadata allowance, and retains the threshold-crossing candidate before stopping. Identity updates have an independent retained-count limit, coalesce by DID, and commit in database batches; excess global identity traffic is accounted but omitted so it cannot starve record progress. Source-filtered observations consume neither candidate nor byte limits, but their yielded seqs remain accounted. Durable actor scope comes from identities, relay discovery, and visible discoverable records. Existing v1 timestamp cursors cross a bounded overlap bridge and atomically transition once to the v2 seq domain. If either a timestamp or seq cursor has already fallen outside the hosted live-retention window, ingestion fails rather than accepting the server's timestamp clamp and silently skipping a gap; rebuild/backfill from a fresh boundary until archive replay is added. Durable tombstones reject stale resurrection, and live projection commits its exact accounted seq in the same transaction. Both scheduled and persistent modes require one pinned Jetstream v2 service because seqs are instance-local. Persistent ingestion retains its streaming batch lifecycle and does not inherit the scheduled count/byte defaults. Historical acquisition still uses the existing PDS or optional Alluvium paths; Jetstream v2 archive replay is not used yet. A successful PDS `listRecords` page is a current authoritative observation, so it supersedes older durable state without a redundant version read; its version writes and page cursor still commit atomically. Tombstones are retained indefinitely; authoritative rebuild/retention tooling is planned separately.\n\nWhen upgrading an existing database, point `jetstreams` at one v2 service and change `orderedSource.epoch` to identify the new continuity history. The normalized service origin is durably bound before the timestamp-to-seq transition because seqs are instance-local; changing it later is a hard error. Initialization permits the ordered-source epoch change only while the durable cursor is still in the legacy timestamp domain; the first fully handled v2 event then installs the seq domain one-way. Once a database is in the seq domain, an epoch mismatch remains a hard error. An already-seq-domain database with no durable service binding is also rejected because its originating instance cannot be inferred safely.\n\nProjection winner selection is guarded again inside the write transaction. Overlapping cron, persistent, notify, or backfill writers cannot commit a stale canonical row, derived projection, tombstone, or source checkpoint; a changed predecessor rolls the complete attempt back and retries from fresh durable state.\n\n## Transactional change log (experimental)\n\nFresh empty generations may opt into a compact transactional projection change log:\n\n```ts\nconst config = {\n  // ...\n  changes: {\n    consumers: {\n      search: {\n        collections: [\"community.lexicon.calendar.event\"],\n        phases: [\"historical\", \"live\"],\n        initial: \"current\",\n        requiredForActivation: true,\n      },\n    },\n  },\n} satisfies ContrailConfig;\n```\n\nStatic definitions contain no handlers, URLs, clients, credentials, or secrets. Contrail registers them with a random database-generation ID and collection/phase coverage ledger. A winning logical put/delete appends one compact URI/version reference in the same transaction as canonical and derived state plus the source checkpoint. Duplicate, stale, same-CID, absent-delete, rejected, and rolled-back mutations append nothing. Record bodies are hydrated from current state by the later delivery layer rather than copied into the log.\n\nCloudflare Workers bind handlers and runtime-only secrets separately from static policy:\n\n```ts\nexport default createWorker(config, {\n  deliveries: {\n    search: async (batch, { env, signal }) => {\n      await updateSearch(env.SEARCH_KEY, batch, signal);\n    },\n  },\n  changeBootstraps: {\n    search: {\n      snapshot: async (page, { env, signal }) => {\n        await writeCandidateIndex(env.SEARCH_KEY, page, signal);\n      },\n      activate: async (activation, { env, signal }) => {\n        await activateCandidateIdempotently(\n          env.SEARCH_KEY,\n          activation.bootstrapToken,\n          signal,\n        );\n      },\n    },\n  },\n});\n```\n\nScheduled execution runs ingestion, due historical retries, then bounded fair delivery rounds. One consumer failure is persisted with backoff and does not stop ingestion or another consumer. A successful notify request schedules a best-effort one-round wake through `ExecutionContext`; projection success never depends on it. Persistent deployments run `contrail.runPersistentDeliveries()` alongside `runPersistent()`.\n\nLow-level delivery uses bounded leases and compare-and-swap acknowledgement:\n\n```ts\nconst claim = await contrail.changes.claim(\"webhooks\", {\n  maxBatches: 20,\n  maxChanges: 500,\n  maxBytes: 512_000,\n  leaseMs: 30_000,\n});\nif (claim) {\n  try {\n    const batch = await contrail.changes.hydrate(claim);\n    await deliverIdempotently(batch);\n    await contrail.changes.ack(claim);\n  } catch {\n    await contrail.changes.fail(claim, {\n      code: \"destination_unavailable\",\n      nextAttemptAt: Date.now() + 30_000,\n    });\n  }\n}\n```\n\nClaims coalesce repeated URIs, hydrate in set-oriented collection queries, and resolve delete/recreate races from newest canonical state. Consumers lease and progress independently; irrelevant position ranges advance without invoking a handler. Delivery is intentionally at least once—a destination success followed by an acknowledgement crash causes duplicate delivery. Handlers must be idempotent by stable record/document key.\n\n`initial: \"current\"` uses a durable snapshot-plus-tail coordinator and must observe both `historical` and `live` phases so every mutation racing the keyset scan is retained for reconciliation. Repeatedly claim and idempotently acknowledge `contrail.changes.claimSnapshotPage()`, then drain `claimBootstrapChanges()` through its fixed target using ordinary hydrate/ack. Snapshot and bootstrap-tail deliveries carry the candidate destination token; ordinary deliveries after activation do not. Finally claim the stable generation-scoped activation token with `claimActivation()`, perform an idempotent destination swap, and call `completeActivation()`. A crash replays the same URI page, tail range, or activation token. Records updated or deleted while the keyset scan races are corrected by the anchored tail.\n\nA consumer can be added to a populated log when all of its collection/phase pairs were already covered; its current/future anchor is the atomic current head, while history starts at the retained floor. Expanding coverage still fails closed without a fresh generation or explicit old-writer quiet boundary. `contrail changes status`, `retry`, `prune`, and explicitly confirmed `skip` expose private operations for SQLite or Wrangler D1 deployments. Status includes a conservative projection/head/batch/ack write plan. Pruning is bounded by the slowest durable consumer/bootstrap anchor. Skip records a bounded private audit reason and never occurs implicitly. Disabling or removing an existing log remains fail-closed. With no configured consumers, no change-log tables or append writes exist.\n\nBackups retain the database's change-log generation ID, positions, leases, bootstrap token, and consumer progress. Restoring that backup as the same generation is resumable and may redeliver an in-flight lease after expiry. Do not clone it as a new deployment generation while reusing destination cursors: build a fresh projection database and run current-state bootstrap. Restoring projection tables without the matching change tables is an unrecoverable delivery gap and must enter reset/bootstrap rather than silently continuing numeric positions.\n\n## Local development\n\nSeed a project from proof-verified record Lexicons, then start a complete local service:\n\n```bash\ncontrail init my-appview \\\n  --prefix community.lexicon.calendar. \\\n  --namespace com.example.calendar\ncd my-appview\ncontrail dev\n```\n\nThe prefix is matched literally against source Lexicon NSIDs. Include a trailing\n`.` to select a namespace boundary. `--namespace` is independent: it controls\nthe generated AppView XRPC method IDs and defaults to `com.example`.\n\n| Init option | Purpose |\n|---|---|\n| `--prefix <prefix>` | Import verified record Lexicons matching an NSID prefix |\n| `--namespace <namespace>` | Set the generated AppView XRPC namespace |\n| `--lexicon-api <url>` | Select a registry (default: `https://lex.atmo.tools`) |\n| `--timeout <seconds>` | Set the readiness/dependency budget (default: `60`) |\n| `--allow-partial` | Explicitly accept incomplete prefix discovery |\n| `--no-interactive` | Leave ambiguous references unconfigured |\n\nPrefix initialization requires a stable, fully verified and indexed catalog\nsnapshot, pins each root and transitive dependency by CID under\n`lexicons/pinned/`, writes provenance to `lexicons/pinned.lock`, and generates\nequality/range fields which are safe on all supported databases. Missing\nrequired dependencies always fail, including with `--allow-partial`.\n\nIn an interactive terminal, reference-shaped fields can be connected to an\nimported target collection and optionally exposed as inverse relations. These\nchoices are never guessed from descriptions. `--no-interactive` leaves all\nambiguous references unconfigured. strongRef hydration resolves the current\nindexed record by URI; it does not retrieve the historical version named by the\nembedded CID.\n\nRun `contrail init my-appview` without `--prefix` to create the original offline\nexample config without a network request. Run either form without a directory to\nwrite into the current directory. The command refuses to replace a config or\npinned import in any standard owned location.\n\nWithout a Wrangler config this creates or resumes `.contrail/dev.sqlite`, resolves missing configured record/ref Lexicons from the AT Protocol network without overwriting project-owned schemas, runs PDS backfill, serves the complete public Contrail discovery/XRPC/Lexicon surface at `http://127.0.0.1:8787`, and runs bounded Jetstream ingestion every minute. It never creates or changes a deployment provider lock. Add `.contrail/` to the project ignore file. Existing Wrangler projects retain the prior D1 development behavior automatically.\n\nWhen a configured Lexicon does not exist yet or cannot be resolved, interactive `contrail dev` and config-backed `contrail connect` warn and ask whether to continue with an incomplete local bundle. Unresolved documents and schemas that depend on them are omitted, and directly affected record values are generated as `unknown`; collections using `validate: true` still require their complete Lexicon closure. The prompt defaults to no, and non-interactive use fails closed unless `--yes` is passed.\n\nUseful SQLite options include:\n\n```bash\ncontrail dev --fresh                          # reset local SQLite first\ncontrail dev --temporary                      # delete SQLite when stopped\ncontrail dev --sqlite ./tmp/dev.sqlite        # explicit durable path\ncontrail dev --alluvium --allow-partial       # fast base/archive bootstrap\ncontrail dev --no-backfill                    # serve existing state only\n```\n\nGenerate the typed consumer API directly from an owned config or its containing directory:\n\n```bash\ncontrail connect ./contrail.config.ts\ncontrail connect ../api\n```\n\nA config source generates Lexicons, Atcute types, `contrailApi`, `createContrailClient()`, and `createLocalContrailClient()` without creating or changing `contrail.lock.json`. If a production lock already exists, the generated default client keeps that deployment target while the local factory uses the current source API. `contrail dev --config ../api/src/contrail.config.ts` can then run the same config locally.\n\nSQLite dev mode exposes configured protected methods only on loopback without inheriting a production service-auth audience. When `notify` is omitted, it also enables open loopback-only `notifyOfUpdate`. `createLocalContrailClient()` has no OAuth scope and permits plain HTTP only for a validated loopback endpoint.\n\n## Fresh generations (experimental)\n\n`PdsSnapshotSource`, `JetstreamChangeSource`, `DatabaseBootstrapTarget`, and `bootstrapFreshProjection()` build an unpublished database with capture-first replay. The capture mark is durable before relay discovery starts; PDS partition cursors and Jetstream checkpoints commit with their records. Completion rebuilds deferred projections, verifies aggregate record/version consistency, and stores only bounded failure categories.\n\nJetstream generation replay requires an operator-owned continuity epoch and retention guarantee. It uses real stream events as marks, never wall clock or a quiet socket. Optional busy watermark collections can prove progress without being projected.\n\nAn optional experimental Alluvium adapter consumes existing version-1 collection manifests, verifies immutable compressed objects, and ends offline bootstrap exactly at the archived source boundary. The CLI supports either Wrangler/D1 or an explicit SQLite file:\n\n```bash\ncontrail backfill --sqlite ./data/contrail.sqlite --alluvium \\\n  --alluvium-epoch my-source-continuity-epoch \\\n  --alluvium-source-url wss://jetstream1.us-east.bsky.network \\\n  --allow-partial\n```\n\nThe epoch is deliberately required because Alluvium protocol v1 does not publish one. `--alluvium-source-url` names the exact legacy v1 source advertised by the manifests and defaults to the hosted east source shown above; it is intentionally separate from `config.jetstreams`, which selects the v2 live service used after bootstrap. `--allow-partial` is needed only when selected manifests explicitly report historical omissions. The command rejects a populated database unless it is resuming durable Alluvium bootstrap state. The equivalent programmatic API is:\n\n```ts\nimport { DatabaseBootstrapTarget } from \"@atmo-dev/contrail\";\nimport {\n  createAlluviumBootstrapSources,\n  createAlluviumLiveCursor,\n} from \"@atmo-dev/contrail/alluvium\";\n\nconst sourceIdentity = {\n  id: \"jetstream-us-east\",\n  // Alluvium v1 does not publish an epoch yet; the operator owns this value.\n  epoch: \"jetstream-us-east-2026-08\",\n  url: \"wss://jetstream1.us-east.bsky.network\",\n};\nconst source = createAlluviumBootstrapSources(config, {\n  endpoint: \"https://alluvium-v0.atmo.tools\",\n  source: sourceIdentity,\n  jetstream: {\n    retentionUs: 72 * 60 * 60 * 1_000_000,\n    watermarkCollections: [\"app.bsky.feed.post\"],\n  },\n});\nconst target = new DatabaseBootstrapTarget(db, config, {\n  deferDerivedProjections: true,\n  // Commit the archived v1 time_us as the one-time v2 live bridge cursor.\n  liveCursor: createAlluviumLiveCursor(sourceIdentity),\n});\n\nawait bootstrapFreshProjection({\n  collections: [\"community.lexicon.calendar.event\"],\n  ...source,\n  target,\n});\n```\n\nThe offline call loads only the base plus published archive tail. It does not replay direct Jetstream to a newly marked head. The target atomically persists Alluvium's final archived v1 `time_us`; the next v2 live observation transitions that bridge coordinate to the service's seq domain, after which bounded cron invocations resume by seq. The configured live v2 service and continuity epoch remain operator-owned because Alluvium protocol v1 cannot publish a v2 handoff coordinate.\n\nThis first adapter is generation-only and deliberately strict: selected manifests must expose one shared base and archive boundary, source ID/URL must match configuration, known capture gaps fail, and partial historical coverage requires `allowPartial: true`. It buffers each bounded compressed object so checksum and byte length are verified before any rows are projected. Because version-1 manifests lack global multi-collection delivery steps, it also restores source order with a bounded 100,000-mutation tail buffer; larger tails require the planned bundle protocol. It does not silently fall back to PDS acquisition; omitted-account repair and dependent profile/follow enrichment remain separately accounted PDS work.\n\nA separate control database can use `DatabaseGenerationRegistry` to store immutable `(code, definition, database, generation)` tuples. `activate(candidate, expectedActive)` switches one singleton pointer with compare-and-swap, retaining the previous ready tuple for rollback. There is intentionally no percentage traffic-split API; platform routing must resolve the one active tuple.\n\n## Generate Lexicons\n\nGenerate XRPC query Lexicons from the Contrail config and check them for drift:\n\n```bash\npnpm contrail lexicons generate\npnpm contrail lexicons check\n```\n\n`contrail lexicons all` also pulls referenced record Lexicons and runs Atcute TypeScript generation. Use `--public` when generating only methods advertised by the remote service contract, including explicitly protected service-auth methods. Generated `lex.config.js` files carry an ownership marker; existing user-owned Atcute configuration is never replaced. Pass `--no-atcute-config` to manage that file yourself. The generator is also exported from `@atmo-dev/contrail/lexicons` for programmatic use.\n\n## Public read-through service\n\n```ts\nexport default createWorker(config, {\n  lexicons,\n  publicService: { endpoint: \"https://api.example.com\" },\n});\n```\n\nDiscovery at `/.well-known/contrail` advertises a validated API description and content-addressed Lexicon bundle. Anonymous collection reads, profiles, feeds, and authored custom queries may acquire public AT Protocol data and improve the cache behind the response.\n\nPersonalized feeds and `notifyOfUpdate` can instead require method-bound AT Protocol service tokens:\n\n```ts\nconst config = {\n  notify: true,\n  serviceAuth: {\n    audience: \"did:web:api.example.com#contrail\",\n    methods: [\"getFeed\", \"notifyOfUpdate\"],\n  },\n  // ...\n};\n```\n\nThe service description advertises the base service DID, exact fragmented audience, canonical OAuth scope, and each protected query/procedure separately from anonymous methods. `contrail connect` generates `src/contrail/index.ts`; anonymous calls go directly to the configured endpoint, while protected calls lazily discover and validate all service-auth fields. Its exported `contrail.scope` contains one sorted `lxm` parameter per protected method, such as `rpc?aud=did:web:api.example.com%23contrail&lxm=<namespace>.getFeed&lxm=<namespace>.notifyOfUpdate`. `contrail.authenticated(authenticatedClient)` returns one Atcute client: advertised provider methods route to Contrail, ordinary methods route to the PDS, and successful tracked `createRecord`, `putRecord`, and `deleteRecord` calls automatically notify Contrail. Handle-form deletes are resolved to canonical DID URIs. Protected methods use cached exact method-bound tokens, while transient discovery failures remain retryable. Feed actors must resolve to the token issuer, and every notified AT URI must belong to the issuer. When the base DID resolves to the public endpoint's `/.well-known/did.json`, the Worker publishes a DID document whose service entry ID is the exact audience.\n\nPublic-service mode requires a primary ordered source so `getCursor` can expose its committed position. Configure that continuity identity explicitly; non-public deployments without it expose only the unscoped numeric live cursor as `{ cursor }`:\n\n```ts\nconst config = {\n  orderedSource: {\n    source: \"jetstream\",\n    epoch: \"primary-2026\", // change whenever cursor continuity changes\n  },\n  // ...\n};\n```\n\nThe ordered-source cursor is opaque. Compare the complete `{ source, epoch, cursor }` value for equality; never order cursors from different epochs. Consumers can read the position before and after a query, retry if it changed, then poll it as a refetch/invalidation signal.\n\nConnect an independent consumer with `contrail connect <https-origin>`. The version-2 provider lock records the deployment and exact Lexicon bundle, but generated clients do not pin the provider's complete method set at runtime. Existing anonymous methods therefore continue working when a provider adds methods. A repeated connection to the same endpoint and provider-owned output root requires `--update`; provider files and the lock are staged and swapped without deleting consumer-owned Lexicons. Version-1 locks must be removed and reconnected.\n\n\n## Runtime record validation\n\nOpt collections into validation where their indexing policy is declared:\n\n```ts\nconst config: ContrailConfig = {\n  namespace: \"com.example\",\n  collections: {\n    event: {\n      collection: \"community.example.event\",\n      validate: true,\n    },\n    legacy: {\n      collection: \"community.example.legacy\",\n      // Omitted or false: compatibility mode, no runtime validation.\n    },\n  },\n  validation: {\n    strict: true, // default: enforce blob size/MIME constraints too\n    verifyCid: true, // default: canonical DAG-CBOR CID verification\n  },\n};\n```\n\n`createWorker(config, { lexicons })` binds each opted-in collection to the exact generated/pinned bundle already shipped with the deployment. `contrail dev` resolves and binds its exact temporary bundle, while CLI backfill loads the standard checked-in generated bundle. There is no second validation-specific Lexicon array.\n\nDirect runtimes use the same explicit separation between policy and material:\n\n```ts\nconst contrail = new Contrail({ ...config, db, lexicons });\n```\n\nValidation applies identically to Jetstream, PDS backfill, notify, on-demand enrichment, Alluvium, and direct `ingestRecords()` calls. Startup fails when an opted-in collection or transitive reference is absent from the bound bundle. Authoritative sources must provide matching CIDs; local and Constellation synthetic records may be CID-less by default. Override `allowCidlessSources` only for explicitly trusted synthetic adapters.\n\nPrivate aggregate-only rejection counters are available without exposing DIDs, URIs, errors, or record bodies. Concurrent bulk backfill accumulates these bounded counters in memory and flushes once per run, so diagnostics cannot turn into a hot D1 row on every source page:\n\n```ts\nconst diagnostics = await contrail.diagnostics();\n```\n\n## HTTP\n\n```ts\nimport { createHandler } from \"@atmo-dev/contrail/server\";\n\nconst handle = createHandler(contrail);\nconst response = await handle(request, db);\n```\n\nFor Workers, use `createWorker` from `@atmo-dev/contrail/worker`.\n\n## Adapters\n\n```ts\nimport { createSqliteDatabase } from \"@atmo-dev/contrail/sqlite\";\nimport { createPostgresDatabase } from \"@atmo-dev/contrail/postgres\";\n```\n\nContrail requires Node.js 22.15 or newer. The SQLite adapter uses the built-in `node:sqlite` module; D1 implements Contrail's database interface directly.\n","readmeFilename":"README.md"}