@chainlink/external-adapter-framework 0.0.22 → 0.0.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cache/factory.js +27 -0
- package/cache/index.js +16 -1
- package/cache/local.js +26 -0
- package/cache/redis.js +45 -0
- package/config/index.d.ts +1 -1
- package/examples/coingecko/src/globalUtils.d.ts +1 -1
- package/examples/coingecko/src/index.d.ts +1 -1
- package/index.d.ts +1 -1
- package/metrics/index.d.ts +1 -1
- package/package.json +2 -2
- package/rate-limiting/index.d.ts +2 -2
- package/transports/batch-warming.js +36 -0
- package/transports/metrics.d.ts +1 -1
- package/transports/rest.js +32 -0
- package/transports/util.js +33 -0
- package/transports/websocket.js +31 -0
- package/examples/coingecko/batch-warming.d.ts +0 -7
- package/examples/coingecko/batch-warming.js +0 -53
- package/examples/coingecko/index.d.ts +0 -2
- package/examples/coingecko/index.js +0 -11
- package/examples/coingecko/rest.d.ts +0 -12
- package/examples/coingecko/rest.js +0 -51
- package/examples/coingecko/test/e2e/adapter.test.js +0 -262
- package/examples/coingecko/test/integration/adapter.test.js +0 -264
- package/examples/coingecko/test/integration/capturedRequests.json +0 -1
- package/examples/coingecko/test/integration/fixtures.js +0 -41
- package/test.d.ts +0 -1
- package/test.js +0 -6
- package/util/recordRequests.js +0 -45
- package/validation/overrideFunctions.js +0 -40
|
@@ -1,41 +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.createMocks = void 0;
|
|
7
|
-
const nock_1 = __importDefault(require("nock"));
|
|
8
|
-
const capturedRequests_json_1 = __importDefault(require("./capturedRequests.json"));
|
|
9
|
-
// This is a generic fixture file that can be copy-pasted to generate fixtures from a
|
|
10
|
-
// capturedRequests.json file. To generate a capturedRequests.json file,
|
|
11
|
-
// set env var RECORD=true and run e2e tests.
|
|
12
|
-
const createMocks = () => {
|
|
13
|
-
const mocks = [];
|
|
14
|
-
for (const baseUrl in capturedRequests_json_1.default) {
|
|
15
|
-
const mock = (0, nock_1.default)(baseUrl, { encodedQueryParams: true });
|
|
16
|
-
for (const request of capturedRequests_json_1.default[baseUrl]) {
|
|
17
|
-
if (request.method === 'GET') {
|
|
18
|
-
mock
|
|
19
|
-
.get((uri) => {
|
|
20
|
-
const deconstructedRequestUrl = uri.split(/[?=,&]+/);
|
|
21
|
-
const deconstructedMockUrl = request.path.split(/[?=,&]+/);
|
|
22
|
-
return (deconstructedRequestUrl.sort().join(',') === deconstructedMockUrl.sort().join(','));
|
|
23
|
-
})
|
|
24
|
-
.times(100)
|
|
25
|
-
.reply(request.statusCode, () => request.response, [
|
|
26
|
-
'Content-Type',
|
|
27
|
-
'application/json',
|
|
28
|
-
'Connection',
|
|
29
|
-
'close',
|
|
30
|
-
'Vary',
|
|
31
|
-
'Accept-Encoding',
|
|
32
|
-
'Vary',
|
|
33
|
-
'Origin',
|
|
34
|
-
]);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
mocks.push(mock);
|
|
38
|
-
}
|
|
39
|
-
return mocks;
|
|
40
|
-
};
|
|
41
|
-
exports.createMocks = createMocks;
|
package/test.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/test.js
DELETED
package/util/recordRequests.js
DELETED
|
@@ -1,45 +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.recordRequests = void 0;
|
|
7
|
-
const fs_1 = __importDefault(require("fs"));
|
|
8
|
-
const recordRequests = (requestConfig, providerResponse) => {
|
|
9
|
-
let recordedRequests = {};
|
|
10
|
-
try {
|
|
11
|
-
recordedRequests = JSON.parse(fs_1.default.readFileSync('capturedRequests.json').toString());
|
|
12
|
-
}
|
|
13
|
-
catch { } // eslint-disable-line no-empty
|
|
14
|
-
let baseUrl = requestConfig.baseURL;
|
|
15
|
-
baseUrl =
|
|
16
|
-
nthIndexOf(baseUrl, '/', 3) === -1 ? baseUrl : baseUrl.slice(0, nthIndexOf(baseUrl, '/', 3));
|
|
17
|
-
const recordedRequest = {
|
|
18
|
-
method: requestConfig.method,
|
|
19
|
-
path: providerResponse.request.path,
|
|
20
|
-
data: requestConfig.data,
|
|
21
|
-
response: providerResponse.data,
|
|
22
|
-
statusCode: providerResponse.status,
|
|
23
|
-
};
|
|
24
|
-
if (!recordedRequests[baseUrl]) {
|
|
25
|
-
recordedRequests[baseUrl] = [recordedRequest];
|
|
26
|
-
}
|
|
27
|
-
else if (recordedRequests[baseUrl].every((r) => {
|
|
28
|
-
return r.path !== recordedRequest.path;
|
|
29
|
-
})) {
|
|
30
|
-
recordedRequests[baseUrl].push(recordedRequest);
|
|
31
|
-
}
|
|
32
|
-
fs_1.default.writeFileSync('capturedRequests.json', JSON.stringify(recordedRequests));
|
|
33
|
-
};
|
|
34
|
-
exports.recordRequests = recordRequests;
|
|
35
|
-
const nthIndexOf = (input, match, n) => {
|
|
36
|
-
let i = -1;
|
|
37
|
-
let n_ = n;
|
|
38
|
-
while (n_-- && i++ < input.length) {
|
|
39
|
-
i = input.indexOf(match, i);
|
|
40
|
-
if (i < 0) {
|
|
41
|
-
break;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
return i;
|
|
45
|
-
};
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.performSymbolOverrides = void 0;
|
|
4
|
-
const performSymbolOverrides = (adapter, req) => {
|
|
5
|
-
let adapterOverrides = {};
|
|
6
|
-
if (req.requestContext.data &&
|
|
7
|
-
req.requestContext.data['overrides'] &&
|
|
8
|
-
req.requestContext.data['overrides'][adapter.name]) {
|
|
9
|
-
adapterOverrides = req.requestContext.data['overrides'][adapter.name];
|
|
10
|
-
}
|
|
11
|
-
if (!Array.isArray(req.requestContext.data['base'])) {
|
|
12
|
-
// Perform overrides specified in the request payload
|
|
13
|
-
req.requestContext.data['base'] =
|
|
14
|
-
adapterOverrides[req.requestContext.data['base']] ?? req.requestContext.data['base'];
|
|
15
|
-
// Perform hardcoded overrides
|
|
16
|
-
if (adapter.overrides) {
|
|
17
|
-
req.requestContext.data['base'] =
|
|
18
|
-
adapter.overrides[req.requestContext.data['base']] ??
|
|
19
|
-
req.requestContext.data['base'];
|
|
20
|
-
}
|
|
21
|
-
return;
|
|
22
|
-
}
|
|
23
|
-
let requestedSymbols = req.requestContext.data['base'];
|
|
24
|
-
for (let i = 0; i < requestedSymbols.length; i++) {
|
|
25
|
-
const symbol = requestedSymbols[i];
|
|
26
|
-
// Perform overrides specified in the request payload
|
|
27
|
-
let overriddenSymbol = adapterOverrides[symbol.toUpperCase()] ?? adapterOverrides[symbol.toLowerCase()];
|
|
28
|
-
// Perform hardcoded overrides
|
|
29
|
-
if (adapter.overrides) {
|
|
30
|
-
overriddenSymbol =
|
|
31
|
-
adapter.overrides[symbol.toUpperCase()] ??
|
|
32
|
-
adapter.overrides[symbol.toLowerCase()] ??
|
|
33
|
-
overriddenSymbol;
|
|
34
|
-
}
|
|
35
|
-
requestedSymbols[i] = overriddenSymbol ?? requestedSymbols[i];
|
|
36
|
-
}
|
|
37
|
-
requestedSymbols = requestedSymbols.length > 1 ? requestedSymbols : requestedSymbols[1];
|
|
38
|
-
req.requestContext.data['base'] = requestedSymbols;
|
|
39
|
-
};
|
|
40
|
-
exports.performSymbolOverrides = performSymbolOverrides;
|