ponder 0.14.13 → 0.15.0
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 +16 -0
- package/dist/esm/bin/commands/createViews.js +28 -11
- package/dist/esm/bin/commands/createViews.js.map +1 -1
- package/dist/esm/bin/commands/dev.js +42 -22
- package/dist/esm/bin/commands/dev.js.map +1 -1
- package/dist/esm/bin/commands/prune.js +3 -0
- package/dist/esm/bin/commands/prune.js.map +1 -1
- package/dist/esm/bin/commands/serve.js +4 -1
- package/dist/esm/bin/commands/serve.js.map +1 -1
- package/dist/esm/bin/commands/start.js +18 -6
- package/dist/esm/bin/commands/start.js.map +1 -1
- package/dist/esm/bin/isolatedController.js +200 -0
- package/dist/esm/bin/isolatedController.js.map +1 -0
- package/dist/esm/bin/isolatedWorker.js +146 -0
- package/dist/esm/bin/isolatedWorker.js.map +1 -0
- package/dist/esm/build/config.js +322 -402
- package/dist/esm/build/config.js.map +1 -1
- package/dist/esm/build/index.js +8 -11
- package/dist/esm/build/index.js.map +1 -1
- package/dist/esm/build/pre.js +1 -4
- package/dist/esm/build/pre.js.map +1 -1
- package/dist/esm/build/schema.js +25 -3
- package/dist/esm/build/schema.js.map +1 -1
- package/dist/esm/client/index.js +306 -42
- package/dist/esm/client/index.js.map +1 -1
- package/dist/esm/database/actions.js +264 -104
- package/dist/esm/database/actions.js.map +1 -1
- package/dist/esm/database/index.js +39 -33
- package/dist/esm/database/index.js.map +1 -1
- package/dist/esm/database/queryBuilder.js +1 -0
- package/dist/esm/database/queryBuilder.js.map +1 -1
- package/dist/esm/drizzle/index.js +11 -7
- package/dist/esm/drizzle/index.js.map +1 -1
- package/dist/esm/drizzle/onchain.js +18 -0
- package/dist/esm/drizzle/onchain.js.map +1 -1
- package/dist/esm/indexing/client.js +32 -25
- package/dist/esm/indexing/client.js.map +1 -1
- package/dist/esm/indexing/index.js +110 -178
- package/dist/esm/indexing/index.js.map +1 -1
- package/dist/esm/indexing/profile.js +1 -1
- package/dist/esm/indexing/profile.js.map +1 -1
- package/dist/esm/indexing-store/cache.js +196 -274
- package/dist/esm/indexing-store/cache.js.map +1 -1
- package/dist/esm/indexing-store/historical.js +17 -13
- package/dist/esm/indexing-store/historical.js.map +1 -1
- package/dist/esm/indexing-store/index.js +10 -1
- package/dist/esm/indexing-store/index.js.map +1 -1
- package/dist/esm/indexing-store/profile.js +3 -3
- package/dist/esm/indexing-store/profile.js.map +1 -1
- package/dist/esm/indexing-store/realtime.js +27 -2
- package/dist/esm/indexing-store/realtime.js.map +1 -1
- package/dist/esm/internal/errors.js +28 -0
- package/dist/esm/internal/errors.js.map +1 -1
- package/dist/esm/internal/metrics.js +279 -82
- package/dist/esm/internal/metrics.js.map +1 -1
- package/dist/esm/internal/options.js +1 -0
- package/dist/esm/internal/options.js.map +1 -1
- package/dist/esm/internal/telemetry.js +1 -1
- package/dist/esm/internal/telemetry.js.map +1 -1
- package/dist/esm/rpc/http.js +130 -0
- package/dist/esm/rpc/http.js.map +1 -0
- package/dist/esm/rpc/index.js +38 -7
- package/dist/esm/rpc/index.js.map +1 -1
- package/dist/esm/runtime/events.js +179 -212
- package/dist/esm/runtime/events.js.map +1 -1
- package/dist/esm/runtime/filter.js +71 -0
- package/dist/esm/runtime/filter.js.map +1 -1
- package/dist/esm/runtime/fragments.js +78 -73
- package/dist/esm/runtime/fragments.js.map +1 -1
- package/dist/esm/runtime/historical.js +306 -130
- package/dist/esm/runtime/historical.js.map +1 -1
- package/dist/esm/runtime/index.js +183 -58
- package/dist/esm/runtime/index.js.map +1 -1
- package/dist/esm/runtime/isolated.js +462 -0
- package/dist/esm/runtime/isolated.js.map +1 -0
- package/dist/esm/runtime/multichain.js +80 -73
- package/dist/esm/runtime/multichain.js.map +1 -1
- package/dist/esm/runtime/omnichain.js +82 -75
- package/dist/esm/runtime/omnichain.js.map +1 -1
- package/dist/esm/runtime/realtime.js +198 -66
- package/dist/esm/runtime/realtime.js.map +1 -1
- package/dist/esm/sync-historical/index.js +416 -457
- package/dist/esm/sync-historical/index.js.map +1 -1
- package/dist/esm/sync-realtime/bloom.js +3 -3
- package/dist/esm/sync-realtime/bloom.js.map +1 -1
- package/dist/esm/sync-realtime/index.js +27 -46
- package/dist/esm/sync-realtime/index.js.map +1 -1
- package/dist/esm/sync-store/index.js +112 -63
- package/dist/esm/sync-store/index.js.map +1 -1
- package/dist/esm/utils/abi.js +20 -32
- package/dist/esm/utils/abi.js.map +1 -1
- package/dist/esm/utils/chunk.js +8 -0
- package/dist/esm/utils/chunk.js.map +1 -0
- package/dist/esm/utils/promiseAllSettledWithThrow.js +19 -0
- package/dist/esm/utils/promiseAllSettledWithThrow.js.map +1 -0
- package/dist/esm/{client/parse.js → utils/sql-parse.js} +94 -80
- package/dist/esm/utils/sql-parse.js.map +1 -0
- package/dist/types/bin/commands/createViews.d.ts.map +1 -1
- package/dist/types/bin/commands/dev.d.ts.map +1 -1
- package/dist/types/bin/commands/prune.d.ts.map +1 -1
- package/dist/types/bin/commands/serve.d.ts.map +1 -1
- package/dist/types/bin/commands/start.d.ts.map +1 -1
- package/dist/types/bin/isolatedController.d.ts +13 -0
- package/dist/types/bin/isolatedController.d.ts.map +1 -0
- package/dist/types/bin/isolatedWorker.d.ts +9 -0
- package/dist/types/bin/isolatedWorker.d.ts.map +1 -0
- package/dist/types/build/config.d.ts +29 -11
- package/dist/types/build/config.d.ts.map +1 -1
- package/dist/types/build/index.d.ts +3 -2
- package/dist/types/build/index.d.ts.map +1 -1
- package/dist/types/build/pre.d.ts +1 -1
- package/dist/types/build/pre.d.ts.map +1 -1
- package/dist/types/build/schema.d.ts +5 -3
- package/dist/types/build/schema.d.ts.map +1 -1
- package/dist/types/client/index.d.ts +1 -1
- package/dist/types/client/index.d.ts.map +1 -1
- package/dist/types/config/index.d.ts +3 -3
- package/dist/types/config/index.d.ts.map +1 -1
- package/dist/types/database/actions.d.ts +53 -7
- package/dist/types/database/actions.d.ts.map +1 -1
- package/dist/types/database/index.d.ts +21 -21
- package/dist/types/database/index.d.ts.map +1 -1
- package/dist/types/database/queryBuilder.d.ts.map +1 -1
- package/dist/types/drizzle/index.d.ts +4 -5
- package/dist/types/drizzle/index.d.ts.map +1 -1
- package/dist/types/drizzle/onchain.d.ts +6 -0
- package/dist/types/drizzle/onchain.d.ts.map +1 -1
- package/dist/types/indexing/client.d.ts.map +1 -1
- package/dist/types/indexing/index.d.ts +2 -5
- package/dist/types/indexing/index.d.ts.map +1 -1
- package/dist/types/indexing-store/cache.d.ts +3 -2
- package/dist/types/indexing-store/cache.d.ts.map +1 -1
- package/dist/types/indexing-store/historical.d.ts +2 -1
- package/dist/types/indexing-store/historical.d.ts.map +1 -1
- package/dist/types/indexing-store/index.d.ts +1 -0
- package/dist/types/indexing-store/index.d.ts.map +1 -1
- package/dist/types/indexing-store/realtime.d.ts +2 -1
- package/dist/types/indexing-store/realtime.d.ts.map +1 -1
- package/dist/types/internal/errors.d.ts +5 -0
- package/dist/types/internal/errors.d.ts.map +1 -1
- package/dist/types/internal/metrics.d.ts +21 -0
- package/dist/types/internal/metrics.d.ts.map +1 -1
- package/dist/types/internal/options.d.ts +2 -0
- package/dist/types/internal/options.d.ts.map +1 -1
- package/dist/types/internal/types.d.ts +66 -58
- package/dist/types/internal/types.d.ts.map +1 -1
- package/dist/types/rpc/http.d.ts +17 -0
- package/dist/types/rpc/http.d.ts.map +1 -0
- package/dist/types/rpc/index.d.ts.map +1 -1
- package/dist/types/runtime/events.d.ts +4 -4
- package/dist/types/runtime/events.d.ts.map +1 -1
- package/dist/types/runtime/filter.d.ts +5 -1
- package/dist/types/runtime/filter.d.ts.map +1 -1
- package/dist/types/runtime/fragments.d.ts +4 -3
- package/dist/types/runtime/fragments.d.ts.map +1 -1
- package/dist/types/runtime/historical.d.ts +29 -13
- package/dist/types/runtime/historical.d.ts.map +1 -1
- package/dist/types/runtime/index.d.ts +49 -6
- package/dist/types/runtime/index.d.ts.map +1 -1
- package/dist/types/runtime/init.d.ts +5 -5
- package/dist/types/runtime/init.d.ts.map +1 -1
- package/dist/types/runtime/isolated.d.ts +14 -0
- package/dist/types/runtime/isolated.d.ts.map +1 -0
- package/dist/types/runtime/multichain.d.ts.map +1 -1
- package/dist/types/runtime/omnichain.d.ts.map +1 -1
- package/dist/types/runtime/realtime.d.ts +21 -10
- package/dist/types/runtime/realtime.d.ts.map +1 -1
- package/dist/types/sync-historical/index.d.ts +18 -8
- package/dist/types/sync-historical/index.d.ts.map +1 -1
- package/dist/types/sync-realtime/bloom.d.ts.map +1 -1
- package/dist/types/sync-realtime/index.d.ts +2 -2
- package/dist/types/sync-realtime/index.d.ts.map +1 -1
- package/dist/types/sync-store/index.d.ts +9 -9
- package/dist/types/sync-store/index.d.ts.map +1 -1
- package/dist/types/utils/abi.d.ts +3 -34
- package/dist/types/utils/abi.d.ts.map +1 -1
- package/dist/types/utils/chunk.d.ts +2 -0
- package/dist/types/utils/chunk.d.ts.map +1 -0
- package/dist/types/utils/promiseAllSettledWithThrow.d.ts +8 -0
- package/dist/types/utils/promiseAllSettledWithThrow.d.ts.map +1 -0
- package/dist/types/utils/sql-parse.d.ts +21 -0
- package/dist/types/utils/sql-parse.d.ts.map +1 -0
- package/package.json +2 -2
- package/src/bin/commands/createViews.ts +35 -15
- package/src/bin/commands/dev.ts +43 -21
- package/src/bin/commands/prune.ts +6 -0
- package/src/bin/commands/serve.ts +4 -1
- package/src/bin/commands/start.ts +20 -5
- package/src/bin/isolatedController.ts +300 -0
- package/src/bin/isolatedWorker.ts +192 -0
- package/src/build/config.ts +570 -632
- package/src/build/index.ts +14 -14
- package/src/build/pre.ts +1 -4
- package/src/build/schema.ts +49 -4
- package/src/client/index.ts +386 -48
- package/src/config/index.ts +3 -3
- package/src/database/actions.ts +469 -120
- package/src/database/index.ts +85 -58
- package/src/database/queryBuilder.ts +1 -0
- package/src/drizzle/index.ts +15 -7
- package/src/drizzle/onchain.ts +19 -0
- package/src/indexing/client.ts +38 -25
- package/src/indexing/index.ts +137 -230
- package/src/indexing/profile.ts +1 -1
- package/src/indexing-store/cache.ts +285 -414
- package/src/indexing-store/historical.ts +20 -10
- package/src/indexing-store/index.ts +16 -0
- package/src/indexing-store/profile.ts +3 -3
- package/src/indexing-store/realtime.ts +28 -0
- package/src/internal/errors.ts +26 -0
- package/src/internal/metrics.ts +341 -111
- package/src/internal/options.ts +4 -0
- package/src/internal/telemetry.ts +1 -1
- package/src/internal/types.ts +70 -87
- package/src/rpc/http.ts +164 -0
- package/src/rpc/index.ts +39 -7
- package/src/runtime/events.ts +195 -240
- package/src/runtime/filter.ts +85 -1
- package/src/runtime/fragments.ts +109 -113
- package/src/runtime/historical.ts +467 -189
- package/src/runtime/index.ts +337 -69
- package/src/runtime/init.ts +5 -5
- package/src/runtime/isolated.ts +768 -0
- package/src/runtime/multichain.ts +137 -102
- package/src/runtime/omnichain.ts +138 -106
- package/src/runtime/realtime.ts +322 -123
- package/src/sync-historical/index.ts +556 -692
- package/src/sync-realtime/bloom.ts +7 -3
- package/src/sync-realtime/index.ts +31 -46
- package/src/sync-store/index.ts +189 -95
- package/src/utils/abi.ts +33 -90
- package/src/utils/chunk.ts +7 -0
- package/src/utils/promiseAllSettledWithThrow.ts +27 -0
- package/src/{client/parse.ts → utils/sql-parse.ts} +100 -90
- package/dist/esm/client/parse.js.map +0 -1
- package/dist/types/client/parse.d.ts +0 -14
- package/dist/types/client/parse.d.ts.map +0 -1
package/src/build/index.ts
CHANGED
|
@@ -10,9 +10,9 @@ import { BuildError, RetryableError } from "@/internal/errors.js";
|
|
|
10
10
|
import type {
|
|
11
11
|
ApiBuild,
|
|
12
12
|
IndexingBuild,
|
|
13
|
+
IndexingFunctions,
|
|
13
14
|
NamespaceBuild,
|
|
14
15
|
PreBuild,
|
|
15
|
-
RawIndexingFunctions,
|
|
16
16
|
Schema,
|
|
17
17
|
SchemaBuild,
|
|
18
18
|
} from "@/internal/types.js";
|
|
@@ -51,7 +51,7 @@ const BUILD_ID_VERSION = "2";
|
|
|
51
51
|
type ConfigResult = Result<{ config: Config; contentHash: string }>;
|
|
52
52
|
type SchemaResult = Result<{ schema: Schema; contentHash: string }>;
|
|
53
53
|
type IndexingResult = Result<{
|
|
54
|
-
indexingFunctions:
|
|
54
|
+
indexingFunctions: IndexingFunctions;
|
|
55
55
|
contentHash: string;
|
|
56
56
|
}>;
|
|
57
57
|
type ApiResult = Result<{ app: Hono }>;
|
|
@@ -66,7 +66,10 @@ export type Build = {
|
|
|
66
66
|
}) => Promise<ApiResult>;
|
|
67
67
|
namespaceCompile: () => Result<NamespaceBuild>;
|
|
68
68
|
preCompile: (params: { config: Config }) => Result<PreBuild>;
|
|
69
|
-
compileSchema: (params: {
|
|
69
|
+
compileSchema: (params: {
|
|
70
|
+
schema: Schema;
|
|
71
|
+
preBuild: PreBuild;
|
|
72
|
+
}) => Result<SchemaBuild>;
|
|
70
73
|
compileConfig: (params: {
|
|
71
74
|
configResult: Extract<ConfigResult, { status: "success" }>["result"];
|
|
72
75
|
}) => Result<Pick<IndexingBuild, "chains" | "rpcs">>;
|
|
@@ -356,10 +359,7 @@ export const createBuild = async ({
|
|
|
356
359
|
} as const;
|
|
357
360
|
},
|
|
358
361
|
preCompile({ config }): Result<PreBuild> {
|
|
359
|
-
const preBuild = safeBuildPre({
|
|
360
|
-
config,
|
|
361
|
-
options: common.options,
|
|
362
|
-
});
|
|
362
|
+
const preBuild = safeBuildPre({ config, options: common.options });
|
|
363
363
|
if (preBuild.status === "error") {
|
|
364
364
|
return preBuild;
|
|
365
365
|
}
|
|
@@ -372,10 +372,8 @@ export const createBuild = async ({
|
|
|
372
372
|
},
|
|
373
373
|
} as const;
|
|
374
374
|
},
|
|
375
|
-
compileSchema({ schema }) {
|
|
376
|
-
const buildSchemaResult = safeBuildSchema({
|
|
377
|
-
schema,
|
|
378
|
-
});
|
|
375
|
+
compileSchema({ schema, preBuild }) {
|
|
376
|
+
const buildSchemaResult = safeBuildSchema({ schema, preBuild });
|
|
379
377
|
|
|
380
378
|
if (buildSchemaResult.status === "error") {
|
|
381
379
|
return buildSchemaResult;
|
|
@@ -422,7 +420,7 @@ export const createBuild = async ({
|
|
|
422
420
|
const buildIndexingFunctionsResult = await safeBuildIndexingFunctions({
|
|
423
421
|
common,
|
|
424
422
|
config: configResult.config,
|
|
425
|
-
|
|
423
|
+
indexingFunctions: indexingResult.indexingFunctions,
|
|
426
424
|
configBuild,
|
|
427
425
|
});
|
|
428
426
|
if (buildIndexingFunctionsResult.status === "error") {
|
|
@@ -446,11 +444,13 @@ export const createBuild = async ({
|
|
|
446
444
|
status: "success",
|
|
447
445
|
result: {
|
|
448
446
|
buildId,
|
|
449
|
-
sources: buildIndexingFunctionsResult.sources,
|
|
450
447
|
chains: buildIndexingFunctionsResult.chains,
|
|
451
448
|
rpcs: buildIndexingFunctionsResult.rpcs,
|
|
452
449
|
finalizedBlocks: buildIndexingFunctionsResult.finalizedBlocks,
|
|
453
|
-
|
|
450
|
+
eventCallbacks: buildIndexingFunctionsResult.eventCallbacks,
|
|
451
|
+
setupCallbacks: buildIndexingFunctionsResult.setupCallbacks,
|
|
452
|
+
contracts: buildIndexingFunctionsResult.contracts,
|
|
453
|
+
indexingFunctions: indexingResult.indexingFunctions,
|
|
454
454
|
},
|
|
455
455
|
} as const;
|
|
456
456
|
},
|
package/src/build/pre.ts
CHANGED
package/src/build/schema.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import { getPrimaryKeyColumns } from "@/drizzle/index.js";
|
|
1
2
|
import { getSql } from "@/drizzle/kit/index.js";
|
|
2
3
|
import { BuildError } from "@/internal/errors.js";
|
|
3
|
-
import type { Schema } from "@/internal/types.js";
|
|
4
|
+
import type { PreBuild, Schema } from "@/internal/types.js";
|
|
4
5
|
import {
|
|
5
6
|
SQL,
|
|
6
7
|
getTableColumns,
|
|
@@ -21,7 +22,10 @@ import {
|
|
|
21
22
|
getViewConfig,
|
|
22
23
|
} from "drizzle-orm/pg-core";
|
|
23
24
|
|
|
24
|
-
export const buildSchema = ({
|
|
25
|
+
export const buildSchema = ({
|
|
26
|
+
schema,
|
|
27
|
+
preBuild,
|
|
28
|
+
}: { schema: Schema; preBuild: Pick<PreBuild, "ordering"> }) => {
|
|
25
29
|
const statements = getSql(schema);
|
|
26
30
|
|
|
27
31
|
const tableNames = new Set<string>();
|
|
@@ -31,6 +35,7 @@ export const buildSchema = ({ schema }: { schema: Schema }) => {
|
|
|
31
35
|
for (const [name, s] of Object.entries(schema)) {
|
|
32
36
|
if (is(s, PgTable)) {
|
|
33
37
|
let hasPrimaryKey = false;
|
|
38
|
+
let hasChainIdColumn = false;
|
|
34
39
|
|
|
35
40
|
for (const [columnName, column] of Object.entries(getTableColumns(s))) {
|
|
36
41
|
if (column.primary) {
|
|
@@ -91,6 +96,37 @@ export const buildSchema = ({ schema }: { schema: Schema }) => {
|
|
|
91
96
|
);
|
|
92
97
|
}
|
|
93
98
|
}
|
|
99
|
+
|
|
100
|
+
// TODO(kyle) It is an invariant that `getColumnCasing(column, "snake_case") === column.name`
|
|
101
|
+
if (columnName === "chainId" && column.name === "chain_id") {
|
|
102
|
+
hasChainIdColumn = true;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
if (preBuild.ordering === "experimental_isolated") {
|
|
107
|
+
if (hasChainIdColumn === false) {
|
|
108
|
+
throw new Error(
|
|
109
|
+
`Schema validation failed: '${name}' does not have required 'chainId' column.`,
|
|
110
|
+
);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
if (
|
|
114
|
+
getTableColumns(s).chainId!.dataType !== "number" &&
|
|
115
|
+
getTableColumns(s).chainId!.dataType !== "bigint"
|
|
116
|
+
) {
|
|
117
|
+
throw new Error(
|
|
118
|
+
`Schema validation failed: '${name}'.chainId column must be an integer or numeric.`,
|
|
119
|
+
);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
if (
|
|
123
|
+
getPrimaryKeyColumns(s).some(({ sql }) => sql === "chain_id") ===
|
|
124
|
+
false
|
|
125
|
+
) {
|
|
126
|
+
throw new Error(
|
|
127
|
+
`Schema validation failed: '${name}.chain_id' column is required to be in the primary key when ordering is 'isolated'.`,
|
|
128
|
+
);
|
|
129
|
+
}
|
|
94
130
|
}
|
|
95
131
|
|
|
96
132
|
if (tableNames.has(getTableName(s))) {
|
|
@@ -180,6 +216,12 @@ export const buildSchema = ({ schema }: { schema: Schema }) => {
|
|
|
180
216
|
);
|
|
181
217
|
}
|
|
182
218
|
|
|
219
|
+
if (viewConfig.query === undefined) {
|
|
220
|
+
throw new Error(
|
|
221
|
+
`Schema validation failed: view '${getViewName(s)}' has no underlying query.`,
|
|
222
|
+
);
|
|
223
|
+
}
|
|
224
|
+
|
|
183
225
|
if (viewConfig)
|
|
184
226
|
for (const [columnName, column] of Object.entries(
|
|
185
227
|
viewConfig.selectedFields,
|
|
@@ -225,9 +267,12 @@ export const buildSchema = ({ schema }: { schema: Schema }) => {
|
|
|
225
267
|
return { statements };
|
|
226
268
|
};
|
|
227
269
|
|
|
228
|
-
export const safeBuildSchema = ({
|
|
270
|
+
export const safeBuildSchema = ({
|
|
271
|
+
schema,
|
|
272
|
+
preBuild,
|
|
273
|
+
}: { schema: Schema; preBuild: Pick<PreBuild, "ordering"> }) => {
|
|
229
274
|
try {
|
|
230
|
-
const result = buildSchema({ schema });
|
|
275
|
+
const result = buildSchema({ schema, preBuild });
|
|
231
276
|
|
|
232
277
|
return {
|
|
233
278
|
status: "success",
|