@secondlayer/shared 6.33.0 → 6.33.2
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/crypto/secondlayer-webhook.d.ts +15 -1
- package/dist/src/crypto/secondlayer-webhook.js +66 -1
- package/dist/src/crypto/secondlayer-webhook.js.map +5 -4
- package/dist/src/db/index.js +5 -2
- package/dist/src/db/index.js.map +4 -4
- package/dist/src/db/queries/chain-reorgs.js +5 -2
- package/dist/src/db/queries/chain-reorgs.js.map +4 -4
- package/dist/src/db/queries/subgraphs.js +5 -2
- package/dist/src/db/queries/subgraphs.js.map +4 -4
- package/dist/src/env.d.ts +14 -1
- package/dist/src/env.js +5 -1
- package/dist/src/env.js.map +3 -3
- package/dist/src/index.js +5 -2
- package/dist/src/index.js.map +4 -4
- package/dist/src/leader.js +4 -1
- package/dist/src/leader.js.map +3 -3
- package/dist/src/logger.js +4 -1
- package/dist/src/logger.js.map +3 -3
- package/dist/src/node/archive-client.js +4 -1
- package/dist/src/node/archive-client.js.map +3 -3
- package/dist/src/node/hiro-client.js +4 -1
- package/dist/src/node/hiro-client.js.map +3 -3
- package/dist/src/x402.d.ts +10 -1
- package/dist/src/x402.js +6 -1
- package/dist/src/x402.js.map +3 -3
- package/package.json +1 -1
package/dist/src/index.js.map
CHANGED
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/env.ts", "../src/logger.ts", "../src/db/jsonb.ts", "../src/db/index.ts", "../src/db/source-read-columns.ts", "../src/db/migration-role.ts", "../src/db/table-plane.ts", "../src/errors.ts", "../src/schemas/filters.ts", "../src/schemas/subgraphs.ts", "../src/schemas/subscriptions.ts", "../src/subgraphs/spec.ts", "../src/crypto/hmac.ts", "../src/crypto/ed25519.ts", "../src/event-types.ts", "../src/db-event-types.ts", "../src/finality.ts", "../src/streams-cursor.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"import { z } from \"zod/v4\";\n\n// Parse comma-separated networks\nconst networksSchema = z.string().transform((val) => {\n\tconst networks = val\n\t\t.split(\",\")\n\t\t.map((n) => n.trim())\n\t\t.filter(Boolean);\n\tconst valid = [\"mainnet\", \"testnet\"];\n\tfor (const n of networks) {\n\t\tif (!valid.includes(n)) {\n\t\t\tthrow new Error(\n\t\t\t\t`Invalid network: ${n}. Must be one of: ${valid.join(\", \")}`,\n\t\t\t);\n\t\t}\n\t}\n\treturn networks as (\"mainnet\" | \"testnet\")[];\n});\n\ninterface EnvSchemaOutput {\n\tDATABASE_URL?: string;\n\t/**\n\t * Shared indexer DB (blocks/txs/events). Falls back to DATABASE_URL.\n\t * Set this alongside TARGET_DATABASE_URL to enable dual-DB mode.\n\t */\n\tSOURCE_DATABASE_URL?: string;\n\t/**\n\t * Tenant DB (subgraph schemas + subgraphs table). Falls back to DATABASE_URL.\n\t * Set this alongside SOURCE_DATABASE_URL to enable dual-DB mode.\n\t */\n\tTARGET_DATABASE_URL?: string;\n\tNETWORK?: \"mainnet\" | \"testnet\";\n\tNETWORKS?: (\"mainnet\" | \"testnet\")[];\n\tLOG_LEVEL: \"debug\" | \"info\" | \"warn\" | \"error\";\n\tNODE_ENV: \"development\" | \"production\" | \"test\";\n}\n\n// Cast needed: z.preprocess / z.default create different _input vs _output types\n// that z.ZodType<T> can't represent without explicit input type param\nconst envSchema: z.ZodType<EnvSchemaOutput> = z.object({\n\tDATABASE_URL: z.preprocess(\n\t\t(val) => (typeof val === \"string\" && val.length === 0 ? undefined : val),\n\t\tz.string().url().optional(),\n\t),\n\tSOURCE_DATABASE_URL: z.preprocess(\n\t\t(val) => (typeof val === \"string\" && val.length === 0 ? undefined : val),\n\t\tz.string().url().optional(),\n\t),\n\tTARGET_DATABASE_URL: z.preprocess(\n\t\t(val) => (typeof val === \"string\" && val.length === 0 ? undefined : val),\n\t\tz.string().url().optional(),\n\t),\n\tNETWORK: z.enum([\"mainnet\", \"testnet\"]).optional(),\n\tNETWORKS: networksSchema.optional(),\n\tLOG_LEVEL: z.enum([\"debug\", \"info\", \"warn\", \"error\"]).default(\"info\"),\n\tNODE_ENV: z\n\t\t.enum([\"development\", \"production\", \"test\"])\n\t\t.default(\"development\"),\n}) as unknown as z.ZodType<EnvSchemaOutput>;\n\nexport type Env = EnvSchemaOutput & {\n\tenabledNetworks: (\"mainnet\" | \"testnet\")[];\n};\n\nlet cachedEnv: Env | null = null;\n\nexport function getEnv(): Env {\n\tif (cachedEnv) {\n\t\treturn cachedEnv;\n\t}\n\n\tconst result = envSchema.safeParse(process.env);\n\n\tif (!result.success) {\n\t\tconsole.error(\"❌ Invalid environment configuration:\");\n\t\tconsole.error(z.treeifyError(result.error));\n\t\tthrow new Error(\"Invalid environment configuration\");\n\t}\n\n\t// Compute enabled networks from NETWORKS or NETWORK\n\tlet enabledNetworks: (\"mainnet\" | \"testnet\")[];\n\tif (result.data.NETWORKS && result.data.NETWORKS.length > 0) {\n\t\tenabledNetworks = result.data.NETWORKS;\n\t} else if (result.data.NETWORK) {\n\t\tenabledNetworks = [result.data.NETWORK];\n\t} else {\n\t\tenabledNetworks = [\"mainnet\"]; // Default\n\t}\n\n\tcachedEnv = { ...result.data, enabledNetworks };\n\treturn cachedEnv;\n}\n\n/**\n * PoX-4 stacking decoder is ON by default — `/v1/index/stacking` is part of the\n * public surface, so the decoder that fills `pox4_calls` runs unless explicitly\n * opted out with `POX4_DECODER_ENABLED=false` (mirrors the sBTC decoder policy).\n */\nexport function isPox4DecoderEnabled(): boolean {\n\treturn process.env.POX4_DECODER_ENABLED !== \"false\";\n}\n\n// Export for testing\nexport { envSchema };\n",
|
|
5
|
+
"import { z } from \"zod/v4\";\n\n// Parse comma-separated networks\nconst networksSchema = z.string().transform((val) => {\n\tconst networks = val\n\t\t.split(\",\")\n\t\t.map((n) => n.trim())\n\t\t.filter(Boolean);\n\tconst valid = [\"mainnet\", \"testnet\"];\n\tfor (const n of networks) {\n\t\tif (!valid.includes(n)) {\n\t\t\tthrow new Error(\n\t\t\t\t`Invalid network: ${n}. Must be one of: ${valid.join(\", \")}`,\n\t\t\t);\n\t\t}\n\t}\n\treturn networks as (\"mainnet\" | \"testnet\")[];\n});\n\ninterface EnvSchemaOutput {\n\tDATABASE_URL?: string;\n\t/**\n\t * Shared indexer DB (blocks/txs/events). Falls back to DATABASE_URL.\n\t * Set this alongside TARGET_DATABASE_URL to enable dual-DB mode.\n\t */\n\tSOURCE_DATABASE_URL?: string;\n\t/**\n\t * Tenant DB (subgraph schemas + subgraphs table). Falls back to DATABASE_URL.\n\t * Set this alongside SOURCE_DATABASE_URL to enable dual-DB mode.\n\t */\n\tTARGET_DATABASE_URL?: string;\n\tNETWORK?: \"mainnet\" | \"testnet\";\n\tNETWORKS?: (\"mainnet\" | \"testnet\")[];\n\tLOG_LEVEL: \"debug\" | \"info\" | \"warn\" | \"error\";\n\tNODE_ENV: \"development\" | \"production\" | \"test\";\n}\n\n// Cast needed: z.preprocess / z.default create different _input vs _output types\n// that z.ZodType<T> can't represent without explicit input type param\nconst envSchema: z.ZodType<EnvSchemaOutput> = z.object({\n\tDATABASE_URL: z.preprocess(\n\t\t(val) => (typeof val === \"string\" && val.length === 0 ? undefined : val),\n\t\tz.string().url().optional(),\n\t),\n\tSOURCE_DATABASE_URL: z.preprocess(\n\t\t(val) => (typeof val === \"string\" && val.length === 0 ? undefined : val),\n\t\tz.string().url().optional(),\n\t),\n\tTARGET_DATABASE_URL: z.preprocess(\n\t\t(val) => (typeof val === \"string\" && val.length === 0 ? undefined : val),\n\t\tz.string().url().optional(),\n\t),\n\tNETWORK: z.enum([\"mainnet\", \"testnet\"]).optional(),\n\tNETWORKS: networksSchema.optional(),\n\tLOG_LEVEL: z.enum([\"debug\", \"info\", \"warn\", \"error\"]).default(\"info\"),\n\tNODE_ENV: z\n\t\t.enum([\"development\", \"production\", \"test\"])\n\t\t.default(\"development\"),\n}) as unknown as z.ZodType<EnvSchemaOutput>;\n\nexport type Env = EnvSchemaOutput & {\n\tenabledNetworks: (\"mainnet\" | \"testnet\")[];\n};\n\nlet cachedEnv: Env | null = null;\n\nexport function getEnv(): Env {\n\tif (cachedEnv) {\n\t\treturn cachedEnv;\n\t}\n\n\tconst result = envSchema.safeParse(process.env);\n\n\tif (!result.success) {\n\t\tconsole.error(\"❌ Invalid environment configuration:\");\n\t\tconsole.error(z.treeifyError(result.error));\n\t\tthrow new Error(\"Invalid environment configuration\");\n\t}\n\n\t// Compute enabled networks from NETWORKS or NETWORK\n\tlet enabledNetworks: (\"mainnet\" | \"testnet\")[];\n\tif (result.data.NETWORKS && result.data.NETWORKS.length > 0) {\n\t\tenabledNetworks = result.data.NETWORKS;\n\t} else if (result.data.NETWORK) {\n\t\tenabledNetworks = [result.data.NETWORK];\n\t} else {\n\t\tenabledNetworks = [\"mainnet\"]; // Default\n\t}\n\n\tcachedEnv = { ...result.data, enabledNetworks };\n\treturn cachedEnv;\n}\n\n/**\n * True when `NODE_ENV=production`, read at RUNTIME — the single source of truth\n * for prod-vs-dev branching in this package.\n *\n * Why a helper instead of inlining `process.env.NODE_ENV === \"production\"`:\n * bunup/esbuild constant-folds the dot-access `process.env.NODE_ENV` to its\n * BUILD-time value. `@secondlayer/shared` is consumed by other services as its\n * built `dist`, so an inlined check freezes to a literal in the shipped bundle\n * (e.g. `const isProd = false`) and silently ignores the container's real\n * NODE_ENV. The bracket access below is NOT folded, so it stays a runtime read.\n * Route every prod check through here so the footgun lives in exactly one place.\n */\nexport function isProductionEnv(): boolean {\n\t// biome-ignore lint/complexity/useLiteralKeys: bracket access is deliberate — dot-access gets constant-folded by the bundler, freezing this to a build-time literal in the shipped dist.\n\treturn process.env[\"NODE_ENV\"] === \"production\";\n}\n\n/**\n * PoX-4 stacking decoder is ON by default — `/v1/index/stacking` is part of the\n * public surface, so the decoder that fills `pox4_calls` runs unless explicitly\n * opted out with `POX4_DECODER_ENABLED=false` (mirrors the sBTC decoder policy).\n */\nexport function isPox4DecoderEnabled(): boolean {\n\treturn process.env.POX4_DECODER_ENABLED !== \"false\";\n}\n\n// Export for testing\nexport { envSchema };\n",
|
|
6
6
|
"import { getEnv } from \"./env.ts\";\n\ntype LogLevel = \"debug\" | \"info\" | \"warn\" | \"error\";\n\nconst LOG_LEVELS: Record<LogLevel, number> = {\n\tdebug: 0,\n\tinfo: 1,\n\twarn: 2,\n\terror: 3,\n};\n\nclass Logger {\n\tprivate _level?: LogLevel;\n\tprivate _isProduction?: boolean;\n\tprivate _initialized = false;\n\n\tprivate init() {\n\t\tif (this._initialized) return;\n\t\tthis._initialized = true;\n\t\ttry {\n\t\t\tconst env = getEnv();\n\t\t\tthis._level = env.LOG_LEVEL;\n\t\t\tthis._isProduction = env.NODE_ENV === \"production\";\n\t\t} catch {\n\t\t\t// Fallback when env is unavailable (e.g. tests without DATABASE_URL)\n\t\t\tthis._level = \"info\";\n\t\t\tthis._isProduction = false;\n\t\t}\n\t}\n\n\tprivate get level(): LogLevel {\n\t\tthis.init();\n\t\t// biome-ignore lint/style/noNonNullAssertion: value is non-null after preceding check or by construction; TS narrowing limitation\n\t\treturn this._level!;\n\t}\n\n\tprivate get isProduction(): boolean {\n\t\tthis.init();\n\t\t// biome-ignore lint/style/noNonNullAssertion: value is non-null after preceding check or by construction; TS narrowing limitation\n\t\treturn this._isProduction!;\n\t}\n\n\tprivate shouldLog(level: LogLevel): boolean {\n\t\treturn LOG_LEVELS[level] >= LOG_LEVELS[this.level];\n\t}\n\n\tprivate formatMessage(\n\t\tlevel: LogLevel,\n\t\tmessage: string,\n\t\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\t\tmeta?: Record<string, any>,\n\t) {\n\t\tconst timestamp = new Date().toISOString();\n\n\t\tif (this.isProduction) {\n\t\t\t// JSON output for production\n\t\t\treturn JSON.stringify({\n\t\t\t\ttimestamp,\n\t\t\t\tlevel,\n\t\t\t\tmessage,\n\t\t\t\t...meta,\n\t\t\t});\n\t\t}\n\n\t\t// Human-readable output for development\n\t\tconst metaStr = meta ? ` ${JSON.stringify(meta)}` : \"\";\n\t\treturn `[${timestamp}] ${level.toUpperCase()}: ${message}${metaStr}`;\n\t}\n\n\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\tdebug(message: string, meta?: Record<string, any>): void {\n\t\tif (this.shouldLog(\"debug\")) {\n\t\t\tconsole.debug(this.formatMessage(\"debug\", message, meta));\n\t\t}\n\t}\n\n\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\tinfo(message: string, meta?: Record<string, any>): void {\n\t\tif (this.shouldLog(\"info\")) {\n\t\t\tconsole.info(this.formatMessage(\"info\", message, meta));\n\t\t}\n\t}\n\n\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\twarn(message: string, meta?: Record<string, any>): void {\n\t\tif (this.shouldLog(\"warn\")) {\n\t\t\tconsole.warn(this.formatMessage(\"warn\", message, meta));\n\t\t}\n\t}\n\n\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\terror(message: string, meta?: Record<string, any>): void {\n\t\tif (this.shouldLog(\"error\")) {\n\t\t\tconsole.error(this.formatMessage(\"error\", message, meta));\n\t\t}\n\t}\n}\n\n// Export singleton instance\nexport const logger: Logger = new Logger();\n",
|
|
7
7
|
"import { type RawBuilder, sql } from \"kysely\";\n\n/**\n * Safely encode a JS value as a JSONB literal for Kysely inserts/updates.\n * Kysely + postgres.js double-encodes JSON when using parameterized queries\n * with ::jsonb casts. This uses sql.raw to inline a properly escaped literal.\n *\n * Generic parameter lets callers set the RawBuilder's output type so they\n * don't need to cast at the insert site. Default is `unknown` — widen at\n * the call site when the column type is narrower, e.g. `jsonb<MyShape>(...)`.\n */\nexport function jsonb<T = unknown>(value: T): RawBuilder<T> {\n\tconst escaped = JSON.stringify(value, (_k, v) =>\n\t\ttypeof v === \"bigint\" ? v.toString() : v,\n\t).replace(/'/g, \"''\");\n\treturn sql`${sql.raw(`'${escaped}'::jsonb`)}`;\n}\n\n/**\n * Safely parse a JSONB value from the database.\n * Handles double-encoded strings where postgres.js returns a JSON string\n * instead of a parsed object.\n */\nexport function parseJsonb<T = unknown>(value: unknown): T {\n\tif (typeof value === \"string\") {\n\t\ttry {\n\t\t\treturn JSON.parse(value) as T;\n\t\t} catch {\n\t\t\treturn value as T;\n\t\t}\n\t}\n\treturn (value ?? {}) as T;\n}\n",
|
|
8
|
-
"import { Kysely } from \"kysely\";\nimport { PostgresJSDialect } from \"kysely-postgres-js\";\nimport postgres from \"postgres\";\nimport { logger } from \"../logger.ts\";\nimport type { Database } from \"./types.ts\";\n\nexport type { Database } from \"./types.ts\";\n\nconst DEFAULT_URL =\n\t\"postgres://postgres:postgres@localhost:5432/secondlayer_dev\";\n\ninterface PoolEntry {\n\tdb: Kysely<Database>;\n\trawClient: ReturnType<typeof postgres>;\n\t/** Last access (ms) — drives LRU eviction of BYO pools. */\n\tlastUsed: number;\n\t/** Monotonic counter as a tiebreaker; Date.now() can repeat under load. */\n\tseq: number;\n}\n\n/**\n * Cache of Kysely + raw postgres.js pools keyed by resolved URL.\n * Two getters resolving to the same URL share one entry (single pool) —\n * this is the single-DB backward-compat contract: when only `DATABASE_URL`\n * is set, `getSourceDb() === getTargetDb()` (zero regression vs. pre-dual-DB).\n *\n * The BYO data plane adds one pool per user-owned DB. To stop N user DBs from\n * exhausting connections/FDs, the map is bounded (`DATABASE_MAX_POOLS`, default\n * 25) with LRU eviction — the hot source/target pools are never evicted.\n */\nconst pools = new Map<string, PoolEntry>();\nlet poolSeq = 0;\n\nfunction maxPools(): number {\n\treturn Number.parseInt(process.env.DATABASE_MAX_POOLS ?? \"25\", 10);\n}\n\n/** Close the least-recently-used non-(source/target) pool when over the cap. */\nfunction evictIfNeeded(): void {\n\tif (pools.size <= maxPools()) return;\n\tconst protectedUrls = new Set([resolveSourceUrl(), resolveTargetUrl()]);\n\tlet lruUrl: string | undefined;\n\tlet lruEntry: PoolEntry | undefined;\n\tfor (const [url, entry] of pools) {\n\t\tif (protectedUrls.has(url)) continue;\n\t\tif (\n\t\t\t!lruEntry ||\n\t\t\tentry.lastUsed < lruEntry.lastUsed ||\n\t\t\t(entry.lastUsed === lruEntry.lastUsed && entry.seq < lruEntry.seq)\n\t\t) {\n\t\t\tlruUrl = url;\n\t\t\tlruEntry = entry;\n\t\t}\n\t}\n\tif (!lruUrl || !lruEntry) return;\n\tpools.delete(lruUrl);\n\tconst evicted = lruEntry;\n\t// Close in the background — never block pool creation on teardown.\n\tvoid evicted.db\n\t\t.destroy()\n\t\t.catch(() => {})\n\t\t.then(() => evicted.rawClient.end({ timeout: 5 }))\n\t\t.catch(() => {});\n}\n\nfunction resolveSourceUrl(): string {\n\treturn (\n\t\tprocess.env.SOURCE_DATABASE_URL || process.env.DATABASE_URL || DEFAULT_URL\n\t);\n}\n\nfunction resolveTargetUrl(): string {\n\treturn (\n\t\tprocess.env.TARGET_DATABASE_URL || process.env.DATABASE_URL || DEFAULT_URL\n\t);\n}\n\n/** Host[:port]/dbname for a connection URL — credentials stripped. */\nfunction describeDbUrl(url: string): string {\n\ttry {\n\t\tconst u = new URL(url);\n\t\treturn `${u.hostname}${u.port ? `:${u.port}` : \"\"}${u.pathname}`;\n\t} catch {\n\t\treturn \"invalid-url\";\n\t}\n}\n\nexport interface DbSplitStatus {\n\t/** \"split\" when source/target resolve to different DBs, else \"single\". */\n\tmode: \"split\" | \"single\";\n\t/** True when the chain/control split is live (distinct DBs). */\n\tactive: boolean;\n\t/** SOURCE host[:port]/dbname (no credentials). */\n\tsourceDb: string;\n\t/** TARGET host[:port]/dbname (no credentials). */\n\ttargetDb: string;\n}\n\n/**\n * Resolved source/target DB identity for status/health surfaces. Lets operators\n * see whether the chain/control split is live or dormant (collapsed to one DB)\n * without shelling in. Credentials are never exposed — host/db only.\n *\n * `active` is a STRING-IDENTITY check on the two URLs: it can't catch two\n * distinct URLs that alias the same physical instance (e.g. `postgres` vs\n * `127.0.0.1`, or a swapped/wrong host). Treat `active: true` as \"configured\n * for split\", not a proof of physical isolation.\n */\nexport function getDbSplitStatus(): DbSplitStatus {\n\tconst source = resolveSourceUrl();\n\tconst target = resolveTargetUrl();\n\tconst active = source !== target;\n\treturn {\n\t\tmode: active ? \"split\" : \"single\",\n\t\tactive,\n\t\tsourceDb: describeDbUrl(source),\n\t\ttargetDb: describeDbUrl(target),\n\t};\n}\n\n/**\n * Boot guard for the chain/control DB split. Surfaces three misconfigurations\n * loudly (fail-soft — logs, never throws, so a misconfig can't brick startup):\n *\n * 1. Silent wrong-DB: a split is requested (one of SOURCE_/TARGET_ set) but\n * `DATABASE_URL` is absent (the split-prod default) and the OTHER var is\n * unset, so it falls through to the built-in dev `DEFAULT_URL` — about to\n * read/write a real-but-wrong database. This is the failure mode the\n * remove-DATABASE_URL decision creates; catch it.\n * 2. Collapsed split: both vars set but resolve to the same DB (typo, or a\n * stray `DATABASE_URL` masking the intent).\n * 3. Dormant split (prod only): neither var set, so all services share one\n * Postgres failure domain. Not an error, but no longer silent.\n */\nexport function assertDbSplit(): void {\n\tconst isProd = process.env.NODE_ENV === \"production\";\n\tconst wantsSplit = !!(\n\t\tprocess.env.SOURCE_DATABASE_URL || process.env.TARGET_DATABASE_URL\n\t);\n\tconst databaseUrlSet = !!process.env.DATABASE_URL;\n\tconst source = resolveSourceUrl();\n\tconst target = resolveTargetUrl();\n\n\tif (\n\t\twantsSplit &&\n\t\t!databaseUrlSet &&\n\t\t(source === DEFAULT_URL || target === DEFAULT_URL)\n\t) {\n\t\tconst which =\n\t\t\tsource === DEFAULT_URL ? \"SOURCE_DATABASE_URL\" : \"TARGET_DATABASE_URL\";\n\t\tconst msg = `${which} unset and DATABASE_URL absent — resolving to built-in DEFAULT_URL; refusing to silently use the wrong database`;\n\t\tif (isProd) console.error(`❌ ${msg}`);\n\t\telse console.warn(`⚠️ ${msg}`);\n\t\treturn;\n\t}\n\n\tif (!wantsSplit) {\n\t\tif (isProd) {\n\t\t\tconsole.warn(\n\t\t\t\t\"⚠️ DB split dormant — all services share one Postgres failure domain (SOURCE_/TARGET_DATABASE_URL unset)\",\n\t\t\t);\n\t\t}\n\t\treturn;\n\t}\n\n\tif (source === target) {\n\t\tconst msg =\n\t\t\t\"DB split requested but SOURCE_DATABASE_URL === TARGET_DATABASE_URL (check for a typo or a stray DATABASE_URL fallback)\";\n\t\tif (isProd) console.error(`❌ ${msg}`);\n\t\telse console.warn(`⚠️ ${msg}`);\n\t}\n}\n\nfunction getOrCreatePool(url: string): PoolEntry {\n\tconst existing = pools.get(url);\n\tif (existing) {\n\t\texisting.lastUsed = Date.now();\n\t\texisting.seq = poolSeq++;\n\t\treturn existing;\n\t}\n\n\t// \"Local\" = we skip TLS. Any Docker service alias (single-label hostname\n\t// with no dots) is on an internal network and won't serve TLS.\n\tconst host = (() => {\n\t\ttry {\n\t\t\treturn new URL(url).hostname;\n\t\t} catch {\n\t\t\treturn \"\";\n\t\t}\n\t})();\n\tconst isLocal =\n\t\thost === \"localhost\" || host === \"127.0.0.1\" || !host.includes(\".\");\n\tconst poolMax = Number.parseInt(process.env.DATABASE_POOL_MAX ?? \"20\", 10);\n\t// Close idle connections so a fleet of BYO pools doesn't pin connections it\n\t// no longer needs (0 = never; postgres.js default).\n\tconst idleTimeout = Number.parseInt(\n\t\tprocess.env.DATABASE_IDLE_TIMEOUT ?? \"300\",\n\t\t10,\n\t);\n\tconst rawClient = postgres(url, {\n\t\tmax: poolMax,\n\t\tidle_timeout: idleTimeout,\n\t\tssl: isLocal\n\t\t\t? undefined\n\t\t\t: {\n\t\t\t\t\trejectUnauthorized: process.env.NODE_TLS_REJECT_UNAUTHORIZED !== \"0\",\n\t\t\t\t},\n\t});\n\tconst db = new Kysely<Database>({\n\t\tdialect: new PostgresJSDialect({ postgres: rawClient }),\n\t\t// Diagnostic hook: surface the failing SQL whenever postgres rejects\n\t\t// with code 42P10 (ON CONFLICT target doesn't match any unique\n\t\t// constraint). Temporary — remove once we've caught the culprit\n\t\t// query in prod logs and fixed the schema drift.\n\t\tlog: (event) => {\n\t\t\tif (event.level !== \"error\") return;\n\t\t\tconst err = event.error as {\n\t\t\t\tcode?: string;\n\t\t\t\tmessage?: string;\n\t\t\t} | null;\n\t\t\tif (err?.code !== \"42P10\") return;\n\t\t\tlogger.warn(\"db.on_conflict_constraint_missing\", {\n\t\t\t\tcode: err.code,\n\t\t\t\tmessage: err.message,\n\t\t\t\tsql: event.query.sql,\n\t\t\t\tparams: event.query.parameters,\n\t\t\t});\n\t\t},\n\t});\n\tconst entry: PoolEntry = {\n\t\tdb,\n\t\trawClient,\n\t\tlastUsed: Date.now(),\n\t\tseq: poolSeq++,\n\t};\n\tpools.set(url, entry);\n\tevictIfNeeded();\n\treturn entry;\n}\n\n/**\n * Kysely instance for the SOURCE DB (block/tx/event reads from the shared\n * indexer). Resolution: `SOURCE_DATABASE_URL || DATABASE_URL`.\n */\nexport function getSourceDb(): Kysely<Database> {\n\treturn getOrCreatePool(resolveSourceUrl()).db;\n}\n\n/**\n * Kysely instance for the TARGET DB (subgraph schemas, subgraphs table,\n * account-scoped data — tenant-side writes). Resolution:\n * `TARGET_DATABASE_URL || DATABASE_URL`.\n */\nexport function getTargetDb(): Kysely<Database> {\n\treturn getOrCreatePool(resolveTargetUrl()).db;\n}\n\n/**\n * Backward-compat alias for `getTargetDb()`. Accepts an optional\n * `connectionString` override used by seed/test helpers — when supplied,\n * bypasses env resolution and uses the provided URL directly (still cached).\n */\nexport function getDb(connectionString?: string): Kysely<Database> {\n\tif (connectionString) return getOrCreatePool(connectionString).db;\n\treturn getTargetDb();\n}\n\n/**\n * Raw postgres.js client for dynamic schema DDL (CREATE SCHEMA, DROP, etc.).\n * Defaults to the target role (tenant schemas live in the target DB).\n */\nexport function getRawClient(\n\trole: \"source\" | \"target\" = \"target\",\n): ReturnType<typeof postgres> {\n\tconst url = role === \"source\" ? resolveSourceUrl() : resolveTargetUrl();\n\treturn getOrCreatePool(url).rawClient;\n}\n\n/**\n * Raw postgres.js client for an arbitrary connection string (cached by URL).\n * Used by the BYO data plane to run DDL / serving queries against a\n * user-owned Postgres. Distinct from {@link getRawClient}, which only knows the\n * source/target roles resolved from env.\n */\nexport function getRawClientFor(url: string): ReturnType<typeof postgres> {\n\treturn getOrCreatePool(url).rawClient;\n}\n\n/** Close all DB connection pools. Call in CLI commands to allow process exit. */\nexport async function closeDb(): Promise<void> {\n\tfor (const entry of pools.values()) {\n\t\tawait entry.db.destroy();\n\t\tawait entry.rawClient.end();\n\t}\n\tpools.clear();\n}\n\nimport { sql } from \"kysely\";\nexport { sql };\nexport * from \"./types.ts\";\nexport type { DbReadRow, NumericAsText } from \"./read-row.ts\";\nexport {\n\tSOURCE_READ_COLUMNS,\n\tSOURCE_READ_TYPES,\n\tSOURCE_READ_PKS,\n\ttype IndexColumn,\n\ttype IndexColumnType,\n\ttype IndexPrimaryKey,\n} from \"./source-read-columns.ts\";\nexport { jsonb, parseJsonb } from \"./jsonb.ts\";\nexport {\n\tgetMigrationRole,\n\tonChainPlane,\n\tonControlPlane,\n\tsetMigrationRole,\n} from \"./migration-role.ts\";\nexport type { MigrationRole } from \"./migration-role.ts\";\nexport { TABLE_TO_DB } from \"./table-plane.ts\";\nexport type { DbPlane } from \"./table-plane.ts\";\n",
|
|
8
|
+
"import { Kysely } from \"kysely\";\nimport { PostgresJSDialect } from \"kysely-postgres-js\";\nimport postgres from \"postgres\";\nimport { isProductionEnv } from \"../env.ts\";\nimport { logger } from \"../logger.ts\";\nimport type { Database } from \"./types.ts\";\n\nexport type { Database } from \"./types.ts\";\n\nconst DEFAULT_URL =\n\t\"postgres://postgres:postgres@localhost:5432/secondlayer_dev\";\n\ninterface PoolEntry {\n\tdb: Kysely<Database>;\n\trawClient: ReturnType<typeof postgres>;\n\t/** Last access (ms) — drives LRU eviction of BYO pools. */\n\tlastUsed: number;\n\t/** Monotonic counter as a tiebreaker; Date.now() can repeat under load. */\n\tseq: number;\n}\n\n/**\n * Cache of Kysely + raw postgres.js pools keyed by resolved URL.\n * Two getters resolving to the same URL share one entry (single pool) —\n * this is the single-DB backward-compat contract: when only `DATABASE_URL`\n * is set, `getSourceDb() === getTargetDb()` (zero regression vs. pre-dual-DB).\n *\n * The BYO data plane adds one pool per user-owned DB. To stop N user DBs from\n * exhausting connections/FDs, the map is bounded (`DATABASE_MAX_POOLS`, default\n * 25) with LRU eviction — the hot source/target pools are never evicted.\n */\nconst pools = new Map<string, PoolEntry>();\nlet poolSeq = 0;\n\nfunction maxPools(): number {\n\treturn Number.parseInt(process.env.DATABASE_MAX_POOLS ?? \"25\", 10);\n}\n\n/** Close the least-recently-used non-(source/target) pool when over the cap. */\nfunction evictIfNeeded(): void {\n\tif (pools.size <= maxPools()) return;\n\tconst protectedUrls = new Set([resolveSourceUrl(), resolveTargetUrl()]);\n\tlet lruUrl: string | undefined;\n\tlet lruEntry: PoolEntry | undefined;\n\tfor (const [url, entry] of pools) {\n\t\tif (protectedUrls.has(url)) continue;\n\t\tif (\n\t\t\t!lruEntry ||\n\t\t\tentry.lastUsed < lruEntry.lastUsed ||\n\t\t\t(entry.lastUsed === lruEntry.lastUsed && entry.seq < lruEntry.seq)\n\t\t) {\n\t\t\tlruUrl = url;\n\t\t\tlruEntry = entry;\n\t\t}\n\t}\n\tif (!lruUrl || !lruEntry) return;\n\tpools.delete(lruUrl);\n\tconst evicted = lruEntry;\n\t// Close in the background — never block pool creation on teardown.\n\tvoid evicted.db\n\t\t.destroy()\n\t\t.catch(() => {})\n\t\t.then(() => evicted.rawClient.end({ timeout: 5 }))\n\t\t.catch(() => {});\n}\n\nfunction resolveSourceUrl(): string {\n\treturn (\n\t\tprocess.env.SOURCE_DATABASE_URL || process.env.DATABASE_URL || DEFAULT_URL\n\t);\n}\n\nfunction resolveTargetUrl(): string {\n\treturn (\n\t\tprocess.env.TARGET_DATABASE_URL || process.env.DATABASE_URL || DEFAULT_URL\n\t);\n}\n\n/** Host[:port]/dbname for a connection URL — credentials stripped. */\nfunction describeDbUrl(url: string): string {\n\ttry {\n\t\tconst u = new URL(url);\n\t\treturn `${u.hostname}${u.port ? `:${u.port}` : \"\"}${u.pathname}`;\n\t} catch {\n\t\treturn \"invalid-url\";\n\t}\n}\n\nexport interface DbSplitStatus {\n\t/** \"split\" when source/target resolve to different DBs, else \"single\". */\n\tmode: \"split\" | \"single\";\n\t/** True when the chain/control split is live (distinct DBs). */\n\tactive: boolean;\n\t/** SOURCE host[:port]/dbname (no credentials). */\n\tsourceDb: string;\n\t/** TARGET host[:port]/dbname (no credentials). */\n\ttargetDb: string;\n}\n\n/**\n * Resolved source/target DB identity for status/health surfaces. Lets operators\n * see whether the chain/control split is live or dormant (collapsed to one DB)\n * without shelling in. Credentials are never exposed — host/db only.\n *\n * `active` is a STRING-IDENTITY check on the two URLs: it can't catch two\n * distinct URLs that alias the same physical instance (e.g. `postgres` vs\n * `127.0.0.1`, or a swapped/wrong host). Treat `active: true` as \"configured\n * for split\", not a proof of physical isolation.\n */\nexport function getDbSplitStatus(): DbSplitStatus {\n\tconst source = resolveSourceUrl();\n\tconst target = resolveTargetUrl();\n\tconst active = source !== target;\n\treturn {\n\t\tmode: active ? \"split\" : \"single\",\n\t\tactive,\n\t\tsourceDb: describeDbUrl(source),\n\t\ttargetDb: describeDbUrl(target),\n\t};\n}\n\n/**\n * Boot guard for the chain/control DB split. Surfaces three misconfigurations\n * loudly (fail-soft — logs, never throws, so a misconfig can't brick startup):\n *\n * 1. Silent wrong-DB: a split is requested (one of SOURCE_/TARGET_ set) but\n * `DATABASE_URL` is absent (the split-prod default) and the OTHER var is\n * unset, so it falls through to the built-in dev `DEFAULT_URL` — about to\n * read/write a real-but-wrong database. This is the failure mode the\n * remove-DATABASE_URL decision creates; catch it.\n * 2. Collapsed split: both vars set but resolve to the same DB (typo, or a\n * stray `DATABASE_URL` masking the intent).\n * 3. Dormant split (prod only): neither var set, so all services share one\n * Postgres failure domain. Not an error, but no longer silent.\n */\nexport function assertDbSplit(): void {\n\t// Runtime read — inlining `process.env.NODE_ENV` gets constant-folded in the\n\t// shipped dist (this prod branch would die silently). See env.ts.\n\tconst isProd = isProductionEnv();\n\tconst wantsSplit = !!(\n\t\tprocess.env.SOURCE_DATABASE_URL || process.env.TARGET_DATABASE_URL\n\t);\n\tconst databaseUrlSet = !!process.env.DATABASE_URL;\n\tconst source = resolveSourceUrl();\n\tconst target = resolveTargetUrl();\n\n\tif (\n\t\twantsSplit &&\n\t\t!databaseUrlSet &&\n\t\t(source === DEFAULT_URL || target === DEFAULT_URL)\n\t) {\n\t\tconst which =\n\t\t\tsource === DEFAULT_URL ? \"SOURCE_DATABASE_URL\" : \"TARGET_DATABASE_URL\";\n\t\tconst msg = `${which} unset and DATABASE_URL absent — resolving to built-in DEFAULT_URL; refusing to silently use the wrong database`;\n\t\tif (isProd) console.error(`❌ ${msg}`);\n\t\telse console.warn(`⚠️ ${msg}`);\n\t\treturn;\n\t}\n\n\tif (!wantsSplit) {\n\t\tif (isProd) {\n\t\t\tconsole.warn(\n\t\t\t\t\"⚠️ DB split dormant — all services share one Postgres failure domain (SOURCE_/TARGET_DATABASE_URL unset)\",\n\t\t\t);\n\t\t}\n\t\treturn;\n\t}\n\n\tif (source === target) {\n\t\tconst msg =\n\t\t\t\"DB split requested but SOURCE_DATABASE_URL === TARGET_DATABASE_URL (check for a typo or a stray DATABASE_URL fallback)\";\n\t\tif (isProd) console.error(`❌ ${msg}`);\n\t\telse console.warn(`⚠️ ${msg}`);\n\t}\n}\n\nfunction getOrCreatePool(url: string): PoolEntry {\n\tconst existing = pools.get(url);\n\tif (existing) {\n\t\texisting.lastUsed = Date.now();\n\t\texisting.seq = poolSeq++;\n\t\treturn existing;\n\t}\n\n\t// \"Local\" = we skip TLS. Any Docker service alias (single-label hostname\n\t// with no dots) is on an internal network and won't serve TLS.\n\tconst host = (() => {\n\t\ttry {\n\t\t\treturn new URL(url).hostname;\n\t\t} catch {\n\t\t\treturn \"\";\n\t\t}\n\t})();\n\tconst isLocal =\n\t\thost === \"localhost\" || host === \"127.0.0.1\" || !host.includes(\".\");\n\tconst poolMax = Number.parseInt(process.env.DATABASE_POOL_MAX ?? \"20\", 10);\n\t// Close idle connections so a fleet of BYO pools doesn't pin connections it\n\t// no longer needs (0 = never; postgres.js default).\n\tconst idleTimeout = Number.parseInt(\n\t\tprocess.env.DATABASE_IDLE_TIMEOUT ?? \"300\",\n\t\t10,\n\t);\n\tconst rawClient = postgres(url, {\n\t\tmax: poolMax,\n\t\tidle_timeout: idleTimeout,\n\t\tssl: isLocal\n\t\t\t? undefined\n\t\t\t: {\n\t\t\t\t\trejectUnauthorized: process.env.NODE_TLS_REJECT_UNAUTHORIZED !== \"0\",\n\t\t\t\t},\n\t});\n\tconst db = new Kysely<Database>({\n\t\tdialect: new PostgresJSDialect({ postgres: rawClient }),\n\t\t// Diagnostic hook: surface the failing SQL whenever postgres rejects\n\t\t// with code 42P10 (ON CONFLICT target doesn't match any unique\n\t\t// constraint). Temporary — remove once we've caught the culprit\n\t\t// query in prod logs and fixed the schema drift.\n\t\tlog: (event) => {\n\t\t\tif (event.level !== \"error\") return;\n\t\t\tconst err = event.error as {\n\t\t\t\tcode?: string;\n\t\t\t\tmessage?: string;\n\t\t\t} | null;\n\t\t\tif (err?.code !== \"42P10\") return;\n\t\t\tlogger.warn(\"db.on_conflict_constraint_missing\", {\n\t\t\t\tcode: err.code,\n\t\t\t\tmessage: err.message,\n\t\t\t\tsql: event.query.sql,\n\t\t\t\tparams: event.query.parameters,\n\t\t\t});\n\t\t},\n\t});\n\tconst entry: PoolEntry = {\n\t\tdb,\n\t\trawClient,\n\t\tlastUsed: Date.now(),\n\t\tseq: poolSeq++,\n\t};\n\tpools.set(url, entry);\n\tevictIfNeeded();\n\treturn entry;\n}\n\n/**\n * Kysely instance for the SOURCE DB (block/tx/event reads from the shared\n * indexer). Resolution: `SOURCE_DATABASE_URL || DATABASE_URL`.\n */\nexport function getSourceDb(): Kysely<Database> {\n\treturn getOrCreatePool(resolveSourceUrl()).db;\n}\n\n/**\n * Kysely instance for the TARGET DB (subgraph schemas, subgraphs table,\n * account-scoped data — tenant-side writes). Resolution:\n * `TARGET_DATABASE_URL || DATABASE_URL`.\n */\nexport function getTargetDb(): Kysely<Database> {\n\treturn getOrCreatePool(resolveTargetUrl()).db;\n}\n\n/**\n * Backward-compat alias for `getTargetDb()`. Accepts an optional\n * `connectionString` override used by seed/test helpers — when supplied,\n * bypasses env resolution and uses the provided URL directly (still cached).\n */\nexport function getDb(connectionString?: string): Kysely<Database> {\n\tif (connectionString) return getOrCreatePool(connectionString).db;\n\treturn getTargetDb();\n}\n\n/**\n * Raw postgres.js client for dynamic schema DDL (CREATE SCHEMA, DROP, etc.).\n * Defaults to the target role (tenant schemas live in the target DB).\n */\nexport function getRawClient(\n\trole: \"source\" | \"target\" = \"target\",\n): ReturnType<typeof postgres> {\n\tconst url = role === \"source\" ? resolveSourceUrl() : resolveTargetUrl();\n\treturn getOrCreatePool(url).rawClient;\n}\n\n/**\n * Raw postgres.js client for an arbitrary connection string (cached by URL).\n * Used by the BYO data plane to run DDL / serving queries against a\n * user-owned Postgres. Distinct from {@link getRawClient}, which only knows the\n * source/target roles resolved from env.\n */\nexport function getRawClientFor(url: string): ReturnType<typeof postgres> {\n\treturn getOrCreatePool(url).rawClient;\n}\n\n/** Close all DB connection pools. Call in CLI commands to allow process exit. */\nexport async function closeDb(): Promise<void> {\n\tfor (const entry of pools.values()) {\n\t\tawait entry.db.destroy();\n\t\tawait entry.rawClient.end();\n\t}\n\tpools.clear();\n}\n\nimport { sql } from \"kysely\";\nexport { sql };\nexport * from \"./types.ts\";\nexport type { DbReadRow, NumericAsText } from \"./read-row.ts\";\nexport {\n\tSOURCE_READ_COLUMNS,\n\tSOURCE_READ_TYPES,\n\tSOURCE_READ_PKS,\n\ttype IndexColumn,\n\ttype IndexColumnType,\n\ttype IndexPrimaryKey,\n} from \"./source-read-columns.ts\";\nexport { jsonb, parseJsonb } from \"./jsonb.ts\";\nexport {\n\tgetMigrationRole,\n\tonChainPlane,\n\tonControlPlane,\n\tsetMigrationRole,\n} from \"./migration-role.ts\";\nexport type { MigrationRole } from \"./migration-role.ts\";\nexport { TABLE_TO_DB } from \"./table-plane.ts\";\nexport type { DbPlane } from \"./table-plane.ts\";\n",
|
|
9
9
|
"import type { Database } from \"./types.ts\";\n\n// The physical source-table columns the public read API (packages/api) actually\n// reads via getSourceDb(). This is the read contract between the indexer (which\n// owns the write schema) and the API (which reads it raw). A column rename or\n// removal on the producer side that isn't reflected here is caught by the\n// snapshot drift test; the `satisfies` clause guarantees every entry is a real\n// table + column today.\n//\n// Computed/aliased read expressions are intentionally excluded — they are not\n// part of the producer contract: `cursor`/`block_time` where derived in SQL\n// rather than stored, window ranks (stream_event_index), and JSONB extractions\n// from `events.data`. Generated bookkeeping columns (created_at/updated_at) are\n// excluded unless a read path selects them.\nexport const SOURCE_READ_COLUMNS = {\n\tblocks: [\n\t\t\"burn_block_hash\",\n\t\t\"burn_block_height\",\n\t\t\"canonical\",\n\t\t\"hash\",\n\t\t\"height\",\n\t\t\"parent_hash\",\n\t\t\"timestamp\",\n\t],\n\tdecoded_events: [\n\t\t\"amount\",\n\t\t\"asset_identifier\",\n\t\t\"block_height\",\n\t\t\"canonical\",\n\t\t\"contract_id\",\n\t\t\"cursor\",\n\t\t\"event_index\",\n\t\t\"event_type\",\n\t\t\"memo\",\n\t\t\"payload\",\n\t\t\"recipient\",\n\t\t\"sender\",\n\t\t\"tx_id\",\n\t\t\"tx_index\",\n\t\t\"value\",\n\t],\n\ttransactions: [\n\t\t\"block_height\",\n\t\t\"contract_id\",\n\t\t\"function_args\",\n\t\t\"function_name\",\n\t\t\"raw_result\",\n\t\t\"raw_tx\",\n\t\t\"sender\",\n\t\t\"status\",\n\t\t\"tx_id\",\n\t\t\"tx_index\",\n\t\t\"type\",\n\t],\n\tmempool_transactions: [\n\t\t\"contract_id\",\n\t\t\"function_args\",\n\t\t\"function_name\",\n\t\t\"raw_tx\",\n\t\t\"received_at\",\n\t\t\"sender\",\n\t\t\"seq\",\n\t\t\"tx_id\",\n\t\t\"type\",\n\t],\n\tpox4_calls: [\n\t\t\"aggregated_amount_ustx\",\n\t\t\"aggregated_signer_index\",\n\t\t\"amount_ustx\",\n\t\t\"auth_allowed\",\n\t\t\"auth_id\",\n\t\t\"auth_period\",\n\t\t\"auth_topic\",\n\t\t\"block_height\",\n\t\t\"block_time\",\n\t\t\"burn_block_height\",\n\t\t\"caller\",\n\t\t\"canonical\",\n\t\t\"cursor\",\n\t\t\"delegate_to\",\n\t\t\"end_cycle\",\n\t\t\"function_name\",\n\t\t\"lock_period\",\n\t\t\"max_amount\",\n\t\t\"pox_addr_btc\",\n\t\t\"pox_addr_hashbytes\",\n\t\t\"pox_addr_version\",\n\t\t\"result_ok\",\n\t\t\"reward_cycle\",\n\t\t\"signer_key\",\n\t\t\"signer_signature\",\n\t\t\"source_cursor\",\n\t\t\"stacker\",\n\t\t\"start_cycle\",\n\t\t\"tx_id\",\n\t\t\"tx_index\",\n\t],\n\tsbtc_events: [\n\t\t\"amount\",\n\t\t\"bitcoin_txid\",\n\t\t\"block_height\",\n\t\t\"block_time\",\n\t\t\"burn_hash\",\n\t\t\"burn_height\",\n\t\t\"canonical\",\n\t\t\"cursor\",\n\t\t\"event_index\",\n\t\t\"fee\",\n\t\t\"governance_contract_type\",\n\t\t\"governance_new_contract\",\n\t\t\"max_fee\",\n\t\t\"output_index\",\n\t\t\"recipient_btc_hashbytes\",\n\t\t\"recipient_btc_version\",\n\t\t\"request_id\",\n\t\t\"sender\",\n\t\t\"signer_address\",\n\t\t\"signer_aggregate_pubkey\",\n\t\t\"signer_bitmap\",\n\t\t\"signer_keys_count\",\n\t\t\"signer_threshold\",\n\t\t\"sweep_txid\",\n\t\t\"topic\",\n\t\t\"tx_id\",\n\t\t\"tx_index\",\n\t],\n\tsbtc_token_events: [\n\t\t\"amount\",\n\t\t\"block_height\",\n\t\t\"block_time\",\n\t\t\"canonical\",\n\t\t\"cursor\",\n\t\t\"event_index\",\n\t\t\"event_type\",\n\t\t\"memo\",\n\t\t\"recipient\",\n\t\t\"sender\",\n\t\t\"tx_id\",\n\t\t\"tx_index\",\n\t],\n\tbns_name_events: [\n\t\t\"block_height\",\n\t\t\"block_time\",\n\t\t\"bns_id\",\n\t\t\"canonical\",\n\t\t\"cursor\",\n\t\t\"event_index\",\n\t\t\"fqn\",\n\t\t\"hashed_salted_fqn_preorder\",\n\t\t\"imported_at\",\n\t\t\"name\",\n\t\t\"namespace\",\n\t\t\"owner\",\n\t\t\"preordered_by\",\n\t\t\"registered_at\",\n\t\t\"renewal_height\",\n\t\t\"stx_burn\",\n\t\t\"topic\",\n\t\t\"tx_id\",\n\t\t\"tx_index\",\n\t],\n\tbns_namespace_events: [\n\t\t\"block_height\",\n\t\t\"block_time\",\n\t\t\"canonical\",\n\t\t\"cursor\",\n\t\t\"event_index\",\n\t\t\"launched_at\",\n\t\t\"lifetime\",\n\t\t\"manager\",\n\t\t\"manager_frozen\",\n\t\t\"manager_transfers_disabled\",\n\t\t\"namespace\",\n\t\t\"price_frozen\",\n\t\t\"price_function\",\n\t\t\"revealed_at\",\n\t\t\"status\",\n\t\t\"tx_id\",\n\t\t\"tx_index\",\n\t],\n\tbns_marketplace_events: [\n\t\t\"action\",\n\t\t\"block_height\",\n\t\t\"block_time\",\n\t\t\"bns_id\",\n\t\t\"canonical\",\n\t\t\"commission\",\n\t\t\"cursor\",\n\t\t\"event_index\",\n\t\t\"price_ustx\",\n\t\t\"tx_id\",\n\t\t\"tx_index\",\n\t],\n\tbns_names: [\n\t\t\"bns_id\",\n\t\t\"fqn\",\n\t\t\"last_event_at\",\n\t\t\"last_event_cursor\",\n\t\t\"name\",\n\t\t\"namespace\",\n\t\t\"owner\",\n\t\t\"registered_at\",\n\t\t\"renewal_height\",\n\t],\n\tbns_namespaces: [\n\t\t\"last_event_at\",\n\t\t\"last_event_cursor\",\n\t\t\"launched_at\",\n\t\t\"lifetime\",\n\t\t\"manager\",\n\t\t\"manager_frozen\",\n\t\t\"name_count\",\n\t\t\"namespace\",\n\t\t\"price_frozen\",\n\t],\n\tburn_block_rewards: [\n\t\t\"amount_sats\",\n\t\t\"burn_amount\",\n\t\t\"burn_block_hash\",\n\t\t\"burn_block_height\",\n\t\t\"canonical\",\n\t\t\"cursor\",\n\t\t\"recipient_btc\",\n\t\t\"reward_index\",\n\t],\n\tburn_block_reward_slots: [\n\t\t\"burn_block_hash\",\n\t\t\"burn_block_height\",\n\t\t\"canonical\",\n\t\t\"cursor\",\n\t\t\"holder_btc\",\n\t\t\"slot_index\",\n\t],\n\tevents: [\"block_height\", \"data\", \"event_index\", \"tx_id\", \"type\"],\n\tchain_reorgs: [\"detected_at\"],\n} as const satisfies {\n\treadonly [T in keyof Database]?: readonly (keyof Database[T])[];\n};\n\n/** Portable column type for the Index read domain (a lean, ORM-agnostic vocab). */\nexport type IndexColumnType = \"text\" | \"int\" | \"boolean\" | \"timestamp\" | \"jsonb\";\n\nexport interface IndexColumn {\n\ttype: IndexColumnType;\n\t/** SELECT type includes `| null`. Omitted = NOT NULL. */\n\tnullable?: boolean;\n}\n\n// The portable TS/SQL type for every column in SOURCE_READ_COLUMNS, single-sourced\n// from the `Database` interface (the producer's typed schema). This is what lets\n// `sl index codegen` emit a typed ORM/JSON-Schema for the public Index domain so a\n// BYO database mirror is fully typed and can't drift from the API. The drift test\n// (source-read-columns.test.ts) asserts this covers exactly SOURCE_READ_COLUMNS;\n// the `satisfies` clause guarantees a type entry for every read table.\n//\n// `string` amount/value columns (e.g. amount_ustx, fee, price_ustx) are NUMERIC in\n// Postgres surfaced as strings — `text` here is lossless for a read mirror. `number`\n// columns map to `int`. Enum string-unions (topic, status, …) map to `text`.\nexport const SOURCE_READ_TYPES = {\n\tblocks: {\n\t\tburn_block_hash: { type: \"text\", nullable: true },\n\t\tburn_block_height: { type: \"int\" },\n\t\tcanonical: { type: \"boolean\" },\n\t\thash: { type: \"text\" },\n\t\theight: { type: \"int\" },\n\t\tparent_hash: { type: \"text\" },\n\t\ttimestamp: { type: \"int\" },\n\t},\n\tdecoded_events: {\n\t\tamount: { type: \"text\", nullable: true },\n\t\tasset_identifier: { type: \"text\", nullable: true },\n\t\tblock_height: { type: \"int\" },\n\t\tcanonical: { type: \"boolean\" },\n\t\tcontract_id: { type: \"text\", nullable: true },\n\t\tcursor: { type: \"text\" },\n\t\tevent_index: { type: \"int\" },\n\t\tevent_type: { type: \"text\" },\n\t\tmemo: { type: \"text\", nullable: true },\n\t\tpayload: { type: \"jsonb\", nullable: true },\n\t\trecipient: { type: \"text\", nullable: true },\n\t\tsender: { type: \"text\", nullable: true },\n\t\ttx_id: { type: \"text\" },\n\t\ttx_index: { type: \"int\" },\n\t\tvalue: { type: \"text\", nullable: true },\n\t},\n\ttransactions: {\n\t\tblock_height: { type: \"int\" },\n\t\tcontract_id: { type: \"text\", nullable: true },\n\t\tfunction_args: { type: \"jsonb\", nullable: true },\n\t\tfunction_name: { type: \"text\", nullable: true },\n\t\traw_result: { type: \"text\", nullable: true },\n\t\traw_tx: { type: \"text\" },\n\t\tsender: { type: \"text\" },\n\t\tstatus: { type: \"text\" },\n\t\ttx_id: { type: \"text\" },\n\t\ttx_index: { type: \"int\" },\n\t\ttype: { type: \"text\" },\n\t},\n\tmempool_transactions: {\n\t\tcontract_id: { type: \"text\", nullable: true },\n\t\tfunction_args: { type: \"jsonb\", nullable: true },\n\t\tfunction_name: { type: \"text\", nullable: true },\n\t\traw_tx: { type: \"text\" },\n\t\treceived_at: { type: \"timestamp\" },\n\t\tsender: { type: \"text\" },\n\t\tseq: { type: \"text\" },\n\t\ttx_id: { type: \"text\" },\n\t\ttype: { type: \"text\" },\n\t},\n\tpox4_calls: {\n\t\taggregated_amount_ustx: { type: \"text\", nullable: true },\n\t\taggregated_signer_index: { type: \"int\", nullable: true },\n\t\tamount_ustx: { type: \"text\", nullable: true },\n\t\tauth_allowed: { type: \"boolean\", nullable: true },\n\t\tauth_id: { type: \"text\", nullable: true },\n\t\tauth_period: { type: \"int\", nullable: true },\n\t\tauth_topic: { type: \"text\", nullable: true },\n\t\tblock_height: { type: \"int\" },\n\t\tblock_time: { type: \"timestamp\" },\n\t\tburn_block_height: { type: \"int\" },\n\t\tcaller: { type: \"text\" },\n\t\tcanonical: { type: \"boolean\" },\n\t\tcursor: { type: \"text\" },\n\t\tdelegate_to: { type: \"text\", nullable: true },\n\t\tend_cycle: { type: \"int\", nullable: true },\n\t\tfunction_name: { type: \"text\" },\n\t\tlock_period: { type: \"int\", nullable: true },\n\t\tmax_amount: { type: \"text\", nullable: true },\n\t\tpox_addr_btc: { type: \"text\", nullable: true },\n\t\tpox_addr_hashbytes: { type: \"text\", nullable: true },\n\t\tpox_addr_version: { type: \"int\", nullable: true },\n\t\tresult_ok: { type: \"boolean\" },\n\t\treward_cycle: { type: \"int\", nullable: true },\n\t\tsigner_key: { type: \"text\", nullable: true },\n\t\tsigner_signature: { type: \"text\", nullable: true },\n\t\tsource_cursor: { type: \"text\" },\n\t\tstacker: { type: \"text\", nullable: true },\n\t\tstart_cycle: { type: \"int\", nullable: true },\n\t\ttx_id: { type: \"text\" },\n\t\ttx_index: { type: \"int\" },\n\t},\n\tsbtc_events: {\n\t\tamount: { type: \"text\", nullable: true },\n\t\tbitcoin_txid: { type: \"text\", nullable: true },\n\t\tblock_height: { type: \"int\" },\n\t\tblock_time: { type: \"timestamp\" },\n\t\tburn_hash: { type: \"text\", nullable: true },\n\t\tburn_height: { type: \"int\", nullable: true },\n\t\tcanonical: { type: \"boolean\" },\n\t\tcursor: { type: \"text\" },\n\t\tevent_index: { type: \"int\" },\n\t\tfee: { type: \"text\", nullable: true },\n\t\tgovernance_contract_type: { type: \"int\", nullable: true },\n\t\tgovernance_new_contract: { type: \"text\", nullable: true },\n\t\tmax_fee: { type: \"text\", nullable: true },\n\t\toutput_index: { type: \"int\", nullable: true },\n\t\trecipient_btc_hashbytes: { type: \"text\", nullable: true },\n\t\trecipient_btc_version: { type: \"int\", nullable: true },\n\t\trequest_id: { type: \"int\", nullable: true },\n\t\tsender: { type: \"text\", nullable: true },\n\t\tsigner_address: { type: \"text\", nullable: true },\n\t\tsigner_aggregate_pubkey: { type: \"text\", nullable: true },\n\t\tsigner_bitmap: { type: \"text\", nullable: true },\n\t\tsigner_keys_count: { type: \"int\", nullable: true },\n\t\tsigner_threshold: { type: \"int\", nullable: true },\n\t\tsweep_txid: { type: \"text\", nullable: true },\n\t\ttopic: { type: \"text\" },\n\t\ttx_id: { type: \"text\" },\n\t\ttx_index: { type: \"int\" },\n\t},\n\tsbtc_token_events: {\n\t\tamount: { type: \"text\" },\n\t\tblock_height: { type: \"int\" },\n\t\tblock_time: { type: \"timestamp\" },\n\t\tcanonical: { type: \"boolean\" },\n\t\tcursor: { type: \"text\" },\n\t\tevent_index: { type: \"int\" },\n\t\tevent_type: { type: \"text\" },\n\t\tmemo: { type: \"text\", nullable: true },\n\t\trecipient: { type: \"text\", nullable: true },\n\t\tsender: { type: \"text\", nullable: true },\n\t\ttx_id: { type: \"text\" },\n\t\ttx_index: { type: \"int\" },\n\t},\n\tbns_name_events: {\n\t\tblock_height: { type: \"int\" },\n\t\tblock_time: { type: \"timestamp\" },\n\t\tbns_id: { type: \"text\" },\n\t\tcanonical: { type: \"boolean\" },\n\t\tcursor: { type: \"text\" },\n\t\tevent_index: { type: \"int\" },\n\t\tfqn: { type: \"text\" },\n\t\thashed_salted_fqn_preorder: { type: \"text\", nullable: true },\n\t\timported_at: { type: \"int\", nullable: true },\n\t\tname: { type: \"text\" },\n\t\tnamespace: { type: \"text\" },\n\t\towner: { type: \"text\", nullable: true },\n\t\tpreordered_by: { type: \"text\", nullable: true },\n\t\tregistered_at: { type: \"int\", nullable: true },\n\t\trenewal_height: { type: \"int\", nullable: true },\n\t\tstx_burn: { type: \"text\", nullable: true },\n\t\ttopic: { type: \"text\" },\n\t\ttx_id: { type: \"text\" },\n\t\ttx_index: { type: \"int\" },\n\t},\n\tbns_namespace_events: {\n\t\tblock_height: { type: \"int\" },\n\t\tblock_time: { type: \"timestamp\" },\n\t\tcanonical: { type: \"boolean\" },\n\t\tcursor: { type: \"text\" },\n\t\tevent_index: { type: \"int\" },\n\t\tlaunched_at: { type: \"int\", nullable: true },\n\t\tlifetime: { type: \"int\", nullable: true },\n\t\tmanager: { type: \"text\", nullable: true },\n\t\tmanager_frozen: { type: \"boolean\", nullable: true },\n\t\tmanager_transfers_disabled: { type: \"boolean\", nullable: true },\n\t\tnamespace: { type: \"text\" },\n\t\tprice_frozen: { type: \"boolean\", nullable: true },\n\t\tprice_function: { type: \"text\", nullable: true },\n\t\trevealed_at: { type: \"int\", nullable: true },\n\t\tstatus: { type: \"text\" },\n\t\ttx_id: { type: \"text\" },\n\t\ttx_index: { type: \"int\" },\n\t},\n\tbns_marketplace_events: {\n\t\taction: { type: \"text\" },\n\t\tblock_height: { type: \"int\" },\n\t\tblock_time: { type: \"timestamp\" },\n\t\tbns_id: { type: \"text\" },\n\t\tcanonical: { type: \"boolean\" },\n\t\tcommission: { type: \"text\", nullable: true },\n\t\tcursor: { type: \"text\" },\n\t\tevent_index: { type: \"int\" },\n\t\tprice_ustx: { type: \"text\", nullable: true },\n\t\ttx_id: { type: \"text\" },\n\t\ttx_index: { type: \"int\" },\n\t},\n\tbns_names: {\n\t\tbns_id: { type: \"text\" },\n\t\tfqn: { type: \"text\" },\n\t\tlast_event_at: { type: \"timestamp\" },\n\t\tlast_event_cursor: { type: \"text\" },\n\t\tname: { type: \"text\" },\n\t\tnamespace: { type: \"text\" },\n\t\towner: { type: \"text\" },\n\t\tregistered_at: { type: \"int\", nullable: true },\n\t\trenewal_height: { type: \"int\", nullable: true },\n\t},\n\tbns_namespaces: {\n\t\tlast_event_at: { type: \"timestamp\" },\n\t\tlast_event_cursor: { type: \"text\" },\n\t\tlaunched_at: { type: \"int\", nullable: true },\n\t\tlifetime: { type: \"int\", nullable: true },\n\t\tmanager: { type: \"text\", nullable: true },\n\t\tmanager_frozen: { type: \"boolean\" },\n\t\tname_count: { type: \"int\" },\n\t\tnamespace: { type: \"text\" },\n\t\tprice_frozen: { type: \"boolean\" },\n\t},\n\tburn_block_rewards: {\n\t\tamount_sats: { type: \"text\" },\n\t\tburn_amount: { type: \"text\" },\n\t\tburn_block_hash: { type: \"text\" },\n\t\tburn_block_height: { type: \"int\" },\n\t\tcanonical: { type: \"boolean\" },\n\t\tcursor: { type: \"text\" },\n\t\trecipient_btc: { type: \"text\" },\n\t\treward_index: { type: \"int\" },\n\t},\n\tburn_block_reward_slots: {\n\t\tburn_block_hash: { type: \"text\" },\n\t\tburn_block_height: { type: \"int\" },\n\t\tcanonical: { type: \"boolean\" },\n\t\tcursor: { type: \"text\" },\n\t\tholder_btc: { type: \"text\" },\n\t\tslot_index: { type: \"int\" },\n\t},\n\tevents: {\n\t\tblock_height: { type: \"int\" },\n\t\tdata: { type: \"jsonb\" },\n\t\tevent_index: { type: \"int\" },\n\t\ttx_id: { type: \"text\" },\n\t\ttype: { type: \"text\" },\n\t},\n\tchain_reorgs: {\n\t\tdetected_at: { type: \"timestamp\" },\n\t},\n} as const satisfies Record<\n\tkeyof typeof SOURCE_READ_COLUMNS,\n\tRecord<string, IndexColumn>\n>;\n\nexport type IndexPrimaryKey = readonly string[] | null;\n\n// Primary key per read table, for codegen targets that require a model identity\n// (Prisma). Every listed column must be a read column (drift-tested). `null` = no\n// usable read-column key — the physical PK is a synthetic id excluded from the\n// read contract (chain_reorgs) — so Prisma omits the table. `events` uses its\n// natural unique (tx_id, event_index); its physical PK is a synthetic uuid not\n// surfaced in the read set.\nexport const SOURCE_READ_PKS = {\n\tblocks: [\"height\"],\n\tdecoded_events: [\"cursor\"],\n\ttransactions: [\"tx_id\"],\n\tmempool_transactions: [\"seq\"],\n\tpox4_calls: [\"cursor\"],\n\tsbtc_events: [\"cursor\"],\n\tsbtc_token_events: [\"cursor\"],\n\tbns_name_events: [\"cursor\"],\n\tbns_namespace_events: [\"cursor\"],\n\tbns_marketplace_events: [\"cursor\"],\n\tbns_names: [\"fqn\"],\n\tbns_namespaces: [\"namespace\"],\n\tburn_block_rewards: [\"cursor\"],\n\tburn_block_reward_slots: [\"cursor\"],\n\tevents: [\"tx_id\", \"event_index\"],\n\tchain_reorgs: null,\n} as const satisfies Record<keyof typeof SOURCE_READ_COLUMNS, IndexPrimaryKey>;\n",
|
|
10
10
|
"/**\n * Per-migration DB-plane gating for the source/target split.\n *\n * Under the split, SOURCE (chain DB) holds only chain+decoded tables — the\n * control-plane tables were dropped to reclaim space — while TARGET (platform\n * DB) holds the control plane. `migrate.ts` still runs EVERY migration on EVERY\n * database (kysely integrity: the provider set must never be filtered per-DB, or\n * kysely throws \"previously executed migration is missing\" because each DB's\n * `kysely_migration` already records all of them). Instead, `migrate.ts` sets a\n * role before each pass and a migration gates its DDL with the helpers below: a\n * control migration's `up()` is a no-op on SOURCE but is still recorded applied,\n * so there is no missing-migration error and no re-run.\n *\n * `'both'` is single-DB / collapsed-split mode (dev / OSS / CI): every helper\n * runs, identical to pre-split behavior.\n *\n * Authoring a new migration under the split:\n * export async function up(db: Kysely<unknown>): Promise<void> {\n * await onControlPlane(() => sql`ALTER TABLE accounts ADD COLUMN …`.execute(db));\n * await onChainPlane(() => sql`ALTER TABLE blocks ADD COLUMN …`.execute(db));\n * // schema-wide / mixed statements: leave unwrapped (run on both).\n * }\n */\n\nexport type MigrationRole = \"source\" | \"target\" | \"both\";\n\n// Module-level singleton: migrate runs sequentially in one process, one target\n// at a time, so there is no concurrency to guard.\nlet currentRole: MigrationRole = \"both\";\n\nexport function setMigrationRole(role: MigrationRole): void {\n\tcurrentRole = role;\n}\n\nexport function getMigrationRole(): MigrationRole {\n\treturn currentRole;\n}\n\n/** Run control-plane (TARGET) DDL only when this pass targets the control plane. */\nexport async function onControlPlane(fn: () => Promise<void>): Promise<void> {\n\tif (currentRole === \"target\" || currentRole === \"both\") await fn();\n}\n\n/** Run chain/decoded (SOURCE) DDL only when this pass targets the chain plane. */\nexport async function onChainPlane(fn: () => Promise<void>): Promise<void> {\n\tif (currentRole === \"source\" || currentRole === \"both\") await fn();\n}\n",
|
|
11
11
|
"import type { Database } from \"./types.ts\";\n\nexport type DbPlane = \"source\" | \"target\" | \"both\";\n\n/**\n * Canonical table → DB-plane mapping for the source/target split.\n *\n * SOURCE = chain + decoded (the `postgres` instance); TARGET = control plane\n * (the `postgres-platform` instance). `both` = present/used on both planes\n * (`service_heartbeats`: the indexer writes its row on SOURCE, the\n * subgraph-processor writes its row on TARGET).\n *\n * `satisfies Record<keyof Database, DbPlane>` makes adding a table to `Database`\n * without classifying it here a COMPILE error. This is the single source of\n * truth for the split — `docker/SCHEMA_SPLIT.md` and the cutover script's\n * `CONTROL_TABLES` mirror the `target` set (guarded by `table-plane.test.ts`).\n * Use it to decide which migration helper a table's DDL belongs in\n * (`onControlPlane` for `target`, `onChainPlane` for `source`).\n *\n * Note: `kysely_migration` / `kysely_migration_lock` are kysely-managed (not in\n * `Database`) and exist on both — they are intentionally not listed here.\n */\nexport const TABLE_TO_DB = {\n\t// ── SOURCE: raw chain ──\n\tblocks: \"source\",\n\ttransactions: \"source\",\n\tevents: \"source\",\n\ttransactions_archive: \"source\",\n\tevents_archive: \"source\",\n\tdead_letter_events: \"source\",\n\tmempool_transactions: \"source\",\n\tindex_progress: \"source\",\n\tcontracts: \"source\",\n\tchain_reorgs: \"source\",\n\t// ── SOURCE: decoded (L2) ──\n\tdecoded_events: \"source\",\n\tl2_decoder_checkpoints: \"source\",\n\tpox4_calls: \"source\",\n\tpox4_cycles_daily: \"source\",\n\tpox4_signers_daily: \"source\",\n\tburn_block_rewards: \"source\",\n\tburn_block_reward_slots: \"source\",\n\tsbtc_events: \"source\",\n\tsbtc_token_events: \"source\",\n\tsbtc_supply_snapshots: \"source\",\n\tbns_name_events: \"source\",\n\tbns_namespace_events: \"source\",\n\tbns_marketplace_events: \"source\",\n\tbns_names: \"source\",\n\tbns_namespaces: \"source\",\n\t// ── TARGET: accounts / auth / billing ──\n\taccounts: \"target\",\n\tapi_keys: \"target\",\n\tsessions: \"target\",\n\tmagic_links: \"target\",\n\tclaim_tokens: \"target\",\n\tusage_daily: \"target\",\n\tusage_snapshots: \"target\",\n\taccount_insights: \"target\",\n\taccount_agent_runs: \"target\",\n\taccount_spend_caps: \"target\",\n\tprocessed_stripe_events: \"target\",\n\ttenants: \"target\",\n\ttenant_usage_monthly: \"target\",\n\ttenant_compute_addons: \"target\",\n\tprovisioning_audit_log: \"target\",\n\tprojects: \"target\",\n\tteam_members: \"target\",\n\tteam_invitations: \"target\",\n\t// ── TARGET: subscriptions ──\n\tsubscriptions: \"target\",\n\tsubscription_outbox: \"target\",\n\tsubscription_deliveries: \"target\",\n\ttrigger_evaluator_state: \"target\",\n\t// ── TARGET: subgraphs + metadata ──\n\tsubgraphs: \"target\",\n\tsubgraph_operations: \"target\",\n\tsubgraph_health_snapshots: \"target\",\n\tsubgraph_gaps: \"target\",\n\tsubgraph_usage_daily: \"target\",\n\tsubgraph_processing_stats: \"target\",\n\tsubgraph_table_snapshots: \"target\",\n\t// ── TARGET: x402 payment rail ──\n\tx402_payments: \"target\",\n\tx402_balances: \"target\",\n\t// ── BOTH ──\n\tservice_heartbeats: \"both\",\n} satisfies Record<keyof Database, DbPlane>;\n",
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"/**\n * Block finality, anchored to the burn (Bitcoin) chain.\n *\n * Post-Nakamoto, Stacks blocks arrive every few seconds, so a fixed count of\n * Stacks blocks is a poor finality proxy (e.g. 144 fast blocks ≈ 12 minutes).\n * A Stacks block is final once its anchoring burn block has enough Bitcoin\n * confirmations — so finality is expressed in burn-block confirmations and\n * mapped to a Stacks height via the burn_block_height carried on each block.\n */\n\n/** Bitcoin confirmations required before a block is treated as final. ~1 hour. */\nexport const DEFAULT_BTC_CONFIRMATIONS = 6;\n\n/**\n * Highest burn (Bitcoin) block height considered finalized given the current\n * burn tip. Stacks blocks whose `burn_block_height` is at or below the result\n * are final. Returns 0 when the chain is shorter than the confirmation window.\n */\nexport function finalizedBurnHeight(\n\tburnTipHeight: number,\n\tconfirmations: number = DEFAULT_BTC_CONFIRMATIONS,\n): number {\n\tif (!Number.isInteger(burnTipHeight) || burnTipHeight < 0) {\n\t\tthrow new Error(\"burnTipHeight must be a non-negative integer\");\n\t}\n\tif (!Number.isInteger(confirmations) || confirmations < 0) {\n\t\tthrow new Error(\"confirmations must be a non-negative integer\");\n\t}\n\treturn Math.max(0, burnTipHeight - confirmations);\n}\n",
|
|
22
22
|
"/**\n * Canonical Streams cursor codec, shared by every product (Streams, Index,\n * Datasets, bulk). A cursor is `\"<block_height>:<event_index>\"` — an opaque,\n * monotonic resume token. One implementation so encode/decode and the\n * empty-range sentinel can never drift between products.\n *\n * NOTE: this codec IS the shared piece worth centralizing. A broader \"shared\n * canonical reader\" across the ~10 raw-event query sites (streams-events,\n * streams-bulk/query, l2/storage) was deliberately NOT built: those sites split\n * into distinct query patterns and share only the row_number ordering *pattern*,\n * not an identical reader. The reorg-archive design (migration 0084) keeps the\n * main tables canonical-only, so each reader's `WHERE canonical` filter already\n * needs no dedup logic. Forcing one mega-reader was the wrong abstraction; this\n * codec captures the only part that actually drifts.\n */\n\nexport type StreamsCursor = {\n\tblock_height: number;\n\tevent_index: number;\n};\n\n/**\n * Event index used to advance a cursor past a fully-filtered range instead of\n * returning null. A filter that eliminates every event in a scanned range would\n * otherwise pin the consumer at the previous cursor and spin forever. Must fit\n * in Postgres int4 (the `stream_event_index` column type) — int4 max is plenty,\n * real blocks have far fewer than ~2.1B events.\n */\nexport const EMPTY_RANGE_EVENT_INDEX_SENTINEL = 2_147_483_647;\n\nexport function encodeStreamsCursor(cursor: StreamsCursor): string {\n\treturn `${cursor.block_height}:${cursor.event_index}`;\n}\n\nexport function decodeStreamsCursor(cursor: string): StreamsCursor {\n\tconst match = /^(0|[1-9]\\d*):(0|[1-9]\\d*)$/.exec(cursor);\n\tif (!match) {\n\t\tthrow new Error(\"Invalid Streams cursor\");\n\t}\n\n\tconst decoded = {\n\t\tblock_height: Number(match[1]),\n\t\tevent_index: Number(match[2]),\n\t};\n\n\tif (\n\t\t!Number.isSafeInteger(decoded.block_height) ||\n\t\t!Number.isSafeInteger(decoded.event_index)\n\t) {\n\t\tthrow new Error(\"Invalid Streams cursor\");\n\t}\n\n\treturn decoded;\n}\n"
|
|
23
23
|
],
|
|
24
|
-
"mappings": "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CA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,cAAc;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,sBAAsB;AAAA,IACrB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,YAAY;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,aAAa;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,mBAAmB;AAAA,IAClB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,iBAAiB;AAAA,IAChB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IAC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",
|
|
25
|
-
"debugId": "
|
|
24
|
+
"mappings": ";;;;;;;;;;;;;;;;AAAA;AAGA,IAAM,iBAAiB,EAAE,OAAO,EAAE,UAAU,CAAC,QAAQ;AAAA,EACpD,MAAM,WAAW,IACf,MAAM,GAAG,EACT,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,EACnB,OAAO,OAAO;AAAA,EAChB,MAAM,QAAQ,CAAC,WAAW,SAAS;AAAA,EACnC,WAAW,KAAK,UAAU;AAAA,IACzB,IAAI,CAAC,MAAM,SAAS,CAAC,GAAG;AAAA,MACvB,MAAM,IAAI,MACT,oBAAoB,sBAAsB,MAAM,KAAK,IAAI,GAC1D;AAAA,IACD;AAAA,EACD;AAAA,EACA,OAAO;AAAA,CACP;AAsBD,IAAM,YAAwC,EAAE,OAAO;AAAA,EACtD,cAAc,EAAE,WACf,CAAC,QAAS,OAAO,QAAQ,YAAY,IAAI,WAAW,IAAI,YAAY,KACpE,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,CAC3B;AAAA,EACA,qBAAqB,EAAE,WACtB,CAAC,QAAS,OAAO,QAAQ,YAAY,IAAI,WAAW,IAAI,YAAY,KACpE,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,CAC3B;AAAA,EACA,qBAAqB,EAAE,WACtB,CAAC,QAAS,OAAO,QAAQ,YAAY,IAAI,WAAW,IAAI,YAAY,KACpE,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,CAC3B;AAAA,EACA,SAAS,EAAE,KAAK,CAAC,WAAW,SAAS,CAAC,EAAE,SAAS;AAAA,EACjD,UAAU,eAAe,SAAS;AAAA,EAClC,WAAW,EAAE,KAAK,CAAC,SAAS,QAAQ,QAAQ,OAAO,CAAC,EAAE,QAAQ,MAAM;AAAA,EACpE,UAAU,EACR,KAAK,CAAC,eAAe,cAAc,MAAM,CAAC,EAC1C,QAAQ,aAAa;AACxB,CAAC;AAMD,IAAI,YAAwB;AAErB,SAAS,MAAM,GAAQ;AAAA,EAC7B,IAAI,WAAW;AAAA,IACd,OAAO;AAAA,EACR;AAAA,EAEA,MAAM,SAAS,UAAU,UAAU,QAAQ,GAAG;AAAA,EAE9C,IAAI,CAAC,OAAO,SAAS;AAAA,IACpB,QAAQ,MAAM,sCAAqC;AAAA,IACnD,QAAQ,MAAM,EAAE,aAAa,OAAO,KAAK,CAAC;AAAA,IAC1C,MAAM,IAAI,MAAM,mCAAmC;AAAA,EACpD;AAAA,EAGA,IAAI;AAAA,EACJ,IAAI,OAAO,KAAK,YAAY,OAAO,KAAK,SAAS,SAAS,GAAG;AAAA,IAC5D,kBAAkB,OAAO,KAAK;AAAA,EAC/B,EAAO,SAAI,OAAO,KAAK,SAAS;AAAA,IAC/B,kBAAkB,CAAC,OAAO,KAAK,OAAO;AAAA,EACvC,EAAO;AAAA,IACN,kBAAkB,CAAC,SAAS;AAAA;AAAA,EAG7B,YAAY,KAAK,OAAO,MAAM,gBAAgB;AAAA,EAC9C,OAAO;AAAA;AAeD,SAAS,eAAe,GAAY;AAAA,EAE1C,OAAO,QAAQ,IAAI,gBAAgB;AAAA;AAQ7B,SAAS,oBAAoB,GAAY;AAAA,EAC/C,OAAO,QAAQ,IAAI,yBAAyB;AAAA;;AChH7C,IAAM,aAAuC;AAAA,EAC5C,OAAO;AAAA,EACP,MAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAO;AACR;AAAA;AAEA,MAAM,OAAO;AAAA,EACJ;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EAEf,IAAI,GAAG;AAAA,IACd,IAAI,KAAK;AAAA,MAAc;AAAA,IACvB,KAAK,eAAe;AAAA,IACpB,IAAI;AAAA,MACH,MAAM,MAAM,OAAO;AAAA,MACnB,KAAK,SAAS,IAAI;AAAA,MAClB,KAAK,gBAAgB,IAAI,aAAa;AAAA,MACrC,MAAM;AAAA,MAEP,KAAK,SAAS;AAAA,MACd,KAAK,gBAAgB;AAAA;AAAA;AAAA,MAIX,KAAK,GAAa;AAAA,IAC7B,KAAK,KAAK;AAAA,IAEV,OAAO,KAAK;AAAA;AAAA,MAGD,YAAY,GAAY;AAAA,IACnC,KAAK,KAAK;AAAA,IAEV,OAAO,KAAK;AAAA;AAAA,EAGL,SAAS,CAAC,OAA0B;AAAA,IAC3C,OAAO,WAAW,UAAU,WAAW,KAAK;AAAA;AAAA,EAGrC,aAAa,CACpB,OACA,SAEA,MACC;AAAA,IACD,MAAM,YAAY,IAAI,KAAK,EAAE,YAAY;AAAA,IAEzC,IAAI,KAAK,cAAc;AAAA,MAEtB,OAAO,KAAK,UAAU;AAAA,QACrB;AAAA,QACA;AAAA,QACA;AAAA,WACG;AAAA,MACJ,CAAC;AAAA,IACF;AAAA,IAGA,MAAM,UAAU,OAAO,IAAI,KAAK,UAAU,IAAI,MAAM;AAAA,IACpD,OAAO,IAAI,cAAc,MAAM,YAAY,MAAM,UAAU;AAAA;AAAA,EAI5D,KAAK,CAAC,SAAiB,MAAkC;AAAA,IACxD,IAAI,KAAK,UAAU,OAAO,GAAG;AAAA,MAC5B,QAAQ,MAAM,KAAK,cAAc,SAAS,SAAS,IAAI,CAAC;AAAA,IACzD;AAAA;AAAA,EAID,IAAI,CAAC,SAAiB,MAAkC;AAAA,IACvD,IAAI,KAAK,UAAU,MAAM,GAAG;AAAA,MAC3B,QAAQ,KAAK,KAAK,cAAc,QAAQ,SAAS,IAAI,CAAC;AAAA,IACvD;AAAA;AAAA,EAID,IAAI,CAAC,SAAiB,MAAkC;AAAA,IACvD,IAAI,KAAK,UAAU,MAAM,GAAG;AAAA,MAC3B,QAAQ,KAAK,KAAK,cAAc,QAAQ,SAAS,IAAI,CAAC;AAAA,IACvD;AAAA;AAAA,EAID,KAAK,CAAC,SAAiB,MAAkC;AAAA,IACxD,IAAI,KAAK,UAAU,OAAO,GAAG;AAAA,MAC5B,QAAQ,MAAM,KAAK,cAAc,SAAS,SAAS,IAAI,CAAC;AAAA,IACzD;AAAA;AAEF;AAGO,IAAM,SAAiB,IAAI;;;ACnGlC;AAWO,SAAS,KAAkB,CAAC,OAAyB;AAAA,EAC3D,MAAM,UAAU,KAAK,UAAU,OAAO,CAAC,IAAI,MAC1C,OAAO,MAAM,WAAW,EAAE,SAAS,IAAI,CACxC,EAAE,QAAQ,MAAM,IAAI;AAAA,EACpB,OAAO,MAAM,IAAI,IAAI,IAAI,iBAAiB;AAAA;AAQpC,SAAS,UAAuB,CAAC,OAAmB;AAAA,EAC1D,IAAI,OAAO,UAAU,UAAU;AAAA,IAC9B,IAAI;AAAA,MACH,OAAO,KAAK,MAAM,KAAK;AAAA,MACtB,MAAM;AAAA,MACP,OAAO;AAAA;AAAA,EAET;AAAA,EACA,OAAQ,SAAS,CAAC;AAAA;;;AC/BnB;AACA;AACA;AA0SA,gBAAS;;;AC9RF,IAAM,sBAAsB;AAAA,EAClC,QAAQ;AAAA,IACP;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,gBAAgB;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,cAAc;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,sBAAsB;AAAA,IACrB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,YAAY;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,aAAa;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EACA,mBAAmB;AAAA,IAClB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAAA,EA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",
|
|
25
|
+
"debugId": "F4913FCFFE45C09864756E2164756E21",
|
|
26
26
|
"names": []
|
|
27
27
|
}
|
package/dist/src/leader.js
CHANGED
|
@@ -57,6 +57,9 @@ function getEnv() {
|
|
|
57
57
|
cachedEnv = { ...result.data, enabledNetworks };
|
|
58
58
|
return cachedEnv;
|
|
59
59
|
}
|
|
60
|
+
function isProductionEnv() {
|
|
61
|
+
return process.env["NODE_ENV"] === "production";
|
|
62
|
+
}
|
|
60
63
|
function isPox4DecoderEnabled() {
|
|
61
64
|
return process.env.POX4_DECODER_ENABLED !== "false";
|
|
62
65
|
}
|
|
@@ -253,5 +256,5 @@ export {
|
|
|
253
256
|
INDEXER_LEADER_LOCK_KEY
|
|
254
257
|
};
|
|
255
258
|
|
|
256
|
-
//# debugId=
|
|
259
|
+
//# debugId=9BB99206C51AF0D164756E2164756E21
|
|
257
260
|
//# sourceMappingURL=leader.js.map
|
package/dist/src/leader.js.map
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/env.ts", "../src/logger.ts", "../src/leader.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"import { z } from \"zod/v4\";\n\n// Parse comma-separated networks\nconst networksSchema = z.string().transform((val) => {\n\tconst networks = val\n\t\t.split(\",\")\n\t\t.map((n) => n.trim())\n\t\t.filter(Boolean);\n\tconst valid = [\"mainnet\", \"testnet\"];\n\tfor (const n of networks) {\n\t\tif (!valid.includes(n)) {\n\t\t\tthrow new Error(\n\t\t\t\t`Invalid network: ${n}. Must be one of: ${valid.join(\", \")}`,\n\t\t\t);\n\t\t}\n\t}\n\treturn networks as (\"mainnet\" | \"testnet\")[];\n});\n\ninterface EnvSchemaOutput {\n\tDATABASE_URL?: string;\n\t/**\n\t * Shared indexer DB (blocks/txs/events). Falls back to DATABASE_URL.\n\t * Set this alongside TARGET_DATABASE_URL to enable dual-DB mode.\n\t */\n\tSOURCE_DATABASE_URL?: string;\n\t/**\n\t * Tenant DB (subgraph schemas + subgraphs table). Falls back to DATABASE_URL.\n\t * Set this alongside SOURCE_DATABASE_URL to enable dual-DB mode.\n\t */\n\tTARGET_DATABASE_URL?: string;\n\tNETWORK?: \"mainnet\" | \"testnet\";\n\tNETWORKS?: (\"mainnet\" | \"testnet\")[];\n\tLOG_LEVEL: \"debug\" | \"info\" | \"warn\" | \"error\";\n\tNODE_ENV: \"development\" | \"production\" | \"test\";\n}\n\n// Cast needed: z.preprocess / z.default create different _input vs _output types\n// that z.ZodType<T> can't represent without explicit input type param\nconst envSchema: z.ZodType<EnvSchemaOutput> = z.object({\n\tDATABASE_URL: z.preprocess(\n\t\t(val) => (typeof val === \"string\" && val.length === 0 ? undefined : val),\n\t\tz.string().url().optional(),\n\t),\n\tSOURCE_DATABASE_URL: z.preprocess(\n\t\t(val) => (typeof val === \"string\" && val.length === 0 ? undefined : val),\n\t\tz.string().url().optional(),\n\t),\n\tTARGET_DATABASE_URL: z.preprocess(\n\t\t(val) => (typeof val === \"string\" && val.length === 0 ? undefined : val),\n\t\tz.string().url().optional(),\n\t),\n\tNETWORK: z.enum([\"mainnet\", \"testnet\"]).optional(),\n\tNETWORKS: networksSchema.optional(),\n\tLOG_LEVEL: z.enum([\"debug\", \"info\", \"warn\", \"error\"]).default(\"info\"),\n\tNODE_ENV: z\n\t\t.enum([\"development\", \"production\", \"test\"])\n\t\t.default(\"development\"),\n}) as unknown as z.ZodType<EnvSchemaOutput>;\n\nexport type Env = EnvSchemaOutput & {\n\tenabledNetworks: (\"mainnet\" | \"testnet\")[];\n};\n\nlet cachedEnv: Env | null = null;\n\nexport function getEnv(): Env {\n\tif (cachedEnv) {\n\t\treturn cachedEnv;\n\t}\n\n\tconst result = envSchema.safeParse(process.env);\n\n\tif (!result.success) {\n\t\tconsole.error(\"❌ Invalid environment configuration:\");\n\t\tconsole.error(z.treeifyError(result.error));\n\t\tthrow new Error(\"Invalid environment configuration\");\n\t}\n\n\t// Compute enabled networks from NETWORKS or NETWORK\n\tlet enabledNetworks: (\"mainnet\" | \"testnet\")[];\n\tif (result.data.NETWORKS && result.data.NETWORKS.length > 0) {\n\t\tenabledNetworks = result.data.NETWORKS;\n\t} else if (result.data.NETWORK) {\n\t\tenabledNetworks = [result.data.NETWORK];\n\t} else {\n\t\tenabledNetworks = [\"mainnet\"]; // Default\n\t}\n\n\tcachedEnv = { ...result.data, enabledNetworks };\n\treturn cachedEnv;\n}\n\n/**\n * PoX-4 stacking decoder is ON by default — `/v1/index/stacking` is part of the\n * public surface, so the decoder that fills `pox4_calls` runs unless explicitly\n * opted out with `POX4_DECODER_ENABLED=false` (mirrors the sBTC decoder policy).\n */\nexport function isPox4DecoderEnabled(): boolean {\n\treturn process.env.POX4_DECODER_ENABLED !== \"false\";\n}\n\n// Export for testing\nexport { envSchema };\n",
|
|
5
|
+
"import { z } from \"zod/v4\";\n\n// Parse comma-separated networks\nconst networksSchema = z.string().transform((val) => {\n\tconst networks = val\n\t\t.split(\",\")\n\t\t.map((n) => n.trim())\n\t\t.filter(Boolean);\n\tconst valid = [\"mainnet\", \"testnet\"];\n\tfor (const n of networks) {\n\t\tif (!valid.includes(n)) {\n\t\t\tthrow new Error(\n\t\t\t\t`Invalid network: ${n}. Must be one of: ${valid.join(\", \")}`,\n\t\t\t);\n\t\t}\n\t}\n\treturn networks as (\"mainnet\" | \"testnet\")[];\n});\n\ninterface EnvSchemaOutput {\n\tDATABASE_URL?: string;\n\t/**\n\t * Shared indexer DB (blocks/txs/events). Falls back to DATABASE_URL.\n\t * Set this alongside TARGET_DATABASE_URL to enable dual-DB mode.\n\t */\n\tSOURCE_DATABASE_URL?: string;\n\t/**\n\t * Tenant DB (subgraph schemas + subgraphs table). Falls back to DATABASE_URL.\n\t * Set this alongside SOURCE_DATABASE_URL to enable dual-DB mode.\n\t */\n\tTARGET_DATABASE_URL?: string;\n\tNETWORK?: \"mainnet\" | \"testnet\";\n\tNETWORKS?: (\"mainnet\" | \"testnet\")[];\n\tLOG_LEVEL: \"debug\" | \"info\" | \"warn\" | \"error\";\n\tNODE_ENV: \"development\" | \"production\" | \"test\";\n}\n\n// Cast needed: z.preprocess / z.default create different _input vs _output types\n// that z.ZodType<T> can't represent without explicit input type param\nconst envSchema: z.ZodType<EnvSchemaOutput> = z.object({\n\tDATABASE_URL: z.preprocess(\n\t\t(val) => (typeof val === \"string\" && val.length === 0 ? undefined : val),\n\t\tz.string().url().optional(),\n\t),\n\tSOURCE_DATABASE_URL: z.preprocess(\n\t\t(val) => (typeof val === \"string\" && val.length === 0 ? undefined : val),\n\t\tz.string().url().optional(),\n\t),\n\tTARGET_DATABASE_URL: z.preprocess(\n\t\t(val) => (typeof val === \"string\" && val.length === 0 ? undefined : val),\n\t\tz.string().url().optional(),\n\t),\n\tNETWORK: z.enum([\"mainnet\", \"testnet\"]).optional(),\n\tNETWORKS: networksSchema.optional(),\n\tLOG_LEVEL: z.enum([\"debug\", \"info\", \"warn\", \"error\"]).default(\"info\"),\n\tNODE_ENV: z\n\t\t.enum([\"development\", \"production\", \"test\"])\n\t\t.default(\"development\"),\n}) as unknown as z.ZodType<EnvSchemaOutput>;\n\nexport type Env = EnvSchemaOutput & {\n\tenabledNetworks: (\"mainnet\" | \"testnet\")[];\n};\n\nlet cachedEnv: Env | null = null;\n\nexport function getEnv(): Env {\n\tif (cachedEnv) {\n\t\treturn cachedEnv;\n\t}\n\n\tconst result = envSchema.safeParse(process.env);\n\n\tif (!result.success) {\n\t\tconsole.error(\"❌ Invalid environment configuration:\");\n\t\tconsole.error(z.treeifyError(result.error));\n\t\tthrow new Error(\"Invalid environment configuration\");\n\t}\n\n\t// Compute enabled networks from NETWORKS or NETWORK\n\tlet enabledNetworks: (\"mainnet\" | \"testnet\")[];\n\tif (result.data.NETWORKS && result.data.NETWORKS.length > 0) {\n\t\tenabledNetworks = result.data.NETWORKS;\n\t} else if (result.data.NETWORK) {\n\t\tenabledNetworks = [result.data.NETWORK];\n\t} else {\n\t\tenabledNetworks = [\"mainnet\"]; // Default\n\t}\n\n\tcachedEnv = { ...result.data, enabledNetworks };\n\treturn cachedEnv;\n}\n\n/**\n * True when `NODE_ENV=production`, read at RUNTIME — the single source of truth\n * for prod-vs-dev branching in this package.\n *\n * Why a helper instead of inlining `process.env.NODE_ENV === \"production\"`:\n * bunup/esbuild constant-folds the dot-access `process.env.NODE_ENV` to its\n * BUILD-time value. `@secondlayer/shared` is consumed by other services as its\n * built `dist`, so an inlined check freezes to a literal in the shipped bundle\n * (e.g. `const isProd = false`) and silently ignores the container's real\n * NODE_ENV. The bracket access below is NOT folded, so it stays a runtime read.\n * Route every prod check through here so the footgun lives in exactly one place.\n */\nexport function isProductionEnv(): boolean {\n\t// biome-ignore lint/complexity/useLiteralKeys: bracket access is deliberate — dot-access gets constant-folded by the bundler, freezing this to a build-time literal in the shipped dist.\n\treturn process.env[\"NODE_ENV\"] === \"production\";\n}\n\n/**\n * PoX-4 stacking decoder is ON by default — `/v1/index/stacking` is part of the\n * public surface, so the decoder that fills `pox4_calls` runs unless explicitly\n * opted out with `POX4_DECODER_ENABLED=false` (mirrors the sBTC decoder policy).\n */\nexport function isPox4DecoderEnabled(): boolean {\n\treturn process.env.POX4_DECODER_ENABLED !== \"false\";\n}\n\n// Export for testing\nexport { envSchema };\n",
|
|
6
6
|
"import { getEnv } from \"./env.ts\";\n\ntype LogLevel = \"debug\" | \"info\" | \"warn\" | \"error\";\n\nconst LOG_LEVELS: Record<LogLevel, number> = {\n\tdebug: 0,\n\tinfo: 1,\n\twarn: 2,\n\terror: 3,\n};\n\nclass Logger {\n\tprivate _level?: LogLevel;\n\tprivate _isProduction?: boolean;\n\tprivate _initialized = false;\n\n\tprivate init() {\n\t\tif (this._initialized) return;\n\t\tthis._initialized = true;\n\t\ttry {\n\t\t\tconst env = getEnv();\n\t\t\tthis._level = env.LOG_LEVEL;\n\t\t\tthis._isProduction = env.NODE_ENV === \"production\";\n\t\t} catch {\n\t\t\t// Fallback when env is unavailable (e.g. tests without DATABASE_URL)\n\t\t\tthis._level = \"info\";\n\t\t\tthis._isProduction = false;\n\t\t}\n\t}\n\n\tprivate get level(): LogLevel {\n\t\tthis.init();\n\t\t// biome-ignore lint/style/noNonNullAssertion: value is non-null after preceding check or by construction; TS narrowing limitation\n\t\treturn this._level!;\n\t}\n\n\tprivate get isProduction(): boolean {\n\t\tthis.init();\n\t\t// biome-ignore lint/style/noNonNullAssertion: value is non-null after preceding check or by construction; TS narrowing limitation\n\t\treturn this._isProduction!;\n\t}\n\n\tprivate shouldLog(level: LogLevel): boolean {\n\t\treturn LOG_LEVELS[level] >= LOG_LEVELS[this.level];\n\t}\n\n\tprivate formatMessage(\n\t\tlevel: LogLevel,\n\t\tmessage: string,\n\t\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\t\tmeta?: Record<string, any>,\n\t) {\n\t\tconst timestamp = new Date().toISOString();\n\n\t\tif (this.isProduction) {\n\t\t\t// JSON output for production\n\t\t\treturn JSON.stringify({\n\t\t\t\ttimestamp,\n\t\t\t\tlevel,\n\t\t\t\tmessage,\n\t\t\t\t...meta,\n\t\t\t});\n\t\t}\n\n\t\t// Human-readable output for development\n\t\tconst metaStr = meta ? ` ${JSON.stringify(meta)}` : \"\";\n\t\treturn `[${timestamp}] ${level.toUpperCase()}: ${message}${metaStr}`;\n\t}\n\n\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\tdebug(message: string, meta?: Record<string, any>): void {\n\t\tif (this.shouldLog(\"debug\")) {\n\t\t\tconsole.debug(this.formatMessage(\"debug\", message, meta));\n\t\t}\n\t}\n\n\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\tinfo(message: string, meta?: Record<string, any>): void {\n\t\tif (this.shouldLog(\"info\")) {\n\t\t\tconsole.info(this.formatMessage(\"info\", message, meta));\n\t\t}\n\t}\n\n\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\twarn(message: string, meta?: Record<string, any>): void {\n\t\tif (this.shouldLog(\"warn\")) {\n\t\t\tconsole.warn(this.formatMessage(\"warn\", message, meta));\n\t\t}\n\t}\n\n\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\terror(message: string, meta?: Record<string, any>): void {\n\t\tif (this.shouldLog(\"error\")) {\n\t\t\tconsole.error(this.formatMessage(\"error\", message, meta));\n\t\t}\n\t}\n}\n\n// Export singleton instance\nexport const logger: Logger = new Logger();\n",
|
|
7
7
|
"import postgres from \"postgres\";\nimport { logger } from \"./logger.ts\";\n\n/**\n * Single-leader election via a Postgres session advisory lock.\n *\n * Exactly one process across the fleet holds `lockKey` and runs the leader-only\n * work. Others poll and take over if the leader exits or its connection dies.\n * The lock lives on a dedicated long-lived connection — a pooled connection\n * would silently drop a session lock — and is released by closing it.\n *\n * Lock keys are centralized here so the fleet-wide set stays distinct: a\n * collision would let two unrelated singletons exclude each other.\n */\n\n/** Advisory lock key for the indexer's singleton loops. */\nexport const INDEXER_LEADER_LOCK_KEY = 770_2026;\n/** Advisory lock key for the chain-subscription trigger evaluator (+ its\n * chain-reorg cursor rewind — they mutate the same `trigger_evaluator_state`\n * row and so must share one lock). */\nexport const SUBSCRIPTION_EVALUATOR_LOCK_KEY = 770_2027;\n/** Advisory lock key for the subgraph catch-up driver. */\nexport const SUBGRAPH_CATCHUP_LOCK_KEY = 770_2028;\n\nexport type StopFn = () => void | Promise<void>;\n\n/**\n * Backend for the advisory lock. Abstracted so the election logic is testable\n * without a database; the default is Postgres-backed.\n */\nexport type LeaderBackend = {\n\t/** Try to grab the lock without blocking. */\n\ttryAcquire(lockKey: number): Promise<boolean>;\n\t/** Liveness check; throws if the lock-holding connection is gone. */\n\tping(): Promise<void>;\n\t/** Release the lock (closes the dedicated connection). */\n\tclose(): Promise<void>;\n};\n\nfunction leaderDatabaseUrl(): string {\n\treturn (\n\t\tprocess.env.SOURCE_DATABASE_URL ||\n\t\tprocess.env.DATABASE_URL ||\n\t\t\"postgres://localhost:5432/secondlayer\"\n\t);\n}\n\n/**\n * Postgres-backed advisory lock on a dedicated connection.\n *\n * Pass an explicit `url` to pin the lock to the DB that holds the serialized\n * row — after the source/target split, control-plane state (subscriptions,\n * subgraphs) lives on the target DB, so a lock on the default source DB would\n * guard nothing.\n */\nexport function createPostgresLeaderBackend(url?: string): LeaderBackend {\n\tconst resolvedUrl = url ?? leaderDatabaseUrl();\n\tconst host = (() => {\n\t\ttry {\n\t\t\treturn new URL(resolvedUrl).hostname;\n\t\t} catch {\n\t\t\treturn \"\";\n\t\t}\n\t})();\n\tconst isLocal =\n\t\thost === \"localhost\" || host === \"127.0.0.1\" || !host.includes(\".\");\n\t// max:1 + idle_timeout:0 keeps one connection open so the session lock holds.\n\tconst sql = postgres(resolvedUrl, {\n\t\tmax: 1,\n\t\tidle_timeout: 0,\n\t\tssl: isLocal\n\t\t\t? undefined\n\t\t\t: {\n\t\t\t\t\trejectUnauthorized: process.env.NODE_TLS_REJECT_UNAUTHORIZED !== \"0\",\n\t\t\t\t},\n\t});\n\treturn {\n\t\tasync tryAcquire(lockKey) {\n\t\t\tconst rows = await sql<{ locked: boolean }[]>`\n\t\t\t\tSELECT pg_try_advisory_lock(${lockKey}) AS locked\n\t\t\t`;\n\t\t\treturn rows[0]?.locked === true;\n\t\t},\n\t\tasync ping() {\n\t\t\t// Verify we STILL hold the advisory lock — not just that the connection\n\t\t\t// is alive. The driver auto-reconnects transparently; a reconnect starts\n\t\t\t// a new backend session, which silently drops the session-scoped lock. A\n\t\t\t// plain `SELECT 1` would succeed on the new session and never notice, so\n\t\t\t// two instances could both believe they're leader. The lock is held on\n\t\t\t// this (max:1) connection, so count advisory locks on the current\n\t\t\t// backend; 0 means we lost it (reconnect) → relinquish + re-elect.\n\t\t\tconst rows = await sql<{ held: number }[]>`\n\t\t\t\tSELECT count(*)::int AS held\n\t\t\t\tFROM pg_locks\n\t\t\t\tWHERE locktype = 'advisory' AND pid = pg_backend_pid()\n\t\t\t`;\n\t\t\tif ((rows[0]?.held ?? 0) === 0) {\n\t\t\t\tthrow new Error(\"advisory lock no longer held (connection reset?)\");\n\t\t\t}\n\t\t},\n\t\tasync close() {\n\t\t\t// Closing the session releases all advisory locks it held.\n\t\t\tawait sql.end({ timeout: 5 });\n\t\t},\n\t};\n}\n\nexport type WithLeaderLockOptions = {\n\tpollMs?: number;\n\theartbeatMs?: number;\n\t/** Injectable for tests; defaults to the Postgres backend. */\n\tcreateBackend?: () => LeaderBackend;\n};\n\n/**\n * Run `startWork` only while this process is leader. Returns a stop function\n * that ends election, stops the work, and releases the lock.\n */\nexport function withLeaderLock(\n\tlockKey: number,\n\tstartWork: () => StopFn | Promise<StopFn>,\n\topts: WithLeaderLockOptions = {},\n): () => Promise<void> {\n\tconst pollMs = opts.pollMs ?? 15_000;\n\tconst heartbeatMs = opts.heartbeatMs ?? 10_000;\n\tconst backend = (opts.createBackend ?? createPostgresLeaderBackend)();\n\n\tlet stopped = false;\n\tlet isLeader = false;\n\tlet stopWork: StopFn | null = null;\n\tlet pollTimer: ReturnType<typeof setInterval> | null = null;\n\tlet heartbeatTimer: ReturnType<typeof setInterval> | null = null;\n\n\tasync function relinquish() {\n\t\tisLeader = false;\n\t\tif (heartbeatTimer) {\n\t\t\tclearInterval(heartbeatTimer);\n\t\t\theartbeatTimer = null;\n\t\t}\n\t\tif (stopWork) {\n\t\t\ttry {\n\t\t\t\tawait stopWork();\n\t\t\t} catch (err) {\n\t\t\t\tlogger.warn(\"Leader work stop failed\", { error: String(err) });\n\t\t\t}\n\t\t\tstopWork = null;\n\t\t}\n\t}\n\n\tfunction startHeartbeat() {\n\t\theartbeatTimer = setInterval(async () => {\n\t\t\tif (stopped || !isLeader) return;\n\t\t\ttry {\n\t\t\t\tawait backend.ping();\n\t\t\t} catch (err) {\n\t\t\t\tlogger.warn(\"Leader heartbeat failed; relinquishing\", {\n\t\t\t\t\tlockKey,\n\t\t\t\t\terror: String(err),\n\t\t\t\t});\n\t\t\t\tawait relinquish();\n\t\t\t}\n\t\t}, heartbeatMs);\n\t}\n\n\tasync function tryAcquire() {\n\t\tif (stopped || isLeader) return;\n\t\ttry {\n\t\t\tif (await backend.tryAcquire(lockKey)) {\n\t\t\t\tisLeader = true;\n\t\t\t\tlogger.info(\"Acquired leader lock\", { lockKey });\n\t\t\t\tstopWork = await startWork();\n\t\t\t\tstartHeartbeat();\n\t\t\t}\n\t\t} catch (err) {\n\t\t\tlogger.warn(\"Leader lock acquire failed\", {\n\t\t\t\tlockKey,\n\t\t\t\terror: String(err),\n\t\t\t});\n\t\t}\n\t}\n\n\tpollTimer = setInterval(tryAcquire, pollMs);\n\tvoid tryAcquire();\n\n\treturn async () => {\n\t\tstopped = true;\n\t\tif (pollTimer) clearInterval(pollTimer);\n\t\tawait relinquish();\n\t\tawait backend.close().catch(() => {});\n\t};\n}\n"
|
|
8
8
|
],
|
|
9
|
-
"mappings": ";;;;;;;;;;;;;;;;;AAAA;AAGA,IAAM,iBAAiB,EAAE,OAAO,EAAE,UAAU,CAAC,QAAQ;AAAA,EACpD,MAAM,WAAW,IACf,MAAM,GAAG,EACT,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,EACnB,OAAO,OAAO;AAAA,EAChB,MAAM,QAAQ,CAAC,WAAW,SAAS;AAAA,EACnC,WAAW,KAAK,UAAU;AAAA,IACzB,IAAI,CAAC,MAAM,SAAS,CAAC,GAAG;AAAA,MACvB,MAAM,IAAI,MACT,oBAAoB,sBAAsB,MAAM,KAAK,IAAI,GAC1D;AAAA,IACD;AAAA,EACD;AAAA,EACA,OAAO;AAAA,CACP;AAsBD,IAAM,YAAwC,EAAE,OAAO;AAAA,EACtD,cAAc,EAAE,WACf,CAAC,QAAS,OAAO,QAAQ,YAAY,IAAI,WAAW,IAAI,YAAY,KACpE,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,CAC3B;AAAA,EACA,qBAAqB,EAAE,WACtB,CAAC,QAAS,OAAO,QAAQ,YAAY,IAAI,WAAW,IAAI,YAAY,KACpE,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,CAC3B;AAAA,EACA,qBAAqB,EAAE,WACtB,CAAC,QAAS,OAAO,QAAQ,YAAY,IAAI,WAAW,IAAI,YAAY,KACpE,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,CAC3B;AAAA,EACA,SAAS,EAAE,KAAK,CAAC,WAAW,SAAS,CAAC,EAAE,SAAS;AAAA,EACjD,UAAU,eAAe,SAAS;AAAA,EAClC,WAAW,EAAE,KAAK,CAAC,SAAS,QAAQ,QAAQ,OAAO,CAAC,EAAE,QAAQ,MAAM;AAAA,EACpE,UAAU,EACR,KAAK,CAAC,eAAe,cAAc,MAAM,CAAC,EAC1C,QAAQ,aAAa;AACxB,CAAC;AAMD,IAAI,YAAwB;AAErB,SAAS,MAAM,GAAQ;AAAA,EAC7B,IAAI,WAAW;AAAA,IACd,OAAO;AAAA,EACR;AAAA,EAEA,MAAM,SAAS,UAAU,UAAU,QAAQ,GAAG;AAAA,EAE9C,IAAI,CAAC,OAAO,SAAS;AAAA,IACpB,QAAQ,MAAM,sCAAqC;AAAA,IACnD,QAAQ,MAAM,EAAE,aAAa,OAAO,KAAK,CAAC;AAAA,IAC1C,MAAM,IAAI,MAAM,mCAAmC;AAAA,EACpD;AAAA,EAGA,IAAI;AAAA,EACJ,IAAI,OAAO,KAAK,YAAY,OAAO,KAAK,SAAS,SAAS,GAAG;AAAA,IAC5D,kBAAkB,OAAO,KAAK;AAAA,EAC/B,EAAO,SAAI,OAAO,KAAK,SAAS;AAAA,IAC/B,kBAAkB,CAAC,OAAO,KAAK,OAAO;AAAA,EACvC,EAAO;AAAA,IACN,kBAAkB,CAAC,SAAS;AAAA;AAAA,EAG7B,YAAY,KAAK,OAAO,MAAM,gBAAgB;AAAA,EAC9C,OAAO;AAAA;
|
|
10
|
-
"debugId": "
|
|
9
|
+
"mappings": "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",
|
|
10
|
+
"debugId": "9BB99206C51AF0D164756E2164756E21",
|
|
11
11
|
"names": []
|
|
12
12
|
}
|
package/dist/src/logger.js
CHANGED
|
@@ -57,6 +57,9 @@ function getEnv() {
|
|
|
57
57
|
cachedEnv = { ...result.data, enabledNetworks };
|
|
58
58
|
return cachedEnv;
|
|
59
59
|
}
|
|
60
|
+
function isProductionEnv() {
|
|
61
|
+
return process.env["NODE_ENV"] === "production";
|
|
62
|
+
}
|
|
60
63
|
function isPox4DecoderEnabled() {
|
|
61
64
|
return process.env.POX4_DECODER_ENABLED !== "false";
|
|
62
65
|
}
|
|
@@ -135,5 +138,5 @@ export {
|
|
|
135
138
|
logger
|
|
136
139
|
};
|
|
137
140
|
|
|
138
|
-
//# debugId=
|
|
141
|
+
//# debugId=33C9C7B4C1B00A7964756E2164756E21
|
|
139
142
|
//# sourceMappingURL=logger.js.map
|
package/dist/src/logger.js.map
CHANGED
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/env.ts", "../src/logger.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"import { z } from \"zod/v4\";\n\n// Parse comma-separated networks\nconst networksSchema = z.string().transform((val) => {\n\tconst networks = val\n\t\t.split(\",\")\n\t\t.map((n) => n.trim())\n\t\t.filter(Boolean);\n\tconst valid = [\"mainnet\", \"testnet\"];\n\tfor (const n of networks) {\n\t\tif (!valid.includes(n)) {\n\t\t\tthrow new Error(\n\t\t\t\t`Invalid network: ${n}. Must be one of: ${valid.join(\", \")}`,\n\t\t\t);\n\t\t}\n\t}\n\treturn networks as (\"mainnet\" | \"testnet\")[];\n});\n\ninterface EnvSchemaOutput {\n\tDATABASE_URL?: string;\n\t/**\n\t * Shared indexer DB (blocks/txs/events). Falls back to DATABASE_URL.\n\t * Set this alongside TARGET_DATABASE_URL to enable dual-DB mode.\n\t */\n\tSOURCE_DATABASE_URL?: string;\n\t/**\n\t * Tenant DB (subgraph schemas + subgraphs table). Falls back to DATABASE_URL.\n\t * Set this alongside SOURCE_DATABASE_URL to enable dual-DB mode.\n\t */\n\tTARGET_DATABASE_URL?: string;\n\tNETWORK?: \"mainnet\" | \"testnet\";\n\tNETWORKS?: (\"mainnet\" | \"testnet\")[];\n\tLOG_LEVEL: \"debug\" | \"info\" | \"warn\" | \"error\";\n\tNODE_ENV: \"development\" | \"production\" | \"test\";\n}\n\n// Cast needed: z.preprocess / z.default create different _input vs _output types\n// that z.ZodType<T> can't represent without explicit input type param\nconst envSchema: z.ZodType<EnvSchemaOutput> = z.object({\n\tDATABASE_URL: z.preprocess(\n\t\t(val) => (typeof val === \"string\" && val.length === 0 ? undefined : val),\n\t\tz.string().url().optional(),\n\t),\n\tSOURCE_DATABASE_URL: z.preprocess(\n\t\t(val) => (typeof val === \"string\" && val.length === 0 ? undefined : val),\n\t\tz.string().url().optional(),\n\t),\n\tTARGET_DATABASE_URL: z.preprocess(\n\t\t(val) => (typeof val === \"string\" && val.length === 0 ? undefined : val),\n\t\tz.string().url().optional(),\n\t),\n\tNETWORK: z.enum([\"mainnet\", \"testnet\"]).optional(),\n\tNETWORKS: networksSchema.optional(),\n\tLOG_LEVEL: z.enum([\"debug\", \"info\", \"warn\", \"error\"]).default(\"info\"),\n\tNODE_ENV: z\n\t\t.enum([\"development\", \"production\", \"test\"])\n\t\t.default(\"development\"),\n}) as unknown as z.ZodType<EnvSchemaOutput>;\n\nexport type Env = EnvSchemaOutput & {\n\tenabledNetworks: (\"mainnet\" | \"testnet\")[];\n};\n\nlet cachedEnv: Env | null = null;\n\nexport function getEnv(): Env {\n\tif (cachedEnv) {\n\t\treturn cachedEnv;\n\t}\n\n\tconst result = envSchema.safeParse(process.env);\n\n\tif (!result.success) {\n\t\tconsole.error(\"❌ Invalid environment configuration:\");\n\t\tconsole.error(z.treeifyError(result.error));\n\t\tthrow new Error(\"Invalid environment configuration\");\n\t}\n\n\t// Compute enabled networks from NETWORKS or NETWORK\n\tlet enabledNetworks: (\"mainnet\" | \"testnet\")[];\n\tif (result.data.NETWORKS && result.data.NETWORKS.length > 0) {\n\t\tenabledNetworks = result.data.NETWORKS;\n\t} else if (result.data.NETWORK) {\n\t\tenabledNetworks = [result.data.NETWORK];\n\t} else {\n\t\tenabledNetworks = [\"mainnet\"]; // Default\n\t}\n\n\tcachedEnv = { ...result.data, enabledNetworks };\n\treturn cachedEnv;\n}\n\n/**\n * PoX-4 stacking decoder is ON by default — `/v1/index/stacking` is part of the\n * public surface, so the decoder that fills `pox4_calls` runs unless explicitly\n * opted out with `POX4_DECODER_ENABLED=false` (mirrors the sBTC decoder policy).\n */\nexport function isPox4DecoderEnabled(): boolean {\n\treturn process.env.POX4_DECODER_ENABLED !== \"false\";\n}\n\n// Export for testing\nexport { envSchema };\n",
|
|
5
|
+
"import { z } from \"zod/v4\";\n\n// Parse comma-separated networks\nconst networksSchema = z.string().transform((val) => {\n\tconst networks = val\n\t\t.split(\",\")\n\t\t.map((n) => n.trim())\n\t\t.filter(Boolean);\n\tconst valid = [\"mainnet\", \"testnet\"];\n\tfor (const n of networks) {\n\t\tif (!valid.includes(n)) {\n\t\t\tthrow new Error(\n\t\t\t\t`Invalid network: ${n}. Must be one of: ${valid.join(\", \")}`,\n\t\t\t);\n\t\t}\n\t}\n\treturn networks as (\"mainnet\" | \"testnet\")[];\n});\n\ninterface EnvSchemaOutput {\n\tDATABASE_URL?: string;\n\t/**\n\t * Shared indexer DB (blocks/txs/events). Falls back to DATABASE_URL.\n\t * Set this alongside TARGET_DATABASE_URL to enable dual-DB mode.\n\t */\n\tSOURCE_DATABASE_URL?: string;\n\t/**\n\t * Tenant DB (subgraph schemas + subgraphs table). Falls back to DATABASE_URL.\n\t * Set this alongside SOURCE_DATABASE_URL to enable dual-DB mode.\n\t */\n\tTARGET_DATABASE_URL?: string;\n\tNETWORK?: \"mainnet\" | \"testnet\";\n\tNETWORKS?: (\"mainnet\" | \"testnet\")[];\n\tLOG_LEVEL: \"debug\" | \"info\" | \"warn\" | \"error\";\n\tNODE_ENV: \"development\" | \"production\" | \"test\";\n}\n\n// Cast needed: z.preprocess / z.default create different _input vs _output types\n// that z.ZodType<T> can't represent without explicit input type param\nconst envSchema: z.ZodType<EnvSchemaOutput> = z.object({\n\tDATABASE_URL: z.preprocess(\n\t\t(val) => (typeof val === \"string\" && val.length === 0 ? undefined : val),\n\t\tz.string().url().optional(),\n\t),\n\tSOURCE_DATABASE_URL: z.preprocess(\n\t\t(val) => (typeof val === \"string\" && val.length === 0 ? undefined : val),\n\t\tz.string().url().optional(),\n\t),\n\tTARGET_DATABASE_URL: z.preprocess(\n\t\t(val) => (typeof val === \"string\" && val.length === 0 ? undefined : val),\n\t\tz.string().url().optional(),\n\t),\n\tNETWORK: z.enum([\"mainnet\", \"testnet\"]).optional(),\n\tNETWORKS: networksSchema.optional(),\n\tLOG_LEVEL: z.enum([\"debug\", \"info\", \"warn\", \"error\"]).default(\"info\"),\n\tNODE_ENV: z\n\t\t.enum([\"development\", \"production\", \"test\"])\n\t\t.default(\"development\"),\n}) as unknown as z.ZodType<EnvSchemaOutput>;\n\nexport type Env = EnvSchemaOutput & {\n\tenabledNetworks: (\"mainnet\" | \"testnet\")[];\n};\n\nlet cachedEnv: Env | null = null;\n\nexport function getEnv(): Env {\n\tif (cachedEnv) {\n\t\treturn cachedEnv;\n\t}\n\n\tconst result = envSchema.safeParse(process.env);\n\n\tif (!result.success) {\n\t\tconsole.error(\"❌ Invalid environment configuration:\");\n\t\tconsole.error(z.treeifyError(result.error));\n\t\tthrow new Error(\"Invalid environment configuration\");\n\t}\n\n\t// Compute enabled networks from NETWORKS or NETWORK\n\tlet enabledNetworks: (\"mainnet\" | \"testnet\")[];\n\tif (result.data.NETWORKS && result.data.NETWORKS.length > 0) {\n\t\tenabledNetworks = result.data.NETWORKS;\n\t} else if (result.data.NETWORK) {\n\t\tenabledNetworks = [result.data.NETWORK];\n\t} else {\n\t\tenabledNetworks = [\"mainnet\"]; // Default\n\t}\n\n\tcachedEnv = { ...result.data, enabledNetworks };\n\treturn cachedEnv;\n}\n\n/**\n * True when `NODE_ENV=production`, read at RUNTIME — the single source of truth\n * for prod-vs-dev branching in this package.\n *\n * Why a helper instead of inlining `process.env.NODE_ENV === \"production\"`:\n * bunup/esbuild constant-folds the dot-access `process.env.NODE_ENV` to its\n * BUILD-time value. `@secondlayer/shared` is consumed by other services as its\n * built `dist`, so an inlined check freezes to a literal in the shipped bundle\n * (e.g. `const isProd = false`) and silently ignores the container's real\n * NODE_ENV. The bracket access below is NOT folded, so it stays a runtime read.\n * Route every prod check through here so the footgun lives in exactly one place.\n */\nexport function isProductionEnv(): boolean {\n\t// biome-ignore lint/complexity/useLiteralKeys: bracket access is deliberate — dot-access gets constant-folded by the bundler, freezing this to a build-time literal in the shipped dist.\n\treturn process.env[\"NODE_ENV\"] === \"production\";\n}\n\n/**\n * PoX-4 stacking decoder is ON by default — `/v1/index/stacking` is part of the\n * public surface, so the decoder that fills `pox4_calls` runs unless explicitly\n * opted out with `POX4_DECODER_ENABLED=false` (mirrors the sBTC decoder policy).\n */\nexport function isPox4DecoderEnabled(): boolean {\n\treturn process.env.POX4_DECODER_ENABLED !== \"false\";\n}\n\n// Export for testing\nexport { envSchema };\n",
|
|
6
6
|
"import { getEnv } from \"./env.ts\";\n\ntype LogLevel = \"debug\" | \"info\" | \"warn\" | \"error\";\n\nconst LOG_LEVELS: Record<LogLevel, number> = {\n\tdebug: 0,\n\tinfo: 1,\n\twarn: 2,\n\terror: 3,\n};\n\nclass Logger {\n\tprivate _level?: LogLevel;\n\tprivate _isProduction?: boolean;\n\tprivate _initialized = false;\n\n\tprivate init() {\n\t\tif (this._initialized) return;\n\t\tthis._initialized = true;\n\t\ttry {\n\t\t\tconst env = getEnv();\n\t\t\tthis._level = env.LOG_LEVEL;\n\t\t\tthis._isProduction = env.NODE_ENV === \"production\";\n\t\t} catch {\n\t\t\t// Fallback when env is unavailable (e.g. tests without DATABASE_URL)\n\t\t\tthis._level = \"info\";\n\t\t\tthis._isProduction = false;\n\t\t}\n\t}\n\n\tprivate get level(): LogLevel {\n\t\tthis.init();\n\t\t// biome-ignore lint/style/noNonNullAssertion: value is non-null after preceding check or by construction; TS narrowing limitation\n\t\treturn this._level!;\n\t}\n\n\tprivate get isProduction(): boolean {\n\t\tthis.init();\n\t\t// biome-ignore lint/style/noNonNullAssertion: value is non-null after preceding check or by construction; TS narrowing limitation\n\t\treturn this._isProduction!;\n\t}\n\n\tprivate shouldLog(level: LogLevel): boolean {\n\t\treturn LOG_LEVELS[level] >= LOG_LEVELS[this.level];\n\t}\n\n\tprivate formatMessage(\n\t\tlevel: LogLevel,\n\t\tmessage: string,\n\t\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\t\tmeta?: Record<string, any>,\n\t) {\n\t\tconst timestamp = new Date().toISOString();\n\n\t\tif (this.isProduction) {\n\t\t\t// JSON output for production\n\t\t\treturn JSON.stringify({\n\t\t\t\ttimestamp,\n\t\t\t\tlevel,\n\t\t\t\tmessage,\n\t\t\t\t...meta,\n\t\t\t});\n\t\t}\n\n\t\t// Human-readable output for development\n\t\tconst metaStr = meta ? ` ${JSON.stringify(meta)}` : \"\";\n\t\treturn `[${timestamp}] ${level.toUpperCase()}: ${message}${metaStr}`;\n\t}\n\n\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\tdebug(message: string, meta?: Record<string, any>): void {\n\t\tif (this.shouldLog(\"debug\")) {\n\t\t\tconsole.debug(this.formatMessage(\"debug\", message, meta));\n\t\t}\n\t}\n\n\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\tinfo(message: string, meta?: Record<string, any>): void {\n\t\tif (this.shouldLog(\"info\")) {\n\t\t\tconsole.info(this.formatMessage(\"info\", message, meta));\n\t\t}\n\t}\n\n\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\twarn(message: string, meta?: Record<string, any>): void {\n\t\tif (this.shouldLog(\"warn\")) {\n\t\t\tconsole.warn(this.formatMessage(\"warn\", message, meta));\n\t\t}\n\t}\n\n\t// biome-ignore lint/suspicious/noExplicitAny: interop boundary or dynamic-shape value where typing adds friction without runtime safety\n\terror(message: string, meta?: Record<string, any>): void {\n\t\tif (this.shouldLog(\"error\")) {\n\t\t\tconsole.error(this.formatMessage(\"error\", message, meta));\n\t\t}\n\t}\n}\n\n// Export singleton instance\nexport const logger: Logger = new Logger();\n"
|
|
7
7
|
],
|
|
8
|
-
"mappings": ";;;;;;;;;;;;;;;;;AAAA;AAGA,IAAM,iBAAiB,EAAE,OAAO,EAAE,UAAU,CAAC,QAAQ;AAAA,EACpD,MAAM,WAAW,IACf,MAAM,GAAG,EACT,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,EACnB,OAAO,OAAO;AAAA,EAChB,MAAM,QAAQ,CAAC,WAAW,SAAS;AAAA,EACnC,WAAW,KAAK,UAAU;AAAA,IACzB,IAAI,CAAC,MAAM,SAAS,CAAC,GAAG;AAAA,MACvB,MAAM,IAAI,MACT,oBAAoB,sBAAsB,MAAM,KAAK,IAAI,GAC1D;AAAA,IACD;AAAA,EACD;AAAA,EACA,OAAO;AAAA,CACP;AAsBD,IAAM,YAAwC,EAAE,OAAO;AAAA,EACtD,cAAc,EAAE,WACf,CAAC,QAAS,OAAO,QAAQ,YAAY,IAAI,WAAW,IAAI,YAAY,KACpE,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,CAC3B;AAAA,EACA,qBAAqB,EAAE,WACtB,CAAC,QAAS,OAAO,QAAQ,YAAY,IAAI,WAAW,IAAI,YAAY,KACpE,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,CAC3B;AAAA,EACA,qBAAqB,EAAE,WACtB,CAAC,QAAS,OAAO,QAAQ,YAAY,IAAI,WAAW,IAAI,YAAY,KACpE,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,CAC3B;AAAA,EACA,SAAS,EAAE,KAAK,CAAC,WAAW,SAAS,CAAC,EAAE,SAAS;AAAA,EACjD,UAAU,eAAe,SAAS;AAAA,EAClC,WAAW,EAAE,KAAK,CAAC,SAAS,QAAQ,QAAQ,OAAO,CAAC,EAAE,QAAQ,MAAM;AAAA,EACpE,UAAU,EACR,KAAK,CAAC,eAAe,cAAc,MAAM,CAAC,EAC1C,QAAQ,aAAa;AACxB,CAAC;AAMD,IAAI,YAAwB;AAErB,SAAS,MAAM,GAAQ;AAAA,EAC7B,IAAI,WAAW;AAAA,IACd,OAAO;AAAA,EACR;AAAA,EAEA,MAAM,SAAS,UAAU,UAAU,QAAQ,GAAG;AAAA,EAE9C,IAAI,CAAC,OAAO,SAAS;AAAA,IACpB,QAAQ,MAAM,sCAAqC;AAAA,IACnD,QAAQ,MAAM,EAAE,aAAa,OAAO,KAAK,CAAC;AAAA,IAC1C,MAAM,IAAI,MAAM,mCAAmC;AAAA,EACpD;AAAA,EAGA,IAAI;AAAA,EACJ,IAAI,OAAO,KAAK,YAAY,OAAO,KAAK,SAAS,SAAS,GAAG;AAAA,IAC5D,kBAAkB,OAAO,KAAK;AAAA,EAC/B,EAAO,SAAI,OAAO,KAAK,SAAS;AAAA,IAC/B,kBAAkB,CAAC,OAAO,KAAK,OAAO;AAAA,EACvC,EAAO;AAAA,IACN,kBAAkB,CAAC,SAAS;AAAA;AAAA,EAG7B,YAAY,KAAK,OAAO,MAAM,gBAAgB;AAAA,EAC9C,OAAO;AAAA;
|
|
9
|
-
"debugId": "
|
|
8
|
+
"mappings": "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",
|
|
9
|
+
"debugId": "33C9C7B4C1B00A7964756E2164756E21",
|
|
10
10
|
"names": []
|
|
11
11
|
}
|
|
@@ -57,6 +57,9 @@ function getEnv() {
|
|
|
57
57
|
cachedEnv = { ...result.data, enabledNetworks };
|
|
58
58
|
return cachedEnv;
|
|
59
59
|
}
|
|
60
|
+
function isProductionEnv() {
|
|
61
|
+
return process.env["NODE_ENV"] === "production";
|
|
62
|
+
}
|
|
60
63
|
function isPox4DecoderEnabled() {
|
|
61
64
|
return process.env.POX4_DECODER_ENABLED !== "false";
|
|
62
65
|
}
|
|
@@ -397,5 +400,5 @@ export {
|
|
|
397
400
|
ArchiveReplayClient
|
|
398
401
|
};
|
|
399
402
|
|
|
400
|
-
//# debugId=
|
|
403
|
+
//# debugId=DF0DB5FD47016FBE64756E2164756E21
|
|
401
404
|
//# sourceMappingURL=archive-client.js.map
|