ponder 0.17.5 → 0.17.7
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/CHANGELOG.md +14 -0
- package/dist/esm/build/config.js +31 -16
- package/dist/esm/build/config.js.map +1 -1
- package/dist/esm/client/index.js +3 -1
- package/dist/esm/client/index.js.map +1 -1
- package/dist/esm/rpc/actions.js +13 -3
- package/dist/esm/rpc/actions.js.map +1 -1
- package/dist/esm/rpc/index.js +6 -0
- package/dist/esm/rpc/index.js.map +1 -1
- package/dist/esm/sync-historical/index.js +14 -51
- package/dist/esm/sync-historical/index.js.map +1 -1
- package/dist/esm/sync-store/index.js +7 -3
- package/dist/esm/sync-store/index.js.map +1 -1
- package/dist/types/build/config.d.ts.map +1 -1
- package/dist/types/client/index.d.ts.map +1 -1
- package/dist/types/rpc/actions.d.ts.map +1 -1
- package/dist/types/rpc/index.d.ts +2 -1
- package/dist/types/rpc/index.d.ts.map +1 -1
- package/dist/types/sync-historical/index.d.ts +1 -1
- package/dist/types/sync-historical/index.d.ts.map +1 -1
- package/dist/types/sync-store/index.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/build/config.ts +48 -30
- package/src/client/index.ts +4 -1
- package/src/rpc/actions.ts +25 -6
- package/src/rpc/index.ts +12 -0
- package/src/sync-historical/index.ts +63 -101
- package/src/sync-store/index.ts +6 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/sync-historical/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,OAAO,EASb,MAAM,MAAM,CAAC;AACd,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAEV,KAAK,EAEL,SAAS,EAET,SAAS,EACT,OAAO,EAOR,MAAM,qBAAqB,CAAC;AAY7B,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/sync-historical/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,OAAO,EASb,MAAM,MAAM,CAAC;AACd,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAEV,KAAK,EAEL,SAAS,EAET,SAAS,EACT,OAAO,EAOR,MAAM,qBAAqB,CAAC;AAY7B,OAAO,EAAE,KAAK,GAAG,EAAqB,MAAM,gBAAgB,CAAC;AAa7D,OAAO,KAAK,EAEV,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,EAEL,KAAK,QAAQ,EAGd,MAAM,qBAAqB,CAAC;AAK7B,MAAM,MAAM,cAAc,GAAG;IAC3B;;OAEG;IACH,kBAAkB,CAAC,MAAM,EAAE;QACzB,QAAQ,EAAE,QAAQ,CAAC;QACnB,iBAAiB,EAAE,kBAAkB,EAAE,CAAC;QACxC,wBAAwB,EAAE,mBAAmB,EAAE,CAAC;QAChD,SAAS,EAAE,SAAS,CAAC;KACtB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IACvB;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE;QACpB,QAAQ,EAAE,QAAQ,CAAC;QACnB,iBAAiB,EAAE,kBAAkB,EAAE,CAAC;QACxC,IAAI,EAAE,OAAO,EAAE,CAAC;QAChB,SAAS,EAAE,SAAS,CAAC;KACtB,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;CACpC,CAAC;AAEF,KAAK,8BAA8B,GAAG;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,KAAK,CAAC;IACb,GAAG,EAAE,GAAG,CAAC;IACT,cAAc,EAAE,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;CACtD,CAAC;AAEF,eAAO,MAAM,oBAAoB,SACzB,8BAA8B,KACnC,cAw6BF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/sync-store/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/sync-store/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ponder",
|
|
3
|
-
"version": "0.17.
|
|
3
|
+
"version": "0.17.7",
|
|
4
4
|
"description": "An open-source TypeScript framework for EVM data indexing",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -102,7 +102,7 @@
|
|
|
102
102
|
"rimraf": "^5.0.5",
|
|
103
103
|
"tsx": "^4.19.2",
|
|
104
104
|
"vitest": "1.6.1",
|
|
105
|
-
"@ponder/client": "0.17.
|
|
105
|
+
"@ponder/client": "0.17.7"
|
|
106
106
|
},
|
|
107
107
|
"engines": {
|
|
108
108
|
"node": ">=22"
|
package/src/build/config.ts
CHANGED
|
@@ -77,6 +77,34 @@ const flattenSources = <
|
|
|
77
77
|
);
|
|
78
78
|
};
|
|
79
79
|
|
|
80
|
+
const validateAddresses = ({
|
|
81
|
+
sourceName,
|
|
82
|
+
addresses,
|
|
83
|
+
}: {
|
|
84
|
+
sourceName: string;
|
|
85
|
+
addresses: Address | readonly Address[];
|
|
86
|
+
}) => {
|
|
87
|
+
if (Array.isArray(addresses) && addresses.length === 0) {
|
|
88
|
+
throw new Error(
|
|
89
|
+
`Validation failed: Invalid address for '${sourceName}'. Got an empty array, expected at least one address.`,
|
|
90
|
+
);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
for (const address of Array.isArray(addresses) ? addresses : [addresses]) {
|
|
94
|
+
if (!address.startsWith("0x"))
|
|
95
|
+
throw new Error(
|
|
96
|
+
`Validation failed: Invalid prefix for address '${address}'. Got '${address.slice(
|
|
97
|
+
0,
|
|
98
|
+
2,
|
|
99
|
+
)}', expected '0x'.`,
|
|
100
|
+
);
|
|
101
|
+
if (address.length !== 42)
|
|
102
|
+
throw new Error(
|
|
103
|
+
`Validation failed: Invalid length for address '${address}'. Got ${address.length}, expected 42 characters.`,
|
|
104
|
+
);
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
|
|
80
108
|
export async function buildIndexingFunctions({
|
|
81
109
|
common,
|
|
82
110
|
config,
|
|
@@ -407,6 +435,12 @@ export async function buildIndexingFunctions({
|
|
|
407
435
|
Array.isArray(resolvedAddress) === false
|
|
408
436
|
) {
|
|
409
437
|
const factoryAddress = resolvedAddress as Factory;
|
|
438
|
+
if (factoryAddress.address !== undefined) {
|
|
439
|
+
validateAddresses({
|
|
440
|
+
sourceName: source.name,
|
|
441
|
+
addresses: factoryAddress.address,
|
|
442
|
+
});
|
|
443
|
+
}
|
|
410
444
|
const factoryFromBlock =
|
|
411
445
|
(await resolveBlockNumber(factoryAddress.startBlock, chain)) ??
|
|
412
446
|
fromBlock;
|
|
@@ -433,21 +467,10 @@ export async function buildIndexingFunctions({
|
|
|
433
467
|
address = logFactory;
|
|
434
468
|
} else {
|
|
435
469
|
if (resolvedAddress !== undefined) {
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
:
|
|
439
|
-
|
|
440
|
-
throw new Error(
|
|
441
|
-
`Validation failed: Invalid prefix for address '${address}'. Got '${address!.slice(
|
|
442
|
-
0,
|
|
443
|
-
2,
|
|
444
|
-
)}', expected '0x'.`,
|
|
445
|
-
);
|
|
446
|
-
if (address!.length !== 42)
|
|
447
|
-
throw new Error(
|
|
448
|
-
`Validation failed: Invalid length for address '${address}'. Got ${address!.length}, expected 42 characters.`,
|
|
449
|
-
);
|
|
450
|
-
}
|
|
470
|
+
validateAddresses({
|
|
471
|
+
sourceName: source.name,
|
|
472
|
+
addresses: resolvedAddress as Address | readonly Address[],
|
|
473
|
+
});
|
|
451
474
|
}
|
|
452
475
|
|
|
453
476
|
const validatedAddress = Array.isArray(resolvedAddress)
|
|
@@ -708,6 +731,12 @@ export async function buildIndexingFunctions({
|
|
|
708
731
|
typeof resolvedAddress === "object" &&
|
|
709
732
|
!Array.isArray(resolvedAddress)
|
|
710
733
|
) {
|
|
734
|
+
if (resolvedAddress.address !== undefined) {
|
|
735
|
+
validateAddresses({
|
|
736
|
+
sourceName: source.name,
|
|
737
|
+
addresses: resolvedAddress.address,
|
|
738
|
+
});
|
|
739
|
+
}
|
|
711
740
|
const factoryFromBlock =
|
|
712
741
|
(await resolveBlockNumber(resolvedAddress.startBlock, chain)) ??
|
|
713
742
|
fromBlock;
|
|
@@ -726,21 +755,10 @@ export async function buildIndexingFunctions({
|
|
|
726
755
|
|
|
727
756
|
address = logFactory;
|
|
728
757
|
} else {
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
: [
|
|
732
|
-
|
|
733
|
-
throw new Error(
|
|
734
|
-
`Validation failed: Invalid prefix for address '${address}'. Got '${address!.slice(
|
|
735
|
-
0,
|
|
736
|
-
2,
|
|
737
|
-
)}', expected '0x'.`,
|
|
738
|
-
);
|
|
739
|
-
if (address!.length !== 42)
|
|
740
|
-
throw new Error(
|
|
741
|
-
`Validation failed: Invalid length for address '${address}'. Got ${address!.length}, expected 42 characters.`,
|
|
742
|
-
);
|
|
743
|
-
}
|
|
758
|
+
validateAddresses({
|
|
759
|
+
sourceName: source.name,
|
|
760
|
+
addresses: resolvedAddress as Address | readonly Address[],
|
|
761
|
+
});
|
|
744
762
|
|
|
745
763
|
const validatedAddress = Array.isArray(resolvedAddress)
|
|
746
764
|
? dedupe(resolvedAddress).map((r) => toLowerCase(r))
|
package/src/client/index.ts
CHANGED
|
@@ -194,7 +194,7 @@ export const client = ({
|
|
|
194
194
|
);
|
|
195
195
|
driver.instance.query(`LISTEN "${channel}"`);
|
|
196
196
|
|
|
197
|
-
driver.instance.onNotification((_, payload) => {
|
|
197
|
+
const unsubscribe = driver.instance.onNotification((_, payload) => {
|
|
198
198
|
const tables = JSON.parse(payload!) as string[];
|
|
199
199
|
tables.push("_ponder_checkpoint");
|
|
200
200
|
let invalidQueryCount = 0;
|
|
@@ -232,6 +232,8 @@ export const client = ({
|
|
|
232
232
|
});
|
|
233
233
|
}
|
|
234
234
|
});
|
|
235
|
+
|
|
236
|
+
globalThis.PONDER_COMMON.apiShutdown.add(unsubscribe);
|
|
235
237
|
} else {
|
|
236
238
|
(async () => {
|
|
237
239
|
let client: pg.PoolClient | undefined;
|
|
@@ -246,6 +248,7 @@ export const client = ({
|
|
|
246
248
|
|
|
247
249
|
if (hasRegisteredShutdown === false) {
|
|
248
250
|
globalThis.PONDER_COMMON.apiShutdown.add(() => {
|
|
251
|
+
client?.removeAllListeners("notification");
|
|
249
252
|
client?.release();
|
|
250
253
|
client = undefined;
|
|
251
254
|
});
|
package/src/rpc/actions.ts
CHANGED
|
@@ -20,8 +20,11 @@ import type {
|
|
|
20
20
|
} from "@/internal/types.js";
|
|
21
21
|
import type { RequestParameters, Rpc } from "@/rpc/index.js";
|
|
22
22
|
import { zeroLogsBloom } from "@/sync-realtime/bloom.js";
|
|
23
|
+
import { chunk } from "@/utils/chunk.js";
|
|
23
24
|
import { PG_BIGINT_MAX, PG_INTEGER_MAX } from "@/utils/pg.js";
|
|
24
25
|
|
|
26
|
+
const ADDRESS_CHUNK_SIZE = 50;
|
|
27
|
+
|
|
25
28
|
/**
|
|
26
29
|
* Helper function for "eth_getBlockByNumber" request.
|
|
27
30
|
*/
|
|
@@ -93,13 +96,29 @@ export const eth_getLogs = async (
|
|
|
93
96
|
params,
|
|
94
97
|
};
|
|
95
98
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
99
|
+
const requests: Extract<RequestParameters, { method: "eth_getLogs" }>[] =
|
|
100
|
+
Array.isArray(params[0].address)
|
|
101
|
+
? chunk(params[0].address, ADDRESS_CHUNK_SIZE).map(
|
|
102
|
+
(address) =>
|
|
103
|
+
({
|
|
104
|
+
method: "eth_getLogs",
|
|
105
|
+
params: [{ ...params[0], address }],
|
|
106
|
+
}) as Extract<RequestParameters, { method: "eth_getLogs" }>,
|
|
107
|
+
)
|
|
108
|
+
: [request];
|
|
109
|
+
|
|
110
|
+
const responses = await Promise.all(
|
|
111
|
+
requests.map(async (request) => {
|
|
112
|
+
const logs = await rpc.request(request, context);
|
|
113
|
+
if (logs === null || logs === undefined) {
|
|
114
|
+
throw new Error("Received invalid empty eth_getLogs response.");
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
return logs as SyncLog[];
|
|
118
|
+
}),
|
|
119
|
+
);
|
|
100
120
|
|
|
101
|
-
|
|
102
|
-
});
|
|
121
|
+
return standardizeLogs(responses.flat(), request);
|
|
103
122
|
};
|
|
104
123
|
|
|
105
124
|
/**
|
package/src/rpc/index.ts
CHANGED
|
@@ -14,6 +14,7 @@ import {
|
|
|
14
14
|
hexToNumber,
|
|
15
15
|
isHex,
|
|
16
16
|
JsonRpcVersionUnsupportedError,
|
|
17
|
+
type LogTopic,
|
|
17
18
|
MethodNotFoundRpcError,
|
|
18
19
|
MethodNotSupportedRpcError,
|
|
19
20
|
ParseRpcError,
|
|
@@ -57,6 +58,17 @@ export type RequestReturnType<
|
|
|
57
58
|
method extends EIP1193Parameters<RpcSchema>["method"],
|
|
58
59
|
> = Extract<RpcSchema[number], { Method: method }>["ReturnType"];
|
|
59
60
|
|
|
61
|
+
export const sanitizeLogTopics = <
|
|
62
|
+
topics extends readonly LogTopic[] | LogTopic[],
|
|
63
|
+
>(
|
|
64
|
+
topics: topics,
|
|
65
|
+
) => {
|
|
66
|
+
const sanitizedTopics = [...topics];
|
|
67
|
+
while (sanitizedTopics.at(-1) === null) sanitizedTopics.pop();
|
|
68
|
+
|
|
69
|
+
return sanitizedTopics as topics;
|
|
70
|
+
};
|
|
71
|
+
|
|
60
72
|
export type Rpc = {
|
|
61
73
|
hostnames: string[];
|
|
62
74
|
request: <TParameters extends RequestParameters>(
|
|
@@ -37,7 +37,7 @@ import {
|
|
|
37
37
|
validateTracesAndBlock,
|
|
38
38
|
validateTransactionsAndBlock,
|
|
39
39
|
} from "@/rpc/actions.js";
|
|
40
|
-
import type
|
|
40
|
+
import { type Rpc, sanitizeLogTopics } from "@/rpc/index.js";
|
|
41
41
|
import {
|
|
42
42
|
getChildAddress,
|
|
43
43
|
isAddressFactory,
|
|
@@ -145,120 +145,72 @@ export const createHistoricalSync = (
|
|
|
145
145
|
logsRequestMetadata.estimatedRange,
|
|
146
146
|
});
|
|
147
147
|
|
|
148
|
-
const topics = [
|
|
148
|
+
const topics = sanitizeLogTopics([
|
|
149
149
|
topic0 ?? null,
|
|
150
150
|
topic1 ?? null,
|
|
151
151
|
topic2 ?? null,
|
|
152
152
|
topic3 ?? null,
|
|
153
|
-
]
|
|
154
|
-
|
|
155
|
-
// Note: the `topics` field is very fragile for many rpc providers, and
|
|
156
|
-
// cannot handle extra "null" topics
|
|
157
|
-
|
|
158
|
-
if (topics[3] === null) {
|
|
159
|
-
topics.pop();
|
|
160
|
-
if (topics[2] === null) {
|
|
161
|
-
topics.pop();
|
|
162
|
-
if (topics[1] === null) {
|
|
163
|
-
topics.pop();
|
|
164
|
-
if (topics[0] === null) {
|
|
165
|
-
topics.pop();
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
// Batch large arrays of addresses, handling arrays that are empty
|
|
172
|
-
|
|
173
|
-
let addressBatches: (Address | Address[] | undefined)[];
|
|
174
|
-
|
|
175
|
-
if (address === undefined) {
|
|
176
|
-
// no address (match all)
|
|
177
|
-
addressBatches = [undefined];
|
|
178
|
-
} else if (typeof address === "string") {
|
|
179
|
-
// single address
|
|
180
|
-
addressBatches = [address];
|
|
181
|
-
} else if (address.length === 0) {
|
|
182
|
-
// no address (factory with no children)
|
|
183
|
-
return [];
|
|
184
|
-
} else {
|
|
185
|
-
// many addresses
|
|
186
|
-
// Note: it is assumed that `address` is deduplicated
|
|
187
|
-
addressBatches = [];
|
|
188
|
-
for (let i = 0; i < address.length; i += 50) {
|
|
189
|
-
addressBatches.push(address.slice(i, i + 50));
|
|
190
|
-
}
|
|
191
|
-
}
|
|
153
|
+
])!;
|
|
192
154
|
|
|
193
155
|
const logs = await Promise.all(
|
|
194
|
-
intervals.
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
156
|
+
intervals.map((interval) =>
|
|
157
|
+
eth_getLogs(
|
|
158
|
+
args.rpc,
|
|
159
|
+
[
|
|
160
|
+
{
|
|
161
|
+
address,
|
|
162
|
+
topics,
|
|
163
|
+
fromBlock: numberToHex(interval[0]),
|
|
164
|
+
toBlock: numberToHex(interval[1]),
|
|
165
|
+
},
|
|
166
|
+
],
|
|
167
|
+
context,
|
|
168
|
+
).catch((error) => {
|
|
169
|
+
// Note: skip eth_getLogs range retry logic if the chain
|
|
170
|
+
// has a custom block range.
|
|
171
|
+
if (args.chain.ethGetLogsBlockRange !== undefined) {
|
|
172
|
+
throw error;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
const getLogsErrorResponse = getLogsRetryHelper({
|
|
176
|
+
params: [
|
|
199
177
|
{
|
|
200
178
|
address,
|
|
201
179
|
topics,
|
|
202
|
-
fromBlock:
|
|
203
|
-
toBlock:
|
|
180
|
+
fromBlock: toHex(interval[0]),
|
|
181
|
+
toBlock: toHex(interval[1]),
|
|
204
182
|
},
|
|
205
183
|
],
|
|
206
|
-
|
|
207
|
-
)
|
|
208
|
-
// Note: skip eth_getLogs range retry logic if the chain
|
|
209
|
-
// has a custom block range.
|
|
210
|
-
if (args.chain.ethGetLogsBlockRange !== undefined) {
|
|
211
|
-
throw error;
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
const getLogsErrorResponse = getLogsRetryHelper({
|
|
215
|
-
params: [
|
|
216
|
-
{
|
|
217
|
-
address,
|
|
218
|
-
topics,
|
|
219
|
-
fromBlock: toHex(interval[0]),
|
|
220
|
-
toBlock: toHex(interval[1]),
|
|
221
|
-
},
|
|
222
|
-
],
|
|
223
|
-
error: error as RpcError,
|
|
224
|
-
});
|
|
184
|
+
error: error as RpcError,
|
|
185
|
+
});
|
|
225
186
|
|
|
226
|
-
|
|
187
|
+
if (getLogsErrorResponse.shouldRetry === false) throw error;
|
|
227
188
|
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
189
|
+
const range =
|
|
190
|
+
hexToNumber(getLogsErrorResponse.ranges[0]!.toBlock) -
|
|
191
|
+
hexToNumber(getLogsErrorResponse.ranges[0]!.fromBlock);
|
|
231
192
|
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
193
|
+
args.common.logger.debug({
|
|
194
|
+
msg: "Updated eth_getLogs range",
|
|
195
|
+
chain: args.chain.name,
|
|
196
|
+
chain_id: args.chain.id,
|
|
197
|
+
range,
|
|
198
|
+
});
|
|
238
199
|
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
200
|
+
logsRequestMetadata = {
|
|
201
|
+
estimatedRange: range,
|
|
202
|
+
confirmedRange: getLogsErrorResponse.isSuggestedRange
|
|
203
|
+
? range
|
|
204
|
+
: undefined,
|
|
205
|
+
};
|
|
245
206
|
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
),
|
|
207
|
+
return syncLogsDynamic(
|
|
208
|
+
{ address, topic0, topic1, topic2, topic3, interval },
|
|
209
|
+
context,
|
|
210
|
+
);
|
|
211
|
+
}),
|
|
252
212
|
),
|
|
253
|
-
).then((logs) =>
|
|
254
|
-
const result: SyncLog[] = [];
|
|
255
|
-
for (const _logs of logs) {
|
|
256
|
-
for (const log of _logs) {
|
|
257
|
-
result.push(log);
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
return result;
|
|
261
|
-
});
|
|
213
|
+
).then((logs) => logs.flat());
|
|
262
214
|
|
|
263
215
|
/**
|
|
264
216
|
* Dynamically increase the range used in "eth_getLogs" if an
|
|
@@ -483,13 +435,18 @@ export const createHistoricalSync = (
|
|
|
483
435
|
if (filter.type !== "log") continue;
|
|
484
436
|
|
|
485
437
|
const hasAddress = filter.address !== undefined;
|
|
486
|
-
const hasTopic1 = filter.topic1 !== undefined;
|
|
487
|
-
const hasTopic2 = filter.topic2 !== undefined;
|
|
488
|
-
const hasTopic3 = filter.topic3 !== undefined;
|
|
438
|
+
const hasTopic1 = filter.topic1 !== undefined && filter.topic1 !== null;
|
|
439
|
+
const hasTopic2 = filter.topic2 !== undefined && filter.topic2 !== null;
|
|
440
|
+
const hasTopic3 = filter.topic3 !== undefined && filter.topic3 !== null;
|
|
489
441
|
|
|
490
442
|
if (hasAddress === false || hasTopic1 || hasTopic2 || hasTopic3) {
|
|
491
443
|
if (isAddressFactory(filter.address)) {
|
|
492
444
|
const childAddresses = args.childAddresses.get(filter.address.id)!;
|
|
445
|
+
|
|
446
|
+
if (childAddresses.size === 0) {
|
|
447
|
+
continue;
|
|
448
|
+
}
|
|
449
|
+
|
|
493
450
|
singleEthGetLogsParams.push({
|
|
494
451
|
address:
|
|
495
452
|
childAddresses.size >=
|
|
@@ -528,6 +485,11 @@ export const createHistoricalSync = (
|
|
|
528
485
|
if (mergedEthGetLogsParams.has(addressKey) === false) {
|
|
529
486
|
if (isAddressFactory(filter.address)) {
|
|
530
487
|
const childAddresses = args.childAddresses.get(filter.address.id)!;
|
|
488
|
+
|
|
489
|
+
if (childAddresses.size === 0) {
|
|
490
|
+
continue;
|
|
491
|
+
}
|
|
492
|
+
|
|
531
493
|
mergedEthGetLogsParams.set(addressKey, {
|
|
532
494
|
address:
|
|
533
495
|
childAddresses.size >=
|
package/src/sync-store/index.ts
CHANGED
|
@@ -351,11 +351,15 @@ export const createSyncStore = ({
|
|
|
351
351
|
const batchSize = 200;
|
|
352
352
|
|
|
353
353
|
for (let i = 0; i < queries.length; i += batchSize) {
|
|
354
|
+
const batch = queries.slice(i, i + batchSize);
|
|
354
355
|
const _rows = await qb.wrap(
|
|
355
356
|
{ label: "select_intervals" },
|
|
356
|
-
() =>
|
|
357
|
+
() => {
|
|
358
|
+
if (batch.length === 1) return batch[0]!.execute();
|
|
359
|
+
|
|
357
360
|
// @ts-expect-error
|
|
358
|
-
unionAll(...
|
|
361
|
+
return unionAll(...batch);
|
|
362
|
+
},
|
|
359
363
|
context,
|
|
360
364
|
);
|
|
361
365
|
|