@secondlayer/subgraphs 3.14.0 → 3.14.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -17,7 +17,7 @@
17
17
  "import type { Database, Subscription } from \"@secondlayer/shared/db\";\nimport { listSubscriptions } from \"@secondlayer/shared/db/queries/subscriptions\";\nimport type { Kysely } from \"kysely\";\nimport { sql } from \"kysely\";\nimport { SubscriptionMatcher } from \"./emitter-matcher.ts\";\n\n/**\n * Singleton matcher populated at processor startup and hot-reloaded via\n * `pg_notify('subscriptions:changed')`. The block-processor reads from it\n * to decide which outbox rows to emit for each flushed write.\n *\n * Per-account listing: in oss/dedicated mode the tenant DB holds all subs\n * for the single account; the matcher loads every row. In platform mode\n * the emitter doesn't run at all (control plane only), so this module is\n * dedicated/oss-only.\n */\n\nexport const matcher = new SubscriptionMatcher();\n\nexport async function refreshMatcher(db: Kysely<Database>): Promise<number> {\n\t// listSubscriptions is account-scoped; the emitter wants every active\n\t// sub so we do a raw query.\n\tconst rows = await sql<Subscription>`\n\t\tSELECT * FROM subscriptions WHERE status = 'active'\n\t`.execute(db);\n\tmatcher.setAll(rows.rows);\n\treturn matcher.size();\n}\n\n// Per-account helper used by tests so the DATABASE_URL-based code path is\n// exercised through listSubscriptions (keeps the query helper in the\n// integration surface).\nexport async function refreshMatcherForAccount(\n\tdb: Kysely<Database>,\n\taccountId: string,\n): Promise<number> {\n\tconst rows = await listSubscriptions(db, accountId);\n\tmatcher.setAll(rows.filter((r: Subscription) => r.status === \"active\"));\n\treturn matcher.size();\n}\n",
18
18
  "import type { Subscription } from \"@secondlayer/shared/db\";\n\n/**\n * Subscription matcher — holds the active-subscriptions cache keyed by\n * `(subgraph_name, table_name)` and evaluates each sub's scalar-only\n * JSONB filter against a row.\n *\n * Filter DSL (v1): scalar operators over string/number/boolean columns.\n * { column: value } → column === value\n * { column: { eq: value } } → column === value\n * { column: { neq: value } } → column !== value\n * { column: { gt|gte|lt|lte: N } } → numeric compare\n * { column: { in: [a, b, c] } } → column ∈ set\n * { } → match all\n *\n * Nested objects, arrays, and non-scalar values are rejected with `false`\n * (never match) — subscribers get logged warnings at sub create time.\n *\n * Multiple conditions AND together. OR is deliberately absent in v1.\n */\n\nexport type FilterPrimitive = string | number | boolean;\nexport type FilterOperator =\n\t| { eq: FilterPrimitive }\n\t| { neq: FilterPrimitive }\n\t| { gt: number | string }\n\t| { gte: number | string }\n\t| { lt: number | string }\n\t| { lte: number | string }\n\t| { in: FilterPrimitive[] };\n\nexport type FilterClause = FilterPrimitive | FilterOperator;\nexport type SubscriptionFilter = Record<string, FilterClause>;\n\nfunction isPrimitive(v: unknown): v is FilterPrimitive {\n\tconst t = typeof v;\n\treturn t === \"string\" || t === \"number\" || t === \"boolean\";\n}\n\n/**\n * Coerce a value to BigInt for arbitrary-precision compare — avoids the\n * silent precision loss of `Number()` on integers past 2^53. Returns\n * `null` for non-integer numerics, which is fine because the filter DSL\n * is documented as scalar-only + integer-amount-aware (Stacks uses\n * uint128 bigint columns everywhere).\n */\nfunction coerceBigInt(v: unknown): bigint | null {\n\tif (typeof v === \"bigint\") return v;\n\tif (typeof v === \"number\") {\n\t\tif (!Number.isFinite(v)) return null;\n\t\tif (!Number.isInteger(v)) return null;\n\t\treturn BigInt(v);\n\t}\n\tif (typeof v === \"string\" && /^-?\\d+$/.test(v)) {\n\t\ttry {\n\t\t\treturn BigInt(v);\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\t}\n\treturn null;\n}\n\n/**\n * Float compare fallback — used when a value isn't a clean integer\n * (rare in subgraph columns but defensible for user-supplied filters).\n */\nfunction coerceFloat(v: unknown): number | null {\n\tif (typeof v === \"number\" && Number.isFinite(v)) return v;\n\tif (typeof v === \"bigint\") return Number(v);\n\tif (typeof v === \"string\" && v !== \"\" && !Number.isNaN(Number(v))) {\n\t\treturn Number(v);\n\t}\n\treturn null;\n}\n\nfunction compareNumeric(a: unknown, b: unknown): 0 | 1 | -1 | null {\n\tconst ba = coerceBigInt(a);\n\tconst bb = coerceBigInt(b);\n\tif (ba !== null && bb !== null) {\n\t\tif (ba === bb) return 0;\n\t\treturn ba > bb ? 1 : -1;\n\t}\n\tconst fa = coerceFloat(a);\n\tconst fb = coerceFloat(b);\n\tif (fa === null || fb === null) return null;\n\tif (fa === fb) return 0;\n\treturn fa > fb ? 1 : -1;\n}\n\nfunction matchClause(rowValue: unknown, clause: FilterClause): boolean {\n\t// Reject non-primitive row values — `{ value: {...} }` should not\n\t// match `filter: { value: \"[object Object]\" }` via loose stringify.\n\t// Bigints are not primitives in the JSON sense but are supported\n\t// scalar inputs from subgraph rows.\n\tconst rowIsPrimitive = isPrimitive(rowValue) || typeof rowValue === \"bigint\";\n\n\tif (isPrimitive(clause)) {\n\t\tif (!rowIsPrimitive) return false;\n\t\tif (\n\t\t\ttypeof clause === \"number\" ||\n\t\t\ttypeof rowValue === \"number\" ||\n\t\t\ttypeof rowValue === \"bigint\"\n\t\t) {\n\t\t\tconst cmp = compareNumeric(rowValue, clause);\n\t\t\tif (cmp !== null) return cmp === 0;\n\t\t}\n\t\treturn rowValue === clause || String(rowValue) === String(clause);\n\t}\n\n\tif (clause === null || typeof clause !== \"object\" || Array.isArray(clause)) {\n\t\treturn false;\n\t}\n\n\tconst keys = Object.keys(clause);\n\tif (keys.length !== 1) return false;\n\tconst op = keys[0];\n\n\tconst c = clause as Record<string, unknown>;\n\tswitch (op) {\n\t\tcase \"eq\":\n\t\t\treturn matchClause(rowValue, c.eq as FilterPrimitive);\n\t\tcase \"neq\":\n\t\t\treturn !matchClause(rowValue, c.neq as FilterPrimitive);\n\t\tcase \"gt\":\n\t\tcase \"gte\":\n\t\tcase \"lt\":\n\t\tcase \"lte\": {\n\t\t\tif (!rowIsPrimitive) return false;\n\t\t\tconst cmp = compareNumeric(rowValue, c[op]);\n\t\t\tif (cmp === null) return false;\n\t\t\tif (op === \"gt\") return cmp > 0;\n\t\t\tif (op === \"gte\") return cmp >= 0;\n\t\t\tif (op === \"lt\") return cmp < 0;\n\t\t\treturn cmp <= 0;\n\t\t}\n\t\tcase \"in\": {\n\t\t\tconst list = c.in;\n\t\t\tif (!Array.isArray(list)) return false;\n\t\t\tif (!rowIsPrimitive) return false;\n\t\t\treturn list.some(\n\t\t\t\t(item) => isPrimitive(item) && matchClause(rowValue, item),\n\t\t\t);\n\t\t}\n\t\tdefault:\n\t\t\treturn false;\n\t}\n}\n\nexport function matchesFilter(\n\tfilter: SubscriptionFilter | null | undefined,\n\trow: Record<string, unknown>,\n): boolean {\n\tif (!filter || Object.keys(filter).length === 0) return true;\n\tfor (const [col, clause] of Object.entries(filter)) {\n\t\tif (!matchClause(row[col], clause)) return false;\n\t}\n\treturn true;\n}\n\n// ── Cache keyed by (subgraph_name, table_name) ──────────────────────────\n\ntype MatcherKey = string;\n\nfunction key(subgraphName: string, tableName: string): MatcherKey {\n\treturn `${subgraphName}\u0000${tableName}`;\n}\n\nexport class SubscriptionMatcher {\n\tprivate readonly byKey = new Map<MatcherKey, Subscription[]>();\n\tprivate readonly byId = new Map<string, Subscription>();\n\n\t/** Replace the entire cache with a fresh snapshot. */\n\tsetAll(subs: Subscription[]): void {\n\t\tthis.byKey.clear();\n\t\tthis.byId.clear();\n\t\tfor (const sub of subs) {\n\t\t\tif (sub.status !== \"active\") continue;\n\t\t\t// This matcher keys on (subgraph, table) row writes; chain\n\t\t\t// subscriptions react to raw chain events and never flow through it.\n\t\t\tif (sub.kind !== \"subgraph\" || !sub.subgraph_name || !sub.table_name)\n\t\t\t\tcontinue;\n\t\t\tthis.byId.set(sub.id, sub);\n\t\t\tconst k = key(sub.subgraph_name, sub.table_name);\n\t\t\tconst arr = this.byKey.get(k);\n\t\t\tif (arr) arr.push(sub);\n\t\t\telse this.byKey.set(k, [sub]);\n\t\t}\n\t}\n\n\t/** Returns active subs for a (subgraph, table) whose filter matches the row. */\n\tmatch(\n\t\tsubgraphName: string,\n\t\ttableName: string,\n\t\trow: Record<string, unknown>,\n\t): Subscription[] {\n\t\tconst bucket = this.byKey.get(key(subgraphName, tableName));\n\t\tif (!bucket) return [];\n\t\tconst hits: Subscription[] = [];\n\t\tfor (const sub of bucket) {\n\t\t\tif (matchesFilter(sub.filter as SubscriptionFilter, row)) hits.push(sub);\n\t\t}\n\t\treturn hits;\n\t}\n\n\thas(subgraphName: string, tableName: string): boolean {\n\t\treturn this.byKey.has(key(subgraphName, tableName));\n\t}\n\n\tsize(): number {\n\t\treturn this.byId.size;\n\t}\n\n\tget(id: string): Subscription | undefined {\n\t\treturn this.byId.get(id);\n\t}\n}\n",
19
19
  "import type { Database } from \"@secondlayer/shared/db\";\nimport type { Kysely } from \"kysely\";\nimport type { ProcessBlockTiming } from \"./block-processor.ts\";\n\ninterface StatsEntry {\n\tsubgraphName: string;\n\tbucketStart: Date;\n\tblocksProcessed: number;\n\ttotalTimeMs: number;\n\thandlerTimeMs: number;\n\tflushTimeMs: number;\n\tmaxBlockTimeMs: number;\n\tmaxHandlerTimeMs: number;\n\ttotalOps: number;\n\tisCatchup: boolean;\n}\n\nconst FLUSH_INTERVAL_BLOCKS = 100;\nconst FLUSH_INTERVAL_MS = 60_000;\n\n/**\n * Accumulates per-block timing stats and flushes to DB periodically.\n * One instance per subgraph during catchup/reindex/live processing.\n */\nexport class StatsAccumulator {\n\tprivate current: StatsEntry;\n\tprivate lastFlush = Date.now();\n\n\tconstructor(\n\t\tprivate subgraphName: string,\n\t\tprivate isCatchup: boolean,\n\t) {\n\t\tthis.current = this.newEntry();\n\t}\n\n\trecord(timing: ProcessBlockTiming, opsCount: number): void {\n\t\tthis.current.blocksProcessed++;\n\t\tthis.current.totalTimeMs += timing.totalMs;\n\t\tthis.current.handlerTimeMs += timing.handlerMs;\n\t\tthis.current.flushTimeMs += timing.flushMs;\n\t\tthis.current.maxBlockTimeMs = Math.max(\n\t\t\tthis.current.maxBlockTimeMs,\n\t\t\ttiming.totalMs,\n\t\t);\n\t\tthis.current.maxHandlerTimeMs = Math.max(\n\t\t\tthis.current.maxHandlerTimeMs,\n\t\t\ttiming.handlerMs,\n\t\t);\n\t\tthis.current.totalOps += opsCount;\n\t}\n\n\tshouldFlush(): boolean {\n\t\treturn (\n\t\t\tthis.current.blocksProcessed >= FLUSH_INTERVAL_BLOCKS ||\n\t\t\tDate.now() - this.lastFlush >= FLUSH_INTERVAL_MS\n\t\t);\n\t}\n\n\tasync flush(db: Kysely<Database>): Promise<void> {\n\t\tif (this.current.blocksProcessed === 0) return;\n\n\t\tconst entry = this.current;\n\t\tthis.current = this.newEntry();\n\t\tthis.lastFlush = Date.now();\n\n\t\tconst avgOpsPerBlock =\n\t\t\tentry.blocksProcessed > 0 ? entry.totalOps / entry.blocksProcessed : 0;\n\n\t\tawait db\n\t\t\t.insertInto(\"subgraph_processing_stats\")\n\t\t\t.values({\n\t\t\t\tsubgraph_name: entry.subgraphName,\n\t\t\t\tbucket_start: entry.bucketStart,\n\t\t\t\tbucket_end: new Date(),\n\t\t\t\tblocks_processed: entry.blocksProcessed,\n\t\t\t\ttotal_time_ms: Math.round(entry.totalTimeMs),\n\t\t\t\thandler_time_ms: Math.round(entry.handlerTimeMs),\n\t\t\t\tflush_time_ms: Math.round(entry.flushTimeMs),\n\t\t\t\tmax_block_time_ms: Math.round(entry.maxBlockTimeMs),\n\t\t\t\tmax_handler_time_ms: Math.round(entry.maxHandlerTimeMs),\n\t\t\t\tavg_ops_per_block: Number.parseFloat(avgOpsPerBlock.toFixed(2)),\n\t\t\t\tis_catchup: entry.isCatchup,\n\t\t\t})\n\t\t\t.execute();\n\t}\n\n\tprivate newEntry(): StatsEntry {\n\t\treturn {\n\t\t\tsubgraphName: this.subgraphName,\n\t\t\tbucketStart: new Date(),\n\t\t\tblocksProcessed: 0,\n\t\t\ttotalTimeMs: 0,\n\t\t\thandlerTimeMs: 0,\n\t\t\tflushTimeMs: 0,\n\t\t\tmaxBlockTimeMs: 0,\n\t\t\tmaxHandlerTimeMs: 0,\n\t\t\ttotalOps: 0,\n\t\t\tisCatchup: this.isCatchup,\n\t\t};\n\t}\n}\n",
