@chainlink/external-adapter-framework 0.27.1 → 0.27.3
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/package.json +1 -1
- package/transports/websocket.d.ts +4 -3
- package/transports/websocket.js +20 -15
- package/transports/websocket.js.map +1 -1
- package/util/index.d.ts +10 -1
- package/util/index.js +18 -2
- package/util/index.js.map +1 -1
package/package.json
CHANGED
|
@@ -23,6 +23,7 @@ export interface WebSocketTransportConfig<T extends WebsocketTransportGenerics>
|
|
|
23
23
|
/**
|
|
24
24
|
* Handles when the WS is successfully opened.
|
|
25
25
|
* Optional since logic is not always needed on connection.
|
|
26
|
+
* Note: any listeners set in this method will be cleared after its execution.
|
|
26
27
|
*
|
|
27
28
|
* @param wsConnection - the WebSocket with an established connection
|
|
28
29
|
* @returns an empty Promise, or void
|
|
@@ -78,7 +79,7 @@ export type WebsocketTransportGenerics = TransportGenerics & {
|
|
|
78
79
|
*/
|
|
79
80
|
export declare class WebSocketTransport<T extends WebsocketTransportGenerics> extends StreamingTransport<T> {
|
|
80
81
|
private config;
|
|
81
|
-
wsConnection
|
|
82
|
+
wsConnection?: WebSocket;
|
|
82
83
|
currentUrl: string;
|
|
83
84
|
lastMessageReceivedAt: number;
|
|
84
85
|
connectionOpenedAt: number;
|
|
@@ -87,13 +88,13 @@ export declare class WebSocketTransport<T extends WebsocketTransportGenerics> ex
|
|
|
87
88
|
connectionClosed(): boolean;
|
|
88
89
|
serializeMessage(payload: unknown): string;
|
|
89
90
|
deserializeMessage(data: WebSocket.Data): T['Provider']['WsMessage'];
|
|
90
|
-
buildConnectionHandlers(context: EndpointContext<T>, connectionReadyResolve: (value: WebSocket) => void): {
|
|
91
|
+
buildConnectionHandlers(context: EndpointContext<T>, connection: WebSocket, connectionReadyResolve: (value: WebSocket) => void): {
|
|
91
92
|
open: (event: WebSocket.Event) => Promise<void>;
|
|
92
93
|
message: (event: WebSocket.MessageEvent) => Promise<void>;
|
|
93
94
|
error: (event: WebSocket.ErrorEvent) => Promise<void>;
|
|
94
95
|
close: (event: WebSocket.CloseEvent) => void;
|
|
95
96
|
};
|
|
96
|
-
establishWsConnection(context: EndpointContext<T>, url: string, options?: WebSocket.ClientOptions | undefined): Promise<
|
|
97
|
+
establishWsConnection(context: EndpointContext<T>, url: string, options?: WebSocket.ClientOptions | undefined): Promise<WebSocket>;
|
|
97
98
|
sendMessages(context: EndpointContext<T>, subscribes: unknown[], unsubscribes: unknown[]): Promise<void>;
|
|
98
99
|
streamHandler(context: EndpointContext<T>, subscriptions: SubscriptionDeltas<T['Request']['Params']>): Promise<void>;
|
|
99
100
|
private rejectionHandler;
|
package/transports/websocket.js
CHANGED
|
@@ -47,13 +47,13 @@ class WebSocketTransport extends streaming_1.StreamingTransport {
|
|
|
47
47
|
deserializeMessage(data) {
|
|
48
48
|
return JSON.parse(data.toString());
|
|
49
49
|
}
|
|
50
|
-
buildConnectionHandlers(context, connectionReadyResolve) {
|
|
50
|
+
buildConnectionHandlers(context, connection, connectionReadyResolve) {
|
|
51
51
|
return {
|
|
52
52
|
// Called when the WS connection is opened
|
|
53
53
|
open: async (event) => {
|
|
54
54
|
logger.debug(`Opened websocket connection. (event type ${event.type})`);
|
|
55
55
|
if (this.config.handlers.open) {
|
|
56
|
-
await this.config.handlers.open(
|
|
56
|
+
await this.config.handlers.open(connection, context);
|
|
57
57
|
logger.debug('Successfully executed connection opened handler');
|
|
58
58
|
}
|
|
59
59
|
connectionReadyResolve(event.target);
|
|
@@ -107,18 +107,14 @@ class WebSocketTransport extends streaming_1.StreamingTransport {
|
|
|
107
107
|
};
|
|
108
108
|
}
|
|
109
109
|
async establishWsConnection(context, url, options) {
|
|
110
|
-
const
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
connection.addEventListener('message', this.rejectionHandler(reject, handlers.message));
|
|
116
|
-
connection.addEventListener('error', handlers.error);
|
|
117
|
-
connection.addEventListener('close', handlers.close);
|
|
118
|
-
});
|
|
110
|
+
const [promise, resolve, reject] = (0, util_1.deferredPromise)();
|
|
111
|
+
const ctor = WebSocketClassProvider.get();
|
|
112
|
+
const connection = new ctor(url, undefined, options);
|
|
113
|
+
const handlers = this.buildConnectionHandlers(context, connection, resolve);
|
|
114
|
+
connection.addEventListener('open', this.rejectionHandler(reject, handlers.open));
|
|
119
115
|
// Attempt to establish the connection
|
|
120
116
|
try {
|
|
121
|
-
|
|
117
|
+
await (0, util_1.timeoutPromise)('WS Open Handler', promise, context.adapterSettings.WS_CONNECTION_OPEN_TIMEOUT);
|
|
122
118
|
// Record active ws connections by incrementing count on open
|
|
123
119
|
metrics_1.metrics.get('wsConnectionActive').inc();
|
|
124
120
|
}
|
|
@@ -126,13 +122,22 @@ class WebSocketTransport extends streaming_1.StreamingTransport {
|
|
|
126
122
|
logger.error(`There was an error connecting to the provider websocket`);
|
|
127
123
|
throw e;
|
|
128
124
|
}
|
|
125
|
+
// Now that the connection is established, we can clean up listeners and set the proper ones
|
|
126
|
+
connection.removeAllListeners();
|
|
127
|
+
connection.addEventListener('message', this.rejectionHandler(reject, handlers.message));
|
|
128
|
+
connection.addEventListener('error', handlers.error);
|
|
129
|
+
connection.addEventListener('close', handlers.close);
|
|
130
|
+
return connection;
|
|
129
131
|
}
|
|
130
132
|
async sendMessages(context, subscribes, unsubscribes) {
|
|
131
133
|
const serializedSubscribes = subscribes.map(this.serializeMessage);
|
|
132
134
|
const serializedUnsubscribes = unsubscribes.map(this.serializeMessage);
|
|
133
135
|
const messages = serializedSubscribes.concat(serializedUnsubscribes);
|
|
136
|
+
if (messages.length > 0) {
|
|
137
|
+
logger.debug(`There are ${messages.length} messages to send`);
|
|
138
|
+
}
|
|
134
139
|
for (const message of messages) {
|
|
135
|
-
this.wsConnection
|
|
140
|
+
this.wsConnection?.send(message);
|
|
136
141
|
}
|
|
137
142
|
}
|
|
138
143
|
async streamHandler(context, subscriptions) {
|
|
@@ -171,7 +176,7 @@ class WebSocketTransport extends streaming_1.StreamingTransport {
|
|
|
171
176
|
logger.info(`Connection was opened only ${timeSinceConnectionOpened}ms ago, waiting for that to get to 1s before continuing...`);
|
|
172
177
|
await (0, util_1.sleep)(1000 - timeSinceConnectionOpened);
|
|
173
178
|
}
|
|
174
|
-
this.wsConnection
|
|
179
|
+
this.wsConnection?.close();
|
|
175
180
|
connectionClosed = true;
|
|
176
181
|
// If the connection was closed, the new subscriptions should be the desired ones
|
|
177
182
|
subscriptions.new = subscriptions.desired;
|
|
@@ -187,7 +192,7 @@ class WebSocketTransport extends streaming_1.StreamingTransport {
|
|
|
187
192
|
// Need to write this now, otherwise there could be messages sent with values before the open handler finishes
|
|
188
193
|
this.providerDataStreamEstablished = Date.now();
|
|
189
194
|
// Connect to the provider
|
|
190
|
-
await this.establishWsConnection(context, urlFromConfig, options);
|
|
195
|
+
this.wsConnection = await this.establishWsConnection(context, urlFromConfig, options);
|
|
191
196
|
// Now that we successfully opened the connection, we can reset the variables
|
|
192
197
|
connectionClosed = false;
|
|
193
198
|
this.connectionOpenedAt = Date.now();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../../src/transports/websocket.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAsD;AAU7C,oBAVF,YAAS,CAUE;AARlB,wCAAoC;AACpC,
|
|
1
|
+
{"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../../src/transports/websocket.ts"],"names":[],"mappings":"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"}
|
package/util/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export * from './types';
|
|
2
1
|
export * from './logger';
|
|
3
2
|
export * from './subscription-set/subscription-set';
|
|
3
|
+
export * from './types';
|
|
4
4
|
/**
|
|
5
5
|
* Sleeps for the provided number of milliseconds
|
|
6
6
|
* @param ms - The number of milliseconds to sleep for
|
|
@@ -37,3 +37,12 @@ export declare class DoubleLinkedList {
|
|
|
37
37
|
* @returns the result of the promise
|
|
38
38
|
*/
|
|
39
39
|
export declare const timeoutPromise: <T>(label: string, promise: Promise<T>, timeout: number) => Promise<T>;
|
|
40
|
+
type DeferredResolve<T> = (value: T) => void;
|
|
41
|
+
type DeferredReject = (reason?: unknown) => void;
|
|
42
|
+
/**
|
|
43
|
+
* This function will create a promise, and synchronously return both the promise itself and
|
|
44
|
+
* the resolve and reject callbacks so that they can be used and passed around individually.
|
|
45
|
+
*
|
|
46
|
+
* @returns all the deconstructed elements of a promise, to handle in synchronous-ish logic
|
|
47
|
+
*/
|
|
48
|
+
export declare const deferredPromise: <T>() => [Promise<T>, DeferredResolve<T>, DeferredReject];
|
package/util/index.js
CHANGED
|
@@ -14,10 +14,10 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.timeoutPromise = exports.DoubleLinkedList = exports.LinkedListNode = exports.isEmpty = exports.isArray = exports.isObject = exports.sleep = void 0;
|
|
18
|
-
__exportStar(require("./types"), exports);
|
|
17
|
+
exports.deferredPromise = exports.timeoutPromise = exports.DoubleLinkedList = exports.LinkedListNode = exports.isEmpty = exports.isArray = exports.isObject = exports.sleep = void 0;
|
|
19
18
|
__exportStar(require("./logger"), exports);
|
|
20
19
|
__exportStar(require("./subscription-set/subscription-set"), exports);
|
|
20
|
+
__exportStar(require("./types"), exports);
|
|
21
21
|
/**
|
|
22
22
|
* Sleeps for the provided number of milliseconds
|
|
23
23
|
* @param ms - The number of milliseconds to sleep for
|
|
@@ -111,4 +111,20 @@ const timeoutPromise = (label, promise, timeout) => {
|
|
|
111
111
|
]).finally(() => clearTimeout(timer));
|
|
112
112
|
};
|
|
113
113
|
exports.timeoutPromise = timeoutPromise;
|
|
114
|
+
/**
|
|
115
|
+
* This function will create a promise, and synchronously return both the promise itself and
|
|
116
|
+
* the resolve and reject callbacks so that they can be used and passed around individually.
|
|
117
|
+
*
|
|
118
|
+
* @returns all the deconstructed elements of a promise, to handle in synchronous-ish logic
|
|
119
|
+
*/
|
|
120
|
+
const deferredPromise = () => {
|
|
121
|
+
let resolve;
|
|
122
|
+
let reject;
|
|
123
|
+
const promise = new Promise((res, rej) => {
|
|
124
|
+
resolve = res;
|
|
125
|
+
reject = rej;
|
|
126
|
+
});
|
|
127
|
+
return [promise, resolve, reject];
|
|
128
|
+
};
|
|
129
|
+
exports.deferredPromise = deferredPromise;
|
|
114
130
|
//# sourceMappingURL=index.js.map
|
package/util/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/util/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/util/index.ts"],"names":[],"mappings":"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"}
|