@hugomrdias/foxer 0.1.9 → 0.1.11

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.
Files changed (55) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +71 -1
  3. package/dist/config/env.d.ts +1 -1
  4. package/dist/config/env.d.ts.map +1 -1
  5. package/dist/config/env.js +2 -2
  6. package/dist/config/env.js.map +1 -1
  7. package/dist/db/actions/blocks.d.ts +9 -6
  8. package/dist/db/actions/blocks.d.ts.map +1 -1
  9. package/dist/db/actions/blocks.js +39 -43
  10. package/dist/db/actions/blocks.js.map +1 -1
  11. package/dist/db/client.d.ts +1 -1
  12. package/dist/db/client.d.ts.map +1 -1
  13. package/dist/db/client.js +5 -1
  14. package/dist/db/client.js.map +1 -1
  15. package/dist/db/column-types.d.ts +2 -2
  16. package/dist/db/column-types.d.ts.map +1 -1
  17. package/dist/db/column-types.js +11 -3
  18. package/dist/db/column-types.js.map +1 -1
  19. package/dist/db/schema/blocks.d.ts +16 -16
  20. package/dist/db/schema/index.d.ts +44 -44
  21. package/dist/db/schema/transactions.d.ts +6 -6
  22. package/dist/db/schema/transactions.d.ts.map +1 -1
  23. package/dist/db/schema/transactions.js +3 -1
  24. package/dist/db/schema/transactions.js.map +1 -1
  25. package/dist/hooks/registry.d.ts +3 -3
  26. package/dist/hooks/registry.d.ts.map +1 -1
  27. package/dist/indexer/backfill.d.ts.map +1 -1
  28. package/dist/indexer/backfill.js +19 -12
  29. package/dist/indexer/backfill.js.map +1 -1
  30. package/dist/indexer/process-block.d.ts +4 -4
  31. package/dist/indexer/process-block.d.ts.map +1 -1
  32. package/dist/indexer/process-block.js +4 -29
  33. package/dist/indexer/process-block.js.map +1 -1
  34. package/dist/indexer/queue-block.d.ts.map +1 -1
  35. package/dist/indexer/queue-block.js +19 -1
  36. package/dist/indexer/queue-block.js.map +1 -1
  37. package/dist/indexer/reorg.d.ts +2 -2
  38. package/dist/indexer/reorg.d.ts.map +1 -1
  39. package/dist/rpc/get-logs.js +1 -1
  40. package/dist/rpc/get-logs.js.map +1 -1
  41. package/dist/types.d.ts +2 -0
  42. package/dist/types.d.ts.map +1 -1
  43. package/package.json +11 -9
  44. package/src/config/env.ts +2 -2
  45. package/src/db/actions/blocks.ts +51 -51
  46. package/src/db/client.ts +5 -1
  47. package/src/db/column-types.ts +17 -6
  48. package/src/db/schema/transactions.ts +3 -1
  49. package/src/hooks/registry.ts +3 -3
  50. package/src/indexer/backfill.ts +28 -10
  51. package/src/indexer/process-block.ts +10 -39
  52. package/src/indexer/queue-block.ts +24 -1
  53. package/src/indexer/reorg.ts +2 -2
  54. package/src/rpc/get-logs.ts +1 -1
  55. package/src/types.ts +2 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.1.11](https://github.com/hugomrdias/foxer/compare/foxer-v0.1.10...foxer-v0.1.11) (2026-03-23)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * update foxer configuration and environment handling ([64df052](https://github.com/hugomrdias/foxer/commit/64df052eace280a5074be4763f50871d74456e76))
9
+
10
+ ## [0.1.10](https://github.com/hugomrdias/foxer/compare/foxer-v0.1.9...foxer-v0.1.10) (2026-03-23)
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * update block and transaction handling in the database actions ([8d7df5e](https://github.com/hugomrdias/foxer/commit/8d7df5e7babdb0277d74a19360a16e2158e6469c))
16
+ * update dependencies and configuration ([9335f07](https://github.com/hugomrdias/foxer/commit/9335f07ea4df9f8f378ceac4a2c4f9f4d6c530fe))
17
+ * update dependencies and improve bytea handling in database ([1bff003](https://github.com/hugomrdias/foxer/commit/1bff003c6f21ffc6a22ad79cd32df6113e11bce8))
18
+
3
19
  ## [0.1.9](https://github.com/hugomrdias/foxer/compare/foxer-v0.1.8...foxer-v0.1.9) (2026-03-16)
4
20
 
5
21
 
package/README.md CHANGED
@@ -44,6 +44,7 @@ npx @hugomrdias/foxer create my-foxer-app --template app
44
44
  Create a `foxer.config.ts` file in your project root:
45
45
 
46
46
  ```ts
47
+ import { calibration } from '@filoz/synapse-core/chains'
47
48
  import { createConfig } from '@hugomrdias/foxer'
48
49
  import { http } from 'viem'
49
50
 
@@ -51,7 +52,7 @@ export const config = createConfig({
51
52
  client: {
52
53
  transport: http(process.env.RPC_URL),
53
54
  realtimeTransport: http(process.env.RPC_LIVE_URL),
54
- chain: /* your viem chain */,
55
+ chain: calibration,
55
56
  },
56
57
  contracts: {
57
58
  // contract definitions keyed by name
@@ -92,6 +93,75 @@ foxer dev --config ./foxer.config.ts
92
93
 
93
94
  The dev server also looks for `.env.local` in the project root.
94
95
 
96
+ ## Postgres recommendations
97
+
98
+ Foxer supports both `pglite` and Postgres, but production deployments should use Postgres when you need higher write throughput, concurrent reads, or live SQL subscriptions.
99
+
100
+ Live SQL requires logical replication to be enabled because Foxer creates a publication and subscribes to table changes at runtime.
101
+
102
+ Recommended Postgres settings for a dedicated Foxer instance:
103
+
104
+ ```conf
105
+ wal_level = logical
106
+ max_wal_senders = 8
107
+ max_replication_slots = 8
108
+ wal_compression = on
109
+ checkpoint_timeout = 15min
110
+ checkpoint_completion_target = 0.9
111
+ max_wal_size = 8GB
112
+ min_wal_size = 1GB
113
+ random_page_cost = 1.1
114
+ effective_io_concurrency = 200
115
+ default_statistics_target = 200
116
+ ```
117
+
118
+ If you treat the chain as the source of truth and can tolerate replaying the most recent blocks after a crash, `synchronous_commit = off` is a valid ingest-speed optimization.
119
+
120
+ Memory settings depend on the machine. A good starting point is:
121
+
122
+ - `shared_buffers`: about 25% of RAM
123
+ - `effective_cache_size`: about 60-75% of RAM
124
+ - `work_mem`: `16MB`
125
+ - `maintenance_work_mem`: `512MB`
126
+
127
+ Foxer now defaults the Node Postgres pool to:
128
+
129
+ - `application_name: 'foxer'`
130
+ - `max: 10`
131
+ - `connectionTimeoutMillis: 5000`
132
+ - `idleTimeoutMillis: 30000`
133
+
134
+ You can still override those defaults with `database.options` in `foxer.config.ts`:
135
+
136
+ ```ts
137
+ import { createConfig } from '@hugomrdias/foxer'
138
+ import { http } from 'viem'
139
+
140
+ export const config = createConfig({
141
+ client: {
142
+ transport: http(process.env.RPC_URL),
143
+ realtimeTransport: http(process.env.RPC_LIVE_URL),
144
+ chain: /* your viem chain */,
145
+ },
146
+ database: {
147
+ driver: 'postgres',
148
+ url: process.env.DATABASE_URL,
149
+ options: {
150
+ max: 20,
151
+ idleTimeoutMillis: 60_000,
152
+ },
153
+ },
154
+ contracts: {},
155
+ hooks: ({ registry }) => {
156
+ // register event handlers
157
+ },
158
+ hono: ({ db, logger }) => {
159
+ // return your Hono app
160
+ },
161
+ schema: {},
162
+ })
163
+ ```
164
+
95
165
  ## Example
96
166
 
97
167
  ```ts
@@ -16,7 +16,7 @@ declare const envSchema: z.ZodObject<{
16
16
  json: "json";
17
17
  }>>;
18
18
  }, z.core.$strip>;
19
- export declare function createEnv(logger: Logger): {
19
+ export declare function createEnv(_logger: Logger): {
20
20
  LOG_LEVEL: "fatal" | "error" | "warn" | "info" | "debug" | "trace";
21
21
  LOG_MODE: "pretty" | "json";
22
22
  DATABASE_URL?: string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/config/env.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAO7C,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAA;AAC3C,QAAA,MAAM,SAAS;;;;;;;;;;;;;;iBAMb,CAAA;AAEF,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM;;;;EAUvC"}
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/config/env.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAO7C,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAA;AAC3C,QAAA,MAAM,SAAS;;;;;;;;;;;;;;iBAMb,CAAA;AAEF,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM;;;;EAUxC"}
@@ -11,12 +11,12 @@ const envSchema = z.object({
11
11
  .default('info'),
12
12
  LOG_MODE: z.enum(['pretty', 'json']).default('pretty'),
13
13
  });
14
- export function createEnv(logger) {
14
+ export function createEnv(_logger) {
15
15
  const parsed = envSchema.safeParse(process.env);
16
16
  if (!parsed.success) {
17
17
  throw new Error(`Failed to parse environment variables: \n ${z.prettifyError(parsed.error)}`);
18
18
  }
19
- logger.debug({ env: parsed.data }, 'env parsed');
19
+ // logger.debug({ env: parsed.data }, 'env parsed')
20
20
  return parsed.data;
21
21
  }
22
22
  //# sourceMappingURL=env.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/config/env.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAA;AAC3B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,MAAM,CAAC,MAAM,CAAC;IACZ,IAAI,EAAE,YAAY;IAClB,KAAK,EAAE,IAAI;CACZ,CAAC,CAAA;AAGF,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC;IACzB,YAAY,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAChC,SAAS,EAAE,CAAC;SACT,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;SAC1D,OAAO,CAAC,MAAM,CAAC;IAClB,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;CACvD,CAAC,CAAA;AAEF,MAAM,UAAU,SAAS,CAAC,MAAc;IACtC,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IAE/C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CACb,6CAA6C,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC7E,CAAA;IACH,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,YAAY,CAAC,CAAA;IAChD,OAAO,MAAM,CAAC,IAAI,CAAA;AACpB,CAAC"}
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/config/env.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAA;AAC3B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,MAAM,CAAC,MAAM,CAAC;IACZ,IAAI,EAAE,YAAY;IAClB,KAAK,EAAE,IAAI;CACZ,CAAC,CAAA;AAGF,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC;IACzB,YAAY,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAChC,SAAS,EAAE,CAAC;SACT,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;SAC1D,OAAO,CAAC,MAAM,CAAC;IAClB,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;CACvD,CAAC,CAAA;AAEF,MAAM,UAAU,SAAS,CAAC,OAAe;IACvC,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IAE/C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CACb,6CAA6C,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC7E,CAAA;IACH,CAAC;IACD,mDAAmD;IACnD,OAAO,MAAM,CAAC,IAAI,CAAA;AACpB,CAAC"}
@@ -1,8 +1,7 @@
1
1
  /** biome-ignore-all lint/style/noNonNullAssertion: its ok */
2
2
  import { type PgAsyncTransaction, type PgQueryResultHKT } from 'drizzle-orm/pg-core';
3
- import type { PublicClient } from 'viem';
4
- import type { FilteredContracts } from '../../config/config.ts';
5
- import type { EncodedBlockWithTransactions } from '../../types.ts';
3
+ import type { Hash, PublicClient } from 'viem';
4
+ import type { BlocksMap, EncodedBlock, EncodedTransaction, TransactionsMap } from '../../types.ts';
6
5
  import type { Logger } from '../../utils/logger.ts';
7
6
  import type { Database } from '../client.ts';
8
7
  import { type relations, schema } from '../schema/index.ts';
@@ -20,7 +19,8 @@ export declare function deleteBlocksFrom(db: Database, fromBlock: bigint): Promi
20
19
  */
21
20
  export declare function cacheBlockAndTransactions(args: {
22
21
  db: Database<typeof schema, typeof relations>;
23
- block: EncodedBlockWithTransactions;
22
+ blocks: EncodedBlock[];
23
+ transactions: EncodedTransaction[];
24
24
  logger: Logger;
25
25
  }): Promise<void>;
26
26
  /**
@@ -33,12 +33,15 @@ export declare function cacheBlockAndTransactions(args: {
33
33
  * @param args.client - The client instance
34
34
  * @returns The blocks and their transactions
35
35
  */
36
- export declare function getBlocksInRange(logger: Logger, db: Database<typeof schema, typeof relations>, blockNumbers: bigint[], client: PublicClient, contracts: FilteredContracts): Promise<Map<bigint, EncodedBlockWithTransactions>>;
36
+ export declare function getBlocksInRange(logger: Logger, db: Database<typeof schema, typeof relations>, blockNumbers: bigint[], client: PublicClient, logsTxs: Hash[]): Promise<{
37
+ blocks: BlocksMap;
38
+ transactions: TransactionsMap;
39
+ }>;
37
40
  /**
38
41
  * Inserts blocks in chunks to avoid query parameter limit.
39
42
  */
40
43
  export declare function insertBlocksInChunks(args: {
41
44
  db: PgAsyncTransaction<PgQueryResultHKT, typeof schema>;
42
- blocks: EncodedBlockWithTransactions[];
45
+ blocks: EncodedBlock[];
43
46
  }): Promise<void>;
44
47
  //# sourceMappingURL=blocks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../../../src/db/actions/blocks.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAG7D,OAAO,EAEL,KAAK,kBAAkB,EAEvB,KAAK,gBAAgB,EAEtB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAExC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAG/D,OAAO,KAAK,EACV,4BAA4B,EAE7B,MAAM,gBAAgB,CAAA;AACvB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAEnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAG3D;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,EAAE,EAAE,QAAQ,EACZ,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAef;AAmBD;;;;;;;GAOG;AACH,wBAAsB,yBAAyB,CAAC,IAAI,EAAE;IACpD,EAAE,EAAE,QAAQ,CAAC,OAAO,MAAM,EAAE,OAAO,SAAS,CAAC,CAAA;IAC7C,KAAK,EAAE,4BAA4B,CAAA;IACnC,MAAM,EAAE,MAAM,CAAA;CACf,GAAG,OAAO,CAAC,IAAI,CAAC,CAahB;AAED;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,QAAQ,CAAC,OAAO,MAAM,EAAE,OAAO,SAAS,CAAC,EAC7C,YAAY,EAAE,MAAM,EAAE,EACtB,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,iBAAiB,GAC3B,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,4BAA4B,CAAC,CAAC,CA+EpD;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE;IAC/C,EAAE,EAAE,kBAAkB,CAAC,gBAAgB,EAAE,OAAO,MAAM,CAAC,CAAA;IACvD,MAAM,EAAE,4BAA4B,EAAE,CAAA;CACvC,GAAG,OAAO,CAAC,IAAI,CAAC,CAchB"}
1
+ {"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../../../src/db/actions/blocks.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAG7D,OAAO,EAEL,KAAK,kBAAkB,EAEvB,KAAK,gBAAgB,EAEtB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAI9C,OAAO,KAAK,EACV,SAAS,EACT,YAAY,EACZ,kBAAkB,EAClB,eAAe,EAChB,MAAM,gBAAgB,CAAA;AACvB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAEnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAG3D;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,EAAE,EAAE,QAAQ,EACZ,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAef;AAmBD;;;;;;;GAOG;AACH,wBAAsB,yBAAyB,CAAC,IAAI,EAAE;IACpD,EAAE,EAAE,QAAQ,CAAC,OAAO,MAAM,EAAE,OAAO,SAAS,CAAC,CAAA;IAC7C,MAAM,EAAE,YAAY,EAAE,CAAA;IACtB,YAAY,EAAE,kBAAkB,EAAE,CAAA;IAClC,MAAM,EAAE,MAAM,CAAA;CACf,GAAG,OAAO,CAAC,IAAI,CAAC,CAahB;AAED;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,QAAQ,CAAC,OAAO,MAAM,EAAE,OAAO,SAAS,CAAC,EAC7C,YAAY,EAAE,MAAM,EAAE,EACtB,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,IAAI,EAAE,GACd,OAAO,CAAC;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,YAAY,EAAE,eAAe,CAAA;CAAE,CAAC,CA6E/D;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE;IAC/C,EAAE,EAAE,kBAAkB,CAAC,gBAAgB,EAAE,OAAO,MAAM,CAAC,CAAA;IACvD,MAAM,EAAE,YAAY,EAAE,CAAA;CACvB,GAAG,OAAO,CAAC,IAAI,CAAC,CAchB"}
@@ -1,5 +1,5 @@
1
1
  /** biome-ignore-all lint/style/noNonNullAssertion: its ok */
2
- import { gte } from 'drizzle-orm';
2
+ import { and, gte, inArray } from 'drizzle-orm';
3
3
  import { getTableConfig, } from 'drizzle-orm/pg-core';
4
4
  import { MAX_QUERY_PARAMS } from "../../contants.js";
5
5
  import { safeGetBlock } from "../../rpc/get-block.js";
@@ -42,15 +42,15 @@ function getTablesWithBlockNumberColumn(fullSchema) {
42
42
  * @returns The cached block and transactions
43
43
  */
44
44
  export async function cacheBlockAndTransactions(args) {
45
- const { db, block } = args;
45
+ const { db, blocks, transactions } = args;
46
46
  await db.transaction(async (tx) => {
47
47
  await insertBlocksInChunks({
48
48
  db: tx,
49
- blocks: [block],
49
+ blocks,
50
50
  });
51
51
  await insertTransactionsInChunks({
52
52
  db: tx,
53
- transactions: block.transactions,
53
+ transactions,
54
54
  });
55
55
  });
56
56
  }
@@ -64,7 +64,7 @@ export async function cacheBlockAndTransactions(args) {
64
64
  * @param args.client - The client instance
65
65
  * @returns The blocks and their transactions
66
66
  */
67
- export async function getBlocksInRange(logger, db, blockNumbers, client, contracts) {
67
+ export async function getBlocksInRange(logger, db, blockNumbers, client, logsTxs) {
68
68
  const endClock = startClock();
69
69
  const firstBlockNumber = blockNumbers[0];
70
70
  const lastBlockNumber = blockNumbers[blockNumbers.length - 1];
@@ -73,32 +73,27 @@ export async function getBlocksInRange(logger, db, blockNumbers, client, contrac
73
73
  // lastBlockNumber,
74
74
  // contractAddresses: contracts.addresses,
75
75
  // })
76
- const r = await db.query.blocks.findMany({
77
- with: {
78
- transactions: {
79
- where: {
80
- AND: [
81
- { blockNumber: { gte: firstBlockNumber } },
82
- { blockNumber: { lte: lastBlockNumber } },
83
- {
84
- to: {
85
- in: contracts.addresses,
86
- },
87
- },
88
- ],
89
- },
76
+ const [blocks, txs] = await Promise.all([
77
+ db.query.blocks.findMany({
78
+ where: {
79
+ AND: [
80
+ { number: { gte: firstBlockNumber } },
81
+ { number: { lte: lastBlockNumber } },
82
+ ],
90
83
  },
91
- },
92
- where: {
93
- AND: [
94
- { number: { gte: firstBlockNumber } },
95
- { number: { lte: lastBlockNumber } },
96
- ],
97
- },
98
- });
84
+ }),
85
+ db
86
+ .select()
87
+ .from(schema.transactions)
88
+ .where(and(inArray(schema.transactions.hash, logsTxs))),
89
+ ]);
90
+ const transactionByHash = new Map();
91
+ for (const tx of txs) {
92
+ transactionByHash.set(tx.hash, tx);
93
+ }
99
94
  const blocksByNumber = new Map();
100
95
  const missing = new Set(blockNumbers);
101
- for (const block of r) {
96
+ for (const block of blocks) {
102
97
  blocksByNumber.set(block.number, block);
103
98
  missing.delete(block.number);
104
99
  }
@@ -107,29 +102,30 @@ export async function getBlocksInRange(logger, db, blockNumbers, client, contrac
107
102
  const newTransactions = [];
108
103
  await Promise.all(missingBlockNumbers.map(async (blockNumber) => {
109
104
  const block = await safeGetBlock({ client, blockNumber, db });
110
- const transactions = block.transactions;
111
105
  blocksByNumber.set(blockNumber, block);
112
- newBlocks.push(block);
106
+ const { transactions, ..._block } = block;
107
+ newBlocks.push(_block);
113
108
  if (transactions.length > 0) {
114
109
  newTransactions.push(...transactions);
115
110
  }
111
+ for (const tx of transactions) {
112
+ transactionByHash.set(tx.hash, tx);
113
+ }
116
114
  }));
117
- await db.transaction(async (tx) => {
118
- await insertBlocksInChunks({
119
- db: tx,
120
- blocks: newBlocks,
121
- });
122
- await insertTransactionsInChunks({
123
- db: tx,
124
- transactions: newTransactions,
125
- });
115
+ await cacheBlockAndTransactions({
116
+ db,
117
+ blocks: newBlocks,
118
+ transactions: newTransactions,
119
+ logger,
126
120
  });
127
121
  logger.trace({
128
- blocks: blocksByNumber.size,
129
- missing: missingBlockNumbers.length,
122
+ blocks: blocks.length,
123
+ txs: txs.length,
124
+ newBlocks: newBlocks.length,
125
+ newTxs: newTransactions.length,
130
126
  duration: endClock(),
131
- }, 'get blocks');
132
- return blocksByNumber;
127
+ }, 'get blocks and txs');
128
+ return { blocks: blocksByNumber, transactions: transactionByHash };
133
129
  }
134
130
  /**
135
131
  * Inserts blocks in chunks to avoid query parameter limit.
@@ -1 +1 @@
1
- {"version":3,"file":"blocks.js","sourceRoot":"","sources":["../../../src/db/actions/blocks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"blocks.js","sourceRoot":"","sources":["../../../src/db/actions/blocks.ts"],"names":[],"mappings":"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"}
@@ -304,7 +304,6 @@ declare function generatePrepared(db: Omit<Database<typeof schema, typeof relati
304
304
  extraData: `0x${string}`;
305
305
  transactions: {
306
306
  input: `0x${string}`;
307
- s: `0x${string}`;
308
307
  hash: `0x${string}`;
309
308
  nonce: number;
310
309
  blockNumber: bigint;
@@ -314,6 +313,7 @@ declare function generatePrepared(db: Omit<Database<typeof schema, typeof relati
314
313
  to: `0x${string}` | null;
315
314
  value: bigint;
316
315
  r: `0x${string}`;
316
+ s: `0x${string}`;
317
317
  v: bigint;
318
318
  type: "legacy" | "eip1559" | "eip2930" | "eip4844" | "eip7702";
319
319
  gas: bigint;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"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"}
package/dist/db/client.js CHANGED
@@ -23,8 +23,12 @@ export function createDatabase({ env, config, schema, relations, }) {
23
23
  // Postgres
24
24
  if (driver === 'postgres' && url) {
25
25
  const pool = new Pool({
26
- ...options,
26
+ application_name: 'foxer',
27
+ connectionTimeoutMillis: 5_000,
28
+ idleTimeoutMillis: 30_000,
29
+ max: 10,
27
30
  connectionString: url,
31
+ ...options,
28
32
  });
29
33
  const db = drizzleNodePostgres({
30
34
  client: pool,
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"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"}
@@ -121,12 +121,12 @@ export declare const bytea: {
121
121
  <TConfig extends Record<string, any>>(fieldConfig?: TConfig | undefined): import("drizzle-orm/pg-core").PgCustomColumnBuilder<{
122
122
  dataType: "custom";
123
123
  data: `0x${string}`;
124
- driverParam: Buffer<ArrayBufferLike>;
124
+ driverParam: Uint8Array<ArrayBufferLike>;
125
125
  }>;
126
126
  (dbName: string, fieldConfig?: unknown): import("drizzle-orm/pg-core").PgCustomColumnBuilder<{
127
127
  dataType: "custom";
128
128
  data: `0x${string}`;
129
- driverParam: Buffer<ArrayBufferLike>;
129
+ driverParam: Uint8Array<ArrayBufferLike>;
130
130
  }>;
131
131
  };
132
132
  //# sourceMappingURL=column-types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"column-types.d.ts","sourceRoot":"","sources":["../../src/db/column-types.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,SAAS;;;;;;;;;;;CAOpB,CAAA;AAEF,eAAO,MAAM,GAAG;;gBAGK,MAAM,GAAG,SAAS;;;;;;;gBAAlB,MAAM,GAAG,SAAS;;;;;;CAWrC,CAAA;AAEF;;;;;GAKG;AACH,eAAO,MAAM,IAAI;;gBAGI,MAAM,GAAG,SAAS;;;;;;;gBAAlB,MAAM,GAAG,SAAS;;;;;;CAWrC,CAAA;AAEF,eAAO,MAAM,OAAO;;gBAGC,MAAM,GAAG,SAAS;;;;;;;gBAAlB,MAAM,GAAG,SAAS;;;;;;CAWrC,CAAA;AAEF;;;;GAIG;AACH,eAAO,MAAM,MAAM;;;;;;;;;;;CAOjB,CAAA;AAEF,eAAO,MAAM,OAAO;;;;;;;;;;;CAAY,CAAA;AAChC,eAAO,MAAM,MAAM;;;;;;;;;;;CAAY,CAAA;AAE/B,eAAO,MAAM,KAAK;;;;;;;;;;;CAOhB,CAAA;AAEF,eAAO,MAAM,KAAK;;;;;;;;;;;CAYhB,CAAA"}
1
+ {"version":3,"file":"column-types.d.ts","sourceRoot":"","sources":["../../src/db/column-types.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,SAAS;;;;;;;;;;;CAOpB,CAAA;AAEF,eAAO,MAAM,GAAG;;gBAGK,MAAM,GAAG,SAAS;;;;;;;gBAAlB,MAAM,GAAG,SAAS;;;;;;CAWrC,CAAA;AAEF;;;;;GAKG;AACH,eAAO,MAAM,IAAI;;gBAGI,MAAM,GAAG,SAAS;;;;;;;gBAAlB,MAAM,GAAG,SAAS;;;;;;CAWrC,CAAA;AAEF,eAAO,MAAM,OAAO;;gBAGC,MAAM,GAAG,SAAS;;;;;;;gBAAlB,MAAM,GAAG,SAAS;;;;;;CAWrC,CAAA;AAEF;;;;GAIG;AACH,eAAO,MAAM,MAAM;;;;;;;;;;;CAOjB,CAAA;AAEF,eAAO,MAAM,OAAO;;;;;;;;;;;CAAY,CAAA;AAChC,eAAO,MAAM,MAAM;;;;;;;;;;;CAAY,CAAA;AAE/B,eAAO,MAAM,KAAK;;;;;;;;;;;CAOhB,CAAA;AAEF,eAAO,MAAM,KAAK;;;;;;;;;;;CAsBhB,CAAA"}
@@ -1,4 +1,5 @@
1
1
  import { customType } from 'drizzle-orm/pg-core';
2
+ import { hex as hexCodec } from 'iso-base/rfc4648';
2
3
  import { stringify } from 'viem';
3
4
  export const numeric78 = customType({
4
5
  dataType() {
@@ -78,9 +79,16 @@ export const bytea = customType({
78
79
  return Buffer.from(value.slice(2), 'hex');
79
80
  },
80
81
  fromDriver(value) {
81
- const hex = value.toString('hex');
82
- const _value = hex.startsWith('\\x') ? hex.slice(2) : hex;
83
- return `0x${_value}`;
82
+ if (typeof value === 'string') {
83
+ return `0x${value.slice(2)}`;
84
+ }
85
+ if (value instanceof Buffer) {
86
+ return `0x${value.toString('hex')}`;
87
+ }
88
+ if (value instanceof Uint8Array) {
89
+ return `0x${hexCodec.encode(value)}`;
90
+ }
91
+ throw new Error('Invalid value');
84
92
  },
85
93
  });
86
94
  //# sourceMappingURL=column-types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"column-types.js","sourceRoot":"","sources":["../../src/db/column-types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAqC,SAAS,EAAE,MAAM,MAAM,CAAA;AAEnE,MAAM,CAAC,MAAM,SAAS,GAAG,UAAU,CAAuC;IACxE,QAAQ;QACN,OAAO,eAAe,CAAA;IACxB,CAAC;IACD,UAAU,CAAC,KAAa;QACtB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;IACtB,CAAC;CACF,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,GAAG,GAAG,UAAU,CAI1B;IACD,QAAQ,CAAC,MAAM;QACb,IAAI,MAAM,EAAE,MAAM,EAAE,CAAC;YACnB,OAAO,WAAW,MAAM,CAAC,MAAM,GAAG,CAAA;QACpC,CAAC;QACD,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,UAAU,CAAC,KAAa;QACtB,OAAO,KAAY,CAAA;IACrB,CAAC;CACF,CAAC,CAAA;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,UAAU,CAI3B;IACD,QAAQ,CAAC,MAAM;QACb,IAAI,MAAM,EAAE,MAAM,EAAE,CAAC;YACnB,OAAO,WAAW,MAAM,CAAC,MAAM,GAAG,CAAA;QACpC,CAAC;QACD,OAAO,aAAa,CAAA;IACtB,CAAC;IACD,UAAU,CAAC,KAAa;QACtB,OAAO,KAAa,CAAA;IACtB,CAAC;CACF,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,UAAU,CAI9B;IACD,QAAQ,CAAC,MAAM;QACb,IAAI,MAAM,EAAE,MAAM,EAAE,CAAC;YACnB,OAAO,WAAW,MAAM,CAAC,MAAM,GAAG,CAAA;QACpC,CAAC;QACD,OAAO,aAAa,CAAA;IACtB,CAAC;IACD,UAAU,CAAC,KAAa;QACtB,OAAO,KAAgB,CAAA;IACzB,CAAC;CACF,CAAC,CAAA;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,UAAU,CAAuC;IACrE,QAAQ;QACN,OAAO,QAAQ,CAAA;IACjB,CAAC;IACD,UAAU,CAAC,KAAa;QACtB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;IACtB,CAAC;CACF,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,SAAS,CAAA;AAChC,MAAM,CAAC,MAAM,MAAM,GAAG,SAAS,CAAA;AAE/B,MAAM,CAAC,MAAM,KAAK,GAAG,UAAU,CAAwC;IACrE,QAAQ;QACN,OAAO,OAAO,CAAA;IAChB,CAAC;IACD,QAAQ,CAAC,KAAc;QACrB,OAAO,SAAS,CAAC,KAAK,CAAC,CAAA;IACzB,CAAC;CACF,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG,UAAU,CAAoC;IACjE,QAAQ;QACN,OAAO,OAAO,CAAA;IAChB,CAAC;IACD,QAAQ,CAAC,KAAa;QACpB,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;IAC3C,CAAC;IACD,UAAU,CAAC,KAAa;QACtB,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QACjC,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;QACzD,OAAO,KAAK,MAAM,EAAS,CAAA;IAC7B,CAAC;CACF,CAAC,CAAA"}
1
+ {"version":3,"file":"column-types.js","sourceRoot":"","sources":["../../src/db/column-types.ts"],"names":[],"mappings":"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"}
@@ -81,13 +81,13 @@ export declare const blocks: import("drizzle-orm/pg-core").PgTableWithColumns<{
81
81
  logsBloom: import("drizzle-orm/pg-core").PgBuildColumn<"blocks", import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgCustomColumnBuilder<{
82
82
  dataType: "custom";
83
83
  data: `0x${string}`;
84
- driverParam: Buffer<ArrayBufferLike>;
84
+ driverParam: Uint8Array<ArrayBufferLike>;
85
85
  }>>, {
86
86
  name: string;
87
87
  tableName: "blocks";
88
88
  dataType: "custom";
89
89
  data: `0x${string}`;
90
- driverParam: Buffer<ArrayBufferLike>;
90
+ driverParam: Uint8Array<ArrayBufferLike>;
91
91
  notNull: true;
92
92
  hasDefault: false;
93
93
  isPrimaryKey: false;
@@ -176,13 +176,13 @@ export declare const blocks: import("drizzle-orm/pg-core").PgTableWithColumns<{
176
176
  nonce: import("drizzle-orm/pg-core").PgBuildColumn<"blocks", import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgCustomColumnBuilder<{
177
177
  dataType: "custom";
178
178
  data: `0x${string}`;
179
- driverParam: Buffer<ArrayBufferLike>;
179
+ driverParam: Uint8Array<ArrayBufferLike>;
180
180
  }>>, {
181
181
  name: string;
182
182
  tableName: "blocks";
183
183
  dataType: "custom";
184
184
  data: `0x${string}`;
185
- driverParam: Buffer<ArrayBufferLike>;
185
+ driverParam: Uint8Array<ArrayBufferLike>;
186
186
  notNull: true;
187
187
  hasDefault: false;
188
188
  isPrimaryKey: false;
@@ -195,13 +195,13 @@ export declare const blocks: import("drizzle-orm/pg-core").PgTableWithColumns<{
195
195
  mixHash: import("drizzle-orm/pg-core").PgBuildColumn<"blocks", import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgCustomColumnBuilder<{
196
196
  dataType: "custom";
197
197
  data: `0x${string}`;
198
- driverParam: Buffer<ArrayBufferLike>;
198
+ driverParam: Uint8Array<ArrayBufferLike>;
199
199
  }>>, {
200
200
  name: string;
201
201
  tableName: "blocks";
202
202
  dataType: "custom";
203
203
  data: `0x${string}`;
204
- driverParam: Buffer<ArrayBufferLike>;
204
+ driverParam: Uint8Array<ArrayBufferLike>;
205
205
  notNull: true;
206
206
  hasDefault: false;
207
207
  isPrimaryKey: false;
@@ -214,13 +214,13 @@ export declare const blocks: import("drizzle-orm/pg-core").PgTableWithColumns<{
214
214
  stateRoot: import("drizzle-orm/pg-core").PgBuildColumn<"blocks", import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgCustomColumnBuilder<{
215
215
  dataType: "custom";
216
216
  data: `0x${string}`;
217
- driverParam: Buffer<ArrayBufferLike>;
217
+ driverParam: Uint8Array<ArrayBufferLike>;
218
218
  }>>, {
219
219
  name: string;
220
220
  tableName: "blocks";
221
221
  dataType: "custom";
222
222
  data: `0x${string}`;
223
- driverParam: Buffer<ArrayBufferLike>;
223
+ driverParam: Uint8Array<ArrayBufferLike>;
224
224
  notNull: true;
225
225
  hasDefault: false;
226
226
  isPrimaryKey: false;
@@ -233,13 +233,13 @@ export declare const blocks: import("drizzle-orm/pg-core").PgTableWithColumns<{
233
233
  receiptsRoot: import("drizzle-orm/pg-core").PgBuildColumn<"blocks", import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgCustomColumnBuilder<{
234
234
  dataType: "custom";
235
235
  data: `0x${string}`;
236
- driverParam: Buffer<ArrayBufferLike>;
236
+ driverParam: Uint8Array<ArrayBufferLike>;
237
237
  }>>, {
238
238
  name: string;
239
239
  tableName: "blocks";
240
240
  dataType: "custom";
241
241
  data: `0x${string}`;
242
- driverParam: Buffer<ArrayBufferLike>;
242
+ driverParam: Uint8Array<ArrayBufferLike>;
243
243
  notNull: true;
244
244
  hasDefault: false;
245
245
  isPrimaryKey: false;
@@ -252,13 +252,13 @@ export declare const blocks: import("drizzle-orm/pg-core").PgTableWithColumns<{
252
252
  transactionsRoot: import("drizzle-orm/pg-core").PgBuildColumn<"blocks", import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgCustomColumnBuilder<{
253
253
  dataType: "custom";
254
254
  data: `0x${string}`;
255
- driverParam: Buffer<ArrayBufferLike>;
255
+ driverParam: Uint8Array<ArrayBufferLike>;
256
256
  }>>, {
257
257
  name: string;
258
258
  tableName: "blocks";
259
259
  dataType: "custom";
260
260
  data: `0x${string}`;
261
- driverParam: Buffer<ArrayBufferLike>;
261
+ driverParam: Uint8Array<ArrayBufferLike>;
262
262
  notNull: true;
263
263
  hasDefault: false;
264
264
  isPrimaryKey: false;
@@ -271,13 +271,13 @@ export declare const blocks: import("drizzle-orm/pg-core").PgTableWithColumns<{
271
271
  sha3Uncles: import("drizzle-orm/pg-core").PgBuildColumn<"blocks", import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgCustomColumnBuilder<{
272
272
  dataType: "custom";
273
273
  data: `0x${string}`;
274
- driverParam: Buffer<ArrayBufferLike>;
274
+ driverParam: Uint8Array<ArrayBufferLike>;
275
275
  }>>, {
276
276
  name: string;
277
277
  tableName: "blocks";
278
278
  dataType: "custom";
279
279
  data: `0x${string}`;
280
- driverParam: Buffer<ArrayBufferLike>;
280
+ driverParam: Uint8Array<ArrayBufferLike>;
281
281
  notNull: true;
282
282
  hasDefault: false;
283
283
  isPrimaryKey: false;
@@ -347,13 +347,13 @@ export declare const blocks: import("drizzle-orm/pg-core").PgTableWithColumns<{
347
347
  extraData: import("drizzle-orm/pg-core").PgBuildColumn<"blocks", import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgCustomColumnBuilder<{
348
348
  dataType: "custom";
349
349
  data: `0x${string}`;
350
- driverParam: Buffer<ArrayBufferLike>;
350
+ driverParam: Uint8Array<ArrayBufferLike>;
351
351
  }>>, {
352
352
  name: string;
353
353
  tableName: "blocks";
354
354
  dataType: "custom";
355
355
  data: `0x${string}`;
356
- driverParam: Buffer<ArrayBufferLike>;
356
+ driverParam: Uint8Array<ArrayBufferLike>;
357
357
  notNull: true;
358
358
  hasDefault: false;
359
359
  isPrimaryKey: false;