@subsquid/portal-client 0.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/lib/client.js ADDED
@@ -0,0 +1,440 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ForkException = exports.PortalClient = void 0;
4
+ exports.createQuery = createQuery;
5
+ exports.isForkException = isForkException;
6
+ const http_client_1 = require("@subsquid/http-client");
7
+ const util_internal_1 = require("@subsquid/util-internal");
8
+ const USER_AGENT = `@subsquid/portal-client (https://sqd.ai)`;
9
+ function createQuery(query) {
10
+ return query;
11
+ }
12
+ class PortalClient {
13
+ constructor(options) {
14
+ this.url = new URL(options.url);
15
+ this.client = options.http instanceof http_client_1.HttpClient ? options.http : new http_client_1.HttpClient(options.http);
16
+ this.headPollInterval = options.headPollInterval ?? 0;
17
+ this.minBytes = options.minBytes ?? 10 * 1024 * 1024;
18
+ this.maxBytes = options.maxBytes ?? this.minBytes;
19
+ this.maxIdleTime = options.maxIdleTime ?? 300;
20
+ this.maxWaitTime = options.maxWaitTime ?? 5000;
21
+ }
22
+ getDatasetUrl(path) {
23
+ let u = new URL(this.url);
24
+ if (this.url.pathname.endsWith('/')) {
25
+ u.pathname += path;
26
+ }
27
+ else {
28
+ u.pathname += '/' + path;
29
+ }
30
+ return u.toString();
31
+ }
32
+ async getHead(options) {
33
+ const res = await this.request('GET', this.getDatasetUrl('head'), options);
34
+ return res.body ?? undefined;
35
+ }
36
+ async getFinalizedHead(options) {
37
+ const res = await this.request('GET', this.getDatasetUrl('finalized-head'), options);
38
+ return res.body ?? undefined;
39
+ }
40
+ /**
41
+ * @deprecated
42
+ */
43
+ async getFinalizedHeight(options) {
44
+ let { body } = await this.request('GET', this.getDatasetUrl('finalized-stream/height'), options);
45
+ let height = parseInt(body);
46
+ return height;
47
+ }
48
+ getFinalizedQuery(query, options) {
49
+ // FIXME: is it needed or it is better to always use stream?
50
+ return this.request('POST', this.getDatasetUrl(`finalized-stream`), {
51
+ ...options,
52
+ json: query,
53
+ })
54
+ .catch((0, util_internal_1.withErrorContext)({
55
+ archiveQuery: query,
56
+ }))
57
+ .then((res) => {
58
+ let blocks = res.body
59
+ .toString('utf8')
60
+ .trimEnd()
61
+ .split('\n')
62
+ .map((line) => JSON.parse(line));
63
+ return blocks;
64
+ });
65
+ }
66
+ getQuery(query, options) {
67
+ // FIXME: is it needed or it is better to always use stream?
68
+ return this.request('POST', this.getDatasetUrl(`stream`), {
69
+ ...options,
70
+ json: query,
71
+ })
72
+ .catch((0, util_internal_1.withErrorContext)({
73
+ archiveQuery: query,
74
+ }))
75
+ .then((res) => {
76
+ let blocks = res.body
77
+ .toString('utf8')
78
+ .trimEnd()
79
+ .split('\n')
80
+ .map((line) => JSON.parse(line));
81
+ return blocks;
82
+ });
83
+ }
84
+ getFinalizedStream(query, options) {
85
+ return createPortalStream(query, this.getStreamOptions(options), async (q, o) => this.getStreamRequest('finalized-stream', q, o));
86
+ }
87
+ getStream(query, options) {
88
+ return createPortalStream(query, this.getStreamOptions(options), async (q, o) => this.getStreamRequest('stream', q, o));
89
+ }
90
+ getStreamOptions(options) {
91
+ let { headPollInterval = this.headPollInterval, minBytes = this.minBytes, maxBytes = this.maxBytes, maxIdleTime = this.maxIdleTime, maxWaitTime = this.maxWaitTime, request = {}, } = options ?? {};
92
+ return {
93
+ headPollInterval,
94
+ minBytes,
95
+ maxBytes,
96
+ maxIdleTime,
97
+ maxWaitTime,
98
+ request,
99
+ };
100
+ }
101
+ async getStreamRequest(path, query, options) {
102
+ try {
103
+ let res = await this.request('POST', this.getDatasetUrl(path), {
104
+ ...options,
105
+ json: query,
106
+ stream: true,
107
+ }).catch((0, util_internal_1.withErrorContext)({
108
+ query: query,
109
+ }));
110
+ switch (res.status) {
111
+ case 200:
112
+ let finalizedHead = getFinalizedHeadHeader(res.headers);
113
+ let stream = res.body ? splitLines(res.body) : undefined;
114
+ return {
115
+ finalizedHead,
116
+ stream,
117
+ };
118
+ case 204:
119
+ return {
120
+ finalizedHead: getFinalizedHeadHeader(res.headers),
121
+ };
122
+ default:
123
+ throw (0, util_internal_1.unexpectedCase)(res.status);
124
+ }
125
+ }
126
+ catch (e) {
127
+ if (isForkHttpError(e) && query.fromBlock != null && query.parentBlockHash != null) {
128
+ e = new ForkException(e.response.body.lastBlocks, {
129
+ number: query.fromBlock - 1,
130
+ hash: query.parentBlockHash,
131
+ });
132
+ }
133
+ throw (0, util_internal_1.addErrorContext)(e, {
134
+ query,
135
+ });
136
+ }
137
+ }
138
+ request(method, url, options = {}) {
139
+ return this.client.request(method, url, {
140
+ ...options,
141
+ headers: {
142
+ 'User-Agent': USER_AGENT,
143
+ ...options?.headers,
144
+ },
145
+ });
146
+ }
147
+ }
148
+ exports.PortalClient = PortalClient;
149
+ function isForkHttpError(err) {
150
+ if (!(err instanceof http_client_1.HttpError))
151
+ return false;
152
+ if (err.response.status !== 409)
153
+ return false;
154
+ if (err.response.body.lastBlocks == null)
155
+ return false;
156
+ return true;
157
+ }
158
+ function createPortalStream(query, options, requestStream) {
159
+ let { headPollInterval, request, ...bufferOptions } = options;
160
+ let buffer = new PortalStreamBuffer(bufferOptions);
161
+ let { fromBlock = 0, toBlock, parentBlockHash } = query;
162
+ const ingest = async () => {
163
+ if (buffer.signal.aborted)
164
+ return;
165
+ if (toBlock != null && fromBlock > toBlock)
166
+ return;
167
+ let res = await requestStream({
168
+ ...query,
169
+ fromBlock,
170
+ parentBlockHash,
171
+ }, {
172
+ ...request,
173
+ abort: buffer.signal,
174
+ });
175
+ const finalizedHead = res.finalizedHead;
176
+ // we are on head
177
+ if (!('stream' in res)) {
178
+ await buffer.put({ blocks: [], meta: { bytes: 0 }, finalizedHead });
179
+ buffer.flush();
180
+ if (headPollInterval > 0) {
181
+ await (0, util_internal_1.wait)(headPollInterval, buffer.signal);
182
+ }
183
+ return ingest();
184
+ }
185
+ // no data left on this range
186
+ if (res.stream == null)
187
+ return;
188
+ let iterator = res.stream[Symbol.asyncIterator]();
189
+ try {
190
+ while (true) {
191
+ let data = await iterator.next();
192
+ if (data.done)
193
+ break;
194
+ let blocks = [];
195
+ let bytes = 0;
196
+ for (let line of data.value) {
197
+ let block = JSON.parse(line);
198
+ blocks.push(block);
199
+ bytes += line.length;
200
+ fromBlock = block.header.number + 1;
201
+ parentBlockHash = block.header.hash;
202
+ }
203
+ await buffer.put({ blocks, finalizedHead, meta: { bytes } });
204
+ }
205
+ buffer.flush();
206
+ }
207
+ catch (err) {
208
+ if (buffer.signal.aborted || isStreamAbortedError(err)) {
209
+ // ignore
210
+ }
211
+ else {
212
+ throw err;
213
+ }
214
+ }
215
+ finally {
216
+ await iterator?.return?.().catch(() => { });
217
+ }
218
+ return ingest();
219
+ };
220
+ ingest().then(() => buffer.close(), (err) => buffer.fail(err));
221
+ return buffer.iterate();
222
+ }
223
+ class PortalStreamBuffer {
224
+ get signal() {
225
+ return this.abortController.signal;
226
+ }
227
+ constructor(options) {
228
+ this.state = 'pending';
229
+ this.readyFuture = (0, util_internal_1.createFuture)();
230
+ this.takeFuture = (0, util_internal_1.createFuture)();
231
+ this.putFuture = (0, util_internal_1.createFuture)();
232
+ this.abortController = new AbortController();
233
+ this.maxWaitTime = options.maxWaitTime;
234
+ this.minBytes = options.minBytes;
235
+ this.maxBytes = Math.max(options.maxBytes, options.minBytes);
236
+ this.maxIdleTime = options.maxIdleTime;
237
+ }
238
+ async take() {
239
+ if (this.state === 'pending') {
240
+ this.waitTimeout = setTimeout(() => this._ready(), this.maxWaitTime);
241
+ }
242
+ await Promise.all([this.readyFuture.promise(), this.putFuture.promise()]);
243
+ if (this.state === 'failed') {
244
+ throw this.error;
245
+ }
246
+ let result = this.buffer;
247
+ this.buffer = undefined;
248
+ if (this.state === 'closed') {
249
+ return result;
250
+ }
251
+ if (result == null) {
252
+ throw new Error('Buffer is empty');
253
+ }
254
+ this.takeFuture.resolve();
255
+ this.readyFuture = (0, util_internal_1.createFuture)();
256
+ this.putFuture = (0, util_internal_1.createFuture)();
257
+ this.takeFuture = (0, util_internal_1.createFuture)();
258
+ this.state = 'pending';
259
+ return result;
260
+ }
261
+ async put(data) {
262
+ if (this.state === 'closed' || this.state === 'failed') {
263
+ throw new Error('Buffer is closed');
264
+ }
265
+ if (this.idleTimeout != null) {
266
+ clearTimeout(this.idleTimeout);
267
+ this.idleTimeout = undefined;
268
+ }
269
+ if (this.buffer == null) {
270
+ this.buffer = { blocks: [], meta: { bytes: 0 } };
271
+ }
272
+ this.buffer.blocks.push(...data.blocks);
273
+ this.buffer.finalizedHead = data.finalizedHead;
274
+ this.buffer.meta.bytes += data.meta.bytes;
275
+ this.putFuture.resolve();
276
+ if (this.buffer.meta.bytes >= this.minBytes) {
277
+ this.readyFuture.resolve();
278
+ }
279
+ if (this.buffer.meta.bytes >= this.maxBytes) {
280
+ await this.takeFuture.promise();
281
+ }
282
+ if (this.state === 'pending') {
283
+ this.idleTimeout = setTimeout(() => this._ready(), this.maxIdleTime);
284
+ }
285
+ }
286
+ flush() {
287
+ if (this.buffer == null)
288
+ return;
289
+ this._ready();
290
+ }
291
+ close() {
292
+ if (this.state === 'closed' || this.state === 'failed')
293
+ return;
294
+ this.state = 'closed';
295
+ this._cleanup();
296
+ }
297
+ fail(err) {
298
+ if (this.state === 'closed' || this.state === 'failed')
299
+ return;
300
+ this.state = 'failed';
301
+ this.error = err;
302
+ this._cleanup();
303
+ }
304
+ iterate() {
305
+ return {
306
+ [Symbol.asyncIterator]: () => {
307
+ return {
308
+ next: async () => {
309
+ const value = await this.take();
310
+ if (value == null) {
311
+ return { done: true, value: undefined };
312
+ }
313
+ return { done: false, value };
314
+ },
315
+ return: async () => {
316
+ this.close();
317
+ return { done: true, value: undefined };
318
+ },
319
+ throw: async (error) => {
320
+ this.fail(error);
321
+ throw error;
322
+ },
323
+ };
324
+ },
325
+ };
326
+ }
327
+ _ready() {
328
+ if (this.state === 'pending') {
329
+ this.state = 'ready';
330
+ this.readyFuture.resolve();
331
+ }
332
+ if (this.idleTimeout != null) {
333
+ clearTimeout(this.idleTimeout);
334
+ this.idleTimeout = undefined;
335
+ }
336
+ if (this.waitTimeout != null) {
337
+ clearTimeout(this.waitTimeout);
338
+ this.waitTimeout = undefined;
339
+ }
340
+ }
341
+ _cleanup() {
342
+ if (this.idleTimeout != null) {
343
+ clearTimeout(this.idleTimeout);
344
+ this.idleTimeout = undefined;
345
+ }
346
+ if (this.waitTimeout != null) {
347
+ clearTimeout(this.waitTimeout);
348
+ this.waitTimeout = undefined;
349
+ }
350
+ this.readyFuture.resolve();
351
+ this.putFuture.resolve();
352
+ this.takeFuture.resolve();
353
+ this.abortController.abort();
354
+ }
355
+ }
356
+ async function* splitLines(chunks) {
357
+ let splitter = new LineSplitter();
358
+ for await (let chunk of chunks) {
359
+ let lines = splitter.push(chunk);
360
+ if (lines)
361
+ yield lines;
362
+ }
363
+ let lastLine = splitter.end();
364
+ if (lastLine)
365
+ yield [lastLine];
366
+ }
367
+ class LineSplitter {
368
+ constructor() {
369
+ this.decoder = new TextDecoder('utf8');
370
+ this.line = '';
371
+ }
372
+ push(data) {
373
+ let s = this.decoder.decode(data);
374
+ if (!s)
375
+ return;
376
+ let lines = s.split('\n');
377
+ if (lines.length == 1) {
378
+ this.line += lines[0];
379
+ }
380
+ else {
381
+ let result = [];
382
+ lines[0] = this.line + lines[0];
383
+ this.line = (0, util_internal_1.last)(lines);
384
+ for (let i = 0; i < lines.length - 1; i++) {
385
+ let line = lines[i];
386
+ if (line) {
387
+ result.push(line);
388
+ }
389
+ }
390
+ if (result.length > 0)
391
+ return result;
392
+ }
393
+ }
394
+ end() {
395
+ if (this.line)
396
+ return this.line;
397
+ }
398
+ }
399
+ class ForkException extends Error {
400
+ constructor(lastBlocks, head) {
401
+ let parent = (0, util_internal_1.last)(lastBlocks);
402
+ super(`expected ${head.number + 1} to have parent ${parent.number}#${parent.hash}, but got ${head.number}#${head.hash}`);
403
+ this.lastBlocks = lastBlocks;
404
+ this.head = head;
405
+ this.name = 'ForkError';
406
+ }
407
+ }
408
+ exports.ForkException = ForkException;
409
+ function isForkException(err) {
410
+ if (err instanceof ForkException)
411
+ return true;
412
+ if (err instanceof Error && err.name === 'ForkError')
413
+ return true;
414
+ return false;
415
+ }
416
+ function getFinalizedHeadHeader(headers) {
417
+ let finalizedHeadHash = headers.get('X-Sqd-Finalized-Head-Hash');
418
+ let finalizedHeadNumber = headers.get('X-Sqd-Finalized-Head-Number');
419
+ return finalizedHeadHash != null && finalizedHeadNumber != null
420
+ ? {
421
+ hash: finalizedHeadHash,
422
+ number: parseInt(finalizedHeadNumber),
423
+ }
424
+ : undefined;
425
+ }
426
+ function isStreamAbortedError(err) {
427
+ if (!(err instanceof Error))
428
+ return false;
429
+ if (!('code' in err))
430
+ return false;
431
+ switch (err.code) {
432
+ case 'ABORT_ERR':
433
+ case 'ERR_STREAM_PREMATURE_CLOSE':
434
+ case 'ECONNRESET':
435
+ return true;
436
+ default:
437
+ return false;
438
+ }
439
+ }
440
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * @example '0x0123456789abcdef'
3
+ */
4
+ export type Hex = string & {};
5
+ /**
6
+ * @example '123456789ABCDEFGHIJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
7
+ */
8
+ export type Base58 = string & {};
9
+ /**
10
+ * @example '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/='
11
+ */
12
+ export type Base64 = string & {};
13
+ export type Simplify<T> = {
14
+ [K in keyof T]: T[K];
15
+ } & {};
16
+ export type Distribute<T> = T extends any ? T : never;
17
+ export type ConditionalKeys<T, V> = {
18
+ [Key in keyof T]-?: T[Key] extends V ? (T[Key] extends never ? (V extends never ? Key : never) : Key) : never;
19
+ }[keyof T];
20
+ export type ConditionalPick<T, V> = Simplify<Pick<T, ConditionalKeys<T, V>>>;
21
+ export type ConditionalOmit<T, V> = Simplify<Omit<T, ConditionalKeys<T, V>>>;
22
+ export type Selector<Props extends string | number | symbol = string> = {
23
+ [P in Props]?: boolean;
24
+ };
25
+ export type Select<T, S> = S extends never ? never : {
26
+ [K in keyof T as K extends keyof S ? (S[K] extends true ? K : never) : never]: T[K];
27
+ };
28
+ export type Selection = {
29
+ [P in string]?: boolean | Selection;
30
+ };
31
+ export type Trues<T extends Selection> = Simplify<{
32
+ [K in keyof T]-?: [T[K] & {}] extends [Selection] ? Trues<T[K] & {}> : true;
33
+ }>;
34
+ export type PortalQuery = {
35
+ type: string;
36
+ fromBlock?: number;
37
+ toBlock?: number;
38
+ parentBlockHash?: string;
39
+ [key: string]: unknown;
40
+ };
41
+ export type PortalBlock = {
42
+ header: {
43
+ number: number;
44
+ hash: string;
45
+ };
46
+ };
47
+ //# sourceMappingURL=common.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/query/common.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,EAAE,CAAA;AAE7B;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,EAAE,CAAA;AAEhC;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,EAAE,CAAA;AAEhC,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI;KAAE,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAC,GAAG,EAAE,CAAA;AAErD,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,GAAG,KAAK,CAAA;AAErD,MAAM,MAAM,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI;KAC/B,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,KAAK,GAAG,CAAC,CAAC,SAAS,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,KAAK;CAChH,CAAC,MAAM,CAAC,CAAC,CAAA;AAEV,MAAM,MAAM,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;AAE5E,MAAM,MAAM,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;AAE5E,MAAM,MAAM,QAAQ,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,IAAI;KACnE,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,OAAO;CACzB,CAAA;AAED,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,KAAK,GACpC,KAAK,GACL;KACK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;CACtF,CAAA;AAEP,MAAM,MAAM,SAAS,GAAG;KACnB,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,OAAO,GAAG,SAAS;CACtC,CAAA;AAED,MAAM,MAAM,KAAK,CAAC,CAAC,SAAS,SAAS,IAAI,QAAQ,CAAC;KAC7C,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI;CAC9E,CAAC,CAAA;AAEF,MAAM,MAAM,WAAW,GAAG;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACtB,MAAM,EAAE;QACJ,MAAM,EAAE,MAAM,CAAA;QACd,IAAI,EAAE,MAAM,CAAA;KACf,CAAA;CACJ,CAAA"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/query/common.ts"],"names":[],"mappings":""}