@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.
Files changed (135) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +151 -0
  3. package/dist/commands/blockchain/addSubkey.d.ts +9 -0
  4. package/dist/commands/blockchain/addSubkey.d.ts.map +1 -0
  5. package/dist/commands/blockchain/addSubkey.js +49 -0
  6. package/dist/commands/blockchain/addSubkey.js.map +1 -0
  7. package/dist/commands/blockchain/certify.d.ts +13 -0
  8. package/dist/commands/blockchain/certify.d.ts.map +1 -0
  9. package/dist/commands/blockchain/certify.js +75 -0
  10. package/dist/commands/blockchain/certify.js.map +1 -0
  11. package/dist/commands/blockchain/challenge.d.ts +13 -0
  12. package/dist/commands/blockchain/challenge.d.ts.map +1 -0
  13. package/dist/commands/blockchain/challenge.js +58 -0
  14. package/dist/commands/blockchain/challenge.js.map +1 -0
  15. package/dist/commands/blockchain/generateKey.d.ts +7 -0
  16. package/dist/commands/blockchain/generateKey.d.ts.map +1 -0
  17. package/dist/commands/blockchain/generateKey.js +36 -0
  18. package/dist/commands/blockchain/generateKey.js.map +1 -0
  19. package/dist/commands/blockchain/getPublicKey.d.ts +9 -0
  20. package/dist/commands/blockchain/getPublicKey.d.ts.map +1 -0
  21. package/dist/commands/blockchain/getPublicKey.js +37 -0
  22. package/dist/commands/blockchain/getPublicKey.js.map +1 -0
  23. package/dist/commands/blockchain/index.d.ts +12 -0
  24. package/dist/commands/blockchain/index.d.ts.map +1 -0
  25. package/dist/commands/blockchain/index.js +33 -0
  26. package/dist/commands/blockchain/index.js.map +1 -0
  27. package/dist/commands/blockchain/keccak256.d.ts +7 -0
  28. package/dist/commands/blockchain/keccak256.d.ts.map +1 -0
  29. package/dist/commands/blockchain/keccak256.js +38 -0
  30. package/dist/commands/blockchain/keccak256.js.map +1 -0
  31. package/dist/commands/blockchain/listen.d.ts +9 -0
  32. package/dist/commands/blockchain/listen.d.ts.map +1 -0
  33. package/dist/commands/blockchain/listen.js +30 -0
  34. package/dist/commands/blockchain/listen.js.map +1 -0
  35. package/dist/commands/blockchain/prove.d.ts +13 -0
  36. package/dist/commands/blockchain/prove.d.ts.map +1 -0
  37. package/dist/commands/blockchain/prove.js +123 -0
  38. package/dist/commands/blockchain/prove.js.map +1 -0
  39. package/dist/commands/blockchain/register.d.ts +13 -0
  40. package/dist/commands/blockchain/register.d.ts.map +1 -0
  41. package/dist/commands/blockchain/register.js +65 -0
  42. package/dist/commands/blockchain/register.js.map +1 -0
  43. package/dist/commands/blockchain/revoke-certification.d.ts +13 -0
  44. package/dist/commands/blockchain/revoke-certification.d.ts.map +1 -0
  45. package/dist/commands/blockchain/revoke-certification.js +75 -0
  46. package/dist/commands/blockchain/revoke-certification.js.map +1 -0
  47. package/dist/commands/blockchain/revoke.d.ts +19 -0
  48. package/dist/commands/blockchain/revoke.d.ts.map +1 -0
  49. package/dist/commands/blockchain/revoke.js +118 -0
  50. package/dist/commands/blockchain/revoke.js.map +1 -0
  51. package/dist/commands/blockchain/sync.d.ts +20 -0
  52. package/dist/commands/blockchain/sync.d.ts.map +1 -0
  53. package/dist/commands/blockchain/sync.js +246 -0
  54. package/dist/commands/blockchain/sync.js.map +1 -0
  55. package/dist/commands/blockchain/update.d.ts +13 -0
  56. package/dist/commands/blockchain/update.d.ts.map +1 -0
  57. package/dist/commands/blockchain/update.js +60 -0
  58. package/dist/commands/blockchain/update.js.map +1 -0
  59. package/dist/commands/configuration/display.d.ts +10 -0
  60. package/dist/commands/configuration/display.d.ts.map +1 -0
  61. package/dist/commands/configuration/display.js +58 -0
  62. package/dist/commands/configuration/display.js.map +1 -0
  63. package/dist/commands/configuration/generate.d.ts +14 -0
  64. package/dist/commands/configuration/generate.d.ts.map +1 -0
  65. package/dist/commands/configuration/generate.js +222 -0
  66. package/dist/commands/configuration/generate.js.map +1 -0
  67. package/dist/commands/configuration/index.d.ts +6 -0
  68. package/dist/commands/configuration/index.d.ts.map +1 -0
  69. package/dist/commands/configuration/index.js +21 -0
  70. package/dist/commands/configuration/index.js.map +1 -0
  71. package/dist/commands/configuration/validate.d.ts +10 -0
  72. package/dist/commands/configuration/validate.d.ts.map +1 -0
  73. package/dist/commands/configuration/validate.js +45 -0
  74. package/dist/commands/configuration/validate.js.map +1 -0
  75. package/dist/commands/factory.d.ts +33 -0
  76. package/dist/commands/factory.d.ts.map +1 -0
  77. package/dist/commands/factory.js +48 -0
  78. package/dist/commands/factory.js.map +1 -0
  79. package/dist/config/defaults.d.ts +8 -0
  80. package/dist/config/defaults.d.ts.map +1 -0
  81. package/dist/config/defaults.js +11 -0
  82. package/dist/config/defaults.js.map +1 -0
  83. package/dist/config/loader.d.ts +12 -0
  84. package/dist/config/loader.d.ts.map +1 -0
  85. package/dist/config/loader.js +205 -0
  86. package/dist/config/loader.js.map +1 -0
  87. package/dist/config/testnet.d.ts +6 -0
  88. package/dist/config/testnet.d.ts.map +1 -0
  89. package/dist/config/testnet.js +26 -0
  90. package/dist/config/testnet.js.map +1 -0
  91. package/dist/config/transport.d.ts +17 -0
  92. package/dist/config/transport.d.ts.map +1 -0
  93. package/dist/config/transport.js +46 -0
  94. package/dist/config/transport.js.map +1 -0
  95. package/dist/config/types.d.ts +92 -0
  96. package/dist/config/types.d.ts.map +1 -0
  97. package/dist/config/types.js +12 -0
  98. package/dist/config/types.js.map +1 -0
  99. package/dist/config/validator.d.ts +14 -0
  100. package/dist/config/validator.d.ts.map +1 -0
  101. package/dist/config/validator.js +156 -0
  102. package/dist/config/validator.js.map +1 -0
  103. package/dist/errors.d.ts +13 -0
  104. package/dist/errors.d.ts.map +1 -0
  105. package/dist/errors.js +28 -0
  106. package/dist/errors.js.map +1 -0
  107. package/dist/index.d.ts +2 -0
  108. package/dist/index.d.ts.map +1 -0
  109. package/dist/index.js +61 -0
  110. package/dist/index.js.map +1 -0
  111. package/dist/services/web3pgpServiceFactory.d.ts +14 -0
  112. package/dist/services/web3pgpServiceFactory.d.ts.map +1 -0
  113. package/dist/services/web3pgpServiceFactory.js +228 -0
  114. package/dist/services/web3pgpServiceFactory.js.map +1 -0
  115. package/dist/setup.d.ts +14 -0
  116. package/dist/setup.d.ts.map +1 -0
  117. package/dist/setup.js +46 -0
  118. package/dist/setup.js.map +1 -0
  119. package/dist/types.d.ts +5 -0
  120. package/dist/types.d.ts.map +1 -0
  121. package/dist/types.js +3 -0
  122. package/dist/types.js.map +1 -0
  123. package/dist/utils/clients.d.ts +49373 -0
  124. package/dist/utils/clients.d.ts.map +1 -0
  125. package/dist/utils/clients.js +129 -0
  126. package/dist/utils/clients.js.map +1 -0
  127. package/dist/utils/input.d.ts +24 -0
  128. package/dist/utils/input.d.ts.map +1 -0
  129. package/dist/utils/input.js +138 -0
  130. package/dist/utils/input.js.map +1 -0
  131. package/dist/utils/logger.d.ts +12 -0
  132. package/dist/utils/logger.d.ts.map +1 -0
  133. package/dist/utils/logger.js +35 -0
  134. package/dist/utils/logger.js.map +1 -0
  135. 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,6 @@
1
+ import { Command } from 'commander';
2
+ /**
3
+ * Create all configuration commands and add them to a group
4
+ */
5
+ export declare function createConfigurationCommands(): Command;
6
+ //# sourceMappingURL=index.d.ts.map
@@ -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,8 @@
1
+ import { MergedConfig } from './types';
2
+ /**
3
+ * Default configuration for Web3PGP CLI.
4
+ *
5
+ * Uses the testnet configuration as the default.
6
+ */
7
+ export declare const DEFAULT_CONFIG: MergedConfig;
8
+ //# sourceMappingURL=defaults.d.ts.map
@@ -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":"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"}
@@ -0,0 +1,6 @@
1
+ import { MergedConfig } from './types';
2
+ /**
3
+ * Configuration for Web3PGP CLI targeting the Sepolia testnet
4
+ */
5
+ export declare const TESTNET_CONFIG: MergedConfig;
6
+ //# sourceMappingURL=testnet.d.ts.map
@@ -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"}