ponder 0.8.6 → 0.8.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/dist/bin/ponder.js +36 -22
- package/dist/bin/ponder.js.map +1 -1
- package/package.json +1 -1
- package/src/sync/index.ts +1 -0
- package/src/sync-historical/index.ts +1 -0
- package/src/sync-realtime/index.ts +0 -1
- package/src/sync-store/index.ts +36 -16
package/dist/bin/ponder.js
CHANGED
|
@@ -4241,8 +4241,8 @@ var createDatabase = ({
|
|
|
4241
4241
|
for (const log of reversed) {
|
|
4242
4242
|
if (log.operation === 0) {
|
|
4243
4243
|
await tx.deleteFrom(tableName.sql).$call((qb2) => {
|
|
4244
|
-
for (const { sql:
|
|
4245
|
-
qb2 = qb2.where(
|
|
4244
|
+
for (const { sql: sql5 } of primaryKeyColumns) {
|
|
4245
|
+
qb2 = qb2.where(sql5, "=", log[sql5]);
|
|
4246
4246
|
}
|
|
4247
4247
|
return qb2;
|
|
4248
4248
|
}).execute();
|
|
@@ -4251,8 +4251,8 @@ var createDatabase = ({
|
|
|
4251
4251
|
log.checkpoint = void 0;
|
|
4252
4252
|
log.operation = void 0;
|
|
4253
4253
|
await tx.updateTable(tableName.sql).set(log).$call((qb2) => {
|
|
4254
|
-
for (const { sql:
|
|
4255
|
-
qb2 = qb2.where(
|
|
4254
|
+
for (const { sql: sql5 } of primaryKeyColumns) {
|
|
4255
|
+
qb2 = qb2.where(sql5, "=", log[sql5]);
|
|
4256
4256
|
}
|
|
4257
4257
|
return qb2;
|
|
4258
4258
|
}).execute();
|
|
@@ -4261,7 +4261,7 @@ var createDatabase = ({
|
|
|
4261
4261
|
log.checkpoint = void 0;
|
|
4262
4262
|
log.operation = void 0;
|
|
4263
4263
|
await tx.insertInto(tableName.sql).values(log).onConflict(
|
|
4264
|
-
(oc) => oc.columns(primaryKeyColumns.map(({ sql:
|
|
4264
|
+
(oc) => oc.columns(primaryKeyColumns.map(({ sql: sql5 }) => sql5)).doNothing()
|
|
4265
4265
|
).execute();
|
|
4266
4266
|
}
|
|
4267
4267
|
}
|
|
@@ -6563,7 +6563,7 @@ function intervalRange(interval) {
|
|
|
6563
6563
|
}
|
|
6564
6564
|
|
|
6565
6565
|
// src/sync-store/index.ts
|
|
6566
|
-
import { sql as ksql
|
|
6566
|
+
import { sql as ksql } from "kysely";
|
|
6567
6567
|
import {
|
|
6568
6568
|
checksumAddress as checksumAddress2,
|
|
6569
6569
|
hexToBigInt as hexToBigInt2
|
|
@@ -6756,20 +6756,32 @@ var createSyncStore = ({
|
|
|
6756
6756
|
common,
|
|
6757
6757
|
db
|
|
6758
6758
|
}) => ({
|
|
6759
|
-
insertIntervals: async ({ intervals }) => {
|
|
6759
|
+
insertIntervals: async ({ intervals, chainId }) => {
|
|
6760
6760
|
if (intervals.length === 0)
|
|
6761
6761
|
return;
|
|
6762
6762
|
await db.wrap({ method: "insertIntervals" }, async () => {
|
|
6763
|
+
const perFragmentIntervals = /* @__PURE__ */ new Map();
|
|
6763
6764
|
const values = [];
|
|
6764
|
-
for (const {
|
|
6765
|
+
for (const { filter, interval } of intervals) {
|
|
6765
6766
|
for (const fragment of getFragmentIds(filter)) {
|
|
6766
|
-
|
|
6767
|
-
|
|
6768
|
-
|
|
6769
|
-
|
|
6770
|
-
});
|
|
6767
|
+
if (perFragmentIntervals.has(fragment.id) === false) {
|
|
6768
|
+
perFragmentIntervals.set(fragment.id, []);
|
|
6769
|
+
}
|
|
6770
|
+
perFragmentIntervals.get(fragment.id).push(interval);
|
|
6771
6771
|
}
|
|
6772
6772
|
}
|
|
6773
|
+
for (const [fragmentId, intervals2] of perFragmentIntervals) {
|
|
6774
|
+
const numranges = intervals2.map((interval) => {
|
|
6775
|
+
const start2 = interval[0];
|
|
6776
|
+
const end = interval[1] + 1;
|
|
6777
|
+
return `numrange(${start2}, ${end}, '[]')`;
|
|
6778
|
+
}).join(", ");
|
|
6779
|
+
values.push({
|
|
6780
|
+
fragment_id: fragmentId,
|
|
6781
|
+
chain_id: chainId,
|
|
6782
|
+
blocks: ksql.raw(`nummultirange(${numranges})`)
|
|
6783
|
+
});
|
|
6784
|
+
}
|
|
6773
6785
|
await db.insertInto("intervals").values(values).onConflict(
|
|
6774
6786
|
(oc) => oc.column("fragment_id").doUpdateSet({
|
|
6775
6787
|
blocks: ksql`intervals.blocks + excluded.blocks`
|
|
@@ -6784,10 +6796,10 @@ var createSyncStore = ({
|
|
|
6784
6796
|
const fragments = getFragmentIds(filter);
|
|
6785
6797
|
for (const fragment of fragments) {
|
|
6786
6798
|
const _query = db.selectFrom(
|
|
6787
|
-
db.selectFrom("intervals").select(
|
|
6799
|
+
db.selectFrom("intervals").select(ksql`unnest(blocks)`.as("blocks")).where("fragment_id", "in", fragment.adjacent).as("unnested")
|
|
6788
6800
|
).select([
|
|
6789
|
-
|
|
6790
|
-
|
|
6801
|
+
ksql`range_agg(unnested.blocks)`.as("merged_blocks"),
|
|
6802
|
+
ksql.raw(`'${i}'`).as("filter")
|
|
6791
6803
|
]);
|
|
6792
6804
|
query2 = query2 === void 0 ? _query : query2.unionAll(_query);
|
|
6793
6805
|
}
|
|
@@ -7020,7 +7032,7 @@ var createSyncStore = ({
|
|
|
7020
7032
|
db2.selectFrom("transactionReceipts").select("status").where(
|
|
7021
7033
|
"transactionReceipts.transactionHash",
|
|
7022
7034
|
"=",
|
|
7023
|
-
|
|
7035
|
+
ksql.ref("transactions.hash")
|
|
7024
7036
|
),
|
|
7025
7037
|
"=",
|
|
7026
7038
|
"0x1"
|
|
@@ -7299,7 +7311,7 @@ var createSyncStore = ({
|
|
|
7299
7311
|
).execute();
|
|
7300
7312
|
}),
|
|
7301
7313
|
getRpcRequestResult: async ({ request, chainId }) => db.wrap({ method: "getRpcRequestResult" }, async () => {
|
|
7302
|
-
const result = await db.selectFrom("rpc_request_results").select("result").where("request_hash", "=",
|
|
7314
|
+
const result = await db.selectFrom("rpc_request_results").select("result").where("request_hash", "=", ksql`MD5(${request})`).where("chain_id", "=", chainId).executeTakeFirst();
|
|
7303
7315
|
return result?.result;
|
|
7304
7316
|
}),
|
|
7305
7317
|
pruneRpcRequestResult: async ({ blocks, chainId }) => db.wrap({ method: "pruneRpcRequestResult" }, async () => {
|
|
@@ -8660,7 +8672,8 @@ var createHistoricalSync = async (args) => {
|
|
|
8660
8672
|
]);
|
|
8661
8673
|
if (args.network.disableCache === false) {
|
|
8662
8674
|
await args.syncStore.insertIntervals({
|
|
8663
|
-
intervals: syncedIntervals
|
|
8675
|
+
intervals: syncedIntervals,
|
|
8676
|
+
chainId: args.network.chainId
|
|
8664
8677
|
});
|
|
8665
8678
|
}
|
|
8666
8679
|
blockCache.clear();
|
|
@@ -10119,7 +10132,8 @@ var createSync = async (args) => {
|
|
|
10119
10132
|
]);
|
|
10120
10133
|
if (network.disableCache === false) {
|
|
10121
10134
|
await args.syncStore.insertIntervals({
|
|
10122
|
-
intervals: args.sources.filter(({ filter }) => filter.chainId === network.chainId).map(({ filter }) => ({ filter, interval }))
|
|
10135
|
+
intervals: args.sources.filter(({ filter }) => filter.chainId === network.chainId).map(({ filter }) => ({ filter, interval })),
|
|
10136
|
+
chainId: network.chainId
|
|
10123
10137
|
});
|
|
10124
10138
|
}
|
|
10125
10139
|
if (isSyncEnd(syncProgress)) {
|
|
@@ -11006,7 +11020,7 @@ async function dev({ cliOptions }) {
|
|
|
11006
11020
|
}
|
|
11007
11021
|
|
|
11008
11022
|
// src/bin/commands/list.ts
|
|
11009
|
-
import { sql as
|
|
11023
|
+
import { sql as sql4 } from "kysely";
|
|
11010
11024
|
var emptySchemaBuild = {
|
|
11011
11025
|
schema: {},
|
|
11012
11026
|
statements: {
|
|
@@ -11053,7 +11067,7 @@ async function list({ cliOptions }) {
|
|
|
11053
11067
|
).execute();
|
|
11054
11068
|
let union;
|
|
11055
11069
|
for (const row of ponderSchemas) {
|
|
11056
|
-
const query2 = database.qb.internal.selectFrom(`${row.table_schema}._ponder_meta`).select(["value",
|
|
11070
|
+
const query2 = database.qb.internal.selectFrom(`${row.table_schema}._ponder_meta`).select(["value", sql4`${row.table_schema}`.as("schema")]).where("key", "=", "app");
|
|
11057
11071
|
if (union === void 0) {
|
|
11058
11072
|
union = query2;
|
|
11059
11073
|
} else {
|