@chainlink/external-adapter-framework 0.3.7 → 0.4.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 (210) hide show
  1. package/README.md +102 -0
  2. package/package.json +42 -50
  3. package/adapter/basic.d.ts +0 -86
  4. package/adapter/basic.js +0 -323
  5. package/adapter/basic.js.map +0 -1
  6. package/adapter/endpoint.d.ts +0 -17
  7. package/adapter/endpoint.js +0 -19
  8. package/adapter/endpoint.js.map +0 -1
  9. package/adapter/index.d.ts +0 -4
  10. package/adapter/index.js +0 -21
  11. package/adapter/index.js.map +0 -1
  12. package/adapter/price.d.ts +0 -75
  13. package/adapter/price.js +0 -88
  14. package/adapter/price.js.map +0 -1
  15. package/adapter/types.d.ts +0 -118
  16. package/adapter/types.js +0 -3
  17. package/adapter/types.js.map +0 -1
  18. package/background-executor.d.ts +0 -9
  19. package/background-executor.js +0 -97
  20. package/background-executor.js.map +0 -1
  21. package/cache/factory.d.ts +0 -6
  22. package/cache/factory.js +0 -24
  23. package/cache/factory.js.map +0 -1
  24. package/cache/index.d.ts +0 -87
  25. package/cache/index.js +0 -133
  26. package/cache/index.js.map +0 -1
  27. package/cache/local.d.ts +0 -23
  28. package/cache/local.js +0 -84
  29. package/cache/local.js.map +0 -1
  30. package/cache/metrics.d.ts +0 -27
  31. package/cache/metrics.js +0 -121
  32. package/cache/metrics.js.map +0 -1
  33. package/cache/redis.d.ts +0 -16
  34. package/cache/redis.js +0 -101
  35. package/cache/redis.js.map +0 -1
  36. package/config/index.d.ts +0 -297
  37. package/config/index.js +0 -353
  38. package/config/index.js.map +0 -1
  39. package/config/provider-limits.d.ts +0 -27
  40. package/config/provider-limits.js +0 -75
  41. package/config/provider-limits.js.map +0 -1
  42. package/examples/bank-frick/accounts.d.ts +0 -52
  43. package/examples/bank-frick/accounts.js +0 -190
  44. package/examples/bank-frick/accounts.js.map +0 -1
  45. package/examples/bank-frick/config/index.d.ts +0 -17
  46. package/examples/bank-frick/config/index.js +0 -55
  47. package/examples/bank-frick/config/index.js.map +0 -1
  48. package/examples/bank-frick/index.d.ts +0 -16
  49. package/examples/bank-frick/index.js +0 -16
  50. package/examples/bank-frick/index.js.map +0 -1
  51. package/examples/bank-frick/util.d.ts +0 -4
  52. package/examples/bank-frick/util.js +0 -40
  53. package/examples/bank-frick/util.js.map +0 -1
  54. package/examples/coingecko/src/config/index.d.ts +0 -2
  55. package/examples/coingecko/src/config/index.js +0 -6
  56. package/examples/coingecko/src/config/index.js.map +0 -1
  57. package/examples/coingecko/src/config/overrides.json +0 -10825
  58. package/examples/coingecko/src/crypto-utils.d.ts +0 -48
  59. package/examples/coingecko/src/crypto-utils.js +0 -60
  60. package/examples/coingecko/src/crypto-utils.js.map +0 -1
  61. package/examples/coingecko/src/endpoint/coins.d.ts +0 -9
  62. package/examples/coingecko/src/endpoint/coins.js +0 -37
  63. package/examples/coingecko/src/endpoint/coins.js.map +0 -1
  64. package/examples/coingecko/src/endpoint/crypto-marketcap.d.ts +0 -3
  65. package/examples/coingecko/src/endpoint/crypto-marketcap.js +0 -30
  66. package/examples/coingecko/src/endpoint/crypto-marketcap.js.map +0 -1
  67. package/examples/coingecko/src/endpoint/crypto-volume.d.ts +0 -3
  68. package/examples/coingecko/src/endpoint/crypto-volume.js +0 -30
  69. package/examples/coingecko/src/endpoint/crypto-volume.js.map +0 -1
  70. package/examples/coingecko/src/endpoint/crypto.d.ts +0 -2
  71. package/examples/coingecko/src/endpoint/crypto.js +0 -28
  72. package/examples/coingecko/src/endpoint/crypto.js.map +0 -1
  73. package/examples/coingecko/src/endpoint/dominance.d.ts +0 -3
  74. package/examples/coingecko/src/endpoint/dominance.js +0 -28
  75. package/examples/coingecko/src/endpoint/dominance.js.map +0 -1
  76. package/examples/coingecko/src/endpoint/global-marketcap.d.ts +0 -3
  77. package/examples/coingecko/src/endpoint/global-marketcap.js +0 -28
  78. package/examples/coingecko/src/endpoint/global-marketcap.js.map +0 -1
  79. package/examples/coingecko/src/endpoint/index.d.ts +0 -6
  80. package/examples/coingecko/src/endpoint/index.js +0 -16
  81. package/examples/coingecko/src/endpoint/index.js.map +0 -1
  82. package/examples/coingecko/src/global-utils.d.ts +0 -27
  83. package/examples/coingecko/src/global-utils.js +0 -47
  84. package/examples/coingecko/src/global-utils.js.map +0 -1
  85. package/examples/coingecko/src/index.d.ts +0 -4
  86. package/examples/coingecko/src/index.js +0 -19
  87. package/examples/coingecko/src/index.js.map +0 -1
  88. package/examples/coingecko-old/batch-warming.d.ts +0 -7
  89. package/examples/coingecko-old/batch-warming.js +0 -54
  90. package/examples/coingecko-old/batch-warming.js.map +0 -1
  91. package/examples/coingecko-old/index.d.ts +0 -2
  92. package/examples/coingecko-old/index.js +0 -12
  93. package/examples/coingecko-old/index.js.map +0 -1
  94. package/examples/coingecko-old/rest.d.ts +0 -12
  95. package/examples/coingecko-old/rest.js +0 -55
  96. package/examples/coingecko-old/rest.js.map +0 -1
  97. package/examples/cryptocompare/src/config/index.d.ts +0 -2
  98. package/examples/cryptocompare/src/config/index.js +0 -6
  99. package/examples/cryptocompare/src/config/index.js.map +0 -1
  100. package/examples/cryptocompare/src/endpoints/crypto.d.ts +0 -28
  101. package/examples/cryptocompare/src/endpoints/crypto.js +0 -54
  102. package/examples/cryptocompare/src/endpoints/crypto.js.map +0 -1
  103. package/examples/cryptocompare/src/endpoints/index.d.ts +0 -1
  104. package/examples/cryptocompare/src/endpoints/index.js +0 -6
  105. package/examples/cryptocompare/src/endpoints/index.js.map +0 -1
  106. package/examples/cryptocompare/src/index.d.ts +0 -4
  107. package/examples/cryptocompare/src/index.js +0 -14
  108. package/examples/cryptocompare/src/index.js.map +0 -1
  109. package/examples/genesis/config/index.d.ts +0 -7
  110. package/examples/genesis/config/index.js +0 -11
  111. package/examples/genesis/config/index.js.map +0 -1
  112. package/examples/genesis/index.d.ts +0 -2
  113. package/examples/genesis/index.js +0 -13
  114. package/examples/genesis/index.js.map +0 -1
  115. package/examples/genesis/sseStream.d.ts +0 -16
  116. package/examples/genesis/sseStream.js +0 -149
  117. package/examples/genesis/sseStream.js.map +0 -1
  118. package/examples/ncfx/config/index.d.ts +0 -12
  119. package/examples/ncfx/config/index.js +0 -16
  120. package/examples/ncfx/config/index.js.map +0 -1
  121. package/examples/ncfx/index.d.ts +0 -13
  122. package/examples/ncfx/index.js +0 -12
  123. package/examples/ncfx/index.js.map +0 -1
  124. package/examples/ncfx/websocket.d.ts +0 -47
  125. package/examples/ncfx/websocket.js +0 -74
  126. package/examples/ncfx/websocket.js.map +0 -1
  127. package/index.d.ts +0 -17
  128. package/index.js +0 -174
  129. package/index.js.map +0 -1
  130. package/metrics/constants.d.ts +0 -16
  131. package/metrics/constants.js +0 -26
  132. package/metrics/constants.js.map +0 -1
  133. package/metrics/index.d.ts +0 -19
  134. package/metrics/index.js +0 -139
  135. package/metrics/index.js.map +0 -1
  136. package/metrics/util.d.ts +0 -7
  137. package/metrics/util.js +0 -10
  138. package/metrics/util.js.map +0 -1
  139. package/rate-limiting/background/fixed-frequency.d.ts +0 -11
  140. package/rate-limiting/background/fixed-frequency.js +0 -36
  141. package/rate-limiting/background/fixed-frequency.js.map +0 -1
  142. package/rate-limiting/index.d.ts +0 -56
  143. package/rate-limiting/index.js +0 -86
  144. package/rate-limiting/index.js.map +0 -1
  145. package/rate-limiting/metrics.d.ts +0 -3
  146. package/rate-limiting/metrics.js +0 -45
  147. package/rate-limiting/metrics.js.map +0 -1
  148. package/rate-limiting/request/simple-counting.d.ts +0 -21
  149. package/rate-limiting/request/simple-counting.js +0 -63
  150. package/rate-limiting/request/simple-counting.js.map +0 -1
  151. package/transports/batch-warming.d.ts +0 -35
  152. package/transports/batch-warming.js +0 -138
  153. package/transports/batch-warming.js.map +0 -1
  154. package/transports/index.d.ts +0 -87
  155. package/transports/index.js +0 -56
  156. package/transports/index.js.map +0 -1
  157. package/transports/metrics.d.ts +0 -25
  158. package/transports/metrics.js +0 -122
  159. package/transports/metrics.js.map +0 -1
  160. package/transports/rest.d.ts +0 -51
  161. package/transports/rest.js +0 -133
  162. package/transports/rest.js.map +0 -1
  163. package/transports/routing.d.ts +0 -23
  164. package/transports/routing.js +0 -52
  165. package/transports/routing.js.map +0 -1
  166. package/transports/sse.d.ts +0 -40
  167. package/transports/sse.js +0 -92
  168. package/transports/sse.js.map +0 -1
  169. package/transports/util.d.ts +0 -9
  170. package/transports/util.js +0 -87
  171. package/transports/util.js.map +0 -1
  172. package/transports/websocket.d.ts +0 -81
  173. package/transports/websocket.js +0 -165
  174. package/transports/websocket.js.map +0 -1
  175. package/util/censor/censor-list.d.ts +0 -9
  176. package/util/censor/censor-list.js +0 -13
  177. package/util/censor/censor-list.js.map +0 -1
  178. package/util/index.d.ts +0 -13
  179. package/util/index.js +0 -38
  180. package/util/index.js.map +0 -1
  181. package/util/logger.d.ts +0 -49
  182. package/util/logger.js +0 -123
  183. package/util/logger.js.map +0 -1
  184. package/util/request.d.ts +0 -102
  185. package/util/request.js +0 -3
  186. package/util/request.js.map +0 -1
  187. package/util/subscription-set/expiring-sorted-set.d.ts +0 -21
  188. package/util/subscription-set/expiring-sorted-set.js +0 -36
  189. package/util/subscription-set/expiring-sorted-set.js.map +0 -1
  190. package/util/subscription-set/redis-sorted-set.d.ts +0 -9
  191. package/util/subscription-set/redis-sorted-set.js +0 -29
  192. package/util/subscription-set/redis-sorted-set.js.map +0 -1
  193. package/util/subscription-set/subscription-set.d.ts +0 -19
  194. package/util/subscription-set/subscription-set.js +0 -28
  195. package/util/subscription-set/subscription-set.js.map +0 -1
  196. package/util/test-payload-loader.d.ts +0 -26
  197. package/util/test-payload-loader.js +0 -85
  198. package/util/test-payload-loader.js.map +0 -1
  199. package/validation/error.d.ts +0 -48
  200. package/validation/error.js +0 -78
  201. package/validation/error.js.map +0 -1
  202. package/validation/index.d.ts +0 -5
  203. package/validation/index.js +0 -91
  204. package/validation/index.js.map +0 -1
  205. package/validation/input-params.d.ts +0 -14
  206. package/validation/input-params.js +0 -3
  207. package/validation/input-params.js.map +0 -1
  208. package/validation/input-validator.d.ts +0 -16
  209. package/validation/input-validator.js +0 -123
  210. package/validation/input-validator.js.map +0 -1
