@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.
Files changed (99) hide show
  1. package/config/index.js +1 -1
  2. package/config/index.js.map +1 -1
  3. package/examples/bank-frick/accounts.d.ts +45 -0
  4. package/examples/bank-frick/accounts.js +203 -0
  5. package/examples/bank-frick/accounts.js.map +1 -0
  6. package/examples/bank-frick/config/index.d.ts +17 -0
  7. package/examples/bank-frick/config/index.js +55 -0
  8. package/examples/bank-frick/config/index.js.map +1 -0
  9. package/examples/bank-frick/index.d.ts +2 -0
  10. package/examples/bank-frick/index.js +16 -0
  11. package/examples/bank-frick/index.js.map +1 -0
  12. package/examples/bank-frick/util.d.ts +4 -0
  13. package/examples/bank-frick/util.js +40 -0
  14. package/examples/bank-frick/util.js.map +1 -0
  15. package/examples/coingecko/src/config/index.d.ts +2 -0
  16. package/examples/coingecko/src/config/index.js +6 -0
  17. package/examples/coingecko/src/config/index.js.map +1 -0
  18. package/examples/coingecko/src/config/overrides.json +10825 -0
  19. package/examples/coingecko/src/crypto-utils.d.ts +62 -0
  20. package/examples/coingecko/src/crypto-utils.js +60 -0
  21. package/examples/coingecko/src/crypto-utils.js.map +1 -0
  22. package/examples/coingecko/src/endpoint/coins.d.ts +26 -0
  23. package/examples/coingecko/src/endpoint/coins.js +37 -0
  24. package/examples/coingecko/src/endpoint/coins.js.map +1 -0
  25. package/examples/coingecko/src/endpoint/crypto-marketcap.d.ts +3 -0
  26. package/examples/coingecko/src/endpoint/crypto-marketcap.js +30 -0
  27. package/examples/coingecko/src/endpoint/crypto-marketcap.js.map +1 -0
  28. package/examples/coingecko/src/endpoint/crypto-volume.d.ts +3 -0
  29. package/examples/coingecko/src/endpoint/crypto-volume.js +30 -0
  30. package/examples/coingecko/src/endpoint/crypto-volume.js.map +1 -0
  31. package/examples/coingecko/src/endpoint/crypto.d.ts +3 -0
  32. package/examples/coingecko/src/endpoint/crypto.js +28 -0
  33. package/examples/coingecko/src/endpoint/crypto.js.map +1 -0
  34. package/examples/coingecko/src/endpoint/dominance.d.ts +3 -0
  35. package/examples/coingecko/src/endpoint/dominance.js +28 -0
  36. package/examples/coingecko/src/endpoint/dominance.js.map +1 -0
  37. package/examples/coingecko/src/endpoint/global-marketcap.d.ts +3 -0
  38. package/examples/coingecko/src/endpoint/global-marketcap.js +28 -0
  39. package/examples/coingecko/src/endpoint/global-marketcap.js.map +1 -0
  40. package/examples/coingecko/src/endpoint/index.d.ts +6 -0
  41. package/examples/coingecko/src/endpoint/index.js +16 -0
  42. package/examples/coingecko/src/endpoint/index.js.map +1 -0
  43. package/examples/coingecko/src/global-utils.d.ts +42 -0
  44. package/examples/coingecko/src/global-utils.js +47 -0
  45. package/examples/coingecko/src/global-utils.js.map +1 -0
  46. package/examples/coingecko/src/index.d.ts +4 -0
  47. package/examples/coingecko/src/index.js +19 -0
  48. package/examples/coingecko/src/index.js.map +1 -0
  49. package/examples/cryptocompare/src/config/index.d.ts +2 -0
  50. package/examples/cryptocompare/src/config/index.js +6 -0
  51. package/examples/cryptocompare/src/config/index.js.map +1 -0
  52. package/examples/cryptocompare/src/endpoints/crypto.d.ts +40 -0
  53. package/examples/cryptocompare/src/endpoints/crypto.js +54 -0
  54. package/examples/cryptocompare/src/endpoints/crypto.js.map +1 -0
  55. package/examples/cryptocompare/src/endpoints/index.d.ts +1 -0
  56. package/examples/cryptocompare/src/endpoints/index.js +6 -0
  57. package/examples/cryptocompare/src/endpoints/index.js.map +1 -0
  58. package/examples/cryptocompare/src/index.d.ts +4 -0
  59. package/examples/cryptocompare/src/index.js +14 -0
  60. package/examples/cryptocompare/src/index.js.map +1 -0
  61. package/examples/genesis/config/index.d.ts +7 -0
  62. package/examples/genesis/config/index.js +11 -0
  63. package/examples/genesis/config/index.js.map +1 -0
  64. package/examples/genesis/index.d.ts +2 -0
  65. package/examples/genesis/index.js +13 -0
  66. package/examples/genesis/index.js.map +1 -0
  67. package/examples/genesis/sseStream.d.ts +27 -0
  68. package/examples/genesis/sseStream.js +149 -0
  69. package/examples/genesis/sseStream.js.map +1 -0
  70. package/package.json +1 -1
  71. package/rate-limiting/request/simple-counting.d.ts +1 -1
  72. package/rate-limiting/request/simple-counting.js +8 -12
  73. package/rate-limiting/request/simple-counting.js.map +1 -1
  74. package/scripts/generator/index.d.ts +1 -0
  75. package/scripts/generator/index.js +5 -0
  76. package/scripts/generator/index.js.map +1 -0
  77. package/scripts/generator/lib.d.ts +1 -0
  78. package/scripts/generator/lib.js +170 -0
  79. package/scripts/generator/lib.js.map +1 -0
  80. package/scripts/generator/workspace.d.ts +21 -0
  81. package/scripts/generator/workspace.js +76 -0
  82. package/scripts/generator/workspace.js.map +1 -0
  83. package/transports/batch-warming.d.ts +8 -20
  84. package/transports/batch-warming.js +68 -55
  85. package/transports/batch-warming.js.map +1 -1
  86. package/transports/http.js +4 -0
  87. package/transports/http.js.map +1 -1
  88. package/transports/meta/routing.d.ts +1 -1
  89. package/transports/meta/routing.js +1 -1
  90. package/transports/meta/routing.js.map +1 -1
  91. package/transports/routing.d.ts +22 -0
  92. package/transports/routing.js +60 -0
  93. package/transports/routing.js.map +1 -0
  94. package/transports/websocket.d.ts +3 -1
  95. package/transports/websocket.js +7 -3
  96. package/transports/websocket.js.map +1 -1
  97. package/util/request.d.ts +25 -25
  98. package/util/requester.js +4 -2
  99. package/util/requester.js.map +1 -1
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.endpoint = exports.transport = void 0;
4
+ const adapter_1 = require("../../../../adapter");
5
+ const websocket_1 = require("../../../../transports/websocket");
6
+ const util_1 = require("../../../../util");
7
+ const config_1 = require("../config");
8
+ const logger = (0, util_1.makeLogger)('CryptoCompareCryptoEndpoint');
9
+ exports.transport = new websocket_1.WebSocketTransport({
10
+ url: (context) => `${config_1.DEFAULT_WS_API_ENDPOINT}?api_key=${context.adapterConfig.API_KEY}`,
11
+ handlers: {
12
+ open(connection) {
13
+ return new Promise((resolve, reject) => {
14
+ // Set up listener
15
+ connection.on('message', (data) => {
16
+ const parsed = JSON.parse(data.toString());
17
+ if (parsed.MESSAGE === 'STREAMERWELCOME') {
18
+ logger.info('Got logged in response, connection is ready');
19
+ resolve();
20
+ }
21
+ else {
22
+ reject(new Error('Unexpected message after WS connection open'));
23
+ }
24
+ });
25
+ });
26
+ },
27
+ message(message) {
28
+ logger.trace(message, 'Got response from websocket');
29
+ if (message.TYPE === '5') {
30
+ return [
31
+ { params: { base: message.FROMSYMBOL, quote: message.TOSYMBOL }, value: message.PRICE },
32
+ ];
33
+ }
34
+ if (message.MESSAGE === 'INVALID_SUB') {
35
+ logger.error(message, 'asset not supported by data provider');
36
+ return;
37
+ }
38
+ },
39
+ },
40
+ builders: {
41
+ subscribeMessage: (params) => {
42
+ return { action: 'SubAdd', subs: [`5~CCCAGG~${`${params.base}~${params.quote}`}`] };
43
+ },
44
+ unsubscribeMessage: (params) => {
45
+ return { action: 'SubRemove', subs: [`5~CCCAGG~${`${params.base}~${params.quote}`}`] };
46
+ },
47
+ },
48
+ });
49
+ exports.endpoint = new adapter_1.PriceEndpoint({
50
+ name: 'crypto',
51
+ transport: exports.transport,
52
+ inputParameters: adapter_1.priceEndpointInputParameters,
53
+ });
54
+ //# sourceMappingURL=crypto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../../../../../src/examples/cryptocompare/src/endpoints/crypto.ts"],"names":[],"mappings":";;;AACA,iDAAiF;AAEjF,gEAAqE;AACrE,2CAAyF;AACzF,sCAAmD;AAuCnD,MAAM,MAAM,GAAG,IAAA,iBAAU,EAAC,6BAA6B,CAAC,CAAA;AAE3C,QAAA,SAAS,GAAG,IAAI,8BAAkB,CAAsB;IACnE,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,gCAAuB,YAAY,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE;IACvF,QAAQ,EAAE;QACR,IAAI,CAAC,UAAqB;YACxB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACrC,kBAAkB;gBAClB,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAa,EAAE,EAAE;oBACzC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;oBAC1C,IAAI,MAAM,CAAC,OAAO,KAAK,iBAAiB,EAAE;wBACxC,MAAM,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAA;wBAC1D,OAAO,EAAE,CAAA;qBACV;yBAAM;wBACL,MAAM,CAAC,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC,CAAA;qBACjE;gBACH,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;QACJ,CAAC;QACD,OAAO,CAAC,OAAgB;YACtB,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,6BAA6B,CAAC,CAAA;YACpD,IAAI,OAAO,CAAC,IAAI,KAAK,GAAG,EAAE;gBACxB,OAAO;oBACL,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,UAAU,EAAE,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE;iBACxF,CAAA;aACF;YACD,IAAI,OAAO,CAAC,OAAO,KAAK,aAAa,EAAE;gBACrC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,sCAAsC,CAAC,CAAA;gBAC7D,OAAM;aACP;QACH,CAAC;KACF;IACD,QAAQ,EAAE;QACR,gBAAgB,EAAE,CAAC,MAA4B,EAAE,EAAE;YACjD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,YAAY,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,CAAA;QACrF,CAAC;QACD,kBAAkB,EAAE,CAAC,MAA4B,EAAE,EAAE;YACnD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,YAAY,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,CAAA;QACxF,CAAC;KACF;CACF,CAAC,CAAA;AAEW,QAAA,QAAQ,GAAG,IAAI,uBAAa,CAAC;IACxC,IAAI,EAAE,QAAQ;IACd,SAAS,EAAT,iBAAS;IACT,eAAe,EAAE,sCAA4B;CAC9C,CAAC,CAAA"}
@@ -0,0 +1 @@
1
+ export { endpoint as cryptoEndpoint } from './crypto';
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cryptoEndpoint = void 0;
4
+ var crypto_1 = require("./crypto");
5
+ Object.defineProperty(exports, "cryptoEndpoint", { enumerable: true, get: function () { return crypto_1.endpoint; } });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/examples/cryptocompare/src/endpoints/index.ts"],"names":[],"mappings":";;;AAAA,mCAAqD;AAA5C,wGAAA,QAAQ,OAAkB"}
@@ -0,0 +1,4 @@
1
+ /// <reference types="node" />
2
+ import { PriceAdapter } from '../../../../src/adapter';
3
+ export declare const adapter: PriceAdapter<import("../../../config").SettingsMap>;
4
+ export declare const server: () => Promise<import("fastify/types/instance").FastifyInstance<import("fastify").RawServerDefault, import("http").IncomingMessage, import("http").ServerResponse<import("http").IncomingMessage>, import("fastify").FastifyBaseLogger, import("fastify").FastifyTypeProviderDefault> | undefined>;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.server = exports.adapter = void 0;
4
+ const __1 = require("../../..");
5
+ const adapter_1 = require("../../../../src/adapter");
6
+ const endpoints_1 = require("./endpoints");
7
+ exports.adapter = new adapter_1.PriceAdapter({
8
+ name: 'CRYPTOCOMPARE',
9
+ defaultEndpoint: 'crypto',
10
+ endpoints: [endpoints_1.cryptoEndpoint],
11
+ });
12
+ const server = () => (0, __1.expose)(exports.adapter);
13
+ exports.server = server;
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/examples/cryptocompare/src/index.ts"],"names":[],"mappings":";;;AAAA,gCAAiC;AACjC,qDAAsD;AACtD,2CAA4C;AAE/B,QAAA,OAAO,GAAG,IAAI,sBAAY,CAAC;IACtC,IAAI,EAAE,eAAe;IACrB,eAAe,EAAE,QAAQ;IACzB,SAAS,EAAE,CAAC,0BAAc,CAAC;CAC5B,CAAC,CAAA;AAEK,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,IAAA,UAAM,EAAC,eAAO,CAAC,CAAA;AAA9B,QAAA,MAAM,UAAwB"}
@@ -0,0 +1,7 @@
1
+ export declare const customSettings: {
2
+ readonly API_SECRET: {
3
+ readonly description: "API secret";
4
+ readonly type: "string";
5
+ readonly required: true;
6
+ };
7
+ };
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.customSettings = void 0;
4
+ exports.customSettings = {
5
+ API_SECRET: {
6
+ description: 'API secret',
7
+ type: 'string',
8
+ required: true,
9
+ },
10
+ };
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/examples/genesis/config/index.ts"],"names":[],"mappings":";;;AAAa,QAAA,cAAc,GAAG;IAC5B,UAAU,EAAE;QACV,WAAW,EAAE,YAAY;QACzB,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,IAAI;KACf;CACO,CAAA"}
@@ -0,0 +1,2 @@
1
+ import { Adapter } from '../../adapter';
2
+ export declare const adapter: Adapter<import("../../config").SettingsMap>;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.adapter = void 0;
4
+ const adapter_1 = require("../../adapter");
5
+ const sseStream_1 = require("./sseStream");
6
+ const config_1 = require("./config");
7
+ exports.adapter = new adapter_1.Adapter({
8
+ name: 'GENESIS',
9
+ defaultEndpoint: sseStream_1.sseEndpoint.name,
10
+ endpoints: [sseStream_1.sseEndpoint],
11
+ customSettings: config_1.customSettings,
12
+ });
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/examples/genesis/index.ts"],"names":[],"mappings":";;;AAAA,2CAAuC;AACvC,2CAAyC;AACzC,qCAAyC;AAE5B,QAAA,OAAO,GAAG,IAAI,iBAAO,CAAC;IACjC,IAAI,EAAE,SAAS;IACf,eAAe,EAAE,uBAAW,CAAC,IAAI;IACjC,SAAS,EAAE,CAAC,uBAAW,CAAC;IACxB,cAAc,EAAd,uBAAc;CACf,CAAC,CAAA"}
@@ -0,0 +1,27 @@
1
+ import { AdapterEndpoint } from '../../adapter';
2
+ import { SSETransport } from '../../transports';
3
+ import { SingleNumberResultResponse } from '../../util';
4
+ import { InputParameters } from '../../validation';
5
+ import { SettingsMap } from '../../config';
6
+ interface AdapterRequestParams {
7
+ base: string;
8
+ quote: string;
9
+ }
10
+ export declare const inputParameters: InputParameters;
11
+ declare type Price = number;
12
+ declare type Quantity = number;
13
+ export declare type Entry = ['BUY' | 'SELL' | '', Price, Quantity];
14
+ declare type StreamEndpointTypes = {
15
+ Request: {
16
+ Params: AdapterRequestParams;
17
+ };
18
+ Response: SingleNumberResultResponse;
19
+ CustomSettings: SettingsMap;
20
+ Provider: {
21
+ RequestBody: never;
22
+ };
23
+ };
24
+ export declare const sseTransport: SSETransport<StreamEndpointTypes>;
25
+ export declare const calculateQWAPprice: (entries: Entry[]) => number | undefined;
26
+ export declare const sseEndpoint: AdapterEndpoint<StreamEndpointTypes>;
27
+ export {};
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.sseEndpoint = exports.calculateQWAPprice = exports.sseTransport = exports.inputParameters = void 0;
7
+ const crypto_1 = __importDefault(require("crypto"));
8
+ const adapter_1 = require("../../adapter");
9
+ const transports_1 = require("../../transports");
10
+ const util_1 = require("../../util");
11
+ const DEFAULT_ENDPOINT = 'https://api.genesistrading.com';
12
+ exports.inputParameters = {
13
+ base: {
14
+ aliases: ['from', 'coin'],
15
+ description: 'The symbol of the currency to query',
16
+ required: true,
17
+ },
18
+ quote: {
19
+ aliases: ['to', 'market'],
20
+ description: 'The symbol of the currency to convert to',
21
+ required: true,
22
+ },
23
+ };
24
+ const logger = (0, util_1.makeLogger)('GenesisSSETransport');
25
+ exports.sseTransport = new transports_1.SSETransport({
26
+ prepareSSEConnectionConfig: (params, context) => {
27
+ const payload = 'null';
28
+ const url = prepareRequestUrl(context.adapterConfig, 'sseStream', payload);
29
+ logger.debug('SSE Connection URL: ', url);
30
+ return { url };
31
+ },
32
+ prepareKeepAliveRequest: (context) => {
33
+ const payload = 'null';
34
+ const url = prepareRequestUrl(context.adapterConfig, 'ping', payload);
35
+ const axiosRequestConfig = {
36
+ method: 'POST',
37
+ url,
38
+ };
39
+ logger.debug('Keep Alive URL: ', url);
40
+ return axiosRequestConfig;
41
+ },
42
+ prepareSubscriptionRequest: (params, context) => {
43
+ const requestedSymbols = params.map((p) => {
44
+ return `${p.base.toUpperCase()}-${p.quote.toUpperCase()}`;
45
+ });
46
+ const payloadObj = {
47
+ Action: 'SUBSCRIBE',
48
+ Symbols: requestedSymbols,
49
+ };
50
+ const url = prepareRequestUrl(context.adapterConfig, 'marketDataRequest', JSON.stringify(payloadObj));
51
+ logger.debug('Subscribe URL: ', url);
52
+ const axiosConfig = {
53
+ method: 'POST',
54
+ url,
55
+ };
56
+ return axiosConfig;
57
+ },
58
+ prepareUnsubscriptionRequest: (params, context) => {
59
+ const requestedSymbols = params.map((p) => {
60
+ return `${p.base.toUpperCase()}-${p.quote.toUpperCase()}`;
61
+ });
62
+ const payloadObj = {
63
+ Action: 'UNSUBSCRIBE',
64
+ Symbols: requestedSymbols,
65
+ };
66
+ const url = prepareRequestUrl(context.adapterConfig, 'marketDataRequest', JSON.stringify(payloadObj));
67
+ logger.debug('Unsubscribe URL: ', url);
68
+ const axiosConfig = {
69
+ method: 'POST',
70
+ url,
71
+ };
72
+ return axiosConfig;
73
+ },
74
+ eventListeners: [
75
+ {
76
+ type: 'L2Update',
77
+ parseResponse: (evt) => {
78
+ let providerData = {};
79
+ try {
80
+ // To parse, add the formatting to interperate as a JSON array.
81
+ providerData = JSON.parse(evt.data);
82
+ }
83
+ catch (error) {
84
+ logger.error(error, `Error parsing JSON from data provider`);
85
+ }
86
+ const entries = providerData.Changes.map((e) => e.Entry);
87
+ const value = (0, exports.calculateQWAPprice)(entries);
88
+ if (value) {
89
+ const [base, quote] = providerData.Symbol.split('-');
90
+ return [
91
+ {
92
+ params: { base, quote },
93
+ value,
94
+ },
95
+ ];
96
+ }
97
+ return [];
98
+ },
99
+ },
100
+ ],
101
+ });
102
+ const calculateQWAPprice = (entries) => {
103
+ const meanPriceByQuantity = {};
104
+ // Group orders by quantity
105
+ let totalQuantity = 0;
106
+ entries.forEach((e) => {
107
+ if (e[2] === 0) {
108
+ return;
109
+ }
110
+ if (!meanPriceByQuantity[e[2].toString()]) {
111
+ meanPriceByQuantity[e[2].toString()] = [e[1], NaN];
112
+ }
113
+ else {
114
+ const meanPrice = (e[1] + meanPriceByQuantity[e[2].toString()][0]) / 2;
115
+ meanPriceByQuantity[e[2].toString()] = [meanPrice, meanPrice * e[2]];
116
+ totalQuantity += e[2];
117
+ }
118
+ });
119
+ if (Object.keys(meanPriceByQuantity).length === 0) {
120
+ return;
121
+ }
122
+ const priceTimesQuantitySum = Object.values(meanPriceByQuantity).reduce((e1, e2) => [
123
+ NaN,
124
+ e1[1] + e2[1],
125
+ ])[1];
126
+ // Return a sum of all the products divided by the total quantity
127
+ return priceTimesQuantitySum / totalQuantity;
128
+ };
129
+ exports.calculateQWAPprice = calculateQWAPprice;
130
+ const prepareRequestUrl = (config, endpoint, payload) => {
131
+ const apiKey = config.API_KEY;
132
+ if (!apiKey) {
133
+ logger.error(new Error('API_KEY not set'), 'Set the API_KEY configuration variable to a valid Genesis API key');
134
+ }
135
+ const apiSecret = config.API_SECRET;
136
+ const nonce = (BigInt(Date.now()) * BigInt('1000000')).toString();
137
+ const hash = crypto_1.default.createHmac('sha384', Buffer.from(apiSecret ?? ''));
138
+ const data = hash.update(Buffer.from(apiKey + payload + nonce));
139
+ const sig = data.digest().toString('hex');
140
+ const baseUrl = config.API_ENDPOINT ?? DEFAULT_ENDPOINT;
141
+ const subDir = `${endpoint}?APIKEY=${apiKey}&PAYLOAD=${payload}&NONCE=${nonce}&SIGNATURE=${sig}`;
142
+ return new URL(subDir, baseUrl).toString();
143
+ };
144
+ exports.sseEndpoint = new adapter_1.AdapterEndpoint({
145
+ name: 'sseStream',
146
+ transport: exports.sseTransport,
147
+ inputParameters: exports.inputParameters,
148
+ });
149
+ //# sourceMappingURL=sseStream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sseStream.js","sourceRoot":"","sources":["../../../../src/examples/genesis/sseStream.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chainlink/external-adapter-framework",
3
- "version": "0.15.0",
3
+ "version": "0.16.0",
4
4
  "main": "dist/index.js",