20
- "import { getErrorMessage } from \"@secondlayer/shared\";\nimport { getRawClient, getTargetDb } from \"@secondlayer/shared/db\";\nimport {\n\ttype GapRange,\n\trecordGapBatch,\n\tresolveGaps,\n} from \"@secondlayer/shared/db/queries/subgraph-gaps\";\nimport {\n\tadvanceOperationCursor,\n\tupdateOperationProcessedEvents,\n} from \"@secondlayer/shared/db/queries/subgraph-operations\";\nimport {\n\trecordSubgraphProcessed,\n\tupdateSubgraphStatus,\n} from \"@secondlayer/shared/db/queries/subgraphs\";\nimport { logger } from \"@secondlayer/shared/logger\";\nimport { generateSubgraphSQL } from \"../schema/generator.ts\";\nimport { pgSchemaName } from \"../schema/utils.ts\";\nimport type { SubgraphDefinition } from \"../types.ts\";\nimport { avgEventsPerBlock } from \"./batch-loader.ts\";\nimport {\n\ttype ProcessBlockResult,\n\tprocessBlockWithRetry,\n} from \"./block-processor.ts\";\nimport {\n\ttype BlockSource,\n\tcanSparseScan,\n\tresolveBlockSource,\n} from \"./block-source.ts\";\nimport { StatsAccumulator } from \"./stats.ts\";\n\nconst LOG_INTERVAL = 1000;\nconst HEALTH_FLUSH_INTERVAL = 1000;\nconst PROGRESS_FLUSH_INTERVAL_MS = 5_000;\n/** Consecutive fully-empty batches before the walk halts as source-degraded. */\nconst EMPTY_BATCH_HALT_THRESHOLD = 3;\nconst STANDARD_REINDEX_BATCH_CONFIG = {\n\tdefaultBatchSize: 500,\n\tminBatchSize: 100,\n\tmaxBatchSize: 1000,\n};\n\ntype ReindexBatchConfig = {\n\tdefaultBatchSize: number;\n\tminBatchSize: number;\n\tmaxBatchSize: number;\n};\ntype ReindexBatchEnv = {\n\tSUBGRAPH_REINDEX_BATCH_SIZE?: string;\n\tSUBGRAPH_REINDEX_MIN_BATCH_SIZE?: string;\n\tSUBGRAPH_REINDEX_MAX_BATCH_SIZE?: string;\n};\n\ntype ReindexResumeRow = {\n\tlast_processed_block: number | string;\n\treindex_from_block: number | string | null;\n\treindex_to_block: number | string | null;\n};\n\nexport function initialReindexProgressBlock(fromBlock: number): number {\n\treturn Math.max(0, fromBlock - 1);\n}\n\nexport function resolveReindexResumeBlock(\n\trow: ReindexResumeRow,\n): number | null {\n\tif (row.reindex_from_block == null || row.reindex_to_block == null) {\n\t\treturn null;\n\t}\n\n\tconst lastProcessedBlock = Number(row.last_processed_block);\n\tconst reindexFromBlock = Number(row.reindex_from_block);\n\n\treturn Math.max(lastProcessedBlock + 1, reindexFromBlock);\n}\n\nfunction parsePositiveInt(value: string | undefined): number | undefined {\n\tif (value == null || value.trim() === \"\") return undefined;\n\tconst parsed = Number.parseInt(value, 10);\n\treturn Number.isFinite(parsed) && parsed > 0 ? parsed : undefined;\n}\n\nexport function resolveReindexBatchConfig(\n\tenv: ReindexBatchEnv = process.env as ReindexBatchEnv,\n): ReindexBatchConfig {\n\tconst base = STANDARD_REINDEX_BATCH_CONFIG;\n\tconst minBatchSize =\n\t\tparsePositiveInt(env.SUBGRAPH_REINDEX_MIN_BATCH_SIZE) ?? base.minBatchSize;\n\tconst maxBatchSize =\n\t\tparsePositiveInt(env.SUBGRAPH_REINDEX_MAX_BATCH_SIZE) ?? base.maxBatchSize;\n\tconst defaultBatchSize =\n\t\tparsePositiveInt(env.SUBGRAPH_REINDEX_BATCH_SIZE) ?? base.defaultBatchSize;\n\n\treturn {\n\t\tminBatchSize,\n\t\tmaxBatchSize,\n\t\tdefaultBatchSize: Math.min(\n\t\t\tMath.max(defaultBatchSize, minBatchSize),\n\t\t\tmaxBatchSize,\n\t\t),\n\t};\n}\n\n/**\n * Coalesce individual block heights + reasons into contiguous gap ranges.\n */\nfunction coalesceFailedBlocks(\n\tblocks: { height: number; reason: string }[],\n): GapRange[] {\n\tif (blocks.length === 0) return [];\n\tblocks.sort((a, b) => a.height - b.height);\n\n\tconst ranges: GapRange[] = [];\n\tlet start = blocks[0].height;\n\tlet end = blocks[0].height;\n\tlet reason = blocks[0].reason;\n\n\tfor (let i = 1; i < blocks.length; i++) {\n\t\tconst b = blocks[i];\n\t\tif (b.height === end + 1 && b.reason === reason) {\n\t\t\tend = b.height;\n\t\t} else {\n\t\t\tranges.push({ start, end, reason });\n\t\t\tstart = b.height;\n\t\t\tend = b.height;\n\t\t\treason = b.reason;\n\t\t}\n\t}\n\tranges.push({ start, end, reason });\n\treturn ranges;\n}\n\nexport interface ReindexOptions {\n\tfromBlock?: number;\n\ttoBlock?: number;\n\tschemaName?: string;\n\t/** Op row to receive processed_events on each progress flush. */\n\toperationId?: string;\n\tsignal?: AbortSignal;\n}\n\n/**\n * Shared block range processor used by both reindex and backfill.\n * Processes blocks in batches with prefetch pipeline.\n * Supports cancellation via AbortSignal — breaks cleanly at batch boundaries.\n */\nasync function processBlockRange(\n\tdef: SubgraphDefinition,\n\topts: {\n\t\tfromBlock: number;\n\t\ttoBlock: number;\n\t\tstatus: string;\n\t\tisCatchup: boolean;\n\t\tapiKeyId: string | null;\n\t\tsubgraphId?: string;\n\t\t/** When set, the progress flush writes processed_events onto the op row\n\t\t * — the honest numerator for event-based progress/ETA. */\n\t\toperationId?: string;\n\t\tsignal?: AbortSignal;\n\t},\n): Promise<{\n\tblocksProcessed: number;\n\ttotalEventsProcessed: number;\n\ttotalErrors: number;\n\taborted: boolean;\n}> {\n\tconst source = resolveBlockSource(def);\n\tconst targetDb = getTargetDb();\n\tconst subgraphName = def.name;\n\tconst { fromBlock, toBlock, status } = opts;\n\tconst totalBlocks = toBlock - fromBlock + 1;\n\n\tconst stats = new StatsAccumulator(subgraphName, opts.isCatchup);\n\tlet blocksProcessed = 0;\n\tlet blocksSkippedByCursor = 0;\n\tlet totalEventsProcessed = 0;\n\tlet totalErrors = 0;\n\tlet pendingEventsProcessed = 0;\n\tlet pendingErrors = 0;\n\tlet pendingLastError: string | undefined;\n\tlet lastHealthFlushBlock = 0;\n\tlet lastHealthFlushAt = Date.now();\n\tlet lastProgressFlushAt = Date.now();\n\tconst batchConfig = resolveReindexBatchConfig();\n\tlet batchSize = batchConfig.defaultBatchSize;\n\tlet currentHeight = fromBlock;\n\tlet aborted = false;\n\tlet consecutiveEmptyBatches = 0;\n\t// Sparse scan: when a whole batch matches nothing, ask the source for the\n\t// next height that could match and leap there — token-scoped genesis\n\t// reindexes skip the (often vast) majority of chain history.\n\tconst sparse = Boolean(source.nextDataHeight && canSparseScan(def));\n\n\tconst flushHealth = async () => {\n\t\tif (pendingEventsProcessed === 0 && pendingErrors === 0) return;\n\t\tawait recordSubgraphProcessed(\n\t\t\ttargetDb,\n\t\t\tsubgraphName,\n\t\t\tpendingEventsProcessed,\n\t\t\tpendingErrors,\n\t\t\tpendingLastError,\n\t\t);\n\t\tpendingEventsProcessed = 0;\n\t\tpendingErrors = 0;\n\t\tpendingLastError = undefined;\n\t\tlastHealthFlushBlock = blocksProcessed;\n\t\tlastHealthFlushAt = Date.now();\n\t};\n\n\t/**\n\t * Stop the walk at an unprocessable block: surface the error, mark the\n\t * subgraph errored, and throw. Deliberately does NOT touch\n\t * last_processed_block — the cursor stays before the failed block so a\n\t * restart re-attempts it instead of silently skipping its events.\n\t */\n\tconst haltRange = async (\n\t\terrorMsg: string,\n\t\theight: number,\n\t): Promise<never> => {\n\t\tpendingErrors++;\n\t\tpendingLastError = errorMsg;\n\t\tawait flushHealth().catch(() => {});\n\t\tawait updateSubgraphStatus(targetDb, subgraphName, \"error\").catch(() => {});\n\t\tthrow new Error(`${subgraphName}: halted at block ${height}: ${errorMsg}`);\n\t};\n\n\t// Pipeline: start loading first batch and track the prefetched range.\n\t// batchEnd must match what was actually loaded — not recalculated from a\n\t// potentially resized batchSize (adaptive sizing can change it between iterations).\n\tlet nextBatchEnd = Math.min(currentHeight + batchSize - 1, toBlock);\n\tlet nextBatchPromise = source.loadBlockRange(currentHeight, nextBatchEnd);\n\n\twhile (currentHeight <= toBlock) {\n\t\t// Check for abort at batch boundary\n\t\tif (opts.signal?.aborted) {\n\t\t\taborted = true;\n\t\t\tlogger.info(\"Block processing aborted\", {\n\t\t\t\tsubgraph: subgraphName,\n\t\t\t\tcurrentBlock: currentHeight,\n\t\t\t\treason: String(opts.signal.reason ?? \"unknown\"),\n\t\t\t});\n\t\t\tbreak;\n\t\t}\n\n\t\tconst batch = await nextBatchPromise;\n\t\tconst batchEnd = nextBatchEnd;\n\n\t\t// Source-health guard (fix-f040 B7): the source seeds every canonical\n\t\t// height in range (including empty blocks), so consecutive fully-empty\n\t\t// batches mean the SOURCE is degraded — not that thousands of blocks\n\t\t// are absent. The old behavior filed every height as a block_missing\n\t\t// gap and kept walking; one degraded source minted thousands of false\n\t\t// gap rows in minutes.\n\t\tif (batch.size === 0 && batchEnd >= currentHeight) {\n\t\t\tconsecutiveEmptyBatches++;\n\t\t\tif (consecutiveEmptyBatches >= EMPTY_BATCH_HALT_THRESHOLD) {\n\t\t\t\tawait haltRange(\n\t\t\t\t\t`block source returned ${consecutiveEmptyBatches} consecutive empty batches (ending ${currentHeight}..${batchEnd}) — source degraded`,\n\t\t\t\t\tcurrentHeight,\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\tconsecutiveEmptyBatches = 0;\n\t\t}\n\n\t\t// Prefetch next batch (uses current batchSize, which may have been adapted)\n\t\tconst nextStart = batchEnd + 1;\n\t\tif (nextStart <= toBlock) {\n\t\t\tnextBatchEnd = Math.min(nextStart + batchSize - 1, toBlock);\n\t\t\tnextBatchPromise = source.loadBlockRange(nextStart, nextBatchEnd);\n\t\t}\n\n\t\tconst batchFailedBlocks: { height: number; reason: string }[] = [];\n\t\tlet batchMatched = 0;\n\t\t// Reindex is a strictly ascending walk over the subgraph's own cursor, so\n\t\t// written blocks checkpoint atomically and replays skip (fix-f040 B3).\n\t\t// Backfill revisits heights below the live cursor — must stay batched.\n\t\t// Reindex checkpoints on the subgraph cursor; backfill (status 'active')\n\t\t// revisits heights BELOW the live cursor, so it checkpoints on its own\n\t\t// op row instead — and must NEVER write the live cursor (an unconditional\n\t\t// historical SET would regress it and make catch-up re-walk + double-apply).\n\t\tconst opCursor =\n\t\t\tstatus === \"active\" && opts.operationId\n\t\t\t\t? { operationId: opts.operationId }\n\t\t\t\t: undefined;\n\t\tconst atomicProgress = status === \"reindexing\" ? { status } : opCursor;\n\n\t\tfor (let height = currentHeight; height <= batchEnd; height++) {\n\t\t\tlet blockData = batch.get(height);\n\t\t\tif (!blockData) {\n\t\t\t\t// Could be a transient source hiccup — refetch the single height\n\t\t\t\t// before concluding the block is genuinely absent.\n\t\t\t\tblockData = (await source.loadBlockRange(height, height)).get(height);\n\t\t\t}\n\t\t\tif (!blockData) {\n\t\t\t\tif (status === \"reindexing\") {\n\t\t\t\t\t// Strict: a missing source block means every downstream value is\n\t\t\t\t\t// wrong, not approximately right. Halt; do not advance past it.\n\t\t\t\t\tconst errorMsg = `block ${height} missing from source — halting reindex (cursor stays at ${height - 1})`;\n\t\t\t\t\tawait haltRange(errorMsg, height);\n\t\t\t\t}\n\t\t\t\t// Backfill: the range IS the gap-repair pass; record what's still\n\t\t\t\t// missing and keep going.\n\t\t\t\tbatchFailedBlocks.push({ height, reason: \"block_missing\" });\n\t\t\t\tblocksProcessed++;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tlet result: ProcessBlockResult;\n\t\t\ttry {\n\t\t\t\tresult = await processBlockWithRetry(def, subgraphName, height, {\n\t\t\t\t\tskipProgressUpdate: true,\n\t\t\t\t\tatomicProgress,\n\t\t\t\t\tpreloaded: blockData,\n\t\t\t\t});\n\t\t\t} catch (err) {\n\t\t\t\tconst errorMsg = getErrorMessage(err);\n\t\t\t\tlogger.error(\"Block processing failed persistently\", {\n\t\t\t\t\tsubgraph: subgraphName,\n\t\t\t\t\tblockHeight: height,\n\t\t\t\t\terror: errorMsg,\n\t\t\t\t});\n\t\t\t\tif (status === \"reindexing\") {\n\t\t\t\t\t// Strict: skipping a block of events silently corrupts every\n\t\t\t\t\t// accumulator downstream. Halt with the cursor still BEFORE the\n\t\t\t\t\t// failed block so a restart re-attempts it (fix-f040 B5).\n\t\t\t\t\tawait haltRange(\n\t\t\t\t\t\t`block ${height} failed persistently: ${errorMsg}`,\n\t\t\t\t\t\theight,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\t// Backfill: record and continue — the gap row keeps it repairable.\n\t\t\t\tbatchFailedBlocks.push({ height, reason: \"processing_error\" });\n\t\t\t\tblocksProcessed++;\n\t\t\t\ttotalErrors++;\n\t\t\t\tpendingErrors++;\n\t\t\t\tpendingLastError = errorMsg;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tblocksProcessed++;\n\t\t\tif (result.skipped) blocksSkippedByCursor++;\n\t\t\tbatchMatched += result.matched;\n\t\t\ttotalEventsProcessed += result.processed;\n\t\t\ttotalErrors += result.errors;\n\t\t\tpendingEventsProcessed += result.processed;\n\t\t\tpendingErrors += result.errors;\n\t\t\tif (result.errors > 0) {\n\t\t\t\tpendingLastError = `${result.errors} error(s) while processing block ${height}`;\n\t\t\t}\n\n\t\t\tif (result.timing) {\n\t\t\t\tstats.record(result.timing, result.processed);\n\t\t\t\tif (stats.shouldFlush()) {\n\t\t\t\t\tawait stats.flush(targetDb);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst now = Date.now();\n\t\t\tconst shouldFlushProgress =\n\t\t\t\tblocksProcessed % 100 === 0 ||\n\t\t\t\tnow - lastProgressFlushAt >= PROGRESS_FLUSH_INTERVAL_MS;\n\t\t\tif (shouldFlushProgress) {\n\t\t\t\tif (opCursor) {\n\t\t\t\t\t// Covers write-less stretches; conditional → can't regress the\n\t\t\t\t\t// in-tx advances written by processed blocks.\n\t\t\t\t\tawait advanceOperationCursor(targetDb, opCursor.operationId, height);\n\t\t\t\t} else {\n\t\t\t\t\tawait updateSubgraphStatus(targetDb, subgraphName, status, height);\n\t\t\t\t}\n\t\t\t\tif (opts.operationId) {\n\t\t\t\t\tawait updateOperationProcessedEvents(\n\t\t\t\t\t\ttargetDb,\n\t\t\t\t\t\topts.operationId,\n\t\t\t\t\t\ttotalEventsProcessed,\n\t\t\t\t\t).catch(() => {});\n\t\t\t\t}\n\t\t\t\tlastProgressFlushAt = now;\n\t\t\t}\n\n\t\t\tif (blocksProcessed % LOG_INTERVAL === 0) {\n\t\t\t\tlogger.info(\n\t\t\t\t\t`${status === \"reindexing\" ? \"Reindex\" : \"Backfill\"} progress`,\n\t\t\t\t\t{\n\t\t\t\t\t\tsubgraph: subgraphName,\n\t\t\t\t\t\tprocessed: blocksProcessed,\n\t\t\t\t\t\ttotal: totalBlocks,\n\t\t\t\t\t\tcurrentBlock: height,\n\t\t\t\t\t\tpct: Math.round((blocksProcessed / totalBlocks) * 100),\n\t\t\t\t\t\t...(blocksSkippedByCursor > 0\n\t\t\t\t\t\t\t? { skippedByCursor: blocksSkippedByCursor }\n\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tif (status === \"reindexing\" && blocksProcessed > 0) {\n\t\t\tawait updateSubgraphStatus(targetDb, subgraphName, status, batchEnd);\n\t\t}\n\n\t\tconst shouldFlushHealth =\n\t\t\tblocksProcessed - lastHealthFlushBlock >= HEALTH_FLUSH_INTERVAL ||\n\t\t\tDate.now() - lastHealthFlushAt >= PROGRESS_FLUSH_INTERVAL_MS;\n\t\tif (shouldFlushHealth) {\n\t\t\tawait flushHealth();\n\t\t}\n\n\t\t// Record any gaps from this batch\n\t\tif (batchFailedBlocks.length > 0 && opts.subgraphId) {\n\t\t\tconst gaps = coalesceFailedBlocks(batchFailedBlocks);\n\t\t\tawait recordGapBatch(targetDb, opts.subgraphId, subgraphName, gaps).catch(\n\t\t\t\t(err: unknown) => {\n\t\t\t\t\tlogger.warn(\"Failed to record subgraph gaps\", {\n\t\t\t\t\t\tsubgraph: subgraphName,\n\t\t\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\n\t\t// Sparse skip: nothing in this batch could match → probe for the next\n\t\t// height that can, and jump the cursor there. The in-flight prefetch is\n\t\t// discarded (one wasted fetch buys skipping arbitrarily many).\n\t\tif (\n\t\t\tsparse &&\n\t\t\tbatchMatched === 0 &&\n\t\t\tbatchEnd < toBlock &&\n\t\t\tsource.nextDataHeight\n\t\t) {\n\t\t\tconst next = await source.nextDataHeight(batchEnd, toBlock);\n\t\t\tconst jumpTo = next === null ? toBlock + 1 : Math.max(next, batchEnd + 1);\n\t\t\tif (jumpTo > batchEnd + 1) {\n\t\t\t\tconst skipped = Math.min(jumpTo, toBlock + 1) - (batchEnd + 1);\n\t\t\t\tblocksProcessed += skipped;\n\t\t\t\tif (opCursor) {\n\t\t\t\t\tawait advanceOperationCursor(\n\t\t\t\t\t\ttargetDb,\n\t\t\t\t\t\topCursor.operationId,\n\t\t\t\t\t\tjumpTo - 1,\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tawait updateSubgraphStatus(\n\t\t\t\t\t\ttargetDb,\n\t\t\t\t\t\tsubgraphName,\n\t\t\t\t\t\tstatus,\n\t\t\t\t\t\tjumpTo - 1,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tlogger.info(\"Sparse skip\", {\n\t\t\t\t\tsubgraph: subgraphName,\n\t\t\t\t\tfrom: batchEnd + 1,\n\t\t\t\t\tto: jumpTo - 1,\n\t\t\t\t\tskipped,\n\t\t\t\t});\n\t\t\t\tcurrentHeight = jumpTo;\n\t\t\t\tif (currentHeight <= toBlock) {\n\t\t\t\t\tnextBatchEnd = Math.min(currentHeight + batchSize - 1, toBlock);\n\t\t\t\t\tnextBatchPromise = source.loadBlockRange(currentHeight, nextBatchEnd);\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\t// Adaptive batch sizing\n\t\tconst avg = avgEventsPerBlock(batch);\n\t\tif (avg > 50)\n\t\t\tbatchSize = Math.max(\n\t\t\t\tMath.round(batchSize * 0.5),\n\t\t\t\tbatchConfig.minBatchSize,\n\t\t\t);\n\t\telse if (avg < 10)\n\t\t\tbatchSize = Math.min(\n\t\t\t\tMath.round(batchSize * 1.5),\n\t\t\t\tbatchConfig.maxBatchSize,\n\t\t\t);\n\n\t\tcurrentHeight = batchEnd + 1;\n\t}\n\n\tawait stats.flush(targetDb);\n\tawait flushHealth();\n\treturn { blocksProcessed, totalEventsProcessed, totalErrors, aborted };\n}\n\n/**\n * Resolve block range from options, defaulting to def.startBlock..chain_tip.\n * Chain tip reads from `index_progress` — lives in the source DB.\n */\nasync function resolveBlockRange(\n\tsource: BlockSource,\n\tdef: SubgraphDefinition,\n\topts?: ReindexOptions,\n): Promise<{ fromBlock: number; toBlock: number }> {\n\tconst fromBlock = opts?.fromBlock ?? def.startBlock ?? 1;\n\tconst toBlock = opts?.toBlock != null ? opts.toBlock : await source.getTip();\n\treturn { fromBlock, toBlock };\n}\n\n/**\n * Clear reindex metadata columns after completion or cancellation.\n */\nasync function clearReindexMetadata(\n\tdb: ReturnType<typeof getTargetDb>,\n\tsubgraphName: string,\n): Promise<void> {\n\tawait db\n\t\t.updateTable(\"subgraphs\")\n\t\t.set({ reindex_from_block: null, reindex_to_block: null })\n\t\t.where(\"name\", \"=\", subgraphName)\n\t\t.execute();\n}\n\n/**\n * Reindex a subgraph by dropping its tables, recreating them, and reprocessing\n * all historical blocks through the handler pipeline.\n * Supports cancellation via AbortSignal — on shutdown abort, status stays\n * \"reindexing\" for auto-resume; on user cancel, status resets to \"active\".\n */\nexport async function reindexSubgraph(\n\tdef: SubgraphDefinition,\n\topts?: ReindexOptions,\n): Promise<{ processed: number }> {\n\t// Chain tip reads hit the block source; subgraph rows + tenant schemas live in target\n\tconst source = resolveBlockSource(def);\n\tconst targetDb = getTargetDb();\n\tconst client = getRawClient(\"target\");\n\tconst subgraphName = def.name;\n\tconst schemaName = opts?.schemaName ?? pgSchemaName(subgraphName);\n\n\tawait updateSubgraphStatus(targetDb, subgraphName, \"reindexing\");\n\tlogger.info(\"Reindex starting\", { subgraph: subgraphName });\n\n\ttry {\n\t\t// Resolve block range BEFORE schema drop so we can persist metadata\n\t\tconst { fromBlock, toBlock } = await resolveBlockRange(source, def, opts);\n\n\t\tif (fromBlock > toBlock) {\n\t\t\tlogger.info(\"No blocks to reindex\", {\n\t\t\t\tsubgraph: subgraphName,\n\t\t\t\tfromBlock,\n\t\t\t\ttoBlock,\n\t\t\t});\n\t\t\tawait updateSubgraphStatus(targetDb, subgraphName, \"active\", 0);\n\t\t\treturn { processed: 0 };\n\t\t}\n\n\t\t// Drop and recreate schema + tables (tenant-side DDL)\n\t\tawait client.unsafe(`DROP SCHEMA IF EXISTS \"${schemaName}\" CASCADE`);\n\t\tconst { statements } = generateSubgraphSQL(def, schemaName);\n\t\tfor (const stmt of statements) {\n\t\t\tawait client.unsafe(stmt);\n\t\t}\n\t\tlogger.info(\"Schema recreated for reindex\", { subgraph: subgraphName });\n\n\t\t// Store reindex range after DDL is ready. A crash before this point falls\n\t\t// back to a fresh reindex, which safely drops/recreates the schema again.\n\t\tawait targetDb\n\t\t\t.updateTable(\"subgraphs\")\n\t\t\t.set({\n\t\t\t\tlast_processed_block: initialReindexProgressBlock(fromBlock),\n\t\t\t\treindex_from_block: fromBlock,\n\t\t\t\treindex_to_block: toBlock,\n\t\t\t\ttotal_processed: 0,\n\t\t\t\ttotal_errors: 0,\n\t\t\t\tlast_error: null,\n\t\t\t\tlast_error_at: null,\n\t\t\t\tupdated_at: new Date(),\n\t\t\t})\n\t\t\t.where(\"name\", \"=\", subgraphName)\n\t\t\t.execute();\n\n\t\tlogger.info(\"Reindexing blocks\", {\n\t\t\tsubgraph: subgraphName,\n\t\t\tfromBlock,\n\t\t\ttoBlock,\n\t\t\ttotalBlocks: toBlock - fromBlock + 1,\n\t\t});\n\n\t\tconst subgraphRow = await targetDb\n\t\t\t.selectFrom(\"subgraphs\")\n\t\t\t.select([\"id\"])\n\t\t\t.where(\"name\", \"=\", subgraphName)\n\t\t\t.executeTakeFirst();\n\n\t\tconst result = await processBlockRange(def, {\n\t\t\tfromBlock,\n\t\t\ttoBlock,\n\t\t\tstatus: \"reindexing\",\n\t\t\tisCatchup: false,\n\t\t\tapiKeyId: null,\n\t\t\tsubgraphId: subgraphRow?.id,\n\t\t\toperationId: opts?.operationId,\n\t\t\tsignal: opts?.signal,\n\t\t});\n\n\t\t// Handle abort\n\t\tif (result.aborted) {\n\t\t\tconst reason = String(opts?.signal?.reason ?? \"unknown\");\n\t\t\tif (reason === \"user-cancelled\") {\n\t\t\t\tawait updateSubgraphStatus(targetDb, subgraphName, \"active\");\n\t\t\t\tawait clearReindexMetadata(targetDb, subgraphName);\n\t\t\t\tlogger.info(\"Reindex cancelled by user\", { subgraph: subgraphName });\n\t\t\t} else {\n\t\t\t\t// shutdown — leave status as \"reindexing\" for auto-resume\n\t\t\t\tlogger.info(\"Reindex interrupted by shutdown, will resume\", {\n\t\t\t\t\tsubgraph: subgraphName,\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn { processed: result.blocksProcessed };\n\t\t}\n\n\t\tawait updateSubgraphStatus(targetDb, subgraphName, \"active\", toBlock);\n\t\tawait clearReindexMetadata(targetDb, subgraphName);\n\t\tlogger.info(\"Reindex complete\", {\n\t\t\tsubgraph: subgraphName,\n\t\t\tblocks: result.blocksProcessed,\n\t\t\tevents: result.totalEventsProcessed,\n\t\t\terrors: result.totalErrors,\n\t\t});\n\t\treturn { processed: result.blocksProcessed };\n\t} catch (err) {\n\t\tlogger.error(\"Reindex failed\", {\n\t\t\tsubgraph: subgraphName,\n\t\t\terror: getErrorMessage(err),\n\t\t});\n\t\tawait updateSubgraphStatus(targetDb, subgraphName, \"error\");\n\t\tthrow err;\n\t}\n}\n\n/**\n * Resume a previously interrupted reindex. Skips schema drop (already done)\n * and continues from last_processed_block + 1.\n */\nexport async function resumeReindex(\n\tdef: SubgraphDefinition,\n\topts: {\n\t\tschemaName: string;\n\t\toperationId?: string;\n\t\tsignal?: AbortSignal;\n\t},\n): Promise<{ processed: number }> {\n\tconst targetDb = getTargetDb();\n\tconst subgraphName = def.name;\n\n\tconst row = await targetDb\n\t\t.selectFrom(\"subgraphs\")\n\t\t.select([\n\t\t\t\"id\",\n\t\t\t\"last_processed_block\",\n\t\t\t\"reindex_from_block\",\n\t\t\t\"reindex_to_block\",\n\t\t])\n\t\t.where(\"name\", \"=\", subgraphName)\n\t\t.executeTakeFirst();\n\n\tif (!row) throw new Error(`Subgraph \"${subgraphName}\" not found`);\n\n\tconst fromBlock = resolveReindexResumeBlock(row);\n\tconst toBlock = Number(row.reindex_to_block);\n\n\t// Legacy: no reindex metadata — fall back to full reindex\n\tif (fromBlock == null) {\n\t\tlogger.info(\"No reindex metadata, starting fresh reindex\", {\n\t\t\tsubgraph: subgraphName,\n\t\t});\n\t\treturn reindexSubgraph(def, {\n\t\t\tschemaName: opts.schemaName,\n\t\t\tsignal: opts.signal,\n\t\t});\n\t}\n\n\tif (fromBlock > toBlock) {\n\t\tlogger.info(\"Resume: no remaining blocks\", { subgraph: subgraphName });\n\t\tawait updateSubgraphStatus(targetDb, subgraphName, \"active\", toBlock);\n\t\tawait clearReindexMetadata(targetDb, subgraphName);\n\t\treturn { processed: 0 };\n\t}\n\n\tlogger.info(\"Resuming reindex\", {\n\t\tsubgraph: subgraphName,\n\t\tfromBlock,\n\t\ttoBlock,\n\t\tremaining: toBlock - fromBlock + 1,\n\t});\n\n\ttry {\n\t\tconst result = await processBlockRange(def, {\n\t\t\tfromBlock,\n\t\t\ttoBlock,\n\t\t\tstatus: \"reindexing\",\n\t\t\tisCatchup: false,\n\t\t\tapiKeyId: null,\n\t\t\tsubgraphId: row.id,\n\t\t\toperationId: opts.operationId,\n\t\t\tsignal: opts.signal,\n\t\t});\n\n\t\tif (result.aborted) {\n\t\t\tconst reason = String(opts.signal?.reason ?? \"unknown\");\n\t\t\tif (reason === \"user-cancelled\") {\n\t\t\t\tawait updateSubgraphStatus(targetDb, subgraphName, \"active\");\n\t\t\t\tawait clearReindexMetadata(targetDb, subgraphName);\n\t\t\t\tlogger.info(\"Resume cancelled by user\", { subgraph: subgraphName });\n\t\t\t} else {\n\t\t\t\tlogger.info(\"Resume interrupted by shutdown, will resume again\", {\n\t\t\t\t\tsubgraph: subgraphName,\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn { processed: result.blocksProcessed };\n\t\t}\n\n\t\tawait updateSubgraphStatus(targetDb, subgraphName, \"active\", toBlock);\n\t\tawait clearReindexMetadata(targetDb, subgraphName);\n\t\tlogger.info(\"Resumed reindex complete\", {\n\t\t\tsubgraph: subgraphName,\n\t\t\tblocks: result.blocksProcessed,\n\t\t});\n\t\treturn { processed: result.blocksProcessed };\n\t} catch (err) {\n\t\tlogger.error(\"Resumed reindex failed\", {\n\t\t\tsubgraph: subgraphName,\n\t\t\terror: getErrorMessage(err),\n\t\t});\n\t\tawait updateSubgraphStatus(targetDb, subgraphName, \"error\");\n\t\tthrow err;\n\t}\n}\n\n/**\n * Backfill a subgraph by re-processing a block range WITHOUT dropping the schema.\n * Uses upserts so existing data is updated, not duplicated. Safe to run while\n * the subgraph is actively syncing.\n */\nexport async function backfillSubgraph(\n\tdef: SubgraphDefinition,\n\topts: {\n\t\tfromBlock: number;\n\t\ttoBlock: number;\n\t\tschemaName?: string;\n\t\toperationId?: string;\n\t\tsignal?: AbortSignal;\n\t},\n): Promise<{ processed: number }> {\n\tconst targetDb = getTargetDb();\n\tconst subgraphName = def.name;\n\n\tlogger.info(\"Backfill starting\", {\n\t\tsubgraph: subgraphName,\n\t\tfrom: opts.fromBlock,\n\t\tto: opts.toBlock,\n\t});\n\n\ttry {\n\t\tconst subgraphRow = await targetDb\n\t\t\t.selectFrom(\"subgraphs\")\n\t\t\t.select([\"id\"])\n\t\t\t.where(\"name\", \"=\", subgraphName)\n\t\t\t.executeTakeFirst();\n\n\t\tconst result = await processBlockRange(def, {\n\t\t\tfromBlock: opts.fromBlock,\n\t\t\ttoBlock: opts.toBlock,\n\t\t\tstatus: \"active\",\n\t\t\tisCatchup: false,\n\t\t\tapiKeyId: null,\n\t\t\tsubgraphId: subgraphRow?.id,\n\t\t\toperationId: opts.operationId,\n\t\t\tsignal: opts.signal,\n\t\t});\n\n\t\tif (result.aborted) {\n\t\t\tlogger.info(\"Backfill aborted\", { subgraph: subgraphName });\n\t\t\treturn { processed: result.blocksProcessed };\n\t\t}\n\n\t\t// Resolve any gaps within the backfilled range\n\t\tconst resolved = await resolveGaps(\n\t\t\ttargetDb,\n\t\t\tsubgraphName,\n\t\t\topts.fromBlock,\n\t\t\topts.toBlock,\n\t\t).catch(() => 0);\n\t\tif (resolved > 0) {\n\t\t\tlogger.info(\"Resolved subgraph gaps via backfill\", {\n\t\t\t\tsubgraph: subgraphName,\n\t\t\t\tresolved,\n\t\t\t});\n\t\t}\n\n\t\tlogger.info(\"Backfill complete\", {\n\t\t\tsubgraph: subgraphName,\n\t\t\tblocks: result.blocksProcessed,\n\t\t\tevents: result.totalEventsProcessed,\n\t\t\terrors: result.totalErrors,\n\t\t});\n\t\treturn { processed: result.blocksProcessed };\n\t} catch (err) {\n\t\tlogger.error(\"Backfill failed\", {\n\t\t\tsubgraph: subgraphName,\n\t\t\terror: getErrorMessage(err),\n\t\t});\n\t\tthrow err;\n\t}\n}\n",
20
+ "import { getErrorMessage } from \"@secondlayer/shared\";\nimport { getRawClient, getTargetDb } from \"@secondlayer/shared/db\";\nimport {\n\ttype GapRange,\n\trecordGapBatch,\n\tresolveGaps,\n} from \"@secondlayer/shared/db/queries/subgraph-gaps\";\nimport {\n\tadvanceOperationCursor,\n\tupdateOperationProcessedEvents,\n} from \"@secondlayer/shared/db/queries/subgraph-operations\";\nimport {\n\trecordSubgraphProcessed,\n\tupdateSubgraphStatus,\n} from \"@secondlayer/shared/db/queries/subgraphs\";\nimport { logger } from \"@secondlayer/shared/logger\";\nimport { generateSubgraphSQL } from \"../schema/generator.ts\";\nimport { pgSchemaName } from \"../schema/utils.ts\";\nimport type { SubgraphDefinition } from \"../types.ts\";\nimport { avgEventsPerBlock } from \"./batch-loader.ts\";\nimport {\n\ttype ProcessBlockResult,\n\tprocessBlockWithRetry,\n} from \"./block-processor.ts\";\nimport {\n\ttype BlockSource,\n\tcanSparseScan,\n\tresolveBlockSource,\n} from \"./block-source.ts\";\nimport { StatsAccumulator } from \"./stats.ts\";\n\nconst LOG_INTERVAL = 1000;\nconst HEALTH_FLUSH_INTERVAL = 1000;\nconst PROGRESS_FLUSH_INTERVAL_MS = 5_000;\n/** Consecutive fully-empty batches before the walk halts as source-degraded. */\nconst EMPTY_BATCH_HALT_THRESHOLD = 3;\nconst STANDARD_REINDEX_BATCH_CONFIG = {\n\tdefaultBatchSize: 500,\n\tminBatchSize: 100,\n\tmaxBatchSize: 1000,\n};\n\ntype ReindexBatchConfig = {\n\tdefaultBatchSize: number;\n\tminBatchSize: number;\n\tmaxBatchSize: number;\n};\ntype ReindexBatchEnv = {\n\tSUBGRAPH_REINDEX_BATCH_SIZE?: string;\n\tSUBGRAPH_REINDEX_MIN_BATCH_SIZE?: string;\n\tSUBGRAPH_REINDEX_MAX_BATCH_SIZE?: string;\n};\n\ntype ReindexResumeRow = {\n\tlast_processed_block: number | string;\n\treindex_from_block: number | string | null;\n\treindex_to_block: number | string | null;\n};\n\nexport function initialReindexProgressBlock(fromBlock: number): number {\n\treturn Math.max(0, fromBlock - 1);\n}\n\nexport function resolveReindexResumeBlock(\n\trow: ReindexResumeRow,\n): number | null {\n\tif (row.reindex_from_block == null || row.reindex_to_block == null) {\n\t\treturn null;\n\t}\n\n\tconst lastProcessedBlock = Number(row.last_processed_block);\n\tconst reindexFromBlock = Number(row.reindex_from_block);\n\n\treturn Math.max(lastProcessedBlock + 1, reindexFromBlock);\n}\n\nfunction parsePositiveInt(value: string | undefined): number | undefined {\n\tif (value == null || value.trim() === \"\") return undefined;\n\tconst parsed = Number.parseInt(value, 10);\n\treturn Number.isFinite(parsed) && parsed > 0 ? parsed : undefined;\n}\n\nexport function resolveReindexBatchConfig(\n\tenv: ReindexBatchEnv = process.env as ReindexBatchEnv,\n): ReindexBatchConfig {\n\tconst base = STANDARD_REINDEX_BATCH_CONFIG;\n\tconst minBatchSize =\n\t\tparsePositiveInt(env.SUBGRAPH_REINDEX_MIN_BATCH_SIZE) ?? base.minBatchSize;\n\tconst maxBatchSize =\n\t\tparsePositiveInt(env.SUBGRAPH_REINDEX_MAX_BATCH_SIZE) ?? base.maxBatchSize;\n\tconst defaultBatchSize =\n\t\tparsePositiveInt(env.SUBGRAPH_REINDEX_BATCH_SIZE) ?? base.defaultBatchSize;\n\n\treturn {\n\t\tminBatchSize,\n\t\tmaxBatchSize,\n\t\tdefaultBatchSize: Math.min(\n\t\t\tMath.max(defaultBatchSize, minBatchSize),\n\t\t\tmaxBatchSize,\n\t\t),\n\t};\n}\n\n/**\n * Coalesce individual block heights + reasons into contiguous gap ranges.\n */\nfunction coalesceFailedBlocks(\n\tblocks: { height: number; reason: string }[],\n): GapRange[] {\n\tif (blocks.length === 0) return [];\n\tblocks.sort((a, b) => a.height - b.height);\n\n\tconst ranges: GapRange[] = [];\n\tlet start = blocks[0].height;\n\tlet end = blocks[0].height;\n\tlet reason = blocks[0].reason;\n\n\tfor (let i = 1; i < blocks.length; i++) {\n\t\tconst b = blocks[i];\n\t\tif (b.height === end + 1 && b.reason === reason) {\n\t\t\tend = b.height;\n\t\t} else {\n\t\t\tranges.push({ start, end, reason });\n\t\t\tstart = b.height;\n\t\t\tend = b.height;\n\t\t\treason = b.reason;\n\t\t}\n\t}\n\tranges.push({ start, end, reason });\n\treturn ranges;\n}\n\nexport interface ReindexOptions {\n\tfromBlock?: number;\n\ttoBlock?: number;\n\tschemaName?: string;\n\t/** Op row to receive processed_events on each progress flush. */\n\toperationId?: string;\n\tsignal?: AbortSignal;\n}\n\n/**\n * Shared block range processor used by both reindex and backfill.\n * Processes blocks in batches with prefetch pipeline.\n * Supports cancellation via AbortSignal — breaks cleanly at batch boundaries.\n */\nasync function processBlockRange(\n\tdef: SubgraphDefinition,\n\topts: {\n\t\tfromBlock: number;\n\t\ttoBlock: number;\n\t\tstatus: string;\n\t\tisCatchup: boolean;\n\t\tapiKeyId: string | null;\n\t\tsubgraphId?: string;\n\t\t/** When set, the progress flush writes processed_events onto the op row\n\t\t * — the honest numerator for event-based progress/ETA. */\n\t\toperationId?: string;\n\t\tsignal?: AbortSignal;\n\t},\n): Promise<{\n\tblocksProcessed: number;\n\ttotalEventsProcessed: number;\n\ttotalErrors: number;\n\taborted: boolean;\n}> {\n\tconst source = resolveBlockSource(def);\n\tconst targetDb = getTargetDb();\n\tconst subgraphName = def.name;\n\tconst { fromBlock, toBlock, status } = opts;\n\tconst totalBlocks = toBlock - fromBlock + 1;\n\n\tconst stats = new StatsAccumulator(subgraphName, opts.isCatchup);\n\tlet blocksProcessed = 0;\n\tlet blocksSkippedByCursor = 0;\n\tlet totalEventsProcessed = 0;\n\tlet totalErrors = 0;\n\tlet pendingEventsProcessed = 0;\n\tlet pendingErrors = 0;\n\tlet pendingLastError: string | undefined;\n\tlet lastHealthFlushBlock = 0;\n\tlet lastHealthFlushAt = Date.now();\n\tlet lastProgressFlushAt = Date.now();\n\tconst batchConfig = resolveReindexBatchConfig();\n\tlet batchSize = batchConfig.defaultBatchSize;\n\tlet currentHeight = fromBlock;\n\tlet aborted = false;\n\tlet consecutiveEmptyBatches = 0;\n\t// Sparse scan: when a whole batch matches nothing, ask the source for the\n\t// next height that could match and leap there — token-scoped genesis\n\t// reindexes skip the (often vast) majority of chain history.\n\tconst sparse = Boolean(source.nextDataHeight && canSparseScan(def));\n\n\tconst flushHealth = async () => {\n\t\tif (pendingEventsProcessed === 0 && pendingErrors === 0) return;\n\t\tawait recordSubgraphProcessed(\n\t\t\ttargetDb,\n\t\t\tsubgraphName,\n\t\t\tpendingEventsProcessed,\n\t\t\tpendingErrors,\n\t\t\tpendingLastError,\n\t\t);\n\t\tpendingEventsProcessed = 0;\n\t\tpendingErrors = 0;\n\t\tpendingLastError = undefined;\n\t\tlastHealthFlushBlock = blocksProcessed;\n\t\tlastHealthFlushAt = Date.now();\n\t};\n\n\t/**\n\t * Stop the walk at an unprocessable block: surface the error, mark the\n\t * subgraph errored, and throw. Deliberately does NOT touch\n\t * last_processed_block — the cursor stays before the failed block so a\n\t * restart re-attempts it instead of silently skipping its events.\n\t */\n\tconst haltRange = async (\n\t\terrorMsg: string,\n\t\theight: number,\n\t): Promise<never> => {\n\t\tpendingErrors++;\n\t\tpendingLastError = errorMsg;\n\t\tawait flushHealth().catch(() => {});\n\t\tawait updateSubgraphStatus(targetDb, subgraphName, \"error\").catch(() => {});\n\t\tthrow new Error(`${subgraphName}: halted at block ${height}: ${errorMsg}`);\n\t};\n\n\t// Pipeline: start loading first batch and track the prefetched range.\n\t// batchEnd must match what was actually loaded — not recalculated from a\n\t// potentially resized batchSize (adaptive sizing can change it between iterations).\n\tlet nextBatchEnd = Math.min(currentHeight + batchSize - 1, toBlock);\n\tlet nextBatchPromise = source.loadBlockRange(currentHeight, nextBatchEnd);\n\n\twhile (currentHeight <= toBlock) {\n\t\t// Check for abort at batch boundary\n\t\tif (opts.signal?.aborted) {\n\t\t\taborted = true;\n\t\t\tlogger.info(\"Block processing aborted\", {\n\t\t\t\tsubgraph: subgraphName,\n\t\t\t\tcurrentBlock: currentHeight,\n\t\t\t\treason: String(opts.signal.reason ?? \"unknown\"),\n\t\t\t});\n\t\t\tbreak;\n\t\t}\n\n\t\tconst batch = await nextBatchPromise;\n\t\tconst batchEnd = nextBatchEnd;\n\n\t\t// Source-health guard (fix-f040 B7): the source seeds every canonical\n\t\t// height in range (including empty blocks), so consecutive fully-empty\n\t\t// batches mean the SOURCE is degraded — not that thousands of blocks\n\t\t// are absent. The old behavior filed every height as a block_missing\n\t\t// gap and kept walking; one degraded source minted thousands of false\n\t\t// gap rows in minutes.\n\t\tif (batch.size === 0 && batchEnd >= currentHeight) {\n\t\t\tconsecutiveEmptyBatches++;\n\t\t\tif (consecutiveEmptyBatches >= EMPTY_BATCH_HALT_THRESHOLD) {\n\t\t\t\tawait haltRange(\n\t\t\t\t\t`block source returned ${consecutiveEmptyBatches} consecutive empty batches (ending ${currentHeight}..${batchEnd}) — source degraded`,\n\t\t\t\t\tcurrentHeight,\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\tconsecutiveEmptyBatches = 0;\n\t\t}\n\n\t\t// Prefetch next batch (uses current batchSize, which may have been adapted)\n\t\tconst nextStart = batchEnd + 1;\n\t\tif (nextStart <= toBlock) {\n\t\t\tnextBatchEnd = Math.min(nextStart + batchSize - 1, toBlock);\n\t\t\tnextBatchPromise = source.loadBlockRange(nextStart, nextBatchEnd);\n\t\t}\n\n\t\tconst batchFailedBlocks: { height: number; reason: string }[] = [];\n\t\tlet batchMatched = 0;\n\t\t// Reindex is a strictly ascending walk over the subgraph's own cursor, so\n\t\t// written blocks checkpoint atomically and replays skip (fix-f040 B3).\n\t\t// Backfill revisits heights below the live cursor — must stay batched.\n\t\t// Reindex checkpoints on the subgraph cursor; backfill (status 'active')\n\t\t// revisits heights BELOW the live cursor, so it checkpoints on its own\n\t\t// op row instead — and must NEVER write the live cursor (an unconditional\n\t\t// historical SET would regress it and make catch-up re-walk + double-apply).\n\t\tconst opCursor =\n\t\t\tstatus === \"active\" && opts.operationId\n\t\t\t\t? { operationId: opts.operationId }\n\t\t\t\t: undefined;\n\t\tconst atomicProgress = status === \"reindexing\" ? { status } : opCursor;\n\n\t\tfor (let height = currentHeight; height <= batchEnd; height++) {\n\t\t\tlet blockData = batch.get(height);\n\t\t\tif (!blockData) {\n\t\t\t\t// Could be a transient source hiccup — refetch the single height\n\t\t\t\t// before concluding the block is genuinely absent.\n\t\t\t\tblockData = (await source.loadBlockRange(height, height)).get(height);\n\t\t\t}\n\t\t\tif (!blockData) {\n\t\t\t\tif (status === \"reindexing\") {\n\t\t\t\t\t// Strict: a missing source block means every downstream value is\n\t\t\t\t\t// wrong, not approximately right. Halt; do not advance past it.\n\t\t\t\t\tconst errorMsg = `block ${height} missing from source — halting reindex (cursor stays at ${height - 1})`;\n\t\t\t\t\tawait haltRange(errorMsg, height);\n\t\t\t\t}\n\t\t\t\t// Backfill: the range IS the gap-repair pass; record what's still\n\t\t\t\t// missing and keep going.\n\t\t\t\tbatchFailedBlocks.push({ height, reason: \"block_missing\" });\n\t\t\t\tblocksProcessed++;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tlet result: ProcessBlockResult;\n\t\t\ttry {\n\t\t\t\tresult = await processBlockWithRetry(def, subgraphName, height, {\n\t\t\t\t\tskipProgressUpdate: true,\n\t\t\t\t\tatomicProgress,\n\t\t\t\t\tpreloaded: blockData,\n\t\t\t\t});\n\t\t\t} catch (err) {\n\t\t\t\tconst errorMsg = getErrorMessage(err);\n\t\t\t\tlogger.error(\"Block processing failed persistently\", {\n\t\t\t\t\tsubgraph: subgraphName,\n\t\t\t\t\tblockHeight: height,\n\t\t\t\t\terror: errorMsg,\n\t\t\t\t});\n\t\t\t\tif (status === \"reindexing\") {\n\t\t\t\t\t// Strict: skipping a block of events silently corrupts every\n\t\t\t\t\t// accumulator downstream. Halt with the cursor still BEFORE the\n\t\t\t\t\t// failed block so a restart re-attempts it (fix-f040 B5).\n\t\t\t\t\tawait haltRange(\n\t\t\t\t\t\t`block ${height} failed persistently: ${errorMsg}`,\n\t\t\t\t\t\theight,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\t// Backfill: record and continue — the gap row keeps it repairable.\n\t\t\t\tbatchFailedBlocks.push({ height, reason: \"processing_error\" });\n\t\t\t\tblocksProcessed++;\n\t\t\t\ttotalErrors++;\n\t\t\t\tpendingErrors++;\n\t\t\t\tpendingLastError = errorMsg;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tblocksProcessed++;\n\t\t\tif (result.skipped) blocksSkippedByCursor++;\n\t\t\tbatchMatched += result.matched;\n\t\t\ttotalEventsProcessed += result.processed;\n\t\t\ttotalErrors += result.errors;\n\t\t\tpendingEventsProcessed += result.processed;\n\t\t\tpendingErrors += result.errors;\n\t\t\tif (result.errors > 0) {\n\t\t\t\tpendingLastError = `${result.errors} error(s) while processing block ${height}`;\n\t\t\t}\n\n\t\t\tif (result.timing) {\n\t\t\t\tstats.record(result.timing, result.processed);\n\t\t\t\tif (stats.shouldFlush()) {\n\t\t\t\t\tawait stats.flush(targetDb);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst now = Date.now();\n\t\t\tconst shouldFlushProgress =\n\t\t\t\tblocksProcessed % 100 === 0 ||\n\t\t\t\tnow - lastProgressFlushAt >= PROGRESS_FLUSH_INTERVAL_MS;\n\t\t\tif (shouldFlushProgress) {\n\t\t\t\tif (opCursor) {\n\t\t\t\t\t// Covers write-less stretches; conditional → can't regress the\n\t\t\t\t\t// in-tx advances written by processed blocks.\n\t\t\t\t\tawait advanceOperationCursor(targetDb, opCursor.operationId, height);\n\t\t\t\t} else {\n\t\t\t\t\tawait updateSubgraphStatus(targetDb, subgraphName, status, height);\n\t\t\t\t}\n\t\t\t\tif (opts.operationId) {\n\t\t\t\t\tawait updateOperationProcessedEvents(\n\t\t\t\t\t\ttargetDb,\n\t\t\t\t\t\topts.operationId,\n\t\t\t\t\t\ttotalEventsProcessed,\n\t\t\t\t\t).catch(() => {});\n\t\t\t\t}\n\t\t\t\tlastProgressFlushAt = now;\n\t\t\t}\n\n\t\t\tif (blocksProcessed % LOG_INTERVAL === 0) {\n\t\t\t\tlogger.info(\n\t\t\t\t\t`${status === \"reindexing\" ? \"Reindex\" : \"Backfill\"} progress`,\n\t\t\t\t\t{\n\t\t\t\t\t\tsubgraph: subgraphName,\n\t\t\t\t\t\tprocessed: blocksProcessed,\n\t\t\t\t\t\ttotal: totalBlocks,\n\t\t\t\t\t\tcurrentBlock: height,\n\t\t\t\t\t\tpct: Math.round((blocksProcessed / totalBlocks) * 100),\n\t\t\t\t\t\t...(blocksSkippedByCursor > 0\n\t\t\t\t\t\t\t? { skippedByCursor: blocksSkippedByCursor }\n\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tif (status === \"reindexing\" && blocksProcessed > 0) {\n\t\t\tawait updateSubgraphStatus(targetDb, subgraphName, status, batchEnd);\n\t\t}\n\n\t\tconst shouldFlushHealth =\n\t\t\tblocksProcessed - lastHealthFlushBlock >= HEALTH_FLUSH_INTERVAL ||\n\t\t\tDate.now() - lastHealthFlushAt >= PROGRESS_FLUSH_INTERVAL_MS;\n\t\tif (shouldFlushHealth) {\n\t\t\tawait flushHealth();\n\t\t}\n\n\t\t// Record any gaps from this batch\n\t\tif (batchFailedBlocks.length > 0 && opts.subgraphId) {\n\t\t\tconst gaps = coalesceFailedBlocks(batchFailedBlocks);\n\t\t\tawait recordGapBatch(targetDb, opts.subgraphId, subgraphName, gaps).catch(\n\t\t\t\t(err: unknown) => {\n\t\t\t\t\tlogger.warn(\"Failed to record subgraph gaps\", {\n\t\t\t\t\t\tsubgraph: subgraphName,\n\t\t\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\n\t\t// Sparse skip: nothing in this batch could match → probe for the next\n\t\t// height that can, and jump the cursor there. The in-flight prefetch is\n\t\t// discarded (one wasted fetch buys skipping arbitrarily many).\n\t\tif (\n\t\t\tsparse &&\n\t\t\tbatchMatched === 0 &&\n\t\t\tbatchEnd < toBlock &&\n\t\t\tsource.nextDataHeight\n\t\t) {\n\t\t\tconst next = await source.nextDataHeight(batchEnd, toBlock);\n\t\t\tconst jumpTo = next === null ? toBlock + 1 : Math.max(next, batchEnd + 1);\n\t\t\tif (jumpTo > batchEnd + 1) {\n\t\t\t\tconst skipped = Math.min(jumpTo, toBlock + 1) - (batchEnd + 1);\n\t\t\t\tblocksProcessed += skipped;\n\t\t\t\tif (opCursor) {\n\t\t\t\t\tawait advanceOperationCursor(\n\t\t\t\t\t\ttargetDb,\n\t\t\t\t\t\topCursor.operationId,\n\t\t\t\t\t\tjumpTo - 1,\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tawait updateSubgraphStatus(\n\t\t\t\t\t\ttargetDb,\n\t\t\t\t\t\tsubgraphName,\n\t\t\t\t\t\tstatus,\n\t\t\t\t\t\tjumpTo - 1,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tlogger.info(\"Sparse skip\", {\n\t\t\t\t\tsubgraph: subgraphName,\n\t\t\t\t\tfrom: batchEnd + 1,\n\t\t\t\t\tto: jumpTo - 1,\n\t\t\t\t\tskipped,\n\t\t\t\t});\n\t\t\t\tcurrentHeight = jumpTo;\n\t\t\t\tif (currentHeight <= toBlock) {\n\t\t\t\t\tnextBatchEnd = Math.min(currentHeight + batchSize - 1, toBlock);\n\t\t\t\t\tnextBatchPromise = source.loadBlockRange(currentHeight, nextBatchEnd);\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\t// Adaptive batch sizing\n\t\tconst avg = avgEventsPerBlock(batch);\n\t\tif (avg > 50)\n\t\t\tbatchSize = Math.max(\n\t\t\t\tMath.round(batchSize * 0.5),\n\t\t\t\tbatchConfig.minBatchSize,\n\t\t\t);\n\t\telse if (avg < 10)\n\t\t\tbatchSize = Math.min(\n\t\t\t\tMath.round(batchSize * 1.5),\n\t\t\t\tbatchConfig.maxBatchSize,\n\t\t\t);\n\n\t\tcurrentHeight = batchEnd + 1;\n\t}\n\n\tawait stats.flush(targetDb);\n\tawait flushHealth();\n\treturn { blocksProcessed, totalEventsProcessed, totalErrors, aborted };\n}\n\n/**\n * Resolve block range from options, defaulting to def.startBlock..chain_tip.\n * Chain tip reads from `index_progress` — lives in the source DB.\n */\nasync function resolveBlockRange(\n\tsource: BlockSource,\n\tdef: SubgraphDefinition,\n\topts?: ReindexOptions,\n): Promise<{ fromBlock: number; toBlock: number }> {\n\tconst fromBlock = opts?.fromBlock ?? def.startBlock ?? 1;\n\tconst toBlock = opts?.toBlock != null ? opts.toBlock : await source.getTip();\n\treturn { fromBlock, toBlock };\n}\n\n/**\n * Clear reindex metadata columns after completion or cancellation.\n */\nasync function clearReindexMetadata(\n\tdb: ReturnType<typeof getTargetDb>,\n\tsubgraphName: string,\n): Promise<void> {\n\tawait db\n\t\t.updateTable(\"subgraphs\")\n\t\t.set({ reindex_from_block: null, reindex_to_block: null })\n\t\t.where(\"name\", \"=\", subgraphName)\n\t\t.execute();\n}\n\n/**\n * Reindex a subgraph by dropping its tables, recreating them, and reprocessing\n * all historical blocks through the handler pipeline.\n * Supports cancellation via AbortSignal — on shutdown abort, status stays\n * \"reindexing\" for auto-resume; on user cancel, status resets to \"active\".\n */\nexport async function reindexSubgraph(\n\tdef: SubgraphDefinition,\n\topts?: ReindexOptions,\n): Promise<{ processed: number }> {\n\t// Chain tip reads hit the block source; subgraph rows + tenant schemas live in target\n\tconst source = resolveBlockSource(def);\n\tconst targetDb = getTargetDb();\n\tconst client = getRawClient(\"target\");\n\tconst subgraphName = def.name;\n\tconst schemaName = opts?.schemaName ?? pgSchemaName(subgraphName);\n\n\tawait updateSubgraphStatus(targetDb, subgraphName, \"reindexing\");\n\tlogger.info(\"Reindex starting\", { subgraph: subgraphName });\n\n\ttry {\n\t\t// Resolve block range BEFORE schema drop so we can persist metadata\n\t\tconst { fromBlock, toBlock } = await resolveBlockRange(source, def, opts);\n\n\t\tif (fromBlock > toBlock) {\n\t\t\tlogger.info(\"No blocks to reindex\", {\n\t\t\t\tsubgraph: subgraphName,\n\t\t\t\tfromBlock,\n\t\t\t\ttoBlock,\n\t\t\t});\n\t\t\tawait updateSubgraphStatus(targetDb, subgraphName, \"active\", 0);\n\t\t\treturn { processed: 0 };\n\t\t}\n\n\t\t// Drop and recreate schema + tables (tenant-side DDL)\n\t\tawait client.unsafe(`DROP SCHEMA IF EXISTS \"${schemaName}\" CASCADE`);\n\t\tconst { statements } = generateSubgraphSQL(def, schemaName);\n\t\tfor (const stmt of statements) {\n\t\t\tawait client.unsafe(stmt);\n\t\t}\n\t\t// The schema drop just invalidated everything the cursor claims was\n\t\t// applied. Reset it BELOW the walk's start or the atomicProgress replay\n\t\t// guard treats a stale cursor (prior halted/cancelled run) as \"already\n\t\t// applied\" and silently skips the entire prefix — empty tables, then a\n\t\t// CHECK violation at the first real delta (the sbtc-balances halt at\n\t\t// block 1913668: 1.9M credit blocks skipped against a 1913667 cursor).\n\t\tawait updateSubgraphStatus(\n\t\t\ttargetDb,\n\t\t\tsubgraphName,\n\t\t\t\"reindexing\",\n\t\t\tMath.max(0, fromBlock - 1),\n\t\t);\n\t\tlogger.info(\"Schema recreated for reindex\", {\n\t\t\tsubgraph: subgraphName,\n\t\t\tcursorResetTo: Math.max(0, fromBlock - 1),\n\t\t});\n\n\t\t// Store reindex range after DDL is ready. A crash before this point falls\n\t\t// back to a fresh reindex, which safely drops/recreates the schema again.\n\t\tawait targetDb\n\t\t\t.updateTable(\"subgraphs\")\n\t\t\t.set({\n\t\t\t\tlast_processed_block: initialReindexProgressBlock(fromBlock),\n\t\t\t\treindex_from_block: fromBlock,\n\t\t\t\treindex_to_block: toBlock,\n\t\t\t\ttotal_processed: 0,\n\t\t\t\ttotal_errors: 0,\n\t\t\t\tlast_error: null,\n\t\t\t\tlast_error_at: null,\n\t\t\t\tupdated_at: new Date(),\n\t\t\t})\n\t\t\t.where(\"name\", \"=\", subgraphName)\n\t\t\t.execute();\n\n\t\tlogger.info(\"Reindexing blocks\", {\n\t\t\tsubgraph: subgraphName,\n\t\t\tfromBlock,\n\t\t\ttoBlock,\n\t\t\ttotalBlocks: toBlock - fromBlock + 1,\n\t\t});\n\n\t\tconst subgraphRow = await targetDb\n\t\t\t.selectFrom(\"subgraphs\")\n\t\t\t.select([\"id\"])\n\t\t\t.where(\"name\", \"=\", subgraphName)\n\t\t\t.executeTakeFirst();\n\n\t\tconst result = await processBlockRange(def, {\n\t\t\tfromBlock,\n\t\t\ttoBlock,\n\t\t\tstatus: \"reindexing\",\n\t\t\tisCatchup: false,\n\t\t\tapiKeyId: null,\n\t\t\tsubgraphId: subgraphRow?.id,\n\t\t\toperationId: opts?.operationId,\n\t\t\tsignal: opts?.signal,\n\t\t});\n\n\t\t// Handle abort\n\t\tif (result.aborted) {\n\t\t\tconst reason = String(opts?.signal?.reason ?? \"unknown\");\n\t\t\tif (reason === \"user-cancelled\") {\n\t\t\t\tawait updateSubgraphStatus(targetDb, subgraphName, \"active\");\n\t\t\t\tawait clearReindexMetadata(targetDb, subgraphName);\n\t\t\t\tlogger.info(\"Reindex cancelled by user\", { subgraph: subgraphName });\n\t\t\t} else {\n\t\t\t\t// shutdown — leave status as \"reindexing\" for auto-resume\n\t\t\t\tlogger.info(\"Reindex interrupted by shutdown, will resume\", {\n\t\t\t\t\tsubgraph: subgraphName,\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn { processed: result.blocksProcessed };\n\t\t}\n\n\t\tawait updateSubgraphStatus(targetDb, subgraphName, \"active\", toBlock);\n\t\tawait clearReindexMetadata(targetDb, subgraphName);\n\t\tlogger.info(\"Reindex complete\", {\n\t\t\tsubgraph: subgraphName,\n\t\t\tblocks: result.blocksProcessed,\n\t\t\tevents: result.totalEventsProcessed,\n\t\t\terrors: result.totalErrors,\n\t\t});\n\t\treturn { processed: result.blocksProcessed };\n\t} catch (err) {\n\t\tlogger.error(\"Reindex failed\", {\n\t\t\tsubgraph: subgraphName,\n\t\t\terror: getErrorMessage(err),\n\t\t});\n\t\tawait updateSubgraphStatus(targetDb, subgraphName, \"error\");\n\t\tthrow err;\n\t}\n}\n\n/**\n * Resume a previously interrupted reindex. Skips schema drop (already done)\n * and continues from last_processed_block + 1.\n */\nexport async function resumeReindex(\n\tdef: SubgraphDefinition,\n\topts: {\n\t\tschemaName: string;\n\t\toperationId?: string;\n\t\tsignal?: AbortSignal;\n\t},\n): Promise<{ processed: number }> {\n\tconst targetDb = getTargetDb();\n\tconst subgraphName = def.name;\n\n\tconst row = await targetDb\n\t\t.selectFrom(\"subgraphs\")\n\t\t.select([\n\t\t\t\"id\",\n\t\t\t\"last_processed_block\",\n\t\t\t\"reindex_from_block\",\n\t\t\t\"reindex_to_block\",\n\t\t])\n\t\t.where(\"name\", \"=\", subgraphName)\n\t\t.executeTakeFirst();\n\n\tif (!row) throw new Error(`Subgraph \"${subgraphName}\" not found`);\n\n\tconst fromBlock = resolveReindexResumeBlock(row);\n\tconst toBlock = Number(row.reindex_to_block);\n\n\t// Legacy: no reindex metadata — fall back to full reindex\n\tif (fromBlock == null) {\n\t\tlogger.info(\"No reindex metadata, starting fresh reindex\", {\n\t\t\tsubgraph: subgraphName,\n\t\t});\n\t\treturn reindexSubgraph(def, {\n\t\t\tschemaName: opts.schemaName,\n\t\t\tsignal: opts.signal,\n\t\t});\n\t}\n\n\tif (fromBlock > toBlock) {\n\t\tlogger.info(\"Resume: no remaining blocks\", { subgraph: subgraphName });\n\t\tawait updateSubgraphStatus(targetDb, subgraphName, \"active\", toBlock);\n\t\tawait clearReindexMetadata(targetDb, subgraphName);\n\t\treturn { processed: 0 };\n\t}\n\n\tlogger.info(\"Resuming reindex\", {\n\t\tsubgraph: subgraphName,\n\t\tfromBlock,\n\t\ttoBlock,\n\t\tremaining: toBlock - fromBlock + 1,\n\t});\n\n\ttry {\n\t\tconst result = await processBlockRange(def, {\n\t\t\tfromBlock,\n\t\t\ttoBlock,\n\t\t\tstatus: \"reindexing\",\n\t\t\tisCatchup: false,\n\t\t\tapiKeyId: null,\n\t\t\tsubgraphId: row.id,\n\t\t\toperationId: opts.operationId,\n\t\t\tsignal: opts.signal,\n\t\t});\n\n\t\tif (result.aborted) {\n\t\t\tconst reason = String(opts.signal?.reason ?? \"unknown\");\n\t\t\tif (reason === \"user-cancelled\") {\n\t\t\t\tawait updateSubgraphStatus(targetDb, subgraphName, \"active\");\n\t\t\t\tawait clearReindexMetadata(targetDb, subgraphName);\n\t\t\t\tlogger.info(\"Resume cancelled by user\", { subgraph: subgraphName });\n\t\t\t} else {\n\t\t\t\tlogger.info(\"Resume interrupted by shutdown, will resume again\", {\n\t\t\t\t\tsubgraph: subgraphName,\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn { processed: result.blocksProcessed };\n\t\t}\n\n\t\tawait updateSubgraphStatus(targetDb, subgraphName, \"active\", toBlock);\n\t\tawait clearReindexMetadata(targetDb, subgraphName);\n\t\tlogger.info(\"Resumed reindex complete\", {\n\t\t\tsubgraph: subgraphName,\n\t\t\tblocks: result.blocksProcessed,\n\t\t});\n\t\treturn { processed: result.blocksProcessed };\n\t} catch (err) {\n\t\tlogger.error(\"Resumed reindex failed\", {\n\t\t\tsubgraph: subgraphName,\n\t\t\terror: getErrorMessage(err),\n\t\t});\n\t\tawait updateSubgraphStatus(targetDb, subgraphName, \"error\");\n\t\tthrow err;\n\t}\n}\n\n/**\n * Backfill a subgraph by re-processing a block range WITHOUT dropping the schema.\n * Uses upserts so existing data is updated, not duplicated. Safe to run while\n * the subgraph is actively syncing.\n */\nexport async function backfillSubgraph(\n\tdef: SubgraphDefinition,\n\topts: {\n\t\tfromBlock: number;\n\t\ttoBlock: number;\n\t\tschemaName?: string;\n\t\toperationId?: string;\n\t\tsignal?: AbortSignal;\n\t},\n): Promise<{ processed: number }> {\n\tconst targetDb = getTargetDb();\n\tconst subgraphName = def.name;\n\n\tlogger.info(\"Backfill starting\", {\n\t\tsubgraph: subgraphName,\n\t\tfrom: opts.fromBlock,\n\t\tto: opts.toBlock,\n\t});\n\n\ttry {\n\t\tconst subgraphRow = await targetDb\n\t\t\t.selectFrom(\"subgraphs\")\n\t\t\t.select([\"id\"])\n\t\t\t.where(\"name\", \"=\", subgraphName)\n\t\t\t.executeTakeFirst();\n\n\t\tconst result = await processBlockRange(def, {\n\t\t\tfromBlock: opts.fromBlock,\n\t\t\ttoBlock: opts.toBlock,\n\t\t\tstatus: \"active\",\n\t\t\tisCatchup: false,\n\t\t\tapiKeyId: null,\n\t\t\tsubgraphId: subgraphRow?.id,\n\t\t\toperationId: opts.operationId,\n\t\t\tsignal: opts.signal,\n\t\t});\n\n\t\tif (result.aborted) {\n\t\t\tlogger.info(\"Backfill aborted\", { subgraph: subgraphName });\n\t\t\treturn { processed: result.blocksProcessed };\n\t\t}\n\n\t\t// Resolve any gaps within the backfilled range\n\t\tconst resolved = await resolveGaps(\n\t\t\ttargetDb,\n\t\t\tsubgraphName,\n\t\t\topts.fromBlock,\n\t\t\topts.toBlock,\n\t\t).catch(() => 0);\n\t\tif (resolved > 0) {\n\t\t\tlogger.info(\"Resolved subgraph gaps via backfill\", {\n\t\t\t\tsubgraph: subgraphName,\n\t\t\t\tresolved,\n\t\t\t});\n\t\t}\n\n\t\tlogger.info(\"Backfill complete\", {\n\t\t\tsubgraph: subgraphName,\n\t\t\tblocks: result.blocksProcessed,\n\t\t\tevents: result.totalEventsProcessed,\n\t\t\terrors: result.totalErrors,\n\t\t});\n\t\treturn { processed: result.blocksProcessed };\n\t} catch (err) {\n\t\tlogger.error(\"Backfill failed\", {\n\t\t\tsubgraph: subgraphName,\n\t\t\terror: getErrorMessage(err),\n\t\t});\n\t\tthrow err;\n\t}\n}\n",
21
21
  "import type { AnyEvent, EventForFilter } from \"./events.ts\";\nimport type { TypedSubgraphContext } from \"./infer.ts\";\nimport type {\n\tSubgraphDefinition,\n\tSubgraphFilter,\n\tSubgraphSchema,\n} from \"./types.ts\";\n\n/**\n * Handlers keyed by source name. Each handler's `event` is typed from the\n * matching source's filter `type` (e.g. a `print_event` source → `event.topic`\n * is a `string`), and `ctx` is typed against the subgraph `schema` (table\n * names + row columns checked). The optional `\"*\"` catch-all receives any event.\n *\n * Handlers are optional per source (a source with no handler is skipped at\n * runtime), matching `handlers[name] ?? handlers[\"*\"]` resolution.\n */\nexport type TypedHandlers<\n\tSources extends Record<string, SubgraphFilter>,\n\tS extends SubgraphSchema,\n> = {\n\t[K in keyof Sources]?: (\n\t\tevent: EventForFilter<Sources[K]>,\n\t\tctx: TypedSubgraphContext<S>,\n\t) => void | Promise<void>;\n} & {\n\t\"*\"?: (event: AnyEvent, ctx: TypedSubgraphContext<S>) => void | Promise<void>;\n};\n\n/** Subgraph definition with `sources`/`schema` literals preserved for typed\n * handlers and downstream query-client inference (`getSubgraph`). */\nexport type TypedSubgraphDefinition<\n\tSources extends Record<string, SubgraphFilter>,\n\tS extends SubgraphSchema,\n> = Omit<SubgraphDefinition, \"sources\" | \"schema\" | \"handlers\"> & {\n\tsources: Sources;\n\tschema: S;\n\thandlers: TypedHandlers<Sources, S>;\n};\n\n/**\n * Identity function that preserves `sources` and `schema` literal types so\n * handlers are typed per source and the schema drives query-client inference.\n *\n * @example\n * ```ts\n * export default defineSubgraph({\n * name: \"my-subgraph\",\n * sources: { transfer: { type: \"ft_transfer\", assetIdentifier: \"SP...::token\" } },\n * schema: { transfers: { columns: { amount: { type: \"uint\" } } } },\n * handlers: {\n * transfer: (event, ctx) => {\n * // event: FtTransferPayload → event.amount is bigint, no cast\n * ctx.insert(\"transfers\", { amount: event.amount });\n * },\n * },\n * });\n * ```\n */\nexport function defineSubgraph<\n\tconst Sources extends Record<string, SubgraphFilter>,\n\tconst S extends SubgraphSchema,\n>(\n\tdef: TypedSubgraphDefinition<Sources, S>,\n): TypedSubgraphDefinition<Sources, S> {\n\treturn def;\n}\n",
