@chainlink/external-adapter-framework 0.0.46 → 0.0.55

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 (166) hide show
  1. package/adapter.d.ts +18 -1
  2. package/adapter.js +70 -3
  3. package/adapter.js.map +1 -0
  4. package/background-executor.js +32 -0
  5. package/background-executor.js.map +1 -0
  6. package/cache/factory.d.ts +2 -2
  7. package/cache/factory.js +12 -46
  8. package/cache/factory.js.map +1 -0
  9. package/cache/index.js +4 -2
  10. package/cache/index.js.map +1 -0
  11. package/cache/local.js +1 -0
  12. package/cache/local.js.map +1 -0
  13. package/cache/metrics.js +1 -0
  14. package/cache/metrics.js.map +1 -0
  15. package/cache/redis.js +1 -0
  16. package/cache/redis.js.map +1 -0
  17. package/config/index.d.ts +34 -0
  18. package/config/index.js +41 -62
  19. package/config/index.js.map +1 -0
  20. package/config/provider-limits.js +1 -0
  21. package/config/provider-limits.js.map +1 -0
  22. package/examples/bank-frick/accounts.d.ts +15 -1
  23. package/examples/bank-frick/accounts.js +1 -0
  24. package/examples/bank-frick/accounts.js.map +1 -0
  25. package/examples/bank-frick/config/index.d.ts +15 -2
  26. package/examples/bank-frick/config/index.js +1 -0
  27. package/examples/bank-frick/config/index.js.map +1 -0
  28. package/examples/bank-frick/index.d.ts +15 -1
  29. package/examples/bank-frick/index.js +1 -0
  30. package/examples/bank-frick/index.js.map +1 -0
  31. package/examples/bank-frick/util.js +1 -0
  32. package/examples/bank-frick/util.js.map +1 -0
  33. package/examples/coingecko/batch-warming.d.ts +7 -0
  34. package/examples/coingecko/batch-warming.js +54 -0
  35. package/examples/coingecko/batch-warming.js.map +1 -0
  36. package/examples/coingecko/index.d.ts +2 -0
  37. package/examples/coingecko/index.js +12 -0
  38. package/examples/coingecko/index.js.map +1 -0
  39. package/examples/coingecko/rest.d.ts +12 -0
  40. package/examples/coingecko/rest.js +55 -0
  41. package/examples/coingecko/rest.js.map +1 -0
  42. package/examples/coingecko/src/config/index.js +1 -0
  43. package/examples/coingecko/src/config/index.js.map +1 -0
  44. package/examples/coingecko/src/crypto-utils.d.ts +31 -0
  45. package/examples/coingecko/src/crypto-utils.js +61 -0
  46. package/examples/coingecko/src/crypto-utils.js.map +1 -0
  47. package/examples/coingecko/src/endpoint/coins.js +4 -1
  48. package/examples/coingecko/src/endpoint/coins.js.map +1 -0
  49. package/examples/coingecko/src/endpoint/crypto-marketcap.d.ts +1 -1
  50. package/examples/coingecko/src/endpoint/crypto-marketcap.js +5 -4
  51. package/examples/coingecko/src/endpoint/crypto-marketcap.js.map +1 -0
  52. package/examples/coingecko/src/endpoint/crypto-volume.d.ts +1 -1
  53. package/examples/coingecko/src/endpoint/crypto-volume.js +5 -4
  54. package/examples/coingecko/src/endpoint/crypto-volume.js.map +1 -0
  55. package/examples/coingecko/src/endpoint/crypto.d.ts +1 -1
  56. package/examples/coingecko/src/endpoint/crypto.js +5 -4
  57. package/examples/coingecko/src/endpoint/crypto.js.map +1 -0
  58. package/examples/coingecko/src/endpoint/dominance.d.ts +1 -1
  59. package/examples/coingecko/src/endpoint/dominance.js +5 -4
  60. package/examples/coingecko/src/endpoint/dominance.js.map +1 -0
  61. package/examples/coingecko/src/endpoint/global-marketcap.d.ts +1 -1
  62. package/examples/coingecko/src/endpoint/global-marketcap.js +5 -4
  63. package/examples/coingecko/src/endpoint/global-marketcap.js.map +1 -0
  64. package/examples/coingecko/src/endpoint/index.js +1 -0
  65. package/examples/coingecko/src/endpoint/index.js.map +1 -0
  66. package/examples/coingecko/src/global-utils.d.ts +27 -0
  67. package/examples/coingecko/src/global-utils.js +47 -0
  68. package/examples/coingecko/src/global-utils.js.map +1 -0
  69. package/examples/coingecko/src/index.d.ts +1 -1
  70. package/examples/coingecko/src/index.js +1 -0
  71. package/examples/coingecko/src/index.js.map +1 -0
  72. package/examples/coingecko-old/batch-warming.js +1 -0
  73. package/examples/coingecko-old/batch-warming.js.map +1 -0
  74. package/examples/coingecko-old/index.js +1 -0
  75. package/examples/coingecko-old/index.js.map +1 -0
  76. package/examples/coingecko-old/rest.js +5 -1
  77. package/examples/coingecko-old/rest.js.map +1 -0
  78. package/examples/genesis/config/index.d.ts +7 -0
  79. package/examples/genesis/config/index.js +11 -0
  80. package/examples/genesis/config/index.js.map +1 -0
  81. package/examples/genesis/index.d.ts +2 -0
  82. package/examples/genesis/index.js +13 -0
  83. package/examples/genesis/index.js.map +1 -0
  84. package/examples/genesis/sseStream.d.ts +16 -0
  85. package/examples/genesis/sseStream.js +142 -0
  86. package/examples/genesis/sseStream.js.map +1 -0
  87. package/examples/ncfx/config/index.js +1 -0
  88. package/examples/ncfx/config/index.js.map +1 -0
  89. package/examples/ncfx/index.js +1 -0
  90. package/examples/ncfx/index.js.map +1 -0
  91. package/examples/ncfx/websocket.js +1 -0
  92. package/examples/ncfx/websocket.js.map +1 -0
  93. package/index.js +1 -0
  94. package/index.js.map +1 -0
  95. package/metrics/constants.js +1 -0
  96. package/metrics/constants.js.map +1 -0
  97. package/metrics/index.d.ts +2 -0
  98. package/metrics/index.js +13 -1
  99. package/metrics/index.js.map +1 -0
  100. package/metrics/util.js +1 -0
  101. package/metrics/util.js.map +1 -0
  102. package/package.json +7 -5
  103. package/rate-limiting/background/fixed-frequency.js +1 -3
  104. package/rate-limiting/background/fixed-frequency.js.map +1 -0
  105. package/rate-limiting/index.d.ts +1 -0
  106. package/rate-limiting/index.js +4 -2
  107. package/rate-limiting/index.js.map +1 -0
  108. package/rate-limiting/metrics.js +1 -0
  109. package/rate-limiting/metrics.js.map +1 -0
  110. package/rate-limiting/request/simple-counting.js +1 -0
  111. package/rate-limiting/request/simple-counting.js.map +1 -0
  112. package/transports/batch-warming.d.ts +2 -2
  113. package/transports/batch-warming.js +14 -6
  114. package/transports/batch-warming.js.map +1 -0
  115. package/transports/index.d.ts +2 -1
  116. package/transports/index.js +24 -0
  117. package/transports/index.js.map +1 -0
  118. package/transports/metrics.d.ts +3 -0
  119. package/transports/metrics.js +18 -1
  120. package/transports/metrics.js.map +1 -0
  121. package/transports/rest.d.ts +8 -2
  122. package/transports/rest.js +14 -13
  123. package/transports/rest.js.map +1 -0
  124. package/transports/sse.d.ts +41 -0
  125. package/transports/sse.js +96 -0
  126. package/transports/sse.js.map +1 -0
  127. package/transports/util.js +1 -0
  128. package/transports/util.js.map +1 -0
  129. package/transports/websocket.d.ts +2 -2
  130. package/transports/websocket.js +13 -11
  131. package/transports/websocket.js.map +1 -0
  132. package/util/censor/censor-list.d.ts +9 -0
  133. package/util/censor/censor-list.js +13 -0
  134. package/util/censor/censor-list.js.map +1 -0
  135. package/util/index.d.ts +1 -0
  136. package/util/index.js +4 -1
  137. package/util/index.js.map +1 -0
  138. package/util/logger.d.ts +3 -0
  139. package/util/logger.js +21 -1
  140. package/util/logger.js.map +1 -0
  141. package/util/request.d.ts +52 -6
  142. package/util/request.js +1 -0
  143. package/util/request.js.map +1 -0
  144. package/util/subscription-set/expiring-sorted-set.d.ts +0 -1
  145. package/util/subscription-set/expiring-sorted-set.js +1 -12
  146. package/util/subscription-set/expiring-sorted-set.js.map +1 -0
  147. package/util/subscription-set/redis-sorted-set.d.ts +9 -0
  148. package/util/subscription-set/redis-sorted-set.js +29 -0
  149. package/util/subscription-set/redis-sorted-set.js.map +1 -0
  150. package/util/subscription-set/subscription-set.d.ts +5 -4
  151. package/util/subscription-set/subscription-set.js +14 -5
  152. package/util/subscription-set/subscription-set.js.map +1 -0
  153. package/util/test-payload-loader.js +1 -0
  154. package/util/test-payload-loader.js.map +1 -0
  155. package/validation/error.js +1 -0
  156. package/validation/error.js.map +1 -0
  157. package/validation/index.js +9 -9
  158. package/validation/index.js.map +1 -0
  159. package/validation/input-params.d.ts +1 -1
  160. package/validation/input-params.js +1 -0
  161. package/validation/input-params.js.map +1 -0
  162. package/validation/input-validator.d.ts +16 -0
  163. package/validation/input-validator.js +124 -0
  164. package/validation/input-validator.js.map +1 -0
  165. package/validation/override-functions.js +1 -0
  166. package/validation/override-functions.js.map +1 -0
