@chainlink/external-adapter-framework 0.23.2 → 0.25.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.
- package/README.md +12 -7
- package/adapter/basic.js +2 -2
- package/adapter/basic.js.map +1 -1
- package/adapter/endpoint.d.ts +2 -2
- package/adapter/endpoint.js.map +1 -1
- package/adapter/types.d.ts +2 -2
- package/background-executor.js +8 -4
- package/background-executor.js.map +1 -1
- package/cache/index.js +9 -3
- package/cache/index.js.map +1 -1
- package/config/index.d.ts +0 -4
- package/config/index.js +0 -4
- package/config/index.js.map +1 -1
- package/config/provider-limits.js +3 -3
- package/config/provider-limits.js.map +1 -1
- package/index.d.ts +4 -0
- package/index.js +25 -56
- package/index.js.map +1 -1
- package/metrics/index.d.ts +2 -1
- package/metrics/index.js +1 -4
- package/metrics/index.js.map +1 -1
- package/package.json +3 -3
- package/transports/http.js +40 -22
- package/transports/http.js.map +1 -1
- package/transports/meta/routing.d.ts +19 -9
- package/transports/meta/routing.js +28 -8
- package/transports/meta/routing.js.map +1 -1
- package/transports/sse.d.ts +2 -0
- package/transports/sse.js +7 -12
- package/transports/sse.js.map +1 -1
- package/transports/websocket.js +15 -2
- package/transports/websocket.js.map +1 -1
- package/util/requester.js +2 -1
- package/util/requester.js.map +1 -1
- package/util/types.d.ts +1 -6
- package/validation/error.d.ts +4 -1
- package/validation/error.js +1 -0
- package/validation/error.js.map +1 -1
- package/validation/index.d.ts +1 -1
- package/validation/index.js +6 -2
- package/validation/index.js.map +1 -1
- package/validation/input-params.d.ts +6 -1
- package/examples/bank-frick/accounts.d.ts +0 -45
- package/examples/bank-frick/accounts.js +0 -203
- package/examples/bank-frick/accounts.js.map +0 -1
- package/examples/bank-frick/config/index.d.ts +0 -17
- package/examples/bank-frick/config/index.js +0 -55
- package/examples/bank-frick/config/index.js.map +0 -1
- package/examples/bank-frick/index.d.ts +0 -2
- package/examples/bank-frick/index.js +0 -16
- package/examples/bank-frick/index.js.map +0 -1
- package/examples/bank-frick/util.d.ts +0 -4
- package/examples/bank-frick/util.js +0 -40
- package/examples/bank-frick/util.js.map +0 -1
- package/examples/coingecko/src/config/index.d.ts +0 -2
- package/examples/coingecko/src/config/index.js +0 -6
- package/examples/coingecko/src/config/index.js.map +0 -1
- package/examples/coingecko/src/config/overrides.json +0 -10825
- package/examples/coingecko/src/crypto-utils.d.ts +0 -62
- package/examples/coingecko/src/crypto-utils.js +0 -60
- package/examples/coingecko/src/crypto-utils.js.map +0 -1
- package/examples/coingecko/src/endpoint/coins.d.ts +0 -26
- package/examples/coingecko/src/endpoint/coins.js +0 -37
- package/examples/coingecko/src/endpoint/coins.js.map +0 -1
- package/examples/coingecko/src/endpoint/crypto-marketcap.d.ts +0 -3
- package/examples/coingecko/src/endpoint/crypto-marketcap.js +0 -30
- package/examples/coingecko/src/endpoint/crypto-marketcap.js.map +0 -1
- package/examples/coingecko/src/endpoint/crypto-volume.d.ts +0 -3
- package/examples/coingecko/src/endpoint/crypto-volume.js +0 -30
- package/examples/coingecko/src/endpoint/crypto-volume.js.map +0 -1
- package/examples/coingecko/src/endpoint/crypto.d.ts +0 -3
- package/examples/coingecko/src/endpoint/crypto.js +0 -28
- package/examples/coingecko/src/endpoint/crypto.js.map +0 -1
- package/examples/coingecko/src/endpoint/dominance.d.ts +0 -3
- package/examples/coingecko/src/endpoint/dominance.js +0 -28
- package/examples/coingecko/src/endpoint/dominance.js.map +0 -1
- package/examples/coingecko/src/endpoint/global-marketcap.d.ts +0 -3
- package/examples/coingecko/src/endpoint/global-marketcap.js +0 -28
- package/examples/coingecko/src/endpoint/global-marketcap.js.map +0 -1
- package/examples/coingecko/src/endpoint/index.d.ts +0 -6
- package/examples/coingecko/src/endpoint/index.js +0 -16
- package/examples/coingecko/src/endpoint/index.js.map +0 -1
- package/examples/coingecko/src/global-utils.d.ts +0 -42
- package/examples/coingecko/src/global-utils.js +0 -47
- package/examples/coingecko/src/global-utils.js.map +0 -1
- package/examples/coingecko/src/index.d.ts +0 -4
- package/examples/coingecko/src/index.js +0 -19
- package/examples/coingecko/src/index.js.map +0 -1
- package/examples/cryptocompare/src/config/index.d.ts +0 -2
- package/examples/cryptocompare/src/config/index.js +0 -6
- package/examples/cryptocompare/src/config/index.js.map +0 -1
- package/examples/cryptocompare/src/endpoints/crypto.d.ts +0 -40
- package/examples/cryptocompare/src/endpoints/crypto.js +0 -54
- package/examples/cryptocompare/src/endpoints/crypto.js.map +0 -1
- package/examples/cryptocompare/src/endpoints/index.d.ts +0 -1
- package/examples/cryptocompare/src/endpoints/index.js +0 -6
- package/examples/cryptocompare/src/endpoints/index.js.map +0 -1
- package/examples/cryptocompare/src/index.d.ts +0 -4
- package/examples/cryptocompare/src/index.js +0 -14
- package/examples/cryptocompare/src/index.js.map +0 -1
- package/examples/genesis/config/index.d.ts +0 -7
- package/examples/genesis/config/index.js +0 -11
- package/examples/genesis/config/index.js.map +0 -1
- package/examples/genesis/index.d.ts +0 -2
- package/examples/genesis/index.js +0 -13
- package/examples/genesis/index.js.map +0 -1
- package/examples/genesis/sseStream.d.ts +0 -27
- package/examples/genesis/sseStream.js +0 -149
- package/examples/genesis/sseStream.js.map +0 -1
- package/rate-limiting/background/fixed-frequency.d.ts +0 -10
- package/rate-limiting/background/fixed-frequency.js +0 -36
- package/rate-limiting/background/fixed-frequency.js.map +0 -1
- package/rate-limiting/metrics.d.ts +0 -1
- package/rate-limiting/metrics.js +0 -16
- package/rate-limiting/metrics.js.map +0 -1
- package/rate-limiting/request/simple-counting.d.ts +0 -20
- package/rate-limiting/request/simple-counting.js +0 -63
- package/rate-limiting/request/simple-counting.js.map +0 -1
- package/scripts/generator/index.d.ts +0 -1
- package/scripts/generator/index.js +0 -5
- package/scripts/generator/index.js.map +0 -1
- package/scripts/generator/lib.d.ts +0 -1
- package/scripts/generator/lib.js +0 -170
- package/scripts/generator/lib.js.map +0 -1
- package/scripts/generator/workspace.d.ts +0 -21
- package/scripts/generator/workspace.js +0 -76
- package/scripts/generator/workspace.js.map +0 -1
- package/transports/batch-warming.d.ts +0 -52
- package/transports/batch-warming.js +0 -150
- package/transports/batch-warming.js.map +0 -1
- package/transports/rest.d.ts +0 -66
- package/transports/rest.js +0 -144
- package/transports/rest.js.map +0 -1
- package/transports/routing.d.ts +0 -22
- package/transports/routing.js +0 -60
- package/transports/routing.js.map +0 -1
- package/transports/util.d.ts +0 -11
- package/transports/util.js +0 -117
- package/transports/util.js.map +0 -1
- package/util/metrics.d.ts +0 -8
- package/util/metrics.js +0 -50
- package/util/metrics.js.map +0 -1
- package/util/request.d.ts +0 -217
- package/util/request.js +0 -3
- package/util/request.js.map +0 -1
- package/util/test-payload-loader.d.ts +0 -26
- package/util/test-payload-loader.js +0 -85
- package/util/test-payload-loader.js.map +0 -1
package/scripts/generator/lib.js
DELETED
|
@@ -1,170 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lib.js","sourceRoot":"","sources":["../../../../src/scripts/generator/lib.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,21 +0,0 @@
|
|
|
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 {};
|
|
@@ -1,76 +0,0 @@
|
|
|
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
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.getWorkspacePackages = exports.PUBLIC_ADAPTER_TYPES = void 0;
|
|
27
|
-
/* eslint-disable @typescript-eslint/no-var-requires */
|
|
28
|
-
const fs_1 = require("fs");
|
|
29
|
-
const path_1 = require("path");
|
|
30
|
-
const s = __importStar(require("shelljs"));
|
|
31
|
-
/**
|
|
32
|
-
* Types of adapters that are publically consumed
|
|
33
|
-
*/
|
|
34
|
-
exports.PUBLIC_ADAPTER_TYPES = ['sources'];
|
|
35
|
-
const scope = '@chainlink/';
|
|
36
|
-
function getWorkspacePackages(additionalTypes = []) {
|
|
37
|
-
const adapterTypes = exports.PUBLIC_ADAPTER_TYPES.concat(additionalTypes);
|
|
38
|
-
const workspaces = JSON.parse(s.exec('yarn workspaces info', { silent: true }));
|
|
39
|
-
return Object.keys(workspaces)
|
|
40
|
-
.map((name) => ({ name, location: workspaces[name].location }))
|
|
41
|
-
.map(({ location, name }) => {
|
|
42
|
-
const pkg = getJsonFile((0, path_1.join)(location, 'package.json'));
|
|
43
|
-
return {
|
|
44
|
-
location,
|
|
45
|
-
name,
|
|
46
|
-
descopedName: name.replace(scope, ''),
|
|
47
|
-
type: location.split('/')[1],
|
|
48
|
-
version: pkg.version,
|
|
49
|
-
framework: '3',
|
|
50
|
-
};
|
|
51
|
-
})
|
|
52
|
-
.filter((v) => adapterTypes.includes(v.type))
|
|
53
|
-
.map((p) => {
|
|
54
|
-
let tsconf;
|
|
55
|
-
try {
|
|
56
|
-
tsconf = getJsonFile((0, path_1.join)(p.location, 'tsconfig.json'));
|
|
57
|
-
}
|
|
58
|
-
catch {
|
|
59
|
-
warnLog(`${(0, path_1.join)(p.location, 'tsconfig.json')} does not exist`);
|
|
60
|
-
}
|
|
61
|
-
return { ...p, tsconf };
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
exports.getWorkspacePackages = getWorkspacePackages;
|
|
65
|
-
function getJsonFile(path) {
|
|
66
|
-
return JSON.parse((0, fs_1.readFileSync)(path, 'utf-8'));
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* @param str The string to log
|
|
70
|
-
*/
|
|
71
|
-
function warnLog(str) {
|
|
72
|
-
if (process.env['DEBUG']) {
|
|
73
|
-
console.warn(str);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
//# sourceMappingURL=workspace.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../../../src/scripts/generator/workspace.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uDAAuD;AACvD,2BAAiC;AACjC,+BAA2B;AAC3B,2CAA4B;AAe5B;;GAEG;AACU,QAAA,oBAAoB,GAAG,CAAC,SAAS,CAAC,CAAA;AAC/C,MAAM,KAAK,GAAG,aAAa,CAAA;AAG3B,SAAgB,oBAAoB,CAAC,kBAA4B,EAAE;IACjE,MAAM,YAAY,GAAG,4BAAoB,CAAC,MAAM,CAAC,eAAe,CAAC,CAAA;IACjE,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IAC/E,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;SAC3B,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,QAAkB,EAAuB,CAAA,CAAC;SAC5F,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAoB,EAAE,EAAE;QAC5C,MAAM,GAAG,GAAwB,WAAW,CAAC,IAAA,WAAI,EAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAA;QAE5E,OAAO;YACL,QAAQ;YACR,IAAI;YACJ,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;YACrC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC5B,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,SAAS,EAAE,GAAG;SACf,CAAA;IACH,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SAC5C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,IAAI,MAA4B,CAAA;QAChC,IAAI;YACF,MAAM,GAAG,WAAW,CAAC,IAAA,WAAI,EAAC,CAAC,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAA;SACxD;QAAC,MAAM;YACN,OAAO,CAAC,GAAG,IAAA,WAAI,EAAC,CAAC,CAAC,QAAQ,EAAE,eAAe,CAAC,iBAAiB,CAAC,CAAA;SAC/D;QAED,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB,CAAC,CAAC,CAAA;AACN,CAAC;AA5BD,oDA4BC;AACD,SAAS,WAAW,CAAC,IAAY;IAC/B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAY,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAA;AAChD,CAAC;AAED;;GAEG;AACH,SAAS,OAAO,CAAC,GAAW;IAC1B,IAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;QACxB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;KAClB;AACH,CAAC"}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { AxiosRequestConfig, AxiosResponse } from 'axios';
|
|
2
|
-
import { EndpointContext } from '../adapter';
|
|
3
|
-
import { AdapterConfig } from '../config';
|
|
4
|
-
import { AdapterRequest, ProviderResult } from '../util/request';
|
|
5
|
-
import { TransportGenerics } from './';
|
|
6
|
-
import { SubscriptionTransport } from './abstract/subscription';
|
|
7
|
-
/**
|
|
8
|
-
* Helper struct type that will be used to pass types to the generic parameters of a Transport.
|
|
9
|
-
* Extends the common TransportGenerics, adding Provider specific types for this Batch endpoint.
|
|
10
|
-
*/
|
|
11
|
-
type BatchWarmingTransportGenerics = TransportGenerics & {
|
|
12
|
-
/**
|
|
13
|
-
* Type details for any provider specific interfaces.
|
|
14
|
-
*/
|
|
15
|
-
Provider: {
|
|
16
|
-
/**
|
|
17
|
-
* Structure of the body of the request that will be sent to the data provider.
|
|
18
|
-
*/
|
|
19
|
-
RequestBody: unknown;
|
|
20
|
-
/**
|
|
21
|
-
* Structure for the body of the response coming from the data provider.
|
|
22
|
-
*/
|
|
23
|
-
ResponseBody: unknown;
|
|
24
|
-
};
|
|
25
|
-
};
|
|
26
|
-
/**
|
|
27
|
-
* Config object that is provided to the BatchWarmingTransport constructor.
|
|
28
|
-
*/
|
|
29
|
-
export interface BatchWarmingTransportConfig<T extends BatchWarmingTransportGenerics> {
|
|
30
|
-
prepareRequest: (params: T['Request']['Params'][], config: AdapterConfig<T['CustomSettings']>) => AxiosRequestConfig<T['Provider']['RequestBody']>;
|
|
31
|
-
parseResponse: (params: T['Request']['Params'][], res: AxiosResponse<T['Provider']['ResponseBody']>, config: AdapterConfig<T['CustomSettings']>) => ProviderResult<T>[];
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Transport implementation that takes incoming batches requests and keeps a warm cache of values.
|
|
35
|
-
* Within the setup function, adapter params are added to an set that also keeps track and expires values.
|
|
36
|
-
* In the background execute, the list of non-expired items in the set is fetched.
|
|
37
|
-
* Then, the list is passed through the `prepareRequest` function, that returns an AxiosRequestConfig.
|
|
38
|
-
* The Data Provider response is, they are passed through the `parseResponse` function to create a [[CacheEntry]] list.
|
|
39
|
-
* Finally, the items in that [[CacheEntry]] list are set in the Cache so the Adapter can fetch values from there.
|
|
40
|
-
*
|
|
41
|
-
* @typeParam T - all types related to the [[Transport]]
|
|
42
|
-
*/
|
|
43
|
-
export declare class BatchWarmingTransport<T extends BatchWarmingTransportGenerics> extends SubscriptionTransport<T> {
|
|
44
|
-
private config;
|
|
45
|
-
WARMER_ACTIVE: boolean;
|
|
46
|
-
constructor(config: BatchWarmingTransportConfig<T>);
|
|
47
|
-
getSubscriptionTtlFromConfig(config: AdapterConfig<T['CustomSettings']>): number;
|
|
48
|
-
registerRequest(req: AdapterRequest<T['Request']>, config: AdapterConfig<T['CustomSettings']>): Promise<void>;
|
|
49
|
-
backgroundHandler(context: EndpointContext<T>, entries: T['Request']['Params'][]): Promise<void>;
|
|
50
|
-
private makeRequest;
|
|
51
|
-
}
|
|
52
|
-
export {};
|
|
@@ -1,150 +0,0 @@
|
|
|
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
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.BatchWarmingTransport = void 0;
|
|
27
|
-
const cacheMetrics = __importStar(require("../cache/metrics"));
|
|
28
|
-
const rateLimitMetrics = __importStar(require("../rate-limiting/metrics"));
|
|
29
|
-
const util_1 = require("../util");
|
|
30
|
-
const error_1 = require("../validation/error");
|
|
31
|
-
const subscription_1 = require("./abstract/subscription");
|
|
32
|
-
const util_2 = require("./util");
|
|
33
|
-
const WARMUP_BATCH_REQUEST_ID = '9002';
|
|
34
|
-
const logger = (0, util_1.makeLogger)('BatchWarmingTransport');
|
|
35
|
-
/**
|
|
36
|
-
* Transport implementation that takes incoming batches requests and keeps a warm cache of values.
|
|
37
|
-
* Within the setup function, adapter params are added to an set that also keeps track and expires values.
|
|
38
|
-
* In the background execute, the list of non-expired items in the set is fetched.
|
|
39
|
-
* Then, the list is passed through the `prepareRequest` function, that returns an AxiosRequestConfig.
|
|
40
|
-
* The Data Provider response is, they are passed through the `parseResponse` function to create a [[CacheEntry]] list.
|
|
41
|
-
* Finally, the items in that [[CacheEntry]] list are set in the Cache so the Adapter can fetch values from there.
|
|
42
|
-
*
|
|
43
|
-
* @typeParam T - all types related to the [[Transport]]
|
|
44
|
-
*/
|
|
45
|
-
class BatchWarmingTransport extends subscription_1.SubscriptionTransport {
|
|
46
|
-
constructor(config) {
|
|
47
|
-
super();
|
|
48
|
-
this.config = config;
|
|
49
|
-
// Flag used to track whether the warmer has moved from having no entries to having some and vice versa
|
|
50
|
-
// Used for recording the cache warmer active metrics accurately
|
|
51
|
-
this.WARMER_ACTIVE = false;
|
|
52
|
-
}
|
|
53
|
-
getSubscriptionTtlFromConfig(config) {
|
|
54
|
-
return config.WARMUP_SUBSCRIPTION_TTL;
|
|
55
|
-
}
|
|
56
|
-
async registerRequest(req, config) {
|
|
57
|
-
if (config.BATCH_TRANSPORT_SETUP_VALIDATION) {
|
|
58
|
-
const response = await this.makeRequest([req.requestContext.data], config);
|
|
59
|
-
if (!response.results.length) {
|
|
60
|
-
throw new error_1.AdapterError({
|
|
61
|
-
statusCode: 200,
|
|
62
|
-
providerStatusCode: response.providerResponse.status,
|
|
63
|
-
message: response.providerResponse.message ||
|
|
64
|
-
'There was an error while validating the incoming request before adding to the batch subscription set',
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
return super.registerRequest(req, config);
|
|
69
|
-
}
|
|
70
|
-
async backgroundHandler(context, entries) {
|
|
71
|
-
if (!entries.length) {
|
|
72
|
-
logger.debug('No entries in batch warming set, skipping');
|
|
73
|
-
if (this.WARMER_ACTIVE) {
|
|
74
|
-
// Decrement count when warmer changed from having entries to having none
|
|
75
|
-
cacheMetrics.cacheWarmerCount.labels({ isBatched: 'true' }).dec();
|
|
76
|
-
this.WARMER_ACTIVE = false;
|
|
77
|
-
}
|
|
78
|
-
return;
|
|
79
|
-
}
|
|
80
|
-
else if (this.WARMER_ACTIVE === false) {
|
|
81
|
-
// Increment count when warmer changed from having no entries to having some
|
|
82
|
-
cacheMetrics.cacheWarmerCount.labels({ isBatched: 'true' }).inc();
|
|
83
|
-
this.WARMER_ACTIVE = true;
|
|
84
|
-
}
|
|
85
|
-
const response = await this.makeRequest(entries, context.adapterConfig);
|
|
86
|
-
if (!response.results?.length) {
|
|
87
|
-
return;
|
|
88
|
-
}
|
|
89
|
-
logger.debug('Setting adapter responses in cache');
|
|
90
|
-
await this.responseCache.write(response.results);
|
|
91
|
-
// Record cost of data provider call
|
|
92
|
-
const cost = rateLimitMetrics.retrieveCost(response.providerResponse.data);
|
|
93
|
-
rateLimitMetrics.rateLimitCreditsSpentTotal
|
|
94
|
-
.labels({
|
|
95
|
-
feed_id: 'N/A',
|
|
96
|
-
participant_id: WARMUP_BATCH_REQUEST_ID,
|
|
97
|
-
})
|
|
98
|
-
.inc(cost);
|
|
99
|
-
return;
|
|
100
|
-
}
|
|
101
|
-
async makeRequest(entries, config) {
|
|
102
|
-
logger.trace(`Have ${entries.length} entries in batch, preparing request...`);
|
|
103
|
-
const request = this.config.prepareRequest(entries, config);
|
|
104
|
-
logger.trace(`Sending request to data provider: ${JSON.stringify(request)}`);
|
|
105
|
-
const providerDataRequested = Date.now();
|
|
106
|
-
let providerResponse;
|
|
107
|
-
try {
|
|
108
|
-
providerResponse = await (0, util_2.axiosRequest)(request, config);
|
|
109
|
-
}
|
|
110
|
-
catch (e) {
|
|
111
|
-
const err = e.cause;
|
|
112
|
-
const providerDataReceived = Date.now();
|
|
113
|
-
logger.warn(`There was an error while performing the batch request: ${e}`);
|
|
114
|
-
return {
|
|
115
|
-
results: entries.map((entry) => ({
|
|
116
|
-
params: entry,
|
|
117
|
-
response: {
|
|
118
|
-
errorMessage: `Provider request failed with status ${err?.status}: "${err?.response?.data}"`,
|
|
119
|
-
statusCode: 502,
|
|
120
|
-
timestamps: {
|
|
121
|
-
providerDataRequested,
|
|
122
|
-
providerDataReceived,
|
|
123
|
-
providerIndicatedTime: undefined,
|
|
124
|
-
},
|
|
125
|
-
},
|
|
126
|
-
})),
|
|
127
|
-
providerResponse: e,
|
|
128
|
-
};
|
|
129
|
-
}
|
|
130
|
-
const providerDataReceived = Date.now();
|
|
131
|
-
// Parse responses and apply timestamps
|
|
132
|
-
const results = this.config.parseResponse(entries, providerResponse, config).map((r) => {
|
|
133
|
-
const result = r;
|
|
134
|
-
const partialResponse = r.response;
|
|
135
|
-
result.response.timestamps = {
|
|
136
|
-
providerDataRequested,
|
|
137
|
-
providerDataReceived,
|
|
138
|
-
providerIndicatedTime: partialResponse.timestamps?.providerIndicatedTime,
|
|
139
|
-
};
|
|
140
|
-
return result;
|
|
141
|
-
});
|
|
142
|
-
logger.debug(`Got response from provider, parsing (raw body: ${providerResponse.data})`);
|
|
143
|
-
return {
|
|
144
|
-
results,
|
|
145
|
-
providerResponse,
|
|
146
|
-
};
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
exports.BatchWarmingTransport = BatchWarmingTransport;
|
|
150
|
-
//# sourceMappingURL=batch-warming.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"batch-warming.js","sourceRoot":"","sources":["../../../src/transports/batch-warming.ts"],"names":[],"mappings":"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"}
|
package/transports/rest.d.ts
DELETED
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import { AxiosRequestConfig, AxiosResponse } from 'axios';
|
|
2
|
-
import { Cache } from '../cache';
|
|
3
|
-
import { ResponseCache } from '../cache/response';
|
|
4
|
-
import { AdapterConfig } from '../config';
|
|
5
|
-
import { RequestRateLimiter } from '../rate-limiting';
|
|
6
|
-
import { AdapterRequest, AdapterResponse, PartialAdapterResponse } from '../util/request';
|
|
7
|
-
import { Transport, TransportDependencies, TransportGenerics } from './';
|
|
8
|
-
export { AxiosRequestConfig as HttpRequestConfig, AxiosResponse as HttpResponse };
|
|
9
|
-
/**
|
|
10
|
-
* Helper struct type that will be used to pass types to the generic parameters of a Transport.
|
|
11
|
-
* Extends the common TransportGenerics, adding Provider specific types for this Batch endpoint.
|
|
12
|
-
*/
|
|
13
|
-
type RestTransportGenerics = TransportGenerics & {
|
|
14
|
-
/**
|
|
15
|
-
* Type details for any provider specific interfaces.
|
|
16
|
-
*/
|
|
17
|
-
Provider: {
|
|
18
|
-
/**
|
|
19
|
-
* Structure of the body of the request that will be sent to the data provider.
|
|
20
|
-
*/
|
|
21
|
-
RequestBody: unknown;
|
|
22
|
-
/**
|
|
23
|
-
* Structure for the body of the response coming from the data provider.
|
|
24
|
-
*/
|
|
25
|
-
ResponseBody: unknown;
|
|
26
|
-
};
|
|
27
|
-
};
|
|
28
|
-
/**
|
|
29
|
-
* Config object that is provided to the RestTransport constructor.
|
|
30
|
-
*/
|
|
31
|
-
export interface RestTransportConfig<T extends RestTransportGenerics> {
|
|
32
|
-
prepareRequest: (req: AdapterRequest<T['Request']>, config: AdapterConfig<T['CustomSettings']>) => AxiosRequestConfig<T['Provider']['RequestBody']> | Promise<AxiosRequestConfig<T['Provider']['RequestBody']>>;
|
|
33
|
-
parseResponse: (req: AdapterRequest<T['Request']>, res: AxiosResponse<T['Provider']['ResponseBody']>, config: AdapterConfig<T['CustomSettings']>) => PartialAdapterResponse<T['Response']> | Promise<PartialAdapterResponse<T['Response']>>;
|
|
34
|
-
options: {
|
|
35
|
-
requestCoalescing: {
|
|
36
|
-
enabled: boolean;
|
|
37
|
-
entropyMax?: number;
|
|
38
|
-
};
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Transport implementation that takes incoming requests, transforms them into a DataProvider request,
|
|
43
|
-
* and executes that request returning the response immediately from the `setup` function.
|
|
44
|
-
* Optionally, setting the `coalescing` option to `true` will make it so once a request is in flight,
|
|
45
|
-
* new adapter requests for the same feed will not trigger a new one, but return an empty promise from
|
|
46
|
-
* the setup instead so the normal cache polling mechanism is used.
|
|
47
|
-
*
|
|
48
|
-
* @typeParam T - Helper struct type that will be used to pass types to the generic parameters (check [[RestTransportGenerics]])
|
|
49
|
-
*/
|
|
50
|
-
export declare class RestTransport<T extends RestTransportGenerics> implements Transport<T> {
|
|
51
|
-
protected config: RestTransportConfig<T>;
|
|
52
|
-
inFlightPrefix: string;
|
|
53
|
-
responseCache: ResponseCache<{
|
|
54
|
-
Request: T['Request'];
|
|
55
|
-
Response: T['Response'];
|
|
56
|
-
}>;
|
|
57
|
-
inFlightCache: Cache<boolean>;
|
|
58
|
-
rateLimiter: RequestRateLimiter;
|
|
59
|
-
constructor(config: RestTransportConfig<T>);
|
|
60
|
-
initialize(dependencies: TransportDependencies<T>, config: AdapterConfig<T['CustomSettings']>): Promise<void>;
|
|
61
|
-
protected waitUntilUnderRateLimit(options: {
|
|
62
|
-
maxRetries: number;
|
|
63
|
-
msBetweenRetries: number;
|
|
64
|
-
}, retry?: number): Promise<void>;
|
|
65
|
-
foregroundExecute(req: AdapterRequest<T['Request']>, config: AdapterConfig<T['CustomSettings']>): Promise<AdapterResponse<T['Response']> | undefined>;
|
|
66
|
-
}
|