22
22
  "import {\n\ttype ClarityValue,\n\ttype TupleCV,\n\tdeserializeCV,\n} from \"@secondlayer/stacks/clarity\";\nimport type { ColumnType } from \"./types.ts\";\n\n/**\n * Empirical print-payload schema inference. Callers (the index print-schema\n * endpoint) extract topic + raw Clarity hex per row; this module deserializes\n * a bounded sample per topic, unifies the observed value shapes into a single\n * structural tree, and renders Clarity/TS/ColumnType views of each field.\n */\n\nexport interface PrintSample {\n\tblockHeight: number;\n\ttopic: string;\n\trawHex: string | null;\n}\n\nexport interface InferredPrintField {\n\t/** Original kebab-case tuple key (the `topic` discriminant is excluded) */\n\tname: string;\n\t/** What handlers see on `e.data` — exact runner camelization */\n\tcamel_name: string;\n\t/** Rendered Clarity type; buff/string lengths are the max observed */\n\tclarity_type: string;\n\t/** Decoded handler value type (uint→bigint, buffer→string, …) */\n\tts_type: string;\n\tcolumn_type: ColumnType;\n\t/** Present in 100% of this topic's decoded samples */\n\talways_present: boolean;\n\t/** Only when optional observed: share of present samples that were some */\n\toptional_some_rate?: number;\n}\n\nexport interface InferredTopicSchema {\n\ttopic: string;\n\tcount: number;\n\tfirst_height: number;\n\tlast_height: number;\n\tnon_tuple: boolean;\n\tfields: InferredPrintField[];\n}\n\n/**\n * Kebab-case → camelCase using the exact runner regex, so `camel_name`\n * matches what handlers see on `e.data` (runner.ts camelizeKeys).\n */\nexport function camelizeDataKey(str: string): string {\n\treturn str.replace(/-([a-z0-9])/g, (_, c: string) => c.toUpperCase());\n}\n\n/**\n * Structural type tree. `null` inner = never observed (empty list, none-only\n * optional, one-sided response) and renders as \"?\".\n */\ntype Tree =\n\t| { kind: \"uint\" | \"int\" | \"bool\" | \"principal\" }\n\t| { kind: \"buffer\" | \"ascii\" | \"utf8\"; len: number }\n\t| { kind: \"optional\"; inner: Tree | null }\n\t| { kind: \"list\"; inner: Tree | null }\n\t| {\n\t\t\tkind: \"tuple\";\n\t\t\tcount: number;\n\t\t\tentries: Map<string, { tree: Tree; present: number }>;\n\t }\n\t| { kind: \"response\"; ok: Tree | null; err: Tree | null }\n\t| { kind: \"union\"; members: Tree[] };\n\nfunction cvToTree(cv: ClarityValue): Tree {\n\tswitch (cv.type) {\n\t\tcase \"uint\":\n\t\tcase \"int\":\n\t\t\treturn { kind: cv.type };\n\t\tcase \"true\":\n\t\tcase \"false\":\n\t\t\treturn { kind: \"bool\" };\n\t\tcase \"address\":\n\t\tcase \"contract\":\n\t\t\treturn { kind: \"principal\" };\n\t\tcase \"buffer\":\n\t\t\treturn { kind: \"buffer\", len: cv.value.length / 2 };\n\t\tcase \"ascii\":\n\t\t\treturn { kind: \"ascii\", len: cv.value.length };\n\t\tcase \"utf8\":\n\t\t\t// Clarity string-utf8 lengths are byte counts, not code points\n\t\t\treturn { kind: \"utf8\", len: new TextEncoder().encode(cv.value).length };\n\t\tcase \"none\":\n\t\t\treturn { kind: \"optional\", inner: null };\n\t\tcase \"some\":\n\t\t\treturn { kind: \"optional\", inner: cvToTree(cv.value) };\n\t\tcase \"ok\":\n\t\t\treturn { kind: \"response\", ok: cvToTree(cv.value), err: null };\n\t\tcase \"err\":\n\t\t\treturn { kind: \"response\", ok: null, err: cvToTree(cv.value) };\n\t\tcase \"list\": {\n\t\t\tlet inner: Tree | null = null;\n\t\t\tfor (const el of cv.value) {\n\t\t\t\tconst t = cvToTree(el);\n\t\t\t\tinner = inner ? unify(inner, t) : t;\n\t\t\t}\n\t\t\treturn { kind: \"list\", inner };\n\t\t}\n\t\tcase \"tuple\": {\n\t\t\tconst entries = new Map<string, { tree: Tree; present: number }>();\n\t\t\tfor (const [k, v] of Object.entries(cv.value)) {\n\t\t\t\tentries.set(k, { tree: cvToTree(v), present: 1 });\n\t\t\t}\n\t\t\treturn { kind: \"tuple\", count: 1, entries };\n\t\t}\n\t}\n}\n\nfunction unifyNullable(a: Tree | null, b: Tree | null): Tree | null {\n\tif (!a) return b;\n\tif (!b) return a;\n\treturn unify(a, b);\n}\n\n/**\n * Canonical union-member order. Unions hold at most one member per kind\n * (same-kind members always merge), so sorting by kind makes the union —\n * and everything rendered from it — independent of sample order.\n */\nconst UNION_KIND_ORDER: Record<string, number> = {\n\tuint: 0,\n\tint: 1,\n\tbool: 2,\n\tprincipal: 3,\n\tbuffer: 4,\n\tascii: 5,\n\tutf8: 6,\n\tlist: 7,\n\ttuple: 8,\n\tresponse: 9,\n};\n\nfunction makeUnion(members: Tree[]): Tree {\n\tconst sorted = [...members].sort(\n\t\t(a, b) =>\n\t\t\t(UNION_KIND_ORDER[a.kind] ?? 99) - (UNION_KIND_ORDER[b.kind] ?? 99),\n\t);\n\treturn { kind: \"union\", members: sorted };\n}\n\nfunction unify(a: Tree, b: Tree): Tree {\n\t// Optional hoists above unions/conflicts so unification is commutative and\n\t// associative: (optional T) ∪ U = (optional (T ∪ U)) regardless of which\n\t// sample order introduced the optional. Union members are never optional.\n\tif (a.kind === \"optional\" || b.kind === \"optional\") {\n\t\tconst ai = a.kind === \"optional\" ? a.inner : a;\n\t\tconst bi = b.kind === \"optional\" ? b.inner : b;\n\t\treturn { kind: \"optional\", inner: unifyNullable(ai, bi) };\n\t}\n\tif (a.kind === \"union\") return unionAdd(a.members, b);\n\tif (b.kind === \"union\") return unionAdd(b.members, a);\n\tif (a.kind !== b.kind) return makeUnion([a, b]);\n\tswitch (a.kind) {\n\t\tcase \"uint\":\n\t\tcase \"int\":\n\t\tcase \"bool\":\n\t\tcase \"principal\":\n\t\t\treturn a;\n\t\tcase \"buffer\":\n\t\tcase \"ascii\":\n\t\tcase \"utf8\":\n\t\t\treturn { kind: a.kind, len: Math.max(a.len, (b as typeof a).len) };\n\t\tcase \"list\":\n\t\t\treturn {\n\t\t\t\tkind: \"list\",\n\t\t\t\tinner: unifyNullable(a.inner, (b as typeof a).inner),\n\t\t\t};\n\t\tcase \"response\": {\n\t\t\tconst rb = b as typeof a;\n\t\t\treturn {\n\t\t\t\tkind: \"response\",\n\t\t\t\tok: unifyNullable(a.ok, rb.ok),\n\t\t\t\terr: unifyNullable(a.err, rb.err),\n\t\t\t};\n\t\t}\n\t\tcase \"tuple\": {\n\t\t\tconst tb = b as typeof a;\n\t\t\tconst entries = new Map(\n\t\t\t\t[...a.entries].map(\n\t\t\t\t\t([k, e]) =>\n\t\t\t\t\t\t[k, { ...e }] as [string, { tree: Tree; present: number }],\n\t\t\t\t),\n\t\t\t);\n\t\t\tfor (const [k, e] of tb.entries) {\n\t\t\t\tconst existing = entries.get(k);\n\t\t\t\tentries.set(\n\t\t\t\t\tk,\n\t\t\t\t\texisting\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\ttree: unify(existing.tree, e.tree),\n\t\t\t\t\t\t\t\tpresent: existing.present + e.present,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: { ...e },\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn { kind: \"tuple\", count: a.count + tb.count, entries };\n\t\t}\n\t}\n}\n\n/** Merge into an existing union: join a compatible member, else append. */\nfunction unionAdd(members: Tree[], t: Tree): Tree {\n\tif (t.kind === \"union\") {\n\t\tlet acc: Tree = { kind: \"union\", members };\n\t\tfor (const m of t.members) acc = unify(acc, m);\n\t\treturn acc;\n\t}\n\tconst next = [...members];\n\tfor (let i = 0; i < next.length; i++) {\n\t\tconst member = next[i];\n\t\tif (!member) continue;\n\t\tconst merged = unify(member, t);\n\t\tif (merged.kind !== \"union\") {\n\t\t\tnext[i] = merged;\n\t\t\treturn makeUnion(next);\n\t\t}\n\t}\n\tnext.push(t);\n\treturn makeUnion(next);\n}\n\nfunction wrapOptional(t: Tree): Tree {\n\treturn t.kind === \"optional\" ? t : { kind: \"optional\", inner: t };\n}\n\nfunction renderClarity(t: Tree | null): string {\n\tif (!t) return \"?\";\n\tswitch (t.kind) {\n\t\tcase \"uint\":\n\t\tcase \"int\":\n\t\tcase \"bool\":\n\t\tcase \"principal\":\n\t\t\treturn t.kind;\n\t\tcase \"buffer\":\n\t\t\treturn `(buff ${t.len})`;\n\t\tcase \"ascii\":\n\t\t\treturn `(string-ascii ${t.len})`;\n\t\tcase \"utf8\":\n\t\t\treturn `(string-utf8 ${t.len})`;\n\t\tcase \"optional\":\n\t\t\treturn `(optional ${renderClarity(t.inner)})`;\n\t\tcase \"list\":\n\t\t\treturn `(list ${renderClarity(t.inner)})`;\n\t\tcase \"response\":\n\t\t\treturn `(response ${renderClarity(t.ok)} ${renderClarity(t.err)})`;\n\t\tcase \"tuple\": {\n\t\t\tconst parts = [...t.entries].map(([k, e]) => {\n\t\t\t\tconst tree = e.present < t.count ? wrapOptional(e.tree) : e.tree;\n\t\t\t\treturn `(${k} ${renderClarity(tree)})`;\n\t\t\t});\n\t\t\treturn `(tuple ${parts.join(\" \")})`;\n\t\t}\n\t\tcase \"union\":\n\t\t\treturn t.members.map(renderClarity).join(\" | \");\n\t}\n}\n\nfunction renderTs(t: Tree | null): string {\n\tif (!t) return \"unknown\";\n\tswitch (t.kind) {\n\t\tcase \"uint\":\n\t\tcase \"int\":\n\t\t\treturn \"bigint\";\n\t\tcase \"bool\":\n\t\t\treturn \"boolean\";\n\t\tcase \"principal\":\n\t\tcase \"buffer\":\n\t\tcase \"ascii\":\n\t\tcase \"utf8\":\n\t\t\treturn \"string\";\n\t\tcase \"optional\":\n\t\t\treturn t.inner ? `${renderTs(t.inner)} | null` : \"unknown | null\";\n\t\tcase \"list\": {\n\t\t\tconst inner = renderTs(t.inner);\n\t\t\treturn inner.includes(\" | \") ? `(${inner})[]` : `${inner}[]`;\n\t\t}\n\t\tcase \"response\": {\n\t\t\t// Runtime unwraps both sides → handler sees the union of inner types\n\t\t\tconst sides = [...new Set([renderTs(t.ok), renderTs(t.err)])];\n\t\t\treturn sides.join(\" | \");\n\t\t}\n\t\tcase \"tuple\": {\n\t\t\tconst parts = [...t.entries].map(([k, e]) => {\n\t\t\t\tconst opt = e.present < t.count ? \"?\" : \"\";\n\t\t\t\treturn `${camelizeDataKey(k)}${opt}: ${renderTs(e.tree)}`;\n\t\t\t});\n\t\t\treturn `{ ${parts.join(\"; \")} }`;\n\t\t}\n\t\tcase \"union\":\n\t\t\treturn [...new Set(t.members.map((m) => renderTs(m)))].join(\" | \");\n\t}\n}\n\nfunction toColumnType(t: Tree | null): ColumnType {\n\tif (!t) return \"jsonb\";\n\tswitch (t.kind) {\n\t\tcase \"uint\":\n\t\t\treturn \"uint\";\n\t\tcase \"int\":\n\t\t\treturn \"int\";\n\t\tcase \"bool\":\n\t\t\treturn \"boolean\";\n\t\tcase \"principal\":\n\t\t\treturn \"principal\";\n\t\tcase \"buffer\":\n\t\tcase \"ascii\":\n\t\tcase \"utf8\":\n\t\t\treturn \"text\";\n\t\tcase \"list\":\n\t\tcase \"tuple\":\n\t\t\treturn \"jsonb\";\n\t\t// Nullability is carried by always_present/optional_some_rate, not the column type\n\t\tcase \"optional\":\n\t\t\treturn toColumnType(t.inner);\n\t\tcase \"response\":\n\t\t\treturn t.ok ? toColumnType(t.ok) : \"jsonb\";\n\t\tcase \"union\":\n\t\t\treturn \"jsonb\";\n\t}\n}\n\n/** Per-topic deserialization budget: spread across the newest + oldest rows that have raw hex */\nconst MAX_DECODED_PER_TOPIC_NEWEST = 75;\nconst MAX_DECODED_PER_TOPIC_OLDEST = 25;\n\n/**\n * Infers per-topic field schemas from sampled print events. Counts and\n * height bounds cover ALL rows of a topic (cheap); only a bounded subset is\n * deserialized for typing. Rows with missing/undecodable hex still count but\n * contribute nothing to typing.\n */\nexport function inferPrintTopics(\n\tsamples: PrintSample[],\n): InferredTopicSchema[] {\n\tconst groups = new Map<string, PrintSample[]>();\n\tfor (const s of samples) {\n\t\tconst group = groups.get(s.topic);\n\t\tif (group) group.push(s);\n\t\telse groups.set(s.topic, [s]);\n\t}\n\n\tconst out: InferredTopicSchema[] = [];\n\tfor (const [topic, rows] of groups) {\n\t\tlet first = Number.POSITIVE_INFINITY;\n\t\tlet last = Number.NEGATIVE_INFINITY;\n\t\tfor (const r of rows) {\n\t\t\tif (r.blockHeight < first) first = r.blockHeight;\n\t\t\tif (r.blockHeight > last) last = r.blockHeight;\n\t\t}\n\n\t\t// Spend the decode budget only on rows that have raw hex, so null-hex\n\t\t// rows (still counted in totals/heights) don't starve typing.\n\t\tconst withHex = [...rows]\n\t\t\t.filter((r): r is PrintSample & { rawHex: string } => r.rawHex !== null)\n\t\t\t.sort((a, b) => b.blockHeight - a.blockHeight);\n\t\tconst budget = MAX_DECODED_PER_TOPIC_NEWEST + MAX_DECODED_PER_TOPIC_OLDEST;\n\t\tconst picked =\n\t\t\twithHex.length <= budget\n\t\t\t\t? withHex\n\t\t\t\t: [\n\t\t\t\t\t\t...withHex.slice(0, MAX_DECODED_PER_TOPIC_NEWEST),\n\t\t\t\t\t\t...withHex.slice(-MAX_DECODED_PER_TOPIC_OLDEST),\n\t\t\t\t\t];\n\n\t\tconst tuples: TupleCV[] = [];\n\t\tlet decoded = 0;\n\t\tfor (const p of picked) {\n\t\t\ttry {\n\t\t\t\tconst cv = deserializeCV(p.rawHex);\n\t\t\t\tdecoded++;\n\t\t\t\tif (cv.type === \"tuple\") tuples.push(cv);\n\t\t\t} catch {\n\t\t\t\t// undecodable hex contributes nothing to typing\n\t\t\t}\n\t\t}\n\n\t\t// Only claim non_tuple when something actually decoded to a non-tuple;\n\t\t// zero decoded samples is \"no evidence\", not a non-tuple payload.\n\t\tconst nonTuple = decoded > 0 && tuples.length === 0;\n\t\tconst fields: InferredPrintField[] = [];\n\t\tif (!nonTuple) {\n\t\t\tconst stats = new Map<\n\t\t\t\tstring,\n\t\t\t\t{\n\t\t\t\t\ttree: Tree;\n\t\t\t\t\tpresent: number;\n\t\t\t\t\tnoneCount: number;\n\t\t\t\t\toptionalSeen: boolean;\n\t\t\t\t}\n\t\t\t>();\n\t\t\tfor (const t of tuples) {\n\t\t\t\tfor (const [key, value] of Object.entries(t.value)) {\n\t\t\t\t\t// `topic` is the discriminant, never payload data (runner strips it)\n\t\t\t\t\tif (key === \"topic\") continue;\n\t\t\t\t\tconst tree = cvToTree(value);\n\t\t\t\t\tconst existing = stats.get(key);\n\t\t\t\t\tif (existing) {\n\t\t\t\t\t\texisting.present++;\n\t\t\t\t\t\texisting.tree = unify(existing.tree, tree);\n\t\t\t\t\t\tif (value.type === \"none\") existing.noneCount++;\n\t\t\t\t\t\tif (value.type === \"none\" || value.type === \"some\") {\n\t\t\t\t\t\t\texisting.optionalSeen = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstats.set(key, {\n\t\t\t\t\t\t\ttree,\n\t\t\t\t\t\t\tpresent: 1,\n\t\t\t\t\t\t\tnoneCount: value.type === \"none\" ? 1 : 0,\n\t\t\t\t\t\t\toptionalSeen: value.type === \"none\" || value.type === \"some\",\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (const [name, st] of [...stats].sort(([a], [b]) =>\n\t\t\t\ta.localeCompare(b),\n\t\t\t)) {\n\t\t\t\tconst field: InferredPrintField = {\n\t\t\t\t\tname,\n\t\t\t\t\tcamel_name: camelizeDataKey(name),\n\t\t\t\t\tclarity_type: renderClarity(st.tree),\n\t\t\t\t\tts_type: renderTs(st.tree),\n\t\t\t\t\tcolumn_type: toColumnType(st.tree),\n\t\t\t\t\talways_present: st.present === tuples.length,\n\t\t\t\t};\n\t\t\t\tif (st.optionalSeen) {\n\t\t\t\t\tfield.optional_some_rate = (st.present - st.noneCount) / st.present;\n\t\t\t\t}\n\t\t\t\tfields.push(field);\n\t\t\t}\n\t\t}\n\n\t\tout.push({\n\t\t\ttopic,\n\t\t\tcount: rows.length,\n\t\t\tfirst_height: first,\n\t\t\tlast_height: last,\n\t\t\tnon_tuple: nonTuple,\n\t\t\tfields,\n\t\t});\n\t}\n\n\treturn out.sort((a, b) => b.count - a.count);\n}\n",
