@subsquid/fuel-stream 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.
Files changed (56) hide show
  1. package/lib/archive/data-schema.d.ts +332 -0
  2. package/lib/archive/data-schema.d.ts.map +1 -0
  3. package/lib/archive/data-schema.js +293 -0
  4. package/lib/archive/data-schema.js.map +1 -0
  5. package/lib/archive/source.d.ts +14 -0
  6. package/lib/archive/source.d.ts.map +1 -0
  7. package/lib/archive/source.js +82 -0
  8. package/lib/archive/source.js.map +1 -0
  9. package/lib/data/data-partial.d.ts +20 -0
  10. package/lib/data/data-partial.d.ts.map +1 -0
  11. package/lib/data/data-partial.js +3 -0
  12. package/lib/data/data-partial.js.map +1 -0
  13. package/lib/data/data-request.d.ts +35 -0
  14. package/lib/data/data-request.d.ts.map +1 -0
  15. package/lib/data/data-request.js +3 -0
  16. package/lib/data/data-request.js.map +1 -0
  17. package/lib/data/model.d.ts +45 -0
  18. package/lib/data/model.d.ts.map +1 -0
  19. package/lib/data/model.js +19 -0
  20. package/lib/data/model.js.map +1 -0
  21. package/lib/data/util.d.ts +20 -0
  22. package/lib/data/util.d.ts.map +1 -0
  23. package/lib/data/util.js +3 -0
  24. package/lib/data/util.js.map +1 -0
  25. package/lib/fields.d.ts +6 -0
  26. package/lib/fields.d.ts.map +1 -0
  27. package/lib/fields.js +32 -0
  28. package/lib/fields.js.map +1 -0
  29. package/lib/filter.d.ts +6 -0
  30. package/lib/filter.d.ts.map +1 -0
  31. package/lib/filter.js +172 -0
  32. package/lib/filter.js.map +1 -0
  33. package/lib/graphql.d.ts +14 -0
  34. package/lib/graphql.d.ts.map +1 -0
  35. package/lib/graphql.js +40 -0
  36. package/lib/graphql.js.map +1 -0
  37. package/lib/index.d.ts +3 -0
  38. package/lib/index.d.ts.map +1 -0
  39. package/lib/index.js +19 -0
  40. package/lib/index.js.map +1 -0
  41. package/lib/source.d.ts +118 -0
  42. package/lib/source.d.ts.map +1 -0
  43. package/lib/source.js +296 -0
  44. package/lib/source.js.map +1 -0
  45. package/package.json +34 -0
  46. package/src/archive/data-schema.ts +320 -0
  47. package/src/archive/source.ts +88 -0
  48. package/src/data/data-partial.ts +25 -0
  49. package/src/data/data-request.ts +44 -0
  50. package/src/data/model.ts +114 -0
  51. package/src/data/util.ts +42 -0
  52. package/src/fields.ts +35 -0
  53. package/src/filter.ts +229 -0
  54. package/src/graphql.ts +51 -0
  55. package/src/index.ts +2 -0
  56. package/src/source.ts +416 -0