@@ -3,15 +3,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.endpoint = void 0;
4
4
  const adapter_1 = require("../../../../adapter");
5
5
  const batch_warming_1 = require("../../../../transports/batch-warming");
6
- const globalUtils_1 = require("../globalUtils");
6
+ const global_utils_1 = require("../global-utils");
7
7
  const batchEndpointTransport = new batch_warming_1.BatchWarmingTransport({
8
8
  prepareRequest: (params, context) => {
9
- return (0, globalUtils_1.buildGlobalRequestBody)(context.adapterConfig.API_KEY);
9
+ return (0, global_utils_1.buildGlobalRequestBody)(context.adapterConfig.API_KEY);
10
10
  },
11
11
  parseResponse: (params, res) => {
12
12
  const entries = [];
13
13
  for (const requestPayload of params) {
14
- const entry = (0, globalUtils_1.constructEntry)(res, requestPayload, 'total_market_cap');
14
+ const entry = (0, global_utils_1.constructEntry)(res, requestPayload, 'total_market_cap');
15
15
  if (entry) {
16
16
  entries.push(entry);
17
17
  }
@@ -23,5 +23,6 @@ exports.endpoint = new adapter_1.AdapterEndpoint({
23
23
  name: 'globalmarketcap',
24
24
  aliases: ['total_market_cap'],
25
25
  transport: batchEndpointTransport,
26
- inputParameters: globalUtils_1.inputParameters,
26
+ inputParameters: global_utils_1.inputParameters,
27
27
  });
28
+ //# sourceMappingURL=global-marketcap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global-marketcap.js","sourceRoot":"","sources":["../../../../../../src/examples/coingecko/src/endpoint/global-marketcap.ts"],"names":[],"mappings":";;;AACA,iDAAqE;AACrE,wEAA4E;AAE5E,kDAMwB;AAExB,MAAM,sBAAsB,GAAG,IAAI,qCAAqB,CAAC;IACvD,cAAc,EAAE,CACd,MAA8B,EAC9B,OAAuB,EACI,EAAE;QAC7B,OAAO,IAAA,qCAAsB,EAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;IAC9D,CAAC;IACD,aAAa,EAAE,CACb,MAA8B,EAC9B,GAAwC,EACA,EAAE;QAC1C,MAAM,OAAO,GAAG,EAA4C,CAAA;QAC5D,KAAK,MAAM,cAAc,IAAI,MAAM,EAAE;YACnC,MAAM,KAAK,GAAG,IAAA,6BAAc,EAAC,GAAG,EAAE,cAAc,EAAE,kBAAkB,CAAC,CAAA;YACrE,IAAI,KAAK,EAAE;gBACT,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;aACpB;SACF;QACD,OAAO,OAAO,CAAA;IAChB,CAAC;CACF,CAAC,CAAA;AAEW,QAAA,QAAQ,GAAG,IAAI,yBAAe,CAAC;IAC1C,IAAI,EAAE,iBAAiB;IACvB,OAAO,EAAE,CAAC,kBAAkB,CAAC;IAC7B,SAAS,EAAE,sBAAsB;IACjC,eAAe,EAAf,8BAAe;CAChB,CAAC,CAAA"}
@@ -13,3 +13,4 @@ var dominance_1 = require("./dominance");
13
13
  Object.defineProperty(exports, "dominance", { enumerable: true, get: function () { return dominance_1.endpoint; } });
14
14
  var crypto_volume_1 = require("./crypto-volume");
15
15
  Object.defineProperty(exports, "cryptoVolume", { enumerable: true, get: function () { return crypto_volume_1.endpoint; } });
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/examples/coingecko/src/endpoint/index.ts"],"names":[],"mappings":";;;AAAA,iCAA2C;AAAlC,8FAAA,QAAQ,OAAS;AAC1B,mCAA6C;AAApC,gGAAA,QAAQ,OAAU;AAC3B,uDAAgE;AAAvD,mHAAA,QAAQ,OAAmB;AACpC,uDAAgE;AAAvD,mHAAA,QAAQ,OAAmB;AACpC,yCAAmD;AAA1C,sGAAA,QAAQ,OAAa;AAC9B,iDAA0D;AAAjD,6GAAA,QAAQ,OAAgB"}
@@ -0,0 +1,27 @@
1
+ import { AxiosRequestConfig, AxiosResponse } from 'axios';
2
+ import { InputParameters } from '../../../validation';
3
+ export declare const inputParameters: InputParameters;
4
+ export interface AdapterRequestParams {
5
+ market: string;
6
+ }
7
+ export interface ProviderResponseBody {
8
+ data: {
9
+ active_cryptocurrencies: number;
10
+ upcoming_icos: number;
11
+ ongoing_icos: number;
12
+ ended_icos: number;
13
+ markets: number;
14
+ total_market_cap: Record<string, number>;
15
+ total_volume: Record<string, number>;
16
+ market_cap_percentage: Record<string, number>;
17
+ market_cap_change_percentage_24h_usd: number;
18
+ updated_at: number;
19
+ };
20
+ }
21
+ interface ResultEntry {
22
+ value: number;
23
+ params: AdapterRequestParams;
24
+ }
25
+ export declare const buildGlobalRequestBody: (apiKey?: string | undefined) => AxiosRequestConfig<never>;
26
+ export declare const constructEntry: (res: AxiosResponse<ProviderResponseBody>, requestPayload: AdapterRequestParams, resultPath: 'total_market_cap' | 'market_cap_percentage') => ResultEntry | undefined;
27
+ export {};
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.constructEntry = exports.buildGlobalRequestBody = exports.inputParameters = void 0;
4
+ const config_1 = require("./config");
5
+ const logger_1 = require("../../../util/logger");
6
+ const logger = (0, logger_1.makeLogger)('CoinGecko Global Batched');
7
+ exports.inputParameters = {
8
+ market: {
9
+ aliases: ['to', 'quote'],
10
+ description: 'The ticker of the coin to query',
11
+ required: true,
12
+ },
13
+ };
14
+ const buildGlobalRequestBody = (apiKey) => {
15
+ return {
16
+ baseURL: apiKey ? config_1.PRO_API_ENDPOINT : config_1.DEFAULT_API_ENDPOINT,
17
+ url: '/global',
18
+ method: 'GET',
19
+ params: {
20
+ x_cg_pro_api_key: apiKey,
21
+ },
22
+ };
23
+ };
24
+ exports.buildGlobalRequestBody = buildGlobalRequestBody;
25
+ const constructEntry = (res, requestPayload, resultPath) => {
26
+ const resultData = res.data.data;
27
+ if (!resultData) {
28
+ logger.warn(`Data not found`);
29
+ return;
30
+ }
31
+ const totalMarketcapData = resultData[resultPath];
32
+ if (!totalMarketcapData) {
33
+ logger.warn(`Data for "${resultPath}" not found`);
34
+ return;
35
+ }
36
+ const result = totalMarketcapData[requestPayload.market.toLowerCase()];
37
+ if (!result) {
38
+ logger.warn(`Data for "${requestPayload.market}" not found`);
39
+ return;
40
+ }
41
+ return {
42
+ params: requestPayload,
43
+ value: result,
44
+ };
45
+ };
46
+ exports.constructEntry = constructEntry;
47
+ //# sourceMappingURL=global-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global-utils.js","sourceRoot":"","sources":["../../../../../src/examples/coingecko/src/global-utils.ts"],"names":[],"mappings":";;;AACA,qCAAiE;AACjE,iDAAiD;AAGjD,MAAM,MAAM,GAAG,IAAA,mBAAU,EAAC,0BAA0B,CAAC,CAAA;AAExC,QAAA,eAAe,GAAoB;IAC9C,MAAM,EAAE;QACN,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC;QACxB,WAAW,EAAE,iCAAiC;QAC9C,QAAQ,EAAE,IAAI;KACf;CACF,CAAA;AA0BM,MAAM,sBAAsB,GAAG,CAAC,MAAe,EAA6B,EAAE;IACnF,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,yBAAgB,CAAC,CAAC,CAAC,6BAAoB;QACzD,GAAG,EAAE,SAAS;QACd,MAAM,EAAE,KAAK;QACb,MAAM,EAAE;YACN,gBAAgB,EAAE,MAAM;SACzB;KACF,CAAA;AACH,CAAC,CAAA;AATY,QAAA,sBAAsB,0BASlC;AAEM,MAAM,cAAc,GAAG,CAC5B,GAAwC,EACxC,cAAoC,EACpC,UAAwD,EAC/B,EAAE;IAC3B,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAA;IAChC,IAAI,CAAC,UAAU,EAAE;QACf,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;QAC7B,OAAM;KACP;IAED,MAAM,kBAAkB,GAAG,UAAU,CAAC,UAAU,CAAC,CAAA;IACjD,IAAI,CAAC,kBAAkB,EAAE;QACvB,MAAM,CAAC,IAAI,CAAC,aAAa,UAAU,aAAa,CAAC,CAAA;QACjD,OAAM;KACP;IAED,MAAM,MAAM,GAAG,kBAAkB,CAAC,cAAc,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAA;IACtE,IAAI,CAAC,MAAM,EAAE;QACX,MAAM,CAAC,IAAI,CAAC,aAAa,cAAc,CAAC,MAAM,aAAa,CAAC,CAAA;QAC5D,OAAM;KACP;IAED,OAAO;QACL,MAAM,EAAE,cAAc;QACtB,KAAK,EAAE,MAAM;KACd,CAAA;AACH,CAAC,CAAA;AA3BY,QAAA,cAAc,kBA2B1B"}
@@ -1,4 +1,4 @@
1
1
  /// <reference types="node" />
2
2
  import { Adapter } from '../../../../src/adapter';
3
3
  export declare const adapter: Adapter<import("../../../config").SettingsMap>;
4
- export declare const server: () => Promise<import("fastify").FastifyInstance<import("http").Server, import("http").IncomingMessage, import("http").ServerResponse, import("fastify").FastifyLoggerInstance> | undefined>;
4
+ export declare const server: () => Promise<import("fastify").FastifyInstance<import("http").Server, import("http").IncomingMessage, import("http").ServerResponse, import("fastify").FastifyBaseLogger, import("fastify").FastifyTypeProviderDefault> | undefined>;
@@ -16,3 +16,4 @@ exports.adapter = new adapter_1.Adapter({
16
16
  });
17
17
  const server = () => (0, __1.expose)(exports.adapter);
18
18
  exports.server = server;
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/examples/coingecko/src/index.ts"],"names":[],"mappings":";;;;;;AAAA,gCAAiC;AACjC,qDAAiD;AACjD,6EAA+C;AAC/C,yCAOmB;AAEN,QAAA,OAAO,GAAG,IAAI,iBAAO,CAAC;IACjC,eAAe,EAAE,QAAQ;IACzB,IAAI,EAAE,WAAW;IACjB,SAAS,EAAE,CAAC,iBAAM,EAAE,gBAAK,EAAE,0BAAe,EAAE,uBAAY,EAAE,oBAAS,EAAE,0BAAe,CAAC;IACrF,SAAS,EAAE,wBAAS,CAAC,WAAW,CAAC;CAClC,CAAC,CAAA;AAEK,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,IAAA,UAAM,EAAC,eAAO,CAAC,CAAA;AAA9B,QAAA,MAAM,UAAwB"}
@@ -51,3 +51,4 @@ exports.batchEndpoint = new adapter_1.AdapterEndpoint({
51
51
  transport: batchEndpointTransport,
52
52
  inputParameters,
53
53
  });
54
+ //# sourceMappingURL=batch-warming.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batch-warming.js","sourceRoot":"","sources":["../../../../src/examples/coingecko-old/batch-warming.ts"],"names":[],"mappings":";;;AACA,2CAA+D;AAC/D,kEAAsE;AAItE,MAAM,WAAW,GAAG,sCAAsC,CAAA;AAO1D,MAAM,eAAe,GAAoB;IACvC,MAAM,EAAE;QACN,WAAW,EACT,8IAA8I;QAChJ,QAAQ,EAAE,KAAK;KAChB;IACD,IAAI,EAAE;QACJ,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;QACzB,WAAW,EAAE,yDAAyD;QACtE,QAAQ,EAAE,IAAI;KACf;IACD,KAAK,EAAE;QACL,OAAO,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC;QACzB,WAAW,EAAE,0CAA0C;QACvD,QAAQ,EAAE,IAAI;KACf;CACF,CAAA;AAYD,MAAM,sBAAsB,GAAG,IAAI,qCAAqB,CAAC;IACvD,cAAc,EAAE,CACd,MAA8B,EAC9B,OAAuB,EACkB,EAAE;QAC3C,OAAO;YACL,OAAO,EAAE,WAAW;YACpB,GAAG,EAAE,eAAe;YACpB,MAAM,EAAE,KAAK;YACb,MAAM,EAAE;gBACN,GAAG,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;gBACtD,aAAa,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;gBACjE,gBAAgB,EAAE,OAAO,CAAC,aAAa,CAAC,OAAO;aAChD;SACF,CAAA;IACH,CAAC;IACD,aAAa,EAAE,CACb,MAA8B,EAC9B,GAAwC,EACA,EAAE;QAC1C,MAAM,OAAO,GAAG,EAA4C,CAAA;QAC5D,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YACpD,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBAClD,OAAO,CAAC,IAAI,CAAC;oBACX,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;oBACvB,KAAK,EAAE,KAAK;iBACb,CAAC,CAAA;aACH;SACF;QACD,OAAO,OAAO,CAAA;IAChB,CAAC;CACF,CAAC,CAAA;AAEW,QAAA,aAAa,GAAG,IAAI,yBAAe,CAAC;IAC/C,IAAI,EAAE,OAAO;IACb,SAAS,EAAE,sBAAsB;IACjC,eAAe;CAChB,CAAC,CAAA"}
@@ -9,3 +9,4 @@ exports.adapter = new adapter_1.Adapter({
9
9
  defaultEndpoint: 'batch',
10
10
  endpoints: [rest_1.restEndpoint, batch_warming_1.batchEndpoint],
11
11
  });
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/examples/coingecko-old/index.ts"],"names":[],"mappings":";;;AAAA,2CAAuC;AACvC,mDAA+C;AAC/C,iCAAqC;AAExB,QAAA,OAAO,GAAG,IAAI,iBAAO,CAAC;IACjC,IAAI,EAAE,WAAW;IACjB,eAAe,EAAE,OAAO;IACxB,SAAS,EAAE,CAAC,mBAAY,EAAE,6BAAa,CAAC;CACzC,CAAC,CAAA"}
@@ -40,7 +40,10 @@ const restEndpointTransport = new transports_1.RestTransport({
40
40
  };
41
41
  },
42
42
  options: {
43
- coalescing: true,
43
+ requestCoalescing: {
44
+ enabled: true,
45
+ entropyMax: 0,
46
+ },
44
47
  },
45
48
  });
46
49
  exports.restEndpoint = new adapter_1.AdapterEndpoint({
@@ -49,3 +52,4 @@ exports.restEndpoint = new adapter_1.AdapterEndpoint({
49
52
  transport: restEndpointTransport,
50
53
  inputParameters,
51
54
  });
55
+ //# sourceMappingURL=rest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rest.js","sourceRoot":"","sources":["../../../../src/examples/coingecko-old/rest.ts"],"names":[],"mappings":";;;AACA,2CAA+C;AAC/C,iDAAgD;AAIhD,MAAM,WAAW,GAAG,kCAAkC,CAAA;AAOtD,MAAM,eAAe,GAAoB;IACvC,MAAM,EAAE;QACN,WAAW,EACT,8IAA8I;QAChJ,QAAQ,EAAE,KAAK;KAChB;IACD,IAAI,EAAE;QACJ,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;QACzB,WAAW,EAAE,yDAAyD;QACtE,QAAQ,EAAE,IAAI;KACf;IACD,KAAK,EAAE;QACL,OAAO,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC;QACzB,WAAW,EAAE,0CAA0C;QACvD,QAAQ,EAAE,IAAI;KACf;CACF,CAAA;AAaD,MAAM,qBAAqB,GAAG,IAAI,0BAAa,CAAC;IAC9C,cAAc,EAAE,CACd,GAAyC,EACA,EAAE;QAC3C,OAAO;YACL,OAAO,EAAE,WAAW;YACpB,GAAG,EAAE,eAAe;YACpB,MAAM,EAAE,KAAK;YACb,MAAM,EAAE;gBACN,GAAG,EAAE,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI;gBACjC,aAAa,EAAE,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK;aAC7C;SACF,CAAA;IACH,CAAC;IACD,aAAa,EAAE,CACb,GAAyC,EACzC,GAAwC,EACD,EAAE;QACzC,OAAO;YACL,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,UAAU,EAAE,GAAG;YACf,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;SAChF,CAAA;IACH,CAAC;IACD,OAAO,EAAE;QACP,iBAAiB,EAAE;YACjB,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,CAAC;SACd;KACF;CACF,CAAC,CAAA;AAEW,QAAA,YAAY,GAAG,IAAI,yBAAe,CAAC;IAC9C,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,CAAC,KAAK,CAAC;IAChB,SAAS,EAAE,qBAAqB;IAChC,eAAe;CAChB,CAAC,CAAA"}
@@ -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,16 @@
1
+ import { AdapterEndpoint } from '../../adapter';
2
+ import { SSETransport } from '../../transports';
3
+ import { InputParameters } from '../../validation';
4
+ import { SettingsMap } from '../../config';
5
+ interface AdapterRequestParams {
6
+ base: string;
7
+ quote: string;
8
+ }
9
+ export declare const inputParameters: InputParameters;
10
+ declare type Price = number;
11
+ declare type Quantity = number;
12
+ export declare type Entry = ['BUY' | 'SELL' | '', Price, Quantity];
13
+ export declare const sseTransport: SSETransport<AdapterRequestParams, undefined, undefined, SettingsMap>;
14
+ export declare const calculateQWAPprice: (entries: Entry[]) => number | undefined;
15
+ export declare const sseEndpoint: AdapterEndpoint<AdapterRequestParams, unknown, SettingsMap>;
16
+ export {};
@@ -0,0 +1,142 @@
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
+ exports.inputParameters = {
12
+ base: {
13
+ aliases: ['from', 'coin'],
14
+ description: 'The symbol of the currency to query',
15
+ required: true,
16
+ },
17
+ quote: {
18
+ aliases: ['to', 'market'],
19
+ description: 'The symbol of the currency to convert to',
20
+ required: true,
21
+ },
22
+ };
23
+ const logger = (0, util_1.makeLogger)('GenesisSSETransport');
24
+ exports.sseTransport = new transports_1.SSETransport({
25
+ prepareSSEConnectionConfig: (params, context) => {
26
+ const payload = 'null';
27
+ const url = prepareRequestUrl(context.adapterConfig, 'sseStream', payload);
28
+ logger.debug('SSE Connection URL: ', url);
29
+ return { url };
30
+ },
31
+ prepareKeepAliveRequest: (context) => {
32
+ const payload = 'null';
33
+ const url = prepareRequestUrl(context.adapterConfig, 'ping', payload);
34
+ const axiosRequestConfig = {
35
+ method: 'POST',
36
+ url,
37
+ };
38
+ logger.debug('Keep Alive URL: ', url);
39
+ return axiosRequestConfig;
40
+ },
41
+ prepareSubscriptionRequest: (params, context) => {
42
+ const requestedSymbols = params.map((p) => {
43
+ return `${p.base.toUpperCase()}-${p.quote.toUpperCase()}`;
44
+ });
45
+ const payloadObj = {
46
+ Action: 'SUBSCRIBE',
47
+ Symbols: requestedSymbols,
48
+ };
49
+ const url = prepareRequestUrl(context.adapterConfig, 'marketDataRequest', JSON.stringify(payloadObj));
50
+ logger.debug('Subscribe URL: ', url);
51
+ const axiosConfig = {
52
+ method: 'POST',
53
+ url,
54
+ };
55
+ return axiosConfig;
56
+ },
57
+ prepareUnsubscriptionRequest: (params, context) => {
58
+ const requestedSymbols = params.map((p) => {
59
+ return `${p.base.toUpperCase()}-${p.quote.toUpperCase()}`;
60
+ });
61
+ const payloadObj = {
62
+ Action: 'UNSUBSCRIBE',
63
+ Symbols: requestedSymbols,
64
+ };
65
+ const url = prepareRequestUrl(context.adapterConfig, 'marketDataRequest', JSON.stringify(payloadObj));
66
+ logger.debug('Unsubscribe URL: ', url);
67
+ const axiosConfig = {
68
+ method: 'POST',
69
+ url,
70
+ };
71
+ return axiosConfig;
72
+ },
73
+ eventListeners: [
74
+ {
75
+ type: 'L2Update',
76
+ parseResponse: (evt) => {
77
+ let providerData = {};
78
+ try {
79
+ // To parse, add the formatting to interperate as a JSON array.
80
+ providerData = JSON.parse(evt.data);
81
+ }
82
+ catch (error) {
83
+ logger.error(error, `Error parsing JSON from data provider`);
84
+ }
85
+ const entries = providerData.Changes.map((e) => e.Entry);
86
+ const value = (0, exports.calculateQWAPprice)(entries);
87
+ if (value) {
88
+ const [base, quote] = providerData.Symbol.split('-');
89
+ return [{
90
+ params: { base, quote },
91
+ value
92
+ }];
93
+ }
94
+ return [];
95
+ },
96
+ }
97
+ ]
98
+ });
99
+ const calculateQWAPprice = (entries) => {
100
+ const meanPriceByQuantity = {};
101
+ // Group orders by quantity
102
+ let totalQuantity = 0;
103
+ entries.forEach((e) => {
104
+ if (e[2] === 0) {
105
+ return;
106
+ }
107
+ if (!meanPriceByQuantity[e[2].toString()]) {
108
+ meanPriceByQuantity[e[2].toString()] = [e[1], NaN];
109
+ }
110
+ else {
111
+ const meanPrice = (e[1] + meanPriceByQuantity[e[2].toString()][0]) / 2;
112
+ meanPriceByQuantity[e[2].toString()] = [meanPrice, meanPrice * e[2]];
113
+ totalQuantity += e[2];
114
+ }
115
+ });
116
+ if (Object.keys(meanPriceByQuantity).length === 0) {
117
+ return;
118
+ }
119
+ const priceTimesQuantitySum = Object.values(meanPriceByQuantity)
120
+ .reduce((e1, e2) => [NaN, e1[1] + e2[1]])[1];
121
+ // Return a sum of all the products divided by the total quantity
122
+ return priceTimesQuantitySum / totalQuantity;
123
+ };
124
+ exports.calculateQWAPprice = calculateQWAPprice;
125
+ const prepareRequestUrl = (config, endpoint, payload) => {
126
+ const apiKey = config.API_KEY;
127
+ if (!apiKey) {
128
+ logger.error(new Error('API_KEY not set'), 'Set the API_KEY configuration variable to a valid Genesis API key');
129
+ }
130
+ const apiSecret = config.API_SECRET;
131
+ const nonce = (BigInt(Date.now()) * BigInt('1000000')).toString();
132
+ const hash = crypto_1.default.createHmac('sha384', Buffer.from(apiSecret ?? ''));
133
+ const data = hash.update(Buffer.from(apiKey + payload + nonce));
134
+ const sig = data.digest().toString('hex');
135
+ return `https://trading.uat.genesistrading.com/${endpoint}?APIKEY=${apiKey}&PAYLOAD=${payload}&NONCE=${nonce}&SIGNATURE=${sig}`;
136
+ };
137
+ exports.sseEndpoint = new adapter_1.AdapterEndpoint({
138
+ name: 'sseStream',
139
+ transport: exports.sseTransport,
140
+ inputParameters: exports.inputParameters,
141
+ });
142
+ //# 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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"}
@@ -13,3 +13,4 @@ exports.customSettings = {
13
13
  required: true,
14
14
  },
15
15
  };
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/examples/ncfx/config/index.ts"],"names":[],"mappings":";;;AAAa,QAAA,cAAc,GAAG;IAC5B,QAAQ,EAAE;QACR,WAAW,EAAE,2BAA2B;QACxC,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,IAAI;KACf;IACD,QAAQ,EAAE;QACR,WAAW,EAAE,2BAA2B;QACxC,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,IAAI;KACf;CACO,CAAA"}
@@ -9,3 +9,4 @@ exports.adapter = new adapter_1.Adapter({
9
9
  endpoints: [websocket_1.webSocketEndpoint],
10
10
  customSettings: config_1.customSettings,
11
11
  });
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/examples/ncfx/index.ts"],"names":[],"mappings":";;;AAAA,2CAAuC;AACvC,qCAAyC;AACzC,2CAA+C;AAElC,QAAA,OAAO,GAAG,IAAI,iBAAO,CAAC;IACjC,IAAI,EAAE,MAAM;IACZ,SAAS,EAAE,CAAC,6BAAiB,CAAC;IAC9B,cAAc,EAAd,uBAAc;CACf,CAAC,CAAA"}
@@ -71,3 +71,4 @@ exports.webSocketEndpoint = new adapter_1.AdapterEndpoint({
71
71
  transport: exports.websocketTransport,
72
72
  inputParameters: exports.inputParameters,
73
73
  });
74
+ //# sourceMappingURL=websocket.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../../../src/examples/ncfx/websocket.ts"],"names":[],"mappings":";;;AACA,2CAA+D;AAC/D,0DAA+D;AAC/D,qCAAuD;AAS1C,QAAA,eAAe,GAAoB;IAC9C,IAAI,EAAE;QACJ,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;QACzB,WAAW,EAAE,qCAAqC;QAClD,QAAQ,EAAE,IAAI;KACf;IACD,KAAK,EAAE;QACL,OAAO,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC;QACzB,WAAW,EAAE,0CAA0C;QACvD,QAAQ,EAAE,IAAI;KACf;CACF,CAAA;AAiBD,MAAM,MAAM,GAAG,IAAA,iBAAU,EAAC,wBAAwB,CAAC,CAAA;AAEtC,QAAA,kBAAkB,GAAG,IAAI,8BAAkB,CAAC;IACvD,GAAG,EAAE,uCAAuC;IAC5C,QAAQ,EAAE;QACR,IAAI,CAAC,UAAqB,EAAE,OAA8C;YACxE,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,EAAE,UAAU,CAAC,mBAAmB,CAAC,EAAE;wBACnD,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;gBACF,qBAAqB;gBACrB,UAAU,CAAC,IAAI,CACb,IAAI,CAAC,SAAS,CAAC;oBACb,OAAO,EAAE,OAAO;oBAChB,QAAQ,EAAE,OAAO,CAAC,aAAa,CAAC,QAAQ;oBACxC,QAAQ,EAAE,OAAO,CAAC,aAAa,CAAC,QAAQ;iBACzC,CAAC,CACH,CAAA;YACH,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,OAAO,CAAC,OAA0B;YAChC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBAC3B,MAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAA;gBACjD,OAAO,EAAE,CAAA;aACV;YACD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACvB,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;gBAC/C,OAAO;oBACL,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;oBACvB,KAAK,EAAE,CAAC,CAAC,KAAK;iBACf,CAAA;YACH,CAAC,CAAC,CAAA;QACJ,CAAC;KACF;IACD,QAAQ,EAAE;QACR,gBAAgB,EAAE,CAAC,MAA4B,EAAE,EAAE,CAAC,CAAC;YACnD,OAAO,EAAE,WAAW;YACpB,GAAG,EAAE,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE;SACtC,CAAC;QACF,kBAAkB,EAAE,CAAC,MAA4B,EAAE,EAAE,CAAC,CAAC;YACrD,OAAO,EAAE,aAAa;YACtB,GAAG,EAAE,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE;SACtC,CAAC;KACH;CACF,CAAC,CAAA;AAEW,QAAA,iBAAiB,GAAG,IAAI,yBAAe,CAAC;IACnD,IAAI,EAAE,WAAW;IACjB,SAAS,EAAE,0BAAkB;IAC7B,eAAe,EAAf,uBAAe;CAChB,CAAC,CAAA"}
package/index.js CHANGED
@@ -142,3 +142,4 @@ function buildSmokeEndpoint(app, config) {
142
142
  return res.status(200).send('OK');
143
143
  });
144
144
  }
145
+ //# sourceMappingURL=index.js.map
package/index.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -23,3 +23,4 @@ var HttpRequestType;
23
23
  exports.MAX_FEED_ID_LENGTH = 300;
24
24
  // We should tune these as we collect data, this is the default bucket distribution that prom comes with
25
25
  exports.requestDurationBuckets = [0.005, 0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 1, 2.5, 5, 10];
26
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/metrics/constants.ts"],"names":[],"mappings":";;;AAAA,IAAY,eAcX;AAdD,WAAY,eAAe;IACzB,yCAAsB,CAAA;IACtB,wDAAqC,CAAA;IACrC,iDAA8B,CAAA;IAC9B,6CAA0B,CAAA;IAC1B,sDAAmC,CAAA;IACnC,yCAAyC;IACzC,kCAAkC;IAClC,iDAA8B,CAAA;IAC9B,iDAA8B,CAAA;IAC9B,uDAAoC,CAAA;IACpC,0CAA0C;IAC1C,8CAA8C;IAC9C,+CAA4B,CAAA;AAC9B,CAAC,EAdW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAc1B;AAED;;GAEG;AACU,QAAA,kBAAkB,GAAG,GAAG,CAAA;AAErC,wGAAwG;AAC3F,QAAA,sBAAsB,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA"}
@@ -13,3 +13,5 @@ export declare const setupMetrics: (name: string, config: AdapterConfig) => void
13
13
  export declare const buildMetricsMiddleware: (req: AdapterRequest, res: FastifyReply, done: HookHandlerDoneFunction) => void;
14
14
  export declare const httpRequestsTotal: client.Counter<"type" | "method" | "feed_id" | "status_code" | "provider_status_code" | "retry" | "is_cache_warming">;
15
15
  export declare const httpRequestDurationSeconds: client.Histogram<string>;
16
+ export declare const bgExecuteTotal: client.Counter<"endpoint">;
17
+ export declare const bgExecuteDurationSeconds: client.Gauge<"endpoint">;
package/metrics/index.js CHANGED
@@ -26,7 +26,7 @@ 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.httpRequestDurationSeconds = exports.httpRequestsTotal = exports.buildMetricsMiddleware = exports.setupMetrics = exports.setupMetricsServer = void 0;
29
+ exports.bgExecuteDurationSeconds = exports.bgExecuteTotal = exports.httpRequestDurationSeconds = exports.httpRequestsTotal = exports.buildMetricsMiddleware = exports.setupMetrics = exports.setupMetricsServer = void 0;
30
30
  const client = __importStar(require("prom-client"));
31
31
  const constants_1 = require("./constants");
32
32
  const util_1 = require("../util");
@@ -124,3 +124,15 @@ exports.httpRequestDurationSeconds = new client.Histogram({
124
124
  help: 'A histogram bucket of the distribution of http request durations',
125
125
  buckets: constants_1.requestDurationBuckets,
126
126
  });
127
+ // V3 specific metrics
128
+ exports.bgExecuteTotal = new client.Counter({
129
+ name: 'bg_execute_total',
130
+ help: 'The number of background executes performed per endpoint',
131
+ labelNames: ['endpoint'],
132
+ });
133
+ exports.bgExecuteDurationSeconds = new client.Gauge({
134
+ name: 'bg_execute_duration_seconds',
135
+ help: 'A histogram bucket of the distribution of background execute durations',
136
+ labelNames: ['endpoint'],
137
+ });
138
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/metrics/index.ts"],"names":[],"mappings":"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"}
package/metrics/util.js CHANGED
@@ -7,3 +7,4 @@ const getMetricsMeta = ({ adapterEndpoint, adapterConfig, }, data) => {
7
7
  return { feedId };
8
8
  };
9
9
  exports.getMetricsMeta = getMetricsMeta;
10
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/metrics/util.ts"],"names":[],"mappings":";;;AAEA,oCAA0C;AAGnC,MAAM,cAAc,GAAG,CAC5B,EACE,eAAe,EACf,aAAa,GAId,EACD,IAAwB,EACJ,EAAE;IACtB,MAAM,MAAM,GAAG,IAAA,uBAAe,EAAC,EAAE,eAAe,EAAE,aAAa,EAAE,EAAE,IAAI,CAAC,CAAA;IACxE,OAAO,EAAE,MAAM,EAAE,CAAA;AACnB,CAAC,CAAA;AAZY,QAAA,cAAc,kBAY1B"}
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@chainlink/external-adapter-framework",
3
- "version": "0.0.46",
3
+ "version": "0.0.55",
4
4
  "main": "dist/index.js",
5
5
  "license": "MIT",
6
6
  "dependencies": {
7
- "ajv": "^8.11.0",
8
7
  "axios": "^0.27.2",
8
+ "eventsource": "^2.0.2",
9
9
  "fastify": "^4.5.3",
10
10
  "ioredis": "^5.0.4",
11
11
  "pino": "^8.5.0",
@@ -26,8 +26,9 @@
26
26
  },
27
27
  "devDependencies": {
28
28
  "@sinonjs/fake-timers": "^9.1.2",
29
- "@types/jest": "^29.0.3",
30
- "@types/node": "^18.7.18",
29
+ "@types/eventsource": "^1.1.9",
30
+ "@types/jest": "^29.0.0",
31
+ "@types/node": "^18.6.5",
31
32
  "@types/sinonjs__fake-timers": "^8.1.2",
32
33
  "@types/supertest": "^2.0.12",
33
34
  "@types/ws": "^8.5.3",
@@ -41,11 +42,12 @@
41
42
  "eslint-plugin-tsdoc": "^0.2.16",
42
43
  "jest": "^29.0.3",
43
44
  "mock-socket": "^9.1.3",
45
+ "mocksse": "^1.0.4",
44
46
  "nock": "^13.2.4",
45
47
  "pino-pretty": "^9.1.0",
46
48
  "prettier": "^2.6.1",
47
49
  "supertest": "^6.2.4",
48
- "ts-jest": "^28.0.7",
50
+ "ts-jest": "^29.0.0",
49
51
  "ts-node-dev": "2.0.0",
50
52
  "typedoc": "^0.22.15"
51
53
  },
@@ -12,9 +12,6 @@ class FixedFrequencyRateLimiter {
12
12
  initialize(endpoints, limits) {
13
13
  // Translate the hourly limit into reqs per minute
14
14
  let sharedMsBetweenRequests = 1000 / (0, __1.consolidateTierLimits)(limits);
15
- console.log(limits);
16
- console.log(sharedMsBetweenRequests);
17
- console.log((0, __1.consolidateTierLimits)(limits));
18
15
  // If there is no limit set, we use some reasonable number
19
16
  if (!limits?.rateLimit1h && !limits?.rateLimit1m && !limits?.rateLimit1s) {
20
17
  // 5s period for all seems good
@@ -36,3 +33,4 @@ class FixedFrequencyRateLimiter {
36
33
  }
37
34
  }
38
35
  exports.FixedFrequencyRateLimiter = FixedFrequencyRateLimiter;
36
+ //# sourceMappingURL=fixed-frequency.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fixed-frequency.js","sourceRoot":"","sources":["../../../../src/rate-limiting/background/fixed-frequency.ts"],"names":[],"mappings":";;;AAAA,0BAA8F;AAG9F,qCAAuC;AAEvC,MAAM,MAAM,GAAG,IAAA,iBAAU,EAAC,2BAA2B,CAAC,CAAA;AACzC,QAAA,kCAAkC,GAAG,IAAI,CAAA;AAEtD,MAAa,yBAAyB;IAAtC;QACE,yBAAoB,GAEhB,EAAE,CAAA;IAqCR,CAAC;IAnCC,UAAU,CACR,SAA4D,EAC5D,MAA6B;QAE7B,kDAAkD;QAClD,IAAI,uBAAuB,GAAG,IAAI,GAAG,IAAA,yBAAqB,EAAC,MAAM,CAAC,CAAA;QAElE,0DAA0D;QAC1D,IAAI,CAAC,MAAM,EAAE,WAAW,IAAI,CAAC,MAAM,EAAE,WAAW,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE;YACxE,+BAA+B;YAC/B,uBAAuB,GAAG,0CAAkC,CAAA;SAC7D;QAED,MAAM,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAA;QACzD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;YAChC,IAAI,QAAQ,CAAC,YAAY,EAAE,oBAAoB,IAAI,IAAI,EAAE;gBACvD,MAAM,IAAI,KAAK,CAAC,uCAAuC,QAAQ,CAAC,IAAI,WAAW,CAAC,CAAA;aACjF;YAED,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACtC,CAAC,uBAAuB,GAAG,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CAAC,GAAG,GAAG,CAAA;YAE/E,MAAM,CAAC,KAAK,CACV,aAAa,QAAQ,CAAC,IAAI,MACxB,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAC7C,oBAAoB,CACrB,CAAA;SACF;QAED,OAAO,IAAI,CAAA;IACb,CAAC;IAED,oBAAoB,CAAC,YAAoB;QACvC,OAAO,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAA;IAChD,CAAC;CACF;AAxCD,8DAwCC"}
@@ -53,3 +53,4 @@ export declare const consolidateTierLimits: (limits?: AdapterRateLimitTier | und
53
53
  * @returns the specified API tier, or a default one if none are specified
54
54
  */
55
55
  export declare const getRateLimitingTier: (config: AdapterConfig, tiers?: Record<string, AdapterRateLimitTier> | undefined) => AdapterRateLimitTier | undefined;
56
+ export declare const buildRateLimitTiersFromConfig: (config: AdapterConfig) => AdapterRateLimitTier | undefined;
@@ -14,7 +14,7 @@ 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.getRateLimitingTier = exports.consolidateTierLimits = void 0;
17
+ exports.buildRateLimitTiersFromConfig = exports.getRateLimitingTier = exports.consolidateTierLimits = void 0;
18
18
  __exportStar(require("./request/simple-counting"), exports);
19
19
  __exportStar(require("./background/fixed-frequency"), exports);
20
20
  /**
@@ -42,7 +42,7 @@ const getRateLimitingTier = (config, tiers) => {
42
42
  if (config.RATE_LIMIT_CAPACITY ||
43
43
  config.RATE_LIMIT_CAPACITY_MINUTE ||
44
44
  config.RATE_LIMIT_CAPACITY_SECOND) {
45
- return buildRateLimitTiersFromConfig(config);
45
+ return (0, exports.buildRateLimitTiersFromConfig)(config);
46
46
  }
47
47
  if (!tiers) {
48
48
  return;
@@ -82,3 +82,5 @@ const buildRateLimitTiersFromConfig = (config) => {
82
82
  rateLimit1m,
83
83
  };
84
84
  };
85
+ exports.buildRateLimitTiersFromConfig = buildRateLimitTiersFromConfig;
86
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/rate-limiting/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAGA,4DAAyC;AACzC,+DAA4C;AA4C5C;;;;;;GAMG;AACI,MAAM,qBAAqB,GAAG,CAAC,MAA6B,EAAE,EAAE;IACrE,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,WAAW,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;IAClE,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,WAAW,IAAI,QAAQ,CAAC,GAAG,EAAE,CAAA;IAC7D,MAAM,cAAc,GAAG,MAAM,EAAE,WAAW,IAAI,QAAQ,CAAA;IACtD,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,cAAc,EAAE,cAAc,CAAC,CAAA;AAC/D,CAAC,CAAA;AALY,QAAA,qBAAqB,yBAKjC;AAED;;;;;;GAMG;AACI,MAAM,mBAAmB,GAAG,CACjC,MAAqB,EACrB,KAA4C,EACV,EAAE;IACpC,IACE,MAAM,CAAC,mBAAmB;QAC1B,MAAM,CAAC,0BAA0B;QACjC,MAAM,CAAC,0BAA0B,EACjC;QACA,OAAO,IAAA,qCAA6B,EAAC,MAAM,CAAC,CAAA;KAC7C;IACD,IAAI,CAAC,KAAK,EAAE;QACV,OAAM;KACP;IAED,2DAA2D;IAC3D,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;QACrC,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAA;KACnE;IAED,8DAA8D;IAC9D,MAAM,YAAY,GAAG,MAAM,CAAC,mBAAmB,CAAA;IAC/C,IAAI,YAAY,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE;QACxC,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;aACxC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;aACpB,IAAI,CAAC,IAAI,CAAC,CAAA;QAEb,MAAM,IAAI,KAAK,CACb,iCAAiC,YAAY,iCAAiC,gBAAgB,GAAG,CAClG,CAAA;KACF;IAED,IAAI,CAAC,YAAY,EAAE;QACjB,8CAA8C;QAC9C,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAC3C,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,IAAA,6BAAqB,EAAC,EAAE,CAAC,GAAG,IAAA,6BAAqB,EAAC,EAAE,CAAC,CAClE,CAAA;QAED,OAAO,WAAW,CAAC,CAAC,CAAC,CAAA;KACtB;IAED,OAAO,KAAK,CAAC,YAAY,CAAC,CAAA;AAC5B,CAAC,CAAA;AA1CY,QAAA,mBAAmB,uBA0C/B;AAED,0EAA0E;AACnE,MAAM,6BAA6B,GAAG,CAC3C,MAAqB,EACa,EAAE;IACpC,MAAM,WAAW,GAAG,MAAM,CAAC,0BAA0B,CAAA;IACrD,IAAI,WAAW,CAAA;IACf,IAAI,MAAM,CAAC,0BAA0B,EAAE;QACrC,WAAW,GAAG,MAAM,CAAC,0BAA0B,CAAA;KAChD;SAAM,IAAI,MAAM,CAAC,mBAAmB,EAAE;QACrC,WAAW,GAAG,MAAM,CAAC,mBAAmB,CAAA;KACzC;IACD,OAAO;QACL,WAAW;QACX,WAAW;KACZ,CAAA;AACH,CAAC,CAAA;AAdY,QAAA,6BAA6B,iCAczC"}