23
23
  "import type {\n\tColumnType,\n\tSubgraphDefinition,\n\tSubgraphTable,\n} from \"../types.ts\";\nimport { pgSchemaName } from \"./utils.ts\";\n\n/**\n * Generate a `schema.prisma` from a subgraph definition. Pairs with the BYO data\n * plane: once a subgraph's decoded rows land in the user's own Postgres, this\n * emits the Prisma models so they get a fully-typed ORM (joins, relations,\n * transactions) over their own data — the \"Prisma wrapper for Stacks\" without us\n * shipping an ORM. Output mirrors the DDL in `generator.ts` so `prisma db pull`\n * against a deployed schema produces a matching model (no drift).\n */\n\n/** Clarity/subgraph column type → Prisma field type + optional `@db` native type. */\nconst PRISMA_TYPE: Record<ColumnType, { type: string; db?: string }> = {\n\t// uint128/int128 exceed JS/Prisma BigInt-safe range — Decimal is lossless.\n\tuint: { type: \"Decimal\", db: \"@db.Numeric\" },\n\tint: { type: \"Decimal\", db: \"@db.Numeric\" },\n\ttext: { type: \"String\" },\n\tprincipal: { type: \"String\" },\n\tboolean: { type: \"Boolean\" },\n\ttimestamp: { type: \"DateTime\", db: \"@db.Timestamptz\" },\n\tjsonb: { type: \"Json\" },\n};\n\n/** System columns every subgraph table gets (kept in sync with generator.ts). */\nconst SYSTEM_FIELDS: Array<{ field: string; col: string; line: string }> = [\n\t{ field: \"id\", col: \"_id\", line: \"BigInt @id @default(autoincrement())\" },\n\t{ field: \"blockHeight\", col: \"_block_height\", line: \"BigInt\" },\n\t{ field: \"txId\", col: \"_tx_id\", line: \"String\" },\n\t{\n\t\tfield: \"createdAt\",\n\t\tcol: \"_created_at\",\n\t\tline: \"DateTime @default(now()) @db.Timestamptz\",\n\t},\n];\n\nfunction snakeToCamel(name: string): string {\n\treturn name.replace(/_([a-z0-9])/g, (_, c: string) => c.toUpperCase());\n}\n\nfunction pascalCase(name: string): string {\n\tconst camel = snakeToCamel(name);\n\treturn camel.charAt(0).toUpperCase() + camel.slice(1);\n}\n\nfunction quotePrismaDefault(value: string | number | boolean): string {\n\tif (typeof value === \"string\")\n\t\treturn `@default(\"${value.replace(/\"/g, '\\\\\"')}\")`;\n\treturn `@default(${value})`;\n}\n\n/** A back-relation field another table's relation induces on this one. */\ninterface BackRelation {\n\tfield: string;\n\tmodel: string;\n\trelationName: string;\n}\n\nfunction renderTable(\n\ttableName: string,\n\ttable: SubgraphTable,\n\tbackRelations: BackRelation[],\n): string {\n\tconst lines: string[] = [];\n\n\tfor (const sys of SYSTEM_FIELDS) {\n\t\tlines.push(` ${sys.field} ${sys.line} @map(\"${sys.col}\")`);\n\t}\n\n\tfor (const [colName, col] of Object.entries(table.columns)) {\n\t\tconst field = snakeToCamel(colName);\n\t\tconst mapped = PRISMA_TYPE[col.type];\n\t\tconst optional = col.nullable ? \"?\" : \"\";\n\t\tconst attrs: string[] = [];\n\t\tif (field !== colName) attrs.push(`@map(\"${colName}\")`);\n\t\tif (col.default !== undefined) attrs.push(quotePrismaDefault(col.default));\n\t\tif (mapped.db) attrs.push(mapped.db);\n\t\tlines.push(\n\t\t\t` ${field} ${mapped.type}${optional}${attrs.length ? ` ${attrs.join(\" \")}` : \"\"}`,\n\t\t);\n\t}\n\n\t// Forward relations (this table owns the FK).\n\tfor (const rel of table.relations ?? []) {\n\t\tconst optional = rel.fields.some((f) => table.columns[f]?.nullable)\n\t\t\t? \"?\"\n\t\t\t: \"\";\n\t\tconst relName = `${pascalCase(tableName)}_${rel.name}`;\n\t\tconst fields = rel.fields.map(snakeToCamel).join(\", \");\n\t\tconst refs = rel.referencedColumns.map(snakeToCamel).join(\", \");\n\t\tlines.push(\n\t\t\t` ${rel.name} ${pascalCase(rel.references)}${optional} @relation(\"${relName}\", fields: [${fields}], references: [${refs}])`,\n\t\t);\n\t}\n\n\t// Back relations (another table points here) — Prisma needs both sides.\n\tfor (const back of backRelations) {\n\t\tlines.push(\n\t\t\t` ${back.field} ${back.model}[] @relation(\"${back.relationName}\")`,\n\t\t);\n\t}\n\n\t// Block attributes: per-column @@index, composite @@index, @@unique.\n\tconst block: string[] = [];\n\tfor (const [colName, col] of Object.entries(table.columns)) {\n\t\tif (col.indexed) block.push(` @@index([${snakeToCamel(colName)}])`);\n\t}\n\tfor (const cols of table.indexes ?? []) {\n\t\tblock.push(` @@index([${cols.map(snakeToCamel).join(\", \")}])`);\n\t}\n\tfor (const cols of table.uniqueKeys ?? []) {\n\t\tblock.push(` @@unique([${cols.map(snakeToCamel).join(\", \")}])`);\n\t}\n\tblock.push(` @@map(\"${tableName}\")`);\n\n\treturn `model ${pascalCase(tableName)} {\\n${lines.join(\"\\n\")}\\n\\n${block.join(\"\\n\")}\\n}`;\n}\n\n/** Compute the back-relation field each table receives from others' relations. */\nfunction computeBackRelations(\n\tschema: Record<string, SubgraphTable>,\n): Map<string, BackRelation[]> {\n\tconst map = new Map<string, BackRelation[]>();\n\tfor (const [owningTable, table] of Object.entries(schema)) {\n\t\tfor (const rel of table.relations ?? []) {\n\t\t\tconst list = map.get(rel.references) ?? [];\n\t\t\tlist.push({\n\t\t\t\tfield: `${snakeToCamel(owningTable)}${pascalCase(rel.name)}`,\n\t\t\t\tmodel: pascalCase(owningTable),\n\t\t\t\trelationName: `${pascalCase(owningTable)}_${rel.name}`,\n\t\t\t});\n\t\t\tmap.set(rel.references, list);\n\t\t}\n\t}\n\treturn map;\n}\n\nexport interface PrismaGenOptions {\n\t/** Postgres schema the tables live in (account-scoped). */\n\tschemaName?: string;\n\t/** env var the datasource url reads from. */\n\tdatasourceEnv?: string;\n\t/**\n\t * Emit only the `model` blocks (no datasource/generator). Lets users compose\n\t * these models with their own schema via Prisma's `prismaSchemaFolder`.\n\t */\n\tmodelsOnly?: boolean;\n}\n\nexport function generatePrismaSchema(\n\tdef: SubgraphDefinition,\n\topts: PrismaGenOptions = {},\n): string {\n\tconst schemaName = opts.schemaName ?? pgSchemaName(def.name);\n\tconst env = opts.datasourceEnv ?? \"DATABASE_URL\";\n\n\tconst header = [\n\t\t`// Generated by \\`sl subgraphs codegen --target prisma\\` from subgraph \"${def.name}\". Do not edit by hand.`,\n\t\t\"\",\n\t\t\"datasource db {\",\n\t\t' provider = \"postgresql\"',\n\t\t` url = env(\"${env}\")`,\n\t\t` schemas = [\"${schemaName}\"]`,\n\t\t\"}\",\n\t\t\"\",\n\t\t\"generator client {\",\n\t\t' provider = \"prisma-client-js\"',\n\t\t' previewFeatures = [\"multiSchema\"]',\n\t\t\"}\",\n\t].join(\"\\n\");\n\n\t// Fold @@schema into each model block (it must live inside the block).\n\tconst backRelations = computeBackRelations(def.schema);\n\tconst modelBlocks = Object.entries(def.schema).map(([tableName, table]) => {\n\t\tconst body = renderTable(\n\t\t\ttableName,\n\t\t\ttable,\n\t\t\tbackRelations.get(tableName) ?? [],\n\t\t);\n\t\treturn body.replace(/\\n}$/, `\\n @@schema(\"${schemaName}\")\\n}`);\n\t});\n\n\tif (opts.modelsOnly) return `${modelBlocks.join(\"\\n\\n\")}\\n`;\n\treturn `${header}\\n\\n${modelBlocks.join(\"\\n\\n\")}\\n`;\n}\n",
