@manifest-network/manifest-mcp-browser 0.1.7 → 0.1.9

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 (89) hide show
  1. package/README.md +5 -2
  2. package/dist/client.d.ts +5 -2
  3. package/dist/client.d.ts.map +1 -1
  4. package/dist/client.js +8 -2
  5. package/dist/client.js.map +1 -1
  6. package/dist/config.d.ts.map +1 -1
  7. package/dist/config.js +0 -10
  8. package/dist/config.js.map +1 -1
  9. package/dist/index.d.ts +0 -1
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +4 -8
  12. package/dist/index.js.map +1 -1
  13. package/dist/queries/index.d.ts +1 -0
  14. package/dist/queries/index.d.ts.map +1 -1
  15. package/dist/queries/index.js +1 -0
  16. package/dist/queries/index.js.map +1 -1
  17. package/dist/transactions/bank.d.ts.map +1 -1
  18. package/dist/transactions/bank.js +7 -5
  19. package/dist/transactions/bank.js.map +1 -1
  20. package/dist/transactions/gov.d.ts.map +1 -1
  21. package/dist/transactions/gov.js +7 -5
  22. package/dist/transactions/gov.js.map +1 -1
  23. package/dist/transactions/index.d.ts +1 -0
  24. package/dist/transactions/index.d.ts.map +1 -1
  25. package/dist/transactions/index.js +1 -0
  26. package/dist/transactions/index.js.map +1 -1
  27. package/dist/transactions/utils.d.ts.map +1 -1
  28. package/dist/transactions/utils.js +5 -6
  29. package/dist/transactions/utils.js.map +1 -1
  30. package/dist/types.d.ts +2 -4
  31. package/dist/types.d.ts.map +1 -1
  32. package/dist/types.js.map +1 -1
  33. package/dist/version.d.ts +2 -0
  34. package/dist/version.d.ts.map +1 -0
  35. package/dist/version.js +2 -0
  36. package/dist/version.js.map +1 -0
  37. package/package.json +13 -3
  38. package/.github/workflows/ci.yml +0 -37
  39. package/.github/workflows/publish.yml +0 -53
  40. package/CLAUDE.md +0 -113
  41. package/dist/config.test.d.ts +0 -2
  42. package/dist/config.test.d.ts.map +0 -1
  43. package/dist/config.test.js +0 -251
  44. package/dist/config.test.js.map +0 -1
  45. package/dist/modules.test.d.ts +0 -2
  46. package/dist/modules.test.d.ts.map +0 -1
  47. package/dist/modules.test.js +0 -161
  48. package/dist/modules.test.js.map +0 -1
  49. package/dist/queries/utils.test.d.ts +0 -2
  50. package/dist/queries/utils.test.d.ts.map +0 -1
  51. package/dist/queries/utils.test.js +0 -117
  52. package/dist/queries/utils.test.js.map +0 -1
  53. package/dist/transactions/utils.test.d.ts +0 -2
  54. package/dist/transactions/utils.test.d.ts.map +0 -1
  55. package/dist/transactions/utils.test.js +0 -567
  56. package/dist/transactions/utils.test.js.map +0 -1
  57. package/src/client.ts +0 -288
  58. package/src/config.test.ts +0 -299
  59. package/src/config.ts +0 -174
  60. package/src/cosmos.ts +0 -106
  61. package/src/index.ts +0 -478
  62. package/src/modules.test.ts +0 -191
  63. package/src/modules.ts +0 -470
  64. package/src/queries/auth.ts +0 -97
  65. package/src/queries/bank.ts +0 -99
  66. package/src/queries/billing.ts +0 -124
  67. package/src/queries/distribution.ts +0 -114
  68. package/src/queries/gov.ts +0 -104
  69. package/src/queries/group.ts +0 -146
  70. package/src/queries/index.ts +0 -17
  71. package/src/queries/sku.ts +0 -85
  72. package/src/queries/staking.ts +0 -154
  73. package/src/queries/utils.test.ts +0 -156
  74. package/src/queries/utils.ts +0 -121
  75. package/src/transactions/bank.ts +0 -86
  76. package/src/transactions/billing.ts +0 -286
  77. package/src/transactions/distribution.ts +0 -76
  78. package/src/transactions/gov.ts +0 -164
  79. package/src/transactions/group.ts +0 -458
  80. package/src/transactions/index.ts +0 -8
  81. package/src/transactions/manifest.ts +0 -67
  82. package/src/transactions/sku.ts +0 -232
  83. package/src/transactions/staking.ts +0 -85
  84. package/src/transactions/utils.test.ts +0 -626
  85. package/src/transactions/utils.ts +0 -417
  86. package/src/types.ts +0 -548
  87. package/src/wallet/index.ts +0 -2
  88. package/src/wallet/mnemonic.ts +0 -146
  89. package/tsconfig.json +0 -23
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAiFA;;GAEG;AACH,MAAM,CAAN,IAAY,oBAkCX;AAlCD,WAAY,oBAAoB;IAC9B,uBAAuB;IACvB,yDAAiC,CAAA;IACjC,yDAAiC,CAAA;IAEjC,gBAAgB;IAChB,qEAA6C,CAAA;IAC7C,6EAAqD,CAAA;IACrD,mEAA2C,CAAA;IAC3C,6DAAqC,CAAA;IAErC,gBAAgB;IAChB,yEAAiD,CAAA;IACjD,uEAA+C,CAAA;IAE/C,eAAe;IACf,qDAA6B,CAAA;IAC7B,+DAAuC,CAAA;IACvC,2DAAmC,CAAA;IAEnC,qBAAqB;IACrB,+CAAuB,CAAA;IACvB,qEAA6C,CAAA;IAC7C,mEAA2C,CAAA;IAC3C,2EAAmD,CAAA;IACnD,yDAAiC,CAAA;IACjC,iEAAyC,CAAA;IAEzC,gBAAgB;IAChB,yDAAiC,CAAA;IACjC,iEAAyC,CAAA;IAEzC,iBAAiB;IACjB,uDAA+B,CAAA;AACjC,CAAC,EAlCW,oBAAoB,KAApB,oBAAoB,QAkC/B;AAED;;GAEG;AACH,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IAIzC,YACE,IAA0B,EAC1B,OAAe,EACf,OAAiC;QAEjC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,sDAAsD;QACtD,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM;QACJ,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AA+EA;;GAEG;AACH,MAAM,CAAN,IAAY,oBAkCX;AAlCD,WAAY,oBAAoB;IAC9B,uBAAuB;IACvB,yDAAiC,CAAA;IACjC,yDAAiC,CAAA;IAEjC,gBAAgB;IAChB,qEAA6C,CAAA;IAC7C,6EAAqD,CAAA;IACrD,mEAA2C,CAAA;IAC3C,6DAAqC,CAAA;IAErC,gBAAgB;IAChB,yEAAiD,CAAA;IACjD,uEAA+C,CAAA;IAE/C,eAAe;IACf,qDAA6B,CAAA;IAC7B,+DAAuC,CAAA;IACvC,2DAAmC,CAAA;IAEnC,qBAAqB;IACrB,+CAAuB,CAAA;IACvB,qEAA6C,CAAA;IAC7C,mEAA2C,CAAA;IAC3C,2EAAmD,CAAA;IACnD,yDAAiC,CAAA;IACjC,iEAAyC,CAAA;IAEzC,gBAAgB;IAChB,yDAAiC,CAAA;IACjC,iEAAyC,CAAA;IAEzC,iBAAiB;IACjB,uDAA+B,CAAA;AACjC,CAAC,EAlCW,oBAAoB,KAApB,oBAAoB,QAkC/B;AAED;;GAEG;AACH,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IAIzC,YACE,IAA0B,EAC1B,OAAe,EACf,OAAiC;QAEjC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,sDAAsD;QACtD,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM;QACJ,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ export declare const VERSION = "0.1.9";
2
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,UAAU,CAAC"}
@@ -0,0 +1,2 @@
1
+ export const VERSION = '0.1.9';
2
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@manifest-network/manifest-mcp-browser",
3
- "version": "0.1.7",
3
+ "version": "0.1.9",
4
4
  "description": "Browser-compatible MCP server for Cosmos SDK blockchain interactions with Manifest Network using CosmJS",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -12,11 +12,12 @@
