@o1-labs/mina-archive-node-graphql 0.0.6
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 +321 -0
- package/build/benchmark/setup.js +32 -0
- package/build/benchmark/setup.js.map +1 -0
- package/build/src/blockchain/constants.js +2 -0
- package/build/src/blockchain/constants.js.map +1 -0
- package/build/src/blockchain/types.js +7 -0
- package/build/src/blockchain/types.js.map +1 -0
- package/build/src/blockchain/utils.js +39 -0
- package/build/src/blockchain/utils.js.map +1 -0
- package/build/src/consensus/mina-consensus.js +59 -0
- package/build/src/consensus/mina-consensus.js.map +1 -0
- package/build/src/context.js +10 -0
- package/build/src/context.js.map +1 -0
- package/build/src/db/archive-node-adapter/archive-node-adapter.interface.js +2 -0
- package/build/src/db/archive-node-adapter/archive-node-adapter.interface.js.map +1 -0
- package/build/src/db/archive-node-adapter/archive-node-adapter.js +47 -0
- package/build/src/db/archive-node-adapter/archive-node-adapter.js.map +1 -0
- package/build/src/db/sql/events-actions/queries.js +438 -0
- package/build/src/db/sql/events-actions/queries.js.map +1 -0
- package/build/src/db/sql/events-actions/types.js +2 -0
- package/build/src/db/sql/events-actions/types.js.map +1 -0
- package/build/src/errors/error.js +17 -0
- package/build/src/errors/error.js.map +1 -0
- package/build/src/index.js +27 -0
- package/build/src/index.js.map +1 -0
- package/build/src/resolvers-types.js +8 -0
- package/build/src/resolvers-types.js.map +1 -0
- package/build/src/resolvers.js +67 -0
- package/build/src/resolvers.js.map +1 -0
- package/build/src/server/plugins.js +39 -0
- package/build/src/server/plugins.js.map +1 -0
- package/build/src/server/server.js +25 -0
- package/build/src/server/server.js.map +1 -0
- package/build/src/services/actions-service/actions-service.interface.js +2 -0
- package/build/src/services/actions-service/actions-service.interface.js.map +1 -0
- package/build/src/services/actions-service/actions-service.js +94 -0
- package/build/src/services/actions-service/actions-service.js.map +1 -0
- package/build/src/services/blocks-service/blocks-service.interface.js +2 -0
- package/build/src/services/blocks-service/blocks-service.interface.js.map +1 -0
- package/build/src/services/blocks-service/blocks-service.js +263 -0
- package/build/src/services/blocks-service/blocks-service.js.map +1 -0
- package/build/src/services/data-adapters/database-row-adapters.js +116 -0
- package/build/src/services/data-adapters/database-row-adapters.js.map +1 -0
- package/build/src/services/events-service/events-service.interface.js +2 -0
- package/build/src/services/events-service/events-service.interface.js.map +1 -0
- package/build/src/services/events-service/events-service.js +64 -0
- package/build/src/services/events-service/events-service.js.map +1 -0
- package/build/src/services/network-service/network-service.interface.js +2 -0
- package/build/src/services/network-service/network-service.interface.js.map +1 -0
- package/build/src/services/network-service/network-service.js +31 -0
- package/build/src/services/network-service/network-service.js.map +1 -0
- package/build/src/tracing/jaeger-setup.js +39 -0
- package/build/src/tracing/jaeger-setup.js.map +1 -0
- package/build/src/tracing/jaeger-tracing.js +29 -0
- package/build/src/tracing/jaeger-tracing.js.map +1 -0
- package/build/src/tracing/tracer.js +31 -0
- package/build/src/tracing/tracer.js.map +1 -0
- package/build/tests/__mocks__/generate_mock_data.js +13 -0
- package/build/tests/__mocks__/generate_mock_data.js.map +1 -0
- package/build/tests/consensus/run-compare.js +40 -0
- package/build/tests/consensus/run-compare.js.map +1 -0
- package/build/tests/consensus/select-consensus-precomputed.js +80 -0
- package/build/tests/consensus/select-consensus-precomputed.js.map +1 -0
- package/build/tests/consensus/types.js +15 -0
- package/build/tests/consensus/types.js.map +1 -0
- package/build/tests/devnet-dump/devnet-dump.test.js +311 -0
- package/build/tests/devnet-dump/devnet-dump.test.js.map +1 -0
- package/build/tests/devnet-dump/setup.js +58 -0
- package/build/tests/devnet-dump/setup.js.map +1 -0
- package/build/tests/integration/integration.test.js +226 -0
- package/build/tests/integration/integration.test.js.map +1 -0
- package/build/tests/integration/setup.js +82 -0
- package/build/tests/integration/setup.js.map +1 -0
- package/build/tests/live-api/actions.test.js +4 -0
- package/build/tests/live-api/actions.test.js.map +1 -0
- package/build/tests/live-api/blocks.test.js +116 -0
- package/build/tests/live-api/blocks.test.js.map +1 -0
- package/build/tests/live-api/events.test.js +97 -0
- package/build/tests/live-api/events.test.js.map +1 -0
- package/build/tests/live-api/networkState.test.js +27 -0
- package/build/tests/live-api/networkState.test.js.map +1 -0
- package/build/tests/live-network/live-network.test.js +144 -0
- package/build/tests/live-network/live-network.test.js.map +1 -0
- package/build/tests/live-network/setup.js +206 -0
- package/build/tests/live-network/setup.js.map +1 -0
- package/build/tests/resolvers.test.js +475 -0
- package/build/tests/resolvers.test.js.map +1 -0
- package/build/tests/services/actions-service/actions-service.test.js +124 -0
- package/build/tests/services/actions-service/actions-service.test.js.map +1 -0
- package/build/tests/services/blocks-service/blocks-service.test.js +348 -0
- package/build/tests/services/blocks-service/blocks-service.test.js.map +1 -0
- package/build/tests/services/events-service/events-service.test.js +185 -0
- package/build/tests/services/events-service/events-service.test.js.map +1 -0
- package/build/tests/test-helpers.js +11 -0
- package/build/tests/test-helpers.js.map +1 -0
- package/build/tests/unit/blockchain-utils.test.js +106 -0
- package/build/tests/unit/blockchain-utils.test.js.map +1 -0
- package/build/tests/unit/consensus.test.js +154 -0
- package/build/tests/unit/consensus.test.js.map +1 -0
- package/build/tests/unit/error-handling.test.js +52 -0
- package/build/tests/unit/error-handling.test.js.map +1 -0
- package/build/tests/utils.test.js +313 -0
- package/build/tests/utils.test.js.map +1 -0
- package/build/zkapp/contract.js +144 -0
- package/build/zkapp/contract.js.map +1 -0
- package/build/zkapp/utils.js +174 -0
- package/build/zkapp/utils.js.map +1 -0
- package/package.json +85 -0
- package/schema.graphql +221 -0
- package/src/blockchain/constants.ts +2 -0
- package/src/blockchain/types.ts +121 -0
- package/src/blockchain/utils.ts +54 -0
- package/src/consensus/mina-consensus.ts +137 -0
- package/src/context.ts +18 -0
- package/src/db/archive-node-adapter/archive-node-adapter.interface.ts +23 -0
- package/src/db/archive-node-adapter/archive-node-adapter.ts +101 -0
- package/src/db/sql/events-actions/queries.ts +490 -0
- package/src/db/sql/events-actions/types.ts +208 -0
- package/src/envionment.d.ts +18 -0
- package/src/errors/error.ts +20 -0
- package/src/index.ts +31 -0
- package/src/resolvers-types.ts +754 -0
- package/src/resolvers.ts +102 -0
- package/src/server/plugins.ts +56 -0
- package/src/server/server.ts +30 -0
- package/src/services/actions-service/actions-service.interface.ts +9 -0
- package/src/services/actions-service/actions-service.ts +195 -0
- package/src/services/blocks-service/blocks-service.interface.ts +11 -0
- package/src/services/blocks-service/blocks-service.ts +407 -0
- package/src/services/data-adapters/database-row-adapters.ts +261 -0
- package/src/services/events-service/events-service.interface.ts +6 -0
- package/src/services/events-service/events-service.ts +118 -0
- package/src/services/network-service/network-service.interface.ts +5 -0
- package/src/services/network-service/network-service.ts +53 -0
- package/src/tracing/jaeger-setup.ts +65 -0
- package/src/tracing/jaeger-tracing.ts +44 -0
- package/src/tracing/tracer.ts +52 -0
- package/tsconfig.json +104 -0
|
@@ -0,0 +1,438 @@
|
|
|
1
|
+
import { BlockStatusFilter } from '../../../blockchain/types.js';
|
|
2
|
+
import { BLOCK_RANGE_SIZE } from '../../../server/server.js';
|
|
3
|
+
function fullChainCTE(db_client, from, to) {
|
|
4
|
+
let toAsNum = to ? Number(to) : undefined;
|
|
5
|
+
let fromAsNum = from ? Number(from) : undefined;
|
|
6
|
+
if (fromAsNum) {
|
|
7
|
+
const maxRange = fromAsNum + BLOCK_RANGE_SIZE;
|
|
8
|
+
toAsNum = toAsNum ? Math.min(toAsNum, maxRange) : maxRange;
|
|
9
|
+
}
|
|
10
|
+
else if (toAsNum) {
|
|
11
|
+
fromAsNum = toAsNum - BLOCK_RANGE_SIZE;
|
|
12
|
+
}
|
|
13
|
+
return db_client `
|
|
14
|
+
RECURSIVE pending_chain AS (
|
|
15
|
+
(
|
|
16
|
+
SELECT
|
|
17
|
+
id, state_hash, parent_hash, parent_id, height, global_slot_since_genesis, global_slot_since_hard_fork, timestamp, chain_status, ledger_hash, last_vrf_output
|
|
18
|
+
FROM
|
|
19
|
+
blocks b
|
|
20
|
+
WHERE
|
|
21
|
+
height = (SELECT max(height) FROM blocks)
|
|
22
|
+
)
|
|
23
|
+
UNION ALL
|
|
24
|
+
SELECT
|
|
25
|
+
b.id, b.state_hash, b.parent_hash, b.parent_id, b.height, b.global_slot_since_genesis, b.global_slot_since_hard_fork, b.timestamp, b.chain_status, b.ledger_hash, b.last_vrf_output
|
|
26
|
+
FROM
|
|
27
|
+
blocks b
|
|
28
|
+
INNER JOIN pending_chain ON b.id = pending_chain.parent_id
|
|
29
|
+
AND pending_chain.id <> pending_chain.parent_id
|
|
30
|
+
AND pending_chain.chain_status <> 'canonical'
|
|
31
|
+
),
|
|
32
|
+
full_chain AS (
|
|
33
|
+
SELECT
|
|
34
|
+
DISTINCT id, state_hash, parent_id, parent_hash, height, global_slot_since_genesis, global_slot_since_hard_fork, timestamp, chain_status, ledger_hash, (SELECT max(height) FROM blocks) - height AS distance_from_max_block_height, last_vrf_output
|
|
35
|
+
FROM
|
|
36
|
+
(
|
|
37
|
+
SELECT
|
|
38
|
+
id, state_hash, parent_id, parent_hash, height, global_slot_since_genesis, global_slot_since_hard_fork, timestamp, chain_status, ledger_hash, last_vrf_output
|
|
39
|
+
FROM
|
|
40
|
+
pending_chain
|
|
41
|
+
WHERE 1=1
|
|
42
|
+
${fromAsNum
|
|
43
|
+
? db_client `AND height >= ${fromAsNum} AND height < ${toAsNum}`
|
|
44
|
+
: db_client `AND height >= (
|
|
45
|
+
SELECT MAX(height)
|
|
46
|
+
FROM pending_chain
|
|
47
|
+
) - ${BLOCK_RANGE_SIZE}`}
|
|
48
|
+
UNION ALL
|
|
49
|
+
SELECT
|
|
50
|
+
id, state_hash, parent_id, parent_hash, height, global_slot_since_genesis, global_slot_since_hard_fork, timestamp, chain_status, ledger_hash, last_vrf_output
|
|
51
|
+
FROM
|
|
52
|
+
blocks b
|
|
53
|
+
WHERE
|
|
54
|
+
chain_status = 'canonical'
|
|
55
|
+
${fromAsNum
|
|
56
|
+
? db_client `AND b.height >= ${fromAsNum} AND b.height < ${toAsNum}`
|
|
57
|
+
: db_client `AND b.height >= (
|
|
58
|
+
SELECT MAX(b2.height)
|
|
59
|
+
FROM blocks b2
|
|
60
|
+
) - ${BLOCK_RANGE_SIZE}`}
|
|
61
|
+
) AS full_chain
|
|
62
|
+
)
|
|
63
|
+
`;
|
|
64
|
+
}
|
|
65
|
+
function accountIdentifierCTE(db_client, address, tokenId) {
|
|
66
|
+
return db_client `
|
|
67
|
+
account_identifier AS (
|
|
68
|
+
SELECT
|
|
69
|
+
id AS requesting_zkapp_account_identifier_id
|
|
70
|
+
FROM
|
|
71
|
+
account_identifiers ai
|
|
72
|
+
WHERE
|
|
73
|
+
ai.public_key_id = (SELECT id FROM public_keys WHERE value = ${address})
|
|
74
|
+
AND
|
|
75
|
+
ai.token_id = (SELECT id FROM tokens WHERE value = ${tokenId})
|
|
76
|
+
)`;
|
|
77
|
+
}
|
|
78
|
+
function blocksAccessedCTE(db_client, status) {
|
|
79
|
+
return db_client `
|
|
80
|
+
blocks_accessed AS
|
|
81
|
+
(
|
|
82
|
+
SELECT
|
|
83
|
+
requesting_zkapp_account_identifier_id,
|
|
84
|
+
block_id,
|
|
85
|
+
account_identifier_id,
|
|
86
|
+
zkapp_id,
|
|
87
|
+
id AS account_access_id,
|
|
88
|
+
state_hash,
|
|
89
|
+
parent_hash,
|
|
90
|
+
height,
|
|
91
|
+
global_slot_since_genesis,
|
|
92
|
+
global_slot_since_hard_fork,
|
|
93
|
+
timestamp,
|
|
94
|
+
chain_status,
|
|
95
|
+
ledger_hash,
|
|
96
|
+
distance_from_max_block_height,
|
|
97
|
+
last_vrf_output
|
|
98
|
+
FROM
|
|
99
|
+
account_identifier ai
|
|
100
|
+
INNER JOIN accounts_accessed aa ON ai.requesting_zkapp_account_identifier_id = aa.account_identifier_id
|
|
101
|
+
INNER JOIN full_chain b ON aa.block_id = b.id
|
|
102
|
+
WHERE
|
|
103
|
+
1 = 1
|
|
104
|
+
${status === BlockStatusFilter.all
|
|
105
|
+
? db_client ``
|
|
106
|
+
: db_client `AND chain_status = ${status.toLowerCase()}`}
|
|
107
|
+
)`;
|
|
108
|
+
}
|
|
109
|
+
function emittedZkAppCommandsCTE(db_client) {
|
|
110
|
+
return db_client `
|
|
111
|
+
emitted_zkapp_commands AS (
|
|
112
|
+
SELECT
|
|
113
|
+
blocks_accessed.requesting_zkapp_account_identifier_id,
|
|
114
|
+
blocks_accessed.block_id,
|
|
115
|
+
blocks_accessed.account_identifier_id,
|
|
116
|
+
blocks_accessed.zkapp_id,
|
|
117
|
+
blocks_accessed.account_access_id,
|
|
118
|
+
blocks_accessed.state_hash,
|
|
119
|
+
blocks_accessed.parent_hash,
|
|
120
|
+
blocks_accessed.height,
|
|
121
|
+
blocks_accessed.global_slot_since_genesis,
|
|
122
|
+
blocks_accessed.global_slot_since_hard_fork,
|
|
123
|
+
blocks_accessed.timestamp,
|
|
124
|
+
blocks_accessed.chain_status,
|
|
125
|
+
blocks_accessed.ledger_hash,
|
|
126
|
+
blocks_accessed.distance_from_max_block_height,
|
|
127
|
+
blocks_accessed.last_vrf_output,
|
|
128
|
+
zkcu.id AS zkapp_account_update_id,
|
|
129
|
+
bzkc.sequence_no AS sequence_number,
|
|
130
|
+
zkapp_fee_payer_body_id,
|
|
131
|
+
zkapp_account_updates_ids,
|
|
132
|
+
authorization_kind,
|
|
133
|
+
status,
|
|
134
|
+
memo,
|
|
135
|
+
hash,
|
|
136
|
+
body_id,
|
|
137
|
+
events_id,
|
|
138
|
+
actions_id
|
|
139
|
+
FROM
|
|
140
|
+
blocks_accessed
|
|
141
|
+
INNER JOIN blocks_zkapp_commands bzkc ON blocks_accessed.block_id = bzkc.block_id
|
|
142
|
+
INNER JOIN zkapp_commands zkc ON bzkc.zkapp_command_id = zkc.id
|
|
143
|
+
INNER JOIN zkapp_account_update zkcu ON zkcu.id = ANY(zkc.zkapp_account_updates_ids)
|
|
144
|
+
INNER JOIN zkapp_account_update_body zkcu_body ON zkcu_body.id = zkcu.body_id
|
|
145
|
+
AND zkcu_body.account_identifier_id = requesting_zkapp_account_identifier_id
|
|
146
|
+
WHERE
|
|
147
|
+
bzkc.status <> 'failed'
|
|
148
|
+
)`;
|
|
149
|
+
}
|
|
150
|
+
function emittedEventsCTE(db_client) {
|
|
151
|
+
return db_client `
|
|
152
|
+
emitted_events AS (
|
|
153
|
+
SELECT
|
|
154
|
+
emitted_zkapp_commands.requesting_zkapp_account_identifier_id,
|
|
155
|
+
emitted_zkapp_commands.block_id,
|
|
156
|
+
emitted_zkapp_commands.account_identifier_id,
|
|
157
|
+
emitted_zkapp_commands.zkapp_id,
|
|
158
|
+
emitted_zkapp_commands.account_access_id,
|
|
159
|
+
emitted_zkapp_commands.state_hash,
|
|
160
|
+
emitted_zkapp_commands.parent_hash,
|
|
161
|
+
emitted_zkapp_commands.height,
|
|
162
|
+
emitted_zkapp_commands.global_slot_since_genesis,
|
|
163
|
+
emitted_zkapp_commands.global_slot_since_hard_fork,
|
|
164
|
+
emitted_zkapp_commands.timestamp,
|
|
165
|
+
emitted_zkapp_commands.chain_status,
|
|
166
|
+
emitted_zkapp_commands.ledger_hash,
|
|
167
|
+
emitted_zkapp_commands.distance_from_max_block_height,
|
|
168
|
+
emitted_zkapp_commands.last_vrf_output,
|
|
169
|
+
emitted_zkapp_commands.zkapp_account_update_id,
|
|
170
|
+
emitted_zkapp_commands.sequence_number,
|
|
171
|
+
emitted_zkapp_commands.zkapp_fee_payer_body_id,
|
|
172
|
+
emitted_zkapp_commands.zkapp_account_updates_ids,
|
|
173
|
+
emitted_zkapp_commands.authorization_kind,
|
|
174
|
+
emitted_zkapp_commands.status,
|
|
175
|
+
emitted_zkapp_commands.memo,
|
|
176
|
+
emitted_zkapp_commands.hash,
|
|
177
|
+
emitted_zkapp_commands.body_id,
|
|
178
|
+
emitted_zkapp_commands.events_id,
|
|
179
|
+
emitted_zkapp_commands.actions_id,
|
|
180
|
+
zke.id AS account_update_event_id,
|
|
181
|
+
zke.element_ids AS event_element_ids,
|
|
182
|
+
zkfa.element_ids AS event_field_element_ids,
|
|
183
|
+
zkfa.id AS event_field_elements_id,
|
|
184
|
+
zkf.id AS field_id,
|
|
185
|
+
zkf.field AS field_value
|
|
186
|
+
FROM
|
|
187
|
+
emitted_zkapp_commands
|
|
188
|
+
INNER JOIN zkapp_events zke ON zke.id = emitted_zkapp_commands.events_id
|
|
189
|
+
INNER JOIN zkapp_field_array zkfa ON zkfa.id = ANY(zke.element_ids)
|
|
190
|
+
INNER JOIN zkapp_field zkf ON zkf.id = ANY(zkfa.element_ids)
|
|
191
|
+
)
|
|
192
|
+
`;
|
|
193
|
+
}
|
|
194
|
+
function emittedActionsCTE(db_client) {
|
|
195
|
+
return db_client `
|
|
196
|
+
emitted_actions AS (
|
|
197
|
+
SELECT
|
|
198
|
+
emitted_zkapp_commands.block_id,
|
|
199
|
+
emitted_zkapp_commands.zkapp_id,
|
|
200
|
+
emitted_zkapp_commands.state_hash,
|
|
201
|
+
emitted_zkapp_commands.parent_hash,
|
|
202
|
+
emitted_zkapp_commands.height,
|
|
203
|
+
emitted_zkapp_commands.global_slot_since_genesis,
|
|
204
|
+
emitted_zkapp_commands.global_slot_since_hard_fork,
|
|
205
|
+
emitted_zkapp_commands.timestamp,
|
|
206
|
+
emitted_zkapp_commands.chain_status,
|
|
207
|
+
emitted_zkapp_commands.ledger_hash,
|
|
208
|
+
emitted_zkapp_commands.distance_from_max_block_height,
|
|
209
|
+
emitted_zkapp_commands.last_vrf_output,
|
|
210
|
+
emitted_zkapp_commands.zkapp_account_update_id,
|
|
211
|
+
emitted_zkapp_commands.sequence_number,
|
|
212
|
+
emitted_zkapp_commands.zkapp_fee_payer_body_id,
|
|
213
|
+
emitted_zkapp_commands.zkapp_account_updates_ids,
|
|
214
|
+
emitted_zkapp_commands.authorization_kind,
|
|
215
|
+
emitted_zkapp_commands.status,
|
|
216
|
+
emitted_zkapp_commands.memo,
|
|
217
|
+
emitted_zkapp_commands.hash,
|
|
218
|
+
emitted_zkapp_commands.body_id,
|
|
219
|
+
emitted_zkapp_commands.events_id,
|
|
220
|
+
emitted_zkapp_commands.actions_id,
|
|
221
|
+
zke.id AS account_update_event_id,
|
|
222
|
+
zke.element_ids AS event_element_ids,
|
|
223
|
+
zkfa.element_ids AS event_field_element_ids,
|
|
224
|
+
zkfa.id AS event_field_elements_id,
|
|
225
|
+
zkf.id AS field_id,
|
|
226
|
+
zkf.field AS field_value
|
|
227
|
+
FROM
|
|
228
|
+
emitted_zkapp_commands
|
|
229
|
+
INNER JOIN zkapp_events zke ON zke.id = emitted_zkapp_commands.actions_id
|
|
230
|
+
INNER JOIN zkapp_field_array zkfa ON zkfa.id = ANY(zke.element_ids)
|
|
231
|
+
INNER JOIN zkapp_field zkf ON zkf.id = ANY(zkfa.element_ids)
|
|
232
|
+
)
|
|
233
|
+
`;
|
|
234
|
+
}
|
|
235
|
+
function emittedActionStateCTE(db_client, fromActionState, endActionState) {
|
|
236
|
+
return db_client `
|
|
237
|
+
emitted_action_state AS (
|
|
238
|
+
SELECT
|
|
239
|
+
zkf0.field AS action_state_value1,
|
|
240
|
+
zkf1.field AS action_state_value2,
|
|
241
|
+
zkf2.field AS action_state_value3,
|
|
242
|
+
zkf3.field AS action_state_value4,
|
|
243
|
+
zkf4.field AS action_state_value5,
|
|
244
|
+
emitted_actions.last_vrf_output,
|
|
245
|
+
emitted_actions.block_id,
|
|
246
|
+
emitted_actions.zkapp_id,
|
|
247
|
+
emitted_actions.state_hash,
|
|
248
|
+
emitted_actions.parent_hash,
|
|
249
|
+
emitted_actions.height,
|
|
250
|
+
emitted_actions.global_slot_since_genesis,
|
|
251
|
+
emitted_actions.global_slot_since_hard_fork,
|
|
252
|
+
emitted_actions.timestamp,
|
|
253
|
+
emitted_actions.chain_status,
|
|
254
|
+
emitted_actions.ledger_hash,
|
|
255
|
+
emitted_actions.distance_from_max_block_height,
|
|
256
|
+
emitted_actions.last_vrf_output,
|
|
257
|
+
emitted_actions.zkapp_account_update_id,
|
|
258
|
+
emitted_actions.sequence_number,
|
|
259
|
+
emitted_actions.zkapp_fee_payer_body_id,
|
|
260
|
+
emitted_actions.zkapp_account_updates_ids,
|
|
261
|
+
emitted_actions.authorization_kind,
|
|
262
|
+
emitted_actions.status,
|
|
263
|
+
emitted_actions.memo,
|
|
264
|
+
emitted_actions.hash,
|
|
265
|
+
emitted_actions.body_id,
|
|
266
|
+
emitted_actions.events_id,
|
|
267
|
+
emitted_actions.actions_id,
|
|
268
|
+
emitted_actions.account_update_event_id,
|
|
269
|
+
emitted_actions.event_element_ids,
|
|
270
|
+
emitted_actions.event_field_element_ids,
|
|
271
|
+
emitted_actions.event_field_elements_id,
|
|
272
|
+
emitted_actions.field_id,
|
|
273
|
+
emitted_actions.field_value
|
|
274
|
+
FROM
|
|
275
|
+
emitted_actions
|
|
276
|
+
INNER JOIN zkapp_accounts zkacc ON zkacc.id = emitted_actions.zkapp_id
|
|
277
|
+
INNER JOIN zkapp_action_states zks ON zks.id = zkacc.action_state_id
|
|
278
|
+
INNER JOIN zkapp_field zkf0 ON zkf0.id = zks.element0
|
|
279
|
+
INNER JOIN zkapp_field zkf1 ON zkf1.id = zks.element1
|
|
280
|
+
INNER JOIN zkapp_field zkf2 ON zkf2.id = zks.element2
|
|
281
|
+
INNER JOIN zkapp_field zkf3 ON zkf3.id = zks.element3
|
|
282
|
+
INNER JOIN zkapp_field zkf4 ON zkf4.id = zks.element4
|
|
283
|
+
WHERE
|
|
284
|
+
1 = 1
|
|
285
|
+
${fromActionState
|
|
286
|
+
? db_client `AND zkf0.id >= (SELECT id FROM zkapp_field WHERE field = ${fromActionState})`
|
|
287
|
+
: db_client ``}
|
|
288
|
+
${endActionState
|
|
289
|
+
? db_client `AND zkf0.id <= (SELECT id FROM zkapp_field WHERE field = ${endActionState})`
|
|
290
|
+
: db_client ``}
|
|
291
|
+
)`;
|
|
292
|
+
}
|
|
293
|
+
export function getEventsQuery(db_client, address, tokenId, status, to, from) {
|
|
294
|
+
return db_client `
|
|
295
|
+
WITH
|
|
296
|
+
${fullChainCTE(db_client, from, to)},
|
|
297
|
+
${accountIdentifierCTE(db_client, address, tokenId)},
|
|
298
|
+
${blocksAccessedCTE(db_client, status)},
|
|
299
|
+
${emittedZkAppCommandsCTE(db_client)},
|
|
300
|
+
${emittedEventsCTE(db_client)}
|
|
301
|
+
SELECT
|
|
302
|
+
last_vrf_output,
|
|
303
|
+
block_id,
|
|
304
|
+
zkapp_id,
|
|
305
|
+
state_hash,
|
|
306
|
+
parent_hash,
|
|
307
|
+
height,
|
|
308
|
+
global_slot_since_genesis,
|
|
309
|
+
global_slot_since_hard_fork,
|
|
310
|
+
timestamp,
|
|
311
|
+
chain_status,
|
|
312
|
+
ledger_hash,
|
|
313
|
+
distance_from_max_block_height,
|
|
314
|
+
last_vrf_output,
|
|
315
|
+
zkapp_account_update_id,
|
|
316
|
+
sequence_number,
|
|
317
|
+
zkapp_fee_payer_body_id,
|
|
318
|
+
zkapp_account_updates_ids,
|
|
319
|
+
authorization_kind,
|
|
320
|
+
status,
|
|
321
|
+
memo,
|
|
322
|
+
hash,
|
|
323
|
+
body_id,
|
|
324
|
+
events_id,
|
|
325
|
+
actions_id,
|
|
326
|
+
account_update_event_id,
|
|
327
|
+
event_element_ids,
|
|
328
|
+
event_field_element_ids,
|
|
329
|
+
event_field_elements_id,
|
|
330
|
+
field_id,
|
|
331
|
+
field_value
|
|
332
|
+
FROM emitted_events
|
|
333
|
+
`;
|
|
334
|
+
}
|
|
335
|
+
export function getActionsQuery(db_client, address, tokenId, status, to, from, fromActionState, endActionState) {
|
|
336
|
+
return db_client `
|
|
337
|
+
WITH
|
|
338
|
+
${fullChainCTE(db_client, from, to)},
|
|
339
|
+
${accountIdentifierCTE(db_client, address, tokenId)},
|
|
340
|
+
${blocksAccessedCTE(db_client, status)},
|
|
341
|
+
${emittedZkAppCommandsCTE(db_client)},
|
|
342
|
+
${emittedActionsCTE(db_client)},
|
|
343
|
+
${emittedActionStateCTE(db_client, fromActionState, endActionState)}
|
|
344
|
+
SELECT *
|
|
345
|
+
FROM emitted_action_state
|
|
346
|
+
`;
|
|
347
|
+
}
|
|
348
|
+
export function getNetworkStateQuery(db_client) {
|
|
349
|
+
return db_client `
|
|
350
|
+
WITH max_heights AS (
|
|
351
|
+
SELECT
|
|
352
|
+
chain_status,
|
|
353
|
+
MAX(height) AS max_height
|
|
354
|
+
FROM blocks
|
|
355
|
+
WHERE chain_status IN ('canonical', 'pending')
|
|
356
|
+
GROUP BY chain_status
|
|
357
|
+
)
|
|
358
|
+
SELECT b.*
|
|
359
|
+
FROM blocks b
|
|
360
|
+
JOIN max_heights mh
|
|
361
|
+
ON b.chain_status = mh.chain_status
|
|
362
|
+
AND b.height = mh.max_height;
|
|
363
|
+
`;
|
|
364
|
+
}
|
|
365
|
+
export function checkActionState(db_client, actionState) {
|
|
366
|
+
return db_client `
|
|
367
|
+
SELECT field FROM zkapp_field WHERE field = ${actionState}
|
|
368
|
+
`;
|
|
369
|
+
}
|
|
370
|
+
export function getTables(db_client) {
|
|
371
|
+
return db_client `
|
|
372
|
+
SELECT tablename FROM pg_catalog.pg_tables where schemaname='public';
|
|
373
|
+
`;
|
|
374
|
+
}
|
|
375
|
+
export const USED_TABLES = [
|
|
376
|
+
'blocks',
|
|
377
|
+
'account_identifiers',
|
|
378
|
+
'accounts_accessed',
|
|
379
|
+
'blocks_zkapp_commands',
|
|
380
|
+
'zkapp_commands',
|
|
381
|
+
'zkapp_account_update',
|
|
382
|
+
'zkapp_account_update_body',
|
|
383
|
+
'zkapp_events',
|
|
384
|
+
'zkapp_field_array',
|
|
385
|
+
'zkapp_field',
|
|
386
|
+
'zkapp_verification_key_hashes',
|
|
387
|
+
'zkapp_verification_keys',
|
|
388
|
+
'zkapp_accounts',
|
|
389
|
+
'zkapp_action_states',
|
|
390
|
+
];
|
|
391
|
+
export function getZkappsWithPendingEventsQuery(db_client) {
|
|
392
|
+
return db_client `
|
|
393
|
+
WITH RECURSIVE pending_chain(id, parent_id, chain_status) AS (
|
|
394
|
+
-- start at the tip
|
|
395
|
+
SELECT id, parent_id, chain_status
|
|
396
|
+
FROM blocks
|
|
397
|
+
WHERE height = (SELECT MAX(height) FROM blocks)
|
|
398
|
+
|
|
399
|
+
UNION ALL
|
|
400
|
+
|
|
401
|
+
-- walk back until we re-join the canonical branch
|
|
402
|
+
SELECT b.id, b.parent_id, b.chain_status
|
|
403
|
+
FROM blocks b
|
|
404
|
+
JOIN pending_chain pc
|
|
405
|
+
ON b.id = pc.parent_id
|
|
406
|
+
WHERE pc.id <> pc.parent_id
|
|
407
|
+
AND pc.chain_status <> 'canonical'
|
|
408
|
+
)
|
|
409
|
+
SELECT DISTINCT
|
|
410
|
+
pk.value AS public_key
|
|
411
|
+
FROM
|
|
412
|
+
pending_chain pc
|
|
413
|
+
|
|
414
|
+
-- only commands in this block that didn’t fail
|
|
415
|
+
JOIN blocks_zkapp_commands bzc
|
|
416
|
+
ON bzc.block_id = pc.id
|
|
417
|
+
AND bzc.status <> 'failed'
|
|
418
|
+
|
|
419
|
+
-- get the command, then unwind its array of account-update IDs
|
|
420
|
+
JOIN zkapp_commands zkc
|
|
421
|
+
ON zkc.id = bzc.zkapp_command_id
|
|
422
|
+
JOIN LATERAL UNNEST(zkc.zkapp_account_updates_ids) AS upd(id) ON TRUE
|
|
423
|
+
|
|
424
|
+
-- pick up the body, but only if it actually emitted events
|
|
425
|
+
JOIN zkapp_account_update au
|
|
426
|
+
ON au.id = upd.id
|
|
427
|
+
JOIN zkapp_account_update_body aub
|
|
428
|
+
ON aub.id = au.body_id
|
|
429
|
+
AND aub.events_id IS NOT NULL
|
|
430
|
+
|
|
431
|
+
-- map back to the account’s public key
|
|
432
|
+
JOIN account_identifiers ai
|
|
433
|
+
ON ai.id = aub.account_identifier_id
|
|
434
|
+
JOIN public_keys pk
|
|
435
|
+
ON pk.id = ai.public_key_id;
|
|
436
|
+
`;
|
|
437
|
+
}
|
|
438
|
+
//# sourceMappingURL=queries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queries.js","sourceRoot":"","sources":["../../../../../src/db/sql/events-actions/queries.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/db/sql/events-actions/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { GraphQLError } from 'graphql';
|
|
2
|
+
export { throwGraphQLError, throwActionStateError, throwBlockRangeError };
|
|
3
|
+
function throwGraphQLError(message, code, status) {
|
|
4
|
+
throw new GraphQLError(message, {
|
|
5
|
+
extensions: {
|
|
6
|
+
code,
|
|
7
|
+
status,
|
|
8
|
+
},
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
function throwActionStateError(message) {
|
|
12
|
+
throwGraphQLError(message, 'ACTION_STATE_NOT_FOUND', 400);
|
|
13
|
+
}
|
|
14
|
+
function throwBlockRangeError(message) {
|
|
15
|
+
throwGraphQLError(message, 'BLOCK_RANGE_ERROR', 400);
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.js","sourceRoot":"","sources":["../../../src/errors/error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,CAAC;AAE1E,SAAS,iBAAiB,CAAC,OAAe,EAAE,IAAa,EAAE,MAAe;IACxE,MAAM,IAAI,YAAY,CAAC,OAAO,EAAE;QAC9B,UAAU,EAAE;YACV,IAAI;YACJ,MAAM;SACP;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,qBAAqB,CAAC,OAAe;IAC5C,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,EAAE,GAAG,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAe;IAC3C,iBAAiB,CAAC,OAAO,EAAE,mBAAmB,EAAE,GAAG,CAAC,CAAC;AACvD,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { buildContext } from './context.js';
|
|
3
|
+
import { buildServer } from './server/server.js';
|
|
4
|
+
import { buildPlugins } from './server/plugins.js';
|
|
5
|
+
const PORT = process.env.PORT || 8080;
|
|
6
|
+
(async function main() {
|
|
7
|
+
try {
|
|
8
|
+
const context = await buildContext(process.env.PG_CONN);
|
|
9
|
+
const plugins = await buildPlugins();
|
|
10
|
+
const server = buildServer(context, plugins);
|
|
11
|
+
server.listen(PORT, () => {
|
|
12
|
+
console.info(`Server is running on port: ${PORT}`);
|
|
13
|
+
});
|
|
14
|
+
['SIGINT', 'SIGTERM', 'SIGQUIT'].forEach((signal) => {
|
|
15
|
+
process.on(signal, () => server.close());
|
|
16
|
+
});
|
|
17
|
+
server.on('close', async () => {
|
|
18
|
+
await context.db_client.close();
|
|
19
|
+
process.exit(0);
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
console.error('An error occurred:', error);
|
|
24
|
+
process.exit(1);
|
|
25
|
+
}
|
|
26
|
+
})();
|
|
27
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC;AAEtC,CAAC,KAAK,UAAU,IAAI;IAClB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACxD,MAAM,OAAO,GAAG,MAAM,YAAY,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAE7C,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;YACvB,OAAO,CAAC,IAAI,CAAC,8BAA8B,IAAI,EAAE,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YAClD,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;YAC5B,MAAM,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;YAChC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,EAAE,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { BlockStatusFilter } from './blockchain/types.js';
|
|
2
|
+
export var BlockSortByInput;
|
|
3
|
+
(function (BlockSortByInput) {
|
|
4
|
+
BlockSortByInput["BlockheightAsc"] = "BLOCKHEIGHT_ASC";
|
|
5
|
+
BlockSortByInput["BlockheightDesc"] = "BLOCKHEIGHT_DESC";
|
|
6
|
+
})(BlockSortByInput || (BlockSortByInput = {}));
|
|
7
|
+
export { BlockStatusFilter };
|
|
8
|
+
//# sourceMappingURL=resolvers-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolvers-types.js","sourceRoot":"","sources":["../../src/resolvers-types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AA8H1D,MAAM,CAAN,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IAC1B,sDAAkC,CAAA;IAClC,wDAAoC,CAAA;AACtC,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB,QAG3B;AAED,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { makeExecutableSchema } from '@graphql-tools/schema';
|
|
2
|
+
import { visit, print, parse } from 'graphql';
|
|
3
|
+
import fs from 'fs';
|
|
4
|
+
import path from 'path';
|
|
5
|
+
import { fileURLToPath } from 'url';
|
|
6
|
+
import { TracingState, setSpanNameFromGraphQLContext, } from './tracing/tracer.js';
|
|
7
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
8
|
+
const __dirname = path.dirname(__filename);
|
|
9
|
+
const schemaPath = path.resolve(__dirname, '../../schema.graphql');
|
|
10
|
+
const fullResolvers = {
|
|
11
|
+
Query: {
|
|
12
|
+
events: async (_, { input }, context) => {
|
|
13
|
+
const graphQLSpan = setSpanNameFromGraphQLContext(context, 'events.graphql');
|
|
14
|
+
return context.db_client.getEvents(input, {
|
|
15
|
+
tracingState: new TracingState(graphQLSpan),
|
|
16
|
+
});
|
|
17
|
+
},
|
|
18
|
+
actions: async (_, { input }, context) => {
|
|
19
|
+
const graphQLSpan = setSpanNameFromGraphQLContext(context, 'actions.graphql');
|
|
20
|
+
return context.db_client.getActions(input, {
|
|
21
|
+
tracingState: new TracingState(graphQLSpan),
|
|
22
|
+
});
|
|
23
|
+
},
|
|
24
|
+
networkState: async (_, __, context) => {
|
|
25
|
+
const graphQLSpan = setSpanNameFromGraphQLContext(context, 'networkState.graphql');
|
|
26
|
+
return context.db_client.getNetworkState({
|
|
27
|
+
tracingState: new TracingState(graphQLSpan),
|
|
28
|
+
});
|
|
29
|
+
},
|
|
30
|
+
blocks: async (_, { query, limit, sortBy }, context) => {
|
|
31
|
+
const graphQLSpan = setSpanNameFromGraphQLContext(context, 'blocks.graphql');
|
|
32
|
+
return context.db_client.getBlocks(query, limit, sortBy, {
|
|
33
|
+
tracingState: new TracingState(graphQLSpan),
|
|
34
|
+
});
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
let resolvers = fullResolvers;
|
|
39
|
+
let typeDefs = undefined;
|
|
40
|
+
if (process.env.ENABLED_QUERIES !== undefined) {
|
|
41
|
+
const enabledQueries = process.env.ENABLED_QUERIES.split(',').map((q) => q.trim());
|
|
42
|
+
if (enabledQueries.length > 0) {
|
|
43
|
+
resolvers = {
|
|
44
|
+
Query: Object.fromEntries(Object.entries(fullResolvers.Query || {}).filter(([queryName]) => enabledQueries.includes(queryName))),
|
|
45
|
+
};
|
|
46
|
+
const typeDefsString = fs.readFileSync(schemaPath, 'utf-8');
|
|
47
|
+
const typeDefsAst = parse(typeDefsString);
|
|
48
|
+
const modifiedAst = visit(typeDefsAst, {
|
|
49
|
+
ObjectTypeDefinition(node) {
|
|
50
|
+
if (node.name.value === 'Query') {
|
|
51
|
+
return {
|
|
52
|
+
...node,
|
|
53
|
+
fields: node.fields?.filter((field) => enabledQueries.includes(field.name.value)),
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
return node;
|
|
57
|
+
},
|
|
58
|
+
});
|
|
59
|
+
typeDefs = print(modifiedAst);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
const schema = makeExecutableSchema({
|
|
63
|
+
resolvers: [resolvers],
|
|
64
|
+
typeDefs: typeDefs || fs.readFileSync(schemaPath, 'utf-8'),
|
|
65
|
+
});
|
|
66
|
+
export { resolvers, schema };
|
|
67
|
+
//# sourceMappingURL=resolvers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolvers.js","sourceRoot":"","sources":["../../src/resolvers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { useLogger } from '@envelop/core';
|
|
2
|
+
import { useGraphQlJit } from '@envelop/graphql-jit';
|
|
3
|
+
import { useDisableIntrospection } from '@envelop/disable-introspection';
|
|
4
|
+
import { useOpenTelemetry } from '@envelop/opentelemetry';
|
|
5
|
+
import { inspect } from 'node:util';
|
|
6
|
+
import { initJaegerProvider } from '../tracing/jaeger-tracing.js';
|
|
7
|
+
export { buildPlugins };
|
|
8
|
+
async function buildPlugins() {
|
|
9
|
+
const plugins = [];
|
|
10
|
+
plugins.push(useGraphQlJit());
|
|
11
|
+
if (process.env.ENABLE_LOGGING) {
|
|
12
|
+
const provider = await initJaegerProvider();
|
|
13
|
+
plugins.push(useOpenTelemetry({
|
|
14
|
+
resolvers: true,
|
|
15
|
+
variables: true,
|
|
16
|
+
result: true,
|
|
17
|
+
}, provider));
|
|
18
|
+
}
|
|
19
|
+
if (!process.env.ENABLE_INTROSPECTION) {
|
|
20
|
+
plugins.push(useDisableIntrospection());
|
|
21
|
+
}
|
|
22
|
+
plugins.push(useLogger({
|
|
23
|
+
logFn: (eventName, args) => {
|
|
24
|
+
if (args?.result?.errors) {
|
|
25
|
+
console.debug(eventName, inspect(args.args.contextValue.params, {
|
|
26
|
+
showHidden: false,
|
|
27
|
+
depth: null,
|
|
28
|
+
colors: true,
|
|
29
|
+
}), inspect(args.result.errors, {
|
|
30
|
+
showHidden: false,
|
|
31
|
+
depth: null,
|
|
32
|
+
colors: true,
|
|
33
|
+
}));
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
}));
|
|
37
|
+
return plugins;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=plugins.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../../src/server/plugins.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAElE,OAAO,EAAE,YAAY,EAAE,CAAC;AAExB,KAAK,UAAU,YAAY;IAEzB,MAAM,OAAO,GAAU,EAAE,CAAC;IAC1B,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;IAE9B,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,MAAM,kBAAkB,EAAE,CAAC;QAC5C,OAAO,CAAC,IAAI,CACV,gBAAgB,CACd;YACE,SAAS,EAAE,IAAI;YACf,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,IAAI;SACb,EACD,QAAQ,CACT,CACF,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC;QACtC,OAAO,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,CAAC,IAAI,CACV,SAAS,CAAC;QACR,KAAK,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE;YACzB,IAAI,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;gBACzB,OAAO,CAAC,KAAK,CACX,SAAS,EACT,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;oBACrC,UAAU,EAAE,KAAK;oBACjB,KAAK,EAAE,IAAI;oBACX,MAAM,EAAE,IAAI;iBACb,CAAC,EACF,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;oBAC1B,UAAU,EAAE,KAAK;oBACjB,KAAK,EAAE,IAAI;oBACX,MAAM,EAAE,IAAI;iBACb,CAAC,CACH,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC,CACH,CAAC;IACF,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { createYoga } from 'graphql-yoga';
|
|
2
|
+
import { createServer } from 'http';
|
|
3
|
+
import { schema } from '../resolvers.js';
|
|
4
|
+
export { BLOCK_RANGE_SIZE, ENABLE_BLOCK_TRANSACTION_DETAILS, buildServer };
|
|
5
|
+
const LOG_LEVEL = process.env.LOG_LEVEL || 'info';
|
|
6
|
+
const BLOCK_RANGE_SIZE = Number(process.env.BLOCK_RANGE_SIZE) || 10000;
|
|
7
|
+
const ENABLE_BLOCK_TRANSACTION_DETAILS = process.env.ENABLE_BLOCK_TRANSACTION_DETAILS === 'true';
|
|
8
|
+
function buildServer(context, plugins) {
|
|
9
|
+
const yoga = createYoga({
|
|
10
|
+
schema,
|
|
11
|
+
logging: LOG_LEVEL,
|
|
12
|
+
graphqlEndpoint: '/',
|
|
13
|
+
landingPage: false,
|
|
14
|
+
healthCheckEndpoint: '/healthcheck',
|
|
15
|
+
graphiql: process.env.ENABLE_GRAPHIQL === 'true' ? true : false,
|
|
16
|
+
plugins,
|
|
17
|
+
cors: {
|
|
18
|
+
origin: process.env.CORS_ORIGIN ?? '*',
|
|
19
|
+
methods: ['GET', 'POST'],
|
|
20
|
+
},
|
|
21
|
+
context,
|
|
22
|
+
});
|
|
23
|
+
return createServer(yoga);
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/server/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAY,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAEpC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAGzC,OAAO,EAAE,gBAAgB,EAAE,gCAAgC,EAAE,WAAW,EAAE,CAAC;AAE3E,MAAM,SAAS,GAAI,OAAO,CAAC,GAAG,CAAC,SAAsB,IAAI,MAAM,CAAC;AAChE,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,KAAK,CAAC;AACvE,MAAM,gCAAgC,GACpC,OAAO,CAAC,GAAG,CAAC,gCAAgC,KAAK,MAAM,CAAC;AAE1D,SAAS,WAAW,CAAC,OAAuB,EAAE,OAAiB;IAC7D,MAAM,IAAI,GAAG,UAAU,CAAiB;QACtC,MAAM;QACN,OAAO,EAAE,SAAS;QAClB,eAAe,EAAE,GAAG;QACpB,WAAW,EAAE,KAAK;QAClB,mBAAmB,EAAE,cAAc;QACnC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK;QAC/D,OAAO;QACP,IAAI,EAAE;YACJ,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,GAAG;YACtC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;SACzB;QACD,OAAO;KACR,CAAC,CAAC;IACH,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC"}
|