@@ -26,7 +26,7 @@
26
26
  "import {\n\ttype IndexColumn,\n\ttype IndexColumnType,\n\ttype IndexPrimaryKey,\n\tSOURCE_READ_PKS,\n\tSOURCE_READ_TYPES,\n} from \"@secondlayer/shared/db\";\n\n/**\n * Emit a portable, typed schema for the public Index read domain (blocks,\n * decoded events, transactions, stacking, sBTC, BNS, …) from the single-sourced\n * `SOURCE_READ_TYPES` registry. This is the Index arm of the \"typed Stacks data in\n * your own stack\" story: a BYO-database consumer mirrors Index rows and gets a\n * fully-typed ORM / JSON-Schema that can't drift from the API (the registry is\n * drift-tested against the producer's read contract).\n *\n * Prisma uses the `SOURCE_READ_PKS` registry for model identity. Tables whose only\n * physical PK is a synthetic id excluded from the read contract (chain_reorgs) have\n * no read-set key and are omitted from Prisma output (other targets still emit them).\n */\n\nexport type IndexCodegenTarget =\n\t| \"prisma\"\n\t| \"kysely\"\n\t| \"drizzle\"\n\t| \"json-schema\";\n\nexport interface IndexCodegenOptions {\n\t/** Restrict output to these Index tables (default: all). */\n\ttables?: string[];\n\t/** Postgres schema to qualify table names with (default: bare names). */\n\tschemaName?: string;\n\t/** Prisma only: datasource url env var (default DATABASE_URL). */\n\tdatasourceEnv?: string;\n}\n\ntype IndexTables = typeof SOURCE_READ_TYPES;\n\nfunction pascalCase(name: string): string {\n\treturn name\n\t\t.replace(/_([a-z0-9])/g, (_, c: string) => c.toUpperCase())\n\t\t.replace(/^[a-z]/, (c) => c.toUpperCase());\n}\n\nfunction snakeToCamel(name: string): string {\n\treturn name.replace(/_([a-z0-9])/g, (_, c: string) => c.toUpperCase());\n}\n\n/** Resolve the requested tables (validated) → ordered [table, columns] entries. */\nfunction selectTables(\n\topts: IndexCodegenOptions,\n): Array<[string, Record<string, IndexColumn>]> {\n\tconst all = SOURCE_READ_TYPES as Record<string, Record<string, IndexColumn>>;\n\tconst names = opts.tables ?? Object.keys(all);\n\treturn names.map((name) => {\n\t\tconst cols = all[name];\n\t\tif (!cols) {\n\t\t\tthrow new Error(\n\t\t\t\t`Unknown Index table \"${name}\". Known: ${Object.keys(all).sort().join(\", \")}`,\n\t\t\t);\n\t\t}\n\t\treturn [name, cols];\n\t});\n}\n\nconst KYSELY_TYPE: Record<IndexColumnType, string> = {\n\ttext: \"string\",\n\tint: \"number\",\n\tboolean: \"boolean\",\n\ttimestamp: \"Date\",\n\tjsonb: \"unknown\",\n};\n\nfunction generateKysely(\n\tentries: Array<[string, Record<string, IndexColumn>]>,\n\tschemaName?: string,\n): string {\n\tconst interfaces = entries.map(([table, cols]) => {\n\t\tconst lines = Object.entries(cols).map(([col, def]) => {\n\t\t\tconst type = def.nullable\n\t\t\t\t? `${KYSELY_TYPE[def.type]} | null`\n\t\t\t\t: KYSELY_TYPE[def.type];\n\t\t\treturn ` ${col}: ${type};`;\n\t\t});\n\t\treturn `export interface ${pascalCase(table)} {\\n${lines.join(\"\\n\")}\\n}`;\n\t});\n\tconst dbEntries = entries.map(([table]) => {\n\t\tconst key = schemaName ? `${schemaName}.${table}` : table;\n\t\treturn ` \"${key}\": ${pascalCase(table)};`;\n\t});\n\tconst rows = entries.map(\n\t\t([table]) =>\n\t\t\t`export type ${pascalCase(table)}Row = Selectable<${pascalCase(table)}>;`,\n\t);\n\treturn [\n\t\t\"// Generated by `sl index codegen --target kysely`. Do not edit by hand.\",\n\t\t`import type { Selectable } from \"kysely\";`,\n\t\t\"\",\n\t\tinterfaces.join(\"\\n\\n\"),\n\t\t\"\",\n\t\t`export interface IndexDB {\\n${dbEntries.join(\"\\n\")}\\n}`,\n\t\t\"\",\n\t\trows.join(\"\\n\"),\n\t\t\"\",\n\t].join(\"\\n\");\n}\n\nconst DRIZZLE_BUILDER: Record<IndexColumnType, (col: string) => string> = {\n\ttext: (c) => `text(\"${c}\")`,\n\tint: (c) => `integer(\"${c}\")`,\n\tboolean: (c) => `boolean(\"${c}\")`,\n\ttimestamp: (c) => `timestamp(\"${c}\", { withTimezone: true })`,\n\tjsonb: (c) => `jsonb(\"${c}\")`,\n};\n\nconst DRIZZLE_BUILDER_NAME: Record<IndexColumnType, string> = {\n\ttext: \"text\",\n\tint: \"integer\",\n\tboolean: \"boolean\",\n\ttimestamp: \"timestamp\",\n\tjsonb: \"jsonb\",\n};\n\nfunction generateDrizzle(\n\tentries: Array<[string, Record<string, IndexColumn>]>,\n\tschemaName?: string,\n): string {\n\tconst used = new Set<string>();\n\tfor (const [, cols] of entries)\n\t\tfor (const def of Object.values(cols))\n\t\t\tused.add(DRIZZLE_BUILDER_NAME[def.type]);\n\tif (schemaName) used.add(\"pgSchema\");\n\telse used.add(\"pgTable\");\n\n\tconst tableFn = schemaName ? \"sg.table\" : \"pgTable\";\n\tconst tables = entries.map(([table, cols]) => {\n\t\tconst lines = Object.entries(cols).map(([col, def]) => {\n\t\t\tlet line = ` ${snakeToCamel(col)}: ${DRIZZLE_BUILDER[def.type](col)}`;\n\t\t\tif (!def.nullable) line += \".notNull()\";\n\t\t\treturn `${line},`;\n\t\t});\n\t\treturn `export const ${snakeToCamel(table)} = ${tableFn}(\"${table}\", {\\n${lines.join(\"\\n\")}\\n});`;\n\t});\n\tconst rows = entries.map(\n\t\t([table]) =>\n\t\t\t`export type ${pascalCase(table)} = typeof ${snakeToCamel(table)}.$inferSelect;`,\n\t);\n\treturn [\n\t\t\"// Generated by `sl index codegen --target drizzle`. Do not edit by hand.\",\n\t\t`import { ${[...used].sort().join(\", \")} } from \"drizzle-orm/pg-core\";`,\n\t\t\"\",\n\t\t...(schemaName ? [`export const sg = pgSchema(\"${schemaName}\");`, \"\"] : []),\n\t\ttables.join(\"\\n\\n\"),\n\t\t\"\",\n\t\trows.join(\"\\n\"),\n\t\t\"\",\n\t].join(\"\\n\");\n}\n\nconst JSON_SCHEMA_TYPE: Record<IndexColumnType, Record<string, unknown>> = {\n\ttext: { type: \"string\" },\n\tint: { type: \"integer\" },\n\tboolean: { type: \"boolean\" },\n\ttimestamp: { type: \"string\", format: \"date-time\" },\n\tjsonb: {},\n};\n\nfunction generateJsonSchema(\n\tentries: Array<[string, Record<string, IndexColumn>]>,\n): string {\n\tconst defs: Record<string, unknown> = {};\n\tfor (const [table, cols] of entries) {\n\t\tconst properties: Record<string, unknown> = {};\n\t\tconst required: string[] = [];\n\t\tfor (const [col, def] of Object.entries(cols)) {\n\t\t\tconst base = JSON_SCHEMA_TYPE[def.type];\n\t\t\tif (def.nullable && \"type\" in base) {\n\t\t\t\tproperties[col] = { ...base, type: [base.type, \"null\"] };\n\t\t\t} else {\n\t\t\t\tproperties[col] = { ...base };\n\t\t\t\tif (!def.nullable) required.push(col);\n\t\t\t}\n\t\t}\n\t\tdefs[pascalCase(table)] = {\n\t\t\ttype: \"object\",\n\t\t\tproperties,\n\t\t\trequired,\n\t\t\tadditionalProperties: false,\n\t\t};\n\t}\n\treturn `${JSON.stringify(\n\t\t{\n\t\t\t$schema: \"https://json-schema.org/draft/2020-12/schema\",\n\t\t\ttitle: \"Secondlayer Index domain\",\n\t\t\t$defs: defs,\n\t\t},\n\t\tnull,\n\t\t2,\n\t)}\\n`;\n}\n\nconst PRISMA_TYPE: Record<IndexColumnType, { type: string; db?: string }> = {\n\ttext: { type: \"String\" },\n\tint: { type: \"Int\" },\n\tboolean: { type: \"Boolean\" },\n\ttimestamp: { type: \"DateTime\", db: \"@db.Timestamptz\" },\n\tjsonb: { type: \"Json\" },\n};\n\nfunction generatePrisma(\n\tentries: Array<[string, Record<string, IndexColumn>]>,\n\tschemaName: string | undefined,\n\tdatasourceEnv: string,\n): string {\n\tconst pks = SOURCE_READ_PKS as Record<string, IndexPrimaryKey>;\n\tconst skipped: string[] = [];\n\n\tconst models: string[] = [];\n\tfor (const [table, cols] of entries) {\n\t\tconst pk = pks[table];\n\t\tif (!pk) {\n\t\t\tskipped.push(table);\n\t\t\tcontinue;\n\t\t}\n\t\tconst single = pk.length === 1 ? pk[0] : null;\n\t\tconst lines = Object.entries(cols).map(([col, def]) => {\n\t\t\tconst field = snakeToCamel(col);\n\t\t\tconst mapped = PRISMA_TYPE[def.type];\n\t\t\tconst attrs: string[] = [];\n\t\t\tif (single === col) attrs.push(\"@id\");\n\t\t\tif (field !== col) attrs.push(`@map(\"${col}\")`);\n\t\t\tif (mapped.db) attrs.push(mapped.db);\n\t\t\tconst optional = def.nullable ? \"?\" : \"\";\n\t\t\treturn ` ${field} ${mapped.type}${optional}${attrs.length ? ` ${attrs.join(\" \")}` : \"\"}`;\n\t\t});\n\t\tconst block: string[] = [];\n\t\tif (!single) {\n\t\t\tblock.push(` @@id([${pk.map(snakeToCamel).join(\", \")}])`);\n\t\t}\n\t\tblock.push(` @@map(\"${table}\")`);\n\t\tif (schemaName) block.push(` @@schema(\"${schemaName}\")`);\n\t\tmodels.push(\n\t\t\t`model ${pascalCase(table)} {\\n${lines.join(\"\\n\")}\\n\\n${block.join(\"\\n\")}\\n}`,\n\t\t);\n\t}\n\n\tconst header = [\n\t\t\"// Generated by `sl index codegen --target prisma`. Do not edit by hand.\",\n\t\t...(skipped.length\n\t\t\t? [\n\t\t\t\t\t`// Omitted (no read-set primary key, query via another target): ${skipped.join(\", \")}`,\n\t\t\t\t]\n\t\t\t: []),\n\t\t\"\",\n\t\t\"datasource db {\",\n\t\t' provider = \"postgresql\"',\n\t\t` url = env(\"${datasourceEnv}\")`,\n\t\t...(schemaName ? [` schemas = [\"${schemaName}\"]`] : []),\n\t\t\"}\",\n\t\t\"\",\n\t\t\"generator client {\",\n\t\t' provider = \"prisma-client-js\"',\n\t\t...(schemaName ? [' previewFeatures = [\"multiSchema\"]'] : []),\n\t\t\"}\",\n\t].join(\"\\n\");\n\n\treturn `${header}\\n\\n${models.join(\"\\n\\n\")}\\n`;\n}\n\nexport function generateIndexSchema(\n\ttarget: IndexCodegenTarget,\n\topts: IndexCodegenOptions = {},\n): string {\n\tconst entries = selectTables(opts);\n\tswitch (target) {\n\t\tcase \"prisma\":\n\t\t\treturn generatePrisma(\n\t\t\t\tentries,\n\t\t\t\topts.schemaName,\n\t\t\t\topts.datasourceEnv ?? \"DATABASE_URL\",\n\t\t\t);\n\t\tcase \"kysely\":\n\t\t\treturn generateKysely(entries, opts.schemaName);\n\t\tcase \"drizzle\":\n\t\t\treturn generateDrizzle(entries, opts.schemaName);\n\t\tcase \"json-schema\":\n\t\t\treturn generateJsonSchema(entries);\n\t\tdefault:\n\t\t\tthrow new Error(`Unsupported Index codegen target \"${target}\".`);\n\t}\n}\n\n/** Index tables available to codegen, for help text and validation. */\nexport const INDEX_CODEGEN_TABLES: readonly string[] = Object.keys(\n\tSOURCE_READ_TYPES,\n) as Array<keyof IndexTables>;\n",
