@chainlink/external-adapter-framework 0.15.0 → 0.16.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/config/index.js +1 -1
- package/config/index.js.map +1 -1
- package/examples/bank-frick/accounts.d.ts +45 -0
- package/examples/bank-frick/accounts.js +203 -0
- package/examples/bank-frick/accounts.js.map +1 -0
- package/examples/bank-frick/config/index.d.ts +17 -0
- package/examples/bank-frick/config/index.js +55 -0
- package/examples/bank-frick/config/index.js.map +1 -0
- package/examples/bank-frick/index.d.ts +2 -0
- package/examples/bank-frick/index.js +16 -0
- package/examples/bank-frick/index.js.map +1 -0
- package/examples/bank-frick/util.d.ts +4 -0
- package/examples/bank-frick/util.js +40 -0
- package/examples/bank-frick/util.js.map +1 -0
- package/examples/coingecko/src/config/index.d.ts +2 -0
- package/examples/coingecko/src/config/index.js +6 -0
- package/examples/coingecko/src/config/index.js.map +1 -0
- package/examples/coingecko/src/config/overrides.json +10825 -0
- package/examples/coingecko/src/crypto-utils.d.ts +62 -0
- package/examples/coingecko/src/crypto-utils.js +60 -0
- package/examples/coingecko/src/crypto-utils.js.map +1 -0
- package/examples/coingecko/src/endpoint/coins.d.ts +26 -0
- package/examples/coingecko/src/endpoint/coins.js +37 -0
- package/examples/coingecko/src/endpoint/coins.js.map +1 -0
- package/examples/coingecko/src/endpoint/crypto-marketcap.d.ts +3 -0
- package/examples/coingecko/src/endpoint/crypto-marketcap.js +30 -0
- package/examples/coingecko/src/endpoint/crypto-marketcap.js.map +1 -0
- package/examples/coingecko/src/endpoint/crypto-volume.d.ts +3 -0
- package/examples/coingecko/src/endpoint/crypto-volume.js +30 -0
- package/examples/coingecko/src/endpoint/crypto-volume.js.map +1 -0
- package/examples/coingecko/src/endpoint/crypto.d.ts +3 -0
- package/examples/coingecko/src/endpoint/crypto.js +28 -0
- package/examples/coingecko/src/endpoint/crypto.js.map +1 -0
- package/examples/coingecko/src/endpoint/dominance.d.ts +3 -0
- package/examples/coingecko/src/endpoint/dominance.js +28 -0
- package/examples/coingecko/src/endpoint/dominance.js.map +1 -0
- package/examples/coingecko/src/endpoint/global-marketcap.d.ts +3 -0
- package/examples/coingecko/src/endpoint/global-marketcap.js +28 -0
- package/examples/coingecko/src/endpoint/global-marketcap.js.map +1 -0
- package/examples/coingecko/src/endpoint/index.d.ts +6 -0
- package/examples/coingecko/src/endpoint/index.js +16 -0
- package/examples/coingecko/src/endpoint/index.js.map +1 -0
- package/examples/coingecko/src/global-utils.d.ts +42 -0
- package/examples/coingecko/src/global-utils.js +47 -0
- package/examples/coingecko/src/global-utils.js.map +1 -0
- package/examples/coingecko/src/index.d.ts +4 -0
- package/examples/coingecko/src/index.js +19 -0
- package/examples/coingecko/src/index.js.map +1 -0
- package/examples/cryptocompare/src/config/index.d.ts +2 -0
- package/examples/cryptocompare/src/config/index.js +6 -0
- package/examples/cryptocompare/src/config/index.js.map +1 -0
- package/examples/cryptocompare/src/endpoints/crypto.d.ts +40 -0
- package/examples/cryptocompare/src/endpoints/crypto.js +54 -0
- package/examples/cryptocompare/src/endpoints/crypto.js.map +1 -0
- package/examples/cryptocompare/src/endpoints/index.d.ts +1 -0
- package/examples/cryptocompare/src/endpoints/index.js +6 -0
- package/examples/cryptocompare/src/endpoints/index.js.map +1 -0
- package/examples/cryptocompare/src/index.d.ts +4 -0
- package/examples/cryptocompare/src/index.js +14 -0
- package/examples/cryptocompare/src/index.js.map +1 -0
- package/examples/genesis/config/index.d.ts +7 -0
- package/examples/genesis/config/index.js +11 -0
- package/examples/genesis/config/index.js.map +1 -0
- package/examples/genesis/index.d.ts +2 -0
- package/examples/genesis/index.js +13 -0
- package/examples/genesis/index.js.map +1 -0
- package/examples/genesis/sseStream.d.ts +27 -0
- package/examples/genesis/sseStream.js +149 -0
- package/examples/genesis/sseStream.js.map +1 -0
- package/package.json +1 -1
- package/rate-limiting/request/simple-counting.d.ts +1 -1
- package/rate-limiting/request/simple-counting.js +8 -12
- package/rate-limiting/request/simple-counting.js.map +1 -1
- package/scripts/generator/index.d.ts +1 -0
- package/scripts/generator/index.js +5 -0
- package/scripts/generator/index.js.map +1 -0
- package/scripts/generator/lib.d.ts +1 -0
- package/scripts/generator/lib.js +170 -0
- package/scripts/generator/lib.js.map +1 -0
- package/scripts/generator/workspace.d.ts +21 -0
- package/scripts/generator/workspace.js +76 -0
- package/scripts/generator/workspace.js.map +1 -0
- package/transports/batch-warming.d.ts +8 -20
- package/transports/batch-warming.js +68 -55
- package/transports/batch-warming.js.map +1 -1
- package/transports/http.js +4 -0
- package/transports/http.js.map +1 -1
- package/transports/meta/routing.d.ts +1 -1
- package/transports/meta/routing.js +1 -1
- package/transports/meta/routing.js.map +1 -1
- package/transports/routing.d.ts +22 -0
- package/transports/routing.js +60 -0
- package/transports/routing.js.map +1 -0
- package/transports/websocket.d.ts +3 -1
- package/transports/websocket.js +7 -3
- package/transports/websocket.js.map +1 -1
- package/util/request.d.ts +25 -25
- package/util/requester.js +4 -2
- package/util/requester.js.map +1 -1
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.getWorkspacePackages = exports.PUBLIC_ADAPTER_TYPES = void 0;
|
|
27
|
+
/* eslint-disable @typescript-eslint/no-var-requires */
|
|
28
|
+
const fs_1 = require("fs");
|
|
29
|
+
const path_1 = require("path");
|
|
30
|
+
const s = __importStar(require("shelljs"));
|
|
31
|
+
/**
|
|
32
|
+
* Types of adapters that are publically consumed
|
|
33
|
+
*/
|
|
34
|
+
exports.PUBLIC_ADAPTER_TYPES = ['sources'];
|
|
35
|
+
const scope = '@chainlink/';
|
|
36
|
+
function getWorkspacePackages(additionalTypes = []) {
|
|
37
|
+
const adapterTypes = exports.PUBLIC_ADAPTER_TYPES.concat(additionalTypes);
|
|
38
|
+
const workspaces = JSON.parse(s.exec('yarn workspaces info', { silent: true }));
|
|
39
|
+
return Object.keys(workspaces)
|
|
40
|
+
.map((name) => ({ name, location: workspaces[name].location }))
|
|
41
|
+
.map(({ location, name }) => {
|
|
42
|
+
const pkg = getJsonFile((0, path_1.join)(location, 'package.json'));
|
|
43
|
+
return {
|
|
44
|
+
location,
|
|
45
|
+
name,
|
|
46
|
+
descopedName: name.replace(scope, ''),
|
|
47
|
+
type: location.split('/')[1],
|
|
48
|
+
version: pkg.version,
|
|
49
|
+
framework: '3',
|
|
50
|
+
};
|
|
51
|
+
})
|
|
52
|
+
.filter((v) => adapterTypes.includes(v.type))
|
|
53
|
+
.map((p) => {
|
|
54
|
+
let tsconf;
|
|
55
|
+
try {
|
|
56
|
+
tsconf = getJsonFile((0, path_1.join)(p.location, 'tsconfig.json'));
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
warnLog(`${(0, path_1.join)(p.location, 'tsconfig.json')} does not exist`);
|
|
60
|
+
}
|
|
61
|
+
return { ...p, tsconf };
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
exports.getWorkspacePackages = getWorkspacePackages;
|
|
65
|
+
function getJsonFile(path) {
|
|
66
|
+
return JSON.parse((0, fs_1.readFileSync)(path, 'utf-8'));
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* @param str The string to log
|
|
70
|
+
*/
|
|
71
|
+
function warnLog(str) {
|
|
72
|
+
if (process.env['DEBUG']) {
|
|
73
|
+
console.warn(str);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=workspace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../../../src/scripts/generator/workspace.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uDAAuD;AACvD,2BAAiC;AACjC,+BAA2B;AAC3B,2CAA4B;AAe5B;;GAEG;AACU,QAAA,oBAAoB,GAAG,CAAC,SAAS,CAAC,CAAA;AAC/C,MAAM,KAAK,GAAG,aAAa,CAAA;AAG3B,SAAgB,oBAAoB,CAAC,kBAA4B,EAAE;IACjE,MAAM,YAAY,GAAG,4BAAoB,CAAC,MAAM,CAAC,eAAe,CAAC,CAAA;IACjE,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IAC/E,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;SAC3B,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,QAAkB,EAAuB,CAAA,CAAC;SAC5F,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAoB,EAAE,EAAE;QAC5C,MAAM,GAAG,GAAwB,WAAW,CAAC,IAAA,WAAI,EAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAA;QAE5E,OAAO;YACL,QAAQ;YACR,IAAI;YACJ,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;YACrC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC5B,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,SAAS,EAAE,GAAG;SACf,CAAA;IACH,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SAC5C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,IAAI,MAA4B,CAAA;QAChC,IAAI;YACF,MAAM,GAAG,WAAW,CAAC,IAAA,WAAI,EAAC,CAAC,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAA;SACxD;QAAC,MAAM;YACN,OAAO,CAAC,GAAG,IAAA,WAAI,EAAC,CAAC,CAAC,QAAQ,EAAE,eAAe,CAAC,iBAAiB,CAAC,CAAA;SAC/D;QAED,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB,CAAC,CAAC,CAAA;AACN,CAAC;AA5BD,oDA4BC;AACD,SAAS,WAAW,CAAC,IAAY;IAC/B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAY,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAA;AAChD,CAAC;AAED;;GAEG;AACH,SAAS,OAAO,CAAC,GAAW;IAC1B,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;QACxB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;KAClB;AACH,CAAC"}
|
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
import { AxiosRequestConfig, AxiosResponse } from 'axios';
|
|
2
2
|
import { EndpointContext } from '../adapter';
|
|
3
3
|
import { AdapterConfig } from '../config';
|
|
4
|
-
import { ProviderResult } from '../util/request';
|
|
5
|
-
import {
|
|
6
|
-
import { TransportDependencies, TransportGenerics } from './';
|
|
4
|
+
import { AdapterRequest, ProviderResult } from '../util/request';
|
|
5
|
+
import { TransportGenerics } from './';
|
|
7
6
|
import { SubscriptionTransport } from './abstract/subscription';
|
|
8
7
|
/**
|
|
9
8
|
* Helper struct type that will be used to pass types to the generic parameters of a Transport.
|
|
10
9
|
* Extends the common TransportGenerics, adding Provider specific types for this Batch endpoint.
|
|
11
10
|
*/
|
|
12
|
-
|
|
11
|
+
type BatchWarmingTransportGenerics = TransportGenerics & {
|
|
13
12
|
/**
|
|
14
13
|
* Type details for any provider specific interfaces.
|
|
15
14
|
*/
|
|
@@ -24,20 +23,11 @@ declare type HttpTransportGenerics = TransportGenerics & {
|
|
|
24
23
|
ResponseBody: unknown;
|
|
25
24
|
};
|
|
26
25
|
};
|
|
27
|
-
/**
|
|
28
|
-
* Structure containing the association between EA params and a provider request.
|
|
29
|
-
*/
|
|
30
|
-
declare type ProviderRequestConfig<T extends HttpTransportGenerics> = {
|
|
31
|
-
/** The input paramters for requests that will get responses from the request in this struct */
|
|
32
|
-
params: T['Request']['Params'][];
|
|
33
|
-
/** The request that will be sent to the data provider to fetch values for the params in this struct */
|
|
34
|
-
request: AxiosRequestConfig<T['Provider']['RequestBody']>;
|
|
35
|
-
};
|
|
36
26
|
/**
|
|
37
27
|
* Config object that is provided to the BatchWarmingTransport constructor.
|
|
38
28
|
*/
|
|
39
|
-
export interface
|
|
40
|
-
|
|
29
|
+
export interface BatchWarmingTransportConfig<T extends BatchWarmingTransportGenerics> {
|
|
30
|
+
prepareRequest: (params: T['Request']['Params'][], config: AdapterConfig<T['CustomSettings']>) => AxiosRequestConfig<T['Provider']['RequestBody']>;
|
|
41
31
|
parseResponse: (params: T['Request']['Params'][], res: AxiosResponse<T['Provider']['ResponseBody']>, config: AdapterConfig<T['CustomSettings']>) => ProviderResult<T>[];
|
|
42
32
|
}
|
|
43
33
|
/**
|
|
@@ -50,15 +40,13 @@ export interface HttpTransportConfig<T extends HttpTransportGenerics> {
|
|
|
50
40
|
*
|
|
51
41
|
* @typeParam T - all types related to the [[Transport]]
|
|
52
42
|
*/
|
|
53
|
-
export declare class
|
|
43
|
+
export declare class BatchWarmingTransport<T extends BatchWarmingTransportGenerics> extends SubscriptionTransport<T> {
|
|
54
44
|
private config;
|
|
55
45
|
WARMER_ACTIVE: boolean;
|
|
56
|
-
|
|
57
|
-
constructor(config: HttpTransportConfig<T>);
|
|
58
|
-
initialize(dependencies: TransportDependencies<T>, config: AdapterConfig<T['CustomSettings']>, endpointName: string): Promise<void>;
|
|
46
|
+
constructor(config: BatchWarmingTransportConfig<T>);
|
|
59
47
|
getSubscriptionTtlFromConfig(config: AdapterConfig<T['CustomSettings']>): number;
|
|
48
|
+
registerRequest(req: AdapterRequest<T['Request']>, config: AdapterConfig<T['CustomSettings']>): Promise<void>;
|
|
60
49
|
backgroundHandler(context: EndpointContext<T>, entries: T['Request']['Params'][]): Promise<void>;
|
|
61
|
-
private handleRequest;
|
|
62
50
|
private makeRequest;
|
|
63
51
|
}
|
|
64
52
|
export {};
|
|
@@ -23,14 +23,13 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.
|
|
27
|
-
const axios_1 = require("axios");
|
|
26
|
+
exports.BatchWarmingTransport = void 0;
|
|
28
27
|
const cacheMetrics = __importStar(require("../cache/metrics"));
|
|
29
28
|
const rateLimitMetrics = __importStar(require("../rate-limiting/metrics"));
|
|
30
29
|
const util_1 = require("../util");
|
|
31
|
-
const requester_1 = require("../util/requester");
|
|
32
30
|
const error_1 = require("../validation/error");
|
|
33
31
|
const subscription_1 = require("./abstract/subscription");
|
|
32
|
+
const util_2 = require("./util");
|
|
34
33
|
const WARMUP_BATCH_REQUEST_ID = '9002';
|
|
35
34
|
const logger = (0, util_1.makeLogger)('BatchWarmingTransport');
|
|
36
35
|
/**
|
|
@@ -43,7 +42,7 @@ const logger = (0, util_1.makeLogger)('BatchWarmingTransport');
|
|
|
43
42
|
*
|
|
44
43
|
* @typeParam T - all types related to the [[Transport]]
|
|
45
44
|
*/
|
|
46
|
-
class
|
|
45
|
+
class BatchWarmingTransport extends subscription_1.SubscriptionTransport {
|
|
47
46
|
constructor(config) {
|
|
48
47
|
super();
|
|
49
48
|
this.config = config;
|
|
@@ -51,13 +50,23 @@ class HttpTransport extends subscription_1.SubscriptionTransport {
|
|
|
51
50
|
// Used for recording the cache warmer active metrics accurately
|
|
52
51
|
this.WARMER_ACTIVE = false;
|
|
53
52
|
}
|
|
54
|
-
async initialize(dependencies, config, endpointName) {
|
|
55
|
-
await super.initialize(dependencies, config, endpointName);
|
|
56
|
-
this.requester = new requester_1.Requester(dependencies.requestRateLimiter, config);
|
|
57
|
-
}
|
|
58
53
|
getSubscriptionTtlFromConfig(config) {
|
|
59
54
|
return config.WARMUP_SUBSCRIPTION_TTL;
|
|
60
55
|
}
|
|
56
|
+
async registerRequest(req, config) {
|
|
57
|
+
if (config.BATCH_TRANSPORT_SETUP_VALIDATION) {
|
|
58
|
+
const response = await this.makeRequest([req.requestContext.data], config);
|
|
59
|
+
if (!response.results.length) {
|
|
60
|
+
throw new error_1.AdapterError({
|
|
61
|
+
statusCode: 200,
|
|
62
|
+
providerStatusCode: response.providerResponse.status,
|
|
63
|
+
message: response.providerResponse.message ||
|
|
64
|
+
'There was an error while validating the incoming request before adding to the batch subscription set',
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return super.registerRequest(req, config);
|
|
69
|
+
}
|
|
61
70
|
async backgroundHandler(context, entries) {
|
|
62
71
|
if (!entries.length) {
|
|
63
72
|
logger.debug('No entries in batch warming set, skipping');
|
|
@@ -73,65 +82,69 @@ class HttpTransport extends subscription_1.SubscriptionTransport {
|
|
|
73
82
|
cacheMetrics.cacheWarmerCount.labels({ isBatched: 'true' }).inc();
|
|
74
83
|
this.WARMER_ACTIVE = true;
|
|
75
84
|
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
const requests = Array.isArray(rawRequests) ? rawRequests : [rawRequests];
|
|
79
|
-
logger.trace(`Queueing ${requests.length} requests`);
|
|
80
|
-
await Promise.all(requests.map((r) => this.handleRequest(r, context.adapterConfig)));
|
|
81
|
-
return;
|
|
82
|
-
}
|
|
83
|
-
async handleRequest(requestConfig, adapterConfig) {
|
|
84
|
-
const results = await this.makeRequest(requestConfig, adapterConfig);
|
|
85
|
-
if (!results.length) {
|
|
85
|
+
const response = await this.makeRequest(entries, context.adapterConfig);
|
|
86
|
+
if (!response.results?.length) {
|
|
86
87
|
return;
|
|
87
88
|
}
|
|
88
89
|
logger.debug('Setting adapter responses in cache');
|
|
89
|
-
await this.responseCache.write(results);
|
|
90
|
+
await this.responseCache.write(response.results);
|
|
91
|
+
// Record cost of data provider call
|
|
92
|
+
const cost = rateLimitMetrics.retrieveCost(response.providerResponse.data);
|
|
93
|
+
rateLimitMetrics.rateLimitCreditsSpentTotal
|
|
94
|
+
.labels({
|
|
95
|
+
feed_id: 'N/A',
|
|
96
|
+
participant_id: WARMUP_BATCH_REQUEST_ID,
|
|
97
|
+
})
|
|
98
|
+
.inc(cost);
|
|
99
|
+
return;
|
|
90
100
|
}
|
|
91
|
-
async makeRequest(
|
|
101
|
+
async makeRequest(entries, config) {
|
|
102
|
+
logger.trace(`Have ${entries.length} entries in batch, preparing request...`);
|
|
103
|
+
const request = this.config.prepareRequest(entries, config);
|
|
104
|
+
logger.trace(`Sending request to data provider: ${JSON.stringify(request)}`);
|
|
105
|
+
const providerDataRequested = Date.now();
|
|
106
|
+
let providerResponse;
|
|
92
107
|
try {
|
|
93
|
-
|
|
94
|
-
// Parse responses and apply timestamps
|
|
95
|
-
const results = this.config
|
|
96
|
-
.parseResponse(requestConfig.params, requesterResult.response, adapterConfig)
|
|
97
|
-
.map((r) => {
|
|
98
|
-
const result = r;
|
|
99
|
-
const partialResponse = r.response;
|
|
100
|
-
result.response.timestamps = {
|
|
101
|
-
...requesterResult.timestamps,
|
|
102
|
-
providerIndicatedTime: partialResponse.timestamps?.providerIndicatedTime,
|
|
103
|
-
};
|
|
104
|
-
return result;
|
|
105
|
-
});
|
|
106
|
-
// Record cost of data provider call
|
|
107
|
-
const cost = rateLimitMetrics.retrieveCost(requesterResult.response.data);
|
|
108
|
-
rateLimitMetrics.rateLimitCreditsSpentTotal
|
|
109
|
-
.labels({
|
|
110
|
-
feed_id: 'N/A',
|
|
111
|
-
participant_id: WARMUP_BATCH_REQUEST_ID,
|
|
112
|
-
})
|
|
113
|
-
.inc(cost);
|
|
114
|
-
return results;
|
|
108
|
+
providerResponse = await (0, util_2.axiosRequest)(request, config);
|
|
115
109
|
}
|
|
116
110
|
catch (e) {
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
111
|
+
const err = e.cause;
|
|
112
|
+
const providerDataReceived = Date.now();
|
|
113
|
+
logger.warn(`There was an error while performing the batch request: ${e}`);
|
|
114
|
+
return {
|
|
115
|
+
results: entries.map((entry) => ({
|
|
121
116
|
params: entry,
|
|
122
117
|
response: {
|
|
123
|
-
errorMessage: `Provider request failed with status ${
|
|
118
|
+
errorMessage: `Provider request failed with status ${err?.status}: "${err?.response?.data}"`,
|
|
124
119
|
statusCode: 502,
|
|
125
|
-
timestamps:
|
|
120
|
+
timestamps: {
|
|
121
|
+
providerDataRequested,
|
|
122
|
+
providerDataReceived,
|
|
123
|
+
providerIndicatedTime: undefined,
|
|
124
|
+
},
|
|
126
125
|
},
|
|
127
|
-
}))
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
logger.error(e);
|
|
131
|
-
return [];
|
|
132
|
-
}
|
|
126
|
+
})),
|
|
127
|
+
providerResponse: e,
|
|
128
|
+
};
|
|
133
129
|
}
|
|
130
|
+
const providerDataReceived = Date.now();
|
|
131
|
+
// Parse responses and apply timestamps
|
|
132
|
+
const results = this.config.parseResponse(entries, providerResponse, config).map((r) => {
|
|
133
|
+
const result = r;
|
|
134
|
+
const partialResponse = r.response;
|
|
135
|
+
result.response.timestamps = {
|
|
136
|
+
providerDataRequested,
|
|
137
|
+
providerDataReceived,
|
|
138
|
+
providerIndicatedTime: partialResponse.timestamps?.providerIndicatedTime,
|
|
139
|
+
};
|
|
140
|
+
return result;
|
|
141
|
+
});
|
|
142
|
+
logger.debug(`Got response from provider, parsing (raw body: ${providerResponse.data})`);
|
|
143
|
+
return {
|
|
144
|
+
results,
|
|
145
|
+
providerResponse,
|
|
146
|
+
};
|
|
134
147
|
}
|
|
135
148
|
}
|
|
136
|
-
exports.
|
|
149
|
+
exports.BatchWarmingTransport = BatchWarmingTransport;
|
|
137
150
|
//# sourceMappingURL=batch-warming.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batch-warming.js","sourceRoot":"","sources":["../../../src/transports/batch-warming.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"batch-warming.js","sourceRoot":"","sources":["../../../src/transports/batch-warming.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,+DAAgD;AAEhD,2EAA4D;AAC5D,kCAAoC;AAOpC,+CAA4E;AAE5E,0DAA+D;AAC/D,iCAAqC;AAErC,MAAM,uBAAuB,GAAG,MAAM,CAAA;AAEtC,MAAM,MAAM,GAAG,IAAA,iBAAU,EAAC,uBAAuB,CAAC,CAAA;AAsClD;;;;;;;;;GASG;AACH,MAAa,qBAEX,SAAQ,oCAAwB;IAKhC,YAAoB,MAAsC;QACxD,KAAK,EAAE,CAAA;QADW,WAAM,GAAN,MAAM,CAAgC;QAJ1D,uGAAuG;QACvG,gEAAgE;QAChE,kBAAa,GAAG,KAAK,CAAA;IAIrB,CAAC;IAED,4BAA4B,CAAC,MAA0C;QACrE,OAAO,MAAM,CAAC,uBAAuB,CAAA;IACvC,CAAC;IAEQ,KAAK,CAAC,eAAe,CAC5B,GAAiC,EACjC,MAA0C;QAE1C,IAAI,MAAM,CAAC,gCAAgC,EAAE;YAC3C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAA;YAE1E,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE;gBAC5B,MAAM,IAAI,oBAAY,CAAC;oBACrB,UAAU,EAAE,GAAG;oBACf,kBAAkB,EAAE,QAAQ,CAAC,gBAAgB,CAAC,MAAM;oBACpD,OAAO,EACJ,QAAQ,CAAC,gBAAqC,CAAC,OAAO;wBACvD,sGAAsG;iBACzG,CAAC,CAAA;aACH;SACF;QAED,OAAO,KAAK,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IAC3C,CAAC;IAED,KAAK,CAAC,iBAAiB,CACrB,OAA2B,EAC3B,OAAiC;QAEjC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YACnB,MAAM,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAA;YACzD,IAAI,IAAI,CAAC,aAAa,EAAE;gBACtB,yEAAyE;gBACzE,YAAY,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE,CAAA;gBACjE,IAAI,CAAC,aAAa,GAAG,KAAK,CAAA;aAC3B;YACD,OAAM;SACP;aAAM,IAAI,IAAI,CAAC,aAAa,KAAK,KAAK,EAAE;YACvC,4EAA4E;YAC5E,YAAY,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,EAAE,CAAA;YACjE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAA;SAC1B;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,CAAA;QAEvE,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE;YAC7B,OAAM;SACP;QAED,MAAM,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAA;QAClD,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;QAEhD,oCAAoC;QACpC,MAAM,IAAI,GAAG,gBAAgB,CAAC,YAAY,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAA;QAC1E,gBAAgB,CAAC,0BAA0B;aACxC,MAAM,CAAC;YACN,OAAO,EAAE,KAAK;YACd,cAAc,EAAE,uBAAuB;SACxC,CAAC;aACD,GAAG,CAAC,IAAI,CAAC,CAAA;QAEZ,OAAM;IACR,CAAC;IAEO,KAAK,CAAC,WAAW,CACvB,OAAiC,EACjC,MAA0C;QAK1C,MAAM,CAAC,KAAK,CAAC,QAAQ,OAAO,CAAC,MAAM,yCAAyC,CAAC,CAAA;QAC7E,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QAE3D,MAAM,CAAC,KAAK,CAAC,qCAAqC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QAC5E,MAAM,qBAAqB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACxC,IAAI,gBAAgB,CAAA;QACpB,IAAI;YACF,gBAAgB,GAAG,MAAM,IAAA,mBAAY,EAInC,OAAO,EAAE,MAAM,CAAC,CAAA;SACnB;QAAC,OAAO,CAAC,EAAE;YACV,MAAM,GAAG,GAAI,CAA8B,CAAC,KAA+B,CAAA;YAC3E,MAAM,oBAAoB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YACvC,MAAM,CAAC,IAAI,CAAC,0DAA0D,CAAC,EAAE,CAAC,CAAA;YAC1E,OAAO;gBACL,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oBAC/B,MAAM,EAAE,KAAK;oBACb,QAAQ,EAAE;wBACR,YAAY,EAAE,uCAAuC,GAAG,EAAE,MAAM,MAAM,GAAG,EAAE,QAAQ,EAAE,IAAI,GAAG;wBAC5F,UAAU,EAAE,GAAG;wBACf,UAAU,EAAE;4BACV,qBAAqB;4BACrB,oBAAoB;4BACpB,qBAAqB,EAAE,SAAS;yBACjC;qBACF;iBACF,CAAC,CAAC;gBACH,gBAAgB,EAAE,CAAkB;aACrC,CAAA;SACF;QACD,MAAM,oBAAoB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAEvC,uCAAuC;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACrF,MAAM,MAAM,GAAG,CAAiC,CAAA;YAChD,MAAM,eAAe,GAAG,CAAC,CAAC,QAAoD,CAAA;YAC9E,MAAM,CAAC,QAAQ,CAAC,UAAU,GAAG;gBAC3B,qBAAqB;gBACrB,oBAAoB;gBACpB,qBAAqB,EAAE,eAAe,CAAC,UAAU,EAAE,qBAAqB;aACzE,CAAA;YACD,OAAO,MAAM,CAAA;QACf,CAAC,CAAC,CAAA;QAEF,MAAM,CAAC,KAAK,CAAC,kDAAkD,gBAAgB,CAAC,IAAI,GAAG,CAAC,CAAA;QACxF,OAAO;YACL,OAAO;YACP,gBAAgB;SACjB,CAAA;IACH,CAAC;CACF;AAtID,sDAsIC"}
|
package/transports/http.js
CHANGED
|
@@ -110,6 +110,10 @@ class HttpTransport extends subscription_1.SubscriptionTransport {
|
|
|
110
110
|
}
|
|
111
111
|
async makeRequest(requestConfig, adapterConfig) {
|
|
112
112
|
try {
|
|
113
|
+
// The key generated here that we pass to the requester is potentially very long, but we're not considering it an issue given that:
|
|
114
|
+
// - the requester will store values in memory, so we're not sending the string anywhere
|
|
115
|
+
// - there's no problems using very large strings as object keys
|
|
116
|
+
// - there should be a limit on the amount of subscriptions in the set
|
|
113
117
|
const requesterResult = await this.requester.request(requestConfig.params.map((p) => JSON.stringify(p)).join('|'), requestConfig.request);
|
|
114
118
|
// Parse responses and apply timestamps
|
|
115
119
|
const results = this.config
|
package/transports/http.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/transports/http.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/transports/http.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@ export declare class RoutingTransport<T extends TransportGenerics> implements Me
|
|
|
15
15
|
private route;
|
|
16
16
|
constructor(transports: {
|
|
17
17
|
[key: string]: Transport<T>;
|
|
18
|
-
}, route: (req: AdapterRequest<T['Request']>, adapterConfig
|
|
18
|
+
}, route: (req: AdapterRequest<T['Request']>, adapterConfig: AdapterConfig<T['CustomSettings']>) => string);
|
|
19
19
|
responseCache: ResponseCache<{
|
|
20
20
|
Request: T['Request'];
|
|
21
21
|
Response: T['Response'];
|
|
@@ -36,7 +36,7 @@ class RoutingTransport {
|
|
|
36
36
|
}
|
|
37
37
|
resolveTransport(req, adapterConfig) {
|
|
38
38
|
logger.debug(`routing request using `, req.requestContext.data);
|
|
39
|
-
const key = this.route(req, adapterConfig
|
|
39
|
+
const key = this.route(req, adapterConfig);
|
|
40
40
|
if (!this.transports[key]) {
|
|
41
41
|
logger.error(`No transport found for key ${key}`);
|
|
42
42
|
throw new error_1.AdapterError({ statusCode: 400, message: `No transport found for ${key}` });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routing.js","sourceRoot":"","sources":["../../../../src/transports/meta/routing.ts"],"names":[],"mappings":";;;AAGA,qCAAwE;AACxE,kDAAqD;AAGrD,MAAM,MAAM,GAAG,IAAA,iBAAU,EAAC,kBAAkB,CAAC,CAAA;AAE7C;;;;GAIG;AACH,MAAa,gBAAgB;IAI3B;IACE,6GAA6G;IACtG,UAA2C;IAClD,+FAA+F;IACvF,KAGG;QALJ,eAAU,GAAV,UAAU,CAAiC;QAE1C,UAAK,GAAL,KAAK,CAGF;IACV,CAAC;IAOJ,KAAK,CAAC,UAAU,CACd,YAAsC,EACtC,aAAiD,EACjD,YAAoB;QAEpB,MAAM,CAAC,KAAK,CAAC,gBAAgB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,aAAa,CAAC,CAAA;QAC9E,MAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,EAAE;YACxD,MAAM,CAAC,KAAK,CAAC,0BAA0B,IAAI,KAAK,SAAS,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,CAAA;YAC9E,OAAO,SAAS,CAAC,UAAU,CAAC,YAAY,EAAE,aAAa,EAAE,YAAY,CAAC,CAAA;QACxE,CAAC,CAAC,CACH,CAAA;IACH,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,GAAiC,EACjC,aAAiD;QAEjD,MAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;QAEnE,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,aAAa,CAAC,CAAA;QAC3D,IAAI,SAAS,CAAC,eAAe,EAAE;YAC7B,MAAM,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAA;YAC9D,OAAO,SAAS,CAAC,eAAe,CAAC,GAAG,EAAE,aAAa,CAAC,CAAA;SACrD;QACD,MAAM,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAA;IACvE,CAAC;IAEO,gBAAgB,CACtB,GAAiC,EACjC,
|
|
1
|
+
{"version":3,"file":"routing.js","sourceRoot":"","sources":["../../../../src/transports/meta/routing.ts"],"names":[],"mappings":";;;AAGA,qCAAwE;AACxE,kDAAqD;AAGrD,MAAM,MAAM,GAAG,IAAA,iBAAU,EAAC,kBAAkB,CAAC,CAAA;AAE7C;;;;GAIG;AACH,MAAa,gBAAgB;IAI3B;IACE,6GAA6G;IACtG,UAA2C;IAClD,+FAA+F;IACvF,KAGG;QALJ,eAAU,GAAV,UAAU,CAAiC;QAE1C,UAAK,GAAL,KAAK,CAGF;IACV,CAAC;IAOJ,KAAK,CAAC,UAAU,CACd,YAAsC,EACtC,aAAiD,EACjD,YAAoB;QAEpB,MAAM,CAAC,KAAK,CAAC,gBAAgB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,aAAa,CAAC,CAAA;QAC9E,MAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,EAAE;YACxD,MAAM,CAAC,KAAK,CAAC,0BAA0B,IAAI,KAAK,SAAS,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,CAAA;YAC9E,OAAO,SAAS,CAAC,UAAU,CAAC,YAAY,EAAE,aAAa,EAAE,YAAY,CAAC,CAAA;QACxE,CAAC,CAAC,CACH,CAAA;IACH,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,GAAiC,EACjC,aAAiD;QAEjD,MAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;QAEnE,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,aAAa,CAAC,CAAA;QAC3D,IAAI,SAAS,CAAC,eAAe,EAAE;YAC7B,MAAM,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAA;YAC9D,OAAO,SAAS,CAAC,eAAe,CAAC,GAAG,EAAE,aAAa,CAAC,CAAA;SACrD;QACD,MAAM,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAA;IACvE,CAAC;IAEO,gBAAgB,CACtB,GAAiC,EACjC,aAAiD;QAEjD,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;QAC/D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,aAAa,CAAC,CAAA;QAC1C,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;YACzB,MAAM,CAAC,KAAK,CAAC,8BAA8B,GAAG,EAAE,CAAC,CAAA;YACjD,MAAM,IAAI,oBAAY,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,0BAA0B,GAAG,EAAE,EAAE,CAAC,CAAA;SACtF;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;QACtC,MAAM,CAAC,KAAK,CAAC,SAAS,SAAS,CAAC,WAAW,CAAC,IAAI,qBAAqB,GAAG,EAAE,CAAC,CAAA;QAC3E,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,oFAAoF;IACpF,wDAAwD;IACxD,KAAK,CAAC,iBAAiB,CACrB,GAAiC,EACjC,aAAiD;QAEjD,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,aAAa,CAAC,CAAA;QAC3D,IAAI,SAAS,CAAC,iBAAiB,EAAE;YAC/B,MAAM,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAA;YAChE,OAAO,SAAS,CAAC,iBAAiB,CAAC,GAAG,EAAE,aAAa,CAAC,CAAA;SACvD;QACD,MAAM,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAA;IACzE,CAAC;CACF;AA3ED,4CA2EC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { AdapterDependencies } from '../adapter';
|
|
2
|
+
import { AdapterConfig } from '../config';
|
|
3
|
+
import { AdapterRequest, AdapterResponse } from '../util';
|
|
4
|
+
import { MetaTransport, Transport, TransportGenerics } from './';
|
|
5
|
+
/**
|
|
6
|
+
* Transport implementation that takes 2 or more transports and a function that determines with transport to use.
|
|
7
|
+
*
|
|
8
|
+
* @typeParam T - Helper struct type that will be used to pass types to the generic parameters (check [[TransportGenerics]])
|
|
9
|
+
*/
|
|
10
|
+
export declare class RoutingTransport<T extends TransportGenerics> implements MetaTransport<T> {
|
|
11
|
+
transports: {
|
|
12
|
+
[key: string]: Transport<T>;
|
|
13
|
+
};
|
|
14
|
+
private route;
|
|
15
|
+
constructor(transports: {
|
|
16
|
+
[key: string]: Transport<T>;
|
|
17
|
+
}, route: (req: AdapterRequest<T['Request']>, adapterConfig?: AdapterConfig<T['CustomSettings']>) => string);
|
|
18
|
+
initialize(dependencies: AdapterDependencies, adapterConfig: AdapterConfig<T['CustomSettings']>, endpointName: string): Promise<void>;
|
|
19
|
+
registerRequest(req: AdapterRequest<T['Request']>, adapterConfig: AdapterConfig<T['CustomSettings']>): Promise<void>;
|
|
20
|
+
private resolveTransport;
|
|
21
|
+
foregroundExecute(req: AdapterRequest<T['Request']>, adapterConfig: AdapterConfig<T['CustomSettings']>): Promise<AdapterResponse<any> | void>;
|
|
22
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RoutingTransport = void 0;
|
|
4
|
+
const util_1 = require("../util");
|
|
5
|
+
const error_1 = require("../validation/error");
|
|
6
|
+
const logger = (0, util_1.makeLogger)('RoutingTransport');
|
|
7
|
+
/**
|
|
8
|
+
* Transport implementation that takes 2 or more transports and a function that determines with transport to use.
|
|
9
|
+
*
|
|
10
|
+
* @typeParam T - Helper struct type that will be used to pass types to the generic parameters (check [[TransportGenerics]])
|
|
11
|
+
*/
|
|
12
|
+
class RoutingTransport {
|
|
13
|
+
constructor(
|
|
14
|
+
// This is public for tests, which sometimes need the underlying transport for things like ticking the clock
|
|
15
|
+
transports,
|
|
16
|
+
// Route should return to a string key that corresponds to a transport in the transports object
|
|
17
|
+
route) {
|
|
18
|
+
this.transports = transports;
|
|
19
|
+
this.route = route;
|
|
20
|
+
}
|
|
21
|
+
async initialize(dependencies, adapterConfig, endpointName) {
|
|
22
|
+
logger.debug(`Initializing ${Object.keys(this.transports).length} transports`);
|
|
23
|
+
Object.entries(this.transports).forEach(([k, v]) => {
|
|
24
|
+
logger.debug(`Initializing transport ${k} (${v.constructor.name})`);
|
|
25
|
+
v.initialize(dependencies, adapterConfig, endpointName);
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
async registerRequest(req, adapterConfig) {
|
|
29
|
+
logger.debug(`registering request using `, req.requestContext.data);
|
|
30
|
+
const transport = this.resolveTransport(req, adapterConfig);
|
|
31
|
+
if (transport.registerRequest) {
|
|
32
|
+
logger.debug(`Running registerRequest on retrieved transport`);
|
|
33
|
+
return transport.registerRequest(req, adapterConfig);
|
|
34
|
+
}
|
|
35
|
+
logger.debug(`Retrieved transport doesn't implement registerRequest`);
|
|
36
|
+
}
|
|
37
|
+
resolveTransport(req, adapterConfig) {
|
|
38
|
+
logger.debug(`routing request using `, req.requestContext.data);
|
|
39
|
+
const key = this.route(req, adapterConfig || undefined);
|
|
40
|
+
if (!this.transports[key]) {
|
|
41
|
+
logger.error(`No transport found for key ${key}`);
|
|
42
|
+
throw new error_1.AdapterError({ statusCode: 400, message: `No transport found for ${key}` });
|
|
43
|
+
}
|
|
44
|
+
const transport = this.transports[key];
|
|
45
|
+
logger.debug(`Found ${transport.constructor.name} corresponding to ${key}`);
|
|
46
|
+
return transport;
|
|
47
|
+
}
|
|
48
|
+
// Allow AdapterResponse<any> below since we don't know what the adapter will return
|
|
49
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
50
|
+
async foregroundExecute(req, adapterConfig) {
|
|
51
|
+
const transport = this.resolveTransport(req, adapterConfig);
|
|
52
|
+
if (transport.foregroundExecute) {
|
|
53
|
+
logger.debug(`Running foregroundExecute on retrieved transport`);
|
|
54
|
+
return transport.foregroundExecute(req, adapterConfig);
|
|
55
|
+
}
|
|
56
|
+
logger.debug(`Retrieved transport doesn't implement foregroundExecute`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
exports.RoutingTransport = RoutingTransport;
|
|
60
|
+
//# sourceMappingURL=routing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routing.js","sourceRoot":"","sources":["../../../src/transports/routing.ts"],"names":[],"mappings":";;;AAEA,kCAAqE;AACrE,+CAAkD;AAGlD,MAAM,MAAM,GAAG,IAAA,iBAAU,EAAC,kBAAkB,CAAC,CAAA;AAE7C;;;;GAIG;AACH,MAAa,gBAAgB;IAI3B;IACE,6GAA6G;IACtG,UAA2C;IAClD,+FAA+F;IACvF,KAGG;QALJ,eAAU,GAAV,UAAU,CAAiC;QAE1C,UAAK,GAAL,KAAK,CAGF;IACV,CAAC;IAEJ,KAAK,CAAC,UAAU,CACd,YAAiC,EACjC,aAAiD,EACjD,YAAoB;QAEpB,MAAM,CAAC,KAAK,CAAC,gBAAgB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,aAAa,CAAC,CAAA;QAC9E,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;YACjD,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,CAAA;YACnE,CAAC,CAAC,UAAU,CAAC,YAAY,EAAE,aAAa,EAAE,YAAY,CAAC,CAAA;QACzD,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,GAAiC,EACjC,aAAiD;QAEjD,MAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;QAEnE,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,aAAa,CAAC,CAAA;QAC3D,IAAI,SAAS,CAAC,eAAe,EAAE;YAC7B,MAAM,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAA;YAC9D,OAAO,SAAS,CAAC,eAAe,CAAC,GAAG,EAAE,aAAa,CAAC,CAAA;SACrD;QACD,MAAM,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAA;IACvE,CAAC;IAEO,gBAAgB,CACtB,GAAiC,EACjC,aAAkD;QAElD,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;QAC/D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,aAAa,IAAI,SAAS,CAAC,CAAA;QACvD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;YACzB,MAAM,CAAC,KAAK,CAAC,8BAA8B,GAAG,EAAE,CAAC,CAAA;YACjD,MAAM,IAAI,oBAAY,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,0BAA0B,GAAG,EAAE,EAAE,CAAC,CAAA;SACtF;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;QACtC,MAAM,CAAC,KAAK,CAAC,SAAS,SAAS,CAAC,WAAW,CAAC,IAAI,qBAAqB,GAAG,EAAE,CAAC,CAAA;QAC3E,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,oFAAoF;IACpF,wDAAwD;IACxD,KAAK,CAAC,iBAAiB,CACrB,GAAiC,EACjC,aAAiD;QAEjD,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,aAAa,CAAC,CAAA;QAC3D,IAAI,SAAS,CAAC,iBAAiB,EAAE;YAC/B,MAAM,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAA;YAChE,OAAO,SAAS,CAAC,iBAAiB,CAAC,GAAG,EAAE,aAAa,CAAC,CAAA;SACvD;QACD,MAAM,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAA;IACzE,CAAC;CACF;AApED,4CAoEC"}
|
|
@@ -34,9 +34,10 @@ export interface WebSocketTransportConfig<T extends WebsocketTransportGenerics>
|
|
|
34
34
|
*
|
|
35
35
|
* @param message - the message received by the WS
|
|
36
36
|
* @param context - the background context for the Adapter
|
|
37
|
+
* @param params - current params in the subscription set
|
|
37
38
|
* @returns a list of cache entries of adapter responses to set in the cache
|
|
38
39
|
*/
|
|
39
|
-
message: (message: T['Provider']['WsMessage'], context: EndpointContext<T
|
|
40
|
+
message: (message: T['Provider']['WsMessage'], context: EndpointContext<T>, params: T['Request']['Params'][]) => ProviderResult<T>[] | undefined;
|
|
40
41
|
};
|
|
41
42
|
/** Map of "builders", functions that will be used to prepare specific WS messages */
|
|
42
43
|
builders?: {
|
|
@@ -83,6 +84,7 @@ export declare class WebSocketTransport<T extends WebsocketTransportGenerics> ex
|
|
|
83
84
|
currentUrl: string;
|
|
84
85
|
lastMessageReceivedAt: number;
|
|
85
86
|
connectionOpenedAt: number;
|
|
87
|
+
desiredSubscriptions: T['Request']['Params'][];
|
|
86
88
|
constructor(config: WebSocketTransportConfig<T>);
|
|
87
89
|
getSubscriptionTtlFromConfig(config: AdapterConfig<T['CustomSettings']>): number;
|
|
88
90
|
connectionClosed(): boolean;
|
package/transports/websocket.js
CHANGED
|
@@ -56,6 +56,7 @@ class WebSocketTransport extends streaming_1.StreamingTransport {
|
|
|
56
56
|
this.currentUrl = '';
|
|
57
57
|
this.lastMessageReceivedAt = 0;
|
|
58
58
|
this.connectionOpenedAt = 0;
|
|
59
|
+
this.desiredSubscriptions = [];
|
|
59
60
|
}
|
|
60
61
|
getSubscriptionTtlFromConfig(config) {
|
|
61
62
|
return config.WS_SUBSCRIPTION_TTL;
|
|
@@ -87,7 +88,9 @@ class WebSocketTransport extends streaming_1.StreamingTransport {
|
|
|
87
88
|
const parsed = this.deserializeMessage(event.data);
|
|
88
89
|
logger.trace(`Got ws message: ${event.data}`);
|
|
89
90
|
const providerDataReceived = Date.now();
|
|
90
|
-
const results = this.config.handlers
|
|
91
|
+
const results = this.config.handlers
|
|
92
|
+
.message(parsed, context, this.desiredSubscriptions)
|
|
93
|
+
?.map((r) => {
|
|
91
94
|
const result = r;
|
|
92
95
|
const partialResponse = r.response;
|
|
93
96
|
result.response.timestamps = {
|
|
@@ -149,6 +152,7 @@ class WebSocketTransport extends streaming_1.StreamingTransport {
|
|
|
149
152
|
}
|
|
150
153
|
}
|
|
151
154
|
async streamHandler(context, subscriptions) {
|
|
155
|
+
this.desiredSubscriptions = subscriptions.desired;
|
|
152
156
|
// New subs && no connection -> connect -> add subs
|
|
153
157
|
// No new subs && no connection -> skip
|
|
154
158
|
// New subs && connection -> add subs
|
|
@@ -159,7 +163,7 @@ class WebSocketTransport extends streaming_1.StreamingTransport {
|
|
|
159
163
|
}
|
|
160
164
|
// We want to check if the URL we calculate is different from the one currently connected.
|
|
161
165
|
// This is because some providers handle subscriptions on the URLs and not through messages.
|
|
162
|
-
const urlFromConfig = await this.config.url(context,
|
|
166
|
+
const urlFromConfig = await this.config.url(context, this.desiredSubscriptions);
|
|
163
167
|
const urlChanged = this.currentUrl !== urlFromConfig;
|
|
164
168
|
// We want to check that if we have a connection, it hasn't gone stale. That is,
|
|
165
169
|
// since opening it, have we had any activity from the provider.
|
|
@@ -185,7 +189,7 @@ class WebSocketTransport extends streaming_1.StreamingTransport {
|
|
|
185
189
|
}
|
|
186
190
|
}
|
|
187
191
|
// Check if we need to open a new connection
|
|
188
|
-
if (connectionClosed &&
|
|
192
|
+
if (connectionClosed && this.desiredSubscriptions.length) {
|
|
189
193
|
logger.debug('No established connection and new subscriptions available, connecting to WS');
|
|
190
194
|
const options = this.config.options && (await this.config.options(context));
|
|
191
195
|
this.currentUrl = urlFromConfig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../../src/transports/websocket.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAAsD;AAU7C,oBAVF,YAAS,CAUE;AAPlB,kCAA2C;AAG3C,4DAA6C;AAC7C,oDAA6E;AAK7E,MAAM,MAAM,GAAG,IAAA,iBAAU,EAAC,oBAAoB,CAAC,CAAA;AAQ/C,MAAa,sBAAsB;IAGjC,MAAM,CAAC,GAAG,CAAC,IAAoB;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;IAED,MAAM,CAAC,GAAG;QACR,OAAO,IAAI,CAAC,IAAI,CAAA;IAClB,CAAC;;AATH,wDAUC;AATQ,2BAAI,GAAmB,YAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../../src/transports/websocket.ts"],"names":[],"mappings":"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"}
|