{"_id":"@ariada-org/scan-backend","name":"@ariada-org/scan-backend","dist-tags":{"latest":"0.2.1"},"versions":{"0.2.1":{"name":"@ariada-org/scan-backend","version":"0.2.1","description":"Runtime-agnostic Hono router factory + schemas + auth + scoring helpers. Consumed by services/backend (Node) and previously by CF Workers (now removed).","license":"Apache-2.0","publishConfig":{"access":"public"},"type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./schemas":{"types":"./dist/schemas.d.ts","import":"./dist/schemas.js"},"./og-template":{"types":"./dist/og-template.d.ts","import":"./dist/og-template.js"},"./drizzle/0000_init.sql":"./drizzle/0000_init.sql"},"dependencies":{"@noble/hashes":"^1.6.1","hono":"^4.6.14","nanoid":"^5.0.9","robots-parser":"^3.0.1","ulid":"^2.3.0","zod":"^3.24.1","@ariada-org/url-guard":"0.1.0","@ariada-org/core":"0.1.1"},"devDependencies":{"@types/node":"^22.10.2","rimraf":"^6.0.1","typescript":"^5.7.2","vitest":"^4.1.0"},"engines":{"node":">=22"},"repository":{"type":"git","url":"git+https://github.com/ariada-org/ariada.git","directory":"packages/scan-backend"},"scripts":{"build":"tsc -p tsconfig.json","typecheck":"tsc -p tsconfig.json --noEmit","lint":"eslint src tests","test":"vitest run","clean":"rimraf dist coverage"},"_id":"@ariada-org/scan-backend@0.2.1","bugs":{"url":"https://github.com/ariada-org/ariada/issues"},"homepage":"https://github.com/ariada-org/ariada#readme","_integrity":"sha512-Zu3m5rvvmikrNa2cn4kXjra/aiItr0a1LJfyaErTAWRORtBe6aYZQkVAGPSLkVvWKgf27NsAJz+NeTYb5CH1eA==","_resolved":"/private/var/folders/2c/_42xj0l179z8yc7wmp5k91s00000gn/T/d80b91693829f1b1f6c714589077a9b7/ariada-org-scan-backend-0.2.1.tgz","_from":"file:ariada-org-scan-backend-0.2.1.tgz","_nodeVersion":"26.5.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-Zu3m5rvvmikrNa2cn4kXjra/aiItr0a1LJfyaErTAWRORtBe6aYZQkVAGPSLkVvWKgf27NsAJz+NeTYb5CH1eA==","shasum":"b660a9dd1860345d08a802dfc0baaa991b0ac117","tarball":"https://registry.npmjs.org/@ariada-org/scan-backend/-/scan-backend-0.2.1.tgz","fileCount":50,"unpackedSize":96894,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDI8Scg1+OFBKatRVSQoIcrPX3mqPh3xepaW2bVhcnwiwIhAKSSw1hCEZK9rQPOL8zfC61aHQrsA2PhlrZPhDqqIhic"}]},"_npmUser":{"name":"agonist","email":"ab@agonist.ai"},"directories":{},"maintainers":[{"name":"agonist","email":"ab@agonist.ai"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/scan-backend_0.2.1_1784942576355_0.5136382333148319"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-25T01:22:56.178Z","0.2.1":"2026-07-25T01:22:56.534Z","modified":"2026-07-25T01:22:56.794Z"},"maintainers":[{"name":"agonist","email":"ab@agonist.ai"}],"description":"Runtime-agnostic Hono router factory + schemas + auth + scoring helpers. Consumed by services/backend (Node) and previously by CF Workers (now removed).","homepage":"https://github.com/ariada-org/ariada#readme","repository":{"type":"git","url":"git+https://github.com/ariada-org/ariada.git","directory":"packages/scan-backend"},"bugs":{"url":"https://github.com/ariada-org/ariada/issues"},"license":"Apache-2.0","readme":"# @ariada-org/scan-backend\n\nRuntime-agnostic Hono router factory + schemas + auth + scoring helpers.\nConsumed by `services/backend` (Node + Hono on Hetzner per ADR-003) and was\npreviously consumed by CF Workers (now removed in salvage migration 2026-04-27).\n\n## Salvage migration (v0.2.0, 2026-04-27)\n\nPer ADR-003 (hosting topology) the CF Workers / DO / D1 / R2 / KV / Queue\nruntime is gone. This package no longer imports `@cloudflare/workers-types`.\nRoutes accept an injected `ScanBackendDeps` bag (drizzle DB, Redis, NATS,\nBlobStore) instead of CF bindings.\n\n## Origin\n\nClass A ORIGINAL (Patent J IC1 single-pass orchestrator) + Patent K IC1\n(visualization pipeline). Apache-2.0.\n\n## Usage (Node host)\n\n```ts\nimport { createScanRouter } from '@ariada-org/scan-backend';\nconst app = createScanRouter({\n  brand: 'ariada',\n  scorecardDepth: 'full',\n  baseUrl: 'https://ariada.org',\n  siblingBaseUrls: { dracula: 'https://draculascan.org' },\n});\n// mount under your Node Hono server, providing deps via app.use middleware\n```\n\n`ScanBackendDeps` shape:\n\n| Variable | Type                                  | Notes                                  |\n|----------|---------------------------------------|----------------------------------------|\n| db       | DrizzleLike (pg)                      | Postgres via drizzle-orm + postgres-js |\n| redis    | RedisLike (ioredis or compatible)     | sliding-window rate limit, badge cache |\n| nats     | NatsLike                              | publish `scan.request`                 |\n| blobs    | BlobStore                             | screenshots, OG images                 |\n\n## Tests\n\n`pnpm vitest run` — auth, rate-limit, attribution, schemas. Routes test mocks\ndeps in-memory.\n\n## Update\n\n- Author: Alekszandr Bricskin (Agonist Development AB) — original CF-Workers form\n- Date: 2026-04-19\n- Author: Alekszandr Bricskin (Agonist Development AB) — runtime-agnostic port\n- Date: 2026-04-27\n","readmeFilename":"README.md","_rev":"1-32c27252ec12a5d57f27bf482090ab1d"}