27
27
  "import type { Database } from \"@secondlayer/shared/db\";\nimport type { ByoBreakingChangeDetails } from \"@secondlayer/shared/errors\";\nimport { type Kysely, sql } from \"kysely\";\nimport type {\n\tSubgraphDefinition,\n\tSubgraphSchema,\n\tSubgraphTable,\n} from \"../types.ts\";\nimport { validateSubgraphDefinition } from \"../validate.ts\";\nimport {\n\tTYPE_MAP,\n\temitForeignKeyDDL,\n\temitTableDDL,\n\tgenerateSubgraphSQL,\n\ttableNeedsTrgm,\n} from \"./generator.ts\";\nimport { pgSchemaName } from \"./utils.ts\";\n\ntype AnyDb = Kysely<Database>;\n\n/** Deep-clone an object, converting BigInts to strings for JSON serialization. */\nfunction toJsonSafe(obj: unknown): unknown {\n\treturn JSON.parse(\n\t\tJSON.stringify(obj, (_key, value) =>\n\t\t\ttypeof value === \"bigint\" ? value.toString() : value,\n\t\t),\n\t);\n}\n\nexport interface TableDiff {\n\t/** Tables added to the schema */\n\taddedTables: string[];\n\t/** Tables removed from the schema */\n\tremovedTables: string[];\n\t/** Per-table column diffs (only for tables present in both) */\n\ttables: Record<string, ColumnDiff>;\n}\n\nexport interface ColumnDiff {\n\tadded: string[];\n\tremoved: string[];\n\tchanged: string[];\n}\n\n/**\n * Compare two multi-table subgraph schemas and return differences.\n */\nexport function diffSchema(\n\texisting: SubgraphSchema,\n\tincoming: SubgraphSchema,\n): TableDiff {\n\tconst existingTables = new Set(Object.keys(existing));\n\tconst incomingTables = new Set(Object.keys(incoming));\n\n\tconst addedTables = [...incomingTables].filter((t) => !existingTables.has(t));\n\tconst removedTables = [...existingTables].filter(\n\t\t(t) => !incomingTables.has(t),\n\t);\n\n\tconst tables: Record<string, ColumnDiff> = {};\n\tfor (const tableName of incomingTables) {\n\t\tif (!existingTables.has(tableName)) continue;\n\t\tconst existingCols = existing[tableName]?.columns;\n\t\tconst incomingCols = incoming[tableName]?.columns;\n\n\t\tconst existingKeys = new Set(Object.keys(existingCols));\n\t\tconst incomingKeys = new Set(Object.keys(incomingCols));\n\n\t\ttables[tableName] = {\n\t\t\tadded: [...incomingKeys].filter((k) => !existingKeys.has(k)),\n\t\t\tremoved: [...existingKeys].filter((k) => !incomingKeys.has(k)),\n\t\t\tchanged: [...incomingKeys].filter((k) => {\n\t\t\t\tif (!existingKeys.has(k)) return false;\n\t\t\t\tconst sortedStringify = (o: unknown) =>\n\t\t\t\t\tJSON.stringify(o, Object.keys(o as object).sort());\n\t\t\t\treturn (\n\t\t\t\t\tsortedStringify(existingCols[k]) !== sortedStringify(incomingCols[k])\n\t\t\t\t);\n\t\t\t}),\n\t\t};\n\t}\n\n\treturn { addedTables, removedTables, tables };\n}\n\n/**\n * Returns true if the diff contains any breaking changes\n * (removed tables, removed columns, or changed column types).\n */\nexport function hasBreakingChanges(diff: TableDiff): {\n\tbreaking: boolean;\n\treasons: string[];\n} {\n\tconst reasons: string[] = [];\n\tif (diff.removedTables.length > 0) {\n\t\treasons.push(`removed tables: [${diff.removedTables.join(\", \")}]`);\n\t}\n\tfor (const [table, colDiff] of Object.entries(diff.tables)) {\n\t\tif (colDiff.removed.length > 0) {\n\t\t\treasons.push(`${table}: removed columns [${colDiff.removed.join(\", \")}]`);\n\t\t}\n\t\tif (colDiff.changed.length > 0) {\n\t\t\treasons.push(`${table}: changed columns [${colDiff.changed.join(\", \")}]`);\n\t\t}\n\t}\n\treturn { breaking: reasons.length > 0, reasons };\n}\n\n/** Increment the patch segment of a semver string. \"1.0.2\" → \"1.0.3\" */\nfunction bumpPatch(version: string): string {\n\tconst parts = version.split(\".\");\n\tif (parts.length !== 3) return \"1.0.1\";\n\tconst patch = Number.parseInt(parts[2] ?? \"0\", 10);\n\treturn `${parts[0]}.${parts[1]}.${Number.isNaN(patch) ? 1 : patch + 1}`;\n}\n\nexport interface DeployDiff {\n\taddedTables: string[];\n\tremovedTables: string[];\n\taddedColumns: Record<string, string[]>;\n\tbreakingChanges: string[];\n}\n\nexport interface ByoMigrationPlan {\n\tschemaName: string;\n\tdropStatement: string;\n\tstatements: string[];\n\tgrantScript: string;\n}\n\n/**\n * Thrown when a BYO subgraph deploy is refused for a breaking schema change.\n * Plain `Error` with a literal `code` (not `SecondLayerError`) so the API\n * middleware matches it by code across bundle boundaries — bunup duplicates\n * classes per package, breaking cross-bundle `instanceof`. The refusal stands;\n * `details` carries the reviewable DROP + rebuild the user must run manually.\n */\nexport class ByoBreakingChangeError extends Error {\n\treadonly code = \"BYO_BREAKING_CHANGE\" as const;\n\treadonly details: ByoBreakingChangeDetails;\n\n\tconstructor(reasons: string[], diff: DeployDiff, plan: ByoMigrationPlan) {\n\t\tsuper(\n\t\t\t\"Breaking schema change on a BYO subgraph would drop data in your \" +\n\t\t\t\t\"database. Review the plan and run the DROP + rebuild DDL manually.\",\n\t\t);\n\t\tthis.name = \"ByoBreakingChangeError\";\n\t\tthis.details = { reasons, diff, plan };\n\t}\n}\n\n/**\n * Map a raw `TableDiff` (+ breaking reasons) into the wire `DeployDiff`. `null`\n * diff (e.g. same-hash force reindex, where no schema diff exists) → empty\n * added/removed/columns with reasons preserved. Single source for both the\n * non-refuse \"reindexed\" result and the refuse-path error payload.\n */\nfunction toDeployDiff(diff: TableDiff | null, reasons: string[]): DeployDiff {\n\treturn {\n\t\taddedTables: diff?.addedTables ?? [],\n\t\tremovedTables: diff?.removedTables ?? [],\n\t\taddedColumns: diff\n\t\t\t? Object.fromEntries(\n\t\t\t\t\tObject.entries(diff.tables)\n\t\t\t\t\t\t.filter(([, c]) => c.added.length > 0)\n\t\t\t\t\t\t.map(([t, c]) => [t, c.added]),\n\t\t\t\t)\n\t\t\t: {},\n\t\tbreakingChanges: reasons,\n\t};\n}\n\nexport interface DeployPlan {\n\tschemaName: string;\n\t/** `DROP SCHEMA … CASCADE` a destructive rebuild would run first (shown, never auto-run on BYO). */\n\tdropStatement: string;\n\t/** DDL Secondlayer will run against your database. */\n\tstatements: string[];\n\t/** Least-privilege grant script to run once, before deploying. */\n\tgrantScript: string;\n}\n\n/**\n * Render the DDL + grant script a BYO deploy would run, without executing.\n * Powers `--dry-run`: the user reviews exactly what touches their DB first.\n */\nexport function renderDeployPlan(\n\tdef: SubgraphDefinition,\n\tschemaName?: string,\n): DeployPlan {\n\tvalidateSubgraphDefinition(def);\n\tconst { statements } = generateSubgraphSQL(def, schemaName);\n\tconst schema = schemaName ?? pgSchemaName(def.name);\n\tconst dropStatement = `DROP SCHEMA IF EXISTS \"${schema}\" CASCADE;`;\n\tconst grantScript = [\n\t\t\"-- Run once on YOUR database as an owner/superuser, replacing <role>\",\n\t\t\"-- with the role whose credentials you give Secondlayer.\",\n\t\t\"-- Secondlayer then creates and owns only this one schema:\",\n\t\t`GRANT CREATE ON DATABASE current_database() TO <role>;`,\n\t\t`-- (after first deploy <role> owns \"${schema}\"; no further grants needed)`,\n\t].join(\"\\n\");\n\treturn { schemaName: schema, dropStatement, statements, grantScript };\n}\n\n/**\n * Deploy a subgraph schema to the database.\n * - New subgraph → CREATE SCHEMA + tables + register\n * - Same hash → no-op (handler path updated)\n * - Additive change → ALTER TABLE ADD COLUMN / CREATE TABLE for new tables\n * - Breaking change → auto-reindex (drop + recreate)\n */\nexport async function deploySchema(\n\tdb: AnyDb,\n\tdef: SubgraphDefinition,\n\thandlerPath: string,\n\topts?: {\n\t\tforceReindex?: boolean;\n\t\tapiKeyId?: string;\n\t\taccountId?: string;\n\t\tschemaName?: string;\n\t\tversion?: string;\n\t\thandlerCode?: string;\n\t\tsourceCode?: string;\n\t\t/**\n\t\t * BYO data plane: when set, schema DDL (CREATE/ALTER/index) runs against\n\t\t * the user-owned DB while the subgraphs registry row stays on `db`\n\t\t * (managed). Defaults to `db` — managed deploys are unchanged.\n\t\t */\n\t\tdataDb?: AnyDb;\n\t\t/** Encrypted user-DB connection string to persist on the registry row. */\n\t\tdatabaseUrlEnc?: Buffer | null;\n\t},\n): Promise<{\n\taction: \"created\" | \"unchanged\" | \"handler_updated\" | \"updated\" | \"reindexed\";\n\tsubgraphId: string;\n\tversion: string;\n\tdiff?: DeployDiff;\n}> {\n\tvalidateSubgraphDefinition(def);\n\n\tconst { statements, hash } = generateSubgraphSQL(def, opts?.schemaName);\n\tconst { getSubgraph, registerSubgraph } = await import(\n\t\t\"@secondlayer/shared/db/queries/subgraphs\"\n\t);\n\n\t// DDL target: the user's DB for BYO, else the managed DB. The registry\n\t// (getSubgraph/registerSubgraph) always stays on `db`.\n\tconst ddlDb = opts?.dataDb ?? db;\n\tconst byo = opts?.dataDb != null;\n\tconst refuseDestructiveOnByo = (\n\t\treasons: string[],\n\t\tdiff: TableDiff | null,\n\t): never => {\n\t\tconst plan = renderDeployPlan(def, opts?.schemaName);\n\t\tthrow new ByoBreakingChangeError(reasons, toDeployDiff(diff, reasons), {\n\t\t\tschemaName: plan.schemaName,\n\t\t\tdropStatement: plan.dropStatement,\n\t\t\tstatements: plan.statements,\n\t\t\tgrantScript: plan.grantScript,\n\t\t});\n\t};\n\n\tconst existing = await getSubgraph(db, def.name, opts?.accountId);\n\n\tconst schemaName = opts?.schemaName ?? pgSchemaName(def.name);\n\n\t// Server owns versioning: use explicit flag, bump patch from existing, or start at 1.0.0\n\tconst newVersion =\n\t\topts?.version ?? (existing ? bumpPatch(existing.version) : \"1.0.0\");\n\n\tconst regData = {\n\t\tname: def.name,\n\t\tversion: newVersion,\n\t\tdefinition: toJsonSafe({\n\t\t\tname: def.name,\n\t\t\tversion: def.version,\n\t\t\tdescription: def.description,\n\t\t\tstartBlock: def.startBlock,\n\t\t\tsources: def.sources,\n\t\t\tschema: def.schema,\n\t\t}) as Record<string, unknown>,\n\t\tschemaHash: hash,\n\t\thandlerPath,\n\t\tapiKeyId: opts?.apiKeyId,\n\t\taccountId: opts?.accountId,\n\t\thandlerCode: opts?.handlerCode,\n\t\tsourceCode: opts?.sourceCode,\n\t\tschemaName,\n\t\tstartBlock: def.startBlock,\n\t\tdatabaseUrlEnc: opts?.databaseUrlEnc ?? null,\n\t};\n\n\tif (existing) {\n\t\t// Guard against zombie rows: registry entry exists but PG schema was dropped\n\t\t// (e.g. partial delete or manual cleanup). Treat as a new subgraph. The\n\t\t// schema lives on the data-plane DB (user DB for BYO), so check there.\n\t\tconst schemaExists = await sql<{ exists: boolean }>`\n\t\t\tSELECT EXISTS (\n\t\t\t\tSELECT 1 FROM information_schema.schemata\n\t\t\t\tWHERE schema_name = ${schemaName}\n\t\t\t) AS \"exists\"\n\t\t`\n\t\t\t.execute(ddlDb)\n\t\t\t.then((r) => r.rows[0]?.exists ?? false);\n\n\t\tif (!schemaExists) {\n\t\t\tfor (const stmt of statements) {\n\t\t\t\tawait sql.raw(stmt).execute(ddlDb);\n\t\t\t}\n\t\t\tconst sg = await registerSubgraph(db, regData);\n\t\t\treturn { action: \"reindexed\", subgraphId: sg.id, version: newVersion };\n\t\t}\n\n\t\tif (existing.schema_hash === hash && !opts?.forceReindex) {\n\t\t\t// Update handler path and code in case file moved or handler changed.\n\t\t\tconst handlerChanged =\n\t\t\t\topts?.handlerCode != null && opts.handlerCode !== existing.handler_code;\n\t\t\tconst { updateSubgraphHandlerPath } = await import(\n\t\t\t\t\"@secondlayer/shared/db/queries/subgraphs\"\n\t\t\t);\n\t\t\tawait updateSubgraphHandlerPath(db, def.name, handlerPath, {\n\t\t\t\thandlerCode: opts?.handlerCode,\n\t\t\t\tsourceCode: opts?.sourceCode,\n\t\t\t});\n\t\t\treturn {\n\t\t\t\taction: handlerChanged ? \"handler_updated\" : \"unchanged\",\n\t\t\t\tsubgraphId: existing.id,\n\t\t\t\tversion: existing.version,\n\t\t\t};\n\t\t}\n\n\t\tif (existing.schema_hash === hash && opts?.forceReindex) {\n\t\t\t// Same schema but force reindex requested — drop and recreate.\n\t\t\tif (byo) refuseDestructiveOnByo([\"force reindex\"], null);\n\t\t\tawait sql\n\t\t\t\t.raw(`DROP SCHEMA IF EXISTS \"${schemaName}\" CASCADE`)\n\t\t\t\t.execute(ddlDb);\n\t\t\tfor (const stmt of statements) {\n\t\t\t\tawait sql.raw(stmt).execute(ddlDb);\n\t\t\t}\n\t\t\tconst sg = await registerSubgraph(db, regData);\n\t\t\treturn { action: \"reindexed\", subgraphId: sg.id, version: newVersion };\n\t\t}\n\n\t\tif (existing.definition.schema) {\n\t\t\tconst diff = diffSchema(\n\t\t\t\texisting.definition.schema as SubgraphSchema,\n\t\t\t\tdef.schema,\n\t\t\t);\n\t\t\tconst { breaking, reasons } = hasBreakingChanges(diff);\n\n\t\t\tif (breaking || opts?.forceReindex) {\n\t\t\t\t// Breaking change or forced: drop schema, recreate, register\n\t\t\t\tif (byo) {\n\t\t\t\t\trefuseDestructiveOnByo(\n\t\t\t\t\t\treasons.length > 0 ? reasons : [\"force reindex\"],\n\t\t\t\t\t\tdiff,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tawait sql\n\t\t\t\t\t.raw(`DROP SCHEMA IF EXISTS \"${schemaName}\" CASCADE`)\n\t\t\t\t\t.execute(ddlDb);\n\t\t\t\tfor (const stmt of statements) {\n\t\t\t\t\tawait sql.raw(stmt).execute(ddlDb);\n\t\t\t\t}\n\t\t\t\tconst sg = await registerSubgraph(db, regData);\n\t\t\t\tconst deployDiff = toDeployDiff(diff, reasons);\n\t\t\t\treturn {\n\t\t\t\t\taction: \"reindexed\",\n\t\t\t\t\tsubgraphId: sg.id,\n\t\t\t\t\tversion: newVersion,\n\t\t\t\t\tdiff: deployDiff,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// Create new tables using the SAME per-table emitter as the full\n\t\t\t// generator, so an additively-created table gets its UNIQUE constraints,\n\t\t\t// composite indexes, column defaults, and FKs — not just the bare columns.\n\t\t\t// (A missing UNIQUE here previously made a handler upsert ON CONFLICT fail\n\t\t\t// at runtime on additively-added tables.)\n\t\t\tconst addedDefs = diff.addedTables\n\t\t\t\t.map((tableName) => ({ tableName, tableDef: def.schema[tableName] }))\n\t\t\t\t.filter(\n\t\t\t\t\t(t): t is { tableName: string; tableDef: SubgraphTable } =>\n\t\t\t\t\t\tt.tableDef !== undefined,\n\t\t\t\t);\n\n\t\t\t// pg_trgm must exist before any search-column GIN index on the new tables.\n\t\t\tif (addedDefs.some(({ tableDef }) => tableNeedsTrgm(tableDef))) {\n\t\t\t\tawait sql.raw(\"CREATE EXTENSION IF NOT EXISTS pg_trgm\").execute(ddlDb);\n\t\t\t}\n\t\t\tfor (const { tableName, tableDef } of addedDefs) {\n\t\t\t\tfor (const stmt of emitTableDDL(schemaName, tableName, tableDef)) {\n\t\t\t\t\tawait sql.raw(stmt).execute(ddlDb);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// FKs in a second pass so every referenced (new or pre-existing) table\n\t\t\t// exists first.\n\t\t\tfor (const { tableName, tableDef } of addedDefs) {\n\t\t\t\tfor (const stmt of emitForeignKeyDDL(schemaName, tableName, tableDef)) {\n\t\t\t\t\tawait sql.raw(stmt).execute(ddlDb);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add columns to existing tables\n\t\t\tfor (const [tableName, colDiff] of Object.entries(diff.tables)) {\n\t\t\t\tif (colDiff.added.length === 0) continue;\n\t\t\t\tconst qualifiedName = `${schemaName}.${tableName}`;\n\t\t\t\tconst tableDef = def.schema[tableName];\n\t\t\t\tif (!tableDef) continue;\n\t\t\t\tfor (const colName of colDiff.added) {\n\t\t\t\t\tconst col = tableDef.columns[colName];\n\t\t\t\t\tif (!col) continue;\n\t\t\t\t\tconst sqlType = TYPE_MAP[col.type];\n\t\t\t\t\tif (!sqlType) continue;\n\t\t\t\t\tconst nullable = col.nullable\n\t\t\t\t\t\t? \"\"\n\t\t\t\t\t\t: ` NOT NULL DEFAULT ${getDefault(col.type)}`;\n\t\t\t\t\tawait sql\n\t\t\t\t\t\t.raw(\n\t\t\t\t\t\t\t`ALTER TABLE ${qualifiedName} ADD COLUMN ${colName} ${sqlType}${nullable}`,\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.execute(ddlDb);\n\t\t\t\t\tif (col.indexed) {\n\t\t\t\t\t\tawait sql\n\t\t\t\t\t\t\t.raw(\n\t\t\t\t\t\t\t\t`CREATE INDEX IF NOT EXISTS idx_${schemaName}_${tableName}_${colName} ON ${qualifiedName} (${colName})`,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.execute(ddlDb);\n\t\t\t\t\t}\n\t\t\t\t\tif (col.search) {\n\t\t\t\t\t\tawait sql\n\t\t\t\t\t\t\t.raw(\n\t\t\t\t\t\t\t\t`CREATE INDEX IF NOT EXISTS idx_${schemaName}_${tableName}_${colName}_trgm ON ${qualifiedName} USING gin (${colName} gin_trgm_ops)`,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.execute(ddlDb);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst sg = await registerSubgraph(db, regData);\n\t\t\tconst addedCols: Record<string, string[]> = {};\n\t\t\tfor (const [t, colDiff] of Object.entries(diff.tables)) {\n\t\t\t\tif ((colDiff as ColumnDiff).added.length > 0)\n\t\t\t\t\taddedCols[t] = (colDiff as ColumnDiff).added;\n\t\t\t}\n\t\t\tconst deployDiff: DeployDiff = {\n\t\t\t\taddedTables: diff.addedTables,\n\t\t\t\tremovedTables: [],\n\t\t\t\taddedColumns: addedCols,\n\t\t\t\tbreakingChanges: [],\n\t\t\t};\n\t\t\treturn {\n\t\t\t\taction: \"updated\",\n\t\t\t\tsubgraphId: sg.id,\n\t\t\t\tversion: newVersion,\n\t\t\t\tdiff: deployDiff,\n\t\t\t};\n\t\t}\n\t}\n\n\t// New subgraph — execute all DDL\n\tfor (const stmt of statements) {\n\t\tawait sql.raw(stmt).execute(ddlDb);\n\t}\n\n\tconst sg = await registerSubgraph(db, regData);\n\treturn { action: \"created\", subgraphId: sg.id, version: newVersion };\n}\n\nfunction getDefault(type: string): string {\n\tswitch (type) {\n\t\tcase \"text\":\n\t\tcase \"principal\":\n\t\t\treturn \"''\";\n\t\tcase \"uint\":\n\t\tcase \"int\":\n\t\t\treturn \"0\";\n\t\tcase \"boolean\":\n\t\t\treturn \"false\";\n\t\tcase \"timestamp\":\n\t\t\treturn \"NOW()\";\n\t\tcase \"jsonb\":\n\t\t\treturn \"'{}'\";\n\t\tdefault:\n\t\t\treturn \"''\";\n\t}\n}\n"
28
28
  ],
29
- "mappings": "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",
30
- "debugId": "4F9187B8B213FB0764756E2164756E21",
29
+ "mappings": "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",
30
+ "debugId": "9ABB4400810C6A0464756E2164756E21",
31
31
  "names": []
32
32
  }