ponder 0.11.21 → 0.11.22

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 (123) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/esm/bin/commands/createViews.js +9 -20
  3. package/dist/esm/bin/commands/createViews.js.map +1 -1
  4. package/dist/esm/bin/commands/dev.js +1 -1
  5. package/dist/esm/bin/commands/dev.js.map +1 -1
  6. package/dist/esm/bin/commands/list.js +4 -7
  7. package/dist/esm/bin/commands/list.js.map +1 -1
  8. package/dist/esm/bin/commands/prune.js +9 -21
  9. package/dist/esm/bin/commands/prune.js.map +1 -1
  10. package/dist/esm/bin/commands/serve.js +1 -1
  11. package/dist/esm/bin/commands/serve.js.map +1 -1
  12. package/dist/esm/bin/commands/start.js +3 -3
  13. package/dist/esm/bin/commands/start.js.map +1 -1
  14. package/dist/esm/bin/utils/run.js +159 -180
  15. package/dist/esm/bin/utils/run.js.map +1 -1
  16. package/dist/esm/build/index.js +1 -48
  17. package/dist/esm/build/index.js.map +1 -1
  18. package/dist/esm/build/plugin.js +1 -1
  19. package/dist/esm/client/index.js +9 -13
  20. package/dist/esm/client/index.js.map +1 -1
  21. package/dist/esm/database/index.js +429 -141
  22. package/dist/esm/database/index.js.map +1 -1
  23. package/dist/esm/drizzle/index.js.map +1 -1
  24. package/dist/esm/drizzle/kit/index.js.map +1 -1
  25. package/dist/esm/drizzle/onchain.js +1 -8
  26. package/dist/esm/drizzle/onchain.js.map +1 -1
  27. package/dist/esm/graphql/index.js +16 -19
  28. package/dist/esm/graphql/index.js.map +1 -1
  29. package/dist/esm/graphql/middleware.js +7 -3
  30. package/dist/esm/graphql/middleware.js.map +1 -1
  31. package/dist/esm/indexing-store/cache.js +32 -26
  32. package/dist/esm/indexing-store/cache.js.map +1 -1
  33. package/dist/esm/indexing-store/historical.js +32 -23
  34. package/dist/esm/indexing-store/historical.js.map +1 -1
  35. package/dist/esm/indexing-store/index.js +18 -1
  36. package/dist/esm/indexing-store/index.js.map +1 -1
  37. package/dist/esm/indexing-store/realtime.js +140 -89
  38. package/dist/esm/indexing-store/realtime.js.map +1 -1
  39. package/dist/esm/internal/errors.js +0 -12
  40. package/dist/esm/internal/errors.js.map +1 -1
  41. package/dist/esm/server/index.js +2 -10
  42. package/dist/esm/server/index.js.map +1 -1
  43. package/dist/esm/sync-store/index.js +432 -403
  44. package/dist/esm/sync-store/index.js.map +1 -1
  45. package/dist/esm/utils/wait.js +0 -2
  46. package/dist/esm/utils/wait.js.map +1 -1
  47. package/dist/types/bin/commands/createViews.d.ts.map +1 -1
  48. package/dist/types/bin/commands/list.d.ts.map +1 -1
  49. package/dist/types/bin/commands/prune.d.ts.map +1 -1
  50. package/dist/types/bin/commands/start.d.ts +0 -2
  51. package/dist/types/bin/commands/start.d.ts.map +1 -1
  52. package/dist/types/bin/utils/run.d.ts +1 -1
  53. package/dist/types/bin/utils/run.d.ts.map +1 -1
  54. package/dist/types/build/index.d.ts +1 -1
  55. package/dist/types/build/index.d.ts.map +1 -1
  56. package/dist/types/client/index.d.ts.map +1 -1
  57. package/dist/types/database/index.d.ts +73 -25
  58. package/dist/types/database/index.d.ts.map +1 -1
  59. package/dist/types/drizzle/index.d.ts +3 -2
  60. package/dist/types/drizzle/index.d.ts.map +1 -1
  61. package/dist/types/drizzle/kit/index.d.ts +4 -3
  62. package/dist/types/drizzle/kit/index.d.ts.map +1 -1
  63. package/dist/types/drizzle/onchain.d.ts +5 -12
  64. package/dist/types/drizzle/onchain.d.ts.map +1 -1
  65. package/dist/types/graphql/index.d.ts +4 -2
  66. package/dist/types/graphql/index.d.ts.map +1 -1
  67. package/dist/types/graphql/middleware.d.ts +1 -1
  68. package/dist/types/graphql/middleware.d.ts.map +1 -1
  69. package/dist/types/indexing-store/cache.d.ts +12 -5
  70. package/dist/types/indexing-store/cache.d.ts.map +1 -1
  71. package/dist/types/indexing-store/historical.d.ts +7 -2
  72. package/dist/types/indexing-store/historical.d.ts.map +1 -1
  73. package/dist/types/indexing-store/index.d.ts +2 -4
  74. package/dist/types/indexing-store/index.d.ts.map +1 -1
  75. package/dist/types/indexing-store/realtime.d.ts +3 -1
  76. package/dist/types/indexing-store/realtime.d.ts.map +1 -1
  77. package/dist/types/internal/errors.d.ts +0 -4
  78. package/dist/types/internal/errors.d.ts.map +1 -1
  79. package/dist/types/server/index.d.ts +1 -1
  80. package/dist/types/server/index.d.ts.map +1 -1
  81. package/dist/types/sync/index.d.ts +1 -1
  82. package/dist/types/sync-store/index.d.ts.map +1 -1
  83. package/dist/types/utils/wait.d.ts.map +1 -1
  84. package/package.json +2 -2
  85. package/src/bin/commands/createViews.ts +26 -37
  86. package/src/bin/commands/dev.ts +1 -1
  87. package/src/bin/commands/list.ts +4 -7
  88. package/src/bin/commands/prune.ts +17 -31
  89. package/src/bin/commands/serve.ts +1 -1
  90. package/src/bin/commands/start.ts +3 -4
  91. package/src/bin/utils/run.ts +210 -256
  92. package/src/build/index.ts +2 -53
  93. package/src/build/plugin.ts +1 -1
  94. package/src/client/index.ts +10 -21
  95. package/src/database/index.ts +742 -331
  96. package/src/drizzle/index.ts +3 -2
  97. package/src/drizzle/kit/index.ts +5 -2
  98. package/src/drizzle/onchain.ts +2 -26
  99. package/src/graphql/index.ts +26 -31
  100. package/src/graphql/middleware.ts +7 -5
  101. package/src/indexing-store/cache.ts +52 -35
  102. package/src/indexing-store/historical.ts +40 -28
  103. package/src/indexing-store/index.ts +27 -2
  104. package/src/indexing-store/realtime.ts +220 -176
  105. package/src/internal/errors.ts +0 -9
  106. package/src/server/index.ts +3 -14
  107. package/src/sync-store/index.ts +997 -870
  108. package/src/utils/wait.ts +0 -1
  109. package/dist/esm/database/queryBuilder.js +0 -206
  110. package/dist/esm/database/queryBuilder.js.map +0 -1
  111. package/dist/esm/database/utils.js +0 -100
  112. package/dist/esm/database/utils.js.map +0 -1
  113. package/dist/esm/drizzle/json.js +0 -119
  114. package/dist/esm/drizzle/json.js.map +0 -1
  115. package/dist/types/database/queryBuilder.d.ts +0 -37
  116. package/dist/types/database/queryBuilder.d.ts.map +0 -1
  117. package/dist/types/database/utils.d.ts +0 -25
  118. package/dist/types/database/utils.d.ts.map +0 -1
  119. package/dist/types/drizzle/json.d.ts +0 -51
  120. package/dist/types/drizzle/json.d.ts.map +0 -1
  121. package/src/database/queryBuilder.ts +0 -319
  122. package/src/database/utils.ts +0 -140
  123. package/src/drizzle/json.ts +0 -154
