@ledgerhq/device-signer-kit-bitcoin 0.0.0-signer-eth-20250122093657 → 0.0.0-signer-eth-plugin-fix-20250331141239
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/README.md +100 -32
- package/lib/cjs/api/app-binder/SignMessageDeviceActionTypes.js +1 -1
- package/lib/cjs/api/app-binder/SignMessageDeviceActionTypes.js.map +1 -1
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/internal/DefaultSignerBtc.test.js +1 -1
- package/lib/cjs/internal/DefaultSignerBtc.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/BtcAppBinder.js +1 -1
- package/lib/cjs/internal/app-binder/BtcAppBinder.js.map +3 -3
- package/lib/cjs/internal/app-binder/BtcAppBinder.test.js +1 -1
- package/lib/cjs/internal/app-binder/BtcAppBinder.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/GetMasterFingerprintCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/GetMasterFingerprintCommand.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/GetWalletAddressCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/GetWalletAddressCommand.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/RegisterWalletAddressCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/RegisterWalletAddressCommand.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/client-command-handlers/GetMerkleLeafIndexCommandHandler.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/client-command-handlers/GetMerkleLeafIndexCommandHandler.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/client-command-handlers/GetMerkleLeafProofCommandHandler.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/client-command-handlers/GetMerkleLeafProofCommandHandler.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/client-command-handlers/GetMoreElementsCommandHandler.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/client-command-handlers/GetMoreElementsCommandHandler.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/client-command-handlers/GetPreimageCommandHandler.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/client-command-handlers/GetPreimageCommandHandler.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/service/ClientCommandInterpreter.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/service/ClientCommandInterpreter.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/utils/bitcoinAppError.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/utils/bitcoinAppError.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/device-action/GetWalletAddress/GetWalletAddressDeviceAction.test.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/GetWalletAddress/GetWalletAddressDeviceAction.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/device-action/SignPsbt/SignPsbtDeviceAction.test.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/SignPsbt/SignPsbtDeviceAction.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/device-action/__test-utils__/makeInternalApi.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/__test-utils__/makeInternalApi.js.map +3 -3
- package/lib/cjs/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.js.map +2 -2
- package/lib/cjs/internal/app-binder/device-action/__test-utils__/setupSignPsbtDAMock.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/__test-utils__/setupSignPsbtDAMock.js.map +2 -2
- package/lib/cjs/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.js +1 -1
- package/lib/cjs/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.js.map +3 -3
- package/lib/cjs/internal/app-binder/task/BuildPsbtTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/BuildPsbtTask.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/task/ContinueTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/ContinueTask.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/task/GetWalletAddressTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/GetWalletAddressTask.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/task/PrepareWalletPolicyTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/PrepareWalletPolicyTask.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/task/SignMessageTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/SignMessageTask.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/task/SignPsbtTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/SignPsbtTask.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/task/UpdatePsbtTask.test.js +1 -1
- package/lib/cjs/internal/app-binder/task/UpdatePsbtTask.test.js.map +2 -2
- package/lib/cjs/internal/data-store/model/DataStore.test.js +1 -1
- package/lib/cjs/internal/data-store/model/DataStore.test.js.map +2 -2
- package/lib/cjs/internal/data-store/service/DefaultDataStoreService.test.js +1 -1
- package/lib/cjs/internal/data-store/service/DefaultDataStoreService.test.js.map +2 -2
- package/lib/cjs/internal/merkle-tree/service/MerkleMapBuilder.test.js +1 -1
- package/lib/cjs/internal/merkle-tree/service/MerkleMapBuilder.test.js.map +2 -2
- package/lib/cjs/internal/merkle-tree/service/MerkleTreeBuilder.test.js +1 -1
- package/lib/cjs/internal/merkle-tree/service/MerkleTreeBuilder.test.js.map +2 -2
- package/lib/cjs/internal/psbt/service/psbt/DefaultPsbtMapper.test.js +1 -1
- package/lib/cjs/internal/psbt/service/psbt/DefaultPsbtMapper.test.js.map +2 -2
- package/lib/cjs/internal/use-cases/get-extended-public-key/GetExtendedPublicKeyUseCase.test.js +1 -1
- package/lib/cjs/internal/use-cases/get-extended-public-key/GetExtendedPublicKeyUseCase.test.js.map +2 -2
- package/lib/cjs/internal/use-cases/get-wallet-address/GetWalletAddressUseCase.test.js +1 -1
- package/lib/cjs/internal/use-cases/get-wallet-address/GetWalletAddressUseCase.test.js.map +2 -2
- package/lib/cjs/internal/use-cases/sign-message/SignMessageUseCase.test.js +1 -1
- package/lib/cjs/internal/use-cases/sign-message/SignMessageUseCase.test.js.map +2 -2
- package/lib/cjs/internal/use-cases/sign-psbt/SignPsbtUseCase.test.js +1 -1
- package/lib/cjs/internal/use-cases/sign-psbt/SignPsbtUseCase.test.js.map +2 -2
- package/lib/cjs/internal/use-cases/sign-transaction/SignTransactionUseCase.test.js +1 -1
- package/lib/cjs/internal/use-cases/sign-transaction/SignTransactionUseCase.test.js.map +2 -2
- package/lib/cjs/internal/wallet/service/DefaultWalletBuilder.test.js +1 -1
- package/lib/cjs/internal/wallet/service/DefaultWalletBuilder.test.js.map +2 -2
- package/lib/cjs/internal/wallet/service/DefaultWalletSerializer.test.js +1 -1
- package/lib/cjs/internal/wallet/service/DefaultWalletSerializer.test.js.map +2 -2
- package/lib/cjs/package.json +7 -6
- package/lib/esm/internal/DefaultSignerBtc.test.js +1 -1
- package/lib/esm/internal/DefaultSignerBtc.test.js.map +2 -2
- package/lib/esm/internal/app-binder/BtcAppBinder.js +1 -1
- package/lib/esm/internal/app-binder/BtcAppBinder.js.map +3 -3
- package/lib/esm/internal/app-binder/BtcAppBinder.test.js +1 -1
- package/lib/esm/internal/app-binder/BtcAppBinder.test.js.map +3 -3
- package/lib/esm/internal/app-binder/command/GetMasterFingerprintCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/GetMasterFingerprintCommand.test.js.map +2 -2
- package/lib/esm/internal/app-binder/command/GetWalletAddressCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/GetWalletAddressCommand.test.js.map +2 -2
- package/lib/esm/internal/app-binder/command/RegisterWalletAddressCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/RegisterWalletAddressCommand.test.js.map +2 -2
- package/lib/esm/internal/app-binder/command/client-command-handlers/GetMerkleLeafIndexCommandHandler.test.js +1 -1
- package/lib/esm/internal/app-binder/command/client-command-handlers/GetMerkleLeafIndexCommandHandler.test.js.map +2 -2
- package/lib/esm/internal/app-binder/command/client-command-handlers/GetMerkleLeafProofCommandHandler.test.js +1 -1
- package/lib/esm/internal/app-binder/command/client-command-handlers/GetMerkleLeafProofCommandHandler.test.js.map +3 -3
- package/lib/esm/internal/app-binder/command/client-command-handlers/GetMoreElementsCommandHandler.test.js +1 -1
- package/lib/esm/internal/app-binder/command/client-command-handlers/GetMoreElementsCommandHandler.test.js.map +2 -2
- package/lib/esm/internal/app-binder/command/client-command-handlers/GetPreimageCommandHandler.test.js +1 -1
- package/lib/esm/internal/app-binder/command/client-command-handlers/GetPreimageCommandHandler.test.js.map +2 -2
- package/lib/esm/internal/app-binder/command/service/ClientCommandInterpreter.test.js +1 -1
- package/lib/esm/internal/app-binder/command/service/ClientCommandInterpreter.test.js.map +2 -2
- package/lib/esm/internal/app-binder/command/utils/bitcoinAppError.test.js +1 -1
- package/lib/esm/internal/app-binder/command/utils/bitcoinAppError.test.js.map +2 -2
- package/lib/esm/internal/app-binder/device-action/GetWalletAddress/GetWalletAddressDeviceAction.test.js +1 -1
- package/lib/esm/internal/app-binder/device-action/GetWalletAddress/GetWalletAddressDeviceAction.test.js.map +3 -3
- package/lib/esm/internal/app-binder/device-action/SignPsbt/SignPsbtDeviceAction.test.js +1 -1
- package/lib/esm/internal/app-binder/device-action/SignPsbt/SignPsbtDeviceAction.test.js.map +3 -3
- package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js +1 -1
- package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js.map +3 -3
- package/lib/esm/internal/app-binder/device-action/__test-utils__/makeInternalApi.js +1 -1
- package/lib/esm/internal/app-binder/device-action/__test-utils__/makeInternalApi.js.map +3 -3
- package/lib/esm/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.js +1 -1
- package/lib/esm/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.js.map +2 -2
- package/lib/esm/internal/app-binder/device-action/__test-utils__/setupSignPsbtDAMock.js +1 -1
- package/lib/esm/internal/app-binder/device-action/__test-utils__/setupSignPsbtDAMock.js.map +2 -2
- package/lib/esm/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.js +1 -1
- package/lib/esm/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.js.map +3 -3
- package/lib/esm/internal/app-binder/task/BuildPsbtTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/BuildPsbtTask.test.js.map +2 -2
- package/lib/esm/internal/app-binder/task/ContinueTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/ContinueTask.test.js.map +2 -2
- package/lib/esm/internal/app-binder/task/GetWalletAddressTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/GetWalletAddressTask.test.js.map +2 -2
- package/lib/esm/internal/app-binder/task/PrepareWalletPolicyTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/PrepareWalletPolicyTask.test.js.map +2 -2
- package/lib/esm/internal/app-binder/task/SignMessageTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/SignMessageTask.test.js.map +2 -2
- package/lib/esm/internal/app-binder/task/SignPsbtTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/SignPsbtTask.test.js.map +2 -2
- package/lib/esm/internal/app-binder/task/UpdatePsbtTask.test.js +1 -1
- package/lib/esm/internal/app-binder/task/UpdatePsbtTask.test.js.map +2 -2
- package/lib/esm/internal/data-store/model/DataStore.test.js +1 -1
- package/lib/esm/internal/data-store/model/DataStore.test.js.map +2 -2
- package/lib/esm/internal/data-store/service/DefaultDataStoreService.test.js +1 -1
- package/lib/esm/internal/data-store/service/DefaultDataStoreService.test.js.map +2 -2
- package/lib/esm/internal/merkle-tree/service/MerkleMapBuilder.test.js +1 -1
- package/lib/esm/internal/merkle-tree/service/MerkleMapBuilder.test.js.map +2 -2
- package/lib/esm/internal/merkle-tree/service/MerkleTreeBuilder.test.js +1 -1
- package/lib/esm/internal/merkle-tree/service/MerkleTreeBuilder.test.js.map +2 -2
- package/lib/esm/internal/psbt/service/psbt/DefaultPsbtMapper.test.js +1 -1
- package/lib/esm/internal/psbt/service/psbt/DefaultPsbtMapper.test.js.map +2 -2
- package/lib/esm/internal/use-cases/get-extended-public-key/GetExtendedPublicKeyUseCase.test.js +1 -1
- package/lib/esm/internal/use-cases/get-extended-public-key/GetExtendedPublicKeyUseCase.test.js.map +2 -2
- package/lib/esm/internal/use-cases/get-wallet-address/GetWalletAddressUseCase.test.js +1 -1
- package/lib/esm/internal/use-cases/get-wallet-address/GetWalletAddressUseCase.test.js.map +2 -2
- package/lib/esm/internal/use-cases/sign-message/SignMessageUseCase.test.js +1 -1
- package/lib/esm/internal/use-cases/sign-message/SignMessageUseCase.test.js.map +2 -2
- package/lib/esm/internal/use-cases/sign-psbt/SignPsbtUseCase.test.js +1 -1
- package/lib/esm/internal/use-cases/sign-psbt/SignPsbtUseCase.test.js.map +2 -2
- package/lib/esm/internal/use-cases/sign-transaction/SignTransactionUseCase.test.js +1 -1
- package/lib/esm/internal/use-cases/sign-transaction/SignTransactionUseCase.test.js.map +2 -2
- package/lib/esm/internal/wallet/service/DefaultWalletBuilder.test.js +1 -1
- package/lib/esm/internal/wallet/service/DefaultWalletBuilder.test.js.map +2 -2
- package/lib/esm/internal/wallet/service/DefaultWalletSerializer.test.js +1 -1
- package/lib/esm/internal/wallet/service/DefaultWalletSerializer.test.js.map +2 -2
- package/lib/esm/package.json +7 -6
- package/lib/types/api/app-binder/SignMessageDeviceActionTypes.d.ts +1 -12
- package/lib/types/api/app-binder/SignMessageDeviceActionTypes.d.ts.map +1 -1
- package/lib/types/internal/app-binder/BtcAppBinder.d.ts.map +1 -1
- package/lib/types/internal/app-binder/device-action/__test-utils__/makeInternalApi.d.ts +2 -1
- package/lib/types/internal/app-binder/device-action/__test-utils__/makeInternalApi.d.ts.map +1 -1
- package/lib/types/internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock.d.ts.map +1 -1
- package/lib/types/internal/app-binder/device-action/__test-utils__/setupSignPsbtDAMock.d.ts.map +1 -1
- package/lib/types/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.d.ts +5 -2
- package/lib/types/internal/app-binder/device-action/__test-utils__/testDeviceActionStates.d.ts.map +1 -1
- package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
- package/package.json +11 -10
- package/lib/cjs/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.js +0 -2
- package/lib/cjs/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.js.map +0 -7
- package/lib/cjs/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.test.js +0 -2
- package/lib/cjs/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.test.js.map +0 -7
- package/lib/esm/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.js +0 -2
- package/lib/esm/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.js.map +0 -7
- package/lib/esm/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.test.js +0 -2
- package/lib/esm/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.test.js.map +0 -7
- package/lib/types/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.d.ts +0 -19
- package/lib/types/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.d.ts.map +0 -1
- package/lib/types/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.test.d.ts +0 -2
- package/lib/types/internal/app-binder/device-action/SignMessage/SignMessageDeviceAction.test.d.ts.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var o=require("purify-ts"),
|
|
1
|
+
"use strict";var o=require("purify-ts"),v=require("../../merkle-tree/model/Leaf"),b=require("../../merkle-tree/model/MerkleTree"),f=require("../../psbt/model/Psbt"),l=require("../../psbt/model/Value"),h=require("../../wallet/model/Wallet"),m=require("./DefaultDataStoreService");describe("DefaultDataStoreService",()=>{const a={build:vi.fn()},s={build:vi.fn()},w=vi.fn(),u={serialize:w,getId:vi.fn()},r={getPreimage:vi.fn(),getMerkleLeafIndex:vi.fn(),getMerkleProof:vi.fn(),addPreimage:vi.fn(),addMerkleTree:vi.fn(),addMerkleMap:vi.fn()},d=vi.fn(),k={hash:d};function c(e){return{getCommitment:()=>Uint8Array.from([e])}}function y(e){return{getRoot:()=>Uint8Array.from([e])}}describe("Merkleize chunks",()=>{beforeEach(()=>{vi.resetAllMocks()}),it("Success case",()=>{const e=[Uint8Array.from([0]),Uint8Array.from([2]),Uint8Array.from([3])],t=y(91),n=new m.DefaultDataStoreService(s,a,u,k);s.build.mockReturnValueOnce(t);const i=n.merklizeChunks(r,e);expect(s.build).toHaveBeenCalledWith(e),expect(r.addMerkleTree).toHaveBeenCalledWith(t),expect(i).toStrictEqual(Uint8Array.from([91]))})}),describe("Merkleize wallet",()=>{beforeEach(()=>{vi.resetAllMocks()}),it("Success case",()=>{const e=new b.MerkleTree(new v.Leaf(new Uint8Array,new Uint8Array(32).fill(7)),[]),t=new Uint8Array(5).fill(6),n=new Uint8Array(5).fill(7),i=new Uint8Array(5).fill(8),p=new h.Wallet({name:"Cold storage",descriptorTemplate:"template descriptor",keys:["key1","key2","key3"],hmac:new Uint8Array,keysTree:e,descriptorBuffer:new Uint8Array(32).fill(42)}),M=new m.DefaultDataStoreService(s,a,u,k);w.mockReturnValueOnce(t),d.mockReturnValueOnce(n).mockReturnValueOnce(i),M.merklizeWallet(r,p),expect(w).toHaveBeenCalledWith(p),expect(d).toHaveBeenCalledWith(t),expect(d).toHaveBeenCalledWith(p.descriptorBuffer),expect(r.addPreimage).toHaveBeenCalledWith(n,t),expect(r.addPreimage).toHaveBeenCalledWith(i,new Uint8Array(32).fill(42)),expect(r.addMerkleTree).toHaveBeenCalledWith(e)})}),describe("Merkleize a PSBT",()=>{const e={globalMap:new Map([["02",new l.Value(Uint8Array.from([2]))],["01",new l.Value(Uint8Array.from([1]))],["03",new l.Value(Uint8Array.from([3]))]]),inputMaps:[new Map([["09",new l.Value(Uint8Array.from([9]))],["01",new l.Value(Uint8Array.from([1]))],["07",new l.Value(Uint8Array.from([7]))]]),new Map([["07",new l.Value(Uint8Array.from([7]))],["03",new l.Value(Uint8Array.from([3]))],["01",new l.Value(Uint8Array.from([1]))]])],outputMaps:[new Map([["05",new l.Value(Uint8Array.from([5]))],["06",new l.Value(Uint8Array.from([6]))],["07",new l.Value(Uint8Array.from([7]))]])]};beforeEach(()=>{vi.resetAllMocks()}),it("Merkle map service failure",()=>{const t=new m.DefaultDataStoreService(s,a,u,k),n=new f.Psbt(e.globalMap,[],[]);a.build.mockReturnValueOnce((0,o.Left)(new Error));const i=t.merklizePsbt(r,n);expect(i.isRight()).toStrictEqual(!1)}),it("Merkle map service failure on inputs",()=>{const t=new m.DefaultDataStoreService(s,a,u,k),n=new f.Psbt(e.globalMap,e.inputMaps,[]);a.build.mockReturnValueOnce((0,o.Right)(c(42))).mockReturnValueOnce((0,o.Right)(c(43))).mockReturnValueOnce((0,o.Left)(new Error));const i=t.merklizePsbt(r,n);expect(i.isRight()).toStrictEqual(!1)}),it("Merkle map service failure on outputs",()=>{const t=new m.DefaultDataStoreService(s,a,u,k),n=new f.Psbt(e.globalMap,e.inputMaps,e.outputMaps);a.build.mockReturnValueOnce((0,o.Right)(c(42))).mockReturnValueOnce((0,o.Right)(c(43))).mockReturnValueOnce((0,o.Right)(c(44))).mockReturnValueOnce((0,o.Left)(new Error));const i=t.merklizePsbt(r,n);expect(i.isRight()).toStrictEqual(!1)}),it("Maps should be ordered",()=>{const t=new m.DefaultDataStoreService(s,a,u,k),n=new f.Psbt(e.globalMap,e.inputMaps,e.outputMaps);a.build.mockReturnValue((0,o.Left)(new Error)),t.merklizePsbt(r,n),expect(a.build).toHaveBeenCalledWith([Uint8Array.from([1]),Uint8Array.from([2]),Uint8Array.from([3])],[Uint8Array.from([1]),Uint8Array.from([2]),Uint8Array.from([3])]),expect(a.build).toHaveBeenCalledWith([Uint8Array.from([1]),Uint8Array.from([7]),Uint8Array.from([9])],[Uint8Array.from([1]),Uint8Array.from([7]),Uint8Array.from([9])]),expect(a.build).toHaveBeenCalledWith([Uint8Array.from([1]),Uint8Array.from([3]),Uint8Array.from([7])],[Uint8Array.from([1]),Uint8Array.from([3]),Uint8Array.from([7])]),expect(a.build).toHaveBeenCalledWith([Uint8Array.from([5]),Uint8Array.from([6]),Uint8Array.from([7])],[Uint8Array.from([5]),Uint8Array.from([6]),Uint8Array.from([7])])}),it("Success case",()=>{const t=c(42),n=c(43),i=c(44),p=c(45),M=y(91),A=y(92),B=new m.DefaultDataStoreService(s,a,u,k),S=new f.Psbt(e.globalMap,e.inputMaps,e.outputMaps);a.build.mockReturnValueOnce((0,o.Right)(t)).mockReturnValueOnce((0,o.Right)(n)).mockReturnValueOnce((0,o.Right)(i)).mockReturnValueOnce((0,o.Right)(p)),s.build.mockReturnValueOnce(M).mockReturnValueOnce(A);const U=B.merklizePsbt(r,S);expect(r.addMerkleMap).toHaveBeenCalledWith(t),expect(r.addMerkleMap).toHaveBeenCalledWith(n),expect(r.addMerkleMap).toHaveBeenCalledWith(i),expect(r.addMerkleMap).toHaveBeenCalledWith(p),expect(r.addMerkleTree).toHaveBeenCalledWith(M),expect(r.addMerkleTree).toHaveBeenCalledWith(A),expect(s.build).toHaveBeenCalledWith([Uint8Array.from([43]),Uint8Array.from([44])]),expect(s.build).toHaveBeenCalledWith([Uint8Array.from([45])]),expect(U.isRight()).toStrictEqual(!0),expect(U.unsafeCoerce()).toStrictEqual({globalCommitment:Uint8Array.from([42]),inputsRoot:Uint8Array.from([91]),outputsRoot:Uint8Array.from([92])})})})});
|
|
2
2
|
//# sourceMappingURL=DefaultDataStoreService.test.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/data-store/service/DefaultDataStoreService.test.ts"],
|
|
4
|
-
"sourcesContent": ["import { Left, Right } from \"purify-ts\";\n\nimport { type DataStore } from \"@internal/data-store/model/DataStore\";\nimport { Leaf } from \"@internal/merkle-tree/model/Leaf\";\nimport { MerkleTree } from \"@internal/merkle-tree/model/MerkleTree\";\nimport { type HasherService } from \"@internal/merkle-tree/service/HasherService\";\nimport { type MerkleMapBuilder } from \"@internal/merkle-tree/service/MerkleMapBuilder\";\nimport { type MerkleTreeBuilder } from \"@internal/merkle-tree/service/MerkleTreeBuilder\";\nimport { Psbt } from \"@internal/psbt/model/Psbt\";\nimport { Value } from \"@internal/psbt/model/Value\";\nimport { Wallet } from \"@internal/wallet/model/Wallet\";\nimport { type WalletSerializer } from \"@internal/wallet/service/WalletSerializer\";\n\nimport { DefaultDataStoreService } from \"./DefaultDataStoreService\";\n\ndescribe(\"DefaultDataStoreService\", () => {\n const mockMerkleMapBuilder = {\n build: jest.fn(),\n };\n\n const mockMerkleTreeBuilder = {\n build: jest.fn(),\n };\n\n const mockWalletSerialize = jest.fn();\n const mockWalletSerializer: WalletSerializer = {\n serialize: mockWalletSerialize,\n getId: jest.fn(),\n };\n\n const mockDataStore = {\n getPreimage: jest.fn(),\n getMerkleLeafIndex: jest.fn(),\n getMerkleProof: jest.fn(),\n addPreimage: jest.fn(),\n addMerkleTree: jest.fn(),\n addMerkleMap: jest.fn(),\n };\n\n const mockedHash = jest.fn();\n const mockedHasherService: HasherService = {\n hash: mockedHash,\n };\n\n function createMerkleMap(commitment: number) {\n return {\n getCommitment: () => Uint8Array.from([commitment]),\n };\n }\n\n function createMerkleTree(root: number) {\n return {\n getRoot: () => Uint8Array.from([root]),\n };\n }\n\n describe(\"Merkleize chunks\", () => {\n beforeEach(() => {\n jest.resetAllMocks();\n });\n\n it(\"Success case\", () => {\n // Given\n const chunks = [\n Uint8Array.from([0]),\n Uint8Array.from([2]),\n Uint8Array.from([3]),\n ];\n const merkleTree = createMerkleTree(91);\n const storeService = new DefaultDataStoreService(\n mockMerkleTreeBuilder as unknown as MerkleTreeBuilder,\n mockMerkleMapBuilder as unknown as MerkleMapBuilder,\n mockWalletSerializer,\n mockedHasherService,\n );\n\n // When\n mockMerkleTreeBuilder.build.mockReturnValueOnce(merkleTree);\n const commitment = storeService.merklizeChunks(\n mockDataStore as unknown as DataStore,\n chunks,\n );\n\n // Then\n expect(mockMerkleTreeBuilder.build).toHaveBeenCalledWith(chunks);\n expect(mockDataStore.addMerkleTree).toHaveBeenCalledWith(merkleTree);\n expect(commitment).toStrictEqual(Uint8Array.from([91]));\n });\n });\n\n describe(\"Merkleize wallet\", () => {\n beforeEach(() => {\n jest.resetAllMocks();\n });\n\n it(\"Success case\", () => {\n // Given\n const merkleTree = new MerkleTree(\n new Leaf(new Uint8Array(), new Uint8Array(32).fill(7)),\n [],\n );\n const serialized = new Uint8Array(5).fill(6);\n const hash1 = new Uint8Array(5).fill(7);\n const hash2 = new Uint8Array(5).fill(8);\n const wallet = new Wallet({\n name: \"Cold storage\",\n descriptorTemplate: \"template descriptor\",\n keys: [\"key1\", \"key2\", \"key3\"],\n hmac: new Uint8Array(),\n keysTree: merkleTree,\n descriptorBuffer: new Uint8Array(32).fill(42),\n });\n const storeService = new DefaultDataStoreService(\n mockMerkleTreeBuilder as unknown as MerkleTreeBuilder,\n mockMerkleMapBuilder as unknown as MerkleMapBuilder,\n mockWalletSerializer,\n mockedHasherService,\n );\n\n // When\n mockWalletSerialize.mockReturnValueOnce(serialized);\n mockedHash.mockReturnValueOnce(hash1).mockReturnValueOnce(hash2);\n storeService.merklizeWallet(\n mockDataStore as unknown as DataStore,\n wallet,\n );\n\n // Then\n expect(mockWalletSerialize).toHaveBeenCalledWith(wallet);\n expect(mockedHash).toHaveBeenCalledWith(serialized);\n expect(mockedHash).toHaveBeenCalledWith(wallet.descriptorBuffer);\n expect(mockDataStore.addPreimage).toHaveBeenCalledWith(hash1, serialized);\n expect(mockDataStore.addPreimage).toHaveBeenCalledWith(\n hash2,\n new Uint8Array(32).fill(42),\n );\n expect(mockDataStore.addMerkleTree).toHaveBeenCalledWith(merkleTree);\n });\n });\n\n describe(\"Merkleize a PSBT\", () => {\n const TEST_PSBT = {\n globalMap: new Map<string, Value>([\n [\"02\", new Value(Uint8Array.from([2]))],\n [\"01\", new Value(Uint8Array.from([1]))],\n [\"03\", new Value(Uint8Array.from([3]))],\n ]),\n inputMaps: [\n new Map<string, Value>([\n [\"09\", new Value(Uint8Array.from([9]))],\n [\"01\", new Value(Uint8Array.from([1]))],\n [\"07\", new Value(Uint8Array.from([7]))],\n ]),\n new Map<string, Value>([\n [\"07\", new Value(Uint8Array.from([7]))],\n [\"03\", new Value(Uint8Array.from([3]))],\n [\"01\", new Value(Uint8Array.from([1]))],\n ]),\n ],\n outputMaps: [\n new Map<string, Value>([\n [\"05\", new Value(Uint8Array.from([5]))],\n [\"06\", new Value(Uint8Array.from([6]))],\n [\"07\", new Value(Uint8Array.from([7]))],\n ]),\n ],\n };\n\n beforeEach(() => {\n jest.resetAllMocks();\n });\n\n it(\"Merkle map service failure\", () => {\n // Given\n const storeService = new DefaultDataStoreService(\n mockMerkleTreeBuilder as unknown as MerkleTreeBuilder,\n mockMerkleMapBuilder as unknown as MerkleMapBuilder,\n mockWalletSerializer,\n mockedHasherService,\n );\n const psbt = new Psbt(TEST_PSBT.globalMap, [], []);\n\n // When\n mockMerkleMapBuilder.build.mockReturnValueOnce(Left(new Error()));\n const commitment = storeService.merklizePsbt(\n mockDataStore as unknown as DataStore,\n psbt,\n );\n\n // Then\n expect(commitment.isRight()).toStrictEqual(false);\n });\n\n it(\"Merkle map service failure on inputs\", () => {\n // Given\n const storeService = new DefaultDataStoreService(\n mockMerkleTreeBuilder as unknown as MerkleTreeBuilder,\n mockMerkleMapBuilder as unknown as MerkleMapBuilder,\n mockWalletSerializer,\n mockedHasherService,\n );\n const psbt = new Psbt(TEST_PSBT.globalMap, TEST_PSBT.inputMaps, []);\n\n // When\n mockMerkleMapBuilder.build\n .mockReturnValueOnce(Right(createMerkleMap(42)))\n .mockReturnValueOnce(Right(createMerkleMap(43)))\n .mockReturnValueOnce(Left(new Error()));\n const commitment = storeService.merklizePsbt(\n mockDataStore as unknown as DataStore,\n psbt,\n );\n\n // Then\n expect(commitment.isRight()).toStrictEqual(false);\n });\n\n it(\"Merkle map service failure on outputs\", () => {\n // Given\n const storeService = new DefaultDataStoreService(\n mockMerkleTreeBuilder as unknown as MerkleTreeBuilder,\n mockMerkleMapBuilder as unknown as MerkleMapBuilder,\n mockWalletSerializer,\n mockedHasherService,\n );\n\n // When\n const psbt = new Psbt(\n TEST_PSBT.globalMap,\n TEST_PSBT.inputMaps,\n TEST_PSBT.outputMaps,\n );\n mockMerkleMapBuilder.build\n .mockReturnValueOnce(Right(createMerkleMap(42)))\n .mockReturnValueOnce(Right(createMerkleMap(43)))\n .mockReturnValueOnce(Right(createMerkleMap(44)))\n .mockReturnValueOnce(Left(new Error()));\n const commitment = storeService.merklizePsbt(\n mockDataStore as unknown as DataStore,\n psbt,\n );\n\n // Then\n expect(commitment.isRight()).toStrictEqual(false);\n });\n\n it(\"Maps should be ordered\", () => {\n // Given\n const storeService = new DefaultDataStoreService(\n mockMerkleTreeBuilder as unknown as MerkleTreeBuilder,\n mockMerkleMapBuilder as unknown as MerkleMapBuilder,\n mockWalletSerializer,\n mockedHasherService,\n );\n const psbt = new Psbt(\n TEST_PSBT.globalMap,\n TEST_PSBT.inputMaps,\n TEST_PSBT.outputMaps,\n );\n\n // When\n mockMerkleMapBuilder.build.mockReturnValue(Left(new Error()));\n storeService.merklizePsbt(mockDataStore as unknown as DataStore, psbt);\n\n // Then\n expect(mockMerkleMapBuilder.build).toHaveBeenCalledWith(\n [Uint8Array.from([1]), Uint8Array.from([2]), Uint8Array.from([3])],\n [Uint8Array.from([1]), Uint8Array.from([2]), Uint8Array.from([3])],\n );\n expect(mockMerkleMapBuilder.build).toHaveBeenCalledWith(\n [Uint8Array.from([1]), Uint8Array.from([7]), Uint8Array.from([9])],\n [Uint8Array.from([1]), Uint8Array.from([7]), Uint8Array.from([9])],\n );\n expect(mockMerkleMapBuilder.build).toHaveBeenCalledWith(\n [Uint8Array.from([1]), Uint8Array.from([3]), Uint8Array.from([7])],\n [Uint8Array.from([1]), Uint8Array.from([3]), Uint8Array.from([7])],\n );\n expect(mockMerkleMapBuilder.build).toHaveBeenCalledWith(\n [Uint8Array.from([5]), Uint8Array.from([6]), Uint8Array.from([7])],\n [Uint8Array.from([5]), Uint8Array.from([6]), Uint8Array.from([7])],\n );\n });\n\n it(\"Success case\", () => {\n // Given\n const merkleMap1 = createMerkleMap(42);\n const merkleMap2 = createMerkleMap(43);\n const merkleMap3 = createMerkleMap(44);\n const merkleMap4 = createMerkleMap(45);\n const merkleTree1 = createMerkleTree(91);\n const merkleTree2 = createMerkleTree(92);\n const storeService = new DefaultDataStoreService(\n mockMerkleTreeBuilder as unknown as MerkleTreeBuilder,\n mockMerkleMapBuilder as unknown as MerkleMapBuilder,\n mockWalletSerializer,\n mockedHasherService,\n );\n const psbt = new Psbt(\n TEST_PSBT.globalMap,\n TEST_PSBT.inputMaps,\n TEST_PSBT.outputMaps,\n );\n\n // When\n mockMerkleMapBuilder.build\n .mockReturnValueOnce(Right(merkleMap1))\n .mockReturnValueOnce(Right(merkleMap2))\n .mockReturnValueOnce(Right(merkleMap3))\n .mockReturnValueOnce(Right(merkleMap4));\n mockMerkleTreeBuilder.build\n .mockReturnValueOnce(merkleTree1)\n .mockReturnValueOnce(merkleTree2);\n const commitment = storeService.merklizePsbt(\n mockDataStore as unknown as DataStore,\n psbt,\n );\n\n // Then\n expect(mockDataStore.addMerkleMap).toHaveBeenCalledWith(merkleMap1);\n expect(mockDataStore.addMerkleMap).toHaveBeenCalledWith(merkleMap2);\n expect(mockDataStore.addMerkleMap).toHaveBeenCalledWith(merkleMap3);\n expect(mockDataStore.addMerkleMap).toHaveBeenCalledWith(merkleMap4);\n expect(mockDataStore.addMerkleTree).toHaveBeenCalledWith(merkleTree1);\n expect(mockDataStore.addMerkleTree).toHaveBeenCalledWith(merkleTree2);\n expect(mockMerkleTreeBuilder.build).toHaveBeenCalledWith([\n Uint8Array.from([43]),\n Uint8Array.from([44]),\n ]);\n expect(mockMerkleTreeBuilder.build).toHaveBeenCalledWith([\n Uint8Array.from([45]),\n ]);\n expect(commitment.isRight()).toStrictEqual(true);\n expect(commitment.unsafeCoerce()).toStrictEqual({\n globalCommitment: Uint8Array.from([42]),\n inputsRoot: Uint8Array.from([91]),\n outputsRoot: Uint8Array.from([92]),\n });\n });\n });\n});\n"],
|
|
5
|
-
"mappings": "aAAA,IAAAA,EAA4B,qBAG5BC,EAAqB,4CACrBC,EAA2B,kDAI3BC,EAAqB,qCACrBC,EAAsB,sCACtBC,EAAuB,yCAGvBC,EAAwC,qCAExC,SAAS,0BAA2B,IAAM,CACxC,MAAMC,EAAuB,CAC3B,MAAO,
|
|
4
|
+
"sourcesContent": ["import { Left, Right } from \"purify-ts\";\n\nimport { type DataStore } from \"@internal/data-store/model/DataStore\";\nimport { Leaf } from \"@internal/merkle-tree/model/Leaf\";\nimport { MerkleTree } from \"@internal/merkle-tree/model/MerkleTree\";\nimport { type HasherService } from \"@internal/merkle-tree/service/HasherService\";\nimport { type MerkleMapBuilder } from \"@internal/merkle-tree/service/MerkleMapBuilder\";\nimport { type MerkleTreeBuilder } from \"@internal/merkle-tree/service/MerkleTreeBuilder\";\nimport { Psbt } from \"@internal/psbt/model/Psbt\";\nimport { Value } from \"@internal/psbt/model/Value\";\nimport { Wallet } from \"@internal/wallet/model/Wallet\";\nimport { type WalletSerializer } from \"@internal/wallet/service/WalletSerializer\";\n\nimport { DefaultDataStoreService } from \"./DefaultDataStoreService\";\n\ndescribe(\"DefaultDataStoreService\", () => {\n const mockMerkleMapBuilder = {\n build: vi.fn(),\n };\n\n const mockMerkleTreeBuilder = {\n build: vi.fn(),\n };\n\n const mockWalletSerialize = vi.fn();\n const mockWalletSerializer: WalletSerializer = {\n serialize: mockWalletSerialize,\n getId: vi.fn(),\n };\n\n const mockDataStore = {\n getPreimage: vi.fn(),\n getMerkleLeafIndex: vi.fn(),\n getMerkleProof: vi.fn(),\n addPreimage: vi.fn(),\n addMerkleTree: vi.fn(),\n addMerkleMap: vi.fn(),\n };\n\n const mockedHash = vi.fn();\n const mockedHasherService: HasherService = {\n hash: mockedHash,\n };\n\n function createMerkleMap(commitment: number) {\n return {\n getCommitment: () => Uint8Array.from([commitment]),\n };\n }\n\n function createMerkleTree(root: number) {\n return {\n getRoot: () => Uint8Array.from([root]),\n };\n }\n\n describe(\"Merkleize chunks\", () => {\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n it(\"Success case\", () => {\n // Given\n const chunks = [\n Uint8Array.from([0]),\n Uint8Array.from([2]),\n Uint8Array.from([3]),\n ];\n const merkleTree = createMerkleTree(91);\n const storeService = new DefaultDataStoreService(\n mockMerkleTreeBuilder as unknown as MerkleTreeBuilder,\n mockMerkleMapBuilder as unknown as MerkleMapBuilder,\n mockWalletSerializer,\n mockedHasherService,\n );\n\n // When\n mockMerkleTreeBuilder.build.mockReturnValueOnce(merkleTree);\n const commitment = storeService.merklizeChunks(\n mockDataStore as unknown as DataStore,\n chunks,\n );\n\n // Then\n expect(mockMerkleTreeBuilder.build).toHaveBeenCalledWith(chunks);\n expect(mockDataStore.addMerkleTree).toHaveBeenCalledWith(merkleTree);\n expect(commitment).toStrictEqual(Uint8Array.from([91]));\n });\n });\n\n describe(\"Merkleize wallet\", () => {\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n it(\"Success case\", () => {\n // Given\n const merkleTree = new MerkleTree(\n new Leaf(new Uint8Array(), new Uint8Array(32).fill(7)),\n [],\n );\n const serialized = new Uint8Array(5).fill(6);\n const hash1 = new Uint8Array(5).fill(7);\n const hash2 = new Uint8Array(5).fill(8);\n const wallet = new Wallet({\n name: \"Cold storage\",\n descriptorTemplate: \"template descriptor\",\n keys: [\"key1\", \"key2\", \"key3\"],\n hmac: new Uint8Array(),\n keysTree: merkleTree,\n descriptorBuffer: new Uint8Array(32).fill(42),\n });\n const storeService = new DefaultDataStoreService(\n mockMerkleTreeBuilder as unknown as MerkleTreeBuilder,\n mockMerkleMapBuilder as unknown as MerkleMapBuilder,\n mockWalletSerializer,\n mockedHasherService,\n );\n\n // When\n mockWalletSerialize.mockReturnValueOnce(serialized);\n mockedHash.mockReturnValueOnce(hash1).mockReturnValueOnce(hash2);\n storeService.merklizeWallet(\n mockDataStore as unknown as DataStore,\n wallet,\n );\n\n // Then\n expect(mockWalletSerialize).toHaveBeenCalledWith(wallet);\n expect(mockedHash).toHaveBeenCalledWith(serialized);\n expect(mockedHash).toHaveBeenCalledWith(wallet.descriptorBuffer);\n expect(mockDataStore.addPreimage).toHaveBeenCalledWith(hash1, serialized);\n expect(mockDataStore.addPreimage).toHaveBeenCalledWith(\n hash2,\n new Uint8Array(32).fill(42),\n );\n expect(mockDataStore.addMerkleTree).toHaveBeenCalledWith(merkleTree);\n });\n });\n\n describe(\"Merkleize a PSBT\", () => {\n const TEST_PSBT = {\n globalMap: new Map<string, Value>([\n [\"02\", new Value(Uint8Array.from([2]))],\n [\"01\", new Value(Uint8Array.from([1]))],\n [\"03\", new Value(Uint8Array.from([3]))],\n ]),\n inputMaps: [\n new Map<string, Value>([\n [\"09\", new Value(Uint8Array.from([9]))],\n [\"01\", new Value(Uint8Array.from([1]))],\n [\"07\", new Value(Uint8Array.from([7]))],\n ]),\n new Map<string, Value>([\n [\"07\", new Value(Uint8Array.from([7]))],\n [\"03\", new Value(Uint8Array.from([3]))],\n [\"01\", new Value(Uint8Array.from([1]))],\n ]),\n ],\n outputMaps: [\n new Map<string, Value>([\n [\"05\", new Value(Uint8Array.from([5]))],\n [\"06\", new Value(Uint8Array.from([6]))],\n [\"07\", new Value(Uint8Array.from([7]))],\n ]),\n ],\n };\n\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n it(\"Merkle map service failure\", () => {\n // Given\n const storeService = new DefaultDataStoreService(\n mockMerkleTreeBuilder as unknown as MerkleTreeBuilder,\n mockMerkleMapBuilder as unknown as MerkleMapBuilder,\n mockWalletSerializer,\n mockedHasherService,\n );\n const psbt = new Psbt(TEST_PSBT.globalMap, [], []);\n\n // When\n mockMerkleMapBuilder.build.mockReturnValueOnce(Left(new Error()));\n const commitment = storeService.merklizePsbt(\n mockDataStore as unknown as DataStore,\n psbt,\n );\n\n // Then\n expect(commitment.isRight()).toStrictEqual(false);\n });\n\n it(\"Merkle map service failure on inputs\", () => {\n // Given\n const storeService = new DefaultDataStoreService(\n mockMerkleTreeBuilder as unknown as MerkleTreeBuilder,\n mockMerkleMapBuilder as unknown as MerkleMapBuilder,\n mockWalletSerializer,\n mockedHasherService,\n );\n const psbt = new Psbt(TEST_PSBT.globalMap, TEST_PSBT.inputMaps, []);\n\n // When\n mockMerkleMapBuilder.build\n .mockReturnValueOnce(Right(createMerkleMap(42)))\n .mockReturnValueOnce(Right(createMerkleMap(43)))\n .mockReturnValueOnce(Left(new Error()));\n const commitment = storeService.merklizePsbt(\n mockDataStore as unknown as DataStore,\n psbt,\n );\n\n // Then\n expect(commitment.isRight()).toStrictEqual(false);\n });\n\n it(\"Merkle map service failure on outputs\", () => {\n // Given\n const storeService = new DefaultDataStoreService(\n mockMerkleTreeBuilder as unknown as MerkleTreeBuilder,\n mockMerkleMapBuilder as unknown as MerkleMapBuilder,\n mockWalletSerializer,\n mockedHasherService,\n );\n\n // When\n const psbt = new Psbt(\n TEST_PSBT.globalMap,\n TEST_PSBT.inputMaps,\n TEST_PSBT.outputMaps,\n );\n mockMerkleMapBuilder.build\n .mockReturnValueOnce(Right(createMerkleMap(42)))\n .mockReturnValueOnce(Right(createMerkleMap(43)))\n .mockReturnValueOnce(Right(createMerkleMap(44)))\n .mockReturnValueOnce(Left(new Error()));\n const commitment = storeService.merklizePsbt(\n mockDataStore as unknown as DataStore,\n psbt,\n );\n\n // Then\n expect(commitment.isRight()).toStrictEqual(false);\n });\n\n it(\"Maps should be ordered\", () => {\n // Given\n const storeService = new DefaultDataStoreService(\n mockMerkleTreeBuilder as unknown as MerkleTreeBuilder,\n mockMerkleMapBuilder as unknown as MerkleMapBuilder,\n mockWalletSerializer,\n mockedHasherService,\n );\n const psbt = new Psbt(\n TEST_PSBT.globalMap,\n TEST_PSBT.inputMaps,\n TEST_PSBT.outputMaps,\n );\n\n // When\n mockMerkleMapBuilder.build.mockReturnValue(Left(new Error()));\n storeService.merklizePsbt(mockDataStore as unknown as DataStore, psbt);\n\n // Then\n expect(mockMerkleMapBuilder.build).toHaveBeenCalledWith(\n [Uint8Array.from([1]), Uint8Array.from([2]), Uint8Array.from([3])],\n [Uint8Array.from([1]), Uint8Array.from([2]), Uint8Array.from([3])],\n );\n expect(mockMerkleMapBuilder.build).toHaveBeenCalledWith(\n [Uint8Array.from([1]), Uint8Array.from([7]), Uint8Array.from([9])],\n [Uint8Array.from([1]), Uint8Array.from([7]), Uint8Array.from([9])],\n );\n expect(mockMerkleMapBuilder.build).toHaveBeenCalledWith(\n [Uint8Array.from([1]), Uint8Array.from([3]), Uint8Array.from([7])],\n [Uint8Array.from([1]), Uint8Array.from([3]), Uint8Array.from([7])],\n );\n expect(mockMerkleMapBuilder.build).toHaveBeenCalledWith(\n [Uint8Array.from([5]), Uint8Array.from([6]), Uint8Array.from([7])],\n [Uint8Array.from([5]), Uint8Array.from([6]), Uint8Array.from([7])],\n );\n });\n\n it(\"Success case\", () => {\n // Given\n const merkleMap1 = createMerkleMap(42);\n const merkleMap2 = createMerkleMap(43);\n const merkleMap3 = createMerkleMap(44);\n const merkleMap4 = createMerkleMap(45);\n const merkleTree1 = createMerkleTree(91);\n const merkleTree2 = createMerkleTree(92);\n const storeService = new DefaultDataStoreService(\n mockMerkleTreeBuilder as unknown as MerkleTreeBuilder,\n mockMerkleMapBuilder as unknown as MerkleMapBuilder,\n mockWalletSerializer,\n mockedHasherService,\n );\n const psbt = new Psbt(\n TEST_PSBT.globalMap,\n TEST_PSBT.inputMaps,\n TEST_PSBT.outputMaps,\n );\n\n // When\n mockMerkleMapBuilder.build\n .mockReturnValueOnce(Right(merkleMap1))\n .mockReturnValueOnce(Right(merkleMap2))\n .mockReturnValueOnce(Right(merkleMap3))\n .mockReturnValueOnce(Right(merkleMap4));\n mockMerkleTreeBuilder.build\n .mockReturnValueOnce(merkleTree1)\n .mockReturnValueOnce(merkleTree2);\n const commitment = storeService.merklizePsbt(\n mockDataStore as unknown as DataStore,\n psbt,\n );\n\n // Then\n expect(mockDataStore.addMerkleMap).toHaveBeenCalledWith(merkleMap1);\n expect(mockDataStore.addMerkleMap).toHaveBeenCalledWith(merkleMap2);\n expect(mockDataStore.addMerkleMap).toHaveBeenCalledWith(merkleMap3);\n expect(mockDataStore.addMerkleMap).toHaveBeenCalledWith(merkleMap4);\n expect(mockDataStore.addMerkleTree).toHaveBeenCalledWith(merkleTree1);\n expect(mockDataStore.addMerkleTree).toHaveBeenCalledWith(merkleTree2);\n expect(mockMerkleTreeBuilder.build).toHaveBeenCalledWith([\n Uint8Array.from([43]),\n Uint8Array.from([44]),\n ]);\n expect(mockMerkleTreeBuilder.build).toHaveBeenCalledWith([\n Uint8Array.from([45]),\n ]);\n expect(commitment.isRight()).toStrictEqual(true);\n expect(commitment.unsafeCoerce()).toStrictEqual({\n globalCommitment: Uint8Array.from([42]),\n inputsRoot: Uint8Array.from([91]),\n outputsRoot: Uint8Array.from([92]),\n });\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["import_purify_ts", "import_Leaf", "import_MerkleTree", "import_Psbt", "import_Value", "import_Wallet", "import_DefaultDataStoreService", "mockMerkleMapBuilder", "mockMerkleTreeBuilder", "mockWalletSerialize", "mockWalletSerializer", "mockDataStore", "mockedHash", "mockedHasherService", "createMerkleMap", "commitment", "createMerkleTree", "root", "chunks", "merkleTree", "storeService", "serialized", "hash1", "hash2", "wallet", "TEST_PSBT", "psbt", "merkleMap1", "merkleMap2", "merkleMap3", "merkleMap4", "merkleTree1", "merkleTree2"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var a=require("./MerkleMapBuilder");describe("MerkleMapBuilder",()=>{const r=[Uint8Array.from([0,1,2,3]),Uint8Array.from([0,1,2,4]),Uint8Array.from([0,1,2,5]),Uint8Array.from([0,2,2,3]),Uint8Array.from([1,1,2,3])],t=[Uint8Array.from([0,0]),Uint8Array.from([255,255,255,255]),Uint8Array.from([0,1,2,5]),Uint8Array.from([0,255]),Uint8Array.from([254,57])],o=
|
|
1
|
+
"use strict";var a=require("./MerkleMapBuilder");describe("MerkleMapBuilder",()=>{const r=[Uint8Array.from([0,1,2,3]),Uint8Array.from([0,1,2,4]),Uint8Array.from([0,1,2,5]),Uint8Array.from([0,2,2,3]),Uint8Array.from([1,1,2,3])],t=[Uint8Array.from([0,0]),Uint8Array.from([255,255,255,255]),Uint8Array.from([0,1,2,5]),Uint8Array.from([0,255]),Uint8Array.from([254,57])],o=vi.fn(),l={build:o};let i;beforeEach(()=>{vi.resetAllMocks(),i=new a.MerkleMapBuilder(l)}),it("Invalid value count",()=>{const e=i.build(r,[Uint8Array.from([0]),...t]);expect(e.isRight()).toStrictEqual(!1)}),it("Invalid ordering",()=>{const e=i.build([Uint8Array.from([0,1,2,5]),...r],[Uint8Array.from([0]),...t]);expect(e.isRight()).toStrictEqual(!1)}),it("Dupplicate key",()=>{const e=i.build([Uint8Array.from([0,1,2,3]),...r],[Uint8Array.from([0]),...t]);expect(e.isRight()).toStrictEqual(!1)}),it("correct value",()=>{o.mockReturnValueOnce({getRoot:()=>Uint8Array.from([42,43]),size:()=>r.length}).mockReturnValueOnce({getRoot:()=>Uint8Array.from([44,45]),size:()=>t.length});const e=i.build(r,t);expect(e.isRight()).toStrictEqual(!0),expect(o).toHaveBeenCalledWith(r),expect(o).toHaveBeenCalledWith(t)})});
|
|
2
2
|
//# sourceMappingURL=MerkleMapBuilder.test.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/merkle-tree/service/MerkleMapBuilder.test.ts"],
|
|
4
|
-
"sourcesContent": ["import { type MerkleTreeBuilder } from \"@internal/merkle-tree/service/MerkleTreeBuilder\";\n\nimport { MerkleMapBuilder } from \"./MerkleMapBuilder\";\n\ndescribe(\"MerkleMapBuilder\", () => {\n const TEST_KEYS = [\n Uint8Array.from([0, 1, 2, 3]),\n Uint8Array.from([0, 1, 2, 4]),\n Uint8Array.from([0, 1, 2, 5]),\n Uint8Array.from([0, 2, 2, 3]),\n Uint8Array.from([1, 1, 2, 3]),\n ];\n\n const TEST_VALUES = [\n Uint8Array.from([0, 0]),\n Uint8Array.from([0xff, 0xff, 0xff, 0xff]),\n Uint8Array.from([0, 1, 2, 5]),\n Uint8Array.from([0, 0xff]),\n Uint8Array.from([0xfe, 57]),\n ];\n\n const mockCreateMerkleTree =
|
|
5
|
-
"mappings": "aAEA,IAAAA,EAAiC,8BAEjC,SAAS,mBAAoB,IAAM,CACjC,MAAMC,EAAY,CAChB,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,CAAC,CAAC,EAC5B,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,CAAC,CAAC,EAC5B,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,CAAC,CAAC,EAC5B,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,CAAC,CAAC,EAC5B,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,CAAC,CAAC,CAC9B,EAEMC,EAAc,CAClB,WAAW,KAAK,CAAC,EAAG,CAAC,CAAC,EACtB,WAAW,KAAK,CAAC,IAAM,IAAM,IAAM,GAAI,CAAC,EACxC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,CAAC,CAAC,EAC5B,WAAW,KAAK,CAAC,EAAG,GAAI,CAAC,EACzB,WAAW,KAAK,CAAC,IAAM,EAAE,CAAC,CAC5B,EAEMC,EAAuB,
|
|
4
|
+
"sourcesContent": ["import { type MerkleTreeBuilder } from \"@internal/merkle-tree/service/MerkleTreeBuilder\";\n\nimport { MerkleMapBuilder } from \"./MerkleMapBuilder\";\n\ndescribe(\"MerkleMapBuilder\", () => {\n const TEST_KEYS = [\n Uint8Array.from([0, 1, 2, 3]),\n Uint8Array.from([0, 1, 2, 4]),\n Uint8Array.from([0, 1, 2, 5]),\n Uint8Array.from([0, 2, 2, 3]),\n Uint8Array.from([1, 1, 2, 3]),\n ];\n\n const TEST_VALUES = [\n Uint8Array.from([0, 0]),\n Uint8Array.from([0xff, 0xff, 0xff, 0xff]),\n Uint8Array.from([0, 1, 2, 5]),\n Uint8Array.from([0, 0xff]),\n Uint8Array.from([0xfe, 57]),\n ];\n\n const mockCreateMerkleTree = vi.fn();\n const mockMerkleTree: MerkleTreeBuilder = {\n build: mockCreateMerkleTree,\n } as unknown as MerkleTreeBuilder;\n let builder: MerkleMapBuilder;\n\n beforeEach(() => {\n vi.resetAllMocks();\n builder = new MerkleMapBuilder(mockMerkleTree);\n });\n\n it(\"Invalid value count\", () => {\n const eitherMap = builder.build(TEST_KEYS, [\n Uint8Array.from([0]),\n ...TEST_VALUES,\n ]);\n expect(eitherMap.isRight()).toStrictEqual(false);\n });\n\n it(\"Invalid ordering\", () => {\n const eitherMap = builder.build(\n [Uint8Array.from([0, 1, 2, 5]), ...TEST_KEYS],\n [Uint8Array.from([0]), ...TEST_VALUES],\n );\n expect(eitherMap.isRight()).toStrictEqual(false);\n });\n\n it(\"Dupplicate key\", () => {\n const eitherMap = builder.build(\n [Uint8Array.from([0, 1, 2, 3]), ...TEST_KEYS],\n [Uint8Array.from([0]), ...TEST_VALUES],\n );\n expect(eitherMap.isRight()).toStrictEqual(false);\n });\n\n it(\"correct value\", () => {\n mockCreateMerkleTree\n .mockReturnValueOnce({\n getRoot: () => Uint8Array.from([42, 43]),\n size: () => TEST_KEYS.length,\n })\n .mockReturnValueOnce({\n getRoot: () => Uint8Array.from([44, 45]),\n size: () => TEST_VALUES.length,\n });\n\n const eitherMap = builder.build(TEST_KEYS, TEST_VALUES);\n expect(eitherMap.isRight()).toStrictEqual(true);\n expect(mockCreateMerkleTree).toHaveBeenCalledWith(TEST_KEYS);\n expect(mockCreateMerkleTree).toHaveBeenCalledWith(TEST_VALUES);\n });\n});\n"],
|
|
5
|
+
"mappings": "aAEA,IAAAA,EAAiC,8BAEjC,SAAS,mBAAoB,IAAM,CACjC,MAAMC,EAAY,CAChB,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,CAAC,CAAC,EAC5B,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,CAAC,CAAC,EAC5B,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,CAAC,CAAC,EAC5B,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,CAAC,CAAC,EAC5B,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,CAAC,CAAC,CAC9B,EAEMC,EAAc,CAClB,WAAW,KAAK,CAAC,EAAG,CAAC,CAAC,EACtB,WAAW,KAAK,CAAC,IAAM,IAAM,IAAM,GAAI,CAAC,EACxC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,CAAC,CAAC,EAC5B,WAAW,KAAK,CAAC,EAAG,GAAI,CAAC,EACzB,WAAW,KAAK,CAAC,IAAM,EAAE,CAAC,CAC5B,EAEMC,EAAuB,GAAG,GAAG,EAC7BC,EAAoC,CACxC,MAAOD,CACT,EACA,IAAIE,EAEJ,WAAW,IAAM,CACf,GAAG,cAAc,EACjBA,EAAU,IAAI,mBAAiBD,CAAc,CAC/C,CAAC,EAED,GAAG,sBAAuB,IAAM,CAC9B,MAAME,EAAYD,EAAQ,MAAMJ,EAAW,CACzC,WAAW,KAAK,CAAC,CAAC,CAAC,EACnB,GAAGC,CACL,CAAC,EACD,OAAOI,EAAU,QAAQ,CAAC,EAAE,cAAc,EAAK,CACjD,CAAC,EAED,GAAG,mBAAoB,IAAM,CAC3B,MAAMA,EAAYD,EAAQ,MACxB,CAAC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,CAAC,CAAC,EAAG,GAAGJ,CAAS,EAC5C,CAAC,WAAW,KAAK,CAAC,CAAC,CAAC,EAAG,GAAGC,CAAW,CACvC,EACA,OAAOI,EAAU,QAAQ,CAAC,EAAE,cAAc,EAAK,CACjD,CAAC,EAED,GAAG,iBAAkB,IAAM,CACzB,MAAMA,EAAYD,EAAQ,MACxB,CAAC,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,CAAC,CAAC,EAAG,GAAGJ,CAAS,EAC5C,CAAC,WAAW,KAAK,CAAC,CAAC,CAAC,EAAG,GAAGC,CAAW,CACvC,EACA,OAAOI,EAAU,QAAQ,CAAC,EAAE,cAAc,EAAK,CACjD,CAAC,EAED,GAAG,gBAAiB,IAAM,CACxBH,EACG,oBAAoB,CACnB,QAAS,IAAM,WAAW,KAAK,CAAC,GAAI,EAAE,CAAC,EACvC,KAAM,IAAMF,EAAU,MACxB,CAAC,EACA,oBAAoB,CACnB,QAAS,IAAM,WAAW,KAAK,CAAC,GAAI,EAAE,CAAC,EACvC,KAAM,IAAMC,EAAY,MAC1B,CAAC,EAEH,MAAMI,EAAYD,EAAQ,MAAMJ,EAAWC,CAAW,EACtD,OAAOI,EAAU,QAAQ,CAAC,EAAE,cAAc,EAAI,EAC9C,OAAOH,CAAoB,EAAE,qBAAqBF,CAAS,EAC3D,OAAOE,CAAoB,EAAE,qBAAqBD,CAAW,CAC/D,CAAC,CACH,CAAC",
|
|
6
6
|
"names": ["import_MerkleMapBuilder", "TEST_KEYS", "TEST_VALUES", "mockCreateMerkleTree", "mockMerkleTree", "builder", "eitherMap"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("@ledgerhq/device-management-kit"),d=require("purify-ts"),
|
|
1
|
+
"use strict";var e=require("@ledgerhq/device-management-kit"),d=require("purify-ts"),s=require("./MerkleTreeBuilder"),l=require("./Sha256HasherService");const i={data:[],leaves:[],nodes:[],root:(0,e.hexaStringToBuffer)("0000000000000000000000000000000000000000000000000000000000000000")},n={data:[Uint8Array.from([42,43])],leaves:[Uint8Array.from([0,42,43])],nodes:[],root:(0,e.hexaStringToBuffer)("8a707e40cad3d1070b0a1c87dd362cdf4d546e6d2a7aaf155c798932f71de4ad")},b={data:[Uint8Array.from([0,1,2,3,4]),Uint8Array.from([5,6,7,8,9])],leaves:[Uint8Array.from([0,0,1,2,3,4]),Uint8Array.from([0,5,6,7,8,9])],nodes:[[(0,e.hexaStringToBuffer)("9d1cf1e12fa64e20ccd2a5387504b99e89e24ef55dba8399637c3f5b6615c0ad"),(0,e.hexaStringToBuffer)("7dc17a7849e10103f73b8fa5a4b829f6292a1a59272e0e0c9def83a9c0f86de1")]],root:(0,e.hexaStringToBuffer)("dc65c307a70fb21f4c8ea0cdfc5ff3291adae1db9ce5410b93dcb43c5eddd793")},r={data:[Uint8Array.from([0]),Uint8Array.from([1]),Uint8Array.from([2]),Uint8Array.from([3])],leaves:[Uint8Array.from([0,0]),Uint8Array.from([0,1]),Uint8Array.from([0,2]),Uint8Array.from([0,3])],nodes:[[(0,e.hexaStringToBuffer)("96a296d224f285c67bee93c30f8a309157f0daa35dc5b87e410b78630a09cfc7"),(0,e.hexaStringToBuffer)("b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2"),(0,e.hexaStringToBuffer)("fcf0a6c700dd13e274b6fba8deea8dd9b26e4eedde3495717cac8408c9c5177f"),(0,e.hexaStringToBuffer)("583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d")],[(0,e.hexaStringToBuffer)("a20bf9a7cc2dc8a08f5f415a71b19f6ac427bab54d24eec868b5d3103449953a"),(0,e.hexaStringToBuffer)("52c56b473e5246933e7852989cd9feba3b38f078742b93afff1e65ed46797825")]],root:(0,e.hexaStringToBuffer)("9bcd51240af4005168f033121ba85be5a6ed4f0e6a5fac262066729b8fbfdecb")},f={data:[Uint8Array.from([0]),Uint8Array.from([1]),Uint8Array.from([2]),Uint8Array.from([3]),Uint8Array.from([4]),Uint8Array.from([5]),Uint8Array.from([6]),Uint8Array.from([7]),Uint8Array.from([8]),Uint8Array.from([9]),Uint8Array.from([10])],leaves:[Uint8Array.from([0,0]),Uint8Array.from([0,1]),Uint8Array.from([0,2]),Uint8Array.from([0,3]),Uint8Array.from([0,4]),Uint8Array.from([0,5]),Uint8Array.from([0,6]),Uint8Array.from([0,7]),Uint8Array.from([0,8]),Uint8Array.from([0,9]),Uint8Array.from([0,10])],nodes:[[(0,e.hexaStringToBuffer)("96a296d224f285c67bee93c30f8a309157f0daa35dc5b87e410b78630a09cfc7"),(0,e.hexaStringToBuffer)("b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2"),(0,e.hexaStringToBuffer)("fcf0a6c700dd13e274b6fba8deea8dd9b26e4eedde3495717cac8408c9c5177f"),(0,e.hexaStringToBuffer)("583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d"),(0,e.hexaStringToBuffer)("4f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a4"),(0,e.hexaStringToBuffer)("9f1afa4dc124cba73134e82ff50f17c8f7164257c79fed9a13f5943a6acb8e3d"),(0,e.hexaStringToBuffer)("40d88127d4d31a3891f41598eeed41174e5bc89b1eb9bbd66a8cbfc09956a3fd"),(0,e.hexaStringToBuffer)("2ecd8a6b7d2845546659ad4cf443533cf921b19dc81fa83934e83821b4dfdcb7"),(0,e.hexaStringToBuffer)("b4c43b50bf245bd727623e3c775a8fcfb8d823d00b57dd65f7f79dd33f126315"),(0,e.hexaStringToBuffer)("c87479cd656e7e3ad6bd8db402e8027df454b2b0c42ff29e093458beb98a23d4"),(0,e.hexaStringToBuffer)("67ebbd370daa02ba9aadd05d8e091e862d0d8bcadafdf2a22360240a42fe922e")],[(0,e.hexaStringToBuffer)("a20bf9a7cc2dc8a08f5f415a71b19f6ac427bab54d24eec868b5d3103449953a"),(0,e.hexaStringToBuffer)("52c56b473e5246933e7852989cd9feba3b38f078742b93afff1e65ed46797825"),(0,e.hexaStringToBuffer)("4b8c129ed14cce2c08cfc6766db7f8cdb133b5f698b8de3d5890ea7ff7f0a8d1"),(0,e.hexaStringToBuffer)("bbb0feb32f648c73fe170518bcec1f675af1b780dc23d6fbf30b745c1ca5fa11"),(0,e.hexaStringToBuffer)("f7e08e9a9e87822bd79a0bf24d14c7a431be807336bd3c50ccb2d249b2a91404"),(0,e.hexaStringToBuffer)("67ebbd370daa02ba9aadd05d8e091e862d0d8bcadafdf2a22360240a42fe922e")],[(0,e.hexaStringToBuffer)("9bcd51240af4005168f033121ba85be5a6ed4f0e6a5fac262066729b8fbfdecb"),(0,e.hexaStringToBuffer)("c1fe42b33ebb8e8a7e4a90abc481c7434e2be02cff2f6a18d7ffab4f1e25891b"),(0,e.hexaStringToBuffer)("e4b894272eb88bed1830cbef82d1c7aee37612a9e7131a5bdd0ae1a6e8f3ff50")],[(0,e.hexaStringToBuffer)("ef7f49b620f6c7ea9b963a214da34b5021c6ded8ed57734380a311ab726aa907"),(0,e.hexaStringToBuffer)("e4b894272eb88bed1830cbef82d1c7aee37612a9e7131a5bdd0ae1a6e8f3ff50")]],root:(0,e.hexaStringToBuffer)("e177ad5a8a17108dad67c70a51266681aa02b9e2b7ad6a0357585ba4289982ac")};describe("MerkleTreeBuilder",()=>{let c;beforeEach(()=>{vi.resetAllMocks(),c=new s.MerkleTreeBuilder(new l.Sha256HasherService)}),it("Get small tree root and leaves",()=>{const a=c.build(r.data);expect(a.getRoot()).toStrictEqual(r.root),expect(a.size()).toStrictEqual(r.leaves.length),expect(a.getLeaves().map(t=>t.value)).toStrictEqual(r.leaves),expect(a.getLeaves().map(t=>t.hash)).toStrictEqual(r.nodes[0]),r.nodes[0].forEach((t,o)=>{expect(a.getLeafHash(o)).toStrictEqual((0,d.Just)(t))}),expect(a.getLeafHash(-1)).toStrictEqual(d.Nothing),expect(a.getLeafHash(r.nodes[0].length)).toStrictEqual(d.Nothing)}),it("Get big tree root and leaves",()=>{const a=c.build(f.data);expect(a.getRoot()).toStrictEqual(f.root),expect(a.size()).toStrictEqual(f.leaves.length),expect(a.getLeaves().map(t=>t.value)).toStrictEqual(f.leaves),expect(a.getLeaves().map(t=>t.hash)).toStrictEqual(f.nodes[0]),f.nodes[0].forEach((t,o)=>{expect(a.getLeafHash(o)).toStrictEqual((0,d.Just)(t))}),expect(a.getLeafHash(-1)).toStrictEqual(d.Nothing),expect(a.getLeafHash(f.nodes[0].length)).toStrictEqual(d.Nothing)}),it("Get small tree merkle proof",()=>{const t=c.build(r.data).getProof(2);expect(t.isJust()).toStrictEqual(!0);const o=t.unsafeCoerce();expect(o).toStrictEqual([r.nodes[0][3],r.nodes[1][0]])}),it("Get big tree merkle proof",()=>{const t=c.build(f.data).getProof(2);expect(t.isJust()).toStrictEqual(!0);const o=t.unsafeCoerce();expect(o).toStrictEqual([f.nodes[0][3],f.nodes[1][0],f.nodes[2][1],f.nodes[3][1]])}),it("Get out-of-bound merkle proof",()=>{const a=c.build(r.data);let t=a.getProof(-1);expect(t.isJust()).toStrictEqual(!1),t=a.getProof(5),expect(t.isJust()).toStrictEqual(!1)}),it("Empty tree",()=>{const a=c.build(i.data);expect(a.getRoot()).toStrictEqual(i.root);const t=a.getProof(0);expect(t.isJust()).toStrictEqual(!1)}),it("One-leaf tree",()=>{const a=c.build(n.data);expect(a.getRoot()).toStrictEqual(n.root);const t=a.getProof(0);expect(t.isJust()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([])}),it("Tiny tree",()=>{const a=c.build(b.data);expect(a.getRoot()).toStrictEqual(b.root);const t=a.getProof(0);expect(t.isJust()).toStrictEqual(!0),expect(t.unsafeCoerce()).toStrictEqual([b.nodes[0][1]])})});
|
|
2
2
|
//# sourceMappingURL=MerkleTreeBuilder.test.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/merkle-tree/service/MerkleTreeBuilder.test.ts"],
|
|
4
|
-
"sourcesContent": ["import { hexaStringToBuffer } from \"@ledgerhq/device-management-kit\";\nimport { Just, Nothing } from \"purify-ts\";\n\nimport { MerkleTreeBuilder } from \"./MerkleTreeBuilder\";\nimport { Sha256HasherService } from \"./Sha256HasherService\";\n\nconst EMPTY_TREE = {\n data: [],\n leaves: [],\n nodes: [],\n root: hexaStringToBuffer(\n \"0000000000000000000000000000000000000000000000000000000000000000\",\n ),\n};\n\nconst ONE_LEAF_TREE = {\n data: [Uint8Array.from([42, 43])],\n leaves: [Uint8Array.from([0, 42, 43])],\n nodes: [],\n root: hexaStringToBuffer(\n \"8a707e40cad3d1070b0a1c87dd362cdf4d546e6d2a7aaf155c798932f71de4ad\",\n ),\n};\n\nconst TINY_TREE = {\n data: [Uint8Array.from([0, 1, 2, 3, 4]), Uint8Array.from([5, 6, 7, 8, 9])],\n leaves: [\n Uint8Array.from([0, 0, 1, 2, 3, 4]),\n Uint8Array.from([0, 5, 6, 7, 8, 9]),\n ],\n nodes: [\n [\n hexaStringToBuffer(\n \"9d1cf1e12fa64e20ccd2a5387504b99e89e24ef55dba8399637c3f5b6615c0ad\",\n )!,\n hexaStringToBuffer(\n \"7dc17a7849e10103f73b8fa5a4b829f6292a1a59272e0e0c9def83a9c0f86de1\",\n )!,\n ],\n ],\n root: hexaStringToBuffer(\n \"dc65c307a70fb21f4c8ea0cdfc5ff3291adae1db9ce5410b93dcb43c5eddd793\",\n )!,\n};\n\nconst SMALL_TREE = {\n data: [\n Uint8Array.from([0]),\n Uint8Array.from([1]),\n Uint8Array.from([2]),\n Uint8Array.from([3]),\n ],\n leaves: [\n Uint8Array.from([0, 0]),\n Uint8Array.from([0, 1]),\n Uint8Array.from([0, 2]),\n Uint8Array.from([0, 3]),\n ],\n nodes: [\n [\n hexaStringToBuffer(\n \"96a296d224f285c67bee93c30f8a309157f0daa35dc5b87e410b78630a09cfc7\",\n )!,\n hexaStringToBuffer(\n \"b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2\",\n )!,\n hexaStringToBuffer(\n \"fcf0a6c700dd13e274b6fba8deea8dd9b26e4eedde3495717cac8408c9c5177f\",\n )!,\n hexaStringToBuffer(\n \"583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d\",\n )!,\n ],\n [\n hexaStringToBuffer(\n \"a20bf9a7cc2dc8a08f5f415a71b19f6ac427bab54d24eec868b5d3103449953a\",\n )!,\n hexaStringToBuffer(\n \"52c56b473e5246933e7852989cd9feba3b38f078742b93afff1e65ed46797825\",\n )!,\n ],\n ],\n root: hexaStringToBuffer(\n \"9bcd51240af4005168f033121ba85be5a6ed4f0e6a5fac262066729b8fbfdecb\",\n )!,\n};\n\nconst BIG_TREE = {\n data: [\n Uint8Array.from([0]),\n Uint8Array.from([1]),\n Uint8Array.from([2]),\n Uint8Array.from([3]),\n Uint8Array.from([4]),\n Uint8Array.from([5]),\n Uint8Array.from([6]),\n Uint8Array.from([7]),\n Uint8Array.from([8]),\n Uint8Array.from([9]),\n Uint8Array.from([10]),\n ],\n leaves: [\n Uint8Array.from([0, 0]),\n Uint8Array.from([0, 1]),\n Uint8Array.from([0, 2]),\n Uint8Array.from([0, 3]),\n Uint8Array.from([0, 4]),\n Uint8Array.from([0, 5]),\n Uint8Array.from([0, 6]),\n Uint8Array.from([0, 7]),\n Uint8Array.from([0, 8]),\n Uint8Array.from([0, 9]),\n Uint8Array.from([0, 10]),\n ],\n nodes: [\n [\n hexaStringToBuffer(\n \"96a296d224f285c67bee93c30f8a309157f0daa35dc5b87e410b78630a09cfc7\",\n )!,\n hexaStringToBuffer(\n \"b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2\",\n )!,\n hexaStringToBuffer(\n \"fcf0a6c700dd13e274b6fba8deea8dd9b26e4eedde3495717cac8408c9c5177f\",\n )!,\n hexaStringToBuffer(\n \"583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d\",\n )!,\n hexaStringToBuffer(\n \"4f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a4\",\n )!,\n hexaStringToBuffer(\n \"9f1afa4dc124cba73134e82ff50f17c8f7164257c79fed9a13f5943a6acb8e3d\",\n )!,\n hexaStringToBuffer(\n \"40d88127d4d31a3891f41598eeed41174e5bc89b1eb9bbd66a8cbfc09956a3fd\",\n )!,\n hexaStringToBuffer(\n \"2ecd8a6b7d2845546659ad4cf443533cf921b19dc81fa83934e83821b4dfdcb7\",\n )!,\n hexaStringToBuffer(\n \"b4c43b50bf245bd727623e3c775a8fcfb8d823d00b57dd65f7f79dd33f126315\",\n )!,\n hexaStringToBuffer(\n \"c87479cd656e7e3ad6bd8db402e8027df454b2b0c42ff29e093458beb98a23d4\",\n )!,\n hexaStringToBuffer(\n \"67ebbd370daa02ba9aadd05d8e091e862d0d8bcadafdf2a22360240a42fe922e\",\n )!,\n ],\n [\n hexaStringToBuffer(\n \"a20bf9a7cc2dc8a08f5f415a71b19f6ac427bab54d24eec868b5d3103449953a\",\n )!,\n hexaStringToBuffer(\n \"52c56b473e5246933e7852989cd9feba3b38f078742b93afff1e65ed46797825\",\n )!,\n hexaStringToBuffer(\n \"4b8c129ed14cce2c08cfc6766db7f8cdb133b5f698b8de3d5890ea7ff7f0a8d1\",\n )!,\n hexaStringToBuffer(\n \"bbb0feb32f648c73fe170518bcec1f675af1b780dc23d6fbf30b745c1ca5fa11\",\n )!,\n hexaStringToBuffer(\n \"f7e08e9a9e87822bd79a0bf24d14c7a431be807336bd3c50ccb2d249b2a91404\",\n )!,\n hexaStringToBuffer(\n \"67ebbd370daa02ba9aadd05d8e091e862d0d8bcadafdf2a22360240a42fe922e\",\n )!,\n ],\n [\n hexaStringToBuffer(\n \"9bcd51240af4005168f033121ba85be5a6ed4f0e6a5fac262066729b8fbfdecb\",\n )!,\n hexaStringToBuffer(\n \"c1fe42b33ebb8e8a7e4a90abc481c7434e2be02cff2f6a18d7ffab4f1e25891b\",\n )!,\n hexaStringToBuffer(\n \"e4b894272eb88bed1830cbef82d1c7aee37612a9e7131a5bdd0ae1a6e8f3ff50\",\n )!,\n ],\n [\n hexaStringToBuffer(\n \"ef7f49b620f6c7ea9b963a214da34b5021c6ded8ed57734380a311ab726aa907\",\n )!,\n hexaStringToBuffer(\n \"e4b894272eb88bed1830cbef82d1c7aee37612a9e7131a5bdd0ae1a6e8f3ff50\",\n )!,\n ],\n ],\n root: hexaStringToBuffer(\n \"e177ad5a8a17108dad67c70a51266681aa02b9e2b7ad6a0357585ba4289982ac\",\n )!,\n};\n\ndescribe(\"MerkleTreeBuilder\", () => {\n let builder: MerkleTreeBuilder;\n\n beforeEach(() => {\n
|
|
5
|
-
"mappings": "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
|
|
4
|
+
"sourcesContent": ["import { hexaStringToBuffer } from \"@ledgerhq/device-management-kit\";\nimport { Just, Nothing } from \"purify-ts\";\n\nimport { MerkleTreeBuilder } from \"./MerkleTreeBuilder\";\nimport { Sha256HasherService } from \"./Sha256HasherService\";\n\nconst EMPTY_TREE = {\n data: [],\n leaves: [],\n nodes: [],\n root: hexaStringToBuffer(\n \"0000000000000000000000000000000000000000000000000000000000000000\",\n ),\n};\n\nconst ONE_LEAF_TREE = {\n data: [Uint8Array.from([42, 43])],\n leaves: [Uint8Array.from([0, 42, 43])],\n nodes: [],\n root: hexaStringToBuffer(\n \"8a707e40cad3d1070b0a1c87dd362cdf4d546e6d2a7aaf155c798932f71de4ad\",\n ),\n};\n\nconst TINY_TREE = {\n data: [Uint8Array.from([0, 1, 2, 3, 4]), Uint8Array.from([5, 6, 7, 8, 9])],\n leaves: [\n Uint8Array.from([0, 0, 1, 2, 3, 4]),\n Uint8Array.from([0, 5, 6, 7, 8, 9]),\n ],\n nodes: [\n [\n hexaStringToBuffer(\n \"9d1cf1e12fa64e20ccd2a5387504b99e89e24ef55dba8399637c3f5b6615c0ad\",\n )!,\n hexaStringToBuffer(\n \"7dc17a7849e10103f73b8fa5a4b829f6292a1a59272e0e0c9def83a9c0f86de1\",\n )!,\n ],\n ],\n root: hexaStringToBuffer(\n \"dc65c307a70fb21f4c8ea0cdfc5ff3291adae1db9ce5410b93dcb43c5eddd793\",\n )!,\n};\n\nconst SMALL_TREE = {\n data: [\n Uint8Array.from([0]),\n Uint8Array.from([1]),\n Uint8Array.from([2]),\n Uint8Array.from([3]),\n ],\n leaves: [\n Uint8Array.from([0, 0]),\n Uint8Array.from([0, 1]),\n Uint8Array.from([0, 2]),\n Uint8Array.from([0, 3]),\n ],\n nodes: [\n [\n hexaStringToBuffer(\n \"96a296d224f285c67bee93c30f8a309157f0daa35dc5b87e410b78630a09cfc7\",\n )!,\n hexaStringToBuffer(\n \"b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2\",\n )!,\n hexaStringToBuffer(\n \"fcf0a6c700dd13e274b6fba8deea8dd9b26e4eedde3495717cac8408c9c5177f\",\n )!,\n hexaStringToBuffer(\n \"583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d\",\n )!,\n ],\n [\n hexaStringToBuffer(\n \"a20bf9a7cc2dc8a08f5f415a71b19f6ac427bab54d24eec868b5d3103449953a\",\n )!,\n hexaStringToBuffer(\n \"52c56b473e5246933e7852989cd9feba3b38f078742b93afff1e65ed46797825\",\n )!,\n ],\n ],\n root: hexaStringToBuffer(\n \"9bcd51240af4005168f033121ba85be5a6ed4f0e6a5fac262066729b8fbfdecb\",\n )!,\n};\n\nconst BIG_TREE = {\n data: [\n Uint8Array.from([0]),\n Uint8Array.from([1]),\n Uint8Array.from([2]),\n Uint8Array.from([3]),\n Uint8Array.from([4]),\n Uint8Array.from([5]),\n Uint8Array.from([6]),\n Uint8Array.from([7]),\n Uint8Array.from([8]),\n Uint8Array.from([9]),\n Uint8Array.from([10]),\n ],\n leaves: [\n Uint8Array.from([0, 0]),\n Uint8Array.from([0, 1]),\n Uint8Array.from([0, 2]),\n Uint8Array.from([0, 3]),\n Uint8Array.from([0, 4]),\n Uint8Array.from([0, 5]),\n Uint8Array.from([0, 6]),\n Uint8Array.from([0, 7]),\n Uint8Array.from([0, 8]),\n Uint8Array.from([0, 9]),\n Uint8Array.from([0, 10]),\n ],\n nodes: [\n [\n hexaStringToBuffer(\n \"96a296d224f285c67bee93c30f8a309157f0daa35dc5b87e410b78630a09cfc7\",\n )!,\n hexaStringToBuffer(\n \"b413f47d13ee2fe6c845b2ee141af81de858df4ec549a58b7970bb96645bc8d2\",\n )!,\n hexaStringToBuffer(\n \"fcf0a6c700dd13e274b6fba8deea8dd9b26e4eedde3495717cac8408c9c5177f\",\n )!,\n hexaStringToBuffer(\n \"583c7dfb7b3055d99465544032a571e10a134b1b6f769422bbb71fd7fa167a5d\",\n )!,\n hexaStringToBuffer(\n \"4f35212d12f9ad2036492c95f1fe79baf4ec7bd9bef3dffa7579f2293ff546a4\",\n )!,\n hexaStringToBuffer(\n \"9f1afa4dc124cba73134e82ff50f17c8f7164257c79fed9a13f5943a6acb8e3d\",\n )!,\n hexaStringToBuffer(\n \"40d88127d4d31a3891f41598eeed41174e5bc89b1eb9bbd66a8cbfc09956a3fd\",\n )!,\n hexaStringToBuffer(\n \"2ecd8a6b7d2845546659ad4cf443533cf921b19dc81fa83934e83821b4dfdcb7\",\n )!,\n hexaStringToBuffer(\n \"b4c43b50bf245bd727623e3c775a8fcfb8d823d00b57dd65f7f79dd33f126315\",\n )!,\n hexaStringToBuffer(\n \"c87479cd656e7e3ad6bd8db402e8027df454b2b0c42ff29e093458beb98a23d4\",\n )!,\n hexaStringToBuffer(\n \"67ebbd370daa02ba9aadd05d8e091e862d0d8bcadafdf2a22360240a42fe922e\",\n )!,\n ],\n [\n hexaStringToBuffer(\n \"a20bf9a7cc2dc8a08f5f415a71b19f6ac427bab54d24eec868b5d3103449953a\",\n )!,\n hexaStringToBuffer(\n \"52c56b473e5246933e7852989cd9feba3b38f078742b93afff1e65ed46797825\",\n )!,\n hexaStringToBuffer(\n \"4b8c129ed14cce2c08cfc6766db7f8cdb133b5f698b8de3d5890ea7ff7f0a8d1\",\n )!,\n hexaStringToBuffer(\n \"bbb0feb32f648c73fe170518bcec1f675af1b780dc23d6fbf30b745c1ca5fa11\",\n )!,\n hexaStringToBuffer(\n \"f7e08e9a9e87822bd79a0bf24d14c7a431be807336bd3c50ccb2d249b2a91404\",\n )!,\n hexaStringToBuffer(\n \"67ebbd370daa02ba9aadd05d8e091e862d0d8bcadafdf2a22360240a42fe922e\",\n )!,\n ],\n [\n hexaStringToBuffer(\n \"9bcd51240af4005168f033121ba85be5a6ed4f0e6a5fac262066729b8fbfdecb\",\n )!,\n hexaStringToBuffer(\n \"c1fe42b33ebb8e8a7e4a90abc481c7434e2be02cff2f6a18d7ffab4f1e25891b\",\n )!,\n hexaStringToBuffer(\n \"e4b894272eb88bed1830cbef82d1c7aee37612a9e7131a5bdd0ae1a6e8f3ff50\",\n )!,\n ],\n [\n hexaStringToBuffer(\n \"ef7f49b620f6c7ea9b963a214da34b5021c6ded8ed57734380a311ab726aa907\",\n )!,\n hexaStringToBuffer(\n \"e4b894272eb88bed1830cbef82d1c7aee37612a9e7131a5bdd0ae1a6e8f3ff50\",\n )!,\n ],\n ],\n root: hexaStringToBuffer(\n \"e177ad5a8a17108dad67c70a51266681aa02b9e2b7ad6a0357585ba4289982ac\",\n )!,\n};\n\ndescribe(\"MerkleTreeBuilder\", () => {\n let builder: MerkleTreeBuilder;\n\n beforeEach(() => {\n vi.resetAllMocks();\n builder = new MerkleTreeBuilder(new Sha256HasherService());\n });\n\n it(\"Get small tree root and leaves\", () => {\n const tree = builder.build(SMALL_TREE.data);\n expect(tree.getRoot()).toStrictEqual(SMALL_TREE.root);\n expect(tree.size()).toStrictEqual(SMALL_TREE.leaves.length);\n expect(tree.getLeaves().map((l) => l.value)).toStrictEqual(\n SMALL_TREE.leaves,\n );\n expect(tree.getLeaves().map((l) => l.hash)).toStrictEqual(\n SMALL_TREE.nodes[0],\n );\n SMALL_TREE.nodes[0]!.forEach((hash, index) => {\n expect(tree.getLeafHash(index)).toStrictEqual(Just(hash));\n });\n expect(tree.getLeafHash(-1)).toStrictEqual(Nothing);\n expect(tree.getLeafHash(SMALL_TREE.nodes[0]!.length)).toStrictEqual(\n Nothing,\n );\n });\n\n it(\"Get big tree root and leaves\", () => {\n const tree = builder.build(BIG_TREE.data);\n expect(tree.getRoot()).toStrictEqual(BIG_TREE.root);\n expect(tree.size()).toStrictEqual(BIG_TREE.leaves.length);\n expect(tree.getLeaves().map((l) => l.value)).toStrictEqual(BIG_TREE.leaves);\n expect(tree.getLeaves().map((l) => l.hash)).toStrictEqual(\n BIG_TREE.nodes[0],\n );\n BIG_TREE.nodes[0]!.forEach((hash, index) => {\n expect(tree.getLeafHash(index)).toStrictEqual(Just(hash));\n });\n expect(tree.getLeafHash(-1)).toStrictEqual(Nothing);\n expect(tree.getLeafHash(BIG_TREE.nodes[0]!.length)).toStrictEqual(Nothing);\n });\n\n it(\"Get small tree merkle proof\", () => {\n const tree = builder.build(SMALL_TREE.data);\n const maybeProof = tree.getProof(2);\n expect(maybeProof.isJust()).toStrictEqual(true);\n const proof = maybeProof.unsafeCoerce();\n\n expect(proof).toStrictEqual([\n SMALL_TREE.nodes[0]![3],\n SMALL_TREE.nodes[1]![0],\n ]);\n });\n\n it(\"Get big tree merkle proof\", () => {\n const tree = builder.build(BIG_TREE.data);\n const maybeProof = tree.getProof(2);\n expect(maybeProof.isJust()).toStrictEqual(true);\n const proof = maybeProof.unsafeCoerce();\n\n expect(proof).toStrictEqual([\n BIG_TREE.nodes[0]![3],\n BIG_TREE.nodes[1]![0],\n BIG_TREE.nodes[2]![1],\n BIG_TREE.nodes[3]![1],\n ]);\n });\n\n it(\"Get out-of-bound merkle proof\", () => {\n const tree = builder.build(SMALL_TREE.data);\n let maybeProof = tree.getProof(-1);\n expect(maybeProof.isJust()).toStrictEqual(false);\n maybeProof = tree.getProof(5);\n expect(maybeProof.isJust()).toStrictEqual(false);\n });\n\n it(\"Empty tree\", () => {\n const tree = builder.build(EMPTY_TREE.data);\n expect(tree.getRoot()).toStrictEqual(EMPTY_TREE.root);\n const proof = tree.getProof(0);\n expect(proof.isJust()).toStrictEqual(false);\n });\n\n it(\"One-leaf tree\", () => {\n const tree = builder.build(ONE_LEAF_TREE.data);\n expect(tree.getRoot()).toStrictEqual(ONE_LEAF_TREE.root);\n const proof = tree.getProof(0);\n expect(proof.isJust()).toStrictEqual(true);\n expect(proof.unsafeCoerce()).toStrictEqual([]);\n });\n\n it(\"Tiny tree\", () => {\n const tree = builder.build(TINY_TREE.data);\n expect(tree.getRoot()).toStrictEqual(TINY_TREE.root);\n const proof = tree.getProof(0);\n expect(proof.isJust()).toStrictEqual(true);\n expect(proof.unsafeCoerce()).toStrictEqual([TINY_TREE.nodes[0]![1]]);\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["import_device_management_kit", "import_purify_ts", "import_MerkleTreeBuilder", "import_Sha256HasherService", "EMPTY_TREE", "ONE_LEAF_TREE", "TINY_TREE", "SMALL_TREE", "BIG_TREE", "builder", "tree", "l", "hash", "index", "maybeProof", "proof"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var P=Object.create;var l=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var k=Object.getOwnPropertyNames;var B=Object.getPrototypeOf,R=Object.prototype.hasOwnProperty;var h=(o,
|
|
1
|
+
"use strict";var P=Object.create;var l=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var k=Object.getOwnPropertyNames;var B=Object.getPrototypeOf,R=Object.prototype.hasOwnProperty;var h=(o,s,c,a)=>{if(s&&typeof s=="object"||typeof s=="function")for(let n of k(s))!R.call(o,n)&&n!==c&&l(o,n,{get:()=>s[n],enumerable:!(a=x(s,n))||a.enumerable});return o};var S=(o,s,c)=>(c=o!=null?P(B(o)):{},h(s||!o||!o.__esModule?l(c,"default",{value:o,enumerable:!0}):c,o));var m=require("@ledgerhq/device-management-kit"),E=S(require("bitcoinjs-lib")),t=require("purify-ts"),u=require("../../../psbt/model/Psbt"),b=require("./DefaultPsbtMapper");describe("DefaultPsbtMapper tests",()=>{const o="70736274ff0100a00200000002ab0949a08c5af7c49b8212f417e2f15ab3f5c33dcf153821a8139f877a5b7be40000000000feffffffab0949a08c5af7c49b8212f417e2f15ab3f5c33dcf153821a8139f877a5b7be40100000000feffffff02603bea0b000000001976a914768a40bbd740cbe81d988e71de2a4d5c71396b1d88ac8e240000000000001976a9146f4620b553fa095e721b9ee0efe9fa039cca459788ac00000000000100df0200000001268171371edff285e937adeea4b37b78000c0566cbb3ad64641713ca42171bf6000000006a473044022070b2245123e6bf474d60c5b50c043d4c691a5d2435f09a34a7662a9dc251790a022001329ca9dacf280bdf30740ec0390422422c81cb45839457aeb76fc12edd95b3012102657d118d3357b8e0f4c2cd46db7b39f6d9c38d9a70abcb9b2de5dc8dbfe4ce31feffffff02d3dff505000000001976a914d0c59903c5bac2868760e90fd521a4665aa7652088ac00e1f5050000000017a9143545e6e33b832c47050f24d3eeb93c9c03948bc787b32e13000001012000e1f5050000000017a9143545e6e33b832c47050f24d3eeb93c9c03948bc787010416001485d13537f2e265405a34dbafa9e3dda01fb8230800220202ead596687ca806043edc3de116cdf29d5e9257c196cd055cf698c8d02bf24e9910b4a6ba670000008000000080020000800022020394f62be9df19952c5587768aeb7698061ad2c4a25c894f47d8c162b4d7213d0510b4a6ba6700000080010000800200008000",s="cHNidP8BAKACAAAAAqsJSaCMWvfEm4IS9Bfi8Vqz9cM9zxU4IagTn4d6W3vkAAAAAAD+////qwlJoIxa98SbghL0F+LxWrP1wz3PFTghqBOfh3pbe+QBAAAAAP7///8CYDvqCwAAAAAZdqkUdopAu9dAy+gdmI5x3ipNXHE5ax2IrI4kAAAAAAAAGXapFG9GILVT+glechue4O/p+gOcykWXiKwAAAAAAAEA3wIAAAABJoFxNx7f8oXpN63upLN7eAAMBWbLs61kZBcTykIXG/YAAAAAakcwRAIgcLIkUSPmv0dNYMW1DAQ9TGkaXSQ18Jo0p2YqncJReQoCIAEynKnazygL3zB0DsA5BCJCLIHLRYOUV663b8Eu3ZWzASECZX0RjTNXuOD0ws1G23s59tnDjZpwq8ubLeXcjb/kzjH+////AtPf9QUAAAAAGXapFNDFmQPFusKGh2DpD9UhpGZap2UgiKwA4fUFAAAAABepFDVF5uM7gyxHBQ8k0+65PJwDlIvHh7MuEwAAAQEgAOH1BQAAAAAXqRQ1RebjO4MsRwUPJNPuuTycA5SLx4cBBBYAFIXRNTfy4mVAWjTbr6nj3aAfuCMIACICAurVlmh8qAYEPtw94RbN8p1eklfBls0FXPaYyNAr8k6ZELSmumcAAACAAAAAgAIAAIAAIgIDlPYr6d8ZlSxVh3aK63aYBhrSxKJciU9H2MFitNchPQUQtKa6ZwAAAIABAACAAgAAgAA=",c=(0,m.hexaStringToBuffer)(o),a=vi.fn(),n={deserialize:a},A=vi.fn(),d={normalize:A},f=()=>new u.Psbt;beforeEach(()=>{vi.resetAllMocks()}),it("Map hex string",()=>{const e=f(),r=f();a.mockReturnValueOnce((0,t.Right)(e)),A.mockReturnValueOnce((0,t.Right)(r));const p=new b.DefaultPsbtMapper(n,d).map(o);expect(a).toHaveBeenCalledWith(c),expect(A).toHaveBeenCalledWith(e),expect(p.isRight()).toStrictEqual(!0),expect(p.unsafeCoerce()).toStrictEqual(r)}),it("Map base64 string",()=>{const e=f(),r=f();a.mockReturnValueOnce((0,t.Right)(e)),A.mockReturnValueOnce((0,t.Right)(r));const p=new b.DefaultPsbtMapper(n,d).map(s);expect(a).toHaveBeenCalledWith(c),expect(A).toHaveBeenCalledWith(e),expect(p.isRight()).toStrictEqual(!0),expect(p.unsafeCoerce()).toStrictEqual(r)}),it("Map bjs transaction",()=>{const e=f(),r=f();a.mockReturnValueOnce((0,t.Right)(e)),A.mockReturnValueOnce((0,t.Right)(r));const p=new b.DefaultPsbtMapper(n,d).map(E.Psbt.fromHex(o));expect(a).toHaveBeenCalledWith(c),expect(A).toHaveBeenCalledWith(e),expect(p.isRight()).toStrictEqual(!0),expect(p.unsafeCoerce()).toStrictEqual(r)}),it("Map byte array",()=>{const e=f(),r=f();a.mockReturnValueOnce((0,t.Right)(e)),A.mockReturnValueOnce((0,t.Right)(r));const p=new b.DefaultPsbtMapper(n,d).map(c);expect(a).toHaveBeenCalledWith(c),expect(A).toHaveBeenCalledWith(e),expect(p.isRight()).toStrictEqual(!0),expect(p.unsafeCoerce()).toStrictEqual(r)}),it("Map invalid string",()=>{const e=f(),r=f();a.mockReturnValueOnce((0,t.Right)(e)),A.mockReturnValueOnce((0,t.Right)(r));const p=new b.DefaultPsbtMapper(n,d).map("some random string");expect(p.isRight()).toStrictEqual(!1)}),it("Parser failure",()=>{const e=f();a.mockReturnValueOnce((0,t.Left)(new Error)),A.mockReturnValueOnce((0,t.Right)(e));const i=new b.DefaultPsbtMapper(n,d).map(c);expect(a).toHaveBeenCalledWith(c),expect(i.isRight()).toStrictEqual(!1)}),it("Normalizer failure",()=>{const e=f();a.mockReturnValueOnce((0,t.Right)(e)),A.mockReturnValueOnce((0,t.Left)(new Error));const i=new b.DefaultPsbtMapper(n,d).map(c);expect(a).toHaveBeenCalledWith(c),expect(A).toHaveBeenCalledWith(e),expect(i.isRight()).toStrictEqual(!1)})});
|
|
2
2
|
//# sourceMappingURL=DefaultPsbtMapper.test.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/internal/psbt/service/psbt/DefaultPsbtMapper.test.ts"],
|
|
4
|
-
"sourcesContent": ["import { hexaStringToBuffer } from \"@ledgerhq/device-management-kit\";\nimport * as bjs from \"bitcoinjs-lib\";\nimport { Left, Right } from \"purify-ts\";\n\nimport { Psbt } from \"@internal/psbt/model/Psbt\";\n\nimport { DefaultPsbtMapper } from \"./DefaultPsbtMapper\";\nimport { type DefaultPsbtSerializer } from \"./DefaultPsbtSerializer\";\nimport { type DefaultPsbtV2Normalizer } from \"./DefaultPsbtV2Normalizer\";\n\ndescribe(\"DefaultPsbtMapper tests\", () => {\n // Test case from https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki#user-content-Test_Vectors\n const SERIALIZED_PSBT_V0_HEX =\n \"70736274ff0100a00200000002ab0949a08c5af7c49b8212f417e2f15ab3f5c33dcf153821a8139f877a5b7be40000000000feffffffab0949a08c5af7c49b8212f417e2f15ab3f5c33dcf153821a8139f877a5b7be40100000000feffffff02603bea0b000000001976a914768a40bbd740cbe81d988e71de2a4d5c71396b1d88ac8e240000000000001976a9146f4620b553fa095e721b9ee0efe9fa039cca459788ac00000000000100df0200000001268171371edff285e937adeea4b37b78000c0566cbb3ad64641713ca42171bf6000000006a473044022070b2245123e6bf474d60c5b50c043d4c691a5d2435f09a34a7662a9dc251790a022001329ca9dacf280bdf30740ec0390422422c81cb45839457aeb76fc12edd95b3012102657d118d3357b8e0f4c2cd46db7b39f6d9c38d9a70abcb9b2de5dc8dbfe4ce31feffffff02d3dff505000000001976a914d0c59903c5bac2868760e90fd521a4665aa7652088ac00e1f5050000000017a9143545e6e33b832c47050f24d3eeb93c9c03948bc787b32e13000001012000e1f5050000000017a9143545e6e33b832c47050f24d3eeb93c9c03948bc787010416001485d13537f2e265405a34dbafa9e3dda01fb8230800220202ead596687ca806043edc3de116cdf29d5e9257c196cd055cf698c8d02bf24e9910b4a6ba670000008000000080020000800022020394f62be9df19952c5587768aeb7698061ad2c4a25c894f47d8c162b4d7213d0510b4a6ba6700000080010000800200008000\";\n const SERIALIZED_PSBT_V0_BASE64 =\n \"cHNidP8BAKACAAAAAqsJSaCMWvfEm4IS9Bfi8Vqz9cM9zxU4IagTn4d6W3vkAAAAAAD+////qwlJoIxa98SbghL0F+LxWrP1wz3PFTghqBOfh3pbe+QBAAAAAP7///8CYDvqCwAAAAAZdqkUdopAu9dAy+gdmI5x3ipNXHE5ax2IrI4kAAAAAAAAGXapFG9GILVT+glechue4O/p+gOcykWXiKwAAAAAAAEA3wIAAAABJoFxNx7f8oXpN63upLN7eAAMBWbLs61kZBcTykIXG/YAAAAAakcwRAIgcLIkUSPmv0dNYMW1DAQ9TGkaXSQ18Jo0p2YqncJReQoCIAEynKnazygL3zB0DsA5BCJCLIHLRYOUV663b8Eu3ZWzASECZX0RjTNXuOD0ws1G23s59tnDjZpwq8ubLeXcjb/kzjH+////AtPf9QUAAAAAGXapFNDFmQPFusKGh2DpD9UhpGZap2UgiKwA4fUFAAAAABepFDVF5uM7gyxHBQ8k0+65PJwDlIvHh7MuEwAAAQEgAOH1BQAAAAAXqRQ1RebjO4MsRwUPJNPuuTycA5SLx4cBBBYAFIXRNTfy4mVAWjTbr6nj3aAfuCMIACICAurVlmh8qAYEPtw94RbN8p1eklfBls0FXPaYyNAr8k6ZELSmumcAAACAAAAAgAIAAIAAIgIDlPYr6d8ZlSxVh3aK63aYBhrSxKJciU9H2MFitNchPQUQtKa6ZwAAAIABAACAAgAAgAA=\";\n const SERIALIZED_PSBT_V0 = hexaStringToBuffer(SERIALIZED_PSBT_V0_HEX)!;\n\n // Mock PsbtSerializer\n const mockDeserialize =
|
|
5
|
-
"mappings": "wdAAA,IAAAA,EAAmC,2CACnCC,EAAqB,4BACrBC,EAA4B,qBAE5BC,EAAqB,qCAErBC,EAAkC,+BAIlC,SAAS,0BAA2B,IAAM,CAExC,MAAMC,EACJ,ymCACIC,EACJ,mvBACIC,KAAqB,sBAAmBF,CAAsB,EAG9DG,EAAkB,
|
|
4
|
+
"sourcesContent": ["import { hexaStringToBuffer } from \"@ledgerhq/device-management-kit\";\nimport * as bjs from \"bitcoinjs-lib\";\nimport { Left, Right } from \"purify-ts\";\n\nimport { Psbt } from \"@internal/psbt/model/Psbt\";\n\nimport { DefaultPsbtMapper } from \"./DefaultPsbtMapper\";\nimport { type DefaultPsbtSerializer } from \"./DefaultPsbtSerializer\";\nimport { type DefaultPsbtV2Normalizer } from \"./DefaultPsbtV2Normalizer\";\n\ndescribe(\"DefaultPsbtMapper tests\", () => {\n // Test case from https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki#user-content-Test_Vectors\n const SERIALIZED_PSBT_V0_HEX =\n \"70736274ff0100a00200000002ab0949a08c5af7c49b8212f417e2f15ab3f5c33dcf153821a8139f877a5b7be40000000000feffffffab0949a08c5af7c49b8212f417e2f15ab3f5c33dcf153821a8139f877a5b7be40100000000feffffff02603bea0b000000001976a914768a40bbd740cbe81d988e71de2a4d5c71396b1d88ac8e240000000000001976a9146f4620b553fa095e721b9ee0efe9fa039cca459788ac00000000000100df0200000001268171371edff285e937adeea4b37b78000c0566cbb3ad64641713ca42171bf6000000006a473044022070b2245123e6bf474d60c5b50c043d4c691a5d2435f09a34a7662a9dc251790a022001329ca9dacf280bdf30740ec0390422422c81cb45839457aeb76fc12edd95b3012102657d118d3357b8e0f4c2cd46db7b39f6d9c38d9a70abcb9b2de5dc8dbfe4ce31feffffff02d3dff505000000001976a914d0c59903c5bac2868760e90fd521a4665aa7652088ac00e1f5050000000017a9143545e6e33b832c47050f24d3eeb93c9c03948bc787b32e13000001012000e1f5050000000017a9143545e6e33b832c47050f24d3eeb93c9c03948bc787010416001485d13537f2e265405a34dbafa9e3dda01fb8230800220202ead596687ca806043edc3de116cdf29d5e9257c196cd055cf698c8d02bf24e9910b4a6ba670000008000000080020000800022020394f62be9df19952c5587768aeb7698061ad2c4a25c894f47d8c162b4d7213d0510b4a6ba6700000080010000800200008000\";\n const SERIALIZED_PSBT_V0_BASE64 =\n \"cHNidP8BAKACAAAAAqsJSaCMWvfEm4IS9Bfi8Vqz9cM9zxU4IagTn4d6W3vkAAAAAAD+////qwlJoIxa98SbghL0F+LxWrP1wz3PFTghqBOfh3pbe+QBAAAAAP7///8CYDvqCwAAAAAZdqkUdopAu9dAy+gdmI5x3ipNXHE5ax2IrI4kAAAAAAAAGXapFG9GILVT+glechue4O/p+gOcykWXiKwAAAAAAAEA3wIAAAABJoFxNx7f8oXpN63upLN7eAAMBWbLs61kZBcTykIXG/YAAAAAakcwRAIgcLIkUSPmv0dNYMW1DAQ9TGkaXSQ18Jo0p2YqncJReQoCIAEynKnazygL3zB0DsA5BCJCLIHLRYOUV663b8Eu3ZWzASECZX0RjTNXuOD0ws1G23s59tnDjZpwq8ubLeXcjb/kzjH+////AtPf9QUAAAAAGXapFNDFmQPFusKGh2DpD9UhpGZap2UgiKwA4fUFAAAAABepFDVF5uM7gyxHBQ8k0+65PJwDlIvHh7MuEwAAAQEgAOH1BQAAAAAXqRQ1RebjO4MsRwUPJNPuuTycA5SLx4cBBBYAFIXRNTfy4mVAWjTbr6nj3aAfuCMIACICAurVlmh8qAYEPtw94RbN8p1eklfBls0FXPaYyNAr8k6ZELSmumcAAACAAAAAgAIAAIAAIgIDlPYr6d8ZlSxVh3aK63aYBhrSxKJciU9H2MFitNchPQUQtKa6ZwAAAIABAACAAgAAgAA=\";\n const SERIALIZED_PSBT_V0 = hexaStringToBuffer(SERIALIZED_PSBT_V0_HEX)!;\n\n // Mock PsbtSerializer\n const mockDeserialize = vi.fn();\n const mockSerializer: DefaultPsbtSerializer = {\n deserialize: mockDeserialize,\n } as unknown as DefaultPsbtSerializer;\n\n // Mock PsbtV2Normalizer\n const mockNormalize = vi.fn();\n const mockNormalizer: DefaultPsbtV2Normalizer = {\n normalize: mockNormalize,\n } as unknown as DefaultPsbtV2Normalizer;\n\n // Mocked psbt\n const createPsbt = () => new Psbt();\n\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n it(\"Map hex string\", () => {\n // Given\n const parsedPsbt = createPsbt();\n const normalizedPsbt = createPsbt();\n mockDeserialize.mockReturnValueOnce(Right(parsedPsbt));\n mockNormalize.mockReturnValueOnce(Right(normalizedPsbt));\n const mapper = new DefaultPsbtMapper(mockSerializer, mockNormalizer);\n\n // When\n const mapped = mapper.map(SERIALIZED_PSBT_V0_HEX);\n\n // Then\n expect(mockDeserialize).toHaveBeenCalledWith(SERIALIZED_PSBT_V0);\n expect(mockNormalize).toHaveBeenCalledWith(parsedPsbt);\n expect(mapped.isRight()).toStrictEqual(true);\n expect(mapped.unsafeCoerce()).toStrictEqual(normalizedPsbt);\n });\n\n it(\"Map base64 string\", () => {\n // Given\n const parsedPsbt = createPsbt();\n const normalizedPsbt = createPsbt();\n mockDeserialize.mockReturnValueOnce(Right(parsedPsbt));\n mockNormalize.mockReturnValueOnce(Right(normalizedPsbt));\n const mapper = new DefaultPsbtMapper(mockSerializer, mockNormalizer);\n\n // When\n const mapped = mapper.map(SERIALIZED_PSBT_V0_BASE64);\n\n // Then\n expect(mockDeserialize).toHaveBeenCalledWith(SERIALIZED_PSBT_V0);\n expect(mockNormalize).toHaveBeenCalledWith(parsedPsbt);\n expect(mapped.isRight()).toStrictEqual(true);\n expect(mapped.unsafeCoerce()).toStrictEqual(normalizedPsbt);\n });\n\n it(\"Map bjs transaction\", () => {\n // Given\n const parsedPsbt = createPsbt();\n const normalizedPsbt = createPsbt();\n mockDeserialize.mockReturnValueOnce(Right(parsedPsbt));\n mockNormalize.mockReturnValueOnce(Right(normalizedPsbt));\n const mapper = new DefaultPsbtMapper(mockSerializer, mockNormalizer);\n\n // When\n const mapped = mapper.map(bjs.Psbt.fromHex(SERIALIZED_PSBT_V0_HEX));\n\n // Then\n expect(mockDeserialize).toHaveBeenCalledWith(SERIALIZED_PSBT_V0);\n expect(mockNormalize).toHaveBeenCalledWith(parsedPsbt);\n expect(mapped.isRight()).toStrictEqual(true);\n expect(mapped.unsafeCoerce()).toStrictEqual(normalizedPsbt);\n });\n\n it(\"Map byte array\", () => {\n // Given\n const parsedPsbt = createPsbt();\n const normalizedPsbt = createPsbt();\n mockDeserialize.mockReturnValueOnce(Right(parsedPsbt));\n mockNormalize.mockReturnValueOnce(Right(normalizedPsbt));\n const mapper = new DefaultPsbtMapper(mockSerializer, mockNormalizer);\n\n // When\n const mapped = mapper.map(SERIALIZED_PSBT_V0);\n\n // Then\n expect(mockDeserialize).toHaveBeenCalledWith(SERIALIZED_PSBT_V0);\n expect(mockNormalize).toHaveBeenCalledWith(parsedPsbt);\n expect(mapped.isRight()).toStrictEqual(true);\n expect(mapped.unsafeCoerce()).toStrictEqual(normalizedPsbt);\n });\n\n it(\"Map invalid string\", () => {\n // Given\n const parsedPsbt = createPsbt();\n const normalizedPsbt = createPsbt();\n mockDeserialize.mockReturnValueOnce(Right(parsedPsbt));\n mockNormalize.mockReturnValueOnce(Right(normalizedPsbt));\n const mapper = new DefaultPsbtMapper(mockSerializer, mockNormalizer);\n\n // When\n const mapped = mapper.map(\"some random string\");\n\n // Then\n expect(mapped.isRight()).toStrictEqual(false);\n });\n\n it(\"Parser failure\", () => {\n // Given\n const normalizedPsbt = createPsbt();\n mockDeserialize.mockReturnValueOnce(Left(new Error()));\n mockNormalize.mockReturnValueOnce(Right(normalizedPsbt));\n const mapper = new DefaultPsbtMapper(mockSerializer, mockNormalizer);\n\n // When\n const mapped = mapper.map(SERIALIZED_PSBT_V0);\n\n // Then\n expect(mockDeserialize).toHaveBeenCalledWith(SERIALIZED_PSBT_V0);\n expect(mapped.isRight()).toStrictEqual(false);\n });\n\n it(\"Normalizer failure\", () => {\n // Given\n const parsedPsbt = createPsbt();\n mockDeserialize.mockReturnValueOnce(Right(parsedPsbt));\n mockNormalize.mockReturnValueOnce(Left(new Error()));\n const mapper = new DefaultPsbtMapper(mockSerializer, mockNormalizer);\n\n // When\n const mapped = mapper.map(SERIALIZED_PSBT_V0);\n\n // Then\n expect(mockDeserialize).toHaveBeenCalledWith(SERIALIZED_PSBT_V0);\n expect(mockNormalize).toHaveBeenCalledWith(parsedPsbt);\n expect(mapped.isRight()).toStrictEqual(false);\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["import_device_management_kit", "bjs", "import_purify_ts", "import_Psbt", "import_DefaultPsbtMapper", "SERIALIZED_PSBT_V0_HEX", "SERIALIZED_PSBT_V0_BASE64", "SERIALIZED_PSBT_V0", "mockDeserialize", "mockSerializer", "mockNormalize", "mockNormalizer", "createPsbt", "parsedPsbt", "normalizedPsbt", "mapped"]
|
|
7
7
|
}
|
package/lib/cjs/internal/use-cases/get-extended-public-key/GetExtendedPublicKeyUseCase.test.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var n=require("./GetExtendedPublicKeyUseCase");describe("GetAddressUseCase",()=>{const e="44'/501'",t="some-pkey",c=
|
|
1
|
+
"use strict";var n=require("./GetExtendedPublicKeyUseCase");describe("GetAddressUseCase",()=>{const e="44'/501'",t="some-pkey",c=vi.fn().mockReturnValue(t),d={getExtendedPublicKey:c};let s;beforeEach(()=>{vi.clearAllMocks(),s=new n.GetExtendedPublicKeyUseCase(d)}),it("should return the address from the appBinder's getExtendedPublicKey method",()=>{const o=s.execute(e,{checkOnDevice:!0});expect(o).toEqual(t),expect(c).toHaveBeenCalledWith({derivationPath:e,checkOnDevice:!0})})});
|
|
2
2
|
//# sourceMappingURL=GetExtendedPublicKeyUseCase.test.js.map
|
package/lib/cjs/internal/use-cases/get-extended-public-key/GetExtendedPublicKeyUseCase.test.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/use-cases/get-extended-public-key/GetExtendedPublicKeyUseCase.test.ts"],
|
|
4
|
-
"sourcesContent": ["import { type BtcAppBinder } from \"@internal/app-binder/BtcAppBinder\";\n\nimport { GetExtendedPublicKeyUseCase } from \"./GetExtendedPublicKeyUseCase\";\n\ndescribe(\"GetAddressUseCase\", () => {\n const derivationPath = \"44'/501'\";\n const address = \"some-pkey\";\n const getExtendedPublicKeyMock =
|
|
5
|
-
"mappings": "aAEA,IAAAA,EAA4C,yCAE5C,SAAS,oBAAqB,IAAM,CAClC,MAAMC,EAAiB,WACjBC,EAAU,YACVC,EAA2B,
|
|
4
|
+
"sourcesContent": ["import { type BtcAppBinder } from \"@internal/app-binder/BtcAppBinder\";\n\nimport { GetExtendedPublicKeyUseCase } from \"./GetExtendedPublicKeyUseCase\";\n\ndescribe(\"GetAddressUseCase\", () => {\n const derivationPath = \"44'/501'\";\n const address = \"some-pkey\";\n const getExtendedPublicKeyMock = vi.fn().mockReturnValue(address);\n const appBinderMock = {\n getExtendedPublicKey: getExtendedPublicKeyMock,\n } as unknown as BtcAppBinder;\n let useCase: GetExtendedPublicKeyUseCase;\n\n beforeEach(() => {\n vi.clearAllMocks();\n useCase = new GetExtendedPublicKeyUseCase(appBinderMock);\n });\n\n it(\"should return the address from the appBinder's getExtendedPublicKey method\", () => {\n // GIVEN\n const checkOnDevice = true;\n\n // WHEN\n const result = useCase.execute(derivationPath, { checkOnDevice });\n\n // THEN\n expect(result).toEqual(address);\n expect(getExtendedPublicKeyMock).toHaveBeenCalledWith({\n derivationPath,\n checkOnDevice,\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "aAEA,IAAAA,EAA4C,yCAE5C,SAAS,oBAAqB,IAAM,CAClC,MAAMC,EAAiB,WACjBC,EAAU,YACVC,EAA2B,GAAG,GAAG,EAAE,gBAAgBD,CAAO,EAC1DE,EAAgB,CACpB,qBAAsBD,CACxB,EACA,IAAIE,EAEJ,WAAW,IAAM,CACf,GAAG,cAAc,EACjBA,EAAU,IAAI,8BAA4BD,CAAa,CACzD,CAAC,EAED,GAAG,6EAA8E,IAAM,CAKrF,MAAME,EAASD,EAAQ,QAAQJ,EAAgB,CAAE,gBAAc,CAAC,EAGhE,OAAOK,CAAM,EAAE,QAAQJ,CAAO,EAC9B,OAAOC,CAAwB,EAAE,qBAAqB,CACpD,eAAAF,EACA,gBACF,CAAC,CACH,CAAC,CACH,CAAC",
|
|
6
6
|
"names": ["import_GetExtendedPublicKeyUseCase", "derivationPath", "address", "getExtendedPublicKeyMock", "appBinderMock", "useCase", "result"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var l=require("../../merkle-tree/model/Leaf"),n=require("../../merkle-tree/model/MerkleTree"),d=require("./GetWalletAddressUseCase");describe("GetWalletAddressUseCase",()=>{it("should call getWalletAddress on appBinder with the correct arguments",()=>{const e={name:"wallet-name",descriptorTemplate:"wpkh(@0/**)",keys:["key1","key2"],hmac:new Uint8Array(32).fill(42),keysTree:new n.MerkleTree(new l.Leaf(new Uint8Array,new Uint8Array(32).fill(7)),[]),descriptorBuffer:new Uint8Array(31).fill(16)},t=!1,s=!1,r=0,a={getWalletAddress:
|
|
1
|
+
"use strict";var l=require("../../merkle-tree/model/Leaf"),n=require("../../merkle-tree/model/MerkleTree"),d=require("./GetWalletAddressUseCase");describe("GetWalletAddressUseCase",()=>{it("should call getWalletAddress on appBinder with the correct arguments",()=>{const e={name:"wallet-name",descriptorTemplate:"wpkh(@0/**)",keys:["key1","key2"],hmac:new Uint8Array(32).fill(42),keysTree:new n.MerkleTree(new l.Leaf(new Uint8Array,new Uint8Array(32).fill(7)),[]),descriptorBuffer:new Uint8Array(31).fill(16)},t=!1,s=!1,r=0,a={getWalletAddress:vi.fn()};new d.GetWalletAddressUseCase(a).execute(t,e,s,r),expect(a.getWalletAddress).toHaveBeenCalledWith({wallet:e,checkOnDevice:t,change:s,addressIndex:r})})});
|
|
2
2
|
//# sourceMappingURL=GetWalletAddressUseCase.test.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/use-cases/get-wallet-address/GetWalletAddressUseCase.test.ts"],
|
|
4
|
-
"sourcesContent": ["import { type BtcAppBinder } from \"@internal/app-binder/BtcAppBinder\";\nimport { Leaf } from \"@internal/merkle-tree/model/Leaf\";\nimport { MerkleTree } from \"@internal/merkle-tree/model/MerkleTree\";\n\nimport { GetWalletAddressUseCase } from \"./GetWalletAddressUseCase\";\n\ndescribe(\"GetWalletAddressUseCase\", () => {\n it(\"should call getWalletAddress on appBinder with the correct arguments\", () => {\n // given\n const wallet = {\n name: \"wallet-name\",\n descriptorTemplate: \"wpkh(@0/**)\",\n keys: [\"key1\", \"key2\"],\n hmac: new Uint8Array(32).fill(42),\n keysTree: new MerkleTree(\n new Leaf(new Uint8Array(), new Uint8Array(32).fill(7)),\n [],\n ),\n descriptorBuffer: new Uint8Array(31).fill(16),\n };\n const checkOnDevice = false;\n const change = false;\n const addressIndex = 0;\n\n const appBinder = {\n getWalletAddress:
|
|
5
|
-
"mappings": "aACA,IAAAA,EAAqB,4CACrBC,EAA2B,kDAE3BC,EAAwC,qCAExC,SAAS,0BAA2B,IAAM,CACxC,GAAG,uEAAwE,IAAM,CAE/E,MAAMC,EAAS,CACb,KAAM,cACN,mBAAoB,cACpB,KAAM,CAAC,OAAQ,MAAM,EACrB,KAAM,IAAI,WAAW,EAAE,EAAE,KAAK,EAAE,EAChC,SAAU,IAAI,aACZ,IAAI,OAAK,IAAI,WAAc,IAAI,WAAW,EAAE,EAAE,KAAK,CAAC,CAAC,EACrD,CAAC,CACH,EACA,iBAAkB,IAAI,WAAW,EAAE,EAAE,KAAK,EAAE,CAC9C,EACMC,EAAgB,GAChBC,EAAS,GACTC,EAAe,EAEfC,EAAY,CAChB,iBAAkB,
|
|
4
|
+
"sourcesContent": ["import { type BtcAppBinder } from \"@internal/app-binder/BtcAppBinder\";\nimport { Leaf } from \"@internal/merkle-tree/model/Leaf\";\nimport { MerkleTree } from \"@internal/merkle-tree/model/MerkleTree\";\n\nimport { GetWalletAddressUseCase } from \"./GetWalletAddressUseCase\";\n\ndescribe(\"GetWalletAddressUseCase\", () => {\n it(\"should call getWalletAddress on appBinder with the correct arguments\", () => {\n // given\n const wallet = {\n name: \"wallet-name\",\n descriptorTemplate: \"wpkh(@0/**)\",\n keys: [\"key1\", \"key2\"],\n hmac: new Uint8Array(32).fill(42),\n keysTree: new MerkleTree(\n new Leaf(new Uint8Array(), new Uint8Array(32).fill(7)),\n [],\n ),\n descriptorBuffer: new Uint8Array(31).fill(16),\n };\n const checkOnDevice = false;\n const change = false;\n const addressIndex = 0;\n\n const appBinder = {\n getWalletAddress: vi.fn(),\n };\n const getWalletAddressUseCase = new GetWalletAddressUseCase(\n appBinder as unknown as BtcAppBinder,\n );\n\n // when\n getWalletAddressUseCase.execute(\n checkOnDevice,\n wallet,\n change,\n addressIndex,\n );\n\n // then\n expect(appBinder.getWalletAddress).toHaveBeenCalledWith({\n wallet,\n checkOnDevice,\n change,\n addressIndex,\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "aACA,IAAAA,EAAqB,4CACrBC,EAA2B,kDAE3BC,EAAwC,qCAExC,SAAS,0BAA2B,IAAM,CACxC,GAAG,uEAAwE,IAAM,CAE/E,MAAMC,EAAS,CACb,KAAM,cACN,mBAAoB,cACpB,KAAM,CAAC,OAAQ,MAAM,EACrB,KAAM,IAAI,WAAW,EAAE,EAAE,KAAK,EAAE,EAChC,SAAU,IAAI,aACZ,IAAI,OAAK,IAAI,WAAc,IAAI,WAAW,EAAE,EAAE,KAAK,CAAC,CAAC,EACrD,CAAC,CACH,EACA,iBAAkB,IAAI,WAAW,EAAE,EAAE,KAAK,EAAE,CAC9C,EACMC,EAAgB,GAChBC,EAAS,GACTC,EAAe,EAEfC,EAAY,CAChB,iBAAkB,GAAG,GAAG,CAC1B,EACgC,IAAI,0BAClCA,CACF,EAGwB,QACtBH,EACAD,EACAE,EACAC,CACF,EAGA,OAAOC,EAAU,gBAAgB,EAAE,qBAAqB,CACtD,OAAAJ,EACA,cAAAC,EACA,OAAAC,EACA,aAAAC,CACF,CAAC,CACH,CAAC,CACH,CAAC",
|
|
6
6
|
"names": ["import_Leaf", "import_MerkleTree", "import_GetWalletAddressUseCase", "wallet", "checkOnDevice", "change", "addressIndex", "appBinder"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var a=require("./SignMessageUseCase");describe("SignMessageUseCase",()=>{it("should call signPersonalMessage on appBinder with the correct arguments",()=>{const e="44'/501'/0'/0'",s="Hello world",n={signMessage:
|
|
1
|
+
"use strict";var a=require("./SignMessageUseCase");describe("SignMessageUseCase",()=>{it("should call signPersonalMessage on appBinder with the correct arguments",()=>{const e="44'/501'/0'/0'",s="Hello world",n={signMessage:vi.fn()};new a.SignMessageUseCase(n).execute(e,s),expect(n.signMessage).toHaveBeenCalledWith({derivationPath:e,message:s})})});
|
|
2
2
|
//# sourceMappingURL=SignMessageUseCase.test.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/use-cases/sign-message/SignMessageUseCase.test.ts"],
|
|
4
|
-
"sourcesContent": ["import { type BtcAppBinder } from \"@internal/app-binder/BtcAppBinder\";\n\nimport { SignMessageUseCase } from \"./SignMessageUseCase\";\n\ndescribe(\"SignMessageUseCase\", () => {\n it(\"should call signPersonalMessage on appBinder with the correct arguments\", () => {\n // Given\n const derivationPath = \"44'/501'/0'/0'\";\n const message = \"Hello world\";\n const appBinder = {\n signMessage:
|
|
5
|
-
"mappings": "aAEA,IAAAA,EAAmC,gCAEnC,SAAS,qBAAsB,IAAM,CACnC,GAAG,0EAA2E,IAAM,CAElF,MAAMC,EAAiB,iBACjBC,EAAU,cACVC,EAAY,CAChB,YAAa,
|
|
4
|
+
"sourcesContent": ["import { type BtcAppBinder } from \"@internal/app-binder/BtcAppBinder\";\n\nimport { SignMessageUseCase } from \"./SignMessageUseCase\";\n\ndescribe(\"SignMessageUseCase\", () => {\n it(\"should call signPersonalMessage on appBinder with the correct arguments\", () => {\n // Given\n const derivationPath = \"44'/501'/0'/0'\";\n const message = \"Hello world\";\n const appBinder = {\n signMessage: vi.fn(),\n };\n const signMessageUseCase = new SignMessageUseCase(\n appBinder as unknown as BtcAppBinder,\n );\n\n // When\n signMessageUseCase.execute(derivationPath, message);\n\n // Then\n expect(appBinder.signMessage).toHaveBeenCalledWith({\n derivationPath,\n message,\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "aAEA,IAAAA,EAAmC,gCAEnC,SAAS,qBAAsB,IAAM,CACnC,GAAG,0EAA2E,IAAM,CAElF,MAAMC,EAAiB,iBACjBC,EAAU,cACVC,EAAY,CAChB,YAAa,GAAG,GAAG,CACrB,EAC2B,IAAI,qBAC7BA,CACF,EAGmB,QAAQF,EAAgBC,CAAO,EAGlD,OAAOC,EAAU,WAAW,EAAE,qBAAqB,CACjD,eAAAF,EACA,QAAAC,CACF,CAAC,CACH,CAAC,CACH,CAAC",
|
|
6
6
|
"names": ["import_SignMessageUseCase", "derivationPath", "message", "appBinder"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("../../../api/model/Wallet"),i=require("./SignPsbtUseCase");describe("SignPsbtUseCase",()=>{it("should call signPsbt on appBinder with the correct arguments",()=>{const t=new e.DefaultWallet("84'/0'/0'",e.DefaultDescriptorTemplate.NATIVE_SEGWIT),s="some-psbt",n={signPsbt:
|
|
1
|
+
"use strict";var e=require("../../../api/model/Wallet"),i=require("./SignPsbtUseCase");describe("SignPsbtUseCase",()=>{it("should call signPsbt on appBinder with the correct arguments",()=>{const t=new e.DefaultWallet("84'/0'/0'",e.DefaultDescriptorTemplate.NATIVE_SEGWIT),s="some-psbt",n={signPsbt:vi.fn()};new i.SignPsbtUseCase(n).execute(t,s),expect(n.signPsbt).toHaveBeenCalledWith({wallet:t,psbt:s})})});
|
|
2
2
|
//# sourceMappingURL=SignPsbtUseCase.test.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/use-cases/sign-psbt/SignPsbtUseCase.test.ts"],
|
|
4
|
-
"sourcesContent": ["import { DefaultDescriptorTemplate, DefaultWallet } from \"@api/model/Wallet\";\nimport { type BtcAppBinder } from \"@internal/app-binder/BtcAppBinder\";\n\nimport { SignPsbtUseCase } from \"./SignPsbtUseCase\";\n\ndescribe(\"SignPsbtUseCase\", () => {\n it(\"should call signPsbt on appBinder with the correct arguments\", () => {\n // Given\n const wallet = new DefaultWallet(\n \"84'/0'/0'\",\n DefaultDescriptorTemplate.NATIVE_SEGWIT,\n );\n const psbt = \"some-psbt\";\n const appBinder = {\n signPsbt:
|
|
5
|
-
"mappings": "aAAA,IAAAA,EAAyD,6BAGzDC,EAAgC,6BAEhC,SAAS,kBAAmB,IAAM,CAChC,GAAG,+DAAgE,IAAM,CAEvE,MAAMC,EAAS,IAAI,gBACjB,YACA,4BAA0B,aAC5B,EACMC,EAAO,YACPC,EAAY,CAChB,SAAU,
|
|
4
|
+
"sourcesContent": ["import { DefaultDescriptorTemplate, DefaultWallet } from \"@api/model/Wallet\";\nimport { type BtcAppBinder } from \"@internal/app-binder/BtcAppBinder\";\n\nimport { SignPsbtUseCase } from \"./SignPsbtUseCase\";\n\ndescribe(\"SignPsbtUseCase\", () => {\n it(\"should call signPsbt on appBinder with the correct arguments\", () => {\n // Given\n const wallet = new DefaultWallet(\n \"84'/0'/0'\",\n DefaultDescriptorTemplate.NATIVE_SEGWIT,\n );\n const psbt = \"some-psbt\";\n const appBinder = {\n signPsbt: vi.fn(),\n };\n const signPsbtUseCase = new SignPsbtUseCase(\n appBinder as unknown as BtcAppBinder,\n );\n\n // When\n signPsbtUseCase.execute(wallet, psbt);\n\n // Then\n expect(appBinder.signPsbt).toHaveBeenCalledWith({\n wallet,\n psbt,\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "aAAA,IAAAA,EAAyD,6BAGzDC,EAAgC,6BAEhC,SAAS,kBAAmB,IAAM,CAChC,GAAG,+DAAgE,IAAM,CAEvE,MAAMC,EAAS,IAAI,gBACjB,YACA,4BAA0B,aAC5B,EACMC,EAAO,YACPC,EAAY,CAChB,SAAU,GAAG,GAAG,CAClB,EACwB,IAAI,kBAC1BA,CACF,EAGgB,QAAQF,EAAQC,CAAI,EAGpC,OAAOC,EAAU,QAAQ,EAAE,qBAAqB,CAC9C,OAAAF,EACA,KAAAC,CACF,CAAC,CACH,CAAC,CACH,CAAC",
|
|
6
6
|
"names": ["import_Wallet", "import_SignPsbtUseCase", "wallet", "psbt", "appBinder"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var n=require("../../../api/model/Wallet"),a=require("../../use-cases/sign-transaction/SignTransactionUseCase");describe("SignTransactionUseCase",()=>{it("should call signTransaction on appBinder with the correct arguments",()=>{const e=new n.DefaultWallet("84'/0'/0'",n.DefaultDescriptorTemplate.NATIVE_SEGWIT),t="some-psbt",s={signTransaction:vi.fn()};new a.SignTransactionUseCase(s).execute(e,t),expect(s.signTransaction).toHaveBeenCalledWith({wallet:e,psbt:t})})});
|
|
2
2
|
//# sourceMappingURL=SignTransactionUseCase.test.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/use-cases/sign-transaction/SignTransactionUseCase.test.ts"],
|
|
4
|
-
"sourcesContent": ["import { DefaultDescriptorTemplate, DefaultWallet } from \"@api/model/Wallet\";\nimport { type BtcAppBinder } from \"@internal/app-binder/BtcAppBinder\";\nimport { SignTransactionUseCase } from \"@internal/use-cases/sign-transaction/SignTransactionUseCase\";\n\ndescribe(\"SignTransactionUseCase\", () => {\n it(\"should call signTransaction on appBinder with the correct arguments\", () => {\n // Given\n const wallet = new DefaultWallet(\n \"84'/0'/0'\",\n DefaultDescriptorTemplate.NATIVE_SEGWIT,\n );\n const psbt = \"some-psbt\";\n const appBinder = {\n signTransaction:
|
|
5
|
-
"mappings": "aAAA,IAAAA,EAAyD,6BAEzDC,EAAuC,uEAEvC,SAAS,yBAA0B,IAAM,CACvC,GAAG,sEAAuE,IAAM,CAE9E,MAAMC,EAAS,IAAI,gBACjB,YACA,4BAA0B,aAC5B,EACMC,EAAO,YACPC,EAAY,CAChB,gBAAiB,
|
|
4
|
+
"sourcesContent": ["import { DefaultDescriptorTemplate, DefaultWallet } from \"@api/model/Wallet\";\nimport { type BtcAppBinder } from \"@internal/app-binder/BtcAppBinder\";\nimport { SignTransactionUseCase } from \"@internal/use-cases/sign-transaction/SignTransactionUseCase\";\n\ndescribe(\"SignTransactionUseCase\", () => {\n it(\"should call signTransaction on appBinder with the correct arguments\", () => {\n // Given\n const wallet = new DefaultWallet(\n \"84'/0'/0'\",\n DefaultDescriptorTemplate.NATIVE_SEGWIT,\n );\n const psbt = \"some-psbt\";\n const appBinder = {\n signTransaction: vi.fn(),\n };\n const signTransactionUseCase = new SignTransactionUseCase(\n appBinder as unknown as BtcAppBinder,\n );\n\n // When\n signTransactionUseCase.execute(wallet, psbt);\n\n // Then\n expect(appBinder.signTransaction).toHaveBeenCalledWith({\n wallet,\n psbt,\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "aAAA,IAAAA,EAAyD,6BAEzDC,EAAuC,uEAEvC,SAAS,yBAA0B,IAAM,CACvC,GAAG,sEAAuE,IAAM,CAE9E,MAAMC,EAAS,IAAI,gBACjB,YACA,4BAA0B,aAC5B,EACMC,EAAO,YACPC,EAAY,CAChB,gBAAiB,GAAG,GAAG,CACzB,EAC+B,IAAI,yBACjCA,CACF,EAGuB,QAAQF,EAAQC,CAAI,EAG3C,OAAOC,EAAU,eAAe,EAAE,qBAAqB,CACrD,OAAAF,EACA,KAAAC,CACF,CAAC,CACH,CAAC,CACH,CAAC",
|
|
6
6
|
"names": ["import_Wallet", "import_SignTransactionUseCase", "wallet", "psbt", "appBinder"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var p=require("@ledgerhq/device-management-kit"),o=require("../../../api/model/Wallet"),i=require("../../merkle-tree/model/Leaf"),u=require("../../merkle-tree/model/MerkleTree"),s=require("./DefaultWalletBuilder");describe("DefaultWalletBuilder tests",()=>{const l=
|
|
1
|
+
"use strict";var p=require("@ledgerhq/device-management-kit"),o=require("../../../api/model/Wallet"),i=require("../../merkle-tree/model/Leaf"),u=require("../../merkle-tree/model/MerkleTree"),s=require("./DefaultWalletBuilder");describe("DefaultWalletBuilder tests",()=>{const l=vi.fn(),d={build:l};it("Create registered wallet",()=>{const c=new s.DefaultWalletBuilder(d),a=new o.RegisteredWallet("Cold storage","wsh(sortedmulti(2,@0/**,@1/**))",["key1","key2"],new Uint8Array(32).fill(42)),n=new u.MerkleTree(new i.Leaf(new Uint8Array,new Uint8Array(32).fill(7)),[]);l.mockReturnValueOnce(n);const e=c.fromRegisteredWallet(a),t=new TextEncoder;expect(l).toHaveBeenCalledWith([t.encode("key1"),t.encode("key2")]),expect(e.name).toStrictEqual("Cold storage"),expect(e.hmac).toStrictEqual(new Uint8Array(32).fill(42)),expect(e.descriptorTemplate).toStrictEqual("wsh(sortedmulti(2,@0/**,@1/**))"),expect(e.descriptorBuffer).toStrictEqual(t.encode("wsh(sortedmulti(2,@0/**,@1/**))")),expect(e.keys).toStrictEqual(["key1","key2"]),expect(e.keysTree).toStrictEqual(n)}),it("Create default wallet",()=>{const c=new s.DefaultWalletBuilder(d),a=new o.DefaultWallet("48'/1'/0'/0'",o.DefaultDescriptorTemplate.NATIVE_SEGWIT),n=(0,p.hexaStringToBuffer)("5c9e228d"),e="tpubDEGquuorgFNb8bjh5kNZQMPtABJzoWwNm78FUmeoPkfRtoPF7JLrtoZeT3J3ybq1HmC3Rn1Q8wFQ8J5usanzups5rj7PJoQLNyvq8QbJruW",t=new u.MerkleTree(new i.Leaf(new Uint8Array,new Uint8Array(32).fill(7)),[]);l.mockReturnValueOnce(t);const r=c.fromDefaultWallet(n,e,a),m=new TextEncoder;expect(l).toHaveBeenCalledWith([m.encode("[5c9e228d/48'/1'/0'/0']tpubDEGquuorgFNb8bjh5kNZQMPtABJzoWwNm78FUmeoPkfRtoPF7JLrtoZeT3J3ybq1HmC3Rn1Q8wFQ8J5usanzups5rj7PJoQLNyvq8QbJruW")]),expect(r.name).toStrictEqual(""),expect(r.hmac).toStrictEqual(new Uint8Array(32).fill(0)),expect(r.descriptorTemplate).toStrictEqual("wpkh(@0/**)"),expect(r.descriptorBuffer).toStrictEqual(m.encode("wpkh(@0/**)")),expect(r.keys).toStrictEqual(["[5c9e228d/48'/1'/0'/0']tpubDEGquuorgFNb8bjh5kNZQMPtABJzoWwNm78FUmeoPkfRtoPF7JLrtoZeT3J3ybq1HmC3Rn1Q8wFQ8J5usanzups5rj7PJoQLNyvq8QbJruW"]),expect(r.keysTree).toStrictEqual(t)})});
|
|
2
2
|
//# sourceMappingURL=DefaultWalletBuilder.test.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/wallet/service/DefaultWalletBuilder.test.ts"],
|
|
4
|
-
"sourcesContent": ["import { hexaStringToBuffer } from \"@ledgerhq/device-management-kit\";\n\nimport {\n DefaultDescriptorTemplate,\n DefaultWallet,\n RegisteredWallet,\n} from \"@api/model/Wallet\";\nimport { Leaf } from \"@internal/merkle-tree/model/Leaf\";\nimport { MerkleTree } from \"@internal/merkle-tree/model/MerkleTree\";\nimport { type MerkleTreeBuilder } from \"@internal/merkle-tree/service/MerkleTreeBuilder\";\n\nimport { DefaultWalletBuilder } from \"./DefaultWalletBuilder\";\n\ndescribe(\"DefaultWalletBuilder tests\", () => {\n const mockCreateMerkleTree =
|
|
5
|
-
"mappings": "aAAA,IAAAA,EAAmC,2CAEnCC,EAIO,6BACPC,EAAqB,4CACrBC,EAA2B,kDAG3BC,EAAqC,kCAErC,SAAS,6BAA8B,IAAM,CAC3C,MAAMC,EAAuB,
|
|
4
|
+
"sourcesContent": ["import { hexaStringToBuffer } from \"@ledgerhq/device-management-kit\";\n\nimport {\n DefaultDescriptorTemplate,\n DefaultWallet,\n RegisteredWallet,\n} from \"@api/model/Wallet\";\nimport { Leaf } from \"@internal/merkle-tree/model/Leaf\";\nimport { MerkleTree } from \"@internal/merkle-tree/model/MerkleTree\";\nimport { type MerkleTreeBuilder } from \"@internal/merkle-tree/service/MerkleTreeBuilder\";\n\nimport { DefaultWalletBuilder } from \"./DefaultWalletBuilder\";\n\ndescribe(\"DefaultWalletBuilder tests\", () => {\n const mockCreateMerkleTree = vi.fn();\n const mockMerkleTree = {\n build: mockCreateMerkleTree,\n } as unknown as MerkleTreeBuilder;\n\n it(\"Create registered wallet\", () => {\n // Given\n const builder = new DefaultWalletBuilder(mockMerkleTree);\n const registeredWallet = new RegisteredWallet(\n \"Cold storage\",\n \"wsh(sortedmulti(2,@0/**,@1/**))\",\n [\"key1\", \"key2\"],\n new Uint8Array(32).fill(42),\n );\n const keysTree = new MerkleTree(\n new Leaf(new Uint8Array(), new Uint8Array(32).fill(7)),\n [],\n );\n\n // When\n mockCreateMerkleTree.mockReturnValueOnce(keysTree);\n const wallet = builder.fromRegisteredWallet(registeredWallet);\n\n // Then\n const encoder = new TextEncoder();\n expect(mockCreateMerkleTree).toHaveBeenCalledWith([\n encoder.encode(\"key1\"),\n encoder.encode(\"key2\"),\n ]);\n expect(wallet.name).toStrictEqual(\"Cold storage\");\n expect(wallet.hmac).toStrictEqual(new Uint8Array(32).fill(42));\n expect(wallet.descriptorTemplate).toStrictEqual(\n \"wsh(sortedmulti(2,@0/**,@1/**))\",\n );\n expect(wallet.descriptorBuffer).toStrictEqual(\n encoder.encode(\"wsh(sortedmulti(2,@0/**,@1/**))\"),\n );\n expect(wallet.keys).toStrictEqual([\"key1\", \"key2\"]);\n expect(wallet.keysTree).toStrictEqual(keysTree);\n });\n\n it(\"Create default wallet\", () => {\n // Given\n const builder = new DefaultWalletBuilder(mockMerkleTree);\n const defaultWallet = new DefaultWallet(\n \"48'/1'/0'/0'\",\n DefaultDescriptorTemplate.NATIVE_SEGWIT,\n );\n const masterFingerprint = hexaStringToBuffer(\"5c9e228d\")!;\n const extendedPublicKey =\n \"tpubDEGquuorgFNb8bjh5kNZQMPtABJzoWwNm78FUmeoPkfRtoPF7JLrtoZeT3J3ybq1HmC3Rn1Q8wFQ8J5usanzups5rj7PJoQLNyvq8QbJruW\";\n const keysTree = new MerkleTree(\n new Leaf(new Uint8Array(), new Uint8Array(32).fill(7)),\n [],\n );\n\n // When\n mockCreateMerkleTree.mockReturnValueOnce(keysTree);\n const wallet = builder.fromDefaultWallet(\n masterFingerprint,\n extendedPublicKey,\n defaultWallet,\n );\n\n // Then\n const encoder = new TextEncoder();\n expect(mockCreateMerkleTree).toHaveBeenCalledWith([\n encoder.encode(\n \"[5c9e228d/48'/1'/0'/0']tpubDEGquuorgFNb8bjh5kNZQMPtABJzoWwNm78FUmeoPkfRtoPF7JLrtoZeT3J3ybq1HmC3Rn1Q8wFQ8J5usanzups5rj7PJoQLNyvq8QbJruW\",\n ),\n ]);\n expect(wallet.name).toStrictEqual(\"\");\n expect(wallet.hmac).toStrictEqual(new Uint8Array(32).fill(0));\n expect(wallet.descriptorTemplate).toStrictEqual(\"wpkh(@0/**)\");\n expect(wallet.descriptorBuffer).toStrictEqual(\n encoder.encode(\"wpkh(@0/**)\"),\n );\n expect(wallet.keys).toStrictEqual([\n \"[5c9e228d/48'/1'/0'/0']tpubDEGquuorgFNb8bjh5kNZQMPtABJzoWwNm78FUmeoPkfRtoPF7JLrtoZeT3J3ybq1HmC3Rn1Q8wFQ8J5usanzups5rj7PJoQLNyvq8QbJruW\",\n ]);\n expect(wallet.keysTree).toStrictEqual(keysTree);\n });\n});\n"],
|
|
5
|
+
"mappings": "aAAA,IAAAA,EAAmC,2CAEnCC,EAIO,6BACPC,EAAqB,4CACrBC,EAA2B,kDAG3BC,EAAqC,kCAErC,SAAS,6BAA8B,IAAM,CAC3C,MAAMC,EAAuB,GAAG,GAAG,EAC7BC,EAAiB,CACrB,MAAOD,CACT,EAEA,GAAG,2BAA4B,IAAM,CAEnC,MAAME,EAAU,IAAI,uBAAqBD,CAAc,EACjDE,EAAmB,IAAI,mBAC3B,eACA,kCACA,CAAC,OAAQ,MAAM,EACf,IAAI,WAAW,EAAE,EAAE,KAAK,EAAE,CAC5B,EACMC,EAAW,IAAI,aACnB,IAAI,OAAK,IAAI,WAAc,IAAI,WAAW,EAAE,EAAE,KAAK,CAAC,CAAC,EACrD,CAAC,CACH,EAGAJ,EAAqB,oBAAoBI,CAAQ,EACjD,MAAMC,EAASH,EAAQ,qBAAqBC,CAAgB,EAGtDG,EAAU,IAAI,YACpB,OAAON,CAAoB,EAAE,qBAAqB,CAChDM,EAAQ,OAAO,MAAM,EACrBA,EAAQ,OAAO,MAAM,CACvB,CAAC,EACD,OAAOD,EAAO,IAAI,EAAE,cAAc,cAAc,EAChD,OAAOA,EAAO,IAAI,EAAE,cAAc,IAAI,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC,EAC7D,OAAOA,EAAO,kBAAkB,EAAE,cAChC,iCACF,EACA,OAAOA,EAAO,gBAAgB,EAAE,cAC9BC,EAAQ,OAAO,iCAAiC,CAClD,EACA,OAAOD,EAAO,IAAI,EAAE,cAAc,CAAC,OAAQ,MAAM,CAAC,EAClD,OAAOA,EAAO,QAAQ,EAAE,cAAcD,CAAQ,CAChD,CAAC,EAED,GAAG,wBAAyB,IAAM,CAEhC,MAAMF,EAAU,IAAI,uBAAqBD,CAAc,EACjDM,EAAgB,IAAI,gBACxB,eACA,4BAA0B,aAC5B,EACMC,KAAoB,sBAAmB,UAAU,EACjDC,EACJ,kHACIL,EAAW,IAAI,aACnB,IAAI,OAAK,IAAI,WAAc,IAAI,WAAW,EAAE,EAAE,KAAK,CAAC,CAAC,EACrD,CAAC,CACH,EAGAJ,EAAqB,oBAAoBI,CAAQ,EACjD,MAAMC,EAASH,EAAQ,kBACrBM,EACAC,EACAF,CACF,EAGMD,EAAU,IAAI,YACpB,OAAON,CAAoB,EAAE,qBAAqB,CAChDM,EAAQ,OACN,wIACF,CACF,CAAC,EACD,OAAOD,EAAO,IAAI,EAAE,cAAc,EAAE,EACpC,OAAOA,EAAO,IAAI,EAAE,cAAc,IAAI,WAAW,EAAE,EAAE,KAAK,CAAC,CAAC,EAC5D,OAAOA,EAAO,kBAAkB,EAAE,cAAc,aAAa,EAC7D,OAAOA,EAAO,gBAAgB,EAAE,cAC9BC,EAAQ,OAAO,aAAa,CAC9B,EACA,OAAOD,EAAO,IAAI,EAAE,cAAc,CAChC,wIACF,CAAC,EACD,OAAOA,EAAO,QAAQ,EAAE,cAAcD,CAAQ,CAChD,CAAC,CACH,CAAC",
|
|
6
6
|
"names": ["import_device_management_kit", "import_Wallet", "import_Leaf", "import_MerkleTree", "import_DefaultWalletBuilder", "mockCreateMerkleTree", "mockMerkleTree", "builder", "registeredWallet", "keysTree", "wallet", "encoder", "defaultWallet", "masterFingerprint", "extendedPublicKey"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var r=require("@ledgerhq/device-management-kit"),t=require("../../merkle-tree/model/Leaf"),i=require("../../merkle-tree/model/MerkleTree"),l=require("../../wallet/model/Wallet"),o=require("./DefaultWalletSerializer");describe("DefaultWalletSerializer tests",()=>{const e=
|
|
1
|
+
"use strict";var r=require("@ledgerhq/device-management-kit"),t=require("../../merkle-tree/model/Leaf"),i=require("../../merkle-tree/model/MerkleTree"),l=require("../../wallet/model/Wallet"),o=require("./DefaultWalletSerializer");describe("DefaultWalletSerializer tests",()=>{const e=vi.fn(),n={hash:e};it("Serialize a wallet",()=>{const s=new o.DefaultWalletSerializer(n),a=new Uint8Array(31).fill(16),c=new l.Wallet({name:"Cold storage",descriptorTemplate:"wsh(sortedmulti(2,@0/**,@1/**))",keys:["key1","key2"],hmac:new Uint8Array,keysTree:new i.MerkleTree(new t.Leaf(new Uint8Array,new Uint8Array(32).fill(7)),[]),descriptorBuffer:a});e.mockReturnValueOnce(new Uint8Array(32).fill(42));const f=s.serialize(c);expect(e).toHaveBeenCalledWith(a),expect(f).toStrictEqual((0,r.hexaStringToBuffer)("020c436f6c642073746f726167651f2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a020707070707070707070707070707070707070707070707070707070707070707"))})});
|
|
2
2
|
//# sourceMappingURL=DefaultWalletSerializer.test.js.map
|