12
12
  }
13
13
  },
14
14
  "scripts": {
15
- "build": "tsc",
15
+ "build": "tsc -p tsconfig.build.json",
16
16
  "dev": "tsc --watch",
17
17
  "lint": "tsc --noEmit",
18
18
  "test": "vitest run",
19
- "test:watch": "vitest"
19
+ "test:watch": "vitest",
20
+ "version": "node -e \"var v=require('./package.json').version;require('fs').writeFileSync('src/version.ts','export const VERSION = \\x27'+v+'\\x27;\\n')\" && git add src/version.ts"
20
21
  },
21
22
  "keywords": [
22
23
  "mcp",
@@ -32,11 +33,20 @@
32
33
  },
33
34
  "author": "Felix C. Morency",
34
35
  "license": "MIT",
36
+ "files": [
37
+ "dist"
38
+ ],
35
39
  "dependencies": {
40
+ "@cosmjs/encoding": "0.32.4",
41
+ "@cosmjs/proto-signing": "0.32.4",
42
+ "@cosmjs/stargate": "npm:@manifest-network/stargate@0.32.4-ll.3",
36
43
  "@manifest-network/manifestjs": "2.2.0-billing-v2.1",
37
44
  "@modelcontextprotocol/sdk": "1.25.3",
38
45
  "limiter": "3.0.0"
39
46
  },
