@fedimint/core-web 0.0.10 → 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 +56 -1
- package/dist/dts/FedimintWallet.d.ts.map +1 -1
- package/dist/dts/services/BalanceService.d.ts +2 -21
- package/dist/dts/services/BalanceService.d.ts.map +1 -1
- package/dist/dts/services/FederationService.d.ts +1 -1
- package/dist/dts/services/FederationService.d.ts.map +1 -1
- package/dist/dts/services/LightningService.d.ts +11 -2
- package/dist/dts/services/LightningService.d.ts.map +1 -1
- package/dist/dts/services/MintService.d.ts +13 -6
- package/dist/dts/services/MintService.d.ts.map +1 -1
- package/dist/dts/services/RecoveryService.d.ts +1 -1
- package/dist/dts/services/RecoveryService.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/utils.d.ts +8 -1
- package/dist/dts/types/utils.d.ts.map +1 -1
- package/dist/dts/types/wallet.d.ts +20 -9
- 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/dts/worker/WorkerClient.d.ts +1 -1
- package/dist/dts/worker/WorkerClient.d.ts.map +1 -1
- package/dist/index.d.ts +114 -38
- 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 +8 -8
- package/src/FedimintWallet.test.ts +13 -0
- package/src/FedimintWallet.ts +69 -0
- package/src/services/BalanceService.ts +5 -26
- package/src/services/FederationService.ts +9 -7
- package/src/services/LightningService.ts +81 -65
- package/src/services/MintService.test.ts +41 -0
- package/src/services/MintService.ts +41 -25
- package/src/services/RecoveryService.ts +9 -7
- 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/utils.ts +5 -1
- package/src/types/wallet.ts +39 -9
- package/src/types/worker.ts +3 -0
- package/src/worker/WorkerClient.ts +8 -9
- package/src/worker/worker.js +62 -0
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
|
|
@@ -80,19 +84,41 @@ type StreamResult<T extends JSONValue> =
|
|
|
80
84
|
|
|
81
85
|
type CancelFunction = () => void
|
|
82
86
|
|
|
83
|
-
type ReissueExternalNotesState =
|
|
87
|
+
type ReissueExternalNotesState = 'Created' | 'Issuing' | 'Done'
|
|
88
|
+
// | { Failed: { error: string } }
|
|
89
|
+
|
|
90
|
+
type MintSpendNotesResponse = Array<string>
|
|
91
|
+
|
|
92
|
+
type SpendNotesState =
|
|
84
93
|
| 'Created'
|
|
85
|
-
| '
|
|
86
|
-
| '
|
|
87
|
-
|
|
|
94
|
+
| 'UserCanceledProcessing'
|
|
95
|
+
| 'UserCanceledSuccess'
|
|
96
|
+
| 'UserCanceledFailure'
|
|
97
|
+
| 'Success'
|
|
98
|
+
| 'Refunded'
|
|
99
|
+
|
|
100
|
+
type TxOutputSummary = {
|
|
101
|
+
outpoint: {
|
|
102
|
+
txid: string
|
|
103
|
+
vout: number
|
|
104
|
+
}
|
|
105
|
+
amount: number
|
|
106
|
+
}
|
|
88
107
|
|
|
89
|
-
type
|
|
90
|
-
|
|
91
|
-
|
|
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[]
|
|
92
114
|
}
|
|
93
115
|
|
|
116
|
+
/** Keys are powers of 2 */
|
|
117
|
+
type NoteCountByDenomination = Record<number, number>
|
|
118
|
+
|
|
94
119
|
export {
|
|
95
120
|
LightningGateway,
|
|
121
|
+
FederationConfig,
|
|
96
122
|
RouteHint,
|
|
97
123
|
FeeToAmount,
|
|
98
124
|
OutgoingLightningPayment,
|
|
@@ -108,4 +134,8 @@ export {
|
|
|
108
134
|
CancelFunction,
|
|
109
135
|
ReissueExternalNotesState,
|
|
110
136
|
MintSpendNotesResponse,
|
|
137
|
+
SpendNotesState,
|
|
138
|
+
WalletSummary,
|
|
139
|
+
TxOutputSummary,
|
|
140
|
+
NoteCountByDenomination,
|
|
111
141
|
}
|
package/src/types/worker.ts
CHANGED
|
@@ -69,8 +69,8 @@ export class WorkerClient {
|
|
|
69
69
|
sendSingleMessage<
|
|
70
70
|
Response extends JSONValue = JSONValue,
|
|
71
71
|
Payload extends JSONValue = JSONValue,
|
|
72
|
-
>(type: WorkerMessageType, payload?: Payload)
|
|
73
|
-
return new Promise((resolve, reject) => {
|
|
72
|
+
>(type: WorkerMessageType, payload?: Payload) {
|
|
73
|
+
return new Promise<Response>((resolve, reject) => {
|
|
74
74
|
const requestId = ++this.requestCounter
|
|
75
75
|
logger.debug('WorkerClient - sendSingleMessage', requestId, type, payload)
|
|
76
76
|
this.requestCallbacks.set(
|
|
@@ -179,7 +179,7 @@ export class WorkerClient {
|
|
|
179
179
|
onEnd: () => void = () => {},
|
|
180
180
|
unsubscribePromise: Promise<void>,
|
|
181
181
|
// Unsubscribe function
|
|
182
|
-
)
|
|
182
|
+
) {
|
|
183
183
|
// await this.openPromise
|
|
184
184
|
// if (!this.worker || !this._isOpen)
|
|
185
185
|
// throw new Error('FedimintWallet is not open')
|
|
@@ -209,13 +209,12 @@ export class WorkerClient {
|
|
|
209
209
|
})
|
|
210
210
|
}
|
|
211
211
|
|
|
212
|
-
rpcSingle<
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
): Promise<Response> {
|
|
212
|
+
rpcSingle<
|
|
213
|
+
Response extends JSONValue = JSONValue,
|
|
214
|
+
Error extends string = string,
|
|
215
|
+
>(module: ModuleKind, method: string, body: JSONValue) {
|
|
217
216
|
logger.debug('WorkerClient - rpcSingle', module, method, body)
|
|
218
|
-
return new Promise((resolve, reject) => {
|
|
217
|
+
return new Promise<Response>((resolve, reject) => {
|
|
219
218
|
this.rpcStream<Response>(module, method, body, resolve, reject)
|
|
220
219
|
})
|
|
221
220
|
}
|
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)
|
|
@@ -89,6 +117,40 @@ self.onmessage = async (event) => {
|
|
|
89
117
|
requestId,
|
|
90
118
|
})
|
|
91
119
|
close()
|
|
120
|
+
} else if (type === 'parseInviteCode') {
|
|
121
|
+
const { inviteCode } = payload
|
|
122
|
+
try {
|
|
123
|
+
const res = WasmClient.parse_invite_code(inviteCode)
|
|
124
|
+
const parsedRes = JSON.parse(res)
|
|
125
|
+
self.postMessage({
|
|
126
|
+
type: 'parseInviteCode',
|
|
127
|
+
data: parsedRes,
|
|
128
|
+
requestId,
|
|
129
|
+
})
|
|
130
|
+
} catch (error) {
|
|
131
|
+
self.postMessage({
|
|
132
|
+
type: 'error',
|
|
133
|
+
error: `Failed to parse invite code: ${error.message}`,
|
|
134
|
+
requestId,
|
|
135
|
+
})
|
|
136
|
+
}
|
|
137
|
+
} else if (type === 'parseBolt11Invoice') {
|
|
138
|
+
const { invoiceStr } = payload
|
|
139
|
+
try {
|
|
140
|
+
const res = WasmClient.parse_bolt11_invoice(invoiceStr)
|
|
141
|
+
const parsedRes = JSON.parse(res)
|
|
142
|
+
self.postMessage({
|
|
143
|
+
type: 'parseBolt11Invoice',
|
|
144
|
+
data: parsedRes,
|
|
145
|
+
requestId,
|
|
146
|
+
})
|
|
147
|
+
} catch (error) {
|
|
148
|
+
self.postMessage({
|
|
149
|
+
type: 'error',
|
|
150
|
+
error: `Failed to parse invoice: ${error.message}`,
|
|
151
|
+
requestId,
|
|
152
|
+
})
|
|
153
|
+
}
|
|
92
154
|
} else {
|
|
93
155
|
self.postMessage({
|
|
94
156
|
type: 'error',
|