@chainlink/external-adapter-framework 0.5.3 → 0.5.4
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 +67 -0
- package/adapter/basic.d.ts +6 -15
- package/adapter/basic.js +7 -25
- package/adapter/basic.js.map +1 -1
- package/adapter/endpoint.d.ts +6 -6
- package/adapter/endpoint.js +0 -1
- package/adapter/endpoint.js.map +1 -1
- package/adapter/price.d.ts +8 -10
- package/adapter/price.js +5 -8
- package/adapter/price.js.map +1 -1
- package/adapter/types.d.ts +13 -19
- package/background-executor.js +4 -19
- package/background-executor.js.map +1 -1
- package/cache/index.d.ts +6 -6
- package/cache/redis.d.ts +3 -0
- package/cache/redis.js +12 -19
- package/cache/redis.js.map +1 -1
- package/config/index.d.ts +0 -1
- package/config/index.js +7 -13
- package/config/index.js.map +1 -1
- package/examples/bank-frick/accounts.d.ts +24 -17
- package/examples/bank-frick/accounts.js +9 -22
- package/examples/bank-frick/accounts.js.map +1 -1
- package/examples/bank-frick/index.d.ts +15 -1
- package/examples/bank-frick/index.js +1 -1
- package/examples/coingecko/src/crypto-utils.d.ts +1 -15
- package/examples/coingecko/src/crypto-utils.js.map +1 -1
- package/examples/coingecko/src/endpoint/coins.d.ts +3 -20
- package/examples/coingecko/src/endpoint/coins.js +2 -2
- package/examples/coingecko/src/endpoint/coins.js.map +1 -1
- package/examples/coingecko/src/endpoint/crypto-marketcap.d.ts +2 -2
- package/examples/coingecko/src/endpoint/crypto-marketcap.js.map +1 -1
- package/examples/coingecko/src/endpoint/crypto-volume.d.ts +2 -2
- package/examples/coingecko/src/endpoint/crypto-volume.js.map +1 -1
- package/examples/coingecko/src/endpoint/crypto.d.ts +1 -2
- package/examples/coingecko/src/endpoint/crypto.js.map +1 -1
- package/examples/coingecko/src/endpoint/dominance.d.ts +2 -2
- package/examples/coingecko/src/endpoint/dominance.js.map +1 -1
- package/examples/coingecko/src/endpoint/global-marketcap.d.ts +2 -2
- package/examples/coingecko/src/endpoint/global-marketcap.js.map +1 -1
- package/examples/coingecko/src/global-utils.d.ts +3 -18
- package/examples/coingecko/src/global-utils.js.map +1 -1
- package/examples/coingecko/src/index.js +1 -1
- package/examples/coingecko-old/batch-warming.d.ts +7 -0
- package/examples/coingecko-old/batch-warming.js +54 -0
- package/examples/coingecko-old/batch-warming.js.map +1 -0
- package/examples/coingecko-old/index.d.ts +2 -0
- package/examples/coingecko-old/index.js +12 -0
- package/examples/coingecko-old/index.js.map +1 -0
- package/examples/coingecko-old/rest.d.ts +12 -0
- package/examples/coingecko-old/rest.js +55 -0
- package/examples/coingecko-old/rest.js.map +1 -0
- package/examples/cryptocompare/src/endpoints/crypto.d.ts +2 -14
- package/examples/cryptocompare/src/endpoints/crypto.js.map +1 -1
- package/examples/cryptocompare/src/index.js +1 -1
- package/examples/genesis/index.js +1 -1
- package/examples/genesis/sseStream.d.ts +2 -13
- package/examples/genesis/sseStream.js.map +1 -1
- package/examples/ncfx/config/index.d.ts +12 -0
- package/examples/ncfx/config/index.js +16 -0
- package/examples/ncfx/config/index.js.map +1 -0
- package/examples/ncfx/index.d.ts +13 -0
- package/examples/ncfx/index.js +12 -0
- package/examples/ncfx/index.js.map +1 -0
- package/examples/ncfx/websocket.d.ts +47 -0
- package/examples/ncfx/websocket.js +74 -0
- package/examples/ncfx/websocket.js.map +1 -0
- package/metrics/util.d.ts +5 -5
- package/metrics/util.js.map +1 -1
- package/package.json +4 -2
- package/rate-limiting/background/fixed-frequency.d.ts +3 -2
- package/rate-limiting/background/fixed-frequency.js.map +1 -1
- package/rate-limiting/index.d.ts +4 -4
- package/rate-limiting/index.js +1 -1
- package/rate-limiting/index.js.map +1 -1
- package/rate-limiting/request/simple-counting.d.ts +3 -2
- package/rate-limiting/request/simple-counting.js.map +1 -1
- package/transports/batch-warming.d.ts +13 -31
- package/transports/batch-warming.js +4 -4
- package/transports/batch-warming.js.map +1 -1
- package/transports/index.d.ts +13 -50
- package/transports/index.js.map +1 -1
- package/transports/metrics.d.ts +2 -2
- package/transports/metrics.js +2 -2
- package/transports/metrics.js.map +1 -1
- package/transports/rest.d.ts +13 -30
- package/transports/rest.js +3 -1
- package/transports/rest.js.map +1 -1
- package/transports/routing.d.ts +12 -10
- package/transports/routing.js +3 -1
- package/transports/routing.js.map +1 -1
- package/transports/sse.d.ts +18 -39
- package/transports/sse.js +1 -6
- package/transports/sse.js.map +1 -1
- package/transports/websocket.d.ts +23 -39
- package/transports/websocket.js +4 -5
- package/transports/websocket.js.map +1 -1
- package/util/logger.js +6 -2
- package/util/logger.js.map +1 -1
- package/util/request.d.ts +10 -46
- package/validation/error.js +1 -1
- package/validation/error.js.map +1 -1
- package/validation/index.js +15 -16
- package/validation/index.js.map +1 -1
- package/validation/override-functions.d.ts +3 -0
- package/validation/override-functions.js +41 -0
- package/validation/override-functions.js.map +1 -0
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
import WebSocket
|
|
1
|
+
import WebSocket from 'ws';
|
|
2
2
|
import { AdapterContext, AdapterDependencies } from '../adapter';
|
|
3
3
|
import { Cache } from '../cache';
|
|
4
|
-
import { AdapterConfig } from '../config';
|
|
4
|
+
import { AdapterConfig, SettingsMap } from '../config';
|
|
5
5
|
import { BackgroundExecuteRateLimiter } from '../rate-limiting';
|
|
6
6
|
import { SubscriptionSet } from '../util';
|
|
7
7
|
import { AdapterRequest, AdapterResponse, ProviderResult } from '../util/request';
|
|
8
|
-
import { Transport,
|
|
9
|
-
|
|
10
|
-
declare type WebSocketClass = new (url: string, protocols?: string | string[] | undefined, options?: ClientOptions) => WebSocket;
|
|
8
|
+
import { Transport, BackgroundStoredResultType } from './';
|
|
9
|
+
declare type WebSocketClass = new (url: string, protocols?: string | string[] | undefined) => WebSocket;
|
|
11
10
|
export declare class WebSocketClassProvider {
|
|
12
11
|
static ctor: WebSocketClass;
|
|
13
12
|
static set(ctor: WebSocketClass): void;
|
|
@@ -16,11 +15,9 @@ export declare class WebSocketClassProvider {
|
|
|
16
15
|
/**
|
|
17
16
|
* Config object that is provided to the WebSocketTransport constructor.
|
|
18
17
|
*/
|
|
19
|
-
export interface WebSocketTransportConfig<
|
|
18
|
+
export interface WebSocketTransportConfig<AdapterParams, ProviderDataMessage, CustomSettings extends SettingsMap> {
|
|
20
19
|
/** Endpoint to which to open the WS connection*/
|
|
21
|
-
url: (context: AdapterContext<
|
|
22
|
-
/** Optional parameters used when establishing the WebSocket connection */
|
|
23
|
-
options?: (context: AdapterContext<T>) => ClientOptions;
|
|
20
|
+
url: (context: AdapterContext<CustomSettings>) => string;
|
|
24
21
|
/** Map of handlers for different WS lifecycle events */
|
|
25
22
|
handlers: {
|
|
26
23
|
/**
|
|
@@ -29,7 +26,7 @@ export interface WebSocketTransportConfig<T extends WebsocketTransportGenerics>
|
|
|
29
26
|
* @param wsConnection - the WebSocket with an established connection
|
|
30
27
|
* @returns an empty Promise, or void
|
|
31
28
|
*/
|
|
32
|
-
open: (wsConnection: WebSocket, context: AdapterContext<
|
|
29
|
+
open: (wsConnection: WebSocket, context: AdapterContext<CustomSettings>) => Promise<void> | void;
|
|
33
30
|
/**
|
|
34
31
|
* Handles when the WS receives a message
|
|
35
32
|
*
|
|
@@ -37,7 +34,7 @@ export interface WebSocketTransportConfig<T extends WebsocketTransportGenerics>
|
|
|
37
34
|
* @param context - the background context for the Adapter
|
|
38
35
|
* @returns a list of cache entries of adapter responses to set in the cache
|
|
39
36
|
*/
|
|
40
|
-
message: (message:
|
|
37
|
+
message: (message: ProviderDataMessage, context: AdapterContext<CustomSettings>) => ProviderResult<AdapterParams>[] | undefined;
|
|
41
38
|
};
|
|
42
39
|
/** Map of "builders", functions that will be used to prepare specific WS messages */
|
|
43
40
|
builders: {
|
|
@@ -47,49 +44,36 @@ export interface WebSocketTransportConfig<T extends WebsocketTransportGenerics>
|
|
|
47
44
|
* @param params - the body of the adapter request
|
|
48
45
|
* @returns the WS message (can be any type as long as the [[WebSocket]] doesn't complain)
|
|
49
46
|
*/
|
|
50
|
-
subscribeMessage: (params:
|
|
47
|
+
subscribeMessage: (params: AdapterParams) => unknown;
|
|
51
48
|
/**
|
|
52
49
|
* Builds a WS message that will be sent to unsubscribe to a specific feed
|
|
53
50
|
*
|
|
54
51
|
* @param params - the body of the adapter request
|
|
55
52
|
* @returns the WS message (can be any type as long as the [[WebSocket]] doesn't complain)
|
|
56
53
|
*/
|
|
57
|
-
unsubscribeMessage: (params:
|
|
54
|
+
unsubscribeMessage: (params: AdapterParams) => unknown;
|
|
58
55
|
};
|
|
59
56
|
}
|
|
60
|
-
/**
|
|
61
|
-
* Helper struct type that will be used to pass types to the generic parameters of a Transport.
|
|
62
|
-
* Extends the common TransportGenerics, adding Provider specific types for this Batch endpoint.
|
|
63
|
-
*/
|
|
64
|
-
declare type WebsocketTransportGenerics = TransportGenerics & {
|
|
65
|
-
/**
|
|
66
|
-
* Type details for any provider specific interfaces.
|
|
67
|
-
*/
|
|
68
|
-
Provider: {
|
|
69
|
-
/**
|
|
70
|
-
* Structure of any message that will come through the websocket connection.
|
|
71
|
-
*/
|
|
72
|
-
WsMessage: unknown;
|
|
73
|
-
};
|
|
74
|
-
};
|
|
75
57
|
/**
|
|
76
58
|
* Transport implementation that takes incoming requests, adds them to an [[subscriptionSet]] and,
|
|
77
59
|
* through a WebSocket connection, subscribes to the relevant feeds to populate the cache.
|
|
78
60
|
*
|
|
79
|
-
* @typeParam
|
|
61
|
+
* @typeParam AdapterParams - interface for the adapter request body
|
|
62
|
+
* @typeParam ProviderDataMessage - interface for a WS message containing processable data (i.e. not part of open/close/login/etc)
|
|
80
63
|
*/
|
|
81
|
-
export declare class WebSocketTransport<
|
|
64
|
+
export declare class WebSocketTransport<AdapterParams, ProviderDataMessage, CustomSettings extends SettingsMap> implements Transport<AdapterParams, BackgroundStoredResultType, CustomSettings> {
|
|
82
65
|
private config;
|
|
83
|
-
cache: Cache<AdapterResponse<
|
|
66
|
+
cache: Cache<AdapterResponse<BackgroundStoredResultType>>;
|
|
84
67
|
rateLimiter: BackgroundExecuteRateLimiter;
|
|
85
|
-
subscriptionSet: SubscriptionSet<
|
|
86
|
-
localSubscriptions:
|
|
68
|
+
subscriptionSet: SubscriptionSet<AdapterParams>;
|
|
69
|
+
localSubscriptions: AdapterParams[];
|
|
87
70
|
wsConnection: WebSocket;
|
|
88
|
-
constructor(config: WebSocketTransportConfig<
|
|
89
|
-
initialize(dependencies: AdapterDependencies, config: AdapterConfig<
|
|
90
|
-
registerRequest(req: AdapterRequest<
|
|
71
|
+
constructor(config: WebSocketTransportConfig<AdapterParams, ProviderDataMessage, CustomSettings>);
|
|
72
|
+
initialize(dependencies: AdapterDependencies, config: AdapterConfig<CustomSettings>, endpointName: string): Promise<void>;
|
|
73
|
+
registerRequest(req: AdapterRequest<AdapterParams>, config: AdapterConfig<CustomSettings>): Promise<void>;
|
|
91
74
|
serializeMessage(payload: unknown): string;
|
|
92
|
-
deserializeMessage(data: WebSocket.Data):
|
|
93
|
-
establishWsConnection(context: AdapterContext<
|
|
94
|
-
backgroundExecute(context: AdapterContext<
|
|
75
|
+
deserializeMessage(data: WebSocket.Data): ProviderDataMessage;
|
|
76
|
+
establishWsConnection(context: AdapterContext<CustomSettings>): Promise<unknown>;
|
|
77
|
+
backgroundExecute(context: AdapterContext<CustomSettings>): Promise<number>;
|
|
95
78
|
}
|
|
79
|
+
export {};
|
package/transports/websocket.js
CHANGED
|
@@ -26,9 +26,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
26
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.WebSocketTransport = exports.WebSocketClassProvider =
|
|
29
|
+
exports.WebSocketTransport = exports.WebSocketClassProvider = void 0;
|
|
30
30
|
const ws_1 = __importDefault(require("ws"));
|
|
31
|
-
exports.WebSocket = ws_1.default;
|
|
32
31
|
const util_1 = require("../util");
|
|
33
32
|
const _1 = require("./");
|
|
34
33
|
const transportMetrics = __importStar(require("./metrics"));
|
|
@@ -47,7 +46,8 @@ WebSocketClassProvider.ctor = ws_1.default;
|
|
|
47
46
|
* Transport implementation that takes incoming requests, adds them to an [[subscriptionSet]] and,
|
|
48
47
|
* through a WebSocket connection, subscribes to the relevant feeds to populate the cache.
|
|
49
48
|
*
|
|
50
|
-
* @typeParam
|
|
49
|
+
* @typeParam AdapterParams - interface for the adapter request body
|
|
50
|
+
* @typeParam ProviderDataMessage - interface for a WS message containing processable data (i.e. not part of open/close/login/etc)
|
|
51
51
|
*/
|
|
52
52
|
class WebSocketTransport {
|
|
53
53
|
constructor(config) {
|
|
@@ -75,8 +75,7 @@ class WebSocketTransport {
|
|
|
75
75
|
return new Promise((resolve) => {
|
|
76
76
|
const ctor = WebSocketClassProvider.get();
|
|
77
77
|
const url = context.adapterConfig.WS_API_ENDPOINT || this.config.url(context);
|
|
78
|
-
|
|
79
|
-
this.wsConnection = new ctor(url, undefined, options);
|
|
78
|
+
this.wsConnection = new ctor(url);
|
|
80
79
|
this.wsConnection.addEventListener('open', async (event) => {
|
|
81
80
|
logger.debug(`Opened websocket connection. (event type ${event.type})`);
|
|
82
81
|
await this.config.handlers.open(this.wsConnection, context);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../../src/transports/websocket.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../../src/transports/websocket.ts"],"names":[],"mappings":"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"}
|
package/util/logger.js
CHANGED
|
@@ -39,7 +39,9 @@ const baseLogger = (0, pino_1.default)({
|
|
|
39
39
|
}
|
|
40
40
|
return {};
|
|
41
41
|
},
|
|
42
|
-
transport: process.env['DEBUG'] === 'true'
|
|
42
|
+
transport: process.env['DEBUG'] === 'true' || process.env['NODE_ENV'] === 'development'
|
|
43
|
+
? debugTransport
|
|
44
|
+
: undefined,
|
|
43
45
|
});
|
|
44
46
|
exports.COLORS = [
|
|
45
47
|
'\u001b[31;1m',
|
|
@@ -96,7 +98,9 @@ const getNextColor = (0, exports.colorFactory)(exports.COLORS);
|
|
|
96
98
|
*/
|
|
97
99
|
const makeLogger = (layer) => baseLogger.child({
|
|
98
100
|
layer,
|
|
99
|
-
color: process.env['DEBUG'] === 'true'
|
|
101
|
+
color: process.env['DEBUG'] === 'true' || process.env['NODE_ENV'] === 'development'
|
|
102
|
+
? getNextColor()
|
|
103
|
+
: undefined,
|
|
100
104
|
});
|
|
101
105
|
exports.makeLogger = makeLogger;
|
|
102
106
|
const loggingContextMiddleware = (req, res, done) => {
|
package/util/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/util/logger.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAuB;AACvB,sCAAwC;AAGxC,mCAAmC;AACnC,uDAAoD;AACpD,uEAAiE;AAEpD,QAAA,iBAAiB,GAAG,IAAI,oCAAiB,EAAE,CAAA;AAMxD,MAAM,cAAc,GAAG;IACrB,MAAM,EAAE,aAAa;IACrB,OAAO,EAAE;QACP,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,OAAO;QACnB,MAAM,EAAE,wCAAwC;QAChD,aAAa,EAAE,wDAAwD;QACvE,aAAa,EAAE,uBAAuB;KACvC;CACF,CAAA;AAED,wEAAwE;AACxE,MAAM,UAAU,GAAG,IAAA,cAAI,EAAC;IACtB,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,WAAW,EAAE,IAAI,qBAAY,CAAC,SAAS,CAAC,OAAO;IAChF,KAAK,EAAE;QACL,SAAS,CAAC,SAAS,EAAE,MAAM;YACzB,iCAAiC;YACjC,MAAM,UAAU,GAAG,qBAAU,CAAC,MAAM,EAAE,CAAA;YACtC,OAAO,MAAM,CAAC,KAAK,CACjB,IAAI,EACJ,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,CAA2B,CAC1E,CAAA;QACH,CAAC;KACF;IACD,KAAK;QACH,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,KAAK,OAAO,EAAE;YACrD,MAAM,KAAK,GAAG,yBAAiB,CAAC,QAAQ,EAAW,CAAA;YACnD,IAAI,KAAK,EAAE;gBACT,OAAO,KAAK,CAAA;aACb;SACF;QACD,OAAO,EAAE,CAAA;IACX,CAAC;IACD,SAAS,
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/util/logger.ts"],"names":[],"mappings":"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"}
|
package/util/request.d.ts
CHANGED
|
@@ -6,9 +6,6 @@ declare module 'fastify' {
|
|
|
6
6
|
requestContext: AdapterRequestContext;
|
|
7
7
|
}
|
|
8
8
|
}
|
|
9
|
-
export declare type Merge<T1, T2> = {
|
|
10
|
-
[K in keyof T1 | keyof T2]: K extends keyof T2 ? T2[K] : K extends keyof T1 ? T1[K] : never;
|
|
11
|
-
};
|
|
12
9
|
/**
|
|
13
10
|
* Structure for the body of all requests that will be sent to the adapter
|
|
14
11
|
*/
|
|
@@ -46,11 +43,11 @@ export declare type AdapterRouteGeneric = {
|
|
|
46
43
|
/**
|
|
47
44
|
* Structure for all requests incoming to this adapter
|
|
48
45
|
*/
|
|
49
|
-
export declare type AdapterRequest<T
|
|
46
|
+
export declare type AdapterRequest<T = AdapterRequestData> = FastifyRequest<AdapterRouteGeneric> & {
|
|
50
47
|
/** Set to an empty record so the user does not access the raw request data and uses the Validated data from the context instead */
|
|
51
48
|
body: EmptyBody;
|
|
52
49
|
/** Container for all validated information that will be used by the framework across this request's lifecycle */
|
|
53
|
-
requestContext: AdapterRequestContext<T
|
|
50
|
+
requestContext: AdapterRequestContext<T>;
|
|
54
51
|
};
|
|
55
52
|
/**
|
|
56
53
|
* Metadata for a particular request
|
|
@@ -77,62 +74,29 @@ export declare type AdapterRequestData = Record<string, unknown> & {
|
|
|
77
74
|
endpoint?: string;
|
|
78
75
|
};
|
|
79
76
|
/**
|
|
80
|
-
* Helper type to hold the value from responses from a provider, and the adapter params they correspond to
|
|
77
|
+
* Helper type to hold the value from responses from a provider, and the adapter params they correspond to
|
|
81
78
|
*/
|
|
82
|
-
export interface ProviderResult<
|
|
83
|
-
Request: RequestGenerics;
|
|
84
|
-
Response: ResponseGenerics;
|
|
85
|
-
}> {
|
|
79
|
+
export interface ProviderResult<Params> {
|
|
86
80
|
/** The set of parameters that uniquely relate to the response */
|
|
87
|
-
params:
|
|
88
|
-
/**
|
|
89
|
-
value:
|
|
81
|
+
params: Params;
|
|
82
|
+
/** */
|
|
83
|
+
value: unknown;
|
|
90
84
|
}
|
|
91
|
-
export declare type EmptyObject = Object;
|
|
92
|
-
/**
|
|
93
|
-
* Helper struct type that provides detail about the incoming Adapter Request
|
|
94
|
-
*/
|
|
95
|
-
export declare type RequestGenerics = {
|
|
96
|
-
/**
|
|
97
|
-
* Type for the parameters sent to the EA in the data property of the body.
|
|
98
|
-
*/
|
|
99
|
-
Params: EmptyObject;
|
|
100
|
-
};
|
|
101
|
-
/**
|
|
102
|
-
* Helper struct type that provides detail about the outgoing Adapter Response
|
|
103
|
-
*/
|
|
104
|
-
export declare type ResponseGenerics = {
|
|
105
|
-
/**
|
|
106
|
-
* Type for the data property of the response.
|
|
107
|
-
*/
|
|
108
|
-
Data: unknown;
|
|
109
|
-
/**
|
|
110
|
-
* Type for the result property of the response.
|
|
111
|
-
* This is mostly used for OCR, and corresponds to one "word" when talking about it from an on-chain perspective.
|
|
112
|
-
*/
|
|
113
|
-
Result: string | number | null;
|
|
114
|
-
};
|
|
115
85
|
/**
|
|
116
86
|
* Shape of the response body from the adapter
|
|
117
87
|
*/
|
|
118
|
-
export declare type AdapterResponse<T
|
|
88
|
+
export declare type AdapterResponse<T = unknown> = {
|
|
119
89
|
/** HTTP status code */
|
|
120
90
|
statusCode: number;
|
|
121
91
|
/** Response data, holds "result" for Flux Monitor */
|
|
122
|
-
data: T
|
|
92
|
+
data: T;
|
|
123
93
|
/** Result value used for OCR */
|
|
124
|
-
result:
|
|
94
|
+
result: unknown;
|
|
125
95
|
/** Number detailing the maximum age of the result in the cache, will be replaced by telemetry eventually */
|
|
126
96
|
maxAge?: number;
|
|
127
97
|
/** Metadata relevant to this request */
|
|
128
98
|
meta?: AdapterRequestMeta;
|
|
129
99
|
};
|
|
130
|
-
export declare type SingleNumberResultResponse = {
|
|
131
|
-
Result: number;
|
|
132
|
-
Data: {
|
|
133
|
-
result: number;
|
|
134
|
-
};
|
|
135
|
-
};
|
|
136
100
|
export declare type Middleware = ((req: AdapterRequest, reply: FastifyReply, done: HookHandlerDoneFunction) => FastifyReply | void) | ((req: AdapterRequest, reply: FastifyReply) => Promise<FastifyReply | void>);
|
|
137
101
|
export declare type AdapterMiddlewareBuilder = (adapter: Adapter) => Middleware;
|
|
138
102
|
export {};
|
package/validation/error.js
CHANGED
|
@@ -21,7 +21,7 @@ class AdapterError extends Error {
|
|
|
21
21
|
this.metricsLabel = metricsLabel;
|
|
22
22
|
}
|
|
23
23
|
toJSONResponse() {
|
|
24
|
-
const showDebugInfo = process.env['DEBUG'] === 'true';
|
|
24
|
+
const showDebugInfo = process.env['NODE_ENV'] === 'development' || process.env['DEBUG'] === 'true';
|
|
25
25
|
const errorBasic = {
|
|
26
26
|
name: this.name,
|
|
27
27
|
message: this.message,
|
package/validation/error.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error.js","sourceRoot":"","sources":["../../../src/validation/error.ts"],"names":[],"mappings":";;;AAAA,oDAAsD;AAkBtD,MAAa,YAAa,SAAQ,KAAK;IAarC,YAAY,EACV,MAAM,GAAG,SAAS,EAClB,UAAU,GAAG,GAAG,EAChB,IAAI,GAAG,cAAc,EACrB,OAAO,GAAG,+CAA+C,EACzD,KAAK,EACL,GAAG,EACH,aAAa,EACb,MAAM,EACN,kBAAkB,EAClB,YAAY,GAAG,2BAAe,CAAC,aAAa,GACtB;QACtB,KAAK,CAAC,OAAO,CAAC,CAAA;QAEd,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,GAAG,EAAE;YACP,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;SACf;QACD,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;SACrB;QACD,IAAI,CAAC,aAAa,GAAG,aAAa,CAAA;QAClC,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAA;QAC5C,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;IAClC,CAAC;IAED,cAAc;QACZ,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"error.js","sourceRoot":"","sources":["../../../src/validation/error.ts"],"names":[],"mappings":"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"}
|
package/validation/index.js
CHANGED
|
@@ -5,6 +5,8 @@ const cache_1 = require("../cache");
|
|
|
5
5
|
const util_1 = require("../metrics/util");
|
|
6
6
|
const util_2 = require("../util");
|
|
7
7
|
const error_1 = require("./error");
|
|
8
|
+
const ioredis_1 = require("ioredis");
|
|
9
|
+
const metrics_1 = require("../cache/metrics");
|
|
8
10
|
const errorCatcherLogger = (0, util_2.makeLogger)('ErrorCatchingMiddleware');
|
|
9
11
|
const validatorMiddleware = (adapter) => (req, reply, done) => {
|
|
10
12
|
if (req.headers['content-type'] !== 'application/json') {
|
|
@@ -39,7 +41,7 @@ const validatorMiddleware = (adapter) => (req, reply, done) => {
|
|
|
39
41
|
statusCode: 404,
|
|
40
42
|
});
|
|
41
43
|
}
|
|
42
|
-
const validatedData = endpoint.validator.validateInput(
|
|
44
|
+
const validatedData = endpoint.validator.validateInput(req.body?.['data']);
|
|
43
45
|
req.requestContext = {
|
|
44
46
|
cacheKey: '',
|
|
45
47
|
data: validatedData,
|
|
@@ -58,21 +60,10 @@ const validatorMiddleware = (adapter) => (req, reply, done) => {
|
|
|
58
60
|
// This is the last time modifications are supposed to happen to the request.
|
|
59
61
|
adapter.runRequestTransforms(req);
|
|
60
62
|
// Now that all the transformations have been applied, all that's left is calculating the cache key
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
errorCatcherLogger.warn(`Generated custom cache key for adapter request is bigger than the MAX_COMMON_KEY_SIZE and will be truncated`);
|
|
66
|
-
cacheKey = cacheKey.slice(0, adapter.config.MAX_COMMON_KEY_SIZE);
|
|
67
|
-
}
|
|
68
|
-
req.requestContext.cacheKey = cacheKey;
|
|
69
|
-
}
|
|
70
|
-
else {
|
|
71
|
-
req.requestContext.cacheKey = (0, cache_1.calculateCacheKey)({
|
|
72
|
-
adapterEndpoint: endpoint,
|
|
73
|
-
adapterConfig: adapter.config,
|
|
74
|
-
}, req.requestContext.data);
|
|
75
|
-
}
|
|
63
|
+
req.requestContext.cacheKey = (0, cache_1.calculateCacheKey)({
|
|
64
|
+
adapterEndpoint: endpoint,
|
|
65
|
+
adapterConfig: adapter.config,
|
|
66
|
+
}, req.requestContext.data);
|
|
76
67
|
done();
|
|
77
68
|
};
|
|
78
69
|
exports.validatorMiddleware = validatorMiddleware;
|
|
@@ -93,6 +84,14 @@ const errorCatchingMiddleware = (err, req, res) => {
|
|
|
93
84
|
errorCatcherLogger.warn(errorWithContext);
|
|
94
85
|
res.status(err.statusCode).send(err.toJSONResponse());
|
|
95
86
|
}
|
|
87
|
+
else if (err instanceof ioredis_1.ReplyError) {
|
|
88
|
+
errorCatcherLogger.warn(errorWithContext);
|
|
89
|
+
const replyError = err;
|
|
90
|
+
if (process.env['METRICS_ENABLED']) {
|
|
91
|
+
(0, cache_1.recordRedisCommandMetric)(metrics_1.CMD_SENT_STATUS.FAIL, replyError.command?.name);
|
|
92
|
+
}
|
|
93
|
+
res.status(500).send(replyError.message || 'There was an unexpected error with the Redis cache');
|
|
94
|
+
}
|
|
96
95
|
else {
|
|
97
96
|
errorCatcherLogger.error(errorWithContext);
|
|
98
97
|
res.status(500).send(err.message || 'There was an unexpected error in the adapter.');
|
package/validation/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/validation/index.ts"],"names":[],"mappings":";;;AAEA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/validation/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.performSymbolOverrides = void 0;
|
|
4
|
+
const performSymbolOverrides = (adapter, req) => {
|
|
5
|
+
let adapterOverrides = {};
|
|
6
|
+
if (req.requestContext.data &&
|
|
7
|
+
req.requestContext.data['overrides'] &&
|
|
8
|
+
req.requestContext.data['overrides'][adapter.name]) {
|
|
9
|
+
adapterOverrides = req.requestContext.data['overrides'][adapter.name];
|
|
10
|
+
}
|
|
11
|
+
if (!Array.isArray(req.requestContext.data['base'])) {
|
|
12
|
+
// Perform overrides specified in the request payload
|
|
13
|
+
req.requestContext.data['base'] =
|
|
14
|
+
adapterOverrides[req.requestContext.data['base']] ?? req.requestContext.data['base'];
|
|
15
|
+
// Perform hardcoded overrides
|
|
16
|
+
if (adapter.overrides) {
|
|
17
|
+
req.requestContext.data['base'] =
|
|
18
|
+
adapter.overrides[req.requestContext.data['base']] ??
|
|
19
|
+
req.requestContext.data['base'];
|
|
20
|
+
}
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
let requestedSymbols = req.requestContext.data['base'];
|
|
24
|
+
for (let i = 0; i < requestedSymbols.length; i++) {
|
|
25
|
+
const symbol = requestedSymbols[i];
|
|
26
|
+
// Perform overrides specified in the request payload
|
|
27
|
+
let overriddenSymbol = adapterOverrides[symbol.toUpperCase()] ?? adapterOverrides[symbol.toLowerCase()];
|
|
28
|
+
// Perform hardcoded overrides
|
|
29
|
+
if (adapter.overrides) {
|
|
30
|
+
overriddenSymbol =
|
|
31
|
+
adapter.overrides[symbol.toUpperCase()] ??
|
|
32
|
+
adapter.overrides[symbol.toLowerCase()] ??
|
|
33
|
+
overriddenSymbol;
|
|
34
|
+
}
|
|
35
|
+
requestedSymbols[i] = overriddenSymbol ?? requestedSymbols[i];
|
|
36
|
+
}
|
|
37
|
+
requestedSymbols = requestedSymbols.length > 1 ? requestedSymbols : requestedSymbols[1];
|
|
38
|
+
req.requestContext.data['base'] = requestedSymbols;
|
|
39
|
+
};
|
|
40
|
+
exports.performSymbolOverrides = performSymbolOverrides;
|
|
41
|
+
//# sourceMappingURL=override-functions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"override-functions.js","sourceRoot":"","sources":["../../../src/validation/override-functions.ts"],"names":[],"mappings":";;;AAKO,MAAM,sBAAsB,GAAG,CAAC,OAAgB,EAAE,GAAmB,EAAE,EAAE;IAC9E,IAAI,gBAAgB,GAAG,EAA4B,CAAA;IACnD,IACE,GAAG,CAAC,cAAc,CAAC,IAAI;QACvB,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC;QACnC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAe,CAAC,OAAO,CAAC,IAAI,CAAC,EACjE;QACA,gBAAgB,GAAI,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;KACrF;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE;QACnD,qDAAqD;QACrD,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;YAC7B,gBAAgB,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAW,CAAC,IAAI,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAChG,8BAA8B;QAC9B,IAAI,OAAO,CAAC,SAAS,EAAE;YACrB,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;gBAC7B,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAW,CAAC;oBAC5D,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;SAClC;QACD,OAAM;KACP;IACD,IAAI,gBAAgB,GAAG,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAChD,MAAM,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAA;QAClC,qDAAqD;QACrD,IAAI,gBAAgB,GAClB,gBAAgB,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,IAAI,gBAAgB,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAA;QAClF,8BAA8B;QAC9B,IAAI,OAAO,CAAC,SAAS,EAAE;YACrB,gBAAgB;gBACd,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;oBACvC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;oBACvC,gBAAgB,CAAA;SACnB;QACD,gBAAgB,CAAC,CAAC,CAAC,GAAG,gBAAgB,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAA;KAC9D;IACD,gBAAgB,GAAG,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAA;IACvF,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,gBAAgB,CAAA;AACpD,CAAC,CAAA;AAtCY,QAAA,sBAAsB,0BAsClC"}
|