@secondlayer/subgraphs 1.0.0-beta.2 → 1.0.0
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/runtime/processor.js +77 -7
- package/dist/src/runtime/processor.js.map +3 -3
- package/dist/src/runtime/replay.d.ts +13 -0
- package/dist/src/runtime/replay.js +93 -0
- package/dist/src/runtime/replay.js.map +11 -0
- package/dist/src/service.js +77 -7
- package/dist/src/service.js.map +3 -3
- package/package.json +7 -3
|
@@ -1682,11 +1682,47 @@ function buildForFormat(outboxRow, sub, signingSecret) {
|
|
|
1682
1682
|
|
|
1683
1683
|
// src/runtime/emitter.ts
|
|
1684
1684
|
var BATCH_SIZE = 50;
|
|
1685
|
+
var LIVE_SHARE = 0.9;
|
|
1685
1686
|
var BACKOFF_SECONDS = [30, 120, 600, 3600, 21600, 86400, 259200];
|
|
1686
1687
|
var CIRCUIT_THRESHOLD = 20;
|
|
1687
1688
|
function nextDelaySeconds(attempt) {
|
|
1688
1689
|
return BACKOFF_SECONDS[Math.min(attempt, BACKOFF_SECONDS.length - 1)];
|
|
1689
1690
|
}
|
|
1691
|
+
var PRIVATE_V4_PATTERNS = [
|
|
1692
|
+
/^127\./,
|
|
1693
|
+
/^10\./,
|
|
1694
|
+
/^172\.(1[6-9]|2\d|3[01])\./,
|
|
1695
|
+
/^192\.168\./,
|
|
1696
|
+
/^169\.254\./,
|
|
1697
|
+
/^0\./,
|
|
1698
|
+
/^100\.(6[4-9]|[7-9]\d|1[01]\d|12[0-7])\./
|
|
1699
|
+
];
|
|
1700
|
+
function isPrivateEgress(url) {
|
|
1701
|
+
let parsed;
|
|
1702
|
+
try {
|
|
1703
|
+
parsed = new URL(url);
|
|
1704
|
+
} catch {
|
|
1705
|
+
return true;
|
|
1706
|
+
}
|
|
1707
|
+
if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
|
|
1708
|
+
return true;
|
|
1709
|
+
}
|
|
1710
|
+
const host = parsed.hostname.toLowerCase();
|
|
1711
|
+
if (host === "localhost")
|
|
1712
|
+
return true;
|
|
1713
|
+
if (host === "::1" || host === "[::1]")
|
|
1714
|
+
return true;
|
|
1715
|
+
if (host.startsWith("fd") || host.startsWith("fe80:"))
|
|
1716
|
+
return true;
|
|
1717
|
+
for (const p of PRIVATE_V4_PATTERNS) {
|
|
1718
|
+
if (p.test(host))
|
|
1719
|
+
return true;
|
|
1720
|
+
}
|
|
1721
|
+
return false;
|
|
1722
|
+
}
|
|
1723
|
+
function allowPrivateEgress() {
|
|
1724
|
+
return process.env.SECONDLAYER_ALLOW_PRIVATE_EGRESS === "true";
|
|
1725
|
+
}
|
|
1690
1726
|
async function dispatchOne(db, outboxRow, sub) {
|
|
1691
1727
|
const { body, headers } = buildForFormat(outboxRow, sub, getSubscriptionSigningSecret(sub));
|
|
1692
1728
|
const start = performance.now();
|
|
@@ -1695,6 +1731,26 @@ async function dispatchOne(db, outboxRow, sub) {
|
|
|
1695
1731
|
let ok = false;
|
|
1696
1732
|
let responseBody = "";
|
|
1697
1733
|
let responseHeaders = {};
|
|
1734
|
+
if (isPrivateEgress(sub.url) && !allowPrivateEgress()) {
|
|
1735
|
+
error = "refused private egress (set SECONDLAYER_ALLOW_PRIVATE_EGRESS=true to allow)";
|
|
1736
|
+
logger8.warn("[emitter] refused private egress", {
|
|
1737
|
+
subscription: sub.name,
|
|
1738
|
+
url: sub.url
|
|
1739
|
+
});
|
|
1740
|
+
const durationMs2 = 0;
|
|
1741
|
+
const attempt2 = outboxRow.attempt + 1;
|
|
1742
|
+
await db.insertInto("subscription_deliveries").values({
|
|
1743
|
+
outbox_id: outboxRow.id,
|
|
1744
|
+
subscription_id: outboxRow.subscription_id,
|
|
1745
|
+
attempt: attempt2,
|
|
1746
|
+
status_code: null,
|
|
1747
|
+
response_headers: null,
|
|
1748
|
+
response_body: null,
|
|
1749
|
+
error_message: error,
|
|
1750
|
+
duration_ms: durationMs2
|
|
1751
|
+
}).execute();
|
|
1752
|
+
return { ok: false, statusCode: null, error, durationMs: durationMs2 };
|
|
1753
|
+
}
|
|
1698
1754
|
try {
|
|
1699
1755
|
const res = await fetch(sub.url, {
|
|
1700
1756
|
method: "POST",
|
|
@@ -1778,20 +1834,34 @@ async function claimAndDrain(db, state, emitterId) {
|
|
|
1778
1834
|
return 0;
|
|
1779
1835
|
state.claimInFlight = true;
|
|
1780
1836
|
try {
|
|
1837
|
+
const liveLimit = Math.max(1, Math.round(BATCH_SIZE * LIVE_SHARE));
|
|
1838
|
+
const replayLimit = BATCH_SIZE - liveLimit;
|
|
1781
1839
|
const claimed = await db.transaction().execute(async (tx) => {
|
|
1782
|
-
const
|
|
1840
|
+
const live = await sql4`
|
|
1841
|
+
SELECT * FROM subscription_outbox
|
|
1842
|
+
WHERE status = 'pending'
|
|
1843
|
+
AND next_attempt_at <= NOW()
|
|
1844
|
+
AND is_replay = FALSE
|
|
1845
|
+
ORDER BY next_attempt_at ASC
|
|
1846
|
+
FOR UPDATE SKIP LOCKED
|
|
1847
|
+
LIMIT ${sql4.lit(liveLimit)}
|
|
1848
|
+
`.execute(tx);
|
|
1849
|
+
const replay = await sql4`
|
|
1783
1850
|
SELECT * FROM subscription_outbox
|
|
1784
|
-
WHERE status = 'pending'
|
|
1851
|
+
WHERE status = 'pending'
|
|
1852
|
+
AND next_attempt_at <= NOW()
|
|
1853
|
+
AND is_replay = TRUE
|
|
1785
1854
|
ORDER BY next_attempt_at ASC
|
|
1786
1855
|
FOR UPDATE SKIP LOCKED
|
|
1787
|
-
LIMIT ${sql4.lit(
|
|
1856
|
+
LIMIT ${sql4.lit(replayLimit)}
|
|
1788
1857
|
`.execute(tx);
|
|
1789
|
-
|
|
1858
|
+
const combined = [...live.rows, ...replay.rows];
|
|
1859
|
+
if (combined.length === 0)
|
|
1790
1860
|
return [];
|
|
1791
1861
|
const now = new Date;
|
|
1792
1862
|
const lockUntil = new Date(now.getTime() + 60000);
|
|
1793
|
-
await tx.updateTable("subscription_outbox").set({ locked_by: emitterId, locked_until: lockUntil }).where("id", "in",
|
|
1794
|
-
return
|
|
1863
|
+
await tx.updateTable("subscription_outbox").set({ locked_by: emitterId, locked_until: lockUntil }).where("id", "in", combined.map((r) => r.id)).execute();
|
|
1864
|
+
return combined;
|
|
1795
1865
|
});
|
|
1796
1866
|
if (claimed.length === 0)
|
|
1797
1867
|
return 0;
|
|
@@ -2060,5 +2130,5 @@ export {
|
|
|
2060
2130
|
startSubgraphProcessor
|
|
2061
2131
|
};
|
|
2062
2132
|
|
|
2063
|
-
//# debugId=
|
|
2133
|
+
//# debugId=634D01F65AB2773B64756E2164756E21
|
|
2064
2134
|
//# sourceMappingURL=processor.js.map
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"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",
|
|
17
17
|
"import { getErrorMessage } from \"@secondlayer/shared\";\nimport { getRawClient, getTargetDb } from \"@secondlayer/shared/db\";\nimport type { Subgraph } from \"@secondlayer/shared/db\";\nimport { listSubgraphs } from \"@secondlayer/shared/db/queries/subgraphs\";\nimport { logger } from \"@secondlayer/shared/logger\";\nimport { pgSchemaName } from \"../schema/utils.ts\";\nimport type { SubgraphDefinition, SubgraphSchema } from \"../types.ts\";\nimport { processBlock } from \"./block-processor.ts\";\n\n/**\n * Handle a chain reorg for all active subgraphs.\n * Deletes rows at the reorged block height from all subgraph tables,\n * then reprocesses the new canonical block.\n */\nexport async function handleSubgraphReorg(\n\tblockHeight: number,\n\tloadSubgraphDef: (sg: Subgraph) => Promise<SubgraphDefinition>,\n): Promise<void> {\n\t// Subgraphs table + tenant schemas (and thus the DELETE DDL target) live\n\t// in the target DB; source DB is unrelated here.\n\tconst targetDb = getTargetDb();\n\tconst client = getRawClient(\"target\");\n\tconst activeSubgraphs = (await listSubgraphs(targetDb)).filter(\n\t\t(v: Subgraph) => v.status === \"active\",\n\t);\n\n\tif (activeSubgraphs.length === 0) return;\n\n\tlogger.info(\"Propagating reorg to subgraphs\", {\n\t\tblockHeight,\n\t\tsubgraphCount: activeSubgraphs.length,\n\t});\n\n\tfor (const sg of activeSubgraphs) {\n\t\ttry {\n\t\t\tconst schema = sg.definition.schema as SubgraphSchema | undefined;\n\t\t\tif (!schema) continue;\n\n\t\t\tconst schemaName = sg.schema_name ?? pgSchemaName(sg.name);\n\n\t\t\t// Delete rows at the reorged block height from all tables\n\t\t\tfor (const tableName of Object.keys(schema)) {\n\t\t\t\tawait client.unsafe(\n\t\t\t\t\t`DELETE FROM \"${schemaName}\".\"${tableName}\" WHERE \"_block_height\" = $1`,\n\t\t\t\t\t[blockHeight],\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tlogger.info(\"Subgraph reorg cleanup done\", {\n\t\t\t\tsubgraph: sg.name,\n\t\t\t\tblockHeight,\n\t\t\t});\n\n\t\t\t// Reprocess the new canonical block\n\t\t\tconst def = await loadSubgraphDef(sg);\n\t\t\tawait processBlock(def, sg.name, blockHeight);\n\n\t\t\tlogger.info(\"Subgraph reorg reprocessed\", {\n\t\t\t\tsubgraph: sg.name,\n\t\t\t\tblockHeight,\n\t\t\t});\n\t\t} catch (err) {\n\t\t\tlogger.error(\"Subgraph reorg handling failed\", {\n\t\t\t\tsubgraph: sg.name,\n\t\t\t\tblockHeight,\n\t\t\t\terror: getErrorMessage(err),\n\t\t\t});\n\t\t}\n\t}\n}\n",
|
|
18
18
|
"import { getErrorMessage } from \"@secondlayer/shared\";\nimport { getTargetDb } from \"@secondlayer/shared/db\";\nimport type { Subgraph } from \"@secondlayer/shared/db\";\nimport {\n\tlistSubgraphs,\n\tupdateSubgraphStatus,\n} from \"@secondlayer/shared/db/queries/subgraphs\";\nimport { logger } from \"@secondlayer/shared/logger\";\nimport { listen } from \"@secondlayer/shared/queue/listener\";\nimport type { SubgraphDefinition } from \"../types.ts\";\nimport { catchUpSubgraph } from \"./catchup.ts\";\nimport { startEmitter } from \"./emitter.ts\";\nimport { handleSubgraphReorg } from \"./reorg.ts\";\n\nconst CHANNEL_NEW_BLOCK = \"indexer:new_block\";\nconst DEFAULT_CONCURRENCY = 5;\nconst POLL_INTERVAL_MS = 5_000;\n\n/**\n * URL to LISTEN on for indexer-fired channels (`indexer:new_block`,\n * `subgraph_reorg`). In dual-DB mode the indexer writes to the shared\n * source DB, so listeners must bind there. In single-DB mode this falls\n * back to `DATABASE_URL` — identical to pre-dual-DB behavior.\n */\nfunction sourceListenerUrl(): string | undefined {\n\treturn process.env.SOURCE_DATABASE_URL ?? process.env.DATABASE_URL;\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(`${sg.handler_path}?v=${Date.now()}`);\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\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}\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\t// Catch-up all subgraphs on startup (subgraphs table lives in target DB)\n\tconst targetDb = getTargetDb();\n\tconst activeSubgraphs = (await listSubgraphs(targetDb)).filter(\n\t\t(v: Subgraph) => v.status === \"active\",\n\t);\n\tfor (const sg of activeSubgraphs) {\n\t\ttry {\n\t\t\tconst def = await loadSubgraphDefinition(sg);\n\t\t\tawait catchUpSubgraph(def, sg.name);\n\t\t} catch (err) {\n\t\t\tconst msg = getErrorMessage(err);\n\t\t\tif (isHandlerNotFoundError(err)) {\n\t\t\t\tawait updateSubgraphStatus(targetDb, sg.name, \"error\");\n\t\t\t}\n\t\t\tlogger.error(\"Subgraph catch-up failed on startup\", {\n\t\t\t\tsubgraph: sg.name,\n\t\t\t\terror: msg,\n\t\t\t});\n\t\t}\n\t}\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\tif (!running) return;\n\t\t\t// The NOTIFY payload doesn't include block height — we rely on\n\t\t\t// each subgraph's last_processed_block to determine what to process.\n\t\t\t// Trigger catch-up for all subgraphs.\n\t\t\tconst db = getTargetDb();\n\t\t\tconst subgraphs = (await listSubgraphs(db)).filter(\n\t\t\t\t(v: Subgraph) => v.status === \"active\",\n\t\t\t);\n\t\t\tcleanupCaches(subgraphs);\n\t\t\tfor (const sg of subgraphs) {\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 processing 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\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(async () => {\n\t\tif (!running) 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\tfor (const sg of subgraphs) {\n\t\t\ttry {\n\t\t\t\tconst def = await loadSubgraphDefinition(sg);\n\t\t\t\tawait catchUpSubgraph(def, sg.name);\n\t\t\t} catch (err) {\n\t\t\t\tlogger.error(\"Subgraph poll processing failed\", {\n\t\t\t\t\tsubgraph: sg.name,\n\t\t\t\t\terror: getErrorMessage(err),\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}, POLL_INTERVAL_MS);\n\n\t// Boot subscription emitter in same process — shares pool, shares\n\t// LISTEN connection. Platform mode is control plane only and does not\n\t// need the emitter, but processor itself isn't started there.\n\tconst stopEmitter = await startEmitter();\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 stopListening();\n\t\tawait stopReorgListening();\n\t\tawait stopEmitter();\n\t\tlogger.info(\"Subgraph processor stopped\");\n\t};\n}\n",
|
|
19
|
-
"import {\n\ttype Database,\n\tgetTargetDb,\n\ttype Subscription,\n\ttype SubscriptionOutbox,\n} from \"@secondlayer/shared/db\";\nimport {\n\tgetSubscriptionSigningSecret,\n} from \"@secondlayer/shared/db/queries/subscriptions\";\nimport { logger } from \"@secondlayer/shared/logger\";\nimport { listen } from \"@secondlayer/shared/queue/listener\";\nimport { type Kysely, sql } from \"kysely\";\nimport { buildForFormat } from \"./formats/index.ts\";\nimport { refreshMatcher } from \"./subscription-state.ts\";\n\n/**\n * Subscription emitter — drains `subscription_outbox` and POSTs deliveries.\n *\n * Hot path: LISTEN on `subscriptions:new_outbox` and `subscriptions:changed`.\n * On notify, claim a batch with `FOR UPDATE SKIP LOCKED LIMIT 50`, dispatch\n * each row via HTTP, write a `subscription_deliveries` attempt row, then\n * either mark `status='delivered'` or schedule the next attempt.\n *\n * Backoff schedule (attempt → wait):\n * 0 → 30s, 1 → 2m, 2 → 10m, 3 → 1h, 4 → 6h, 5 → 24h, 6 → 72h.\n * After `max_retries` (default 7) attempts → `status='dead'`.\n *\n * Per-sub circuit breaker: 20 consecutive failures → sub flipped to\n * `paused` with `circuit_opened_at=NOW()`. Manual /resume drains backlog.\n *\n * Per-sub concurrency cap: in-memory semaphore, default 4 in-flight HTTP\n * requests per subscription. Sprint-4 adds SSRF allowlist.\n */\n\nconst BATCH_SIZE = 50;\nconst BACKOFF_SECONDS = [30, 120, 600, 3600, 21600, 86400, 259200];\nconst CIRCUIT_THRESHOLD = 20;\n\ninterface RunningState {\n\trunning: boolean;\n\tinFlightBySub: Map<string, number>;\n\tclaimInFlight: boolean;\n}\n\nfunction nextDelaySeconds(attempt: number): number {\n\treturn BACKOFF_SECONDS[Math.min(attempt, BACKOFF_SECONDS.length - 1)]!;\n}\n\nasync function dispatchOne(\n\tdb: Kysely<Database>,\n\toutboxRow: SubscriptionOutbox,\n\tsub: Subscription,\n): Promise<{ ok: boolean; statusCode: number | null; error: string | null; durationMs: number }> {\n\tconst { body, headers } = buildForFormat(\n\t\toutboxRow,\n\t\tsub,\n\t\tgetSubscriptionSigningSecret(sub),\n\t);\n\n\tconst start = performance.now();\n\tlet statusCode: number | null = null;\n\tlet error: string | null = null;\n\tlet ok = false;\n\tlet responseBody = \"\";\n\tlet responseHeaders: Record<string, string> = {};\n\n\ttry {\n\t\tconst res = await fetch(sub.url, {\n\t\t\tmethod: \"POST\",\n\t\t\theaders,\n\t\t\tbody,\n\t\t\tsignal: AbortSignal.timeout(sub.timeout_ms),\n\t\t});\n\t\tstatusCode = res.status;\n\t\tok = res.ok;\n\t\t// Collect small response preview for the delivery log (≤8KB).\n\t\tconst buf = await res.arrayBuffer();\n\t\tconst truncated = buf.byteLength > 8192 ? buf.slice(0, 8192) : buf;\n\t\tresponseBody = Buffer.from(truncated).toString(\"utf8\");\n\t\tresponseHeaders = Object.fromEntries(res.headers.entries());\n\t} catch (err) {\n\t\terror = err instanceof Error ? err.message : String(err);\n\t}\n\tconst durationMs = Math.round(performance.now() - start);\n\n\tconst attempt = outboxRow.attempt + 1;\n\tawait db\n\t\t.insertInto(\"subscription_deliveries\")\n\t\t.values({\n\t\t\toutbox_id: outboxRow.id,\n\t\t\tsubscription_id: outboxRow.subscription_id,\n\t\t\tattempt,\n\t\t\tstatus_code: statusCode,\n\t\t\tresponse_headers: responseHeaders,\n\t\t\tresponse_body: responseBody || null,\n\t\t\terror_message: error,\n\t\t\tduration_ms: durationMs,\n\t\t})\n\t\t.execute();\n\n\treturn { ok, statusCode, error, durationMs };\n}\n\nasync function settleDelivered(\n\tdb: Kysely<Database>,\n\toutboxRow: SubscriptionOutbox,\n): Promise<void> {\n\tawait db.transaction().execute(async (tx) => {\n\t\tawait tx\n\t\t\t.updateTable(\"subscription_outbox\")\n\t\t\t.set({\n\t\t\t\tstatus: \"delivered\",\n\t\t\t\tdelivered_at: new Date(),\n\t\t\t\tattempt: outboxRow.attempt + 1,\n\t\t\t\tlocked_by: null,\n\t\t\t\tlocked_until: null,\n\t\t\t})\n\t\t\t.where(\"id\", \"=\", outboxRow.id)\n\t\t\t.execute();\n\t\tawait tx\n\t\t\t.updateTable(\"subscriptions\")\n\t\t\t.set({\n\t\t\t\tlast_delivery_at: new Date(),\n\t\t\t\tlast_success_at: new Date(),\n\t\t\t\tcircuit_failures: 0,\n\t\t\t\tlast_error: null,\n\t\t\t\tupdated_at: new Date(),\n\t\t\t})\n\t\t\t.where(\"id\", \"=\", outboxRow.subscription_id)\n\t\t\t.execute();\n\t});\n}\n\nasync function settleFailed(\n\tdb: Kysely<Database>,\n\toutboxRow: SubscriptionOutbox,\n\tsub: Subscription,\n\terrText: string,\n): Promise<void> {\n\tconst attempt = outboxRow.attempt + 1;\n\tconst isDead = attempt >= sub.max_retries;\n\tconst nextAt = isDead ? null : new Date(Date.now() + nextDelaySeconds(outboxRow.attempt) * 1000);\n\n\tawait db.transaction().execute(async (tx) => {\n\t\tawait tx\n\t\t\t.updateTable(\"subscription_outbox\")\n\t\t\t.set({\n\t\t\t\tattempt,\n\t\t\t\tnext_attempt_at: nextAt ?? new Date(),\n\t\t\t\tstatus: isDead ? \"dead\" : \"pending\",\n\t\t\t\tfailed_at: isDead ? new Date() : null,\n\t\t\t\tlocked_by: null,\n\t\t\t\tlocked_until: null,\n\t\t\t})\n\t\t\t.where(\"id\", \"=\", outboxRow.id)\n\t\t\t.execute();\n\n\t\tconst newFailures = sub.circuit_failures + 1;\n\t\tconst shouldTripCircuit = newFailures >= CIRCUIT_THRESHOLD;\n\n\t\tawait tx\n\t\t\t.updateTable(\"subscriptions\")\n\t\t\t.set({\n\t\t\t\tlast_delivery_at: new Date(),\n\t\t\t\tlast_error: errText.slice(0, 500),\n\t\t\t\tcircuit_failures: newFailures,\n\t\t\t\t...(shouldTripCircuit\n\t\t\t\t\t? { status: \"paused\", circuit_opened_at: new Date() }\n\t\t\t\t\t: {}),\n\t\t\t\tupdated_at: new Date(),\n\t\t\t})\n\t\t\t.where(\"id\", \"=\", outboxRow.subscription_id)\n\t\t\t.execute();\n\n\t\tif (shouldTripCircuit) {\n\t\t\tlogger.warn(\"Subscription circuit tripped — paused after consecutive failures\", {\n\t\t\t\tsubscription: sub.name,\n\t\t\t\tfailures: newFailures,\n\t\t\t});\n\t\t}\n\t});\n}\n\nasync function claimAndDrain(\n\tdb: Kysely<Database>,\n\tstate: RunningState,\n\temitterId: string,\n): Promise<number> {\n\tif (state.claimInFlight) return 0;\n\tstate.claimInFlight = true;\n\ttry {\n\t\t// FOR UPDATE SKIP LOCKED — multiple emitters split the batch.\n\t\tconst claimed = await db\n\t\t\t.transaction()\n\t\t\t.execute(async (tx) => {\n\t\t\t\tconst rows = await sql<SubscriptionOutbox>`\n\t\t\t\t\tSELECT * FROM subscription_outbox\n\t\t\t\t\tWHERE status = 'pending' AND next_attempt_at <= NOW()\n\t\t\t\t\tORDER BY next_attempt_at ASC\n\t\t\t\t\tFOR UPDATE SKIP LOCKED\n\t\t\t\t\tLIMIT ${sql.lit(BATCH_SIZE)}\n\t\t\t\t`.execute(tx);\n\n\t\t\t\tif (rows.rows.length === 0) return [];\n\n\t\t\t\tconst now = new Date();\n\t\t\t\tconst lockUntil = new Date(now.getTime() + 60_000); // 1-minute lock window\n\t\t\t\tawait tx\n\t\t\t\t\t.updateTable(\"subscription_outbox\")\n\t\t\t\t\t.set({ locked_by: emitterId, locked_until: lockUntil })\n\t\t\t\t\t.where(\n\t\t\t\t\t\t\"id\",\n\t\t\t\t\t\t\"in\",\n\t\t\t\t\t\trows.rows.map((r) => r.id),\n\t\t\t\t\t)\n\t\t\t\t\t.execute();\n\t\t\t\treturn rows.rows;\n\t\t\t});\n\n\t\tif (claimed.length === 0) return 0;\n\n\t\t// Hydrate each claimed row's sub once, then dispatch with per-sub\n\t\t// concurrency cap enforced via in-memory semaphore.\n\t\tconst bySubId = new Map<string, SubscriptionOutbox[]>();\n\t\tfor (const row of claimed) {\n\t\t\tconst arr = bySubId.get(row.subscription_id);\n\t\t\tif (arr) arr.push(row);\n\t\t\telse bySubId.set(row.subscription_id, [row]);\n\t\t}\n\n\t\tconst subIds = Array.from(bySubId.keys());\n\t\tconst subs = await db\n\t\t\t.selectFrom(\"subscriptions\")\n\t\t\t.selectAll()\n\t\t\t.where(\"id\", \"in\", subIds)\n\t\t\t.execute();\n\t\tconst subById = new Map(subs.map((s) => [s.id, s]));\n\n\t\tawait Promise.all(\n\t\t\tsubIds.map((subId) =>\n\t\t\t\tdrainForSub(db, state, subById.get(subId)!, bySubId.get(subId)!),\n\t\t\t),\n\t\t);\n\n\t\treturn claimed.length;\n\t} finally {\n\t\tstate.claimInFlight = false;\n\t}\n}\n\nasync function drainForSub(\n\tdb: Kysely<Database>,\n\tstate: RunningState,\n\tsub: Subscription,\n\trows: SubscriptionOutbox[],\n): Promise<void> {\n\tconst cap = sub.concurrency || 4;\n\tconst counter = () => state.inFlightBySub.get(sub.id) ?? 0;\n\tconst inc = () => state.inFlightBySub.set(sub.id, counter() + 1);\n\tconst dec = () => state.inFlightBySub.set(sub.id, Math.max(0, counter() - 1));\n\n\tconst queue = [...rows];\n\tconst workers: Promise<void>[] = [];\n\tconst slots = Math.min(cap, queue.length);\n\n\tfor (let i = 0; i < slots; i++) {\n\t\tworkers.push(\n\t\t\t(async () => {\n\t\t\t\twhile (state.running && queue.length > 0) {\n\t\t\t\t\tconst row = queue.shift();\n\t\t\t\t\tif (!row) break;\n\t\t\t\t\tinc();\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst result = await dispatchOne(db, row, sub);\n\t\t\t\t\t\tif (result.ok) {\n\t\t\t\t\t\t\tawait settleDelivered(db, row);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst err = result.error ?? `HTTP ${result.statusCode ?? \"?\"}`;\n\t\t\t\t\t\t\tawait settleFailed(db, row, sub, err);\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\tlogger.error(\"Emitter dispatch crashed\", {\n\t\t\t\t\t\t\toutboxId: row.id,\n\t\t\t\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t\t\t\t});\n\t\t\t\t\t\tawait settleFailed(\n\t\t\t\t\t\t\tdb,\n\t\t\t\t\t\t\trow,\n\t\t\t\t\t\t\tsub,\n\t\t\t\t\t\t\terr instanceof Error ? err.message : String(err),\n\t\t\t\t\t\t);\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tdec();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})(),\n\t\t);\n\t}\n\tawait Promise.all(workers);\n}\n\nexport interface StartEmitterOptions {\n\t/** Interval for the background poll (ms). Defaults to 2 minutes. */\n\tpollIntervalMs?: number;\n\t/** Retention sweep interval (ms). Defaults to 1 hour. */\n\tretentionIntervalMs?: number;\n}\n\nasync function runRetention(db: Kysely<Database>): Promise<void> {\n\t// delivered outbox >7d, deliveries >30d, dead outbox >90d\n\tawait sql`\n\t\tDELETE FROM subscription_outbox\n\t\tWHERE status = 'delivered' AND delivered_at < NOW() - interval '7 days'\n\t`.execute(db);\n\tawait sql`\n\t\tDELETE FROM subscription_deliveries\n\t\tWHERE dispatched_at < NOW() - interval '30 days'\n\t`.execute(db);\n\tawait sql`\n\t\tDELETE FROM subscription_outbox\n\t\tWHERE status = 'dead' AND failed_at < NOW() - interval '90 days'\n\t`.execute(db);\n}\n\nexport async function startEmitter(\n\topts?: StartEmitterOptions,\n): Promise<() => Promise<void>> {\n\tconst emitterId = `emitter-${Math.random().toString(36).slice(2, 10)}`;\n\tconst db = getTargetDb();\n\tconst state: RunningState = {\n\t\trunning: true,\n\t\tinFlightBySub: new Map(),\n\t\tclaimInFlight: false,\n\t};\n\tconst pollIntervalMs = opts?.pollIntervalMs ?? 120_000;\n\tconst retentionIntervalMs = opts?.retentionIntervalMs ?? 60 * 60_000;\n\n\tlogger.info(\"[emitter] started\", { id: emitterId });\n\n\t// Bootstrap matcher from active subs.\n\tawait refreshMatcher(db).catch((err) => {\n\t\tlogger.error(\"[emitter] initial matcher refresh failed\", {\n\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t});\n\t});\n\n\t// LISTEN on new outbox + sub changes\n\tconst stopNew = await listen(\n\t\t\"subscriptions:new_outbox\",\n\t\t() => {\n\t\t\tif (!state.running) return;\n\t\t\tvoid claimAndDrain(db, state, emitterId).catch((err) =>\n\t\t\t\tlogger.error(\"[emitter] claim failed\", {\n\t\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t\t}),\n\t\t\t);\n\t\t},\n\t);\n\tconst stopChanged = await listen(\n\t\t\"subscriptions:changed\",\n\t\t() => {\n\t\t\tif (!state.running) return;\n\t\t\tvoid refreshMatcher(db).catch((err) =>\n\t\t\t\tlogger.error(\"[emitter] matcher refresh failed\", {\n\t\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t\t}),\n\t\t\t);\n\t\t},\n\t);\n\n\t// Poll every pollIntervalMs as a safety net for missed notifications +\n\t// backoff wakeups (rows whose next_attempt_at has passed).\n\tconst poll = setInterval(() => {\n\t\tif (!state.running) return;\n\t\tvoid claimAndDrain(db, state, emitterId).catch((err) =>\n\t\t\tlogger.error(\"[emitter] poll claim failed\", {\n\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t}),\n\t\t);\n\t}, pollIntervalMs);\n\n\t// Kick once on startup so any rows that arrived before we started drain.\n\tvoid claimAndDrain(db, state, emitterId);\n\n\t// Retention sweep — hourly by default.\n\tconst retention = setInterval(() => {\n\t\tif (!state.running) return;\n\t\tvoid runRetention(db).catch((err) =>\n\t\t\tlogger.error(\"[emitter] retention failed\", {\n\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t}),\n\t\t);\n\t}, retentionIntervalMs);\n\n\treturn async () => {\n\t\tstate.running = false;\n\t\tclearInterval(poll);\n\t\tclearInterval(retention);\n\t\tawait stopNew();\n\t\tawait stopChanged();\n\t\tlogger.info(\"[emitter] stopped\", { id: emitterId });\n\t};\n}\n",
|
|
19
|
+
"import {\n\ttype Database,\n\tgetTargetDb,\n\ttype Subscription,\n\ttype SubscriptionOutbox,\n} from \"@secondlayer/shared/db\";\nimport {\n\tgetSubscriptionSigningSecret,\n} from \"@secondlayer/shared/db/queries/subscriptions\";\nimport { logger } from \"@secondlayer/shared/logger\";\nimport { listen } from \"@secondlayer/shared/queue/listener\";\nimport { type Kysely, sql } from \"kysely\";\nimport { buildForFormat } from \"./formats/index.ts\";\nimport { refreshMatcher } from \"./subscription-state.ts\";\n\n/**\n * Subscription emitter — drains `subscription_outbox` and POSTs deliveries.\n *\n * Hot path: LISTEN on `subscriptions:new_outbox` and `subscriptions:changed`.\n * On notify, claim a batch with `FOR UPDATE SKIP LOCKED LIMIT 50`, dispatch\n * each row via HTTP, write a `subscription_deliveries` attempt row, then\n * either mark `status='delivered'` or schedule the next attempt.\n *\n * Backoff schedule (attempt → wait):\n * 0 → 30s, 1 → 2m, 2 → 10m, 3 → 1h, 4 → 6h, 5 → 24h, 6 → 72h.\n * After `max_retries` (default 7) attempts → `status='dead'`.\n *\n * Per-sub circuit breaker: 20 consecutive failures → sub flipped to\n * `paused` with `circuit_opened_at=NOW()`. Manual /resume drains backlog.\n *\n * Per-sub concurrency cap: in-memory semaphore, default 4 in-flight HTTP\n * requests per subscription. Sprint-4 adds SSRF allowlist.\n */\n\nconst BATCH_SIZE = 50;\nconst LIVE_SHARE = 0.9; // 90% of batch to non-replay, 10% to replay\nconst BACKOFF_SECONDS = [30, 120, 600, 3600, 21600, 86400, 259200];\nconst CIRCUIT_THRESHOLD = 20;\n\ninterface RunningState {\n\trunning: boolean;\n\tinFlightBySub: Map<string, number>;\n\tclaimInFlight: boolean;\n}\n\nfunction nextDelaySeconds(attempt: number): number {\n\treturn BACKOFF_SECONDS[Math.min(attempt, BACKOFF_SECONDS.length - 1)]!;\n}\n\n// ── SSRF guard ────────────────────────────────────────────────────────\n// Block deliveries to private/loopback/link-local ranges unless\n// SECONDLAYER_ALLOW_PRIVATE_EGRESS=true (self-host + local-dev opt-in).\n\nconst PRIVATE_V4_PATTERNS = [\n\t/^127\\./, // loopback\n\t/^10\\./, // private class A\n\t/^172\\.(1[6-9]|2\\d|3[01])\\./, // private class B\n\t/^192\\.168\\./, // private class C\n\t/^169\\.254\\./, // link-local\n\t/^0\\./, // \"this\" network\n\t/^100\\.(6[4-9]|[7-9]\\d|1[01]\\d|12[0-7])\\./, // CGNAT 100.64/10\n];\n\nfunction isPrivateEgress(url: string): boolean {\n\tlet parsed: URL;\n\ttry {\n\t\tparsed = new URL(url);\n\t} catch {\n\t\treturn true; // malformed URL: reject\n\t}\n\tif (parsed.protocol !== \"http:\" && parsed.protocol !== \"https:\") {\n\t\treturn true;\n\t}\n\tconst host = parsed.hostname.toLowerCase();\n\tif (host === \"localhost\") return true;\n\tif (host === \"::1\" || host === \"[::1]\") return true;\n\tif (host.startsWith(\"fd\") || host.startsWith(\"fe80:\")) return true;\n\tfor (const p of PRIVATE_V4_PATTERNS) {\n\t\tif (p.test(host)) return true;\n\t}\n\treturn false;\n}\n\nfunction allowPrivateEgress(): boolean {\n\treturn process.env.SECONDLAYER_ALLOW_PRIVATE_EGRESS === \"true\";\n}\n\nasync function dispatchOne(\n\tdb: Kysely<Database>,\n\toutboxRow: SubscriptionOutbox,\n\tsub: Subscription,\n): Promise<{ ok: boolean; statusCode: number | null; error: string | null; durationMs: number }> {\n\tconst { body, headers } = buildForFormat(\n\t\toutboxRow,\n\t\tsub,\n\t\tgetSubscriptionSigningSecret(sub),\n\t);\n\n\tconst start = performance.now();\n\tlet statusCode: number | null = null;\n\tlet error: string | null = null;\n\tlet ok = false;\n\tlet responseBody = \"\";\n\tlet responseHeaders: Record<string, string> = {};\n\n\tif (isPrivateEgress(sub.url) && !allowPrivateEgress()) {\n\t\terror = \"refused private egress (set SECONDLAYER_ALLOW_PRIVATE_EGRESS=true to allow)\";\n\t\tlogger.warn(\"[emitter] refused private egress\", {\n\t\t\tsubscription: sub.name,\n\t\t\turl: sub.url,\n\t\t});\n\t\tconst durationMs = 0;\n\t\tconst attempt = outboxRow.attempt + 1;\n\t\tawait db\n\t\t\t.insertInto(\"subscription_deliveries\")\n\t\t\t.values({\n\t\t\t\toutbox_id: outboxRow.id,\n\t\t\t\tsubscription_id: outboxRow.subscription_id,\n\t\t\t\tattempt,\n\t\t\t\tstatus_code: null,\n\t\t\t\tresponse_headers: null,\n\t\t\t\tresponse_body: null,\n\t\t\t\terror_message: error,\n\t\t\t\tduration_ms: durationMs,\n\t\t\t})\n\t\t\t.execute();\n\t\treturn { ok: false, statusCode: null, error, durationMs };\n\t}\n\n\ttry {\n\t\tconst res = await fetch(sub.url, {\n\t\t\tmethod: \"POST\",\n\t\t\theaders,\n\t\t\tbody,\n\t\t\tsignal: AbortSignal.timeout(sub.timeout_ms),\n\t\t});\n\t\tstatusCode = res.status;\n\t\tok = res.ok;\n\t\t// Collect small response preview for the delivery log (≤8KB).\n\t\tconst buf = await res.arrayBuffer();\n\t\tconst truncated = buf.byteLength > 8192 ? buf.slice(0, 8192) : buf;\n\t\tresponseBody = Buffer.from(truncated).toString(\"utf8\");\n\t\tresponseHeaders = Object.fromEntries(res.headers.entries());\n\t} catch (err) {\n\t\terror = err instanceof Error ? err.message : String(err);\n\t}\n\tconst durationMs = Math.round(performance.now() - start);\n\n\tconst attempt = outboxRow.attempt + 1;\n\tawait db\n\t\t.insertInto(\"subscription_deliveries\")\n\t\t.values({\n\t\t\toutbox_id: outboxRow.id,\n\t\t\tsubscription_id: outboxRow.subscription_id,\n\t\t\tattempt,\n\t\t\tstatus_code: statusCode,\n\t\t\tresponse_headers: responseHeaders,\n\t\t\tresponse_body: responseBody || null,\n\t\t\terror_message: error,\n\t\t\tduration_ms: durationMs,\n\t\t})\n\t\t.execute();\n\n\treturn { ok, statusCode, error, durationMs };\n}\n\nasync function settleDelivered(\n\tdb: Kysely<Database>,\n\toutboxRow: SubscriptionOutbox,\n): Promise<void> {\n\tawait db.transaction().execute(async (tx) => {\n\t\tawait tx\n\t\t\t.updateTable(\"subscription_outbox\")\n\t\t\t.set({\n\t\t\t\tstatus: \"delivered\",\n\t\t\t\tdelivered_at: new Date(),\n\t\t\t\tattempt: outboxRow.attempt + 1,\n\t\t\t\tlocked_by: null,\n\t\t\t\tlocked_until: null,\n\t\t\t})\n\t\t\t.where(\"id\", \"=\", outboxRow.id)\n\t\t\t.execute();\n\t\tawait tx\n\t\t\t.updateTable(\"subscriptions\")\n\t\t\t.set({\n\t\t\t\tlast_delivery_at: new Date(),\n\t\t\t\tlast_success_at: new Date(),\n\t\t\t\tcircuit_failures: 0,\n\t\t\t\tlast_error: null,\n\t\t\t\tupdated_at: new Date(),\n\t\t\t})\n\t\t\t.where(\"id\", \"=\", outboxRow.subscription_id)\n\t\t\t.execute();\n\t});\n}\n\nasync function settleFailed(\n\tdb: Kysely<Database>,\n\toutboxRow: SubscriptionOutbox,\n\tsub: Subscription,\n\terrText: string,\n): Promise<void> {\n\tconst attempt = outboxRow.attempt + 1;\n\tconst isDead = attempt >= sub.max_retries;\n\tconst nextAt = isDead ? null : new Date(Date.now() + nextDelaySeconds(outboxRow.attempt) * 1000);\n\n\tawait db.transaction().execute(async (tx) => {\n\t\tawait tx\n\t\t\t.updateTable(\"subscription_outbox\")\n\t\t\t.set({\n\t\t\t\tattempt,\n\t\t\t\tnext_attempt_at: nextAt ?? new Date(),\n\t\t\t\tstatus: isDead ? \"dead\" : \"pending\",\n\t\t\t\tfailed_at: isDead ? new Date() : null,\n\t\t\t\tlocked_by: null,\n\t\t\t\tlocked_until: null,\n\t\t\t})\n\t\t\t.where(\"id\", \"=\", outboxRow.id)\n\t\t\t.execute();\n\n\t\tconst newFailures = sub.circuit_failures + 1;\n\t\tconst shouldTripCircuit = newFailures >= CIRCUIT_THRESHOLD;\n\n\t\tawait tx\n\t\t\t.updateTable(\"subscriptions\")\n\t\t\t.set({\n\t\t\t\tlast_delivery_at: new Date(),\n\t\t\t\tlast_error: errText.slice(0, 500),\n\t\t\t\tcircuit_failures: newFailures,\n\t\t\t\t...(shouldTripCircuit\n\t\t\t\t\t? { status: \"paused\", circuit_opened_at: new Date() }\n\t\t\t\t\t: {}),\n\t\t\t\tupdated_at: new Date(),\n\t\t\t})\n\t\t\t.where(\"id\", \"=\", outboxRow.subscription_id)\n\t\t\t.execute();\n\n\t\tif (shouldTripCircuit) {\n\t\t\tlogger.warn(\"Subscription circuit tripped — paused after consecutive failures\", {\n\t\t\t\tsubscription: sub.name,\n\t\t\t\tfailures: newFailures,\n\t\t\t});\n\t\t}\n\t});\n}\n\nasync function claimAndDrain(\n\tdb: Kysely<Database>,\n\tstate: RunningState,\n\temitterId: string,\n): Promise<number> {\n\tif (state.claimInFlight) return 0;\n\tstate.claimInFlight = true;\n\ttry {\n\t\t// FOR UPDATE SKIP LOCKED — multiple emitters split the batch.\n\t\t// 90/10 live vs replay so a big replay doesn't starve live emits.\n\t\tconst liveLimit = Math.max(1, Math.round(BATCH_SIZE * LIVE_SHARE));\n\t\tconst replayLimit = BATCH_SIZE - liveLimit;\n\t\tconst claimed = await db\n\t\t\t.transaction()\n\t\t\t.execute(async (tx) => {\n\t\t\t\tconst live = await sql<SubscriptionOutbox>`\n\t\t\t\t\tSELECT * FROM subscription_outbox\n\t\t\t\t\tWHERE status = 'pending'\n\t\t\t\t\t\tAND next_attempt_at <= NOW()\n\t\t\t\t\t\tAND is_replay = FALSE\n\t\t\t\t\tORDER BY next_attempt_at ASC\n\t\t\t\t\tFOR UPDATE SKIP LOCKED\n\t\t\t\t\tLIMIT ${sql.lit(liveLimit)}\n\t\t\t\t`.execute(tx);\n\t\t\t\tconst replay = await sql<SubscriptionOutbox>`\n\t\t\t\t\tSELECT * FROM subscription_outbox\n\t\t\t\t\tWHERE status = 'pending'\n\t\t\t\t\t\tAND next_attempt_at <= NOW()\n\t\t\t\t\t\tAND is_replay = TRUE\n\t\t\t\t\tORDER BY next_attempt_at ASC\n\t\t\t\t\tFOR UPDATE SKIP LOCKED\n\t\t\t\t\tLIMIT ${sql.lit(replayLimit)}\n\t\t\t\t`.execute(tx);\n\n\t\t\t\tconst combined = [...live.rows, ...replay.rows];\n\t\t\t\tif (combined.length === 0) return [];\n\n\t\t\t\tconst now = new Date();\n\t\t\t\tconst lockUntil = new Date(now.getTime() + 60_000); // 1-minute lock window\n\t\t\t\tawait tx\n\t\t\t\t\t.updateTable(\"subscription_outbox\")\n\t\t\t\t\t.set({ locked_by: emitterId, locked_until: lockUntil })\n\t\t\t\t\t.where(\n\t\t\t\t\t\t\"id\",\n\t\t\t\t\t\t\"in\",\n\t\t\t\t\t\tcombined.map((r) => r.id),\n\t\t\t\t\t)\n\t\t\t\t\t.execute();\n\t\t\t\treturn combined;\n\t\t\t});\n\n\t\tif (claimed.length === 0) return 0;\n\n\t\t// Hydrate each claimed row's sub once, then dispatch with per-sub\n\t\t// concurrency cap enforced via in-memory semaphore.\n\t\tconst bySubId = new Map<string, SubscriptionOutbox[]>();\n\t\tfor (const row of claimed) {\n\t\t\tconst arr = bySubId.get(row.subscription_id);\n\t\t\tif (arr) arr.push(row);\n\t\t\telse bySubId.set(row.subscription_id, [row]);\n\t\t}\n\n\t\tconst subIds = Array.from(bySubId.keys());\n\t\tconst subs = await db\n\t\t\t.selectFrom(\"subscriptions\")\n\t\t\t.selectAll()\n\t\t\t.where(\"id\", \"in\", subIds)\n\t\t\t.execute();\n\t\tconst subById = new Map(subs.map((s) => [s.id, s]));\n\n\t\tawait Promise.all(\n\t\t\tsubIds.map((subId) =>\n\t\t\t\tdrainForSub(db, state, subById.get(subId)!, bySubId.get(subId)!),\n\t\t\t),\n\t\t);\n\n\t\treturn claimed.length;\n\t} finally {\n\t\tstate.claimInFlight = false;\n\t}\n}\n\nasync function drainForSub(\n\tdb: Kysely<Database>,\n\tstate: RunningState,\n\tsub: Subscription,\n\trows: SubscriptionOutbox[],\n): Promise<void> {\n\tconst cap = sub.concurrency || 4;\n\tconst counter = () => state.inFlightBySub.get(sub.id) ?? 0;\n\tconst inc = () => state.inFlightBySub.set(sub.id, counter() + 1);\n\tconst dec = () => state.inFlightBySub.set(sub.id, Math.max(0, counter() - 1));\n\n\tconst queue = [...rows];\n\tconst workers: Promise<void>[] = [];\n\tconst slots = Math.min(cap, queue.length);\n\n\tfor (let i = 0; i < slots; i++) {\n\t\tworkers.push(\n\t\t\t(async () => {\n\t\t\t\twhile (state.running && queue.length > 0) {\n\t\t\t\t\tconst row = queue.shift();\n\t\t\t\t\tif (!row) break;\n\t\t\t\t\tinc();\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst result = await dispatchOne(db, row, sub);\n\t\t\t\t\t\tif (result.ok) {\n\t\t\t\t\t\t\tawait settleDelivered(db, row);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst err = result.error ?? `HTTP ${result.statusCode ?? \"?\"}`;\n\t\t\t\t\t\t\tawait settleFailed(db, row, sub, err);\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\tlogger.error(\"Emitter dispatch crashed\", {\n\t\t\t\t\t\t\toutboxId: row.id,\n\t\t\t\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t\t\t\t});\n\t\t\t\t\t\tawait settleFailed(\n\t\t\t\t\t\t\tdb,\n\t\t\t\t\t\t\trow,\n\t\t\t\t\t\t\tsub,\n\t\t\t\t\t\t\terr instanceof Error ? err.message : String(err),\n\t\t\t\t\t\t);\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tdec();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})(),\n\t\t);\n\t}\n\tawait Promise.all(workers);\n}\n\nexport interface StartEmitterOptions {\n\t/** Interval for the background poll (ms). Defaults to 2 minutes. */\n\tpollIntervalMs?: number;\n\t/** Retention sweep interval (ms). Defaults to 1 hour. */\n\tretentionIntervalMs?: number;\n}\n\nasync function runRetention(db: Kysely<Database>): Promise<void> {\n\t// delivered outbox >7d, deliveries >30d, dead outbox >90d\n\tawait sql`\n\t\tDELETE FROM subscription_outbox\n\t\tWHERE status = 'delivered' AND delivered_at < NOW() - interval '7 days'\n\t`.execute(db);\n\tawait sql`\n\t\tDELETE FROM subscription_deliveries\n\t\tWHERE dispatched_at < NOW() - interval '30 days'\n\t`.execute(db);\n\tawait sql`\n\t\tDELETE FROM subscription_outbox\n\t\tWHERE status = 'dead' AND failed_at < NOW() - interval '90 days'\n\t`.execute(db);\n}\n\nexport async function startEmitter(\n\topts?: StartEmitterOptions,\n): Promise<() => Promise<void>> {\n\tconst emitterId = `emitter-${Math.random().toString(36).slice(2, 10)}`;\n\tconst db = getTargetDb();\n\tconst state: RunningState = {\n\t\trunning: true,\n\t\tinFlightBySub: new Map(),\n\t\tclaimInFlight: false,\n\t};\n\tconst pollIntervalMs = opts?.pollIntervalMs ?? 120_000;\n\tconst retentionIntervalMs = opts?.retentionIntervalMs ?? 60 * 60_000;\n\n\tlogger.info(\"[emitter] started\", { id: emitterId });\n\n\t// Bootstrap matcher from active subs.\n\tawait refreshMatcher(db).catch((err) => {\n\t\tlogger.error(\"[emitter] initial matcher refresh failed\", {\n\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t});\n\t});\n\n\t// LISTEN on new outbox + sub changes\n\tconst stopNew = await listen(\n\t\t\"subscriptions:new_outbox\",\n\t\t() => {\n\t\t\tif (!state.running) return;\n\t\t\tvoid claimAndDrain(db, state, emitterId).catch((err) =>\n\t\t\t\tlogger.error(\"[emitter] claim failed\", {\n\t\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t\t}),\n\t\t\t);\n\t\t},\n\t);\n\tconst stopChanged = await listen(\n\t\t\"subscriptions:changed\",\n\t\t() => {\n\t\t\tif (!state.running) return;\n\t\t\tvoid refreshMatcher(db).catch((err) =>\n\t\t\t\tlogger.error(\"[emitter] matcher refresh failed\", {\n\t\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t\t}),\n\t\t\t);\n\t\t},\n\t);\n\n\t// Poll every pollIntervalMs as a safety net for missed notifications +\n\t// backoff wakeups (rows whose next_attempt_at has passed).\n\tconst poll = setInterval(() => {\n\t\tif (!state.running) return;\n\t\tvoid claimAndDrain(db, state, emitterId).catch((err) =>\n\t\t\tlogger.error(\"[emitter] poll claim failed\", {\n\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t}),\n\t\t);\n\t}, pollIntervalMs);\n\n\t// Kick once on startup so any rows that arrived before we started drain.\n\tvoid claimAndDrain(db, state, emitterId);\n\n\t// Retention sweep — hourly by default.\n\tconst retention = setInterval(() => {\n\t\tif (!state.running) return;\n\t\tvoid runRetention(db).catch((err) =>\n\t\t\tlogger.error(\"[emitter] retention failed\", {\n\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t}),\n\t\t);\n\t}, retentionIntervalMs);\n\n\treturn async () => {\n\t\tstate.running = false;\n\t\tclearInterval(poll);\n\t\tclearInterval(retention);\n\t\tawait stopNew();\n\t\tawait stopChanged();\n\t\tlogger.info(\"[emitter] stopped\", { id: emitterId });\n\t};\n}\n",
|
|
20
20
|
"import type { Subscription, SubscriptionOutbox } from \"@secondlayer/shared/db\";\nimport { logger } from \"@secondlayer/shared/logger\";\nimport { buildCloudEvents } from \"./cloudevents.ts\";\nimport { buildCloudflare } from \"./cloudflare.ts\";\nimport { buildInngest } from \"./inngest.ts\";\nimport { buildRaw } from \"./raw.ts\";\nimport { buildStandardWebhooks } from \"./standard-webhooks.ts\";\nimport { buildTrigger } from \"./trigger.ts\";\n\nexport interface FormatBuildResult {\n\tbody: string;\n\theaders: Record<string, string>;\n}\n\n/**\n * Dispatch an outbox row through the format matching the subscription's\n * `format` column. Unknown formats fall back to `standard-webhooks` with\n * a warning log — receivers always get something deliverable.\n */\nexport function buildForFormat(\n\toutboxRow: SubscriptionOutbox,\n\tsub: Subscription,\n\tsigningSecret: string,\n): FormatBuildResult {\n\tswitch (sub.format) {\n\t\tcase \"inngest\":\n\t\t\treturn buildInngest(outboxRow);\n\t\tcase \"trigger\":\n\t\t\treturn buildTrigger(outboxRow, sub);\n\t\tcase \"cloudflare\":\n\t\t\treturn buildCloudflare(outboxRow, sub);\n\t\tcase \"cloudevents\":\n\t\t\treturn buildCloudEvents(outboxRow, sub);\n\t\tcase \"raw\":\n\t\t\treturn buildRaw(outboxRow, sub);\n\t\tcase \"standard-webhooks\":\n\t\t\treturn buildStandardWebhooks(outboxRow, signingSecret);\n\t\tdefault:\n\t\t\tlogger.warn(\"Unknown subscription format, falling back to standard-webhooks\", {\n\t\t\t\tformat: sub.format,\n\t\t\t\tsubscriptionId: sub.id,\n\t\t\t});\n\t\t\treturn buildStandardWebhooks(outboxRow, signingSecret);\n\t}\n}\n\nexport {\n\tbuildStandardWebhooks,\n\tbuildInngest,\n\tbuildTrigger,\n\tbuildCloudflare,\n\tbuildCloudEvents,\n\tbuildRaw,\n};\n",
|
|
21
21
|
"import type { Subscription, SubscriptionOutbox } from \"@secondlayer/shared/db\";\n\n/**\n * CloudEvents 1.0 structured JSON — https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/formats/json-format.md\n *\n * Body shape:\n * {\n * \"specversion\": \"1.0\",\n * \"type\": \"<subgraph>.<table>.created\",\n * \"source\": \"secondlayer:<subgraph_name>\",\n * \"id\": <outbox.id>, // UUID, used for dedup\n * \"time\": <ISO 8601>,\n * \"datacontenttype\": \"application/json\",\n * \"data\": { ...row }\n * }\n *\n * Content-Type is `application/cloudevents+json; charset=utf-8`. Binary\n * mode (headers as ce-*) isn't needed — structured mode is what every CE\n * SDK accepts out of the box.\n */\n\nexport function buildCloudEvents(\n\toutboxRow: SubscriptionOutbox,\n\t_sub: Subscription,\n): { body: string; headers: Record<string, string> } {\n\tconst event = {\n\t\tspecversion: \"1.0\",\n\t\ttype: outboxRow.event_type,\n\t\tsource: `secondlayer:${outboxRow.subgraph_name}`,\n\t\tid: outboxRow.id,\n\t\ttime: new Date(outboxRow.created_at).toISOString(),\n\t\tdatacontenttype: \"application/json\",\n\t\tdata: outboxRow.payload,\n\t};\n\treturn {\n\t\tbody: JSON.stringify(event),\n\t\theaders: {\n\t\t\t\"content-type\": \"application/cloudevents+json; charset=utf-8\",\n\t\t},\n\t};\n}\n",
|
|
22
22
|
"import type { Subscription, SubscriptionOutbox } from \"@secondlayer/shared/db\";\nimport { decryptSecret } from \"@secondlayer/shared/crypto/secrets\";\n\n/**\n * Cloudflare Workflows — https://developers.cloudflare.com/workflows/build/events-and-parameters/\n *\n * POST https://api.cloudflare.com/client/v4/accounts/{account}/workflows/{name}/instances\n * Authorization: Bearer <CF_API_TOKEN>\n *\n * Body: `{ params }` — the workflow entrypoint receives this as the\n * `event.payload` object. We slip the outbox id into `params._subscriptionId`\n * so Workflows can dedupe on replays.\n */\n\nfunction resolveBearer(sub: Subscription): string | null {\n\tconst cfg = sub.auth_config as { token?: string; tokenEnc?: string };\n\tif (cfg.tokenEnc) {\n\t\ttry {\n\t\t\treturn decryptSecret(Buffer.from(cfg.tokenEnc, \"base64\"));\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\t}\n\treturn cfg.token ?? null;\n}\n\nexport function buildCloudflare(\n\toutboxRow: SubscriptionOutbox,\n\tsub: Subscription,\n): { body: string; headers: Record<string, string> } {\n\tconst body = JSON.stringify({\n\t\tparams: {\n\t\t\t...(outboxRow.payload as Record<string, unknown>),\n\t\t\t_type: outboxRow.event_type,\n\t\t\t_outboxId: outboxRow.id,\n\t\t},\n\t});\n\tconst headers: Record<string, string> = {\n\t\t\"content-type\": \"application/json\",\n\t};\n\tconst token = resolveBearer(sub);\n\tif (token) headers.authorization = `Bearer ${token}`;\n\treturn { body, headers };\n}\n",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"import { sign } from \"@secondlayer/shared/crypto/standard-webhooks\";\nimport type { SubscriptionOutbox } from \"@secondlayer/shared/db\";\n\n/**\n * Build a Standard Webhooks POST body + headers for an outbox row.\n * https://standardwebhooks.com\n *\n * Body shape: `{ type, timestamp, data }`\n * - `type` — `<subgraph>.<table>.<verb>` (e.g. `bitcoin.transfers.created`)\n * - `timestamp` — ISO 8601 when the subgraph block was processed\n * - `data` — the row payload (bigints already stringified by flush manifest)\n *\n * Headers: the three standardwebhooks.com headers + Content-Type.\n */\n\nexport interface StandardWebhooksPayload {\n\ttype: string;\n\ttimestamp: string;\n\tdata: Record<string, unknown>;\n}\n\nexport function buildStandardWebhooks(\n\toutboxRow: SubscriptionOutbox,\n\tsigningSecret: string,\n): { body: string; headers: Record<string, string> } {\n\tconst payload: StandardWebhooksPayload = {\n\t\ttype: outboxRow.event_type,\n\t\ttimestamp: new Date(outboxRow.created_at).toISOString(),\n\t\tdata: outboxRow.payload as Record<string, unknown>,\n\t};\n\tconst body = JSON.stringify(payload);\n\tconst sigHeaders = sign(body, signingSecret, {\n\t\tid: outboxRow.id,\n\t\ttimestampSeconds: Math.floor(\n\t\t\tnew Date(outboxRow.created_at).getTime() / 1000,\n\t\t),\n\t});\n\treturn {\n\t\tbody,\n\t\theaders: {\n\t\t\t\"content-type\": \"application/json\",\n\t\t\t...sigHeaders,\n\t\t},\n\t};\n}\n",
|
|
26
26
|
"import type { Subscription, SubscriptionOutbox } from \"@secondlayer/shared/db\";\nimport { decryptSecret } from \"@secondlayer/shared/crypto/secrets\";\n\n/**\n * Trigger.dev v3 task trigger — https://trigger.dev/docs/tasks/overview\n *\n * POST https://api.trigger.dev/api/v1/tasks/{taskId}/trigger\n * Authorization: Bearer <TRIGGER_SECRET_KEY>\n *\n * Body:\n * - `payload` — the row payload\n * - `options` — currently `{ idempotencyKey }` so Trigger dedupes replays\n *\n * The Trigger secret lives in `sub.auth_config.tokenEnc` (encrypted by\n * `crypto/secrets`) or `sub.auth_config.token` (plaintext, dev only).\n */\n\nfunction resolveBearer(sub: Subscription): string | null {\n\tconst cfg = sub.auth_config as {\n\t\tauthType?: string;\n\t\ttoken?: string;\n\t\ttokenEnc?: string;\n\t};\n\tif (cfg.tokenEnc) {\n\t\ttry {\n\t\t\treturn decryptSecret(Buffer.from(cfg.tokenEnc, \"base64\"));\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\t}\n\treturn cfg.token ?? null;\n}\n\nexport function buildTrigger(\n\toutboxRow: SubscriptionOutbox,\n\tsub: Subscription,\n): { body: string; headers: Record<string, string> } {\n\tconst body = JSON.stringify({\n\t\tpayload: outboxRow.payload,\n\t\toptions: {\n\t\t\tidempotencyKey: outboxRow.id,\n\t\t},\n\t});\n\tconst headers: Record<string, string> = {\n\t\t\"content-type\": \"application/json\",\n\t};\n\tconst token = resolveBearer(sub);\n\tif (token) headers.authorization = `Bearer ${token}`;\n\treturn { body, headers };\n}\n"
|
|
27
27
|
],
|
|
28
|
-
"mappings": "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",
|
|
29
|
-
"debugId": "
|
|
28
|
+
"mappings": "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",
|
|
29
|
+
"debugId": "634D01F65AB2773B64756E2164756E21",
|
|
30
30
|
"names": []
|
|
31
31
|
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
interface ReplayInput {
|
|
2
|
+
accountId: string;
|
|
3
|
+
subscriptionId: string;
|
|
4
|
+
fromBlock: number;
|
|
5
|
+
toBlock: number;
|
|
6
|
+
}
|
|
7
|
+
interface ReplayResult {
|
|
8
|
+
replayId: string;
|
|
9
|
+
enqueuedCount: number;
|
|
10
|
+
scannedCount: number;
|
|
11
|
+
}
|
|
12
|
+
declare function replaySubscription(input: ReplayInput): Promise<ReplayResult>;
|
|
13
|
+
export { replaySubscription, ReplayResult, ReplayInput };
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { createRequire } from "node:module";
|
|
2
|
+
var __require = /* @__PURE__ */ createRequire(import.meta.url);
|
|
3
|
+
|
|
4
|
+
// src/runtime/replay.ts
|
|
5
|
+
import { createHash, randomUUID } from "node:crypto";
|
|
6
|
+
import { getTargetDb } from "@secondlayer/shared/db";
|
|
7
|
+
import { getSubscription } from "@secondlayer/shared/db/queries/subscriptions";
|
|
8
|
+
import { logger } from "@secondlayer/shared/logger";
|
|
9
|
+
import { sql } from "kysely";
|
|
10
|
+
|
|
11
|
+
// src/schema/utils.ts
|
|
12
|
+
import { pgSchemaName } from "@secondlayer/shared/db/queries/subgraphs";
|
|
13
|
+
|
|
14
|
+
// src/runtime/replay.ts
|
|
15
|
+
var BATCH_SIZE = 500;
|
|
16
|
+
function replayDedupKey(subgraphName, tableName, row, replayId) {
|
|
17
|
+
const canonical = `replay:${replayId}:${subgraphName}:${tableName}:${stableStringify(row)}`;
|
|
18
|
+
return createHash("sha256").update(canonical).digest("hex").slice(0, 32);
|
|
19
|
+
}
|
|
20
|
+
function stableStringify(obj) {
|
|
21
|
+
const keys = Object.keys(obj).sort();
|
|
22
|
+
return JSON.stringify(keys.reduce((acc, k) => {
|
|
23
|
+
acc[k] = obj[k];
|
|
24
|
+
return acc;
|
|
25
|
+
}, {}));
|
|
26
|
+
}
|
|
27
|
+
async function resolveSchemaName(db, subgraphName) {
|
|
28
|
+
const row = await db.selectFrom("subgraphs").select("schema_name").where("name", "=", subgraphName).executeTakeFirst();
|
|
29
|
+
return row?.schema_name ?? pgSchemaName(subgraphName);
|
|
30
|
+
}
|
|
31
|
+
async function replaySubscription(input) {
|
|
32
|
+
if (input.fromBlock > input.toBlock) {
|
|
33
|
+
throw new Error("fromBlock must be <= toBlock");
|
|
34
|
+
}
|
|
35
|
+
if (input.toBlock - input.fromBlock > 1e5) {
|
|
36
|
+
throw new Error("replay range exceeds 100k blocks");
|
|
37
|
+
}
|
|
38
|
+
const db = getTargetDb();
|
|
39
|
+
const sub = await getSubscription(db, input.accountId, input.subscriptionId);
|
|
40
|
+
if (!sub)
|
|
41
|
+
throw new Error("Subscription not found");
|
|
42
|
+
const schema = await resolveSchemaName(db, sub.subgraph_name);
|
|
43
|
+
const replayId = randomUUID();
|
|
44
|
+
let scanned = 0;
|
|
45
|
+
let enqueued = 0;
|
|
46
|
+
let offset = 0;
|
|
47
|
+
while (true) {
|
|
48
|
+
const { rows } = await sql`SELECT * FROM ${sql.raw(`"${schema}"."${sub.table_name}"`)}
|
|
49
|
+
WHERE _block_height >= ${sql.lit(input.fromBlock)}
|
|
50
|
+
AND _block_height <= ${sql.lit(input.toBlock)}
|
|
51
|
+
ORDER BY _block_height, _created_at
|
|
52
|
+
LIMIT ${sql.lit(BATCH_SIZE)} OFFSET ${sql.lit(offset)}`.execute(db);
|
|
53
|
+
if (rows.length === 0)
|
|
54
|
+
break;
|
|
55
|
+
scanned += rows.length;
|
|
56
|
+
const inserts = rows.map((row) => ({
|
|
57
|
+
subscription_id: sub.id,
|
|
58
|
+
subgraph_name: sub.subgraph_name,
|
|
59
|
+
table_name: sub.table_name,
|
|
60
|
+
block_height: Number(row._block_height),
|
|
61
|
+
tx_id: row._tx_id ?? null,
|
|
62
|
+
row_pk: {
|
|
63
|
+
blockHeight: Number(row._block_height),
|
|
64
|
+
txId: row._tx_id ?? "",
|
|
65
|
+
replayId
|
|
66
|
+
},
|
|
67
|
+
event_type: `${sub.subgraph_name}.${sub.table_name}.replay`,
|
|
68
|
+
payload: row,
|
|
69
|
+
dedup_key: replayDedupKey(sub.subgraph_name, sub.table_name, row, replayId),
|
|
70
|
+
is_replay: true
|
|
71
|
+
}));
|
|
72
|
+
const result = await db.insertInto("subscription_outbox").values(inserts).onConflict((oc) => oc.columns(["subscription_id", "dedup_key"]).doNothing()).executeTakeFirst();
|
|
73
|
+
enqueued += Number(result.numInsertedOrUpdatedRows ?? 0);
|
|
74
|
+
if (rows.length < BATCH_SIZE)
|
|
75
|
+
break;
|
|
76
|
+
offset += BATCH_SIZE;
|
|
77
|
+
}
|
|
78
|
+
logger.info("Replay enqueued", {
|
|
79
|
+
subscription: sub.name,
|
|
80
|
+
replayId,
|
|
81
|
+
scanned,
|
|
82
|
+
enqueued,
|
|
83
|
+
fromBlock: input.fromBlock,
|
|
84
|
+
toBlock: input.toBlock
|
|
85
|
+
});
|
|
86
|
+
return { replayId, enqueuedCount: enqueued, scannedCount: scanned };
|
|
87
|
+
}
|
|
88
|
+
export {
|
|
89
|
+
replaySubscription
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
//# debugId=8797D9FD3413449564756E2164756E21
|
|
93
|
+
//# sourceMappingURL=replay.js.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/runtime/replay.ts", "../src/schema/utils.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"import { createHash, randomUUID } from \"node:crypto\";\nimport { type Database, getTargetDb } from \"@secondlayer/shared/db\";\nimport { getSubscription } from \"@secondlayer/shared/db/queries/subscriptions\";\nimport { logger } from \"@secondlayer/shared/logger\";\nimport { type Kysely, sql } from \"kysely\";\nimport { pgSchemaName as defaultSchemaName } from \"../schema/utils.ts\";\n\n/**\n * Replay historical subgraph rows as new outbox entries for a single\n * subscription. Rows are marked `is_replay=TRUE` so the emitter can\n * prioritize live deliveries (90/10 split) and the delivery log can\n * tag replays distinctly.\n *\n * Dedup: replays get a distinct `dedup_key` prefix so they never\n * collide with the original block-time emission. That means running\n * replay twice will produce duplicate outbox rows — the receiver is\n * responsible for idempotency via the `webhook-id` header.\n */\n\nconst BATCH_SIZE = 500;\n\nfunction replayDedupKey(\n\tsubgraphName: string,\n\ttableName: string,\n\trow: Record<string, unknown>,\n\treplayId: string,\n): string {\n\tconst canonical = `replay:${replayId}:${subgraphName}:${tableName}:${stableStringify(row)}`;\n\treturn createHash(\"sha256\").update(canonical).digest(\"hex\").slice(0, 32);\n}\n\nfunction stableStringify(obj: Record<string, unknown>): string {\n\tconst keys = Object.keys(obj).sort();\n\treturn JSON.stringify(\n\t\tkeys.reduce<Record<string, unknown>>((acc, k) => {\n\t\t\tacc[k] = obj[k];\n\t\t\treturn acc;\n\t\t}, {}),\n\t);\n}\n\nexport interface ReplayInput {\n\taccountId: string;\n\tsubscriptionId: string;\n\tfromBlock: number;\n\ttoBlock: number;\n}\n\nexport interface ReplayResult {\n\treplayId: string;\n\tenqueuedCount: number;\n\tscannedCount: number;\n}\n\nasync function resolveSchemaName(\n\tdb: Kysely<Database>,\n\tsubgraphName: string,\n): Promise<string> {\n\tconst row = await db\n\t\t.selectFrom(\"subgraphs\")\n\t\t.select(\"schema_name\")\n\t\t.where(\"name\", \"=\", subgraphName)\n\t\t.executeTakeFirst();\n\treturn row?.schema_name ?? defaultSchemaName(subgraphName);\n}\n\nexport async function replaySubscription(\n\tinput: ReplayInput,\n): Promise<ReplayResult> {\n\tif (input.fromBlock > input.toBlock) {\n\t\tthrow new Error(\"fromBlock must be <= toBlock\");\n\t}\n\tif (input.toBlock - input.fromBlock > 100_000) {\n\t\tthrow new Error(\"replay range exceeds 100k blocks\");\n\t}\n\n\tconst db = getTargetDb();\n\tconst sub = await getSubscription(db, input.accountId, input.subscriptionId);\n\tif (!sub) throw new Error(\"Subscription not found\");\n\n\tconst schema = await resolveSchemaName(db, sub.subgraph_name);\n\tconst replayId = randomUUID();\n\n\tlet scanned = 0;\n\tlet enqueued = 0;\n\tlet offset = 0;\n\n\twhile (true) {\n\t\tconst { rows } = await sql<\n\t\t\tRecord<string, unknown>\n\t\t>`SELECT * FROM ${sql.raw(`\"${schema}\".\"${sub.table_name}\"`)}\n\t\t\tWHERE _block_height >= ${sql.lit(input.fromBlock)}\n\t\t\t\tAND _block_height <= ${sql.lit(input.toBlock)}\n\t\t\tORDER BY _block_height, _created_at\n\t\t\tLIMIT ${sql.lit(BATCH_SIZE)} OFFSET ${sql.lit(offset)}`.execute(db);\n\n\t\tif (rows.length === 0) break;\n\t\tscanned += rows.length;\n\n\t\tconst inserts = rows.map((row) => ({\n\t\t\tsubscription_id: sub.id,\n\t\t\tsubgraph_name: sub.subgraph_name,\n\t\t\ttable_name: sub.table_name,\n\t\t\tblock_height: Number(row._block_height),\n\t\t\ttx_id: (row._tx_id as string | undefined) ?? null,\n\t\t\trow_pk: {\n\t\t\t\tblockHeight: Number(row._block_height),\n\t\t\t\ttxId: row._tx_id ?? \"\",\n\t\t\t\treplayId,\n\t\t\t},\n\t\t\tevent_type: `${sub.subgraph_name}.${sub.table_name}.replay`,\n\t\t\tpayload: row,\n\t\t\tdedup_key: replayDedupKey(\n\t\t\t\tsub.subgraph_name,\n\t\t\t\tsub.table_name,\n\t\t\t\trow,\n\t\t\t\treplayId,\n\t\t\t),\n\t\t\tis_replay: true,\n\t\t}));\n\n\t\tconst result = await db\n\t\t\t.insertInto(\"subscription_outbox\")\n\t\t\t.values(inserts)\n\t\t\t.onConflict((oc) =>\n\t\t\t\toc.columns([\"subscription_id\", \"dedup_key\"]).doNothing(),\n\t\t\t)\n\t\t\t.executeTakeFirst();\n\t\tenqueued += Number(result.numInsertedOrUpdatedRows ?? 0);\n\n\t\tif (rows.length < BATCH_SIZE) break;\n\t\toffset += BATCH_SIZE;\n\t}\n\n\tlogger.info(\"Replay enqueued\", {\n\t\tsubscription: sub.name,\n\t\treplayId,\n\t\tscanned,\n\t\tenqueued,\n\t\tfromBlock: input.fromBlock,\n\t\ttoBlock: input.toBlock,\n\t});\n\n\treturn { replayId, enqueuedCount: enqueued, scannedCount: scanned };\n}\n",
|
|
6
|
+
"// Re-export canonical pgSchemaName from shared\nexport { pgSchemaName } from \"@secondlayer/shared/db/queries/subgraphs\";\n"
|
|
7
|
+
],
|
|
8
|
+
"mappings": "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",
|
|
9
|
+
"debugId": "8797D9FD3413449564756E2164756E21",
|
|
10
|
+
"names": []
|
|
11
|
+
}
|
package/dist/src/service.js
CHANGED
|
@@ -1682,11 +1682,47 @@ function buildForFormat(outboxRow, sub, signingSecret) {
|
|
|
1682
1682
|
|
|
1683
1683
|
// src/runtime/emitter.ts
|
|
1684
1684
|
var BATCH_SIZE = 50;
|
|
1685
|
+
var LIVE_SHARE = 0.9;
|
|
1685
1686
|
var BACKOFF_SECONDS = [30, 120, 600, 3600, 21600, 86400, 259200];
|
|
1686
1687
|
var CIRCUIT_THRESHOLD = 20;
|
|
1687
1688
|
function nextDelaySeconds(attempt) {
|
|
1688
1689
|
return BACKOFF_SECONDS[Math.min(attempt, BACKOFF_SECONDS.length - 1)];
|
|
1689
1690
|
}
|
|
1691
|
+
var PRIVATE_V4_PATTERNS = [
|
|
1692
|
+
/^127\./,
|
|
1693
|
+
/^10\./,
|
|
1694
|
+
/^172\.(1[6-9]|2\d|3[01])\./,
|
|
1695
|
+
/^192\.168\./,
|
|
1696
|
+
/^169\.254\./,
|
|
1697
|
+
/^0\./,
|
|
1698
|
+
/^100\.(6[4-9]|[7-9]\d|1[01]\d|12[0-7])\./
|
|
1699
|
+
];
|
|
1700
|
+
function isPrivateEgress(url) {
|
|
1701
|
+
let parsed;
|
|
1702
|
+
try {
|
|
1703
|
+
parsed = new URL(url);
|
|
1704
|
+
} catch {
|
|
1705
|
+
return true;
|
|
1706
|
+
}
|
|
1707
|
+
if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
|
|
1708
|
+
return true;
|
|
1709
|
+
}
|
|
1710
|
+
const host = parsed.hostname.toLowerCase();
|
|
1711
|
+
if (host === "localhost")
|
|
1712
|
+
return true;
|
|
1713
|
+
if (host === "::1" || host === "[::1]")
|
|
1714
|
+
return true;
|
|
1715
|
+
if (host.startsWith("fd") || host.startsWith("fe80:"))
|
|
1716
|
+
return true;
|
|
1717
|
+
for (const p of PRIVATE_V4_PATTERNS) {
|
|
1718
|
+
if (p.test(host))
|
|
1719
|
+
return true;
|
|
1720
|
+
}
|
|
1721
|
+
return false;
|
|
1722
|
+
}
|
|
1723
|
+
function allowPrivateEgress() {
|
|
1724
|
+
return process.env.SECONDLAYER_ALLOW_PRIVATE_EGRESS === "true";
|
|
1725
|
+
}
|
|
1690
1726
|
async function dispatchOne(db, outboxRow, sub) {
|
|
1691
1727
|
const { body, headers } = buildForFormat(outboxRow, sub, getSubscriptionSigningSecret(sub));
|
|
1692
1728
|
const start = performance.now();
|
|
@@ -1695,6 +1731,26 @@ async function dispatchOne(db, outboxRow, sub) {
|
|
|
1695
1731
|
let ok = false;
|
|
1696
1732
|
let responseBody = "";
|
|
1697
1733
|
let responseHeaders = {};
|
|
1734
|
+
if (isPrivateEgress(sub.url) && !allowPrivateEgress()) {
|
|
1735
|
+
error = "refused private egress (set SECONDLAYER_ALLOW_PRIVATE_EGRESS=true to allow)";
|
|
1736
|
+
logger8.warn("[emitter] refused private egress", {
|
|
1737
|
+
subscription: sub.name,
|
|
1738
|
+
url: sub.url
|
|
1739
|
+
});
|
|
1740
|
+
const durationMs2 = 0;
|
|
1741
|
+
const attempt2 = outboxRow.attempt + 1;
|
|
1742
|
+
await db.insertInto("subscription_deliveries").values({
|
|
1743
|
+
outbox_id: outboxRow.id,
|
|
1744
|
+
subscription_id: outboxRow.subscription_id,
|
|
1745
|
+
attempt: attempt2,
|
|
1746
|
+
status_code: null,
|
|
1747
|
+
response_headers: null,
|
|
1748
|
+
response_body: null,
|
|
1749
|
+
error_message: error,
|
|
1750
|
+
duration_ms: durationMs2
|
|
1751
|
+
}).execute();
|
|
1752
|
+
return { ok: false, statusCode: null, error, durationMs: durationMs2 };
|
|
1753
|
+
}
|
|
1698
1754
|
try {
|
|
1699
1755
|
const res = await fetch(sub.url, {
|
|
1700
1756
|
method: "POST",
|
|
@@ -1778,20 +1834,34 @@ async function claimAndDrain(db, state, emitterId) {
|
|
|
1778
1834
|
return 0;
|
|
1779
1835
|
state.claimInFlight = true;
|
|
1780
1836
|
try {
|
|
1837
|
+
const liveLimit = Math.max(1, Math.round(BATCH_SIZE * LIVE_SHARE));
|
|
1838
|
+
const replayLimit = BATCH_SIZE - liveLimit;
|
|
1781
1839
|
const claimed = await db.transaction().execute(async (tx) => {
|
|
1782
|
-
const
|
|
1840
|
+
const live = await sql4`
|
|
1841
|
+
SELECT * FROM subscription_outbox
|
|
1842
|
+
WHERE status = 'pending'
|
|
1843
|
+
AND next_attempt_at <= NOW()
|
|
1844
|
+
AND is_replay = FALSE
|
|
1845
|
+
ORDER BY next_attempt_at ASC
|
|
1846
|
+
FOR UPDATE SKIP LOCKED
|
|
1847
|
+
LIMIT ${sql4.lit(liveLimit)}
|
|
1848
|
+
`.execute(tx);
|
|
1849
|
+
const replay = await sql4`
|
|
1783
1850
|
SELECT * FROM subscription_outbox
|
|
1784
|
-
WHERE status = 'pending'
|
|
1851
|
+
WHERE status = 'pending'
|
|
1852
|
+
AND next_attempt_at <= NOW()
|
|
1853
|
+
AND is_replay = TRUE
|
|
1785
1854
|
ORDER BY next_attempt_at ASC
|
|
1786
1855
|
FOR UPDATE SKIP LOCKED
|
|
1787
|
-
LIMIT ${sql4.lit(
|
|
1856
|
+
LIMIT ${sql4.lit(replayLimit)}
|
|
1788
1857
|
`.execute(tx);
|
|
1789
|
-
|
|
1858
|
+
const combined = [...live.rows, ...replay.rows];
|
|
1859
|
+
if (combined.length === 0)
|
|
1790
1860
|
return [];
|
|
1791
1861
|
const now = new Date;
|
|
1792
1862
|
const lockUntil = new Date(now.getTime() + 60000);
|
|
1793
|
-
await tx.updateTable("subscription_outbox").set({ locked_by: emitterId, locked_until: lockUntil }).where("id", "in",
|
|
1794
|
-
return
|
|
1863
|
+
await tx.updateTable("subscription_outbox").set({ locked_by: emitterId, locked_until: lockUntil }).where("id", "in", combined.map((r) => r.id)).execute();
|
|
1864
|
+
return combined;
|
|
1795
1865
|
});
|
|
1796
1866
|
if (claimed.length === 0)
|
|
1797
1867
|
return 0;
|
|
@@ -2070,5 +2140,5 @@ var shutdown = async () => {
|
|
|
2070
2140
|
process.on("SIGINT", shutdown);
|
|
2071
2141
|
process.on("SIGTERM", shutdown);
|
|
2072
2142
|
|
|
2073
|
-
//# debugId=
|
|
2143
|
+
//# debugId=4DE5FBD02184D64464756E2164756E21
|
|
2074
2144
|
//# sourceMappingURL=service.js.map
|
package/dist/src/service.js.map
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"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",
|
|
17
17
|
"import { getErrorMessage } from \"@secondlayer/shared\";\nimport { getRawClient, getTargetDb } from \"@secondlayer/shared/db\";\nimport type { Subgraph } from \"@secondlayer/shared/db\";\nimport { listSubgraphs } from \"@secondlayer/shared/db/queries/subgraphs\";\nimport { logger } from \"@secondlayer/shared/logger\";\nimport { pgSchemaName } from \"../schema/utils.ts\";\nimport type { SubgraphDefinition, SubgraphSchema } from \"../types.ts\";\nimport { processBlock } from \"./block-processor.ts\";\n\n/**\n * Handle a chain reorg for all active subgraphs.\n * Deletes rows at the reorged block height from all subgraph tables,\n * then reprocesses the new canonical block.\n */\nexport async function handleSubgraphReorg(\n\tblockHeight: number,\n\tloadSubgraphDef: (sg: Subgraph) => Promise<SubgraphDefinition>,\n): Promise<void> {\n\t// Subgraphs table + tenant schemas (and thus the DELETE DDL target) live\n\t// in the target DB; source DB is unrelated here.\n\tconst targetDb = getTargetDb();\n\tconst client = getRawClient(\"target\");\n\tconst activeSubgraphs = (await listSubgraphs(targetDb)).filter(\n\t\t(v: Subgraph) => v.status === \"active\",\n\t);\n\n\tif (activeSubgraphs.length === 0) return;\n\n\tlogger.info(\"Propagating reorg to subgraphs\", {\n\t\tblockHeight,\n\t\tsubgraphCount: activeSubgraphs.length,\n\t});\n\n\tfor (const sg of activeSubgraphs) {\n\t\ttry {\n\t\t\tconst schema = sg.definition.schema as SubgraphSchema | undefined;\n\t\t\tif (!schema) continue;\n\n\t\t\tconst schemaName = sg.schema_name ?? pgSchemaName(sg.name);\n\n\t\t\t// Delete rows at the reorged block height from all tables\n\t\t\tfor (const tableName of Object.keys(schema)) {\n\t\t\t\tawait client.unsafe(\n\t\t\t\t\t`DELETE FROM \"${schemaName}\".\"${tableName}\" WHERE \"_block_height\" = $1`,\n\t\t\t\t\t[blockHeight],\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tlogger.info(\"Subgraph reorg cleanup done\", {\n\t\t\t\tsubgraph: sg.name,\n\t\t\t\tblockHeight,\n\t\t\t});\n\n\t\t\t// Reprocess the new canonical block\n\t\t\tconst def = await loadSubgraphDef(sg);\n\t\t\tawait processBlock(def, sg.name, blockHeight);\n\n\t\t\tlogger.info(\"Subgraph reorg reprocessed\", {\n\t\t\t\tsubgraph: sg.name,\n\t\t\t\tblockHeight,\n\t\t\t});\n\t\t} catch (err) {\n\t\t\tlogger.error(\"Subgraph reorg handling failed\", {\n\t\t\t\tsubgraph: sg.name,\n\t\t\t\tblockHeight,\n\t\t\t\terror: getErrorMessage(err),\n\t\t\t});\n\t\t}\n\t}\n}\n",
|
|
18
18
|
"import { getErrorMessage } from \"@secondlayer/shared\";\nimport { getTargetDb } from \"@secondlayer/shared/db\";\nimport type { Subgraph } from \"@secondlayer/shared/db\";\nimport {\n\tlistSubgraphs,\n\tupdateSubgraphStatus,\n} from \"@secondlayer/shared/db/queries/subgraphs\";\nimport { logger } from \"@secondlayer/shared/logger\";\nimport { listen } from \"@secondlayer/shared/queue/listener\";\nimport type { SubgraphDefinition } from \"../types.ts\";\nimport { catchUpSubgraph } from \"./catchup.ts\";\nimport { startEmitter } from \"./emitter.ts\";\nimport { handleSubgraphReorg } from \"./reorg.ts\";\n\nconst CHANNEL_NEW_BLOCK = \"indexer:new_block\";\nconst DEFAULT_CONCURRENCY = 5;\nconst POLL_INTERVAL_MS = 5_000;\n\n/**\n * URL to LISTEN on for indexer-fired channels (`indexer:new_block`,\n * `subgraph_reorg`). In dual-DB mode the indexer writes to the shared\n * source DB, so listeners must bind there. In single-DB mode this falls\n * back to `DATABASE_URL` — identical to pre-dual-DB behavior.\n */\nfunction sourceListenerUrl(): string | undefined {\n\treturn process.env.SOURCE_DATABASE_URL ?? process.env.DATABASE_URL;\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(`${sg.handler_path}?v=${Date.now()}`);\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\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}\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\t// Catch-up all subgraphs on startup (subgraphs table lives in target DB)\n\tconst targetDb = getTargetDb();\n\tconst activeSubgraphs = (await listSubgraphs(targetDb)).filter(\n\t\t(v: Subgraph) => v.status === \"active\",\n\t);\n\tfor (const sg of activeSubgraphs) {\n\t\ttry {\n\t\t\tconst def = await loadSubgraphDefinition(sg);\n\t\t\tawait catchUpSubgraph(def, sg.name);\n\t\t} catch (err) {\n\t\t\tconst msg = getErrorMessage(err);\n\t\t\tif (isHandlerNotFoundError(err)) {\n\t\t\t\tawait updateSubgraphStatus(targetDb, sg.name, \"error\");\n\t\t\t}\n\t\t\tlogger.error(\"Subgraph catch-up failed on startup\", {\n\t\t\t\tsubgraph: sg.name,\n\t\t\t\terror: msg,\n\t\t\t});\n\t\t}\n\t}\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\tif (!running) return;\n\t\t\t// The NOTIFY payload doesn't include block height — we rely on\n\t\t\t// each subgraph's last_processed_block to determine what to process.\n\t\t\t// Trigger catch-up for all subgraphs.\n\t\t\tconst db = getTargetDb();\n\t\t\tconst subgraphs = (await listSubgraphs(db)).filter(\n\t\t\t\t(v: Subgraph) => v.status === \"active\",\n\t\t\t);\n\t\t\tcleanupCaches(subgraphs);\n\t\t\tfor (const sg of subgraphs) {\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 processing 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\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(async () => {\n\t\tif (!running) 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\tfor (const sg of subgraphs) {\n\t\t\ttry {\n\t\t\t\tconst def = await loadSubgraphDefinition(sg);\n\t\t\t\tawait catchUpSubgraph(def, sg.name);\n\t\t\t} catch (err) {\n\t\t\t\tlogger.error(\"Subgraph poll processing failed\", {\n\t\t\t\t\tsubgraph: sg.name,\n\t\t\t\t\terror: getErrorMessage(err),\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}, POLL_INTERVAL_MS);\n\n\t// Boot subscription emitter in same process — shares pool, shares\n\t// LISTEN connection. Platform mode is control plane only and does not\n\t// need the emitter, but processor itself isn't started there.\n\tconst stopEmitter = await startEmitter();\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 stopListening();\n\t\tawait stopReorgListening();\n\t\tawait stopEmitter();\n\t\tlogger.info(\"Subgraph processor stopped\");\n\t};\n}\n",
|
|
19
|
-
"import {\n\ttype Database,\n\tgetTargetDb,\n\ttype Subscription,\n\ttype SubscriptionOutbox,\n} from \"@secondlayer/shared/db\";\nimport {\n\tgetSubscriptionSigningSecret,\n} from \"@secondlayer/shared/db/queries/subscriptions\";\nimport { logger } from \"@secondlayer/shared/logger\";\nimport { listen } from \"@secondlayer/shared/queue/listener\";\nimport { type Kysely, sql } from \"kysely\";\nimport { buildForFormat } from \"./formats/index.ts\";\nimport { refreshMatcher } from \"./subscription-state.ts\";\n\n/**\n * Subscription emitter — drains `subscription_outbox` and POSTs deliveries.\n *\n * Hot path: LISTEN on `subscriptions:new_outbox` and `subscriptions:changed`.\n * On notify, claim a batch with `FOR UPDATE SKIP LOCKED LIMIT 50`, dispatch\n * each row via HTTP, write a `subscription_deliveries` attempt row, then\n * either mark `status='delivered'` or schedule the next attempt.\n *\n * Backoff schedule (attempt → wait):\n * 0 → 30s, 1 → 2m, 2 → 10m, 3 → 1h, 4 → 6h, 5 → 24h, 6 → 72h.\n * After `max_retries` (default 7) attempts → `status='dead'`.\n *\n * Per-sub circuit breaker: 20 consecutive failures → sub flipped to\n * `paused` with `circuit_opened_at=NOW()`. Manual /resume drains backlog.\n *\n * Per-sub concurrency cap: in-memory semaphore, default 4 in-flight HTTP\n * requests per subscription. Sprint-4 adds SSRF allowlist.\n */\n\nconst BATCH_SIZE = 50;\nconst BACKOFF_SECONDS = [30, 120, 600, 3600, 21600, 86400, 259200];\nconst CIRCUIT_THRESHOLD = 20;\n\ninterface RunningState {\n\trunning: boolean;\n\tinFlightBySub: Map<string, number>;\n\tclaimInFlight: boolean;\n}\n\nfunction nextDelaySeconds(attempt: number): number {\n\treturn BACKOFF_SECONDS[Math.min(attempt, BACKOFF_SECONDS.length - 1)]!;\n}\n\nasync function dispatchOne(\n\tdb: Kysely<Database>,\n\toutboxRow: SubscriptionOutbox,\n\tsub: Subscription,\n): Promise<{ ok: boolean; statusCode: number | null; error: string | null; durationMs: number }> {\n\tconst { body, headers } = buildForFormat(\n\t\toutboxRow,\n\t\tsub,\n\t\tgetSubscriptionSigningSecret(sub),\n\t);\n\n\tconst start = performance.now();\n\tlet statusCode: number | null = null;\n\tlet error: string | null = null;\n\tlet ok = false;\n\tlet responseBody = \"\";\n\tlet responseHeaders: Record<string, string> = {};\n\n\ttry {\n\t\tconst res = await fetch(sub.url, {\n\t\t\tmethod: \"POST\",\n\t\t\theaders,\n\t\t\tbody,\n\t\t\tsignal: AbortSignal.timeout(sub.timeout_ms),\n\t\t});\n\t\tstatusCode = res.status;\n\t\tok = res.ok;\n\t\t// Collect small response preview for the delivery log (≤8KB).\n\t\tconst buf = await res.arrayBuffer();\n\t\tconst truncated = buf.byteLength > 8192 ? buf.slice(0, 8192) : buf;\n\t\tresponseBody = Buffer.from(truncated).toString(\"utf8\");\n\t\tresponseHeaders = Object.fromEntries(res.headers.entries());\n\t} catch (err) {\n\t\terror = err instanceof Error ? err.message : String(err);\n\t}\n\tconst durationMs = Math.round(performance.now() - start);\n\n\tconst attempt = outboxRow.attempt + 1;\n\tawait db\n\t\t.insertInto(\"subscription_deliveries\")\n\t\t.values({\n\t\t\toutbox_id: outboxRow.id,\n\t\t\tsubscription_id: outboxRow.subscription_id,\n\t\t\tattempt,\n\t\t\tstatus_code: statusCode,\n\t\t\tresponse_headers: responseHeaders,\n\t\t\tresponse_body: responseBody || null,\n\t\t\terror_message: error,\n\t\t\tduration_ms: durationMs,\n\t\t})\n\t\t.execute();\n\n\treturn { ok, statusCode, error, durationMs };\n}\n\nasync function settleDelivered(\n\tdb: Kysely<Database>,\n\toutboxRow: SubscriptionOutbox,\n): Promise<void> {\n\tawait db.transaction().execute(async (tx) => {\n\t\tawait tx\n\t\t\t.updateTable(\"subscription_outbox\")\n\t\t\t.set({\n\t\t\t\tstatus: \"delivered\",\n\t\t\t\tdelivered_at: new Date(),\n\t\t\t\tattempt: outboxRow.attempt + 1,\n\t\t\t\tlocked_by: null,\n\t\t\t\tlocked_until: null,\n\t\t\t})\n\t\t\t.where(\"id\", \"=\", outboxRow.id)\n\t\t\t.execute();\n\t\tawait tx\n\t\t\t.updateTable(\"subscriptions\")\n\t\t\t.set({\n\t\t\t\tlast_delivery_at: new Date(),\n\t\t\t\tlast_success_at: new Date(),\n\t\t\t\tcircuit_failures: 0,\n\t\t\t\tlast_error: null,\n\t\t\t\tupdated_at: new Date(),\n\t\t\t})\n\t\t\t.where(\"id\", \"=\", outboxRow.subscription_id)\n\t\t\t.execute();\n\t});\n}\n\nasync function settleFailed(\n\tdb: Kysely<Database>,\n\toutboxRow: SubscriptionOutbox,\n\tsub: Subscription,\n\terrText: string,\n): Promise<void> {\n\tconst attempt = outboxRow.attempt + 1;\n\tconst isDead = attempt >= sub.max_retries;\n\tconst nextAt = isDead ? null : new Date(Date.now() + nextDelaySeconds(outboxRow.attempt) * 1000);\n\n\tawait db.transaction().execute(async (tx) => {\n\t\tawait tx\n\t\t\t.updateTable(\"subscription_outbox\")\n\t\t\t.set({\n\t\t\t\tattempt,\n\t\t\t\tnext_attempt_at: nextAt ?? new Date(),\n\t\t\t\tstatus: isDead ? \"dead\" : \"pending\",\n\t\t\t\tfailed_at: isDead ? new Date() : null,\n\t\t\t\tlocked_by: null,\n\t\t\t\tlocked_until: null,\n\t\t\t})\n\t\t\t.where(\"id\", \"=\", outboxRow.id)\n\t\t\t.execute();\n\n\t\tconst newFailures = sub.circuit_failures + 1;\n\t\tconst shouldTripCircuit = newFailures >= CIRCUIT_THRESHOLD;\n\n\t\tawait tx\n\t\t\t.updateTable(\"subscriptions\")\n\t\t\t.set({\n\t\t\t\tlast_delivery_at: new Date(),\n\t\t\t\tlast_error: errText.slice(0, 500),\n\t\t\t\tcircuit_failures: newFailures,\n\t\t\t\t...(shouldTripCircuit\n\t\t\t\t\t? { status: \"paused\", circuit_opened_at: new Date() }\n\t\t\t\t\t: {}),\n\t\t\t\tupdated_at: new Date(),\n\t\t\t})\n\t\t\t.where(\"id\", \"=\", outboxRow.subscription_id)\n\t\t\t.execute();\n\n\t\tif (shouldTripCircuit) {\n\t\t\tlogger.warn(\"Subscription circuit tripped — paused after consecutive failures\", {\n\t\t\t\tsubscription: sub.name,\n\t\t\t\tfailures: newFailures,\n\t\t\t});\n\t\t}\n\t});\n}\n\nasync function claimAndDrain(\n\tdb: Kysely<Database>,\n\tstate: RunningState,\n\temitterId: string,\n): Promise<number> {\n\tif (state.claimInFlight) return 0;\n\tstate.claimInFlight = true;\n\ttry {\n\t\t// FOR UPDATE SKIP LOCKED — multiple emitters split the batch.\n\t\tconst claimed = await db\n\t\t\t.transaction()\n\t\t\t.execute(async (tx) => {\n\t\t\t\tconst rows = await sql<SubscriptionOutbox>`\n\t\t\t\t\tSELECT * FROM subscription_outbox\n\t\t\t\t\tWHERE status = 'pending' AND next_attempt_at <= NOW()\n\t\t\t\t\tORDER BY next_attempt_at ASC\n\t\t\t\t\tFOR UPDATE SKIP LOCKED\n\t\t\t\t\tLIMIT ${sql.lit(BATCH_SIZE)}\n\t\t\t\t`.execute(tx);\n\n\t\t\t\tif (rows.rows.length === 0) return [];\n\n\t\t\t\tconst now = new Date();\n\t\t\t\tconst lockUntil = new Date(now.getTime() + 60_000); // 1-minute lock window\n\t\t\t\tawait tx\n\t\t\t\t\t.updateTable(\"subscription_outbox\")\n\t\t\t\t\t.set({ locked_by: emitterId, locked_until: lockUntil })\n\t\t\t\t\t.where(\n\t\t\t\t\t\t\"id\",\n\t\t\t\t\t\t\"in\",\n\t\t\t\t\t\trows.rows.map((r) => r.id),\n\t\t\t\t\t)\n\t\t\t\t\t.execute();\n\t\t\t\treturn rows.rows;\n\t\t\t});\n\n\t\tif (claimed.length === 0) return 0;\n\n\t\t// Hydrate each claimed row's sub once, then dispatch with per-sub\n\t\t// concurrency cap enforced via in-memory semaphore.\n\t\tconst bySubId = new Map<string, SubscriptionOutbox[]>();\n\t\tfor (const row of claimed) {\n\t\t\tconst arr = bySubId.get(row.subscription_id);\n\t\t\tif (arr) arr.push(row);\n\t\t\telse bySubId.set(row.subscription_id, [row]);\n\t\t}\n\n\t\tconst subIds = Array.from(bySubId.keys());\n\t\tconst subs = await db\n\t\t\t.selectFrom(\"subscriptions\")\n\t\t\t.selectAll()\n\t\t\t.where(\"id\", \"in\", subIds)\n\t\t\t.execute();\n\t\tconst subById = new Map(subs.map((s) => [s.id, s]));\n\n\t\tawait Promise.all(\n\t\t\tsubIds.map((subId) =>\n\t\t\t\tdrainForSub(db, state, subById.get(subId)!, bySubId.get(subId)!),\n\t\t\t),\n\t\t);\n\n\t\treturn claimed.length;\n\t} finally {\n\t\tstate.claimInFlight = false;\n\t}\n}\n\nasync function drainForSub(\n\tdb: Kysely<Database>,\n\tstate: RunningState,\n\tsub: Subscription,\n\trows: SubscriptionOutbox[],\n): Promise<void> {\n\tconst cap = sub.concurrency || 4;\n\tconst counter = () => state.inFlightBySub.get(sub.id) ?? 0;\n\tconst inc = () => state.inFlightBySub.set(sub.id, counter() + 1);\n\tconst dec = () => state.inFlightBySub.set(sub.id, Math.max(0, counter() - 1));\n\n\tconst queue = [...rows];\n\tconst workers: Promise<void>[] = [];\n\tconst slots = Math.min(cap, queue.length);\n\n\tfor (let i = 0; i < slots; i++) {\n\t\tworkers.push(\n\t\t\t(async () => {\n\t\t\t\twhile (state.running && queue.length > 0) {\n\t\t\t\t\tconst row = queue.shift();\n\t\t\t\t\tif (!row) break;\n\t\t\t\t\tinc();\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst result = await dispatchOne(db, row, sub);\n\t\t\t\t\t\tif (result.ok) {\n\t\t\t\t\t\t\tawait settleDelivered(db, row);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst err = result.error ?? `HTTP ${result.statusCode ?? \"?\"}`;\n\t\t\t\t\t\t\tawait settleFailed(db, row, sub, err);\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\tlogger.error(\"Emitter dispatch crashed\", {\n\t\t\t\t\t\t\toutboxId: row.id,\n\t\t\t\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t\t\t\t});\n\t\t\t\t\t\tawait settleFailed(\n\t\t\t\t\t\t\tdb,\n\t\t\t\t\t\t\trow,\n\t\t\t\t\t\t\tsub,\n\t\t\t\t\t\t\terr instanceof Error ? err.message : String(err),\n\t\t\t\t\t\t);\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tdec();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})(),\n\t\t);\n\t}\n\tawait Promise.all(workers);\n}\n\nexport interface StartEmitterOptions {\n\t/** Interval for the background poll (ms). Defaults to 2 minutes. */\n\tpollIntervalMs?: number;\n\t/** Retention sweep interval (ms). Defaults to 1 hour. */\n\tretentionIntervalMs?: number;\n}\n\nasync function runRetention(db: Kysely<Database>): Promise<void> {\n\t// delivered outbox >7d, deliveries >30d, dead outbox >90d\n\tawait sql`\n\t\tDELETE FROM subscription_outbox\n\t\tWHERE status = 'delivered' AND delivered_at < NOW() - interval '7 days'\n\t`.execute(db);\n\tawait sql`\n\t\tDELETE FROM subscription_deliveries\n\t\tWHERE dispatched_at < NOW() - interval '30 days'\n\t`.execute(db);\n\tawait sql`\n\t\tDELETE FROM subscription_outbox\n\t\tWHERE status = 'dead' AND failed_at < NOW() - interval '90 days'\n\t`.execute(db);\n}\n\nexport async function startEmitter(\n\topts?: StartEmitterOptions,\n): Promise<() => Promise<void>> {\n\tconst emitterId = `emitter-${Math.random().toString(36).slice(2, 10)}`;\n\tconst db = getTargetDb();\n\tconst state: RunningState = {\n\t\trunning: true,\n\t\tinFlightBySub: new Map(),\n\t\tclaimInFlight: false,\n\t};\n\tconst pollIntervalMs = opts?.pollIntervalMs ?? 120_000;\n\tconst retentionIntervalMs = opts?.retentionIntervalMs ?? 60 * 60_000;\n\n\tlogger.info(\"[emitter] started\", { id: emitterId });\n\n\t// Bootstrap matcher from active subs.\n\tawait refreshMatcher(db).catch((err) => {\n\t\tlogger.error(\"[emitter] initial matcher refresh failed\", {\n\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t});\n\t});\n\n\t// LISTEN on new outbox + sub changes\n\tconst stopNew = await listen(\n\t\t\"subscriptions:new_outbox\",\n\t\t() => {\n\t\t\tif (!state.running) return;\n\t\t\tvoid claimAndDrain(db, state, emitterId).catch((err) =>\n\t\t\t\tlogger.error(\"[emitter] claim failed\", {\n\t\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t\t}),\n\t\t\t);\n\t\t},\n\t);\n\tconst stopChanged = await listen(\n\t\t\"subscriptions:changed\",\n\t\t() => {\n\t\t\tif (!state.running) return;\n\t\t\tvoid refreshMatcher(db).catch((err) =>\n\t\t\t\tlogger.error(\"[emitter] matcher refresh failed\", {\n\t\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t\t}),\n\t\t\t);\n\t\t},\n\t);\n\n\t// Poll every pollIntervalMs as a safety net for missed notifications +\n\t// backoff wakeups (rows whose next_attempt_at has passed).\n\tconst poll = setInterval(() => {\n\t\tif (!state.running) return;\n\t\tvoid claimAndDrain(db, state, emitterId).catch((err) =>\n\t\t\tlogger.error(\"[emitter] poll claim failed\", {\n\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t}),\n\t\t);\n\t}, pollIntervalMs);\n\n\t// Kick once on startup so any rows that arrived before we started drain.\n\tvoid claimAndDrain(db, state, emitterId);\n\n\t// Retention sweep — hourly by default.\n\tconst retention = setInterval(() => {\n\t\tif (!state.running) return;\n\t\tvoid runRetention(db).catch((err) =>\n\t\t\tlogger.error(\"[emitter] retention failed\", {\n\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t}),\n\t\t);\n\t}, retentionIntervalMs);\n\n\treturn async () => {\n\t\tstate.running = false;\n\t\tclearInterval(poll);\n\t\tclearInterval(retention);\n\t\tawait stopNew();\n\t\tawait stopChanged();\n\t\tlogger.info(\"[emitter] stopped\", { id: emitterId });\n\t};\n}\n",
|
|
19
|
+
"import {\n\ttype Database,\n\tgetTargetDb,\n\ttype Subscription,\n\ttype SubscriptionOutbox,\n} from \"@secondlayer/shared/db\";\nimport {\n\tgetSubscriptionSigningSecret,\n} from \"@secondlayer/shared/db/queries/subscriptions\";\nimport { logger } from \"@secondlayer/shared/logger\";\nimport { listen } from \"@secondlayer/shared/queue/listener\";\nimport { type Kysely, sql } from \"kysely\";\nimport { buildForFormat } from \"./formats/index.ts\";\nimport { refreshMatcher } from \"./subscription-state.ts\";\n\n/**\n * Subscription emitter — drains `subscription_outbox` and POSTs deliveries.\n *\n * Hot path: LISTEN on `subscriptions:new_outbox` and `subscriptions:changed`.\n * On notify, claim a batch with `FOR UPDATE SKIP LOCKED LIMIT 50`, dispatch\n * each row via HTTP, write a `subscription_deliveries` attempt row, then\n * either mark `status='delivered'` or schedule the next attempt.\n *\n * Backoff schedule (attempt → wait):\n * 0 → 30s, 1 → 2m, 2 → 10m, 3 → 1h, 4 → 6h, 5 → 24h, 6 → 72h.\n * After `max_retries` (default 7) attempts → `status='dead'`.\n *\n * Per-sub circuit breaker: 20 consecutive failures → sub flipped to\n * `paused` with `circuit_opened_at=NOW()`. Manual /resume drains backlog.\n *\n * Per-sub concurrency cap: in-memory semaphore, default 4 in-flight HTTP\n * requests per subscription. Sprint-4 adds SSRF allowlist.\n */\n\nconst BATCH_SIZE = 50;\nconst LIVE_SHARE = 0.9; // 90% of batch to non-replay, 10% to replay\nconst BACKOFF_SECONDS = [30, 120, 600, 3600, 21600, 86400, 259200];\nconst CIRCUIT_THRESHOLD = 20;\n\ninterface RunningState {\n\trunning: boolean;\n\tinFlightBySub: Map<string, number>;\n\tclaimInFlight: boolean;\n}\n\nfunction nextDelaySeconds(attempt: number): number {\n\treturn BACKOFF_SECONDS[Math.min(attempt, BACKOFF_SECONDS.length - 1)]!;\n}\n\n// ── SSRF guard ────────────────────────────────────────────────────────\n// Block deliveries to private/loopback/link-local ranges unless\n// SECONDLAYER_ALLOW_PRIVATE_EGRESS=true (self-host + local-dev opt-in).\n\nconst PRIVATE_V4_PATTERNS = [\n\t/^127\\./, // loopback\n\t/^10\\./, // private class A\n\t/^172\\.(1[6-9]|2\\d|3[01])\\./, // private class B\n\t/^192\\.168\\./, // private class C\n\t/^169\\.254\\./, // link-local\n\t/^0\\./, // \"this\" network\n\t/^100\\.(6[4-9]|[7-9]\\d|1[01]\\d|12[0-7])\\./, // CGNAT 100.64/10\n];\n\nfunction isPrivateEgress(url: string): boolean {\n\tlet parsed: URL;\n\ttry {\n\t\tparsed = new URL(url);\n\t} catch {\n\t\treturn true; // malformed URL: reject\n\t}\n\tif (parsed.protocol !== \"http:\" && parsed.protocol !== \"https:\") {\n\t\treturn true;\n\t}\n\tconst host = parsed.hostname.toLowerCase();\n\tif (host === \"localhost\") return true;\n\tif (host === \"::1\" || host === \"[::1]\") return true;\n\tif (host.startsWith(\"fd\") || host.startsWith(\"fe80:\")) return true;\n\tfor (const p of PRIVATE_V4_PATTERNS) {\n\t\tif (p.test(host)) return true;\n\t}\n\treturn false;\n}\n\nfunction allowPrivateEgress(): boolean {\n\treturn process.env.SECONDLAYER_ALLOW_PRIVATE_EGRESS === \"true\";\n}\n\nasync function dispatchOne(\n\tdb: Kysely<Database>,\n\toutboxRow: SubscriptionOutbox,\n\tsub: Subscription,\n): Promise<{ ok: boolean; statusCode: number | null; error: string | null; durationMs: number }> {\n\tconst { body, headers } = buildForFormat(\n\t\toutboxRow,\n\t\tsub,\n\t\tgetSubscriptionSigningSecret(sub),\n\t);\n\n\tconst start = performance.now();\n\tlet statusCode: number | null = null;\n\tlet error: string | null = null;\n\tlet ok = false;\n\tlet responseBody = \"\";\n\tlet responseHeaders: Record<string, string> = {};\n\n\tif (isPrivateEgress(sub.url) && !allowPrivateEgress()) {\n\t\terror = \"refused private egress (set SECONDLAYER_ALLOW_PRIVATE_EGRESS=true to allow)\";\n\t\tlogger.warn(\"[emitter] refused private egress\", {\n\t\t\tsubscription: sub.name,\n\t\t\turl: sub.url,\n\t\t});\n\t\tconst durationMs = 0;\n\t\tconst attempt = outboxRow.attempt + 1;\n\t\tawait db\n\t\t\t.insertInto(\"subscription_deliveries\")\n\t\t\t.values({\n\t\t\t\toutbox_id: outboxRow.id,\n\t\t\t\tsubscription_id: outboxRow.subscription_id,\n\t\t\t\tattempt,\n\t\t\t\tstatus_code: null,\n\t\t\t\tresponse_headers: null,\n\t\t\t\tresponse_body: null,\n\t\t\t\terror_message: error,\n\t\t\t\tduration_ms: durationMs,\n\t\t\t})\n\t\t\t.execute();\n\t\treturn { ok: false, statusCode: null, error, durationMs };\n\t}\n\n\ttry {\n\t\tconst res = await fetch(sub.url, {\n\t\t\tmethod: \"POST\",\n\t\t\theaders,\n\t\t\tbody,\n\t\t\tsignal: AbortSignal.timeout(sub.timeout_ms),\n\t\t});\n\t\tstatusCode = res.status;\n\t\tok = res.ok;\n\t\t// Collect small response preview for the delivery log (≤8KB).\n\t\tconst buf = await res.arrayBuffer();\n\t\tconst truncated = buf.byteLength > 8192 ? buf.slice(0, 8192) : buf;\n\t\tresponseBody = Buffer.from(truncated).toString(\"utf8\");\n\t\tresponseHeaders = Object.fromEntries(res.headers.entries());\n\t} catch (err) {\n\t\terror = err instanceof Error ? err.message : String(err);\n\t}\n\tconst durationMs = Math.round(performance.now() - start);\n\n\tconst attempt = outboxRow.attempt + 1;\n\tawait db\n\t\t.insertInto(\"subscription_deliveries\")\n\t\t.values({\n\t\t\toutbox_id: outboxRow.id,\n\t\t\tsubscription_id: outboxRow.subscription_id,\n\t\t\tattempt,\n\t\t\tstatus_code: statusCode,\n\t\t\tresponse_headers: responseHeaders,\n\t\t\tresponse_body: responseBody || null,\n\t\t\terror_message: error,\n\t\t\tduration_ms: durationMs,\n\t\t})\n\t\t.execute();\n\n\treturn { ok, statusCode, error, durationMs };\n}\n\nasync function settleDelivered(\n\tdb: Kysely<Database>,\n\toutboxRow: SubscriptionOutbox,\n): Promise<void> {\n\tawait db.transaction().execute(async (tx) => {\n\t\tawait tx\n\t\t\t.updateTable(\"subscription_outbox\")\n\t\t\t.set({\n\t\t\t\tstatus: \"delivered\",\n\t\t\t\tdelivered_at: new Date(),\n\t\t\t\tattempt: outboxRow.attempt + 1,\n\t\t\t\tlocked_by: null,\n\t\t\t\tlocked_until: null,\n\t\t\t})\n\t\t\t.where(\"id\", \"=\", outboxRow.id)\n\t\t\t.execute();\n\t\tawait tx\n\t\t\t.updateTable(\"subscriptions\")\n\t\t\t.set({\n\t\t\t\tlast_delivery_at: new Date(),\n\t\t\t\tlast_success_at: new Date(),\n\t\t\t\tcircuit_failures: 0,\n\t\t\t\tlast_error: null,\n\t\t\t\tupdated_at: new Date(),\n\t\t\t})\n\t\t\t.where(\"id\", \"=\", outboxRow.subscription_id)\n\t\t\t.execute();\n\t});\n}\n\nasync function settleFailed(\n\tdb: Kysely<Database>,\n\toutboxRow: SubscriptionOutbox,\n\tsub: Subscription,\n\terrText: string,\n): Promise<void> {\n\tconst attempt = outboxRow.attempt + 1;\n\tconst isDead = attempt >= sub.max_retries;\n\tconst nextAt = isDead ? null : new Date(Date.now() + nextDelaySeconds(outboxRow.attempt) * 1000);\n\n\tawait db.transaction().execute(async (tx) => {\n\t\tawait tx\n\t\t\t.updateTable(\"subscription_outbox\")\n\t\t\t.set({\n\t\t\t\tattempt,\n\t\t\t\tnext_attempt_at: nextAt ?? new Date(),\n\t\t\t\tstatus: isDead ? \"dead\" : \"pending\",\n\t\t\t\tfailed_at: isDead ? new Date() : null,\n\t\t\t\tlocked_by: null,\n\t\t\t\tlocked_until: null,\n\t\t\t})\n\t\t\t.where(\"id\", \"=\", outboxRow.id)\n\t\t\t.execute();\n\n\t\tconst newFailures = sub.circuit_failures + 1;\n\t\tconst shouldTripCircuit = newFailures >= CIRCUIT_THRESHOLD;\n\n\t\tawait tx\n\t\t\t.updateTable(\"subscriptions\")\n\t\t\t.set({\n\t\t\t\tlast_delivery_at: new Date(),\n\t\t\t\tlast_error: errText.slice(0, 500),\n\t\t\t\tcircuit_failures: newFailures,\n\t\t\t\t...(shouldTripCircuit\n\t\t\t\t\t? { status: \"paused\", circuit_opened_at: new Date() }\n\t\t\t\t\t: {}),\n\t\t\t\tupdated_at: new Date(),\n\t\t\t})\n\t\t\t.where(\"id\", \"=\", outboxRow.subscription_id)\n\t\t\t.execute();\n\n\t\tif (shouldTripCircuit) {\n\t\t\tlogger.warn(\"Subscription circuit tripped — paused after consecutive failures\", {\n\t\t\t\tsubscription: sub.name,\n\t\t\t\tfailures: newFailures,\n\t\t\t});\n\t\t}\n\t});\n}\n\nasync function claimAndDrain(\n\tdb: Kysely<Database>,\n\tstate: RunningState,\n\temitterId: string,\n): Promise<number> {\n\tif (state.claimInFlight) return 0;\n\tstate.claimInFlight = true;\n\ttry {\n\t\t// FOR UPDATE SKIP LOCKED — multiple emitters split the batch.\n\t\t// 90/10 live vs replay so a big replay doesn't starve live emits.\n\t\tconst liveLimit = Math.max(1, Math.round(BATCH_SIZE * LIVE_SHARE));\n\t\tconst replayLimit = BATCH_SIZE - liveLimit;\n\t\tconst claimed = await db\n\t\t\t.transaction()\n\t\t\t.execute(async (tx) => {\n\t\t\t\tconst live = await sql<SubscriptionOutbox>`\n\t\t\t\t\tSELECT * FROM subscription_outbox\n\t\t\t\t\tWHERE status = 'pending'\n\t\t\t\t\t\tAND next_attempt_at <= NOW()\n\t\t\t\t\t\tAND is_replay = FALSE\n\t\t\t\t\tORDER BY next_attempt_at ASC\n\t\t\t\t\tFOR UPDATE SKIP LOCKED\n\t\t\t\t\tLIMIT ${sql.lit(liveLimit)}\n\t\t\t\t`.execute(tx);\n\t\t\t\tconst replay = await sql<SubscriptionOutbox>`\n\t\t\t\t\tSELECT * FROM subscription_outbox\n\t\t\t\t\tWHERE status = 'pending'\n\t\t\t\t\t\tAND next_attempt_at <= NOW()\n\t\t\t\t\t\tAND is_replay = TRUE\n\t\t\t\t\tORDER BY next_attempt_at ASC\n\t\t\t\t\tFOR UPDATE SKIP LOCKED\n\t\t\t\t\tLIMIT ${sql.lit(replayLimit)}\n\t\t\t\t`.execute(tx);\n\n\t\t\t\tconst combined = [...live.rows, ...replay.rows];\n\t\t\t\tif (combined.length === 0) return [];\n\n\t\t\t\tconst now = new Date();\n\t\t\t\tconst lockUntil = new Date(now.getTime() + 60_000); // 1-minute lock window\n\t\t\t\tawait tx\n\t\t\t\t\t.updateTable(\"subscription_outbox\")\n\t\t\t\t\t.set({ locked_by: emitterId, locked_until: lockUntil })\n\t\t\t\t\t.where(\n\t\t\t\t\t\t\"id\",\n\t\t\t\t\t\t\"in\",\n\t\t\t\t\t\tcombined.map((r) => r.id),\n\t\t\t\t\t)\n\t\t\t\t\t.execute();\n\t\t\t\treturn combined;\n\t\t\t});\n\n\t\tif (claimed.length === 0) return 0;\n\n\t\t// Hydrate each claimed row's sub once, then dispatch with per-sub\n\t\t// concurrency cap enforced via in-memory semaphore.\n\t\tconst bySubId = new Map<string, SubscriptionOutbox[]>();\n\t\tfor (const row of claimed) {\n\t\t\tconst arr = bySubId.get(row.subscription_id);\n\t\t\tif (arr) arr.push(row);\n\t\t\telse bySubId.set(row.subscription_id, [row]);\n\t\t}\n\n\t\tconst subIds = Array.from(bySubId.keys());\n\t\tconst subs = await db\n\t\t\t.selectFrom(\"subscriptions\")\n\t\t\t.selectAll()\n\t\t\t.where(\"id\", \"in\", subIds)\n\t\t\t.execute();\n\t\tconst subById = new Map(subs.map((s) => [s.id, s]));\n\n\t\tawait Promise.all(\n\t\t\tsubIds.map((subId) =>\n\t\t\t\tdrainForSub(db, state, subById.get(subId)!, bySubId.get(subId)!),\n\t\t\t),\n\t\t);\n\n\t\treturn claimed.length;\n\t} finally {\n\t\tstate.claimInFlight = false;\n\t}\n}\n\nasync function drainForSub(\n\tdb: Kysely<Database>,\n\tstate: RunningState,\n\tsub: Subscription,\n\trows: SubscriptionOutbox[],\n): Promise<void> {\n\tconst cap = sub.concurrency || 4;\n\tconst counter = () => state.inFlightBySub.get(sub.id) ?? 0;\n\tconst inc = () => state.inFlightBySub.set(sub.id, counter() + 1);\n\tconst dec = () => state.inFlightBySub.set(sub.id, Math.max(0, counter() - 1));\n\n\tconst queue = [...rows];\n\tconst workers: Promise<void>[] = [];\n\tconst slots = Math.min(cap, queue.length);\n\n\tfor (let i = 0; i < slots; i++) {\n\t\tworkers.push(\n\t\t\t(async () => {\n\t\t\t\twhile (state.running && queue.length > 0) {\n\t\t\t\t\tconst row = queue.shift();\n\t\t\t\t\tif (!row) break;\n\t\t\t\t\tinc();\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst result = await dispatchOne(db, row, sub);\n\t\t\t\t\t\tif (result.ok) {\n\t\t\t\t\t\t\tawait settleDelivered(db, row);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst err = result.error ?? `HTTP ${result.statusCode ?? \"?\"}`;\n\t\t\t\t\t\t\tawait settleFailed(db, row, sub, err);\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\tlogger.error(\"Emitter dispatch crashed\", {\n\t\t\t\t\t\t\toutboxId: row.id,\n\t\t\t\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t\t\t\t});\n\t\t\t\t\t\tawait settleFailed(\n\t\t\t\t\t\t\tdb,\n\t\t\t\t\t\t\trow,\n\t\t\t\t\t\t\tsub,\n\t\t\t\t\t\t\terr instanceof Error ? err.message : String(err),\n\t\t\t\t\t\t);\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tdec();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})(),\n\t\t);\n\t}\n\tawait Promise.all(workers);\n}\n\nexport interface StartEmitterOptions {\n\t/** Interval for the background poll (ms). Defaults to 2 minutes. */\n\tpollIntervalMs?: number;\n\t/** Retention sweep interval (ms). Defaults to 1 hour. */\n\tretentionIntervalMs?: number;\n}\n\nasync function runRetention(db: Kysely<Database>): Promise<void> {\n\t// delivered outbox >7d, deliveries >30d, dead outbox >90d\n\tawait sql`\n\t\tDELETE FROM subscription_outbox\n\t\tWHERE status = 'delivered' AND delivered_at < NOW() - interval '7 days'\n\t`.execute(db);\n\tawait sql`\n\t\tDELETE FROM subscription_deliveries\n\t\tWHERE dispatched_at < NOW() - interval '30 days'\n\t`.execute(db);\n\tawait sql`\n\t\tDELETE FROM subscription_outbox\n\t\tWHERE status = 'dead' AND failed_at < NOW() - interval '90 days'\n\t`.execute(db);\n}\n\nexport async function startEmitter(\n\topts?: StartEmitterOptions,\n): Promise<() => Promise<void>> {\n\tconst emitterId = `emitter-${Math.random().toString(36).slice(2, 10)}`;\n\tconst db = getTargetDb();\n\tconst state: RunningState = {\n\t\trunning: true,\n\t\tinFlightBySub: new Map(),\n\t\tclaimInFlight: false,\n\t};\n\tconst pollIntervalMs = opts?.pollIntervalMs ?? 120_000;\n\tconst retentionIntervalMs = opts?.retentionIntervalMs ?? 60 * 60_000;\n\n\tlogger.info(\"[emitter] started\", { id: emitterId });\n\n\t// Bootstrap matcher from active subs.\n\tawait refreshMatcher(db).catch((err) => {\n\t\tlogger.error(\"[emitter] initial matcher refresh failed\", {\n\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t});\n\t});\n\n\t// LISTEN on new outbox + sub changes\n\tconst stopNew = await listen(\n\t\t\"subscriptions:new_outbox\",\n\t\t() => {\n\t\t\tif (!state.running) return;\n\t\t\tvoid claimAndDrain(db, state, emitterId).catch((err) =>\n\t\t\t\tlogger.error(\"[emitter] claim failed\", {\n\t\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t\t}),\n\t\t\t);\n\t\t},\n\t);\n\tconst stopChanged = await listen(\n\t\t\"subscriptions:changed\",\n\t\t() => {\n\t\t\tif (!state.running) return;\n\t\t\tvoid refreshMatcher(db).catch((err) =>\n\t\t\t\tlogger.error(\"[emitter] matcher refresh failed\", {\n\t\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t\t}),\n\t\t\t);\n\t\t},\n\t);\n\n\t// Poll every pollIntervalMs as a safety net for missed notifications +\n\t// backoff wakeups (rows whose next_attempt_at has passed).\n\tconst poll = setInterval(() => {\n\t\tif (!state.running) return;\n\t\tvoid claimAndDrain(db, state, emitterId).catch((err) =>\n\t\t\tlogger.error(\"[emitter] poll claim failed\", {\n\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t}),\n\t\t);\n\t}, pollIntervalMs);\n\n\t// Kick once on startup so any rows that arrived before we started drain.\n\tvoid claimAndDrain(db, state, emitterId);\n\n\t// Retention sweep — hourly by default.\n\tconst retention = setInterval(() => {\n\t\tif (!state.running) return;\n\t\tvoid runRetention(db).catch((err) =>\n\t\t\tlogger.error(\"[emitter] retention failed\", {\n\t\t\t\terror: err instanceof Error ? err.message : String(err),\n\t\t\t}),\n\t\t);\n\t}, retentionIntervalMs);\n\n\treturn async () => {\n\t\tstate.running = false;\n\t\tclearInterval(poll);\n\t\tclearInterval(retention);\n\t\tawait stopNew();\n\t\tawait stopChanged();\n\t\tlogger.info(\"[emitter] stopped\", { id: emitterId });\n\t};\n}\n",
|
|
20
20
|
"import type { Subscription, SubscriptionOutbox } from \"@secondlayer/shared/db\";\nimport { logger } from \"@secondlayer/shared/logger\";\nimport { buildCloudEvents } from \"./cloudevents.ts\";\nimport { buildCloudflare } from \"./cloudflare.ts\";\nimport { buildInngest } from \"./inngest.ts\";\nimport { buildRaw } from \"./raw.ts\";\nimport { buildStandardWebhooks } from \"./standard-webhooks.ts\";\nimport { buildTrigger } from \"./trigger.ts\";\n\nexport interface FormatBuildResult {\n\tbody: string;\n\theaders: Record<string, string>;\n}\n\n/**\n * Dispatch an outbox row through the format matching the subscription's\n * `format` column. Unknown formats fall back to `standard-webhooks` with\n * a warning log — receivers always get something deliverable.\n */\nexport function buildForFormat(\n\toutboxRow: SubscriptionOutbox,\n\tsub: Subscription,\n\tsigningSecret: string,\n): FormatBuildResult {\n\tswitch (sub.format) {\n\t\tcase \"inngest\":\n\t\t\treturn buildInngest(outboxRow);\n\t\tcase \"trigger\":\n\t\t\treturn buildTrigger(outboxRow, sub);\n\t\tcase \"cloudflare\":\n\t\t\treturn buildCloudflare(outboxRow, sub);\n\t\tcase \"cloudevents\":\n\t\t\treturn buildCloudEvents(outboxRow, sub);\n\t\tcase \"raw\":\n\t\t\treturn buildRaw(outboxRow, sub);\n\t\tcase \"standard-webhooks\":\n\t\t\treturn buildStandardWebhooks(outboxRow, signingSecret);\n\t\tdefault:\n\t\t\tlogger.warn(\"Unknown subscription format, falling back to standard-webhooks\", {\n\t\t\t\tformat: sub.format,\n\t\t\t\tsubscriptionId: sub.id,\n\t\t\t});\n\t\t\treturn buildStandardWebhooks(outboxRow, signingSecret);\n\t}\n}\n\nexport {\n\tbuildStandardWebhooks,\n\tbuildInngest,\n\tbuildTrigger,\n\tbuildCloudflare,\n\tbuildCloudEvents,\n\tbuildRaw,\n};\n",
|
|
21
21
|
"import type { Subscription, SubscriptionOutbox } from \"@secondlayer/shared/db\";\n\n/**\n * CloudEvents 1.0 structured JSON — https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/formats/json-format.md\n *\n * Body shape:\n * {\n * \"specversion\": \"1.0\",\n * \"type\": \"<subgraph>.<table>.created\",\n * \"source\": \"secondlayer:<subgraph_name>\",\n * \"id\": <outbox.id>, // UUID, used for dedup\n * \"time\": <ISO 8601>,\n * \"datacontenttype\": \"application/json\",\n * \"data\": { ...row }\n * }\n *\n * Content-Type is `application/cloudevents+json; charset=utf-8`. Binary\n * mode (headers as ce-*) isn't needed — structured mode is what every CE\n * SDK accepts out of the box.\n */\n\nexport function buildCloudEvents(\n\toutboxRow: SubscriptionOutbox,\n\t_sub: Subscription,\n): { body: string; headers: Record<string, string> } {\n\tconst event = {\n\t\tspecversion: \"1.0\",\n\t\ttype: outboxRow.event_type,\n\t\tsource: `secondlayer:${outboxRow.subgraph_name}`,\n\t\tid: outboxRow.id,\n\t\ttime: new Date(outboxRow.created_at).toISOString(),\n\t\tdatacontenttype: \"application/json\",\n\t\tdata: outboxRow.payload,\n\t};\n\treturn {\n\t\tbody: JSON.stringify(event),\n\t\theaders: {\n\t\t\t\"content-type\": \"application/cloudevents+json; charset=utf-8\",\n\t\t},\n\t};\n}\n",
|
|
22
22
|
"import type { Subscription, SubscriptionOutbox } from \"@secondlayer/shared/db\";\nimport { decryptSecret } from \"@secondlayer/shared/crypto/secrets\";\n\n/**\n * Cloudflare Workflows — https://developers.cloudflare.com/workflows/build/events-and-parameters/\n *\n * POST https://api.cloudflare.com/client/v4/accounts/{account}/workflows/{name}/instances\n * Authorization: Bearer <CF_API_TOKEN>\n *\n * Body: `{ params }` — the workflow entrypoint receives this as the\n * `event.payload` object. We slip the outbox id into `params._subscriptionId`\n * so Workflows can dedupe on replays.\n */\n\nfunction resolveBearer(sub: Subscription): string | null {\n\tconst cfg = sub.auth_config as { token?: string; tokenEnc?: string };\n\tif (cfg.tokenEnc) {\n\t\ttry {\n\t\t\treturn decryptSecret(Buffer.from(cfg.tokenEnc, \"base64\"));\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\t}\n\treturn cfg.token ?? null;\n}\n\nexport function buildCloudflare(\n\toutboxRow: SubscriptionOutbox,\n\tsub: Subscription,\n): { body: string; headers: Record<string, string> } {\n\tconst body = JSON.stringify({\n\t\tparams: {\n\t\t\t...(outboxRow.payload as Record<string, unknown>),\n\t\t\t_type: outboxRow.event_type,\n\t\t\t_outboxId: outboxRow.id,\n\t\t},\n\t});\n\tconst headers: Record<string, string> = {\n\t\t\"content-type\": \"application/json\",\n\t};\n\tconst token = resolveBearer(sub);\n\tif (token) headers.authorization = `Bearer ${token}`;\n\treturn { body, headers };\n}\n",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"import type { Subscription, SubscriptionOutbox } from \"@secondlayer/shared/db\";\nimport { decryptSecret } from \"@secondlayer/shared/crypto/secrets\";\n\n/**\n * Trigger.dev v3 task trigger — https://trigger.dev/docs/tasks/overview\n *\n * POST https://api.trigger.dev/api/v1/tasks/{taskId}/trigger\n * Authorization: Bearer <TRIGGER_SECRET_KEY>\n *\n * Body:\n * - `payload` — the row payload\n * - `options` — currently `{ idempotencyKey }` so Trigger dedupes replays\n *\n * The Trigger secret lives in `sub.auth_config.tokenEnc` (encrypted by\n * `crypto/secrets`) or `sub.auth_config.token` (plaintext, dev only).\n */\n\nfunction resolveBearer(sub: Subscription): string | null {\n\tconst cfg = sub.auth_config as {\n\t\tauthType?: string;\n\t\ttoken?: string;\n\t\ttokenEnc?: string;\n\t};\n\tif (cfg.tokenEnc) {\n\t\ttry {\n\t\t\treturn decryptSecret(Buffer.from(cfg.tokenEnc, \"base64\"));\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\t}\n\treturn cfg.token ?? null;\n}\n\nexport function buildTrigger(\n\toutboxRow: SubscriptionOutbox,\n\tsub: Subscription,\n): { body: string; headers: Record<string, string> } {\n\tconst body = JSON.stringify({\n\t\tpayload: outboxRow.payload,\n\t\toptions: {\n\t\t\tidempotencyKey: outboxRow.id,\n\t\t},\n\t});\n\tconst headers: Record<string, string> = {\n\t\t\"content-type\": \"application/json\",\n\t};\n\tconst token = resolveBearer(sub);\n\tif (token) headers.authorization = `Bearer ${token}`;\n\treturn { body, headers };\n}\n",
|
|
27
27
|
"// Subgraph processor service entry point\n// Run with: bun run packages/subgraphs/src/service.ts\nimport { logger } from \"@secondlayer/shared/logger\";\nimport { startSubgraphProcessor } from \"./runtime/processor.ts\";\n\nconst processor = await startSubgraphProcessor({\n\tconcurrency: Number.parseInt(process.env.SUBGRAPH_CONCURRENCY ?? \"5\"),\n});\n\n// Graceful shutdown\nconst shutdown = async () => {\n\tlogger.info(\"Shutting down subgraph processor...\");\n\tawait processor();\n\tprocess.exit(0);\n};\n\nprocess.on(\"SIGINT\", shutdown);\nprocess.on(\"SIGTERM\", shutdown);\n"
|
|
28
28
|
],
|
|
29
|
-
"mappings": "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",
|
|
30
|
-
"debugId": "
|
|
29
|
+
"mappings": "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",
|
|
30
|
+
"debugId": "4DE5FBD02184D64464756E2164756E21",
|
|
31
31
|
"names": []
|
|
32
32
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@secondlayer/subgraphs",
|
|
3
|
-
"version": "1.0.0
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/src/index.js",
|
|
6
6
|
"types": "./dist/src/index.d.ts",
|
|
@@ -24,6 +24,10 @@
|
|
|
24
24
|
"./runtime/source-matcher": {
|
|
25
25
|
"types": "./dist/src/runtime/source-matcher.d.ts",
|
|
26
26
|
"import": "./dist/src/runtime/source-matcher.js"
|
|
27
|
+
},
|
|
28
|
+
"./runtime/replay": {
|
|
29
|
+
"types": "./dist/src/runtime/replay.d.ts",
|
|
30
|
+
"import": "./dist/src/runtime/replay.js"
|
|
27
31
|
}
|
|
28
32
|
},
|
|
29
33
|
"files": [
|
|
@@ -37,8 +41,8 @@
|
|
|
37
41
|
"prepublishOnly": "bun run build"
|
|
38
42
|
},
|
|
39
43
|
"dependencies": {
|
|
40
|
-
"@secondlayer/shared": "^3.0.0
|
|
41
|
-
"@secondlayer/stacks": "^1.0.0
|
|
44
|
+
"@secondlayer/shared": "^3.0.0",
|
|
45
|
+
"@secondlayer/stacks": "^1.0.0",
|
|
42
46
|
"kysely": "0.28.15",
|
|
43
47
|
"postgres": "^3.4.6",
|
|
44
48
|
"zod": "^4.3.6"
|