@hugomrdias/foxer 0.0.1
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/README.md +56 -0
- package/dist/src/api/index.d.ts +2 -0
- package/dist/src/api/index.d.ts.map +1 -0
- package/dist/src/api/index.js +2 -0
- package/dist/src/api/index.js.map +1 -0
- package/dist/src/api/runner.d.ts +12 -0
- package/dist/src/api/runner.d.ts.map +1 -0
- package/dist/src/api/runner.js +29 -0
- package/dist/src/api/runner.js.map +1 -0
- package/dist/src/api/server.d.ts +18 -0
- package/dist/src/api/server.d.ts.map +1 -0
- package/dist/src/api/server.js +21 -0
- package/dist/src/api/server.js.map +1 -0
- package/dist/src/api/sql-middleware.d.ts +7 -0
- package/dist/src/api/sql-middleware.d.ts.map +1 -0
- package/dist/src/api/sql-middleware.js +95 -0
- package/dist/src/api/sql-middleware.js.map +1 -0
- package/dist/src/api/sql.d.ts +14 -0
- package/dist/src/api/sql.d.ts.map +1 -0
- package/dist/src/api/sql.js +108 -0
- package/dist/src/api/sql.js.map +1 -0
- package/dist/src/api/sse.d.ts +3 -0
- package/dist/src/api/sse.d.ts.map +1 -0
- package/dist/src/api/sse.js +11 -0
- package/dist/src/api/sse.js.map +1 -0
- package/dist/src/bin/dev.d.ts +3 -0
- package/dist/src/bin/dev.d.ts.map +1 -0
- package/dist/src/bin/dev.js +76 -0
- package/dist/src/bin/dev.js.map +1 -0
- package/dist/src/bin/flags.d.ts +32 -0
- package/dist/src/bin/flags.d.ts.map +1 -0
- package/dist/src/bin/flags.js +55 -0
- package/dist/src/bin/flags.js.map +1 -0
- package/dist/src/bin/index.d.ts +3 -0
- package/dist/src/bin/index.d.ts.map +1 -0
- package/dist/src/bin/index.js +22 -0
- package/dist/src/bin/index.js.map +1 -0
- package/dist/src/bin/utils.d.ts +4 -0
- package/dist/src/bin/utils.d.ts.map +1 -0
- package/dist/src/bin/utils.js +52 -0
- package/dist/src/bin/utils.js.map +1 -0
- package/dist/src/client/index.d.ts +18 -0
- package/dist/src/client/index.d.ts.map +1 -0
- package/dist/src/client/index.js +150 -0
- package/dist/src/client/index.js.map +1 -0
- package/dist/src/config/config.d.ts +157 -0
- package/dist/src/config/config.d.ts.map +1 -0
- package/dist/src/config/config.js +65 -0
- package/dist/src/config/config.js.map +1 -0
- package/dist/src/config/env.d.ts +25 -0
- package/dist/src/config/env.d.ts.map +1 -0
- package/dist/src/config/env.js +21 -0
- package/dist/src/config/env.js.map +1 -0
- package/dist/src/contants.d.ts +4 -0
- package/dist/src/contants.d.ts.map +1 -0
- package/dist/src/contants.js +4 -0
- package/dist/src/contants.js.map +1 -0
- package/dist/src/db/actions/blocks.d.ts +44 -0
- package/dist/src/db/actions/blocks.d.ts.map +1 -0
- package/dist/src/db/actions/blocks.js +152 -0
- package/dist/src/db/actions/blocks.js.map +1 -0
- package/dist/src/db/actions/index.d.ts +2 -0
- package/dist/src/db/actions/index.d.ts.map +1 -0
- package/dist/src/db/actions/index.js +2 -0
- package/dist/src/db/actions/index.js.map +1 -0
- package/dist/src/db/actions/transactions.d.ts +11 -0
- package/dist/src/db/actions/transactions.d.ts.map +1 -0
- package/dist/src/db/actions/transactions.js +22 -0
- package/dist/src/db/actions/transactions.js.map +1 -0
- package/dist/src/db/client.d.ts +329 -0
- package/dist/src/db/client.d.ts.map +1 -0
- package/dist/src/db/client.js +108 -0
- package/dist/src/db/client.js.map +1 -0
- package/dist/src/db/column-types.d.ts +132 -0
- package/dist/src/db/column-types.d.ts.map +1 -0
- package/dist/src/db/column-types.js +86 -0
- package/dist/src/db/column-types.js.map +1 -0
- package/dist/src/db/encode.d.ts +10 -0
- package/dist/src/db/encode.d.ts.map +1 -0
- package/dist/src/db/encode.js +79 -0
- package/dist/src/db/encode.js.map +1 -0
- package/dist/src/db/migrate.d.ts +31 -0
- package/dist/src/db/migrate.d.ts.map +1 -0
- package/dist/src/db/migrate.js +147 -0
- package/dist/src/db/migrate.js.map +1 -0
- package/dist/src/db/schema/blocks.d.ts +369 -0
- package/dist/src/db/schema/blocks.d.ts.map +1 -0
- package/dist/src/db/schema/blocks.js +24 -0
- package/dist/src/db/schema/blocks.js.map +1 -0
- package/dist/src/db/schema/index.d.ts +1415 -0
- package/dist/src/db/schema/index.d.ts.map +1 -0
- package/dist/src/db/schema/index.js +18 -0
- package/dist/src/db/schema/index.js.map +1 -0
- package/dist/src/db/schema/transactions.d.ts +336 -0
- package/dist/src/db/schema/transactions.d.ts.map +1 -0
- package/dist/src/db/schema/transactions.js +33 -0
- package/dist/src/db/schema/transactions.js.map +1 -0
- package/dist/src/db/transaction.d.ts +7 -0
- package/dist/src/db/transaction.d.ts.map +1 -0
- package/dist/src/db/transaction.js +8 -0
- package/dist/src/db/transaction.js.map +1 -0
- package/dist/src/hooks/default-hooks.d.ts +2 -0
- package/dist/src/hooks/default-hooks.d.ts.map +1 -0
- package/dist/src/hooks/default-hooks.js +107 -0
- package/dist/src/hooks/default-hooks.js.map +1 -0
- package/dist/src/hooks/registry.d.ts +51 -0
- package/dist/src/hooks/registry.d.ts.map +1 -0
- package/dist/src/hooks/registry.js +32 -0
- package/dist/src/hooks/registry.js.map +1 -0
- package/dist/src/index.d.ts +10 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +4 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/indexer/backfill.d.ts +15 -0
- package/dist/src/indexer/backfill.d.ts.map +1 -0
- package/dist/src/indexer/backfill.js +95 -0
- package/dist/src/indexer/backfill.js.map +1 -0
- package/dist/src/indexer/live.d.ts +20 -0
- package/dist/src/indexer/live.d.ts.map +1 -0
- package/dist/src/indexer/live.js +51 -0
- package/dist/src/indexer/live.js.map +1 -0
- package/dist/src/indexer/process-block.d.ts +29 -0
- package/dist/src/indexer/process-block.d.ts.map +1 -0
- package/dist/src/indexer/process-block.js +91 -0
- package/dist/src/indexer/process-block.js.map +1 -0
- package/dist/src/indexer/queue-block.d.ts +18 -0
- package/dist/src/indexer/queue-block.d.ts.map +1 -0
- package/dist/src/indexer/queue-block.js +38 -0
- package/dist/src/indexer/queue-block.js.map +1 -0
- package/dist/src/indexer/reorg.d.ts +24 -0
- package/dist/src/indexer/reorg.d.ts.map +1 -0
- package/dist/src/indexer/reorg.js +83 -0
- package/dist/src/indexer/reorg.js.map +1 -0
- package/dist/src/indexer/runner.d.ts +14 -0
- package/dist/src/indexer/runner.d.ts.map +1 -0
- package/dist/src/indexer/runner.js +22 -0
- package/dist/src/indexer/runner.js.map +1 -0
- package/dist/src/rpc/client.d.ts +11 -0
- package/dist/src/rpc/client.d.ts.map +1 -0
- package/dist/src/rpc/client.js +18 -0
- package/dist/src/rpc/client.js.map +1 -0
- package/dist/src/rpc/get-block.d.ts +16 -0
- package/dist/src/rpc/get-block.d.ts.map +1 -0
- package/dist/src/rpc/get-block.js +77 -0
- package/dist/src/rpc/get-block.js.map +1 -0
- package/dist/src/rpc/get-logs.d.ts +11 -0
- package/dist/src/rpc/get-logs.d.ts.map +1 -0
- package/dist/src/rpc/get-logs.js +23 -0
- package/dist/src/rpc/get-logs.js.map +1 -0
- package/dist/src/schema.d.ts +3 -0
- package/dist/src/schema.d.ts.map +1 -0
- package/dist/src/schema.js +9 -0
- package/dist/src/schema.js.map +1 -0
- package/dist/src/types.d.ts +22 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +1 -0
- package/dist/src/types.js.map +1 -0
- package/dist/src/utils/bloom.d.ts +6 -0
- package/dist/src/utils/bloom.d.ts.map +1 -0
- package/dist/src/utils/bloom.js +30 -0
- package/dist/src/utils/bloom.js.map +1 -0
- package/dist/src/utils/build-conflict-columns.d.ts +4 -0
- package/dist/src/utils/build-conflict-columns.d.ts.map +1 -0
- package/dist/src/utils/build-conflict-columns.js +14 -0
- package/dist/src/utils/build-conflict-columns.js.map +1 -0
- package/dist/src/utils/common.d.ts +2 -0
- package/dist/src/utils/common.d.ts.map +1 -0
- package/dist/src/utils/common.js +4 -0
- package/dist/src/utils/common.js.map +1 -0
- package/dist/src/utils/cursor.d.ts +5 -0
- package/dist/src/utils/cursor.d.ts.map +1 -0
- package/dist/src/utils/cursor.js +8 -0
- package/dist/src/utils/cursor.js.map +1 -0
- package/dist/src/utils/format.d.ts +2 -0
- package/dist/src/utils/format.d.ts.map +1 -0
- package/dist/src/utils/format.js +16 -0
- package/dist/src/utils/format.js.map +1 -0
- package/dist/src/utils/hash.d.ts +9 -0
- package/dist/src/utils/hash.d.ts.map +1 -0
- package/dist/src/utils/hash.js +15 -0
- package/dist/src/utils/hash.js.map +1 -0
- package/dist/src/utils/json.d.ts +5 -0
- package/dist/src/utils/json.d.ts.map +1 -0
- package/dist/src/utils/json.js +11 -0
- package/dist/src/utils/json.js.map +1 -0
- package/dist/src/utils/logger.d.ts +11 -0
- package/dist/src/utils/logger.d.ts.map +1 -0
- package/dist/src/utils/logger.js +111 -0
- package/dist/src/utils/logger.js.map +1 -0
- package/dist/src/utils/shutdown.d.ts +9 -0
- package/dist/src/utils/shutdown.d.ts.map +1 -0
- package/dist/src/utils/shutdown.js +24 -0
- package/dist/src/utils/shutdown.js.map +1 -0
- package/dist/src/utils/timer.d.ts +6 -0
- package/dist/src/utils/timer.d.ts.map +1 -0
- package/dist/src/utils/timer.js +9 -0
- package/dist/src/utils/timer.js.map +1 -0
- package/dist/src/utils/types.d.ts +39 -0
- package/dist/src/utils/types.d.ts.map +1 -0
- package/dist/src/utils/types.js +1 -0
- package/dist/src/utils/types.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/hello/apps/foc-api/README.md +69 -0
- package/hello/apps/foc-api/biome.json +8 -0
- package/hello/apps/foc-api/index.html +13 -0
- package/hello/apps/foc-api/package.json +39 -0
- package/hello/apps/foc-api/public/vite.svg +1 -0
- package/hello/apps/foc-api/src/app.css +45 -0
- package/hello/apps/foc-api/src/app.tsx +43 -0
- package/hello/apps/foc-api/src/assets/Cloudflare_Logo.svg +51 -0
- package/hello/apps/foc-api/src/assets/react.svg +1 -0
- package/hello/apps/foc-api/src/client.ts +41 -0
- package/hello/apps/foc-api/src/components/account.tsx +100 -0
- package/hello/apps/foc-api/src/components/wallet-options.tsx +43 -0
- package/hello/apps/foc-api/src/index.css +68 -0
- package/hello/apps/foc-api/src/main.tsx +38 -0
- package/hello/apps/foc-api/src/vite-env.d.ts +1 -0
- package/hello/apps/foc-api/tsconfig.app.json +44 -0
- package/hello/apps/foc-api/tsconfig.json +17 -0
- package/hello/apps/foc-api/tsconfig.node.json +25 -0
- package/hello/apps/foc-api/tsconfig.worker.json +8 -0
- package/hello/apps/foc-api/vite.config.ts +8 -0
- package/hello/apps/foc-api/worker/capabilities.ts +25 -0
- package/hello/apps/foc-api/worker/index.ts +64 -0
- package/hello/apps/foc-api/worker/router.ts +35 -0
- package/hello/apps/foc-api/worker-configuration.d.ts +7357 -0
- package/hello/apps/foc-api/wrangler.jsonc +50 -0
- package/hello/apps/foc-app/README.md +69 -0
- package/hello/apps/foc-app/biome.json +8 -0
- package/hello/apps/foc-app/index.html +13 -0
- package/hello/apps/foc-app/package.json +39 -0
- package/hello/apps/foc-app/public/vite.svg +1 -0
- package/hello/apps/foc-app/src/app.css +45 -0
- package/hello/apps/foc-app/src/app.tsx +43 -0
- package/hello/apps/foc-app/src/assets/Cloudflare_Logo.svg +51 -0
- package/hello/apps/foc-app/src/assets/react.svg +1 -0
- package/hello/apps/foc-app/src/client.ts +41 -0
- package/hello/apps/foc-app/src/components/account.tsx +100 -0
- package/hello/apps/foc-app/src/components/wallet-options.tsx +43 -0
- package/hello/apps/foc-app/src/index.css +68 -0
- package/hello/apps/foc-app/src/main.tsx +38 -0
- package/hello/apps/foc-app/src/vite-env.d.ts +1 -0
- package/hello/apps/foc-app/tsconfig.app.json +44 -0
- package/hello/apps/foc-app/tsconfig.json +17 -0
- package/hello/apps/foc-app/tsconfig.node.json +25 -0
- package/hello/apps/foc-app/tsconfig.worker.json +8 -0
- package/hello/apps/foc-app/vite.config.ts +8 -0
- package/hello/apps/foc-app/worker/capabilities.ts +25 -0
- package/hello/apps/foc-app/worker/index.ts +64 -0
- package/hello/apps/foc-app/worker/router.ts +35 -0
- package/hello/apps/foc-app/worker-configuration.d.ts +7357 -0
- package/hello/apps/foc-app/wrangler.jsonc +50 -0
- package/hello/biome.json +50 -0
- package/hello/package.json +22 -0
- package/hello/pnpm-workspace.yaml +3 -0
- package/hello/tsconfig.json +37 -0
- package/package.json +78 -0
- package/src/api/index.ts +1 -0
- package/src/api/runner.ts +43 -0
- package/src/api/server.ts +38 -0
- package/src/api/sql-middleware.ts +131 -0
- package/src/api/sql.ts +149 -0
- package/src/api/sse.ts +12 -0
- package/src/bin/create.ts +199 -0
- package/src/bin/dev.ts +91 -0
- package/src/bin/flags.ts +65 -0
- package/src/bin/index.ts +28 -0
- package/src/bin/utils.ts +55 -0
- package/src/config/config.ts +221 -0
- package/src/config/env.ts +28 -0
- package/src/contants.ts +3 -0
- package/src/db/actions/blocks.ts +209 -0
- package/src/db/actions/index.ts +1 -0
- package/src/db/actions/transactions.ts +32 -0
- package/src/db/client.ts +186 -0
- package/src/db/column-types.ts +105 -0
- package/src/db/encode.ts +99 -0
- package/src/db/migrate.ts +222 -0
- package/src/db/schema/blocks.ts +24 -0
- package/src/db/schema/index.ts +21 -0
- package/src/db/schema/transactions.ts +39 -0
- package/src/db/transaction.ts +20 -0
- package/src/hooks/registry.ts +107 -0
- package/src/index.ts +9 -0
- package/src/indexer/backfill.ts +133 -0
- package/src/indexer/live.ts +76 -0
- package/src/indexer/process-block.ts +142 -0
- package/src/indexer/queue-block.ts +74 -0
- package/src/indexer/reorg.ts +120 -0
- package/src/indexer/runner.ts +35 -0
- package/src/rpc/client.ts +27 -0
- package/src/rpc/get-block.ts +100 -0
- package/src/rpc/get-logs.ts +38 -0
- package/src/schema.ts +10 -0
- package/src/types.ts +32 -0
- package/src/utils/bloom.ts +41 -0
- package/src/utils/build-conflict-columns.ts +26 -0
- package/src/utils/common.ts +3 -0
- package/src/utils/cursor.ts +7 -0
- package/src/utils/format.ts +18 -0
- package/src/utils/hash.ts +17 -0
- package/src/utils/json.ts +11 -0
- package/src/utils/logger.ts +149 -0
- package/src/utils/shutdown.ts +36 -0
- package/src/utils/timer.ts +8 -0
- package/src/utils/types.ts +87 -0
- package/template/biome.json +50 -0
- package/template/package.json +22 -0
- package/template/pnpm-workspace.yaml +3 -0
- package/template/tsconfig.json +37 -0
- package/tsconfig.json +8 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/db/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
export declare const numeric78: {
|
|
2
|
+
<TConfig extends Record<string, any>>(fieldConfig?: TConfig | undefined): import("drizzle-orm/pg-core").PgCustomColumnBuilder<{
|
|
3
|
+
dataType: "custom";
|
|
4
|
+
data: bigint;
|
|
5
|
+
driverParam: string;
|
|
6
|
+
}>;
|
|
7
|
+
(dbName: string, fieldConfig?: unknown): import("drizzle-orm/pg-core").PgCustomColumnBuilder<{
|
|
8
|
+
dataType: "custom";
|
|
9
|
+
data: bigint;
|
|
10
|
+
driverParam: string;
|
|
11
|
+
}>;
|
|
12
|
+
};
|
|
13
|
+
export declare const hex: {
|
|
14
|
+
<TConfig extends Record<string, any> & {
|
|
15
|
+
length: number | undefined;
|
|
16
|
+
}>(fieldConfig?: TConfig | undefined): import("drizzle-orm/pg-core").PgCustomColumnBuilder<{
|
|
17
|
+
dataType: "custom";
|
|
18
|
+
data: `0x${string}`;
|
|
19
|
+
driverParam: string;
|
|
20
|
+
}>;
|
|
21
|
+
(dbName: string, fieldConfig?: {
|
|
22
|
+
length: number | undefined;
|
|
23
|
+
} | undefined): import("drizzle-orm/pg-core").PgCustomColumnBuilder<{
|
|
24
|
+
dataType: "custom";
|
|
25
|
+
data: `0x${string}`;
|
|
26
|
+
driverParam: string;
|
|
27
|
+
}>;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Hash column type
|
|
31
|
+
* @param config - Configuration for the column
|
|
32
|
+
* @param config.length - Length of the column (default: 66)
|
|
33
|
+
* @returns Hash column type
|
|
34
|
+
*/
|
|
35
|
+
export declare const hash: {
|
|
36
|
+
<TConfig extends Record<string, any> & {
|
|
37
|
+
length: number | undefined;
|
|
38
|
+
}>(fieldConfig?: TConfig | undefined): import("drizzle-orm/pg-core").PgCustomColumnBuilder<{
|
|
39
|
+
dataType: "custom";
|
|
40
|
+
data: `0x${string}`;
|
|
41
|
+
driverParam: string;
|
|
42
|
+
}>;
|
|
43
|
+
(dbName: string, fieldConfig?: {
|
|
44
|
+
length: number | undefined;
|
|
45
|
+
} | undefined): import("drizzle-orm/pg-core").PgCustomColumnBuilder<{
|
|
46
|
+
dataType: "custom";
|
|
47
|
+
data: `0x${string}`;
|
|
48
|
+
driverParam: string;
|
|
49
|
+
}>;
|
|
50
|
+
};
|
|
51
|
+
export declare const address: {
|
|
52
|
+
<TConfig extends Record<string, any> & {
|
|
53
|
+
length: number | undefined;
|
|
54
|
+
}>(fieldConfig?: TConfig | undefined): import("drizzle-orm/pg-core").PgCustomColumnBuilder<{
|
|
55
|
+
dataType: "custom";
|
|
56
|
+
data: `0x${string}`;
|
|
57
|
+
driverParam: string;
|
|
58
|
+
}>;
|
|
59
|
+
(dbName: string, fieldConfig?: {
|
|
60
|
+
length: number | undefined;
|
|
61
|
+
} | undefined): import("drizzle-orm/pg-core").PgCustomColumnBuilder<{
|
|
62
|
+
dataType: "custom";
|
|
63
|
+
data: `0x${string}`;
|
|
64
|
+
driverParam: string;
|
|
65
|
+
}>;
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* Bigint column type (8 bytes)
|
|
69
|
+
* For bigger number see {@link numeric78}, {@link uint256} and {@link int256}
|
|
70
|
+
* @returns Bigint column type
|
|
71
|
+
*/
|
|
72
|
+
export declare const bigint: {
|
|
73
|
+
<TConfig extends Record<string, any>>(fieldConfig?: TConfig | undefined): import("drizzle-orm/pg-core").PgCustomColumnBuilder<{
|
|
74
|
+
dataType: "custom";
|
|
75
|
+
data: bigint;
|
|
76
|
+
driverParam: string;
|
|
77
|
+
}>;
|
|
78
|
+
(dbName: string, fieldConfig?: unknown): import("drizzle-orm/pg-core").PgCustomColumnBuilder<{
|
|
79
|
+
dataType: "custom";
|
|
80
|
+
data: bigint;
|
|
81
|
+
driverParam: string;
|
|
82
|
+
}>;
|
|
83
|
+
};
|
|
84
|
+
export declare const uint256: {
|
|
85
|
+
<TConfig extends Record<string, any>>(fieldConfig?: TConfig | undefined): import("drizzle-orm/pg-core").PgCustomColumnBuilder<{
|
|
86
|
+
dataType: "custom";
|
|
87
|
+
data: bigint;
|
|
88
|
+
driverParam: string;
|
|
89
|
+
}>;
|
|
90
|
+
(dbName: string, fieldConfig?: unknown): import("drizzle-orm/pg-core").PgCustomColumnBuilder<{
|
|
91
|
+
dataType: "custom";
|
|
92
|
+
data: bigint;
|
|
93
|
+
driverParam: string;
|
|
94
|
+
}>;
|
|
95
|
+
};
|
|
96
|
+
export declare const int256: {
|
|
97
|
+
<TConfig extends Record<string, any>>(fieldConfig?: TConfig | undefined): import("drizzle-orm/pg-core").PgCustomColumnBuilder<{
|
|
98
|
+
dataType: "custom";
|
|
99
|
+
data: bigint;
|
|
100
|
+
driverParam: string;
|
|
101
|
+
}>;
|
|
102
|
+
(dbName: string, fieldConfig?: unknown): import("drizzle-orm/pg-core").PgCustomColumnBuilder<{
|
|
103
|
+
dataType: "custom";
|
|
104
|
+
data: bigint;
|
|
105
|
+
driverParam: string;
|
|
106
|
+
}>;
|
|
107
|
+
};
|
|
108
|
+
export declare const jsonb: {
|
|
109
|
+
<TConfig extends Record<string, any>>(fieldConfig?: TConfig | undefined): import("drizzle-orm/pg-core").PgCustomColumnBuilder<{
|
|
110
|
+
dataType: "custom";
|
|
111
|
+
data: unknown;
|
|
112
|
+
driverParam: string;
|
|
113
|
+
}>;
|
|
114
|
+
(dbName: string, fieldConfig?: unknown): import("drizzle-orm/pg-core").PgCustomColumnBuilder<{
|
|
115
|
+
dataType: "custom";
|
|
116
|
+
data: unknown;
|
|
117
|
+
driverParam: string;
|
|
118
|
+
}>;
|
|
119
|
+
};
|
|
120
|
+
export declare const bytea: {
|
|
121
|
+
<TConfig extends Record<string, any>>(fieldConfig?: TConfig | undefined): import("drizzle-orm/pg-core").PgCustomColumnBuilder<{
|
|
122
|
+
dataType: "custom";
|
|
123
|
+
data: `0x${string}`;
|
|
124
|
+
driverParam: Buffer<ArrayBufferLike>;
|
|
125
|
+
}>;
|
|
126
|
+
(dbName: string, fieldConfig?: unknown): import("drizzle-orm/pg-core").PgCustomColumnBuilder<{
|
|
127
|
+
dataType: "custom";
|
|
128
|
+
data: `0x${string}`;
|
|
129
|
+
driverParam: Buffer<ArrayBufferLike>;
|
|
130
|
+
}>;
|
|
131
|
+
};
|
|
132
|
+
//# sourceMappingURL=column-types.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { customType } from 'drizzle-orm/pg-core';
|
|
2
|
+
import { stringify } from 'viem';
|
|
3
|
+
export const numeric78 = customType({
|
|
4
|
+
dataType() {
|
|
5
|
+
return 'numeric(78,0)';
|
|
6
|
+
},
|
|
7
|
+
fromDriver(value) {
|
|
8
|
+
return BigInt(value);
|
|
9
|
+
},
|
|
10
|
+
});
|
|
11
|
+
export const hex = customType({
|
|
12
|
+
dataType(config) {
|
|
13
|
+
if (config?.length) {
|
|
14
|
+
return `varchar(${config.length})`;
|
|
15
|
+
}
|
|
16
|
+
return 'varchar';
|
|
17
|
+
},
|
|
18
|
+
fromDriver(value) {
|
|
19
|
+
return value;
|
|
20
|
+
},
|
|
21
|
+
});
|
|
22
|
+
/**
|
|
23
|
+
* Hash column type
|
|
24
|
+
* @param config - Configuration for the column
|
|
25
|
+
* @param config.length - Length of the column (default: 66)
|
|
26
|
+
* @returns Hash column type
|
|
27
|
+
*/
|
|
28
|
+
export const hash = customType({
|
|
29
|
+
dataType(config) {
|
|
30
|
+
if (config?.length) {
|
|
31
|
+
return `varchar(${config.length})`;
|
|
32
|
+
}
|
|
33
|
+
return 'varchar(66)';
|
|
34
|
+
},
|
|
35
|
+
fromDriver(value) {
|
|
36
|
+
return value;
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
export const address = customType({
|
|
40
|
+
dataType(config) {
|
|
41
|
+
if (config?.length) {
|
|
42
|
+
return `varchar(${config.length})`;
|
|
43
|
+
}
|
|
44
|
+
return 'varchar(42)';
|
|
45
|
+
},
|
|
46
|
+
fromDriver(value) {
|
|
47
|
+
return value;
|
|
48
|
+
},
|
|
49
|
+
});
|
|
50
|
+
/**
|
|
51
|
+
* Bigint column type (8 bytes)
|
|
52
|
+
* For bigger number see {@link numeric78}, {@link uint256} and {@link int256}
|
|
53
|
+
* @returns Bigint column type
|
|
54
|
+
*/
|
|
55
|
+
export const bigint = customType({
|
|
56
|
+
dataType() {
|
|
57
|
+
return 'bigint';
|
|
58
|
+
},
|
|
59
|
+
fromDriver(value) {
|
|
60
|
+
return BigInt(value);
|
|
61
|
+
},
|
|
62
|
+
});
|
|
63
|
+
export const uint256 = numeric78;
|
|
64
|
+
export const int256 = numeric78;
|
|
65
|
+
export const jsonb = customType({
|
|
66
|
+
dataType() {
|
|
67
|
+
return 'jsonb';
|
|
68
|
+
},
|
|
69
|
+
toDriver(value) {
|
|
70
|
+
return stringify(value);
|
|
71
|
+
},
|
|
72
|
+
});
|
|
73
|
+
export const bytea = customType({
|
|
74
|
+
dataType() {
|
|
75
|
+
return 'bytea';
|
|
76
|
+
},
|
|
77
|
+
toDriver(value) {
|
|
78
|
+
return Buffer.from(value.slice(2), 'hex');
|
|
79
|
+
},
|
|
80
|
+
fromDriver(value) {
|
|
81
|
+
const hex = value.toString('hex');
|
|
82
|
+
const _value = hex.startsWith('\\x') ? hex.slice(2) : hex;
|
|
83
|
+
return `0x${_value}`;
|
|
84
|
+
},
|
|
85
|
+
});
|
|
86
|
+
//# sourceMappingURL=column-types.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Hash } from 'viem';
|
|
2
|
+
import type { ChainBlock, ChainTransaction, EncodedBlock, EncodedBlockWithTransactions, EncodedTransaction } from '../types';
|
|
3
|
+
export declare function encodeTransaction(tx: ChainTransaction): EncodedTransaction;
|
|
4
|
+
export declare function encodeBlock(block: ChainBlock): EncodedBlock;
|
|
5
|
+
export declare function encodeBlockWithTransactions(block: ChainBlock): EncodedBlockWithTransactions;
|
|
6
|
+
export declare function encodeNullRoundBlock(options: {
|
|
7
|
+
number: bigint;
|
|
8
|
+
hash: Hash;
|
|
9
|
+
}): EncodedBlockWithTransactions;
|
|
10
|
+
//# sourceMappingURL=encode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encode.d.ts","sourceRoot":"","sources":["../../../src/db/encode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAChC,OAAO,KAAK,EACV,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,4BAA4B,EAC5B,kBAAkB,EACnB,MAAM,UAAU,CAAA;AAEjB,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,gBAAgB,GAAG,kBAAkB,CAqB1E;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,YAAY,CAsB3D;AAED,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,UAAU,GAChB,4BAA4B,CAK9B;AAMD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE;IAC5C,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,IAAI,CAAA;CACX,GAAG,4BAA4B,CA0B/B"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
export function encodeTransaction(tx) {
|
|
2
|
+
return {
|
|
3
|
+
hash: tx.hash,
|
|
4
|
+
blockNumber: tx.blockNumber,
|
|
5
|
+
transactionIndex: tx.transactionIndex,
|
|
6
|
+
blockHash: tx.blockHash,
|
|
7
|
+
from: tx.from,
|
|
8
|
+
to: tx.to ?? null,
|
|
9
|
+
input: tx.input,
|
|
10
|
+
value: tx.value,
|
|
11
|
+
nonce: tx.nonce,
|
|
12
|
+
r: tx.r,
|
|
13
|
+
s: tx.s,
|
|
14
|
+
v: tx.v,
|
|
15
|
+
type: tx.type,
|
|
16
|
+
gas: tx.gas ?? null,
|
|
17
|
+
gasPrice: tx.gasPrice ?? null,
|
|
18
|
+
maxFeePerGas: tx.maxFeePerGas ?? null,
|
|
19
|
+
maxPriorityFeePerGas: tx.maxPriorityFeePerGas ?? null,
|
|
20
|
+
accessList: tx.accessList ?? null,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
export function encodeBlock(block) {
|
|
24
|
+
return {
|
|
25
|
+
number: block.number,
|
|
26
|
+
timestamp: block.timestamp,
|
|
27
|
+
hash: block.hash,
|
|
28
|
+
parentHash: block.parentHash,
|
|
29
|
+
logsBloom: block.logsBloom,
|
|
30
|
+
miner: block.miner,
|
|
31
|
+
gasUsed: block.gasUsed,
|
|
32
|
+
gasLimit: block.gasLimit,
|
|
33
|
+
baseFeePerGas: block.baseFeePerGas ?? null,
|
|
34
|
+
nonce: block.nonce,
|
|
35
|
+
mixHash: block.mixHash,
|
|
36
|
+
stateRoot: block.stateRoot,
|
|
37
|
+
receiptsRoot: block.receiptsRoot,
|
|
38
|
+
transactionsRoot: block.transactionsRoot,
|
|
39
|
+
sha3Uncles: block.sha3Uncles,
|
|
40
|
+
size: block.size,
|
|
41
|
+
difficulty: block.difficulty,
|
|
42
|
+
totalDifficulty: block.totalDifficulty ?? null,
|
|
43
|
+
extraData: block.extraData,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
export function encodeBlockWithTransactions(block) {
|
|
47
|
+
return {
|
|
48
|
+
...encodeBlock(block),
|
|
49
|
+
transactions: block.transactions.map(encodeTransaction),
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
const EMPTY_TRIE_HASH = '0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421';
|
|
53
|
+
const EMPTY_LOGS_BLOOM = '0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff';
|
|
54
|
+
export function encodeNullRoundBlock(options) {
|
|
55
|
+
return {
|
|
56
|
+
number: options.number,
|
|
57
|
+
// TODO: probably should be previous block timestamp plus 30 seconds
|
|
58
|
+
timestamp: BigInt(Math.floor(Date.now() / 1000)),
|
|
59
|
+
hash: options.hash,
|
|
60
|
+
parentHash: options.hash,
|
|
61
|
+
logsBloom: EMPTY_LOGS_BLOOM,
|
|
62
|
+
miner: '0x0000000000000000000000000000000000000000',
|
|
63
|
+
gasUsed: 0n,
|
|
64
|
+
gasLimit: 30000000n,
|
|
65
|
+
baseFeePerGas: 1000000000n,
|
|
66
|
+
nonce: '0x0000000000000000',
|
|
67
|
+
mixHash: '0x0000000000000000000000000000000000000000000000000000000000000000',
|
|
68
|
+
stateRoot: EMPTY_TRIE_HASH,
|
|
69
|
+
receiptsRoot: EMPTY_TRIE_HASH,
|
|
70
|
+
transactionsRoot: EMPTY_TRIE_HASH,
|
|
71
|
+
sha3Uncles: '0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347',
|
|
72
|
+
size: 0n,
|
|
73
|
+
difficulty: 0n,
|
|
74
|
+
totalDifficulty: 0n,
|
|
75
|
+
extraData: '0x',
|
|
76
|
+
transactions: [],
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=encode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encode.js","sourceRoot":"","sources":["../../../src/db/encode.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { Logger } from '../utils/logger.ts';
|
|
2
|
+
import type { Database, DatabaseContext } from './client.ts';
|
|
3
|
+
/**
|
|
4
|
+
* Applies pending SQL migrations at runtime.
|
|
5
|
+
*/
|
|
6
|
+
export declare function runMigrations({ dbContext, folder, logger, }: {
|
|
7
|
+
folder: string;
|
|
8
|
+
dbContext: DatabaseContext;
|
|
9
|
+
logger: Logger;
|
|
10
|
+
}): Promise<void>;
|
|
11
|
+
/**
|
|
12
|
+
* Creates or updates a publication for the provided tables in the database.
|
|
13
|
+
* The resulting publication contains only the provided tables.
|
|
14
|
+
* This is needed for the live sync to work.
|
|
15
|
+
*
|
|
16
|
+
* @param db - The database to create the publication for
|
|
17
|
+
* @param tables - The list of table names to include
|
|
18
|
+
*/
|
|
19
|
+
export declare function createPublications(db: Database, tables: string[]): Promise<void>;
|
|
20
|
+
/**
|
|
21
|
+
* Ensures every provided table has a blockNumber column and an index on it.
|
|
22
|
+
*/
|
|
23
|
+
export declare function assertTablesHaveBlockNumberIndex(fullSchema: Record<string, unknown>, tableNames: string[]): void;
|
|
24
|
+
/**
|
|
25
|
+
* Checks if WAL is enabled.
|
|
26
|
+
*
|
|
27
|
+
* @param db - The database to check
|
|
28
|
+
* @returns True if WAL is enabled, false otherwise
|
|
29
|
+
*/
|
|
30
|
+
export declare function isWalEnabled(db: Database): Promise<boolean>;
|
|
31
|
+
//# sourceMappingURL=migrate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../../src/db/migrate.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAEhD,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAE5D;;GAEG;AACH,wBAAsB,aAAa,CAAC,EAClC,SAAS,EACT,MAAM,EACN,MAAM,GACP,EAAE;IACD,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,eAAe,CAAA;IAC1B,MAAM,EAAE,MAAM,CAAA;CACf,GAAG,OAAO,CAAC,IAAI,CAAC,CA6BhB;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,iBA2BtE;AAED;;GAEG;AACH,wBAAgB,gCAAgC,CAC9C,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,UAAU,EAAE,MAAM,EAAE,QAsGrB;AAeD;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,EAAE,EAAE,QAAQ,oBAK9C"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { migrate as migratePostgresJs } from 'drizzle-orm/node-postgres/migrator';
|
|
2
|
+
import { getTableConfig } from 'drizzle-orm/pg-core';
|
|
3
|
+
import { IndexedColumn } from 'drizzle-orm/pg-core/columns/common';
|
|
4
|
+
import { migrate as migratePglite } from 'drizzle-orm/pglite/migrator';
|
|
5
|
+
import { FOXER_TABLES, PUBLICATION_NAME } from "../contants.js";
|
|
6
|
+
import { startClock } from "../utils/timer.js";
|
|
7
|
+
/**
|
|
8
|
+
* Applies pending SQL migrations at runtime.
|
|
9
|
+
*/
|
|
10
|
+
export async function runMigrations({ dbContext, folder, logger, }) {
|
|
11
|
+
const endClock = startClock();
|
|
12
|
+
const { db, driver } = dbContext;
|
|
13
|
+
// apply migrations
|
|
14
|
+
if (driver === 'postgres') {
|
|
15
|
+
await migratePostgresJs(db, { migrationsFolder: folder });
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
await migratePglite(db, { migrationsFolder: folder });
|
|
19
|
+
}
|
|
20
|
+
// get tables to migrate
|
|
21
|
+
const tables = Object.keys(dbContext.db._.fullSchema).filter((table) => !FOXER_TABLES.includes(table));
|
|
22
|
+
// assert tables have blockNumber column and index
|
|
23
|
+
assertTablesHaveBlockNumberIndex(dbContext.db._.fullSchema, tables);
|
|
24
|
+
// check if wal is enabled
|
|
25
|
+
const wal = await isWalEnabled(db);
|
|
26
|
+
if (!wal) {
|
|
27
|
+
throw new Error('WAL is not enabled, set wal_level=logical in your postgresql.conf or pass -c wal_level=logical to the postgres client');
|
|
28
|
+
}
|
|
29
|
+
// create publications
|
|
30
|
+
await createPublications(db, tables);
|
|
31
|
+
logger.info({ driver, duration: endClock() }, 'migrations applied');
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Creates or updates a publication for the provided tables in the database.
|
|
35
|
+
* The resulting publication contains only the provided tables.
|
|
36
|
+
* This is needed for the live sync to work.
|
|
37
|
+
*
|
|
38
|
+
* @param db - The database to create the publication for
|
|
39
|
+
* @param tables - The list of table names to include
|
|
40
|
+
*/
|
|
41
|
+
export async function createPublications(db, tables) {
|
|
42
|
+
if (tables.length === 0)
|
|
43
|
+
return;
|
|
44
|
+
const quotedTables = tables.map((table) => `"${table.replaceAll('"', '""')}"`);
|
|
45
|
+
const publication = await db.execute(`SELECT puballtables FROM pg_publication WHERE pubname = '${PUBLICATION_NAME}'`);
|
|
46
|
+
if (publication.rows.length === 0) {
|
|
47
|
+
await db.execute(`CREATE PUBLICATION ${PUBLICATION_NAME} FOR TABLE ${quotedTables.join(', ')}`);
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
const isForAllTables = Boolean(publication.rows[0].puballtables);
|
|
51
|
+
if (isForAllTables) {
|
|
52
|
+
await db.execute(`DROP PUBLICATION ${PUBLICATION_NAME}`);
|
|
53
|
+
await db.execute(`CREATE PUBLICATION ${PUBLICATION_NAME} FOR TABLE ${quotedTables.join(', ')}`);
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
await db.execute(`ALTER PUBLICATION ${PUBLICATION_NAME} SET TABLE ${quotedTables.join(', ')}`);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Ensures every provided table has a blockNumber column and an index on it.
|
|
60
|
+
*/
|
|
61
|
+
export function assertTablesHaveBlockNumberIndex(fullSchema, tableNames) {
|
|
62
|
+
const missingBlockNumberColumn = [];
|
|
63
|
+
const missingBlockNumberIndex = [];
|
|
64
|
+
const tableConfigs = new Map();
|
|
65
|
+
const tableHasBlockNumberColumn = new Map();
|
|
66
|
+
for (const tableName of tableNames) {
|
|
67
|
+
const table = fullSchema[tableName];
|
|
68
|
+
if (!table)
|
|
69
|
+
continue;
|
|
70
|
+
const config = getTableConfig(table);
|
|
71
|
+
tableConfigs.set(tableName, config);
|
|
72
|
+
tableHasBlockNumberColumn.set(tableName, config.columns.some((column) => ['blockNumber', 'block_number'].includes(column.name)));
|
|
73
|
+
}
|
|
74
|
+
for (const tableName of tableNames) {
|
|
75
|
+
const config = tableConfigs.get(tableName);
|
|
76
|
+
if (!config)
|
|
77
|
+
continue;
|
|
78
|
+
const blockNumberColumns = config.columns.filter((column) => ['blockNumber', 'block_number'].includes(column.name));
|
|
79
|
+
if (blockNumberColumns.length === 0) {
|
|
80
|
+
if (hasCascadeForeignKeyToBlockNumberTable(config, tableHasBlockNumberColumn)) {
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
missingBlockNumberColumn.push(tableName);
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
const blockNumberColumnNames = new Set(blockNumberColumns.map((column) => column.name));
|
|
87
|
+
const hasBlockNumberIndex = config.indexes.some((index) => {
|
|
88
|
+
const indexColumns = index.config?.columns;
|
|
89
|
+
if (!indexColumns || indexColumns.length === 0)
|
|
90
|
+
return false;
|
|
91
|
+
return indexColumns.some((column) => {
|
|
92
|
+
if (!(column instanceof IndexedColumn))
|
|
93
|
+
return false;
|
|
94
|
+
if (!column.name)
|
|
95
|
+
return false;
|
|
96
|
+
return blockNumberColumnNames.has(column.name);
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
if (!hasBlockNumberIndex) {
|
|
100
|
+
missingBlockNumberIndex.push(tableName);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
if (missingBlockNumberColumn.length > 0 ||
|
|
104
|
+
missingBlockNumberIndex.length > 0) {
|
|
105
|
+
const missingColumnTables = missingBlockNumberColumn.sort();
|
|
106
|
+
const missingIndexTables = missingBlockNumberIndex.sort();
|
|
107
|
+
const lines = [
|
|
108
|
+
'Invalid schema for Foxer sync.',
|
|
109
|
+
'',
|
|
110
|
+
'Each published table must have:',
|
|
111
|
+
"1) a 'blockNumber' column (db name can be 'block_number')",
|
|
112
|
+
"2) an index that includes 'blockNumber'",
|
|
113
|
+
"Exception: table can skip both when it has a foreign key with onDelete('cascade') to a table with blockNumber.",
|
|
114
|
+
'',
|
|
115
|
+
];
|
|
116
|
+
if (missingColumnTables.length > 0) {
|
|
117
|
+
lines.push(`Tables missing blockNumber column: ${missingColumnTables.join(', ')}`);
|
|
118
|
+
}
|
|
119
|
+
if (missingIndexTables.length > 0) {
|
|
120
|
+
lines.push(`Tables missing blockNumber index: ${missingIndexTables.join(', ')}`);
|
|
121
|
+
}
|
|
122
|
+
lines.push('', 'Drizzle example:', "const myTable = pgTable('my_table', {", ' // 1) Add the blockNumber column', ' blockNumber: bigint().notNull(),', ' // ...other columns', '}, (table) => [', ' // 2) Add an index on blockNumber', " index('my_table_block_number_index').on(table.blockNumber),", '])');
|
|
123
|
+
throw new Error(lines.join('\n'));
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
function hasCascadeForeignKeyToBlockNumberTable(tableConfig, tableHasBlockNumberColumn) {
|
|
127
|
+
return tableConfig.foreignKeys.some((foreignKey) => {
|
|
128
|
+
if (foreignKey.onDelete !== 'cascade')
|
|
129
|
+
return false;
|
|
130
|
+
const referencedTable = foreignKey.reference().foreignTable;
|
|
131
|
+
const referencedTableName = getTableConfig(referencedTable).name;
|
|
132
|
+
return tableHasBlockNumberColumn.get(referencedTableName) === true;
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Checks if WAL is enabled.
|
|
137
|
+
*
|
|
138
|
+
* @param db - The database to check
|
|
139
|
+
* @returns True if WAL is enabled, false otherwise
|
|
140
|
+
*/
|
|
141
|
+
export async function isWalEnabled(db) {
|
|
142
|
+
const wal = await db
|
|
143
|
+
.execute('SHOW WAL_LEVEL')
|
|
144
|
+
.then((result) => result.rows[0].wal_level);
|
|
145
|
+
return wal === 'logical';
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=migrate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../../src/db/migrate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,oCAAoC,CAAA;AACjF,OAAO,EAAE,cAAc,EAAgB,MAAM,qBAAqB,CAAA;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAA;AAClE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,6BAA6B,CAAA;AACtE,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAE/D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAG9C;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,EAClC,SAAS,EACT,MAAM,EACN,MAAM,GAKP;IACC,MAAM,QAAQ,GAAG,UAAU,EAAE,CAAA;IAC7B,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;IAChC,mBAAmB;IACnB,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;QAC1B,MAAM,iBAAiB,CAAC,EAAE,EAAE,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC,CAAA;IAC3D,CAAC;SAAM,CAAC;QACN,MAAM,aAAa,CAAC,EAAE,EAAE,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC,CAAA;IACvD,CAAC;IAED,wBAAwB;IACxB,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAC1D,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CACzC,CAAA;IACD,kDAAkD;IAClD,gCAAgC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;IAEnE,0BAA0B;IAC1B,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,EAAE,CAAC,CAAA;IAClC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CACb,uHAAuH,CACxH,CAAA;IACH,CAAC;IAED,sBAAsB;IACtB,MAAM,kBAAkB,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;IAEpC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,oBAAoB,CAAC,CAAA;AACrE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,EAAY,EAAE,MAAgB;IACrE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAM;IAE/B,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;IAC9E,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,OAAO,CAClC,4DAA4D,gBAAgB,GAAG,CAChF,CAAA;IAED,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,MAAM,EAAE,CAAC,OAAO,CACd,sBAAsB,gBAAgB,cAAc,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC9E,CAAA;QACD,OAAM;IACR,CAAC;IAED,MAAM,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAA;IAChE,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,EAAE,CAAC,OAAO,CAAC,oBAAoB,gBAAgB,EAAE,CAAC,CAAA;QACxD,MAAM,EAAE,CAAC,OAAO,CACd,sBAAsB,gBAAgB,cAAc,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC9E,CAAA;QACD,OAAM;IACR,CAAC;IAED,MAAM,EAAE,CAAC,OAAO,CACd,qBAAqB,gBAAgB,cAAc,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC7E,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gCAAgC,CAC9C,UAAmC,EACnC,UAAoB;IAEpB,MAAM,wBAAwB,GAAa,EAAE,CAAA;IAC7C,MAAM,uBAAuB,GAAa,EAAE,CAAA;IAC5C,MAAM,YAAY,GAAG,IAAI,GAAG,EAA6C,CAAA;IACzE,MAAM,yBAAyB,GAAG,IAAI,GAAG,EAAmB,CAAA;IAE5D,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,UAAU,CAAC,SAAS,CAAC,CAAA;QACnC,IAAI,CAAC,KAAK;YAAE,SAAQ;QAEpB,MAAM,MAAM,GAAG,cAAc,CAAC,KAAgB,CAAC,CAAA;QAC/C,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;QACnC,yBAAyB,CAAC,GAAG,CAC3B,SAAS,EACT,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAC7B,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CACtD,CACF,CAAA;IACH,CAAC;IAED,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QAC1C,IAAI,CAAC,MAAM;YAAE,SAAQ;QACrB,MAAM,kBAAkB,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAC1D,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CACtD,CAAA;QAED,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpC,IACE,sCAAsC,CACpC,MAAM,EACN,yBAAyB,CAC1B,EACD,CAAC;gBACD,SAAQ;YACV,CAAC;YACD,wBAAwB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YACxC,SAAQ;QACV,CAAC;QAED,MAAM,sBAAsB,GAAG,IAAI,GAAG,CACpC,kBAAkB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAChD,CAAA;QACD,MAAM,mBAAmB,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;YACxD,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,EAAE,OAAO,CAAA;YAE1C,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAA;YAC5D,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;gBAClC,IAAI,CAAC,CAAC,MAAM,YAAY,aAAa,CAAC;oBAAE,OAAO,KAAK,CAAA;gBACpD,IAAI,CAAC,MAAM,CAAC,IAAI;oBAAE,OAAO,KAAK,CAAA;gBAC9B,OAAO,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YAChD,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACzB,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QACzC,CAAC;IACH,CAAC;IAED,IACE,wBAAwB,CAAC,MAAM,GAAG,CAAC;QACnC,uBAAuB,CAAC,MAAM,GAAG,CAAC,EAClC,CAAC;QACD,MAAM,mBAAmB,GAAG,wBAAwB,CAAC,IAAI,EAAE,CAAA;QAC3D,MAAM,kBAAkB,GAAG,uBAAuB,CAAC,IAAI,EAAE,CAAA;QACzD,MAAM,KAAK,GAAG;YACZ,gCAAgC;YAChC,EAAE;YACF,iCAAiC;YACjC,2DAA2D;YAC3D,yCAAyC;YACzC,gHAAgH;YAChH,EAAE;SACH,CAAA;QAED,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,KAAK,CAAC,IAAI,CACR,sCAAsC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACvE,CAAA;QACH,CAAC;QACD,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,KAAK,CAAC,IAAI,CACR,qCAAqC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACrE,CAAA;QACH,CAAC;QAED,KAAK,CAAC,IAAI,CACR,EAAE,EACF,kBAAkB,EAClB,uCAAuC,EACvC,oCAAoC,EACpC,oCAAoC,EACpC,uBAAuB,EACvB,iBAAiB,EACjB,qCAAqC,EACrC,+DAA+D,EAC/D,IAAI,CACL,CAAA;QAED,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IACnC,CAAC;AACH,CAAC;AAED,SAAS,sCAAsC,CAC7C,WAA8C,EAC9C,yBAA+C;IAE/C,OAAO,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE;QACjD,IAAI,UAAU,CAAC,QAAQ,KAAK,SAAS;YAAE,OAAO,KAAK,CAAA;QAEnD,MAAM,eAAe,GAAG,UAAU,CAAC,SAAS,EAAE,CAAC,YAAY,CAAA;QAC3D,MAAM,mBAAmB,GAAG,cAAc,CAAC,eAAe,CAAC,CAAC,IAAI,CAAA;QAChE,OAAO,yBAAyB,CAAC,GAAG,CAAC,mBAAmB,CAAC,KAAK,IAAI,CAAA;IACpE,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,EAAY;IAC7C,MAAM,GAAG,GAAG,MAAM,EAAE;SACjB,OAAO,CAAC,gBAAgB,CAAC;SACzB,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;IAC7C,OAAO,GAAG,KAAK,SAAS,CAAA;AAC1B,CAAC"}
|