47
+ "overrides": {
48
+ "@cosmjs/stargate": "npm:@manifest-network/stargate@0.32.4-ll.3"
49
+ },
40
50
  "devDependencies": {
41
51
  "@types/node": "20.19.30",
42
52
  "typescript": "5.9.3",
@@ -1,37 +0,0 @@
1
- name: CI
2
-
3
- on:
4
- push:
5
- branches: [main]
6
- pull_request:
7
- branches: [main]
8
-
9
- jobs:
10
- build-and-test:
11
- runs-on: ubuntu-latest
12
-
13
- strategy:
14
- matrix:
15
- node-version: [18, 20, 22]
16
-
17
- steps:
18
- - name: Checkout repository
19
- uses: actions/checkout@v4
20
-
21
- - name: Setup Node.js ${{ matrix.node-version }}
22
- uses: actions/setup-node@v4
23
- with:
24
- node-version: ${{ matrix.node-version }}
25
- cache: 'npm'
26
-
27
- - name: Install dependencies
28
- run: npm ci
29
-
30
- - name: Run linter
31
- run: npm run lint
32
-
33
- - name: Run tests
34
- run: npm test
35
-
36
- - name: Build
37
- run: npm run build
@@ -1,53 +0,0 @@
1
- name: Publish to npm
2
-
3
- on:
4
- push:
5
- tags:
6
- - 'v*'
7
-
8
- jobs:
9
- publish:
10
- runs-on: ubuntu-latest
11
-
12
- # Required for npm trusted publishing (OIDC)
13
- permissions:
14
- contents: read
15
- id-token: write
16
-
17
- steps:
18
- - name: Checkout repository
19
- uses: actions/checkout@v4
20
-
21
- - name: Setup Node.js
22
- uses: actions/setup-node@v4
23
- with:
24
- node-version: 20
25
- cache: 'npm'
26
-
27
- - name: Upgrade npm for OIDC trusted publishing
28
- run: npm install -g npm@latest && npm --version
29
-
30
- - name: Install dependencies
31
- run: npm ci
32
-
33
- - name: Run linter
34
- run: npm run lint
35
-
36
- - name: Run tests
37
- run: npm test
38
-
39
- - name: Build
40
- run: npm run build
41
-
42
- - name: Verify package version matches tag
43
- run: |
44
- PACKAGE_VERSION=$(node -p "require('./package.json').version")
45
- TAG_VERSION=${GITHUB_REF#refs/tags/v}
46
- if [ "$PACKAGE_VERSION" != "$TAG_VERSION" ]; then
47
- echo "Package version ($PACKAGE_VERSION) does not match tag version ($TAG_VERSION)"
48
- exit 1
49
- fi
50
- echo "Version verified: $PACKAGE_VERSION"
51
-
52
- - name: Publish to npm
53
- run: npm publish --access public --provenance
package/CLAUDE.md DELETED
@@ -1,113 +0,0 @@
1
- # CLAUDE.md
2
-
3
- This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4
-
5
- ## Project Overview
6
-
7
- Browser-compatible MCP (Model Context Protocol) server for Cosmos SDK blockchain interactions with Manifest Network using CosmJS. This is a browser-friendly alternative to `manifest-mcp` that uses CosmJS/HTTP instead of CLI.
8
-
9
- ## Build Commands
10
-
11
- ```bash
12
- npm run build # TypeScript compilation to dist/
13
- npm run dev # Watch mode for TypeScript
14
- npm run lint # Type-check without emitting (tsc --noEmit)
15
- npm test # Run tests with vitest
16
- npm run test:watch # Run tests in watch mode
17
- ```
18
-
19
- ## Architecture
20
-
21
- ### Entry Point
22
-
23
- - `src/index.ts` - Main entry point, exports `ManifestMCPServer` class, `createMnemonicServer()`, and all public APIs
24
-
25
- ### Core Components
26
-
27
- **ManifestMCPServer** (`src/index.ts`)
28
- - Wraps MCP SDK `Server` to handle tool requests
29
- - Exposes 5 MCP tools: `get_account_info`, `cosmos_query`, `cosmos_tx`, `list_modules`, `list_module_subcommands`
30
-
31
- **CosmosClientManager** (`src/client.ts`)
32
- - Singleton pattern per chainId:rpcUrl combination
33
- - Provides lazy-initialized query client (manifestjs RPC) and signing client (CosmJS Stargate)
34
- - Registers all Manifest protobuf types from `@manifest-network/manifestjs`
35
-
36
- **Wallet Providers** (`src/wallet/`)
37
- - `WalletProvider` interface defines `getAddress()` and `getSigner()` methods (wallet-agnostic)
38
- - Any wallet providing `OfflineSigner` works (cosmos-kit, Web3Auth, Keplr, Leap, etc.)
39
- - `MnemonicWalletProvider` - Built-in provider using `DirectSecp256k1HdWallet` for testing
40
-
41
- ### Query/Transaction Routing
42
-
43
- **cosmos.ts** - Main router that validates module/subcommand names and dispatches to module handlers
44
-
45
- **queries/** - Module-specific query handlers
46
- - Each file exports `route{Module}Query()` function
47
- - Uses manifestjs RPC query client (`liftedinit.ClientFactory.createRPCQueryClient`)
48
- - Shared utilities in `utils.ts`: `parseBigInt()`, `parseInteger()`, `createPagination()`, `extractPaginationArgs()`, `extractBooleanFlag()`
49
- - All paginated queries support `--limit` flag (default: 100, max: 1000)
50
-
51
- **transactions/** - Module-specific transaction handlers
52
- - Each file exports `route{Module}Transaction()` function
53
- - Uses CosmJS `SigningStargateClient` with Manifest registries
54
- - Uses manifestjs enums (e.g., `VoteOption` from `cosmos.gov.v1`, `Unit` from `liftedinit.sku.v1`)
55
- - Shared utilities in `utils.ts`:
56
- - `requireArgs()` - Validate required argument count with helpful error messages
57
- - `parseAmount()` - Parse amount strings with helpful error hints
58
- - `parseBigIntWithCode()` - Base implementation used by both queries and transactions
59
- - `parseHexBytes()` - Parse and validate hex strings to Uint8Array (browser-compatible via `@cosmjs/encoding`)
60
- - `bytesToHex()` - Convert Uint8Array to hex string (browser-compatible via `@cosmjs/encoding`)
61
- - `validateAddress()` - Bech32 validation using `@cosmjs/encoding`
62
- - `validateMemo()` - Enforce 256 char limit (Cosmos SDK default)
63
- - `validateArgsLength()` - Enforce 100 args max to prevent DoS
64
- - `extractFlag()` - Extract `--flag value` pairs from args
65
- - `buildTxResult()` - Build transaction result objects
66
- - `parseVoteOption()` - Parse vote option strings to enum values (shared by gov and group)
67
- - `extractBooleanFlag()` - Extract valueless boolean flags from args (e.g., `--active-only`)
68
- - `MAX_META_HASH_BYTES` - Shared constant for meta hash validation (64 bytes)
69
-
70
- **modules.ts** - Static registry of all supported modules and subcommands (no dynamic CLI discovery)
71
-
72
- ### Supported Modules
73
-
74
- Query: bank, staking, distribution, gov, auth, billing, sku, group
75
- Transaction: bank, staking, distribution, gov, billing, manifest, sku, group
76
-
77
- ### Key Dependencies
78
-
79
- - `@manifest-network/manifestjs` - Protobuf types, registries, RPC client factory, and enums (e.g., `VoteOption`)
80
- - `@modelcontextprotocol/sdk` - MCP server implementation
81
- - `@cosmjs/stargate` - Signing client, gas price parsing
82
- - `@cosmjs/encoding` - Bech32 address validation (`fromBech32`), hex conversion (`fromHex`, `toHex`)
83
- - `@cosmjs/proto-signing` - Wallet and signer interfaces
84
-
85
- ### Security Features
86
-
87
- **Input Validation:**
88
- - Bech32 address validation using `@cosmjs/encoding`
89
- - Amount format validation with helpful error hints
90
- - Memo length limit (256 chars, Cosmos SDK default)
91
- - Args array length limit (100 max)
92
- - BigInt empty string rejection (prevents silent 0n)
93
- - Hex string validation for address-bytes queries
94
- - HTTPS enforcement for RPC URLs (HTTP only allowed for localhost/127.0.0.1/::1)
95
-
96
- **Resource Limits:**
97
- - Rate limiting via `limiter` package (default: 10 requests/second, configurable)
98
- - Default pagination limit of 100 items for all list queries
99
- - Transaction broadcast timeout (60 seconds)
100
- - Broadcast poll interval (3 seconds)
101
-
102
- **Sensitive Data:**
103
- - Error responses sanitize sensitive fields (mnemonic, privateKey, secret, etc.)
104
- - Mnemonic cleared on wallet disconnect
105
- - No logging of sensitive data
106
-
107
- ### Error Handling
108
-
109
- All errors use `ManifestMCPError` class with typed `ManifestMCPErrorCode` enum (see `src/types.ts`).
110
-
111
- ### Type Exports
112
-
113
- `ManifestQueryClient` type in `client.ts` is derived from manifestjs `liftedinit.ClientFactory.createRPCQueryClient` return type.
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=config.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.test.d.ts","sourceRoot":"","sources":["../src/config.test.ts"],"names":[],"mappings":""}
@@ -1,251 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { createConfig, validateConfig, createValidatedConfig } from './config.js';
3
- import { ManifestMCPError, ManifestMCPErrorCode } from './types.js';
4
- describe('createConfig', () => {
5
- it('should apply default values', () => {
6
- const config = createConfig({
7
- chainId: 'test-chain',
8
- rpcUrl: 'https://example.com',
9
- gasPrice: '1.0umfx',
10
- });
11
- expect(config.chainId).toBe('test-chain');
12
- expect(config.rpcUrl).toBe('https://example.com');
13
- expect(config.gasPrice).toBe('1.0umfx');
14
- expect(config.gasAdjustment).toBe(1.3);
15
- expect(config.addressPrefix).toBe('manifest');
16
- });
17
- it('should preserve provided optional values', () => {
18
- const config = createConfig({
19
- chainId: 'test-chain',
20
- rpcUrl: 'https://example.com',
21
- gasPrice: '1.0umfx',
22
- gasAdjustment: 2.0,
23
- addressPrefix: 'custom',
24
- });
25
- expect(config.gasAdjustment).toBe(2.0);
26
- expect(config.addressPrefix).toBe('custom');
27
- });
28
- it('should apply default rateLimit', () => {
29
- const config = createConfig({
30
- chainId: 'test-chain',
31
- rpcUrl: 'https://example.com',
32
- gasPrice: '1.0umfx',
33
- });
34
- expect(config.rateLimit).toBeDefined();
35
- expect(config.rateLimit?.requestsPerSecond).toBe(10);
36
- });
37
- it('should preserve provided rateLimit', () => {
38
- const config = createConfig({
39
- chainId: 'test-chain',
40
- rpcUrl: 'https://example.com',
41
- gasPrice: '1.0umfx',
42
- rateLimit: { requestsPerSecond: 20 },
43
- });
44
- expect(config.rateLimit?.requestsPerSecond).toBe(20);
45
- });
46
- });
47
- describe('validateConfig', () => {
48
- it('should return valid for correct config', () => {
49
- const result = validateConfig({
50
- chainId: 'manifest-testnet',
51
- rpcUrl: 'https://rpc.example.com',
52
- gasPrice: '1.0umfx',
53
- });
54
- expect(result.valid).toBe(true);
55
- expect(result.errors).toHaveLength(0);
56
- });
57
- it('should detect missing required fields', () => {
58
- const result = validateConfig({});
59
- expect(result.valid).toBe(false);
60
- expect(result.errors).toContain('chainId is required');
61
- expect(result.errors).toContain('rpcUrl is required');
62
- expect(result.errors).toContain('gasPrice is required');
63
- });
64
- it('should validate chainId format', () => {
65
- const result = validateConfig({
66
- chainId: '-invalid',
67
- rpcUrl: 'https://example.com',
68
- gasPrice: '1.0umfx',
69
- });
70
- expect(result.valid).toBe(false);
71
- expect(result.errors.some(e => e.includes('chainId'))).toBe(true);
72
- });
73
- it('should validate rpcUrl format', () => {
74
- const result = validateConfig({
75
- chainId: 'test',
76
- rpcUrl: 'not-a-url',
77
- gasPrice: '1.0umfx',
78
- });
79
- expect(result.valid).toBe(false);
80
- expect(result.errors.some(e => e.includes('rpcUrl'))).toBe(true);
81
- });
82
- it('should validate gasPrice format', () => {
83
- const result = validateConfig({
84
- chainId: 'test',
85
- rpcUrl: 'https://example.com',
86
- gasPrice: 'invalid',
87
- });
88
- expect(result.valid).toBe(false);
89
- expect(result.errors.some(e => e.includes('gasPrice'))).toBe(true);
90
- });
91
- it('should validate optional gasAdjustment', () => {
92
- const result = validateConfig({
93
- chainId: 'test',
94
- rpcUrl: 'https://example.com',
95
- gasPrice: '1.0umfx',
96
- gasAdjustment: -1,
97
- });
98
- expect(result.valid).toBe(false);
99
- expect(result.errors.some(e => e.includes('gasAdjustment'))).toBe(true);
100
- });
101
- it('should validate optional addressPrefix', () => {
102
- const result = validateConfig({
103
- chainId: 'test',
104
- rpcUrl: 'https://example.com',
105
- gasPrice: '1.0umfx',
106
- addressPrefix: 'INVALID',
107
- });
108
- expect(result.valid).toBe(false);
109
- expect(result.errors.some(e => e.includes('addressPrefix'))).toBe(true);
110
- });
111
- it('should accept HTTPS URLs', () => {
112
- const result = validateConfig({
113
- chainId: 'test',
114
- rpcUrl: 'https://rpc.example.com',
115
- gasPrice: '1.0umfx',
116
- });
117
- expect(result.valid).toBe(true);
118
- });
119
- it('should accept HTTP URLs for localhost', () => {
120
- const result = validateConfig({
121
- chainId: 'test',
122
- rpcUrl: 'http://localhost:26657',
123
- gasPrice: '1.0umfx',
124
- });
125
- expect(result.valid).toBe(true);
126
- });
127
- it('should accept HTTP URLs for 127.0.0.1', () => {
128
- const result = validateConfig({
129
- chainId: 'test',
130
- rpcUrl: 'http://127.0.0.1:26657',
131
- gasPrice: '1.0umfx',
132
- });
133
- expect(result.valid).toBe(true);
134
- });
135
- it('should accept HTTP URLs for IPv6 localhost', () => {
136
- const result = validateConfig({
137
- chainId: 'test',
138
- rpcUrl: 'http://[::1]:26657',
139
- gasPrice: '1.0umfx',
140
- });
141
- expect(result.valid).toBe(true);
142
- });
143
- it('should reject HTTP URLs for non-localhost', () => {
144
- const result = validateConfig({
145
- chainId: 'test',
146
- rpcUrl: 'http://rpc.example.com',
147
- gasPrice: '1.0umfx',
148
- });
149
- expect(result.valid).toBe(false);
150
- expect(result.errors.some(e => e.includes('HTTPS'))).toBe(true);
151
- });
152
- it('should accept valid rateLimit config', () => {
153
- const result = validateConfig({
154
- chainId: 'test',
155
- rpcUrl: 'https://example.com',
156
- gasPrice: '1.0umfx',
157
- rateLimit: { requestsPerSecond: 5 },
158
- });
159
- expect(result.valid).toBe(true);
160
- });
161
- it('should reject non-integer rateLimit.requestsPerSecond', () => {
162
- const result = validateConfig({
163
- chainId: 'test',
164
- rpcUrl: 'https://example.com',
165
- gasPrice: '1.0umfx',
166
- rateLimit: { requestsPerSecond: 5.5 },
167
- });
168
- expect(result.valid).toBe(false);
169
- expect(result.errors.some(e => e.includes('requestsPerSecond'))).toBe(true);
170
- });
171
- it('should reject negative rateLimit.requestsPerSecond', () => {
172
- const result = validateConfig({
173
- chainId: 'test',
174
- rpcUrl: 'https://example.com',
175
- gasPrice: '1.0umfx',
176
- rateLimit: { requestsPerSecond: -1 },
177
- });
178
- expect(result.valid).toBe(false);
179
- expect(result.errors.some(e => e.includes('requestsPerSecond'))).toBe(true);
180
- });
181
- it('should reject zero rateLimit.requestsPerSecond', () => {
182
- const result = validateConfig({
183
- chainId: 'test',
184
- rpcUrl: 'https://example.com',
185
- gasPrice: '1.0umfx',
186
- rateLimit: { requestsPerSecond: 0 },
187
- });
188
- expect(result.valid).toBe(false);
189
- expect(result.errors.some(e => e.includes('requestsPerSecond'))).toBe(true);
190
- });
191
- it('should reject null rateLimit', () => {
192
- const result = validateConfig({
193
- chainId: 'test',
194
- rpcUrl: 'https://example.com',
195
- gasPrice: '1.0umfx',
196
- rateLimit: null,
197
- });
198
- expect(result.valid).toBe(false);
199
- expect(result.errors.some(e => e.includes('rateLimit must be a plain object'))).toBe(true);
200
- });
201
- it('should reject non-object rateLimit', () => {
202
- const result = validateConfig({
203
- chainId: 'test',
204
- rpcUrl: 'https://example.com',
205
- gasPrice: '1.0umfx',
206
- rateLimit: 'invalid',
207
- });
208
- expect(result.valid).toBe(false);
209
- expect(result.errors.some(e => e.includes('rateLimit must be a plain object'))).toBe(true);
210
- });
211
- it('should reject array rateLimit', () => {
212
- const result = validateConfig({
213
- chainId: 'test',
214
- rpcUrl: 'https://example.com',
215
- gasPrice: '1.0umfx',
216
- rateLimit: [],
217
- });
218
- expect(result.valid).toBe(false);
219
- expect(result.errors.some(e => e.includes('rateLimit must be a plain object'))).toBe(true);
220
- });
221
- });
222
- describe('createValidatedConfig', () => {
223
- it('should return config for valid input', () => {
224
- const config = createValidatedConfig({
225
- chainId: 'test-chain',
226
- rpcUrl: 'https://example.com',
227
- gasPrice: '1.0umfx',
228
- });
229
- expect(config.chainId).toBe('test-chain');
230
- });
231
- it('should throw ManifestMCPError for invalid input', () => {
232
- expect(() => createValidatedConfig({
233
- chainId: '',
234
- rpcUrl: '',
235
- gasPrice: '',
236
- })).toThrow(ManifestMCPError);
237
- });
238
- it('should have INVALID_CONFIG error code', () => {
239
- try {
240
- createValidatedConfig({
241
- chainId: '',
242
- rpcUrl: '',
243
- gasPrice: '',
244
- });
245
- }
246
- catch (error) {
247
- expect(error.code).toBe(ManifestMCPErrorCode.INVALID_CONFIG);
248
- }
249
- });
250
- });
251
- //# sourceMappingURL=config.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.test.js","sourceRoot":"","sources":["../src/config.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=modules.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"modules.test.d.ts","sourceRoot":"","sources":["../src/modules.test.ts"],"names":[],"mappings":""}