@@ -15,8 +15,6 @@ import type {
15
15
  Schema,
16
16
  SchemaBuild,
17
17
  } from "@/internal/types.js";
18
- import { createPool } from "@/utils/pg.js";
19
- import { createPglite } from "@/utils/pglite.js";
20
18
  import { getNextAvailablePort } from "@/utils/port.js";
21
19
  import type { Result } from "@/utils/result.js";
22
20
  import { serialize } from "@/utils/serialize.js";
@@ -60,7 +58,7 @@ export type Build = {
60
58
  database: Database;
61
59
  }) => Promise<ApiResult>;
62
60
  namespaceCompile: () => Result<NamespaceBuild>;
63
- preCompile: (params: { config: Config }) => Promise<Result<PreBuild>>;
61
+ preCompile: (params: { config: Config }) => Result<PreBuild>;
64
62
  compileSchema: (params: { schema: Schema }) => Result<SchemaBuild>;
65
63
  compileIndexing: (params: {
66
64
  configResult: Extract<ConfigResult, { status: "success" }>["result"];
@@ -357,7 +355,7 @@ export const createBuild = async ({
357
355
  result: { schema, viewsSchema },
358
356
  } as const;
359
357
  },
360
- async preCompile({ config }): Promise<Result<PreBuild>> {
358
+ preCompile({ config }): Result<PreBuild> {
361
359
  const preBuild = safeBuildPre({
362
360
  config,
363
361
  options: common.options,
@@ -372,55 +370,6 @@ export const createBuild = async ({
372
370
  return preBuild;
373
371
  }
374
372
 
375
- // diagnostic query
376
- const dialect = preBuild.databaseConfig.kind;
377
- if (dialect === "pglite") {
378
- const driver = createPglite(preBuild.databaseConfig.options);
379
- try {
380
- await driver.query("SELECT version()");
381
- } catch (e) {
382
- const error = new BuildError(
383
- `Failed to connect to PGlite database. Please check your database connection settings.\n\n${(e as any).message}`,
384
- );
385
- error.stack = undefined;
386
- common.logger.error({
387
- service: "build",
388
- msg: "Failed build",
389
- error,
390
- });
391
- return { status: "error", error };
392
- } finally {
393
- await driver.close();
394
- }
395
- } else if (dialect === "postgres") {
396
- const pool = createPool(
397
- {
398
- ...preBuild.databaseConfig.poolConfig,
399
- application_name: "test",
400
- max: 1,
401
- statement_timeout: 10_000,
402
- },
403
- common.logger,
404
- );
405
-
406
- try {
407
- await pool.query("SELECT version()");
408
- } catch (e) {
409
- const error = new BuildError(
410
- `Failed to connect to database. Please check your database connection settings.\n\n${(e as any).message}`,
411
- );
412
- error.stack = undefined;
413
- common.logger.error({
414
- service: "build",
415
- msg: "Failed build",
416
- error,
417
- });
418
- return { status: "error", error };
419
- } finally {
420
- await pool.end();
421
- }
422
- }
423
-
424
373
  for (const log of preBuild.logs) {
425
374
  common.logger[log.level]({ service: "build", msg: log.msg });
426
375
  }
@@ -37,7 +37,7 @@ for (let i = 0; i < globalThis.PONDER_INDEXING_BUILD.chains.length; i++) {
37
37
  })
38
38
  }
39
39
 
40
- export const db = globalThis.PONDER_DATABASE.readonlyQB();
40
+ export const db = globalThis.PONDER_DATABASE.qb.drizzleReadonly;
41
41
  export { publicClients };
42
42
  `;
43
43
 
@@ -2,7 +2,7 @@ import type { Schema, Status } from "@/internal/types.js";
2
2
  import type { ReadonlyDrizzle } from "@/types/db.js";
3
3
  import { decodeCheckpoint } from "@/utils/checkpoint.js";
4
4
  import { promiseWithResolvers } from "@/utils/promiseWithResolvers.js";
5
- import { type QueryWithTypings, sql } from "drizzle-orm";
5
+ import type { QueryWithTypings } from "drizzle-orm";
6
6
  import type { PgSession } from "drizzle-orm/pg-core";
7
7
  import { createMiddleware } from "hono/factory";
8
8
  import { streamSSE } from "hono/streaming";
@@ -39,7 +39,7 @@ export const client = ({
39
39
 
40
40
  const channel = `${globalThis.PONDER_NAMESPACE_BUILD.schema}_status_channel`;
41
41
 
42
- if (driver.dialect === "pglite") {
42
+ if ("instance" in driver) {
43
43
  driver.instance.query(`LISTEN "${channel}"`).then(() => {
44
44
  driver.instance.onNotification(async () => {
45
45
  statusResolver.resolve();
@@ -47,7 +47,7 @@ export const client = ({
47
47
  });
48
48
  });
49
49
  } else {
50
- const pool = driver.admin;
50
+ const pool = driver.internal;
51
51
 
52
52
  const connectAndListen = async () => {
53
53
  driver.listen = await pool.connect();
@@ -88,7 +88,7 @@ export const client = ({
88
88
  return c.text((error as Error).message, 500);
89
89
  }
90
90
  } else {
91
- const client = await driver.admin.connect();
91
+ const client = await driver.internal.connect();
92
92
 
93
93
  try {
94
94
  await validateQuery(query.sql);
@@ -123,27 +123,16 @@ export const client = ({
123
123
  }
124
124
 
125
125
  if (c.req.path === "/sql/status") {
126
- // Note: This is done to avoid non-browser compatible dependencies
127
-
128
- const checkpoints = (await globalThis.PONDER_DATABASE.readonlyQB()
129
- .execute(
130
- sql`SELECT chain_name, chain_id, latest_checkpoint, safe_checkpoint from _ponder_checkpoint`,
131
- )
132
- .then((res) => res.rows)) as {
133
- chain_name: string;
134
- chain_id: number;
135
- latest_checkpoint: string;
136
- safe_checkpoint: string;
137
- }[];
126
+ const checkpoints = await globalThis.PONDER_DATABASE.getCheckpoints();
138
127
 
139
128
  const status: Status = {};
140
- for (const { chain_name, chain_id, latest_checkpoint } of checkpoints) {
141
- status[chain_name] = {
142
- id: chain_id,
129
+ for (const { chainName, chainId, latestCheckpoint } of checkpoints) {
130
+ status[chainName] = {
131
+ id: chainId,
143
132
  block: {
144
- number: Number(decodeCheckpoint(latest_checkpoint).blockNumber),
133
+ number: Number(decodeCheckpoint(latestCheckpoint).blockNumber),
145
134
  timestamp: Number(
146
- decodeCheckpoint(latest_checkpoint).blockTimestamp,
135
+ decodeCheckpoint(latestCheckpoint).blockTimestamp,
147
136
  ),
148
137
  },
149
138
  };