@fedimint/core-web 0.0.11 → 0.1.0-alex-cache-wasm-build
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/dist/dts/FedimintWallet.d.ts +7 -2
- package/dist/dts/FedimintWallet.d.ts.map +1 -1
- package/dist/dts/services/MintService.d.ts +2 -1
- package/dist/dts/services/MintService.d.ts.map +1 -1
- package/dist/dts/services/WalletService.d.ts +8 -0
- package/dist/dts/services/WalletService.d.ts.map +1 -0
- package/dist/dts/services/index.d.ts +1 -0
- package/dist/dts/services/index.d.ts.map +1 -1
- package/dist/dts/types/wallet.d.ts +20 -3
- package/dist/dts/types/wallet.d.ts.map +1 -1
- package/dist/dts/types/worker.d.ts +1 -1
- package/dist/dts/types/worker.d.ts.map +1 -1
- package/dist/index.d.ts +32 -3
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/worker.js +1 -1
- package/dist/worker.js.map +1 -1
- package/package.json +2 -2
- package/src/FedimintWallet.test.ts +13 -0
- package/src/FedimintWallet.ts +12 -1
- package/src/services/MintService.test.ts +41 -0
- package/src/services/MintService.ts +9 -0
- package/src/services/WalletService.test.ts +24 -0
- package/src/services/WalletService.ts +10 -0
- package/src/services/index.ts +1 -0
- package/src/test/TestingService.ts +5 -4
- package/src/test/fixtures.ts +6 -0
- package/src/types/wallet.ts +29 -2
- package/src/types/worker.ts +1 -0
- package/src/worker/worker.js +28 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { BalanceService, MintService, LightningService, FederationService, RecoveryService } from './services';
|
|
1
|
+
import { BalanceService, MintService, LightningService, FederationService, RecoveryService, WalletService } from './services';
|
|
2
2
|
import { type LogLevel } from './utils/logger';
|
|
3
|
-
import { JSONValue } from './types';
|
|
3
|
+
import { FederationConfig, JSONValue } from './types';
|
|
4
4
|
export declare class FedimintWallet {
|
|
5
5
|
private _client;
|
|
6
6
|
balance: BalanceService;
|
|
@@ -8,6 +8,7 @@ export declare class FedimintWallet {
|
|
|
8
8
|
lightning: LightningService;
|
|
9
9
|
federation: FederationService;
|
|
10
10
|
recovery: RecoveryService;
|
|
11
|
+
wallet: WalletService;
|
|
11
12
|
private _openPromise;
|
|
12
13
|
private _resolveOpen;
|
|
13
14
|
private _isOpen;
|
|
@@ -51,6 +52,10 @@ export declare class FedimintWallet {
|
|
|
51
52
|
*/
|
|
52
53
|
cleanup(): Promise<void>;
|
|
53
54
|
isOpen(): boolean;
|
|
55
|
+
previewFederation(inviteCode: string): Promise<{
|
|
56
|
+
config: FederationConfig;
|
|
57
|
+
federation_id: string;
|
|
58
|
+
}>;
|
|
54
59
|
/**
|
|
55
60
|
* Sets the log level for the library.
|
|
56
61
|
* @param level The desired log level ('DEBUG', 'INFO', 'WARN', 'ERROR', 'NONE').
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FedimintWallet.d.ts","sourceRoot":"","sources":["../../src/FedimintWallet.ts"],"names":[],"mappings":"AACA,OAAO,EACL,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,
|
|
1
|
+
{"version":3,"file":"FedimintWallet.d.ts","sourceRoot":"","sources":["../../src/FedimintWallet.ts"],"names":[],"mappings":"AACA,OAAO,EACL,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,aAAa,EACd,MAAM,YAAY,CAAA;AACnB,OAAO,EAAU,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAIrD,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAc;IAEtB,OAAO,EAAE,cAAc,CAAA;IACvB,IAAI,EAAE,WAAW,CAAA;IACjB,SAAS,EAAE,gBAAgB,CAAA;IAC3B,UAAU,EAAE,iBAAiB,CAAA;IAC7B,QAAQ,EAAE,eAAe,CAAA;IACzB,MAAM,EAAE,aAAa,CAAA;IAE5B,OAAO,CAAC,YAAY,CAAuC;IAC3D,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,OAAO,CAAiB;IAEhC;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;gBACS,IAAI,GAAE,OAAe;IAmB3B,UAAU;IAMV,WAAW;IAKX,IAAI,CAAC,UAAU,GAAE,MAA4B;IAc7C,cAAc,CAClB,UAAU,EAAE,MAAM,EAClB,UAAU,GAAE,MAA4B;IAwB1C;;;OAGG;IACG,OAAO;IAMb,MAAM;IAIA,iBAAiB,CAAC,UAAU,EAAE,MAAM;gBAE9B,gBAAgB;uBACT,MAAM;;IAKzB;;;OAGG;IACH,WAAW,CAAC,KAAK,EAAE,QAAQ;IAK3B;;;;;;;;;;;;;;;;;;OAkBG;IACG,eAAe,CAAC,UAAU,EAAE,MAAM;cAE9B,MAAM;cACN,SAAS;mBACJ,MAAM;;IAKrB;;;;;;;;;;;;;;;;;;;OAmBG;IACG,kBAAkB,CAAC,UAAU,EAAE,MAAM;cAEjC,MAAM;cACN,SAAS;mBACJ,MAAM;;CAItB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { WorkerClient } from '../worker';
|
|
2
|
-
import type { Duration, JSONObject, JSONValue, ReissueExternalNotesState, SpendNotesState } from '../types';
|
|
2
|
+
import type { Duration, JSONObject, JSONValue, NoteCountByDenomination, ReissueExternalNotesState, SpendNotesState } from '../types';
|
|
3
3
|
export declare class MintService {
|
|
4
4
|
private client;
|
|
5
5
|
constructor(client: WorkerClient);
|
|
@@ -18,5 +18,6 @@ export declare class MintService {
|
|
|
18
18
|
tryCancelSpendNotes(operationId: string): Promise<void>;
|
|
19
19
|
subscribeSpendNotes(operationId: string, onSuccess?: (state: SpendNotesState) => void, onError?: (error: string) => void): import("../types").CancelFunction;
|
|
20
20
|
awaitSpendOobRefund(operationId: string): Promise<JSONValue>;
|
|
21
|
+
getNotesByDenomination(): Promise<NoteCountByDenomination>;
|
|
21
22
|
}
|
|
22
23
|
//# sourceMappingURL=MintService.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MintService.d.ts","sourceRoot":"","sources":["../../../src/services/MintService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,KAAK,EACV,QAAQ,EACR,UAAU,EACV,SAAS,EAGT,yBAAyB,EACzB,eAAe,EAChB,MAAM,UAAU,CAAA;AAEjB,qBAAa,WAAW;IACV,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,YAAY;IAExC,2EAA2E;IACrE,WAAW,CAAC,KAAK,EAAE,MAAM;IAWzB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,GAAE,UAAe;IAWvE,6BAA6B,CAC3B,WAAW,EAAE,MAAM,EACnB,SAAS,GAAE,CAAC,KAAK,EAAE,yBAAyB,KAAK,IAAe,EAChE,OAAO,GAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAe;IAa7C,0EAA0E;IACpE,UAAU,CACd,WAAW,EAAE,MAAM,EAInB,cAAc,GAAE,MAAM,GAAG,QAAoB,EAAE,oBAAoB;IACnE,aAAa,GAAE,OAAe,EAC9B,SAAS,GAAE,SAAc;;;;IA0B3B,0EAA0E;IACpE,UAAU,CAAC,QAAQ,EAAE,MAAM;IAM3B,mBAAmB,CAAC,WAAW,EAAE,MAAM;IAM7C,mBAAmB,CACjB,WAAW,EAAE,MAAM,EACnB,SAAS,GAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAe,EACtD,OAAO,GAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAe;IAWvC,mBAAmB,CAAC,WAAW,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"MintService.d.ts","sourceRoot":"","sources":["../../../src/services/MintService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,KAAK,EACV,QAAQ,EACR,UAAU,EACV,SAAS,EAGT,uBAAuB,EACvB,yBAAyB,EACzB,eAAe,EAChB,MAAM,UAAU,CAAA;AAEjB,qBAAa,WAAW;IACV,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,YAAY;IAExC,2EAA2E;IACrE,WAAW,CAAC,KAAK,EAAE,MAAM;IAWzB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,GAAE,UAAe;IAWvE,6BAA6B,CAC3B,WAAW,EAAE,MAAM,EACnB,SAAS,GAAE,CAAC,KAAK,EAAE,yBAAyB,KAAK,IAAe,EAChE,OAAO,GAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAe;IAa7C,0EAA0E;IACpE,UAAU,CACd,WAAW,EAAE,MAAM,EAInB,cAAc,GAAE,MAAM,GAAG,QAAoB,EAAE,oBAAoB;IACnE,aAAa,GAAE,OAAe,EAC9B,SAAS,GAAE,SAAc;;;;IA0B3B,0EAA0E;IACpE,UAAU,CAAC,QAAQ,EAAE,MAAM;IAM3B,mBAAmB,CAAC,WAAW,EAAE,MAAM;IAM7C,mBAAmB,CACjB,WAAW,EAAE,MAAM,EACnB,SAAS,GAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAe,EACtD,OAAO,GAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAe;IAWvC,mBAAmB,CAAC,WAAW,EAAE,MAAM;IAMvC,sBAAsB;CAO7B"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { WalletSummary } from '../types';
|
|
2
|
+
import { WorkerClient } from '../worker';
|
|
3
|
+
export declare class WalletService {
|
|
4
|
+
private client;
|
|
5
|
+
constructor(client: WorkerClient);
|
|
6
|
+
getWalletSummary(): Promise<WalletSummary>;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=WalletService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WalletService.d.ts","sourceRoot":"","sources":["../../../src/services/WalletService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAExC,qBAAa,aAAa;IACZ,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,YAAY;IAElC,gBAAgB,IAAI,OAAO,CAAC,aAAa,CAAC;CAGjD"}
|
|
@@ -3,4 +3,5 @@ export { BalanceService } from './BalanceService';
|
|
|
3
3
|
export { LightningService } from './LightningService';
|
|
4
4
|
export { RecoveryService } from './RecoveryService';
|
|
5
5
|
export { FederationService } from './FederationService';
|
|
6
|
+
export { WalletService } from './WalletService';
|
|
6
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { MSats, Duration, JSONValue } from './utils';
|
|
2
|
-
declare const MODULE_KINDS: readonly ["", "ln", "mint"];
|
|
1
|
+
import { MSats, Duration, JSONValue, JSONObject } from './utils';
|
|
2
|
+
declare const MODULE_KINDS: readonly ["", "ln", "mint", "wallet"];
|
|
3
3
|
type ModuleKind = (typeof MODULE_KINDS)[number];
|
|
4
|
+
type FederationConfig = JSONObject;
|
|
4
5
|
type GatewayInfo = {
|
|
5
6
|
gateway_id: string;
|
|
6
7
|
api: string;
|
|
@@ -81,5 +82,21 @@ type CancelFunction = () => void;
|
|
|
81
82
|
type ReissueExternalNotesState = 'Created' | 'Issuing' | 'Done';
|
|
82
83
|
type MintSpendNotesResponse = Array<string>;
|
|
83
84
|
type SpendNotesState = 'Created' | 'UserCanceledProcessing' | 'UserCanceledSuccess' | 'UserCanceledFailure' | 'Success' | 'Refunded';
|
|
84
|
-
|
|
85
|
+
type TxOutputSummary = {
|
|
86
|
+
outpoint: {
|
|
87
|
+
txid: string;
|
|
88
|
+
vout: number;
|
|
89
|
+
};
|
|
90
|
+
amount: number;
|
|
91
|
+
};
|
|
92
|
+
type WalletSummary = {
|
|
93
|
+
spendable_utxos: TxOutputSummary[];
|
|
94
|
+
unsigned_peg_out_txos: TxOutputSummary[];
|
|
95
|
+
unsigned_change_utxos: TxOutputSummary[];
|
|
96
|
+
unconfirmed_peg_out_txos: TxOutputSummary[];
|
|
97
|
+
unconfirmed_change_utxos: TxOutputSummary[];
|
|
98
|
+
};
|
|
99
|
+
/** Keys are powers of 2 */
|
|
100
|
+
type NoteCountByDenomination = Record<number, number>;
|
|
101
|
+
export { LightningGateway, FederationConfig, RouteHint, FeeToAmount, OutgoingLightningPayment, PayType, LnPayState, LnReceiveState, CreateBolt11Response, GatewayInfo, StreamError, StreamSuccess, StreamResult, ModuleKind, CancelFunction, ReissueExternalNotesState, MintSpendNotesResponse, SpendNotesState, WalletSummary, TxOutputSummary, NoteCountByDenomination, };
|
|
85
102
|
//# sourceMappingURL=wallet.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../../src/types/wallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../../src/types/wallet.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
declare const WorkerMessageTypes: readonly ["init", "initialized", "rpc", "log", "open", "join", "error", "unsubscribe", "cleanup", "parseInviteCode", "parseBolt11Invoice"];
|
|
1
|
+
declare const WorkerMessageTypes: readonly ["init", "initialized", "rpc", "log", "open", "join", "error", "unsubscribe", "cleanup", "parseInviteCode", "parseBolt11Invoice", "previewFederation"];
|
|
2
2
|
export type WorkerMessageType = (typeof WorkerMessageTypes)[number];
|
|
3
3
|
export {};
|
|
4
4
|
//# sourceMappingURL=worker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../../src/types/worker.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,kBAAkB,
|
|
1
|
+
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../../src/types/worker.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,kBAAkB,iKAad,CAAA;AAEV,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAA"}
|
package/dist/index.d.ts
CHANGED
|
@@ -21,8 +21,9 @@ type Result<T, U = string> = {
|
|
|
21
21
|
};
|
|
22
22
|
//# sourceMappingURL=utils.d.ts.map
|
|
23
23
|
|
|
24
|
-
declare const MODULE_KINDS: readonly ["", "ln", "mint"];
|
|
24
|
+
declare const MODULE_KINDS: readonly ["", "ln", "mint", "wallet"];
|
|
25
25
|
type ModuleKind = (typeof MODULE_KINDS)[number];
|
|
26
|
+
type FederationConfig = JSONObject;
|
|
26
27
|
type GatewayInfo = {
|
|
27
28
|
gateway_id: string;
|
|
28
29
|
api: string;
|
|
@@ -103,9 +104,25 @@ type CancelFunction = () => void;
|
|
|
103
104
|
type ReissueExternalNotesState = 'Created' | 'Issuing' | 'Done';
|
|
104
105
|
type MintSpendNotesResponse = Array<string>;
|
|
105
106
|
type SpendNotesState = 'Created' | 'UserCanceledProcessing' | 'UserCanceledSuccess' | 'UserCanceledFailure' | 'Success' | 'Refunded';
|
|
107
|
+
type TxOutputSummary = {
|
|
108
|
+
outpoint: {
|
|
109
|
+
txid: string;
|
|
110
|
+
vout: number;
|
|
111
|
+
};
|
|
112
|
+
amount: number;
|
|
113
|
+
};
|
|
114
|
+
type WalletSummary = {
|
|
115
|
+
spendable_utxos: TxOutputSummary[];
|
|
116
|
+
unsigned_peg_out_txos: TxOutputSummary[];
|
|
117
|
+
unsigned_change_utxos: TxOutputSummary[];
|
|
118
|
+
unconfirmed_peg_out_txos: TxOutputSummary[];
|
|
119
|
+
unconfirmed_change_utxos: TxOutputSummary[];
|
|
120
|
+
};
|
|
121
|
+
/** Keys are powers of 2 */
|
|
122
|
+
type NoteCountByDenomination = Record<number, number>;
|
|
106
123
|
//# sourceMappingURL=wallet.d.ts.map
|
|
107
124
|
|
|
108
|
-
declare const WorkerMessageTypes: readonly ["init", "initialized", "rpc", "log", "open", "join", "error", "unsubscribe", "cleanup", "parseInviteCode", "parseBolt11Invoice"];
|
|
125
|
+
declare const WorkerMessageTypes: readonly ["init", "initialized", "rpc", "log", "open", "join", "error", "unsubscribe", "cleanup", "parseInviteCode", "parseBolt11Invoice", "previewFederation"];
|
|
109
126
|
type WorkerMessageType = (typeof WorkerMessageTypes)[number];
|
|
110
127
|
|
|
111
128
|
declare class WorkerClient {
|
|
@@ -169,6 +186,7 @@ declare class MintService {
|
|
|
169
186
|
tryCancelSpendNotes(operationId: string): Promise<void>;
|
|
170
187
|
subscribeSpendNotes(operationId: string, onSuccess?: (state: SpendNotesState) => void, onError?: (error: string) => void): CancelFunction;
|
|
171
188
|
awaitSpendOobRefund(operationId: string): Promise<JSONValue>;
|
|
189
|
+
getNotesByDenomination(): Promise<NoteCountByDenomination>;
|
|
172
190
|
}
|
|
173
191
|
|
|
174
192
|
/**
|
|
@@ -250,6 +268,12 @@ declare class FederationService {
|
|
|
250
268
|
listOperations(): Promise<JSONValue[]>;
|
|
251
269
|
}
|
|
252
270
|
|
|
271
|
+
declare class WalletService {
|
|
272
|
+
private client;
|
|
273
|
+
constructor(client: WorkerClient);
|
|
274
|
+
getWalletSummary(): Promise<WalletSummary>;
|
|
275
|
+
}
|
|
276
|
+
|
|
253
277
|
declare const logLevels: readonly ["debug", "info", "warn", "error", "none"];
|
|
254
278
|
type LogLevel = (typeof logLevels)[number];
|
|
255
279
|
|
|
@@ -260,6 +284,7 @@ declare class FedimintWallet {
|
|
|
260
284
|
lightning: LightningService;
|
|
261
285
|
federation: FederationService;
|
|
262
286
|
recovery: RecoveryService;
|
|
287
|
+
wallet: WalletService;
|
|
263
288
|
private _openPromise;
|
|
264
289
|
private _resolveOpen;
|
|
265
290
|
private _isOpen;
|
|
@@ -303,6 +328,10 @@ declare class FedimintWallet {
|
|
|
303
328
|
*/
|
|
304
329
|
cleanup(): Promise<void>;
|
|
305
330
|
isOpen(): boolean;
|
|
331
|
+
previewFederation(inviteCode: string): Promise<{
|
|
332
|
+
config: FederationConfig;
|
|
333
|
+
federation_id: string;
|
|
334
|
+
}>;
|
|
306
335
|
/**
|
|
307
336
|
* Sets the log level for the library.
|
|
308
337
|
* @param level The desired log level ('DEBUG', 'INFO', 'WARN', 'ERROR', 'NONE').
|
|
@@ -360,4 +389,4 @@ declare class FedimintWallet {
|
|
|
360
389
|
}
|
|
361
390
|
|
|
362
391
|
export { FedimintWallet };
|
|
363
|
-
export type { Alias, CancelFunction, CreateBolt11Response, Duration, FeeToAmount, GatewayInfo, JSONObject, JSONValue, LightningGateway, LnPayState, LnReceiveState, MSats, MintSpendNotesResponse, ModuleKind, OutgoingLightningPayment, PayType, ReissueExternalNotesState, Resolve, Result, RouteHint, Sats, SpendNotesState, StreamError, StreamResult, StreamSuccess, WorkerMessageType };
|
|
392
|
+
export type { Alias, CancelFunction, CreateBolt11Response, Duration, FederationConfig, FeeToAmount, GatewayInfo, JSONObject, JSONValue, LightningGateway, LnPayState, LnReceiveState, MSats, MintSpendNotesResponse, ModuleKind, NoteCountByDenomination, OutgoingLightningPayment, PayType, ReissueExternalNotesState, Resolve, Result, RouteHint, Sats, SpendNotesState, StreamError, StreamResult, StreamSuccess, TxOutputSummary, WalletSummary, WorkerMessageType };
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=["debug","info","warn","error","none"];const t=new class{constructor(e="none"){this.level=e}setLevel(e){this.level=e}coerceLevel(t){return e.includes(t.toLocaleUpperCase())?t.toLocaleUpperCase():"info"}log(e,t,...i){const
|
|
1
|
+
const e=["debug","info","warn","error","none"];const t=new class{constructor(e="none"){this.level=e}setLevel(e){this.level=e}coerceLevel(t){return e.includes(t.toLocaleUpperCase())?t.toLocaleUpperCase():"info"}log(e,t,...i){const n=this.coerceLevel(e);if(!this.shouldLog(n))return;(0,console[n])(`[${n.toUpperCase()}] ${t}`,...i)}debug(e,...t){this.log("debug",e,...t)}info(e,...t){this.log("info",e,...t)}warn(e,...t){this.log("warn",e,...t)}error(e,...t){this.log("error",e,...t)}shouldLog(e){const t=["debug","info","warn","error","none"],i=t.indexOf(e);return t.indexOf(this.level)<=i&&"none"!==this.level&&"none"!==e}};class i{constructor(){this.requestCounter=0,this.requestCallbacks=new Map,this.initPromise=void 0,this.worker=new Worker(new URL("./worker.js",import.meta.url),{type:"module"}),this.worker.onmessage=this.handleWorkerMessage.bind(this),this.worker.onerror=this.handleWorkerError.bind(this),t.info("WorkerClient instantiated"),t.debug("WorkerClient",this.worker)}initialize(){return this.initPromise||(this.initPromise=this.sendSingleMessage("init")),this.initPromise}handleWorkerLogs(e){const{type:i,level:n,message:s,...r}=e.data;t.log(n,s,...r)}handleWorkerError(e){t.error("Worker error",e)}handleWorkerMessage(e){const{type:i,requestId:n,...s}=e.data;"log"===i&&this.handleWorkerLogs(e.data);const r=this.requestCallbacks.get(n);t.debug("WorkerClient - handleWorkerMessage",e.data),r?r(s):t.warn("WorkerClient - handleWorkerMessage - received message with no callback",n,e.data)}sendSingleMessage(e,i){return new Promise(((n,s)=>{const r=++this.requestCounter;t.debug("WorkerClient - sendSingleMessage",r,e,i),this.requestCallbacks.set(r,(e=>{this.requestCallbacks.delete(r),t.debug("WorkerClient - sendSingleMessage - response",r,e),e.data?n(e.data):e.error?s(e.error):t.warn("WorkerClient - sendSingleMessage - malformed response",r,e)})),this.worker.postMessage({type:e,payload:i,requestId:r})}))}rpcStream(e,i,n,s,r,a=()=>{}){const o=++this.requestCounter;t.debug("WorkerClient - rpcStream",o,e,i,n);let c=()=>{},l=!1;const u=new Promise((e=>{c=()=>{l?e():setTimeout((()=>c()),0)}}));return this._rpcStreamInner(o,e,i,n,s,r,a,u).then((()=>{l=!0})),c}async _rpcStreamInner(e,t,i,n,s,r,a=()=>{},o){this.requestCallbacks.set(e,(t=>{void 0!==t.error?r(t.error):void 0!==t.data?s(t.data):void 0!==t.end&&(this.requestCallbacks.delete(e),a())})),this.worker.postMessage({type:"rpc",payload:{module:t,method:i,body:n},requestId:e}),o.then((()=>{this.worker?.postMessage({type:"unsubscribe",requestId:e}),this.requestCallbacks.delete(e)}))}rpcSingle(e,i,n){return t.debug("WorkerClient - rpcSingle",e,i,n),new Promise(((t,s)=>{this.rpcStream(e,i,n,t,s)}))}async cleanup(){await this.sendSingleMessage("cleanup"),this.requestCounter=0,this.initPromise=void 0,this.requestCallbacks.clear()}_getRequestCounter(){return this.requestCounter}_getRequestCallbackMap(){return this.requestCallbacks}}class n{constructor(e){this.client=e}async redeemEcash(e){return await this.client.rpcSingle("mint","reissue_external_notes",{oob_notes:e,extra_meta:null})}async reissueExternalNotes(e,t={}){return await this.client.rpcSingle("mint","reissue_external_notes",{oob_notes:e,extra_meta:t})}subscribeReissueExternalNotes(e,t=()=>{},i=()=>{}){return this.client.rpcStream("mint","subscribe_reissue_external_notes",{operation_id:e},t,i)}async spendNotes(e,t=86400,i=!1,n={}){const s="number"==typeof t?{nanos:0,secs:t}:t,r=await this.client.rpcSingle("mint","spend_notes",{amount:e,try_cancel_after:s,include_invite:i,extra_meta:n});return{notes:r[1],operation_id:r[0]}}async parseNotes(e){return await this.client.rpcSingle("mint","validate_notes",{oob_notes:e})}async tryCancelSpendNotes(e){await this.client.rpcSingle("mint","try_cancel_spend_notes",{operation_id:e})}subscribeSpendNotes(e,t=()=>{},i=()=>{}){return this.client.rpcStream("mint","subscribe_spend_notes",{operation_id:e},(e=>t(e)),i)}async awaitSpendOobRefund(e){return await this.client.rpcSingle("mint","await_spend_oob_refund",{operation_id:e})}async getNotesByDenomination(){return await this.client.rpcSingle("mint","note_counts_by_denomination",{})}}class s{constructor(e){this.client=e}async getBalance(){return await this.client.rpcSingle("","get_balance",{})}subscribeBalance(e=()=>{},t=()=>{}){return this.client.rpcStream("","subscribe_balance_changes",{},(t=>e(parseInt(t))),t)}}class r{constructor(e){this.client=e}async createInvoice(e,t,i,n,s){const r=n??await this._getDefaultGatewayInfo();return await this.client.rpcSingle("ln","create_bolt11_invoice",{amount:e,description:t,expiry_time:i??null,extra_meta:s??{},gateway:r})}async createInvoiceTweaked(e,t,i,n,s,r,a){const o=r??await this._getDefaultGatewayInfo();return await this.client.rpcSingle("ln","create_bolt11_invoice_for_user_tweaked",{amount:e,description:t,expiry_time:s??null,user_key:i,index:n,extra_meta:a??{},gateway:o})}async scanReceivesForTweaks(e,t,i){return await this.client.rpcSingle("ln","scan_receive_for_user_tweaked",{user_key:e,indices:t,extra_meta:i??{}})}async _getDefaultGatewayInfo(){await this.updateGatewayCache();const e=await this.listGateways();return e[0]?.info}async payInvoice(e,t,i){const n=t??await this._getDefaultGatewayInfo();return await this.client.rpcSingle("ln","pay_bolt11_invoice",{maybe_gateway:n,invoice:e,extra_meta:i??{}})}async payInvoiceSync(e,t=1e4,i,n){return new Promise((async(s,r)=>{const{contract_id:a,fee:o}=await this.payInvoice(e,i,n),c=this.subscribeLnPay(a,(e=>{"string"!=typeof e&&"success"in e?(clearTimeout(l),c(),s({success:!0,data:{feeMsats:o,preimage:e.success.preimage}})):"string"!=typeof e&&"unexpected_error"in e&&r(new Error(e.unexpected_error.error_message))})),l=setTimeout((()=>{c(),s({success:!1,error:"Payment timeout"})}),t)}))}subscribeLnClaim(e,t=()=>{},i=()=>{}){return this.client.rpcStream("ln","subscribe_ln_claim",{operation_id:e},t,i)}subscribeLnPay(e,t=()=>{},i=()=>{}){return this.client.rpcStream("ln","subscribe_ln_pay",{operation_id:e},t,i)}async waitForPay(e){return new Promise(((t,i)=>{let n;const s=setTimeout((()=>{t({success:!1,error:"Waiting for receive timeout"})}),15e3);n=this.subscribeLnPay(e,(e=>{"string"!=typeof e&&"success"in e&&(clearTimeout(s),n(),t({success:!0,data:{preimage:e.success.preimage}}))}),(e=>{clearTimeout(s),n(),i(e)}))}))}subscribeLnReceive(e,t=()=>{},i=()=>{}){return this.client.rpcStream("ln","subscribe_ln_receive",{operation_id:e},t,i)}async waitForReceive(e,t=15e3){return new Promise(((i,n)=>{let s;const r=setTimeout((()=>{n(new Error("Timeout waiting for receive"))}),t);s=this.subscribeLnReceive(e,(e=>{"claimed"===e&&(clearTimeout(r),s(),i(e))}),(e=>{clearTimeout(r),s(),n(e)}))}))}async getGateway(e=null,t=!1){return await this.client.rpcSingle("ln","get_gateway",{gateway_id:e,force_internal:t})}async listGateways(){return await this.client.rpcSingle("ln","list_gateways",{})}async updateGatewayCache(){return await this.client.rpcSingle("ln","update_gateway_cache",{})}}class a{constructor(e){this.client=e}async hasPendingRecoveries(){return await this.client.rpcSingle("","has_pending_recoveries",{})}async waitForAllRecoveries(){await this.client.rpcSingle("","wait_for_all_recoveries",{})}subscribeToRecoveryProgress(e,t){return this.client.rpcStream("","subscribe_to_recovery_progress",{},e,t)}}class o{constructor(e){this.client=e}async getConfig(){return await this.client.rpcSingle("","get_config",{})}async getFederationId(){return await this.client.rpcSingle("","get_federation_id",{})}async getInviteCode(e=0){return await this.client.rpcSingle("","get_invite_code",{peer:e})}async listOperations(){return await this.client.rpcSingle("","list_operations",{})}}class c{constructor(e){this.client=e}async getWalletSummary(){return await this.client.rpcSingle("wallet","get_wallet_summary",{})}}const l="fm-default";class u{constructor(e=!1){this._openPromise=void 0,this._resolveOpen=()=>{},this._isOpen=!1,this._openPromise=new Promise((e=>{this._resolveOpen=e})),this._client=new i,this.mint=new n(this._client),this.lightning=new r(this._client),this.balance=new s(this._client),this.federation=new o(this._client),this.recovery=new a(this._client),this.wallet=new c(this._client),t.info("FedimintWallet instantiated"),e||this.initialize()}async initialize(){t.info("Initializing WorkerClient"),await this._client.initialize(),t.info("WorkerClient initialized")}async waitForOpen(){return this._isOpen?Promise.resolve():this._openPromise}async open(e=l){if(await this._client.initialize(),this._isOpen)throw new Error("The FedimintWallet is already open.");const{success:t}=await this._client.sendSingleMessage("open",{clientName:e});return t&&(this._isOpen=!!t,this._resolveOpen()),t}async joinFederation(e,i=l){if(await this._client.initialize(),this._isOpen)throw new Error("The FedimintWallet is already open. You can only call `joinFederation` on closed clients.");try{const t=await this._client.sendSingleMessage("join",{inviteCode:e,clientName:i});return t.success&&(this._isOpen=!0,this._resolveOpen()),t.success}catch(e){return t.error("Error joining federation",e),!1}}async cleanup(){this._openPromise=void 0,this._isOpen=!1,await this._client.cleanup()}isOpen(){return this._isOpen}async previewFederation(e){return this._client.sendSingleMessage("previewFederation",{inviteCode:e})}setLogLevel(e){t.setLevel(e),t.info(`Log level set to ${e}.`)}async parseInviteCode(e){return await this._client.sendSingleMessage("parseInviteCode",{inviteCode:e})}async parseBolt11Invoice(e){return await this._client.sendSingleMessage("parseBolt11Invoice",{invoiceStr:e})}}export{u as FedimintWallet};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/utils/logger.ts","../src/worker/WorkerClient.ts","../src/services/MintService.ts","../src/services/BalanceService.ts","../src/services/LightningService.ts","../src/services/RecoveryService.ts","../src/services/FederationService.ts","../src/FedimintWallet.ts"],"sourcesContent":[null,null,null,null,null,null,null,null],"names":["logLevels","logger","constructor","level","this","setLevel","coerceLevel","includes","toLocaleUpperCase","log","message","args","logLevel","shouldLog","consoleFn","console","toUpperCase","debug","info","warn","error","messageLevel","levels","messageLevelIndex","indexOf","WorkerClient","requestCounter","requestCallbacks","Map","initPromise","undefined","worker","Worker","URL","url","type","onmessage","handleWorkerMessage","bind","onerror","handleWorkerError","initialize","sendSingleMessage","handleWorkerLogs","event","data","requestId","streamCallback","get","payload","Promise","resolve","reject","set","response","delete","postMessage","rpcStream","module","method","body","onSuccess","onError","onEnd","unsubscribe","isSubscribed","unsubscribePromise","setTimeout","_rpcStreamInner","then","end","rpcSingle","cleanup","clear","_getRequestCounter","_getRequestCallbackMap","MintService","client","redeemEcash","notes","oob_notes","extra_meta","reissueExternalNotes","oobNotes","extraMeta","subscribeReissueExternalNotes","operationId","operation_id","spendNotes","amountMsats","tryCancelAfter","includeInvite","duration","nanos","secs","res","amount","try_cancel_after","include_invite","parseNotes","tryCancelSpendNotes","subscribeSpendNotes","awaitSpendOobRefund","BalanceService","getBalance","subscribeBalance","parseInt","LightningService","createInvoice","description","expiryTime","gatewayInfo","gateway","_getDefaultGatewayInfo","expiry_time","createInvoiceTweaked","tweakKey","index","user_key","scanReceivesForTweaks","indices","updateGatewayCache","gateways","listGateways","payInvoice","invoice","maybe_gateway","payInvoiceSync","timeoutMs","async","contract_id","fee","subscribeLnPay","clearTimeout","timeoutId","success","feeMsats","preimage","Error","unexpected_error","error_message","subscribeLnClaim","waitForPay","subscribeLnReceive","waitForReceive","getGateway","gatewayId","forceInternal","gateway_id","force_internal","RecoveryService","hasPendingRecoveries","waitForAllRecoveries","subscribeToRecoveryProgress","FederationService","getConfig","getFederationId","getInviteCode","peer","listOperations","DEFAULT_CLIENT_NAME","FedimintWallet","lazy","_openPromise","_resolveOpen","_isOpen","_client","mint","lightning","balance","federation","recovery","waitForOpen","open","clientName","joinFederation","inviteCode","e","isOpen","setLogLevel","parseInviteCode","parseBolt11Invoice","invoiceStr"],"mappings":"AAAA,MAAMA,EAAY,CAAC,QAAS,OAAQ,OAAQ,QAAS,QA4D9C,MAAMC,EAAS,UAtDpB,WAAAC,CAAYC,EAAkB,QAC5BC,KAAKD,MAAQA,EAGf,QAAAE,CAASF,GACPC,KAAKD,MAAQA,EAGf,WAAAG,CAAYH,GACV,OAAIH,EAAUO,SAASJ,EAAMK,qBACpBL,EAAMK,oBAER,OAGT,GAAAC,CAAIN,EAAeO,KAAoBC,GACrC,MAAMC,EAAWR,KAAKE,YAAYH,GAClC,IAAKC,KAAKS,UAAUD,GAClB,QAGFE,EADkBC,QAAQH,IAChB,IAAIA,EAASI,kBAAkBN,OAAcC,GAGzD,KAAAM,CAAMP,KAAoBC,GACxBP,KAAKK,IAAI,QAASC,KAAYC,GAGhC,IAAAO,CAAKR,KAAoBC,GACvBP,KAAKK,IAAI,OAAQC,KAAYC,GAG/B,IAAAQ,CAAKT,KAAoBC,GACvBP,KAAKK,IAAI,OAAQC,KAAYC,GAG/B,KAAAS,CAAMV,KAAoBC,GACxBP,KAAKK,IAAI,QAASC,KAAYC,GAGxB,SAAAE,CACNQ,GAEA,MAAMC,EAAqB,CAAC,QAAS,OAAQ,OAAQ,QAAS,QACxDC,EAAoBD,EAAOE,QAAQH,GAEzC,OAD0BC,EAAOE,QAAQpB,KAAKD,QAEvBoB,GACN,SAAfnB,KAAKD,OACY,SAAjBkB,UC3COI,EAMX,WAAAvB,GAJQE,KAAcsB,eAAG,EACjBtB,KAAAuB,iBAAmB,IAAIC,IACvBxB,KAAWyB,iBAAiCC,EAIlD1B,KAAK2B,OAAS,IAAIC,OAAO,IAAIC,IAAI,0BAA2BC,KAAM,CAChEC,KAAM,WAER/B,KAAK2B,OAAOK,UAAYhC,KAAKiC,oBAAoBC,KAAKlC,MACtDA,KAAK2B,OAAOQ,QAAUnC,KAAKoC,kBAAkBF,KAAKlC,MAClDH,EAAOiB,KAAK,6BACZjB,EAAOgB,MAAM,eAAgBb,KAAK2B,QAIpC,UAAAU,GACE,OAAIrC,KAAKyB,cACTzB,KAAKyB,YAAczB,KAAKsC,kBAAkB,SADbtC,KAAKyB,YAK5B,gBAAAc,CAAiBC,GACvB,MAAMT,KAAEA,EAAIhC,MAAEA,EAAKO,QAAEA,KAAYmC,GAASD,EAAMC,KAChD5C,EAAOQ,IAAIN,EAAOO,KAAYmC,GAGxB,iBAAAL,CAAkBI,GACxB3C,EAAOmB,MAAM,eAAgBwB,GAGvB,mBAAAP,CAAoBO,GAC1B,MAAMT,KAAEA,EAAIW,UAAEA,KAAcD,GAASD,EAAMC,KAC9B,QAATV,GACF/B,KAAKuC,iBAAiBC,EAAMC,MAE9B,MAAME,EAAiB3C,KAAKuB,iBAAiBqB,IAAIF,GAEjD7C,EAAOgB,MAAM,qCAAsC2B,EAAMC,MACrDE,EACFA,EAAeF,GAEf5C,EAAOkB,KACL,yEACA2B,EACAF,EAAMC,MASZ,iBAAAH,CAGEP,EAAyBc,GACzB,OAAO,IAAIC,SAAkB,CAACC,EAASC,KACrC,MAAMN,IAAc1C,KAAKsB,eACzBzB,EAAOgB,MAAM,mCAAoC6B,EAAWX,EAAMc,GAClE7C,KAAKuB,iBAAiB0B,IACpBP,GACCQ,IACClD,KAAKuB,iBAAiB4B,OAAOT,GAC7B7C,EAAOgB,MACL,8CACA6B,EACAQ,GAEEA,EAAST,KAAMM,EAAQG,EAAST,MAC3BS,EAASlC,MAAOgC,EAAOE,EAASlC,OAEvCnB,EAAOkB,KACL,wDACA2B,EACAQ,EACD,IAGPlD,KAAK2B,OAAOyB,YAAY,CAAErB,OAAMc,UAASH,aAAY,IA4BzD,SAAAW,CAIEC,EACAC,EACAC,EACAC,EACAC,EACAC,EAAoB,QAEpB,MAAMjB,IAAc1C,KAAKsB,eACzBzB,EAAOgB,MAAM,2BAA4B6B,EAAWY,EAAQC,EAAQC,GACpE,IAAII,EAAqC,OACrCC,GAAe,EAEnB,MAAMC,EAAqB,IAAIhB,SAAeC,IAC5Ca,EAAc,KACRC,EAEFd,IAIAgB,YAAW,IAAMH,KAAe,GAEnC,IAiBH,OAbA5D,KAAKgE,gBACHtB,EACAY,EACAC,EACAC,EACAC,EACAC,EACAC,EACAG,GACAG,MAAK,KACLJ,GAAe,CAAI,IAGdD,EAGD,qBAAMI,CAIZtB,EACAY,EACAC,EACAC,EACAC,EACAC,EACAC,EAAoB,OACpBG,GAOA9D,KAAKuB,iBAAiB0B,IAAIP,GAAYQ,SACbxB,IAAnBwB,EAASlC,MACX0C,EAAQR,EAASlC,YACUU,IAAlBwB,EAAST,KAClBgB,EAAUP,EAAST,WACOf,IAAjBwB,EAASgB,MAClBlE,KAAKuB,iBAAiB4B,OAAOT,GAC7BiB,QAGJ3D,KAAK2B,OAAOyB,YAAY,CACtBrB,KAAM,MACNc,QAAS,CAAES,SAAQC,SAAQC,QAC3Bd,cAGFoB,EAAmBG,MAAK,KACtBjE,KAAK2B,QAAQyB,YAAY,CACvBrB,KAAM,cACNW,cAEF1C,KAAKuB,iBAAiB4B,OAAOT,EAAU,IAI3C,SAAAyB,CAGEb,EAAoBC,EAAgBC,GAEpC,OADA3D,EAAOgB,MAAM,2BAA4ByC,EAAQC,EAAQC,GAClD,IAAIV,SAAkB,CAACC,EAASC,KACrChD,KAAKqD,UAAoBC,EAAQC,EAAQC,EAAMT,EAASC,EAAO,IAInE,aAAMoB,SACEpE,KAAKsC,kBAAkB,WAC7BtC,KAAKsB,eAAiB,EACtBtB,KAAKyB,iBAAcC,EACnB1B,KAAKuB,iBAAiB8C,QAIxB,kBAAAC,GACE,OAAOtE,KAAKsB,eAEd,sBAAAiD,GACE,OAAOvE,KAAKuB,wBC9NHiD,EACX,WAAA1E,CAAoB2E,GAAAzE,KAAMyE,OAANA,EAGpB,iBAAMC,CAAYC,GAChB,aAAa3E,KAAKyE,OAAON,UACvB,OACA,yBACA,CACES,UAAWD,EACXE,WAAY,OAKlB,0BAAMC,CAAqBC,EAAkBC,EAAwB,IACnE,aAAahF,KAAKyE,OAAON,UACvB,OACA,yBACA,CACES,UAAWG,EACXF,WAAYG,IAKlB,6BAAAC,CACEC,EACAzB,EAAwD,OACxDC,EAAmC,QAUnC,OARoB1D,KAAKyE,OAAOpB,UAC9B,OACA,mCACA,CAAE8B,aAAcD,GAChBzB,EACAC,GAOJ,gBAAM0B,CACJC,EAIAC,EAAoC,MACpCC,GAAyB,EACzBP,EAAuB,IAEvB,MAAMQ,EACsB,iBAAnBF,EACH,CAAEG,MAAO,EAAGC,KAAMJ,GAClBA,EAEAK,QAAY3F,KAAKyE,OAAON,UAC5B,OACA,cACA,CACEyB,OAAQP,EACRQ,iBAAkBL,EAClBM,eAAgBP,EAChBV,WAAYG,IAMhB,MAAO,CACLL,MAJYgB,EAAI,GAKhBR,aAJkBQ,EAAI,IAS1B,gBAAMI,CAAWhB,GACf,aAAa/E,KAAKyE,OAAON,UAAiB,OAAQ,iBAAkB,CAClES,UAAWG,IAIf,yBAAMiB,CAAoBd,SAClBlF,KAAKyE,OAAON,UAAU,OAAQ,yBAA0B,CAC5DgB,aAAcD,IAIlB,mBAAAe,CACEf,EACAzB,EAA8C,OAC9CC,EAAmC,QAEnC,OAAO1D,KAAKyE,OAAOpB,UACjB,OACA,wBACA,CAAE8B,aAAcD,IACfS,GAAQlC,EAAUkC,IACnBjC,GAIJ,yBAAMwC,CAAoBhB,GACxB,aAAalF,KAAKyE,OAAON,UAAU,OAAQ,yBAA0B,CACnEgB,aAAcD,WC7GPiB,EACX,WAAArG,CAAoB2E,GAAAzE,KAAMyE,OAANA,EAGpB,gBAAM2B,GACJ,aAAapG,KAAKyE,OAAON,UAAkB,GAAI,cAAe,IAIhE,gBAAAkC,CACE5C,EAA4C,OAC5CC,EAAmC,QAEnC,OAAO1D,KAAKyE,OAAOpB,UACjB,GACA,4BACA,CAAA,GACCsC,GAAQlC,EAAU6C,SAASX,KAC5BjC,UCdO6C,EACX,WAAAzG,CAAoB2E,GAAAzE,KAAMyE,OAANA,EAGpB,mBAAM+B,CACJnB,EACAoB,EACAC,EACAC,EACA3B,GAEA,MAAM4B,EAAUD,SAAsB3G,KAAK6G,yBAC3C,aAAa7G,KAAKyE,OAAON,UACvB,KACA,wBACA,CACEyB,OAAQP,EACRoB,cACAK,YAAaJ,GAAc,KAC3B7B,WAAYG,GAAa,CAAE,EAC3B4B,YAKN,0BAAMG,CACJ1B,EACAoB,EACAO,EACAC,EACAP,EACAC,EACA3B,GAEA,MAAM4B,EAAUD,SAAsB3G,KAAK6G,yBAC3C,aAAa7G,KAAKyE,OAAON,UACvB,KACA,yCACA,CACEyB,OAAQP,EACRoB,cACAK,YAAaJ,GAAc,KAC3BQ,SAAUF,EACVC,QACApC,WAAYG,GAAa,CAAE,EAC3B4B,YAMN,2BAAMO,CACJH,EACAI,EACApC,GAEA,aAAahF,KAAKyE,OAAON,UACvB,KACA,gCACA,CACE+C,SAAUF,EACVI,UACAvC,WAAYG,GAAa,CAAE,IAKzB,4BAAM6B,SACN7G,KAAKqH,qBACX,MAAMC,QAAiBtH,KAAKuH,eAC5B,OAAOD,EAAS,IAAIxG,KAItB,gBAAM0G,CACJC,EACAd,EACA3B,GAEA,MAAM4B,EAAUD,SAAsB3G,KAAK6G,yBAC3C,aAAa7G,KAAKyE,OAAON,UACvB,KACA,qBACA,CACEuD,cAAed,EACfa,UACA5C,WAAYG,GAAa,CAAE,IAMjC,oBAAM2C,CACJF,EACAG,EAAoB,IACpBjB,EACA3B,GAEA,OAAO,IAAIlC,SAMT+E,MAAO9E,EAASC,KAChB,MAAM8E,YAAEA,EAAWC,IAAEA,SAAc/H,KAAKwH,WACtCC,EACAd,EACA3B,GAIIpB,EAAc5D,KAAKgI,eAAeF,GAAcnC,IACjC,iBAARA,GAAoB,YAAaA,GAC1CsC,aAAaC,GACbtE,IACAb,EAAQ,CACNoF,SAAS,EACT1F,KAAM,CAAE2F,SAAUL,EAAKM,SAAU1C,EAAIwC,QAAQE,aAEvB,iBAAR1C,GAAoB,qBAAsBA,GAC1D3C,EAAO,IAAIsF,MAAM3C,EAAI4C,iBAAiBC,mBAIpCN,EAAYnE,YAAW,KAC3BH,IACAb,EAAQ,CAAEoF,SAAS,EAAOnH,MAAO,mBAAoB,GACpD4G,EAAU,IAKjB,gBAAAa,CACEvD,EACAzB,EAA6C,OAC7CC,EAAmC,QAEnC,OAAO1D,KAAKyE,OAAOpB,UACjB,KACA,qBACA,CAAE8B,aAAcD,GAChBzB,EACAC,GAOJ,cAAAsE,CACE9C,EACAzB,EAAyC,OACzCC,EAAmC,QAEnC,OAAO1D,KAAKyE,OAAOpB,UACjB,KACA,mBACA,CAAE8B,aAAcD,GAChBzB,EACAC,GAKJ,gBAAMgF,CAAWxD,GACf,OAAO,IAAIpC,SAGT,CAACC,EAASC,KACV,IAAIY,EACJ,MAAMsE,EAAYnE,YAAW,KAC3BhB,EAAQ,CAAEoF,SAAS,EAAOnH,MAAO,+BAAgC,GAChE,MAEH4C,EAAc5D,KAAKgI,eACjB9C,GACCS,IACoB,iBAARA,GAAoB,YAAaA,IAC1CsC,aAAaC,GACbtE,IACAb,EAAQ,CACNoF,SAAS,EACT1F,KAAM,CAAE4F,SAAU1C,EAAIwC,QAAQE,gBAInCrH,IACCiH,aAAaC,GACbtE,IACAZ,EAAOhC,EAAM,GAEhB,IAKL,kBAAA2H,CACEzD,EACAzB,EAA6C,OAC7CC,EAAmC,QAEnC,OAAO1D,KAAKyE,OAAOpB,UACjB,KACA,uBACA,CAAE8B,aAAcD,GAChBzB,EACAC,GAKJ,oBAAMkF,CAAe1D,EAAqB0C,EAAoB,MAC5D,OAAO,IAAI9E,SAAwB,CAACC,EAASC,KAC3C,IAAIY,EACJ,MAAMsE,EAAYnE,YAAW,KAC3Bf,EAAO,IAAIsF,MAAM,+BAA+B,GAC/CV,GAEHhE,EAAc5D,KAAK2I,mBACjBzD,GACCS,IACa,YAARA,IACFsC,aAAaC,GACbtE,IACAb,EAAQ4C,OAGX3E,IACCiH,aAAaC,GACbtE,IACAZ,EAAOhC,EAAM,GAEhB,IAIL,gBAAM6H,CACJC,EAA2B,KAC3BC,GAAyB,GAEzB,aAAa/I,KAAKyE,OAAON,UACvB,KACA,cACA,CACE6E,WAAYF,EACZG,eAAgBF,IAKtB,kBAAMxB,GACJ,aAAavH,KAAKyE,OAAON,UACvB,KACA,gBACA,IAIJ,wBAAMkD,GACJ,aAAarH,KAAKyE,OAAON,UAAU,KAAM,uBAAwB,WC5QxD+E,EACX,WAAApJ,CAAoB2E,GAAAzE,KAAMyE,OAANA,EAEpB,0BAAM0E,GACJ,aAAanJ,KAAKyE,OAAON,UACvB,GACA,yBACA,IAIJ,0BAAMiF,SACEpJ,KAAKyE,OAAON,UAAU,GAAI,0BAA2B,CAAA,GAG7D,2BAAAkF,CACE5F,EACAC,GAEA,OAAO1D,KAAKyE,OAAOpB,UAGhB,GAAI,iCAAkC,CAAE,EAAEI,EAAWC,UCtB/C4F,EACX,WAAAxJ,CAAoB2E,GAAAzE,KAAMyE,OAANA,EAEpB,eAAM8E,GACJ,aAAavJ,KAAKyE,OAAON,UAAU,GAAI,aAAc,IAGvD,qBAAMqF,GACJ,aAAaxJ,KAAKyE,OAAON,UAAkB,GAAI,oBAAqB,IAGtE,mBAAMsF,CAAcC,EAAe,GACjC,aAAa1J,KAAKyE,OAAON,UAAyB,GAAI,kBAAmB,CACvEuF,SAIJ,oBAAMC,GACJ,aAAa3J,KAAKyE,OAAON,UAAuB,GAAI,kBAAmB,KCV3E,MAAMyF,EAAsB,mBAEfC,EA0CX,WAAA/J,CAAYgK,GAAgB,GAjCpB9J,KAAY+J,kBAA8BrI,EAC1C1B,KAAAgK,aAA2B,OAC3BhK,KAAOiK,SAAY,EAgCzBjK,KAAK+J,aAAe,IAAIjH,SAASC,IAC/B/C,KAAKgK,aAAejH,CAAO,IAE7B/C,KAAKkK,QAAU,IAAI7I,EACnBrB,KAAKmK,KAAO,IAAI3F,EAAYxE,KAAKkK,SACjClK,KAAKoK,UAAY,IAAI7D,EAAiBvG,KAAKkK,SAC3ClK,KAAKqK,QAAU,IAAIlE,EAAenG,KAAKkK,SACvClK,KAAKsK,WAAa,IAAIhB,EAAkBtJ,KAAKkK,SAC7ClK,KAAKuK,SAAW,IAAIrB,EAAgBlJ,KAAKkK,SAEzCrK,EAAOiB,KAAK,+BAEPgJ,GACH9J,KAAKqC,aAIT,gBAAMA,GACJxC,EAAOiB,KAAK,mCACNd,KAAKkK,QAAQ7H,aACnBxC,EAAOiB,KAAK,4BAGd,iBAAM0J,GACJ,OAAIxK,KAAKiK,QAAgBnH,QAAQC,UAC1B/C,KAAK+J,aAGd,UAAMU,CAAKC,EAAqBd,GAG9B,SAFM5J,KAAKkK,QAAQ7H,aAEfrC,KAAKiK,QAAS,MAAM,IAAI3B,MAAM,uCAClC,MAAMH,QAAEA,SAAkBnI,KAAKkK,QAAQ5H,kBAEpC,OAAQ,CAAEoI,eAKb,OAJIvC,IACFnI,KAAKiK,UAAY9B,EACjBnI,KAAKgK,gBAEA7B,EAGT,oBAAMwC,CACJC,EACAF,EAAqBd,GAIrB,SAFM5J,KAAKkK,QAAQ7H,aAEfrC,KAAKiK,QACP,MAAM,IAAI3B,MACR,6FAEJ,IACE,MAAMpF,QAAiBlD,KAAKkK,QAAQ5H,kBAEjC,OAAQ,CAAEsI,aAAYF,eAMzB,OALIxH,EAASiF,UACXnI,KAAKiK,SAAU,EACfjK,KAAKgK,gBAGA9G,EAASiF,QAChB,MAAO0C,GAEP,OADAhL,EAAOmB,MAAM,2BAA4B6J,IAClC,GAQX,aAAMzG,GACJpE,KAAK+J,kBAAerI,EACpB1B,KAAKiK,SAAU,QACTjK,KAAKkK,QAAQ9F,UAGrB,MAAA0G,GACE,OAAO9K,KAAKiK,QAOd,WAAAc,CAAYhL,GACVF,EAAOI,SAASF,GAChBF,EAAOiB,KAAK,oBAAoBf,MAsBlC,qBAAMiL,CAAgBJ,GAMpB,aALuB5K,KAAKkK,QAAQ5H,kBAIjC,kBAAmB,CAAEsI,eAwB1B,wBAAMK,CAAmBC,GAMvB,aALuBlL,KAAKkK,QAAQ5H,kBAIjC,qBAAsB,CAAE4I"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/utils/logger.ts","../src/worker/WorkerClient.ts","../src/services/MintService.ts","../src/services/BalanceService.ts","../src/services/LightningService.ts","../src/services/RecoveryService.ts","../src/services/FederationService.ts","../src/services/WalletService.ts","../src/FedimintWallet.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null],"names":["logLevels","logger","constructor","level","this","setLevel","coerceLevel","includes","toLocaleUpperCase","log","message","args","logLevel","shouldLog","consoleFn","console","toUpperCase","debug","info","warn","error","messageLevel","levels","messageLevelIndex","indexOf","WorkerClient","requestCounter","requestCallbacks","Map","initPromise","undefined","worker","Worker","URL","url","type","onmessage","handleWorkerMessage","bind","onerror","handleWorkerError","initialize","sendSingleMessage","handleWorkerLogs","event","data","requestId","streamCallback","get","payload","Promise","resolve","reject","set","response","delete","postMessage","rpcStream","module","method","body","onSuccess","onError","onEnd","unsubscribe","isSubscribed","unsubscribePromise","setTimeout","_rpcStreamInner","then","end","rpcSingle","cleanup","clear","_getRequestCounter","_getRequestCallbackMap","MintService","client","redeemEcash","notes","oob_notes","extra_meta","reissueExternalNotes","oobNotes","extraMeta","subscribeReissueExternalNotes","operationId","operation_id","spendNotes","amountMsats","tryCancelAfter","includeInvite","duration","nanos","secs","res","amount","try_cancel_after","include_invite","parseNotes","tryCancelSpendNotes","subscribeSpendNotes","awaitSpendOobRefund","getNotesByDenomination","BalanceService","getBalance","subscribeBalance","parseInt","LightningService","createInvoice","description","expiryTime","gatewayInfo","gateway","_getDefaultGatewayInfo","expiry_time","createInvoiceTweaked","tweakKey","index","user_key","scanReceivesForTweaks","indices","updateGatewayCache","gateways","listGateways","payInvoice","invoice","maybe_gateway","payInvoiceSync","timeoutMs","async","contract_id","fee","subscribeLnPay","clearTimeout","timeoutId","success","feeMsats","preimage","Error","unexpected_error","error_message","subscribeLnClaim","waitForPay","subscribeLnReceive","waitForReceive","getGateway","gatewayId","forceInternal","gateway_id","force_internal","RecoveryService","hasPendingRecoveries","waitForAllRecoveries","subscribeToRecoveryProgress","FederationService","getConfig","getFederationId","getInviteCode","peer","listOperations","WalletService","getWalletSummary","DEFAULT_CLIENT_NAME","FedimintWallet","lazy","_openPromise","_resolveOpen","_isOpen","_client","mint","lightning","balance","federation","recovery","wallet","waitForOpen","open","clientName","joinFederation","inviteCode","e","isOpen","previewFederation","setLogLevel","parseInviteCode","parseBolt11Invoice","invoiceStr"],"mappings":"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"}
|
package/dist/worker.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
globalThis.__vitest_browser_runner__={wrapDynamicImport:e=>e()};let e=null,s=null;const t=new Map;console.log("Worker - init"),self.onmessage=async
|
|
1
|
+
globalThis.__vitest_browser_runner__={wrapDynamicImport:e=>e()};let e=null,s=null;const t=new Map;console.log("Worker - init"),self.onmessage=async r=>{const{type:o,payload:a,requestId:i}=r.data;try{if("init"===o)e=(await import("@fedimint/fedimint-client-wasm-bundler")).WasmClient,self.postMessage({type:"initialized",data:{},requestId:i});else if("open"===o){const{clientName:t}=a;s=await e.open(t)||null,self.postMessage({type:"open",data:{success:!!s},requestId:i})}else if("join"===o){const{inviteCode:t,clientName:r}=a;try{s=await e.join_federation(r,t),self.postMessage({type:"join",data:{success:!!s},requestId:i})}catch(e){self.postMessage({type:"error",error:e.message,requestId:i})}}else if("previewFederation"===o){const{inviteCode:t}=a;try{s=await e.preview_federation(t);const r=JSON.parse(s);self.postMessage({type:"previewFederation",data:{success:!!s,config:r.config,federation_id:r.federation_id},requestId:i})}catch(e){self.postMessage({type:"error",error:e.message,requestId:i})}}else if("rpc"===o){const{module:e,method:r,body:o}=a;if(console.log("RPC received",e,r,o),!s)return void self.postMessage({type:"error",error:"WasmClient not initialized",requestId:i});const n=await s.rpc(e,r,JSON.stringify(o),(e=>{console.log("RPC response",i,e);const s=JSON.parse(e);if(self.postMessage({type:"rpcResponse",requestId:i,...s}),void 0!==s.end){const e=t.get(i);e?.free()}}));t.set(i,n)}else if("unsubscribe"===o){const e=t.get(i);e&&(e.cancel(),e.free(),t.delete(i))}else if("cleanup"===o)console.log("cleanup message received"),s?.free(),self.postMessage({type:"cleanup",data:{},requestId:i}),close();else if("parseInviteCode"===o){const{inviteCode:s}=a;try{const t=e.parse_invite_code(s),r=JSON.parse(t);self.postMessage({type:"parseInviteCode",data:r,requestId:i})}catch(e){self.postMessage({type:"error",error:`Failed to parse invite code: ${e.message}`,requestId:i})}}else if("parseBolt11Invoice"===o){const{invoiceStr:s}=a;try{const t=e.parse_bolt11_invoice(s),r=JSON.parse(t);self.postMessage({type:"parseBolt11Invoice",data:r,requestId:i})}catch(e){self.postMessage({type:"error",error:`Failed to parse invoice: ${e.message}`,requestId:i})}}else self.postMessage({type:"error",error:"Unknown message type",requestId:i})}catch(e){console.error("ERROR",e),self.postMessage({type:"error",error:e,requestId:i})}};
|
|
2
2
|
//# sourceMappingURL=worker.js.map
|
package/dist/worker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.js","sources":["../src/worker/worker.js"],"sourcesContent":["// Web Worker for fedimint-client-wasm to run in the browser\n\n// HACK: Fixes vitest browser runner\n// TODO: remove once https://github.com/vitest-dev/vitest/pull/6569 lands in a release\nglobalThis.__vitest_browser_runner__ = { wrapDynamicImport: (foo) => foo() }\n\n// dynamically imported Constructor for WasmClient\nlet WasmClient = null\n// client instance\nlet client = null\n\nconst streamCancelMap = new Map()\n\nconst handleFree = (requestId) => {\n streamCancelMap.delete(requestId)\n}\n\nconsole.log('Worker - init')\n\nself.onmessage = async (event) => {\n const { type, payload, requestId } = event.data\n\n try {\n if (type === 'init') {\n WasmClient = (await import('@fedimint/fedimint-client-wasm-bundler'))\n .WasmClient\n self.postMessage({ type: 'initialized', data: {}, requestId })\n } else if (type === 'open') {\n const { clientName } = payload\n client = (await WasmClient.open(clientName)) || null\n self.postMessage({\n type: 'open',\n data: { success: !!client },\n requestId,\n })\n } else if (type === 'join') {\n const { inviteCode, clientName: joinClientName } = payload\n try {\n client = await WasmClient.join_federation(joinClientName, inviteCode)\n self.postMessage({\n type: 'join',\n data: { success: !!client },\n requestId,\n })\n } catch (e) {\n self.postMessage({ type: 'error', error: e.message, requestId })\n }\n } else if (type === 'rpc') {\n const { module, method, body } = payload\n console.log('RPC received', module, method, body)\n if (!client) {\n self.postMessage({\n type: 'error',\n error: 'WasmClient not initialized',\n requestId,\n })\n return\n }\n const rpcHandle = await client.rpc(\n module,\n method,\n JSON.stringify(body),\n (res) => {\n console.log('RPC response', requestId, res)\n const data = JSON.parse(res)\n self.postMessage({ type: 'rpcResponse', requestId, ...data })\n\n if (data.end !== undefined) {\n // Handle stream ending\n const handle = streamCancelMap.get(requestId)\n handle?.free()\n }\n },\n )\n streamCancelMap.set(requestId, rpcHandle)\n } else if (type === 'unsubscribe') {\n const rpcHandle = streamCancelMap.get(requestId)\n if (rpcHandle) {\n rpcHandle.cancel()\n rpcHandle.free()\n streamCancelMap.delete(requestId)\n }\n } else if (type === 'cleanup') {\n console.log('cleanup message received')\n client?.free()\n self.postMessage({\n type: 'cleanup',\n data: {},\n requestId,\n })\n close()\n } else if (type === 'parseInviteCode') {\n const { inviteCode } = payload\n try {\n const res = WasmClient.parse_invite_code(inviteCode)\n const parsedRes = JSON.parse(res)\n self.postMessage({\n type: 'parseInviteCode',\n data: parsedRes,\n requestId,\n })\n } catch (error) {\n self.postMessage({\n type: 'error',\n error: `Failed to parse invite code: ${error.message}`,\n requestId,\n })\n }\n } else if (type === 'parseBolt11Invoice') {\n const { invoiceStr } = payload\n try {\n const res = WasmClient.parse_bolt11_invoice(invoiceStr)\n const parsedRes = JSON.parse(res)\n self.postMessage({\n type: 'parseBolt11Invoice',\n data: parsedRes,\n requestId,\n })\n } catch (error) {\n self.postMessage({\n type: 'error',\n error: `Failed to parse invoice: ${error.message}`,\n requestId,\n })\n }\n } else {\n self.postMessage({\n type: 'error',\n error: 'Unknown message type',\n requestId,\n })\n }\n } catch (e) {\n console.error('ERROR', e)\n self.postMessage({ type: 'error', error: e, requestId })\n }\n}\n\n// self.postMessage({ type: 'init', data: {} })\n"],"names":["globalThis","__vitest_browser_runner__","wrapDynamicImport","foo","WasmClient","client","streamCancelMap","Map","console","log","self","onmessage","async","event","type","payload","requestId","data","import","postMessage","clientName","open","success","inviteCode","joinClientName","join_federation","e","error","message","module","method","body","rpcHandle","rpc","
|
|
1
|
+
{"version":3,"file":"worker.js","sources":["../src/worker/worker.js"],"sourcesContent":["// Web Worker for fedimint-client-wasm to run in the browser\n\n// HACK: Fixes vitest browser runner\n// TODO: remove once https://github.com/vitest-dev/vitest/pull/6569 lands in a release\nglobalThis.__vitest_browser_runner__ = { wrapDynamicImport: (foo) => foo() }\n\n// dynamically imported Constructor for WasmClient\nlet WasmClient = null\n// client instance\nlet client = null\n\nconst streamCancelMap = new Map()\n\nconst handleFree = (requestId) => {\n streamCancelMap.delete(requestId)\n}\n\nconsole.log('Worker - init')\n\n/**\n * Type definitions for the worker messages\n *\n * @typedef {import('../types/worker').WorkerMessageType} WorkerMessageType\n * @typedef {{\n * type: WorkerMessageType\n * payload: any\n * requestId: number\n * }} WorkerMessage\n * @param {{data: WorkerMessage}} event\n */\nself.onmessage = async (event) => {\n const { type, payload, requestId } = event.data\n\n try {\n if (type === 'init') {\n WasmClient = (await import('@fedimint/fedimint-client-wasm-bundler'))\n .WasmClient\n self.postMessage({ type: 'initialized', data: {}, requestId })\n } else if (type === 'open') {\n const { clientName } = payload\n client = (await WasmClient.open(clientName)) || null\n self.postMessage({\n type: 'open',\n data: { success: !!client },\n requestId,\n })\n } else if (type === 'join') {\n const { inviteCode, clientName: joinClientName } = payload\n try {\n client = await WasmClient.join_federation(joinClientName, inviteCode)\n self.postMessage({\n type: 'join',\n data: { success: !!client },\n requestId,\n })\n } catch (e) {\n self.postMessage({ type: 'error', error: e.message, requestId })\n }\n } else if (type === 'previewFederation') {\n const { inviteCode } = payload\n try {\n client = await WasmClient.preview_federation(inviteCode)\n const parsed = JSON.parse(client)\n self.postMessage({\n type: 'previewFederation',\n data: {\n success: !!client,\n config: parsed.config,\n federation_id: parsed.federation_id,\n },\n requestId,\n })\n } catch (e) {\n self.postMessage({ type: 'error', error: e.message, requestId })\n }\n } else if (type === 'rpc') {\n const { module, method, body } = payload\n console.log('RPC received', module, method, body)\n if (!client) {\n self.postMessage({\n type: 'error',\n error: 'WasmClient not initialized',\n requestId,\n })\n return\n }\n const rpcHandle = await client.rpc(\n module,\n method,\n JSON.stringify(body),\n (res) => {\n console.log('RPC response', requestId, res)\n const data = JSON.parse(res)\n self.postMessage({ type: 'rpcResponse', requestId, ...data })\n\n if (data.end !== undefined) {\n // Handle stream ending\n const handle = streamCancelMap.get(requestId)\n handle?.free()\n }\n },\n )\n streamCancelMap.set(requestId, rpcHandle)\n } else if (type === 'unsubscribe') {\n const rpcHandle = streamCancelMap.get(requestId)\n if (rpcHandle) {\n rpcHandle.cancel()\n rpcHandle.free()\n streamCancelMap.delete(requestId)\n }\n } else if (type === 'cleanup') {\n console.log('cleanup message received')\n client?.free()\n self.postMessage({\n type: 'cleanup',\n data: {},\n requestId,\n })\n close()\n } else if (type === 'parseInviteCode') {\n const { inviteCode } = payload\n try {\n const res = WasmClient.parse_invite_code(inviteCode)\n const parsedRes = JSON.parse(res)\n self.postMessage({\n type: 'parseInviteCode',\n data: parsedRes,\n requestId,\n })\n } catch (error) {\n self.postMessage({\n type: 'error',\n error: `Failed to parse invite code: ${error.message}`,\n requestId,\n })\n }\n } else if (type === 'parseBolt11Invoice') {\n const { invoiceStr } = payload\n try {\n const res = WasmClient.parse_bolt11_invoice(invoiceStr)\n const parsedRes = JSON.parse(res)\n self.postMessage({\n type: 'parseBolt11Invoice',\n data: parsedRes,\n requestId,\n })\n } catch (error) {\n self.postMessage({\n type: 'error',\n error: `Failed to parse invoice: ${error.message}`,\n requestId,\n })\n }\n } else {\n self.postMessage({\n type: 'error',\n error: 'Unknown message type',\n requestId,\n })\n }\n } catch (e) {\n console.error('ERROR', e)\n self.postMessage({ type: 'error', error: e, requestId })\n }\n}\n\n// self.postMessage({ type: 'init', data: {} })\n"],"names":["globalThis","__vitest_browser_runner__","wrapDynamicImport","foo","WasmClient","client","streamCancelMap","Map","console","log","self","onmessage","async","event","type","payload","requestId","data","import","postMessage","clientName","open","success","inviteCode","joinClientName","join_federation","e","error","message","preview_federation","parsed","JSON","parse","config","federation_id","module","method","body","rpcHandle","rpc","stringify","res","undefined","end","handle","get","free","set","cancel","delete","close","parse_invite_code","parsedRes","invoiceStr","parse_bolt11_invoice"],"mappings":"AAIAA,WAAWC,0BAA4B,CAAEC,kBAAoBC,GAAQA,KAGrE,IAAIC,EAAa,KAEbC,EAAS,KAEb,MAAMC,EAAkB,IAAIC,IAM5BC,QAAQC,IAAI,iBAaZC,KAAKC,UAAYC,MAAOC,IACtB,MAAMC,KAAEA,EAAIC,QAAEA,EAAOC,UAAEA,GAAcH,EAAMI,KAE3C,IACE,GAAa,SAATH,EACFV,SAAoBc,OAAO,2CACxBd,WACHM,KAAKS,YAAY,CAAEL,KAAM,cAAeG,KAAM,CAAE,EAAED,mBAC7C,GAAa,SAATF,EAAiB,CAC1B,MAAMM,WAAEA,GAAeL,EACvBV,QAAgBD,EAAWiB,KAAKD,IAAgB,KAChDV,KAAKS,YAAY,CACfL,KAAM,OACNG,KAAM,CAAEK,UAAWjB,GACnBW,aAER,MAAW,GAAa,SAATF,EAAiB,CAC1B,MAAMS,WAAEA,EAAYH,WAAYI,GAAmBT,EACnD,IACEV,QAAeD,EAAWqB,gBAAgBD,EAAgBD,GAC1Db,KAAKS,YAAY,CACfL,KAAM,OACNG,KAAM,CAAEK,UAAWjB,GACnBW,aAEH,CAAC,MAAOU,GACPhB,KAAKS,YAAY,CAAEL,KAAM,QAASa,MAAOD,EAAEE,QAASZ,aAC5D,CACA,MAAW,GAAa,sBAATF,EAA8B,CACvC,MAAMS,WAAEA,GAAeR,EACvB,IACEV,QAAeD,EAAWyB,mBAAmBN,GAC7C,MAAMO,EAASC,KAAKC,MAAM3B,GAC1BK,KAAKS,YAAY,CACfL,KAAM,oBACNG,KAAM,CACJK,UAAWjB,EACX4B,OAAQH,EAAOG,OACfC,cAAeJ,EAAOI,eAExBlB,aAEH,CAAC,MAAOU,GACPhB,KAAKS,YAAY,CAAEL,KAAM,QAASa,MAAOD,EAAEE,QAASZ,aAC5D,CACA,MAAW,GAAa,QAATF,EAAgB,CACzB,MAAMqB,OAAEA,EAAMC,OAAEA,EAAMC,KAAEA,GAAStB,EAEjC,GADAP,QAAQC,IAAI,eAAgB0B,EAAQC,EAAQC,IACvChC,EAMH,YALAK,KAAKS,YAAY,CACfL,KAAM,QACNa,MAAO,6BACPX,cAIJ,MAAMsB,QAAkBjC,EAAOkC,IAC7BJ,EACAC,EACAL,KAAKS,UAAUH,IACdI,IACCjC,QAAQC,IAAI,eAAgBO,EAAWyB,GACvC,MAAMxB,EAAOc,KAAKC,MAAMS,GAGxB,GAFA/B,KAAKS,YAAY,CAAEL,KAAM,cAAeE,eAAcC,SAErCyB,IAAbzB,EAAK0B,IAAmB,CAE1B,MAAMC,EAAStC,EAAgBuC,IAAI7B,GACnC4B,GAAQE,MACpB,KAGMxC,EAAgByC,IAAI/B,EAAWsB,EACrC,MAAW,GAAa,gBAATxB,EAAwB,CACjC,MAAMwB,EAAYhC,EAAgBuC,IAAI7B,GAClCsB,IACFA,EAAUU,SACVV,EAAUQ,OACVxC,EAAgB2C,OAAOjC,GAE/B,MAAW,GAAa,YAATF,EACTN,QAAQC,IAAI,4BACZJ,GAAQyC,OACRpC,KAAKS,YAAY,CACfL,KAAM,UACNG,KAAM,CAAE,EACRD,cAEFkC,aACK,GAAa,oBAATpC,EAA4B,CACrC,MAAMS,WAAEA,GAAeR,EACvB,IACE,MAAM0B,EAAMrC,EAAW+C,kBAAkB5B,GACnC6B,EAAYrB,KAAKC,MAAMS,GAC7B/B,KAAKS,YAAY,CACfL,KAAM,kBACNG,KAAMmC,EACNpC,aAEH,CAAC,MAAOW,GACPjB,KAAKS,YAAY,CACfL,KAAM,QACNa,MAAO,gCAAgCA,EAAMC,UAC7CZ,aAEV,CACA,MAAW,GAAa,uBAATF,EAA+B,CACxC,MAAMuC,WAAEA,GAAetC,EACvB,IACE,MAAM0B,EAAMrC,EAAWkD,qBAAqBD,GACtCD,EAAYrB,KAAKC,MAAMS,GAC7B/B,KAAKS,YAAY,CACfL,KAAM,qBACNG,KAAMmC,EACNpC,aAEH,CAAC,MAAOW,GACPjB,KAAKS,YAAY,CACfL,KAAM,QACNa,MAAO,4BAA4BA,EAAMC,UACzCZ,aAEV,CACA,MACMN,KAAKS,YAAY,CACfL,KAAM,QACNa,MAAO,uBACPX,aAGL,CAAC,MAAOU,GACPlB,QAAQmB,MAAM,QAASD,GACvBhB,KAAKS,YAAY,CAAEL,KAAM,QAASa,MAAOD,EAAGV,aAChD"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fedimint/core-web",
|
|
3
3
|
"description": "Library for building web apps with a fedimint client",
|
|
4
|
-
"version": "0.0
|
|
4
|
+
"version": "0.1.0-alex-cache-wasm-build",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "https://github.com/fedimint/fedimint-web-sdk.git",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"main": "./dist/index.js",
|
|
20
20
|
"types": "./dist/index.d.ts",
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@fedimint/fedimint-client-wasm-bundler": "0.0
|
|
22
|
+
"@fedimint/fedimint-client-wasm-bundler": "0.1.0-alex-cache-wasm-build"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
25
|
"@rollup/plugin-terser": "^0.4.4",
|
|
@@ -58,3 +58,16 @@ walletTest('empty getBalance', async ({ wallet }) => {
|
|
|
58
58
|
await expect(wallet.waitForOpen()).resolves.toBeUndefined()
|
|
59
59
|
await expect(wallet.balance.getBalance()).resolves.toEqual(0)
|
|
60
60
|
})
|
|
61
|
+
|
|
62
|
+
walletTest('previewFederation', async ({ unopenedWallet }) => {
|
|
63
|
+
const preview = await unopenedWallet.previewFederation(
|
|
64
|
+
unopenedWallet.testing.TESTING_INVITE,
|
|
65
|
+
)
|
|
66
|
+
expect(preview).toBeDefined()
|
|
67
|
+
expect(preview.config).toBeDefined()
|
|
68
|
+
expect(preview.federation_id).toBeDefined()
|
|
69
|
+
expect(preview).toMatchObject({
|
|
70
|
+
config: expect.any(Object),
|
|
71
|
+
federation_id: expect.any(String),
|
|
72
|
+
})
|
|
73
|
+
})
|
package/src/FedimintWallet.ts
CHANGED
|
@@ -5,9 +5,10 @@ import {
|
|
|
5
5
|
LightningService,
|
|
6
6
|
FederationService,
|
|
7
7
|
RecoveryService,
|
|
8
|
+
WalletService,
|
|
8
9
|
} from './services'
|
|
9
10
|
import { logger, type LogLevel } from './utils/logger'
|
|
10
|
-
import { JSONValue } from './types'
|
|
11
|
+
import { FederationConfig, JSONValue } from './types'
|
|
11
12
|
|
|
12
13
|
const DEFAULT_CLIENT_NAME = 'fm-default' as const
|
|
13
14
|
|
|
@@ -19,6 +20,7 @@ export class FedimintWallet {
|
|
|
19
20
|
public lightning: LightningService
|
|
20
21
|
public federation: FederationService
|
|
21
22
|
public recovery: RecoveryService
|
|
23
|
+
public wallet: WalletService
|
|
22
24
|
|
|
23
25
|
private _openPromise: Promise<void> | undefined = undefined
|
|
24
26
|
private _resolveOpen: () => void = () => {}
|
|
@@ -63,6 +65,7 @@ export class FedimintWallet {
|
|
|
63
65
|
this.balance = new BalanceService(this._client)
|
|
64
66
|
this.federation = new FederationService(this._client)
|
|
65
67
|
this.recovery = new RecoveryService(this._client)
|
|
68
|
+
this.wallet = new WalletService(this._client)
|
|
66
69
|
|
|
67
70
|
logger.info('FedimintWallet instantiated')
|
|
68
71
|
|
|
@@ -136,6 +139,14 @@ export class FedimintWallet {
|
|
|
136
139
|
return this._isOpen
|
|
137
140
|
}
|
|
138
141
|
|
|
142
|
+
async previewFederation(inviteCode: string) {
|
|
143
|
+
const response = this._client.sendSingleMessage<{
|
|
144
|
+
config: FederationConfig
|
|
145
|
+
federation_id: string
|
|
146
|
+
}>('previewFederation', { inviteCode })
|
|
147
|
+
return response
|
|
148
|
+
}
|
|
149
|
+
|
|
139
150
|
/**
|
|
140
151
|
* Sets the log level for the library.
|
|
141
152
|
* @param level The desired log level ('DEBUG', 'INFO', 'WARN', 'ERROR', 'NONE').
|
|
@@ -31,3 +31,44 @@ walletTest('parseNotes should parse notes', async ({ wallet }) => {
|
|
|
31
31
|
|
|
32
32
|
await expect(wallet.mint.reissueExternalNotes('test')).rejects.toThrow()
|
|
33
33
|
})
|
|
34
|
+
|
|
35
|
+
walletTest(
|
|
36
|
+
'getNotesByDenomination should return empty object if wallet is empty',
|
|
37
|
+
async ({ wallet }) => {
|
|
38
|
+
expect(wallet).toBeDefined()
|
|
39
|
+
expect(wallet.isOpen()).toBe(true)
|
|
40
|
+
|
|
41
|
+
const notes = await wallet.mint.getNotesByDenomination()
|
|
42
|
+
const balance = await wallet.balance.getBalance()
|
|
43
|
+
expect(balance).toEqual(0)
|
|
44
|
+
expect(notes).toBeDefined()
|
|
45
|
+
expect(notes).toEqual({})
|
|
46
|
+
},
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
walletTest(
|
|
50
|
+
'getNotesByDenomination should get notes by denomination',
|
|
51
|
+
async ({ fundedWallet }) => {
|
|
52
|
+
expect(fundedWallet).toBeDefined()
|
|
53
|
+
expect(fundedWallet.isOpen()).toBe(true)
|
|
54
|
+
|
|
55
|
+
const notes = await fundedWallet.mint.getNotesByDenomination()
|
|
56
|
+
const balance = await fundedWallet.balance.getBalance()
|
|
57
|
+
expect(balance).toEqual(10000)
|
|
58
|
+
expect(notes).toBeDefined()
|
|
59
|
+
expect(notes).toEqual({
|
|
60
|
+
'1': 2,
|
|
61
|
+
'1024': 3,
|
|
62
|
+
'128': 2,
|
|
63
|
+
'16': 3,
|
|
64
|
+
'2': 3,
|
|
65
|
+
'2048': 2,
|
|
66
|
+
'256': 3,
|
|
67
|
+
'32': 2,
|
|
68
|
+
'4': 2,
|
|
69
|
+
'512': 3,
|
|
70
|
+
'64': 2,
|
|
71
|
+
'8': 2,
|
|
72
|
+
})
|
|
73
|
+
},
|
|
74
|
+
)
|
|
@@ -5,6 +5,7 @@ import type {
|
|
|
5
5
|
JSONValue,
|
|
6
6
|
MintSpendNotesResponse,
|
|
7
7
|
MSats,
|
|
8
|
+
NoteCountByDenomination,
|
|
8
9
|
ReissueExternalNotesState,
|
|
9
10
|
SpendNotesState,
|
|
10
11
|
} from '../types'
|
|
@@ -117,4 +118,12 @@ export class MintService {
|
|
|
117
118
|
operation_id: operationId,
|
|
118
119
|
})
|
|
119
120
|
}
|
|
121
|
+
|
|
122
|
+
async getNotesByDenomination() {
|
|
123
|
+
return await this.client.rpcSingle<NoteCountByDenomination>(
|
|
124
|
+
'mint',
|
|
125
|
+
'note_counts_by_denomination',
|
|
126
|
+
{},
|
|
127
|
+
)
|
|
128
|
+
}
|
|
120
129
|
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { expect } from 'vitest'
|
|
2
|
+
import { walletTest } from '../test/fixtures'
|
|
3
|
+
import { TxOutputSummary, WalletSummary } from '../types'
|
|
4
|
+
|
|
5
|
+
walletTest(
|
|
6
|
+
'getWalletSummary should return empty object if wallet is empty',
|
|
7
|
+
async ({ wallet }) => {
|
|
8
|
+
expect(wallet).toBeDefined()
|
|
9
|
+
expect(wallet.isOpen()).toBe(true)
|
|
10
|
+
|
|
11
|
+
const balance = await wallet.balance.getBalance()
|
|
12
|
+
expect(balance).toEqual(0)
|
|
13
|
+
|
|
14
|
+
const summary = await wallet.wallet.getWalletSummary()
|
|
15
|
+
const expectedSummary = {
|
|
16
|
+
spendable_utxos: expect.any(Array<TxOutputSummary>),
|
|
17
|
+
unsigned_peg_out_txos: expect.any(Array<TxOutputSummary>),
|
|
18
|
+
unsigned_change_utxos: expect.any(Array<TxOutputSummary>),
|
|
19
|
+
unconfirmed_peg_out_txos: expect.any(Array<TxOutputSummary>),
|
|
20
|
+
unconfirmed_change_utxos: expect.any(Array<TxOutputSummary>),
|
|
21
|
+
} satisfies WalletSummary
|
|
22
|
+
expect(summary).toEqual(expect.objectContaining(expectedSummary))
|
|
23
|
+
},
|
|
24
|
+
)
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { WalletSummary } from '../types'
|
|
2
|
+
import { WorkerClient } from '../worker'
|
|
3
|
+
|
|
4
|
+
export class WalletService {
|
|
5
|
+
constructor(private client: WorkerClient) {}
|
|
6
|
+
|
|
7
|
+
async getWalletSummary(): Promise<WalletSummary> {
|
|
8
|
+
return await this.client.rpcSingle('wallet', 'get_wallet_summary', {})
|
|
9
|
+
}
|
|
10
|
+
}
|
package/src/services/index.ts
CHANGED
|
@@ -25,7 +25,7 @@ export class TestingService {
|
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
async getInviteCode() {
|
|
28
|
-
const res = await fetch(
|
|
28
|
+
const res = await fetch(`${import.meta.env.FAUCET}/connect-string`)
|
|
29
29
|
if (res.ok) {
|
|
30
30
|
return await res.text()
|
|
31
31
|
} else {
|
|
@@ -34,7 +34,7 @@ export class TestingService {
|
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
private async getFaucetGatewayApi() {
|
|
37
|
-
const res = await fetch(
|
|
37
|
+
const res = await fetch(`${import.meta.env.FAUCET}/gateway-api`)
|
|
38
38
|
if (res.ok) {
|
|
39
39
|
return await res.text()
|
|
40
40
|
} else {
|
|
@@ -43,6 +43,7 @@ export class TestingService {
|
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
async getFaucetGatewayInfo() {
|
|
46
|
+
await this.lightning.updateGatewayCache()
|
|
46
47
|
const gateways = await this.lightning.listGateways()
|
|
47
48
|
const api = await this.getFaucetGatewayApi()
|
|
48
49
|
const gateway = gateways.find((g) => g.info.api === api)
|
|
@@ -53,7 +54,7 @@ export class TestingService {
|
|
|
53
54
|
}
|
|
54
55
|
|
|
55
56
|
async payFaucetInvoice(invoice: string) {
|
|
56
|
-
const res = await fetch(
|
|
57
|
+
const res = await fetch(`${import.meta.env.FAUCET}/pay`, {
|
|
57
58
|
method: 'POST',
|
|
58
59
|
body: invoice,
|
|
59
60
|
})
|
|
@@ -65,7 +66,7 @@ export class TestingService {
|
|
|
65
66
|
}
|
|
66
67
|
|
|
67
68
|
async createFaucetInvoice(amount: number) {
|
|
68
|
-
const res = await fetch(
|
|
69
|
+
const res = await fetch(`${import.meta.env.FAUCET}/invoice`, {
|
|
69
70
|
method: 'POST',
|
|
70
71
|
body: amount.toString(),
|
|
71
72
|
})
|
package/src/test/fixtures.ts
CHANGED
|
@@ -8,6 +8,7 @@ import { WorkerClient } from '../worker/WorkerClient'
|
|
|
8
8
|
export const walletTest = test.extend<{
|
|
9
9
|
wallet: TestFedimintWallet
|
|
10
10
|
fundedWallet: TestFedimintWallet
|
|
11
|
+
unopenedWallet: TestFedimintWallet
|
|
11
12
|
}>({
|
|
12
13
|
wallet: async ({}, use) => {
|
|
13
14
|
const randomTestingId = Math.random().toString(36).substring(2, 15)
|
|
@@ -36,6 +37,11 @@ export const walletTest = test.extend<{
|
|
|
36
37
|
await wallet.fundWallet(10_000)
|
|
37
38
|
await use(wallet)
|
|
38
39
|
},
|
|
40
|
+
unopenedWallet: async ({}, use) => {
|
|
41
|
+
const wallet = new TestFedimintWallet()
|
|
42
|
+
await wallet.initialize()
|
|
43
|
+
await use(wallet)
|
|
44
|
+
},
|
|
39
45
|
})
|
|
40
46
|
|
|
41
47
|
/**
|
package/src/types/wallet.ts
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
|
-
import { MSats, Duration, JSONValue } from './utils'
|
|
1
|
+
import { MSats, Duration, JSONValue, JSONObject } from './utils'
|
|
2
2
|
|
|
3
|
-
const MODULE_KINDS = ['', 'ln', 'mint'] as const
|
|
3
|
+
const MODULE_KINDS = ['', 'ln', 'mint', 'wallet'] as const
|
|
4
4
|
type ModuleKind = (typeof MODULE_KINDS)[number]
|
|
5
|
+
|
|
6
|
+
// TODO: Define the structure of FederationConfig
|
|
7
|
+
type FederationConfig = JSONObject
|
|
8
|
+
|
|
5
9
|
type GatewayInfo = {
|
|
6
10
|
gateway_id: string
|
|
7
11
|
api: string
|
|
@@ -93,8 +97,28 @@ type SpendNotesState =
|
|
|
93
97
|
| 'Success'
|
|
94
98
|
| 'Refunded'
|
|
95
99
|
|
|
100
|
+
type TxOutputSummary = {
|
|
101
|
+
outpoint: {
|
|
102
|
+
txid: string
|
|
103
|
+
vout: number
|
|
104
|
+
}
|
|
105
|
+
amount: number
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
type WalletSummary = {
|
|
109
|
+
spendable_utxos: TxOutputSummary[]
|
|
110
|
+
unsigned_peg_out_txos: TxOutputSummary[]
|
|
111
|
+
unsigned_change_utxos: TxOutputSummary[]
|
|
112
|
+
unconfirmed_peg_out_txos: TxOutputSummary[]
|
|
113
|
+
unconfirmed_change_utxos: TxOutputSummary[]
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/** Keys are powers of 2 */
|
|
117
|
+
type NoteCountByDenomination = Record<number, number>
|
|
118
|
+
|
|
96
119
|
export {
|
|
97
120
|
LightningGateway,
|
|
121
|
+
FederationConfig,
|
|
98
122
|
RouteHint,
|
|
99
123
|
FeeToAmount,
|
|
100
124
|
OutgoingLightningPayment,
|
|
@@ -111,4 +135,7 @@ export {
|
|
|
111
135
|
ReissueExternalNotesState,
|
|
112
136
|
MintSpendNotesResponse,
|
|
113
137
|
SpendNotesState,
|
|
138
|
+
WalletSummary,
|
|
139
|
+
TxOutputSummary,
|
|
140
|
+
NoteCountByDenomination,
|
|
114
141
|
}
|
package/src/types/worker.ts
CHANGED
package/src/worker/worker.js
CHANGED
|
@@ -17,6 +17,17 @@ const handleFree = (requestId) => {
|
|
|
17
17
|
|
|
18
18
|
console.log('Worker - init')
|
|
19
19
|
|
|
20
|
+
/**
|
|
21
|
+
* Type definitions for the worker messages
|
|
22
|
+
*
|
|
23
|
+
* @typedef {import('../types/worker').WorkerMessageType} WorkerMessageType
|
|
24
|
+
* @typedef {{
|
|
25
|
+
* type: WorkerMessageType
|
|
26
|
+
* payload: any
|
|
27
|
+
* requestId: number
|
|
28
|
+
* }} WorkerMessage
|
|
29
|
+
* @param {{data: WorkerMessage}} event
|
|
30
|
+
*/
|
|
20
31
|
self.onmessage = async (event) => {
|
|
21
32
|
const { type, payload, requestId } = event.data
|
|
22
33
|
|
|
@@ -45,6 +56,23 @@ self.onmessage = async (event) => {
|
|
|
45
56
|
} catch (e) {
|
|
46
57
|
self.postMessage({ type: 'error', error: e.message, requestId })
|
|
47
58
|
}
|
|
59
|
+
} else if (type === 'previewFederation') {
|
|
60
|
+
const { inviteCode } = payload
|
|
61
|
+
try {
|
|
62
|
+
client = await WasmClient.preview_federation(inviteCode)
|
|
63
|
+
const parsed = JSON.parse(client)
|
|
64
|
+
self.postMessage({
|
|
65
|
+
type: 'previewFederation',
|
|
66
|
+
data: {
|
|
67
|
+
success: !!client,
|
|
68
|
+
config: parsed.config,
|
|
69
|
+
federation_id: parsed.federation_id,
|
|
70
|
+
},
|
|
71
|
+
requestId,
|
|
72
|
+
})
|
|
73
|
+
} catch (e) {
|
|
74
|
+
self.postMessage({ type: 'error', error: e.message, requestId })
|
|
75
|
+
}
|
|
48
76
|
} else if (type === 'rpc') {
|
|
49
77
|
const { module, method, body } = payload
|
|
50
78
|
console.log('RPC received', module, method, body)
|