@the-situation/indexer 0.17.0 → 0.17.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -27,15 +27,23 @@ Events will begin appearing within ~15 seconds.
27
27
 
28
28
  | Variable | Required | Default | Description |
29
29
  |----------|----------|---------|-------------|
30
- | `VOYAGER_API_KEY` | Yes | — | Voyager explorer API key |
30
+ | `VOYAGER_API_KEY` | Yes* | — | Single Voyager explorer API key |
31
+ | `VOYAGER_API_KEYS` | Yes* | — | Comma/whitespace-separated Voyager API key pool for redundancy |
31
32
  | `ADMIN_API_KEY` | Yes | — | Bearer token for `/admin/*` endpoints |
32
33
  | `DB_PATH` | No | `./data/indexer.db` | SQLite database file path |
33
34
  | `PORT` | No | `3000` | HTTP server port |
34
- | `STARKNET_RPC_URL` | No | `https://api.cartridge.gg/x/starknet/sepolia` | Starknet RPC endpoint |
35
+ | `STARKNET_NETWORK` | No | `sepolia` | Network default set (`sepolia` or `mainnet`) |
36
+ | `STARKNET_RPC_URL` | No | network default | Starknet RPC endpoint |
37
+ | `VOYAGER_API_BASE_URL` | No | network default | Voyager API base URL |
35
38
  | `EVENT_POLL_INTERVAL_MS` | No | `15000` | Event polling interval (ms) |
36
39
  | `STATE_POLL_INTERVAL_MS` | No | `30000` | Market state refresh interval (ms) |
37
40
  | `POSITION_POLL_INTERVAL_MS` | No | `60000` | Position refresh interval (ms) |
38
41
 
42
+ `VOYAGER_API_KEY` or `VOYAGER_API_KEYS` must be set. When multiple keys are
43
+ configured, the indexer rotates across them. A key that receives a Voyager
44
+ 429/503 response is cooled down independently, and requests continue through
45
+ the remaining keys until every key is cooling down.
46
+
39
47
  ## API Reference
40
48
 
41
49
  ### Public Endpoints
