@xyo-network/etherscan-ethereum-gas-plugin 2.42.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/LICENSE +165 -0
- package/README.md +81 -0
- package/dist/cjs/Config.d.ts +7 -0
- package/dist/cjs/Config.d.ts.map +1 -0
- package/dist/cjs/Config.js +3 -0
- package/dist/cjs/Config.js.map +1 -0
- package/dist/cjs/Plugin.d.ts +16 -0
- package/dist/cjs/Plugin.d.ts.map +1 -0
- package/dist/cjs/Plugin.js +16 -0
- package/dist/cjs/Plugin.js.map +1 -0
- package/dist/cjs/Schema.d.ts +3 -0
- package/dist/cjs/Schema.d.ts.map +1 -0
- package/dist/cjs/Schema.js +5 -0
- package/dist/cjs/Schema.js.map +1 -0
- package/dist/cjs/Witness.d.ts +10 -0
- package/dist/cjs/Witness.d.ts.map +1 -0
- package/dist/cjs/Witness.js +38 -0
- package/dist/cjs/Witness.js.map +1 -0
- package/dist/cjs/index.d.ts +7 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +12 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/lib/getGasFromEtherscan.d.ts +3 -0
- package/dist/cjs/lib/getGasFromEtherscan.d.ts.map +1 -0
- package/dist/cjs/lib/getGasFromEtherscan.js +11 -0
- package/dist/cjs/lib/getGasFromEtherscan.js.map +1 -0
- package/dist/cjs/lib/index.d.ts +2 -0
- package/dist/cjs/lib/index.d.ts.map +1 -0
- package/dist/cjs/lib/index.js +5 -0
- package/dist/cjs/lib/index.js.map +1 -0
- package/dist/docs.json +4779 -0
- package/dist/esm/Config.d.ts +7 -0
- package/dist/esm/Config.d.ts.map +1 -0
- package/dist/esm/Config.js +2 -0
- package/dist/esm/Config.js.map +1 -0
- package/dist/esm/Plugin.d.ts +16 -0
- package/dist/esm/Plugin.d.ts.map +1 -0
- package/dist/esm/Plugin.js +11 -0
- package/dist/esm/Plugin.js.map +1 -0
- package/dist/esm/Schema.d.ts +3 -0
- package/dist/esm/Schema.d.ts.map +1 -0
- package/dist/esm/Schema.js +2 -0
- package/dist/esm/Schema.js.map +1 -0
- package/dist/esm/Witness.d.ts +10 -0
- package/dist/esm/Witness.d.ts.map +1 -0
- package/dist/esm/Witness.js +21 -0
- package/dist/esm/Witness.js.map +1 -0
- package/dist/esm/index.d.ts +7 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +8 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/lib/getGasFromEtherscan.d.ts +3 -0
- package/dist/esm/lib/getGasFromEtherscan.d.ts.map +1 -0
- package/dist/esm/lib/getGasFromEtherscan.js +6 -0
- package/dist/esm/lib/getGasFromEtherscan.js.map +1 -0
- package/dist/esm/lib/index.d.ts +2 -0
- package/dist/esm/lib/index.d.ts.map +1 -0
- package/dist/esm/lib/index.js +2 -0
- package/dist/esm/lib/index.js.map +1 -0
- package/package.json +56 -0
- package/src/Config.ts +8 -0
- package/src/Plugin.spec.ts +20 -0
- package/src/Plugin.ts +18 -0
- package/src/Schema.ts +3 -0
- package/src/Witness.spec.ts +40 -0
- package/src/Witness.ts +26 -0
- package/src/index.ts +10 -0
- package/src/lib/getGasFromEtherscan.spec.ts +21 -0
- package/src/lib/getGasFromEtherscan.ts +7 -0
- package/src/lib/index.ts +1 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { XyoWitnessConfig } from '@xyo-network/witness';
|
|
2
|
+
import { XyoEthereumGasEtherscanWitnessConfigSchema } from './Schema';
|
|
3
|
+
export type XyoEthereumGasEtherscanWitnessConfig = XyoWitnessConfig<{
|
|
4
|
+
apiKey: string;
|
|
5
|
+
schema: XyoEthereumGasEtherscanWitnessConfigSchema;
|
|
6
|
+
}>;
|
|
7
|
+
//# sourceMappingURL=Config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../src/Config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAEvD,OAAO,EAAE,0CAA0C,EAAE,MAAM,UAAU,CAAA;AAErE,MAAM,MAAM,oCAAoC,GAAG,gBAAgB,CAAC;IAClE,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,0CAA0C,CAAA;CACnD,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Config.js","sourceRoot":"","sources":["../../src/Config.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { XyoModuleParams } from '@xyo-network/module';
|
|
2
|
+
import { PayloadSetWitnessPlugin } from '@xyo-network/payloadset-plugin';
|
|
3
|
+
export declare const XyoEthereumGasEtherscanPlugin: () => PayloadSetWitnessPlugin<XyoModuleParams<import("@xyo-network/payload").SchemaFields & import("@xyo-network/payload").PayloadFields & {
|
|
4
|
+
security?: {
|
|
5
|
+
allowed?: Record<string, string[][]> | undefined;
|
|
6
|
+
disallowed?: Record<string, string[]> | undefined;
|
|
7
|
+
} | undefined;
|
|
8
|
+
} & {
|
|
9
|
+
apiKey: string;
|
|
10
|
+
schema: "network.xyo.blockchain.ethereum.gas.etherscan.witness.config";
|
|
11
|
+
} & {
|
|
12
|
+
targetSet?: (import("@xyo-network/payload").SchemaFields & import("@xyo-network/payload").PayloadFields & import("@xyo-network/payload").PayloadSet & {
|
|
13
|
+
schema: "network.xyo.payload.set";
|
|
14
|
+
}) | undefined;
|
|
15
|
+
}>>;
|
|
16
|
+
//# sourceMappingURL=Plugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Plugin.d.ts","sourceRoot":"","sources":["../../src/Plugin.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAErD,OAAO,EAA0B,uBAAuB,EAAE,MAAM,gCAAgC,CAAA;AAKhG,eAAO,MAAM,6BAA6B;;;;;;;;;;;;GASvC,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { XyoEthereumGasEtherscanSchema } from '@xyo-network/etherscan-ethereum-gas-payload-plugin';
|
|
2
|
+
import { PayloadSetSchema } from '@xyo-network/payload';
|
|
3
|
+
import { createPayloadSetPlugin } from '@xyo-network/payloadset-plugin';
|
|
4
|
+
import { XyoEthereumGasEtherscanWitness } from './Witness';
|
|
5
|
+
export const XyoEthereumGasEtherscanPlugin = () => createPayloadSetPlugin({ required: { [XyoEthereumGasEtherscanSchema]: 1 }, schema: PayloadSetSchema }, {
|
|
6
|
+
witness: async (params) => {
|
|
7
|
+
const result = await XyoEthereumGasEtherscanWitness.create(params);
|
|
8
|
+
return result;
|
|
9
|
+
},
|
|
10
|
+
});
|
|
11
|
+
//# sourceMappingURL=Plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Plugin.js","sourceRoot":"","sources":["../../src/Plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAA;AAElG,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAE,sBAAsB,EAA2B,MAAM,gCAAgC,CAAA;AAGhG,OAAO,EAAE,8BAA8B,EAAE,MAAM,WAAW,CAAA;AAE1D,MAAM,CAAC,MAAM,6BAA6B,GAAG,GAAG,EAAE,CAChD,sBAAsB,CACpB,EAAE,QAAQ,EAAE,EAAE,CAAC,6BAA6B,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,EAC9E;IACE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QACxB,MAAM,MAAM,GAAG,MAAM,8BAA8B,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QAClE,OAAO,MAAM,CAAA;IACf,CAAC;CACF,CACF,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Schema.d.ts","sourceRoot":"","sources":["../../src/Schema.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,0CAA0C,GAAG,8DAA8D,CAAA;AACvH,eAAO,MAAM,0CAA0C,EAAE,0CACO,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Schema.js","sourceRoot":"","sources":["../../src/Schema.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,0CAA0C,GACrD,8DAA8D,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { XyoModuleParams } from '@xyo-network/module';
|
|
2
|
+
import { XyoPayload } from '@xyo-network/payload';
|
|
3
|
+
import { TimestampWitness } from '@xyo-network/witness';
|
|
4
|
+
import { XyoEthereumGasEtherscanWitnessConfig } from './Config';
|
|
5
|
+
export declare class XyoEthereumGasEtherscanWitness extends TimestampWitness<XyoEthereumGasEtherscanWitnessConfig> {
|
|
6
|
+
static configSchema: "network.xyo.blockchain.ethereum.gas.etherscan.witness.config";
|
|
7
|
+
static create(params?: XyoModuleParams<XyoEthereumGasEtherscanWitnessConfig>): Promise<XyoEthereumGasEtherscanWitness>;
|
|
8
|
+
observe(): Promise<XyoPayload[]>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=Witness.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Witness.d.ts","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAE,UAAU,EAAqB,MAAM,sBAAsB,CAAA;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAEvD,OAAO,EAAE,oCAAoC,EAAE,MAAM,UAAU,CAAA;AAI/D,qBAAa,8BAA+B,SAAQ,gBAAgB,CAAC,oCAAoC,CAAC;IACxG,OAAgB,YAAY,iEAA6C;WAEnD,MAAM,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC,oCAAoC,CAAC,GAAG,OAAO,CAAC,8BAA8B,CAAC;IAKtH,OAAO,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;CAOhD"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { assertEx } from '@xylabs/assert';
|
|
2
|
+
import { XyoEthereumGasEtherscanSchema } from '@xyo-network/etherscan-ethereum-gas-payload-plugin';
|
|
3
|
+
import { XyoPayloadBuilder } from '@xyo-network/payload';
|
|
4
|
+
import { TimestampWitness } from '@xyo-network/witness';
|
|
5
|
+
import { getGasFromEtherscan } from './lib';
|
|
6
|
+
import { XyoEthereumGasEtherscanWitnessConfigSchema } from './Schema';
|
|
7
|
+
export class XyoEthereumGasEtherscanWitness extends TimestampWitness {
|
|
8
|
+
static configSchema = XyoEthereumGasEtherscanWitnessConfigSchema;
|
|
9
|
+
static async create(params) {
|
|
10
|
+
assertEx(params?.config?.apiKey, 'apiKey is required');
|
|
11
|
+
return (await super.create(params));
|
|
12
|
+
}
|
|
13
|
+
async observe() {
|
|
14
|
+
const apiKey = assertEx(this.config?.apiKey, 'apiKey is required');
|
|
15
|
+
const payload = new XyoPayloadBuilder({ schema: XyoEthereumGasEtherscanSchema })
|
|
16
|
+
.fields(await getGasFromEtherscan(apiKey))
|
|
17
|
+
.build();
|
|
18
|
+
return super.observe([payload]);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=Witness.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Witness.js","sourceRoot":"","sources":["../../src/Witness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAkC,6BAA6B,EAAE,MAAM,oDAAoD,CAAA;AAElI,OAAO,EAAc,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAGvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAA;AAC3C,OAAO,EAAE,0CAA0C,EAAE,MAAM,UAAU,CAAA;AAErE,MAAM,OAAO,8BAA+B,SAAQ,gBAAsD;IACxG,MAAM,CAAU,YAAY,GAAG,0CAA0C,CAAA;IAEzE,MAAM,CAAU,KAAK,CAAC,MAAM,CAAC,MAA8D;QACzF,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,CAAC,CAAA;QACtD,OAAO,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAmC,CAAA;IACvE,CAAC;IAEQ,KAAK,CAAC,OAAO;QACpB,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,oBAAoB,CAAC,CAAA;QAClE,MAAM,OAAO,GAAG,IAAI,iBAAiB,CAAiC,EAAE,MAAM,EAAE,6BAA6B,EAAE,CAAC;aAC7G,MAAM,CAAC,MAAM,mBAAmB,CAAC,MAAM,CAAC,CAAC;aACzC,KAAK,EAAE,CAAA;QACV,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA;IACjC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { XyoEthereumGasEtherscanPlugin } from './Plugin';
|
|
2
|
+
export * from './Config';
|
|
3
|
+
export * from './Schema';
|
|
4
|
+
export * from './Witness';
|
|
5
|
+
export { XyoEthereumGasEtherscanPlugin };
|
|
6
|
+
export default XyoEthereumGasEtherscanPlugin;
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,UAAU,CAAA;AAExD,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AAEzB,OAAO,EAAE,6BAA6B,EAAE,CAAA;AAGxC,eAAe,6BAA6B,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { XyoEthereumGasEtherscanPlugin } from './Plugin';
|
|
2
|
+
export * from './Config';
|
|
3
|
+
export * from './Schema';
|
|
4
|
+
export * from './Witness';
|
|
5
|
+
export { XyoEthereumGasEtherscanPlugin };
|
|
6
|
+
// eslint-disable-next-line import/no-default-export
|
|
7
|
+
export default XyoEthereumGasEtherscanPlugin;
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,UAAU,CAAA;AAExD,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AAEzB,OAAO,EAAE,6BAA6B,EAAE,CAAA;AAExC,oDAAoD;AACpD,eAAe,6BAA6B,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getGasFromEtherscan.d.ts","sourceRoot":"","sources":["../../../src/lib/getGasFromEtherscan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,oDAAoD,CAAA;AAGjG,eAAO,MAAM,mBAAmB,WAAkB,MAAM,KAAG,QAAQ,4BAA4B,CAG9F,CAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import axios from 'axios';
|
|
2
|
+
export const getGasFromEtherscan = async (apiKey) => {
|
|
3
|
+
const url = `https://api.etherscan.io/api?module=gastracker&action=gasoracle&apikey=${apiKey}`;
|
|
4
|
+
return (await axios.get(url)).data;
|
|
5
|
+
};
|
|
6
|
+
//# sourceMappingURL=getGasFromEtherscan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getGasFromEtherscan.js","sourceRoot":"","sources":["../../../src/lib/getGasFromEtherscan.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EAAE,MAAc,EAAyC,EAAE;IACjG,MAAM,GAAG,GAAG,0EAA0E,MAAM,EAAE,CAAA;IAC9F,OAAO,CAAC,MAAM,KAAK,CAAC,GAAG,CAA+B,GAAG,CAAC,CAAC,CAAC,IAAI,CAAA;AAClE,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA"}
|
package/package.json
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@xyo-network/etherscan-ethereum-gas-plugin",
|
|
3
|
+
"author": {
|
|
4
|
+
"email": "support@xyo.network",
|
|
5
|
+
"name": "XYO Development Team",
|
|
6
|
+
"url": "https://xyo.network"
|
|
7
|
+
},
|
|
8
|
+
"bugs": {
|
|
9
|
+
"email": "support@xyo.network",
|
|
10
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/issues"
|
|
11
|
+
},
|
|
12
|
+
"dependencies": {
|
|
13
|
+
"@xylabs/assert": "^2.6.9",
|
|
14
|
+
"@xyo-network/etherscan-ethereum-gas-payload-plugin": "^2.42.0",
|
|
15
|
+
"@xyo-network/module": "^2.42.0",
|
|
16
|
+
"@xyo-network/payload": "^2.42.0",
|
|
17
|
+
"@xyo-network/payloadset-plugin": "^2.42.0",
|
|
18
|
+
"@xyo-network/witness": "^2.42.0",
|
|
19
|
+
"axios": "~1.2.1",
|
|
20
|
+
"tslib": "^2.4.1"
|
|
21
|
+
},
|
|
22
|
+
"description": "Primary SDK for using XYO Protocol 2.0",
|
|
23
|
+
"browser": "dist/esm/index.js",
|
|
24
|
+
"docs": "dist/docs.json",
|
|
25
|
+
"exports": {
|
|
26
|
+
".": {
|
|
27
|
+
"node": {
|
|
28
|
+
"import": "./dist/esm/index.js",
|
|
29
|
+
"require": "./dist/cjs/index.js"
|
|
30
|
+
},
|
|
31
|
+
"browser": {
|
|
32
|
+
"import": "./dist/esm/index.js",
|
|
33
|
+
"require": "./dist/cjs/index.js"
|
|
34
|
+
},
|
|
35
|
+
"default": "./dist/esm/index.js"
|
|
36
|
+
},
|
|
37
|
+
"./dist/docs.json": {
|
|
38
|
+
"default": "./dist/docs.json"
|
|
39
|
+
},
|
|
40
|
+
"./package.json": "./package.json"
|
|
41
|
+
},
|
|
42
|
+
"main": "dist/cjs/index.js",
|
|
43
|
+
"module": "dist/esm/index.js",
|
|
44
|
+
"homepage": "https://xyo.network",
|
|
45
|
+
"license": "LGPL-3.0-only",
|
|
46
|
+
"publishConfig": {
|
|
47
|
+
"access": "public"
|
|
48
|
+
},
|
|
49
|
+
"repository": {
|
|
50
|
+
"type": "git",
|
|
51
|
+
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js.git"
|
|
52
|
+
},
|
|
53
|
+
"sideEffects": false,
|
|
54
|
+
"types": "dist/esm/index.d.ts",
|
|
55
|
+
"version": "2.42.0"
|
|
56
|
+
}
|
package/src/Config.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { XyoWitnessConfig } from '@xyo-network/witness'
|
|
2
|
+
|
|
3
|
+
import { XyoEthereumGasEtherscanWitnessConfigSchema } from './Schema'
|
|
4
|
+
|
|
5
|
+
export type XyoEthereumGasEtherscanWitnessConfig = XyoWitnessConfig<{
|
|
6
|
+
apiKey: string
|
|
7
|
+
schema: XyoEthereumGasEtherscanWitnessConfigSchema
|
|
8
|
+
}>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { XyoEthereumGasEtherscanSchema } from '@xyo-network/etherscan-ethereum-gas-payload-plugin'
|
|
2
|
+
import { PayloadSetPluginResolver } from '@xyo-network/payloadset-plugin'
|
|
3
|
+
|
|
4
|
+
import { XyoEthereumGasEtherscanPlugin } from './Plugin'
|
|
5
|
+
import { XyoEthereumGasEtherscanWitness } from './Witness'
|
|
6
|
+
|
|
7
|
+
const apiKey = process.env.ETHERSCAN_API_KEY || ''
|
|
8
|
+
|
|
9
|
+
const testIf = (condition: string | undefined) => (condition ? it : it.skip)
|
|
10
|
+
|
|
11
|
+
describe('XyoEthereumGasEtherscanPlugin', () => {
|
|
12
|
+
testIf(apiKey)('Add to Resolver', () => {
|
|
13
|
+
const plugin = XyoEthereumGasEtherscanPlugin()
|
|
14
|
+
const resolver = new PayloadSetPluginResolver().register(plugin, {
|
|
15
|
+
witness: { config: { apiKey, schema: XyoEthereumGasEtherscanWitness.configSchema } },
|
|
16
|
+
})
|
|
17
|
+
expect(resolver.resolve(plugin.set)).toBeObject()
|
|
18
|
+
expect(resolver.witness(XyoEthereumGasEtherscanSchema)).toBeObject()
|
|
19
|
+
})
|
|
20
|
+
})
|
package/src/Plugin.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { XyoEthereumGasEtherscanSchema } from '@xyo-network/etherscan-ethereum-gas-payload-plugin'
|
|
2
|
+
import { XyoModuleParams } from '@xyo-network/module'
|
|
3
|
+
import { PayloadSetSchema } from '@xyo-network/payload'
|
|
4
|
+
import { createPayloadSetPlugin, PayloadSetWitnessPlugin } from '@xyo-network/payloadset-plugin'
|
|
5
|
+
|
|
6
|
+
import { XyoEthereumGasEtherscanWitnessConfig } from './Config'
|
|
7
|
+
import { XyoEthereumGasEtherscanWitness } from './Witness'
|
|
8
|
+
|
|
9
|
+
export const XyoEthereumGasEtherscanPlugin = () =>
|
|
10
|
+
createPayloadSetPlugin<PayloadSetWitnessPlugin<XyoModuleParams<XyoEthereumGasEtherscanWitnessConfig>>>(
|
|
11
|
+
{ required: { [XyoEthereumGasEtherscanSchema]: 1 }, schema: PayloadSetSchema },
|
|
12
|
+
{
|
|
13
|
+
witness: async (params) => {
|
|
14
|
+
const result = await XyoEthereumGasEtherscanWitness.create(params)
|
|
15
|
+
return result
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
)
|
package/src/Schema.ts
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export type XyoEthereumGasEtherscanWitnessConfigSchema = 'network.xyo.blockchain.ethereum.gas.etherscan.witness.config'
|
|
2
|
+
export const XyoEthereumGasEtherscanWitnessConfigSchema: XyoEthereumGasEtherscanWitnessConfigSchema =
|
|
3
|
+
'network.xyo.blockchain.ethereum.gas.etherscan.witness.config'
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { XyoEthereumGasEtherscanPayload, XyoEthereumGasEtherscanSchema } from '@xyo-network/etherscan-ethereum-gas-payload-plugin'
|
|
2
|
+
import { PayloadWrapper } from '@xyo-network/payload'
|
|
3
|
+
|
|
4
|
+
import { XyoEthereumGasEtherscanWitnessConfigSchema } from './Schema'
|
|
5
|
+
import { XyoEthereumGasEtherscanWitness } from './Witness'
|
|
6
|
+
|
|
7
|
+
const apiKey = process.env.ETHERSCAN_API_KEY || ''
|
|
8
|
+
|
|
9
|
+
const testIf = (condition: string | undefined) => (condition ? it : it.skip)
|
|
10
|
+
|
|
11
|
+
describe('XyoEthereumGasEtherscanWitness', () => {
|
|
12
|
+
testIf(apiKey)('returns observation', async () => {
|
|
13
|
+
const sut = await XyoEthereumGasEtherscanWitness.create({
|
|
14
|
+
config: {
|
|
15
|
+
apiKey,
|
|
16
|
+
schema: XyoEthereumGasEtherscanWitnessConfigSchema,
|
|
17
|
+
},
|
|
18
|
+
})
|
|
19
|
+
const [actual] = (await sut.observe()) as XyoEthereumGasEtherscanPayload[]
|
|
20
|
+
expect(actual.result).toBeObject()
|
|
21
|
+
expect(actual.result.FastGasPrice).toBeString()
|
|
22
|
+
expect(actual.result.gasUsedRatio).toBeString()
|
|
23
|
+
expect(actual.result.LastBlock).toBeString()
|
|
24
|
+
expect(actual.result.ProposeGasPrice).toBeString()
|
|
25
|
+
expect(actual.result.SafeGasPrice).toBeString()
|
|
26
|
+
expect(actual.result.suggestBaseFee).toBeString()
|
|
27
|
+
|
|
28
|
+
expect(actual.timestamp).toBeNumber()
|
|
29
|
+
expect(actual.schema).toBe(XyoEthereumGasEtherscanSchema)
|
|
30
|
+
|
|
31
|
+
const answerWrapper = new PayloadWrapper(actual)
|
|
32
|
+
expect(answerWrapper.valid).toBe(true)
|
|
33
|
+
})
|
|
34
|
+
|
|
35
|
+
describe('create', () => {
|
|
36
|
+
it('throws if no params provided', async () => {
|
|
37
|
+
await expect(XyoEthereumGasEtherscanWitness.create()).toReject()
|
|
38
|
+
})
|
|
39
|
+
})
|
|
40
|
+
})
|
package/src/Witness.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { assertEx } from '@xylabs/assert'
|
|
2
|
+
import { XyoEthereumGasEtherscanPayload, XyoEthereumGasEtherscanSchema } from '@xyo-network/etherscan-ethereum-gas-payload-plugin'
|
|
3
|
+
import { XyoModuleParams } from '@xyo-network/module'
|
|
4
|
+
import { XyoPayload, XyoPayloadBuilder } from '@xyo-network/payload'
|
|
5
|
+
import { TimestampWitness } from '@xyo-network/witness'
|
|
6
|
+
|
|
7
|
+
import { XyoEthereumGasEtherscanWitnessConfig } from './Config'
|
|
8
|
+
import { getGasFromEtherscan } from './lib'
|
|
9
|
+
import { XyoEthereumGasEtherscanWitnessConfigSchema } from './Schema'
|
|
10
|
+
|
|
11
|
+
export class XyoEthereumGasEtherscanWitness extends TimestampWitness<XyoEthereumGasEtherscanWitnessConfig> {
|
|
12
|
+
static override configSchema = XyoEthereumGasEtherscanWitnessConfigSchema
|
|
13
|
+
|
|
14
|
+
static override async create(params?: XyoModuleParams<XyoEthereumGasEtherscanWitnessConfig>): Promise<XyoEthereumGasEtherscanWitness> {
|
|
15
|
+
assertEx(params?.config?.apiKey, 'apiKey is required')
|
|
16
|
+
return (await super.create(params)) as XyoEthereumGasEtherscanWitness
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
override async observe(): Promise<XyoPayload[]> {
|
|
20
|
+
const apiKey = assertEx(this.config?.apiKey, 'apiKey is required')
|
|
21
|
+
const payload = new XyoPayloadBuilder<XyoEthereumGasEtherscanPayload>({ schema: XyoEthereumGasEtherscanSchema })
|
|
22
|
+
.fields(await getGasFromEtherscan(apiKey))
|
|
23
|
+
.build()
|
|
24
|
+
return super.observe([payload])
|
|
25
|
+
}
|
|
26
|
+
}
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { XyoEthereumGasEtherscanPlugin } from './Plugin'
|
|
2
|
+
|
|
3
|
+
export * from './Config'
|
|
4
|
+
export * from './Schema'
|
|
5
|
+
export * from './Witness'
|
|
6
|
+
|
|
7
|
+
export { XyoEthereumGasEtherscanPlugin }
|
|
8
|
+
|
|
9
|
+
// eslint-disable-next-line import/no-default-export
|
|
10
|
+
export default XyoEthereumGasEtherscanPlugin
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { getGasFromEtherscan } from './getGasFromEtherscan'
|
|
2
|
+
|
|
3
|
+
const apiKey = process.env.ETHERSCAN_API_KEY || ''
|
|
4
|
+
|
|
5
|
+
const testIf = (condition: boolean | string | null | undefined) => (condition ? it : it.skip)
|
|
6
|
+
|
|
7
|
+
describe('getGasFromEtherscan', () => {
|
|
8
|
+
testIf(apiKey)('returns prices', async () => {
|
|
9
|
+
const gas = await getGasFromEtherscan(apiKey)
|
|
10
|
+
expect(gas).toBeTruthy()
|
|
11
|
+
expect(gas.status).toEqual('1')
|
|
12
|
+
expect(gas.message).toEqual('OK')
|
|
13
|
+
expect(gas.result).toBeObject()
|
|
14
|
+
expect(gas.result.FastGasPrice).toBeString()
|
|
15
|
+
expect(gas.result.LastBlock).toBeString()
|
|
16
|
+
expect(gas.result.ProposeGasPrice).toBeString()
|
|
17
|
+
expect(gas.result.SafeGasPrice).toBeString()
|
|
18
|
+
expect(gas.result.gasUsedRatio).toBeString()
|
|
19
|
+
expect(gas.result.suggestBaseFee).toBeString()
|
|
20
|
+
})
|
|
21
|
+
})
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { EthereumGasEtherscanResponse } from '@xyo-network/etherscan-ethereum-gas-payload-plugin'
|
|
2
|
+
import axios from 'axios'
|
|
3
|
+
|
|
4
|
+
export const getGasFromEtherscan = async (apiKey: string): Promise<EthereumGasEtherscanResponse> => {
|
|
5
|
+
const url = `https://api.etherscan.io/api?module=gastracker&action=gasoracle&apikey=${apiKey}`
|
|
6
|
+
return (await axios.get<EthereumGasEtherscanResponse>(url)).data
|
|
7
|
+
}
|
package/src/lib/index.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './getGasFromEtherscan'
|