@fedimint/core-web 0.0.10 → 0.0.11
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 +50 -0
- 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 +12 -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/types/utils.d.ts +8 -1
- package/dist/dts/types/utils.d.ts.map +1 -1
- package/dist/dts/types/wallet.d.ts +4 -10
- 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 +87 -40
- 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.ts +58 -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.ts +32 -25
- package/src/services/RecoveryService.ts +9 -7
- package/src/types/utils.ts +5 -1
- package/src/types/wallet.ts +12 -9
- package/src/types/worker.ts +2 -0
- package/src/worker/WorkerClient.ts +8 -9
- package/src/worker/worker.js +34 -0
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","min_amount","try_cancel_after","include_invite","parseNotes","tryCancelSpendNotes","subscribeSpendNotes","awaitSpendOobRefund","BalanceService","getBalance","subscribeBalance","parseInt","LightningService","createInvoice","description","expiryTime","gatewayInfo","gateway","_getDefaultGatewayInfo","amount","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","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"],"mappings":"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"}
|
|
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":"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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 o=>{const{type:r,payload:
|
|
1
|
+
globalThis.__vitest_browser_runner__={wrapDynamicImport:e=>e()};let e=null,s=null;const t=new Map;console.log("Worker - init"),self.onmessage=async o=>{const{type:r,payload:a,requestId:n}=o.data;try{if("init"===r)e=(await import("@fedimint/fedimint-client-wasm-bundler")).WasmClient,self.postMessage({type:"initialized",data:{},requestId:n});else if("open"===r){const{clientName:t}=a;s=await e.open(t)||null,self.postMessage({type:"open",data:{success:!!s},requestId:n})}else if("join"===r){const{inviteCode:t,clientName:o}=a;try{s=await e.join_federation(o,t),self.postMessage({type:"join",data:{success:!!s},requestId:n})}catch(e){self.postMessage({type:"error",error:e.message,requestId:n})}}else if("rpc"===r){const{module:e,method:o,body:r}=a;if(console.log("RPC received",e,o,r),!s)return void self.postMessage({type:"error",error:"WasmClient not initialized",requestId:n});const i=await s.rpc(e,o,JSON.stringify(r),(e=>{console.log("RPC response",n,e);const s=JSON.parse(e);if(self.postMessage({type:"rpcResponse",requestId:n,...s}),void 0!==s.end){const e=t.get(n);e?.free()}}));t.set(n,i)}else if("unsubscribe"===r){const e=t.get(n);e&&(e.cancel(),e.free(),t.delete(n))}else if("cleanup"===r)console.log("cleanup message received"),s?.free(),self.postMessage({type:"cleanup",data:{},requestId:n}),close();else if("parseInviteCode"===r){const{inviteCode:s}=a;try{const t=e.parse_invite_code(s),o=JSON.parse(t);self.postMessage({type:"parseInviteCode",data:o,requestId:n})}catch(e){self.postMessage({type:"error",error:`Failed to parse invite code: ${e.message}`,requestId:n})}}else if("parseBolt11Invoice"===r){const{invoiceStr:s}=a;try{const t=e.parse_bolt11_invoice(s),o=JSON.parse(t);self.postMessage({type:"parseBolt11Invoice",data:o,requestId:n})}catch(e){self.postMessage({type:"error",error:`Failed to parse invoice: ${e.message}`,requestId:n})}}else self.postMessage({type:"error",error:"Unknown message type",requestId:n})}catch(e){console.error("ERROR",e),self.postMessage({type:"error",error:e,requestId:n})}};
|
|
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 {\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","JSON","stringify","res","parse","undefined","end","handle","get","free","set","cancel","delete","close"],"mappings":"AAIAA,WAAWC,0BAA4B,CAAEC,kBAAoBC,GAAQA,KAGrE,IAAIC,EAAa,KAEbC,EAAS,KAEb,MAAMC,EAAkB,IAAIC,IAM5BC,QAAQC,IAAI,iBAEZC,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,
|
|
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","JSON","stringify","res","parse","undefined","end","handle","get","free","set","cancel","delete","close","parse_invite_code","parsedRes","invoiceStr","parse_bolt11_invoice"],"mappings":"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"}
|
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.0.11",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "https://github.com/fedimint/fedimint-web-sdk.git",
|
|
@@ -19,19 +19,19 @@
|
|
|
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.0.3"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
25
|
"@rollup/plugin-terser": "^0.4.4",
|
|
26
26
|
"@rollup/plugin-typescript": "^11.1.6",
|
|
27
|
-
"@types/node": "^20.
|
|
27
|
+
"@types/node": "^20.17.49",
|
|
28
28
|
"@types/secp256k1": "^4.0.6",
|
|
29
|
-
"rollup": "^4.
|
|
30
|
-
"rollup-plugin-dts": "^6.
|
|
29
|
+
"rollup": "^4.41.0",
|
|
30
|
+
"rollup-plugin-dts": "^6.2.1",
|
|
31
31
|
"rollup-plugin-typescript2": "^0.36.0",
|
|
32
|
-
"secp256k1": "^5.0.
|
|
33
|
-
"tslib": "^2.
|
|
34
|
-
"typescript": "^5.
|
|
32
|
+
"secp256k1": "^5.0.1",
|
|
33
|
+
"tslib": "^2.8.1",
|
|
34
|
+
"typescript": "^5.8.3"
|
|
35
35
|
},
|
|
36
36
|
"scripts": {
|
|
37
37
|
"build": "rollup --config",
|
package/src/FedimintWallet.ts
CHANGED
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
RecoveryService,
|
|
8
8
|
} from './services'
|
|
9
9
|
import { logger, type LogLevel } from './utils/logger'
|
|
10
|
+
import { JSONValue } from './types'
|
|
10
11
|
|
|
11
12
|
const DEFAULT_CLIENT_NAME = 'fm-default' as const
|
|
12
13
|
|
|
@@ -143,4 +144,61 @@ export class FedimintWallet {
|
|
|
143
144
|
logger.setLevel(level)
|
|
144
145
|
logger.info(`Log level set to ${level}.`)
|
|
145
146
|
}
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* Parses a federation invite code and retrieves its details.
|
|
150
|
+
*
|
|
151
|
+
* This method sends the provided invite code to the WorkerClient for parsing.
|
|
152
|
+
* The response includes the federation_id and url.
|
|
153
|
+
*
|
|
154
|
+
* @param {string} inviteCode - The invite code to be parsed.
|
|
155
|
+
* @returns {Promise<{ federation_id: string, url: string}>}
|
|
156
|
+
* A promise that resolves to an object containing:
|
|
157
|
+
* - `federation_id`: The id of the feder.
|
|
158
|
+
* - `url`: One of the apipoints to connect to the federation
|
|
159
|
+
*
|
|
160
|
+
* @throws {Error} If the WorkerClient encounters an issue during the parsing process.
|
|
161
|
+
*
|
|
162
|
+
* @example
|
|
163
|
+
* const inviteCode = "example-invite-code";
|
|
164
|
+
* const parsedCode = await wallet.parseInviteCode(inviteCode);
|
|
165
|
+
* console.log(parsedCode.federation_id, parsedCode.url);
|
|
166
|
+
*/
|
|
167
|
+
async parseInviteCode(inviteCode: string) {
|
|
168
|
+
const response = await this._client.sendSingleMessage<{
|
|
169
|
+
type: string
|
|
170
|
+
data: JSONValue
|
|
171
|
+
requestId: number
|
|
172
|
+
}>('parseInviteCode', { inviteCode })
|
|
173
|
+
return response
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* Parses a BOLT11 Lightning invoice and retrieves its details.
|
|
178
|
+
*
|
|
179
|
+
* This method sends the provided invoice string to the WorkerClient for parsing.
|
|
180
|
+
* The response includes details such as the amount, expiry, and memo.
|
|
181
|
+
*
|
|
182
|
+
* @param {string} invoiceStr - The BOLT11 invoice string to be parsed.
|
|
183
|
+
* @returns {Promise<{ amount: string, expiry: number, memo: string }>}
|
|
184
|
+
* A promise that resolves to an object containing:
|
|
185
|
+
* - `amount`: The amount specified in the invoice.
|
|
186
|
+
* - `expiry`: The expiry time of the invoice in seconds.
|
|
187
|
+
* - `memo`: A description or memo attached to the invoice.
|
|
188
|
+
*
|
|
189
|
+
* @throws {Error} If the WorkerClient encounters an issue during the parsing process.
|
|
190
|
+
*
|
|
191
|
+
* @example
|
|
192
|
+
* const invoiceStr = "lnbc1...";
|
|
193
|
+
* const parsedInvoice = await wallet.parseBolt11Invoice(invoiceStr);
|
|
194
|
+
* console.log(parsedInvoice.amount, parsedInvoice.expiry, parsedInvoice.memo);
|
|
195
|
+
*/
|
|
196
|
+
async parseBolt11Invoice(invoiceStr: string) {
|
|
197
|
+
const response = await this._client.sendSingleMessage<{
|
|
198
|
+
type: string
|
|
199
|
+
data: JSONValue
|
|
200
|
+
requestId: number
|
|
201
|
+
}>('parseBolt11Invoice', { invoiceStr })
|
|
202
|
+
return response
|
|
203
|
+
}
|
|
146
204
|
}
|
|
@@ -8,43 +8,22 @@ import { WorkerClient } from '../worker'
|
|
|
8
8
|
export class BalanceService {
|
|
9
9
|
constructor(private client: WorkerClient) {}
|
|
10
10
|
|
|
11
|
-
/**
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
* @example
|
|
15
|
-
* ```ts
|
|
16
|
-
* const balance = await wallet.balance.getBalance()
|
|
17
|
-
* ```
|
|
18
|
-
*/
|
|
19
|
-
async getBalance(): Promise<number> {
|
|
20
|
-
return await this.client.rpcSingle('', 'get_balance', {})
|
|
11
|
+
/** https://web.fedimint.org/core/FedimintWallet/BalanceService/getBalance */
|
|
12
|
+
async getBalance() {
|
|
13
|
+
return await this.client.rpcSingle<number>('', 'get_balance', {})
|
|
21
14
|
}
|
|
22
15
|
|
|
23
|
-
/**
|
|
24
|
-
* Subscribe to the balance of the current wallet in milli-satoshis (MSats)
|
|
25
|
-
*
|
|
26
|
-
* @example
|
|
27
|
-
* ```ts
|
|
28
|
-
* const unsubscribe = wallet.balance.subscribeBalance((balance) => {
|
|
29
|
-
* console.log(balance)
|
|
30
|
-
* })
|
|
31
|
-
*
|
|
32
|
-
* // ...Cleanup Later
|
|
33
|
-
* unsubscribe()
|
|
34
|
-
* ```
|
|
35
|
-
*/
|
|
16
|
+
/** https://web.fedimint.org/core/FedimintWallet/BalanceService/subscribeBalance */
|
|
36
17
|
subscribeBalance(
|
|
37
18
|
onSuccess: (balanceMsats: number) => void = () => {},
|
|
38
19
|
onError: (error: string) => void = () => {},
|
|
39
20
|
) {
|
|
40
|
-
|
|
21
|
+
return this.client.rpcStream<string>(
|
|
41
22
|
'',
|
|
42
23
|
'subscribe_balance_changes',
|
|
43
24
|
{},
|
|
44
25
|
(res) => onSuccess(parseInt(res)),
|
|
45
26
|
onError,
|
|
46
27
|
)
|
|
47
|
-
|
|
48
|
-
return unsubscribe
|
|
49
28
|
}
|
|
50
29
|
}
|
|
@@ -4,19 +4,21 @@ import { WorkerClient } from '../worker'
|
|
|
4
4
|
export class FederationService {
|
|
5
5
|
constructor(private client: WorkerClient) {}
|
|
6
6
|
|
|
7
|
-
async getConfig()
|
|
7
|
+
async getConfig() {
|
|
8
8
|
return await this.client.rpcSingle('', 'get_config', {})
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
async getFederationId()
|
|
12
|
-
return await this.client.rpcSingle('', 'get_federation_id', {})
|
|
11
|
+
async getFederationId() {
|
|
12
|
+
return await this.client.rpcSingle<string>('', 'get_federation_id', {})
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
async getInviteCode(peer: number
|
|
16
|
-
return await this.client.rpcSingle('', 'get_invite_code', {
|
|
15
|
+
async getInviteCode(peer: number = 0) {
|
|
16
|
+
return await this.client.rpcSingle<string | null>('', 'get_invite_code', {
|
|
17
|
+
peer,
|
|
18
|
+
})
|
|
17
19
|
}
|
|
18
20
|
|
|
19
|
-
async listOperations()
|
|
20
|
-
return await this.client.rpcSingle('', 'list_operations', {})
|
|
21
|
+
async listOperations() {
|
|
22
|
+
return await this.client.rpcSingle<JSONValue[]>('', 'list_operations', {})
|
|
21
23
|
}
|
|
22
24
|
}
|
|
@@ -3,7 +3,6 @@ import type {
|
|
|
3
3
|
CreateBolt11Response,
|
|
4
4
|
GatewayInfo,
|
|
5
5
|
JSONObject,
|
|
6
|
-
JSONValue,
|
|
7
6
|
LightningGateway,
|
|
8
7
|
LnPayState,
|
|
9
8
|
LnReceiveState,
|
|
@@ -13,21 +12,26 @@ import type {
|
|
|
13
12
|
export class LightningService {
|
|
14
13
|
constructor(private client: WorkerClient) {}
|
|
15
14
|
|
|
15
|
+
/** https://web.fedimint.org/core/FedimintWallet/LightningService/createInvoice#lightning-createinvoice */
|
|
16
16
|
async createInvoice(
|
|
17
17
|
amountMsats: number,
|
|
18
18
|
description: string,
|
|
19
19
|
expiryTime?: number, // in seconds
|
|
20
20
|
gatewayInfo?: GatewayInfo,
|
|
21
21
|
extraMeta?: JSONObject,
|
|
22
|
-
)
|
|
22
|
+
) {
|
|
23
23
|
const gateway = gatewayInfo ?? (await this._getDefaultGatewayInfo())
|
|
24
|
-
return await this.client.rpcSingle(
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
24
|
+
return await this.client.rpcSingle<CreateBolt11Response>(
|
|
25
|
+
'ln',
|
|
26
|
+
'create_bolt11_invoice',
|
|
27
|
+
{
|
|
28
|
+
amount: amountMsats,
|
|
29
|
+
description,
|
|
30
|
+
expiry_time: expiryTime ?? null,
|
|
31
|
+
extra_meta: extraMeta ?? {},
|
|
32
|
+
gateway,
|
|
33
|
+
},
|
|
34
|
+
)
|
|
31
35
|
}
|
|
32
36
|
|
|
33
37
|
async createInvoiceTweaked(
|
|
@@ -38,9 +42,9 @@ export class LightningService {
|
|
|
38
42
|
expiryTime?: number, // in seconds
|
|
39
43
|
gatewayInfo?: GatewayInfo,
|
|
40
44
|
extraMeta?: JSONObject,
|
|
41
|
-
)
|
|
45
|
+
) {
|
|
42
46
|
const gateway = gatewayInfo ?? (await this._getDefaultGatewayInfo())
|
|
43
|
-
return await this.client.rpcSingle(
|
|
47
|
+
return await this.client.rpcSingle<CreateBolt11Response>(
|
|
44
48
|
'ln',
|
|
45
49
|
'create_bolt11_invoice_for_user_tweaked',
|
|
46
50
|
{
|
|
@@ -60,52 +64,63 @@ export class LightningService {
|
|
|
60
64
|
tweakKey: string,
|
|
61
65
|
indices: number[],
|
|
62
66
|
extraMeta?: JSONObject,
|
|
63
|
-
)
|
|
64
|
-
return await this.client.rpcSingle(
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
67
|
+
) {
|
|
68
|
+
return await this.client.rpcSingle<string[]>(
|
|
69
|
+
'ln',
|
|
70
|
+
'scan_receive_for_user_tweaked',
|
|
71
|
+
{
|
|
72
|
+
user_key: tweakKey,
|
|
73
|
+
indices,
|
|
74
|
+
extra_meta: extraMeta ?? {},
|
|
75
|
+
},
|
|
76
|
+
)
|
|
69
77
|
}
|
|
70
78
|
|
|
71
|
-
private async _getDefaultGatewayInfo()
|
|
79
|
+
private async _getDefaultGatewayInfo() {
|
|
72
80
|
await this.updateGatewayCache()
|
|
73
81
|
const gateways = await this.listGateways()
|
|
74
82
|
return gateways[0]?.info
|
|
75
83
|
}
|
|
76
84
|
|
|
85
|
+
/** https://web.fedimint.org/core/FedimintWallet/LightningService/payInvoice#lightning-payinvoice-invoice-string */
|
|
77
86
|
async payInvoice(
|
|
78
87
|
invoice: string,
|
|
79
88
|
gatewayInfo?: GatewayInfo,
|
|
80
89
|
extraMeta?: JSONObject,
|
|
81
|
-
)
|
|
90
|
+
) {
|
|
82
91
|
const gateway = gatewayInfo ?? (await this._getDefaultGatewayInfo())
|
|
83
|
-
return await this.client.rpcSingle(
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
92
|
+
return await this.client.rpcSingle<OutgoingLightningPayment>(
|
|
93
|
+
'ln',
|
|
94
|
+
'pay_bolt11_invoice',
|
|
95
|
+
{
|
|
96
|
+
maybe_gateway: gateway,
|
|
97
|
+
invoice,
|
|
98
|
+
extra_meta: extraMeta ?? {},
|
|
99
|
+
},
|
|
100
|
+
)
|
|
88
101
|
}
|
|
89
102
|
|
|
103
|
+
/** https://web.fedimint.org/core/FedimintWallet/LightningService/payInvoice#lightning-payinvoicesync-invoice-string */
|
|
90
104
|
async payInvoiceSync(
|
|
91
105
|
invoice: string,
|
|
92
106
|
timeoutMs: number = 10000,
|
|
93
107
|
gatewayInfo?: GatewayInfo,
|
|
94
108
|
extraMeta?: JSONObject,
|
|
95
|
-
)
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
109
|
+
) {
|
|
110
|
+
return new Promise<
|
|
111
|
+
| { success: false; error?: string }
|
|
112
|
+
| {
|
|
113
|
+
success: true
|
|
114
|
+
data: { feeMsats: number; preimage: string }
|
|
115
|
+
}
|
|
116
|
+
>(async (resolve, reject) => {
|
|
103
117
|
const { contract_id, fee } = await this.payInvoice(
|
|
104
118
|
invoice,
|
|
105
119
|
gatewayInfo,
|
|
106
120
|
extraMeta,
|
|
107
121
|
)
|
|
108
122
|
|
|
123
|
+
// TODO: handle error handling for other subscription statuses
|
|
109
124
|
const unsubscribe = this.subscribeLnPay(contract_id, (res) => {
|
|
110
125
|
if (typeof res !== 'string' && 'success' in res) {
|
|
111
126
|
clearTimeout(timeoutId)
|
|
@@ -114,12 +129,14 @@ export class LightningService {
|
|
|
114
129
|
success: true,
|
|
115
130
|
data: { feeMsats: fee, preimage: res.success.preimage },
|
|
116
131
|
})
|
|
132
|
+
} else if (typeof res !== 'string' && 'unexpected_error' in res) {
|
|
133
|
+
reject(new Error(res.unexpected_error.error_message))
|
|
117
134
|
}
|
|
118
135
|
})
|
|
119
136
|
|
|
120
137
|
const timeoutId = setTimeout(() => {
|
|
121
138
|
unsubscribe()
|
|
122
|
-
|
|
139
|
+
resolve({ success: false, error: 'Payment timeout' })
|
|
123
140
|
}, timeoutMs)
|
|
124
141
|
})
|
|
125
142
|
}
|
|
@@ -130,46 +147,41 @@ export class LightningService {
|
|
|
130
147
|
onSuccess: (state: LnReceiveState) => void = () => {},
|
|
131
148
|
onError: (error: string) => void = () => {},
|
|
132
149
|
) {
|
|
133
|
-
|
|
150
|
+
return this.client.rpcStream(
|
|
134
151
|
'ln',
|
|
135
152
|
'subscribe_ln_claim',
|
|
136
153
|
{ operation_id: operationId },
|
|
137
154
|
onSuccess,
|
|
138
155
|
onError,
|
|
139
156
|
)
|
|
140
|
-
|
|
141
|
-
return unsubscribe
|
|
142
157
|
}
|
|
143
158
|
|
|
144
159
|
// TODO: Document (for external payments only)
|
|
145
160
|
// TODO: Make this work for BOTH internal and external payments
|
|
161
|
+
/** https://web.fedimint.org/core/FedimintWallet/LightningService/payInvoice#lightning-payinvoice-invoice-string */
|
|
146
162
|
subscribeLnPay(
|
|
147
163
|
operationId: string,
|
|
148
164
|
onSuccess: (state: LnPayState) => void = () => {},
|
|
149
165
|
onError: (error: string) => void = () => {},
|
|
150
166
|
) {
|
|
151
|
-
|
|
167
|
+
return this.client.rpcStream(
|
|
152
168
|
'ln',
|
|
153
169
|
'subscribe_ln_pay',
|
|
154
170
|
{ operation_id: operationId },
|
|
155
171
|
onSuccess,
|
|
156
172
|
onError,
|
|
157
173
|
)
|
|
158
|
-
|
|
159
|
-
return unsubscribe
|
|
160
174
|
}
|
|
161
175
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
> {
|
|
169
|
-
return new Promise((resolve, reject) => {
|
|
176
|
+
/** https://web.fedimint.org/core/FedimintWallet/LightningService/payInvoice#lightning-payinvoice-invoice-string */
|
|
177
|
+
async waitForPay(operationId: string) {
|
|
178
|
+
return new Promise<
|
|
179
|
+
| { success: false; error?: string }
|
|
180
|
+
| { success: true; data: { preimage: string } }
|
|
181
|
+
>((resolve, reject) => {
|
|
170
182
|
let unsubscribe: () => void
|
|
171
183
|
const timeoutId = setTimeout(() => {
|
|
172
|
-
|
|
184
|
+
resolve({ success: false, error: 'Waiting for receive timeout' })
|
|
173
185
|
}, 15000)
|
|
174
186
|
|
|
175
187
|
unsubscribe = this.subscribeLnPay(
|
|
@@ -193,28 +205,24 @@ export class LightningService {
|
|
|
193
205
|
})
|
|
194
206
|
}
|
|
195
207
|
|
|
196
|
-
|
|
208
|
+
/** https://web.fedimint.org/core/FedimintWallet/LightningService/createInvoice#lightning-createinvoice */
|
|
197
209
|
subscribeLnReceive(
|
|
198
210
|
operationId: string,
|
|
199
211
|
onSuccess: (state: LnReceiveState) => void = () => {},
|
|
200
212
|
onError: (error: string) => void = () => {},
|
|
201
213
|
) {
|
|
202
|
-
|
|
214
|
+
return this.client.rpcStream(
|
|
203
215
|
'ln',
|
|
204
216
|
'subscribe_ln_receive',
|
|
205
217
|
{ operation_id: operationId },
|
|
206
218
|
onSuccess,
|
|
207
219
|
onError,
|
|
208
220
|
)
|
|
209
|
-
|
|
210
|
-
return unsubscribe
|
|
211
221
|
}
|
|
212
222
|
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
): Promise<LnReceiveState> {
|
|
217
|
-
return new Promise((resolve, reject) => {
|
|
223
|
+
/** https://web.fedimint.org/core/FedimintWallet/LightningService/createInvoice#lightning-createinvoice */
|
|
224
|
+
async waitForReceive(operationId: string, timeoutMs: number = 15000) {
|
|
225
|
+
return new Promise<LnReceiveState>((resolve, reject) => {
|
|
218
226
|
let unsubscribe: () => void
|
|
219
227
|
const timeoutId = setTimeout(() => {
|
|
220
228
|
reject(new Error('Timeout waiting for receive'))
|
|
@@ -241,18 +249,26 @@ export class LightningService {
|
|
|
241
249
|
async getGateway(
|
|
242
250
|
gatewayId: string | null = null,
|
|
243
251
|
forceInternal: boolean = false,
|
|
244
|
-
)
|
|
245
|
-
return await this.client.rpcSingle
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
252
|
+
) {
|
|
253
|
+
return await this.client.rpcSingle<LightningGateway | null>(
|
|
254
|
+
'ln',
|
|
255
|
+
'get_gateway',
|
|
256
|
+
{
|
|
257
|
+
gateway_id: gatewayId,
|
|
258
|
+
force_internal: forceInternal,
|
|
259
|
+
},
|
|
260
|
+
)
|
|
249
261
|
}
|
|
250
262
|
|
|
251
|
-
async listGateways()
|
|
252
|
-
return await this.client.rpcSingle(
|
|
263
|
+
async listGateways() {
|
|
264
|
+
return await this.client.rpcSingle<LightningGateway[]>(
|
|
265
|
+
'ln',
|
|
266
|
+
'list_gateways',
|
|
267
|
+
{},
|
|
268
|
+
)
|
|
253
269
|
}
|
|
254
270
|
|
|
255
|
-
async updateGatewayCache()
|
|
271
|
+
async updateGatewayCache() {
|
|
256
272
|
return await this.client.rpcSingle('ln', 'update_gateway_cache', {})
|
|
257
273
|
}
|
|
258
274
|
}
|