@@ -1,55 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.restEndpoint = void 0;
4
- const adapter_1 = require("../../adapter");
5
- const transports_1 = require("../../transports");
6
- const DEFAULT_URL = 'https://api.coingecko.com/api/v3';
7
- const inputParameters = {
8
- coinid: {
9
- description: 'The CoinGecko id or array of ids of the coin(s) to query (Note: because of current limitations to use a dummy base will need to be supplied)',
10
- required: false,
11
- },
12
- base: {
13
- aliases: ['from', 'coin'],
14
- description: 'The symbol or array of symbols 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 restEndpointTransport = new transports_1.RestTransport({
24
- prepareRequest: (req) => {
25
- return {
26
- baseURL: DEFAULT_URL,
27
- url: '/simple/price',
28
- method: 'GET',
29
- params: {
30
- ids: req.requestContext.data.base,
31
- vs_currencies: req.requestContext.data.quote,
32
- },
33
- };
34
- },
35
- parseResponse: (req, res) => {
36
- return {
37
- data: res.data,
38
- statusCode: 200,
39
- result: res.data[req.requestContext.data.base]?.[req.requestContext.data.quote],
40
- };
41
- },
42
- options: {
43
- requestCoalescing: {
44
- enabled: true,
45
- entropyMax: 0,
46
- },
47
- },
48
- });
49
- exports.restEndpoint = new adapter_1.AdapterEndpoint({
50
- name: 'rest',
51
- aliases: ['qwe'],
52
- transport: restEndpointTransport,
53
- inputParameters,
54
- });
55
- //# sourceMappingURL=rest.js.map
@@ -1 +0,0 @@
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;SACvC,CAAA;IAC5C,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"}
@@ -1,2 +0,0 @@
1
- export declare const DEFAULT_API_ENDPOINT = "https://min-api.cryptocompare.com";
2
- export declare const DEFAULT_WS_API_ENDPOINT = "wss://streamer.cryptocompare.com/v2";
@@ -1,6 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DEFAULT_WS_API_ENDPOINT = exports.DEFAULT_API_ENDPOINT = void 0;
4
- exports.DEFAULT_API_ENDPOINT = 'https://min-api.cryptocompare.com';
5
- exports.DEFAULT_WS_API_ENDPOINT = 'wss://streamer.cryptocompare.com/v2';
6
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/examples/cryptocompare/src/config/index.ts"],"names":[],"mappings":";;;AAAa,QAAA,oBAAoB,GAAG,mCAAmC,CAAA;AAC1D,QAAA,uBAAuB,GAAG,qCAAqC,CAAA"}
@@ -1,28 +0,0 @@
1
- import { PriceEndpoint } from '../../../../adapter';
2
- import { WebSocketTransport } from '../../../../transports/websocket';
3
- interface AdapterRequestParams {
4
- base: string;
5
- quote: string;
6
- }
7
- interface Message {
8
- PRICE: number;
9
- TYPE: string;
10
- MARKET: string;
11
- FLAGS: number;
12
- FROMSYMBOL: string;
13
- TOSYMBOL: string;
14
- VOLUMEDAY: number;
15
- VOLUME24HOUR: number;
16
- VOLUMEDAYTO: number;
17
- VOLUME24HOURTO: number;
18
- MESSAGE?: string;
19
- }
20
- export interface WSErrorType {
21
- TYPE: string;
22
- MESSAGE: string;
23
- PARAMETER: string;
24
- INFO: string;
25
- }
26
- export declare const transport: WebSocketTransport<AdapterRequestParams, Message, import("../../../../config").SettingsMap>;
27
- export declare const endpoint: PriceEndpoint<AdapterRequestParams, import("../../../../transports").BackgroundStoredResultType, import("../../../../config").SettingsMap>;
28
- export {};
@@ -1,54 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../../../../../src/examples/cryptocompare/src/endpoints/crypto.ts"],"names":[],"mappings":";;;AACA,iDAAiG;AACjG,gEAAqE;AACrE,2CAA6D;AAC7D,sCAAmD;AA4BnD,MAAM,MAAM,GAAG,IAAA,iBAAU,EAAC,6BAA6B,CAAC,CAAA;AAE3C,QAAA,SAAS,GAAG,IAAI,8BAAkB,CAAC;IAC9C,GAAG,EAAE,CAAC,OAAuB,EAAE,EAAE,CAC/B,GAAG,gCAAuB,YAAY,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE;IACvE,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"}
@@ -1 +0,0 @@
1
- export { endpoint as cryptoEndpoint } from './crypto';
@@ -1,6 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/examples/cryptocompare/src/endpoints/index.ts"],"names":[],"mappings":";;;AAAA,mCAAqD;AAA5C,wGAAA,QAAQ,OAAkB"}
@@ -1,4 +0,0 @@
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>;
@@ -1,14 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,7 +0,0 @@
1
- export declare const customSettings: {
2
- readonly API_SECRET: {
3
- readonly description: "API secret";
4
- readonly type: "string";
5
- readonly required: true;
6
- };
7
- };
@@ -1,11 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,2 +0,0 @@
1
- import { Adapter } from '../../adapter';
2
- export declare const adapter: Adapter<import("../../config").SettingsMap>;
@@ -1,13 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,16 +0,0 @@
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, SettingsMap>;
14
- export declare const calculateQWAPprice: (entries: Entry[]) => number | undefined;
15
- export declare const sseEndpoint: AdapterEndpoint<AdapterRequestParams, import("../../transports").BackgroundStoredResultType, SettingsMap>;
16
- export {};
@@ -1,149 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"sseStream.js","sourceRoot":"","sources":["../../../../src/examples/genesis/sseStream.ts"],"names":[],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- export declare const customSettings: {
2
- readonly USERNAME: {
3
- readonly description: "Username for the NCFX API";
4
- readonly type: "string";
5
- readonly required: true;
6
- };
7
- readonly PASSWORD: {
8
- readonly description: "Password for the NCFX API";
9
- readonly type: "string";
10
- readonly required: true;
11
- };
12
- };
@@ -1,16 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.customSettings = void 0;
4
- exports.customSettings = {
5
- USERNAME: {
6
- description: 'Username for the NCFX API',
7
- type: 'string',
8
- required: true,
9
- },
10
- PASSWORD: {
11
- description: 'Password for the NCFX API',
12
- type: 'string',
13
- required: true,
14
- },
15
- };
16
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
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"}
@@ -1,13 +0,0 @@
1
- import { Adapter } from '../../adapter';
2
- export declare const adapter: Adapter<{
3
- readonly USERNAME: {
4
- readonly description: "Username for the NCFX API";
5
- readonly type: "string";
6
- readonly required: true;
7
- };
8
- readonly PASSWORD: {
9
- readonly description: "Password for the NCFX API";
10
- readonly type: "string";
11
- readonly required: true;
12
- };
13
- }>;
@@ -1,12 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.adapter = void 0;
4
- const adapter_1 = require("../../adapter");
5
- const config_1 = require("./config");
6
- const websocket_1 = require("./websocket");
7
- exports.adapter = new adapter_1.Adapter({
8
- name: 'ncfx',
9
- endpoints: [websocket_1.webSocketEndpoint],
10
- customSettings: config_1.customSettings,
11
- });
12
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
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"}
@@ -1,47 +0,0 @@
1
- import { AdapterEndpoint } from '../../adapter';
2
- import { WebSocketTransport } from '../../transports/websocket';
3
- import { InputParameters } from '../../validation';
4
- interface AdapterRequestParams {
5
- base: string;
6
- quote: string;
7
- }
8
- export declare const inputParameters: InputParameters;
9
- interface ProviderMessage {
10
- timestamp: string;
11
- currencyPair: string;
12
- bid: number;
13
- offer: number;
14
- mid: number;
15
- changes: [
16
- {
17
- period: string;
18
- change: number;
19
- percentage: number;
20
- }
21
- ];
22
- }
23
- export declare const websocketTransport: WebSocketTransport<AdapterRequestParams, ProviderMessage[], {
24
- readonly USERNAME: {
25
- readonly description: "Username for the NCFX API";
26
- readonly type: "string";
27
- readonly required: true;
28
- };
29
- readonly PASSWORD: {
30
- readonly description: "Password for the NCFX API";
31
- readonly type: "string";
32
- readonly required: true;
33
- };
34
- }>;
35
- export declare const webSocketEndpoint: AdapterEndpoint<AdapterRequestParams, import("../../transports").BackgroundStoredResultType, {
36
- readonly USERNAME: {
37
- readonly description: "Username for the NCFX API";
38
- readonly type: "string";
39
- readonly required: true;
40
- };
41
- readonly PASSWORD: {
42
- readonly description: "Password for the NCFX API";
43
- readonly type: "string";
44
- readonly required: true;
45
- };
46
- }>;
47
- export {};
@@ -1,74 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.webSocketEndpoint = exports.websocketTransport = exports.inputParameters = void 0;
4
- const adapter_1 = require("../../adapter");
5
- const websocket_1 = require("../../transports/websocket");
6
- const util_1 = require("../../util");
7
- exports.inputParameters = {
8
- base: {
9
- aliases: ['from', 'coin'],
10
- description: 'The symbol of the currency to query',
11
- required: true,
12
- },
13
- quote: {
14
- aliases: ['to', 'market'],
15
- description: 'The symbol of the currency to convert to',
16
- required: true,
17
- },
18
- };
19
- const logger = (0, util_1.makeLogger)('NcfxWebSocketTransport');
20
- exports.websocketTransport = new websocket_1.WebSocketTransport({
21
- url: () => 'wss://feed.newchangefx.com/cryptodata',
22
- handlers: {
23
- open(connection, context) {
24
- return new Promise((resolve, reject) => {
25
- // Set up listener
26
- connection.on('message', (data) => {
27
- const parsed = JSON.parse(data.toString());
28
- if (parsed.Message?.startsWith('Logged in as user')) {
29
- logger.info('Got logged in response, connection is ready');
30
- resolve();
31
- }
32
- else {
33
- reject(new Error('Unexpected message after WS connection open'));
34
- }
35
- });
36
- // Send login payload
37
- connection.send(JSON.stringify({
38
- request: 'login',
39
- username: context.adapterConfig.USERNAME,
40
- password: context.adapterConfig.PASSWORD,
41
- }));
42
- });
43
- },
44
- message(message) {
45
- if (!Array.isArray(message)) {
46
- logger.debug('WS message is not array, skipping');
47
- return [];
48
- }
49
- return message.map((m) => {
50
- const [base, quote] = m.currencyPair.split('/');
51
- return {
52
- params: { base, quote },
53
- value: m.offer,
54
- };
55
- });
56
- },
57
- },
58
- builders: {
59
- subscribeMessage: (params) => ({
60
- request: 'subscribe',
61
- ccy: `${params.base}/${params.quote}`,
62
- }),
63
- unsubscribeMessage: (params) => ({
64
- request: 'unsubscribe',
65
- ccy: `${params.base}/${params.quote}`,
66
- }),
67
- },
68
- });
69
- exports.webSocketEndpoint = new adapter_1.AdapterEndpoint({
70
- name: 'websocket',
71
- transport: exports.websocketTransport,
72
- inputParameters: exports.inputParameters,
73
- });
74
- //# sourceMappingURL=websocket.js.map
@@ -1 +0,0 @@
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,GAAG,EAAE,CAAC,uCAAuC;IAClD,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.d.ts DELETED
@@ -1,17 +0,0 @@
1
- /**
2
- * `prom-client` is shared between v2 and v3 when both are dependencies, resulting in metric collision errors
3
- * Clearing metrics on import will wipe v2's existing register so we can replace them with v3's metrics
4
- * METRICS_ENABLED=false is used to trigger this behavior because generators in the monorepo (where v2 and v3 are dependencies) tend to set it to false.
5
- */
6
- import { FastifyInstance } from 'fastify';
7
- import { Adapter, AdapterDependencies } from './adapter';
8
- export { FastifyInstance as ServerInstance };
9
- /**
10
- * Main function for the framework.
11
- * Initializes config and dependencies, uses those to initialize Transports, and starts listening for requests.
12
- *
13
- * @param adapter - an object describing an External Adapter
14
- * @param dependencies - an optional object with adapter dependencies to inject
15
- * @returns a Promise that resolves to the http.Server listening for connections
16
- */
17
- export declare const expose: (adapter: Adapter, dependencies?: Partial<AdapterDependencies>) => Promise<FastifyInstance | undefined>;