@secondlayer/subgraphs 3.24.2 → 3.24.3
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.
- package/dist/src/index.js +12 -1
- package/dist/src/index.js.map +3 -3
- package/dist/src/runtime/block-processor.d.ts +12 -1
- package/dist/src/runtime/block-processor.js +13 -1
- package/dist/src/runtime/block-processor.js.map +3 -3
- package/dist/src/runtime/catchup.js +12 -1
- package/dist/src/runtime/catchup.js.map +3 -3
- package/dist/src/runtime/processor.js +12 -1
- package/dist/src/runtime/processor.js.map +3 -3
- package/dist/src/runtime/reindex.js +12 -1
- package/dist/src/runtime/reindex.js.map +3 -3
- package/dist/src/runtime/reorg.js +12 -1
- package/dist/src/runtime/reorg.js.map +3 -3
- package/dist/src/service.js +12 -1
- package/dist/src/service.js.map +3 -3
- package/package.json +2 -2
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"import { getErrorMessage } from \"@secondlayer/shared\";\nimport { logger } from \"@secondlayer/shared/logger\";\nimport {\n\tclarityValueToJS,\n\tdeserializeCV,\n\ttoCamelCase,\n} from \"@secondlayer/stacks/clarity\";\nimport type {\n\tContractCallFilter,\n\tSubgraphDefinition,\n\tSubgraphFilter,\n} from \"../types.ts\";\nimport { decodeClarityValue, decodeEventData } from \"./clarity.ts\";\nimport type { SubgraphContext } from \"./context.ts\";\nimport { validatePrintPayload } from \"./print-validate.ts\";\nimport type { MatchedTx } from \"./source-matcher.ts\";\n\n/** Max consecutive handler errors before marking subgraph as error */\nconst DEFAULT_ERROR_THRESHOLD = 50;\n\nexport interface RunResult {\n\tprocessed: number;\n\terrors: number;\n\t/** Print events skipped because their decoded payload did not match the\n\t * source's declared `prints` schema. Never an error: skipping keeps the\n\t * block committable, which the checkpoint model requires. */\n\tskipped?: number;\n}\n\n/** Convert kebab-case to camelCase: \"bitcoin-txid\" → \"bitcoinTxid\" */\nfunction camelCase(str: string): string {\n\treturn str.replace(/-([a-z0-9])/g, (_, c) => c.toUpperCase());\n}\n\n/** Recursively camelize all object keys */\nfunction camelizeKeys(obj: unknown): unknown {\n\tif (obj === null || obj === undefined) return obj;\n\tif (typeof obj !== \"object\") return obj;\n\tif (Array.isArray(obj)) return obj.map(camelizeKeys);\n\tconst result: Record<string, unknown> = {};\n\tfor (const [k, v] of Object.entries(obj as Record<string, unknown>)) {\n\t\tresult[camelCase(k)] = camelizeKeys(v);\n\t}\n\treturn result;\n}\n\n/**\n * Decode function_args (hex-encoded ClarityValues) to an array of JS values.\n * Returns decoded values via cvToValue.\n *\n * postgres.js returns JSONB columns as JSON strings rather than parsed objects —\n * parse the string first before checking Array.isArray.\n */\nfunction decodeFunctionArgs(args: unknown): unknown[] {\n\tlet parsed = args;\n\tif (typeof parsed === \"string\") {\n\t\ttry {\n\t\t\tparsed = JSON.parse(parsed);\n\t\t} catch {\n\t\t\treturn [];\n\t\t}\n\t}\n\tif (!Array.isArray(parsed)) return [];\n\treturn parsed.map((arg) => {\n\t\tif (typeof arg === \"string\") return decodeClarityValue(arg);\n\t\treturn arg;\n\t});\n}\n\n/**\n * Decode raw_result (hex-encoded Clarity return value) to JS value.\n */\nfunction decodeRawResult(raw: unknown): unknown {\n\tif (typeof raw === \"string\" && raw.length > 2) {\n\t\treturn decodeClarityValue(raw);\n\t}\n\treturn null;\n}\n\n/** Safely convert a value to BigInt. Handles string, number, bigint. Returns 0n on failure. */\nfunction safeBigInt(val: unknown): bigint {\n\tif (typeof val === \"bigint\") return val;\n\tif (typeof val === \"number\") return BigInt(val);\n\tif (typeof val === \"string\") {\n\t\ttry {\n\t\t\treturn BigInt(val);\n\t\t} catch {\n\t\t\treturn 0n;\n\t\t}\n\t}\n\treturn 0n;\n}\n\n/**\n * Build the named, ABI-decoded `event.input` for a contract_call source that\n * declares an `abi`. Each function arg is decoded via `clarityValueToJS` so the\n * values match the types `ExtractFunctionArgs` promises (Uint8Array buffers,\n * camelCase tuple keys, wrapped responses). Returns undefined when no abi /\n * function match, leaving handlers with the positional `args` only.\n */\nexport function buildContractCallInput(\n\tfilter: ContractCallFilter,\n\ttx: MatchedTx[\"tx\"],\n): Record<string, unknown> | undefined {\n\tconst abi = filter.abi;\n\tconst fnName = tx.function_name;\n\tif (!abi || !fnName) return undefined;\n\tconst fn = abi.functions?.find((f) => f.name === fnName);\n\tif (!fn || !Array.isArray(fn.args)) return undefined;\n\n\tlet rawArgs: unknown = tx.function_args;\n\tif (typeof rawArgs === \"string\") {\n\t\ttry {\n\t\t\trawArgs = JSON.parse(rawArgs);\n\t\t} catch {\n\t\t\treturn undefined;\n\t\t}\n\t}\n\tif (!Array.isArray(rawArgs)) return undefined;\n\n\t// Call through a non-generic cast: clarityValueToJS<T> instantiates the deep\n\t// AbiToTS<T> conditional (TS2589) at runtime call sites. The static types\n\t// come from ContractCallPayload; here we only need its runtime reshaping.\n\tconst decodeArg = clarityValueToJS as unknown as (\n\t\ttype: unknown,\n\t\tcv: unknown,\n\t) => unknown;\n\tconst input: Record<string, unknown> = {};\n\tfn.args.forEach((arg, i) => {\n\t\tconst hex = rawArgs[i];\n\t\tif (typeof hex !== \"string\") return;\n\t\ttry {\n\t\t\tconst clean = hex.startsWith(\"0x\") ? hex.slice(2) : hex;\n\t\t\tinput[toCamelCase(arg.name)] = decodeArg(arg.type, deserializeCV(clean));\n\t\t} catch {\n\t\t\t// Skip args that fail to decode rather than dropping the whole event.\n\t\t}\n\t});\n\treturn input;\n}\n\n/**\n * Build a typed event payload based on the source filter type.\n * Returns the payload the handler will receive.\n */\nexport function buildEventPayload(\n\tfilter: SubgraphFilter,\n\ttx: MatchedTx[\"tx\"],\n\tevent: MatchedTx[\"events\"][0] | null,\n): Record<string, unknown> {\n\tconst txMeta = {\n\t\ttxId: tx.tx_id,\n\t\tsender: tx.sender,\n\t\ttype: tx.type,\n\t\tstatus: tx.status,\n\t\tcontractId: tx.contract_id ?? null,\n\t\tfunctionName: tx.function_name ?? null,\n\t};\n\n\t// Decoded function args + result for contract_call payloads\n\tconst decodedArgs = decodeFunctionArgs(tx.function_args);\n\tconst decodedResult = decodeRawResult(tx.raw_result);\n\n\t// No event — tx-level match (contract_call or contract_deploy)\n\tif (!event) {\n\t\tswitch (filter.type) {\n\t\t\tcase \"contract_call\": {\n\t\t\t\tconst input = buildContractCallInput(filter, tx);\n\t\t\t\treturn {\n\t\t\t\t\ttype: \"contract_call\",\n\t\t\t\t\tcontractId: tx.contract_id ?? \"\",\n\t\t\t\t\tfunctionName: tx.function_name ?? \"\",\n\t\t\t\t\tsender: tx.sender,\n\t\t\t\t\targs: decodedArgs,\n\t\t\t\t\t...(input !== undefined ? { input } : {}),\n\t\t\t\t\tresult: decodedResult,\n\t\t\t\t\tresultHex: tx.raw_result ?? null,\n\t\t\t\t\ttx: txMeta,\n\t\t\t\t};\n\t\t\t}\n\t\t\tcase \"contract_deploy\":\n\t\t\t\treturn {\n\t\t\t\t\tcontractId: tx.contract_id ?? \"\",\n\t\t\t\t\tdeployer: tx.sender,\n\t\t\t\t\ttx: txMeta,\n\t\t\t\t};\n\t\t\tdefault:\n\t\t\t\treturn { tx: txMeta };\n\t\t}\n\t}\n\n\t// Decode event data (Clarity values auto-unwrapped via cvToValue)\n\tconst decoded = decodeEventData(event.data) as Record<string, unknown>;\n\n\tswitch (filter.type) {\n\t\t// ── FT events ──\n\t\tcase \"ft_transfer\":\n\t\t\treturn {\n\t\t\t\tsender: decoded.sender as string,\n\t\t\t\trecipient: decoded.recipient as string,\n\t\t\t\tamount: safeBigInt(decoded.amount),\n\t\t\t\tassetIdentifier: decoded.asset_identifier as string,\n\t\t\t\ttx: txMeta,\n\t\t\t};\n\t\tcase \"ft_mint\":\n\t\t\treturn {\n\t\t\t\trecipient: decoded.recipient as string,\n\t\t\t\tamount: safeBigInt(decoded.amount),\n\t\t\t\tassetIdentifier: decoded.asset_identifier as string,\n\t\t\t\ttx: txMeta,\n\t\t\t};\n\t\tcase \"ft_burn\":\n\t\t\treturn {\n\t\t\t\tsender: decoded.sender as string,\n\t\t\t\tamount: safeBigInt(decoded.amount),\n\t\t\t\tassetIdentifier: decoded.asset_identifier as string,\n\t\t\t\ttx: txMeta,\n\t\t\t};\n\n\t\t// ── NFT events ──\n\t\t// tokenId decodes from the canonical hex (`raw_value`), not the node's\n\t\t// verbose serde-tagged `value` (`{UInt:223}`). The hex is source-\n\t\t// independent — present in both the DB tap and the Index API — so a\n\t\t// subgraph yields the same clean tokenId (e.g. 223n) on either source.\n\t\tcase \"nft_transfer\":\n\t\t\treturn {\n\t\t\t\tsender: decoded.sender as string,\n\t\t\t\trecipient: decoded.recipient as string,\n\t\t\t\ttokenId: decoded.raw_value ?? decoded.value,\n\t\t\t\tassetIdentifier: decoded.asset_identifier as string,\n\t\t\t\ttx: txMeta,\n\t\t\t};\n\t\tcase \"nft_mint\":\n\t\t\treturn {\n\t\t\t\trecipient: decoded.recipient as string,\n\t\t\t\ttokenId: decoded.raw_value ?? decoded.value,\n\t\t\t\tassetIdentifier: decoded.asset_identifier as string,\n\t\t\t\ttx: txMeta,\n\t\t\t};\n\t\tcase \"nft_burn\":\n\t\t\treturn {\n\t\t\t\tsender: decoded.sender as string,\n\t\t\t\ttokenId: decoded.raw_value ?? decoded.value,\n\t\t\t\tassetIdentifier: decoded.asset_identifier as string,\n\t\t\t\ttx: txMeta,\n\t\t\t};\n\n\t\t// ── STX events ──\n\t\tcase \"stx_transfer\":\n\t\t\treturn {\n\t\t\t\tsender: decoded.sender as string,\n\t\t\t\trecipient: decoded.recipient as string,\n\t\t\t\tamount: safeBigInt(decoded.amount),\n\t\t\t\tmemo: decoded.memo ?? \"\",\n\t\t\t\ttx: txMeta,\n\t\t\t};\n\t\tcase \"stx_mint\":\n\t\t\treturn {\n\t\t\t\trecipient: decoded.recipient as string,\n\t\t\t\tamount: safeBigInt(decoded.amount),\n\t\t\t\ttx: txMeta,\n\t\t\t};\n\t\tcase \"stx_burn\":\n\t\t\treturn {\n\t\t\t\tsender: decoded.sender as string,\n\t\t\t\tamount: safeBigInt(decoded.amount),\n\t\t\t\ttx: txMeta,\n\t\t\t};\n\t\tcase \"stx_lock\":\n\t\t\treturn {\n\t\t\t\tlockedAddress: decoded.locked_address as string,\n\t\t\t\tlockedAmount: safeBigInt(decoded.locked_amount),\n\t\t\t\tunlockHeight: safeBigInt(decoded.unlock_height),\n\t\t\t\ttx: txMeta,\n\t\t\t};\n\n\t\t// ── Print event ──\n\t\tcase \"print_event\": {\n\t\t\t// Decode the print value from the canonical hex (`raw_value`) so it's\n\t\t\t// source-independent and clean — the node's verbose serde-tagged\n\t\t\t// `value` (e.g. `{Optional:{data:null}}`) is not reproducible from the\n\t\t\t// Index API and is no longer used (same rationale as nft tokenId).\n\t\t\t// decodeEventData skips hex ≤10 chars, so decode `raw_value` directly.\n\t\t\tconst rawHex = (event.data as Record<string, unknown> | null)?.raw_value;\n\t\t\tconst rawValue =\n\t\t\t\ttypeof rawHex === \"string\" && rawHex.startsWith(\"0x\")\n\t\t\t\t\t? decodeClarityValue(rawHex)\n\t\t\t\t\t: decoded.value;\n\t\t\t// Extract topic from decoded Clarity value (not raw event topic which is always \"print\")\n\t\t\tconst clarityObj =\n\t\t\t\trawValue && typeof rawValue === \"object\" && !Array.isArray(rawValue)\n\t\t\t\t\t? (rawValue as Record<string, unknown>)\n\t\t\t\t\t: null;\n\t\t\tconst topic = clarityObj?.topic\n\t\t\t\t? String(clarityObj.topic)\n\t\t\t\t: ((decoded.topic as string) ?? \"\");\n\t\t\t// Camelize remaining keys for developer convenience\n\t\t\tconst { topic: _, ...rest } = clarityObj ?? {};\n\t\t\tconst data =\n\t\t\t\tObject.keys(rest).length > 0\n\t\t\t\t\t? (camelizeKeys(rest) as Record<string, unknown>)\n\t\t\t\t\t: rawValue && typeof rawValue !== \"object\"\n\t\t\t\t\t\t? rawValue\n\t\t\t\t\t\t: {};\n\t\t\treturn {\n\t\t\t\tcontractId:\n\t\t\t\t\t(decoded.contract_identifier as string) ?? tx.contract_id ?? \"\",\n\t\t\t\ttopic,\n\t\t\t\tdata: data ?? {},\n\t\t\t\ttx: txMeta,\n\t\t\t};\n\t\t}\n\n\t\t// ── Contract call (with events) ──\n\t\tcase \"contract_call\": {\n\t\t\t// Normalize the spread event Clarity `value` to the decoded canonical\n\t\t\t// (from `raw_value`), so it's identical whether the event came from the\n\t\t\t// DB tap or the Index API — the node's serde-tagged `value` is not\n\t\t\t// reproducible from Index (same rationale as nft tokenId / print).\n\t\t\tconst ccRawHex = (event.data as Record<string, unknown> | null)\n\t\t\t\t?.raw_value;\n\t\t\tconst normalized =\n\t\t\t\ttypeof ccRawHex === \"string\" && ccRawHex.startsWith(\"0x\")\n\t\t\t\t\t? { ...decoded, value: decodeClarityValue(ccRawHex) }\n\t\t\t\t\t: decoded;\n\t\t\tconst input = buildContractCallInput(filter, tx);\n\t\t\treturn {\n\t\t\t\t...normalized,\n\t\t\t\ttype: \"contract_call\",\n\t\t\t\t_eventType: event.type,\n\t\t\t\tcontractId: tx.contract_id ?? \"\",\n\t\t\t\tfunctionName: tx.function_name ?? \"\",\n\t\t\t\tsender: tx.sender,\n\t\t\t\targs: decodedArgs,\n\t\t\t\t...(input !== undefined ? { input } : {}),\n\t\t\t\tresult: decodedResult,\n\t\t\t\tresultHex: tx.raw_result ?? null,\n\t\t\t\ttx: txMeta,\n\t\t\t};\n\t\t}\n\n\t\t// ── Contract deploy ──\n\t\tcase \"contract_deploy\":\n\t\t\treturn {\n\t\t\t\tcontractId: tx.contract_id ?? \"\",\n\t\t\t\tdeployer: tx.sender,\n\t\t\t\ttx: txMeta,\n\t\t\t};\n\n\t\tdefault:\n\t\t\t// Fallback: spread decoded data with tx metadata\n\t\t\treturn {\n\t\t\t\t...decoded,\n\t\t\t\t_eventType: event.type,\n\t\t\t\ttx: txMeta,\n\t\t\t};\n\t}\n}\n\n/**\n * Run a subgraph's keyed handlers against all matched transactions/events.\n *\n * Each MatchedTx carries a sourceName from the matcher. The runner looks up\n * the corresponding handler in subgraph.handlers, falling back to \"*\".\n *\n * Does NOT flush — caller is responsible for flushing ctx after run.\n */\nexport async function runHandlers(\n\tsubgraph: SubgraphDefinition,\n\tmatched: MatchedTx[],\n\tctx: SubgraphContext,\n\topts?: { errorThreshold?: number },\n): Promise<RunResult> {\n\tlet processed = 0;\n\tlet errors = 0;\n\tlet skipped = 0;\n\tconst threshold = opts?.errorThreshold ?? DEFAULT_ERROR_THRESHOLD;\n\n\t// Build filter lookup from sources (supports both array and named object)\n\tconst filterLookup = new Map<string, SubgraphFilter>();\n\tif (!Array.isArray(subgraph.sources)) {\n\t\tfor (const [name, filter] of Object.entries(\n\t\t\tsubgraph.sources as Record<string, SubgraphFilter>,\n\t\t)) {\n\t\t\tfilterLookup.set(name, filter);\n\t\t}\n\t}\n\n\t// Flatten matches to per-event dispatch units and sort into CHAIN order\n\t// (tx_index, then event_index; tx-level matches first within their tx).\n\t// The matcher groups results by source, so without this a block's mints\n\t// all run before (or after) its transfers — a debit could apply before\n\t// the same block's funding credit, which on-chain ordering forbids. Chain\n\t// order makes per-statement invariants (e.g. uint CHECK >= 0) sound.\n\ttype DispatchUnit = {\n\t\ttx: MatchedTx[\"tx\"];\n\t\tsourceName: string;\n\t\tevent: MatchedTx[\"events\"][0] | null;\n\t};\n\tconst units: DispatchUnit[] = [];\n\tfor (const { tx, events, sourceName } of matched) {\n\t\tif (events.length === 0) {\n\t\t\tunits.push({ tx, sourceName, event: null });\n\t\t} else {\n\t\t\tfor (const event of events) units.push({ tx, sourceName, event });\n\t\t}\n\t}\n\tunits.sort(\n\t\t(a, b) =>\n\t\t\t(a.tx.tx_index ?? 0) - (b.tx.tx_index ?? 0) ||\n\t\t\t(a.event?.event_index ?? -1) - (b.event?.event_index ?? -1),\n\t);\n\n\tfor (const { tx, event, sourceName } of units) {\n\t\tif (errors >= threshold) {\n\t\t\tlogger.error(\n\t\t\t\t\"Subgraph error threshold reached, skipping remaining events\",\n\t\t\t\t{\n\t\t\t\t\tsubgraph: subgraph.name,\n\t\t\t\t\terrors,\n\t\t\t\t\tthreshold,\n\t\t\t\t},\n\t\t\t);\n\t\t\treturn { processed, errors, ...(skipped > 0 ? { skipped } : {}) };\n\t\t}\n\n\t\tconst handler =\n\t\t\tsubgraph.handlers[sourceName] ?? subgraph.handlers[\"*\"] ?? null;\n\t\tif (!handler) {\n\t\t\tlogger.warn(\"No handler found for source\", {\n\t\t\t\tsubgraph: subgraph.name,\n\t\t\t\tsourceName,\n\t\t\t\ttxId: tx.tx_id,\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\n\t\tctx.setTx({\n\t\t\ttxId: tx.tx_id,\n\t\t\tsender: tx.sender,\n\t\t\ttype: tx.type,\n\t\t\tstatus: tx.status,\n\t\t\tcontractId: tx.contract_id ?? null,\n\t\t\tfunctionName: tx.function_name ?? null,\n\t\t});\n\n\t\tconst filter = filterLookup.get(sourceName);\n\n\t\t// Checkpoint the ops queue: a handler that throws mid-way must\n\t\t// contribute nothing — a partial flush (e.g. a debit without its\n\t\t// credit) silently corrupts accumulator tables (fix-f040 B6).\n\t\tconst checkpoint = ctx.opsCheckpoint();\n\t\ttry {\n\t\t\tlet payload: Record<string, unknown>;\n\t\t\tif (event === null) {\n\t\t\t\t// Tx-level match (contract_call / contract_deploy)\n\t\t\t\tpayload = filter\n\t\t\t\t\t? buildEventPayload(filter, tx, null)\n\t\t\t\t\t: {\n\t\t\t\t\t\t\ttx: {\n\t\t\t\t\t\t\t\ttxId: tx.tx_id,\n\t\t\t\t\t\t\t\tsender: tx.sender,\n\t\t\t\t\t\t\t\ttype: tx.type,\n\t\t\t\t\t\t\t\tstatus: tx.status,\n\t\t\t\t\t\t\t\tcontractId: tx.contract_id,\n\t\t\t\t\t\t\t\tfunctionName: tx.function_name,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t} else if (filter) {\n\t\t\t\tpayload = buildEventPayload(filter, tx, event);\n\t\t\t} else {\n\t\t\t\tconst decoded = decodeEventData(event.data) as Record<string, unknown>;\n\t\t\t\tpayload = {\n\t\t\t\t\t...decoded,\n\t\t\t\t\t_eventId: event.id,\n\t\t\t\t\t_eventType: event.type,\n\t\t\t\t\t_eventIndex: event.event_index,\n\t\t\t\t\ttx: {\n\t\t\t\t\t\ttxId: tx.tx_id,\n\t\t\t\t\t\tsender: tx.sender,\n\t\t\t\t\t\ttype: tx.type,\n\t\t\t\t\t\tstatus: tx.status,\n\t\t\t\t\t\tcontractId: tx.contract_id,\n\t\t\t\t\t\tfunctionName: tx.function_name,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// Post-decode topic filter for print_event — source-matcher defers this\n\t\t\t// because data.value is raw hex at match time; apply it now after decode.\n\t\t\tif (\n\t\t\t\tevent !== null &&\n\t\t\t\tfilter?.type === \"print_event\" &&\n\t\t\t\tfilter.topic &&\n\t\t\t\tpayload.topic !== filter.topic\n\t\t\t) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Declared `prints` is the developer's stated payload shape, so a\n\t\t\t// mismatch is a real defect (a contract upgrade, or a declaration\n\t\t\t// that never matched — the bns-names class, where every event\n\t\t\t// decoded to null for an entire deploy). Skip + log rather than\n\t\t\t// write nulls; never throw, which would wedge the block.\n\t\t\tif (event !== null && filter?.type === \"print_event\" && filter.prints) {\n\t\t\t\tconst printPayload = payload as {\n\t\t\t\t\ttopic?: string;\n\t\t\t\t\tdata?: Record<string, unknown>;\n\t\t\t\t};\n\t\t\t\tconst verdict = validatePrintPayload(\n\t\t\t\t\tfilter.prints,\n\t\t\t\t\tprintPayload.topic ?? \"\",\n\t\t\t\t\tprintPayload.data ?? {},\n\t\t\t\t);\n\t\t\t\tif (!verdict.ok) {\n\t\t\t\t\tskipped++;\n\t\t\t\t\tlogger.warn(\"Print payload does not match declared prints schema\", {\n\t\t\t\t\t\tsubgraph: subgraph.name,\n\t\t\t\t\t\tsourceName,\n\t\t\t\t\t\ttopic: printPayload.topic,\n\t\t\t\t\t\ttxId: tx.tx_id,\n\t\t\t\t\t\treason: verdict.reason,\n\t\t\t\t\t});\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tawait handler(payload, ctx);\n\t\t\tprocessed++;\n\t\t} catch (err) {\n\t\t\tctx.rollbackTo(checkpoint);\n\t\t\terrors++;\n\t\t\tlogger.error(\"Subgraph handler error\", {\n\t\t\t\tsubgraph: subgraph.name,\n\t\t\t\tsourceName,\n\t\t\t\ttxId: tx.tx_id,\n\t\t\t\t...(event !== null ? { eventId: event.id, eventType: event.type } : {}),\n\t\t\t\terror: getErrorMessage(err),\n\t\t\t});\n\t\t}\n\t}\n\n\treturn { processed, errors, ...(skipped > 0 ? { skipped } : {}) };\n}\n",
|
|
11
11
|
"import type { ColumnType, PrintField } from \"../types.ts\";\n\n/**\n * Runtime validation of a decoded print payload against a source's declared\n * `prints` schema.\n *\n * Declaring `prints` is the opt-in that makes strictness safe: the developer\n * has stated the shape, so a mismatch is a real defect (a contract upgrade,\n * or a hand-written declaration that never matched — the bns-names class of\n * bug, where a handler read flat `data.name` while BNS-V2 emitted a nested\n * tuple, and every event silently decoded to null for a whole deploy).\n *\n * Failure mode is SKIP + LOG, never throw: throwing would fail the block, and\n * a poisoned block that can never advance is incompatible with the\n * checkpoint model. One bad event is dropped and counted; the rest of the\n * block commits.\n */\n\nconst COLUMN_TYPES = new Set<string>([\n\t\"text\",\n\t\"uint\",\n\t\"int\",\n\t\"principal\",\n\t\"boolean\",\n\t\"timestamp\",\n\t\"jsonb\",\n]);\n\nfunction isColumnType(field: PrintField): field is ColumnType {\n\treturn typeof field === \"string\" && COLUMN_TYPES.has(field);\n}\n\n/** Does a decoded value match one declared field? */\nfunction matchesField(field: PrintField, value: unknown): boolean {\n\tif (isColumnType(field)) {\n\t\tswitch (field) {\n\t\t\tcase \"uint\":\n\t\t\tcase \"int\":\n\t\t\t\treturn typeof value === \"bigint\" || typeof value === \"number\";\n\t\t\tcase \"boolean\":\n\t\t\t\treturn typeof value === \"boolean\";\n\t\t\tcase \"text\":\n\t\t\tcase \"principal\":\n\t\t\tcase \"timestamp\":\n\t\t\t\t// Buffers decode to strings; principals too. Accept any scalar the\n\t\t\t\t// decoder can render, but reject objects/arrays.\n\t\t\t\treturn (\n\t\t\t\t\ttypeof value === \"string\" ||\n\t\t\t\t\ttypeof value === \"number\" ||\n\t\t\t\t\ttypeof value === \"bigint\"\n\t\t\t\t);\n\t\t\tcase \"jsonb\":\n\t\t\t\t// Deliberately permissive: `jsonb` is the \"shape unknown\" escape.\n\t\t\t\treturn value !== undefined;\n\t\t}\n\t}\n\tif (typeof field !== \"object\" || field === null) return false;\n\tif (\"optional\" in field) {\n\t\treturn (\n\t\t\tvalue === undefined || value === null || matchesField(field.type, value)\n\t\t);\n\t}\n\tif (\"tuple\" in field) {\n\t\tif (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n\t\t\treturn false;\n\t\t}\n\t\treturn matchesTopic(field.tuple, value as Record<string, unknown>).ok;\n\t}\n\tif (\"list\" in field) {\n\t\treturn (\n\t\t\tArray.isArray(value) &&\n\t\t\tvalue.every((item) => matchesField(field.list, item))\n\t\t);\n\t}\n\treturn false;\n}\n\nexport type PrintValidationResult =\n\t| { ok: true }\n\t| { ok: false; reason: string };\n\n/** Validate a decoded payload object against one topic's declared fields. */\nexport function matchesTopic(\n\tdeclared: Record<string, PrintField>,\n\tdata: Record<string, unknown>,\n): PrintValidationResult {\n\tfor (const [name, field] of Object.entries(declared)) {\n\t\tconst present = name in data;\n\t\tconst optional =\n\t\t\ttypeof field === \"object\" && field !== null && \"optional\" in field;\n\t\tif (!present) {\n\t\t\tif (optional) continue;\n\t\t\treturn { ok: false, reason: `missing declared field \"${name}\"` };\n\t\t}\n\t\tif (!matchesField(field, data[name])) {\n\t\t\treturn {\n\t\t\t\tok: false,\n\t\t\t\treason: `field \"${name}\" does not match its declared type (got ${describe(data[name])})`,\n\t\t\t};\n\t\t}\n\t}\n\treturn { ok: true };\n}\n\nfunction describe(value: unknown): string {\n\tif (value === null) return \"null\";\n\tif (Array.isArray(value)) return \"array\";\n\treturn typeof value;\n}\n\n/**\n * Validate one decoded print event against a source's `prints` declaration.\n * Returns `{ ok: true }` when no declaration covers this topic (undeclared\n * topics are not the developer's stated contract, so they pass through).\n */\nexport function validatePrintPayload(\n\tprints: Record<string, Record<string, PrintField>> | undefined,\n\ttopic: string,\n\tdata: Record<string, unknown>,\n): PrintValidationResult {\n\tif (!prints) return { ok: true };\n\tconst declared = prints[topic];\n\tif (!declared) return { ok: true };\n\treturn matchesTopic(declared, data);\n}\n",
|
|
12
12
|
"import type { SubgraphFilter } from \"../types.ts\";\n\nexport interface MatchedTx {\n\ttx: TxRecord;\n\tevents: EventRecord[];\n\t/** Source object key — used for handler dispatch */\n\tsourceName: string;\n}\n\nexport type TxRecord = {\n\ttx_id: string;\n\ttype: string;\n\tsender: string;\n\tstatus: string;\n\t/** Position within the block — the runner sorts dispatch into chain order. */\n\ttx_index?: number;\n\tcontract_id?: string | null;\n\tfunction_name?: string | null;\n\tfunction_args?: unknown | null;\n\traw_result?: string | null;\n};\n\nexport type EventRecord = {\n\tid: string;\n\ttx_id: string;\n\ttype: string;\n\tevent_index: number;\n\tdata: unknown;\n};\n\n// ── Wildcard matching (shared with v1) ──────────────────────────────\n\nconst patternCache = new Map<string, RegExp>();\n\n/** Match a value against one pattern, or ANY pattern in a set. */\nfunction matchAny(value: string, pattern: string | readonly string[]): boolean {\n\treturn Array.isArray(pattern)\n\t\t? pattern.some((p) => matchPattern(value, p))\n\t\t: matchPattern(value, pattern as string);\n}\n\nfunction matchPattern(value: string, pattern: string): boolean {\n\tif (!pattern.includes(\"*\")) return value === pattern;\n\tlet re = patternCache.get(pattern);\n\tif (!re) {\n\t\tconst regex = pattern\n\t\t\t.replace(/[.+^${}()|[\\]\\\\]/g, \"\\\\$&\")\n\t\t\t.replace(/\\*/g, \".*\");\n\t\tre = new RegExp(`^${regex}$`);\n\t\tpatternCache.set(pattern, re);\n\t}\n\treturn re.test(value);\n}\n\n// Trait → set of conforming contract IDs, resolved per block by the caller\n// (block-processor) from the contract registry. Kept as injected data so this\n// module stays pure/sync/DB-less.\nexport type TraitContracts = Map<string, ReadonlySet<string>>;\nconst EMPTY_SET: ReadonlySet<string> = new Set();\n\n/**\n * True when a filter's optional `trait` admits this contract: no trait → always\n * allowed; trait set → the contract must be in the resolved conforming set.\n */\n/** Addresses discovered per source name (factory sets), resolved by the\n * caller as-of the block being processed. */\nexport type FactoryContracts = ReadonlyMap<string, ReadonlySet<string>>;\n\n/**\n * A factory-scoped source matches only contracts its factory has revealed.\n * Same shape as {@link traitAllows}: the set is injected, so this module\n * stays pure and sync.\n */\nfunction factoryAllows(\n\tfilter: { factory?: { from: string; field: string } },\n\tcontractId: string | undefined | null,\n\tfactoryContracts: FactoryContracts,\n): boolean {\n\tif (!filter.factory) return true;\n\tif (!contractId) return false;\n\treturn (factoryContracts.get(filter.factory.from) ?? EMPTY_SET).has(\n\t\tcontractId,\n\t);\n}\n\n/** Read a dotted path off a decoded payload (`\"data.pool\"`). */\nexport function readPath(payload: unknown, path: string): unknown {\n\tlet cur: unknown = payload;\n\tfor (const key of path.split(\".\")) {\n\t\tif (cur === null || typeof cur !== \"object\") return undefined;\n\t\tcur = (cur as Record<string, unknown>)[key];\n\t}\n\treturn cur;\n}\n\nfunction traitAllows(\n\tfilter: SubgraphFilter,\n\tcontractId: string | undefined | null,\n\ttraitContracts: TraitContracts,\n): boolean {\n\tconst trait = (filter as { trait?: string }).trait;\n\tif (!trait) return true;\n\tif (!contractId) return false;\n\treturn (traitContracts.get(trait) ?? EMPTY_SET).has(contractId);\n}\n\n/** Extract the contract id from an asset identifier (`<contract>::<token>`). */\nfunction assetContract(assetId: string | undefined): string | undefined {\n\treturn assetId?.split(\"::\")[0];\n}\n\n// ── Per-filter-type matchers ────────────────────────────────────────\n\nfunction matchFilter(\n\tfilter: SubgraphFilter,\n\ttransactions: TxRecord[],\n\teventsByTx: Map<string, EventRecord[]>,\n\ttraitContracts: TraitContracts,\n\tfactoryContracts: FactoryContracts = new Map(),\n): { tx: TxRecord; events: EventRecord[] }[] {\n\tconst results: { tx: TxRecord; events: EventRecord[] }[] = [];\n\n\tswitch (filter.type) {\n\t\t// ── STX events ──\n\t\tcase \"stx_transfer\":\n\t\tcase \"stx_mint\":\n\t\tcase \"stx_burn\":\n\t\tcase \"stx_lock\": {\n\t\t\tconst eventType = `${filter.type}_event`;\n\t\t\tfor (const tx of transactions) {\n\t\t\t\tconst txEvents = eventsByTx.get(tx.tx_id) ?? [];\n\t\t\t\tconst matched = txEvents.filter((e) => e.type === eventType);\n\t\t\t\tif (matched.length === 0) continue;\n\n\t\t\t\t// Apply address filters\n\t\t\t\tconst filtered = matched.filter((e) => {\n\t\t\t\t\tconst data = e.data as Record<string, unknown> | null;\n\t\t\t\t\tif (!data) return false;\n\t\t\t\t\tif (\"sender\" in filter && filter.sender) {\n\t\t\t\t\t\tif (!matchPattern(data.sender as string, filter.sender))\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif (\"recipient\" in filter && filter.recipient) {\n\t\t\t\t\t\tif (!matchPattern(data.recipient as string, filter.recipient))\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif (\"lockedAddress\" in filter && filter.lockedAddress) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t!matchPattern(data.locked_address as string, filter.lockedAddress)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\t// Amount filters\n\t\t\t\t\tif (\"minAmount\" in filter && filter.minAmount !== undefined) {\n\t\t\t\t\t\tconst amount = BigInt(\n\t\t\t\t\t\t\t(data.amount ?? data.locked_amount ?? \"0\") as string,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (amount < filter.minAmount) return false;\n\t\t\t\t\t}\n\t\t\t\t\tif (\n\t\t\t\t\t\t\"maxAmount\" in filter &&\n\t\t\t\t\t\t(filter as { maxAmount?: bigint }).maxAmount !== undefined\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst amount = BigInt((data.amount ?? \"0\") as string);\n\t\t\t\t\t\tif (amount > (filter as { maxAmount: bigint }).maxAmount)\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t});\n\n\t\t\t\tif (filtered.length > 0) {\n\t\t\t\t\tresults.push({ tx, events: filtered });\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\n\t\t// ── FT events ──\n\t\tcase \"ft_transfer\":\n\t\tcase \"ft_mint\":\n\t\tcase \"ft_burn\": {\n\t\t\tconst eventType = `${filter.type}_event`;\n\t\t\tfor (const tx of transactions) {\n\t\t\t\tconst txEvents = eventsByTx.get(tx.tx_id) ?? [];\n\t\t\t\tconst matched = txEvents.filter((e) => {\n\t\t\t\t\tif (e.type !== eventType) return false;\n\t\t\t\t\tconst data = e.data as Record<string, unknown> | null;\n\t\t\t\t\tif (!data) return false;\n\n\t\t\t\t\t// Asset identifier filter\n\t\t\t\t\tif (filter.assetIdentifier) {\n\t\t\t\t\t\tconst assetId = data.asset_identifier as string | undefined;\n\t\t\t\t\t\tif (!assetId || !matchPattern(assetId, filter.assetIdentifier))\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\t// Trait scope — the asset's contract must conform.\n\t\t\t\t\tif (\n\t\t\t\t\t\t!traitAllows(\n\t\t\t\t\t\t\tfilter,\n\t\t\t\t\t\t\tassetContract(data.asset_identifier as string | undefined),\n\t\t\t\t\t\t\ttraitContracts,\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t// Address filters\n\t\t\t\t\tif (\"sender\" in filter && filter.sender) {\n\t\t\t\t\t\tif (!matchPattern(data.sender as string, filter.sender))\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif (\"recipient\" in filter && filter.recipient) {\n\t\t\t\t\t\tif (!matchPattern(data.recipient as string, filter.recipient))\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\t// Amount filter\n\t\t\t\t\tif (filter.minAmount !== undefined) {\n\t\t\t\t\t\tconst amount = BigInt((data.amount ?? \"0\") as string);\n\t\t\t\t\t\tif (amount < filter.minAmount) return false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t});\n\n\t\t\t\tif (matched.length > 0) {\n\t\t\t\t\tresults.push({ tx, events: matched });\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\n\t\t// ── NFT events ──\n\t\tcase \"nft_transfer\":\n\t\tcase \"nft_mint\":\n\t\tcase \"nft_burn\": {\n\t\t\tconst eventType = `${filter.type}_event`;\n\t\t\tfor (const tx of transactions) {\n\t\t\t\tconst txEvents = eventsByTx.get(tx.tx_id) ?? [];\n\t\t\t\tconst matched = txEvents.filter((e) => {\n\t\t\t\t\tif (e.type !== eventType) return false;\n\t\t\t\t\tconst data = e.data as Record<string, unknown> | null;\n\t\t\t\t\tif (!data) return false;\n\n\t\t\t\t\tif (filter.assetIdentifier) {\n\t\t\t\t\t\tconst assetId = data.asset_identifier as string | undefined;\n\t\t\t\t\t\tif (!assetId || !matchPattern(assetId, filter.assetIdentifier))\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif (\n\t\t\t\t\t\t!traitAllows(\n\t\t\t\t\t\t\tfilter,\n\t\t\t\t\t\t\tassetContract(data.asset_identifier as string | undefined),\n\t\t\t\t\t\t\ttraitContracts,\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t\t\treturn false;\n\t\t\t\t\tif (\"sender\" in filter && filter.sender) {\n\t\t\t\t\t\tif (!matchPattern(data.sender as string, filter.sender))\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif (\"recipient\" in filter && filter.recipient) {\n\t\t\t\t\t\tif (!matchPattern(data.recipient as string, filter.recipient))\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t});\n\n\t\t\t\tif (matched.length > 0) {\n\t\t\t\t\tresults.push({ tx, events: matched });\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\n\t\t// ── Contract call ──\n\t\tcase \"contract_call\": {\n\t\t\tfor (const tx of transactions) {\n\t\t\t\tif (tx.type !== \"contract_call\") continue;\n\n\t\t\t\t// Contract filter\n\t\t\t\tif (filter.contractId) {\n\t\t\t\t\tif (!tx.contract_id || !matchAny(tx.contract_id, filter.contractId))\n\t\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\t// Factory scope: only contracts this source's factory revealed.\n\t\t\t\tif (!factoryAllows(filter, tx.contract_id, factoryContracts)) continue;\n\t\t\t\t// Function filter\n\t\t\t\tif (filter.functionName) {\n\t\t\t\t\tif (\n\t\t\t\t\t\t!tx.function_name ||\n\t\t\t\t\t\t!matchPattern(tx.function_name, filter.functionName)\n\t\t\t\t\t)\n\t\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\t// Caller filter\n\t\t\t\tif (filter.caller) {\n\t\t\t\t\tif (!matchPattern(tx.sender, filter.caller)) continue;\n\t\t\t\t}\n\t\t\t\t// Trait scope — the called contract must conform.\n\t\t\t\tif (!traitAllows(filter, tx.contract_id, traitContracts)) continue;\n\n\t\t\t\tconst txEvents = eventsByTx.get(tx.tx_id) ?? [];\n\t\t\t\tresults.push({ tx, events: txEvents });\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\n\t\t// ── Contract deploy ──\n\t\tcase \"contract_deploy\": {\n\t\t\tfor (const tx of transactions) {\n\t\t\t\tif (tx.type !== \"smart_contract\") continue;\n\n\t\t\t\tif (filter.deployer) {\n\t\t\t\t\tif (!matchPattern(tx.sender, filter.deployer)) continue;\n\t\t\t\t}\n\t\t\t\tif (filter.contractName) {\n\t\t\t\t\tconst name = tx.contract_id?.split(\".\")[1] ?? \"\";\n\t\t\t\t\tif (!matchPattern(name, filter.contractName)) continue;\n\t\t\t\t}\n\n\t\t\t\tconst txEvents = eventsByTx.get(tx.tx_id) ?? [];\n\t\t\t\tresults.push({ tx, events: txEvents });\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\n\t\t// ── Print event ──\n\t\tcase \"print_event\": {\n\t\t\tfor (const tx of transactions) {\n\t\t\t\tconst txEvents = eventsByTx.get(tx.tx_id) ?? [];\n\t\t\t\tconst matched = txEvents.filter((e) => {\n\t\t\t\t\tif (e.type !== \"smart_contract_event\" && e.type !== \"contract_event\")\n\t\t\t\t\t\treturn false;\n\t\t\t\t\tconst data = e.data as Record<string, unknown> | null;\n\t\t\t\t\tif (!data) return false;\n\t\t\t\t\tif (data.topic !== \"print\") return false;\n\n\t\t\t\t\t// Contract filter — events store the contract under either\n\t\t\t\t\t// `contract_identifier` (legacy smart_contract_event payload)\n\t\t\t\t\t// or `contract_id` (current contract_event payload). Mirror\n\t\t\t\t\t// the streams query which checks both shapes.\n\t\t\t\t\tconst printContractId =\n\t\t\t\t\t\t(data.contract_identifier as string | undefined) ??\n\t\t\t\t\t\t(data.contract_id as string | undefined);\n\t\t\t\t\tif (filter.contractId) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t!printContractId ||\n\t\t\t\t\t\t\t!matchAny(printContractId, filter.contractId)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif (!traitAllows(filter, printContractId, traitContracts))\n\t\t\t\t\t\treturn false;\n\t\t\t\t\tif (!factoryAllows(filter, printContractId, factoryContracts))\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t// Topic filter — check the decoded Clarity value's topic field\n\t\t\t\t\t// At this stage data.value is still raw hex; topic filtering happens\n\t\t\t\t\t// after decode in the runner. For now, skip topic filtering here.\n\t\t\t\t\t// The runner will filter by topic after decoding.\n\t\t\t\t\treturn true;\n\t\t\t\t});\n\n\t\t\t\tif (matched.length > 0) {\n\t\t\t\t\tresults.push({ tx, events: matched });\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn results;\n}\n\n/**\n * Match named filters against a block's transactions and events.\n * Returns matches with sourceName = the object key from sources.\n */\nexport function matchSources(\n\tsources: Record<string, SubgraphFilter>,\n\ttransactions: TxRecord[],\n\tevents: EventRecord[],\n\ttraitContracts: TraitContracts = new Map(),\n\tfactoryContracts: FactoryContracts = new Map(),\n): MatchedTx[] {\n\t// Index events by txId\n\tconst eventsByTx = new Map<string, EventRecord[]>();\n\tfor (const event of events) {\n\t\tconst list = eventsByTx.get(event.tx_id) ?? [];\n\t\tlist.push(event);\n\t\teventsByTx.set(event.tx_id, list);\n\t}\n\n\tconst seen = new Set<string>();\n\tconst results: MatchedTx[] = [];\n\n\tfor (const [sourceName, filter] of Object.entries(sources)) {\n\t\tconst matches = matchFilter(\n\t\t\tfilter,\n\t\t\ttransactions,\n\t\t\teventsByTx,\n\t\t\ttraitContracts,\n\t\t\tfactoryContracts,\n\t\t);\n\t\tfor (const match of matches) {\n\t\t\tconst dedupeKey = `${match.tx.tx_id}:${sourceName}`;\n\t\t\tif (!seen.has(dedupeKey)) {\n\t\t\t\tseen.add(dedupeKey);\n\t\t\t\tresults.push({ ...match, sourceName });\n\t\t\t}\n\t\t}\n\t}\n\n\treturn results;\n}\n",
|
|
13
|
-
"import { type Database, getTargetDb } from \"@secondlayer/shared/db\";\nimport { resolveTraitContractIds } from \"@secondlayer/shared/db/queries/contracts\";\nimport { advanceOperationCursor } from \"@secondlayer/shared/db/queries/subgraph-operations\";\nimport {\n\tisByoSubgraph,\n\trecordLiveError,\n\trecordLiveProgress,\n\trecordSubgraphProcessed,\n\tresolveSubgraphDb,\n\trewindLiveProgress,\n\tupdateSubgraphStatus,\n} from \"@secondlayer/shared/db/queries/subgraphs\";\nimport { logger } from \"@secondlayer/shared/logger\";\nimport { type Kysely, type Transaction, sql } from \"kysely\";\nimport { pgSchemaName } from \"../schema/utils.ts\";\nimport type { SubgraphDefinition } from \"../types.ts\";\nimport { resolveBlockSource } from \"./block-source.ts\";\nimport {\n\ttype BlockMeta,\n\tJOURNAL_RETENTION_BLOCKS,\n\tSubgraphContext,\n\ttype TxMeta,\n} from \"./context.ts\";\nimport { emitSubscriptionOutbox } from \"./outbox-emit.ts\";\nimport { buildEventPayload, runHandlers } from \"./runner.ts\";\nimport { sandboxEnabled } from \"./sandbox/flag.ts\";\nimport { evictSandboxWorker, runHandlersSandboxed } from \"./sandbox/host.ts\";\nimport {\n\ttype EventRecord,\n\ttype TxRecord,\n\tmatchSources,\n\treadPath,\n} from \"./source-matcher.ts\";\nimport { matcher } from \"./subscription-state.ts\";\n\n/**\n * The data-plane route for a subgraph: which schema its tables live in, the DB\n * those writes/reads land on (the user's DB when BYO, else the managed target),\n * and whether it's BYO. Cached per subgraph to avoid a per-block lookup +\n * decrypt; invalidated on redeploy (the connection can change) via\n * {@link invalidateSubgraphRoute}.\n *\n * Also carries the f071 Stage A sandbox-dispatch inputs\n * (`sandboxWorkers`/`handlerCode`/`version`) — cheap to keep alongside the\n * route since `resolveRoute` already selects the full `subgraphs` row; kept\n * in lockstep with the same cache invalidation edge (redeploys change\n * `handler_code`/`version` together with the connection).\n */\ninterface SubgraphRoute {\n\tschemaName: string;\n\tdataDb: Kysely<Database>;\n\tbyo: boolean;\n\t/** `subgraphs.sandbox_workers` — combined with the global env gate by\n\t * `sandboxEnabled()`. Default false for every row; nothing in committed\n\t * code sets it true (f071 Stage A stays dark). */\n\tsandboxWorkers: boolean;\n\thandlerCode: string | null;\n\tversion: string;\n}\nconst routeCache = new Map<string, SubgraphRoute>();\n\nasync function resolveRoute(\n\tsubgraphName: string,\n\ttargetDb: Kysely<Database>,\n): Promise<SubgraphRoute> {\n\tconst cached = routeCache.get(subgraphName);\n\tif (cached) return cached;\n\tconst row = await targetDb\n\t\t.selectFrom(\"subgraphs\")\n\t\t.selectAll()\n\t\t.where(\"name\", \"=\", subgraphName)\n\t\t.executeTakeFirst();\n\tconst byo = row ? isByoSubgraph(row) : false;\n\tconst route: SubgraphRoute = {\n\t\tschemaName: row?.schema_name ?? pgSchemaName(subgraphName),\n\t\tdataDb: row && byo ? resolveSubgraphDb(row) : targetDb,\n\t\tbyo,\n\t\tsandboxWorkers: row?.sandbox_workers === true,\n\t\thandlerCode: row?.handler_code ?? null,\n\t\tversion: row?.version ?? \"\",\n\t};\n\trouteCache.set(subgraphName, route);\n\treturn route;\n}\n\n/** Drop a subgraph's cached route — call on redeploy/delete (conn may\n * change). Also evicts any warm sandbox subprocess for this subgraph\n * (f071 Stage A `host.ts`) on the same edge: a redeploy can change\n * `handler_code`/`version`/the BYO connection together, and a stale warm\n * subprocess must not survive past this invalidation any more than the\n * cached route does. A no-op today since nothing sets `sandbox_workers`,\n * but keeps the pool's documented invalidation contract honest for when it\n * is. */\nexport function invalidateSubgraphRoute(subgraphName: string): void {\n\trouteCache.delete(subgraphName);\n\tevictSandboxWorker(subgraphName);\n}\n\n/**\n * Resolve each distinct trait used by a subgraph's sources to its conforming\n * contract-id set, as of `blockHeight`, from the contract registry. Empty map\n * when no source is trait-scoped (the common case → no DB work).\n */\n/**\n * Resolve each factory-scoped source's address set for this block.\n *\n * Two parts, and the ORDER is the guarantee:\n * 1. addresses persisted by earlier blocks (`block_height <= blockHeight`,\n * so a reindex sees exactly what the live walk saw), then\n * 2. addresses revealed by THIS block's events — computed before matching,\n * so a contract discovered in block N receives its own block-N events.\n * Without this pass the first event from every discovered contract is\n * silently lost.\n */\n/**\n * Exported as a test seam. Both guarantees this function carries — a contract\n * discovered in block N receiving its OWN block-N events, and the persisted set\n * being height-stamped so a reorg can roll it back — were asserted only by\n * comment until now.\n */\nexport async function resolveFactoryContracts(\n\tsubgraph: SubgraphDefinition,\n\tblockHeight: number,\n\tschemaName: string,\n\tdb: Kysely<Database>,\n\ttxs: TxRecord[],\n\tevts: EventRecord[],\n): Promise<{\n\tresolved: Map<string, ReadonlySet<string>>;\n\tdiscovered: Array<{ sourceName: string; address: string }>;\n}> {\n\t// Keyed by the DISCOVERING source (`factory.from`), not the consuming one:\n\t// several sources can share one factory, and this way the extraction runs\n\t// once per discovering source rather than once per consumer.\n\tconst factories = new Map<string, { from: string; field: string }>();\n\tfor (const source of Object.values(subgraph.sources)) {\n\t\tconst factory = (source as { factory?: { from: string; field: string } })\n\t\t\t.factory;\n\t\tif (factory) factories.set(factory.from, factory);\n\t}\n\tconst resolved = new Map<string, ReadonlySet<string>>();\n\tconst discovered: Array<{ sourceName: string; address: string }> = [];\n\tif (factories.size === 0) return { resolved, discovered };\n\n\tfor (const [discoveringSource, factory] of factories) {\n\t\tconst known = new Set<string>();\n\t\t// 1. Everything revealed at or below this height.\n\t\ttry {\n\t\t\tconst rows = await sql<{ address: string }>`\n\t\t\t\tSELECT address FROM ${sql.raw(`\"${schemaName}\".\"_factory_addresses\"`)}\n\t\t\t\tWHERE source_name = ${discoveringSource} AND block_height <= ${blockHeight}\n\t\t\t`.execute(db);\n\t\t\tfor (const row of rows.rows) known.add(row.address);\n\t\t} catch {\n\t\t\t// Table absent (first deploy before DDL, or a non-factory subgraph):\n\t\t\t// treat as an empty set rather than failing the block.\n\t\t}\n\n\t\t// 2. This block's own reveals — before matching, so same-block events\n\t\t// from a new contract are not dropped.\n\t\tconst discovering = subgraph.sources[factory.from];\n\t\tif (discovering) {\n\t\t\tconst matches = matchSources(\n\t\t\t\t{ [factory.from]: discovering },\n\t\t\t\ttxs,\n\t\t\t\tevts,\n\t\t\t\tnew Map(),\n\t\t\t\tnew Map(),\n\t\t\t);\n\t\t\tfor (const match of matches) {\n\t\t\t\tfor (const event of match.events ?? []) {\n\t\t\t\t\tconst payload = buildEventPayload(discovering, match.tx, event);\n\t\t\t\t\tconst value = readPath(payload, factory.field);\n\t\t\t\t\tif (\n\t\t\t\t\t\ttypeof value === \"string\" &&\n\t\t\t\t\t\tvalue.length > 0 &&\n\t\t\t\t\t\t!known.has(value)\n\t\t\t\t\t) {\n\t\t\t\t\t\tknown.add(value);\n\t\t\t\t\t\tdiscovered.push({ sourceName: discoveringSource, address: value });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tresolved.set(discoveringSource, known);\n\t}\n\treturn { resolved, discovered };\n}\n\n/** Persist this block's discoveries, stamped with the block that revealed\n * them so the reorg handler can roll them back. */\nasync function persistFactoryDiscoveries(\n\tschemaName: string,\n\tdb: Kysely<Database>,\n\tblockHeight: number,\n\tdiscovered: Array<{ sourceName: string; address: string }>,\n): Promise<void> {\n\tif (discovered.length === 0) return;\n\tfor (const { sourceName, address } of discovered) {\n\t\tawait sql`\n\t\t\tINSERT INTO ${sql.raw(`\"${schemaName}\".\"_factory_addresses\"`)}\n\t\t\t\t(source_name, address, block_height)\n\t\t\tVALUES (${sourceName}, ${address}, ${blockHeight})\n\t\t\tON CONFLICT (source_name, address) DO NOTHING\n\t\t`.execute(db);\n\t}\n}\n\nasync function resolveTraitContracts(\n\tsubgraph: SubgraphDefinition,\n\tblockHeight: number,\n\tdb: Kysely<Database>,\n): Promise<Map<string, ReadonlySet<string>>> {\n\tconst traits = new Set<string>();\n\tfor (const source of Object.values(subgraph.sources)) {\n\t\tconst trait = (source as { trait?: string }).trait;\n\t\tif (trait) traits.add(trait);\n\t}\n\tconst resolved = new Map<string, ReadonlySet<string>>();\n\tfor (const trait of traits) {\n\t\tconst ids = await resolveTraitContractIds(db, trait, blockHeight);\n\t\tresolved.set(trait, new Set(ids));\n\t}\n\treturn resolved;\n}\n\nexport interface ProcessBlockTiming {\n\ttotalMs: number;\n\thandlerMs: number;\n\tflushMs: number;\n}\n\nexport interface ProcessBlockResult {\n\tblockHeight: number;\n\tmatched: number;\n\tprocessed: number;\n\terrors: number;\n\tskipped: boolean;\n\ttiming?: ProcessBlockTiming;\n}\n\n/**\n * Process a single block through a single subgraph's pipeline.\n *\n * Flow:\n * 1. Load block + txs + events from DB\n * 2. Run source matcher\n * 3. Run handlers with SubgraphContext\n * 4. Flush context (commit writes atomically)\n * 5. Update subgraph.last_processed_block\n */\nexport interface PreloadedBlockData {\n\tblock: import(\"@secondlayer/shared/db\").Block;\n\ttxs: import(\"@secondlayer/shared/db\").Transaction[];\n\tevents: import(\"@secondlayer/shared/db\").Event[];\n}\n\nexport interface ProcessBlockOptions {\n\t/** Skip updating last_processed_block in DB (reindex batches this externally). */\n\tskipProgressUpdate?: boolean;\n\t/** Pre-loaded block data — skips DB reads when provided (used by batch catch-up). */\n\tpreloaded?: PreloadedBlockData;\n\t/**\n\t * Crash-safe sequential processing. Two checkpoint scopes:\n\t * - `{ status }` (reindex): a written block commits\n\t * `subgraphs.last_processed_block = blockHeight` in the SAME transaction\n\t * as its writes; replays skip at/below the cursor. Only for strictly\n\t * ascending walks over the subgraph's own cursor.\n\t * - `{ operationId }` (backfill): same guarantee against the OPERATION's\n\t * own `cursor_block` — backfills legitimately revisit heights below the\n\t * live cursor, so they must never checkpoint (or read) the subgraph\n\t * cursor. The advance is a CONDITIONAL monotonic UPDATE: concurrent\n\t * writers serialize on it, and the loser's whole block tx rolls back\n\t * (surfaced as `skipped`, never an error/gap).\n\t * Either way: a crash can never leave committed deltas ahead of the\n\t * relevant checkpoint.\n\t */\n\tatomicProgress?: { status: string } | { operationId: string };\n\t/**\n\t * Reorg rewind (f069): set exclusively by `reorg.ts`'s fork-block\n\t * reprocess. Bypasses the live-path replay guard (a fork block's height\n\t * is, by construction, at or below the current cursor — the guard would\n\t * otherwise skip it) and writes the checkpoint via\n\t * `rewindLiveProgress` (unconditional — a rewind's whole point is\n\t * moving the cursor *backward*, which the live path's conditional\n\t * advance would refuse). Safe only because the reorg path holds a\n\t * transaction-scoped advisory lock across its whole\n\t * delete+reprocess+rewind sequence, so nothing else can interleave a\n\t * forward write. Never set this outside `reorg.ts`.\n\t */\n\treorgRewind?: true;\n}\n\n/** Thrown inside the block tx when a racing writer already covered this\n * height — rolls the tx back; processBlock converts it to `skipped`. The\n * winner committed the block, so this is success-shaped, never a gap. */\nclass CursorRaceLostError extends Error {\n\tconstructor(operationId: string, height: number) {\n\t\tsuper(`op ${operationId} lost cursor race at block ${height}`);\n\t\tthis.name = \"CursorRaceLostError\";\n\t}\n}\n\n/** Live-path sibling of {@link CursorRaceLostError}: thrown when the live\n * path's conditional `recordLiveProgress` advance loses to a racing\n * writer that already committed a higher (or equal) `last_processed_block`\n * for this subgraph. Same success-shaped handling — the winner's commit\n * stands, so this becomes `result.skipped = true`, never an error/gap. */\nclass LiveCursorRaceLostError extends Error {\n\tconstructor(subgraphName: string, height: number) {\n\t\tsuper(`live cursor race lost for ${subgraphName} at block ${height}`);\n\t\tthis.name = \"LiveCursorRaceLostError\";\n\t}\n}\n\nfunction opCursorMode(\n\topts?: ProcessBlockOptions,\n): { operationId: string } | undefined {\n\tconst ap = opts?.atomicProgress;\n\treturn ap && \"operationId\" in ap ? ap : undefined;\n}\n\n/** True only for the reorg fork-block reprocess — see `reorgRewind` on\n * {@link ProcessBlockOptions}. */\nfunction isReorgRewind(opts?: ProcessBlockOptions): boolean {\n\treturn opts?.reorgRewind === true;\n}\n\nfunction statusMode(\n\topts?: ProcessBlockOptions,\n): { status: string } | undefined {\n\tconst ap = opts?.atomicProgress;\n\treturn ap && \"status\" in ap ? ap : undefined;\n}\n\n/** Default per-block retry schedule before a failure counts as persistent. */\nexport const BLOCK_RETRY_DELAYS_MS: number[] = [500, 2_000, 5_000];\n\n/**\n * Journal pre-images on the live path only. Deep reindex/backfill heights\n * (skipProgressUpdate) are past finality — a reorg can't reach them, so\n * journaling would be pure churn for the pruner.\n */\nfunction journalEnabled(opts?: ProcessBlockOptions): boolean {\n\treturn !opts?.skipProgressUpdate;\n}\n\n/**\n * processBlock with bounded retries. Throws the last error once the schedule\n * is exhausted — callers decide whether that halts the walk (strict paths) or\n * records a gap (backfill). Never advances any cursor on failure.\n */\nexport async function processBlockWithRetry(\n\tsubgraph: SubgraphDefinition,\n\tsubgraphName: string,\n\tblockHeight: number,\n\topts?: ProcessBlockOptions,\n\tretryDelaysMs: number[] = BLOCK_RETRY_DELAYS_MS,\n): Promise<ProcessBlockResult> {\n\tlet lastError: unknown;\n\tfor (let attempt = 0; attempt <= retryDelaysMs.length; attempt++) {\n\t\ttry {\n\t\t\treturn await processBlock(subgraph, subgraphName, blockHeight, opts);\n\t\t} catch (err) {\n\t\t\tlastError = err;\n\t\t\tconst delay = retryDelaysMs[attempt];\n\t\t\tif (delay === undefined) break;\n\t\t\tlogger.warn(\"Block processing failed, retrying\", {\n\t\t\t\tsubgraph: subgraphName,\n\t\t\t\tblockHeight,\n\t\t\t\tattempt: attempt + 1,\n\t\t\t\tretryInMs: delay,\n\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t});\n\t\t\tawait new Promise((r) => setTimeout(r, delay));\n\t\t}\n\t}\n\tthrow lastError;\n}\n\nexport async function processBlock(\n\tsubgraph: SubgraphDefinition,\n\tsubgraphName: string,\n\tblockHeight: number,\n\topts?: ProcessBlockOptions,\n): Promise<ProcessBlockResult> {\n\tconst targetDb = getTargetDb();\n\tconst blockStart = performance.now();\n\tconst result: ProcessBlockResult = {\n\t\tblockHeight,\n\t\tmatched: 0,\n\t\tprocessed: 0,\n\t\terrors: 0,\n\t\tskipped: false,\n\t};\n\n\t// 1. Load block from source DB (shared indexer) — use pre-loaded data if available\n\tlet block: PreloadedBlockData[\"block\"] | undefined;\n\tlet txs: PreloadedBlockData[\"txs\"];\n\tlet evts: PreloadedBlockData[\"events\"];\n\tif (opts?.preloaded) {\n\t\tblock = opts.preloaded.block;\n\t\ttxs = opts.preloaded.txs;\n\t\tevts = opts.preloaded.events;\n\t} else {\n\t\t// The block source returns canonical blocks only, so a missing entry\n\t\t// means the block is absent or non-canonical — skip either way.\n\t\tconst data = (\n\t\t\tawait resolveBlockSource(subgraph).loadBlockRange(\n\t\t\t\tblockHeight,\n\t\t\t\tblockHeight,\n\t\t\t)\n\t\t).get(blockHeight);\n\t\tif (!data) {\n\t\t\tlogger.debug(\"Block not found or non-canonical for subgraph processing\", {\n\t\t\t\tsubgraph: subgraphName,\n\t\t\t\tblockHeight,\n\t\t\t});\n\t\t\tresult.skipped = true;\n\t\t\treturn result;\n\t\t}\n\t\tblock = data.block;\n\t\ttxs = data.txs;\n\t\tevts = data.events;\n\t}\n\n\t// 3. Match source. Trait-scoped sources ({ trait: \"sip-010\" }) resolve to the\n\t// set of conforming contracts AS OF this block (deploy_height ≤ blockHeight),\n\t// so a reindex backfills a token's full history even if it was classified\n\t// after deploy. Resolution is done here (DB access) so the matcher stays pure.\n\t// Route first: the factory set lives in this subgraph's pg schema, and it\n\t// must resolve BEFORE matching. `resolveRoute` is cached per subgraph.\n\tconst route = await resolveRoute(subgraphName, targetDb);\n\tconst schemaName = route.schemaName;\n\n\tconst traitContracts = await resolveTraitContracts(\n\t\tsubgraph,\n\t\tblockHeight,\n\t\ttargetDb,\n\t);\n\t// Factory sets resolve BEFORE matching so a contract revealed in this\n\t// block receives its own block-N events (see resolveFactoryContracts).\n\tconst { resolved: factoryContracts, discovered } =\n\t\tawait resolveFactoryContracts(\n\t\t\tsubgraph,\n\t\t\tblockHeight,\n\t\t\tschemaName,\n\t\t\ttargetDb,\n\t\t\ttxs,\n\t\t\tevts,\n\t\t);\n\tconst matched = matchSources(\n\t\tsubgraph.sources,\n\t\ttxs,\n\t\tevts,\n\t\ttraitContracts,\n\t\tfactoryContracts,\n\t);\n\tresult.matched = matched.length;\n\n\tif (matched.length === 0) {\n\t\tif (!opts?.skipProgressUpdate) {\n\t\t\tif (isReorgRewind(opts)) {\n\t\t\t\t// Fork block itself may match nothing for this subgraph — the\n\t\t\t\t// rewind still must land (unconditional, may move backward).\n\t\t\t\tawait rewindLiveProgress(targetDb, subgraphName, blockHeight);\n\t\t\t} else {\n\t\t\t\t// Promote-but-never-unpark: unconditional \"active\" stamping let the\n\t\t\t\t// live walk overwrite \"reindexing\" set by a queued reindex op,\n\t\t\t\t// flapping the subgraph back into catch-up (and into collision with\n\t\t\t\t// the op's schema drop). Conditional advance (f069): a no-write\n\t\t\t\t// block can't race-lose in any way that matters (nothing was\n\t\t\t\t// written), so a `false` return here is a silent no-op — the\n\t\t\t\t// cursor simply stays at whatever a racing writer already set it\n\t\t\t\t// to.\n\t\t\t\tawait recordLiveProgress(targetDb, subgraphName, blockHeight);\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\t// 4. Data plane (managed target DB, or the user's DB when BYO) — resolved\n\t// above, since factory-set resolution needs the schema name.\n\tconst blockMeta: BlockMeta = {\n\t\theight: block.height,\n\t\thash: block.hash,\n\t\ttimestamp: block.timestamp,\n\t\tburnBlockHeight: block.burn_block_height,\n\t\tindexBlockHash: block.index_block_hash,\n\t};\n\tconst initialTx: TxMeta = {\n\t\ttxId: \"\",\n\t\tsender: \"\",\n\t\ttype: \"\",\n\t\tstatus: \"\",\n\t};\n\n\tlet handlerMs = 0;\n\tlet flushMs = 0;\n\n\t// Progress + health writes — always on the managed DB, identical in both\n\t// modes (the subgraphs control-plane table lives in target). Only ever\n\t// reached with real work to do on the live catch-up path and the reorg\n\t// rewind path (both leave `skipProgressUpdate` unset); reindex/backfill\n\t// always pass `skipProgressUpdate: true` and return above.\n\tconst applyProgress = async (\n\t\ttx: Transaction<Database>,\n\t\trr: { processed: number; errors: number },\n\t\tflushedWrites: boolean,\n\t) => {\n\t\tif (opts?.skipProgressUpdate) return;\n\t\tconst rewind = isReorgRewind(opts);\n\t\tif (rr.errors > 0 && rr.processed === 0) {\n\t\t\tif (rewind) {\n\t\t\t\tawait updateSubgraphStatus(tx, subgraphName, \"error\", blockHeight);\n\t\t\t} else {\n\t\t\t\t// f069: conditional — see recordLiveError's docblock for why a lost\n\t\t\t\t// race here is always a silent no-op (an all-failed block never\n\t\t\t\t// flushes writes, so there's nothing to protect by throwing).\n\t\t\t\tawait recordLiveError(tx, subgraphName, blockHeight);\n\t\t\t}\n\t\t} else if (rewind) {\n\t\t\t// Unconditional, may move the cursor backward — see ProcessBlockOptions.\n\t\t\tawait rewindLiveProgress(tx, subgraphName, blockHeight);\n\t\t} else {\n\t\t\t// Promote-but-never-unpark (see matched-0 note). Conditional advance\n\t\t\t// (f069): a racing writer that already committed a higher cursor for\n\t\t\t// this height means OUR writes must not stand — abort the whole tx\n\t\t\t// so ctx.increment deltas already flushed above roll back with it.\n\t\t\t// BYO exception: phase A already committed to the user's DB by the\n\t\t\t// time this runs (phase B) — there is nothing left to roll back, so\n\t\t\t// throwing here would only turn an already-irreversible double-apply\n\t\t\t// into an uncaught error. BYO's cursor stays advisory, as documented\n\t\t\t// where phase A/B is split above; the CHECK-constraint guards are\n\t\t\t// BYO's load-bearing protection, not this cursor.\n\t\t\tconst advanced = await recordLiveProgress(tx, subgraphName, blockHeight);\n\t\t\tif (!advanced && flushedWrites && !route.byo) {\n\t\t\t\tthrow new LiveCursorRaceLostError(subgraphName, blockHeight);\n\t\t\t}\n\t\t}\n\t\tif (rr.processed > 0 || rr.errors > 0) {\n\t\t\tconst lastError =\n\t\t\t\trr.errors > 0\n\t\t\t\t\t? `${rr.errors} error(s) at block ${blockHeight}`\n\t\t\t\t\t: undefined;\n\t\t\tawait recordSubgraphProcessed(\n\t\t\t\ttx,\n\t\t\t\tsubgraphName,\n\t\t\t\trr.processed,\n\t\t\t\trr.errors,\n\t\t\t\tlastError,\n\t\t\t);\n\t\t}\n\t};\n\n\tif (route.byo) {\n\t\t// BYO: no cross-DB transaction possible. Phase A commits handler writes to\n\t\t// the user DB first (replace-per-height makes a replay idempotent); phase\n\t\t// B then records outbox + progress on the managed DB. If phase A throws,\n\t\t// progress never advances and the block replays — safe by construction.\n\t\t// atomicProgress: the checkpoint lands in phase B (post-commit), so it\n\t\t// can lag phase A but never lead it; the replay window that leaves is\n\t\t// covered by replace-per-height + the deploy-time handler restrictions.\n\t\t// Op-cursor mode is ADVISORY here for the same reason: phase-A user-DB\n\t\t// writes can never roll back on a lost race, so the guards\n\t\t// (BYO_NON_IDEMPOTENT_HANDLER) are the load-bearing protection.\n\t\tif (statusMode(opts)) {\n\t\t\tconst row = await targetDb\n\t\t\t\t.selectFrom(\"subgraphs\")\n\t\t\t\t.select(\"last_processed_block\")\n\t\t\t\t.where(\"name\", \"=\", subgraphName)\n\t\t\t\t.executeTakeFirst();\n\t\t\tif (row && Number(row.last_processed_block) >= blockHeight) {\n\t\t\t\tresult.skipped = true;\n\t\t\t\treturn result;\n\t\t\t}\n\t\t} else if (opCursorMode(opts)) {\n\t\t\tconst om = opCursorMode(opts) as { operationId: string };\n\t\t\tconst row = await targetDb\n\t\t\t\t.selectFrom(\"subgraph_operations\")\n\t\t\t\t.select(\"cursor_block\")\n\t\t\t\t.where(\"id\", \"=\", om.operationId)\n\t\t\t\t.executeTakeFirst();\n\t\t\tif (\n\t\t\t\trow?.cursor_block != null &&\n\t\t\t\tNumber(row.cursor_block) >= blockHeight\n\t\t\t) {\n\t\t\t\tresult.skipped = true;\n\t\t\t\treturn result;\n\t\t\t}\n\t\t}\n\t\tlet runResult = { processed: 0, errors: 0 };\n\t\tlet manifest: Awaited<ReturnType<SubgraphContext[\"flush\"]>> | undefined;\n\t\tawait route.dataDb\n\t\t\t.transaction()\n\t\t\t.execute(async (tx: Transaction<Database>) => {\n\t\t\t\tconst ctx = new SubgraphContext(\n\t\t\t\t\ttx,\n\t\t\t\t\tschemaName,\n\t\t\t\t\tsubgraph.schema,\n\t\t\t\t\tblockMeta,\n\t\t\t\t\tinitialTx,\n\t\t\t\t\ttrue,\n\t\t\t\t\tjournalEnabled(opts),\n\t\t\t\t);\n\t\t\t\tconst handlerStart = performance.now();\n\t\t\t\trunResult = await runHandlers(subgraph, matched, ctx);\n\t\t\t\thandlerMs = performance.now() - handlerStart;\n\t\t\t\tif (ctx.pendingOps > 0) {\n\t\t\t\t\tconst flushStart = performance.now();\n\t\t\t\t\tmanifest = await ctx.flush();\n\t\t\t\t\tflushMs = performance.now() - flushStart;\n\t\t\t\t}\n\t\t\t});\n\t\tresult.processed = runResult.processed;\n\t\tresult.errors = runResult.errors;\n\n\t\t// Persist factory discoveries only after the block's writes commit, so\n\t\t// a failed block doesn't leave addresses claimed for a block that\n\t\t// produced nothing. Stamped with this height, so the reorg handler\n\t\t// rolls them back with everything else.\n\t\tawait persistFactoryDiscoveries(\n\t\t\tschemaName,\n\t\t\troute.dataDb,\n\t\t\tblockHeight,\n\t\t\tdiscovered,\n\t\t);\n\n\t\t// Phase B (managed) — only reached after phase A commits.\n\t\tawait targetDb.transaction().execute(async (tx: Transaction<Database>) => {\n\t\t\tif (manifest && manifest.count > 0) {\n\t\t\t\tawait emitSubscriptionOutbox(\n\t\t\t\t\ttx,\n\t\t\t\t\tsubgraphName,\n\t\t\t\t\tmanifest,\n\t\t\t\t\tmatcher,\n\t\t\t\t\tblock.height,\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst byoSm = statusMode(opts);\n\t\t\tconst byoOm = opCursorMode(opts);\n\t\t\tif (byoSm && manifest && manifest.count > 0) {\n\t\t\t\tawait updateSubgraphStatus(tx, subgraphName, byoSm.status, blockHeight);\n\t\t\t} else if (byoOm && manifest && manifest.count > 0) {\n\t\t\t\t// Advisory: phase A already committed; a lost race here just means\n\t\t\t\t// the cursor was covered by another writer — nothing to undo.\n\t\t\t\tawait advanceOperationCursor(tx, byoOm.operationId, blockHeight);\n\t\t\t}\n\t\t\tawait applyProgress(tx, runResult, manifest ? manifest.count > 0 : false);\n\t\t});\n\t} else {\n\t\t// Managed: a single atomic transaction on the target DB.\n\t\ttry {\n\t\t\tawait targetDb\n\t\t\t\t.transaction()\n\t\t\t\t.execute(async (tx: Transaction<Database>) => {\n\t\t\t\t\t// Replay guard (sequential walks only): committed writes always carry\n\t\t\t\t\t// their checkpoint (below), so a block at/below the cursor has already\n\t\t\t\t\t// been applied — running it again would double-apply deltas.\n\t\t\t\t\tconst opMode = opCursorMode(opts);\n\t\t\t\t\tconst sm = statusMode(opts);\n\t\t\t\t\tconst rewind = isReorgRewind(opts);\n\t\t\t\t\tif (sm) {\n\t\t\t\t\t\tconst row = await tx\n\t\t\t\t\t\t\t.selectFrom(\"subgraphs\")\n\t\t\t\t\t\t\t.select(\"last_processed_block\")\n\t\t\t\t\t\t\t.where(\"name\", \"=\", subgraphName)\n\t\t\t\t\t\t\t.executeTakeFirst();\n\t\t\t\t\t\tif (row && Number(row.last_processed_block) >= blockHeight) {\n\t\t\t\t\t\t\tresult.skipped = true;\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (opMode) {\n\t\t\t\t\t\t// Fast path only — the conditional advance below is the guarantee.\n\t\t\t\t\t\tconst row = await tx\n\t\t\t\t\t\t\t.selectFrom(\"subgraph_operations\")\n\t\t\t\t\t\t\t.select(\"cursor_block\")\n\t\t\t\t\t\t\t.where(\"id\", \"=\", opMode.operationId)\n\t\t\t\t\t\t\t.executeTakeFirst();\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\trow?.cursor_block != null &&\n\t\t\t\t\t\t\tNumber(row.cursor_block) >= blockHeight\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tresult.skipped = true;\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (!rewind) {\n\t\t\t\t\t\t// f069: the same fast-path guard, now armed on the live path.\n\t\t\t\t\t\t// Fast path only — the conditional `recordLiveProgress` advance\n\t\t\t\t\t\t// below (via applyProgress) is the actual guarantee; this SELECT,\n\t\t\t\t\t\t// taken before handlers run, cannot see a same-height race that\n\t\t\t\t\t\t// commits between here and there. Never checked when `rewind` is\n\t\t\t\t\t\t// set: a reorg's fork block is, by construction, at or below the\n\t\t\t\t\t\t// current cursor, and must run anyway.\n\t\t\t\t\t\tconst row = await tx\n\t\t\t\t\t\t\t.selectFrom(\"subgraphs\")\n\t\t\t\t\t\t\t.select(\"last_processed_block\")\n\t\t\t\t\t\t\t.where(\"name\", \"=\", subgraphName)\n\t\t\t\t\t\t\t.executeTakeFirst();\n\t\t\t\t\t\tif (row && Number(row.last_processed_block) >= blockHeight) {\n\t\t\t\t\t\t\tresult.skipped = true;\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tconst ctx = new SubgraphContext(\n\t\t\t\t\t\ttx,\n\t\t\t\t\t\tschemaName,\n\t\t\t\t\t\tsubgraph.schema,\n\t\t\t\t\t\tblockMeta,\n\t\t\t\t\t\tinitialTx,\n\t\t\t\t\t\tfalse,\n\t\t\t\t\t\tjournalEnabled(opts),\n\t\t\t\t\t);\n\n\t\t\t\t\t// f071 Stage A: dark, flag-gated dispatch. `sandboxEnabled` requires\n\t\t\t\t\t// BOTH the global env gate AND this subgraph's `sandbox_workers`\n\t\t\t\t\t// column — nothing in committed code sets that column, so this\n\t\t\t\t\t// branch is unreached in production today; `runHandlers` (below)\n\t\t\t\t\t// is what actually executes, byte-identical to before this plan.\n\t\t\t\t\t// When it IS reached: `runHandlersSandboxed` runs handlers in the\n\t\t\t\t\t// sandbox subprocess but replays their decided ops onto THIS same\n\t\t\t\t\t// `ctx`, bound to THIS same open transaction, before returning —\n\t\t\t\t\t// so the flush/manifest/outbox flow and the f069 guard placement\n\t\t\t\t\t// below are unaffected either way (see `host.ts`'s docblock).\n\t\t\t\t\tconst handlerStart = performance.now();\n\t\t\t\t\tconst runResult = sandboxEnabled({\n\t\t\t\t\t\tsandbox_workers: route.sandboxWorkers,\n\t\t\t\t\t})\n\t\t\t\t\t\t? await runHandlersSandboxed({\n\t\t\t\t\t\t\t\tsubgraphName,\n\t\t\t\t\t\t\t\tversion: route.version,\n\t\t\t\t\t\t\t\thandlerCode: route.handlerCode,\n\t\t\t\t\t\t\t\thostCtx: ctx,\n\t\t\t\t\t\t\t\tblock: blockMeta,\n\t\t\t\t\t\t\t\tmatched,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t: await runHandlers(subgraph, matched, ctx);\n\t\t\t\t\thandlerMs = performance.now() - handlerStart;\n\n\t\t\t\t\tresult.processed = runResult.processed;\n\t\t\t\t\tresult.errors = runResult.errors;\n\n\t\t\t\t\tlet flushedWrites = false;\n\t\t\t\t\tif (ctx.pendingOps > 0) {\n\t\t\t\t\t\tconst flushStart = performance.now();\n\t\t\t\t\t\tconst manifest = await ctx.flush();\n\t\t\t\t\t\tflushedWrites = manifest.count > 0;\n\t\t\t\t\t\tif (manifest.count > 0) {\n\t\t\t\t\t\t\tawait emitSubscriptionOutbox(\n\t\t\t\t\t\t\t\ttx,\n\t\t\t\t\t\t\t\tsubgraphName,\n\t\t\t\t\t\t\t\tmanifest,\n\t\t\t\t\t\t\t\tmatcher,\n\t\t\t\t\t\t\t\tblock.height,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tflushMs = performance.now() - flushStart;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Checkpoint travels with the writes it covers — a crash can never\n\t\t\t\t\t// leave committed deltas ahead of the checkpoint (fix-f040 B3).\n\t\t\t\t\tif (sm && flushedWrites) {\n\t\t\t\t\t\tawait updateSubgraphStatus(\n\t\t\t\t\t\t\ttx,\n\t\t\t\t\t\t\tsubgraphName,\n\t\t\t\t\t\t\tsm.status,\n\t\t\t\t\t\t\tblockHeight,\n\t\t\t\t\t\t);\n\t\t\t\t\t} else if (opMode && flushedWrites) {\n\t\t\t\t\t\tconst advanced = await advanceOperationCursor(\n\t\t\t\t\t\t\ttx,\n\t\t\t\t\t\t\topMode.operationId,\n\t\t\t\t\t\t\tblockHeight,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (!advanced) {\n\t\t\t\t\t\t\t// A racing writer (zombie/claimer) already covered this height —\n\t\t\t\t\t\t\t// abort OUR writes; the winner's commit stands.\n\t\t\t\t\t\t\tthrow new CursorRaceLostError(opMode.operationId, blockHeight);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tawait applyProgress(tx, runResult, flushedWrites);\n\t\t\t\t});\n\t\t} catch (err) {\n\t\t\tif (\n\t\t\t\terr instanceof CursorRaceLostError ||\n\t\t\t\terr instanceof LiveCursorRaceLostError\n\t\t\t) {\n\t\t\t\t// Success-shaped: the block IS committed (by the winner). Surfacing\n\t\t\t\t// this as an error would mint a false gap row and re-invite the\n\t\t\t\t// double-apply through gap repair.\n\t\t\t\tlogger.warn(\"cursor race lost — block already covered\", {\n\t\t\t\t\tsubgraph: subgraphName,\n\t\t\t\t\tblockHeight,\n\t\t\t\t\terror: err.message,\n\t\t\t\t});\n\t\t\t\tresult.skipped = true;\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\tthrow err;\n\t\t}\n\t}\n\n\tconst totalMs = performance.now() - blockStart;\n\t// f069: a skipped block (guard fast-path, or a race-loss success-shaped\n\t// skip) never reaches here as a distinct branch — it falls through from\n\t// the transaction callback's early `return`. `blocks_processed` is now\n\t// load-bearing forensic evidence (f068's own re-derivation of it), so a\n\t// skip must not inflate it: only count blocks that actually ran handlers.\n\tif (!result.skipped) {\n\t\tresult.timing = {\n\t\t\ttotalMs: Math.round(totalMs),\n\t\t\thandlerMs: Math.round(handlerMs),\n\t\t\tflushMs: Math.round(flushMs),\n\t\t};\n\t}\n\n\t// 7. Row count warning — sample every 1000 blocks (uses pg_stat estimate, not COUNT(*))\n\tif (blockHeight % 1000 === 0) {\n\t\ttry {\n\t\t\tconst tables = Object.keys(subgraph.schema);\n\t\t\tfor (const table of tables) {\n\t\t\t\tconst { rows } = await sql\n\t\t\t\t\t.raw(\n\t\t\t\t\t\t`SELECT n_live_tup AS count FROM pg_stat_user_tables WHERE schemaname = '${schemaName}' AND relname = '${table}'`,\n\t\t\t\t\t)\n\t\t\t\t\t.execute(route.dataDb);\n\t\t\t\tconst count = Number((rows[0] as Record<string, unknown>)?.count ?? 0);\n\t\t\t\tif (count >= 10_000_000) {\n\t\t\t\t\tlogger.warn(\"Subgraph table exceeds 10M rows (estimate)\", {\n\t\t\t\t\t\tsubgraph: subgraphName,\n\t\t\t\t\t\ttable,\n\t\t\t\t\t\tcount,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (err) {\n\t\t\t// Expected: table may not exist yet (fresh subgraph, first few\n\t\t\t// blocks before DDL runs). Log at debug so real errors —\n\t\t\t// connection, permissions, query plan — aren't invisible.\n\t\t\tlogger.debug(\"Row count sample failed\", {\n\t\t\t\tsubgraph: subgraphName,\n\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t});\n\t\t}\n\n\t\t// Prune reorg-journal entries past finality (fix-f040 B2). Same cadence\n\t\t// as the row sample; retention is generous vs observed reorg depth.\n\t\tif (journalEnabled(opts)) {\n\t\t\tawait sql\n\t\t\t\t.raw(\n\t\t\t\t\t`DELETE FROM \"${schemaName}\".\"_journal\" WHERE \"block_height\" < ${blockHeight - JOURNAL_RETENTION_BLOCKS}`,\n\t\t\t\t)\n\t\t\t\t.execute(route.dataDb)\n\t\t\t\t.catch(() => {\n\t\t\t\t\t// Journal may not exist yet (pre-journal deploy, no writes since).\n\t\t\t\t});\n\t\t}\n\t}\n\n\treturn result;\n}\n",
|
|
13
|
+
"import { secretsKeyAvailable } from \"@secondlayer/shared/crypto/secrets\";\nimport { type Database, getTargetDb } from \"@secondlayer/shared/db\";\nimport { resolveTraitContractIds } from \"@secondlayer/shared/db/queries/contracts\";\nimport { advanceOperationCursor } from \"@secondlayer/shared/db/queries/subgraph-operations\";\nimport {\n\tisByoSubgraph,\n\trecordLiveError,\n\trecordLiveProgress,\n\trecordSubgraphProcessed,\n\tresolveSubgraphDb,\n\trewindLiveProgress,\n\tupdateSubgraphStatus,\n} from \"@secondlayer/shared/db/queries/subgraphs\";\nimport { logger } from \"@secondlayer/shared/logger\";\nimport { type Kysely, type Transaction, sql } from \"kysely\";\nimport { pgSchemaName } from \"../schema/utils.ts\";\nimport type { SubgraphDefinition } from \"../types.ts\";\nimport { resolveBlockSource } from \"./block-source.ts\";\nimport {\n\ttype BlockMeta,\n\tJOURNAL_RETENTION_BLOCKS,\n\tSubgraphContext,\n\ttype TxMeta,\n} from \"./context.ts\";\nimport { emitSubscriptionOutbox } from \"./outbox-emit.ts\";\nimport { buildEventPayload, runHandlers } from \"./runner.ts\";\nimport { sandboxEnabled } from \"./sandbox/flag.ts\";\nimport { evictSandboxWorker, runHandlersSandboxed } from \"./sandbox/host.ts\";\nimport {\n\ttype EventRecord,\n\ttype TxRecord,\n\tmatchSources,\n\treadPath,\n} from \"./source-matcher.ts\";\nimport { matcher } from \"./subscription-state.ts\";\n\n/**\n * The data-plane route for a subgraph: which schema its tables live in, the DB\n * those writes/reads land on (the user's DB when BYO, else the managed target),\n * and whether it's BYO. Cached per subgraph to avoid a per-block lookup +\n * decrypt; invalidated on redeploy (the connection can change) via\n * {@link invalidateSubgraphRoute}.\n *\n * Also carries the f071 Stage A sandbox-dispatch inputs\n * (`sandboxWorkers`/`handlerCode`/`version`) — cheap to keep alongside the\n * route since `resolveRoute` already selects the full `subgraphs` row; kept\n * in lockstep with the same cache invalidation edge (redeploys change\n * `handler_code`/`version` together with the connection).\n */\ninterface SubgraphRoute {\n\tschemaName: string;\n\tdataDb: Kysely<Database>;\n\tbyo: boolean;\n\t/** `subgraphs.sandbox_workers` — combined with the global env gate by\n\t * `sandboxEnabled()`. Default false for every row; nothing in committed\n\t * code sets it true (f071 Stage A stays dark). */\n\tsandboxWorkers: boolean;\n\thandlerCode: string | null;\n\tversion: string;\n}\nconst routeCache = new Map<string, SubgraphRoute>();\n\n/** f072: thrown by `resolveRoute` when a BYO subgraph needs its user-DB\n * connection decrypted but this process holds no `SECONDLAYER_SECRETS_KEY`\n * — the subgraph processor deliberately does not hold the master key (it\n * runs untrusted handler code in-process, every block; see f049 site 3 /\n * the sandbox spike doc's D3). Deny by default, fail loud: this must NEVER\n * be caught and silently rerouted to the managed target DB, since that\n * would write a tenant's rows into ours — far worse than halting the\n * block. */\nexport class ByoKeyUnavailableError extends Error {\n\tconstructor(subgraphName: string) {\n\t\tsuper(\n\t\t\t`subgraph ${subgraphName} is BYO (database_url_enc set) but this process has no SECONDLAYER_SECRETS_KEY — the subgraph processor deliberately does not hold it (f072). Route BYO subgraphs to a process that does, or unset BYO.`,\n\t\t);\n\t\tthis.name = \"ByoKeyUnavailableError\";\n\t}\n}\n\nasync function resolveRoute(\n\tsubgraphName: string,\n\ttargetDb: Kysely<Database>,\n): Promise<SubgraphRoute> {\n\tconst cached = routeCache.get(subgraphName);\n\tif (cached) return cached;\n\tconst row = await targetDb\n\t\t.selectFrom(\"subgraphs\")\n\t\t.selectAll()\n\t\t.where(\"name\", \"=\", subgraphName)\n\t\t.executeTakeFirst();\n\tconst byo = row ? isByoSubgraph(row) : false;\n\t// f072: check BEFORE the decrypt-on-access below (`resolveSubgraphDb` ->\n\t// `decryptSecret`) so a missing key fails loud with a named, actionable\n\t// error instead of secrets.ts's generic \"not set\" throw.\n\tif (row && byo && !secretsKeyAvailable()) {\n\t\tthrow new ByoKeyUnavailableError(subgraphName);\n\t}\n\tconst route: SubgraphRoute = {\n\t\tschemaName: row?.schema_name ?? pgSchemaName(subgraphName),\n\t\tdataDb: row && byo ? resolveSubgraphDb(row) : targetDb,\n\t\tbyo,\n\t\tsandboxWorkers: row?.sandbox_workers === true,\n\t\thandlerCode: row?.handler_code ?? null,\n\t\tversion: row?.version ?? \"\",\n\t};\n\trouteCache.set(subgraphName, route);\n\treturn route;\n}\n\n/** Drop a subgraph's cached route — call on redeploy/delete (conn may\n * change). Also evicts any warm sandbox subprocess for this subgraph\n * (f071 Stage A `host.ts`) on the same edge: a redeploy can change\n * `handler_code`/`version`/the BYO connection together, and a stale warm\n * subprocess must not survive past this invalidation any more than the\n * cached route does. A no-op today since nothing sets `sandbox_workers`,\n * but keeps the pool's documented invalidation contract honest for when it\n * is. */\nexport function invalidateSubgraphRoute(subgraphName: string): void {\n\trouteCache.delete(subgraphName);\n\tevictSandboxWorker(subgraphName);\n}\n\n/**\n * Resolve each distinct trait used by a subgraph's sources to its conforming\n * contract-id set, as of `blockHeight`, from the contract registry. Empty map\n * when no source is trait-scoped (the common case → no DB work).\n */\n/**\n * Resolve each factory-scoped source's address set for this block.\n *\n * Two parts, and the ORDER is the guarantee:\n * 1. addresses persisted by earlier blocks (`block_height <= blockHeight`,\n * so a reindex sees exactly what the live walk saw), then\n * 2. addresses revealed by THIS block's events — computed before matching,\n * so a contract discovered in block N receives its own block-N events.\n * Without this pass the first event from every discovered contract is\n * silently lost.\n */\n/**\n * Exported as a test seam. Both guarantees this function carries — a contract\n * discovered in block N receiving its OWN block-N events, and the persisted set\n * being height-stamped so a reorg can roll it back — were asserted only by\n * comment until now.\n */\nexport async function resolveFactoryContracts(\n\tsubgraph: SubgraphDefinition,\n\tblockHeight: number,\n\tschemaName: string,\n\tdb: Kysely<Database>,\n\ttxs: TxRecord[],\n\tevts: EventRecord[],\n): Promise<{\n\tresolved: Map<string, ReadonlySet<string>>;\n\tdiscovered: Array<{ sourceName: string; address: string }>;\n}> {\n\t// Keyed by the DISCOVERING source (`factory.from`), not the consuming one:\n\t// several sources can share one factory, and this way the extraction runs\n\t// once per discovering source rather than once per consumer.\n\tconst factories = new Map<string, { from: string; field: string }>();\n\tfor (const source of Object.values(subgraph.sources)) {\n\t\tconst factory = (source as { factory?: { from: string; field: string } })\n\t\t\t.factory;\n\t\tif (factory) factories.set(factory.from, factory);\n\t}\n\tconst resolved = new Map<string, ReadonlySet<string>>();\n\tconst discovered: Array<{ sourceName: string; address: string }> = [];\n\tif (factories.size === 0) return { resolved, discovered };\n\n\tfor (const [discoveringSource, factory] of factories) {\n\t\tconst known = new Set<string>();\n\t\t// 1. Everything revealed at or below this height.\n\t\ttry {\n\t\t\tconst rows = await sql<{ address: string }>`\n\t\t\t\tSELECT address FROM ${sql.raw(`\"${schemaName}\".\"_factory_addresses\"`)}\n\t\t\t\tWHERE source_name = ${discoveringSource} AND block_height <= ${blockHeight}\n\t\t\t`.execute(db);\n\t\t\tfor (const row of rows.rows) known.add(row.address);\n\t\t} catch {\n\t\t\t// Table absent (first deploy before DDL, or a non-factory subgraph):\n\t\t\t// treat as an empty set rather than failing the block.\n\t\t}\n\n\t\t// 2. This block's own reveals — before matching, so same-block events\n\t\t// from a new contract are not dropped.\n\t\tconst discovering = subgraph.sources[factory.from];\n\t\tif (discovering) {\n\t\t\tconst matches = matchSources(\n\t\t\t\t{ [factory.from]: discovering },\n\t\t\t\ttxs,\n\t\t\t\tevts,\n\t\t\t\tnew Map(),\n\t\t\t\tnew Map(),\n\t\t\t);\n\t\t\tfor (const match of matches) {\n\t\t\t\tfor (const event of match.events ?? []) {\n\t\t\t\t\tconst payload = buildEventPayload(discovering, match.tx, event);\n\t\t\t\t\tconst value = readPath(payload, factory.field);\n\t\t\t\t\tif (\n\t\t\t\t\t\ttypeof value === \"string\" &&\n\t\t\t\t\t\tvalue.length > 0 &&\n\t\t\t\t\t\t!known.has(value)\n\t\t\t\t\t) {\n\t\t\t\t\t\tknown.add(value);\n\t\t\t\t\t\tdiscovered.push({ sourceName: discoveringSource, address: value });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tresolved.set(discoveringSource, known);\n\t}\n\treturn { resolved, discovered };\n}\n\n/** Persist this block's discoveries, stamped with the block that revealed\n * them so the reorg handler can roll them back. */\nasync function persistFactoryDiscoveries(\n\tschemaName: string,\n\tdb: Kysely<Database>,\n\tblockHeight: number,\n\tdiscovered: Array<{ sourceName: string; address: string }>,\n): Promise<void> {\n\tif (discovered.length === 0) return;\n\tfor (const { sourceName, address } of discovered) {\n\t\tawait sql`\n\t\t\tINSERT INTO ${sql.raw(`\"${schemaName}\".\"_factory_addresses\"`)}\n\t\t\t\t(source_name, address, block_height)\n\t\t\tVALUES (${sourceName}, ${address}, ${blockHeight})\n\t\t\tON CONFLICT (source_name, address) DO NOTHING\n\t\t`.execute(db);\n\t}\n}\n\nasync function resolveTraitContracts(\n\tsubgraph: SubgraphDefinition,\n\tblockHeight: number,\n\tdb: Kysely<Database>,\n): Promise<Map<string, ReadonlySet<string>>> {\n\tconst traits = new Set<string>();\n\tfor (const source of Object.values(subgraph.sources)) {\n\t\tconst trait = (source as { trait?: string }).trait;\n\t\tif (trait) traits.add(trait);\n\t}\n\tconst resolved = new Map<string, ReadonlySet<string>>();\n\tfor (const trait of traits) {\n\t\tconst ids = await resolveTraitContractIds(db, trait, blockHeight);\n\t\tresolved.set(trait, new Set(ids));\n\t}\n\treturn resolved;\n}\n\nexport interface ProcessBlockTiming {\n\ttotalMs: number;\n\thandlerMs: number;\n\tflushMs: number;\n}\n\nexport interface ProcessBlockResult {\n\tblockHeight: number;\n\tmatched: number;\n\tprocessed: number;\n\terrors: number;\n\tskipped: boolean;\n\ttiming?: ProcessBlockTiming;\n}\n\n/**\n * Process a single block through a single subgraph's pipeline.\n *\n * Flow:\n * 1. Load block + txs + events from DB\n * 2. Run source matcher\n * 3. Run handlers with SubgraphContext\n * 4. Flush context (commit writes atomically)\n * 5. Update subgraph.last_processed_block\n */\nexport interface PreloadedBlockData {\n\tblock: import(\"@secondlayer/shared/db\").Block;\n\ttxs: import(\"@secondlayer/shared/db\").Transaction[];\n\tevents: import(\"@secondlayer/shared/db\").Event[];\n}\n\nexport interface ProcessBlockOptions {\n\t/** Skip updating last_processed_block in DB (reindex batches this externally). */\n\tskipProgressUpdate?: boolean;\n\t/** Pre-loaded block data — skips DB reads when provided (used by batch catch-up). */\n\tpreloaded?: PreloadedBlockData;\n\t/**\n\t * Crash-safe sequential processing. Two checkpoint scopes:\n\t * - `{ status }` (reindex): a written block commits\n\t * `subgraphs.last_processed_block = blockHeight` in the SAME transaction\n\t * as its writes; replays skip at/below the cursor. Only for strictly\n\t * ascending walks over the subgraph's own cursor.\n\t * - `{ operationId }` (backfill): same guarantee against the OPERATION's\n\t * own `cursor_block` — backfills legitimately revisit heights below the\n\t * live cursor, so they must never checkpoint (or read) the subgraph\n\t * cursor. The advance is a CONDITIONAL monotonic UPDATE: concurrent\n\t * writers serialize on it, and the loser's whole block tx rolls back\n\t * (surfaced as `skipped`, never an error/gap).\n\t * Either way: a crash can never leave committed deltas ahead of the\n\t * relevant checkpoint.\n\t */\n\tatomicProgress?: { status: string } | { operationId: string };\n\t/**\n\t * Reorg rewind (f069): set exclusively by `reorg.ts`'s fork-block\n\t * reprocess. Bypasses the live-path replay guard (a fork block's height\n\t * is, by construction, at or below the current cursor — the guard would\n\t * otherwise skip it) and writes the checkpoint via\n\t * `rewindLiveProgress` (unconditional — a rewind's whole point is\n\t * moving the cursor *backward*, which the live path's conditional\n\t * advance would refuse). Safe only because the reorg path holds a\n\t * transaction-scoped advisory lock across its whole\n\t * delete+reprocess+rewind sequence, so nothing else can interleave a\n\t * forward write. Never set this outside `reorg.ts`.\n\t */\n\treorgRewind?: true;\n}\n\n/** Thrown inside the block tx when a racing writer already covered this\n * height — rolls the tx back; processBlock converts it to `skipped`. The\n * winner committed the block, so this is success-shaped, never a gap. */\nclass CursorRaceLostError extends Error {\n\tconstructor(operationId: string, height: number) {\n\t\tsuper(`op ${operationId} lost cursor race at block ${height}`);\n\t\tthis.name = \"CursorRaceLostError\";\n\t}\n}\n\n/** Live-path sibling of {@link CursorRaceLostError}: thrown when the live\n * path's conditional `recordLiveProgress` advance loses to a racing\n * writer that already committed a higher (or equal) `last_processed_block`\n * for this subgraph. Same success-shaped handling — the winner's commit\n * stands, so this becomes `result.skipped = true`, never an error/gap. */\nclass LiveCursorRaceLostError extends Error {\n\tconstructor(subgraphName: string, height: number) {\n\t\tsuper(`live cursor race lost for ${subgraphName} at block ${height}`);\n\t\tthis.name = \"LiveCursorRaceLostError\";\n\t}\n}\n\nfunction opCursorMode(\n\topts?: ProcessBlockOptions,\n): { operationId: string } | undefined {\n\tconst ap = opts?.atomicProgress;\n\treturn ap && \"operationId\" in ap ? ap : undefined;\n}\n\n/** True only for the reorg fork-block reprocess — see `reorgRewind` on\n * {@link ProcessBlockOptions}. */\nfunction isReorgRewind(opts?: ProcessBlockOptions): boolean {\n\treturn opts?.reorgRewind === true;\n}\n\nfunction statusMode(\n\topts?: ProcessBlockOptions,\n): { status: string } | undefined {\n\tconst ap = opts?.atomicProgress;\n\treturn ap && \"status\" in ap ? ap : undefined;\n}\n\n/** Default per-block retry schedule before a failure counts as persistent. */\nexport const BLOCK_RETRY_DELAYS_MS: number[] = [500, 2_000, 5_000];\n\n/**\n * Journal pre-images on the live path only. Deep reindex/backfill heights\n * (skipProgressUpdate) are past finality — a reorg can't reach them, so\n * journaling would be pure churn for the pruner.\n */\nfunction journalEnabled(opts?: ProcessBlockOptions): boolean {\n\treturn !opts?.skipProgressUpdate;\n}\n\n/**\n * processBlock with bounded retries. Throws the last error once the schedule\n * is exhausted — callers decide whether that halts the walk (strict paths) or\n * records a gap (backfill). Never advances any cursor on failure.\n */\nexport async function processBlockWithRetry(\n\tsubgraph: SubgraphDefinition,\n\tsubgraphName: string,\n\tblockHeight: number,\n\topts?: ProcessBlockOptions,\n\tretryDelaysMs: number[] = BLOCK_RETRY_DELAYS_MS,\n): Promise<ProcessBlockResult> {\n\tlet lastError: unknown;\n\tfor (let attempt = 0; attempt <= retryDelaysMs.length; attempt++) {\n\t\ttry {\n\t\t\treturn await processBlock(subgraph, subgraphName, blockHeight, opts);\n\t\t} catch (err) {\n\t\t\tlastError = err;\n\t\t\tconst delay = retryDelaysMs[attempt];\n\t\t\tif (delay === undefined) break;\n\t\t\tlogger.warn(\"Block processing failed, retrying\", {\n\t\t\t\tsubgraph: subgraphName,\n\t\t\t\tblockHeight,\n\t\t\t\tattempt: attempt + 1,\n\t\t\t\tretryInMs: delay,\n\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t});\n\t\t\tawait new Promise((r) => setTimeout(r, delay));\n\t\t}\n\t}\n\tthrow lastError;\n}\n\nexport async function processBlock(\n\tsubgraph: SubgraphDefinition,\n\tsubgraphName: string,\n\tblockHeight: number,\n\topts?: ProcessBlockOptions,\n): Promise<ProcessBlockResult> {\n\tconst targetDb = getTargetDb();\n\tconst blockStart = performance.now();\n\tconst result: ProcessBlockResult = {\n\t\tblockHeight,\n\t\tmatched: 0,\n\t\tprocessed: 0,\n\t\terrors: 0,\n\t\tskipped: false,\n\t};\n\n\t// 1. Load block from source DB (shared indexer) — use pre-loaded data if available\n\tlet block: PreloadedBlockData[\"block\"] | undefined;\n\tlet txs: PreloadedBlockData[\"txs\"];\n\tlet evts: PreloadedBlockData[\"events\"];\n\tif (opts?.preloaded) {\n\t\tblock = opts.preloaded.block;\n\t\ttxs = opts.preloaded.txs;\n\t\tevts = opts.preloaded.events;\n\t} else {\n\t\t// The block source returns canonical blocks only, so a missing entry\n\t\t// means the block is absent or non-canonical — skip either way.\n\t\tconst data = (\n\t\t\tawait resolveBlockSource(subgraph).loadBlockRange(\n\t\t\t\tblockHeight,\n\t\t\t\tblockHeight,\n\t\t\t)\n\t\t).get(blockHeight);\n\t\tif (!data) {\n\t\t\tlogger.debug(\"Block not found or non-canonical for subgraph processing\", {\n\t\t\t\tsubgraph: subgraphName,\n\t\t\t\tblockHeight,\n\t\t\t});\n\t\t\tresult.skipped = true;\n\t\t\treturn result;\n\t\t}\n\t\tblock = data.block;\n\t\ttxs = data.txs;\n\t\tevts = data.events;\n\t}\n\n\t// 3. Match source. Trait-scoped sources ({ trait: \"sip-010\" }) resolve to the\n\t// set of conforming contracts AS OF this block (deploy_height ≤ blockHeight),\n\t// so a reindex backfills a token's full history even if it was classified\n\t// after deploy. Resolution is done here (DB access) so the matcher stays pure.\n\t// Route first: the factory set lives in this subgraph's pg schema, and it\n\t// must resolve BEFORE matching. `resolveRoute` is cached per subgraph.\n\tconst route = await resolveRoute(subgraphName, targetDb);\n\tconst schemaName = route.schemaName;\n\n\tconst traitContracts = await resolveTraitContracts(\n\t\tsubgraph,\n\t\tblockHeight,\n\t\ttargetDb,\n\t);\n\t// Factory sets resolve BEFORE matching so a contract revealed in this\n\t// block receives its own block-N events (see resolveFactoryContracts).\n\tconst { resolved: factoryContracts, discovered } =\n\t\tawait resolveFactoryContracts(\n\t\t\tsubgraph,\n\t\t\tblockHeight,\n\t\t\tschemaName,\n\t\t\ttargetDb,\n\t\t\ttxs,\n\t\t\tevts,\n\t\t);\n\tconst matched = matchSources(\n\t\tsubgraph.sources,\n\t\ttxs,\n\t\tevts,\n\t\ttraitContracts,\n\t\tfactoryContracts,\n\t);\n\tresult.matched = matched.length;\n\n\tif (matched.length === 0) {\n\t\tif (!opts?.skipProgressUpdate) {\n\t\t\tif (isReorgRewind(opts)) {\n\t\t\t\t// Fork block itself may match nothing for this subgraph — the\n\t\t\t\t// rewind still must land (unconditional, may move backward).\n\t\t\t\tawait rewindLiveProgress(targetDb, subgraphName, blockHeight);\n\t\t\t} else {\n\t\t\t\t// Promote-but-never-unpark: unconditional \"active\" stamping let the\n\t\t\t\t// live walk overwrite \"reindexing\" set by a queued reindex op,\n\t\t\t\t// flapping the subgraph back into catch-up (and into collision with\n\t\t\t\t// the op's schema drop). Conditional advance (f069): a no-write\n\t\t\t\t// block can't race-lose in any way that matters (nothing was\n\t\t\t\t// written), so a `false` return here is a silent no-op — the\n\t\t\t\t// cursor simply stays at whatever a racing writer already set it\n\t\t\t\t// to.\n\t\t\t\tawait recordLiveProgress(targetDb, subgraphName, blockHeight);\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\t// 4. Data plane (managed target DB, or the user's DB when BYO) — resolved\n\t// above, since factory-set resolution needs the schema name.\n\tconst blockMeta: BlockMeta = {\n\t\theight: block.height,\n\t\thash: block.hash,\n\t\ttimestamp: block.timestamp,\n\t\tburnBlockHeight: block.burn_block_height,\n\t\tindexBlockHash: block.index_block_hash,\n\t};\n\tconst initialTx: TxMeta = {\n\t\ttxId: \"\",\n\t\tsender: \"\",\n\t\ttype: \"\",\n\t\tstatus: \"\",\n\t};\n\n\tlet handlerMs = 0;\n\tlet flushMs = 0;\n\n\t// Progress + health writes — always on the managed DB, identical in both\n\t// modes (the subgraphs control-plane table lives in target). Only ever\n\t// reached with real work to do on the live catch-up path and the reorg\n\t// rewind path (both leave `skipProgressUpdate` unset); reindex/backfill\n\t// always pass `skipProgressUpdate: true` and return above.\n\tconst applyProgress = async (\n\t\ttx: Transaction<Database>,\n\t\trr: { processed: number; errors: number },\n\t\tflushedWrites: boolean,\n\t) => {\n\t\tif (opts?.skipProgressUpdate) return;\n\t\tconst rewind = isReorgRewind(opts);\n\t\tif (rr.errors > 0 && rr.processed === 0) {\n\t\t\tif (rewind) {\n\t\t\t\tawait updateSubgraphStatus(tx, subgraphName, \"error\", blockHeight);\n\t\t\t} else {\n\t\t\t\t// f069: conditional — see recordLiveError's docblock for why a lost\n\t\t\t\t// race here is always a silent no-op (an all-failed block never\n\t\t\t\t// flushes writes, so there's nothing to protect by throwing).\n\t\t\t\tawait recordLiveError(tx, subgraphName, blockHeight);\n\t\t\t}\n\t\t} else if (rewind) {\n\t\t\t// Unconditional, may move the cursor backward — see ProcessBlockOptions.\n\t\t\tawait rewindLiveProgress(tx, subgraphName, blockHeight);\n\t\t} else {\n\t\t\t// Promote-but-never-unpark (see matched-0 note). Conditional advance\n\t\t\t// (f069): a racing writer that already committed a higher cursor for\n\t\t\t// this height means OUR writes must not stand — abort the whole tx\n\t\t\t// so ctx.increment deltas already flushed above roll back with it.\n\t\t\t// BYO exception: phase A already committed to the user's DB by the\n\t\t\t// time this runs (phase B) — there is nothing left to roll back, so\n\t\t\t// throwing here would only turn an already-irreversible double-apply\n\t\t\t// into an uncaught error. BYO's cursor stays advisory, as documented\n\t\t\t// where phase A/B is split above; the CHECK-constraint guards are\n\t\t\t// BYO's load-bearing protection, not this cursor.\n\t\t\tconst advanced = await recordLiveProgress(tx, subgraphName, blockHeight);\n\t\t\tif (!advanced && flushedWrites && !route.byo) {\n\t\t\t\tthrow new LiveCursorRaceLostError(subgraphName, blockHeight);\n\t\t\t}\n\t\t}\n\t\tif (rr.processed > 0 || rr.errors > 0) {\n\t\t\tconst lastError =\n\t\t\t\trr.errors > 0\n\t\t\t\t\t? `${rr.errors} error(s) at block ${blockHeight}`\n\t\t\t\t\t: undefined;\n\t\t\tawait recordSubgraphProcessed(\n\t\t\t\ttx,\n\t\t\t\tsubgraphName,\n\t\t\t\trr.processed,\n\t\t\t\trr.errors,\n\t\t\t\tlastError,\n\t\t\t);\n\t\t}\n\t};\n\n\tif (route.byo) {\n\t\t// BYO: no cross-DB transaction possible. Phase A commits handler writes to\n\t\t// the user DB first (replace-per-height makes a replay idempotent); phase\n\t\t// B then records outbox + progress on the managed DB. If phase A throws,\n\t\t// progress never advances and the block replays — safe by construction.\n\t\t// atomicProgress: the checkpoint lands in phase B (post-commit), so it\n\t\t// can lag phase A but never lead it; the replay window that leaves is\n\t\t// covered by replace-per-height + the deploy-time handler restrictions.\n\t\t// Op-cursor mode is ADVISORY here for the same reason: phase-A user-DB\n\t\t// writes can never roll back on a lost race, so the guards\n\t\t// (BYO_NON_IDEMPOTENT_HANDLER) are the load-bearing protection.\n\t\tif (statusMode(opts)) {\n\t\t\tconst row = await targetDb\n\t\t\t\t.selectFrom(\"subgraphs\")\n\t\t\t\t.select(\"last_processed_block\")\n\t\t\t\t.where(\"name\", \"=\", subgraphName)\n\t\t\t\t.executeTakeFirst();\n\t\t\tif (row && Number(row.last_processed_block) >= blockHeight) {\n\t\t\t\tresult.skipped = true;\n\t\t\t\treturn result;\n\t\t\t}\n\t\t} else if (opCursorMode(opts)) {\n\t\t\tconst om = opCursorMode(opts) as { operationId: string };\n\t\t\tconst row = await targetDb\n\t\t\t\t.selectFrom(\"subgraph_operations\")\n\t\t\t\t.select(\"cursor_block\")\n\t\t\t\t.where(\"id\", \"=\", om.operationId)\n\t\t\t\t.executeTakeFirst();\n\t\t\tif (\n\t\t\t\trow?.cursor_block != null &&\n\t\t\t\tNumber(row.cursor_block) >= blockHeight\n\t\t\t) {\n\t\t\t\tresult.skipped = true;\n\t\t\t\treturn result;\n\t\t\t}\n\t\t}\n\t\tlet runResult = { processed: 0, errors: 0 };\n\t\tlet manifest: Awaited<ReturnType<SubgraphContext[\"flush\"]>> | undefined;\n\t\tawait route.dataDb\n\t\t\t.transaction()\n\t\t\t.execute(async (tx: Transaction<Database>) => {\n\t\t\t\tconst ctx = new SubgraphContext(\n\t\t\t\t\ttx,\n\t\t\t\t\tschemaName,\n\t\t\t\t\tsubgraph.schema,\n\t\t\t\t\tblockMeta,\n\t\t\t\t\tinitialTx,\n\t\t\t\t\ttrue,\n\t\t\t\t\tjournalEnabled(opts),\n\t\t\t\t);\n\t\t\t\tconst handlerStart = performance.now();\n\t\t\t\trunResult = await runHandlers(subgraph, matched, ctx);\n\t\t\t\thandlerMs = performance.now() - handlerStart;\n\t\t\t\tif (ctx.pendingOps > 0) {\n\t\t\t\t\tconst flushStart = performance.now();\n\t\t\t\t\tmanifest = await ctx.flush();\n\t\t\t\t\tflushMs = performance.now() - flushStart;\n\t\t\t\t}\n\t\t\t});\n\t\tresult.processed = runResult.processed;\n\t\tresult.errors = runResult.errors;\n\n\t\t// Persist factory discoveries only after the block's writes commit, so\n\t\t// a failed block doesn't leave addresses claimed for a block that\n\t\t// produced nothing. Stamped with this height, so the reorg handler\n\t\t// rolls them back with everything else.\n\t\tawait persistFactoryDiscoveries(\n\t\t\tschemaName,\n\t\t\troute.dataDb,\n\t\t\tblockHeight,\n\t\t\tdiscovered,\n\t\t);\n\n\t\t// Phase B (managed) — only reached after phase A commits.\n\t\tawait targetDb.transaction().execute(async (tx: Transaction<Database>) => {\n\t\t\tif (manifest && manifest.count > 0) {\n\t\t\t\tawait emitSubscriptionOutbox(\n\t\t\t\t\ttx,\n\t\t\t\t\tsubgraphName,\n\t\t\t\t\tmanifest,\n\t\t\t\t\tmatcher,\n\t\t\t\t\tblock.height,\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst byoSm = statusMode(opts);\n\t\t\tconst byoOm = opCursorMode(opts);\n\t\t\tif (byoSm && manifest && manifest.count > 0) {\n\t\t\t\tawait updateSubgraphStatus(tx, subgraphName, byoSm.status, blockHeight);\n\t\t\t} else if (byoOm && manifest && manifest.count > 0) {\n\t\t\t\t// Advisory: phase A already committed; a lost race here just means\n\t\t\t\t// the cursor was covered by another writer — nothing to undo.\n\t\t\t\tawait advanceOperationCursor(tx, byoOm.operationId, blockHeight);\n\t\t\t}\n\t\t\tawait applyProgress(tx, runResult, manifest ? manifest.count > 0 : false);\n\t\t});\n\t} else {\n\t\t// Managed: a single atomic transaction on the target DB.\n\t\ttry {\n\t\t\tawait targetDb\n\t\t\t\t.transaction()\n\t\t\t\t.execute(async (tx: Transaction<Database>) => {\n\t\t\t\t\t// Replay guard (sequential walks only): committed writes always carry\n\t\t\t\t\t// their checkpoint (below), so a block at/below the cursor has already\n\t\t\t\t\t// been applied — running it again would double-apply deltas.\n\t\t\t\t\tconst opMode = opCursorMode(opts);\n\t\t\t\t\tconst sm = statusMode(opts);\n\t\t\t\t\tconst rewind = isReorgRewind(opts);\n\t\t\t\t\tif (sm) {\n\t\t\t\t\t\tconst row = await tx\n\t\t\t\t\t\t\t.selectFrom(\"subgraphs\")\n\t\t\t\t\t\t\t.select(\"last_processed_block\")\n\t\t\t\t\t\t\t.where(\"name\", \"=\", subgraphName)\n\t\t\t\t\t\t\t.executeTakeFirst();\n\t\t\t\t\t\tif (row && Number(row.last_processed_block) >= blockHeight) {\n\t\t\t\t\t\t\tresult.skipped = true;\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (opMode) {\n\t\t\t\t\t\t// Fast path only — the conditional advance below is the guarantee.\n\t\t\t\t\t\tconst row = await tx\n\t\t\t\t\t\t\t.selectFrom(\"subgraph_operations\")\n\t\t\t\t\t\t\t.select(\"cursor_block\")\n\t\t\t\t\t\t\t.where(\"id\", \"=\", opMode.operationId)\n\t\t\t\t\t\t\t.executeTakeFirst();\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\trow?.cursor_block != null &&\n\t\t\t\t\t\t\tNumber(row.cursor_block) >= blockHeight\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tresult.skipped = true;\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (!rewind) {\n\t\t\t\t\t\t// f069: the same fast-path guard, now armed on the live path.\n\t\t\t\t\t\t// Fast path only — the conditional `recordLiveProgress` advance\n\t\t\t\t\t\t// below (via applyProgress) is the actual guarantee; this SELECT,\n\t\t\t\t\t\t// taken before handlers run, cannot see a same-height race that\n\t\t\t\t\t\t// commits between here and there. Never checked when `rewind` is\n\t\t\t\t\t\t// set: a reorg's fork block is, by construction, at or below the\n\t\t\t\t\t\t// current cursor, and must run anyway.\n\t\t\t\t\t\tconst row = await tx\n\t\t\t\t\t\t\t.selectFrom(\"subgraphs\")\n\t\t\t\t\t\t\t.select(\"last_processed_block\")\n\t\t\t\t\t\t\t.where(\"name\", \"=\", subgraphName)\n\t\t\t\t\t\t\t.executeTakeFirst();\n\t\t\t\t\t\tif (row && Number(row.last_processed_block) >= blockHeight) {\n\t\t\t\t\t\t\tresult.skipped = true;\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tconst ctx = new SubgraphContext(\n\t\t\t\t\t\ttx,\n\t\t\t\t\t\tschemaName,\n\t\t\t\t\t\tsubgraph.schema,\n\t\t\t\t\t\tblockMeta,\n\t\t\t\t\t\tinitialTx,\n\t\t\t\t\t\tfalse,\n\t\t\t\t\t\tjournalEnabled(opts),\n\t\t\t\t\t);\n\n\t\t\t\t\t// f071 Stage A: dark, flag-gated dispatch. `sandboxEnabled` requires\n\t\t\t\t\t// BOTH the global env gate AND this subgraph's `sandbox_workers`\n\t\t\t\t\t// column — nothing in committed code sets that column, so this\n\t\t\t\t\t// branch is unreached in production today; `runHandlers` (below)\n\t\t\t\t\t// is what actually executes, byte-identical to before this plan.\n\t\t\t\t\t// When it IS reached: `runHandlersSandboxed` runs handlers in the\n\t\t\t\t\t// sandbox subprocess but replays their decided ops onto THIS same\n\t\t\t\t\t// `ctx`, bound to THIS same open transaction, before returning —\n\t\t\t\t\t// so the flush/manifest/outbox flow and the f069 guard placement\n\t\t\t\t\t// below are unaffected either way (see `host.ts`'s docblock).\n\t\t\t\t\tconst handlerStart = performance.now();\n\t\t\t\t\tconst runResult = sandboxEnabled({\n\t\t\t\t\t\tsandbox_workers: route.sandboxWorkers,\n\t\t\t\t\t})\n\t\t\t\t\t\t? await runHandlersSandboxed({\n\t\t\t\t\t\t\t\tsubgraphName,\n\t\t\t\t\t\t\t\tversion: route.version,\n\t\t\t\t\t\t\t\thandlerCode: route.handlerCode,\n\t\t\t\t\t\t\t\thostCtx: ctx,\n\t\t\t\t\t\t\t\tblock: blockMeta,\n\t\t\t\t\t\t\t\tmatched,\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t: await runHandlers(subgraph, matched, ctx);\n\t\t\t\t\thandlerMs = performance.now() - handlerStart;\n\n\t\t\t\t\tresult.processed = runResult.processed;\n\t\t\t\t\tresult.errors = runResult.errors;\n\n\t\t\t\t\tlet flushedWrites = false;\n\t\t\t\t\tif (ctx.pendingOps > 0) {\n\t\t\t\t\t\tconst flushStart = performance.now();\n\t\t\t\t\t\tconst manifest = await ctx.flush();\n\t\t\t\t\t\tflushedWrites = manifest.count > 0;\n\t\t\t\t\t\tif (manifest.count > 0) {\n\t\t\t\t\t\t\tawait emitSubscriptionOutbox(\n\t\t\t\t\t\t\t\ttx,\n\t\t\t\t\t\t\t\tsubgraphName,\n\t\t\t\t\t\t\t\tmanifest,\n\t\t\t\t\t\t\t\tmatcher,\n\t\t\t\t\t\t\t\tblock.height,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tflushMs = performance.now() - flushStart;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Checkpoint travels with the writes it covers — a crash can never\n\t\t\t\t\t// leave committed deltas ahead of the checkpoint (fix-f040 B3).\n\t\t\t\t\tif (sm && flushedWrites) {\n\t\t\t\t\t\tawait updateSubgraphStatus(\n\t\t\t\t\t\t\ttx,\n\t\t\t\t\t\t\tsubgraphName,\n\t\t\t\t\t\t\tsm.status,\n\t\t\t\t\t\t\tblockHeight,\n\t\t\t\t\t\t);\n\t\t\t\t\t} else if (opMode && flushedWrites) {\n\t\t\t\t\t\tconst advanced = await advanceOperationCursor(\n\t\t\t\t\t\t\ttx,\n\t\t\t\t\t\t\topMode.operationId,\n\t\t\t\t\t\t\tblockHeight,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (!advanced) {\n\t\t\t\t\t\t\t// A racing writer (zombie/claimer) already covered this height —\n\t\t\t\t\t\t\t// abort OUR writes; the winner's commit stands.\n\t\t\t\t\t\t\tthrow new CursorRaceLostError(opMode.operationId, blockHeight);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tawait applyProgress(tx, runResult, flushedWrites);\n\t\t\t\t});\n\t\t} catch (err) {\n\t\t\tif (\n\t\t\t\terr instanceof CursorRaceLostError ||\n\t\t\t\terr instanceof LiveCursorRaceLostError\n\t\t\t) {\n\t\t\t\t// Success-shaped: the block IS committed (by the winner). Surfacing\n\t\t\t\t// this as an error would mint a false gap row and re-invite the\n\t\t\t\t// double-apply through gap repair.\n\t\t\t\tlogger.warn(\"cursor race lost — block already covered\", {\n\t\t\t\t\tsubgraph: subgraphName,\n\t\t\t\t\tblockHeight,\n\t\t\t\t\terror: err.message,\n\t\t\t\t});\n\t\t\t\tresult.skipped = true;\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\tthrow err;\n\t\t}\n\t}\n\n\tconst totalMs = performance.now() - blockStart;\n\t// f069: a skipped block (guard fast-path, or a race-loss success-shaped\n\t// skip) never reaches here as a distinct branch — it falls through from\n\t// the transaction callback's early `return`. `blocks_processed` is now\n\t// load-bearing forensic evidence (f068's own re-derivation of it), so a\n\t// skip must not inflate it: only count blocks that actually ran handlers.\n\tif (!result.skipped) {\n\t\tresult.timing = {\n\t\t\ttotalMs: Math.round(totalMs),\n\t\t\thandlerMs: Math.round(handlerMs),\n\t\t\tflushMs: Math.round(flushMs),\n\t\t};\n\t}\n\n\t// 7. Row count warning — sample every 1000 blocks (uses pg_stat estimate, not COUNT(*))\n\tif (blockHeight % 1000 === 0) {\n\t\ttry {\n\t\t\tconst tables = Object.keys(subgraph.schema);\n\t\t\tfor (const table of tables) {\n\t\t\t\tconst { rows } = await sql\n\t\t\t\t\t.raw(\n\t\t\t\t\t\t`SELECT n_live_tup AS count FROM pg_stat_user_tables WHERE schemaname = '${schemaName}' AND relname = '${table}'`,\n\t\t\t\t\t)\n\t\t\t\t\t.execute(route.dataDb);\n\t\t\t\tconst count = Number((rows[0] as Record<string, unknown>)?.count ?? 0);\n\t\t\t\tif (count >= 10_000_000) {\n\t\t\t\t\tlogger.warn(\"Subgraph table exceeds 10M rows (estimate)\", {\n\t\t\t\t\t\tsubgraph: subgraphName,\n\t\t\t\t\t\ttable,\n\t\t\t\t\t\tcount,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (err) {\n\t\t\t// Expected: table may not exist yet (fresh subgraph, first few\n\t\t\t// blocks before DDL runs). Log at debug so real errors —\n\t\t\t// connection, permissions, query plan — aren't invisible.\n\t\t\tlogger.debug(\"Row count sample failed\", {\n\t\t\t\tsubgraph: subgraphName,\n\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t});\n\t\t}\n\n\t\t// Prune reorg-journal entries past finality (fix-f040 B2). Same cadence\n\t\t// as the row sample; retention is generous vs observed reorg depth.\n\t\tif (journalEnabled(opts)) {\n\t\t\tawait sql\n\t\t\t\t.raw(\n\t\t\t\t\t`DELETE FROM \"${schemaName}\".\"_journal\" WHERE \"block_height\" < ${blockHeight - JOURNAL_RETENTION_BLOCKS}`,\n\t\t\t\t)\n\t\t\t\t.execute(route.dataDb)\n\t\t\t\t.catch(() => {\n\t\t\t\t\t// Journal may not exist yet (pre-journal deploy, no writes since).\n\t\t\t\t});\n\t\t}\n\t}\n\n\treturn result;\n}\n",
|
|
14
14
|
"import { getSourceDb } from \"@secondlayer/shared/db\";\nimport type { Transaction } from \"@secondlayer/shared/db\";\nimport {\n\ttype IndexEventRow,\n\tIndexHttpClient,\n\ttype IndexTransactionRow,\n} from \"@secondlayer/shared/index-http\";\nimport { logger } from \"@secondlayer/shared/logger\";\nimport type { SubgraphDefinition, SubgraphFilter } from \"../types.ts\";\nimport { type BlockData, loadBlockRange } from \"./batch-loader.ts\";\nimport {\n\treconstructBlock,\n\treconstructEvent,\n\treconstructTransaction,\n\treconstructTxFromEventRow,\n} from \"./reconstruct.ts\";\n\n/**\n * Where the subgraph runtime reads canonical chain data. Today it taps the\n * indexer Postgres directly (`PostgresBlockSource`); the re-point adds a\n * `PublicApiBlockSource` that consumes the Streams clock + Index data over\n * HTTP. `matchSources` / handlers / flush / outbox are unchanged — only the\n * loader + tip swap behind this seam.\n */\nexport interface BlockSource {\n\t/** Highest canonical block height available to process. */\n\tgetTip(): Promise<number>;\n\t/** Canonical block data for [fromHeight, toHeight], keyed by height. */\n\tloadBlockRange(\n\t\tfromHeight: number,\n\t\ttoHeight: number,\n\t): Promise<Map<number, BlockData>>;\n\t/** Sparse-scan probe: lowest height in (afterHeight, untilHeight] holding\n\t * an event this source's subgraph could match, or null when the rest of\n\t * the range is empty. Optional — only event-scoped sources support it. */\n\tnextDataHeight?(\n\t\tafterHeight: number,\n\t\tuntilHeight: number,\n\t): Promise<number | null>;\n}\n\n/** A (decoded event type, optional contract scope) pair the sparse probe\n * checks. Contract scoping is what makes token-subgraph reindexes leap over\n * everything that isn't their token. */\nexport type SparseProbeTarget = { eventType: string; contractId?: string };\n\n/** Sparse scanning is sound only when EVERY source is an event-type filter —\n * a contract_call/contract_deploy source matches transactions, which the\n * event probe can't see. */\nexport function canSparseScan(subgraph: SubgraphDefinition): boolean {\n\tif (Array.isArray(subgraph.sources)) return false;\n\tconst filters = sourceFilters(subgraph);\n\tif (filters.length === 0) return false;\n\treturn filters.every((f) => Boolean(EVENT_FILTER_TO_INDEX_TYPE[f.type]));\n}\n\n/** Probe targets for a subgraph's filters: decoded type + contract scope when\n * the filter pins one (assetIdentifier \"SP….contract::asset\" or contractId). */\nexport function sparseProbeTargets(\n\tsubgraph: SubgraphDefinition,\n): SparseProbeTarget[] {\n\tconst targets = new Map<string, SparseProbeTarget>();\n\tfor (const f of sourceFilters(subgraph)) {\n\t\tconst eventType = EVENT_FILTER_TO_INDEX_TYPE[f.type];\n\t\tif (!eventType) continue;\n\t\tconst scoped = f as { assetIdentifier?: string; contractId?: string };\n\t\tconst contractId =\n\t\t\tscoped.contractId ?? scoped.assetIdentifier?.split(\"::\")[0];\n\t\tconst key = `${eventType}|${contractId ?? \"\"}`;\n\t\ttargets.set(key, { eventType, ...(contractId ? { contractId } : {}) });\n\t}\n\treturn [...targets.values()];\n}\n\n/** Reads directly from the shared indexer Postgres (the original behavior). */\nexport class PostgresBlockSource implements BlockSource {\n\tasync getTip(): Promise<number> {\n\t\tconst progress = await getSourceDb()\n\t\t\t.selectFrom(\"index_progress\")\n\t\t\t.selectAll()\n\t\t\t.where(\"network\", \"=\", process.env.NETWORK ?? \"mainnet\")\n\t\t\t.executeTakeFirst();\n\t\treturn progress ? Number(progress.highest_seen_block) : 0;\n\t}\n\n\tloadBlockRange(\n\t\tfromHeight: number,\n\t\ttoHeight: number,\n\t): Promise<Map<number, BlockData>> {\n\t\treturn loadBlockRange(getSourceDb(), fromHeight, toHeight);\n\t}\n}\n\n// Subgraph source filter types that map to a decoded Index event_type. The\n// `_event` suffix is the runtime's raw form; print is keyed `print_event`.\nconst EVENT_FILTER_TO_INDEX_TYPE: Record<string, string> = {\n\tstx_transfer: \"stx_transfer\",\n\tstx_mint: \"stx_mint\",\n\tstx_burn: \"stx_burn\",\n\tstx_lock: \"stx_lock\",\n\tft_transfer: \"ft_transfer\",\n\tft_mint: \"ft_mint\",\n\tft_burn: \"ft_burn\",\n\tnft_transfer: \"nft_transfer\",\n\tnft_mint: \"nft_mint\",\n\tnft_burn: \"nft_burn\",\n\tprint_event: \"print\",\n};\n\n// Tx-level source types — matched against /v1/index/transactions, not events.\nconst TX_SOURCE_TYPES = new Set([\"contract_call\", \"contract_deploy\"]);\nconst ALL_INDEX_EVENT_TYPES = [\n\t...new Set(Object.values(EVENT_FILTER_TO_INDEX_TYPE)),\n];\n\nfunction sourceFilters(subgraph: SubgraphDefinition): SubgraphFilter[] {\n\tconst sources = subgraph.sources;\n\treturn Array.isArray(sources)\n\t\t? (sources as SubgraphFilter[])\n\t\t: Object.values(sources as Record<string, SubgraphFilter>);\n}\n\n/**\n * True when any source matches transactions (contract_call / contract_deploy):\n * the handler receives the full tx, so the loader must fetch real transactions.\n * Event-only subgraphs skip walkTransactions and synthesize the tx from joined\n * event context instead (the ~37x reindex over-fetch; see indexing-speed plan).\n */\nexport function needsTransactionData(subgraph: SubgraphDefinition): boolean {\n\treturn sourceFilters(subgraph).some((f) => TX_SOURCE_TYPES.has(f.type));\n}\n\n/** Build the (few) event-bearing txs from joined event context, one per tx_id —\n * the event-only replacement for draining every transaction in the range. */\nfunction synthesizeTxsFromEvents(events: IndexEventRow[]): Transaction[] {\n\tconst byId = new Map<string, Transaction>();\n\tfor (const e of events) {\n\t\tif (!byId.has(e.tx_id)) byId.set(e.tx_id, reconstructTxFromEventRow(e));\n\t}\n\treturn [...byId.values()];\n}\n\n/**\n * The Index event_types the loader must fetch for a set of source filter types.\n * A contract_call/contract_deploy source matches a tx and hands its FULL event\n * set to the handler, so when one is present we fetch every event type (the\n * matched tx's events must be complete); otherwise just the referenced types.\n * Shared by the subgraph loader and the chain-trigger evaluator.\n */\nexport function indexEventTypesForFilterTypes(filterTypes: string[]): string[] {\n\tif (filterTypes.some((t) => TX_SOURCE_TYPES.has(t))) {\n\t\treturn ALL_INDEX_EVENT_TYPES;\n\t}\n\tconst types = new Set<string>();\n\tfor (const t of filterTypes) {\n\t\tconst indexType = EVENT_FILTER_TO_INDEX_TYPE[t];\n\t\tif (indexType) types.add(indexType);\n\t}\n\treturn [...types];\n}\n\nfunction referencedIndexEventTypes(subgraph: SubgraphDefinition): string[] {\n\treturn indexEventTypesForFilterTypes(\n\t\tsourceFilters(subgraph).map((f) => f.type),\n\t);\n}\n\n/**\n * streams-index eligibility: every source must be a known event-type or\n * contract_call/contract_deploy filter (no array-style sources, which leak the\n * unreconstructable `_eventId`). Trait scope IS allowed — trait resolution\n * reads the contract registry on the platform DB (`targetDb`), which the\n * processor always holds, so it's source-independent. Everything else stays on\n * the DB tap.\n */\nexport function isStreamsIndexEligible(subgraph: SubgraphDefinition): boolean {\n\tif (Array.isArray(subgraph.sources)) return false;\n\tconst filters = sourceFilters(subgraph);\n\tif (filters.length === 0) return false;\n\tfor (const f of filters) {\n\t\tconst known =\n\t\t\tEVENT_FILTER_TO_INDEX_TYPE[f.type] || TX_SOURCE_TYPES.has(f.type);\n\t\tif (!known) return false;\n\t}\n\treturn true;\n}\n\n/** Streams clock + Index data plane, reconstructed into raw BlockData rows. */\nexport class PublicApiBlockSource implements BlockSource {\n\tconstructor(\n\t\tprivate readonly http: IndexHttpClient,\n\t\tprivate readonly eventTypes: string[],\n\t\t/** When set, enables the sparse-scan probe (event-scoped subgraphs). */\n\t\tprivate readonly probeTargets?: SparseProbeTarget[],\n\t\t/** False for event-only subgraphs → skip walkTransactions, synthesize the\n\t\t * tx from joined event context. Defaults true (safe / unchanged). */\n\t\tprivate readonly needsTransactions = true,\n\t) {}\n\n\t/** Lowest height in (after, until] any probe target hits, or null. */\n\tasync nextDataHeight(\n\t\tafterHeight: number,\n\t\tuntilHeight: number,\n\t): Promise<number | null> {\n\t\tif (!this.probeTargets?.length) return afterHeight + 1;\n\t\tconst hits = await Promise.all(\n\t\t\tthis.probeTargets.map((t) =>\n\t\t\t\tthis.http.firstEventHeight(\n\t\t\t\t\tt.eventType,\n\t\t\t\t\tafterHeight + 1,\n\t\t\t\t\tuntilHeight,\n\t\t\t\t\tt.contractId,\n\t\t\t\t),\n\t\t\t),\n\t\t);\n\t\tconst found = hits.filter((h): h is number => h !== null);\n\t\treturn found.length ? Math.min(...found) : null;\n\t}\n\n\tgetTip(): Promise<number> {\n\t\t// Bound advancement to what the Index data plane can serve — never\n\t\t// process past it even if the Streams clock is ahead.\n\t\treturn this.http.getIndexTip();\n\t}\n\n\tasync loadBlockRange(\n\t\tfromHeight: number,\n\t\ttoHeight: number,\n\t): Promise<Map<number, BlockData>> {\n\t\t// Event-only subgraphs join tx context onto events (withTx) and skip the\n\t\t// walkTransactions over-fetch entirely; tx-level sources fetch real txs.\n\t\tconst withTx = !this.needsTransactions;\n\t\tconst [blocks, txRows, eventLists] = await Promise.all([\n\t\t\tthis.http.walkBlocks(fromHeight, toHeight),\n\t\t\tthis.needsTransactions\n\t\t\t\t? this.http.walkTransactions(fromHeight, toHeight)\n\t\t\t\t: Promise.resolve<IndexTransactionRow[]>([]),\n\t\t\tPromise.all(\n\t\t\t\tthis.eventTypes.map((t) =>\n\t\t\t\t\tthis.http.walkEvents(t, fromHeight, toHeight, withTx),\n\t\t\t\t),\n\t\t\t),\n\t\t]);\n\n\t\tconst map = new Map<number, BlockData>();\n\t\t// Seed every canonical height (incl. empty blocks) so catch-up doesn't\n\t\t// file them as gaps.\n\t\tfor (const b of blocks) {\n\t\t\tmap.set(b.block_height, {\n\t\t\t\tblock: reconstructBlock(b),\n\t\t\t\ttxs: [],\n\t\t\t\tevents: [],\n\t\t\t});\n\t\t}\n\t\t// For event-only subgraphs, materialize only the event-bearing txs from\n\t\t// joined event context instead of every transaction in the range.\n\t\tconst txs = this.needsTransactions\n\t\t\t? txRows.map(reconstructTransaction)\n\t\t\t: synthesizeTxsFromEvents(eventLists.flat());\n\t\tfor (const t of txs) {\n\t\t\tmap.get(t.block_height)?.txs.push(t);\n\t\t}\n\t\tfor (const list of eventLists) {\n\t\t\tfor (const e of list) {\n\t\t\t\tmap.get(e.block_height)?.events.push(reconstructEvent(e));\n\t\t\t}\n\t\t}\n\t\t// Canonical ordering — multi-type event walks merge here.\n\t\tfor (const bd of map.values()) {\n\t\t\tbd.txs.sort((a, b) => a.tx_index - b.tx_index);\n\t\t\tbd.events.sort((a, b) => a.event_index - b.event_index);\n\t\t}\n\t\treturn map;\n\t}\n}\n\n/**\n * Wraps a primary source and falls back to a secondary, per call, when the\n * primary throws. Use it to make the HTTP (Streams+Index) plane a SOFT dependency:\n * if api is unavailable, the processor reads the Postgres tap and keeps advancing\n * instead of stalling. Safe to mix mid-stream — both taps read the same canonical\n * chain at the same heights and the cursor is forward-only. Stateless (no breaker)\n * so it's failover-safe across replicas; the primary is retried every call and\n * resumes transparently once healthy.\n */\nexport class FallbackBlockSource implements BlockSource {\n\tconstructor(\n\t\tprivate readonly primary: BlockSource,\n\t\tprivate readonly fallback: BlockSource,\n\t) {}\n\n\tasync getTip(): Promise<number> {\n\t\ttry {\n\t\t\treturn await this.primary.getTip();\n\t\t} catch (err) {\n\t\t\tlogger.warn(\"block source primary getTip failed — using DB tap\", {\n\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t});\n\t\t\treturn this.fallback.getTip();\n\t\t}\n\t}\n\n\tasync loadBlockRange(\n\t\tfromHeight: number,\n\t\ttoHeight: number,\n\t): Promise<Map<number, BlockData>> {\n\t\ttry {\n\t\t\treturn await this.primary.loadBlockRange(fromHeight, toHeight);\n\t\t} catch (err) {\n\t\t\tlogger.warn(\"block source primary loadBlockRange failed — using DB tap\", {\n\t\t\t\tfrom: fromHeight,\n\t\t\t\tto: toHeight,\n\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t});\n\t\t\treturn this.fallback.loadBlockRange(fromHeight, toHeight);\n\t\t}\n\t}\n\n\t/** Probe via the primary only; a probe failure just means \"no skip\" —\n\t * the caller falls back to plain batch advancement. */\n\tasync nextDataHeight(\n\t\tafterHeight: number,\n\t\tuntilHeight: number,\n\t): Promise<number | null> {\n\t\tif (!this.primary.nextDataHeight) return afterHeight + 1;\n\t\ttry {\n\t\t\treturn await this.primary.nextDataHeight(afterHeight, untilHeight);\n\t\t} catch {\n\t\t\treturn afterHeight + 1;\n\t\t}\n\t}\n}\n\nconst postgresBlockSource = new PostgresBlockSource();\n\n/**\n * HTTP (Streams+Index) chain source for a set of decoded event types, wrapped so\n * it falls back to the Postgres tap when api is down. Used by the chain-trigger\n * evaluator (which isn't subgraph-scoped, so it can't go through resolveBlockSource).\n */\nexport function buildChainBlockSource(eventTypes: string[]): BlockSource {\n\treturn new FallbackBlockSource(\n\t\tnew PublicApiBlockSource(buildHttpClient(), eventTypes),\n\t\tpostgresBlockSource,\n\t);\n}\n\nexport function buildHttpClient(): IndexHttpClient {\n\tconst baseUrl =\n\t\tprocess.env.SUBGRAPH_INDEX_API_URL ??\n\t\tprocess.env.STREAMS_API_URL ??\n\t\t\"http://api:3800\";\n\treturn new IndexHttpClient({\n\t\tindexBaseUrl: baseUrl,\n\t\tstreamsBaseUrl: baseUrl,\n\t\tstreamsApiKey:\n\t\t\tprocess.env.STREAMS_INTERNAL_API_KEY ?? \"sk-sl_streams_decode_internal\",\n\t});\n}\n\n/**\n * Resolve the block source for a subgraph. `SUBGRAPH_SOURCE=streams-index`\n * opts eligible subgraphs onto the public Streams clock + Index data; everything\n * else (and the default) stays on the Postgres tap.\n */\nexport function resolveBlockSource(subgraph?: SubgraphDefinition): BlockSource {\n\tif (\n\t\tprocess.env.SUBGRAPH_SOURCE === \"streams-index\" &&\n\t\tsubgraph &&\n\t\tisStreamsIndexEligible(subgraph)\n\t) {\n\t\t// Soft-depend on api: fall back to the Postgres tap per-call if the HTTP\n\t\t// plane is down, so the processor keeps advancing instead of stalling.\n\t\treturn new FallbackBlockSource(\n\t\t\tnew PublicApiBlockSource(\n\t\t\t\tbuildHttpClient(),\n\t\t\t\treferencedIndexEventTypes(subgraph),\n\t\t\t\tcanSparseScan(subgraph) ? sparseProbeTargets(subgraph) : undefined,\n\t\t\t\tneedsTransactionData(subgraph),\n\t\t\t),\n\t\t\tpostgresBlockSource,\n\t\t);\n\t}\n\tif (process.env.SUBGRAPH_SOURCE === \"streams-index\" && subgraph) {\n\t\tlogger.debug(\"Subgraph not streams-index eligible, using DB tap\", {\n\t\t\tsubgraph: subgraph.name,\n\t\t});\n\t}\n\treturn postgresBlockSource;\n}\n",
|
|
15
15
|
"import type {\n\tBlock,\n\tDatabase,\n\tEvent,\n\tTransaction,\n} from \"@secondlayer/shared/db\";\nimport type { Kysely } from \"kysely\";\n\nexport interface BlockData {\n\tblock: Block;\n\ttxs: Transaction[];\n\tevents: Event[];\n}\n\n/**\n * Load a range of blocks with their transactions and events in 3 parallel queries.\n * Returns a Map keyed by block height. Non-canonical blocks are excluded.\n */\nexport async function loadBlockRange(\n\tdb: Kysely<Database>,\n\tfromHeight: number,\n\ttoHeight: number,\n): Promise<Map<number, BlockData>> {\n\tconst [blocks, txs, events] = await Promise.all([\n\t\tdb\n\t\t\t.selectFrom(\"blocks\")\n\t\t\t.selectAll()\n\t\t\t.where(\"height\", \">=\", fromHeight)\n\t\t\t.where(\"height\", \"<=\", toHeight)\n\t\t\t.where(\"canonical\", \"=\", true)\n\t\t\t.execute(),\n\t\tdb\n\t\t\t.selectFrom(\"transactions\")\n\t\t\t.selectAll()\n\t\t\t.where(\"block_height\", \">=\", fromHeight)\n\t\t\t.where(\"block_height\", \"<=\", toHeight)\n\t\t\t.execute(),\n\t\tdb\n\t\t\t.selectFrom(\"events\")\n\t\t\t.selectAll()\n\t\t\t.where(\"block_height\", \">=\", fromHeight)\n\t\t\t.where(\"block_height\", \"<=\", toHeight)\n\t\t\t.execute(),\n\t]);\n\n\t// Index by block height (coerce to number — bigint columns may return as string or number)\n\tconst txsByHeight = new Map<number, Transaction[]>();\n\tfor (const tx of txs) {\n\t\tconst h = Number(tx.block_height);\n\t\tconst list = txsByHeight.get(h) ?? [];\n\t\tlist.push(tx);\n\t\ttxsByHeight.set(h, list);\n\t}\n\n\tconst eventsByHeight = new Map<number, Event[]>();\n\tfor (const evt of events) {\n\t\tconst h = Number(evt.block_height);\n\t\tconst list = eventsByHeight.get(h) ?? [];\n\t\tlist.push(evt);\n\t\teventsByHeight.set(h, list);\n\t}\n\n\tconst result = new Map<number, BlockData>();\n\tfor (const block of blocks) {\n\t\tconst h = Number(block.height);\n\t\tresult.set(h, {\n\t\t\tblock,\n\t\t\ttxs: txsByHeight.get(h) ?? [],\n\t\t\tevents: eventsByHeight.get(h) ?? [],\n\t\t});\n\t}\n\n\treturn result;\n}\n\n/**\n * Compute average events per block from a loaded batch.\n * Used for adaptive batch sizing.\n */\nexport function avgEventsPerBlock(batch: Map<number, BlockData>): number {\n\tif (batch.size === 0) return 0;\n\tlet totalEvents = 0;\n\tfor (const data of batch.values()) {\n\t\ttotalEvents += data.events.length;\n\t}\n\treturn totalEvents / batch.size;\n}\n",
|
|
16
16
|
"import type { Block, Event, Transaction } from \"@secondlayer/shared/db\";\nimport type {\n\tIndexBlockRow,\n\tIndexEventRow,\n\tIndexTransactionRow,\n} from \"@secondlayer/shared/index-http\";\n\nexport type {\n\tIndexBlockRow,\n\tIndexEventRow,\n\tIndexTransactionRow,\n} from \"@secondlayer/shared/index-http\";\n\n/**\n * Reconstruct the raw `blocks`/`events` row shapes the subgraph runtime expects\n * (the shapes `matchSources` + the handler runner read) from the decoded,\n * flattened rows the public Index API serves. This is what lets\n * `PublicApiBlockSource` feed the EXISTING pipeline byte-identically to the\n * Postgres tap.\n *\n * Two shape gaps the Index API can't avoid, handled here:\n * - Index event rows are flat (`event_type: \"ft_transfer\"`, columns\n * `sender`/`amount`/…); the runtime expects the node's nested `data` keyed by\n * a suffixed `type` (`ft_transfer_event`), with print under `contract_event`.\n * - nft/print Clarity values: the runtime decodes from the canonical hex\n * (`raw_value`), so we place the Index hex there. (The node's verbose\n * serde-tagged `value`, e.g. `{UInt:223}`, is not reproducible from hex and\n * is no longer read — see the nft tokenId normalization in runner.ts.)\n */\n\n/** ISO `block_time` (or null) → unix-seconds integer the runtime expects. */\nfunction isoToUnixSeconds(iso: string | null): number {\n\tif (!iso) return 0;\n\treturn Math.floor(new Date(iso).getTime() / 1000);\n}\n\nexport function reconstructBlock(b: IndexBlockRow): Block {\n\treturn {\n\t\theight: b.block_height,\n\t\thash: b.block_hash,\n\t\tparent_hash: b.parent_hash,\n\t\tburn_block_height: b.burn_block_height,\n\t\tburn_block_hash: b.burn_block_hash,\n\t\t// Present since the blocks endpoint started serving it; older API\n\t\t// deployments omit it, and a null propagates to a clean refusal in\n\t\t// `ctx.client.readOnly` rather than an unpinned tip read.\n\t\tindex_block_hash: b.index_block_hash ?? null,\n\t\ttimestamp: isoToUnixSeconds(b.block_time),\n\t\t// Index serves canonical rows only.\n\t\tcanonical: true,\n\t\tcreated_at: new Date(0),\n\t} as Block;\n}\n\nexport function reconstructTransaction(t: IndexTransactionRow): Transaction {\n\treturn {\n\t\ttx_id: t.tx_id,\n\t\tblock_height: t.block_height,\n\t\ttx_index: t.tx_index,\n\t\ttype: t.tx_type,\n\t\tsender: t.sender,\n\t\tstatus: t.status,\n\t\tcontract_id:\n\t\t\tt.contract_call?.contract_id ?? t.smart_contract?.contract_id ?? null,\n\t\tfunction_name: t.contract_call?.function_name ?? null,\n\t\t// Raw hex ClarityValues — the runner decodes them via its own deserializeCV\n\t\t// path, identical to the DB tap.\n\t\tfunction_args: t.contract_call?.function_args_hex ?? [],\n\t\traw_result: t.contract_call?.result_hex ?? null,\n\t\traw_tx: \"\",\n\t\tcreated_at: new Date(0),\n\t} as Transaction;\n}\n\n/**\n * Build a minimal canonical Transaction from an event row's joined tx context\n * (`tx_context=true` on /v1/index/events). For event-only subgraphs this lets\n * the loader materialize only the txs that actually carry a matched event,\n * instead of draining every transaction in the range (the ~37x reindex\n * over-fetch — see docs/sprints/indexing-speed/plan.md). `function_args` /\n * `raw_result` are empty: an event source never reads them (contract_call-only).\n */\nexport function reconstructTxFromEventRow(e: IndexEventRow): Transaction {\n\treturn {\n\t\ttx_id: e.tx_id,\n\t\tblock_height: e.block_height,\n\t\ttx_index: e.tx_index ?? 0,\n\t\ttype: e.tx_type ?? \"\",\n\t\tsender: e.tx_sender ?? \"\",\n\t\tstatus: e.tx_status ?? \"success\",\n\t\tcontract_id: e.tx_contract_id ?? null,\n\t\tfunction_name: e.tx_function_name ?? null,\n\t\tfunction_args: [],\n\t\traw_result: null,\n\t\traw_tx: \"\",\n\t\tcreated_at: new Date(0),\n\t} as Transaction;\n}\n\nexport function reconstructEvent(e: IndexEventRow): Event {\n\tconst base = {\n\t\t// Synthetic, deterministic id. The runtime only reads `id` for error logs\n\t\t// and the `*`-wildcard payload (which is streams-index-ineligible).\n\t\tid: `${e.tx_id}#${e.event_index}`,\n\t\ttx_id: e.tx_id,\n\t\tblock_height: e.block_height,\n\t\tevent_index: e.event_index,\n\t\tcreated_at: new Date(0),\n\t};\n\n\tswitch (e.event_type) {\n\t\tcase \"ft_transfer\":\n\t\tcase \"ft_mint\":\n\t\tcase \"ft_burn\":\n\t\t\treturn {\n\t\t\t\t...base,\n\t\t\t\ttype: `${e.event_type}_event`,\n\t\t\t\tdata: {\n\t\t\t\t\tasset_identifier: e.asset_identifier,\n\t\t\t\t\tsender: e.sender,\n\t\t\t\t\trecipient: e.recipient,\n\t\t\t\t\tamount: e.amount,\n\t\t\t\t},\n\t\t\t} as Event;\n\n\t\tcase \"nft_transfer\":\n\t\tcase \"nft_mint\":\n\t\tcase \"nft_burn\":\n\t\t\treturn {\n\t\t\t\t...base,\n\t\t\t\ttype: `${e.event_type}_event`,\n\t\t\t\tdata: {\n\t\t\t\t\tasset_identifier: e.asset_identifier,\n\t\t\t\t\tsender: e.sender,\n\t\t\t\t\trecipient: e.recipient,\n\t\t\t\t\t// Canonical hex → runner decodes tokenId from raw_value.\n\t\t\t\t\traw_value: e.value,\n\t\t\t\t},\n\t\t\t} as Event;\n\n\t\tcase \"stx_transfer\":\n\t\tcase \"stx_mint\":\n\t\tcase \"stx_burn\":\n\t\t\treturn {\n\t\t\t\t...base,\n\t\t\t\ttype: `${e.event_type}_event`,\n\t\t\t\tdata: {\n\t\t\t\t\tsender: e.sender,\n\t\t\t\t\trecipient: e.recipient,\n\t\t\t\t\tamount: e.amount,\n\t\t\t\t\t// Raw stx_transfer always carries memo (\"\" when empty); Index\n\t\t\t\t\t// returns null for empty — default to \"\" to match the DB tap.\n\t\t\t\t\t...(e.event_type === \"stx_transfer\" ? { memo: e.memo ?? \"\" } : {}),\n\t\t\t\t},\n\t\t\t} as Event;\n\n\t\tcase \"stx_lock\":\n\t\t\treturn {\n\t\t\t\t...base,\n\t\t\t\ttype: \"stx_lock_event\",\n\t\t\t\tdata: {\n\t\t\t\t\tlocked_address: e.sender,\n\t\t\t\t\tlocked_amount: e.amount,\n\t\t\t\t\tunlock_height: e.payload.unlock_height,\n\t\t\t\t},\n\t\t\t} as Event;\n\n\t\tcase \"print\":\n\t\t\treturn {\n\t\t\t\t...base,\n\t\t\t\ttype: \"contract_event\",\n\t\t\t\tdata: {\n\t\t\t\t\ttopic: e.payload.topic,\n\t\t\t\t\t// Matcher + runner read `contract_identifier` (the raw node field).\n\t\t\t\t\tcontract_identifier: e.contract_id,\n\t\t\t\t\tvalue: e.payload.value,\n\t\t\t\t\traw_value: e.payload.raw_value,\n\t\t\t\t},\n\t\t\t} as Event;\n\t}\n}\n",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"import { randomUUID } from \"node:crypto\";\nimport { hostname } from \"node:os\";\nimport { resolve } from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport { getErrorMessage } from \"@secondlayer/shared\";\nimport { getTargetDb } from \"@secondlayer/shared/db\";\nimport type { Subgraph, SubgraphOperation } from \"@secondlayer/shared/db\";\nimport {\n\tcancelSubgraphOperation,\n\tclaimSubgraphOperation,\n\tcompleteSubgraphOperation,\n\tcreateSubgraphOperation,\n\tfailSubgraphOperation,\n\tfindActiveSubgraphOperation,\n\tgetSubgraphOperation,\n\theartbeatSubgraphOperation,\n\tisActiveSubgraphOperationConflict,\n} from \"@secondlayer/shared/db/queries/subgraph-operations\";\nimport {\n\tisByoSubgraph,\n\tlistSubgraphs,\n\tpgSchemaName,\n\tupdateSubgraphStatus,\n} from \"@secondlayer/shared/db/queries/subgraphs\";\nimport { logger } from \"@secondlayer/shared/logger\";\nimport {\n\tlisten,\n\tsourceListenerUrl,\n\ttargetListenerUrl,\n} from \"@secondlayer/shared/queue/listener\";\nimport type { SubgraphDefinition } from \"../types.ts\";\nimport { invalidateSubgraphRoute } from \"./block-processor.ts\";\nimport { isCatchUpLeader, startCatchUpLeader } from \"./catchup-leader.ts\";\nimport { catchUpSubgraph } from \"./catchup.ts\";\nimport { backfillSubgraph, reindexSubgraph, resumeReindex } from \"./reindex.ts\";\nimport { handleSubgraphReorg } from \"./reorg.ts\";\nimport { startStreamsReorgPoll } from \"./streams-reorg-poll.ts\";\n\nconst CHANNEL_NEW_BLOCK = \"indexer:new_block\";\nconst CHANNEL_SUBGRAPH_OPERATIONS = \"subgraph_operations:new\";\nconst DEFAULT_CONCURRENCY = 5;\nconst DEFAULT_OPERATION_CONCURRENCY = 1;\nconst POLL_INTERVAL_MS = 5_000;\nconst HEARTBEAT_INTERVAL_MS = 15_000;\nconst CANCEL_POLL_INTERVAL_MS = 1_000;\n\n/**\n * Fan-out catch-up across multiple subgraphs with a bounded concurrency pool.\n * Each subgraph's catchUpSubgraph() call is independent — different target\n * schemas, read-only source access. The catchingUp set in catchup.ts guards\n * per-subgraph re-entrancy so concurrent calls for the same name are safe.\n */\nasync function catchUpAll(\n\tsubgraphs: Subgraph[],\n\tdb: ReturnType<typeof getTargetDb>,\n\tconcurrency: number,\n): Promise<void> {\n\tconst queue = [...subgraphs];\n\tconst workers = Array.from(\n\t\t{ length: Math.min(concurrency, queue.length) },\n\t\tasync () => {\n\t\t\twhile (queue.length > 0) {\n\t\t\t\tconst sg = queue.shift();\n\t\t\t\tif (!sg) break;\n\t\t\t\ttry {\n\t\t\t\t\tconst def = await loadSubgraphDefinition(sg);\n\t\t\t\t\tawait catchUpSubgraph(def, sg.name);\n\t\t\t\t} catch (err) {\n\t\t\t\t\tconst msg = getErrorMessage(err);\n\t\t\t\t\tif (isHandlerNotFoundError(err)) {\n\t\t\t\t\t\tawait updateSubgraphStatus(db, sg.name, \"error\");\n\t\t\t\t\t}\n\t\t\t\t\tlogger.error(\"Subgraph catch-up failed\", {\n\t\t\t\t\t\tsubgraph: sg.name,\n\t\t\t\t\t\terror: msg,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t);\n\tawait Promise.allSettled(workers);\n}\n\nfunction handlerImportUrl(handlerPath: string, cacheBust = Date.now()) {\n\treturn `${pathToFileURL(resolve(handlerPath)).href}?t=${cacheBust}`;\n}\n\nfunction isHandlerNotFoundError(err: unknown): boolean {\n\tif (!(err instanceof Error)) return false;\n\tconst code = (err as NodeJS.ErrnoException).code;\n\tif (\n\t\tcode === \"MODULE_NOT_FOUND\" ||\n\t\tcode === \"ERR_MODULE_NOT_FOUND\" ||\n\t\tcode === \"ENOENT\"\n\t)\n\t\treturn true;\n\t// fallback: Bun may not always set code on dynamic import failures\n\treturn (\n\t\terr.message.includes(\"Cannot find module\") || err.message.includes(\"ENOENT\")\n\t);\n}\n\n// Caches for hot-reload detection — only re-import when version changes\nconst knownVersions = new Map<string, string>();\nconst definitionCache = new Map<string, SubgraphDefinition>();\n\n/**\n * Load a SubgraphDefinition, reusing the cache unless the version changed.\n * On version change, writes latest handler_code from DB to disk and\n * cache-busts the dynamic import.\n */\nasync function loadSubgraphDefinition(\n\tsg: Subgraph,\n): Promise<SubgraphDefinition> {\n\tconst cached = definitionCache.get(sg.name);\n\tif (cached && knownVersions.get(sg.name) === sg.version) {\n\t\treturn cached;\n\t}\n\n\t// Write latest handler code from DB to disk before importing\n\tif (sg.handler_code) {\n\t\tconst { mkdirSync, writeFileSync } = await import(\"node:fs\");\n\t\tconst { dirname } = await import(\"node:path\");\n\t\tmkdirSync(dirname(sg.handler_path), { recursive: true });\n\t\twriteFileSync(sg.handler_path, sg.handler_code);\n\t}\n\n\tconst mod = await import(handlerImportUrl(sg.handler_path));\n\tconst def = mod.default ?? mod;\n\n\tconst prevVersion = knownVersions.get(sg.name);\n\tknownVersions.set(sg.name, sg.version);\n\tdefinitionCache.set(sg.name, def);\n\n\tif (prevVersion && prevVersion !== sg.version) {\n\t\t// A redeploy can change the data-plane connection (BYO toggled/rotated),\n\t\t// so drop the cached route alongside the handler def.\n\t\tinvalidateSubgraphRoute(sg.name);\n\t\tlogger.info(\"Subgraph handler reloaded\", {\n\t\t\tsubgraph: sg.name,\n\t\t\tfrom: prevVersion,\n\t\t\tto: sg.version,\n\t\t});\n\t}\n\n\treturn def;\n}\n\n/** Remove cached entries for subgraphs that no longer exist. */\nfunction cleanupCaches(active: Subgraph[]): void {\n\tconst names = new Set(active.map((sg) => sg.name));\n\tfor (const name of knownVersions.keys()) {\n\t\tif (!names.has(name)) {\n\t\t\tknownVersions.delete(name);\n\t\t\tdefinitionCache.delete(name);\n\t\t\tinvalidateSubgraphRoute(name);\n\t\t}\n\t}\n}\n\nasync function synthesizeLegacyReindexOperations(): Promise<void> {\n\tconst db = getTargetDb();\n\tconst stale = (await listSubgraphs(db)).filter(\n\t\t(sg) => sg.status === \"reindexing\",\n\t);\n\n\tfor (const sg of stale) {\n\t\tconst active = await findActiveSubgraphOperation(db, sg.id);\n\t\tif (active) continue;\n\n\t\ttry {\n\t\t\tawait createSubgraphOperation(db, {\n\t\t\t\tsubgraphId: sg.id,\n\t\t\t\tsubgraphName: sg.name,\n\t\t\t\taccountId: sg.account_id,\n\t\t\t\tkind: \"reindex\",\n\t\t\t\tfromBlock:\n\t\t\t\t\tsg.reindex_from_block == null\n\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t: Number(sg.reindex_from_block),\n\t\t\t\ttoBlock:\n\t\t\t\t\tsg.reindex_to_block == null ? undefined : Number(sg.reindex_to_block),\n\t\t\t});\n\t\t\tlogger.info(\"Queued legacy reindex resume operation\", {\n\t\t\t\tsubgraph: sg.name,\n\t\t\t});\n\t\t} catch (err) {\n\t\t\tif (isActiveSubgraphOperationConflict(err)) continue;\n\t\t\tthrow err;\n\t\t}\n\t}\n}\n\nasync function runSubgraphOperation(\n\toperation: SubgraphOperation,\n\tsignal: AbortSignal,\n): Promise<number> {\n\tif (operation.cancel_requested) {\n\t\treturn 0;\n\t}\n\n\tconst db = getTargetDb();\n\tconst subgraph = await db\n\t\t.selectFrom(\"subgraphs\")\n\t\t.selectAll()\n\t\t.where(\"id\", \"=\", operation.subgraph_id)\n\t\t.executeTakeFirst();\n\tif (!subgraph)\n\t\tthrow new Error(`Subgraph not found: ${operation.subgraph_id}`);\n\n\tconst def = await loadSubgraphDefinition(subgraph);\n\tconst schemaName = subgraph.schema_name ?? pgSchemaName(subgraph.name);\n\n\tif (operation.kind === \"backfill\") {\n\t\tif (operation.from_block == null || operation.to_block == null) {\n\t\t\tthrow new Error(\"Backfill operation is missing from_block or to_block\");\n\t\t}\n\t\t// Resume from the op's own checkpoint: committed blocks never replay.\n\t\tconst resumeFrom =\n\t\t\toperation.cursor_block != null\n\t\t\t\t? Math.max(\n\t\t\t\t\t\tNumber(operation.from_block),\n\t\t\t\t\t\tNumber(operation.cursor_block) + 1,\n\t\t\t\t\t)\n\t\t\t\t: Number(operation.from_block);\n\t\tconst result = await backfillSubgraph(def, {\n\t\t\tfromBlock: resumeFrom,\n\t\t\ttoBlock: Number(operation.to_block),\n\t\t\tschemaName,\n\t\t\toperationId: operation.id,\n\t\t\tsignal,\n\t\t});\n\t\treturn result.processed;\n\t}\n\n\t// Reindex drops + recreates the schema. On a BYO subgraph that would destroy\n\t// data in the user's DB from a background job, so it's blocked — the user\n\t// re-deploys to rebuild. Initial population uses a `backfill` op (handled\n\t// above), which never drops.\n\tif (isByoSubgraph(subgraph)) {\n\t\tthrow new Error(\n\t\t\t`Reindex is not supported for BYO subgraphs (\"${subgraph.name}\"). Re-deploy to rebuild, or drop and recreate the schema in your database.`,\n\t\t);\n\t}\n\n\tconst hasResumeMetadata =\n\t\tsubgraph.status === \"reindexing\" &&\n\t\tsubgraph.reindex_from_block != null &&\n\t\tsubgraph.reindex_to_block != null;\n\n\tif (hasResumeMetadata) {\n\t\tconst result = await resumeReindex(def, {\n\t\t\tschemaName,\n\t\t\toperationId: operation.id,\n\t\t\tsignal,\n\t\t});\n\t\treturn result.processed;\n\t}\n\n\tconst result = await reindexSubgraph(def, {\n\t\tfromBlock:\n\t\t\toperation.from_block == null ? undefined : Number(operation.from_block),\n\t\ttoBlock:\n\t\t\toperation.to_block == null ? undefined : Number(operation.to_block),\n\t\tschemaName,\n\t\toperationId: operation.id,\n\t\tsignal,\n\t});\n\treturn result.processed;\n}\n\nexport async function startSubgraphOperationRunner(opts?: {\n\tconcurrency?: number;\n}): Promise<() => Promise<void>> {\n\tconst concurrency = opts?.concurrency ?? DEFAULT_OPERATION_CONCURRENCY;\n\tconst db = getTargetDb();\n\tconst lockedBy = `${hostname()}:${process.pid}:${randomUUID()}`;\n\tconst active = new Map<string, AbortController>();\n\tconst activeRuns = new Map<string, Promise<void>>();\n\tlet running = true;\n\tlet draining = false;\n\n\tlogger.info(\"Starting subgraph operation runner\", { concurrency, lockedBy });\n\n\t// Boot-time resume sweep: a processor restart strands any reindex that was\n\t// started inline (deploy-time genesis) or whose op died with the old\n\t// instance — the subgraph sits at status='reindexing' with resume metadata\n\t// and nothing ever picks it up. Re-enqueue a reindex op for each; the\n\t// run path sees the metadata and resumes from last_processed_block + 1.\n\t// The active-op partial-unique constraint makes double-enqueue a no-op.\n\ttry {\n\t\tconst stranded = await db\n\t\t\t.selectFrom(\"subgraphs\")\n\t\t\t.select([\"id\", \"name\", \"account_id\"])\n\t\t\t.where(\"status\", \"=\", \"reindexing\")\n\t\t\t.where(\"reindex_from_block\", \"is not\", null)\n\t\t\t.where(\"reindex_to_block\", \"is not\", null)\n\t\t\t.where(({ not, exists, selectFrom }) =>\n\t\t\t\tnot(\n\t\t\t\t\texists(\n\t\t\t\t\t\tselectFrom(\"subgraph_operations\")\n\t\t\t\t\t\t\t.select(\"id\")\n\t\t\t\t\t\t\t.whereRef(\"subgraph_id\", \"=\", \"subgraphs.id\")\n\t\t\t\t\t\t\t.where(\"status\", \"in\", [\"queued\", \"running\"]),\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t)\n\t\t\t.execute();\n\t\tfor (const row of stranded) {\n\t\t\ttry {\n\t\t\t\tawait createSubgraphOperation(db, {\n\t\t\t\t\tsubgraphId: row.id,\n\t\t\t\t\tsubgraphName: row.name,\n\t\t\t\t\taccountId: row.account_id,\n\t\t\t\t\tkind: \"reindex\",\n\t\t\t\t});\n\t\t\t\tlogger.info(\"Re-enqueued stranded reindex\", { subgraph: row.name });\n\t\t\t} catch (err) {\n\t\t\t\tif (!isActiveSubgraphOperationConflict(err)) throw err;\n\t\t\t}\n\t\t}\n\t} catch (err) {\n\t\t// The sweep is best-effort — a failure must not stop the runner.\n\t\tlogger.warn(\"Stranded-reindex sweep failed\", {\n\t\t\terror: getErrorMessage(err),\n\t\t});\n\t}\n\n\tconst startOperation = (operation: SubgraphOperation) => {\n\t\tconst controller = new AbortController();\n\t\tactive.set(operation.id, controller);\n\n\t\tconst heartbeat = setInterval(() => {\n\t\t\tif (!running) return;\n\t\t\theartbeatSubgraphOperation(db, operation.id, lockedBy).catch((err) => {\n\t\t\t\tlogger.warn(\"Subgraph operation heartbeat failed\", {\n\t\t\t\t\toperationId: operation.id,\n\t\t\t\t\terror: getErrorMessage(err),\n\t\t\t\t});\n\t\t\t});\n\t\t}, HEARTBEAT_INTERVAL_MS);\n\n\t\tconst cancelPoll = setInterval(() => {\n\t\t\tgetSubgraphOperation(db, operation.id)\n\t\t\t\t.then((row) => {\n\t\t\t\t\tif ((!row || row.cancel_requested) && !controller.signal.aborted) {\n\t\t\t\t\t\tcontroller.abort(\"user-cancelled\");\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch((err) => {\n\t\t\t\t\tlogger.warn(\"Subgraph operation cancel poll failed\", {\n\t\t\t\t\t\toperationId: operation.id,\n\t\t\t\t\t\terror: getErrorMessage(err),\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t}, CANCEL_POLL_INTERVAL_MS);\n\n\t\tconst run = (async () => {\n\t\t\tlet processed = 0;\n\t\t\ttry {\n\t\t\t\tif (operation.cancel_requested) {\n\t\t\t\t\tcontroller.abort(\"user-cancelled\");\n\t\t\t\t} else {\n\t\t\t\t\tprocessed = await runSubgraphOperation(operation, controller.signal);\n\t\t\t\t}\n\n\t\t\t\tconst reason = String(controller.signal.reason ?? \"\");\n\t\t\t\tif (controller.signal.aborted && reason === \"user-cancelled\") {\n\t\t\t\t\tawait cancelSubgraphOperation(db, operation.id, lockedBy, processed);\n\t\t\t\t\tlogger.info(\"Subgraph operation cancelled\", {\n\t\t\t\t\t\toperationId: operation.id,\n\t\t\t\t\t\tsubgraph: operation.subgraph_name,\n\t\t\t\t\t});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (controller.signal.aborted) {\n\t\t\t\t\tlogger.info(\"Subgraph operation interrupted\", {\n\t\t\t\t\t\toperationId: operation.id,\n\t\t\t\t\t\tsubgraph: operation.subgraph_name,\n\t\t\t\t\t\treason,\n\t\t\t\t\t});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tawait completeSubgraphOperation(db, operation.id, lockedBy, processed);\n\t\t\t\tlogger.info(\"Subgraph operation completed\", {\n\t\t\t\t\toperationId: operation.id,\n\t\t\t\t\tsubgraph: operation.subgraph_name,\n\t\t\t\t\tprocessed,\n\t\t\t\t});\n\t\t\t} catch (err) {\n\t\t\t\tconst reason = String(controller.signal.reason ?? \"\");\n\t\t\t\tif (controller.signal.aborted && reason === \"shutdown\") {\n\t\t\t\t\tlogger.info(\"Subgraph operation interrupted by shutdown\", {\n\t\t\t\t\t\toperationId: operation.id,\n\t\t\t\t\t\tsubgraph: operation.subgraph_name,\n\t\t\t\t\t});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (controller.signal.aborted && reason === \"user-cancelled\") {\n\t\t\t\t\tawait cancelSubgraphOperation(db, operation.id, lockedBy, processed);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tawait failSubgraphOperation(\n\t\t\t\t\tdb,\n\t\t\t\t\toperation.id,\n\t\t\t\t\tlockedBy,\n\t\t\t\t\tgetErrorMessage(err),\n\t\t\t\t\tprocessed,\n\t\t\t\t);\n\t\t\t\tlogger.error(\"Subgraph operation failed\", {\n\t\t\t\t\toperationId: operation.id,\n\t\t\t\t\tsubgraph: operation.subgraph_name,\n\t\t\t\t\terror: getErrorMessage(err),\n\t\t\t\t});\n\t\t\t} finally {\n\t\t\t\tclearInterval(heartbeat);\n\t\t\t\tclearInterval(cancelPoll);\n\t\t\t\tactive.delete(operation.id);\n\t\t\t\tactiveRuns.delete(operation.id);\n\t\t\t\tif (running) void drain();\n\t\t\t}\n\t\t})();\n\n\t\tactiveRuns.set(operation.id, run);\n\t};\n\n\tconst drain = async () => {\n\t\tif (!running || draining) return;\n\t\tdraining = true;\n\t\ttry {\n\t\t\twhile (running && active.size < concurrency) {\n\t\t\t\tconst operation = await claimSubgraphOperation(db, lockedBy);\n\t\t\t\tif (!operation) break;\n\t\t\t\tstartOperation(operation);\n\t\t\t}\n\t\t} finally {\n\t\t\tdraining = false;\n\t\t}\n\t};\n\n\tawait synthesizeLegacyReindexOperations();\n\tawait drain();\n\n\tconst stopListening = await listen(\n\t\tCHANNEL_SUBGRAPH_OPERATIONS,\n\t\t() => {\n\t\t\tvoid drain();\n\t\t},\n\t\t{ connectionString: targetListenerUrl() },\n\t);\n\n\tconst pollInterval = setInterval(() => {\n\t\tvoid drain();\n\t}, POLL_INTERVAL_MS);\n\n\treturn async () => {\n\t\trunning = false;\n\t\tclearInterval(pollInterval);\n\t\tawait stopListening();\n\t\tfor (const controller of active.values()) {\n\t\t\tcontroller.abort(\"shutdown\");\n\t\t}\n\t\tawait Promise.allSettled(activeRuns.values());\n\t\tlogger.info(\"Subgraph operation runner stopped\");\n\t};\n}\n\n/**\n * Start the subgraph processor service.\n * Listens for new blocks via NOTIFY and processes them through all active subgraphs.\n */\nexport async function startSubgraphProcessor(opts?: {\n\tconcurrency?: number;\n}): Promise<() => Promise<void>> {\n\tconst concurrency = opts?.concurrency ?? DEFAULT_CONCURRENCY;\n\tlet running = true;\n\n\tlogger.info(\"Starting subgraph processor\", { concurrency });\n\n\tconst stopOperations = await startSubgraphOperationRunner({\n\t\tconcurrency: Number.parseInt(\n\t\t\tprocess.env.SUBGRAPH_OPERATION_CONCURRENCY ??\n\t\t\t\tString(DEFAULT_OPERATION_CONCURRENCY),\n\t\t),\n\t});\n\n\t// One catch-up pass over all active subgraphs (subgraphs table lives in the\n\t// target DB). Gated on the catch-up leader: only one process across the fleet\n\t// drives catch-up, so scale-out adds capacity instead of double-processing\n\t// every block. The in-process Set in catchup.ts still guards within a process.\n\tconst runCatchUp = async (): Promise<void> => {\n\t\tif (!running || !isCatchUpLeader()) return;\n\t\tconst db = getTargetDb();\n\t\tconst subgraphs = (await listSubgraphs(db)).filter(\n\t\t\t(v: Subgraph) => v.status === \"active\",\n\t\t);\n\t\tcleanupCaches(subgraphs);\n\t\tawait catchUpAll(subgraphs, db, concurrency);\n\t};\n\n\t// Elect a single catch-up leader; the new leader runs an immediate pass so it\n\t// doesn't wait a poll interval. NOTIFY/poll below are no-ops on non-leaders.\n\tconst stopCatchUpLeader = startCatchUpLeader({ onAcquire: runCatchUp });\n\n\t// Listen for new blocks — NOTIFY is fired from the indexer on the source DB\n\tconst stopListening = await listen(\n\t\tCHANNEL_NEW_BLOCK,\n\t\tasync () => {\n\t\t\t// The NOTIFY payload doesn't include block height — we rely on each\n\t\t\t// subgraph's last_processed_block to determine what to process.\n\t\t\tawait runCatchUp();\n\t\t},\n\t\t{ connectionString: sourceListenerUrl() },\n\t);\n\n\t// Listen for reorgs — also fired from the indexer on the source DB\n\tconst stopReorgListening = await listen(\n\t\t\"subgraph_reorg\",\n\t\tasync (payload: string | undefined) => {\n\t\t\tif (!running) return;\n\t\t\ttry {\n\t\t\t\tconst data = JSON.parse(payload ?? \"{}\");\n\t\t\t\tconst blockHeight = data.blockHeight;\n\t\t\t\tif (typeof blockHeight === \"number\") {\n\t\t\t\t\tawait handleSubgraphReorg(blockHeight, loadSubgraphDefinition);\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\tlogger.error(\"Subgraph reorg handling failed\", {\n\t\t\t\t\terror: getErrorMessage(err),\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t{ connectionString: sourceListenerUrl() },\n\t);\n\n\t// Poll as backup (reads subgraphs table — target DB)\n\tconst pollInterval = setInterval(() => {\n\t\tvoid runCatchUp();\n\t}, POLL_INTERVAL_MS);\n\n\t// Streams is the reorg authority for streams-index subgraphs (the public\n\t// API path has no Postgres NOTIFY). Runs alongside the LISTEN above; both\n\t// drive the idempotent subgraph-reorg handler. The chain-subscription reorg\n\t// rewind runs on its own poll inside the subscription plane below.\n\tconst stopStreamsReorgPoll =\n\t\tprocess.env.SUBGRAPH_SOURCE === \"streams-index\"\n\t\t\t? startStreamsReorgPoll((forkHeight) =>\n\t\t\t\t\thandleSubgraphReorg(forkHeight, loadSubgraphDefinition),\n\t\t\t\t)\n\t\t\t: undefined;\n\n\t// The real-time subscription delivery plane (evaluator + emitter + chain-reorg)\n\t// now runs in the dedicated subscription-processor service, isolated from\n\t// subgraph indexing. This process handles subgraph ops + catch-up + the\n\t// subgraph-reorg rewind only.\n\n\tlogger.info(\"Subgraph processor ready\");\n\n\t// Return shutdown function\n\treturn async () => {\n\t\trunning = false;\n\t\tclearInterval(pollInterval);\n\t\tawait stopCatchUpLeader();\n\t\tawait stopListening();\n\t\tawait stopReorgListening();\n\t\tstopStreamsReorgPoll?.();\n\t\tawait stopOperations();\n\t\tlogger.info(\"Subgraph processor stopped\");\n\t};\n}\n",
|
|
30
30
|
"import { getErrorMessage } from \"@secondlayer/shared\";\nimport { IndexHttpClient } from \"@secondlayer/shared/index-http\";\nimport { logger } from \"@secondlayer/shared/logger\";\n\nconst POLL_MS = Number(process.env.SUBGRAPH_REORG_POLL_MS) || 15_000;\n// On boot, re-scan recent reorgs. Reorg handlers are idempotent, so re-applying\n// a recent reorg is safe and covers any missed during downtime.\nconst STARTUP_MARGIN_MS = 60 * 60 * 1000;\n\ntype ReorgLister = Pick<IndexHttpClient, \"listReorgs\">;\n\n/** Per-fork handler. Each plane (subgraph rewind, chain-subscription rewind)\n * runs its own poll with its own handler, so they can live in separate\n * processes once the subscription plane is extracted. */\nexport type OnReorg = (forkHeight: number) => Promise<void>;\n\n/**\n * Fetch reorgs since `cursor` and invoke `onReorg` at each fork point (lowest\n * first), returning the next cursor. Extracted for testing.\n *\n * `handled` dedupes by reorg id across polls: a re-delivered reorg (cursor\n * bug, server restart, startup margin re-scan) must be a no-op, because the\n * rewind handler — while idempotent in outcome — aborts any in-flight catch-up\n * and resets subgraph cursors to the fork point. Re-delivery every poll would\n * pin subgraphs at the fork point forever (the 2026-07-19 prod incident).\n */\nexport async function pollReorgsOnce(\n\thttp: ReorgLister,\n\tcursor: string,\n\tonReorg: OnReorg,\n\thandled?: Set<string>,\n): Promise<string> {\n\tconst { reorgs, next_since } = await http.listReorgs(cursor);\n\tconst sorted = [...reorgs].sort(\n\t\t(a, b) => a.fork_point_height - b.fork_point_height,\n\t);\n\tfor (const r of sorted) {\n\t\tif (handled && r.id && handled.has(r.id)) {\n\t\t\tlogger.info(\"Streams reorg already handled — skipping\", {\n\t\t\t\tforkPointHeight: r.fork_point_height,\n\t\t\t\treorgId: r.id,\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tlogger.info(\"Streams reorg — rewinding\", {\n\t\t\tforkPointHeight: r.fork_point_height,\n\t\t});\n\t\tawait onReorg(r.fork_point_height);\n\t\t// Only after a successful rewind — a throw must leave the reorg\n\t\t// eligible for retry on the next poll.\n\t\tif (handled && r.id) handled.add(r.id);\n\t}\n\treturn next_since ?? cursor;\n}\n\n/**\n * Streams as the reorg authority for `SUBGRAPH_SOURCE=streams-index`: poll\n * `/v1/streams/reorgs` and invoke `onReorg` at each fork point. Runs alongside\n * the Postgres `subgraph_reorg` LISTEN (which serves db-tap subgraphs); both\n * drive the same idempotent handler, so overlap is harmless.\n */\nexport function startStreamsReorgPoll(onReorg: OnReorg): () => void {\n\tconst baseUrl =\n\t\tprocess.env.SUBGRAPH_INDEX_API_URL ??\n\t\tprocess.env.STREAMS_API_URL ??\n\t\t\"http://api:3800\";\n\tconst http = new IndexHttpClient({\n\t\tindexBaseUrl: baseUrl,\n\t\tstreamsBaseUrl: baseUrl,\n\t\tstreamsApiKey:\n\t\t\tprocess.env.STREAMS_INTERNAL_API_KEY ?? \"sk-sl_streams_decode_internal\",\n\t});\n\n\tlet since = new Date(Date.now() - STARTUP_MARGIN_MS).toISOString();\n\tlet running = true;\n\tlet timer: ReturnType<typeof setTimeout> | undefined;\n\t// Reorg ids already applied this process. Reorgs are rare (~1/day), so an\n\t// unbounded-in-theory set stays tiny in practice; cap it anyway.\n\tconst handled = new Set<string>();\n\n\tconst tick = async (): Promise<void> => {\n\t\tif (!running) return;\n\t\tif (handled.size > 10_000) handled.clear();\n\t\ttry {\n\t\t\tsince = await pollReorgsOnce(http, since, onReorg, handled);\n\t\t} catch (err) {\n\t\t\tlogger.error(\"Streams reorg poll failed\", {\n\t\t\t\terror: getErrorMessage(err),\n\t\t\t});\n\t\t}\n\t\tif (running) timer = setTimeout(tick, POLL_MS);\n\t};\n\n\ttimer = setTimeout(tick, POLL_MS);\n\tlogger.info(\"Streams reorg poll started\", { pollMs: POLL_MS });\n\treturn () => {\n\t\trunning = false;\n\t\tif (timer) clearTimeout(timer);\n\t};\n}\n"
|
|
31
31
|
],
|
|
32
|
-
"mappings": "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",
|
|
33
|
-
"debugId": "
|
|
32
|
+
"mappings": "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",
|
|
33
|
+
"debugId": "6331C0050ED69C4864756E2164756E21",
|
|
34
34
|
"names": []
|
|
35
35
|
}
|