5
5
  "license": "MIT",
6
6
  "dependencies": {
@@ -16,5 +16,5 @@ export declare class SimpleCountingRateLimiter implements RateLimiter {
16
16
  perSecondLimit: number;
17
17
  perMinuteLimit: number;
18
18
  initialize<T extends EndpointGenerics>(endpoints: AdapterEndpoint<T>[], limits?: AdapterRateLimitTier): this;
19
- msUntilNextExecution(): number;
19
+ isUnderLimits(): boolean;
20
20
  }
@@ -26,16 +26,14 @@ class SimpleCountingRateLimiter {
26
26
  logger.debug(`Using rate limiting settings: perMinute = ${this.perMinuteLimit} | perSecond: = ${this.perSecondLimit}`);
27
27
  return this;
28
28
  }
29
- msUntilNextExecution() {
29
+ isUnderLimits() {
30
30
  // If the limit is set to infinity, there was no tier limit specified
31
31
  if (this.perSecondLimit === Infinity && this.perMinuteLimit === Infinity) {
32
- return 0;
32
+ return true;
33
33
  }
34
34
  const now = Date.now();
35
35
  const nearestSecondInterval = Math.floor(now / 1000);
36
36
  const nearestMinuteInterval = Math.floor(now / (1000 * 60));
37
- const nextSecondInterval = (nearestSecondInterval + 1) * 1000;
38
- const nextMinuteInterval = (nearestMinuteInterval + 1) * 1000 * 60;
39
37
  // This should always run to completion, even if it doesn't look atomic; therefore the
40
38
  // Ops should be "thread safe". Thank JS and its infinite single threaded dumbness.
41
39
  if (nearestSecondInterval !== this.latestSecondInterval) {
@@ -48,18 +46,16 @@ class SimpleCountingRateLimiter {
48
46
  this.latestMinuteInterval = nearestMinuteInterval;
49
47
  this.requestsThisMinute = 0;
50
48
  }
51
- const timeToWaitForNextSecond = this.requestsThisSecond < this.perSecondLimit ? 0 : nextSecondInterval - now;
52
- const timeToWaitForNextMinute = this.requestsThisMinute < this.perMinuteLimit ? 0 : nextMinuteInterval - now;
53
- const timeToWait = Math.max(timeToWaitForNextSecond, timeToWaitForNextMinute);
54
- if (timeToWait === 0) {
49
+ if (this.requestsThisSecond < this.perSecondLimit &&
50
+ this.requestsThisMinute < this.perMinuteLimit) {
51
+ logger.trace('Request under limits, counting +1');
55
52
  this.requestsThisSecond++;
56
53
  this.requestsThisMinute++;
57
- logger.trace(`Request under limits, counted +1 (S = ${this.requestsThisSecond} | M = ${this.requestsThisMinute})`);
58
- return 0;
54
+ return true;
59
55
  }
60
56
  else {
61
- logger.trace(`Capacity for provider requests has been reached this interval (S = ${this.requestsThisSecond} | M = ${this.requestsThisMinute}), need to wait ${timeToWait}ms`);
62
- return timeToWait;
57
+ logger.trace('Requests seen this interval are above limits');
58
+ return false;
63
59
  }
64
60
  }
65
61
  }
@@ -1 +1 @@
1
- {"version":3,"file":"simple-counting.js","sourceRoot":"","sources":["../../../../src/rate-limiting/request/simple-counting.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"simple-counting.js","sourceRoot":"","sources":["../../../../src/rate-limiting/request/simple-counting.ts"],"names":[],"mappings":";;;AAEA,qCAAuC;AAEvC,MAAM,MAAM,GAAG,IAAA,iBAAU,EAAC,2BAA2B,CAAC,CAAA;AAEtD;;;;;;;GAOG;AACH,MAAa,yBAAyB;IAAtC;QACE,yBAAoB,GAAG,CAAC,CAAA;QACxB,uBAAkB,GAAG,CAAC,CAAA;QACtB,yBAAoB,GAAG,CAAC,CAAA;QACxB,uBAAkB,GAAG,CAAC,CAAA;IA4DxB,CAAC;IAxDC,UAAU,CACR,SAA+B,EAC/B,MAA6B;QAE7B,kDAAkD;QAClD,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,WAAW,IAAI,QAAQ,CAAC,GAAG,EAAE,CAAA;QAC3D,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,IAAI,QAAQ,EAAE,YAAY,CAAC,CAAA;QAC7E,IAAI,CAAC,cAAc,GAAG,MAAM,EAAE,WAAW,IAAI,QAAQ,CAAA;QACrD,MAAM,CAAC,KAAK,CACV,6CAA6C,IAAI,CAAC,cAAc,mBAAmB,IAAI,CAAC,cAAc,EAAE,CACzG,CAAA;QAED,OAAO,IAAI,CAAA;IACb,CAAC;IAED,aAAa;QACX,qEAAqE;QACrE,IAAI,IAAI,CAAC,cAAc,KAAK,QAAQ,IAAI,IAAI,CAAC,cAAc,KAAK,QAAQ,EAAE;YACxE,OAAO,IAAI,CAAA;SACZ;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACtB,MAAM,qBAAqB,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,CAAA;QACpD,MAAM,qBAAqB,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAA;QAE3D,sFAAsF;QACtF,mFAAmF;QACnF,IAAI,qBAAqB,KAAK,IAAI,CAAC,oBAAoB,EAAE;YACvD,MAAM,CAAC,KAAK,CACV,8DAA8D,IAAI,CAAC,kBAAkB,GAAG,CACzF,CAAA;YACD,IAAI,CAAC,oBAAoB,GAAG,qBAAqB,CAAA;YACjD,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAA;SAC5B;QAED,IAAI,qBAAqB,KAAK,IAAI,CAAC,oBAAoB,EAAE;YACvD,MAAM,CAAC,KAAK,CACV,4DAA4D,IAAI,CAAC,kBAAkB,GAAG,CACvF,CAAA;YACD,IAAI,CAAC,oBAAoB,GAAG,qBAAqB,CAAA;YACjD,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAA;SAC5B;QAED,IACE,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,cAAc;YAC7C,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,cAAc,EAC7C;YACA,MAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAA;YACjD,IAAI,CAAC,kBAAkB,EAAE,CAAA;YACzB,IAAI,CAAC,kBAAkB,EAAE,CAAA;YACzB,OAAO,IAAI,CAAA;SACZ;aAAM;YACL,MAAM,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAA;YAC5D,OAAO,KAAK,CAAA;SACb;IACH,CAAC;CACF;AAhED,8DAgEC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const lib_1 = require("./lib");
4
+ (0, lib_1.newAdapter)();
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/scripts/generator/index.ts"],"names":[],"mappings":";;AAAA,+BAAkC;AAElC,IAAA,gBAAU,GAAE,CAAA"}
@@ -0,0 +1 @@
1
+ export declare function newAdapter(): Promise<void>;
@@ -0,0 +1,170 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.newAdapter = void 0;
30
+ /* eslint-disable @typescript-eslint/no-var-requires */
31
+ const chalk_1 = __importDefault(require("chalk"));
32
+ const path = __importStar(require("path"));
33
+ const shell = __importStar(require("shelljs"));
34
+ const workspace_1 = require("./workspace");
35
+ const { red, blue } = chalk_1.default;
36
+ const { log } = console;
37
+ const ADAPTER_TYPES = ['source'];
38
+ async function newAdapter() {
39
+ log(blue.bold('Running input checks'));
40
+ const inputs = checks();
41
+ log(blue.bold(`Copying example ${inputs.type} adapter to ${inputs.type}/${inputs.name}`));
42
+ copyFiles(inputs.type, inputs.name);
43
+ log(blue.bold('Regenerating tsconfig and lego files'));
44
+ const data = await generate(inputs.type);
45
+ log(blue.bold('Resolving workspace and running prettier'));
46
+ writeJson(data);
47
+ }
48
+ exports.newAdapter = newAdapter;
49
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
50
+ function writeJson(data) {
51
+ const files = Object.keys(data);
52
+ // Write to each file
53
+ files.forEach((f) => {
54
+ let contents = data[f];
55
+ if (f.includes('.json')) {
56
+ contents = JSON.stringify(contents, null, 2);
57
+ }
58
+ // eslint-disable-next-line new-cap
59
+ shell.ShellString(contents).to(f);
60
+ });
61
+ // Resolve workspace and format modified files
62
+ shell.exec(`yarn && yarn prettier --write ${files.join(' ')}`);
63
+ }
64
+ function checks() {
65
+ const type = process.argv[2];
66
+ if (!type) {
67
+ throw red.bold('Missing first argument: type');
68
+ }
69
+ if (!ADAPTER_TYPES.includes(type)) {
70
+ throw red.bold(`Type must be one of: ${ADAPTER_TYPES.join(', ')}`);
71
+ }
72
+ const name = process.argv[3];
73
+ if (!name) {
74
+ throw red.bold('Missing second argument: name');
75
+ }
76
+ // Check if jq is installed (jq used later to modify json files)
77
+ const jq = shell.exec('command -v jq').toString();
78
+ if (!jq) {
79
+ throw red.bold('jq is not installed');
80
+ }
81
+ return { type, name };
82
+ }
83
+ function copyFiles(type, name) {
84
+ // Copying files
85
+ shell.mkdir(`packages/${type}s/${name}`);
86
+ shell.cp('-R', `./src/scripts/generator/example/${type}/*`, `packages/${type}s/${name}`);
87
+ // Editing adapter package.json
88
+ shell
89
+ .cat(`packages/${type}s/${name}/package.json`)
90
+ .exec(`jq '.name = "@chainlink/${name}-adapter" | .description = "Chainlink ${name} adapter." | .keywords += ["${name}"]'`)
91
+ .exec(`tee packages/${type}s/${name}/package.json`)
92
+ .to(`packages/${type}s/${name}/package.json`);
93
+ // Clear the CHANGELOG
94
+ shell.echo(`# @chainlink/${name}-adapter\n`).to(`packages/${type}s/${name}/CHANGELOG.md`);
95
+ // Set the new adapter version to 0.0.0
96
+ shell.sed('-i', '"version": ".+?(?=",)', '"version": "0.0.0', `packages/${type}s/${name}/package.json`);
97
+ // Changing README to use the adapter name instead of example
98
+ const nCap = name[0].toUpperCase() + name.slice(1);
99
+ shell.sed('-i', 'Example', nCap, `packages/${type}s/${name}/README.md`);
100
+ }
101
+ function tsconfGenerate(packages, filepath, slice = 0, isTestConfig = false) {
102
+ return packages.map((w) => {
103
+ return {
104
+ path: path
105
+ .relative(filepath, `${w.location}${isTestConfig ? '/tsconfig.test.json' : ''}`)
106
+ .slice(slice),
107
+ }; // Removes first '.'
108
+ });
109
+ }
110
+ async function generate(type) {
111
+ let writeData = {}; // Data struct for writing
112
+ // pull latest workspace data after files have been generated
113
+ let currentWorkspace = (0, workspace_1.getWorkspacePackages)(['scripts', 'core']); // Using this alphabetizes everything
114
+ currentWorkspace = currentWorkspace.filter((w) => w.name !== '@chainlink/ea-bootstrap'); // Filter out package
115
+ currentWorkspace = currentWorkspace.filter((w) => w.name !== '@chainlink/readme-test-adapter'); // Filter out package
116
+ const adapterList = currentWorkspace.filter((w) => w.type === `${type}s`);
117
+ // Add to packages/tsconfig.json
118
+ const tsconfigPath = 'packages/tsconfig.json';
119
+ const tsconfig = JSON.parse(JSON.stringify(require(path.relative(__dirname, tsconfigPath))));
120
+ tsconfig.references = tsconfGenerate(currentWorkspace, tsconfigPath, 1);
121
+ writeData = { ...writeData, [tsconfigPath]: tsconfig };
122
+ // Add to packages/tsconfig.test.json
123
+ const tsconfigTestPath = 'packages/tsconfig.test.json';
124
+ const tsconfigTest = JSON.parse(JSON.stringify(require(path.relative(__dirname, tsconfigTestPath))));
125
+ tsconfigTest.references = tsconfGenerate(currentWorkspace, tsconfigTestPath, 1, true);
126
+ writeData = { ...writeData, [tsconfigTestPath]: tsconfigTest };
127
+ // Add to ea legos package for source adapters
128
+ if (type === 'source') {
129
+ const legosPath = 'packages/core/legos';
130
+ // Update legos/tsconfig.json
131
+ const legoTsconfigPath = `${legosPath}/tsconfig.json`;
132
+ const legoTsconfig = JSON.parse(JSON.stringify(require(path.relative(__dirname, legoTsconfigPath))));
133
+ legoTsconfig.references = tsconfGenerate(adapterList, legosPath);
134
+ writeData = { ...writeData, [legoTsconfigPath]: legoTsconfig };
135
+ // Update legos/package.json
136
+ const legoPackagePath = `${legosPath}/package.json`;
137
+ const legoPackage = JSON.parse(JSON.stringify(require(path.relative(__dirname, legoPackagePath))));
138
+ const otherPackages = Object.keys(legoPackage.dependencies)
139
+ .filter((k) => !(k.includes('@chainlink') && k.includes('adapter')))
140
+ .reduce((obj, key) => {
141
+ return { ...obj, [key]: legoPackage.dependencies[key] };
142
+ }, {}); // Capture other dependencies (non-adapter)
143
+ legoPackage.dependencies = adapterList.reduce((obj, adapter) => {
144
+ return { ...obj, [adapter.name]: 'workspace:*' };
145
+ }, otherPackages);
146
+ writeData = { ...writeData, [legoPackagePath]: legoPackage };
147
+ // Updating legos/src/sources.ts
148
+ // (not using workspaces because some have custom/non-standardized naming structures)
149
+ const legoSourcePath = `${legosPath}/src/sources.ts`;
150
+ let output = shell.cat(legoSourcePath).split('\n');
151
+ const index = output.indexOf('');
152
+ const importEa = output.slice(0, index);
153
+ const exportEa = output
154
+ .slice(index)
155
+ .filter((e) => e !== '' && e !== '}' && !e.includes('{'));
156
+ // Checks adapter list for newly generated adapters and adds to the list if not already present
157
+ adapterList.forEach((a) => {
158
+ if (!importEa.join().includes(a.name)) {
159
+ const name = a.name.replace('@chainlink/', '').replace('-adapter', '');
160
+ const nameNoDash = name.replace(/-/g, '_'); // /g to apply to whole string not just first instance
161
+ importEa.push(`import * as ${nameNoDash} from '@chainlink/${name}-adapter'`);
162
+ exportEa.push(` ${nameNoDash},`);
163
+ }
164
+ });
165
+ output = [...importEa.sort(), '', 'export default {', ...exportEa.sort(), '}']; // Create new file with alphabetically sorted EAs
166
+ writeData = { ...writeData, [legoSourcePath]: output.join('\n') };
167
+ }
168
+ return writeData;
169
+ }
170
+ //# sourceMappingURL=lib.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lib.js","sourceRoot":"","sources":["../../../../src/scripts/generator/lib.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ interface TsConfig {
2
+ references: {
3
+ path: string;
4
+ }[];
5
+ }
6
+ export interface WorkspacePackage {
7
+ tsconf: TsConfig | undefined;
8
+ location: string;
9
+ name: string;
10
+ descopedName: string;
11
+ type: string;
12
+ version: string;
13
+ framework: string;
14
+ }
15
+ /**
16
+ * Types of adapters that are publically consumed
17
+ */
18
+ export declare const PUBLIC_ADAPTER_TYPES: string[];
19
+ export declare type WorkspacePackages = ReturnType<typeof getWorkspacePackages>;
20
+ export declare function getWorkspacePackages(additionalTypes?: string[]): WorkspacePackage[];
21
+ export {};