@chainlink/external-adapter-framework 0.25.1 → 0.26.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/README.md +0 -2
- package/adapter/basic.d.ts +1 -18
- package/adapter/basic.js +5 -41
- package/adapter/basic.js.map +1 -1
- package/adapter/endpoint.d.ts +32 -4
- package/adapter/endpoint.js +99 -3
- package/adapter/endpoint.js.map +1 -1
- package/adapter/price.js +5 -3
- package/adapter/price.js.map +1 -1
- package/adapter/types.d.ts +30 -10
- package/background-executor.js +2 -11
- package/background-executor.js.map +1 -1
- package/cache/index.d.ts +10 -18
- package/cache/index.js +29 -19
- package/cache/index.js.map +1 -1
- package/cache/response.d.ts +1 -1
- package/cache/response.js +4 -2
- package/cache/response.js.map +1 -1
- package/package.json +1 -1
- package/transports/abstract/subscription.d.ts +2 -1
- package/transports/abstract/subscription.js +2 -1
- package/transports/abstract/subscription.js.map +1 -1
- package/transports/http.d.ts +1 -1
- package/transports/http.js +8 -4
- package/transports/http.js.map +1 -1
- package/transports/index.d.ts +2 -17
- package/transports/sse.d.ts +1 -1
- package/transports/sse.js +18 -6
- package/transports/sse.js.map +1 -1
- package/transports/websocket.js +1 -1
- package/transports/websocket.js.map +1 -1
- package/util/types.d.ts +10 -2
- package/validation/index.js +12 -8
- package/validation/index.js.map +1 -1
- package/validation/input-params.d.ts +3 -0
- package/transports/meta/index.d.ts +0 -1
- package/transports/meta/index.js +0 -18
- package/transports/meta/index.js.map +0 -1
- package/transports/meta/routing.d.ts +0 -38
- package/transports/meta/routing.js +0 -80
- package/transports/meta/routing.js.map +0 -1
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { EndpointContext } from '../../adapter';
|
|
2
|
-
import { ResponseCache } from '../../cache/response';
|
|
3
|
-
import { AdapterConfig } from '../../config';
|
|
4
|
-
import { AdapterRequest, AdapterResponse, RequestGenerics } from '../../util';
|
|
5
|
-
import { MetaTransport, Transport, TransportDependencies, TransportGenerics } from '..';
|
|
6
|
-
export type RoutingTransportGenerics = TransportGenerics & {
|
|
7
|
-
Request: RequestGenerics & {
|
|
8
|
-
Params: RequestGenerics['Params'] & {
|
|
9
|
-
transport: string;
|
|
10
|
-
};
|
|
11
|
-
};
|
|
12
|
-
};
|
|
13
|
-
export declare const routingTransportParams: {
|
|
14
|
-
transport: {
|
|
15
|
-
description: string;
|
|
16
|
-
type: "string";
|
|
17
|
-
};
|
|
18
|
-
};
|
|
19
|
-
/**
|
|
20
|
-
* Transport implementation that takes 2 or more transports and a function that determines with transport to use.
|
|
21
|
-
*
|
|
22
|
-
* @typeParam T - Helper struct type that will be used to pass types to the generic parameters (check [[TransportGenerics]])
|
|
23
|
-
*/
|
|
24
|
-
export declare class RoutingTransport<T extends RoutingTransportGenerics> implements MetaTransport<T> {
|
|
25
|
-
transports: Record<string, Transport<T>>;
|
|
26
|
-
private customRouter?;
|
|
27
|
-
constructor(transports: Record<string, Transport<T>>, customRouter?: ((req: AdapterRequest<T['Request']>, adapterConfig: AdapterConfig<T['CustomSettings']>) => string) | undefined);
|
|
28
|
-
responseCache: ResponseCache<{
|
|
29
|
-
Request: T['Request'];
|
|
30
|
-
Response: T['Response'];
|
|
31
|
-
}>;
|
|
32
|
-
backgroundExecute?: ((context: EndpointContext<T>) => Promise<void>) | undefined;
|
|
33
|
-
initialize(dependencies: TransportDependencies<T>, adapterConfig: AdapterConfig<T['CustomSettings']>, endpointName: string): Promise<void>;
|
|
34
|
-
registerRequest(req: AdapterRequest<T['Request']>, adapterConfig: AdapterConfig<T['CustomSettings']>): Promise<void>;
|
|
35
|
-
private defaultRouter;
|
|
36
|
-
private resolveTransport;
|
|
37
|
-
foregroundExecute(req: AdapterRequest<T['Request']>, adapterConfig: AdapterConfig<T['CustomSettings']>): Promise<AdapterResponse<any> | void>;
|
|
38
|
-
}
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RoutingTransport = exports.routingTransportParams = void 0;
|
|
4
|
-
const util_1 = require("../../util");
|
|
5
|
-
const error_1 = require("../../validation/error");
|
|
6
|
-
const logger = (0, util_1.makeLogger)('RoutingTransport');
|
|
7
|
-
exports.routingTransportParams = {
|
|
8
|
-
transport: {
|
|
9
|
-
description: 'Name of the transport this request shuold be routed to',
|
|
10
|
-
type: 'string',
|
|
11
|
-
},
|
|
12
|
-
};
|
|
13
|
-
/**
|
|
14
|
-
* Transport implementation that takes 2 or more transports and a function that determines with transport to use.
|
|
15
|
-
*
|
|
16
|
-
* @typeParam T - Helper struct type that will be used to pass types to the generic parameters (check [[TransportGenerics]])
|
|
17
|
-
*/
|
|
18
|
-
class RoutingTransport {
|
|
19
|
-
constructor(transports,
|
|
20
|
-
// This is public for tests, which sometimes need the underlying transport for things like ticking the clock
|
|
21
|
-
customRouter) {
|
|
22
|
-
this.transports = transports;
|
|
23
|
-
this.customRouter = customRouter;
|
|
24
|
-
for (const transportName in this.transports) {
|
|
25
|
-
// This is intentional, to keep names to one word only
|
|
26
|
-
if (!/^[a-z]+$/.test(transportName)) {
|
|
27
|
-
throw new Error(`Transport name "${transportName}" names in the RoutingTransport map can only include lowercase letters`);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
async initialize(dependencies, adapterConfig, endpointName) {
|
|
32
|
-
logger.debug(`Initializing ${Object.keys(this.transports).length} transports`);
|
|
33
|
-
await Promise.all(Object.entries(this.transports).map(([name, transport]) => {
|
|
34
|
-
logger.debug(`Initializing transport ${name} (${transport.constructor.name})`);
|
|
35
|
-
return transport.initialize(dependencies, adapterConfig, endpointName);
|
|
36
|
-
}));
|
|
37
|
-
}
|
|
38
|
-
async registerRequest(req, adapterConfig) {
|
|
39
|
-
logger.debug(`registering request using `, req.requestContext.data);
|
|
40
|
-
const transport = this.resolveTransport(req, adapterConfig);
|
|
41
|
-
if (transport.registerRequest) {
|
|
42
|
-
logger.debug(`Running registerRequest on retrieved transport`);
|
|
43
|
-
return transport.registerRequest(req, adapterConfig);
|
|
44
|
-
}
|
|
45
|
-
logger.debug(`Retrieved transport doesn't implement registerRequest`);
|
|
46
|
-
}
|
|
47
|
-
defaultRouter(req) {
|
|
48
|
-
return req.requestContext.data.transport?.toLowerCase();
|
|
49
|
-
}
|
|
50
|
-
resolveTransport(req, adapterConfig) {
|
|
51
|
-
logger.debug(`Routing request using `, req.requestContext.data);
|
|
52
|
-
const key = this.customRouter ? this.customRouter(req, adapterConfig) : this.defaultRouter(req);
|
|
53
|
-
if (!key) {
|
|
54
|
-
logger.error(`No transport was specified in the input parameters, and this endpoint does not have a default set.`);
|
|
55
|
-
throw new error_1.AdapterError({
|
|
56
|
-
statusCode: 400,
|
|
57
|
-
message: `No transport was specified in the input parameters, and this endpoint does not have a default set.`,
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
if (!this.transports[key]) {
|
|
61
|
-
logger.error(`No transport found for key ${key}`);
|
|
62
|
-
throw new error_1.AdapterError({ statusCode: 400, message: `No transport found for ${key}` });
|
|
63
|
-
}
|
|
64
|
-
const transport = this.transports[key];
|
|
65
|
-
logger.debug(`Found ${transport.constructor.name} corresponding to ${key}`);
|
|
66
|
-
return transport;
|
|
67
|
-
}
|
|
68
|
-
// Allow AdapterResponse<any> below since we don't know what the adapter will return
|
|
69
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
70
|
-
async foregroundExecute(req, adapterConfig) {
|
|
71
|
-
const transport = this.resolveTransport(req, adapterConfig);
|
|
72
|
-
if (transport.foregroundExecute) {
|
|
73
|
-
logger.debug(`Running foregroundExecute on retrieved transport`);
|
|
74
|
-
return transport.foregroundExecute(req, adapterConfig);
|
|
75
|
-
}
|
|
76
|
-
logger.debug(`Retrieved transport doesn't implement foregroundExecute`);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
exports.RoutingTransport = RoutingTransport;
|
|
80
|
-
//# sourceMappingURL=routing.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"routing.js","sourceRoot":"","sources":["../../../../src/transports/meta/routing.ts"],"names":[],"mappings":";;;AAGA,qCAAyF;AACzF,kDAAqD;AAIrD,MAAM,MAAM,GAAG,IAAA,iBAAU,EAAC,kBAAkB,CAAC,CAAA;AAUhC,QAAA,sBAAsB,GAAG;IACpC,SAAS,EAAE;QACT,WAAW,EAAE,wDAAwD;QACrE,IAAI,EAAE,QAAQ;KACf;CACwB,CAAA;AAE3B;;;;GAIG;AACH,MAAa,gBAAgB;IAI3B,YACS,UAAwC;IAC/C,6GAA6G;IACrG,YAGG;QALJ,eAAU,GAAV,UAAU,CAA8B;QAEvC,iBAAY,GAAZ,YAAY,CAGT;QAEX,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,UAAU,EAAE;YAC3C,sDAAsD;YACtD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;gBACnC,MAAM,IAAI,KAAK,CACb,mBAAmB,aAAa,wEAAwE,CACzG,CAAA;aACF;SACF;IACH,CAAC;IAQD,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,aAAa,CAAC,GAAiC;QACrD,OAAO,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,CAAA;IACzD,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,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;QAE/F,IAAI,CAAC,GAAG,EAAE;YACR,MAAM,CAAC,KAAK,CACV,oGAAoG,CACrG,CAAA;YACD,MAAM,IAAI,oBAAY,CAAC;gBACrB,UAAU,EAAE,GAAG;gBACf,OAAO,EAAE,oGAAoG;aAC9G,CAAC,CAAA;SACH;QAED,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;AAnGD,4CAmGC"}
|