@degengineering/web3pgp-cli 1.0.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 +21 -0
- package/README.md +151 -0
- package/dist/commands/blockchain/addSubkey.d.ts +9 -0
- package/dist/commands/blockchain/addSubkey.d.ts.map +1 -0
- package/dist/commands/blockchain/addSubkey.js +49 -0
- package/dist/commands/blockchain/addSubkey.js.map +1 -0
- package/dist/commands/blockchain/certify.d.ts +13 -0
- package/dist/commands/blockchain/certify.d.ts.map +1 -0
- package/dist/commands/blockchain/certify.js +75 -0
- package/dist/commands/blockchain/certify.js.map +1 -0
- package/dist/commands/blockchain/challenge.d.ts +13 -0
- package/dist/commands/blockchain/challenge.d.ts.map +1 -0
- package/dist/commands/blockchain/challenge.js +58 -0
- package/dist/commands/blockchain/challenge.js.map +1 -0
- package/dist/commands/blockchain/generateKey.d.ts +7 -0
- package/dist/commands/blockchain/generateKey.d.ts.map +1 -0
- package/dist/commands/blockchain/generateKey.js +36 -0
- package/dist/commands/blockchain/generateKey.js.map +1 -0
- package/dist/commands/blockchain/getPublicKey.d.ts +9 -0
- package/dist/commands/blockchain/getPublicKey.d.ts.map +1 -0
- package/dist/commands/blockchain/getPublicKey.js +37 -0
- package/dist/commands/blockchain/getPublicKey.js.map +1 -0
- package/dist/commands/blockchain/index.d.ts +12 -0
- package/dist/commands/blockchain/index.d.ts.map +1 -0
- package/dist/commands/blockchain/index.js +33 -0
- package/dist/commands/blockchain/index.js.map +1 -0
- package/dist/commands/blockchain/keccak256.d.ts +7 -0
- package/dist/commands/blockchain/keccak256.d.ts.map +1 -0
- package/dist/commands/blockchain/keccak256.js +38 -0
- package/dist/commands/blockchain/keccak256.js.map +1 -0
- package/dist/commands/blockchain/listen.d.ts +9 -0
- package/dist/commands/blockchain/listen.d.ts.map +1 -0
- package/dist/commands/blockchain/listen.js +30 -0
- package/dist/commands/blockchain/listen.js.map +1 -0
- package/dist/commands/blockchain/prove.d.ts +13 -0
- package/dist/commands/blockchain/prove.d.ts.map +1 -0
- package/dist/commands/blockchain/prove.js +123 -0
- package/dist/commands/blockchain/prove.js.map +1 -0
- package/dist/commands/blockchain/register.d.ts +13 -0
- package/dist/commands/blockchain/register.d.ts.map +1 -0
- package/dist/commands/blockchain/register.js +65 -0
- package/dist/commands/blockchain/register.js.map +1 -0
- package/dist/commands/blockchain/revoke-certification.d.ts +13 -0
- package/dist/commands/blockchain/revoke-certification.d.ts.map +1 -0
- package/dist/commands/blockchain/revoke-certification.js +75 -0
- package/dist/commands/blockchain/revoke-certification.js.map +1 -0
- package/dist/commands/blockchain/revoke.d.ts +19 -0
- package/dist/commands/blockchain/revoke.d.ts.map +1 -0
- package/dist/commands/blockchain/revoke.js +118 -0
- package/dist/commands/blockchain/revoke.js.map +1 -0
- package/dist/commands/blockchain/sync.d.ts +20 -0
- package/dist/commands/blockchain/sync.d.ts.map +1 -0
- package/dist/commands/blockchain/sync.js +246 -0
- package/dist/commands/blockchain/sync.js.map +1 -0
- package/dist/commands/blockchain/update.d.ts +13 -0
- package/dist/commands/blockchain/update.d.ts.map +1 -0
- package/dist/commands/blockchain/update.js +60 -0
- package/dist/commands/blockchain/update.js.map +1 -0
- package/dist/commands/configuration/display.d.ts +10 -0
- package/dist/commands/configuration/display.d.ts.map +1 -0
- package/dist/commands/configuration/display.js +58 -0
- package/dist/commands/configuration/display.js.map +1 -0
- package/dist/commands/configuration/generate.d.ts +14 -0
- package/dist/commands/configuration/generate.d.ts.map +1 -0
- package/dist/commands/configuration/generate.js +222 -0
- package/dist/commands/configuration/generate.js.map +1 -0
- package/dist/commands/configuration/index.d.ts +6 -0
- package/dist/commands/configuration/index.d.ts.map +1 -0
- package/dist/commands/configuration/index.js +21 -0
- package/dist/commands/configuration/index.js.map +1 -0
- package/dist/commands/configuration/validate.d.ts +10 -0
- package/dist/commands/configuration/validate.d.ts.map +1 -0
- package/dist/commands/configuration/validate.js +45 -0
- package/dist/commands/configuration/validate.js.map +1 -0
- package/dist/commands/factory.d.ts +33 -0
- package/dist/commands/factory.d.ts.map +1 -0
- package/dist/commands/factory.js +48 -0
- package/dist/commands/factory.js.map +1 -0
- package/dist/config/defaults.d.ts +8 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +11 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/loader.d.ts +12 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +205 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/testnet.d.ts +6 -0
- package/dist/config/testnet.d.ts.map +1 -0
- package/dist/config/testnet.js +26 -0
- package/dist/config/testnet.js.map +1 -0
- package/dist/config/transport.d.ts +17 -0
- package/dist/config/transport.d.ts.map +1 -0
- package/dist/config/transport.js +46 -0
- package/dist/config/transport.js.map +1 -0
- package/dist/config/types.d.ts +92 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +12 -0
- package/dist/config/types.js.map +1 -0
- package/dist/config/validator.d.ts +14 -0
- package/dist/config/validator.d.ts.map +1 -0
- package/dist/config/validator.js +156 -0
- package/dist/config/validator.js.map +1 -0
- package/dist/errors.d.ts +13 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +28 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +61 -0
- package/dist/index.js.map +1 -0
- package/dist/services/web3pgpServiceFactory.d.ts +14 -0
- package/dist/services/web3pgpServiceFactory.d.ts.map +1 -0
- package/dist/services/web3pgpServiceFactory.js +228 -0
- package/dist/services/web3pgpServiceFactory.js.map +1 -0
- package/dist/setup.d.ts +14 -0
- package/dist/setup.d.ts.map +1 -0
- package/dist/setup.js +46 -0
- package/dist/setup.js.map +1 -0
- package/dist/types.d.ts +5 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/clients.d.ts +49373 -0
- package/dist/utils/clients.d.ts.map +1 -0
- package/dist/utils/clients.js +129 -0
- package/dist/utils/clients.js.map +1 -0
- package/dist/utils/input.d.ts +24 -0
- package/dist/utils/input.d.ts.map +1 -0
- package/dist/utils/input.js +138 -0
- package/dist/utils/input.js.map +1 -0
- package/dist/utils/logger.d.ts +12 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +35 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +75 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/commands/configuration/generate.ts"],"names":[],"mappings":";;;;;AAOA,wDA4KC;AASD,kEAgCC;AA5ND,4CAAoB;AACpB,yCAAoC;AAGpC;;GAEG;AACH,SAAgB,sBAAsB,CAAC,cAA+B,MAAM;IAC1E,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;QAC3B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuFV,CAAC;IACA,CAAC;SAAM,CAAC;QACN,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+EV,CAAC;IACA,CAAC;AACH,CAAC;AAMD;;GAEG;AACH,SAAgB,2BAA2B,CAAC,IAA+B;IACzE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACxB,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;IAExD,OAAO,IAAI,mBAAO,CAAC,UAAU,CAAC;SAC3B,WAAW,CAAC,wCAAwC,CAAC;SACrD,QAAQ,CAAC,eAAe,EAAE,2CAA2C,EAAE,MAAM,CAAC;SAC9E,MAAM,CAAC,qBAAqB,EAAE,oCAAoC,CAAC;SACnE,MAAM,CAAC,KAAK,EAAE,WAAmB,EAAE,OAA4B,EAAE,EAAE;QAClE,IAAI,CAAC;YACH,gCAAgC;YAChC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC5C,MAAM,IAAI,KAAK,CAAC,wBAAwB,WAAW,6BAA6B,CAAC,CAAC;YACpF,CAAC;YAED,SAAS,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,EAAE,4BAA4B,CAAC,CAAC;YAC9D,MAAM,QAAQ,GAAG,sBAAsB,CAAC,WAA8B,CAAC,CAAC;YAExE,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACnB,YAAE,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;gBAC3C,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,yBAAyB,CAAC,CAAC;gBACjF,OAAO,CAAC,GAAG,CAAC,qCAAqC,OAAO,CAAC,MAAM,KAAK,WAAW,eAAe,CAAC,CAAC;YAClG,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACxB,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACnE,SAAS,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,2BAA2B,CAAC,CAAC;YAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/configuration/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC;;GAEG;AACH,wBAAgB,2BAA2B,IAAI,OAAO,CAUrD"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createConfigurationCommands = createConfigurationCommands;
|
|
4
|
+
const commander_1 = require("commander");
|
|
5
|
+
const logger_1 = require("../../utils/logger");
|
|
6
|
+
const display_1 = require("./display");
|
|
7
|
+
const generate_1 = require("./generate");
|
|
8
|
+
const validate_1 = require("./validate");
|
|
9
|
+
/**
|
|
10
|
+
* Create all configuration commands and add them to a group
|
|
11
|
+
*/
|
|
12
|
+
function createConfigurationCommands() {
|
|
13
|
+
const logger = (0, logger_1.createRootLogger)('info');
|
|
14
|
+
const group = new commander_1.Command('configuration').description('Configuration management (generate, display, validate)');
|
|
15
|
+
// Add configuration commands
|
|
16
|
+
group.addCommand((0, display_1.createConfigDisplayCommand)({ logger }));
|
|
17
|
+
group.addCommand((0, generate_1.createConfigGenerateCommand)({ logger }));
|
|
18
|
+
group.addCommand((0, validate_1.createConfigValidateCommand)({ logger }));
|
|
19
|
+
return group;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/configuration/index.ts"],"names":[],"mappings":";;AASA,kEAUC;AAnBD,yCAAoC;AACpC,+CAAsD;AACtD,uCAAuD;AACvD,yCAAyD;AACzD,yCAAyD;AAEzD;;GAEG;AACH,SAAgB,2BAA2B;IACzC,MAAM,MAAM,GAAG,IAAA,yBAAgB,EAAC,MAAM,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,IAAI,mBAAO,CAAC,eAAe,CAAC,CAAC,WAAW,CAAC,wDAAwD,CAAC,CAAC;IAEjH,6BAA6B;IAC7B,KAAK,CAAC,UAAU,CAAC,IAAA,oCAA0B,EAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IACzD,KAAK,CAAC,UAAU,CAAC,IAAA,sCAA2B,EAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAC1D,KAAK,CAAC,UAAU,CAAC,IAAA,sCAA2B,EAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAE1D,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { Logger } from 'pino';
|
|
3
|
+
export interface ConfigValidateCommandDeps {
|
|
4
|
+
logger: Logger;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Create the 'configuration validate' command
|
|
8
|
+
*/
|
|
9
|
+
export declare function createConfigValidateCommand(deps: ConfigValidateCommandDeps): Command;
|
|
10
|
+
//# sourceMappingURL=validate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../src/commands/configuration/validate.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAG9B,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAmCpF"}
|
|
@@ -0,0 +1,45 @@
|
|
|
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.createConfigValidateCommand = createConfigValidateCommand;
|
|
7
|
+
const fs_1 = __importDefault(require("fs"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const commander_1 = require("commander");
|
|
10
|
+
const validator_1 = require("../../config/validator");
|
|
11
|
+
/**
|
|
12
|
+
* Create the 'configuration validate' command
|
|
13
|
+
*/
|
|
14
|
+
function createConfigValidateCommand(deps) {
|
|
15
|
+
const { logger } = deps;
|
|
16
|
+
const cmdLogger = logger.child({ command: 'validate' });
|
|
17
|
+
return new commander_1.Command('validate')
|
|
18
|
+
.description('Validate configuration file format')
|
|
19
|
+
.option('--config <path>', 'Config file path (default: ~/.web3pgp/config.yaml)')
|
|
20
|
+
.action((options) => {
|
|
21
|
+
try {
|
|
22
|
+
const configPath = options.config || path_1.default.join(process.env.HOME || '~', '.web3pgp', 'config.yaml');
|
|
23
|
+
cmdLogger.info({ path: configPath }, 'Validating config file');
|
|
24
|
+
// Check if file exists
|
|
25
|
+
if (!fs_1.default.existsSync(configPath)) {
|
|
26
|
+
cmdLogger.error({ path: configPath }, 'Config file not found');
|
|
27
|
+
console.error(`Error: Config file not found at ${configPath}`);
|
|
28
|
+
process.exit(2);
|
|
29
|
+
}
|
|
30
|
+
// Read and validate
|
|
31
|
+
const content = fs_1.default.readFileSync(configPath, 'utf-8');
|
|
32
|
+
(0, validator_1.validateConfigFormat)(content);
|
|
33
|
+
cmdLogger.info({ path: configPath }, 'Config file is valid');
|
|
34
|
+
console.log(`✓ Configuration file is valid: ${configPath}`);
|
|
35
|
+
process.exit(0);
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
const message = error instanceof Error ? error.message : 'Unknown error';
|
|
39
|
+
cmdLogger.error({ error: message }, 'Config validation failed');
|
|
40
|
+
console.error(`Error: ${message}`);
|
|
41
|
+
process.exit(2);
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/commands/configuration/validate.ts"],"names":[],"mappings":";;;;;AAaA,kEAmCC;AAhDD,4CAAoB;AACpB,gDAAwB;AACxB,yCAAoC;AAEpC,sDAA8D;AAM9D;;GAEG;AACH,SAAgB,2BAA2B,CAAC,IAA+B;IACzE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACxB,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;IAExD,OAAO,IAAI,mBAAO,CAAC,UAAU,CAAC;SAC3B,WAAW,CAAC,oCAAoC,CAAC;SACjD,MAAM,CAAC,iBAAiB,EAAE,oDAAoD,CAAC;SAC/E,MAAM,CAAC,CAAC,OAA4B,EAAE,EAAE;QACvC,IAAI,CAAC;YACH,MAAM,UAAU,GACd,OAAO,CAAC,MAAM,IAAI,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;YAElF,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,wBAAwB,CAAC,CAAC;YAE/D,uBAAuB;YACvB,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC/B,SAAS,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,uBAAuB,CAAC,CAAC;gBAC/D,OAAO,CAAC,KAAK,CAAC,mCAAmC,UAAU,EAAE,CAAC,CAAC;gBAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,oBAAoB;YACpB,MAAM,OAAO,GAAG,YAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YACrD,IAAA,gCAAoB,EAAC,OAAO,CAAC,CAAC;YAE9B,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,sBAAsB,CAAC,CAAC;YAC7D,OAAO,CAAC,GAAG,CAAC,kCAAkC,UAAU,EAAE,CAAC,CAAC;YAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YACzE,SAAS,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,0BAA0B,CAAC,CAAC;YAChE,OAAO,CAAC,KAAK,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC;YACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { Logger } from 'pino';
|
|
3
|
+
import { IWeb3PGPService } from '@degengineering/dexes';
|
|
4
|
+
import { MergedConfig } from '../config/types';
|
|
5
|
+
/**
|
|
6
|
+
* Dependencies injected into command handlers
|
|
7
|
+
*/
|
|
8
|
+
export interface CommandDeps {
|
|
9
|
+
config: MergedConfig;
|
|
10
|
+
logger: Logger;
|
|
11
|
+
service?: IWeb3PGPService;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Create a subcommand group for blockchain operations
|
|
15
|
+
*/
|
|
16
|
+
export declare function createBlockchainCommandGroup(): Command;
|
|
17
|
+
/**
|
|
18
|
+
* Create a subcommand group for configuration operations
|
|
19
|
+
*/
|
|
20
|
+
export declare function createConfigurationCommandGroup(): Command;
|
|
21
|
+
/**
|
|
22
|
+
* Helper to format and output JSON to stdout
|
|
23
|
+
*/
|
|
24
|
+
export declare function outputJson(data: unknown): void;
|
|
25
|
+
/**
|
|
26
|
+
* Helper to output error to stderr and exit with code
|
|
27
|
+
*/
|
|
28
|
+
export declare function exitWithError(message: string, exitCode?: number): never;
|
|
29
|
+
/**
|
|
30
|
+
* Mask sensitive data for display (show first 4 and last 4 chars)
|
|
31
|
+
*/
|
|
32
|
+
export declare function maskSensitiveData(data: string, showChars?: number): string;
|
|
33
|
+
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/commands/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,eAAe,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAgB,4BAA4B,IAAI,OAAO,CAMtD;AAED;;GAEG;AACH,wBAAgB,+BAA+B,IAAI,OAAO,CAMzD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAE9C;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAU,GAAG,KAAK,CAG1E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,GAAE,MAAU,GAAG,MAAM,CAG7E"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createBlockchainCommandGroup = createBlockchainCommandGroup;
|
|
4
|
+
exports.createConfigurationCommandGroup = createConfigurationCommandGroup;
|
|
5
|
+
exports.outputJson = outputJson;
|
|
6
|
+
exports.exitWithError = exitWithError;
|
|
7
|
+
exports.maskSensitiveData = maskSensitiveData;
|
|
8
|
+
const commander_1 = require("commander");
|
|
9
|
+
/**
|
|
10
|
+
* Create a subcommand group for blockchain operations
|
|
11
|
+
*/
|
|
12
|
+
function createBlockchainCommandGroup() {
|
|
13
|
+
const group = new commander_1.Command('blockchain')
|
|
14
|
+
.description('Blockchain operations (register keys, revoke, listen for events)');
|
|
15
|
+
// Commands will be added by caller
|
|
16
|
+
return group;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Create a subcommand group for configuration operations
|
|
20
|
+
*/
|
|
21
|
+
function createConfigurationCommandGroup() {
|
|
22
|
+
const group = new commander_1.Command('configuration')
|
|
23
|
+
.description('Configuration management (generate, display, validate)');
|
|
24
|
+
// Commands will be added by caller
|
|
25
|
+
return group;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Helper to format and output JSON to stdout
|
|
29
|
+
*/
|
|
30
|
+
function outputJson(data) {
|
|
31
|
+
console.log(JSON.stringify(data, null, 2));
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Helper to output error to stderr and exit with code
|
|
35
|
+
*/
|
|
36
|
+
function exitWithError(message, exitCode = 1) {
|
|
37
|
+
console.error(JSON.stringify({ error: message }, null, 2));
|
|
38
|
+
process.exit(exitCode);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Mask sensitive data for display (show first 4 and last 4 chars)
|
|
42
|
+
*/
|
|
43
|
+
function maskSensitiveData(data, showChars = 4) {
|
|
44
|
+
if (data.length <= showChars * 2)
|
|
45
|
+
return '****';
|
|
46
|
+
return `${data.substring(0, showChars)}...${data.substring(data.length - showChars)}`;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/commands/factory.ts"],"names":[],"mappings":";;AAiBA,oEAMC;AAKD,0EAMC;AAKD,gCAEC;AAKD,sCAGC;AAKD,8CAGC;AAzDD,yCAAoC;AAcpC;;GAEG;AACH,SAAgB,4BAA4B;IAC1C,MAAM,KAAK,GAAG,IAAI,mBAAO,CAAC,YAAY,CAAC;SACpC,WAAW,CAAC,kEAAkE,CAAC,CAAC;IAEnF,mCAAmC;IACnC,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAgB,+BAA+B;IAC7C,MAAM,KAAK,GAAG,IAAI,mBAAO,CAAC,eAAe,CAAC;SACvC,WAAW,CAAC,wDAAwD,CAAC,CAAC;IAEzE,mCAAmC;IACnC,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAgB,UAAU,CAAC,IAAa;IACtC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa,CAAC,OAAe,EAAE,WAAmB,CAAC;IACjE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3D,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,IAAY,EAAE,YAAoB,CAAC;IACnE,IAAI,IAAI,CAAC,MAAM,IAAI,SAAS,GAAG,CAAC;QAAE,OAAO,MAAM,CAAC;IAChD,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;AACxF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC;;;;GAIG;AACH,eAAO,MAAM,cAAc,EAAE,YAA6B,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DEFAULT_CONFIG = void 0;
|
|
4
|
+
const testnet_1 = require("./testnet");
|
|
5
|
+
/**
|
|
6
|
+
* Default configuration for Web3PGP CLI.
|
|
7
|
+
*
|
|
8
|
+
* Uses the testnet configuration as the default.
|
|
9
|
+
*/
|
|
10
|
+
exports.DEFAULT_CONFIG = testnet_1.TESTNET_CONFIG;
|
|
11
|
+
//# sourceMappingURL=defaults.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":";;;AAAA,uCAA2C;AAG3C;;;;GAIG;AACU,QAAA,cAAc,GAAiB,wBAAc,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { MergedConfig } from './types';
|
|
2
|
+
export interface LoadConfigOptions {
|
|
3
|
+
configPath?: string;
|
|
4
|
+
envVars?: Record<string, string>;
|
|
5
|
+
cliFlags?: Partial<MergedConfig>;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Load configuration from all sources with 3-tier precedence:
|
|
9
|
+
* Defaults < Config File < Environment Variables < CLI Flags
|
|
10
|
+
*/
|
|
11
|
+
export declare function loadConfig(options?: LoadConfigOptions): MergedConfig;
|
|
12
|
+
//# sourceMappingURL=loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAc,MAAM,SAAS,CAAC;AAEnD,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;CAClC;AA0LD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,OAAO,GAAE,iBAAsB,GAAG,YAAY,CA+BxE"}
|
|
@@ -0,0 +1,205 @@
|
|
|
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.loadConfig = loadConfig;
|
|
7
|
+
const fs_1 = __importDefault(require("fs"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const yaml_1 = require("yaml");
|
|
10
|
+
const errors_1 = require("../errors");
|
|
11
|
+
const defaults_1 = require("./defaults");
|
|
12
|
+
const validator_1 = require("./validator");
|
|
13
|
+
const types_1 = require("./types");
|
|
14
|
+
/**
|
|
15
|
+
* Expand environment variables in string values
|
|
16
|
+
* Supports ${VAR_NAME} syntax
|
|
17
|
+
*/
|
|
18
|
+
function expandEnvVars(value, env) {
|
|
19
|
+
return value.replace(/\$\{([^}]+)\}/g, (_, varName) => {
|
|
20
|
+
return env[varName] || `\${${varName}}`;
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Recursively expand environment variables in an object
|
|
25
|
+
*/
|
|
26
|
+
function expandEnvVarsInObject(obj, env) {
|
|
27
|
+
if (typeof obj === 'string') {
|
|
28
|
+
return expandEnvVars(obj, env);
|
|
29
|
+
}
|
|
30
|
+
if (Array.isArray(obj)) {
|
|
31
|
+
return obj.map((item) => expandEnvVarsInObject(item, env));
|
|
32
|
+
}
|
|
33
|
+
if (obj !== null && typeof obj === 'object') {
|
|
34
|
+
const expanded = {};
|
|
35
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
36
|
+
expanded[key] = expandEnvVarsInObject(value, env);
|
|
37
|
+
}
|
|
38
|
+
return expanded;
|
|
39
|
+
}
|
|
40
|
+
return obj;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Load configuration file from path
|
|
44
|
+
*/
|
|
45
|
+
function loadConfigFile(filePath) {
|
|
46
|
+
try {
|
|
47
|
+
const content = fs_1.default.readFileSync(filePath, 'utf-8');
|
|
48
|
+
const parsed = (0, yaml_1.parse)(content);
|
|
49
|
+
return parsed || {};
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
// Check if it's a file not found error
|
|
53
|
+
if (error instanceof Error &&
|
|
54
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
55
|
+
error.code === 'ENOENT') {
|
|
56
|
+
return {}; // File doesn't exist, return empty config
|
|
57
|
+
}
|
|
58
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
59
|
+
throw new errors_1.ConfigError(`Failed to load config file ${filePath}: ${message}`);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Load configuration from environment variables
|
|
64
|
+
* Supports DEXES_* prefix
|
|
65
|
+
*/
|
|
66
|
+
function loadEnvVarsConfig(env) {
|
|
67
|
+
const config = {};
|
|
68
|
+
// DEXES_CHAIN (well-known chain name or numeric chain ID)
|
|
69
|
+
if (env.DEXES_CHAIN) {
|
|
70
|
+
if (!config.ethereum)
|
|
71
|
+
config.ethereum = {};
|
|
72
|
+
// Try to parse as number, otherwise treat as string
|
|
73
|
+
const chainValue = isNaN(Number(env.DEXES_CHAIN))
|
|
74
|
+
? env.DEXES_CHAIN
|
|
75
|
+
: Number(env.DEXES_CHAIN);
|
|
76
|
+
config.ethereum.chain = chainValue;
|
|
77
|
+
}
|
|
78
|
+
// Legacy: DEXES_CHAIN_ID (numeric only, converts to number)
|
|
79
|
+
if (env.DEXES_CHAIN_ID) {
|
|
80
|
+
if (!config.ethereum)
|
|
81
|
+
config.ethereum = {};
|
|
82
|
+
config.ethereum.chain = parseInt(env.DEXES_CHAIN_ID, 10);
|
|
83
|
+
}
|
|
84
|
+
// DEXES_RPC_URL (single endpoint override)
|
|
85
|
+
if (env.DEXES_RPC_URL) {
|
|
86
|
+
if (!config.ethereum)
|
|
87
|
+
config.ethereum = {};
|
|
88
|
+
if (!config.ethereum.rpc) {
|
|
89
|
+
config.ethereum.rpc = {};
|
|
90
|
+
}
|
|
91
|
+
config.ethereum.rpc.endpoints =
|
|
92
|
+
[{ url: env.DEXES_RPC_URL, priority: 1 }];
|
|
93
|
+
}
|
|
94
|
+
// DEXES_RPC_ENDPOINTS (JSON array)
|
|
95
|
+
if (env.DEXES_RPC_ENDPOINTS) {
|
|
96
|
+
try {
|
|
97
|
+
if (!config.ethereum)
|
|
98
|
+
config.ethereum = {};
|
|
99
|
+
if (!config.ethereum.rpc) {
|
|
100
|
+
config.ethereum.rpc = {};
|
|
101
|
+
}
|
|
102
|
+
config.ethereum.rpc.endpoints =
|
|
103
|
+
JSON.parse(env.DEXES_RPC_ENDPOINTS);
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
throw new errors_1.ConfigError(`Failed to parse DEXES_RPC_ENDPOINTS: ${error}`);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
// DEXES_WALLET_PRIVATE_KEY
|
|
110
|
+
if (env.DEXES_WALLET_PRIVATE_KEY) {
|
|
111
|
+
if (!config.ethereum)
|
|
112
|
+
config.ethereum = {};
|
|
113
|
+
if (!config.ethereum.wallet) {
|
|
114
|
+
config.ethereum.wallet = {};
|
|
115
|
+
}
|
|
116
|
+
config.ethereum.wallet.privateKey =
|
|
117
|
+
env.DEXES_WALLET_PRIVATE_KEY;
|
|
118
|
+
}
|
|
119
|
+
// DEXES_WEB3PGP_CONTRACT
|
|
120
|
+
if (env.DEXES_WEB3PGP_CONTRACT) {
|
|
121
|
+
if (!config.web3pgp)
|
|
122
|
+
config.web3pgp = {};
|
|
123
|
+
config.web3pgp.contract =
|
|
124
|
+
env.DEXES_WEB3PGP_CONTRACT;
|
|
125
|
+
}
|
|
126
|
+
// DEXES_LOG_LEVEL
|
|
127
|
+
if (env.DEXES_LOG_LEVEL) {
|
|
128
|
+
if (!config.monitoring)
|
|
129
|
+
config.monitoring = {};
|
|
130
|
+
if (!config.monitoring.logging) {
|
|
131
|
+
config.monitoring.logging = {};
|
|
132
|
+
}
|
|
133
|
+
config.monitoring.logging.level =
|
|
134
|
+
env.DEXES_LOG_LEVEL;
|
|
135
|
+
}
|
|
136
|
+
return config;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Deep merge configuration objects
|
|
140
|
+
* Later values override earlier ones
|
|
141
|
+
*/
|
|
142
|
+
function mergeConfigs(...configs) {
|
|
143
|
+
const result = JSON.parse(JSON.stringify(defaults_1.DEFAULT_CONFIG));
|
|
144
|
+
for (const config of configs) {
|
|
145
|
+
if (!config)
|
|
146
|
+
continue;
|
|
147
|
+
// Merge ethereum config
|
|
148
|
+
if (config.ethereum) {
|
|
149
|
+
if (config.ethereum.chain !== undefined) {
|
|
150
|
+
result.ethereum.chain = config.ethereum.chain;
|
|
151
|
+
}
|
|
152
|
+
if (config.ethereum.rpc?.endpoints) {
|
|
153
|
+
result.ethereum.rpc = {
|
|
154
|
+
endpoints: config.ethereum.rpc.endpoints.map((endpoint) => ({
|
|
155
|
+
url: endpoint.url,
|
|
156
|
+
priority: endpoint.priority,
|
|
157
|
+
...(endpoint.batching !== undefined && { batching: endpoint.batching }),
|
|
158
|
+
})),
|
|
159
|
+
...(config.ethereum.rpc.maxBlockRange !== undefined && { maxBlockRange: config.ethereum.rpc.maxBlockRange }),
|
|
160
|
+
...(config.ethereum.rpc.retry !== undefined && { retry: config.ethereum.rpc.retry }),
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
if (config.ethereum.wallet) {
|
|
164
|
+
// Wallet can be completely replaced if provided
|
|
165
|
+
result.ethereum.wallet = {
|
|
166
|
+
type: config.ethereum.wallet.type || result.ethereum.wallet?.type || types_1.WalletType.PrivateKey,
|
|
167
|
+
privateKey: config.ethereum.wallet.privateKey,
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
// Merge web3pgp config
|
|
172
|
+
if (config.web3pgp?.contract) {
|
|
173
|
+
result.web3pgp.contract = config.web3pgp.contract;
|
|
174
|
+
}
|
|
175
|
+
// Merge monitoring config
|
|
176
|
+
if (config.monitoring?.logging?.level) {
|
|
177
|
+
result.monitoring.logging.level = config.monitoring.logging.level;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
return result;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Load configuration from all sources with 3-tier precedence:
|
|
184
|
+
* Defaults < Config File < Environment Variables < CLI Flags
|
|
185
|
+
*/
|
|
186
|
+
function loadConfig(options = {}) {
|
|
187
|
+
const env = options.envVars || process.env;
|
|
188
|
+
// Step 1: Start with defaults
|
|
189
|
+
const defaults = defaults_1.DEFAULT_CONFIG;
|
|
190
|
+
// Step 2: Load config file
|
|
191
|
+
const configPath = options.configPath || path_1.default.join(process.env.HOME || '~', '.web3pgp', 'config.yaml');
|
|
192
|
+
const fileConfig = fs_1.default.existsSync(configPath) ? loadConfigFile(configPath) : {};
|
|
193
|
+
// Expand environment variables in file config
|
|
194
|
+
const expandedFileConfig = expandEnvVarsInObject(fileConfig, env);
|
|
195
|
+
// Validate file config structure if it exists
|
|
196
|
+
if (Object.keys(fileConfig).length > 0) {
|
|
197
|
+
(0, validator_1.validateYamlStructure)(expandedFileConfig);
|
|
198
|
+
}
|
|
199
|
+
// Step 3: Load environment variables
|
|
200
|
+
const envConfig = loadEnvVarsConfig(env);
|
|
201
|
+
// Step 4: Merge with CLI flags (if provided)
|
|
202
|
+
const merged = mergeConfigs(defaults, expandedFileConfig, envConfig, options.cliFlags || {});
|
|
203
|
+
return merged;
|
|
204
|
+
}
|
|
205
|
+
//# sourceMappingURL=loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":";;;;;AA0MA,gCA+BC;AAzOD,4CAAoB;AACpB,gDAAwB;AACxB,+BAA0C;AAC1C,sCAAwC;AACxC,yCAA4C;AAC5C,2CAAoD;AACpD,mCAAmD;AAQnD;;;GAGG;AACH,SAAS,aAAa,CAAC,KAAa,EAAE,GAAuC;IAC3E,OAAO,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE;QACpD,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,MAAM,OAAO,GAAG,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAC5B,GAAY,EACZ,GAAuC;IAEvC,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACjC,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,qBAAqB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5C,MAAM,QAAQ,GAA4B,EAAE,CAAC;QAC7C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/C,QAAQ,CAAC,GAAG,CAAC,GAAG,qBAAqB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,QAAgB;IACtC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,YAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,IAAA,YAAS,EAAC,OAAO,CAAC,CAAC;QAClC,OAAO,MAAM,IAAI,EAAE,CAAC;IACtB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,uCAAuC;QACvC,IACE,KAAK,YAAY,KAAK;YACtB,8DAA8D;YAC7D,KAAa,CAAC,IAAI,KAAK,QAAQ,EAChC,CAAC;YACD,OAAO,EAAE,CAAC,CAAC,0CAA0C;QACvD,CAAC;QACD,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,IAAI,oBAAW,CAAC,8BAA8B,QAAQ,KAAK,OAAO,EAAE,CAAC,CAAC;IAC9E,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CAAC,GAAuC;IAChE,MAAM,MAAM,GAA4B,EAAE,CAAC;IAE3C,0DAA0D;IAC1D,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;QACpB,IAAI,CAAC,MAAM,CAAC,QAAQ;YAAE,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;QAC3C,oDAAoD;QACpD,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAC/C,CAAC,CAAC,GAAG,CAAC,WAAW;YACjB,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC3B,MAAM,CAAC,QAAoC,CAAC,KAAK,GAAG,UAAU,CAAC;IAClE,CAAC;IAED,4DAA4D;IAC5D,IAAI,GAAG,CAAC,cAAc,EAAE,CAAC;QACvB,IAAI,CAAC,MAAM,CAAC,QAAQ;YAAE,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;QAC1C,MAAM,CAAC,QAAoC,CAAC,KAAK,GAAG,QAAQ,CAC3D,GAAG,CAAC,cAAc,EAClB,EAAE,CACH,CAAC;IACJ,CAAC;IAED,2CAA2C;IAC3C,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;QACtB,IAAI,CAAC,MAAM,CAAC,QAAQ;YAAE,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;QAC3C,IAAI,CAAE,MAAM,CAAC,QAAoC,CAAC,GAAG,EAAE,CAAC;YACrD,MAAM,CAAC,QAAoC,CAAC,GAAG,GAAG,EAAE,CAAC;QACxD,CAAC;QACC,MAAM,CAAC,QAAoC,CAAC,GAA+B,CAAC,SAAS;YACrF,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,aAAa,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,mCAAmC;IACnC,IAAI,GAAG,CAAC,mBAAmB,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,QAAQ;gBAAE,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;YAC3C,IAAI,CAAE,MAAM,CAAC,QAAoC,CAAC,GAAG,EAAE,CAAC;gBACrD,MAAM,CAAC,QAAoC,CAAC,GAAG,GAAG,EAAE,CAAC;YACxD,CAAC;YACC,MAAM,CAAC,QAAoC,CAAC,GAA+B,CAAC,SAAS;gBACrF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,oBAAW,CAAC,wCAAwC,KAAK,EAAE,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAED,2BAA2B;IAC3B,IAAI,GAAG,CAAC,wBAAwB,EAAE,CAAC;QACjC,IAAI,CAAC,MAAM,CAAC,QAAQ;YAAE,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;QAC3C,IAAI,CAAE,MAAM,CAAC,QAAoC,CAAC,MAAM,EAAE,CAAC;YACxD,MAAM,CAAC,QAAoC,CAAC,MAAM,GAAG,EAAE,CAAC;QAC3D,CAAC;QACC,MAAM,CAAC,QAAoC,CAAC,MAAkC,CAAC,UAAU;YACzF,GAAG,CAAC,wBAAwB,CAAC;IACjC,CAAC;IAED,yBAAyB;IACzB,IAAI,GAAG,CAAC,sBAAsB,EAAE,CAAC;QAC/B,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC;QACxC,MAAM,CAAC,OAAmC,CAAC,QAAQ;YAClD,GAAG,CAAC,sBAAsB,CAAC;IAC/B,CAAC;IAED,kBAAkB;IAClB,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC;QACxB,IAAI,CAAC,MAAM,CAAC,UAAU;YAAE,MAAM,CAAC,UAAU,GAAG,EAAE,CAAC;QAC/C,IAAI,CAAE,MAAM,CAAC,UAAsC,CAAC,OAAO,EAAE,CAAC;YAC3D,MAAM,CAAC,UAAsC,CAAC,OAAO,GAAG,EAAE,CAAC;QAC9D,CAAC;QACC,MAAM,CAAC,UAAsC,CAAC,OAAmC,CAAC,KAAK;YACvF,GAAG,CAAC,eAAe,CAAC;IACxB,CAAC;IAED,OAAO,MAA+B,CAAC;AACzC,CAAC;AAED;;;GAGG;AACH,SAAS,YAAY,CAAC,GAAG,OAAgC;IACvD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,yBAAc,CAAC,CAAiB,CAAC;IAE1E,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,MAAM;YAAE,SAAS;QAEtB,wBAAwB;QACxB,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxC,MAAM,CAAC,QAAQ,CAAC,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;YAChD,CAAC;YACD,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC;gBACnC,MAAM,CAAC,QAAQ,CAAC,GAAG,GAAG;oBACpB,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;wBAC1D,GAAG,EAAE,QAAQ,CAAC,GAAG;wBACjB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;wBAC3B,GAAG,CAAC,QAAQ,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC;qBACxE,CAAC,CAAC;oBACH,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,KAAK,SAAS,IAAI,EAAE,aAAa,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;oBAC5G,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;iBACrF,CAAC;YACJ,CAAC;YACD,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;gBAC3B,gDAAgD;gBAChD,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG;oBACvB,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,IAAI,kBAAU,CAAC,UAAU;oBAC1F,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU;iBAC9C,CAAC;YACJ,CAAC;QACH,CAAC;QAED,uBAAuB;QACvB,IAAI,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC;YAC7B,MAAM,CAAC,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;QACpD,CAAC;QAED,0BAA0B;QAC1B,IAAI,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;YACtC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC;QACpE,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,SAAgB,UAAU,CAAC,UAA6B,EAAE;IACxD,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC;IAE3C,8BAA8B;IAC9B,MAAM,QAAQ,GAAG,yBAAc,CAAC;IAEhC,2BAA2B;IAC3B,MAAM,UAAU,GACd,OAAO,CAAC,UAAU,IAAI,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;IACtF,MAAM,UAAU,GAAG,YAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAE/E,8CAA8C;IAC9C,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,UAAU,EAAE,GAAG,CAA0B,CAAC;IAE3F,8CAA8C;IAC9C,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvC,IAAA,iCAAqB,EAAC,kBAAkB,CAAC,CAAC;IAC5C,CAAC;IAED,qCAAqC;IACrC,MAAM,SAAS,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAEzC,6CAA6C;IAC7C,MAAM,MAAM,GAAG,YAAY,CACzB,QAAQ,EACR,kBAA2C,EAC3C,SAAS,EACT,OAAO,CAAC,QAAQ,IAAI,EAAE,CACvB,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testnet.d.ts","sourceRoot":"","sources":["../../src/config/testnet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAc,MAAM,SAAS,CAAC;AAEnD;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,YAiB5B,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TESTNET_CONFIG = void 0;
|
|
4
|
+
const types_1 = require("./types");
|
|
5
|
+
/**
|
|
6
|
+
* Configuration for Web3PGP CLI targeting the Sepolia testnet
|
|
7
|
+
*/
|
|
8
|
+
exports.TESTNET_CONFIG = {
|
|
9
|
+
ethereum: {
|
|
10
|
+
chain: 'sepolia',
|
|
11
|
+
rpc: {
|
|
12
|
+
endpoints: [
|
|
13
|
+
{ url: 'https://ethereum-sepolia-rpc.publicnode.com', priority: 1, batching: { size: 20, waitMs: 100 } },
|
|
14
|
+
{ url: 'https://sepolia.gateway.tenderly.co', priority: 2, batching: { size: 20, waitMs: 100 } },
|
|
15
|
+
{ url: 'https://sepolia.drpc.org', priority: 3, batching: { size: 20, waitMs: 100 } },
|
|
16
|
+
{ url: 'https://1rpc.io/sepolia', priority: 4, batching: { size: 20, waitMs: 100 } },
|
|
17
|
+
],
|
|
18
|
+
maxBlockRange: 10000,
|
|
19
|
+
retry: { count: 3, delayMs: 200 },
|
|
20
|
+
},
|
|
21
|
+
wallet: { type: types_1.WalletType.PrivateKey },
|
|
22
|
+
},
|
|
23
|
+
web3pgp: { contract: '0x82733B49e65A2FE6B611e5CE454AC21237071638' },
|
|
24
|
+
monitoring: { logging: { level: 'info' } },
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=testnet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testnet.js","sourceRoot":"","sources":["../../src/config/testnet.ts"],"names":[],"mappings":";;;AAAA,mCAAmD;AAEnD;;GAEG;AACU,QAAA,cAAc,GAAiB;IAC1C,QAAQ,EAAE;QACR,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE;YACH,SAAS,EAAE;gBACT,EAAE,GAAG,EAAE,6CAA6C,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;gBACxG,EAAE,GAAG,EAAE,qCAAqC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;gBAChG,EAAE,GAAG,EAAE,0BAA0B,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;gBACrF,EAAE,GAAG,EAAE,yBAAyB,EAAE,QAAQ,EAAE,CAAC,EAAG,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;aACtF;YACD,aAAa,EAAE,KAAK;YACpB,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE;SAClC;QACD,MAAM,EAAE,EAAE,IAAI,EAAE,kBAAU,CAAC,UAAU,EAAE;KACxC;IACD,OAAO,EAAE,EAAE,QAAQ,EAAE,4CAAqD,EAAE;IAC5E,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;CAC3C,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utilities for building Viem transport configurations from RPC endpoint configuration
|
|
3
|
+
*/
|
|
4
|
+
import { RpcEndpoint, RetryConfig } from './types';
|
|
5
|
+
/**
|
|
6
|
+
* Builds a Viem fallback transport from RPC endpoint configuration
|
|
7
|
+
*
|
|
8
|
+
* Creates an HTTP transport for each endpoint with its own batching configuration,
|
|
9
|
+
* then wraps them in a fallback transport with shared retry logic.
|
|
10
|
+
*
|
|
11
|
+
* @param endpoints - Array of RPC endpoints to use
|
|
12
|
+
* @param retryConfig - Optional shared retry configuration for the fallback transport
|
|
13
|
+
* @returns A configured fallback transport for use with Viem clients
|
|
14
|
+
* @throws Error if endpoints array is empty or undefined
|
|
15
|
+
*/
|
|
16
|
+
export declare function buildFallbackTransport(endpoints: RpcEndpoint[] | undefined, retryConfig?: RetryConfig): import("viem").FallbackTransport<import("viem").HttpTransport<undefined, false>[]>;
|
|
17
|
+
//# sourceMappingURL=transport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../src/config/transport.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEnD;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,WAAW,EAAE,GAAG,SAAS,EACpC,WAAW,CAAC,EAAE,WAAW,sFAgC1B"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Utilities for building Viem transport configurations from RPC endpoint configuration
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.buildFallbackTransport = buildFallbackTransport;
|
|
7
|
+
const viem_1 = require("viem");
|
|
8
|
+
/**
|
|
9
|
+
* Builds a Viem fallback transport from RPC endpoint configuration
|
|
10
|
+
*
|
|
11
|
+
* Creates an HTTP transport for each endpoint with its own batching configuration,
|
|
12
|
+
* then wraps them in a fallback transport with shared retry logic.
|
|
13
|
+
*
|
|
14
|
+
* @param endpoints - Array of RPC endpoints to use
|
|
15
|
+
* @param retryConfig - Optional shared retry configuration for the fallback transport
|
|
16
|
+
* @returns A configured fallback transport for use with Viem clients
|
|
17
|
+
* @throws Error if endpoints array is empty or undefined
|
|
18
|
+
*/
|
|
19
|
+
function buildFallbackTransport(endpoints, retryConfig) {
|
|
20
|
+
if (!endpoints || endpoints.length === 0) {
|
|
21
|
+
throw new Error('At least one RPC endpoint must be configured');
|
|
22
|
+
}
|
|
23
|
+
// Sort endpoints by priority (lower number = higher priority)
|
|
24
|
+
const sorted = [...endpoints].sort((a, b) => a.priority - b.priority);
|
|
25
|
+
// Build HTTP transports with per-endpoint batching configuration
|
|
26
|
+
const httpTransports = sorted.map((endpoint) => {
|
|
27
|
+
// Use endpoint-specific batching config, or fall back to defaults
|
|
28
|
+
const batch = endpoint.batching
|
|
29
|
+
? {
|
|
30
|
+
batchSize: endpoint.batching.size ?? 100,
|
|
31
|
+
wait: endpoint.batching.waitMs ?? 50,
|
|
32
|
+
}
|
|
33
|
+
: {
|
|
34
|
+
batchSize: 100,
|
|
35
|
+
wait: 50,
|
|
36
|
+
};
|
|
37
|
+
return (0, viem_1.http)(endpoint.url, { batch });
|
|
38
|
+
});
|
|
39
|
+
// Configure the fallback strategy with shared retry logic
|
|
40
|
+
const fallbackConfig = {
|
|
41
|
+
retryCount: retryConfig?.count ?? 3,
|
|
42
|
+
retryDelay: retryConfig?.delayMs ?? 500,
|
|
43
|
+
};
|
|
44
|
+
return (0, viem_1.fallback)(httpTransports, fallbackConfig);
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/config/transport.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAgBH,wDAkCC;AAhDD,+BAAsC;AAGtC;;;;;;;;;;GAUG;AACH,SAAgB,sBAAsB,CACpC,SAAoC,EACpC,WAAyB;IAEzB,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IAED,8DAA8D;IAC9D,MAAM,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;IAEtE,iEAAiE;IACjE,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;QAC7C,kEAAkE;QAClE,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ;YAC7B,CAAC,CAAC;gBACE,SAAS,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,GAAG;gBACxC,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE;aACrC;YACH,CAAC,CAAC;gBACE,SAAS,EAAE,GAAG;gBACd,IAAI,EAAE,EAAE;aACT,CAAC;QAEN,OAAO,IAAA,WAAI,EAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,0DAA0D;IAC1D,MAAM,cAAc,GAAG;QACrB,UAAU,EAAE,WAAW,EAAE,KAAK,IAAI,CAAC;QACnC,UAAU,EAAE,WAAW,EAAE,OAAO,IAAI,GAAG;KACxC,CAAC;IAEF,OAAO,IAAA,eAAQ,EAAC,cAAc,EAAE,cAAc,CAAC,CAAC;AAClD,CAAC"}
|