@laceio/sdk 0.1.1 → 0.1.2-canary.0
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/{TransactionBuilder-DrB3NVTi.cjs → TransactionBuilder-CCjOn7NA.cjs} +42 -0
- package/dist/{TransactionBuilder-V6aLx4SV.js → TransactionBuilder-CIzdw18M.js} +1 -1
- package/dist/{_polyfill-buffer-patch-BnPVerlG.cjs → _polyfill-buffer-patch-CM8X7JiY.cjs} +21 -2
- package/dist/_polyfill-buffer-patch-yNxN4d5E.js +1467 -0
- package/dist/_web-crypto-random-bytes-Bo-GTcRS.js +197 -0
- package/dist/acc-module-4iIUv6My.cjs +27654 -0
- package/dist/acc-module-Cmj8EsIb.js +27624 -0
- package/dist/account-BOQruszJ.js +6 -0
- package/dist/account-BUOj4pYJ.cjs +11 -0
- package/dist/account-call-7wnopBq0.cjs +5 -0
- package/dist/account-call-B9d_2Xwi.js +4 -0
- package/dist/account-call-Bd4Rpbvt.cjs +323 -0
- package/dist/account-call-C3CkDqEC.js +276 -0
- package/dist/account-guards-BtjTGxDZ.cjs +42 -0
- package/dist/account-guards-D9Lu5T3W.js +36 -0
- package/dist/account-tokens-DvkOFVON.js +16 -0
- package/dist/account-tokens-nwcvwLu4.cjs +21 -0
- package/dist/{activity-type.stable-BJEfeLxL.cjs → activity-type-Ch6ljxBy.cjs} +2 -1
- package/dist/{activity-type.stable-C76_hWd7.js → activity-type-GsJGWs-3.js} +2 -1
- package/dist/address-B9ntKL8K.js +13761 -0
- package/dist/address-BXp-mY8H.cjs +11270 -0
- package/dist/{address-book-address-validator-DIUolI-s.js → address-book-address-validator-0J9XAADH.js} +2 -2
- package/dist/address-book-address-validator-DK0dnsRS.cjs +41 -0
- package/dist/address-book-address-validator-Di_ywo8M.js +39 -0
- package/dist/{address-book-address-validator-DNwQGlOB.cjs → address-book-address-validator-Dte_YQ2L.cjs} +2 -2
- package/dist/artefact-loader-BWWYAD7E.cjs +183 -0
- package/dist/artefact-loader-Dik4HIfv.js +160 -0
- package/dist/auto-dismiss-failure-on-success-C-qoJuid.cjs +37 -0
- package/dist/auto-dismiss-failure-on-success-s8MGDEIu.js +31 -0
- package/dist/bip32-D6wd_QMn.cjs +3851 -0
- package/dist/bitcoin-data-provider-BYPSmuZS.js +21 -0
- package/dist/bitcoin-data-provider-w1oEDSU3.cjs +26 -0
- package/dist/bitcoin.cjs +45 -0
- package/dist/bitcoin.d.ts +29906 -1
- package/dist/bitcoin.js +20 -0
- package/dist/{blockfrost-tx-submit-provider-DPTrapz-.js → blockfrost-tx-submit-provider-CBWQ0wK9.js} +5 -157
- package/dist/{blockfrost-tx-submit-provider-BAIzV5o3.cjs → blockfrost-tx-submit-provider-CLNQ5ycR.cjs} +3 -167
- package/dist/bn-d3nSOIf7.cjs +2553 -0
- package/dist/browser-B1eMbDwh.js +7468 -0
- package/dist/bytes.vo-BB7_4JK6.js +23 -0
- package/dist/bytes.vo-BNRquqaO.cjs +34 -0
- package/dist/cardano-DfPwhwm-.js +3 -0
- package/dist/{cardano-network-id.vo-DSxrFk9S.cjs → cardano-network-id.vo-BEDPn6Li.cjs} +1 -1
- package/dist/{cardano-network-id.vo-CK1tNQDg.js → cardano-network-id.vo-Cfpvbod9.js} +1 -1
- package/dist/cardano.cjs +22 -18
- package/dist/cardano.d.ts +16956 -1716
- package/dist/cardano.js +16 -11
- package/dist/client-DXBLHk7K.cjs +808 -0
- package/dist/codecs-Cswkg7Tm.cjs +4051 -0
- package/dist/codecs-Dc1Krpbt.js +3903 -0
- package/dist/{const-C84qHkjp.js → const-BJfIK_G-.js} +4 -4
- package/dist/const-BhYOdznB.cjs +42 -0
- package/dist/const-BsnjG2_Q.cjs +32071 -0
- package/dist/const-CUnCl5U0.js +13 -0
- package/dist/{const-DXk2tFyv.js → const-CjmfjBP3.js} +1 -1
- package/dist/{const-BDEg2Trq.cjs → const-D-eZIS4n.cjs} +4 -4
- package/dist/const-D0CbQlo4.js +154 -0
- package/dist/{const-BY8B3_0_.cjs → const-iwzZEE_w.cjs} +1 -1
- package/dist/contract-1R86jhSw.js +171 -0
- package/dist/contract-MKLzYVkW.cjs +189 -0
- package/dist/create-add-accounts-Brqk84vF.js +102 -0
- package/dist/create-add-accounts-DzXIh7Ot.cjs +114 -0
- package/dist/{delegation-tx-builder-CRpLP6jH.cjs → delegation-tx-builder-CCjiakoy.cjs} +6 -6
- package/dist/{delegation-tx-builder-CGVqlaFE.js → delegation-tx-builder-DZFjHDS8.js} +5 -5
- package/dist/{deregistration-tx-builder-B-CrUyX6.js → deregistration-tx-builder-Bf6xAYp4.js} +5 -5
- package/dist/{deregistration-tx-builder-DZGwB4cz.cjs → deregistration-tx-builder-CQP35yex.cjs} +6 -6
- package/dist/device-commitment-hex.vo-5wFtQvDS.js +26 -0
- package/dist/device-commitment-hex.vo-CT3RmAug.cjs +31 -0
- package/dist/device-readers-CUHYoYOH.js +145 -0
- package/dist/device-readers-CdxS2btd.cjs +168 -0
- package/dist/device-readers-D_JZeNL2.cjs +8 -0
- package/dist/device-readers-DwSNCGPP.js +4 -0
- package/dist/dist-BMi5ZjEq.cjs +43175 -0
- package/dist/dist-BtIq4XFn.cjs +535 -0
- package/dist/dist-C3SHC_Ho.cjs +1394 -0
- package/dist/dist-CykEjYEX.cjs +3814 -0
- package/dist/dist-Dcsxh3be.cjs +3452 -0
- package/dist/dist-DqJfSlTd.cjs +4413 -0
- package/dist/dist-nTZ70qj7.cjs +1306 -0
- package/dist/{earn-rewards-tx-builder-BDbTDZmD.js → earn-rewards-tx-builder-Bsga3yFb.js} +5 -5
- package/dist/{earn-rewards-tx-builder-D5sUT5v8.cjs → earn-rewards-tx-builder-GuxofYns.cjs} +6 -6
- package/dist/enc-key-circuits-B7BjgUL9.js +13 -0
- package/dist/enc-key-circuits-BLrZrBVI.cjs +24 -0
- package/dist/english-Byb9M0E_.cjs +2057 -0
- package/dist/envelopes-BGoO_v8m.js +1621 -0
- package/dist/envelopes-CH25R-DN.cjs +1722 -0
- package/dist/errors-BIftM8ZN.cjs +688 -0
- package/dist/errors-DSq5wUwt.js +466 -0
- package/dist/esm-HBSUQw3w.js +384 -0
- package/dist/esm-LZuaZjMf.cjs +389 -0
- package/dist/experimental.cjs +7349 -0
- package/dist/experimental.d.ts +86273 -0
- package/dist/experimental.js +7184 -0
- package/dist/gated-call-CDCVZIK-.cjs +5 -0
- package/dist/gated-call-D-tT7P_t.js +722 -0
- package/dist/gated-call-D_VT2quk.js +4 -0
- package/dist/gated-call-DgJm1Mi_.cjs +787 -0
- package/dist/grant-circuits-DswmW3nI.cjs +71 -0
- package/dist/grant-circuits-Jxb5y1HW.js +42 -0
- package/dist/grant-rules-By07_eDi.js +6824 -0
- package/dist/grant-rules-BzVTWXS7.cjs +7099 -0
- package/dist/grant-spend-B3Md9L0n.js +215 -0
- package/dist/grant-spend-oWmzRsjH.cjs +217 -0
- package/dist/grant-status-B2y49iIu.js +2688 -0
- package/dist/grant-status-DOr3t_u8.cjs +2820 -0
- package/dist/grants-2BZ-qEVQ.js +5 -0
- package/dist/grants-BPoLSiMt.cjs +18 -0
- package/dist/grants-BoI5uwSF.cjs +272 -0
- package/dist/grants-CtofFu-e.js +213 -0
- package/dist/{group-cardano-addresses-by-account-B533oVXR.cjs → group-cardano-addresses-by-account-Bp0g4wEY.cjs} +3 -39
- package/dist/{group-cardano-addresses-by-account-RHKoEskR.js → group-cardano-addresses-by-account-SR8MMrZf.js} +5 -35
- package/dist/{guarded-transaction-signer-Bxl6_XNd.cjs → guarded-transaction-signer-MFpPg98D.cjs} +17 -18
- package/dist/{guarded-transaction-signer-CpKLj8Kp.js → guarded-transaction-signer-P6Rp1faj.js} +8 -15
- package/dist/hex-D9ITYbwt.cjs +263 -0
- package/dist/hex-mkXcV3pN.js +191 -0
- package/dist/http-client-B3N-TMxu.cjs +167 -0
- package/dist/http-client-TRlhDZGh.js +155 -0
- package/dist/identity-BMLuufva.cjs +263 -0
- package/dist/identity-DII6f-h7.js +233 -0
- package/dist/in-memory-wallet-integration-B2xzxORj.cjs +20741 -0
- package/dist/in-memory-wallet-integration-CBRiPjLO.js +130 -0
- package/dist/in-memory-wallet-integration-CULUB5Tf.cjs +240 -0
- package/dist/{in-memory-wallet-integration-D-qn65Kx.js → in-memory-wallet-integration-ChIOirMW.js} +5 -2
- package/dist/{in-memory-wallet-integration-Croiuopx.js → in-memory-wallet-integration-CljprQQV.js} +7 -104
- package/dist/{in-memory-wallet-integration-DVh9sRXa.cjs → in-memory-wallet-integration-Cm6P8sk6.cjs} +3 -2
- package/dist/in-memory-wallet-integration-TM9bBphA.js +20738 -0
- package/dist/{in-memory-wallet-integration-CnLYeX4-.cjs → in-memory-wallet-integration-t9I00R_V.cjs} +17 -108
- package/dist/index.cjs +84 -47
- package/dist/index.d.ts +37496 -10033
- package/dist/index.js +52 -24
- package/dist/{init-CLHuAMB-.js → init-0zzs9aqU.js} +4 -4
- package/dist/{init-U8c9yHYx.cjs → init-5KcGcBb5.cjs} +1 -1
- package/dist/init-8v_n8boO.js +1177 -0
- package/dist/{init-CigestoM.js → init-B3-1ghyx.js} +2 -2
- package/dist/init-B8U3ABhS.cjs +107 -0
- package/dist/init-BJn-8_hf.js +141 -0
- package/dist/init-BPU3j8sT.cjs +6 -0
- package/dist/init-BRzH6xu-2.cjs +2797 -0
- package/dist/init-BmzfDaKL.js +1142 -0
- package/dist/{init-C-jErzp5.cjs → init-BopV9ed4.cjs} +2 -2
- package/dist/init-BpHTq2R5.js +105 -0
- package/dist/init-BpSITBfF.js +39 -0
- package/dist/{init-DX4WyB0R.cjs → init-BrdVzxei.cjs} +3 -3
- package/dist/{init-LfyMo-sS.cjs → init-BwkU0ruo.cjs} +2 -2
- package/dist/{init-CB__aLD7.cjs → init-C-G32J12.cjs} +2 -2
- package/dist/init-C00gw1zi.js +422 -0
- package/dist/{init-TkPq_Ny_.js → init-C2RgrfZe.js} +1 -1
- package/dist/{init-DcYY6zMD.js → init-C8URA2OX.js} +1 -1
- package/dist/init-CDkRynJa.js +2796 -0
- package/dist/{init-Cg9XdAru.js → init-CNM5m7M2.js} +4 -4
- package/dist/init-CR7BfztQ.cjs +18 -0
- package/dist/{init-CSHwHnfg.cjs → init-CSDpdu0Q.cjs} +2 -2
- package/dist/{init-aJHl-7AO.js → init-CX0AMQUn.js} +2 -2
- package/dist/{init-FMGDET-9.js → init-CfTbSEKy.js} +259 -60
- package/dist/{init-CR6tpw1B.js → init-Cigr_tKx.js} +47 -43
- package/dist/init-CuW7rHNA.js +3584 -0
- package/dist/{init-CFYsq82V.js → init-CyAY4Lzl.js} +1 -1
- package/dist/init-Cz0rz5fU.cjs +3585 -0
- package/dist/{init-BKhH6mVR.cjs → init-D6BxBs7e.cjs} +1 -1
- package/dist/init-D8OeObDF.cjs +1141 -0
- package/dist/init-D9g1HXYf.cjs +40 -0
- package/dist/{init-CNLGJJRx.js → init-DA7zmptx.js} +1 -1
- package/dist/{init-DkIc5nqF.cjs → init-DFMiP2ZH.cjs} +1 -1
- package/dist/{init-zSzCjoor.js → init-DFjT8YvT.js} +4 -4
- package/dist/init-DGjXwWs2.cjs +143 -0
- package/dist/init-DHrCbpkW.cjs +121 -0
- package/dist/{init-B64zCLxG.cjs → init-DUF4ar8P.cjs} +4 -4
- package/dist/init-DlqJuHhl.js +119 -0
- package/dist/{init-y2Ra0vZP.js → init-Dnsv155v.js} +3 -3
- package/dist/init-DrRdf5sZ.cjs +1176 -0
- package/dist/init-DuYENxci.js +17 -0
- package/dist/{init-D6DBUsD3.cjs → init-Dv3zKj0r.cjs} +4 -4
- package/dist/{init-BtzMZ7Pk.cjs → init-Dy-05ktr.cjs} +1 -1
- package/dist/{init-BsCBAGWf.cjs → init-EP0CUWNK.cjs} +2 -2
- package/dist/{init-BJVU54pI.cjs → init-EhzD7a8i.cjs} +1 -1
- package/dist/{init-w9GEs73W.js → init-Fw89ZmrR.js} +2 -2
- package/dist/init-GsT2AEa4.cjs +424 -0
- package/dist/{init-Rxohwpmu.js → init-NCjgwCZy.js} +2 -2
- package/dist/{init-DxUHsN53.cjs → init-NdhG_VrF.cjs} +6 -6
- package/dist/{init-DDdhguVC.js → init-SZ01tARX2.js} +2 -2
- package/dist/{init-BAJJzBza.js → init-Y3mkB4XS.js} +2 -2
- package/dist/init-c4l6r-o-.js +5 -0
- package/dist/{init-Dku4b2lG.js → init-kEfUTuG2.js} +1 -1
- package/dist/{init-C7IeJwQR.cjs → init-lzHt4Cli.cjs} +256 -59
- package/dist/{init-anYu6XB7.cjs → init-rmt7-fQE.cjs} +2 -2
- package/dist/{init-C4Bkib9u.cjs → init-zU-_9Gsp.cjs} +67 -65
- package/dist/{is-retriable-error-BU0e3hVI.js → is-retriable-error-BUiVJDwH.js} +1 -1
- package/dist/{is-retriable-error-CeeuHqDa.cjs → is-retriable-error-Dpt860if.cjs} +1 -1
- package/dist/jubjub-authoriser-D7zDXu3V.js +86 -0
- package/dist/jubjub-authoriser-Dgu6o3Sv.cjs +87 -0
- package/dist/key-source-5oUBFiC7.cjs +583 -0
- package/dist/key-source-B08HukZg.js +2550 -0
- package/dist/keyDerivation-D3k9XyHg.js +4077 -0
- package/dist/keyDerivation-u0nBA93T.cjs +274 -0
- package/dist/{lace-context-CZcNHr4M.js → lace-context-BZciB9c7.js} +4 -4
- package/dist/{lace-context-fJTDghdp.cjs → lace-context-DgR6vLli.cjs} +4 -4
- package/dist/lib--iqvW4O_.js +2354 -0
- package/dist/lib-Yk6Upl5D.cjs +2359 -0
- package/dist/{libsodium-wrappers-UH0LaOUE.js → libsodium-wrappers-BhbOA8dQ.js} +3 -1647
- package/dist/midnight-account-id.vo-0x9X-r3l.cjs +10 -0
- package/dist/midnight-account-id.vo-DjCAGcqc.js +5 -0
- package/dist/midnight-engine-DpemplKO.js +5 -0
- package/dist/midnight-engine-xU1wotne.cjs +6 -0
- package/dist/midnight-wallet-DIsAlSn6.js +18 -0
- package/dist/midnight-wallet-XTZc2li7.cjs +24 -0
- package/dist/midnight.cjs +1408 -0
- package/dist/midnight.d.ts +28934 -0
- package/dist/midnight.js +1352 -0
- package/dist/modules-cardano-B1nDUWqy.js +995 -0
- package/dist/modules-cardano-BYeYHrRm.cjs +1108 -0
- package/dist/node-relay-DWe1U0w2.cjs +49 -0
- package/dist/node-relay-h4i5IlAQ.js +48 -0
- package/dist/outputs-Bd2yZVjx.js +720 -0
- package/dist/outputs-CJoQBIA2.cjs +990 -0
- package/dist/pbkdf2-CIW-oWrm.cjs +1337 -0
- package/dist/pending-operation-B0_P78Jo.cjs +26 -0
- package/dist/pending-operation-BIS6mpjB.js +21 -0
- package/dist/providers-FjhM47BH.cjs +388 -0
- package/dist/providers-WtiSuxFu.js +365 -0
- package/dist/redacted-BmE2aXqr.js +81 -0
- package/dist/redacted-CRZJLS3w.cjs +86 -0
- package/dist/{retry-config-DC5IMaH7.cjs → retry-config-BaCfVC1H.cjs} +1 -1
- package/dist/{retry-config-BcUmMS--.js → retry-config-Dmgt28wM.js} +1 -1
- package/dist/safe-buffer-B_vMqJWU.js +43 -0
- package/dist/safe-buffer-DYOwEfHB.cjs +48 -0
- package/dist/sdk-Cb-gZnS9.js +1241 -0
- package/dist/sdk-DffwmX8b.cjs +1439 -0
- package/dist/sdk-init-Bln9rFtn.js +4138 -0
- package/dist/sdk-init-CYViTJY_.cjs +3841 -0
- package/dist/{seam-cardano-CATqBEyK.js → seam-cardano-B_etH4F4.js} +1 -1
- package/dist/{bytes.vo-TgiwogWF.js → secret-box-DUR0ACYz.js} +3 -25
- package/dist/{bytes.vo-Ck5u40RA.cjs → secret-box-DrjLZuS1.cjs} +1 -35
- package/dist/send-proof-progress-C-ljq1x5.js +30 -0
- package/dist/send-proof-progress-vmsaSfbz.cjs +47 -0
- package/dist/side-effects-BnqYz7Nl.js +768 -0
- package/dist/side-effects-CngaeXi0.cjs +804 -0
- package/dist/sign-bitcoin-transaction-with-seed-D4z62-jV.js +147 -0
- package/dist/sign-bitcoin-transaction-with-seed-DsLYXnCY.cjs +158 -0
- package/dist/signer-3fk8lZtE.cjs +7 -0
- package/dist/signer-CsL28DrK.cjs +121 -0
- package/dist/signer-DGluibtn.js +92 -0
- package/dist/signer-RqB5pu3K.js +2 -0
- package/dist/signer-factory-BA7WFJVZ.js +282 -0
- package/dist/signer-factory-Cwd6o-lG.cjs +281 -0
- package/dist/{signer-factory-9URFliA5.js → signer-factory-DObB55D4.js} +6 -3
- package/dist/signer-factory-DhZiE03y.cjs +149 -0
- package/dist/{signer-factory-BWGUmnvm.cjs → signer-factory-Ds6G2AZk.cjs} +4 -3
- package/dist/signer-factory-hzSRaIw2.js +148 -0
- package/dist/{slice-CuHUaPZx.cjs → slice-7G2xxYKJ.cjs} +3 -3
- package/dist/{slice-DZmQJNV8.cjs → slice-B4CdYoPu.cjs} +2 -2
- package/dist/slice-BPNuHKfw.js +9091 -0
- package/dist/{slice-DGcNrbPR.cjs → slice-Bg6HEr3K.cjs} +4 -4
- package/dist/{slice-DtaO72qY.cjs → slice-Bs2aMERu.cjs} +3 -3
- package/dist/{slice-HeHCv3bl.cjs → slice-C34iOOUH.cjs} +7 -7
- package/dist/{slice-Do2R2CYW.cjs → slice-C9TT5KhY.cjs} +6 -6
- package/dist/{slice-eIwcwKHI.js → slice-CK07EBCo.js} +4 -4
- package/dist/{slice-CnyWevM9.js → slice-CU80pbiu.js} +3 -3
- package/dist/{slice-CobanYgn.js → slice-CwyYrh1H.js} +2 -2
- package/dist/slice-Czfp6t84.cjs +436 -0
- package/dist/{slice-d0p6-xj5.js → slice-D-9aPKG-.js} +6 -6
- package/dist/{slice-maaskdUn.js → slice-DBpJ2QGf.js} +6 -6
- package/dist/{slice-mxLQ_FeY.cjs → slice-DTZTiJle.cjs} +352 -39
- package/dist/{slice-zJ9XVYjZ.js → slice-Da426sf9.js} +1 -1
- package/dist/{slice-D11m2EKl.cjs → slice-DayJvMRD.cjs} +1 -1
- package/dist/slice-DnBWfA-k.cjs +9109 -0
- package/dist/{slice-oqm_r1cS.cjs → slice-DnG-yvpI.cjs} +2 -2
- package/dist/{slice-BNu73oBa.js → slice-DyNs7oWp.js} +2 -2
- package/dist/{slice-CB4SnzMm.js → slice-GwiiJRoq.js} +3 -3
- package/dist/slice-oWnc7YVD.js +412 -0
- package/dist/{slice-B2PhoWAg.js → slice-qt0uBExh.js} +325 -37
- package/dist/slice-t8Gzj55G2.cjs +106 -0
- package/dist/slice-t8Q1cHm-.js +88 -0
- package/dist/src-BDzYIksE.cjs +20637 -0
- package/dist/src-BFoefPv_.js +20755 -0
- package/dist/store-B1Lq3cEf.cjs +66 -0
- package/dist/store-DuBG8qh5.js +37 -0
- package/dist/submit-Bs77dPn_.cjs +413 -0
- package/dist/submit-DOv8Z0Vf.js +336 -0
- package/dist/submit-bitcoin-tx-D6oYgH5S.js +983 -0
- package/dist/submit-bitcoin-tx-goFuRL7K.cjs +1049 -0
- package/dist/{sync-operation-utils-BYXLO80m.js → sync-operation-utils-31iFLExW.js} +2 -38
- package/dist/{sync-operation-utils-SdPbwFoD.cjs → sync-operation-utils-COIZ66-I.cjs} +1 -67
- package/dist/token-id-mapper-Bnds3xKH.cjs +18 -0
- package/dist/{token-id-mapper-DsPAL6Nh.cjs → token-id-mapper-CVyQJUKY.cjs} +2 -2
- package/dist/token-id-mapper-CnKHQ8DV.js +16 -0
- package/dist/{token-id-mapper-B2ivlLv3.js → token-id-mapper-D29Ggv8h.js} +2 -2
- package/dist/tokens-Cevp7rdU.cjs +62 -0
- package/dist/tokens-Diw4MLRM.js +44 -0
- package/dist/types-B8uiJn-X.js +12 -0
- package/dist/types-BHC12eSa.js +33 -0
- package/dist/types-CJT6XF2c.js +10 -0
- package/dist/types-CLRUYpfe.cjs +23 -0
- package/dist/types-Cc3mC8u0.cjs +50 -0
- package/dist/types-DWbVZpnF.cjs +15 -0
- package/dist/unwrap-provider-result-BZSiwabU.js +32 -0
- package/dist/unwrap-provider-result-ZqfBsTkk.cjs +39 -0
- package/dist/{util-CGzqQ8IV.cjs → util-Bu4W5lF4.cjs} +1 -1
- package/dist/{util-BaLzwa32.js → util-Cp5cZkfK.js} +1 -1
- package/dist/{utils-o8aMjfln.js → utils-BfBEUvWA.js} +2 -2
- package/dist/utils-DFwzEvbv.js +65 -0
- package/dist/{utils-5JvjbqH3.cjs → utils-DsElZgCI.cjs} +7 -1
- package/dist/utils-IXxR-Djh.cjs +112 -0
- package/dist/v8Signatures-CO_Uloy7.cjs +71 -0
- package/dist/{vote-delegation-tx-builder-BpEMSti4.cjs → vote-delegation-tx-builder-BUg1S2Ep.cjs} +6 -6
- package/dist/{vote-delegation-tx-builder-CmKv6GoG.js → vote-delegation-tx-builder-C6FiS7zI.js} +5 -5
- package/dist/watch-CUEvcP-V.js +21997 -0
- package/dist/watch-DMF2s-II.cjs +52281 -0
- package/package.json +96 -4
- package/dist/account-guards.stable-B1DSSh9D.cjs +0 -10
- package/dist/account-guards.stable-JRQ5qx2V.js +0 -5
- package/dist/codecs-B7X9pAsK.cjs +0 -1945
- package/dist/codecs-CC1Xjntz.js +0 -1882
- package/dist/init-Bv53hpLM.js +0 -19
- package/dist/init-CRbjI7p1.js +0 -3494
- package/dist/init-DAna1KCg.cjs +0 -3495
- package/dist/init-DGe47B22.cjs +0 -364
- package/dist/init-DMtyvYfC.cjs +0 -21
- package/dist/init-TkPDD750.js +0 -363
- package/dist/modules-cardano-BDvuL4Xx.js +0 -5248
- package/dist/modules-cardano-D2G3De2P.cjs +0 -5432
- package/dist/slice-CGVHXHDt.cjs +0 -125
- package/dist/slice-DhvF7L6X.js +0 -107
- /package/dist/{account-id.vo-LvCBVn5r.cjs → account-id.vo-DwqFjK5u.cjs} +0 -0
- /package/dist/{account-id.vo-MYSI7YFm.js → account-id.vo-OPz2v-JZ.js} +0 -0
- /package/dist/{actions-DdGbj7c7.cjs → actions-B2BJ4RTy.cjs} +0 -0
- /package/dist/{actions-9QSQR-GB.js → actions-iLXdgL5Y.js} +0 -0
- /package/dist/{apply-vkey-witnesses-ClZbpk5w.js → apply-vkey-witnesses-BKx3lcs0.js} +0 -0
- /package/dist/{apply-vkey-witnesses-CLzVSWxl.cjs → apply-vkey-witnesses-ZnFS0jnJ.cjs} +0 -0
- /package/dist/{asyncoption-Cw07zPH7.js → asyncoption-CruEYOBI.js} +0 -0
- /package/dist/{asyncoption-DYoGuQfP.cjs → asyncoption-i0VbqVTq.cjs} +0 -0
- /package/dist/{bignum.vo-B0rK_PQ1.js → bignum.vo-CEXOIew0.js} +0 -0
- /package/dist/{bignum.vo-DsG3kNiZ.cjs → bignum.vo-hx2kuqlA.cjs} +0 -0
- /package/dist/{bip32ed25519-1ApqeAZk.cjs → bip32ed25519-B7Yat217.cjs} +0 -0
- /package/dist/{bip32ed25519-DetAdGwD.js → bip32ed25519-FQ8qvdcq.js} +0 -0
- /package/dist/{blake2b-DOEVc57D.js → blake2b-BiQTw3GC.js} +0 -0
- /package/dist/{blake2b-B9tftbvG.cjs → blake2b-DEeVUdKR.cjs} +0 -0
- /package/dist/{blockchain-network-id.vo-BXpZhvvQ.cjs → blockchain-network-id.vo-BAKEwGjG.cjs} +0 -0
- /package/dist/{blockchain-network-id.vo-DNRkuT5B.js → blockchain-network-id.vo-CiVykuqG.js} +0 -0
- /package/dist/{blockingWithLatestFrom-C5wp_uA-.js → blockingWithLatestFrom-Cd8c8EPG.js} +0 -0
- /package/dist/{blockingWithLatestFrom-DY8OPg0w.cjs → blockingWithLatestFrom-D8kBPBMX.cjs} +0 -0
- /package/dist/{cardano-network-id-to-network-type-CrZfUcyP.js → cardano-network-id-to-network-type-BWwzeEtM.js} +0 -0
- /package/dist/{cardano-network-id-to-network-type-BDTF-HmK.cjs → cardano-network-id-to-network-type-C0ufJOyE.cjs} +0 -0
- /package/dist/{cardano-tx-id.vo-BPhV-AmZ.cjs → cardano-tx-id.vo-TLjJZHCI.cjs} +0 -0
- /package/dist/{cardano-tx-id.vo-DF9NzZXk.js → cardano-tx-id.vo-eVnKuzlm.js} +0 -0
- /package/dist/{composite-signer-factory-_46QsNBz.js → composite-signer-factory-CR8YHA1y.js} +0 -0
- /package/dist/{composite-signer-factory-BpF1mIYA.cjs → composite-signer-factory-m5cVs9h_.cjs} +0 -0
- /package/dist/{error-CNIquqT5.cjs → error-Cb3EnD0u.cjs} +0 -0
- /package/dist/{error-BCp9NkPi.js → error-DIZOY2Lw.js} +0 -0
- /package/dist/{esm-browser-C93Q-EOI.js → esm-browser-MG97cre9.js} +0 -0
- /package/dist/{esm-browser-DTc9IK3D.cjs → esm-browser-bweqfBlL.cjs} +0 -0
- /package/dist/{feature-flag-key.vo-ofrB6ZVQ.js → feature-flag-key.vo-DN_-4-sG.js} +0 -0
- /package/dist/{feature-flag-key.vo-BPz-ZAp6.cjs → feature-flag-key.vo-RlfHL3hq.cjs} +0 -0
- /package/dist/{first-state-of-status-OROkXcRv.cjs → first-state-of-status-CbT7hPa4.cjs} +0 -0
- /package/dist/{first-state-of-status-DQnMT3ya.js → first-state-of-status-unPynOuM.js} +0 -0
- /package/dist/{init-Es3wHW7D.js → init-829HRYcz.js} +0 -0
- /package/dist/{init-CKipPE_c.js → init-A-VyGSNW2.js} +0 -0
- /package/dist/{init-DFQQ9dTW.cjs → init-Atisw4x2.cjs} +0 -0
- /package/dist/{init-C5CEZ1m0.cjs → init-BFcvPHL-.cjs} +0 -0
- /package/dist/{init-IAk_CkGa.cjs → init-BgNobbNq.cjs} +0 -0
- /package/dist/{init-cqN3uX2j.js → init-atCFur0v.js} +0 -0
- /package/dist/{is-redux-persist-state-CTn3WZVh.cjs → is-redux-persist-state-BCFnSm36.cjs} +0 -0
- /package/dist/{is-redux-persist-state-Cxcd0_bM.js → is-redux-persist-state-yBfq0h_E.js} +0 -0
- /package/dist/{key-value-store-8cMzeNyG.js → key-value-store--W3SrMaw.js} +0 -0
- /package/dist/{key-value-store-DUAepXQf.cjs → key-value-store-C2Xt5Emp.cjs} +0 -0
- /package/dist/{repo-slice-WxetRhMY.cjs → repo-slice-7X4AYYVm.cjs} +0 -0
- /package/dist/{repo-slice-DwyMhCR1.js → repo-slice-RxFm0zDZ.js} +0 -0
- /package/dist/{reselect-CRDqmQY9.cjs → reselect-Bd94u0K-.cjs} +0 -0
- /package/dist/{reselect-C06X06oX.js → reselect-CGoLzEPv.js} +0 -0
- /package/dist/{serializable-B8GahgE1.js → serializable-BHdKIgk3.js} +0 -0
- /package/dist/{serializable-CRdnFaLZ.cjs → serializable-BxHkoPdk.cjs} +0 -0
- /package/dist/{slice-D11FHQuQ.cjs → slice-BiRsDKOK.cjs} +0 -0
- /package/dist/{slice-Be7hj4Iy.js → slice-Bk0Sv05J.js} +0 -0
- /package/dist/{slice-FioKeHtA.cjs → slice-Dqw1ecum.cjs} +0 -0
- /package/dist/{slice-B87b52iM.js → slice-obCSLm1x.js} +0 -0
- /package/dist/{src-vq1wS9sZ.js → src-BlxEp6Mm.js} +0 -0
- /package/dist/{src-BTPIvlDI.cjs → src-Cqp0B2M_.cjs} +0 -0
- /package/dist/{time.vo-CQ8pSXz2.cjs → time.vo-D3wWRw9L.cjs} +0 -0
- /package/dist/{time.vo-DkYYGYp6.js → time.vo-tNheinXm.js} +0 -0
- /package/dist/{toEmpty-CgAl3097.js → toEmpty-8Zax1MPd.js} +0 -0
- /package/dist/{toEmpty-DAMmNB5r.cjs → toEmpty-CYAbupM4.cjs} +0 -0
- /package/dist/{token-id.vo-ClsroxHO.js → token-id.vo-Bvwhr3ZE.js} +0 -0
- /package/dist/{token-id.vo-BxG9TG0O.cjs → token-id.vo-DXv5uS9n.cjs} +0 -0
- /package/dist/{util-DxzlYNS5.js → util-C8a4fA9p.js} +0 -0
- /package/dist/{util-CmdAhheh.cjs → util-CzeB3hfa.cjs} +0 -0
- /package/dist/{util-selector-CcK-GAdE.js → util-selector-BSTsxgne.js} +0 -0
- /package/dist/{util-selector-BcAncU4L.cjs → util-selector-BWPH68_l.cjs} +0 -0
- /package/dist/{while-active-BpppWuCs.js → while-active-B0lWy_6l.js} +0 -0
- /package/dist/{while-active-Dhc2LwOm.cjs → while-active-Dsowp0Fi.cjs} +0 -0
|
@@ -0,0 +1,1241 @@
|
|
|
1
|
+
import { n as import_buffer } from "./_polyfill-buffer-patch-yNxN4d5E.js";
|
|
2
|
+
import { a as util, r as Crypto } from "./seam-cardano-B_etH4F4.js";
|
|
3
|
+
import { t as SecretBox } from "./secret-box-DUR0ACYz.js";
|
|
4
|
+
import { n as HexBytes, t as ByteArray } from "./bytes.vo-BB7_4JK6.js";
|
|
5
|
+
import { t as IS_PARAMETERIZED } from "./util-selector-BSTsxgne.js";
|
|
6
|
+
import { i as selectModules } from "./util-C8a4fA9p.js";
|
|
7
|
+
import { a as inferStoreContext, i as inferModuleContext, n as combineContracts, r as inferContractContext, t as store_default$15 } from "./store-DuBG8qh5.js";
|
|
8
|
+
import { r as featuresSelectors, t as featuresActions } from "./slice-Bk0Sv05J.js";
|
|
9
|
+
import { t as Redacted } from "./redacted-BmE2aXqr.js";
|
|
10
|
+
import { t as FeatureFlagKey } from "./feature-flag-key.vo-DN_-4-sG.js";
|
|
11
|
+
import { r as analyticsSelectors, t as analyticsActions } from "./slice-DyNs7oWp.js";
|
|
12
|
+
import { i as networkSelectors, n as networkActions } from "./slice-GwiiJRoq.js";
|
|
13
|
+
import { n as walletsSelectors, t as walletsActions } from "./lace-context-BZciB9c7.js";
|
|
14
|
+
import { n as tokensActions, r as tokensSelectors } from "./slice-DBpJ2QGf.js";
|
|
15
|
+
import { r as activitiesSelectors, t as activitiesActions } from "./slice-D-9aPKG-.js";
|
|
16
|
+
import { r as addressesSelectors, t as addressesActions } from "./slice-CU80pbiu.js";
|
|
17
|
+
import { h as store_default$16, r as cardanoContextSelectors, t as cardanoContextActions } from "./slice-qt0uBExh.js";
|
|
18
|
+
import { n as FEATURE_FLAG_CARDANO } from "./const-BJfIK_G-.js";
|
|
19
|
+
import { r as viewsSelectors, t as viewsActions } from "./slice-BPNuHKfw.js";
|
|
20
|
+
import { t as setFeatureFlags } from "./actions-iLXdgL5Y.js";
|
|
21
|
+
import { contextLogger, isNotNil } from "@laceio/cardano/util";
|
|
22
|
+
import { NEVER, Subject, defaultIfEmpty, delay, distinctUntilChanged, filter, firstValueFrom, from, map, share, shareReplay, takeUntil } from "rxjs";
|
|
23
|
+
import { applyMiddleware, combineReducers, configureStore, createAction, isAnyOf } from "@reduxjs/toolkit";
|
|
24
|
+
import merge$1 from "lodash/merge.js";
|
|
25
|
+
import { combineEpics, createEpicMiddleware } from "redux-observable";
|
|
26
|
+
import { FLUSH, PAUSE, PERSIST, PURGE, REGISTER, REHYDRATE, persistReducer, persistStore } from "redux-persist";
|
|
27
|
+
import uniq from "lodash/uniq.js";
|
|
28
|
+
import { dummyLogger } from "ts-log";
|
|
29
|
+
//#region ../../packages/lib/core/src/encrypt-recovery-phrase.ts
|
|
30
|
+
/**
|
|
31
|
+
* SBV1 (Argon2id + ChaCha20-Poly1305) encryption of a mnemonic recovery phrase:
|
|
32
|
+
* encrypt the utf8 bytes of the space-joined words with the passphrase, returning
|
|
33
|
+
* hex. New wallets are sealed with SBV1; `SecretBox.open` still reads legacy
|
|
34
|
+
* EMIP-003 blobs through the `@lace-lib/vendor` seam (ADR 37/38).
|
|
35
|
+
*/
|
|
36
|
+
const encryptRecoveryPhrase = async (words, passphrase) => HexBytes.fromByteArray(await SecretBox.seal(ByteArray.fromUTF8(util.joinMnemonicWords(words)), passphrase));
|
|
37
|
+
//#endregion
|
|
38
|
+
//#region ../../packages/lib/core/src/value-objects/wallet-id.vo.ts
|
|
39
|
+
const WALLET_ID_BYTES = 16;
|
|
40
|
+
const doubleBlake2b128 = (inputHex) => {
|
|
41
|
+
const digest = Crypto.blake2b.hash(inputHex, WALLET_ID_BYTES);
|
|
42
|
+
return WalletId(Crypto.blake2b.hash(digest, WALLET_ID_BYTES));
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Types a string as a wallet identifier. It checks nothing; the `deriveFrom…`
|
|
46
|
+
* functions derive the identifier a wallet's keys give it.
|
|
47
|
+
*/
|
|
48
|
+
const WalletId = (walletId) => walletId;
|
|
49
|
+
/** Derive a walletId from an extended account public key (xpub). */
|
|
50
|
+
WalletId.deriveFromBip32PublicKey = (xpubHex) => doubleBlake2b128(xpubHex);
|
|
51
|
+
/**
|
|
52
|
+
* Derive a walletId from a hardware device's BIP-32 master key fingerprint
|
|
53
|
+
* (`xfpHex` — 8 hex chars / 4 bytes), domain-separated by `vendorTag` (the device
|
|
54
|
+
* family: `'ledger'`, `'trezor'`).
|
|
55
|
+
*
|
|
56
|
+
* The xfp identifies the master key itself, so it is invariant across derivation
|
|
57
|
+
* paths and across mainnet/testnet (whose account xpubs differ): one physical
|
|
58
|
+
* device is one wallet whichever network its open app served. The vendor tag is
|
|
59
|
+
* what keeps one seed restored onto two device families two wallets — the xfp
|
|
60
|
+
* alone is identical for both. Same double blake2b-128 as the xpub mints, so every
|
|
61
|
+
* id shares one 32-hex format and one collision domain.
|
|
62
|
+
*/
|
|
63
|
+
WalletId.deriveFromHardwareFingerprint = (vendorTag, xfpHex) => doubleBlake2b128(import_buffer.Buffer.from(`${vendorTag}:${xfpHex.toLowerCase()}`, "utf8").toString("hex"));
|
|
64
|
+
/** Derive a walletId from a mnemonic — the utf8 bytes of the space-joined words. */
|
|
65
|
+
WalletId.deriveFromMnemonic = (words) => doubleBlake2b128(import_buffer.Buffer.from(util.joinMnemonicWords(words), "utf8").toString("hex"));
|
|
66
|
+
//#endregion
|
|
67
|
+
//#region ../../packages/contract/module/src/redux-persist-storage.ts
|
|
68
|
+
/** The name of the contract a module implements to provide key-value storage. */
|
|
69
|
+
const STORAGE_CONTRACT_NAME = "storage-dependency";
|
|
70
|
+
/**
|
|
71
|
+
* Adapts a key-value storage factory to the redux-persist `Storage` interface,
|
|
72
|
+
* keeping persisted state in the `redux` collection.
|
|
73
|
+
*/
|
|
74
|
+
const createReduxPersistStorage = (keyValueStorageFactory) => {
|
|
75
|
+
const keyValueStorage = keyValueStorageFactory({ collectionId: "redux" });
|
|
76
|
+
return {
|
|
77
|
+
getItem: async (key) => firstValueFrom(keyValueStorage.getValues([key]).pipe(map(([value]) => value), defaultIfEmpty(void 0))),
|
|
78
|
+
removeItem: async (key) => firstValueFrom(keyValueStorage.setValue(key, void 0)),
|
|
79
|
+
setItem: async (key, value) => firstValueFrom(keyValueStorage.setValue(key, value))
|
|
80
|
+
};
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* Finds the module implementing the storage contract, initializes its store on
|
|
84
|
+
* its own and returns the key-value storage factory it provides.
|
|
85
|
+
*
|
|
86
|
+
* @throws Error when no module implements the storage contract or it provides no `createKeyValueStorage`.
|
|
87
|
+
*/
|
|
88
|
+
const findStorageModule = async (props, { logger, ...rest }) => {
|
|
89
|
+
const storageModule = props.modules.find((m) => m.implements.contracts.some((contract) => contract.name === STORAGE_CONTRACT_NAME));
|
|
90
|
+
if (!storageModule) throw new Error("No storage module found");
|
|
91
|
+
const storageModuleStore = await storageModule.store?.load();
|
|
92
|
+
if (!storageModuleStore) throw new Error(`Module '${storageModule.moduleName}' must implement 'createKeyValueStorage' in store sideEffectDependencies`);
|
|
93
|
+
const dependencies = {
|
|
94
|
+
...rest,
|
|
95
|
+
logger: contextLogger(contextLogger(logger, storageModule.moduleName), "redux-storage"),
|
|
96
|
+
reduxPersistStorage: {}
|
|
97
|
+
};
|
|
98
|
+
const keyValueStorageFactory = (await storageModuleStore.default({
|
|
99
|
+
...props,
|
|
100
|
+
loadModules: () => {
|
|
101
|
+
throw new Error("Storage module \"store\" cannot load other modules");
|
|
102
|
+
}
|
|
103
|
+
}, dependencies)).sideEffectDependencies?.createKeyValueStorage;
|
|
104
|
+
if (!keyValueStorageFactory) throw new Error(`Module '${storageModule.moduleName}' must implement 'createKeyValueStorage' in store sideEffectDependencies`);
|
|
105
|
+
return keyValueStorageFactory;
|
|
106
|
+
};
|
|
107
|
+
//#endregion
|
|
108
|
+
//#region ../../packages/contract/module/src/create-store.ts
|
|
109
|
+
const SERIALIZABLE_CHECK_WARN_AFTER_MS = 128;
|
|
110
|
+
const IMMUTABLE_CHECK_WARN_AFTER_MS = 256;
|
|
111
|
+
const createActionObservables = (action$, actions) => {
|
|
112
|
+
return Object.fromEntries(Object.entries(actions).map(([scope, actionCreators]) => [scope, Object.fromEntries(Object.entries(actionCreators).map(([actionCreatorName, actionCreator]) => [`${actionCreatorName}$`, action$.pipe(filter(isAnyOf(actionCreator)), share())]))]));
|
|
113
|
+
};
|
|
114
|
+
/**
|
|
115
|
+
* Maps scoped selectors to observables of the state, keyed `<selectorName>$`.
|
|
116
|
+
* A parameterized selector yields a function of its parameter instead of a
|
|
117
|
+
* value. Each observable emits on change and replays its latest value.
|
|
118
|
+
*/
|
|
119
|
+
const createStateObservables = (state$, selectors) => {
|
|
120
|
+
return Object.fromEntries(Object.entries(selectors).map(([scope, selectors]) => [scope, Object.fromEntries(Object.entries(selectors).map(([selectorName, selector]) => {
|
|
121
|
+
const selectorFunction = selector;
|
|
122
|
+
return [`${selectorName}$`, state$.pipe(map((state) => {
|
|
123
|
+
if (selectorFunction[IS_PARAMETERIZED] === true) return (parameter) => selectorFunction(state, parameter);
|
|
124
|
+
if (selectorFunction.length > 1) return (parameter) => selectorFunction(state, parameter);
|
|
125
|
+
return selectorFunction(state);
|
|
126
|
+
}), distinctUntilChanged(), shareReplay(1))];
|
|
127
|
+
}))]));
|
|
128
|
+
};
|
|
129
|
+
const rehydrateStore = async (store) => new Promise((resolve) => {
|
|
130
|
+
const persistor = persistStore(store, null, () => {
|
|
131
|
+
resolve(persistor);
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
const mergeStoreExports = (storeExports, getter) => merge$1({}, ...storeExports.map(getter).filter(isNotNil));
|
|
135
|
+
/**
|
|
136
|
+
* Builds the app's Redux store from every loaded module store: combines their
|
|
137
|
+
* reducers, middleware and side effects, rehydrates persisted slices, and
|
|
138
|
+
* starts the side effects.
|
|
139
|
+
*/
|
|
140
|
+
const createStore = async (createStoreProps, createStoreDependencies) => {
|
|
141
|
+
const { loadModules, runtime, lastEnhancer } = createStoreProps;
|
|
142
|
+
const { logger, reduxPersistStorage, sideEffectDependenciesOverride } = createStoreDependencies;
|
|
143
|
+
const stores = await loadModules("store");
|
|
144
|
+
const storeExports = await Promise.all(stores.map(async (s) => s.load().then(async (module) => module.default(createStoreProps, createStoreDependencies))));
|
|
145
|
+
const selectors = stores.map((s) => s.context.selectors).filter((selectors) => !!selectors).reduce(Object.assign, {});
|
|
146
|
+
const actions = stores.map((s) => s.context.actions).reduce(Object.assign, {});
|
|
147
|
+
const persistConfigs = mergeStoreExports(storeExports, (s) => s.persistConfig);
|
|
148
|
+
const preloadedState = mergeStoreExports(storeExports, (s) => s.preloadedState);
|
|
149
|
+
const reducer = combineReducers(Object.assign({}, ...storeExports.map((m) => m.reducers ? Object.fromEntries(Object.entries(m.reducers).map(([key, reducer]) => [key, key in persistConfigs ? persistReducer({
|
|
150
|
+
key,
|
|
151
|
+
storage: reduxPersistStorage,
|
|
152
|
+
...persistConfigs[key]
|
|
153
|
+
}, reducer) : reducer])) : void 0)));
|
|
154
|
+
const initialState = reducer(void 0, { type: "@@lace/initial-state-snapshot" });
|
|
155
|
+
const toEpic = (sideEffect) => (action$, state$, dependencies) => sideEffect(createActionObservables(action$, actions), createStateObservables(state$, selectors), dependencies).pipe(createStoreProps.noEpicDelay ? (a) => a : delay(0));
|
|
156
|
+
let actionObservables;
|
|
157
|
+
let stateObservables;
|
|
158
|
+
let state$ = null;
|
|
159
|
+
const captureObservables = (actions, state) => {
|
|
160
|
+
actionObservables = actions;
|
|
161
|
+
stateObservables = state;
|
|
162
|
+
return NEVER;
|
|
163
|
+
};
|
|
164
|
+
const rootEpic = combineEpics(...[...storeExports.flatMap(({ sideEffects }) => sideEffects).filter(isNotNil), captureObservables].map(toEpic), (_, stateObservable$) => {
|
|
165
|
+
state$ = stateObservable$;
|
|
166
|
+
return NEVER;
|
|
167
|
+
});
|
|
168
|
+
let persistor;
|
|
169
|
+
const defaultDependencies = {
|
|
170
|
+
actions,
|
|
171
|
+
selectors,
|
|
172
|
+
createKeyValueStorage: () => {
|
|
173
|
+
throw new Error("This must be overridden by storage module");
|
|
174
|
+
},
|
|
175
|
+
__getState: () => {
|
|
176
|
+
if (!state$) throw new Error("__getState() is not available during SideEffect initialization");
|
|
177
|
+
return state$.value;
|
|
178
|
+
},
|
|
179
|
+
flushPersistedState: () => from(persistor?.flush() ?? Promise.resolve()),
|
|
180
|
+
runtime,
|
|
181
|
+
logger,
|
|
182
|
+
loadModules
|
|
183
|
+
};
|
|
184
|
+
const epicMiddleware = createEpicMiddleware({ dependencies: Object.assign(defaultDependencies, ...storeExports.map(({ sideEffectDependencies }) => sideEffectDependencies), sideEffectDependenciesOverride ?? {}) });
|
|
185
|
+
const middleware = storeExports.map(({ middleware }) => middleware).filter(isNotNil).flat();
|
|
186
|
+
const store = configureStore({
|
|
187
|
+
reducer,
|
|
188
|
+
preloadedState,
|
|
189
|
+
devTools: createStoreProps.devTools || false,
|
|
190
|
+
middleware: (getDefaultMiddleware) => getDefaultMiddleware({
|
|
191
|
+
immutableCheck: { warnAfter: IMMUTABLE_CHECK_WARN_AFTER_MS },
|
|
192
|
+
serializableCheck: {
|
|
193
|
+
ignoredActions: [
|
|
194
|
+
"accountManagement/attemptAddAccount",
|
|
195
|
+
"accountManagement/attemptAddInMemoryWalletAccount",
|
|
196
|
+
"txExecutor/tx-phase-completed",
|
|
197
|
+
"sendFlow/processingResulted",
|
|
198
|
+
"cardanoContext/setProtocolParameters",
|
|
199
|
+
"cardanoContext/setEraSummaries",
|
|
200
|
+
"cardanoContext/setStakePoolsData",
|
|
201
|
+
"cardanoContext/setAccountUtxos",
|
|
202
|
+
FLUSH,
|
|
203
|
+
REHYDRATE,
|
|
204
|
+
PAUSE,
|
|
205
|
+
PERSIST,
|
|
206
|
+
PURGE,
|
|
207
|
+
REGISTER
|
|
208
|
+
],
|
|
209
|
+
warnAfter: SERIALIZABLE_CHECK_WARN_AFTER_MS
|
|
210
|
+
}
|
|
211
|
+
}),
|
|
212
|
+
enhancers: (getDefaultEnhancers) => {
|
|
213
|
+
const enhancers = getDefaultEnhancers().prepend([applyMiddleware(...middleware, epicMiddleware)]);
|
|
214
|
+
if (lastEnhancer) return enhancers.concat(lastEnhancer);
|
|
215
|
+
return enhancers;
|
|
216
|
+
}
|
|
217
|
+
});
|
|
218
|
+
if (Object.keys(persistConfigs)) persistor = await rehydrateStore(store);
|
|
219
|
+
const epicTeardown$ = new Subject();
|
|
220
|
+
epicMiddleware.run((...args) => rootEpic(...args).pipe(takeUntil(epicTeardown$)));
|
|
221
|
+
return {
|
|
222
|
+
store,
|
|
223
|
+
initialState,
|
|
224
|
+
teardown: () => {
|
|
225
|
+
epicTeardown$.next();
|
|
226
|
+
epicTeardown$.complete();
|
|
227
|
+
},
|
|
228
|
+
actionObservables,
|
|
229
|
+
stateObservables
|
|
230
|
+
};
|
|
231
|
+
};
|
|
232
|
+
//#endregion
|
|
233
|
+
//#region ../../packages/contract/module/src/create-module-loader.ts
|
|
234
|
+
const isStoreContract = (contract) => contract.contractType === "store";
|
|
235
|
+
/**
|
|
236
|
+
* Builds the single module formed by applying, once each, the mixins of every
|
|
237
|
+
* store contract the given modules implement or depend on as `zero-or-more`.
|
|
238
|
+
*/
|
|
239
|
+
const reduceMixinsModule = (modules) => {
|
|
240
|
+
return uniq(modules.flatMap((laceModule) => [...laceModule.implements.contracts, ...laceModule.dependsOn?.contracts.filter(({ instance }) => instance === "zero-or-more") || []])).filter(isStoreContract).map(({ mixin }) => mixin).filter(isNotNil).reduce((laceModule, mixin) => mixin(laceModule), {});
|
|
241
|
+
};
|
|
242
|
+
const parseLoadableKey = (loadableKey) => loadableKey.split(".");
|
|
243
|
+
const moduleOrAddonExport = (m, key) => {
|
|
244
|
+
const [moduleKey, addonKey] = parseLoadableKey(key);
|
|
245
|
+
const moduleValue = m[moduleKey];
|
|
246
|
+
if (addonKey) {
|
|
247
|
+
if (typeof moduleValue !== "object") return;
|
|
248
|
+
return moduleValue[addonKey];
|
|
249
|
+
}
|
|
250
|
+
return moduleValue;
|
|
251
|
+
};
|
|
252
|
+
/**
|
|
253
|
+
* Creates a {@link ModuleLoader} over the given modules and their contract
|
|
254
|
+
* mixins. Each loaded initializer receives the shared dependencies, a logger
|
|
255
|
+
* scoped to its module and key, and a nested loader of its own.
|
|
256
|
+
*/
|
|
257
|
+
const createModuleLoader = (props, { logger, ...rest }) => {
|
|
258
|
+
const { modules } = props;
|
|
259
|
+
const loadModule = async (m, key) => {
|
|
260
|
+
if (!m) return;
|
|
261
|
+
const dependencies = {
|
|
262
|
+
...rest,
|
|
263
|
+
logger: contextLogger(contextLogger(logger, m.moduleName), key.replace("load", ""))
|
|
264
|
+
};
|
|
265
|
+
const exportValue = moduleOrAddonExport(m, key);
|
|
266
|
+
if (typeof exportValue === "function") {
|
|
267
|
+
const defaultExport = (await exportValue()).default;
|
|
268
|
+
if (typeof defaultExport === "function") return defaultExport({
|
|
269
|
+
...props,
|
|
270
|
+
loadModules: createModuleLoader(props, dependencies)
|
|
271
|
+
}, dependencies);
|
|
272
|
+
return defaultExport;
|
|
273
|
+
} else return exportValue;
|
|
274
|
+
};
|
|
275
|
+
const mixinsAndModules = [reduceMixinsModule(modules), ...modules];
|
|
276
|
+
return async (key) => {
|
|
277
|
+
return (await Promise.all(mixinsAndModules.map(async (m) => loadModule(m, key)))).filter(isNotNil);
|
|
278
|
+
};
|
|
279
|
+
};
|
|
280
|
+
//#endregion
|
|
281
|
+
//#region ../../packages/contract/module/src/value-objects/module-name.vo.ts
|
|
282
|
+
/** Types a string as a module's name, the `moduleName` it declares. It checks nothing. */
|
|
283
|
+
const ModuleName = (moduleName) => moduleName;
|
|
284
|
+
//#endregion
|
|
285
|
+
//#region ../../packages/contract/module/src/value-objects/contract-name.vo.ts
|
|
286
|
+
/** Types a string as a contract's name. It checks nothing. */
|
|
287
|
+
const ContractName = (moduleKind) => moduleKind;
|
|
288
|
+
//#endregion
|
|
289
|
+
//#region ../../packages/contract/module/src/util-mixin.ts
|
|
290
|
+
/**
|
|
291
|
+
* Combines a module's store with a contract mixin's store. Reducers,
|
|
292
|
+
* middleware, side effects, persist config, preloaded state, selectors and
|
|
293
|
+
* actions of both are merged; the mixin's entries win on a key clash.
|
|
294
|
+
*/
|
|
295
|
+
const combineStore = (module, mixinStore) => {
|
|
296
|
+
const combinedStoreInit = (mixinStoreInit, moduleStoreInit) => async (props, dependencies) => {
|
|
297
|
+
const loadedModuleStore = await moduleStoreInit?.default(props, dependencies);
|
|
298
|
+
const loadedMixinStore = await mixinStoreInit.default(props, dependencies);
|
|
299
|
+
return {
|
|
300
|
+
middleware: uniq([...loadedModuleStore?.middleware || [], ...loadedMixinStore.middleware || []]),
|
|
301
|
+
reducers: {
|
|
302
|
+
...loadedModuleStore?.reducers,
|
|
303
|
+
...loadedMixinStore.reducers
|
|
304
|
+
},
|
|
305
|
+
persistConfig: {
|
|
306
|
+
...loadedModuleStore?.persistConfig,
|
|
307
|
+
...loadedMixinStore.persistConfig
|
|
308
|
+
},
|
|
309
|
+
preloadedState: {
|
|
310
|
+
...loadedModuleStore?.preloadedState,
|
|
311
|
+
...loadedMixinStore.preloadedState
|
|
312
|
+
},
|
|
313
|
+
sideEffectDependencies: {
|
|
314
|
+
...loadedModuleStore?.sideEffectDependencies,
|
|
315
|
+
...loadedMixinStore.sideEffectDependencies
|
|
316
|
+
},
|
|
317
|
+
sideEffects: uniq([...loadedModuleStore?.sideEffects || [], ...loadedMixinStore.sideEffects || []])
|
|
318
|
+
};
|
|
319
|
+
};
|
|
320
|
+
return {
|
|
321
|
+
load: async () => {
|
|
322
|
+
const moduleStoreInit = await module.store?.load();
|
|
323
|
+
return { default: combinedStoreInit(await mixinStore.load(), moduleStoreInit) };
|
|
324
|
+
},
|
|
325
|
+
context: {
|
|
326
|
+
actions: {
|
|
327
|
+
...module.store?.context.actions,
|
|
328
|
+
...mixinStore.context.actions
|
|
329
|
+
},
|
|
330
|
+
selectors: Object.assign({}, module.store?.context.selectors, mixinStore.context.selectors)
|
|
331
|
+
}
|
|
332
|
+
};
|
|
333
|
+
};
|
|
334
|
+
/**
|
|
335
|
+
* Creates a contract mixin: a function that patches every module implementing
|
|
336
|
+
* the contract with the properties `patchModule` returns.
|
|
337
|
+
*/
|
|
338
|
+
const createMixin = (patchModule) => (laceModule) => ({
|
|
339
|
+
...laceModule,
|
|
340
|
+
addons: laceModule.addons || {},
|
|
341
|
+
...patchModule(laceModule)
|
|
342
|
+
});
|
|
343
|
+
//#endregion
|
|
344
|
+
//#region ../../packages/contract/storage/src/contract.ts
|
|
345
|
+
/**
|
|
346
|
+
* The contract a storage module implements: it gives every module's side
|
|
347
|
+
* effects `createDocumentStorage` and `createCollectionStorage`, backed by
|
|
348
|
+
* the platform's storage. A wallet loads one storage module; with two,
|
|
349
|
+
* `createLaceWallet` fails with `MultipleImplementationsError`.
|
|
350
|
+
*/
|
|
351
|
+
const storageDependencyContract = inferContractContext({
|
|
352
|
+
contractType: "sideEffectDependency",
|
|
353
|
+
name: ContractName("storage-dependency"),
|
|
354
|
+
instance: "exactly-one"
|
|
355
|
+
});
|
|
356
|
+
//#endregion
|
|
357
|
+
//#region ../../packages/contract/feature/src/store/index.ts
|
|
358
|
+
var store_default$14 = inferStoreContext({
|
|
359
|
+
load: async () => import("./init-NCjgwCZy.js"),
|
|
360
|
+
context: {
|
|
361
|
+
actions: featuresActions,
|
|
362
|
+
selectors: featuresSelectors
|
|
363
|
+
}
|
|
364
|
+
});
|
|
365
|
+
//#endregion
|
|
366
|
+
//#region ../../packages/contract/feature/src/contract.ts
|
|
367
|
+
const featureDependencyContract = inferContractContext({
|
|
368
|
+
contractType: "sideEffectDependency",
|
|
369
|
+
name: ContractName("feature-dependency"),
|
|
370
|
+
instance: "exactly-one"
|
|
371
|
+
});
|
|
372
|
+
inferContractContext({
|
|
373
|
+
contractType: "sideEffectDependency",
|
|
374
|
+
name: ContractName("feature-flag-refresh-trigger-dependency"),
|
|
375
|
+
instance: "exactly-one"
|
|
376
|
+
});
|
|
377
|
+
const featureStoreContract = inferContractContext({
|
|
378
|
+
contractType: "store",
|
|
379
|
+
name: ContractName("feature-store"),
|
|
380
|
+
instance: "exactly-one",
|
|
381
|
+
dependsOn: combineContracts([storageDependencyContract]),
|
|
382
|
+
mixin: createMixin((laceModule) => ({ store: combineStore(laceModule, store_default$14) }))
|
|
383
|
+
});
|
|
384
|
+
//#endregion
|
|
385
|
+
//#region ../../packages/contract/analytics/src/store/index.ts
|
|
386
|
+
var store_default$13 = inferStoreContext({
|
|
387
|
+
load: async () => import("./init-CNM5m7M2.js"),
|
|
388
|
+
context: {
|
|
389
|
+
actions: analyticsActions,
|
|
390
|
+
selectors: analyticsSelectors
|
|
391
|
+
}
|
|
392
|
+
});
|
|
393
|
+
//#endregion
|
|
394
|
+
//#region ../../packages/contract/analytics/src/contract.ts
|
|
395
|
+
const analyticsProviderDependencyContract = inferContractContext({
|
|
396
|
+
contractType: "sideEffectDependency",
|
|
397
|
+
name: ContractName("analytics-provider-dependency"),
|
|
398
|
+
instance: "exactly-one"
|
|
399
|
+
});
|
|
400
|
+
const analyticsStoreContract = inferContractContext({
|
|
401
|
+
contractType: "store",
|
|
402
|
+
name: ContractName("analytics-store"),
|
|
403
|
+
instance: "exactly-one",
|
|
404
|
+
dependsOn: combineContracts([analyticsProviderDependencyContract, featureStoreContract]),
|
|
405
|
+
mixin: createMixin((laceModule) => ({ store: combineStore(laceModule, store_default$13) }))
|
|
406
|
+
});
|
|
407
|
+
//#endregion
|
|
408
|
+
//#region ../../packages/contract/failures/src/contract.ts
|
|
409
|
+
const failuresStoreContract = inferContractContext({
|
|
410
|
+
name: ContractName("failures-store"),
|
|
411
|
+
contractType: "store",
|
|
412
|
+
instance: "exactly-one",
|
|
413
|
+
dependsOn: combineContracts([analyticsStoreContract]),
|
|
414
|
+
mixin: createMixin((laceModule) => ({ store: combineStore(laceModule, store_default$15) }))
|
|
415
|
+
});
|
|
416
|
+
//#endregion
|
|
417
|
+
//#region ../../packages/contract/network/src/store/index.ts
|
|
418
|
+
var store_default$12 = inferStoreContext({
|
|
419
|
+
load: async () => import("./init-Fw89ZmrR.js"),
|
|
420
|
+
context: {
|
|
421
|
+
actions: networkActions,
|
|
422
|
+
selectors: networkSelectors
|
|
423
|
+
}
|
|
424
|
+
});
|
|
425
|
+
//#endregion
|
|
426
|
+
//#region ../../packages/contract/network/src/contract.ts
|
|
427
|
+
const networkStoreContract = inferContractContext({
|
|
428
|
+
name: ContractName("network-store"),
|
|
429
|
+
contractType: "store",
|
|
430
|
+
instance: "exactly-one",
|
|
431
|
+
dependsOn: combineContracts([featureStoreContract]),
|
|
432
|
+
mixin: createMixin((laceModule) => ({ store: combineStore(laceModule, store_default$12) }))
|
|
433
|
+
});
|
|
434
|
+
//#endregion
|
|
435
|
+
//#region ../../packages/contract/wallet-repo/src/store/index.ts
|
|
436
|
+
var store_default$11 = inferStoreContext({
|
|
437
|
+
load: async () => import("./init-BJn-8_hf.js"),
|
|
438
|
+
context: {
|
|
439
|
+
actions: walletsActions,
|
|
440
|
+
selectors: walletsSelectors
|
|
441
|
+
}
|
|
442
|
+
});
|
|
443
|
+
//#endregion
|
|
444
|
+
//#region ../../packages/contract/wallet-repo/src/contract.ts
|
|
445
|
+
/**
|
|
446
|
+
* Store contract for the wallet repository: the persisted `wallets` state
|
|
447
|
+
* holding every wallet, its accounts and the active account. Exactly one
|
|
448
|
+
* module provides it; it depends on the network store.
|
|
449
|
+
*/
|
|
450
|
+
const walletRepoStoreContract = inferContractContext({
|
|
451
|
+
contractType: "store",
|
|
452
|
+
name: ContractName("wallet-repo-store"),
|
|
453
|
+
instance: "exactly-one",
|
|
454
|
+
dependsOn: combineContracts([networkStoreContract]),
|
|
455
|
+
mixin: createMixin((laceModule) => ({ store: combineStore(laceModule, store_default$11) }))
|
|
456
|
+
});
|
|
457
|
+
inferContractContext({
|
|
458
|
+
name: ContractName("request-hw-connection-addon"),
|
|
459
|
+
instance: "exactly-one",
|
|
460
|
+
contractType: "addon",
|
|
461
|
+
provides: { addons: ["loadRequestHWConnections"] }
|
|
462
|
+
});
|
|
463
|
+
inferContractContext({
|
|
464
|
+
name: ContractName("search-hw-devices-addon"),
|
|
465
|
+
instance: "zero-or-more",
|
|
466
|
+
contractType: "addon",
|
|
467
|
+
provides: { addons: ["loadSearchHWDevices"] }
|
|
468
|
+
});
|
|
469
|
+
inferContractContext({
|
|
470
|
+
name: ContractName("wallet-identity-addon"),
|
|
471
|
+
instance: "zero-or-more",
|
|
472
|
+
contractType: "addon",
|
|
473
|
+
preloadInServiceWorker: true,
|
|
474
|
+
provides: { addons: ["loadWalletIdentity"] }
|
|
475
|
+
});
|
|
476
|
+
//#endregion
|
|
477
|
+
//#region ../../packages/contract/wallet-repo/src/wallet-type.ts
|
|
478
|
+
/** The kinds of wallet the wallet repository holds, by who manages their keys. */
|
|
479
|
+
let WalletType = /* @__PURE__ */ function(WalletType) {
|
|
480
|
+
/**
|
|
481
|
+
* Keys are held by the wallet: it stores its recovery phrase encrypted under
|
|
482
|
+
* the app's authentication secret, such as a password the user chooses.
|
|
483
|
+
* A wallet imported without its recovery phrase stores none.
|
|
484
|
+
*/
|
|
485
|
+
WalletType["InMemory"] = "InMemory";
|
|
486
|
+
/**
|
|
487
|
+
* Keys, and the seed they derive from, are never stored. The wallet holds
|
|
488
|
+
* only public keys, and a vault module signs for it, reaching the seed for
|
|
489
|
+
* each signature wherever the app keeps it.
|
|
490
|
+
*/
|
|
491
|
+
WalletType["LazyInMemory"] = "LazyInMemory";
|
|
492
|
+
/**
|
|
493
|
+
* Keys are managed by an external Ledger device
|
|
494
|
+
*/
|
|
495
|
+
WalletType["HardwareLedger"] = "HardwareLedger";
|
|
496
|
+
/**
|
|
497
|
+
* Keys are managed by an external Trezor device
|
|
498
|
+
*/
|
|
499
|
+
WalletType["HardwareTrezor"] = "HardwareTrezor";
|
|
500
|
+
/**
|
|
501
|
+
* Keys are managed by an external Cardano Seed Signer device.
|
|
502
|
+
* Like other hardware wallets, the wallet stores only its public keys and
|
|
503
|
+
* the device signs; it also stores the device master fingerprint (xfp) so
|
|
504
|
+
* signing requests can target the right device seed.
|
|
505
|
+
*/
|
|
506
|
+
WalletType["HardwareSeedSigner"] = "HardwareSeedSigner";
|
|
507
|
+
/**
|
|
508
|
+
* Keys are managed by an external Keystone device.
|
|
509
|
+
* Like other hardware wallets, the wallet stores only its public keys and
|
|
510
|
+
* the device signs; the device communicates exclusively over QR codes and is
|
|
511
|
+
* identified by its BIP-32 master fingerprint (xfp) so signing requests can
|
|
512
|
+
* target the right device seed.
|
|
513
|
+
*/
|
|
514
|
+
WalletType["HardwareKeystone"] = "HardwareKeystone";
|
|
515
|
+
/**
|
|
516
|
+
* Requires more than 1 set of keys to spend from this wallet.
|
|
517
|
+
* Some (or all) co-signers are other wallet (InMemory/Hardware)
|
|
518
|
+
* accounts from this repository.
|
|
519
|
+
*/
|
|
520
|
+
WalletType["MultiSig"] = "MultiSig";
|
|
521
|
+
/** A Cardano script account. */
|
|
522
|
+
WalletType["CardanoCustody"] = "CardanoCustody";
|
|
523
|
+
return WalletType;
|
|
524
|
+
}({});
|
|
525
|
+
//#endregion
|
|
526
|
+
//#region ../../packages/contract/activities/src/store/index.ts
|
|
527
|
+
var store_default$10 = inferStoreContext({
|
|
528
|
+
load: async () => import("./init-0zzs9aqU.js"),
|
|
529
|
+
context: {
|
|
530
|
+
actions: activitiesActions,
|
|
531
|
+
selectors: activitiesSelectors
|
|
532
|
+
}
|
|
533
|
+
});
|
|
534
|
+
//#endregion
|
|
535
|
+
//#region ../../packages/contract/activities/src/contract.ts
|
|
536
|
+
const activitiesStoreContract = inferContractContext({
|
|
537
|
+
name: ContractName("activities-store"),
|
|
538
|
+
contractType: "store",
|
|
539
|
+
instance: "exactly-one",
|
|
540
|
+
dependsOn: combineContracts([failuresStoreContract]),
|
|
541
|
+
mixin: createMixin((laceModule) => ({ store: combineStore(laceModule, store_default$10) }))
|
|
542
|
+
});
|
|
543
|
+
//#endregion
|
|
544
|
+
//#region ../../packages/contract/addresses/src/store/index.ts
|
|
545
|
+
var store_default$9 = inferStoreContext({
|
|
546
|
+
load: async () => import("./init-C8URA2OX.js"),
|
|
547
|
+
context: {
|
|
548
|
+
actions: addressesActions,
|
|
549
|
+
selectors: addressesSelectors
|
|
550
|
+
}
|
|
551
|
+
});
|
|
552
|
+
//#endregion
|
|
553
|
+
//#region ../../packages/contract/addresses/src/contract.ts
|
|
554
|
+
const addressesStoreContract = inferContractContext({
|
|
555
|
+
name: ContractName("addresses-store"),
|
|
556
|
+
contractType: "store",
|
|
557
|
+
mixin: createMixin((laceModule) => ({ store: combineStore(laceModule, store_default$9) })),
|
|
558
|
+
instance: "at-least-one"
|
|
559
|
+
});
|
|
560
|
+
inferContractContext({
|
|
561
|
+
name: ContractName("addresses-alias-resolver-addon"),
|
|
562
|
+
instance: "zero-or-more",
|
|
563
|
+
contractType: "addon",
|
|
564
|
+
preloadInServiceWorker: true,
|
|
565
|
+
provides: { addons: ["loadAddressAliasResolver"] }
|
|
566
|
+
});
|
|
567
|
+
//#endregion
|
|
568
|
+
//#region ../../packages/contract/sync/src/contract.ts
|
|
569
|
+
const syncStoreContract = inferContractContext({
|
|
570
|
+
name: ContractName("sync-store"),
|
|
571
|
+
contractType: "store",
|
|
572
|
+
instance: "at-least-one",
|
|
573
|
+
mixin: createMixin((laceModule) => ({ store: combineStore(laceModule, store_default$16) }))
|
|
574
|
+
});
|
|
575
|
+
//#endregion
|
|
576
|
+
//#region ../../packages/contract/tokens/src/store/index.ts
|
|
577
|
+
var store_default$8 = inferStoreContext({
|
|
578
|
+
load: async () => import("./init-Dnsv155v.js"),
|
|
579
|
+
context: {
|
|
580
|
+
actions: tokensActions,
|
|
581
|
+
selectors: tokensSelectors
|
|
582
|
+
}
|
|
583
|
+
});
|
|
584
|
+
//#endregion
|
|
585
|
+
//#region ../../packages/contract/tokens/src/contract.ts
|
|
586
|
+
const tokensStoreContract = inferContractContext({
|
|
587
|
+
name: ContractName("tokens-store"),
|
|
588
|
+
contractType: "store",
|
|
589
|
+
dependsOn: combineContracts([storageDependencyContract]),
|
|
590
|
+
mixin: createMixin((laceModule) => ({ store: combineStore(laceModule, store_default$8) })),
|
|
591
|
+
instance: "at-least-one"
|
|
592
|
+
});
|
|
593
|
+
//#endregion
|
|
594
|
+
//#region ../../packages/contract/cardano-context/src/store/index.ts
|
|
595
|
+
var store_default$7 = inferStoreContext({
|
|
596
|
+
load: async () => import("./init-Cigr_tKx.js"),
|
|
597
|
+
context: {
|
|
598
|
+
actions: cardanoContextActions,
|
|
599
|
+
selectors: cardanoContextSelectors
|
|
600
|
+
}
|
|
601
|
+
});
|
|
602
|
+
//#endregion
|
|
603
|
+
//#region ../../packages/contract/views/src/store/index.ts
|
|
604
|
+
var store_default$6 = inferStoreContext({
|
|
605
|
+
load: async () => import("./init-kEfUTuG2.js"),
|
|
606
|
+
context: {
|
|
607
|
+
actions: viewsActions,
|
|
608
|
+
selectors: viewsSelectors
|
|
609
|
+
}
|
|
610
|
+
});
|
|
611
|
+
//#endregion
|
|
612
|
+
//#region ../../packages/contract/views/src/ui-addon-contracts.ts
|
|
613
|
+
const initializeExtensionViewAddonContract = inferContractContext({
|
|
614
|
+
name: ContractName("initialize-extension-view-addon"),
|
|
615
|
+
instance: "zero-or-more",
|
|
616
|
+
contractType: "addon",
|
|
617
|
+
provides: { addons: ["loadInitializeExtensionView"] }
|
|
618
|
+
});
|
|
619
|
+
const initializeMobileViewAddonContract = inferContractContext({
|
|
620
|
+
name: ContractName("initialize-mobile-view-addon"),
|
|
621
|
+
instance: "zero-or-more",
|
|
622
|
+
contractType: "addon",
|
|
623
|
+
provides: { addons: ["loadInitializeMobileView"] }
|
|
624
|
+
});
|
|
625
|
+
const renderRootAddonContract = inferContractContext({
|
|
626
|
+
name: ContractName("render-root-addon"),
|
|
627
|
+
instance: "zero-or-more",
|
|
628
|
+
contractType: "addon",
|
|
629
|
+
provides: { addons: ["renderRoot"] }
|
|
630
|
+
});
|
|
631
|
+
const stackPagesAddonContract = inferContractContext({
|
|
632
|
+
name: ContractName("stack-pages-addon"),
|
|
633
|
+
instance: "zero-or-more",
|
|
634
|
+
contractType: "addon",
|
|
635
|
+
provides: { addons: ["loadStackPages"] }
|
|
636
|
+
});
|
|
637
|
+
const tabPagesAddonContract = inferContractContext({
|
|
638
|
+
name: ContractName("tab-pages-addon"),
|
|
639
|
+
instance: "zero-or-more",
|
|
640
|
+
contractType: "addon",
|
|
641
|
+
provides: { addons: ["loadTabPages"] }
|
|
642
|
+
});
|
|
643
|
+
inferContractContext({
|
|
644
|
+
name: ContractName("global-overlays-addon"),
|
|
645
|
+
instance: "zero-or-more",
|
|
646
|
+
contractType: "addon",
|
|
647
|
+
provides: { addons: ["loadGlobalOverlays"] }
|
|
648
|
+
});
|
|
649
|
+
const sheetPagesAddonContract = inferContractContext({
|
|
650
|
+
name: ContractName("sheet-pages-addon"),
|
|
651
|
+
instance: "zero-or-more",
|
|
652
|
+
contractType: "addon",
|
|
653
|
+
provides: { addons: ["loadSheetPages"] }
|
|
654
|
+
});
|
|
655
|
+
inferContractContext({
|
|
656
|
+
name: ContractName("load-deep-links-addon"),
|
|
657
|
+
instance: "exactly-one",
|
|
658
|
+
contractType: "addon",
|
|
659
|
+
provides: { addons: ["loadMobileDeepLinks"] }
|
|
660
|
+
});
|
|
661
|
+
//#endregion
|
|
662
|
+
//#region ../../packages/contract/views/src/ui-addon-dependencies.ts
|
|
663
|
+
/**
|
|
664
|
+
* The UI addon contracts the views store depends on, in its dependency
|
|
665
|
+
* order.
|
|
666
|
+
*/
|
|
667
|
+
const viewsUiAddonDependencies = [
|
|
668
|
+
initializeExtensionViewAddonContract,
|
|
669
|
+
initializeMobileViewAddonContract,
|
|
670
|
+
tabPagesAddonContract,
|
|
671
|
+
stackPagesAddonContract,
|
|
672
|
+
renderRootAddonContract,
|
|
673
|
+
sheetPagesAddonContract
|
|
674
|
+
];
|
|
675
|
+
//#endregion
|
|
676
|
+
//#region ../../packages/contract/views/src/contract.ts
|
|
677
|
+
const viewsStoreContract = inferContractContext({
|
|
678
|
+
name: ContractName("views-store"),
|
|
679
|
+
instance: "exactly-one",
|
|
680
|
+
contractType: "store",
|
|
681
|
+
dependsOn: combineContracts([analyticsStoreContract, ...viewsUiAddonDependencies]),
|
|
682
|
+
mixin: createMixin((laceModule) => ({ store: combineStore(laceModule, store_default$6) }))
|
|
683
|
+
});
|
|
684
|
+
/** Direct import of this is an anti-pattern. OK for tests. */
|
|
685
|
+
const appActions = { app: { reloadApplication: createAction("app/reloadApplication") } };
|
|
686
|
+
const uiActions = { ui: {
|
|
687
|
+
showToast: createAction("ui/showToast"),
|
|
688
|
+
hideToast: createAction("ui/hideToast")
|
|
689
|
+
} };
|
|
690
|
+
//#endregion
|
|
691
|
+
//#region ../../packages/contract/app/src/store/index.ts
|
|
692
|
+
var store_default$5 = inferStoreContext({
|
|
693
|
+
load: async () => import("./init-C2RgrfZe.js"),
|
|
694
|
+
context: { actions: {
|
|
695
|
+
...appActions,
|
|
696
|
+
...uiActions
|
|
697
|
+
} }
|
|
698
|
+
});
|
|
699
|
+
inferContractContext({
|
|
700
|
+
name: ContractName("profile-dropdown-wallets-addon"),
|
|
701
|
+
contractType: "addon",
|
|
702
|
+
instance: "zero-or-more",
|
|
703
|
+
provides: { addons: ["loadProfileDropdownWalletsUICustomisations", "loadProfileDropdownMenuItemUICustomisations"] }
|
|
704
|
+
});
|
|
705
|
+
inferContractContext({
|
|
706
|
+
name: ContractName("blockchain-specific-app-customizations-addon"),
|
|
707
|
+
instance: "zero-or-more",
|
|
708
|
+
contractType: "addon",
|
|
709
|
+
provides: { addons: [
|
|
710
|
+
"loadAccountUICustomisations",
|
|
711
|
+
"loadReceiveSheetAddressDataCustomisations",
|
|
712
|
+
"loadTokenDetailsUICustomisations",
|
|
713
|
+
"loadPortfolioBannerUICustomisations",
|
|
714
|
+
"loadAboutPageUICustomisations"
|
|
715
|
+
] }
|
|
716
|
+
});
|
|
717
|
+
inferContractContext({
|
|
718
|
+
name: ContractName("token-details-ui-customisations-addon"),
|
|
719
|
+
instance: "zero-or-more",
|
|
720
|
+
contractType: "addon",
|
|
721
|
+
provides: { addons: ["loadTokenDetailsUICustomisations"] }
|
|
722
|
+
});
|
|
723
|
+
inferContractContext({
|
|
724
|
+
name: ContractName("portfolio-announcements-addon"),
|
|
725
|
+
instance: "zero-or-more",
|
|
726
|
+
contractType: "addon",
|
|
727
|
+
provides: { addons: ["loadPortfolioAnnouncements"] }
|
|
728
|
+
});
|
|
729
|
+
inferContractContext({
|
|
730
|
+
name: ContractName("blockchain-specific-app-settings-page-customizations-addon"),
|
|
731
|
+
instance: "zero-or-more",
|
|
732
|
+
contractType: "addon",
|
|
733
|
+
provides: { addons: ["loadSettingsPageUICustomisations"] }
|
|
734
|
+
});
|
|
735
|
+
inferContractContext({
|
|
736
|
+
name: ContractName("dialogs-addon"),
|
|
737
|
+
instance: "zero-or-more",
|
|
738
|
+
contractType: "addon",
|
|
739
|
+
provides: { addons: ["loadDialogs"] }
|
|
740
|
+
});
|
|
741
|
+
inferContractContext({
|
|
742
|
+
name: ContractName("account-ui-customisation-addon"),
|
|
743
|
+
instance: "zero-or-more",
|
|
744
|
+
contractType: "addon",
|
|
745
|
+
provides: { addons: ["loadAccountUICustomisations"] }
|
|
746
|
+
});
|
|
747
|
+
inferContractContext({
|
|
748
|
+
name: ContractName("send-flow-sheet-ui-customisation-addon"),
|
|
749
|
+
instance: "zero-or-more",
|
|
750
|
+
contractType: "addon",
|
|
751
|
+
provides: { addons: ["loadSendFlowSheetUICustomisations"] }
|
|
752
|
+
});
|
|
753
|
+
//#endregion
|
|
754
|
+
//#region ../../packages/contract/app/src/ui-addon-dependencies.ts
|
|
755
|
+
/**
|
|
756
|
+
* The UI addon contracts the app store depends on, in its dependency
|
|
757
|
+
* order.
|
|
758
|
+
*/
|
|
759
|
+
const appUiAddonDependencies = [
|
|
760
|
+
inferContractContext({
|
|
761
|
+
name: ContractName("app-context-initialization-addon"),
|
|
762
|
+
instance: "zero-or-more",
|
|
763
|
+
contractType: "addon",
|
|
764
|
+
preloadInServiceWorker: true,
|
|
765
|
+
provides: { addons: ["loadInitializeAppContext"] }
|
|
766
|
+
}),
|
|
767
|
+
inferContractContext({
|
|
768
|
+
name: ContractName("app-menu-items-addon"),
|
|
769
|
+
instance: "zero-or-more",
|
|
770
|
+
contractType: "addon",
|
|
771
|
+
provides: { addons: ["loadAppMenuItems"] }
|
|
772
|
+
}),
|
|
773
|
+
inferContractContext({
|
|
774
|
+
name: ContractName("tab-menu-items-addon"),
|
|
775
|
+
instance: "zero-or-more",
|
|
776
|
+
contractType: "addon",
|
|
777
|
+
provides: { addons: ["loadTabMenuItems"] }
|
|
778
|
+
})
|
|
779
|
+
];
|
|
780
|
+
//#endregion
|
|
781
|
+
//#region ../../packages/contract/app/src/contract.ts
|
|
782
|
+
const performAppReloadDependencyContract = inferContractContext({
|
|
783
|
+
contractType: "sideEffectDependency",
|
|
784
|
+
name: ContractName("perform-app-reload-dependency"),
|
|
785
|
+
instance: "exactly-one"
|
|
786
|
+
});
|
|
787
|
+
const appStoreContract = inferContractContext({
|
|
788
|
+
name: ContractName("app-store"),
|
|
789
|
+
instance: "exactly-one",
|
|
790
|
+
contractType: "store",
|
|
791
|
+
dependsOn: combineContracts([
|
|
792
|
+
viewsStoreContract,
|
|
793
|
+
...appUiAddonDependencies,
|
|
794
|
+
analyticsStoreContract,
|
|
795
|
+
featureStoreContract,
|
|
796
|
+
tokensStoreContract,
|
|
797
|
+
performAppReloadDependencyContract
|
|
798
|
+
]),
|
|
799
|
+
mixin: createMixin((laceModule) => ({ store: combineStore(laceModule, store_default$5) }))
|
|
800
|
+
});
|
|
801
|
+
//#endregion
|
|
802
|
+
//#region ../../packages/contract/app/src/utils.ts
|
|
803
|
+
const runInitializers = async (initializers) => Promise.all(initializers.map(async (initializer) => initializer()));
|
|
804
|
+
//#endregion
|
|
805
|
+
//#region ../../packages/contract/wallet-active-state/src/contract.ts
|
|
806
|
+
const walletActiveStateDependencyContract = inferContractContext({
|
|
807
|
+
contractType: "sideEffectDependency",
|
|
808
|
+
name: ContractName("wallet-active-state-dependency"),
|
|
809
|
+
instance: "exactly-one"
|
|
810
|
+
});
|
|
811
|
+
//#endregion
|
|
812
|
+
//#region ../../packages/contract/cardano-context/src/contract.ts
|
|
813
|
+
const cardanoProviderDependencyContract = inferContractContext({
|
|
814
|
+
contractType: "sideEffectDependency",
|
|
815
|
+
name: ContractName("cardano-provider-dependency"),
|
|
816
|
+
instance: "exactly-one"
|
|
817
|
+
});
|
|
818
|
+
const cardanoInMemorySigningDependencyContract = inferContractContext({
|
|
819
|
+
contractType: "sideEffectDependency",
|
|
820
|
+
name: ContractName("cardano-in-memory-signing-dependency"),
|
|
821
|
+
instance: "exactly-one"
|
|
822
|
+
});
|
|
823
|
+
/**
|
|
824
|
+
* Implementor must provide sideEffectDependencies (CardanoProviderDependencies)
|
|
825
|
+
*/
|
|
826
|
+
const cardanoProviderStoreContract = inferContractContext({
|
|
827
|
+
name: ContractName("cardano-provider-store"),
|
|
828
|
+
instance: "exactly-one",
|
|
829
|
+
contractType: "store",
|
|
830
|
+
dependsOn: combineContracts([
|
|
831
|
+
networkStoreContract,
|
|
832
|
+
activitiesStoreContract,
|
|
833
|
+
addressesStoreContract,
|
|
834
|
+
appStoreContract,
|
|
835
|
+
tokensStoreContract,
|
|
836
|
+
walletActiveStateDependencyContract,
|
|
837
|
+
walletRepoStoreContract,
|
|
838
|
+
cardanoProviderDependencyContract,
|
|
839
|
+
syncStoreContract,
|
|
840
|
+
failuresStoreContract,
|
|
841
|
+
analyticsStoreContract,
|
|
842
|
+
featureStoreContract
|
|
843
|
+
]),
|
|
844
|
+
mixin: createMixin((laceModule) => ({ store: combineStore(laceModule, store_default$7) }))
|
|
845
|
+
});
|
|
846
|
+
const delegationTxBuilderAddonContract = inferContractContext({
|
|
847
|
+
name: ContractName("delegation-tx-builder-addon"),
|
|
848
|
+
instance: "at-least-one",
|
|
849
|
+
contractType: "addon",
|
|
850
|
+
preloadInServiceWorker: true,
|
|
851
|
+
provides: { addons: ["loadDelegationTxBuilder"] }
|
|
852
|
+
});
|
|
853
|
+
const deregistrationTxBuilderAddonContract = inferContractContext({
|
|
854
|
+
name: ContractName("deregistration-tx-builder-addon"),
|
|
855
|
+
instance: "at-least-one",
|
|
856
|
+
contractType: "addon",
|
|
857
|
+
preloadInServiceWorker: true,
|
|
858
|
+
provides: { addons: ["loadDeregistrationTxBuilder"] }
|
|
859
|
+
});
|
|
860
|
+
const voteDelegationTxBuilderAddonContract = inferContractContext({
|
|
861
|
+
name: ContractName("vote-delegation-tx-builder-addon"),
|
|
862
|
+
instance: "at-least-one",
|
|
863
|
+
contractType: "addon",
|
|
864
|
+
preloadInServiceWorker: true,
|
|
865
|
+
provides: { addons: ["loadVoteDelegationTxBuilder"] }
|
|
866
|
+
});
|
|
867
|
+
const earnRewardsTxBuilderAddonContract = inferContractContext({
|
|
868
|
+
name: ContractName("earn-rewards-tx-builder-addon"),
|
|
869
|
+
instance: "at-least-one",
|
|
870
|
+
contractType: "addon",
|
|
871
|
+
preloadInServiceWorker: true,
|
|
872
|
+
provides: { addons: ["loadEarnRewardsTxBuilder"] }
|
|
873
|
+
});
|
|
874
|
+
//#endregion
|
|
875
|
+
//#region ../../packages/contract/signer/src/store/index.ts
|
|
876
|
+
var store_default$4 = inferStoreContext({
|
|
877
|
+
load: async () => import("./init-CyAY4Lzl.js"),
|
|
878
|
+
context: {
|
|
879
|
+
actions: {},
|
|
880
|
+
selectors: {}
|
|
881
|
+
}
|
|
882
|
+
});
|
|
883
|
+
//#endregion
|
|
884
|
+
//#region ../../packages/contract/signer/src/contract.ts
|
|
885
|
+
const signerFactoryAddonContract = inferContractContext({
|
|
886
|
+
name: ContractName("signer-factory-addon"),
|
|
887
|
+
instance: "at-least-one",
|
|
888
|
+
contractType: "addon",
|
|
889
|
+
preloadInServiceWorker: true,
|
|
890
|
+
provides: { addons: ["loadSignerFactory"] }
|
|
891
|
+
});
|
|
892
|
+
const signerStoreContract = inferContractContext({
|
|
893
|
+
name: ContractName("signer-store"),
|
|
894
|
+
instance: "exactly-one",
|
|
895
|
+
contractType: "store",
|
|
896
|
+
dependsOn: combineContracts([signerFactoryAddonContract]),
|
|
897
|
+
mixin: createMixin((laceModule) => ({ store: combineStore(laceModule, store_default$4) }))
|
|
898
|
+
});
|
|
899
|
+
//#endregion
|
|
900
|
+
//#region ../../packages/module/cardano-sync/src/store/index.ts
|
|
901
|
+
var store_default$3 = inferStoreContext({
|
|
902
|
+
load: async () => import("./init-CfTbSEKy.js"),
|
|
903
|
+
context: {
|
|
904
|
+
actions: {},
|
|
905
|
+
selectors: {}
|
|
906
|
+
}
|
|
907
|
+
});
|
|
908
|
+
//#endregion
|
|
909
|
+
//#region ../../packages/module/cardano-sync/src/module.ts
|
|
910
|
+
const cardanoSyncModule = inferModuleContext({
|
|
911
|
+
moduleName: ModuleName("cardano-sync"),
|
|
912
|
+
implements: combineContracts([]),
|
|
913
|
+
dependsOn: combineContracts([cardanoProviderStoreContract, syncStoreContract]),
|
|
914
|
+
store: store_default$3,
|
|
915
|
+
feature: {
|
|
916
|
+
willLoad: (featureFlags) => featureFlags.some((flag) => flag.key === FEATURE_FLAG_CARDANO),
|
|
917
|
+
metadata: {
|
|
918
|
+
name: "CardanoSync",
|
|
919
|
+
description: "Cardano provider-backed sync executors and round model"
|
|
920
|
+
}
|
|
921
|
+
},
|
|
922
|
+
addons: {}
|
|
923
|
+
});
|
|
924
|
+
//#endregion
|
|
925
|
+
//#region src/app-context.ts
|
|
926
|
+
/** Runs the app-context initializers the loaded modules provide, such as i18n. */
|
|
927
|
+
const initializeAppContext = async (loadModules) => {
|
|
928
|
+
await runInitializers(await loadModules("addons.loadInitializeAppContext"));
|
|
929
|
+
};
|
|
930
|
+
//#endregion
|
|
931
|
+
//#region src/base-module-store/index.ts
|
|
932
|
+
var base_module_store_default = inferStoreContext({
|
|
933
|
+
load: async () => import("./init-atCFur0v.js"),
|
|
934
|
+
context: {
|
|
935
|
+
actions: {},
|
|
936
|
+
selectors: {}
|
|
937
|
+
}
|
|
938
|
+
});
|
|
939
|
+
//#endregion
|
|
940
|
+
//#region src/base-module.ts
|
|
941
|
+
/**
|
|
942
|
+
* SDK base module - implements the "app shell" store contracts
|
|
943
|
+
* that app-mobile currently provides.
|
|
944
|
+
*
|
|
945
|
+
* NOTE: app-mobile owns too many store contracts that should ideally
|
|
946
|
+
* be implemented by their respective domain modules (e.g., sendFlowStoreContract
|
|
947
|
+
* should be owned by a send-flow domain module, activitiesStoreContract by an
|
|
948
|
+
* activities domain module, etc.). This base module inherits that over-centralization
|
|
949
|
+
* for now. As contracts get properly distributed to domain modules in the future,
|
|
950
|
+
* this base module should shrink.
|
|
951
|
+
*/
|
|
952
|
+
const implementsContracts$1 = combineContracts([
|
|
953
|
+
activitiesStoreContract,
|
|
954
|
+
analyticsStoreContract,
|
|
955
|
+
analyticsProviderDependencyContract,
|
|
956
|
+
networkStoreContract,
|
|
957
|
+
failuresStoreContract,
|
|
958
|
+
walletActiveStateDependencyContract,
|
|
959
|
+
walletRepoStoreContract,
|
|
960
|
+
signerStoreContract
|
|
961
|
+
]);
|
|
962
|
+
const sdkBaseModule = inferModuleContext({
|
|
963
|
+
moduleName: ModuleName("lace-sdk-base"),
|
|
964
|
+
implements: implementsContracts$1,
|
|
965
|
+
store: base_module_store_default,
|
|
966
|
+
addons: {}
|
|
967
|
+
});
|
|
968
|
+
//#endregion
|
|
969
|
+
//#region src/cardano-app-module-store/index.ts
|
|
970
|
+
var cardano_app_module_store_default = inferStoreContext({
|
|
971
|
+
load: async () => import("./init-829HRYcz.js"),
|
|
972
|
+
context: {
|
|
973
|
+
actions: {},
|
|
974
|
+
selectors: {}
|
|
975
|
+
}
|
|
976
|
+
});
|
|
977
|
+
//#endregion
|
|
978
|
+
//#region src/cardano-app-module.ts
|
|
979
|
+
/**
|
|
980
|
+
* The key of the flag that enables Bitcoin accounts. Spelled out here rather
|
|
981
|
+
* than imported from the Bitcoin contract, which is canary code that neither
|
|
982
|
+
* the stable build nor the Cardano entry may carry (ADR 66).
|
|
983
|
+
*/
|
|
984
|
+
const BITCOIN_FEATURE_FLAG_KEY = FeatureFlagKey("BLOCKCHAIN_BITCOIN");
|
|
985
|
+
/**
|
|
986
|
+
* The app-shell contracts the blockchain modules need, such as the analytics
|
|
987
|
+
* store that failures report to, implemented headless. `createLaceWallet`
|
|
988
|
+
* loads it whenever the Cardano or Bitcoin feature flag is on.
|
|
989
|
+
*/
|
|
990
|
+
const sdkCardanoAppModule = inferModuleContext({
|
|
991
|
+
moduleName: ModuleName("lace-sdk-cardano-app"),
|
|
992
|
+
implements: combineContracts([
|
|
993
|
+
appStoreContract,
|
|
994
|
+
viewsStoreContract,
|
|
995
|
+
performAppReloadDependencyContract
|
|
996
|
+
]),
|
|
997
|
+
store: cardano_app_module_store_default,
|
|
998
|
+
feature: {
|
|
999
|
+
willLoad: (featureFlags) => featureFlags.some((flag) => flag.key === FEATURE_FLAG_CARDANO || flag.key === BITCOIN_FEATURE_FLAG_KEY),
|
|
1000
|
+
metadata: {
|
|
1001
|
+
name: "SdkCardanoApp",
|
|
1002
|
+
description: "Headless app contracts of the blockchain modules"
|
|
1003
|
+
}
|
|
1004
|
+
},
|
|
1005
|
+
addons: {}
|
|
1006
|
+
});
|
|
1007
|
+
//#endregion
|
|
1008
|
+
//#region src/create-lace-wallet.ts
|
|
1009
|
+
const parseKey = (key) => {
|
|
1010
|
+
const items = key.split(".");
|
|
1011
|
+
if (items.length < 2) throw new Error(`Invalid key "${key}", expected format: "{scope}.{actionName}"`);
|
|
1012
|
+
return items;
|
|
1013
|
+
};
|
|
1014
|
+
/**
|
|
1015
|
+
* Creates a wallet from a set of modules. The SDK adds its own base modules,
|
|
1016
|
+
* keeps the modules whose feature flags are enabled, and checks that every
|
|
1017
|
+
* contract a module depends on is implemented, and implemented once where it
|
|
1018
|
+
* allows only one. It then loads the modules and returns a wallet whose
|
|
1019
|
+
* actions and state are typed from them.
|
|
1020
|
+
*
|
|
1021
|
+
* @param props - The modules, environment, configuration and feature flags.
|
|
1022
|
+
* @returns The wallet, typed from `props.modules`. Rejects with
|
|
1023
|
+
* `MissingContractImplementationError` or `MultipleImplementationsError` when
|
|
1024
|
+
* the modules do not fit together.
|
|
1025
|
+
*/
|
|
1026
|
+
const createLaceWallet = async (props) => {
|
|
1027
|
+
const { modules, environment, config, featureFlags = [] } = props;
|
|
1028
|
+
const app = "lace-sdk";
|
|
1029
|
+
const logger = dummyLogger;
|
|
1030
|
+
const allModules = [
|
|
1031
|
+
sdkBaseModule,
|
|
1032
|
+
sdkCardanoAppModule,
|
|
1033
|
+
cardanoSyncModule,
|
|
1034
|
+
...modules
|
|
1035
|
+
];
|
|
1036
|
+
const { modulesToLoad } = selectModules(allModules, featureFlags, environment);
|
|
1037
|
+
const moduleInitProps = {
|
|
1038
|
+
modules: modulesToLoad,
|
|
1039
|
+
runtime: {
|
|
1040
|
+
app,
|
|
1041
|
+
env: environment,
|
|
1042
|
+
config,
|
|
1043
|
+
platform: "web",
|
|
1044
|
+
features: {
|
|
1045
|
+
availableModules: allModules,
|
|
1046
|
+
loaded: {
|
|
1047
|
+
featureFlags,
|
|
1048
|
+
modules: modulesToLoad.map((m) => ({
|
|
1049
|
+
moduleName: m.moduleName,
|
|
1050
|
+
feature: m.feature ? { metadata: m.feature.metadata } : void 0
|
|
1051
|
+
}))
|
|
1052
|
+
}
|
|
1053
|
+
}
|
|
1054
|
+
}
|
|
1055
|
+
};
|
|
1056
|
+
const loadModules = createModuleLoader(moduleInitProps, { logger });
|
|
1057
|
+
const reduxPersistStorage = createReduxPersistStorage(await findStorageModule(moduleInitProps, { logger }));
|
|
1058
|
+
await initializeAppContext(loadModules);
|
|
1059
|
+
const { store, stateObservables, actionObservables } = await createStore({
|
|
1060
|
+
...moduleInitProps,
|
|
1061
|
+
loadModules
|
|
1062
|
+
}, {
|
|
1063
|
+
logger,
|
|
1064
|
+
reduxPersistStorage
|
|
1065
|
+
});
|
|
1066
|
+
const stores = await loadModules("store");
|
|
1067
|
+
const actions = {};
|
|
1068
|
+
for (const s of stores) Object.assign(actions, s.context.actions);
|
|
1069
|
+
const dispatch = (key, ...args) => {
|
|
1070
|
+
const [scope, actionCreatorName] = parseKey(key);
|
|
1071
|
+
const actionCreator = actions[scope]?.[actionCreatorName];
|
|
1072
|
+
if (!actionCreator) throw new Error(`Unknown action: ${key}`);
|
|
1073
|
+
store.dispatch(actionCreator(...args));
|
|
1074
|
+
};
|
|
1075
|
+
return {
|
|
1076
|
+
stateObservables,
|
|
1077
|
+
actionObservables,
|
|
1078
|
+
dispatch,
|
|
1079
|
+
getState: () => store.getState(),
|
|
1080
|
+
_loadModules: loadModules
|
|
1081
|
+
};
|
|
1082
|
+
};
|
|
1083
|
+
//#endregion
|
|
1084
|
+
//#region ../../packages/contract/authentication-prompt/src/value-objects/auth-secret.ts
|
|
1085
|
+
const AuthSecret = (authSecret) => Redacted.make(authSecret);
|
|
1086
|
+
const fromUTF8 = (utf8string) => AuthSecret(ByteArray.fromUTF8(utf8string));
|
|
1087
|
+
const fromHex = (hex) => AuthSecret(HexBytes.toByteArray(hex));
|
|
1088
|
+
AuthSecret.fromUTF8 = fromUTF8;
|
|
1089
|
+
AuthSecret.fromHex = fromHex;
|
|
1090
|
+
//#endregion
|
|
1091
|
+
//#region ../../packages/contract/in-memory/src/contract.ts
|
|
1092
|
+
const inMemoryIntegrationAddonContract = inferContractContext({
|
|
1093
|
+
name: ContractName("in-memory-integration-addon"),
|
|
1094
|
+
instance: "at-least-one",
|
|
1095
|
+
contractType: "addon",
|
|
1096
|
+
preloadInServiceWorker: true,
|
|
1097
|
+
provides: { addons: ["loadInMemoryWalletIntegration"] }
|
|
1098
|
+
});
|
|
1099
|
+
//#endregion
|
|
1100
|
+
//#region ../../packages/contract/onboarding-v2/src/store/wallet-creation/wallet-entity.ts
|
|
1101
|
+
/**
|
|
1102
|
+
* Factory for creating in-memory wallet entities.
|
|
1103
|
+
*
|
|
1104
|
+
* With `password`: encrypts the recovery phrase and returns an
|
|
1105
|
+
* {@link InMemoryWallet}. Without `password`: persists no seed material and
|
|
1106
|
+
* returns a {@link LazyInMemoryWallet} — signing relies on an external module
|
|
1107
|
+
* re-supplying the mnemonic on demand.
|
|
1108
|
+
*/
|
|
1109
|
+
const createInMemoryWalletEntityFactory = ({ integrations, logger }) => {
|
|
1110
|
+
const create = async ({ walletName, blockchains, password, order, recoveryPhrase }) => {
|
|
1111
|
+
const walletId = WalletId.deriveFromMnemonic(recoveryPhrase);
|
|
1112
|
+
const integrationResults = await Promise.all(integrations.filter(({ blockchainName }) => blockchains.includes(blockchainName)).map(async (integration) => integration.initializeWallet({
|
|
1113
|
+
recoveryPhrase,
|
|
1114
|
+
walletId,
|
|
1115
|
+
order,
|
|
1116
|
+
walletName,
|
|
1117
|
+
password
|
|
1118
|
+
}, { logger }).then((result) => ({
|
|
1119
|
+
...result,
|
|
1120
|
+
blockchainName: integration.blockchainName
|
|
1121
|
+
}))));
|
|
1122
|
+
const blockchainSpecific = integrationResults.map(({ blockchainName, blockchainSpecificWalletData }) => ({ [blockchainName]: blockchainSpecificWalletData })).reduce((accumulator, value) => ({
|
|
1123
|
+
...accumulator,
|
|
1124
|
+
...value
|
|
1125
|
+
}), {});
|
|
1126
|
+
const accounts = integrationResults.flatMap(({ accounts }) => accounts);
|
|
1127
|
+
if (!password) return {
|
|
1128
|
+
accounts,
|
|
1129
|
+
blockchainSpecific,
|
|
1130
|
+
metadata: {
|
|
1131
|
+
name: walletName,
|
|
1132
|
+
order
|
|
1133
|
+
},
|
|
1134
|
+
type: WalletType.LazyInMemory,
|
|
1135
|
+
walletId
|
|
1136
|
+
};
|
|
1137
|
+
return {
|
|
1138
|
+
accounts,
|
|
1139
|
+
blockchainSpecific,
|
|
1140
|
+
encryptedRecoveryPhrase: await encryptRecoveryPhrase(recoveryPhrase, password),
|
|
1141
|
+
isPassphraseConfirmed: false,
|
|
1142
|
+
metadata: {
|
|
1143
|
+
name: walletName,
|
|
1144
|
+
order
|
|
1145
|
+
},
|
|
1146
|
+
type: WalletType.InMemory,
|
|
1147
|
+
walletId
|
|
1148
|
+
};
|
|
1149
|
+
};
|
|
1150
|
+
return create;
|
|
1151
|
+
};
|
|
1152
|
+
//#endregion
|
|
1153
|
+
//#region src/create-in-memory-wallet-entity.ts
|
|
1154
|
+
async function createInMemoryWalletEntity(wallet, props) {
|
|
1155
|
+
return createEntity(wallet, props);
|
|
1156
|
+
}
|
|
1157
|
+
async function createBlockchainWalletEntity(wallet, blockchainName, props) {
|
|
1158
|
+
return createEntity(wallet, props, blockchainName);
|
|
1159
|
+
}
|
|
1160
|
+
const createEntity = async (wallet, props, blockchainName) => {
|
|
1161
|
+
const { mnemonicWords, password: rawPassword, walletName, order = 0 } = props;
|
|
1162
|
+
const password = rawPassword ? AuthSecret(ByteArray(rawPassword)) : void 0;
|
|
1163
|
+
const integrations = (await wallet._loadModules("addons.loadInMemoryWalletIntegration")).filter((integration) => !blockchainName || integration.blockchainName === blockchainName);
|
|
1164
|
+
return createInMemoryWalletEntityFactory({
|
|
1165
|
+
integrations,
|
|
1166
|
+
logger: dummyLogger
|
|
1167
|
+
})({
|
|
1168
|
+
blockchains: integrations.map((integration) => integration.blockchainName),
|
|
1169
|
+
order,
|
|
1170
|
+
password,
|
|
1171
|
+
recoveryPhrase: mnemonicWords,
|
|
1172
|
+
walletName
|
|
1173
|
+
});
|
|
1174
|
+
};
|
|
1175
|
+
//#endregion
|
|
1176
|
+
//#region ../../packages/module/feature-dev/src/sdk-contracts.ts
|
|
1177
|
+
const implementsContracts = combineContracts([featureStoreContract, featureDependencyContract]);
|
|
1178
|
+
var store_default$2 = inferStoreContext({
|
|
1179
|
+
load: async () => import("./init-B3-1ghyx.js"),
|
|
1180
|
+
context: {
|
|
1181
|
+
actions: { featureDev: { setFeatureFlags } },
|
|
1182
|
+
selectors: {}
|
|
1183
|
+
}
|
|
1184
|
+
});
|
|
1185
|
+
//#endregion
|
|
1186
|
+
//#region ../../packages/module/feature-dev/src/sdk.ts
|
|
1187
|
+
/**
|
|
1188
|
+
* Feature flags the app sets: the wallet starts with the flags passed to
|
|
1189
|
+
* `createLaceWallet`, and dispatching `featureDev.setFeatureFlags` replaces
|
|
1190
|
+
* them.
|
|
1191
|
+
*/
|
|
1192
|
+
var sdk_default$2 = inferModuleContext({
|
|
1193
|
+
moduleName: ModuleName("feature-dev"),
|
|
1194
|
+
implements: implementsContracts,
|
|
1195
|
+
store: store_default$2,
|
|
1196
|
+
addons: {}
|
|
1197
|
+
});
|
|
1198
|
+
//#endregion
|
|
1199
|
+
//#region ../../packages/module/storage-in-memory/src/store/index.ts
|
|
1200
|
+
var store_default$1 = inferStoreContext({
|
|
1201
|
+
load: async () => import("./init-A-VyGSNW2.js"),
|
|
1202
|
+
context: {
|
|
1203
|
+
actions: {},
|
|
1204
|
+
selectors: {}
|
|
1205
|
+
}
|
|
1206
|
+
});
|
|
1207
|
+
//#endregion
|
|
1208
|
+
//#region ../../packages/module/storage-in-memory/src/sdk.ts
|
|
1209
|
+
/**
|
|
1210
|
+
* In-memory storage: the wallet's persisted state lasts as long as the
|
|
1211
|
+
* process.
|
|
1212
|
+
*/
|
|
1213
|
+
var sdk_default$1 = inferModuleContext({
|
|
1214
|
+
moduleName: ModuleName("storage-in-memory"),
|
|
1215
|
+
implements: combineContracts([storageDependencyContract]),
|
|
1216
|
+
store: store_default$1,
|
|
1217
|
+
addons: {}
|
|
1218
|
+
});
|
|
1219
|
+
//#endregion
|
|
1220
|
+
//#region ../../packages/module/storage-web-indexeddb/src/store/index.ts
|
|
1221
|
+
var store_default = inferStoreContext({
|
|
1222
|
+
load: async () => import("./init-SZ01tARX2.js"),
|
|
1223
|
+
context: {
|
|
1224
|
+
actions: {},
|
|
1225
|
+
selectors: {}
|
|
1226
|
+
}
|
|
1227
|
+
});
|
|
1228
|
+
//#endregion
|
|
1229
|
+
//#region ../../packages/module/storage-web-indexeddb/src/sdk.ts
|
|
1230
|
+
/**
|
|
1231
|
+
* Browser storage in IndexedDB: the wallet's persisted state lasts across
|
|
1232
|
+
* page loads and sessions.
|
|
1233
|
+
*/
|
|
1234
|
+
var sdk_default = inferModuleContext({
|
|
1235
|
+
moduleName: ModuleName("storage-web-indexeddb"),
|
|
1236
|
+
implements: combineContracts([storageDependencyContract]),
|
|
1237
|
+
store: store_default,
|
|
1238
|
+
addons: {}
|
|
1239
|
+
});
|
|
1240
|
+
//#endregion
|
|
1241
|
+
export { ContractName as A, walletRepoStoreContract as C, storageDependencyContract as D, featureStoreContract as E, WalletId as M, combineStore as O, WalletType as S, failuresStoreContract as T, walletActiveStateDependencyContract as _, createInMemoryWalletEntity as a, addressesStoreContract as b, createLaceWallet as c, cardanoProviderDependencyContract as d, cardanoProviderStoreContract as f, voteDelegationTxBuilderAddonContract as g, earnRewardsTxBuilderAddonContract as h, createBlockchainWalletEntity as i, ModuleName as j, createMixin as k, signerFactoryAddonContract as l, deregistrationTxBuilderAddonContract as m, sdk_default$1 as n, inMemoryIntegrationAddonContract as o, delegationTxBuilderAddonContract as p, sdk_default$2 as r, AuthSecret as s, sdk_default as t, cardanoInMemorySigningDependencyContract as u, tokensStoreContract as v, networkStoreContract as w, activitiesStoreContract as x, syncStoreContract as y };
|