@o1-labs/mina-archive-node-graphql 0.0.6 → 2.0.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/LICENSE +201 -0
- package/README.md +92 -268
- package/build/src/blockchain/utils.js.map +1 -1
- package/build/src/config.js +86 -0
- package/build/src/config.js.map +1 -0
- package/build/src/db/archive-node-adapter/archive-node-adapter.js +29 -2
- package/build/src/db/archive-node-adapter/archive-node-adapter.js.map +1 -1
- package/build/src/db/archive-node-adapter/postgres-options.js +35 -0
- package/build/src/db/archive-node-adapter/postgres-options.js.map +1 -0
- package/build/src/db/sql/best-chain.js +5 -0
- package/build/src/db/sql/best-chain.js.map +1 -0
- package/build/src/db/sql/events-actions/queries.js +102 -21
- package/build/src/db/sql/events-actions/queries.js.map +1 -1
- package/build/src/db/sql/verification-key-updates/queries.js +100 -0
- package/build/src/db/sql/verification-key-updates/queries.js.map +1 -0
- package/build/src/db/sql/zkapp-commands/queries.js +363 -0
- package/build/src/db/sql/zkapp-commands/queries.js.map +1 -0
- package/build/src/db/sql/zkapp-commands/types.js +2 -0
- package/build/src/db/sql/zkapp-commands/types.js.map +1 -0
- package/build/src/errors/error.js +4 -1
- package/build/src/errors/error.js.map +1 -1
- package/build/src/index.js +44 -7
- package/build/src/index.js.map +1 -1
- package/build/src/resolvers.js +42 -23
- package/build/src/resolvers.js.map +1 -1
- package/build/src/schema-version.js +2 -0
- package/build/src/schema-version.js.map +1 -0
- package/build/src/server/cors.js +41 -0
- package/build/src/server/cors.js.map +1 -0
- package/build/src/server/graceful-shutdown.js +42 -0
- package/build/src/server/graceful-shutdown.js.map +1 -0
- package/build/src/server/graphql-armor.js +39 -0
- package/build/src/server/graphql-armor.js.map +1 -0
- package/build/src/server/logger.js +45 -0
- package/build/src/server/logger.js.map +1 -0
- package/build/src/server/metrics.js +72 -0
- package/build/src/server/metrics.js.map +1 -0
- package/build/src/server/plugins.js +31 -15
- package/build/src/server/plugins.js.map +1 -1
- package/build/src/server/rate-limit.js +143 -0
- package/build/src/server/rate-limit.js.map +1 -0
- package/build/src/server/readiness.js +45 -0
- package/build/src/server/readiness.js.map +1 -0
- package/build/src/server/request-logging.js +58 -0
- package/build/src/server/request-logging.js.map +1 -0
- package/build/src/server/server.js +38 -13
- package/build/src/server/server.js.map +1 -1
- package/build/src/services/actions-service/actions-service.js +26 -15
- package/build/src/services/actions-service/actions-service.js.map +1 -1
- package/build/src/services/blocks-service/blocks-service.js +10 -9
- package/build/src/services/blocks-service/blocks-service.js.map +1 -1
- package/build/src/services/network-service/network-service.js +17 -9
- package/build/src/services/network-service/network-service.js.map +1 -1
- package/build/src/services/verification-key-updates-service/verification-key-updates-service.interface.js +2 -0
- package/build/src/services/verification-key-updates-service/verification-key-updates-service.interface.js.map +1 -0
- package/build/src/services/verification-key-updates-service/verification-key-updates-service.js +41 -0
- package/build/src/services/verification-key-updates-service/verification-key-updates-service.js.map +1 -0
- package/build/src/services/zkapp-commands-service/zkapp-commands-service.interface.js +2 -0
- package/build/src/services/zkapp-commands-service/zkapp-commands-service.interface.js.map +1 -0
- package/build/src/services/zkapp-commands-service/zkapp-commands-service.js +115 -0
- package/build/src/services/zkapp-commands-service/zkapp-commands-service.js.map +1 -0
- package/build/src/tracing/jaeger-tracing.js +2 -1
- package/build/src/tracing/jaeger-tracing.js.map +1 -1
- package/build/tests/devnet-dump/action-state-invariants.js +165 -0
- package/build/tests/devnet-dump/action-state-invariants.js.map +1 -0
- package/build/tests/devnet-dump/devnet-dump.test.js +24 -10
- package/build/tests/devnet-dump/devnet-dump.test.js.map +1 -1
- package/build/tests/devnet-dump/setup.js +63 -17
- package/build/tests/devnet-dump/setup.js.map +1 -1
- package/build/tests/integration/action-state-ordering.test.js +139 -0
- package/build/tests/integration/action-state-ordering.test.js.map +1 -0
- package/build/tests/integration/action-state-setup.js +48 -0
- package/build/tests/integration/action-state-setup.js.map +1 -0
- package/build/tests/integration/consensus-vs-chain.test.js +81 -0
- package/build/tests/integration/consensus-vs-chain.test.js.map +1 -0
- package/build/tests/integration/integration.test.js +166 -2
- package/build/tests/integration/integration.test.js.map +1 -1
- package/build/tests/integration/postgres-timeout.test.js +92 -0
- package/build/tests/integration/postgres-timeout.test.js.map +1 -0
- package/build/tests/integration/setup.js +58 -1
- package/build/tests/integration/setup.js.map +1 -1
- package/build/tests/integration/verification-key-setup.js +49 -0
- package/build/tests/integration/verification-key-setup.js.map +1 -0
- package/build/tests/integration/verification-key-updates.test.js +159 -0
- package/build/tests/integration/verification-key-updates.test.js.map +1 -0
- package/build/tests/live-api/events.test.js +11 -7
- package/build/tests/live-api/events.test.js.map +1 -1
- package/build/tests/live-api/networkState.test.js +1 -0
- package/build/tests/live-api/networkState.test.js.map +1 -1
- package/build/tests/live-network/live-network.test.js +1 -0
- package/build/tests/live-network/live-network.test.js.map +1 -1
- package/build/tests/resolvers.test.js +65 -37
- package/build/tests/resolvers.test.js.map +1 -1
- package/build/tests/services/verification-key-updates-service/verification-key-updates-service.test.js +35 -0
- package/build/tests/services/verification-key-updates-service/verification-key-updates-service.test.js.map +1 -0
- package/build/tests/services/zkapp-commands-service/zkapp-commands-service.test.js +159 -0
- package/build/tests/services/zkapp-commands-service/zkapp-commands-service.test.js.map +1 -0
- package/build/tests/test-helpers.js +15 -0
- package/build/tests/test-helpers.js.map +1 -1
- package/build/tests/unit/best-chain-anchor.test.js +70 -0
- package/build/tests/unit/best-chain-anchor.test.js.map +1 -0
- package/build/tests/unit/config.test.js +106 -0
- package/build/tests/unit/config.test.js.map +1 -0
- package/build/tests/unit/cors.test.js +95 -0
- package/build/tests/unit/cors.test.js.map +1 -0
- package/build/tests/unit/error-masking.test.js +119 -0
- package/build/tests/unit/error-masking.test.js.map +1 -0
- package/build/tests/unit/graceful-shutdown.test.js +99 -0
- package/build/tests/unit/graceful-shutdown.test.js.map +1 -0
- package/build/tests/unit/graphql-armor.test.js +121 -0
- package/build/tests/unit/graphql-armor.test.js.map +1 -0
- package/build/tests/unit/logging.test.js +120 -0
- package/build/tests/unit/logging.test.js.map +1 -0
- package/build/tests/unit/metrics.test.js +114 -0
- package/build/tests/unit/metrics.test.js.map +1 -0
- package/build/tests/unit/network-service.test.js +66 -0
- package/build/tests/unit/network-service.test.js.map +1 -0
- package/build/tests/unit/postgres-options.test.js +56 -0
- package/build/tests/unit/postgres-options.test.js.map +1 -0
- package/build/tests/unit/rate-limit.test.js +271 -0
- package/build/tests/unit/rate-limit.test.js.map +1 -0
- package/build/tests/unit/readiness.test.js +75 -0
- package/build/tests/unit/readiness.test.js.map +1 -0
- package/build/tests/unit/schema-nullability.test.js +40 -0
- package/build/tests/unit/schema-nullability.test.js.map +1 -0
- package/build/tests/unit/schema-version.test.js +48 -0
- package/build/tests/unit/schema-version.test.js.map +1 -0
- package/build/tests/unit/yoga-http-contract.test.js +30 -0
- package/build/tests/unit/yoga-http-contract.test.js.map +1 -0
- package/build/tests/unit/zkapp-commands-gating.test.js +38 -0
- package/build/tests/unit/zkapp-commands-gating.test.js.map +1 -0
- package/build/zkapp/utils.js +2 -0
- package/build/zkapp/utils.js.map +1 -1
- package/package.json +33 -14
- package/schema.graphql +126 -8
- package/src/blockchain/types.ts +65 -1
- package/src/blockchain/utils.ts +26 -2
- package/src/config.ts +133 -0
- package/src/db/archive-node-adapter/archive-node-adapter.interface.ts +26 -3
- package/src/db/archive-node-adapter/archive-node-adapter.ts +65 -2
- package/src/db/archive-node-adapter/postgres-options.ts +90 -0
- package/src/db/sql/best-chain.ts +34 -0
- package/src/db/sql/events-actions/queries.ts +168 -24
- package/src/db/sql/verification-key-updates/queries.ts +132 -0
- package/src/db/sql/zkapp-commands/queries.ts +406 -0
- package/src/db/sql/zkapp-commands/types.ts +43 -0
- package/src/envionment.d.ts +20 -0
- package/src/errors/error.ts +17 -1
- package/src/index.ts +64 -7
- package/src/resolvers-types.ts +311 -24
- package/src/resolvers.ts +70 -34
- package/src/schema-version.ts +24 -0
- package/src/server/cors.ts +97 -0
- package/src/server/graceful-shutdown.ts +76 -0
- package/src/server/graphql-armor.ts +78 -0
- package/src/server/logger.ts +72 -0
- package/src/server/metrics.ts +104 -0
- package/src/server/plugins.ts +53 -19
- package/src/server/rate-limit.ts +274 -0
- package/src/server/readiness.ts +78 -0
- package/src/server/request-logging.ts +83 -0
- package/src/server/server.ts +70 -15
- package/src/services/actions-service/actions-service.ts +87 -24
- package/src/services/blocks-service/blocks-service.ts +16 -14
- package/src/services/network-service/network-service.ts +30 -12
- package/src/services/verification-key-updates-service/verification-key-updates-service.interface.ts +9 -0
- package/src/services/verification-key-updates-service/verification-key-updates-service.ts +72 -0
- package/src/services/zkapp-commands-service/zkapp-commands-service.interface.ts +9 -0
- package/src/services/zkapp-commands-service/zkapp-commands-service.ts +181 -0
- package/src/tracing/jaeger-tracing.ts +2 -1
- package/build/tests/consensus/run-compare.js +0 -40
- package/build/tests/consensus/run-compare.js.map +0 -1
- package/build/tests/consensus/select-consensus-precomputed.js +0 -80
- package/build/tests/consensus/select-consensus-precomputed.js.map +0 -1
- package/build/tests/consensus/types.js +0 -15
- package/build/tests/consensus/types.js.map +0 -1
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
import { describe, test, before, after } from 'node:test';
|
|
2
2
|
import assert from 'node:assert';
|
|
3
|
+
import { execFileSync } from 'node:child_process';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
import { fileURLToPath } from 'node:url';
|
|
3
6
|
import { EventsService } from '../../src/services/events-service/events-service.js';
|
|
4
7
|
import { ActionsService } from '../../src/services/actions-service/actions-service.js';
|
|
5
8
|
import { NetworkService } from '../../src/services/network-service/network-service.js';
|
|
6
9
|
import { BlocksService } from '../../src/services/blocks-service/blocks-service.js';
|
|
10
|
+
import { ZkappCommandsService } from '../../src/services/zkapp-commands-service/zkapp-commands-service.js';
|
|
11
|
+
import { VerificationKeyUpdatesService } from '../../src/services/verification-key-updates-service/verification-key-updates-service.js';
|
|
7
12
|
import { BlockStatusFilter } from '../../src/blockchain/types.js';
|
|
13
|
+
import { BlockSortByInput } from '../../src/resolvers-types.js';
|
|
8
14
|
import { TracingState } from '../../src/tracing/tracer.js';
|
|
9
|
-
import { setupTestDatabase, teardownTestDatabase, createTestClient, } from './setup.js';
|
|
15
|
+
import { setupTestDatabase, teardownTestDatabase, createTestClient, connectionString, } from './setup.js';
|
|
10
16
|
const nullOptions = { tracingState: new TracingState(undefined) };
|
|
11
17
|
let client;
|
|
12
18
|
before(async () => {
|
|
@@ -102,7 +108,10 @@ describe('BlocksService (integration)', () => {
|
|
|
102
108
|
const allBlocks = await blocksService.getBlocks({ canonical: true }, 1, 'BLOCKHEIGHT_DESC', nullOptions);
|
|
103
109
|
const latestTime = new Date(allBlocks[0].dateTime);
|
|
104
110
|
const oneHourBefore = new Date(latestTime.getTime() - 3600000);
|
|
105
|
-
const blocks = await blocksService.getBlocks({
|
|
111
|
+
const blocks = await blocksService.getBlocks({
|
|
112
|
+
dateTime_gte: oneHourBefore.toISOString(),
|
|
113
|
+
dateTime_lt: latestTime.toISOString(),
|
|
114
|
+
}, null, null, nullOptions);
|
|
106
115
|
for (const block of blocks) {
|
|
107
116
|
const blockTime = new Date(block.dateTime);
|
|
108
117
|
assert.ok(blockTime >= oneHourBefore && blockTime < latestTime);
|
|
@@ -122,10 +131,83 @@ describe('NetworkService (integration)', () => {
|
|
|
122
131
|
});
|
|
123
132
|
test('pending height > canonical height', async () => {
|
|
124
133
|
const state = await networkService.getNetworkState(nullOptions);
|
|
134
|
+
assert.ok(state.maxBlockHeight, 'fixture seeds both canonical and pending rows');
|
|
125
135
|
assert.ok(state.maxBlockHeight.pendingMaxBlockHeight >
|
|
126
136
|
state.maxBlockHeight.canonicalMaxBlockHeight);
|
|
127
137
|
});
|
|
128
138
|
});
|
|
139
|
+
describe('Hard-fork shape (integration)', () => {
|
|
140
|
+
const ORPHAN_ABOVE_TIP = '3NKorphan_above_the_pending_tip_hard_fork_shape';
|
|
141
|
+
let blocksService;
|
|
142
|
+
let networkService;
|
|
143
|
+
let tipHeight;
|
|
144
|
+
before(async () => {
|
|
145
|
+
blocksService = new BlocksService(client);
|
|
146
|
+
networkService = new NetworkService(client);
|
|
147
|
+
const [tip] = await client.unsafe(`SELECT height FROM blocks WHERE chain_status = 'pending' ORDER BY height DESC LIMIT 1`);
|
|
148
|
+
tipHeight = Number(tip.height);
|
|
149
|
+
await client.unsafe(`
|
|
150
|
+
INSERT INTO blocks (
|
|
151
|
+
id, state_hash, parent_id, parent_hash, creator_id, block_winner_id,
|
|
152
|
+
last_vrf_output,
|
|
153
|
+
snarked_ledger_hash_id, staking_epoch_data_id, next_epoch_data_id,
|
|
154
|
+
min_window_density, sub_window_densities, total_currency,
|
|
155
|
+
ledger_hash, height, global_slot_since_hard_fork, global_slot_since_genesis,
|
|
156
|
+
protocol_version_id, proposed_protocol_version_id,
|
|
157
|
+
timestamp, chain_status
|
|
158
|
+
)
|
|
159
|
+
SELECT
|
|
160
|
+
(SELECT max(id) + 1 FROM blocks),
|
|
161
|
+
'${ORPHAN_ABOVE_TIP}',
|
|
162
|
+
id,
|
|
163
|
+
state_hash,
|
|
164
|
+
creator_id,
|
|
165
|
+
block_winner_id,
|
|
166
|
+
last_vrf_output,
|
|
167
|
+
snarked_ledger_hash_id,
|
|
168
|
+
staking_epoch_data_id,
|
|
169
|
+
next_epoch_data_id,
|
|
170
|
+
min_window_density,
|
|
171
|
+
sub_window_densities,
|
|
172
|
+
total_currency,
|
|
173
|
+
ledger_hash,
|
|
174
|
+
height + 1,
|
|
175
|
+
global_slot_since_hard_fork + 1,
|
|
176
|
+
global_slot_since_genesis + 1,
|
|
177
|
+
protocol_version_id,
|
|
178
|
+
proposed_protocol_version_id,
|
|
179
|
+
(timestamp::bigint + 60000)::text,
|
|
180
|
+
'orphaned'
|
|
181
|
+
FROM blocks
|
|
182
|
+
WHERE chain_status = 'pending'
|
|
183
|
+
ORDER BY height DESC
|
|
184
|
+
LIMIT 1
|
|
185
|
+
`);
|
|
186
|
+
});
|
|
187
|
+
after(async () => {
|
|
188
|
+
await client.unsafe(`DELETE FROM blocks WHERE state_hash = '${ORPHAN_ABOVE_TIP}'`);
|
|
189
|
+
});
|
|
190
|
+
test('networkState ignores the abandoned block above the tip', async () => {
|
|
191
|
+
const state = await networkService.getNetworkState(nullOptions);
|
|
192
|
+
assert.ok(state.maxBlockHeight);
|
|
193
|
+
assert.strictEqual(state.maxBlockHeight.pendingMaxBlockHeight, tipHeight);
|
|
194
|
+
});
|
|
195
|
+
test('inBestChain=true still reaches the pending tip', async () => {
|
|
196
|
+
const blocks = await blocksService.getBlocks({ inBestChain: true, blockHeight_gte: tipHeight }, null, null, nullOptions);
|
|
197
|
+
assert.deepStrictEqual(blocks.map((b) => Number(b.blockHeight)), [tipHeight], 'the pending tip must be in the best chain even with an orphan above it');
|
|
198
|
+
assert.notStrictEqual(blocks[0].stateHash, ORPHAN_ABOVE_TIP);
|
|
199
|
+
});
|
|
200
|
+
test('the best chain and networkState agree on the tip', async () => {
|
|
201
|
+
const state = await networkService.getNetworkState(nullOptions);
|
|
202
|
+
const blocks = await blocksService.getBlocks({ inBestChain: true }, null, BlockSortByInput.BlockheightDesc, nullOptions);
|
|
203
|
+
assert.ok(state.maxBlockHeight);
|
|
204
|
+
assert.strictEqual(Number(blocks[0].blockHeight), state.maxBlockHeight.pendingMaxBlockHeight);
|
|
205
|
+
});
|
|
206
|
+
test('inBestChain=false reports the abandoned block', async () => {
|
|
207
|
+
const blocks = await blocksService.getBlocks({ inBestChain: false, blockHeight_gte: tipHeight }, null, null, nullOptions);
|
|
208
|
+
assert.deepStrictEqual(blocks.map((b) => b.stateHash), [ORPHAN_ABOVE_TIP]);
|
|
209
|
+
});
|
|
210
|
+
});
|
|
129
211
|
describe('EventsService (integration)', () => {
|
|
130
212
|
let eventsService;
|
|
131
213
|
before(() => {
|
|
@@ -198,6 +280,86 @@ describe('ActionsService (integration)', () => {
|
|
|
198
280
|
});
|
|
199
281
|
});
|
|
200
282
|
});
|
|
283
|
+
describe('Base fixture zkApp coverage (integration)', () => {
|
|
284
|
+
const SDK_ADDRESS = 'B62qiaEMrWiYdK7LcJ2ScdMyG8LzUxi7yaw17XvBD34on7UKfhAkRML';
|
|
285
|
+
const SDK_VK_HASH = '330109536550383627416201330124291596191867681867265169258470531313815097966';
|
|
286
|
+
const SDK_COMMAND_HASH = '5JuSdkFixtureAppZkappCommandForSdkTestsHashPadding1';
|
|
287
|
+
test('events: the applied command at the canonical tip is decoded', async () => {
|
|
288
|
+
const events = await new EventsService(client).getEvents({ address: SDK_ADDRESS, status: BlockStatusFilter.canonical }, nullOptions);
|
|
289
|
+
assert.strictEqual(events.length, 1);
|
|
290
|
+
assert.strictEqual(events[0].blockInfo.height, 25);
|
|
291
|
+
assert.deepStrictEqual(events[0].eventData.map((e) => e.data), [['0', '1']]);
|
|
292
|
+
assert.strictEqual(events[0].eventData[0].transactionInfo.status, 'applied');
|
|
293
|
+
});
|
|
294
|
+
test('actions: the applied command at the canonical tip is decoded', async () => {
|
|
295
|
+
const actions = await new ActionsService(client).getActions({ address: SDK_ADDRESS, status: BlockStatusFilter.canonical }, nullOptions);
|
|
296
|
+
assert.strictEqual(actions.length, 1);
|
|
297
|
+
assert.strictEqual(actions[0].blockInfo.height, 25);
|
|
298
|
+
assert.deepStrictEqual(actions[0].actionData.map((a) => a.data), [['2', '3']]);
|
|
299
|
+
});
|
|
300
|
+
test('verificationKeyUpdates: the key set at height 25 is returned', async () => {
|
|
301
|
+
const updates = await new VerificationKeyUpdatesService(client).getVerificationKeyUpdates({ verificationKeyHash: SDK_VK_HASH, from: 1, to: 27 }, nullOptions);
|
|
302
|
+
assert.deepStrictEqual(updates.map((u) => [u.address, u.blockInfo.height]), [[SDK_ADDRESS, 25]]);
|
|
303
|
+
});
|
|
304
|
+
test('blocks: the canonical tip carries the command as applied', () => {
|
|
305
|
+
const here = path.dirname(fileURLToPath(import.meta.url));
|
|
306
|
+
const blocksServicePath = path.resolve(here, '../../src/services/blocks-service/blocks-service.js');
|
|
307
|
+
const tracerPath = path.resolve(here, '../../src/tracing/tracer.js');
|
|
308
|
+
const script = `
|
|
309
|
+
const postgres = (await import('postgres')).default;
|
|
310
|
+
const { BlocksService } = await import(${JSON.stringify(blocksServicePath)});
|
|
311
|
+
const { TracingState } = await import(${JSON.stringify(tracerPath)});
|
|
312
|
+
const client = postgres(${JSON.stringify(connectionString)}, { max: 1 });
|
|
313
|
+
try {
|
|
314
|
+
const blocks = await new BlocksService(client).getBlocks(
|
|
315
|
+
{ canonical: true, blockHeight_gte: 25, blockHeight_lt: 26 },
|
|
316
|
+
null,
|
|
317
|
+
null,
|
|
318
|
+
{ tracingState: new TracingState(undefined) }
|
|
319
|
+
);
|
|
320
|
+
console.log(JSON.stringify(blocks.map((b) => ({
|
|
321
|
+
height: b.blockHeight,
|
|
322
|
+
zkappCommands: b.transactions.zkappCommands,
|
|
323
|
+
}))));
|
|
324
|
+
} finally {
|
|
325
|
+
await client.end();
|
|
326
|
+
}
|
|
327
|
+
`;
|
|
328
|
+
const out = execFileSync(process.execPath, ['--input-type=module', '-e', script], {
|
|
329
|
+
env: { ...process.env, ENABLE_BLOCK_TRANSACTION_DETAILS: 'true' },
|
|
330
|
+
encoding: 'utf-8',
|
|
331
|
+
});
|
|
332
|
+
const blocks = JSON.parse(out.trim());
|
|
333
|
+
assert.strictEqual(blocks.length, 1);
|
|
334
|
+
assert.strictEqual(Number(blocks[0].height), 25);
|
|
335
|
+
const command = blocks[0].zkappCommands.find((c) => c.hash === SDK_COMMAND_HASH);
|
|
336
|
+
assert.ok(command, 'the fixture command should be in the height 25 block');
|
|
337
|
+
assert.strictEqual(command.status, 'applied');
|
|
338
|
+
assert.strictEqual(command.failureReason, null);
|
|
339
|
+
});
|
|
340
|
+
});
|
|
341
|
+
describe('ZkappCommandsService (integration)', () => {
|
|
342
|
+
let zkappCommandsService;
|
|
343
|
+
before(() => {
|
|
344
|
+
zkappCommandsService = new ZkappCommandsService(client);
|
|
345
|
+
});
|
|
346
|
+
test('returns successful zkApp commands with account updates', async () => {
|
|
347
|
+
const commands = await zkappCommandsService.getZkappCommands({
|
|
348
|
+
blockStatus: BlockStatusFilter.canonical,
|
|
349
|
+
from: 25,
|
|
350
|
+
to: 26,
|
|
351
|
+
}, nullOptions);
|
|
352
|
+
const seeded = commands.find((command) => command.hash === 'integration-test-zkapp-command-hash');
|
|
353
|
+
assert.ok(seeded, `seeded command not returned; got ${commands
|
|
354
|
+
.map((c) => c.hash)
|
|
355
|
+
.join(', ')}`);
|
|
356
|
+
assert.strictEqual(seeded.blockInfo.height, 25);
|
|
357
|
+
assert.strictEqual(seeded.blockInfo.chainStatus, 'canonical');
|
|
358
|
+
assert.strictEqual(seeded.accountUpdates.length, 1);
|
|
359
|
+
assert.ok(seeded.accountUpdates[0].publicKey.length > 0);
|
|
360
|
+
assert.deepStrictEqual(seeded.accountUpdates[0].events, []);
|
|
361
|
+
});
|
|
362
|
+
});
|
|
201
363
|
describe('Schema validation (integration)', () => {
|
|
202
364
|
test('all required tables exist', async () => {
|
|
203
365
|
const tables = await client `
|
|
@@ -210,11 +372,13 @@ describe('Schema validation (integration)', () => {
|
|
|
210
372
|
'accounts_accessed',
|
|
211
373
|
'blocks_zkapp_commands',
|
|
212
374
|
'zkapp_commands',
|
|
375
|
+
'zkapp_fee_payer_body',
|
|
213
376
|
'zkapp_account_update',
|
|
214
377
|
'zkapp_account_update_body',
|
|
215
378
|
'zkapp_events',
|
|
216
379
|
'zkapp_field_array',
|
|
217
380
|
'zkapp_field',
|
|
381
|
+
'zkapp_updates',
|
|
218
382
|
'zkapp_accounts',
|
|
219
383
|
'zkapp_action_states',
|
|
220
384
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integration.test.js","sourceRoot":"","sources":["../../../tests/integration/integration.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"integration.test.js","sourceRoot":"","sources":["../../../tests/integration/integration.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { describe, test, before, after } from 'node:test';
|
|
2
|
+
import assert from 'node:assert';
|
|
3
|
+
import postgres from 'postgres';
|
|
4
|
+
import { buildPostgresOptions } from '../../src/db/archive-node-adapter/postgres-options.js';
|
|
5
|
+
import { setupTestDatabase, teardownTestDatabase, connectionString, } from './setup.js';
|
|
6
|
+
const QUERY_CANCELED = '57014';
|
|
7
|
+
const TEST_DATABASE = decodeURIComponent(new URL(connectionString).pathname.slice(1));
|
|
8
|
+
function quoteIdentifier(identifier) {
|
|
9
|
+
return `"${identifier.replaceAll('"', '""')}"`;
|
|
10
|
+
}
|
|
11
|
+
function quoteLiteral(value) {
|
|
12
|
+
return `'${value.replaceAll("'", "''")}'`;
|
|
13
|
+
}
|
|
14
|
+
async function setDatabaseStatementTimeout(value) {
|
|
15
|
+
const sql = postgres(connectionString, { max: 1 });
|
|
16
|
+
try {
|
|
17
|
+
await sql.unsafe(`ALTER DATABASE ${quoteIdentifier(TEST_DATABASE)} SET statement_timeout = ${quoteLiteral(value)}`);
|
|
18
|
+
}
|
|
19
|
+
finally {
|
|
20
|
+
await sql.end();
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
async function resetDatabaseStatementTimeout() {
|
|
24
|
+
const sql = postgres(connectionString, { max: 1 });
|
|
25
|
+
try {
|
|
26
|
+
await sql.unsafe(`ALTER DATABASE ${quoteIdentifier(TEST_DATABASE)} RESET statement_timeout`);
|
|
27
|
+
}
|
|
28
|
+
finally {
|
|
29
|
+
await sql.end();
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
describe('Postgres statement timeout', () => {
|
|
33
|
+
before(async () => {
|
|
34
|
+
await setupTestDatabase();
|
|
35
|
+
});
|
|
36
|
+
after(async () => {
|
|
37
|
+
await teardownTestDatabase();
|
|
38
|
+
});
|
|
39
|
+
test('cancels a query that exceeds the timeout', async () => {
|
|
40
|
+
const sql = postgres(connectionString, buildPostgresOptions({ PG_STATEMENT_TIMEOUT: '200' }));
|
|
41
|
+
try {
|
|
42
|
+
await assert.rejects(() => sql `SELECT pg_sleep(1)`, (error) => error.code === QUERY_CANCELED, 'a query past statement_timeout should be cancelled by Postgres');
|
|
43
|
+
}
|
|
44
|
+
finally {
|
|
45
|
+
await sql.end();
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
test('the connection stays usable after a cancellation', async () => {
|
|
49
|
+
const sql = postgres(connectionString, buildPostgresOptions({ PG_STATEMENT_TIMEOUT: '200' }));
|
|
50
|
+
try {
|
|
51
|
+
await assert.rejects(() => sql `SELECT pg_sleep(1)`);
|
|
52
|
+
const [row] = await sql `SELECT 1 AS ok`;
|
|
53
|
+
assert.strictEqual(row.ok, 1);
|
|
54
|
+
}
|
|
55
|
+
finally {
|
|
56
|
+
await sql.end();
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
test('a query inside the timeout is unaffected', async () => {
|
|
60
|
+
const sql = postgres(connectionString, buildPostgresOptions({ PG_STATEMENT_TIMEOUT: '5000' }));
|
|
61
|
+
try {
|
|
62
|
+
const [row] = await sql `SELECT 1 AS ok`;
|
|
63
|
+
assert.strictEqual(row.ok, 1);
|
|
64
|
+
}
|
|
65
|
+
finally {
|
|
66
|
+
await sql.end();
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
test('PG_STATEMENT_TIMEOUT=0 disables the timeout', async () => {
|
|
70
|
+
const sql = postgres(connectionString, buildPostgresOptions({ PG_STATEMENT_TIMEOUT: '0' }));
|
|
71
|
+
try {
|
|
72
|
+
const [row] = await sql `SELECT pg_sleep(0.3), 1 AS ok`;
|
|
73
|
+
assert.strictEqual(row.ok, 1);
|
|
74
|
+
}
|
|
75
|
+
finally {
|
|
76
|
+
await sql.end();
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
test('PG_STATEMENT_TIMEOUT=0 sends an explicit session-level disable', async () => {
|
|
80
|
+
await setDatabaseStatementTimeout('1s');
|
|
81
|
+
const sql = postgres(connectionString, buildPostgresOptions({ PG_STATEMENT_TIMEOUT: '0' }));
|
|
82
|
+
try {
|
|
83
|
+
const [row] = await sql `SELECT current_setting('statement_timeout') AS t`;
|
|
84
|
+
assert.strictEqual(row.t, '0');
|
|
85
|
+
}
|
|
86
|
+
finally {
|
|
87
|
+
await sql.end();
|
|
88
|
+
await resetDatabaseStatementTimeout();
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
//# sourceMappingURL=postgres-timeout.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postgres-timeout.test.js","sourceRoot":"","sources":["../../../tests/integration/postgres-timeout.test.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,oBAAoB,EAAE,MAAM,uDAAuD,CAAC;AAC7F,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAGpB,MAAM,cAAc,GAAG,OAAO,CAAC;AAC/B,MAAM,aAAa,GAAG,kBAAkB,CACtC,IAAI,GAAG,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAC5C,CAAC;AAEF,SAAS,eAAe,CAAC,UAAkB;IACzC,OAAO,IAAI,UAAU,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC;AACjD,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IACjC,OAAO,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC;AAC5C,CAAC;AAED,KAAK,UAAU,2BAA2B,CAAC,KAAa;IACtD,MAAM,GAAG,GAAG,QAAQ,CAAC,gBAAgB,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACnD,IAAI,CAAC;QACH,MAAM,GAAG,CAAC,MAAM,CACd,kBAAkB,eAAe,CAC/B,aAAa,CACd,4BAA4B,YAAY,CAAC,KAAK,CAAC,EAAE,CACnD,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC;IAClB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,6BAA6B;IAC1C,MAAM,GAAG,GAAG,QAAQ,CAAC,gBAAgB,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACnD,IAAI,CAAC;QACH,MAAM,GAAG,CAAC,MAAM,CACd,kBAAkB,eAAe,CAAC,aAAa,CAAC,0BAA0B,CAC3E,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC;IAClB,CAAC;AACH,CAAC;AAED,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,MAAM,CAAC,KAAK,IAAI,EAAE;QAChB,MAAM,iBAAiB,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,KAAK,IAAI,EAAE;QACf,MAAM,oBAAoB,EAAE,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QAG1D,MAAM,GAAG,GAAG,QAAQ,CAClB,gBAAgB,EAChB,oBAAoB,CAAC,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC,CACtD,CAAC;QACF,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,OAAO,CAClB,GAAG,EAAE,CAAC,GAAG,CAAA,oBAAoB,EAC7B,CAAC,KAAwB,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,cAAc,EAC3D,gEAAgE,CACjE,CAAC;QACJ,CAAC;gBAAS,CAAC;YACT,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;QAGlE,MAAM,GAAG,GAAG,QAAQ,CAClB,gBAAgB,EAChB,oBAAoB,CAAC,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC,CACtD,CAAC;QACF,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,CAAA,oBAAoB,CAAC,CAAC;YACpD,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,CAAkB,gBAAgB,CAAC;YAC1D,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAChC,CAAC;gBAAS,CAAC;YACT,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,GAAG,GAAG,QAAQ,CAClB,gBAAgB,EAChB,oBAAoB,CAAC,EAAE,oBAAoB,EAAE,MAAM,EAAE,CAAC,CACvD,CAAC;QACF,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,CAAkB,gBAAgB,CAAC;YAC1D,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAChC,CAAC;gBAAS,CAAC;YACT,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAI7D,MAAM,GAAG,GAAG,QAAQ,CAClB,gBAAgB,EAChB,oBAAoB,CAAC,EAAE,oBAAoB,EAAE,GAAG,EAAE,CAAC,CACpD,CAAC;QACF,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,CAAkB,+BAA+B,CAAC;YACzE,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAChC,CAAC;gBAAS,CAAC;YACT,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,gEAAgE,EAAE,KAAK,IAAI,EAAE;QAChF,MAAM,2BAA2B,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,GAAG,GAAG,QAAQ,CAClB,gBAAgB,EAChB,oBAAoB,CAAC,EAAE,oBAAoB,EAAE,GAAG,EAAE,CAAC,CACpD,CAAC;QACF,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,CAEtB,kDAAkD,CAAC;YACpD,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC;gBAAS,CAAC;YACT,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC;YAChB,MAAM,6BAA6B,EAAE,CAAC;QACxC,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -22,7 +22,8 @@ export async function setupTestDatabase() {
|
|
|
22
22
|
finally {
|
|
23
23
|
await admin.end();
|
|
24
24
|
}
|
|
25
|
-
|
|
25
|
+
const stopOnError = ARCHIVE_DUMP_PATH === DEFAULT_DUMP_PATH ? '-v ON_ERROR_STOP=1 ' : '';
|
|
26
|
+
execSync(`PGPASSWORD=${PG_TEST_PASSWORD} psql ${stopOnError}-h ${PG_TEST_HOST} -p ${PG_TEST_PORT} -U ${PG_TEST_USER} -d ${PG_TEST_DB} -f ${ARCHIVE_DUMP_PATH}`, { stdio: 'pipe' });
|
|
26
27
|
const db = postgres(connectionString, { max: 1 });
|
|
27
28
|
try {
|
|
28
29
|
await db.unsafe(`
|
|
@@ -60,6 +61,62 @@ export async function setupTestDatabase() {
|
|
|
60
61
|
FROM blocks
|
|
61
62
|
WHERE height = (SELECT max(height) FROM blocks)
|
|
62
63
|
LIMIT 1
|
|
64
|
+
`);
|
|
65
|
+
await db.unsafe(`
|
|
66
|
+
WITH inserted_fee_payer AS (
|
|
67
|
+
INSERT INTO zkapp_fee_payer_body (
|
|
68
|
+
public_key_id,
|
|
69
|
+
fee,
|
|
70
|
+
valid_until,
|
|
71
|
+
nonce
|
|
72
|
+
)
|
|
73
|
+
SELECT
|
|
74
|
+
(SELECT id FROM public_keys ORDER BY id LIMIT 1),
|
|
75
|
+
'100000000',
|
|
76
|
+
NULL,
|
|
77
|
+
0
|
|
78
|
+
RETURNING id
|
|
79
|
+
),
|
|
80
|
+
inserted_command AS (
|
|
81
|
+
INSERT INTO zkapp_commands (
|
|
82
|
+
zkapp_fee_payer_body_id,
|
|
83
|
+
zkapp_account_updates_ids,
|
|
84
|
+
memo,
|
|
85
|
+
hash
|
|
86
|
+
)
|
|
87
|
+
SELECT
|
|
88
|
+
inserted_fee_payer.id,
|
|
89
|
+
ARRAY[(SELECT id FROM zkapp_account_update ORDER BY id LIMIT 1)],
|
|
90
|
+
'integration-test-memo',
|
|
91
|
+
'integration-test-zkapp-command-hash'
|
|
92
|
+
FROM inserted_fee_payer
|
|
93
|
+
RETURNING id
|
|
94
|
+
)
|
|
95
|
+
INSERT INTO blocks_zkapp_commands (
|
|
96
|
+
block_id,
|
|
97
|
+
zkapp_command_id,
|
|
98
|
+
sequence_no,
|
|
99
|
+
status,
|
|
100
|
+
failure_reasons_ids
|
|
101
|
+
)
|
|
102
|
+
SELECT
|
|
103
|
+
canonical_tip.id,
|
|
104
|
+
inserted_command.id,
|
|
105
|
+
COALESCE((
|
|
106
|
+
SELECT max(sequence_no) + 1
|
|
107
|
+
FROM blocks_zkapp_commands
|
|
108
|
+
WHERE block_id = canonical_tip.id
|
|
109
|
+
), 0),
|
|
110
|
+
'applied',
|
|
111
|
+
NULL
|
|
112
|
+
FROM inserted_command
|
|
113
|
+
CROSS JOIN (
|
|
114
|
+
SELECT id
|
|
115
|
+
FROM blocks
|
|
116
|
+
WHERE chain_status = 'canonical'
|
|
117
|
+
ORDER BY height DESC
|
|
118
|
+
LIMIT 1
|
|
119
|
+
) canonical_tip
|
|
63
120
|
`);
|
|
64
121
|
}
|
|
65
122
|
finally {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../tests/integration/setup.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../tests/integration/setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { execSync } from 'child_process';
|
|
2
|
+
import postgres from 'postgres';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
const PG_TEST_HOST = process.env.PG_TEST_HOST ?? 'localhost';
|
|
5
|
+
const PG_TEST_PORT = process.env.PG_TEST_PORT ?? '5432';
|
|
6
|
+
const PG_TEST_USER = process.env.PG_TEST_USER ?? 'postgres';
|
|
7
|
+
const PG_TEST_PASSWORD = process.env.PG_TEST_PASSWORD ?? 'postgres';
|
|
8
|
+
const PG_TEST_DB = process.env.PG_VERIFICATION_KEY_TEST_DB ??
|
|
9
|
+
'archive_node_api_verification_key_test';
|
|
10
|
+
const FIXTURE_DIR = path.resolve(process.cwd(), 'tests/integration/fixtures');
|
|
11
|
+
const BASE_DUMP = process.env.ARCHIVE_DUMP_PATH ?? path.join(FIXTURE_DIR, 'archive_db.sql');
|
|
12
|
+
const VERIFICATION_KEY_FIXTURE = path.join(FIXTURE_DIR, 'verification_key_updates.sql');
|
|
13
|
+
export const connectionString = `postgres://${PG_TEST_USER}:${PG_TEST_PASSWORD}@${PG_TEST_HOST}:${PG_TEST_PORT}/${PG_TEST_DB}`;
|
|
14
|
+
function adminConnectionString(db = 'postgres') {
|
|
15
|
+
return `postgres://${PG_TEST_USER}:${PG_TEST_PASSWORD}@${PG_TEST_HOST}:${PG_TEST_PORT}/${db}`;
|
|
16
|
+
}
|
|
17
|
+
function applySqlFile(file, { stopOnError }) {
|
|
18
|
+
execSync(`PGPASSWORD=${PG_TEST_PASSWORD} psql ${stopOnError ? '-v ON_ERROR_STOP=1' : ''} ` +
|
|
19
|
+
`-h ${PG_TEST_HOST} -p ${PG_TEST_PORT} -U ${PG_TEST_USER} -d ${PG_TEST_DB} -f ${file}`, { stdio: 'pipe' });
|
|
20
|
+
}
|
|
21
|
+
export async function setupTestDatabase() {
|
|
22
|
+
const admin = postgres(adminConnectionString(), { max: 1 });
|
|
23
|
+
try {
|
|
24
|
+
await admin.unsafe(`SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = '${PG_TEST_DB}' AND pid <> pg_backend_pid()`);
|
|
25
|
+
await admin.unsafe(`DROP DATABASE IF EXISTS ${PG_TEST_DB}`);
|
|
26
|
+
await admin.unsafe(`CREATE DATABASE ${PG_TEST_DB}`);
|
|
27
|
+
}
|
|
28
|
+
finally {
|
|
29
|
+
await admin.end();
|
|
30
|
+
}
|
|
31
|
+
applySqlFile(BASE_DUMP, {
|
|
32
|
+
stopOnError: process.env.ARCHIVE_DUMP_PATH === undefined,
|
|
33
|
+
});
|
|
34
|
+
applySqlFile(VERIFICATION_KEY_FIXTURE, { stopOnError: true });
|
|
35
|
+
}
|
|
36
|
+
export async function teardownTestDatabase() {
|
|
37
|
+
const admin = postgres(adminConnectionString(), { max: 1 });
|
|
38
|
+
try {
|
|
39
|
+
await admin.unsafe(`SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = '${PG_TEST_DB}' AND pid <> pg_backend_pid()`);
|
|
40
|
+
await admin.unsafe(`DROP DATABASE IF EXISTS ${PG_TEST_DB}`);
|
|
41
|
+
}
|
|
42
|
+
finally {
|
|
43
|
+
await admin.end();
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
export function createTestClient() {
|
|
47
|
+
return postgres(connectionString, { max: 5 });
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=verification-key-setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verification-key-setup.js","sourceRoot":"","sources":["../../../tests/integration/verification-key-setup.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,WAAW,CAAC;AAC7D,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,MAAM,CAAC;AACxD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,UAAU,CAAC;AAC5D,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,UAAU,CAAC;AACpE,MAAM,UAAU,GACd,OAAO,CAAC,GAAG,CAAC,2BAA2B;IACvC,wCAAwC,CAAC;AAE3C,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,4BAA4B,CAAC,CAAC;AAC9E,MAAM,SAAS,GACb,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;AAC5E,MAAM,wBAAwB,GAAG,IAAI,CAAC,IAAI,CACxC,WAAW,EACX,8BAA8B,CAC/B,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,cAAc,YAAY,IAAI,gBAAgB,IAAI,YAAY,IAAI,YAAY,IAAI,UAAU,EAAE,CAAC;AAE/H,SAAS,qBAAqB,CAAC,EAAE,GAAG,UAAU;IAC5C,OAAO,cAAc,YAAY,IAAI,gBAAgB,IAAI,YAAY,IAAI,YAAY,IAAI,EAAE,EAAE,CAAC;AAChG,CAAC;AAED,SAAS,YAAY,CAAC,IAAY,EAAE,EAAE,WAAW,EAA4B;IAC3E,QAAQ,CACN,cAAc,gBAAgB,SAAS,WAAW,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,GAAG;QAC/E,MAAM,YAAY,OAAO,YAAY,OAAO,YAAY,OAAO,UAAU,OAAO,IAAI,EAAE,EACxF,EAAE,KAAK,EAAE,MAAM,EAAE,CAClB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,MAAM,KAAK,GAAG,QAAQ,CAAC,qBAAqB,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IAC5D,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,MAAM,CAChB,2EAA2E,UAAU,+BAA+B,CACrH,CAAC;QACF,MAAM,KAAK,CAAC,MAAM,CAAC,2BAA2B,UAAU,EAAE,CAAC,CAAC;QAC5D,MAAM,KAAK,CAAC,MAAM,CAAC,mBAAmB,UAAU,EAAE,CAAC,CAAC;IACtD,CAAC;YAAS,CAAC;QACT,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC;IACpB,CAAC;IAKD,YAAY,CAAC,SAAS,EAAE;QACtB,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,SAAS;KACzD,CAAC,CAAC;IACH,YAAY,CAAC,wBAAwB,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,MAAM,KAAK,GAAG,QAAQ,CAAC,qBAAqB,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IAC5D,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,MAAM,CAChB,2EAA2E,UAAU,+BAA+B,CACrH,CAAC;QACF,MAAM,KAAK,CAAC,MAAM,CAAC,2BAA2B,UAAU,EAAE,CAAC,CAAC;IAC9D,CAAC;YAAS,CAAC;QACT,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC;IACpB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,QAAQ,CAAC,gBAAgB,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AAChD,CAAC"}
|