@@ -0,0 +1,118 @@
1
+ import { Logger } from '@subsquid/logger';
2
+ import { Range, FiniteRange } from '@subsquid/util-internal-range';
3
+ import { Block, FieldSelection } from './data/model';
4
+ import { ReceiptRequest, InputRequest, OutputRequest, TransactionRequest } from './data/data-request';
5
+ export interface GraphqlSettings {
6
+ /**
7
+ * GraphQL endpoint URL
8
+ */
9
+ url: string;
10
+ /**
11
+ * Maximum number of concurrent `blocks` queries.
12
+ *
13
+ * Default is `10`
14
+ */
15
+ strideConcurrency?: number;
16
+ /**
17
+ * `blocks` query size.
18
+ *
19
+ * Default is `5`.
20
+ */
21
+ strideSize?: number;
22
+ }
23
+ export interface GatewaySettings {
24
+ /**
25
+ * Subsquid Network Gateway url
26
+ */
27
+ url: string;
28
+ /**
29
+ * Request timeout in ms
30
+ */
31
+ requestTimeout?: number;
32
+ }
33
+ interface BlockRange {
34
+ range?: Range;
35
+ }
36
+ /**
37
+ * API and data that is passed to the data handler
38
+ */
39
+ export interface DataHandlerContext<Store, F extends FieldSelection = {}> {
40
+ /**
41
+ * An instance of a structured logger.
42
+ */
43
+ log: Logger;
44
+ /**
45
+ * Storage interface provided by the database
46
+ */
47
+ store: Store;
48
+ /**
49
+ * List of blocks to map and process
50
+ */
51
+ blocks: Block<F>[];
52
+ /**
53
+ * Signals, that the processor reached the head of a chain.
54
+ *
55
+ * The head block is always included in `.blocks`.
56
+ */
57
+ isHead: boolean;
58
+ }
59
+ export type FuelBatchProcessorFields<T> = T extends DataSourceBuilder<infer F> ? F : never;
60
+ export declare class DataSourceBuilder<F extends FieldSelection = {}> {
61
+ private requests;
62
+ private fields?;
63
+ private blockRange?;
64
+ private gateway?;
65
+ private graphql?;
66
+ private running;
67
+ private assertNotRunning;
68
+ /**
69
+ * Set Subsquid Network Gateway endpoint (ex Archive).
70
+ *
71
+ * Subsquid Network allows to get data from finalized blocks up to
72
+ * infinite times faster and more efficient than via regular GraphQL.
73
+ *
74
+ * @example
75
+ * processor.setGateway('https://v2.archive.subsquid.io/network/fuel-mainnet')
76
+ */
77
+ setGateway(url: string | GatewaySettings): this;
78
+ /**
79
+ * Set up GraphQL data ingestion
80
+ */
81
+ setGraphql(settings?: GraphqlSettings): this;
82
+ /**
83
+ * Limits the range of blocks to be processed.
84
+ *
85
+ * When the upper bound is specified,
86
+ * the processor will terminate with exit code 0 once it reaches it.
87
+ */
88
+ setBlockRange(range?: Range): this;
89
+ /**
90
+ * Configure a set of fetched fields
91
+ */
92
+ setFields<F extends FieldSelection>(fields: F): DataSourceBuilder<F>;
93
+ private add;
94
+ /**
95
+ * By default, the processor will fetch only blocks
96
+ * which contain requested items. This method
97
+ * modifies such behaviour to fetch all chain blocks.
98
+ *
99
+ * Optionally a range of blocks can be specified
100
+ * for which the setting should be effective.
101
+ */
102
+ includeAllBlocks(range?: Range): this;
103
+ addTransaction(options: TransactionRequest & BlockRange): this;
104
+ addReceipt(options: ReceiptRequest & BlockRange): this;
105
+ addInput(options: InputRequest & BlockRange): this;
106
+ addOutput(options: OutputRequest & BlockRange): this;
107
+ private getRequests;
108
+ build(): DataSource<Block<F>>;
109
+ }
110
+ export interface DataSource<Block> {
111
+ getFinalizedHeight(): Promise<number>;
112
+ getBlockHash(height: number): Promise<string | undefined>;
113
+ getBlocksCountInRange(range: FiniteRange): number;
114
+ getBlockStream(fromBlockHeight?: number): AsyncIterable<Block[]>;
115
+ }
116
+ export type GetDataSourceBlock<T> = T extends DataSource<infer B> ? B : never;
117
+ export {};
118
+ //# sourceMappingURL=source.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../src/source.ts"],"names":[],"mappings":"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"}
package/lib/source.js ADDED
@@ -0,0 +1,296 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.DataSourceBuilder = void 0;
16
+ const http_client_1 = require("@subsquid/http-client");
17
+ const util_internal_1 = require("@subsquid/util-internal");
18
+ const util_internal_archive_client_1 = require("@subsquid/util-internal-archive-client");
19
+ const util_internal_processor_tools_1 = require("@subsquid/util-internal-processor-tools");
20
+ const util_internal_range_1 = require("@subsquid/util-internal-range");
21
+ const data_source_1 = require("@subsquid/fuel-data/lib/data-source");
22
+ const assert_1 = __importDefault(require("assert"));
23
+ const source_1 = require("./archive/source");
24
+ const fields_1 = require("./fields");
25
+ const graphql_1 = require("./graphql");
26
+ class DataSourceBuilder {
27
+ constructor() {
28
+ this.requests = [];
29
+ this.running = false;
30
+ }
31
+ assertNotRunning() {
32
+ if (this.running) {
33
+ throw new Error('Settings modifications are not allowed after start of processing');
34
+ }
35
+ }
36
+ /**
37
+ * Set Subsquid Network Gateway endpoint (ex Archive).
38
+ *
39
+ * Subsquid Network allows to get data from finalized blocks up to
40
+ * infinite times faster and more efficient than via regular GraphQL.
41
+ *
42
+ * @example
43
+ * processor.setGateway('https://v2.archive.subsquid.io/network/fuel-mainnet')
44
+ */
45
+ setGateway(url) {
46
+ this.assertNotRunning();
47
+ if (typeof url == 'string') {
48
+ this.gateway = { url };
49
+ }
50
+ else {
51
+ this.gateway = url;
52
+ }
53
+ return this;
54
+ }
55
+ /**
56
+ * Set up GraphQL data ingestion
57
+ */
58
+ setGraphql(settings) {
59
+ this.assertNotRunning();
60
+ this.graphql = settings;
61
+ return this;
62
+ }
63
+ /**
64
+ * Limits the range of blocks to be processed.
65
+ *
66
+ * When the upper bound is specified,
67
+ * the processor will terminate with exit code 0 once it reaches it.
68
+ */
69
+ setBlockRange(range) {
70
+ this.assertNotRunning();
71
+ this.blockRange = range;
72
+ return this;
73
+ }
74
+ /**
75
+ * Configure a set of fetched fields
76
+ */
77
+ setFields(fields) {
78
+ this.assertNotRunning();
79
+ this.fields = fields;
80
+ return this;
81
+ }
82
+ add(range, request) {
83
+ this.requests.push({
84
+ range: range || { from: 0 },
85
+ request
86
+ });
87
+ }
88
+ /**
89
+ * By default, the processor will fetch only blocks
90
+ * which contain requested items. This method
91
+ * modifies such behaviour to fetch all chain blocks.
92
+ *
93
+ * Optionally a range of blocks can be specified
94
+ * for which the setting should be effective.
95
+ */
96
+ includeAllBlocks(range) {
97
+ this.assertNotRunning();
98
+ this.add(range, { includeAllBlocks: true });
99
+ return this;
100
+ }
101
+ addTransaction(options) {
102
+ this.assertNotRunning();
103
+ let { range, ...req } = options;
104
+ this.add(range, {
105
+ transactions: [req]
106
+ });
107
+ return this;
108
+ }
109
+ addReceipt(options) {
110
+ this.assertNotRunning();
111
+ let { range, ...req } = options;
112
+ this.add(range, {
113
+ receipts: [req]
114
+ });
115
+ return this;
116
+ }
117
+ addInput(options) {
118
+ this.assertNotRunning();
119
+ let { range, ...req } = options;
120
+ this.add(range, {
121
+ inputs: [req]
122
+ });
123
+ return this;
124
+ }
125
+ addOutput(options) {
126
+ this.assertNotRunning();
127
+ let { range, ...req } = options;
128
+ this.add(range, {
129
+ outputs: [req]
130
+ });
131
+ return this;
132
+ }
133
+ getRequests() {
134
+ function concat(a, b) {
135
+ let result = [];
136
+ if (a) {
137
+ result.push(...a);
138
+ }
139
+ if (b) {
140
+ result.push(...b);
141
+ }
142
+ return result.length == 0 ? undefined : result;
143
+ }
144
+ let requests = (0, util_internal_range_1.mergeRangeRequests)(this.requests, (a, b) => {
145
+ return {
146
+ includeAllBlocks: a.includeAllBlocks || b.includeAllBlocks,
147
+ transactions: concat(a.transactions, b.transactions),
148
+ receipts: concat(a.receipts, b.receipts),
149
+ inputs: concat(a.inputs, b.inputs),
150
+ outputs: concat(a.outputs, b.outputs),
151
+ };
152
+ });
153
+ let fields = (0, fields_1.getFields)(this.fields);
154
+ requests = requests.map(({ range, request }) => {
155
+ return {
156
+ range,
157
+ request: {
158
+ fields,
159
+ ...request
160
+ }
161
+ };
162
+ });
163
+ return (0, util_internal_range_1.applyRangeBound)(requests, this.blockRange);
164
+ }
165
+ build() {
166
+ return new FuelDataSource(this.getRequests(), this.gateway, this.graphql);
167
+ }
168
+ }
169
+ exports.DataSourceBuilder = DataSourceBuilder;
170
+ __decorate([
171
+ util_internal_1.def,
172
+ __metadata("design:type", Function),
173
+ __metadata("design:paramtypes", []),
174
+ __metadata("design:returntype", Array)
175
+ ], DataSourceBuilder.prototype, "getRequests", null);
176
+ class FuelDataSource {
177
+ constructor(requests, gatewaySettings, graphqlSettings) {
178
+ this.requests = requests;
179
+ this.gatewaySettings = gatewaySettings;
180
+ (0, assert_1.default)(this.gatewaySettings || graphqlSettings, 'either gateway or GraphQL should be provided');
181
+ if (graphqlSettings) {
182
+ this.graphql = this.createGraphqlDataSource(graphqlSettings);
183
+ }
184
+ this.ranges = this.requests.map(req => req.range);
185
+ }
186
+ getFinalizedHeight() {
187
+ if (this.graphql) {
188
+ return this.graphql.getFinalizedHeight();
189
+ }
190
+ else {
191
+ return this.createGateway().getFinalizedHeight();
192
+ }
193
+ }
194
+ async getBlockHash(height) {
195
+ await this.assertConsistency();
196
+ if (this.gatewaySettings == null) {
197
+ (0, assert_1.default)(this.graphql);
198
+ return this.graphql.getBlockHash(height);
199
+ }
200
+ else {
201
+ let gateway = this.createGateway();
202
+ let head = await gateway.getFinalizedHeight();
203
+ if (head >= height)
204
+ return gateway.getBlockHash(height);
205
+ if (this.graphql)
206
+ return this.graphql.getBlockHash(height);
207
+ }
208
+ }
209
+ async assertConsistency() {
210
+ if (this.isConsistent || this.gatewaySettings == null || this.graphql == null)
211
+ return;
212
+ let blocks = await this.performConsistencyCheck().catch(err => {
213
+ throw (0, util_internal_1.addErrorContext)(new Error(`Failed to check consistency between Subsquid Gateway and GraphQL endpoints`), { reason: err });
214
+ });
215
+ if (blocks == null) {
216
+ this.isConsistent = true;
217
+ }
218
+ else {
219
+ throw (0, util_internal_1.addErrorContext)(new Error(`Provided Subsquid Gateway and GraphQL endpoints don't agree on block №${blocks.archiveBlock.height}`), blocks);
220
+ }
221
+ }
222
+ async performConsistencyCheck() {
223
+ let archive = this.createGateway();
224
+ let height = await archive.getFinalizedHeight();
225
+ let archiveBlock = await archive.getBlockHeader(height);
226
+ let gqlBlock = await this.graphql.getBlockHeader(archiveBlock.height);
227
+ if (gqlBlock?.id === archiveBlock.hash && Number(gqlBlock.height) === archiveBlock.height)
228
+ return;
229
+ return { archiveBlock, gqlBlock: gqlBlock || null };
230
+ }
231
+ getBlocksCountInRange(range) {
232
+ return (0, util_internal_range_1.getSize)(this.ranges, range);
233
+ }
234
+ async *getBlockStream(fromBlockHeight) {
235
+ await this.assertConsistency();
236
+ let requests = fromBlockHeight == null
237
+ ? this.requests
238
+ : (0, util_internal_range_1.applyRangeBound)(this.requests, { from: fromBlockHeight });
239
+ if (requests.length == 0)
240
+ return;
241
+ if (this.gatewaySettings) {
242
+ let agent = new http_client_1.HttpAgent({ keepAlive: true });
243
+ try {
244
+ let archive = this.createGateway(agent);
245
+ let height = await archive.getFinalizedHeight();
246
+ let from = requests[0].range.from;
247
+ if (height > from || !this.graphql) {
248
+ for await (let batch of archive.getBlockStream(requests, !!this.graphql)) {
249
+ yield batch;
250
+ from = (0, util_internal_1.last)(batch).header.height + 1;
251
+ }
252
+ requests = (0, util_internal_range_1.applyRangeBound)(requests, { from });
253
+ }
254
+ }
255
+ finally {
256
+ agent.close();
257
+ }
258
+ }
259
+ if (requests.length == 0)
260
+ return;
261
+ (0, assert_1.default)(this.graphql);
262
+ yield* this.graphql.getBlockStream(requests);
263
+ }
264
+ createGateway(agent) {
265
+ (0, assert_1.default)(this.gatewaySettings);
266
+ let http = new http_client_1.HttpClient({
267
+ headers: {
268
+ 'x-squid-id': this.getSquidId()
269
+ },
270
+ agent
271
+ });
272
+ return new source_1.FuelGateway(new util_internal_archive_client_1.ArchiveClient({
273
+ http,
274
+ url: this.gatewaySettings.url,
275
+ queryTimeout: this.gatewaySettings.requestTimeout,
276
+ }));
277
+ }
278
+ createGraphqlDataSource(settings) {
279
+ let dataSource = new data_source_1.HttpDataSource({
280
+ client: new http_client_1.HttpClient({ baseUrl: settings.url }),
281
+ strideConcurrency: settings.strideConcurrency,
282
+ strideSize: settings.strideSize,
283
+ });
284
+ return new graphql_1.GraphqlDataSource(dataSource);
285
+ }
286
+ getSquidId() {
287
+ return (0, util_internal_processor_tools_1.getOrGenerateSquidId)();
288
+ }
289
+ }
290
+ __decorate([
291
+ util_internal_1.def,
292
+ __metadata("design:type", Function),
293
+ __metadata("design:paramtypes", []),
294
+ __metadata("design:returntype", String)
295
+ ], FuelDataSource.prototype, "getSquidId", null);
296
+ //# sourceMappingURL=source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source.js","sourceRoot":"","sources":["../src/source.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,34 @@
1
+ {
2
+ "name": "@subsquid/fuel-stream",
3
+ "version": "0.0.1",
4
+ "description": "Fuel block data streamer",
5
+ "license": "GPL-3.0-or-later",
6
+ "repository": "git@github.com:subsquid/squid.git",
7
+ "publishConfig": {
8
+ "access": "public"
9
+ },
10
+ "files": [
11
+ "lib",
12
+ "src"
13
+ ],
14
+ "main": "lib/index.js",
15
+ "dependencies": {
16
+ "@subsquid/http-client": "^1.4.0",
17
+ "@subsquid/logger": "^1.3.3",
18
+ "@subsquid/fuel-normalization": "^0.0.1",
19
+ "@subsquid/fuel-data": "^0.0.1",
20
+ "@subsquid/util-internal": "^3.2.0",
21
+ "@subsquid/util-internal-archive-client": "^0.1.2",
22
+ "@subsquid/util-internal-ingest-tools": "^1.1.2",
23
+ "@subsquid/util-internal-processor-tools": "^4.1.1",
24
+ "@subsquid/util-internal-range": "^0.3.0",
25
+ "@subsquid/util-internal-validation": "^0.5.0"
26
+ },
27
+ "devDependencies": {
28
+ "@types/node": "^18.18.14",
29
+ "typescript": "~5.3.2"
30
+ },
31
+ "scripts": {
32
+ "build": "rm -rf lib && tsc"
33
+ }
34
+ }