@@ -222,14 +230,14 @@ The indexer is configured for [Fly.io](https://fly.io) with a persistent volume
222
230
  ```bash
223
231
  cd packages/indexer
224
232
 
225
- # Create the app (first time only)
233
+ # Create the Sepolia app (first time only)
226
234
  fly apps create situation-indexer
227
235
 
228
236
  # Create a persistent volume for the database
229
237
  fly volumes create indexer_data --region iad --size 1
230
238
 
231
239
  # Set secrets
232
- fly secrets set VOYAGER_API_KEY=your-key ADMIN_API_KEY=your-key
240
+ fly secrets set VOYAGER_API_KEYS=key-1,key-2,key-3 ADMIN_API_KEY=your-key
233
241
 
234
242
  # Deploy (uses Dockerfile.indexer at repo root)
235
243
  fly deploy
@@ -238,6 +246,37 @@ fly deploy
238
246
  curl https://situation-indexer.fly.dev/health
239
247
  ```
240
248
 
249
+ ### Mainnet Deployment
250
+
251
+ Mainnet uses a separate Fly app and volume so the production database starts
252
+ fresh and cannot mix Sepolia cursor state with mainnet events.
253
+
254
+ ```bash
255
+ cd packages/indexer
256
+
257
+ # Create the mainnet app (first time only)
258
+ fly apps create situation-indexer-mainnet
259
+
260
+ # Create the mainnet database volume
261
+ fly volumes create indexer_mainnet_data --app situation-indexer-mainnet --region iad --size 1
262
+
263
+ # Set secrets on the mainnet app
264
+ fly secrets set --app situation-indexer-mainnet VOYAGER_API_KEYS=key-1,key-2,key-3 ADMIN_API_KEY=your-key
265
+
266
+ # Deploy with mainnet RPC and Voyager API endpoints
267
+ fly deploy --config fly.mainnet.toml
268
+
269
+ # Verify
270
+ curl https://situation-indexer-mainnet.fly.dev/health
271
+ ```
272
+
273
+ `fly.mainnet.toml` is configured with:
274
+
275
+ - `STARKNET_NETWORK=mainnet`
276
+ - `STARKNET_RPC_URL=https://api.cartridge.gg/x/starknet/mainnet`
277
+ - `VOYAGER_API_BASE_URL=https://api.voyager.online/beta`
278
+ - Persistent volume `indexer_mainnet_data` mounted at `/data`
279
+
241
280
  The `fly.toml` is pre-configured with:
242
281
  - `shared-cpu-1x` / 512MB RAM
243
282
  - Persistent volume mounted at `/data`
package/dist/api/app.d.ts CHANGED
@@ -228,8 +228,8 @@ export declare function createApp(config: AppConfig): Elysia<"", {
228
228
  get: {
229
229
  body: unknown;
230
230
  params: {
231
- address: string;
232
231
  provider: string;
232
+ address: string;
233
233
  } & {};
234
234
  query: unknown;
235
235
  headers: unknown;
@@ -608,8 +608,8 @@ export declare function createApp(config: AppConfig): Elysia<"", {
608
608
  put: {
609
609
  body: {
610
610
  name?: string;
611
- secret?: string;
612
611
  webhook_url?: string;
612
+ secret?: string;
613
613
  filters?: {
614
614
  traders?: string[];
615
615
  eventTypes?: ("settlement" | "trade_move" | "market_created")[];
@@ -109,8 +109,8 @@ export declare const adminSubscriptionRoutes: (db: DatabaseService, adminApiKey:
109
109
  put: {
110
110
  body: {
111
111
  name?: string;
112
- secret?: string;
113
112
  webhook_url?: string;
113
+ secret?: string;
114
114
  filters?: {
115
115
  traders?: string[];
116
116
  eventTypes?: ("settlement" | "trade_move" | "market_created")[];
@@ -1 +1 @@
1
- {"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../../src/api/routes/health.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAIlD,eAAO,MAAM,YAAY,GAAI,IAAI,eAAe,EAAE,WAAW,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8B9E,CAAC"}
1
+ {"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../../src/api/routes/health.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAIlD,eAAO,MAAM,YAAY,GAAI,IAAI,eAAe,EAAE,WAAW,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgC9E,CAAC"}
@@ -25,6 +25,8 @@ export const healthRoutes = (db, rateLimit) => new Elysia().get('/health', () =>
25
25
  lastPollAt: null,
26
26
  voyager: {
27
27
  isLimited: voyagerStatus.isLimited,
28
+ activeKeyCount: voyagerStatus.activeKeyCount,
29
+ limitedKeyCount: voyagerStatus.limitedKeyCount,
28
30
  retryInSeconds: voyagerStatus.retryInSeconds,
29
31
  escalationLevel: voyagerStatus.escalationLevel,
30
32
  message: voyagerStatus.message,
@@ -1 +1 @@
1
- {"version":3,"file":"health.js","sourceRoot":"","sources":["../../../src/api/routes/health.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAKhC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAE7B,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAAmB,EAAE,SAAgC,EAAE,EAAE,CACpF,IAAI,MAAM,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,GAAmB,EAAE;IAC/C,IAAI,QAAQ,GAAiC,cAAc,CAAC;IAC5D,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,IAAI,CAAC;QACH,YAAY,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAClC,WAAW,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACrC,QAAQ,GAAG,WAAW,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,iBAAiB;IACnB,CAAC;IAED,MAAM,aAAa,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC;IAE5C,OAAO;QACL,MAAM,EAAE,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI;QACxF,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC;QACnD,QAAQ;QACR,YAAY;QACZ,WAAW;QACX,UAAU,EAAE,IAAI;QAChB,OAAO,EAAE;YACP,SAAS,EAAE,aAAa,CAAC,SAAS;YAClC,cAAc,EAAE,aAAa,CAAC,cAAc;YAC5C,eAAe,EAAE,aAAa,CAAC,eAAe;YAC9C,OAAO,EAAE,aAAa,CAAC,OAAO;SAC/B;KACF,CAAC;AACJ,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"health.js","sourceRoot":"","sources":["../../../src/api/routes/health.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAKhC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAE7B,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAAmB,EAAE,SAAgC,EAAE,EAAE,CACpF,IAAI,MAAM,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,GAAmB,EAAE;IAC/C,IAAI,QAAQ,GAAiC,cAAc,CAAC;IAC5D,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,IAAI,CAAC;QACH,YAAY,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAClC,WAAW,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACrC,QAAQ,GAAG,WAAW,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,iBAAiB;IACnB,CAAC;IAED,MAAM,aAAa,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC;IAE5C,OAAO;QACL,MAAM,EAAE,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI;QACxF,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC;QACnD,QAAQ;QACR,YAAY;QACZ,WAAW;QACX,UAAU,EAAE,IAAI;QAChB,OAAO,EAAE;YACP,SAAS,EAAE,aAAa,CAAC,SAAS;YAClC,cAAc,EAAE,aAAa,CAAC,cAAc;YAC5C,eAAe,EAAE,aAAa,CAAC,eAAe;YAC9C,cAAc,EAAE,aAAa,CAAC,cAAc;YAC5C,eAAe,EAAE,aAAa,CAAC,eAAe;YAC9C,OAAO,EAAE,aAAa,CAAC,OAAO;SAC/B;KACF,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -29,8 +29,8 @@ export declare const lpHistoryRoutes: (db: DatabaseService) => Elysia<"", {
29
29
  get: {
30
30
  body: unknown;
31
31
  params: {
32
- address: string;
33
32
  provider: string;
33
+ address: string;
34
34
  } & {};
35
35
  query: unknown;
36
36
  headers: unknown;
package/dist/config.d.ts CHANGED
@@ -2,7 +2,9 @@
2
2
  * Typed configuration parsed from environment variables.
3
3
  */
4
4
  export interface IndexerConfig {
5
- readonly voyagerApiKey: string;
5
+ readonly network: StarknetNetwork;
6
+ readonly voyagerApiKeys: readonly string[];
7
+ readonly voyagerApiBaseUrl: string;
6
8
  readonly adminApiKey: string;
7
9
  readonly dbPath: string;
8
10
  readonly port: number;
@@ -14,5 +16,10 @@ export interface IndexerConfig {
14
16
  readonly voyagerBaseDelayMs: number;
15
17
  readonly voyagerMinRequestIntervalMs: number;
16
18
  }
19
+ export type StarknetNetwork = 'mainnet' | 'sepolia';
20
+ export declare const NETWORK_DEFAULTS: Record<StarknetNetwork, {
21
+ readonly starknetRpcUrl: string;
22
+ readonly voyagerApiBaseUrl: string;
23
+ }>;
17
24
  export declare function loadConfig(): IndexerConfig;
18
25
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,2BAA2B,EAAE,MAAM,CAAC;CAC9C;AAED,wBAAgB,UAAU,IAAI,aAAa,CAqB1C"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,2BAA2B,EAAE,MAAM,CAAC;CAC9C;AAED,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,SAAS,CAAC;AAEpD,eAAO,MAAM,gBAAgB,EAAE,MAAM,CACnC,eAAe,EACf;IAAE,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAA;CAAE,CAUxE,CAAC;AAEF,wBAAgB,UAAU,IAAI,aAAa,CA+B1C"}
package/dist/config.js CHANGED
@@ -1,16 +1,29 @@
1
1
  /**
2
2
  * Typed configuration parsed from environment variables.
3
3
  */
4
+ export const NETWORK_DEFAULTS = {
5
+ mainnet: {
6
+ starknetRpcUrl: 'https://api.cartridge.gg/x/starknet/mainnet',
7
+ voyagerApiBaseUrl: 'https://api.voyager.online/beta',
8
+ },
9
+ sepolia: {
10
+ starknetRpcUrl: 'https://api.cartridge.gg/x/starknet/sepolia',
11
+ voyagerApiBaseUrl: 'https://sepolia-api.voyager.online/beta',
12
+ },
13
+ };
4
14
  export function loadConfig() {
5
- const voyagerApiKey = requireEnv('VOYAGER_API_KEY');
6
15
  const adminApiKey = requireEnv('ADMIN_API_KEY');
7
16
  const env = process.env;
17
+ const network = parseNetwork(env.STARKNET_NETWORK);
18
+ const networkDefaults = NETWORK_DEFAULTS[network];
8
19
  return {
9
- voyagerApiKey,
20
+ network,
21
+ voyagerApiKeys: parseVoyagerApiKeys(env),
22
+ voyagerApiBaseUrl: env.VOYAGER_API_BASE_URL ?? networkDefaults.voyagerApiBaseUrl,
10
23
  adminApiKey,
11
24
  dbPath: env.DB_PATH ?? './data/indexer.db',
12
25
  port: envInt('PORT', 3000),
13
- starknetRpcUrl: env.STARKNET_RPC_URL ?? 'https://api.cartridge.gg/x/starknet/sepolia',
26
+ starknetRpcUrl: env.STARKNET_RPC_URL ?? networkDefaults.starknetRpcUrl,
14
27
  eventPollIntervalMs: envInt('EVENT_POLL_INTERVAL_MS', 15000),
15
28
  statePollIntervalMs: envInt('STATE_POLL_INTERVAL_MS', 30000),
16
29
  positionPollIntervalMs: envInt('POSITION_POLL_INTERVAL_MS', 60000),
@@ -19,6 +32,27 @@ export function loadConfig() {
19
32
  voyagerMinRequestIntervalMs: envInt('VOYAGER_MIN_REQUEST_INTERVAL_MS', 250),
20
33
  };
21
34
  }
35
+ function parseVoyagerApiKeys(env) {
36
+ const rawKeys = [
37
+ ...(env.VOYAGER_API_KEYS?.split(/[,\s]+/) ?? []),
38
+ env.VOYAGER_API_KEY,
39
+ env.VOYAGER_API_KEY_1,
40
+ env.VOYAGER_API_KEY_2,
41
+ env.VOYAGER_API_KEY_3,
42
+ ];
43
+ const keys = Array.from(new Set(rawKeys.map((key) => key?.trim()).filter(Boolean)));
44
+ if (keys.length === 0) {
45
+ throw new Error('Missing required environment variable: VOYAGER_API_KEY or VOYAGER_API_KEYS');
46
+ }
47
+ return keys;
48
+ }
49
+ function parseNetwork(raw) {
50
+ const value = raw ?? 'sepolia';
51
+ if (value === 'mainnet' || value === 'sepolia') {
52
+ return value;
53
+ }
54
+ throw new Error(`Invalid STARKNET_NETWORK: "${value}"`);
55
+ }
22
56
  function requireEnv(name) {
23
57
  const value = process.env[name];
24
58
  if (!value) {
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAgBH,MAAM,UAAU,UAAU;IACxB,MAAM,aAAa,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAC;IACpD,MAAM,WAAW,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC;IAChD,MAAM,GAAG,GAAG,OAAO,CAAC,GAGnB,CAAC;IAEF,OAAO;QACL,aAAa;QACb,WAAW;QACX,MAAM,EAAE,GAAG,CAAC,OAAO,IAAI,mBAAmB;QAC1C,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC;QAC1B,cAAc,EAAE,GAAG,CAAC,gBAAgB,IAAI,6CAA6C;QACrF,mBAAmB,EAAE,MAAM,CAAC,wBAAwB,EAAE,KAAK,CAAC;QAC5D,mBAAmB,EAAE,MAAM,CAAC,wBAAwB,EAAE,KAAK,CAAC;QAC5D,sBAAsB,EAAE,MAAM,CAAC,2BAA2B,EAAE,KAAK,CAAC;QAClE,iBAAiB,EAAE,MAAM,CAAC,qBAAqB,EAAE,CAAC,CAAC;QACnD,kBAAkB,EAAE,MAAM,CAAC,uBAAuB,EAAE,IAAI,CAAC;QACzD,2BAA2B,EAAE,MAAM,CAAC,iCAAiC,EAAE,GAAG,CAAC;KAC5E,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,0CAA0C,IAAI,EAAE,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,MAAM,CAAC,IAAY,EAAE,QAAgB;IAC5C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACjC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,MAAM,GAAG,GAAG,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -12,5 +12,5 @@ import { VoyagerClientTag } from '../services/VoyagerClient';
12
12
  import type { MarketType } from '../types';
13
13
  import type { IndexerCycleResult } from './types';
14
14
  export declare const indexMarketEvents: (marketAddress: string, marketType?: MarketType) => Effect.Effect<IndexerCycleResult, never, DatabaseTag | VoyagerClientTag | ChainReaderTag | EventBusTag>;
15
- export declare const indexAllMarkets: Effect.Effect<IndexerCycleResult[], never, VoyagerClientTag | DatabaseTag | EventBusTag | ChainReaderTag>;
15
+ export declare const indexAllMarkets: Effect.Effect<IndexerCycleResult[], never, DatabaseTag | ChainReaderTag | VoyagerClientTag | EventBusTag>;
16
16
  //# sourceMappingURL=event-indexer.d.ts.map
@@ -13,6 +13,6 @@ interface PositionRefreshContext {
13
13
  readonly existingPositionsByKey?: ReadonlyMap<string, UserPositionRow>;
14
14
  }
15
15
  export declare const refreshPosition: (marketAddress: string, trader: string, marketType?: MarketType, context?: PositionRefreshContext) => Effect.Effect<PositionRefreshResult, never, DatabaseTag | ChainReaderTag | EventBusTag>;
16
- export declare const refreshAllPositions: Effect.Effect<PositionRefreshResult[], never, DatabaseTag | EventBusTag | ChainReaderTag>;
16
+ export declare const refreshAllPositions: Effect.Effect<PositionRefreshResult[], never, DatabaseTag | ChainReaderTag | EventBusTag>;
17
17
  export {};
18
18
  //# sourceMappingURL=position-refresher.d.ts.map
@@ -9,6 +9,6 @@ interface StateRefreshContext {
9
9
  readonly multinoulliSnapshotCountByMarket?: ReadonlyMap<string, number>;
10
10
  }
11
11
  export declare const refreshMarketState: (marketAddress: string, marketType?: MarketType, context?: StateRefreshContext) => Effect.Effect<StateRefreshResult, never, DatabaseTag | ChainReaderTag | EventBusTag>;
12
- export declare const refreshAllMarketStates: Effect.Effect<StateRefreshResult[], never, DatabaseTag | EventBusTag | ChainReaderTag>;
12
+ export declare const refreshAllMarketStates: Effect.Effect<StateRefreshResult[], never, DatabaseTag | ChainReaderTag | EventBusTag>;
13
13
  export {};
14
14
  //# sourceMappingURL=state-refresher.d.ts.map
package/dist/index.js CHANGED
@@ -24,16 +24,23 @@ import { createWebhookDispatcher } from './services/WebhookDispatcher';
24
24
  import { VoyagerRateLimitState } from './services/VoyagerRateLimit';
25
25
  import { log } from './logger';
26
26
  const config = loadConfig();
27
- log.info('indexer starting', { dbPath: config.dbPath, rpcUrl: config.starknetRpcUrl });
27
+ log.info('indexer starting', {
28
+ dbPath: config.dbPath,
29
+ network: config.network,
30
+ rpcUrl: config.starknetRpcUrl,
31
+ voyagerApiBaseUrl: config.voyagerApiBaseUrl,
32
+ voyagerApiKeyCount: config.voyagerApiKeys.length,
33
+ });
28
34
  // ── Database setup (open + migrate) ────────────────────────────────────────
29
35
  const db = createDatabase(config.dbPath);
30
36
  initializeSchema(db);
31
37
  log.info('database initialized');
32
38
  // ── Build service layers ──────────────────────────────────────────────────
33
- const voyagerRateLimit = new VoyagerRateLimitState(config.voyagerMinRequestIntervalMs);
34
- const appLayer = Layer.mergeAll(DatabaseLive(db), EventBusLive(), VoyagerClientLive(config.voyagerApiKey, voyagerRateLimit, {
39
+ const voyagerRateLimit = new VoyagerRateLimitState(config.voyagerMinRequestIntervalMs, config.voyagerApiKeys.length);
40
+ const appLayer = Layer.mergeAll(DatabaseLive(db), EventBusLive(), VoyagerClientLive(config.voyagerApiKeys, voyagerRateLimit, {
35
41
  maxRetries: config.voyagerMaxRetries,
36
42
  baseDelayMs: config.voyagerBaseDelayMs,
43
+ baseUrl: config.voyagerApiBaseUrl,
37
44
  }), ChainReaderLive(config.starknetRpcUrl));
38
45
  // ── Extract plain service instances for imperative consumers ──────────────
39
46
  const databaseService = Effect.runSync(Effect.provide(DatabaseTag, appLayer));
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import type { VoyagerRateLimitState } from '../services/VoyagerRateLimit';
4
4
  export interface VoyagerClientConfig {
5
5
  readonly maxRetries: number;
6
6
  readonly baseDelayMs: number;
7
+ readonly baseUrl?: string;
7
8
  }
8
- export declare const VoyagerClientLive: (apiKey: string, rateLimit: VoyagerRateLimitState, clientConfig?: VoyagerClientConfig) => Layer.Layer<VoyagerClientTag>;
9
+ export declare const VoyagerClientLive: (apiKeys: string | readonly string[], rateLimit: VoyagerRateLimitState, clientConfig?: VoyagerClientConfig) => Layer.Layer<VoyagerClientTag>;
9
10
  //# sourceMappingURL=VoyagerClientLive.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"VoyagerClientLive.d.ts","sourceRoot":"","sources":["../../src/layers/VoyagerClientLive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,EAAY,MAAM,QAAQ,CAAC;AAC3D,OAAO,EAGL,gBAAgB,EACjB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAK1E,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAmBD,eAAO,MAAM,iBAAiB,GAC5B,QAAQ,MAAM,EACd,WAAW,qBAAqB,EAChC,eAAc,mBAAoC,KACjD,KAAK,CAAC,KAAK,CAAC,gBAAgB,CA+E5B,CAAC"}
1
+ {"version":3,"file":"VoyagerClientLive.d.ts","sourceRoot":"","sources":["../../src/layers/VoyagerClientLive.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,EAAY,MAAM,QAAQ,CAAC;AAC3D,OAAO,EAGL,gBAAgB,EACjB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAG1E,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AA6BD,eAAO,MAAM,iBAAiB,GAC5B,SAAS,MAAM,GAAG,SAAS,MAAM,EAAE,EACnC,WAAW,qBAAqB,EAChC,eAAc,mBAAoC,KACjD,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAiH9B,CAAC"}
@@ -1,10 +1,18 @@
1
1
  import { Duration, Effect, Layer, Schedule } from 'effect';
2
2
  import { isRetryableVoyagerError, VoyagerApiError, VoyagerClientTag, } from '../services/VoyagerClient';
3
- const BASE_URL = 'https://sepolia-api.voyager.online/beta';
4
3
  const DEFAULT_CONFIG = {
5
4
  maxRetries: 3,
6
5
  baseDelayMs: 3000,
7
6
  };
7
+ function normalizeApiKeys(apiKeys) {
8
+ const keys = (Array.isArray(apiKeys) ? apiKeys : [apiKeys])
9
+ .map((key) => key.trim())
10
+ .filter(Boolean);
11
+ if (keys.length === 0) {
12
+ throw new Error('VoyagerClientLive requires at least one API key');
13
+ }
14
+ return keys;
15
+ }
8
16
  function parseRetryAfterMs(response) {
9
17
  const header = response.headers.get('Retry-After');
10
18
  if (!header) {
@@ -16,60 +24,86 @@ function parseRetryAfterMs(response) {
16
24
  }
17
25
  return undefined;
18
26
  }
19
- export const VoyagerClientLive = (apiKey, rateLimit, clientConfig = DEFAULT_CONFIG) => Layer.succeed(VoyagerClientTag, VoyagerClientTag.of({
20
- fetchEvents: (contractAddress, page, pageSize) => {
21
- const fetchOnce = Effect.tryPromise({
22
- try: async () => {
23
- // Check rate limit
24
- if (rateLimit.isLimited()) {
27
+ export const VoyagerClientLive = (apiKeys, rateLimit, clientConfig = DEFAULT_CONFIG) => {
28
+ const keys = normalizeApiKeys(apiKeys);
29
+ let nextKeyIndex = 0;
30
+ function nextAvailableKey(attempted) {
31
+ for (let offset = 0; offset < keys.length; offset++) {
32
+ const index = (nextKeyIndex + offset) % keys.length;
33
+ if (!attempted.has(index) && !rateLimit.isLimited(index)) {
34
+ nextKeyIndex = (index + 1) % keys.length;
35
+ return index;
36
+ }
37
+ }
38
+ return null;
39
+ }
40
+ return Layer.succeed(VoyagerClientTag, VoyagerClientTag.of({
41
+ fetchEvents: (contractAddress, page, pageSize) => {
42
+ const fetchOnce = Effect.tryPromise({
43
+ try: async () => {
44
+ const attempted = new Set();
45
+ let lastRetryableError;
46
+ while (attempted.size < keys.length) {
47
+ const keyIndex = nextAvailableKey(attempted);
48
+ if (keyIndex == null) {
49
+ break;
50
+ }
51
+ attempted.add(keyIndex);
52
+ // Inter-request throttle is tracked per key, so one cooling key
53
+ // does not slow down the healthy keys in the pool.
54
+ await rateLimit.throttle(keyIndex);
55
+ const baseUrl = (clientConfig.baseUrl ?? 'https://sepolia-api.voyager.online/beta').replace(/\/+$/, '');
56
+ const url = new URL(`${baseUrl}/events`);
57
+ url.searchParams.set('contract', contractAddress);
58
+ url.searchParams.set('p', page.toString());
59
+ url.searchParams.set('ps', pageSize.toString());
60
+ const response = await fetch(url.toString(), {
61
+ headers: {
62
+ 'Content-Type': 'application/json',
63
+ 'x-api-key': keys[keyIndex],
64
+ },
65
+ });
66
+ if (!response.ok) {
67
+ const retryAfterMs = parseRetryAfterMs(response);
68
+ const error = new VoyagerApiError(`Voyager API ${response.status}: ${response.statusText}`, response.status, retryAfterMs);
69
+ if (response.status === 429 || response.status === 503) {
70
+ rateLimit.recordRateLimit(keyIndex);
71
+ lastRetryableError = error;
72
+ continue;
73
+ }
74
+ throw error;
75
+ }
76
+ rateLimit.recordSuccess(keyIndex);
77
+ const data = (await response.json());
78
+ return { events: data.items, lastPage: data.lastPage };
79
+ }
25
80
  const status = rateLimit.getStatus();
26
- throw new VoyagerApiError(`Rate limited — ${status.message}`, 429);
27
- }
28
- // Inter-request throttle
29
- await rateLimit.throttle();
30
- const url = new URL(`${BASE_URL}/events`);
31
- url.searchParams.set('contract', contractAddress);
32
- url.searchParams.set('p', page.toString());
33
- url.searchParams.set('ps', pageSize.toString());
34
- const response = await fetch(url.toString(), {
35
- headers: {
36
- 'Content-Type': 'application/json',
37
- 'x-api-key': apiKey,
38
- },
39
- });
40
- if (!response.ok) {
41
- const retryAfterMs = parseRetryAfterMs(response);
42
- if (response.status === 429 || response.status === 503) {
43
- rateLimit.recordRateLimit();
81
+ throw (lastRetryableError ??
82
+ new VoyagerApiError(`Rate limited — ${status.message}`, 429));
83
+ },
84
+ catch: (e) => {
85
+ if (e instanceof VoyagerApiError) {
86
+ return e;
44
87
  }
45
- throw new VoyagerApiError(`Voyager API ${response.status}: ${response.statusText}`, response.status, retryAfterMs);
46
- }
47
- rateLimit.recordSuccess();
48
- const data = (await response.json());
49
- return { events: data.items, lastPage: data.lastPage };
50
- },
51
- catch: (e) => {
52
- if (e instanceof VoyagerApiError) {
53
- return e;
54
- }
55
- return new VoyagerApiError(e instanceof Error ? e.message : 'Unknown Voyager API error');
56
- },
57
- });
58
- const retrySchedule = Schedule.compose(Schedule.jittered(Schedule.exponential(Duration.millis(clientConfig.baseDelayMs))), Schedule.recurs(clientConfig.maxRetries));
59
- return fetchOnce.pipe(Effect.retry({
60
- schedule: retrySchedule,
61
- while: (error) => {
62
- // Don't retry if we've just opened the rate-limit cooldown
63
- if (rateLimit.isLimited()) {
64
- return false;
65
- }
66
- const shouldRetry = isRetryableVoyagerError(error);
67
- if (shouldRetry) {
68
- // Retry continues according to configured schedule.
69
- }
70
- return shouldRetry;
71
- },
72
- }));
73
- },
74
- }));
88
+ return new VoyagerApiError(e instanceof Error ? e.message : 'Unknown Voyager API error');
89
+ },
90
+ });
91
+ const retrySchedule = Schedule.compose(Schedule.jittered(Schedule.exponential(Duration.millis(clientConfig.baseDelayMs))), Schedule.recurs(clientConfig.maxRetries));
92
+ return fetchOnce.pipe(Effect.retry({
93
+ schedule: retrySchedule,
94
+ while: (error) => {
95
+ // Don't retry if we've just opened the rate-limit cooldown
96
+ if (rateLimit.isLimited()) {
97
+ return false;
98
+ }
99
+ const shouldRetry = isRetryableVoyagerError(error);
100
+ if (shouldRetry) {
101
+ // Retry continues according to configured schedule.
102
+ }
103
+ return shouldRetry;
104
+ },
105
+ }));
106
+ },
107
+ }));
108
+ };
75
109
  //# sourceMappingURL=VoyagerClientLive.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"VoyagerClientLive.js","sourceRoot":"","sources":["../../src/layers/VoyagerClientLive.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"VoyagerClientLive.js","sourceRoot":"","sources":["../../src/layers/VoyagerClientLive.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,10 @@
11
11
  export interface RateLimitStatus {
12
12
  /** Whether Voyager requests are currently paused. */
13
13
  readonly isLimited: boolean;
14
+ /** Number of configured Voyager API keys. */
15
+ readonly activeKeyCount: number;
16
+ /** Number of Voyager API keys currently cooling down. */
17
+ readonly limitedKeyCount: number;
14
18
  /** Unix ms when the current cooldown expires (0 = not limited). */
15
19
  readonly resumesAt: number;
16
20
  /** Seconds remaining until resume (0 = not limited). */
@@ -21,15 +25,13 @@ export interface RateLimitStatus {
21
25
  readonly message: string | null;
22
26
  }
23
27
  export declare class VoyagerRateLimitState {
24
- private escalationLevel;
25
- private cooldownUntil;
28
+ private slots;
26
29
  private minRequestIntervalMs;
27
- private lastRequestTime;
28
- constructor(minRequestIntervalMs?: number);
30
+ constructor(minRequestIntervalMs?: number, slotCount?: number);
29
31
  /** Check if requests are currently paused. If cooldown has expired, auto-close. */
30
- isLimited(): boolean;
32
+ isLimited(slotIndex?: number): boolean;
31
33
  /** Record a successful Voyager response — resets escalation. */
32
- recordSuccess(): void;
34
+ recordSuccess(slotIndex?: number): void;
33
35
  /** Record a 429/503 — immediately opens the circuit with escalating cooldown.
34
36
  *
35
37
  * Two guards:
@@ -43,10 +45,11 @@ export declare class VoyagerRateLimitState {
43
45
  * so further increments only make `/health` lie about how bad things are.
44
46
  * Cap observed in prod at 76 with no diagnostic value.
45
47
  */
46
- recordRateLimit(): void;
48
+ recordRateLimit(slotIndex?: number): void;
47
49
  /** Inter-request throttle: sleep if needed to respect min interval. */
48
- throttle(): Promise<void>;
50
+ throttle(slotIndex?: number): Promise<void>;
49
51
  /** Observable status snapshot for the health API. */
50
52
  getStatus(): RateLimitStatus;
53
+ private getSlot;
51
54
  }
52
55
  //# sourceMappingURL=VoyagerRateLimit.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"VoyagerRateLimit.d.ts","sourceRoot":"","sources":["../../src/services/VoyagerRateLimit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAYH,MAAM,WAAW,eAAe;IAC9B,qDAAqD;IACrD,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,mEAAmE;IACnE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,wDAAwD;IACxD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,8DAA8D;IAC9D,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,sDAAsD;IACtD,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED,qBAAa,qBAAqB;IAChC,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,oBAAoB,CAAS;IACrC,OAAO,CAAC,eAAe,CAAK;gBAEhB,oBAAoB,SAAM;IAItC,mFAAmF;IACnF,SAAS,IAAI,OAAO;IAWpB,gEAAgE;IAChE,aAAa,IAAI,IAAI;IAKrB;;;;;;;;;;;;OAYG;IACH,eAAe,IAAI,IAAI;IAavB,uEAAuE;IACjE,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAS/B,qDAAqD;IACrD,SAAS,IAAI,eAAe;CAqB7B"}
1
+ {"version":3,"file":"VoyagerRateLimit.d.ts","sourceRoot":"","sources":["../../src/services/VoyagerRateLimit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAYH,MAAM,WAAW,eAAe;IAC9B,qDAAqD;IACrD,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,6CAA6C;IAC7C,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,yDAAyD;IACzD,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,mEAAmE;IACnE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,wDAAwD;IACxD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,8DAA8D;IAC9D,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,sDAAsD;IACtD,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAQD,qBAAa,qBAAqB;IAChC,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,oBAAoB,CAAS;gBAEzB,oBAAoB,SAAM,EAAE,SAAS,SAAI;IASrD,mFAAmF;IACnF,SAAS,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO;IAgBtC,gEAAgE;IAChE,aAAa,CAAC,SAAS,SAAI,GAAG,IAAI;IAMlC;;;;;;;;;;;;OAYG;IACH,eAAe,CAAC,SAAS,SAAI,GAAG,IAAI;IAcpC,uEAAuE;IACjE,QAAQ,CAAC,SAAS,SAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAU5C,qDAAqD;IACrD,SAAS,IAAI,eAAe;IA8B5B,OAAO,CAAC,OAAO;CAOhB"}
@@ -18,28 +18,36 @@ const COOLDOWN_STEPS_MS = [
18
18
  1_800_000, // 30m
19
19
  ];
20
20
  export class VoyagerRateLimitState {
21
- escalationLevel = 0;
22
- cooldownUntil = 0;
21
+ slots;
23
22
  minRequestIntervalMs;
24
- lastRequestTime = 0;
25
- constructor(minRequestIntervalMs = 250) {
23
+ constructor(minRequestIntervalMs = 250, slotCount = 1) {
26
24
  this.minRequestIntervalMs = minRequestIntervalMs;
25
+ this.slots = Array.from({ length: Math.max(1, slotCount) }, () => ({
26
+ escalationLevel: 0,
27
+ cooldownUntil: 0,
28
+ lastRequestTime: 0,
29
+ }));
27
30
  }
28
31
  /** Check if requests are currently paused. If cooldown has expired, auto-close. */
29
- isLimited() {
30
- if (this.cooldownUntil === 0) {
32
+ isLimited(slotIndex) {
33
+ if (slotIndex == null) {
34
+ return this.slots.every((_slot, index) => this.isLimited(index));
35
+ }
36
+ const slot = this.getSlot(slotIndex);
37
+ if (slot.cooldownUntil === 0) {
31
38
  return false;
32
39
  }
33
- if (Date.now() >= this.cooldownUntil) {
34
- this.cooldownUntil = 0;
40
+ if (Date.now() >= slot.cooldownUntil) {
41
+ slot.cooldownUntil = 0;
35
42
  return false;
36
43
  }
37
44
  return true;
38
45
  }
39
46
  /** Record a successful Voyager response — resets escalation. */
40
- recordSuccess() {
41
- this.escalationLevel = 0;
42
- this.cooldownUntil = 0;
47
+ recordSuccess(slotIndex = 0) {
48
+ const slot = this.getSlot(slotIndex);
49
+ slot.escalationLevel = 0;
50
+ slot.cooldownUntil = 0;
43
51
  }
44
52
  /** Record a 429/503 — immediately opens the circuit with escalating cooldown.
45
53
  *
@@ -54,47 +62,64 @@ export class VoyagerRateLimitState {
54
62
  * so further increments only make `/health` lie about how bad things are.
55
63
  * Cap observed in prod at 76 with no diagnostic value.
56
64
  */
57
- recordRateLimit() {
58
- if (this.isLimited()) {
65
+ recordRateLimit(slotIndex = 0) {
66
+ if (this.isLimited(slotIndex)) {
59
67
  // Already in a cooldown window — don't double-count concurrent failures.
60
68
  return;
61
69
  }
62
- const step = Math.min(this.escalationLevel, COOLDOWN_STEPS_MS.length - 1);
70
+ const slot = this.getSlot(slotIndex);
71
+ const step = Math.min(slot.escalationLevel, COOLDOWN_STEPS_MS.length - 1);
63
72
  const cooldownMs = COOLDOWN_STEPS_MS[step];
64
- this.cooldownUntil = Date.now() + cooldownMs;
65
- if (this.escalationLevel < COOLDOWN_STEPS_MS.length) {
66
- this.escalationLevel++;
73
+ slot.cooldownUntil = Date.now() + cooldownMs;
74
+ if (slot.escalationLevel < COOLDOWN_STEPS_MS.length) {
75
+ slot.escalationLevel++;
67
76
  }
68
77
  }
69
78
  /** Inter-request throttle: sleep if needed to respect min interval. */
70
- async throttle() {
79
+ async throttle(slotIndex = 0) {
80
+ const slot = this.getSlot(slotIndex);
71
81
  const now = Date.now();
72
- const elapsed = now - this.lastRequestTime;
82
+ const elapsed = now - slot.lastRequestTime;
73
83
  if (elapsed < this.minRequestIntervalMs) {
74
84
  await new Promise((resolve) => setTimeout(resolve, this.minRequestIntervalMs - elapsed));
75
85
  }
76
- this.lastRequestTime = Date.now();
86
+ slot.lastRequestTime = Date.now();
77
87
  }
78
88
  /** Observable status snapshot for the health API. */
79
89
  getStatus() {
80
90
  const now = Date.now();
91
+ const limitedSlots = this.slots.filter((_slot, index) => this.isLimited(index));
81
92
  const isLimited = this.isLimited();
82
- const retryInSeconds = isLimited
83
- ? Math.max(0, Math.ceil((this.cooldownUntil - now) / 1000))
84
- : 0;
93
+ const resumesAt = limitedSlots.length === 0
94
+ ? 0
95
+ : Math.min(...limitedSlots.map((slot) => slot.cooldownUntil).filter((value) => value > now));
96
+ const retryInSeconds = isLimited && resumesAt > 0 ? Math.ceil((resumesAt - now) / 1000) : 0;
97
+ const escalationLevel = Math.max(0, ...this.slots.map((slot) => slot.escalationLevel));
85
98
  let message = null;
86
99
  if (isLimited) {
87
100
  const label = formatDuration(retryInSeconds * 1000);
88
- message = `Chain metrics delayed, rate limit reached, retrying in ${label}`;
101
+ message = `Chain metrics delayed, all Voyager API keys rate limited, retrying in ${label}`;
102
+ }
103
+ else if (limitedSlots.length > 0) {
104
+ message = `Voyager API key redundancy active, ${limitedSlots.length}/${this.slots.length} keys cooling down`;
89
105
  }
90
106
  return {
91
107
  isLimited,
92
- resumesAt: isLimited ? this.cooldownUntil : 0,
108
+ activeKeyCount: this.slots.length,
109
+ limitedKeyCount: limitedSlots.length,
110
+ resumesAt: isLimited ? resumesAt : 0,
93
111
  retryInSeconds,
94
- escalationLevel: this.escalationLevel,
112
+ escalationLevel,
95
113
  message,
96
114
  };
97
115
  }
116
+ getSlot(slotIndex) {
117
+ const slot = this.slots[slotIndex];
118
+ if (!slot) {
119
+ throw new Error(`Invalid Voyager rate-limit slot: ${slotIndex}`);
120
+ }
121
+ return slot;
122
+ }
98
123
  }
99
124
  function formatDuration(ms) {
100
125
  const totalSeconds = Math.ceil(ms / 1000);
@@ -1 +1 @@
1
- {"version":3,"file":"VoyagerRateLimit.js","sourceRoot":"","sources":["../../src/services/VoyagerRateLimit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"VoyagerRateLimit.js","sourceRoot":"","sources":["../../src/services/VoyagerRateLimit.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,8 @@ import type { MultinoulliMatrixConstraintMode } from '@the-situation/abi';
5
5
  import type { MarketType } from './market';
6
6
  export interface VoyagerRateLimitInfo {
7
7
  readonly isLimited: boolean;
8
+ readonly activeKeyCount: number;
9
+ readonly limitedKeyCount: number;
8
10
  readonly retryInSeconds: number;
9
11
  readonly escalationLevel: number;
10
12
  readonly message: string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/types/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/types/api.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@the-situation/indexer",
3
- "version": "0.17.0",
3
+ "version": "0.17.1",
4
4
  "description": "ETL indexer and REST/WS API for The Situation prediction markets",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",