@fedimint/core-web 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/README.md +20 -9
  2. package/index.d.ts +1 -0
  3. package/index.js +15 -0
  4. package/package.json +12 -35
  5. package/dist/dts/FedimintWallet.d.ts +0 -51
  6. package/dist/dts/FedimintWallet.d.ts.map +0 -1
  7. package/dist/dts/WalletDirector.d.ts +0 -78
  8. package/dist/dts/WalletDirector.d.ts.map +0 -1
  9. package/dist/dts/index.d.ts +0 -4
  10. package/dist/dts/index.d.ts.map +0 -1
  11. package/dist/dts/services/BalanceService.d.ts +0 -15
  12. package/dist/dts/services/BalanceService.d.ts.map +0 -1
  13. package/dist/dts/services/FederationService.d.ts +0 -13
  14. package/dist/dts/services/FederationService.d.ts.map +0 -1
  15. package/dist/dts/services/LightningService.d.ts +0 -48
  16. package/dist/dts/services/LightningService.d.ts.map +0 -1
  17. package/dist/dts/services/MintService.d.ts +0 -23
  18. package/dist/dts/services/MintService.d.ts.map +0 -1
  19. package/dist/dts/services/RecoveryService.d.ts +0 -13
  20. package/dist/dts/services/RecoveryService.d.ts.map +0 -1
  21. package/dist/dts/services/WalletService.d.ts +0 -13
  22. package/dist/dts/services/WalletService.d.ts.map +0 -1
  23. package/dist/dts/services/index.d.ts +0 -7
  24. package/dist/dts/services/index.d.ts.map +0 -1
  25. package/dist/dts/transport/TransportClient.d.ts +0 -55
  26. package/dist/dts/transport/TransportClient.d.ts.map +0 -1
  27. package/dist/dts/transport/index.d.ts +0 -3
  28. package/dist/dts/transport/index.d.ts.map +0 -1
  29. package/dist/dts/transport/wasmTransport/WasmWorkerTransport.d.ts +0 -12
  30. package/dist/dts/transport/wasmTransport/WasmWorkerTransport.d.ts.map +0 -1
  31. package/dist/dts/types/index.d.ts +0 -4
  32. package/dist/dts/types/index.d.ts.map +0 -1
  33. package/dist/dts/types/transport.d.ts +0 -35
  34. package/dist/dts/types/transport.d.ts.map +0 -1
  35. package/dist/dts/types/utils.d.ts +0 -23
  36. package/dist/dts/types/utils.d.ts.map +0 -1
  37. package/dist/dts/types/wallet.d.ts +0 -241
  38. package/dist/dts/types/wallet.d.ts.map +0 -1
  39. package/dist/dts/utils/logger.d.ts +0 -24
  40. package/dist/dts/utils/logger.d.ts.map +0 -1
  41. package/dist/index.d.ts +0 -609
  42. package/dist/index.js +0 -2
  43. package/dist/index.js.map +0 -1
  44. package/dist/worker.js +0 -2
  45. package/dist/worker.js.map +0 -1
  46. package/src/FedimintWallet.test.ts +0 -73
  47. package/src/FedimintWallet.ts +0 -119
  48. package/src/WalletDirector.ts +0 -118
  49. package/src/index.ts +0 -3
  50. package/src/services/BalanceService.test.ts +0 -26
  51. package/src/services/BalanceService.ts +0 -29
  52. package/src/services/FederationService.test.ts +0 -58
  53. package/src/services/FederationService.ts +0 -216
  54. package/src/services/LightningService.test.ts +0 -265
  55. package/src/services/LightningService.ts +0 -289
  56. package/src/services/MintService.test.ts +0 -74
  57. package/src/services/MintService.ts +0 -129
  58. package/src/services/RecoveryService.ts +0 -28
  59. package/src/services/WalletService.test.ts +0 -59
  60. package/src/services/WalletService.ts +0 -50
  61. package/src/services/index.ts +0 -6
  62. package/src/test/TestFedimintWallet.ts +0 -31
  63. package/src/test/TestWalletDirector.ts +0 -14
  64. package/src/test/TestingService.ts +0 -79
  65. package/src/test/crypto.ts +0 -44
  66. package/src/test/fixtures.test.ts +0 -18
  67. package/src/test/fixtures.ts +0 -88
  68. package/src/transport/TransportClient.test.ts +0 -6
  69. package/src/transport/TransportClient.ts +0 -251
  70. package/src/transport/index.ts +0 -2
  71. package/src/transport/wasmTransport/WasmWorkerTransport.ts +0 -39
  72. package/src/transport/wasmTransport/worker.js +0 -167
  73. package/src/transport/wasmTransport/worker.test.ts +0 -90
  74. package/src/types/index.ts +0 -3
  75. package/src/types/transport.ts +0 -54
  76. package/src/types/utils.ts +0 -29
  77. package/src/types/wallet.ts +0 -298
  78. package/src/utils/logger.ts +0 -69
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../src/utils/logger.ts","../src/transport/TransportClient.ts","../src/transport/wasmTransport/WasmWorkerTransport.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","../src/WalletDirector.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null],"names":["logLevels","Logger","constructor","_logger","console","level","this","logger","setLevel","coerceLevel","includes","toLocaleUpperCase","log","message","args","logLevel","shouldLog","consoleFn","toUpperCase","debug","info","warn","error","messageLevel","levels","messageLevelIndex","indexOf","TransportClient","transport","requestCounter","requestCallbacks","Map","initPromise","undefined","handleTransportError","handleTransportMessage","type","requestId","data","handleLogMessage","streamCallback","get","setMessageHandler","setErrorHandler","initialize","sendSingleMessage","logMessage","String","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","WasmWorkerTransport","messageHandler","errorHandler","worker","Worker","URL","url","onmessage","event","onerror","handler","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","subscribeInternalPayment","subscribeLnClaim","waitForPay","subscribeLnReceive","waitForReceive","getGateway","gatewayId","forceInternal","gateway_id","force_internal","RecoveryService","hasPendingRecoveries","waitForAllRecoveries","subscribeToRecoveryProgress","FederationService","getConfig","getFederationId","getInviteCode","peer","listOperations","limit","last_seen","getOperation","listTransactions","filter","item","Array","isArray","length","_","op","operation_module_kind","meta","variant","pay","receive","spend_o_o_b","reissuance","deposit","withdraw","map","key","timestamp","creation_time","Math","round","secs_since_epoch","nanos_since_epoch","kind","outcome","isPay","txId","out_point","txid","internalPay","is_internal_payment","address","feeRate","fee_rate","sats_per_kvb","onchainAddress","transaction","WalletService","getWalletSummary","generateAddress","sendOnchain","amountSat","amount_sat","destination_address","subscribeDeposit","DEFAULT_CLIENT_NAME","FedimintWallet","_client","_openPromise","_resolveOpen","_isOpen","mint","lightning","balance","federation","recovery","wallet","waitForOpen","open","clientName","joinFederation","inviteCode","e","isOpen","WalletDirector","lazy","createWallet","previewFederation","setLogLevel","parseInviteCode","parseBolt11Invoice","invoiceStr"],"mappings":"AAEA,MAAMA,EAAY,CAAC,QAAS,OAAQ,OAAQ,QAAS,cAGxCC,EAUX,WAAAC,CAAYC,EAA2BC,QAASC,EAAkB,QAChEC,KAAKC,OAASJ,EACdG,KAAKD,MAAQA,EAGf,QAAAG,CAASH,GACPC,KAAKD,MAAQA,EAGP,WAAAI,CAAYJ,GAClB,OAAIL,EAAUU,SAASL,EAAMM,qBACpBN,EAAMM,oBAER,OAGT,GAAAC,CAAIP,EAAeQ,KAAoBC,GACrC,MAAMC,EAAWT,KAAKG,YAAYJ,GAClC,IAAKC,KAAKU,UAAUD,GAClB,QAGFE,EADkBX,KAAKC,OAAOQ,IACpB,IAAIA,EAASG,kBAAkBL,OAAcC,GAGzD,KAAAK,CAAMN,KAAoBC,GACxBR,KAAKM,IAAI,QAASC,KAAYC,GAGhC,IAAAM,CAAKP,KAAoBC,GACvBR,KAAKM,IAAI,OAAQC,KAAYC,GAG/B,IAAAO,CAAKR,KAAoBC,GACvBR,KAAKM,IAAI,OAAQC,KAAYC,GAG/B,KAAAQ,CAAMT,KAAoBC,GACxBR,KAAKM,IAAI,QAASC,KAAYC,GAGxB,SAAAE,CACNO,GAEA,MAAMC,EAAqB,CAAC,QAAS,OAAQ,OAAQ,QAAS,QACxDC,EAAoBD,EAAOE,QAAQH,GAEzC,OAD0BC,EAAOE,QAAQpB,KAAKD,QAEvBoB,GACN,SAAfnB,KAAKD,OACY,SAAjBkB,SClDOI,EAYX,WAAAzB,CAAY0B,GATJtB,KAAcuB,eAAG,EACjBvB,KAAAwB,iBAAmB,IAAIC,IACvBzB,KAAW0B,iBAAiCC,EA4B5C3B,KAAA4B,qBAAwBZ,IAC9BhB,KAAKC,OAAOe,MAAM,wBAAyBA,EAAM,EAG3ChB,KAAA6B,uBAA0BtB,IAChC,MAAMuB,KAAEA,EAAIC,UAAEA,KAAcC,GAASzB,EACxB,QAATuB,GACF9B,KAAKiC,iBAAiB1B,GAExB,MAAM2B,OACUP,IAAdI,EAA0B/B,KAAKwB,iBAAiBW,IAAIJ,QAAaJ,EAEnE3B,KAAKC,OAAOY,MAAM,2CAA4CN,GAC1D2B,EACFA,EAAeF,QACQL,IAAdI,GACT/B,KAAKC,OAAOc,KACV,+EACAgB,EACAxB,IAvCJP,KAAKsB,UAAYA,EACjBtB,KAAKC,OAAS,IAAIN,EAAO2B,EAAUrB,QACnCD,KAAKsB,UAAUc,kBAAkBpC,KAAK6B,wBACtC7B,KAAKsB,UAAUe,gBAAgBrC,KAAK4B,sBACpC5B,KAAKC,OAAOa,KAAK,gCACjBd,KAAKC,OAAOY,MAAM,4BAA6BS,GAIjD,UAAAgB,GACE,OAAItC,KAAK0B,cACT1B,KAAK0B,YAAc1B,KAAKuC,kBAAkB,SADbvC,KAAK0B,YAK5B,gBAAAO,CAAiB1B,GACvB,MAAMuB,KAAEA,EAAI/B,MAAEA,EAAOQ,QAASiC,KAAeR,GAASzB,EACtDP,KAAKC,OAAOa,KAAK2B,OAAO1C,GAAQ0C,OAAOD,GAAaR,GA+BtD,iBAAAO,CAGET,EAA4BY,GAC5B,OAAO,IAAIC,SAAkB,CAACC,EAASC,KACrC,MAAMd,IAAc/B,KAAKuB,eACzBvB,KAAKC,OAAOY,MACV,sCACAkB,EACAD,EACAY,GAEF1C,KAAKwB,iBAAiBsB,IACpBf,GACCgB,IACC/C,KAAKwB,iBAAiBwB,OAAOjB,GAC7B/B,KAAKC,OAAOY,MACV,iDACAkB,EACAgB,GAEEA,EAASf,KAAMY,EAAQG,EAASf,MAC3Be,EAAS/B,MAAO6B,EAAOE,EAAS/B,OAEvChB,KAAKC,OAAOc,KACV,2DACAgB,EACAgB,EACD,IAGP/C,KAAKsB,UAAU2B,YAAY,CAAEnB,OAAMY,UAASX,aAAY,IA4B5D,SAAAmB,CAIEC,EACAC,EACAC,EACAC,EACAC,EACAC,EAAoB,QAEpB,MAAMzB,IAAc/B,KAAKuB,eACzBvB,KAAKC,OAAOY,MACV,8BACAkB,EACAoB,EACAC,EACAC,GAEF,IAAII,EAAqC,OACrCC,GAAe,EAEnB,MAAMC,EAAqB,IAAIhB,SAAeC,IAC5Ca,EAAc,KACRC,EAEFd,IAIAgB,YAAW,IAAMH,KAAe,GAEnC,IAiBH,OAbAzD,KAAK6D,gBACH9B,EACAoB,EACAC,EACAC,EACAC,EACAC,EACAC,EACAG,GACAG,MAAK,KACLJ,GAAe,CAAI,IAGdD,EAGD,qBAAMI,CAIZ9B,EACAoB,EACAC,EACAC,EACAC,EACAC,EACAC,EAAoB,OACpBG,GAGA3D,KAAKwB,iBAAiBsB,IAAIf,GAAYgB,SACbpB,IAAnBoB,EAAS/B,MACXuC,EAAQR,EAAS/B,YACUW,IAAlBoB,EAASf,KAClBsB,EAAUP,EAASf,WACOL,IAAjBoB,EAASgB,MAClB/D,KAAKwB,iBAAiBwB,OAAOjB,GAC7ByB,QAGJxD,KAAKsB,UAAU2B,YAAY,CACzBnB,KAAM,MACNY,QAAS,CAAES,SAAQC,SAAQC,QAC3BtB,cAGF4B,EAAmBG,MAAK,KACtB9D,KAAKsB,UAAU2B,YAAY,CACzBnB,KAAM,cACNC,cAEF/B,KAAKwB,iBAAiBwB,OAAOjB,EAAU,IAI3C,SAAAiC,CAGEb,EAAoBC,EAAgBC,GAEpC,OADArD,KAAKC,OAAOY,MAAM,8BAA+BsC,EAAQC,EAAQC,GAC1D,IAAIV,SAAkB,CAACC,EAASC,KACrC7C,KAAKkD,UAAoBC,EAAQC,EAAQC,EAAMT,EAASC,EAAO,IAInE,aAAMoB,SACEjE,KAAKuC,kBAAkB,WAC7BvC,KAAKuB,eAAiB,EACtBvB,KAAK0B,iBAAcC,EACnB3B,KAAKwB,iBAAiB0C,QAIxB,kBAAAC,GACE,OAAOnE,KAAKuB,eAEd,sBAAA6C,GACE,OAAOpE,KAAKwB,wBChPH6C,EAOX,WAAAzE,GANQI,KAAAsE,eAA0C,OAC1CtE,KAAAuE,aAAsC,OAG9CvE,KAAMC,OAAoBH,QAGxBE,KAAKwE,OAAS,IAAIC,OAAO,IAAIC,IAAI,0BAA2BC,KAAM,CAChE7C,KAAM,WAER9B,KAAKwE,OAAOI,UAAaC,IACvB7E,KAAKsE,eAAeO,EAAM7C,KAAK,EAEjChC,KAAKwE,OAAOM,QAAWD,IACrB7E,KAAKuE,aAAaM,EAAM,EAI5B,WAAA5B,CAAY1C,GACVP,KAAKwE,OAAOvB,YAAY1C,GAG1B,iBAAA6B,CAAkB2C,GAChB/E,KAAKsE,eAAiBS,EAGxB,eAAA1C,CAAgB0C,GACd/E,KAAKuE,aAAeQ,SCxBXC,EACX,WAAApF,CAAoBqF,GAAAjF,KAAMiF,OAANA,EAGpB,iBAAMC,CAAYC,GAChB,aAAanF,KAAKiF,OAAOjB,UACvB,OACA,yBACA,CACEoB,UAAWD,EACXE,WAAY,OAKlB,0BAAMC,CAAqBC,EAAkBC,EAAwB,IACnE,aAAaxF,KAAKiF,OAAOjB,UACvB,OACA,yBACA,CACEoB,UAAWG,EACXF,WAAYG,IAKlB,6BAAAC,CACEC,EACApC,EAAwD,OACxDC,EAAmC,QAUnC,OARoBvD,KAAKiF,OAAO/B,UAC9B,OACA,mCACA,CAAEyC,aAAcD,GAChBpC,EACAC,GAOJ,gBAAMqC,CACJC,EAIAC,EAAoC,MACpCC,GAAyB,EACzBP,EAAuB,IAEvB,MAAMQ,EACsB,iBAAnBF,EACH,CAAEG,MAAO,EAAGC,KAAMJ,GAClBA,EAEAK,QAAYnG,KAAKiF,OAAOjB,UAC5B,OACA,cACA,CACEoC,OAAQP,EACRQ,iBAAkBL,EAClBM,eAAgBP,EAChBV,WAAYG,IAMhB,MAAO,CACLL,MAJYgB,EAAI,GAKhBR,aAJkBQ,EAAI,IAS1B,gBAAMI,CAAWhB,GACf,aAAavF,KAAKiF,OAAOjB,UAAiB,OAAQ,iBAAkB,CAClEoB,UAAWG,IAIf,yBAAMiB,CAAoBd,SAClB1F,KAAKiF,OAAOjB,UAAU,OAAQ,yBAA0B,CAC5D2B,aAAcD,IAIlB,mBAAAe,CACEf,EACApC,EAA8C,OAC9CC,EAAmC,QAEnC,OAAOvD,KAAKiF,OAAO/B,UACjB,OACA,wBACA,CAAEyC,aAAcD,IACfS,GAAQ7C,EAAU6C,IACnB5C,GAIJ,yBAAMmD,CAAoBhB,GACxB,aAAa1F,KAAKiF,OAAOjB,UAAU,OAAQ,yBAA0B,CACnE2B,aAAcD,IAIlB,4BAAMiB,GACJ,aAAa3G,KAAKiF,OAAOjB,UACvB,OACA,8BACA,WCtHO4C,EACX,WAAAhH,CAAoBqF,GAAAjF,KAAMiF,OAANA,EAGpB,gBAAM4B,GACJ,aAAa7G,KAAKiF,OAAOjB,UAAkB,GAAI,cAAe,IAIhE,gBAAA8C,CACExD,EAA4C,OAC5CC,EAAmC,QAEnC,OAAOvD,KAAKiF,OAAO/B,UACjB,GACA,4BACA,CAAA,GACCiD,GAAQ7C,EAAUyD,SAASZ,KAC5B5C,UCbOyD,EACX,WAAApH,CAAoBqF,GAAAjF,KAAMiF,OAANA,EAGpB,mBAAMgC,CACJpB,EACAqB,EACAC,EACAC,EACA5B,GAEA,MAAM6B,EAAUD,SAAsBpH,KAAKsH,yBAC3C,aAAatH,KAAKiF,OAAOjB,UACvB,KACA,wBACA,CACEoC,OAAQP,EACRqB,cACAK,YAAaJ,GAAc,KAC3B9B,WAAYG,GAAa,CAAE,EAC3B6B,YAKN,0BAAMG,CACJ3B,EACAqB,EACAO,EACAC,EACAP,EACAC,EACA5B,GAEA,MAAM6B,EAAUD,SAAsBpH,KAAKsH,yBAC3C,aAAatH,KAAKiF,OAAOjB,UACvB,KACA,yCACA,CACEoC,OAAQP,EACRqB,cACAK,YAAaJ,GAAc,KAC3BQ,SAAUF,EACVC,QACArC,WAAYG,GAAa,CAAE,EAC3B6B,YAMN,2BAAMO,CACJH,EACAI,EACArC,GAEA,aAAaxF,KAAKiF,OAAOjB,UACvB,KACA,gCACA,CACE2D,SAAUF,EACVI,UACAxC,WAAYG,GAAa,CAAE,IAKzB,4BAAM8B,SACNtH,KAAK8H,qBACX,MAAMC,QAAiB/H,KAAKgI,eAC5B,OAAOD,EAAS,IAAIjH,KAItB,gBAAMmH,CACJC,EACAd,EACA5B,GAEA,MAAM6B,EAAUD,SAAsBpH,KAAKsH,yBAC3C,aAAatH,KAAKiF,OAAOjB,UACvB,KACA,qBACA,CACEmE,cAAed,EACfa,UACA7C,WAAYG,GAAa,CAAE,IAMjC,oBAAM4C,CACJF,EACAG,EAAoB,IACpBjB,EACA5B,GAEA,OAAO,IAAI7C,SAMT2F,MAAO1F,EAASC,KAChB,MAAM0F,YAAEA,EAAWC,IAAEA,SAAcxI,KAAKiI,WACtCC,EACAd,EACA5B,GAII/B,EAAczD,KAAKyI,eAAeF,GAAcpC,IACjC,iBAARA,GAAoB,YAAaA,GAC1CuC,aAAaC,GACblF,IACAb,EAAQ,CACNgG,SAAS,EACT5G,KAAM,CAAE6G,SAAUL,EAAKM,SAAU3C,EAAIyC,QAAQE,aAEvB,iBAAR3C,GAAoB,qBAAsBA,GAC1DtD,EAAO,IAAIkG,MAAM5C,EAAI6C,iBAAiBC,mBAIpCN,EAAY/E,YAAW,KAC3BH,IACAb,EAAQ,CAAEgG,SAAS,EAAO5H,MAAO,mBAAoB,GACpDqH,EAAU,IAIjB,wBAAAa,CACEvD,EACArC,EAAiD,OACjDC,EAAmC,QAEnC,OAAOvD,KAAKiF,OAAO/B,UACjB,KACA,yBACA,CAAEyC,aAAcA,GAChBrC,EACAC,GAKJ,gBAAA4F,CACEzD,EACApC,EAA6C,OAC7CC,EAAmC,QAEnC,OAAOvD,KAAKiF,OAAO/B,UACjB,KACA,qBACA,CAAEyC,aAAcD,GAChBpC,EACAC,GAOJ,cAAAkF,CACE/C,EACApC,EAAyC,OACzCC,EAAmC,QAEnC,OAAOvD,KAAKiF,OAAO/B,UACjB,KACA,mBACA,CAAEyC,aAAcD,GAChBpC,EACAC,GAKJ,gBAAM6F,CAAW1D,GACf,OAAO,IAAI/C,SAGT,CAACC,EAASC,KACV,IAAIY,EACJ,MAAMkF,EAAY/E,YAAW,KAC3BhB,EAAQ,CAAEgG,SAAS,EAAO5H,MAAO,+BAAgC,GAChE,MAEHyC,EAAczD,KAAKyI,eACjB/C,GACCS,IACoB,iBAARA,GAAoB,YAAaA,IAC1CuC,aAAaC,GACblF,IACAb,EAAQ,CACNgG,SAAS,EACT5G,KAAM,CAAE8G,SAAU3C,EAAIyC,QAAQE,gBAInC9H,IACC0H,aAAaC,GACblF,IACAZ,EAAO7B,EAAM,GAEhB,IAKL,kBAAAqI,CACE3D,EACApC,EAA6C,OAC7CC,EAAmC,QAEnC,OAAOvD,KAAKiF,OAAO/B,UACjB,KACA,uBACA,CAAEyC,aAAcD,GAChBpC,EACAC,GAKJ,oBAAM+F,CAAe5D,EAAqB2C,EAAoB,MAC5D,OAAO,IAAI1F,SAAwB,CAACC,EAASC,KAC3C,IAAIY,EACJ,MAAMkF,EAAY/E,YAAW,KAC3Bf,EAAO,IAAIkG,MAAM,+BAA+B,GAC/CV,GAEH5E,EAAczD,KAAKqJ,mBACjB3D,GACCS,IACa,YAARA,IACFuC,aAAaC,GACblF,IACAb,EAAQuD,OAGXnF,IACC0H,aAAaC,GACblF,IACAZ,EAAO7B,EAAM,GAEhB,IAIL,gBAAMuI,CACJC,EAA2B,KAC3BC,GAAyB,GAEzB,aAAazJ,KAAKiF,OAAOjB,UACvB,KACA,cACA,CACE0F,WAAYF,EACZG,eAAgBF,IAKtB,kBAAMzB,GACJ,aAAahI,KAAKiF,OAAOjB,UACvB,KACA,gBACA,IAIJ,wBAAM8D,GACJ,aAAa9H,KAAKiF,OAAOjB,UAAU,KAAM,uBAAwB,WC3RxD4F,EACX,WAAAhK,CAAoBqF,GAAAjF,KAAMiF,OAANA,EAEpB,0BAAM4E,GACJ,aAAa7J,KAAKiF,OAAOjB,UACvB,GACA,yBACA,IAIJ,0BAAM8F,SACE9J,KAAKiF,OAAOjB,UAAU,GAAI,0BAA2B,CAAA,GAG7D,2BAAA+F,CACEzG,EACAC,GAEA,OAAOvD,KAAKiF,OAAO/B,UAGhB,GAAI,iCAAkC,CAAE,EAAEI,EAAWC,UCZ/CyG,EACX,WAAApK,CAAoBqF,GAAAjF,KAAMiF,OAANA,EAEpB,eAAMgF,GACJ,aAAajK,KAAKiF,OAAOjB,UAAU,GAAI,aAAc,IAGvD,qBAAMkG,GACJ,aAAalK,KAAKiF,OAAOjB,UAAkB,GAAI,oBAAqB,IAGtE,mBAAMmG,CAAcC,EAAe,GACjC,aAAapK,KAAKiF,OAAOjB,UAAyB,GAAI,kBAAmB,CACvEoG,SAIJ,oBAAMC,CACJC,EACAC,GAEA,aAAavK,KAAKiF,OAAOjB,UACvB,GACA,kBACA,CACEsG,MAAOA,GAAS,KAChBC,UAAWA,GAAa,OAK9B,kBAAMC,CAAa9E,GACjB,aAAa1F,KAAKiF,OAAOjB,UACvB,GACA,gBACA,CAAE2B,aAAcD,IAIpB,sBAAM+E,CACJH,EACAC,GAGA,aADyBvK,KAAKqK,eAAeC,EAAOC,IAEjDG,QACEC,GACCC,MAAMC,QAAQF,IAAyB,IAAhBA,EAAKG,SAE/BJ,QAAO,EAAEK,EAAGC,MACX,MAAMC,sBAAEA,EAAqBC,KAAEA,GAASF,EAClCG,EAAUD,EAAKC,QACrB,MAC6B,OAA1BF,IACGE,EAAsBC,KAAQD,EAAsBE,UAC7B,SAA1BJ,IACGE,EAAwBG,aACvBH,EAAwBI,aACF,WAA1BN,IACGE,EAA0BK,SACzBL,EAA0BM,SAAU,IAG5CC,KAAI,EAAEC,EAAKX,MACV,MAAMY,EAAYD,EAAIE,cAClBC,KAAKC,MACkC,IAArCJ,EAAIE,cAAcG,iBAChBL,EAAIE,cAAcI,kBAAoB,KAE1C,EACEvG,EAAciG,EAAIhG,aAClBuG,EAAOlB,EAAGC,sBACVC,EAAOF,EAAGE,KACVC,EAAUD,EAAKC,QAErB,IAAIgB,EA2CJ,GA1CInB,EAAGmB,SAAWnB,EAAGmB,QAAQA,UACO,iBAAvBnB,EAAGmB,QAAQA,QACpBA,EAAUnB,EAAGmB,QAAQA,QAES,iBAAvBnB,EAAGmB,QAAQA,SACK,OAAvBnB,EAAGmB,QAAQA,UAEP,YAAanB,EAAGmB,QAAQA,QAASA,EAAU,UACtC,aAAcnB,EAAGmB,QAAQA,QAASA,EAAU,WAC5C,YAAanB,EAAGmB,QAAQA,QAASA,EAAU,UAC3C,WAAYnB,EAAGmB,QAAQA,QAASA,EAAU,SAC1C,mBAAoBnB,EAAGmB,QAAQA,QACtCA,EAAU,iBACH,qBAAsBnB,EAAGmB,QAAQA,QACxCA,EAAU,mBACH,YAAanB,EAAGmB,QAAQA,QAASA,EAAU,UAC3C,uBAAwBnB,EAAGmB,QAAQA,QAC1CA,EAAU,WACH,oBAAqBnB,EAAGmB,QAAQA,QACvCA,EAAU,UACH,aAAcnB,EAAGmB,QAAQA,QAASA,EAAU,WAC5C,wBAAyBnB,EAAGmB,QAAQA,QAC3CA,EAAU,iBACH,YAAanB,EAAGmB,QAAQA,QAASA,EAAU,UAC3C,YAAanB,EAAGmB,QAAQA,QAASA,EAAU,UAC3C,aAAcnB,EAAGmB,QAAQA,QAASA,EAAU,WAC5C,2BAA4BnB,EAAGmB,QAAQA,QAC9CA,EAAU,yBACH,wBAAyBnB,EAAGmB,QAAQA,QAC3CA,EAAU,sBACH,wBAAyBnB,EAAGmB,QAAQA,QAC3CA,EAAU,sBACH,0BAA2BnB,EAAGmB,QAAQA,SAEtC,2BAA4BnB,EAAGmB,QAAQA,QAD9CA,EAAU,UAGH,cAAenB,EAAGmB,QAAQA,QAASA,EAAU,YAC7C,YAAanB,EAAGmB,QAAQA,QAASA,EAAU,UAC3C,WAAYnB,EAAGmB,QAAQA,UAASA,EAAU,YAI1C,OAATD,EAAe,CACjB,MAAME,IAAWjB,EAAsBC,IACjCiB,EACHlB,EAAsBC,KAAKkB,UAAUC,MACrCpB,EAAsBE,SAASiB,UAAUC,MAC1C,GACIzK,EAAQqJ,EAAsBC,IAAM,OAAS,UAC7ClD,EACHiD,EAAsBC,KAAKlD,SAC3BiD,EAAsBE,SAASnD,SAChC,GACIb,EACH8D,EAAsBC,KAAK1B,YAC3ByB,EAAsBE,SAAS3B,YAChC,GACIlB,EAAO2C,EAAsBC,KAAK5C,IAClCgE,EAAerB,EAAsBC,KAAKqB,oBAShD,OAPEL,GACApB,EAAGmB,SAASA,SACkB,iBAAvBnB,EAAGmB,QAAQA,SAClB,YAAanB,EAAGmB,QAAQA,SACpBnB,EAAGmB,QAAQA,QAAQvD,QAAQE,SAG1B,CACL8C,YACAlG,cACAwG,OACAG,OACAvK,OACAoG,UACAsE,cACAhE,MACAnB,UACA8E,QAASA,GAEN,GAAa,SAATD,EAAiB,CAC1B,MAAMG,EAAQlB,EAAwBI,YAAYgB,KAC5CzK,EAAQqJ,EAAwBI,WAClC,UACA,YACE1F,EAAcqF,EAAK9E,OACnBjB,EAASgG,EAAwBG,aAAalG,UAEpD,MAAO,CACLwG,YACA9J,OACAuK,OACAF,QAASA,EACTzG,cACAG,cACAV,QACA+G,QAEG,GAAa,WAATA,EAAmB,CAC5B,MAAMpK,EAAQqJ,EAA0BK,QACpC,UACA,WACEkB,EACHvB,EAA0BK,SAASkB,SACnCvB,EAA0BM,UAAUiB,SACrC,GACIC,EAAWxB,EAA0BM,UAAUjD,IAAIoE,SACtDC,aAIH,MAAO,CACLjB,YACA9J,OACAgL,eAAgBJ,EAChBlE,IAAKmE,GAAW,EAChB9G,YAPCsF,EAA0BM,UAAU5F,aAAe,EAQpDsG,UACAD,OACAxG,mBAILgF,QACEqC,QAA6DpL,IAAhBoL,WC5MzCC,EACX,WAAApN,CAAoBqF,GAAAjF,KAAMiF,OAANA,EAEpB,sBAAMgI,GACJ,aAAajN,KAAKiF,OAAOjB,UAAU,SAAU,qBAAsB,IAGrE,qBAAMkJ,CAAgB1H,EAAuB,IAC3C,aAAaxF,KAAKiF,OAAOjB,UACvB,SACA,SACA,CACEqB,WAAYG,IAKlB,iBAAM2H,CACJC,EACAV,EACAlH,EAAuB,CAAA,GAEvB,aAAaxF,KAAKiF,OAAOjB,UAAU,SAAU,UAAW,CACtDqJ,WAAYD,EACZE,oBAAqBZ,EACrBrH,WAAYG,IAGhB,gBAAA+H,CACE5H,EACArC,EAAiD,OACjDC,EAAmC,QAEnC,OAAOvD,KAAKiF,OAAO/B,UACjB,KACA,oBACA,CAAEyC,aAAcA,GAChBrC,EACAC,ICpCN,MAAMiK,EAAsB,mBAEfC,EAsCX,WAAA7N,CAAoB8N,GAAA1N,KAAO0N,QAAPA,EA9BZ1N,KAAY2N,kBAA8BhM,EAC1C3B,KAAA4N,aAA2B,OAC3B5N,KAAO6N,SAAY,EA6BzB7N,KAAK2N,aAAe,IAAIhL,SAASC,IAC/B5C,KAAK4N,aAAehL,CAAO,IAE7B5C,KAAK8N,KAAO,IAAI9I,EAAYhF,KAAK0N,SACjC1N,KAAK+N,UAAY,IAAI/G,EAAiBhH,KAAK0N,SAC3C1N,KAAKgO,QAAU,IAAIpH,EAAe5G,KAAK0N,SACvC1N,KAAKiO,WAAa,IAAIjE,EAAkBhK,KAAK0N,SAC7C1N,KAAKkO,SAAW,IAAItE,EAAgB5J,KAAK0N,SACzC1N,KAAKmO,OAAS,IAAInB,EAAchN,KAAK0N,SAGvC,iBAAMU,GACJ,OAAIpO,KAAK6N,QAAgBlL,QAAQC,UAC1B5C,KAAK2N,aAGd,UAAMU,CAAKC,EAAqBd,GAE9B,GAAIxN,KAAK6N,QAAS,MAAM,IAAI9E,MAAM,uCAClC,MAAMH,QAAEA,SAAkB5I,KAAK0N,QAAQnL,kBAEpC,OAAQ,CAAE+L,eAKb,OAJI1F,IACF5I,KAAK6N,UAAYjF,EACjB5I,KAAK4N,gBAEAhF,EAGT,oBAAM2F,CACJC,EACAF,EAAqBd,GAGrB,GAAIxN,KAAK6N,QACP,MAAM,IAAI9E,MACR,6FAEJ,IACE,MAAMhG,QAAiB/C,KAAK0N,QAAQnL,kBAEjC,OAAQ,CAAEiM,aAAYF,eAMzB,OALIvL,EAAS6F,UACX5I,KAAK6N,SAAU,EACf7N,KAAK4N,gBAGA7K,EAAS6F,QAChB,MAAO6F,GAEP,OADAzO,KAAK0N,QAAQzN,OAAOe,MAAM,2BAA4ByN,IAC/C,GAQX,aAAMxK,GACJjE,KAAK2N,kBAAehM,EACpB3B,KAAK6N,SAAU,QACT7N,KAAK0N,QAAQzJ,UAGrB,MAAAyK,GACE,OAAO1O,KAAK6N,eC/GHc,EAaX,WAAA/O,CACE0B,EAAuB,IAAI+C,EAC3BuK,GAAgB,GAEhB5O,KAAK0N,QAAU,IAAIrM,EAAgBC,GACnCtB,KAAK0N,QAAQzN,OAAOa,KAAK,+BACpB8N,GACH5O,KAAKsC,aAIT,gBAAMA,GACJtC,KAAK0N,QAAQzN,OAAOa,KAAK,sCACnBd,KAAK0N,QAAQpL,aACnBtC,KAAK0N,QAAQzN,OAAOa,KAAK,+BAI3B,kBAAM+N,GAEJ,aADM7O,KAAK0N,QAAQpL,aACZ,IAAImL,EAAezN,KAAK0N,SAGjC,uBAAMoB,CAAkBN,SAChBxO,KAAK0N,QAAQpL,aAKnB,OAJiBtC,KAAK0N,QAAQnL,kBAG3B,oBAAqB,CAAEiM,eAQ5B,WAAAO,CAAYhP,GACVC,KAAK0N,QAAQzN,OAAOC,SAASH,GAC7BC,KAAK0N,QAAQzN,OAAOa,KAAK,oBAAoBf,MAsB/C,qBAAMiP,CAAgBR,SACdxO,KAAK0N,QAAQpL,aAMnB,aALuBtC,KAAK0N,QAAQnL,kBAIjC,kBAAmB,CAAEiM,eAwB1B,wBAAMS,CAAmBC,SACjBlP,KAAK0N,QAAQpL,aAMnB,aALuBtC,KAAK0N,QAAQnL,kBAIjC,qBAAsB,CAAE2M"}
package/dist/worker.js DELETED
@@ -1,2 +0,0 @@
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
- //# sourceMappingURL=worker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"worker.js","sources":["../src/transport/wasmTransport/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/transport').TransportMessageType} 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":"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"}
@@ -1,73 +0,0 @@
1
- import { expect } from 'vitest'
2
- import { walletTest } from './test/fixtures'
3
-
4
- walletTest('get invite code from devimint', async ({ wallet }) => {
5
- expect(wallet).toBeDefined()
6
- const inviteCode = await wallet.testing.getInviteCode()
7
- expect(inviteCode).toBeDefined()
8
- })
9
-
10
- walletTest('fund wallet with devimint', async ({ fundedWallet }) => {
11
- expect(fundedWallet).toBeDefined()
12
- const balance = await fundedWallet.balance.getBalance()
13
- expect(balance).toBeGreaterThan(0)
14
- })
15
-
16
- walletTest(
17
- 'Error on open & join if wallet is already open',
18
- async ({ wallet }) => {
19
- expect(wallet).toBeDefined()
20
- expect(wallet.isOpen()).toBe(true)
21
-
22
- // Test opening an already open wallet
23
- try {
24
- await wallet.open()
25
- expect.unreachable(
26
- 'Opening a wallet should fail on an already open wallet',
27
- )
28
- } catch (error) {
29
- expect(error).toBeInstanceOf(Error)
30
- expect((error as Error).message).toBe(
31
- 'The FedimintWallet is already open.',
32
- )
33
- }
34
-
35
- // Test joining federation on an already open wallet
36
- try {
37
- await wallet.joinFederation(wallet.testing.TESTING_INVITE)
38
- expect.unreachable('Joining a federation should fail on an open wallet')
39
- } catch (error) {
40
- expect(error).toBeInstanceOf(Error)
41
- expect((error as Error).message).toBe(
42
- 'The FedimintWallet is already open. You can only call `joinFederation` on closed clients.',
43
- )
44
- }
45
- },
46
- )
47
-
48
- walletTest('getConfig', async ({ wallet }) => {
49
- expect(wallet).toBeDefined()
50
- expect(wallet.isOpen()).toBe(true)
51
- const config = await wallet.federation.getConfig()
52
- expect(config).toBeDefined()
53
- })
54
-
55
- walletTest('empty getBalance', async ({ wallet }) => {
56
- expect(wallet).toBeDefined()
57
- expect(wallet.isOpen()).toBe(true)
58
- await expect(wallet.waitForOpen()).resolves.toBeUndefined()
59
- await expect(wallet.balance.getBalance()).resolves.toEqual(0)
60
- })
61
-
62
- walletTest('previewFederation', async ({ walletDirector, unopenedWallet }) => {
63
- const preview = await walletDirector.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
- })
@@ -1,119 +0,0 @@
1
- import { TransportClient } from './transport'
2
- import {
3
- BalanceService,
4
- MintService,
5
- LightningService,
6
- FederationService,
7
- RecoveryService,
8
- WalletService,
9
- } from './services'
10
-
11
- const DEFAULT_CLIENT_NAME = 'fm-default' as const
12
-
13
- export class FedimintWallet {
14
- public balance: BalanceService
15
- public mint: MintService
16
- public lightning: LightningService
17
- public federation: FederationService
18
- public recovery: RecoveryService
19
- public wallet: WalletService
20
-
21
- private _openPromise: Promise<void> | undefined = undefined
22
- private _resolveOpen: () => void = () => {}
23
- private _isOpen: boolean = false
24
-
25
- /**
26
- * Creates a new instance of FedimintWallet.
27
- *
28
- * This constructor initializes a FedimintWallet instance, which manages communication
29
- * with a Web Worker. The Web Worker is responsible for running WebAssembly code that
30
- * handles the core Fedimint Client operations.
31
- *
32
- * (default) When not in lazy mode, the constructor immediately initializes the
33
- * Web Worker and begins loading the WebAssembly module in the background. This
34
- * allows for faster subsequent operations but may increase initial load time.
35
- *
36
- * In lazy mode, the Web Worker and WebAssembly initialization are deferred until
37
- * the first operation that requires them, reducing initial overhead at the cost
38
- * of a slight delay on the first operation.
39
- *
40
- * @example
41
- * // Create a wallet with immediate initialization
42
- * const wallet = new FedimintWallet();
43
- * wallet.open();
44
- *
45
- * // Create a wallet with lazy initialization
46
- * const lazyWallet = new FedimintWallet(true);
47
- * // Some time later...
48
- * lazyWallet.initialize();
49
- * lazyWallet.open();
50
- */
51
- constructor(private _client: TransportClient) {
52
- this._openPromise = new Promise((resolve) => {
53
- this._resolveOpen = resolve
54
- })
55
- this.mint = new MintService(this._client)
56
- this.lightning = new LightningService(this._client)
57
- this.balance = new BalanceService(this._client)
58
- this.federation = new FederationService(this._client)
59
- this.recovery = new RecoveryService(this._client)
60
- this.wallet = new WalletService(this._client)
61
- }
62
-
63
- async waitForOpen() {
64
- if (this._isOpen) return Promise.resolve()
65
- return this._openPromise
66
- }
67
-
68
- async open(clientName: string = DEFAULT_CLIENT_NAME) {
69
- // TODO: Determine if this should be safe or throw
70
- if (this._isOpen) throw new Error('The FedimintWallet is already open.')
71
- const { success } = await this._client.sendSingleMessage<{
72
- success: boolean
73
- }>('open', { clientName })
74
- if (success) {
75
- this._isOpen = !!success
76
- this._resolveOpen()
77
- }
78
- return success
79
- }
80
-
81
- async joinFederation(
82
- inviteCode: string,
83
- clientName: string = DEFAULT_CLIENT_NAME,
84
- ) {
85
- // TODO: Determine if this should be safe or throw
86
- if (this._isOpen)
87
- throw new Error(
88
- 'The FedimintWallet is already open. You can only call `joinFederation` on closed clients.',
89
- )
90
- try {
91
- const response = await this._client.sendSingleMessage<{
92
- success: boolean
93
- }>('join', { inviteCode, clientName })
94
- if (response.success) {
95
- this._isOpen = true
96
- this._resolveOpen()
97
- }
98
-
99
- return response.success
100
- } catch (e) {
101
- this._client.logger.error('Error joining federation', e)
102
- return false
103
- }
104
- }
105
-
106
- /**
107
- * This should ONLY be called when UNLOADING the wallet client.
108
- * After this call, the FedimintWallet instance should be discarded.
109
- */
110
- async cleanup() {
111
- this._openPromise = undefined
112
- this._isOpen = false
113
- await this._client.cleanup()
114
- }
115
-
116
- isOpen() {
117
- return this._isOpen
118
- }
119
- }
@@ -1,118 +0,0 @@
1
- import { TransportClient, WasmWorkerTransport } from './transport'
2
- import { type LogLevel } from './utils/logger'
3
- import { FederationConfig, JSONValue, Transport } from './types'
4
- import { FedimintWallet } from './FedimintWallet'
5
-
6
- export class WalletDirector {
7
- // Protected to allow for TestWalletDirector to access the client
8
- protected _client: TransportClient
9
-
10
- /**
11
- * Creates a new instance of WalletDirector.
12
- *
13
- * @param {Transport} [transport] - Optional worker client instance. Provide your
14
- * own to use a custom transport (e.g. React Native).
15
- *
16
- * @param {boolean} lazy - If true, delays Web Worker and WebAssembly initialization
17
- * until needed. Default is false.
18
- */
19
- constructor(
20
- transport: Transport = new WasmWorkerTransport(),
21
- lazy: boolean = false,
22
- ) {
23
- this._client = new TransportClient(transport)
24
- this._client.logger.info('WalletDirector instantiated')
25
- if (!lazy) {
26
- this.initialize()
27
- }
28
- }
29
-
30
- async initialize() {
31
- this._client.logger.info('Initializing TransportClient')
32
- await this._client.initialize()
33
- this._client.logger.info('TransportClient initialized')
34
- }
35
-
36
- // TODO: Make this stateful... handle listing/joining/opening/closing wallets at this level
37
- async createWallet() {
38
- await this._client.initialize()
39
- return new FedimintWallet(this._client)
40
- }
41
-
42
- async previewFederation(inviteCode: string) {
43
- await this._client.initialize()
44
- const response = this._client.sendSingleMessage<{
45
- config: FederationConfig
46
- federation_id: string
47
- }>('previewFederation', { inviteCode })
48
- return response
49
- }
50
-
51
- /**
52
- * Sets the log level for the library.
53
- * @param level The desired log level ('DEBUG', 'INFO', 'WARN', 'ERROR', 'NONE').
54
- */
55
- setLogLevel(level: LogLevel) {
56
- this._client.logger.setLevel(level)
57
- this._client.logger.info(`Log level set to ${level}.`)
58
- }
59
-
60
- /**
61
- * Parses a federation invite code and retrieves its details.
62
- *
63
- * This method sends the provided invite code to the TransportClient for parsing.
64
- * The response includes the federation_id and url.
65
- *
66
- * @param {string} inviteCode - The invite code to be parsed.
67
- * @returns {Promise<{ federation_id: string, url: string}>}
68
- * A promise that resolves to an object containing:
69
- * - `federation_id`: The id of the feder.
70
- * - `url`: One of the apipoints to connect to the federation
71
- *
72
- * @throws {Error} If the TransportClient encounters an issue during the parsing process.
73
- *
74
- * @example
75
- * const inviteCode = "example-invite-code";
76
- * const parsedCode = await wallet.parseInviteCode(inviteCode);
77
- * console.log(parsedCode.federation_id, parsedCode.url);
78
- */
79
- async parseInviteCode(inviteCode: string) {
80
- await this._client.initialize()
81
- const response = await this._client.sendSingleMessage<{
82
- type: string
83
- data: JSONValue
84
- requestId: number
85
- }>('parseInviteCode', { inviteCode })
86
- return response
87
- }
88
-
89
- /**
90
- * Parses a BOLT11 Lightning invoice and retrieves its details.
91
- *
92
- * This method sends the provided invoice string to the TransportClient for parsing.
93
- * The response includes details such as the amount, expiry, and memo.
94
- *
95
- * @param {string} invoiceStr - The BOLT11 invoice string to be parsed.
96
- * @returns {Promise<{ amount: string, expiry: number, memo: string }>}
97
- * A promise that resolves to an object containing:
98
- * - `amount`: The amount specified in the invoice.
99
- * - `expiry`: The expiry time of the invoice in seconds.
100
- * - `memo`: A description or memo attached to the invoice.
101
- *
102
- * @throws {Error} If the TransportClient encounters an issue during the parsing process.
103
- *
104
- * @example
105
- * const invoiceStr = "lnbc1...";
106
- * const parsedInvoice = await wallet.parseBolt11Invoice(invoiceStr);
107
- * console.log(parsedInvoice.amount, parsedInvoice.expiry, parsedInvoice.memo);
108
- */
109
- async parseBolt11Invoice(invoiceStr: string) {
110
- await this._client.initialize()
111
- const response = await this._client.sendSingleMessage<{
112
- type: string
113
- data: JSONValue
114
- requestId: number
115
- }>('parseBolt11Invoice', { invoiceStr })
116
- return response
117
- }
118
- }
package/src/index.ts DELETED
@@ -1,3 +0,0 @@
1
- export { WalletDirector } from './WalletDirector'
2
- export type { FedimintWallet } from './FedimintWallet'
3
- export type * from './types'
@@ -1,26 +0,0 @@
1
- import { expect } from 'vitest'
2
- import { walletTest } from '../test/fixtures'
3
-
4
- walletTest('getBalance should be initially zero', async ({ wallet }) => {
5
- expect(wallet).toBeDefined()
6
- expect(wallet.isOpen()).toBe(true)
7
- const beforeGetBalance = wallet.testing.getRequestCounter()
8
- await expect(wallet.balance.getBalance()).resolves.toEqual(0)
9
- expect(wallet.testing.getRequestCounter()).toBe(beforeGetBalance + 1)
10
- })
11
-
12
- walletTest('subscribe balance', async ({ wallet }) => {
13
- expect(wallet).toBeDefined()
14
- expect(wallet.isOpen()).toBe(true)
15
-
16
- const counterBefore = wallet.testing.getRequestCounter()
17
- const callbacksBefore = wallet.testing.getRequestCallbackMap().size
18
- const unsubscribe = await wallet.balance.subscribeBalance((balance) => {
19
- expect(balance).toEqual(0)
20
- })
21
- expect(wallet.testing.getRequestCounter()).toBe(counterBefore + 1)
22
- expect(wallet.testing.getRequestCallbackMap().size).toBe(callbacksBefore + 1)
23
-
24
- await expect(wallet.balance.getBalance()).resolves.toEqual(0)
25
- expect(unsubscribe()).toBeUndefined()
26
- })
@@ -1,29 +0,0 @@
1
- import { TransportClient } from '../transport'
2
-
3
- /**
4
- * Balance Service
5
- *
6
- * The Balance Service provides methods to interact with the balance of a Fedimint wallet.
7
- */
8
- export class BalanceService {
9
- constructor(private client: TransportClient) {}
10
-
11
- /** https://web.fedimint.org/core/FedimintWallet/BalanceService/getBalance */
12
- async getBalance() {
13
- return await this.client.rpcSingle<number>('', 'get_balance', {})
14
- }
15
-
16
- /** https://web.fedimint.org/core/FedimintWallet/BalanceService/subscribeBalance */
17
- subscribeBalance(
18
- onSuccess: (balanceMsats: number) => void = () => {},
19
- onError: (error: string) => void = () => {},
20
- ) {
21
- return this.client.rpcStream<string>(
22
- '',
23
- 'subscribe_balance_changes',
24
- {},
25
- (res) => onSuccess(parseInt(res)),
26
- onError,
27
- )
28
- }
29
- }
@@ -1,58 +0,0 @@
1
- import { expect } from 'vitest'
2
- import { walletTest } from '../test/fixtures'
3
-
4
- walletTest(
5
- 'getConfig should return the federation config',
6
- async ({ wallet }) => {
7
- expect(wallet).toBeDefined()
8
- expect(wallet.isOpen()).toBe(true)
9
- const counterBefore = wallet.testing.getRequestCounter()
10
- await expect(wallet.federation.getConfig()).resolves.toMatchObject({
11
- api_endpoints: expect.any(Object),
12
- broadcast_public_keys: expect.any(Object),
13
- consensus_version: expect.any(Object),
14
- meta: expect.any(Object),
15
- modules: expect.any(Object),
16
- })
17
- expect(wallet.testing.getRequestCounter()).toBe(counterBefore + 1)
18
- },
19
- )
20
-
21
- walletTest(
22
- 'getFederationId should return the federation id',
23
- async ({ wallet }) => {
24
- expect(wallet).toBeDefined()
25
- expect(wallet.isOpen()).toBe(true)
26
-
27
- const counterBefore = wallet.testing.getRequestCounter()
28
- const federationId = await wallet.federation.getFederationId()
29
- expect(federationId).toBeTypeOf('string')
30
- expect(federationId).toHaveLength(64)
31
- expect(wallet.testing.getRequestCounter()).toBe(counterBefore + 1)
32
- },
33
- )
34
-
35
- walletTest(
36
- 'getInviteCode should return the invite code',
37
- async ({ wallet }) => {
38
- expect(wallet).toBeDefined()
39
- expect(wallet.isOpen()).toBe(true)
40
-
41
- const counterBefore = wallet.testing.getRequestCounter()
42
- const inviteCode = await wallet.federation.getInviteCode(0)
43
- expect(inviteCode).toBeTypeOf('string')
44
- expect(wallet.testing.getRequestCounter()).toBe(counterBefore + 1)
45
- },
46
- )
47
-
48
- walletTest(
49
- 'listOperations should return the list of operations',
50
- async ({ wallet }) => {
51
- expect(wallet).toBeDefined()
52
- expect(wallet.isOpen()).toBe(true)
53
-
54
- const counterBefore = wallet.testing.getRequestCounter()
55
- await expect(wallet.federation.listOperations()).resolves.toMatchObject([])
56
- expect(wallet.testing.getRequestCounter()).toBe(counterBefore + 1)
57
- },
58
- )