@fastxyz/allset-sdk 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +184 -14
- package/dist/browser/index.d.ts +2 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +2 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/core/address.d.ts +4 -0
- package/dist/core/address.d.ts.map +1 -0
- package/dist/core/address.js +27 -0
- package/dist/core/address.js.map +1 -0
- package/dist/core/deposit.d.ts +59 -0
- package/dist/core/deposit.d.ts.map +1 -0
- package/dist/core/deposit.js +93 -0
- package/dist/core/deposit.js.map +1 -0
- package/dist/core/index.d.ts +6 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +4 -0
- package/dist/core/index.js.map +1 -0
- package/dist/default-config.d.ts +51 -0
- package/dist/default-config.d.ts.map +1 -0
- package/dist/default-config.js +52 -0
- package/dist/default-config.js.map +1 -0
- package/dist/index.d.ts +4 -49
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -48
- package/dist/index.js.map +1 -1
- package/dist/intents.d.ts.map +1 -1
- package/dist/intents.js +1 -9
- package/dist/intents.js.map +1 -1
- package/dist/node/bridge.d.ts.map +1 -0
- package/dist/{bridge.js → node/bridge.js} +129 -72
- package/dist/node/bridge.js.map +1 -0
- package/dist/{config.d.ts → node/config.d.ts} +2 -5
- package/dist/node/config.d.ts.map +1 -0
- package/dist/{config.js → node/config.js} +5 -23
- package/dist/node/config.js.map +1 -0
- package/dist/node/evm-executor.d.ts +130 -0
- package/dist/node/evm-executor.d.ts.map +1 -0
- package/dist/node/evm-executor.js +159 -0
- package/dist/node/evm-executor.js.map +1 -0
- package/dist/node/index.d.ts +14 -0
- package/dist/node/index.d.ts.map +1 -0
- package/dist/node/index.js +17 -0
- package/dist/node/index.js.map +1 -0
- package/dist/{provider.d.ts → node/provider.d.ts} +6 -6
- package/dist/node/provider.d.ts.map +1 -0
- package/dist/{provider.js → node/provider.js} +18 -25
- package/dist/node/provider.js.map +1 -0
- package/dist/{types.d.ts → node/types.d.ts} +19 -19
- package/dist/node/types.d.ts.map +1 -0
- package/dist/node/types.js.map +1 -0
- package/package.json +22 -6
- package/data/networks.json +0 -37
- package/dist/bridge.d.ts.map +0 -1
- package/dist/bridge.js.map +0 -1
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js.map +0 -1
- package/dist/evm-executor.d.ts +0 -64
- package/dist/evm-executor.d.ts.map +0 -1
- package/dist/evm-executor.js +0 -181
- package/dist/evm-executor.js.map +0 -1
- package/dist/provider.d.ts.map +0 -1
- package/dist/provider.js.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
- /package/dist/{bridge.d.ts → node/bridge.d.ts} +0 -0
- /package/dist/{types.js → node/types.js} +0 -0
package/dist/index.d.ts
CHANGED
|
@@ -1,53 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @fastxyz/allset-sdk —
|
|
2
|
+
* @fastxyz/allset-sdk — browser-safe core helpers
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* Prerequisites: Install @fastxyz/sdk for FastWallet support.
|
|
7
|
-
* npm install @fastxyz/sdk @fastxyz/allset-sdk
|
|
8
|
-
*
|
|
9
|
-
* @example
|
|
10
|
-
* ```ts
|
|
11
|
-
* import { FastProvider, FastWallet } from '@fastxyz/sdk';
|
|
12
|
-
* import { AllSetProvider, createEvmExecutor, createEvmWallet } from '@fastxyz/allset-sdk';
|
|
13
|
-
*
|
|
14
|
-
* // Setup
|
|
15
|
-
* const fastProvider = new FastProvider({ network: 'testnet' });
|
|
16
|
-
* const allset = new AllSetProvider({ network: 'testnet' });
|
|
17
|
-
* const fastWallet = await FastWallet.fromKeyfile('~/.fast/keys/default.json', fastProvider);
|
|
18
|
-
* const evmWallet = createEvmWallet('~/.allset/.evm/keys/default.json');
|
|
19
|
-
*
|
|
20
|
-
* // Deposit: EVM → Fast
|
|
21
|
-
* const evmExecutor = createEvmExecutor(evmWallet.privateKey, 'https://sepolia-rollup.arbitrum.io/rpc', 421614);
|
|
22
|
-
* await allset.sendToFast({
|
|
23
|
-
* chain: 'arbitrum',
|
|
24
|
-
* token: 'USDC',
|
|
25
|
-
* amount: '1000000',
|
|
26
|
-
* from: evmWallet.address,
|
|
27
|
-
* to: fastWallet.address,
|
|
28
|
-
* evmExecutor,
|
|
29
|
-
* });
|
|
30
|
-
*
|
|
31
|
-
* // Withdraw: Fast → EVM
|
|
32
|
-
* await allset.sendToExternal({
|
|
33
|
-
* chain: 'arbitrum',
|
|
34
|
-
* token: 'fastUSDC',
|
|
35
|
-
* amount: '1000000',
|
|
36
|
-
* from: fastWallet.address,
|
|
37
|
-
* to: evmWallet.address,
|
|
38
|
-
* fastWallet,
|
|
39
|
-
* });
|
|
40
|
-
* ```
|
|
4
|
+
* Root exports are pure helpers only. Use `@fastxyz/allset-sdk/node` for
|
|
5
|
+
* provider, executor, wallet, bridge execution, and file-backed config APIs.
|
|
41
6
|
*/
|
|
42
|
-
export
|
|
43
|
-
export { IntentAction, buildTransferIntent, buildExecuteIntent, buildDepositBackIntent, buildRevokeIntent, } from './intents.js';
|
|
44
|
-
export { AllSetProvider, getAllSetDir, getEvmKeysDir as getAllSetEvmKeysDir, ensureAllSetDirs, initUserConfig, } from './provider.js';
|
|
45
|
-
export { createEvmExecutor, createEvmWallet, saveEvmWallet, getEvmKeysDir } from './evm-executor.js';
|
|
46
|
-
export { loadNetworksConfig, getNetworkConfig, getChainConfig, getTokenConfig, clearConfigCache, } from './config.js';
|
|
47
|
-
export type { BridgeProvider, BridgeParams, BridgeResult, EvmTxExecutor, AllSetChainConfig, AllSetTokenInfo, SendToFastParams, SendToExternalParams, ExecuteIntentParams, } from './types.js';
|
|
48
|
-
export type { Intent } from './intents.js';
|
|
49
|
-
export type { EvmSignResult } from './bridge.js';
|
|
50
|
-
export type { EvmWallet } from './evm-executor.js';
|
|
51
|
-
export type { NetworkConfig, ChainConfig, TokenConfig, AllNetworksConfig } from './config.js';
|
|
52
|
-
export type { AllSetProviderOptions } from './provider.js';
|
|
7
|
+
export * from './core/index.js';
|
|
53
8
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,iBAAiB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,52 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @fastxyz/allset-sdk —
|
|
2
|
+
* @fastxyz/allset-sdk — browser-safe core helpers
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* Prerequisites: Install @fastxyz/sdk for FastWallet support.
|
|
7
|
-
* npm install @fastxyz/sdk @fastxyz/allset-sdk
|
|
8
|
-
*
|
|
9
|
-
* @example
|
|
10
|
-
* ```ts
|
|
11
|
-
* import { FastProvider, FastWallet } from '@fastxyz/sdk';
|
|
12
|
-
* import { AllSetProvider, createEvmExecutor, createEvmWallet } from '@fastxyz/allset-sdk';
|
|
13
|
-
*
|
|
14
|
-
* // Setup
|
|
15
|
-
* const fastProvider = new FastProvider({ network: 'testnet' });
|
|
16
|
-
* const allset = new AllSetProvider({ network: 'testnet' });
|
|
17
|
-
* const fastWallet = await FastWallet.fromKeyfile('~/.fast/keys/default.json', fastProvider);
|
|
18
|
-
* const evmWallet = createEvmWallet('~/.allset/.evm/keys/default.json');
|
|
19
|
-
*
|
|
20
|
-
* // Deposit: EVM → Fast
|
|
21
|
-
* const evmExecutor = createEvmExecutor(evmWallet.privateKey, 'https://sepolia-rollup.arbitrum.io/rpc', 421614);
|
|
22
|
-
* await allset.sendToFast({
|
|
23
|
-
* chain: 'arbitrum',
|
|
24
|
-
* token: 'USDC',
|
|
25
|
-
* amount: '1000000',
|
|
26
|
-
* from: evmWallet.address,
|
|
27
|
-
* to: fastWallet.address,
|
|
28
|
-
* evmExecutor,
|
|
29
|
-
* });
|
|
30
|
-
*
|
|
31
|
-
* // Withdraw: Fast → EVM
|
|
32
|
-
* await allset.sendToExternal({
|
|
33
|
-
* chain: 'arbitrum',
|
|
34
|
-
* token: 'fastUSDC',
|
|
35
|
-
* amount: '1000000',
|
|
36
|
-
* from: fastWallet.address,
|
|
37
|
-
* to: evmWallet.address,
|
|
38
|
-
* fastWallet,
|
|
39
|
-
* });
|
|
40
|
-
* ```
|
|
4
|
+
* Root exports are pure helpers only. Use `@fastxyz/allset-sdk/node` for
|
|
5
|
+
* provider, executor, wallet, bridge execution, and file-backed config APIs.
|
|
41
6
|
*/
|
|
42
|
-
|
|
43
|
-
export { evmSign, executeBridge, executeIntent } from './bridge.js';
|
|
44
|
-
// Intent builders
|
|
45
|
-
export { IntentAction, buildTransferIntent, buildExecuteIntent, buildDepositBackIntent, buildRevokeIntent, } from './intents.js';
|
|
46
|
-
// AllSetProvider class (configurable)
|
|
47
|
-
export { AllSetProvider, getAllSetDir, getEvmKeysDir as getAllSetEvmKeysDir, ensureAllSetDirs, initUserConfig, } from './provider.js';
|
|
48
|
-
// EVM utilities
|
|
49
|
-
export { createEvmExecutor, createEvmWallet, saveEvmWallet, getEvmKeysDir } from './evm-executor.js';
|
|
50
|
-
// Config utilities (lower-level)
|
|
51
|
-
export { loadNetworksConfig, getNetworkConfig, getChainConfig, getTokenConfig, clearConfigCache, } from './config.js';
|
|
7
|
+
export * from './core/index.js';
|
|
52
8
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,iBAAiB,CAAC"}
|
package/dist/intents.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intents.d.ts","sourceRoot":"","sources":["../src/intents.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH;;GAEG;AACH,oBAAY,YAAY;IACtB,4BAA4B;IAC5B,OAAO,IAAI;IACX,iCAAiC;IACjC,eAAe,IAAI;IACnB,0CAA0C;IAC1C,cAAc,IAAI;IAClB,mCAAmC;IACnC,MAAM,IAAI;CACX;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,sBAAsB;IACtB,MAAM,EAAE,YAAY,CAAC;IACrB,yCAAyC;IACzC,OAAO,EAAE,KAAK,MAAM,EAAE,CAAC;IACvB,gEAAgE;IAChE,KAAK,EAAE,MAAM,CAAC;CACf;
|
|
1
|
+
{"version":3,"file":"intents.d.ts","sourceRoot":"","sources":["../src/intents.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH;;GAEG;AACH,oBAAY,YAAY;IACtB,4BAA4B;IAC5B,OAAO,IAAI;IACX,iCAAiC;IACjC,eAAe,IAAI;IACnB,0CAA0C;IAC1C,cAAc,IAAI;IAClB,mCAAmC;IACnC,MAAM,IAAI;CACX;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,sBAAsB;IACtB,MAAM,EAAE,YAAY,CAAC;IACrB,yCAAyC;IACzC,OAAO,EAAE,KAAK,MAAM,EAAE,CAAC;IACvB,gEAAgE;IAChE,KAAK,EAAE,MAAM,CAAC;CACf;AAMD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAU3E;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,KAAK,GAAE,MAAW,GACjB,MAAM,CAUR;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,GACnB,MAAM,CAWR;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAM1C"}
|
package/dist/intents.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* transferring tokens from Fast network.
|
|
6
6
|
*/
|
|
7
7
|
import { encodeAbiParameters } from 'viem';
|
|
8
|
-
import {
|
|
8
|
+
import { fastAddressToBytes32 } from './core/address.js';
|
|
9
9
|
// ---------------------------------------------------------------------------
|
|
10
10
|
// Types
|
|
11
11
|
// ---------------------------------------------------------------------------
|
|
@@ -24,14 +24,6 @@ export var IntentAction;
|
|
|
24
24
|
IntentAction[IntentAction["Revoke"] = 3] = "Revoke";
|
|
25
25
|
})(IntentAction || (IntentAction = {}));
|
|
26
26
|
// ---------------------------------------------------------------------------
|
|
27
|
-
// Helper Functions
|
|
28
|
-
// ---------------------------------------------------------------------------
|
|
29
|
-
function fastAddressToBytes32(address) {
|
|
30
|
-
const { words } = bech32m.decode(address, 90);
|
|
31
|
-
const bytes = new Uint8Array(bech32m.fromWords(words));
|
|
32
|
-
return `0x${Buffer.from(bytes).toString('hex')}`;
|
|
33
|
-
}
|
|
34
|
-
// ---------------------------------------------------------------------------
|
|
35
27
|
// Intent Builders
|
|
36
28
|
// ---------------------------------------------------------------------------
|
|
37
29
|
/**
|
package/dist/intents.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intents.js","sourceRoot":"","sources":["../src/intents.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAC;AAC3C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"intents.js","sourceRoot":"","sources":["../src/intents.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEzD,8EAA8E;AAC9E,QAAQ;AACR,8EAA8E;AAE9E;;GAEG;AACH,MAAM,CAAN,IAAY,YASX;AATD,WAAY,YAAY;IACtB,4BAA4B;IAC5B,qDAAW,CAAA;IACX,iCAAiC;IACjC,qEAAmB,CAAA;IACnB,0CAA0C;IAC1C,mEAAkB,CAAA;IAClB,mCAAmC;IACnC,mDAAU,CAAA;AACZ,CAAC,EATW,YAAY,KAAZ,YAAY,QASvB;AAcD,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAa,EAAE,QAAgB;IACjE,MAAM,OAAO,GAAG,mBAAmB,CACjC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAC1C,CAAC,KAAsB,EAAE,QAAyB,CAAC,CACpD,CAAC;IACF,OAAO;QACL,MAAM,EAAE,YAAY,CAAC,eAAe;QACpC,OAAO;QACP,KAAK,EAAE,EAAE;KACV,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAc,EACd,QAAgB,EAChB,QAAgB,EAAE;IAElB,MAAM,OAAO,GAAG,mBAAmB,CACjC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EACxC,CAAC,MAAuB,EAAE,QAAyB,CAAC,CACrD,CAAC;IACF,OAAO;QACL,MAAM,EAAE,YAAY,CAAC,OAAO;QAC5B,OAAO;QACP,KAAK;KACN,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,sBAAsB,CACpC,KAAa,EACb,YAAoB;IAEpB,MAAM,aAAa,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,mBAAmB,CACjC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAC1C,CAAC,KAAsB,EAAE,aAAa,CAAC,CACxC,CAAC;IACF,OAAO;QACL,MAAM,EAAE,YAAY,CAAC,cAAc;QACnC,OAAO;QACP,KAAK,EAAE,EAAE;KACV,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO;QACL,MAAM,EAAE,YAAY,CAAC,MAAM;QAC3B,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,EAAE;KACV,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../src/node/bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAsC,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACtH,OAAO,EAAoD,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AA0GnH,UAAU,oBAAoB;IAC5B,OAAO,EAAE,SAAS,GAAG,SAAS,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAAC;IAClD,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAAC;IACjE,gBAAgB,CAAC,IAAI;QAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;KAAE,CAAC;CAC9D;AAiKD,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,OAAO,CAC3B,WAAW,EAAE,OAAO,EACpB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,aAAa,CAAC,CA2CxB;AAID;;;GAGG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,YAAY,CAAC,CAiChH;AAqID;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,mBAAmB,EAC3B,QAAQ,CAAC,EAAE,oBAAoB,GAC9B,OAAO,CAAC,YAAY,CAAC,CAqLvB"}
|
|
@@ -7,14 +7,50 @@
|
|
|
7
7
|
* Deposit (EVM → Fast): call bridge.deposit(token, amount, receiver) on the EVM bridge contract
|
|
8
8
|
* Withdraw (Fast → EVM): transfer on Fast network + submit ExternalClaim intent + POST to relayer
|
|
9
9
|
*/
|
|
10
|
-
import {
|
|
11
|
-
import { decodeAbiParameters, encodeAbiParameters, encodeFunctionData } from 'viem';
|
|
12
|
-
import { FastError } from '@fastxyz/sdk';
|
|
10
|
+
import { decodeAbiParameters, encodeAbiParameters } from 'viem';
|
|
13
11
|
import { getNetworkConfig, getChainConfig, getTokenConfig } from './config.js';
|
|
14
|
-
import {
|
|
12
|
+
import { buildDepositTransactionFromRoute } from '../core/deposit.js';
|
|
13
|
+
import { IntentAction, buildTransferIntent } from '../intents.js';
|
|
14
|
+
import { ERC20_ABI } from './evm-executor.js';
|
|
15
15
|
// ─── Constants ────────────────────────────────────────────────────────────────
|
|
16
16
|
// Default network (can be overridden via environment variable)
|
|
17
17
|
const DEFAULT_NETWORK = process.env.ALLSET_NETWORK || 'testnet';
|
|
18
|
+
class LocalFastError extends Error {
|
|
19
|
+
code;
|
|
20
|
+
note;
|
|
21
|
+
constructor(code, message, opts) {
|
|
22
|
+
super(message);
|
|
23
|
+
this.name = 'FastError';
|
|
24
|
+
this.code = code;
|
|
25
|
+
this.note = opts?.note ?? '';
|
|
26
|
+
}
|
|
27
|
+
toJSON() {
|
|
28
|
+
return {
|
|
29
|
+
error: true,
|
|
30
|
+
code: this.code,
|
|
31
|
+
message: this.message,
|
|
32
|
+
note: this.note,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
let sdkFastErrorPromise = null;
|
|
37
|
+
// Keep @fastxyz/sdk runtime-optional for deposit-only consumers.
|
|
38
|
+
async function loadFastErrorConstructor() {
|
|
39
|
+
sdkFastErrorPromise ??= import('@fastxyz/sdk')
|
|
40
|
+
.then((mod) => (typeof mod.FastError === 'function' ? mod.FastError : null))
|
|
41
|
+
.catch(() => null);
|
|
42
|
+
return sdkFastErrorPromise;
|
|
43
|
+
}
|
|
44
|
+
async function createFastError(code, message, opts) {
|
|
45
|
+
const FastError = await loadFastErrorConstructor();
|
|
46
|
+
return FastError ? new FastError(code, message, opts) : new LocalFastError(code, message, opts);
|
|
47
|
+
}
|
|
48
|
+
function isFastError(err) {
|
|
49
|
+
return (err instanceof Error &&
|
|
50
|
+
err.name === 'FastError' &&
|
|
51
|
+
typeof err.code === 'string' &&
|
|
52
|
+
typeof err.note === 'string');
|
|
53
|
+
}
|
|
18
54
|
/**
|
|
19
55
|
* Convert decimal amount string to hex for BCS serialization.
|
|
20
56
|
* The Fast network BCS expects amounts as hex strings.
|
|
@@ -78,11 +114,6 @@ function resolveAllSetToken(token, evmChain, network = DEFAULT_NETWORK, provider
|
|
|
78
114
|
}
|
|
79
115
|
return null;
|
|
80
116
|
}
|
|
81
|
-
function fastAddressToBytes32(address) {
|
|
82
|
-
const { words } = bech32m.decode(address, 90);
|
|
83
|
-
const bytes = new Uint8Array(bech32m.fromWords(words));
|
|
84
|
-
return `0x${Buffer.from(bytes).toString('hex')}`;
|
|
85
|
-
}
|
|
86
117
|
function hexToUint8Array(hex) {
|
|
87
118
|
const clean = hex.startsWith('0x') ? hex.slice(2) : hex;
|
|
88
119
|
const bytes = new Uint8Array(clean.length / 2);
|
|
@@ -91,17 +122,43 @@ function hexToUint8Array(hex) {
|
|
|
91
122
|
}
|
|
92
123
|
return bytes;
|
|
93
124
|
}
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
}
|
|
125
|
+
// ─── EVM Transaction Helpers ──────────────────────────────────────────────────
|
|
126
|
+
async function sendTx(clients, tx) {
|
|
127
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
128
|
+
const walletClient = clients.walletClient;
|
|
129
|
+
const hash = await walletClient.sendTransaction({
|
|
130
|
+
to: tx.to,
|
|
131
|
+
data: tx.data,
|
|
132
|
+
value: BigInt(tx.value),
|
|
133
|
+
gas: tx.gas ? BigInt(tx.gas) : undefined,
|
|
134
|
+
});
|
|
135
|
+
const receipt = await clients.publicClient.waitForTransactionReceipt({ hash });
|
|
136
|
+
return {
|
|
137
|
+
txHash: hash,
|
|
138
|
+
status: receipt.status === 'success' ? 'success' : 'reverted',
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
async function checkAllowance(clients, token, spender, owner) {
|
|
142
|
+
const allowance = await clients.publicClient.readContract({
|
|
143
|
+
address: token,
|
|
144
|
+
abi: ERC20_ABI,
|
|
145
|
+
functionName: 'allowance',
|
|
146
|
+
args: [owner, spender],
|
|
147
|
+
});
|
|
148
|
+
return allowance;
|
|
149
|
+
}
|
|
150
|
+
async function approveErc20(clients, token, spender, amount) {
|
|
151
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
152
|
+
const walletClient = clients.walletClient;
|
|
153
|
+
const hash = await walletClient.writeContract({
|
|
154
|
+
address: token,
|
|
155
|
+
abi: ERC20_ABI,
|
|
156
|
+
functionName: 'approve',
|
|
157
|
+
args: [spender, BigInt(amount)],
|
|
158
|
+
});
|
|
159
|
+
await clients.publicClient.waitForTransactionReceipt({ hash });
|
|
160
|
+
return hash;
|
|
161
|
+
}
|
|
105
162
|
function resolveExternalAddress(intents, externalAddressOverride) {
|
|
106
163
|
if (externalAddressOverride) {
|
|
107
164
|
return externalAddressOverride;
|
|
@@ -158,14 +215,14 @@ export async function evmSign(certificate, crossSignUrl) {
|
|
|
158
215
|
}),
|
|
159
216
|
});
|
|
160
217
|
if (!res.ok) {
|
|
161
|
-
throw
|
|
218
|
+
throw await createFastError('TX_FAILED', `Cross-sign request failed: ${res.status}`, { note: 'The AllSet cross-sign service rejected the request.' });
|
|
162
219
|
}
|
|
163
220
|
const json = await res.json();
|
|
164
221
|
if (json.error) {
|
|
165
|
-
throw
|
|
222
|
+
throw await createFastError('TX_FAILED', `Cross-sign error: ${json.error.message}`, { note: 'The certificate could not be cross-signed.' });
|
|
166
223
|
}
|
|
167
224
|
if (!json.result?.transaction || !json.result?.signature) {
|
|
168
|
-
throw
|
|
225
|
+
throw await createFastError('TX_FAILED', 'Cross-sign returned invalid response', { note: 'Missing transaction or signature in response.' });
|
|
169
226
|
}
|
|
170
227
|
return json.result;
|
|
171
228
|
}
|
|
@@ -180,7 +237,7 @@ export async function executeBridge(params, provider) {
|
|
|
180
237
|
const isDeposit = params.fromChain !== 'fast' && params.toChain === 'fast';
|
|
181
238
|
const isWithdraw = params.fromChain === 'fast';
|
|
182
239
|
if (!isDeposit && !isWithdraw) {
|
|
183
|
-
throw
|
|
240
|
+
throw await createFastError('UNSUPPORTED_OPERATION', `AllSet only supports bridging between Fast network and configured EVM chains (${getSupportedChains(network, provider).join(', ') || 'none'}). Got: ${params.fromChain} → ${params.toChain}`, {
|
|
184
241
|
note: 'Use fromChain: "fast" for withdrawals, or toChain: "fast" for deposits.\n Example: await allset.bridge({ fromChain: "ethereum", toChain: "fast", fromToken: "USDC", toToken: "fastUSDC", amount: "1000000", senderAddress: "0x...", receiverAddress: "fast1..." })',
|
|
185
242
|
});
|
|
186
243
|
}
|
|
@@ -190,25 +247,25 @@ export async function executeBridge(params, provider) {
|
|
|
190
247
|
return await handleWithdraw(params, network, provider);
|
|
191
248
|
}
|
|
192
249
|
catch (err) {
|
|
193
|
-
if (err
|
|
250
|
+
if (isFastError(err))
|
|
194
251
|
throw err;
|
|
195
252
|
const msg = err instanceof Error ? err.message : String(err);
|
|
196
|
-
throw
|
|
253
|
+
throw await createFastError('TX_FAILED', `AllSet bridge failed: ${msg}`, {
|
|
197
254
|
note: 'Check that both chains are configured and have sufficient balance.',
|
|
198
255
|
});
|
|
199
256
|
}
|
|
200
257
|
}
|
|
201
258
|
// ─── Deposit (EVM → Fast) ─────────────────────────────────────────────────────
|
|
202
259
|
async function handleDeposit(params, network = DEFAULT_NETWORK, provider) {
|
|
203
|
-
if (!params.
|
|
204
|
-
throw
|
|
205
|
-
note: 'Provide
|
|
260
|
+
if (!params.evmClients) {
|
|
261
|
+
throw await createFastError('INVALID_PARAMS', 'AllSet deposit (EVM → Fast) requires evmClients', {
|
|
262
|
+
note: 'Provide evmClients created with createEvmExecutor().\n Example: const account = createEvmWallet(path); const clients = createEvmExecutor(account, rpcUrl, chainId)',
|
|
206
263
|
});
|
|
207
264
|
}
|
|
208
265
|
const chainConfigRaw = resolveChainConfig(params.fromChain, network, provider);
|
|
209
266
|
if (!chainConfigRaw) {
|
|
210
|
-
throw
|
|
211
|
-
note: 'Use
|
|
267
|
+
throw await createFastError('UNSUPPORTED_OPERATION', `AllSet does not support EVM chain "${params.fromChain}". Supported: ${getSupportedChains(network, provider).join(', ')}`, {
|
|
268
|
+
note: 'Use one of the configured EVM chains as the source chain for AllSet deposits.',
|
|
212
269
|
});
|
|
213
270
|
}
|
|
214
271
|
const chainConfig = toAllSetChainConfig(chainConfigRaw);
|
|
@@ -217,38 +274,38 @@ async function handleDeposit(params, network = DEFAULT_NETWORK, provider) {
|
|
|
217
274
|
tokenInfo = resolveAllSetToken(params.toToken, params.fromChain, network, provider);
|
|
218
275
|
}
|
|
219
276
|
if (!tokenInfo) {
|
|
220
|
-
throw
|
|
221
|
-
note: 'Supported tokens: USDC, fastUSDC.\n Example: await allset.bridge({ fromChain: "arbitrum", toChain: "fast", fromToken: "USDC", toToken: "fastUSDC", amount: "1000000", senderAddress: "0x...", receiverAddress: "fast1..." })',
|
|
277
|
+
throw await createFastError('TOKEN_NOT_FOUND', `Cannot resolve token "${params.fromToken}" on AllSet for chain "${params.fromChain}".`, {
|
|
278
|
+
note: 'Supported tokens: USDC, fastUSDC, testUSDC.\n Example: await allset.bridge({ fromChain: "arbitrum", toChain: "fast", fromToken: "USDC", toToken: "fastUSDC", amount: "1000000", senderAddress: "0x...", receiverAddress: "fast1..." })',
|
|
222
279
|
});
|
|
223
280
|
}
|
|
224
|
-
let
|
|
281
|
+
let depositPlan;
|
|
225
282
|
try {
|
|
226
|
-
|
|
283
|
+
depositPlan = buildDepositTransactionFromRoute({
|
|
284
|
+
network,
|
|
285
|
+
chain: params.fromChain,
|
|
286
|
+
token: params.fromToken,
|
|
287
|
+
chainId: chainConfig.chainId,
|
|
288
|
+
bridgeAddress: chainConfig.bridgeContract,
|
|
289
|
+
tokenAddress: tokenInfo.evmAddress,
|
|
290
|
+
decimals: tokenInfo.decimals,
|
|
291
|
+
isNative: tokenInfo.isNative,
|
|
292
|
+
}, BigInt(params.amount), params.receiverAddress);
|
|
227
293
|
}
|
|
228
294
|
catch (err) {
|
|
229
295
|
const msg = err instanceof Error ? err.message : String(err);
|
|
230
|
-
throw
|
|
296
|
+
throw await createFastError('INVALID_ADDRESS', `Failed to decode Fast network receiver address "${params.receiverAddress}": ${msg}`, {
|
|
231
297
|
note: 'The receiver address must be a valid Fast network bech32m address (fast1...).\n Example: fast1abc...',
|
|
232
298
|
});
|
|
233
299
|
}
|
|
234
|
-
const calldata = encodeFunctionData({
|
|
235
|
-
abi: BRIDGE_DEPOSIT_ABI,
|
|
236
|
-
functionName: 'deposit',
|
|
237
|
-
args: [
|
|
238
|
-
tokenInfo.evmAddress,
|
|
239
|
-
BigInt(params.amount),
|
|
240
|
-
receiverBytes32,
|
|
241
|
-
],
|
|
242
|
-
});
|
|
243
300
|
let txHash;
|
|
244
|
-
if (
|
|
245
|
-
const receipt = await params.
|
|
246
|
-
to:
|
|
247
|
-
data:
|
|
248
|
-
value:
|
|
301
|
+
if (depositPlan.route.isNative) {
|
|
302
|
+
const receipt = await sendTx(params.evmClients, {
|
|
303
|
+
to: depositPlan.to,
|
|
304
|
+
data: depositPlan.data,
|
|
305
|
+
value: depositPlan.value.toString(),
|
|
249
306
|
});
|
|
250
307
|
if (receipt.status === 'reverted') {
|
|
251
|
-
throw
|
|
308
|
+
throw await createFastError('TX_FAILED', `AllSet deposit transaction reverted: ${receipt.txHash}`, {
|
|
252
309
|
note: 'The deposit transaction was reverted. Check that you have sufficient ETH balance.',
|
|
253
310
|
});
|
|
254
311
|
}
|
|
@@ -256,17 +313,17 @@ async function handleDeposit(params, network = DEFAULT_NETWORK, provider) {
|
|
|
256
313
|
}
|
|
257
314
|
else {
|
|
258
315
|
const requiredAmount = BigInt(params.amount);
|
|
259
|
-
const currentAllowance = await params.
|
|
316
|
+
const currentAllowance = await checkAllowance(params.evmClients, depositPlan.route.tokenAddress, depositPlan.to, params.senderAddress);
|
|
260
317
|
if (currentAllowance < requiredAmount) {
|
|
261
|
-
await params.
|
|
318
|
+
await approveErc20(params.evmClients, depositPlan.route.tokenAddress, depositPlan.to, params.amount);
|
|
262
319
|
}
|
|
263
|
-
const receipt = await params.
|
|
264
|
-
to:
|
|
265
|
-
data:
|
|
266
|
-
value:
|
|
320
|
+
const receipt = await sendTx(params.evmClients, {
|
|
321
|
+
to: depositPlan.to,
|
|
322
|
+
data: depositPlan.data,
|
|
323
|
+
value: depositPlan.value.toString(),
|
|
267
324
|
});
|
|
268
325
|
if (receipt.status === 'reverted') {
|
|
269
|
-
throw
|
|
326
|
+
throw await createFastError('TX_FAILED', `AllSet deposit transaction reverted: ${receipt.txHash}`, {
|
|
270
327
|
note: 'The deposit transaction was reverted. Check that you have sufficient token balance and the approval succeeded.',
|
|
271
328
|
});
|
|
272
329
|
}
|
|
@@ -289,31 +346,31 @@ export async function executeIntent(params, provider) {
|
|
|
289
346
|
const crossSignUrl = provider?.crossSignUrl;
|
|
290
347
|
const { fastWallet, chain, token, amount, intents, externalAddress: externalAddressOverride, deadlineSeconds = 3600, } = params;
|
|
291
348
|
if (!fastWallet) {
|
|
292
|
-
throw
|
|
293
|
-
note: 'Provide a
|
|
349
|
+
throw await createFastError('INVALID_PARAMS', 'executeIntent requires fastWallet', {
|
|
350
|
+
note: 'Provide a compatible Fast wallet.\n Example: const wallet = await FastWallet.fromKeyfile("~/.fast/keys/default.json", provider)',
|
|
294
351
|
});
|
|
295
352
|
}
|
|
296
353
|
if (!intents || intents.length === 0) {
|
|
297
|
-
throw
|
|
354
|
+
throw await createFastError('INVALID_PARAMS', 'executeIntent requires at least one intent', {
|
|
298
355
|
note: 'Use intent builders like buildTransferIntent(), buildExecuteIntent(), etc.',
|
|
299
356
|
});
|
|
300
357
|
}
|
|
301
358
|
if (externalAddressOverride && !externalAddressOverride.startsWith('0x')) {
|
|
302
|
-
throw
|
|
359
|
+
throw await createFastError('INVALID_PARAMS', 'executeIntent externalAddress must be an EVM address', {
|
|
303
360
|
note: 'Pass a 0x-prefixed address for the relayer target.',
|
|
304
361
|
});
|
|
305
362
|
}
|
|
306
363
|
const chainConfigRaw = resolveChainConfig(chain, network, provider);
|
|
307
364
|
if (!chainConfigRaw) {
|
|
308
|
-
throw
|
|
309
|
-
note: 'Use
|
|
365
|
+
throw await createFastError('UNSUPPORTED_OPERATION', `AllSet does not support EVM chain "${chain}". Supported: ${getSupportedChains(network, provider).join(', ')}`, {
|
|
366
|
+
note: 'Use one of the configured EVM chains.',
|
|
310
367
|
});
|
|
311
368
|
}
|
|
312
369
|
const chainConfig = toAllSetChainConfig(chainConfigRaw);
|
|
313
370
|
const tokenInfo = resolveAllSetToken(token, chain, network, provider);
|
|
314
371
|
if (!tokenInfo) {
|
|
315
|
-
throw
|
|
316
|
-
note: 'Supported tokens: USDC, fastUSDC.',
|
|
372
|
+
throw await createFastError('TOKEN_NOT_FOUND', `Cannot resolve token "${token}" on AllSet for chain "${chain}".`, {
|
|
373
|
+
note: 'Supported tokens: USDC, fastUSDC, testUSDC.',
|
|
317
374
|
});
|
|
318
375
|
}
|
|
319
376
|
// Step 1: Transfer tokens to bridge address on Fast network
|
|
@@ -376,7 +433,7 @@ export async function executeIntent(params, provider) {
|
|
|
376
433
|
// Step 6: Submit to relayer
|
|
377
434
|
const externalAddress = resolveExternalAddress(intents, externalAddressOverride);
|
|
378
435
|
if (!externalAddress) {
|
|
379
|
-
throw
|
|
436
|
+
throw await createFastError('INVALID_PARAMS', 'executeIntent requires externalAddress when intents do not include a transfer recipient or execute target', {
|
|
380
437
|
note: 'Pass externalAddress for flows like buildDepositBackIntent() or buildRevokeIntent().',
|
|
381
438
|
});
|
|
382
439
|
}
|
|
@@ -400,7 +457,7 @@ export async function executeIntent(params, provider) {
|
|
|
400
457
|
});
|
|
401
458
|
if (!relayRes.ok) {
|
|
402
459
|
const text = await relayRes.text();
|
|
403
|
-
throw
|
|
460
|
+
throw await createFastError('TX_FAILED', `AllSet relayer request failed (${relayRes.status}): ${text}`, {
|
|
404
461
|
note: 'The intent was submitted to Fast network but the relayer rejected it. Try again.',
|
|
405
462
|
});
|
|
406
463
|
}
|
|
@@ -413,16 +470,16 @@ export async function executeIntent(params, provider) {
|
|
|
413
470
|
// ─── Withdraw (Fast → EVM) ────────────────────────────────────────────────────
|
|
414
471
|
async function handleWithdraw(params, network = DEFAULT_NETWORK, provider) {
|
|
415
472
|
if (!params.fastWallet) {
|
|
416
|
-
throw
|
|
417
|
-
note: 'Provide a
|
|
473
|
+
throw await createFastError('INVALID_PARAMS', 'AllSet withdrawal (Fast → EVM) requires fastWallet', {
|
|
474
|
+
note: 'Provide a compatible Fast wallet.\n Example: const wallet = await FastWallet.fromKeyfile("~/.fast/keys/default.json", provider)',
|
|
418
475
|
});
|
|
419
476
|
}
|
|
420
477
|
// Resolve token to get EVM address for the transfer intent
|
|
421
478
|
const tokenInfo = resolveAllSetToken(params.fromToken, params.toChain, network, provider)
|
|
422
479
|
?? resolveAllSetToken(params.toToken, params.toChain, network, provider);
|
|
423
480
|
if (!tokenInfo) {
|
|
424
|
-
throw
|
|
425
|
-
note: 'Supported tokens: USDC, fastUSDC.',
|
|
481
|
+
throw await createFastError('TOKEN_NOT_FOUND', `Cannot resolve token "${params.fromToken}" on AllSet for destination chain "${params.toChain}".`, {
|
|
482
|
+
note: 'Supported tokens: USDC, fastUSDC, testUSDC.',
|
|
426
483
|
});
|
|
427
484
|
}
|
|
428
485
|
// Build a simple transfer intent
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../src/node/bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* config.ts —
|
|
3
|
-
*
|
|
4
|
-
* Loads bridge configuration from data/networks.json.
|
|
5
|
-
* Supports testnet and mainnet configurations.
|
|
2
|
+
* config.ts — Embedded network configuration accessors
|
|
6
3
|
*/
|
|
7
4
|
export interface TokenConfig {
|
|
8
5
|
evmAddress: string;
|
|
@@ -26,7 +23,7 @@ export interface AllNetworksConfig {
|
|
|
26
23
|
}
|
|
27
24
|
/**
|
|
28
25
|
* Load the networks configuration.
|
|
29
|
-
* Caches the
|
|
26
|
+
* Caches a clone of the embedded default config after first load.
|
|
30
27
|
*/
|
|
31
28
|
export declare function loadNetworksConfig(): AllNetworksConfig;
|
|
32
29
|
/**
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/node/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,aAAa,CAAC;IACvB,OAAO,EAAE,aAAa,CAAC;CACxB;AAQD;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,iBAAiB,CAOtD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,SAAS,GAAG,SAAqB,GAAG,aAAa,CAG1F;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,SAAS,GAAG,SAAqB,GACzC,WAAW,GAAG,IAAI,CAGpB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,SAAS,GAAG,SAAqB,GACzC,WAAW,GAAG,IAAI,CAIpB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC"}
|
|
@@ -1,39 +1,21 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* config.ts —
|
|
3
|
-
*
|
|
4
|
-
* Loads bridge configuration from data/networks.json.
|
|
5
|
-
* Supports testnet and mainnet configurations.
|
|
2
|
+
* config.ts — Embedded network configuration accessors
|
|
6
3
|
*/
|
|
7
|
-
import {
|
|
8
|
-
import { dirname, join } from 'node:path';
|
|
9
|
-
import { fileURLToPath } from 'node:url';
|
|
4
|
+
import { DEFAULT_NETWORKS_CONFIG } from '../default-config.js';
|
|
10
5
|
// ---------------------------------------------------------------------------
|
|
11
6
|
// Config Loading
|
|
12
7
|
// ---------------------------------------------------------------------------
|
|
13
8
|
let cachedConfig = null;
|
|
14
|
-
function getDataDir() {
|
|
15
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
16
|
-
const __dirname = dirname(__filename);
|
|
17
|
-
// In dist/, go up one level to find data/
|
|
18
|
-
return join(__dirname, '..', 'data');
|
|
19
|
-
}
|
|
20
9
|
/**
|
|
21
10
|
* Load the networks configuration.
|
|
22
|
-
* Caches the
|
|
11
|
+
* Caches a clone of the embedded default config after first load.
|
|
23
12
|
*/
|
|
24
13
|
export function loadNetworksConfig() {
|
|
25
14
|
if (cachedConfig) {
|
|
26
15
|
return cachedConfig;
|
|
27
16
|
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
const raw = readFileSync(configPath, 'utf-8');
|
|
31
|
-
cachedConfig = JSON.parse(raw);
|
|
32
|
-
return cachedConfig;
|
|
33
|
-
}
|
|
34
|
-
catch (err) {
|
|
35
|
-
throw new Error(`Failed to load networks config from ${configPath}: ${err instanceof Error ? err.message : String(err)}`);
|
|
36
|
-
}
|
|
17
|
+
cachedConfig = structuredClone(DEFAULT_NETWORKS_CONFIG);
|
|
18
|
+
return cachedConfig;
|
|
37
19
|
}
|
|
38
20
|
/**
|
|
39
21
|
* Get configuration for a specific network (testnet or mainnet).
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/node/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AA8B/D,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,IAAI,YAAY,GAA6B,IAAI,CAAC;AAElD;;;GAGG;AACH,MAAM,UAAU,kBAAkB;IAChC,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,YAAY,GAAG,eAAe,CAAC,uBAAuB,CAAC,CAAC;IACxD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,UAAiC,SAAS;IACzE,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;IACpC,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,KAAa,EACb,UAAiC,SAAS;IAE1C,MAAM,aAAa,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAChD,OAAO,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;AAC7C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,KAAa,EACb,KAAa,EACb,UAAiC,SAAS;IAE1C,MAAM,WAAW,GAAG,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACnD,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAC9B,OAAO,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,IAAI,CAAC;AACtF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,YAAY,GAAG,IAAI,CAAC;AACtB,CAAC"}
|