@ledgerhq/device-signer-kit-bitcoin 0.0.0-20250119001136 → 0.0.0-signer-eth-20250122093657
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 +363 -0
- package/lib/cjs/api/SignerBtc.js +1 -1
- package/lib/cjs/api/SignerBtc.js.map +1 -1
- package/lib/cjs/api/app-binder/GetWalletAddressDeviceActionTypes.js +2 -0
- package/lib/cjs/api/app-binder/GetWalletAddressDeviceActionTypes.js.map +7 -0
- package/lib/cjs/api/index.js +1 -1
- package/lib/cjs/api/index.js.map +2 -2
- package/lib/cjs/api/model/Wallet.js +1 -1
- package/lib/cjs/api/model/Wallet.js.map +1 -1
- package/lib/cjs/api/model/WalletAddressOptions.js +2 -0
- package/lib/cjs/api/model/WalletAddressOptions.js.map +7 -0
- package/lib/cjs/internal/DefaultSignerBtc.js +1 -1
- package/lib/cjs/internal/DefaultSignerBtc.js.map +3 -3
- 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/command/GetExtendedPublicKeyCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/GetExtendedPublicKeyCommand.test.js.map +2 -2
- package/lib/cjs/internal/app-binder/command/GetWalletAddressCommand.js +1 -1
- package/lib/cjs/internal/app-binder/command/GetWalletAddressCommand.js.map +3 -3
- package/lib/cjs/internal/app-binder/command/GetWalletAddressCommand.test.js +1 -1
- package/lib/cjs/internal/app-binder/command/GetWalletAddressCommand.test.js.map +3 -3
- package/lib/cjs/internal/app-binder/device-action/GetWalletAddress/GetWalletAddressDeviceAction.js +2 -0
- package/lib/cjs/internal/app-binder/device-action/GetWalletAddress/GetWalletAddressDeviceAction.js.map +7 -0
- package/lib/cjs/internal/app-binder/device-action/GetWalletAddress/GetWalletAddressDeviceAction.test.js +2 -0
- package/lib/cjs/internal/app-binder/device-action/GetWalletAddress/GetWalletAddressDeviceAction.test.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/GetWalletAddressTask.js +2 -0
- package/lib/cjs/internal/app-binder/task/GetWalletAddressTask.js.map +7 -0
- package/lib/cjs/internal/app-binder/task/GetWalletAddressTask.test.js +2 -0
- package/lib/cjs/internal/app-binder/task/GetWalletAddressTask.test.js.map +7 -0
- package/lib/cjs/internal/use-cases/di/useCasesModule.js +1 -1
- package/lib/cjs/internal/use-cases/di/useCasesModule.js.map +3 -3
- package/lib/cjs/internal/use-cases/di/useCasesModule.test.js +1 -1
- package/lib/cjs/internal/use-cases/di/useCasesModule.test.js.map +2 -2
- package/lib/cjs/internal/use-cases/di/useCasesTypes.js +1 -1
- package/lib/cjs/internal/use-cases/di/useCasesTypes.js.map +2 -2
- package/lib/cjs/internal/use-cases/get-wallet-address/GetWalletAddressUseCase.js +2 -0
- package/lib/cjs/internal/use-cases/get-wallet-address/GetWalletAddressUseCase.js.map +7 -0
- package/lib/cjs/internal/use-cases/get-wallet-address/GetWalletAddressUseCase.test.js +2 -0
- package/lib/cjs/internal/use-cases/get-wallet-address/GetWalletAddressUseCase.test.js.map +7 -0
- package/lib/cjs/internal/utils/BtcCommandUtils.js +1 -1
- package/lib/cjs/internal/utils/BtcCommandUtils.js.map +3 -3
- package/lib/cjs/package.json +1 -1
- package/lib/esm/api/app-binder/GetWalletAddressDeviceActionTypes.js +1 -0
- package/lib/esm/api/app-binder/GetWalletAddressDeviceActionTypes.js.map +7 -0
- package/lib/esm/api/index.js +1 -1
- package/lib/esm/api/index.js.map +2 -2
- package/lib/esm/api/model/Wallet.js +1 -1
- package/lib/esm/api/model/Wallet.js.map +1 -1
- package/lib/esm/api/model/WalletAddressOptions.js +1 -0
- package/lib/esm/api/model/WalletAddressOptions.js.map +7 -0
- package/lib/esm/internal/DefaultSignerBtc.js +1 -1
- package/lib/esm/internal/DefaultSignerBtc.js.map +3 -3
- 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/command/GetExtendedPublicKeyCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/GetExtendedPublicKeyCommand.test.js.map +2 -2
- package/lib/esm/internal/app-binder/command/GetWalletAddressCommand.js +1 -1
- package/lib/esm/internal/app-binder/command/GetWalletAddressCommand.js.map +3 -3
- package/lib/esm/internal/app-binder/command/GetWalletAddressCommand.test.js +1 -1
- package/lib/esm/internal/app-binder/command/GetWalletAddressCommand.test.js.map +3 -3
- package/lib/esm/internal/app-binder/device-action/GetWalletAddress/GetWalletAddressDeviceAction.js +2 -0
- package/lib/esm/internal/app-binder/device-action/GetWalletAddress/GetWalletAddressDeviceAction.js.map +7 -0
- package/lib/esm/internal/app-binder/device-action/GetWalletAddress/GetWalletAddressDeviceAction.test.js +2 -0
- package/lib/esm/internal/app-binder/device-action/GetWalletAddress/GetWalletAddressDeviceAction.test.js.map +7 -0
- package/lib/esm/internal/app-binder/task/GetWalletAddressTask.js +2 -0
- package/lib/esm/internal/app-binder/task/GetWalletAddressTask.js.map +7 -0
- package/lib/esm/internal/app-binder/task/GetWalletAddressTask.test.js +2 -0
- package/lib/esm/internal/app-binder/task/GetWalletAddressTask.test.js.map +7 -0
- package/lib/esm/internal/use-cases/di/useCasesModule.js +1 -1
- package/lib/esm/internal/use-cases/di/useCasesModule.js.map +3 -3
- package/lib/esm/internal/use-cases/di/useCasesModule.test.js +1 -1
- package/lib/esm/internal/use-cases/di/useCasesModule.test.js.map +2 -2
- package/lib/esm/internal/use-cases/di/useCasesTypes.js +1 -1
- package/lib/esm/internal/use-cases/di/useCasesTypes.js.map +2 -2
- package/lib/esm/internal/use-cases/get-wallet-address/GetWalletAddressUseCase.js +2 -0
- package/lib/esm/internal/use-cases/get-wallet-address/GetWalletAddressUseCase.js.map +7 -0
- package/lib/esm/internal/use-cases/get-wallet-address/GetWalletAddressUseCase.test.js +2 -0
- package/lib/esm/internal/use-cases/get-wallet-address/GetWalletAddressUseCase.test.js.map +7 -0
- package/lib/esm/internal/utils/BtcCommandUtils.js +1 -1
- package/lib/esm/internal/utils/BtcCommandUtils.js.map +3 -3
- package/lib/esm/package.json +1 -1
- package/lib/types/api/SignerBtc.d.ts +3 -0
- package/lib/types/api/SignerBtc.d.ts.map +1 -1
- package/lib/types/api/app-binder/GetWalletAddressDeviceActionTypes.d.ts +32 -0
- package/lib/types/api/app-binder/GetWalletAddressDeviceActionTypes.d.ts.map +1 -0
- package/lib/types/api/index.d.ts +2 -1
- package/lib/types/api/index.d.ts.map +1 -1
- package/lib/types/api/model/Wallet.d.ts +3 -0
- package/lib/types/api/model/Wallet.d.ts.map +1 -1
- package/lib/types/api/model/WalletAddressOptions.d.ts +5 -0
- package/lib/types/api/model/WalletAddressOptions.d.ts.map +1 -0
- package/lib/types/internal/DefaultSignerBtc.d.ts +3 -1
- package/lib/types/internal/DefaultSignerBtc.d.ts.map +1 -1
- package/lib/types/internal/app-binder/BtcAppBinder.d.ts +7 -0
- package/lib/types/internal/app-binder/BtcAppBinder.d.ts.map +1 -1
- package/lib/types/internal/app-binder/command/GetWalletAddressCommand.d.ts +5 -7
- package/lib/types/internal/app-binder/command/GetWalletAddressCommand.d.ts.map +1 -1
- package/lib/types/internal/app-binder/device-action/GetWalletAddress/GetWalletAddressDeviceAction.d.ts +38 -0
- package/lib/types/internal/app-binder/device-action/GetWalletAddress/GetWalletAddressDeviceAction.d.ts.map +1 -0
- package/lib/types/internal/app-binder/device-action/GetWalletAddress/GetWalletAddressDeviceAction.test.d.ts +2 -0
- package/lib/types/internal/app-binder/device-action/GetWalletAddress/GetWalletAddressDeviceAction.test.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/GetWalletAddressTask.d.ts +27 -0
- package/lib/types/internal/app-binder/task/GetWalletAddressTask.d.ts.map +1 -0
- package/lib/types/internal/app-binder/task/GetWalletAddressTask.test.d.ts +2 -0
- package/lib/types/internal/app-binder/task/GetWalletAddressTask.test.d.ts.map +1 -0
- package/lib/types/internal/use-cases/di/useCasesModule.d.ts.map +1 -1
- package/lib/types/internal/use-cases/di/useCasesTypes.d.ts +1 -0
- package/lib/types/internal/use-cases/di/useCasesTypes.d.ts.map +1 -1
- package/lib/types/internal/use-cases/get-wallet-address/GetWalletAddressUseCase.d.ts +9 -0
- package/lib/types/internal/use-cases/get-wallet-address/GetWalletAddressUseCase.d.ts.map +1 -0
- package/lib/types/internal/use-cases/get-wallet-address/GetWalletAddressUseCase.test.d.ts +2 -0
- package/lib/types/internal/use-cases/get-wallet-address/GetWalletAddressUseCase.test.d.ts.map +1 -0
- package/lib/types/internal/utils/BtcCommandUtils.d.ts +2 -0
- package/lib/types/internal/utils/BtcCommandUtils.d.ts.map +1 -1
- package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
- package/package.json +6 -6
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useCasesTypes as s}from"./use-cases/di/useCasesTypes";import{makeContainer as
|
|
1
|
+
import{useCasesTypes as s}from"./use-cases/di/useCasesTypes";import{makeContainer as i}from"./di";class g{_container;constructor({dmk:e,sessionId:t}){this._container=i({dmk:e,sessionId:t})}getWalletAddress(e,t,{checkOnDevice:r=!1,change:n=!1}){return this._container.get(s.GetWalletAddressUseCase).execute(r,e,n,t)}signPsbt(e,t){return this._container.get(s.SignPsbtUseCase).execute(e,t)}getExtendedPublicKey(e,{checkOnDevice:t=!1}){return this._container.get(s.GetExtendedPublicKeyUseCase).execute(e,{checkOnDevice:t})}signMessage(e,t){return this._container.get(s.SignMessageUseCase).execute(e,t)}signTransaction(e,t){return this._container.get(s.SignTransactionUseCase).execute(e,t)}}export{g as DefaultSignerBtc};
|
|
2
2
|
//# sourceMappingURL=DefaultSignerBtc.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/internal/DefaultSignerBtc.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n type DeviceManagementKit,\n type DeviceSessionId,\n} from \"@ledgerhq/device-management-kit\";\nimport { type Container } from \"inversify\";\n\nimport { type SignMessageDAReturnType } from \"@api/app-binder/SignMessageDeviceActionTypes\";\nimport { type AddressOptions } from \"@api/model/AddressOptions\";\nimport { type Psbt } from \"@api/model/Psbt\";\nimport { type Wallet } from \"@api/model/Wallet\";\nimport { type SignerBtc } from \"@api/SignerBtc\";\nimport { useCasesTypes } from \"@internal/use-cases/di/useCasesTypes\";\nimport { type GetExtendedPublicKeyUseCase } from \"@internal/use-cases/get-extended-public-key/GetExtendedPublicKeyUseCase\";\nimport { type SignPsbtUseCase } from \"@internal/use-cases/sign-psbt/SignPsbtUseCase\";\nimport { type SignTransactionUseCase } from \"@internal/use-cases/sign-transaction/SignTransactionUseCase\";\n\nimport { type SignMessageUseCase } from \"./use-cases/sign-message/SignMessageUseCase\";\nimport { makeContainer } from \"./di\";\n\ntype DefaultSignerBtcConstructorArgs = {\n dmk: DeviceManagementKit;\n sessionId: DeviceSessionId;\n};\n\nexport class DefaultSignerBtc implements SignerBtc {\n private readonly _container: Container;\n\n constructor({ dmk, sessionId }: DefaultSignerBtcConstructorArgs) {\n this._container = makeContainer({ dmk, sessionId });\n }\n\n signPsbt(wallet: Wallet, psbt: Psbt) {\n return this._container\n .get<SignPsbtUseCase>(useCasesTypes.SignPsbtUseCase)\n .execute(wallet, psbt);\n }\n\n getExtendedPublicKey(\n derivationPath: string,\n { checkOnDevice = false }: AddressOptions,\n ) {\n return this._container\n .get<GetExtendedPublicKeyUseCase>(\n useCasesTypes.GetExtendedPublicKeyUseCase,\n )\n .execute(derivationPath, { checkOnDevice });\n }\n\n signMessage(\n
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": ["useCasesTypes", "makeContainer", "DefaultSignerBtc", "dmk", "sessionId", "wallet", "
|
|
4
|
+
"sourcesContent": ["import {\n type DeviceManagementKit,\n type DeviceSessionId,\n} from \"@ledgerhq/device-management-kit\";\nimport { type Container } from \"inversify\";\n\nimport { type SignMessageDAReturnType } from \"@api/app-binder/SignMessageDeviceActionTypes\";\nimport { type AddressOptions } from \"@api/model/AddressOptions\";\nimport { type Psbt } from \"@api/model/Psbt\";\nimport { type Wallet } from \"@api/model/Wallet\";\nimport { type WalletAddressOptions } from \"@api/model/WalletAddressOptions\";\nimport { type SignerBtc } from \"@api/SignerBtc\";\nimport { useCasesTypes } from \"@internal/use-cases/di/useCasesTypes\";\nimport { type GetExtendedPublicKeyUseCase } from \"@internal/use-cases/get-extended-public-key/GetExtendedPublicKeyUseCase\";\nimport { type SignPsbtUseCase } from \"@internal/use-cases/sign-psbt/SignPsbtUseCase\";\nimport { type SignTransactionUseCase } from \"@internal/use-cases/sign-transaction/SignTransactionUseCase\";\n\nimport { type GetWalletAddressUseCase } from \"./use-cases/get-wallet-address/GetWalletAddressUseCase\";\nimport { type SignMessageUseCase } from \"./use-cases/sign-message/SignMessageUseCase\";\nimport { makeContainer } from \"./di\";\n\ntype DefaultSignerBtcConstructorArgs = {\n dmk: DeviceManagementKit;\n sessionId: DeviceSessionId;\n};\n\nexport class DefaultSignerBtc implements SignerBtc {\n private readonly _container: Container;\n\n constructor({ dmk, sessionId }: DefaultSignerBtcConstructorArgs) {\n this._container = makeContainer({ dmk, sessionId });\n }\n\n getWalletAddress(\n wallet: Wallet,\n addressIndex: number,\n { checkOnDevice = false, change = false }: WalletAddressOptions,\n ) {\n return this._container\n .get<GetWalletAddressUseCase>(useCasesTypes.GetWalletAddressUseCase)\n .execute(checkOnDevice, wallet, change, addressIndex);\n }\n\n signPsbt(wallet: Wallet, psbt: Psbt) {\n return this._container\n .get<SignPsbtUseCase>(useCasesTypes.SignPsbtUseCase)\n .execute(wallet, psbt);\n }\n\n getExtendedPublicKey(\n derivationPath: string,\n { checkOnDevice = false }: AddressOptions,\n ) {\n return this._container\n .get<GetExtendedPublicKeyUseCase>(\n useCasesTypes.GetExtendedPublicKeyUseCase,\n )\n .execute(derivationPath, { checkOnDevice });\n }\n\n signMessage(\n derivationPath: string,\n message: string,\n ): SignMessageDAReturnType {\n return this._container\n .get<SignMessageUseCase>(useCasesTypes.SignMessageUseCase)\n .execute(derivationPath, message);\n }\n\n signTransaction(wallet: Wallet, psbt: Psbt) {\n return this._container\n .get<SignTransactionUseCase>(useCasesTypes.SignTransactionUseCase)\n .execute(wallet, psbt);\n }\n}\n"],
|
|
5
|
+
"mappings": "AAYA,OAAS,iBAAAA,MAAqB,uCAO9B,OAAS,iBAAAC,MAAqB,OAOvB,MAAMC,CAAsC,CAChC,WAEjB,YAAY,CAAE,IAAAC,EAAK,UAAAC,CAAU,EAAoC,CAC/D,KAAK,WAAaH,EAAc,CAAE,IAAAE,EAAK,UAAAC,CAAU,CAAC,CACpD,CAEA,iBACEC,EACAC,EACA,CAAE,cAAAC,EAAgB,GAAO,OAAAC,EAAS,EAAM,EACxC,CACA,OAAO,KAAK,WACT,IAA6BR,EAAc,uBAAuB,EAClE,QAAQO,EAAeF,EAAQG,EAAQF,CAAY,CACxD,CAEA,SAASD,EAAgBI,EAAY,CACnC,OAAO,KAAK,WACT,IAAqBT,EAAc,eAAe,EAClD,QAAQK,EAAQI,CAAI,CACzB,CAEA,qBACEC,EACA,CAAE,cAAAH,EAAgB,EAAM,EACxB,CACA,OAAO,KAAK,WACT,IACCP,EAAc,2BAChB,EACC,QAAQU,EAAgB,CAAE,cAAAH,CAAc,CAAC,CAC9C,CAEA,YACEG,EACAC,EACyB,CACzB,OAAO,KAAK,WACT,IAAwBX,EAAc,kBAAkB,EACxD,QAAQU,EAAgBC,CAAO,CACpC,CAEA,gBAAgBN,EAAgBI,EAAY,CAC1C,OAAO,KAAK,WACT,IAA4BT,EAAc,sBAAsB,EAChE,QAAQK,EAAQI,CAAI,CACzB,CACF",
|
|
6
|
+
"names": ["useCasesTypes", "makeContainer", "DefaultSignerBtc", "dmk", "sessionId", "wallet", "addressIndex", "checkOnDevice", "change", "psbt", "derivationPath", "message"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var S=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var
|
|
1
|
+
var S=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var p=(l,e,s,r)=>{for(var t=r>1?void 0:r?b(e,s):e,n=l.length-1,o;n>=0;n--)(o=l[n])&&(t=(r?o(e,s,t):o(t))||t);return r&&t&&S(e,s,t),t},i=(l,e)=>(s,r)=>e(s,r,l);import{SendCommandInAppDeviceAction as D,UserInteractionRequired as c}from"@ledgerhq/device-management-kit";import{inject as a,injectable as h}from"inversify";import{GetExtendedPublicKeyCommand as y}from"../app-binder/command/GetExtendedPublicKeyCommand";import{SignPsbtDeviceAction as w}from"../app-binder/device-action/SignPsbt/SignPsbtDeviceAction";import{SignTransactionDeviceAction as _}from"../app-binder/device-action/SignTransaction/SignTransactionDeviceAction";import{dataStoreTypes as A}from"../data-store/di/dataStoreTypes";import{externalTypes as m}from"../externalTypes";import{psbtTypes as u}from"../psbt/di/psbtTypes";import{walletTypes as v}from"../wallet/di/walletTypes";import{GetWalletAddressDeviceAction as P}from"./device-action/GetWalletAddress/GetWalletAddressDeviceAction";import{SignMessageDeviceAction as f}from"./device-action/SignMessage/SignMessageDeviceAction";let d=class{constructor(e,s,r,t,n,o,I){this._dmk=e;this._sessionId=s;this._walletBuilder=r;this._walletSerializer=t;this._dataStoreService=n;this._psbtMapper=o;this._valueParser=I}getExtendedPublicKey(e){return this._dmk.executeDeviceAction({sessionId:this._sessionId,deviceAction:new D({input:{command:new y(e),appName:"Bitcoin",requiredUserInteraction:e.checkOnDevice?c.VerifyAddress:c.None}})})}signMessage(e){return this._dmk.executeDeviceAction({sessionId:this._sessionId,deviceAction:new f({input:{derivationPath:e.derivationPath,message:e.message,dataStoreService:this._dataStoreService}})})}signPsbt(e){return this._dmk.executeDeviceAction({sessionId:this._sessionId,deviceAction:new w({input:{psbt:e.psbt,wallet:e.wallet,walletBuilder:this._walletBuilder,walletSerializer:this._walletSerializer,dataStoreService:this._dataStoreService,psbtMapper:this._psbtMapper,valueParser:this._valueParser}})})}getWalletAddress(e){return this._dmk.executeDeviceAction({sessionId:this._sessionId,deviceAction:new P({input:{wallet:e.wallet,checkOnDevice:e.checkOnDevice,change:e.change,addressIndex:e.addressIndex,walletBuilder:this._walletBuilder,walletSerializer:this._walletSerializer,dataStoreService:this._dataStoreService}})})}signTransaction(e){return this._dmk.executeDeviceAction({sessionId:this._sessionId,deviceAction:new _({input:{psbt:e.psbt,wallet:e.wallet,walletBuilder:this._walletBuilder,walletSerializer:this._walletSerializer,dataStoreService:this._dataStoreService,psbtMapper:this._psbtMapper,valueParser:this._valueParser}})})}};d=p([h(),i(0,a(m.Dmk)),i(1,a(m.SessionId)),i(2,a(v.WalletBuilder)),i(3,a(v.WalletSerializer)),i(4,a(A.DataStoreService)),i(5,a(u.PsbtMapper)),i(6,a(u.ValueParser))],d);export{d as BtcAppBinder};
|
|
2
2
|
//# sourceMappingURL=BtcAppBinder.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/internal/app-binder/BtcAppBinder.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n DeviceManagementKit,\n type DeviceSessionId,\n SendCommandInAppDeviceAction,\n UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\n\nimport {\n GetExtendedPublicKeyDAInput,\n GetExtendedPublicKeyDAReturnType,\n} from \"@api/app-binder/GetExtendedPublicKeyDeviceActionTypes\";\nimport { SignMessageDAReturnType } from \"@api/app-binder/SignMessageDeviceActionTypes\";\nimport { SignPsbtDAReturnType } from \"@api/app-binder/SignPsbtDeviceActionTypes\";\nimport { SignTransactionDAReturnType } from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport { Psbt } from \"@api/model/Psbt\";\nimport { Wallet } from \"@api/model/Wallet\";\nimport { GetExtendedPublicKeyCommand } from \"@internal/app-binder/command/GetExtendedPublicKeyCommand\";\nimport { SignPsbtDeviceAction } from \"@internal/app-binder/device-action/SignPsbt/SignPsbtDeviceAction\";\nimport { SignTransactionDeviceAction } from \"@internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction\";\nimport { dataStoreTypes } from \"@internal/data-store/di/dataStoreTypes\";\nimport type { DataStoreService } from \"@internal/data-store/service/DataStoreService\";\nimport { externalTypes } from \"@internal/externalTypes\";\nimport { psbtTypes } from \"@internal/psbt/di/psbtTypes\";\nimport type { PsbtMapper } from \"@internal/psbt/service/psbt/PsbtMapper\";\nimport type { ValueParser } from \"@internal/psbt/service/value/ValueParser\";\nimport { walletTypes } from \"@internal/wallet/di/walletTypes\";\nimport type { WalletBuilder } from \"@internal/wallet/service/WalletBuilder\";\nimport type { WalletSerializer } from \"@internal/wallet/service/WalletSerializer\";\n\nimport { SignMessageDeviceAction } from \"./device-action/SignMessage/SignMessageDeviceAction\";\n\n@injectable()\nexport class BtcAppBinder {\n constructor(\n @inject(externalTypes.Dmk)\n private readonly _dmk: DeviceManagementKit,\n @inject(externalTypes.SessionId)\n private readonly _sessionId: DeviceSessionId,\n @inject(walletTypes.WalletBuilder)\n private readonly _walletBuilder: WalletBuilder,\n @inject(walletTypes.WalletSerializer)\n private readonly _walletSerializer: WalletSerializer,\n @inject(dataStoreTypes.DataStoreService)\n private readonly _dataStoreService: DataStoreService,\n @inject(psbtTypes.PsbtMapper)\n private readonly _psbtMapper: PsbtMapper,\n @inject(psbtTypes.ValueParser)\n private readonly _valueParser: ValueParser,\n ) {}\n\n getExtendedPublicKey(\n args: GetExtendedPublicKeyDAInput,\n ): GetExtendedPublicKeyDAReturnType {\n return this._dmk.executeDeviceAction({\n sessionId: this._sessionId,\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetExtendedPublicKeyCommand(args),\n appName: \"Bitcoin\",\n requiredUserInteraction: args.checkOnDevice\n ? UserInteractionRequired.VerifyAddress\n : UserInteractionRequired.None,\n },\n }),\n });\n }\n\n signMessage(args: {\n derivationPath: string;\n message: string;\n }): SignMessageDAReturnType {\n return this._dmk.executeDeviceAction({\n sessionId: this._sessionId,\n deviceAction: new SignMessageDeviceAction({\n input: {\n derivationPath: args.derivationPath,\n message: args.message,\n dataStoreService: this._dataStoreService,\n },\n }),\n });\n }\n\n signPsbt(args: { psbt: Psbt; wallet: Wallet }): SignPsbtDAReturnType {\n return this._dmk.executeDeviceAction({\n sessionId: this._sessionId,\n deviceAction: new SignPsbtDeviceAction({\n input: {\n psbt: args.psbt,\n wallet: args.wallet,\n walletBuilder: this._walletBuilder,\n walletSerializer: this._walletSerializer,\n dataStoreService: this._dataStoreService,\n psbtMapper: this._psbtMapper,\n valueParser: this._valueParser,\n },\n }),\n });\n }\n\n signTransaction(args: {\n psbt: Psbt;\n wallet: Wallet;\n }): SignTransactionDAReturnType {\n return this._dmk.executeDeviceAction({\n sessionId: this._sessionId,\n deviceAction: new SignTransactionDeviceAction({\n input: {\n psbt: args.psbt,\n wallet: args.wallet,\n walletBuilder: this._walletBuilder,\n walletSerializer: this._walletSerializer,\n dataStoreService: this._dataStoreService,\n psbtMapper: this._psbtMapper,\n valueParser: this._valueParser,\n },\n }),\n });\n }\n}\n"],
|
|
5
|
-
"mappings": "iOAAA,OAGE,gCAAAA,EACA,2BAAAC,MACK,kCACP,OAAS,UAAAC,EAAQ,cAAAC,MAAkB,
|
|
6
|
-
"names": ["SendCommandInAppDeviceAction", "UserInteractionRequired", "inject", "injectable", "GetExtendedPublicKeyCommand", "SignPsbtDeviceAction", "SignTransactionDeviceAction", "dataStoreTypes", "externalTypes", "psbtTypes", "walletTypes", "SignMessageDeviceAction", "BtcAppBinder", "_dmk", "_sessionId", "_walletBuilder", "_walletSerializer", "_dataStoreService", "_psbtMapper", "_valueParser", "args", "SendCommandInAppDeviceAction", "GetExtendedPublicKeyCommand", "UserInteractionRequired", "SignMessageDeviceAction", "SignPsbtDeviceAction", "SignTransactionDeviceAction", "__decorateClass", "injectable", "__decorateParam", "inject", "externalTypes", "walletTypes", "dataStoreTypes", "psbtTypes"]
|
|
4
|
+
"sourcesContent": ["import {\n DeviceManagementKit,\n type DeviceSessionId,\n SendCommandInAppDeviceAction,\n UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\n\nimport {\n GetExtendedPublicKeyDAInput,\n GetExtendedPublicKeyDAReturnType,\n} from \"@api/app-binder/GetExtendedPublicKeyDeviceActionTypes\";\nimport { SignMessageDAReturnType } from \"@api/app-binder/SignMessageDeviceActionTypes\";\nimport { SignPsbtDAReturnType } from \"@api/app-binder/SignPsbtDeviceActionTypes\";\nimport { SignTransactionDAReturnType } from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport { GetWalletAddressDAReturnType } from \"@api/index\";\nimport { Psbt } from \"@api/model/Psbt\";\nimport { Wallet } from \"@api/model/Wallet\";\nimport { GetExtendedPublicKeyCommand } from \"@internal/app-binder/command/GetExtendedPublicKeyCommand\";\nimport { SignPsbtDeviceAction } from \"@internal/app-binder/device-action/SignPsbt/SignPsbtDeviceAction\";\nimport { SignTransactionDeviceAction } from \"@internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction\";\nimport { dataStoreTypes } from \"@internal/data-store/di/dataStoreTypes\";\nimport type { DataStoreService } from \"@internal/data-store/service/DataStoreService\";\nimport { externalTypes } from \"@internal/externalTypes\";\nimport { psbtTypes } from \"@internal/psbt/di/psbtTypes\";\nimport type { PsbtMapper } from \"@internal/psbt/service/psbt/PsbtMapper\";\nimport type { ValueParser } from \"@internal/psbt/service/value/ValueParser\";\nimport { walletTypes } from \"@internal/wallet/di/walletTypes\";\nimport type { WalletBuilder } from \"@internal/wallet/service/WalletBuilder\";\nimport type { WalletSerializer } from \"@internal/wallet/service/WalletSerializer\";\n\nimport { GetWalletAddressDeviceAction } from \"./device-action/GetWalletAddress/GetWalletAddressDeviceAction\";\nimport { SignMessageDeviceAction } from \"./device-action/SignMessage/SignMessageDeviceAction\";\n\n@injectable()\nexport class BtcAppBinder {\n constructor(\n @inject(externalTypes.Dmk)\n private readonly _dmk: DeviceManagementKit,\n @inject(externalTypes.SessionId)\n private readonly _sessionId: DeviceSessionId,\n @inject(walletTypes.WalletBuilder)\n private readonly _walletBuilder: WalletBuilder,\n @inject(walletTypes.WalletSerializer)\n private readonly _walletSerializer: WalletSerializer,\n @inject(dataStoreTypes.DataStoreService)\n private readonly _dataStoreService: DataStoreService,\n @inject(psbtTypes.PsbtMapper)\n private readonly _psbtMapper: PsbtMapper,\n @inject(psbtTypes.ValueParser)\n private readonly _valueParser: ValueParser,\n ) {}\n\n getExtendedPublicKey(\n args: GetExtendedPublicKeyDAInput,\n ): GetExtendedPublicKeyDAReturnType {\n return this._dmk.executeDeviceAction({\n sessionId: this._sessionId,\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetExtendedPublicKeyCommand(args),\n appName: \"Bitcoin\",\n requiredUserInteraction: args.checkOnDevice\n ? UserInteractionRequired.VerifyAddress\n : UserInteractionRequired.None,\n },\n }),\n });\n }\n\n signMessage(args: {\n derivationPath: string;\n message: string;\n }): SignMessageDAReturnType {\n return this._dmk.executeDeviceAction({\n sessionId: this._sessionId,\n deviceAction: new SignMessageDeviceAction({\n input: {\n derivationPath: args.derivationPath,\n message: args.message,\n dataStoreService: this._dataStoreService,\n },\n }),\n });\n }\n\n signPsbt(args: { psbt: Psbt; wallet: Wallet }): SignPsbtDAReturnType {\n return this._dmk.executeDeviceAction({\n sessionId: this._sessionId,\n deviceAction: new SignPsbtDeviceAction({\n input: {\n psbt: args.psbt,\n wallet: args.wallet,\n walletBuilder: this._walletBuilder,\n walletSerializer: this._walletSerializer,\n dataStoreService: this._dataStoreService,\n psbtMapper: this._psbtMapper,\n valueParser: this._valueParser,\n },\n }),\n });\n }\n\n getWalletAddress(args: {\n checkOnDevice: boolean;\n wallet: Wallet;\n change: boolean;\n addressIndex: number;\n }): GetWalletAddressDAReturnType {\n return this._dmk.executeDeviceAction({\n sessionId: this._sessionId,\n deviceAction: new GetWalletAddressDeviceAction({\n input: {\n wallet: args.wallet,\n checkOnDevice: args.checkOnDevice,\n change: args.change,\n addressIndex: args.addressIndex,\n walletBuilder: this._walletBuilder,\n walletSerializer: this._walletSerializer,\n dataStoreService: this._dataStoreService,\n },\n }),\n });\n }\n\n signTransaction(args: {\n psbt: Psbt;\n wallet: Wallet;\n }): SignTransactionDAReturnType {\n return this._dmk.executeDeviceAction({\n sessionId: this._sessionId,\n deviceAction: new SignTransactionDeviceAction({\n input: {\n psbt: args.psbt,\n wallet: args.wallet,\n walletBuilder: this._walletBuilder,\n walletSerializer: this._walletSerializer,\n dataStoreService: this._dataStoreService,\n psbtMapper: this._psbtMapper,\n valueParser: this._valueParser,\n },\n }),\n });\n }\n}\n"],
|
|
5
|
+
"mappings": "iOAAA,OAGE,gCAAAA,EACA,2BAAAC,MACK,kCACP,OAAS,UAAAC,EAAQ,cAAAC,MAAkB,YAYnC,OAAS,+BAAAC,MAAmC,2DAC5C,OAAS,wBAAAC,MAA4B,mEACrC,OAAS,+BAAAC,MAAmC,iFAC5C,OAAS,kBAAAC,MAAsB,yCAE/B,OAAS,iBAAAC,MAAqB,0BAC9B,OAAS,aAAAC,MAAiB,8BAG1B,OAAS,eAAAC,MAAmB,kCAI5B,OAAS,gCAAAC,MAAoC,gEAC7C,OAAS,2BAAAC,MAA+B,sDAGjC,IAAMC,EAAN,KAAmB,CACxB,YAEmBC,EAEAC,EAEAC,EAEAC,EAEAC,EAEAC,EAEAC,EACjB,CAbiB,UAAAN,EAEA,gBAAAC,EAEA,oBAAAC,EAEA,uBAAAC,EAEA,uBAAAC,EAEA,iBAAAC,EAEA,kBAAAC,CAChB,CAEH,qBACEC,EACkC,CAClC,OAAO,KAAK,KAAK,oBAAoB,CACnC,UAAW,KAAK,WAChB,aAAc,IAAIC,EAA6B,CAC7C,MAAO,CACL,QAAS,IAAIC,EAA4BF,CAAI,EAC7C,QAAS,UACT,wBAAyBA,EAAK,cAC1BG,EAAwB,cACxBA,EAAwB,IAC9B,CACF,CAAC,CACH,CAAC,CACH,CAEA,YAAYH,EAGgB,CAC1B,OAAO,KAAK,KAAK,oBAAoB,CACnC,UAAW,KAAK,WAChB,aAAc,IAAII,EAAwB,CACxC,MAAO,CACL,eAAgBJ,EAAK,eACrB,QAASA,EAAK,QACd,iBAAkB,KAAK,iBACzB,CACF,CAAC,CACH,CAAC,CACH,CAEA,SAASA,EAA4D,CACnE,OAAO,KAAK,KAAK,oBAAoB,CACnC,UAAW,KAAK,WAChB,aAAc,IAAIK,EAAqB,CACrC,MAAO,CACL,KAAML,EAAK,KACX,OAAQA,EAAK,OACb,cAAe,KAAK,eACpB,iBAAkB,KAAK,kBACvB,iBAAkB,KAAK,kBACvB,WAAY,KAAK,YACjB,YAAa,KAAK,YACpB,CACF,CAAC,CACH,CAAC,CACH,CAEA,iBAAiBA,EAKgB,CAC/B,OAAO,KAAK,KAAK,oBAAoB,CACnC,UAAW,KAAK,WAChB,aAAc,IAAIM,EAA6B,CAC7C,MAAO,CACL,OAAQN,EAAK,OACb,cAAeA,EAAK,cACpB,OAAQA,EAAK,OACb,aAAcA,EAAK,aACnB,cAAe,KAAK,eACpB,iBAAkB,KAAK,kBACvB,iBAAkB,KAAK,iBACzB,CACF,CAAC,CACH,CAAC,CACH,CAEA,gBAAgBA,EAGgB,CAC9B,OAAO,KAAK,KAAK,oBAAoB,CACnC,UAAW,KAAK,WAChB,aAAc,IAAIO,EAA4B,CAC5C,MAAO,CACL,KAAMP,EAAK,KACX,OAAQA,EAAK,OACb,cAAe,KAAK,eACpB,iBAAkB,KAAK,kBACvB,iBAAkB,KAAK,kBACvB,WAAY,KAAK,YACjB,YAAa,KAAK,YACpB,CACF,CAAC,CACH,CAAC,CACH,CACF,EA7GaR,EAANgB,EAAA,CADNC,EAAW,EAGPC,EAAA,EAAAC,EAAOC,EAAc,GAAG,GAExBF,EAAA,EAAAC,EAAOC,EAAc,SAAS,GAE9BF,EAAA,EAAAC,EAAOE,EAAY,aAAa,GAEhCH,EAAA,EAAAC,EAAOE,EAAY,gBAAgB,GAEnCH,EAAA,EAAAC,EAAOG,EAAe,gBAAgB,GAEtCJ,EAAA,EAAAC,EAAOI,EAAU,UAAU,GAE3BL,EAAA,EAAAC,EAAOI,EAAU,WAAW,IAdpBvB",
|
|
6
|
+
"names": ["SendCommandInAppDeviceAction", "UserInteractionRequired", "inject", "injectable", "GetExtendedPublicKeyCommand", "SignPsbtDeviceAction", "SignTransactionDeviceAction", "dataStoreTypes", "externalTypes", "psbtTypes", "walletTypes", "GetWalletAddressDeviceAction", "SignMessageDeviceAction", "BtcAppBinder", "_dmk", "_sessionId", "_walletBuilder", "_walletSerializer", "_dataStoreService", "_psbtMapper", "_valueParser", "args", "SendCommandInAppDeviceAction", "GetExtendedPublicKeyCommand", "UserInteractionRequired", "SignMessageDeviceAction", "SignPsbtDeviceAction", "GetWalletAddressDeviceAction", "SignTransactionDeviceAction", "__decorateClass", "injectable", "__decorateParam", "inject", "externalTypes", "walletTypes", "dataStoreTypes", "psbtTypes"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{ApduResponse as o,CommandResultFactory as a,InvalidStatusWordError as s}from"@ledgerhq/device-management-kit";import{BTC_APP_ERRORS as d,BtcAppCommandErrorFactory as c}from"../../app-binder/command/utils/bitcoinAppErrors";import{GetExtendedPublicKeyCommand as r}from"./GetExtendedPublicKeyCommand";const u=new Uint8Array([225,0,0,0,14,1,3,128,0,0,84,128,0,0,0,128,0,0,0]),i=new Uint8Array([225,0,0,0,14,0,3,128,0,0,84,128,0,0,0,128,0,0,0]),p=new Uint8Array([225,0,0,0,18,1,4,128,0,0,49,128,0,0,0,128,0,0,0,0,0,0,0]),E=new Uint8Array([120,112,117,98,54,68,57,80,112,52,114,70,118,119,84,71,120,56,56,89,68,52,67,68,97,49,110,66,69,112,99,75,69,90,84,67,78,70,122,67,70,55,103,86,80,122,54,84,104,57,66,97,86,104,104,80,74,68,117,103,57,89,89,70,80,89,109,107,83,72,76,102,82,49,86,81,89,106,53,106,97,121,113,119,83,89,65,82,110,117,66,74,105,80,83,68,97,98,121,121,84,105,67,68,55,66,51,99,106,80,113]);describe("GetExtendedPublicKeyCommand",()=>{let x;const t={checkOnDevice:!0,derivationPath:"84'/0'/0'"};beforeEach(()=>{}),describe("getApdu",()=>{it("should return the correct APDU",()=>{x=new r(t);const e=x.getApdu();expect(e.getRawApdu()).toEqual(u)}),it("should return the correct APDU without
|
|
1
|
+
import{ApduResponse as o,CommandResultFactory as a,InvalidStatusWordError as s}from"@ledgerhq/device-management-kit";import{BTC_APP_ERRORS as d,BtcAppCommandErrorFactory as c}from"../../app-binder/command/utils/bitcoinAppErrors";import{GetExtendedPublicKeyCommand as r}from"./GetExtendedPublicKeyCommand";const u=new Uint8Array([225,0,0,0,14,1,3,128,0,0,84,128,0,0,0,128,0,0,0]),i=new Uint8Array([225,0,0,0,14,0,3,128,0,0,84,128,0,0,0,128,0,0,0]),p=new Uint8Array([225,0,0,0,18,1,4,128,0,0,49,128,0,0,0,128,0,0,0,0,0,0,0]),E=new Uint8Array([120,112,117,98,54,68,57,80,112,52,114,70,118,119,84,71,120,56,56,89,68,52,67,68,97,49,110,66,69,112,99,75,69,90,84,67,78,70,122,67,70,55,103,86,80,122,54,84,104,57,66,97,86,104,104,80,74,68,117,103,57,89,89,70,80,89,109,107,83,72,76,102,82,49,86,81,89,106,53,106,97,121,113,119,83,89,65,82,110,117,66,74,105,80,83,68,97,98,121,121,84,105,67,68,55,66,51,99,106,80,113]);describe("GetExtendedPublicKeyCommand",()=>{let x;const t={checkOnDevice:!0,derivationPath:"84'/0'/0'"};beforeEach(()=>{}),describe("getApdu",()=>{it("should return the correct APDU",()=>{x=new r(t);const e=x.getApdu();expect(e.getRawApdu()).toEqual(u)}),it("should return the correct APDU without checkOnDevice",()=>{x=new r({...t,checkOnDevice:!1});const e=x.getApdu();expect(e.getRawApdu()).toEqual(i)}),it("should return the correct APDU with different derivation path",()=>{x=new r({...t,derivationPath:"49'/0'/0'/0"});const e=x.getApdu();expect(e.getRawApdu()).toEqual(p)})}),describe("parseResponse",()=>{it("should return the extended public key",()=>{x=new r(t);const e=new o({data:E,statusCode:new Uint8Array([144,0])}),n=x.parseResponse(e);expect(n).toEqual(a({data:{extendedPublicKey:"xpub6D9Pp4rFvwTGx88YD4CDa1nBEpcKEZTCNFzCF7gVPz6Th9BaVhhPJDug9YYFPYmkSHLfR1VQYj5jayqwSYARnuBJiPSDabyyTiCD7B3cjPq"}}))}),it("should return an error if the response is not successful",()=>{x=new r(t);const e=new o({statusCode:Uint8Array.from([109,0]),data:new Uint8Array(0)}),n=x.parseResponse(e);expect(n).toStrictEqual(a({error:c({...d["6d00"],errorCode:"6d00"})}))}),it("should return an error if the response is too short",()=>{x=new r(t);const e=new o({data:Uint8Array.from([]),statusCode:new Uint8Array([144,0])}),n=x.parseResponse(e);expect(n).toStrictEqual(a({error:new s("Invalid response length")}))})})});
|
|
2
2
|
//# sourceMappingURL=GetExtendedPublicKeyCommand.test.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/app-binder/command/GetExtendedPublicKeyCommand.test.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n ApduResponse,\n CommandResultFactory,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\n\nimport {\n BTC_APP_ERRORS,\n BtcAppCommandErrorFactory,\n} from \"@internal/app-binder/command/utils/bitcoinAppErrors\";\n\nimport {\n GetExtendedPublicKeyCommand,\n type GetExtendedPublicKeyCommandArgs,\n} from \"./GetExtendedPublicKeyCommand\";\n\nconst GET_EXTENDED_PUBLIC_KEY_APDU_WITH_DISPLAY = new Uint8Array([\n 0xe1, 0x00, 0x00, 0x00, 0x0e, 0x01, 0x03, 0x80, 0x00, 0x00, 0x54, 0x80, 0x00,\n 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,\n]);\n\nconst GET_EXTENDED_PUBLIC_KEY_APDU_WITHOUT_DISPLAY = new Uint8Array([\n 0xe1, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x80, 0x00, 0x00, 0x54, 0x80, 0x00,\n 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,\n]);\n\nconst GET_EXTENDED_PUBLIC_KEY_APDU_WITH_OTHER_DERIVATION_PATH = new Uint8Array([\n 0xe1, 0x00, 0x00, 0x00, 0x12, 0x01, 0x04, 0x80, 0x00, 0x00, 0x31, 0x80, 0x00,\n 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n]);\n\nconst GET_EXTENDED_PUBLIC_KEY_VALID_RESPONSE = new Uint8Array([\n 0x78, 0x70, 0x75, 0x62, 0x36, 0x44, 0x39, 0x50, 0x70, 0x34, 0x72, 0x46, 0x76,\n 0x77, 0x54, 0x47, 0x78, 0x38, 0x38, 0x59, 0x44, 0x34, 0x43, 0x44, 0x61, 0x31,\n 0x6e, 0x42, 0x45, 0x70, 0x63, 0x4b, 0x45, 0x5a, 0x54, 0x43, 0x4e, 0x46, 0x7a,\n 0x43, 0x46, 0x37, 0x67, 0x56, 0x50, 0x7a, 0x36, 0x54, 0x68, 0x39, 0x42, 0x61,\n 0x56, 0x68, 0x68, 0x50, 0x4a, 0x44, 0x75, 0x67, 0x39, 0x59, 0x59, 0x46, 0x50,\n 0x59, 0x6d, 0x6b, 0x53, 0x48, 0x4c, 0x66, 0x52, 0x31, 0x56, 0x51, 0x59, 0x6a,\n 0x35, 0x6a, 0x61, 0x79, 0x71, 0x77, 0x53, 0x59, 0x41, 0x52, 0x6e, 0x75, 0x42,\n 0x4a, 0x69, 0x50, 0x53, 0x44, 0x61, 0x62, 0x79, 0x79, 0x54, 0x69, 0x43, 0x44,\n 0x37, 0x42, 0x33, 0x63, 0x6a, 0x50, 0x71,\n]);\n\ndescribe(\"GetExtendedPublicKeyCommand\", () => {\n let command: GetExtendedPublicKeyCommand;\n const defaultArgs: GetExtendedPublicKeyCommandArgs = {\n checkOnDevice: true,\n derivationPath: \"84'/0'/0'\",\n };\n\n beforeEach(() => {});\n\n describe(\"getApdu\", () => {\n it(\"should return the correct APDU\", () => {\n // GIVEN\n command = new GetExtendedPublicKeyCommand(defaultArgs);\n\n // WHEN\n const apdu = command.getApdu();\n\n //THEN\n expect(apdu.getRawApdu()).toEqual(\n GET_EXTENDED_PUBLIC_KEY_APDU_WITH_DISPLAY,\n );\n });\n\n it(\"should return the correct APDU without
|
|
5
|
-
"mappings": "AAAA,OACE,gBAAAA,EACA,wBAAAC,EACA,0BAAAC,MACK,kCAEP,OACE,kBAAAC,EACA,6BAAAC,MACK,sDAEP,OACE,+BAAAC,MAEK,gCAEP,MAAMC,EAA4C,IAAI,WAAW,CAC/D,IAAM,EAAM,EAAM,EAAM,GAAM,EAAM,EAAM,IAAM,EAAM,EAAM,GAAM,IAAM,EACxE,EAAM,EAAM,IAAM,EAAM,EAAM,CAChC,CAAC,EAEKC,EAA+C,IAAI,WAAW,CAClE,IAAM,EAAM,EAAM,EAAM,GAAM,EAAM,EAAM,IAAM,EAAM,EAAM,GAAM,IAAM,EACxE,EAAM,EAAM,IAAM,EAAM,EAAM,CAChC,CAAC,EAEKC,EAA0D,IAAI,WAAW,CAC7E,IAAM,EAAM,EAAM,EAAM,GAAM,EAAM,EAAM,IAAM,EAAM,EAAM,GAAM,IAAM,EACxE,EAAM,EAAM,IAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,CACxD,CAAC,EAEKC,EAAyC,IAAI,WAAW,CAC5D,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IACxE,IAAM,GAAM,GAAM,IAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GACxE,IAAM,GAAM,GAAM,IAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,GAAM,IACxE,GAAM,GAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,GAAM,IAAM,GAAM,GAAM,GACxE,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,GACxE,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,IAAM,GAAM,GAAM,GAAM,GAAM,GAAM,IACxE,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GACxE,GAAM,IAAM,GAAM,GAAM,GAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,GAAM,GACxE,GAAM,GAAM,GAAM,GAAM,IAAM,GAAM,GACtC,CAAC,EAED,SAAS,8BAA+B,IAAM,CAC5C,IAAIC,EACJ,MAAMC,EAA+C,CACnD,cAAe,GACf,eAAgB,WAClB,EAEA,WAAW,IAAM,CAAC,CAAC,EAEnB,SAAS,UAAW,IAAM,CACxB,GAAG,iCAAkC,IAAM,CAEzCD,EAAU,IAAIL,EAA4BM,CAAW,EAGrD,MAAMC,EAAOF,EAAQ,QAAQ,EAG7B,OAAOE,EAAK,WAAW,CAAC,EAAE,QACxBN,CACF,CACF,CAAC,EAED,GAAG,
|
|
4
|
+
"sourcesContent": ["import {\n ApduResponse,\n CommandResultFactory,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\n\nimport {\n BTC_APP_ERRORS,\n BtcAppCommandErrorFactory,\n} from \"@internal/app-binder/command/utils/bitcoinAppErrors\";\n\nimport {\n GetExtendedPublicKeyCommand,\n type GetExtendedPublicKeyCommandArgs,\n} from \"./GetExtendedPublicKeyCommand\";\n\nconst GET_EXTENDED_PUBLIC_KEY_APDU_WITH_DISPLAY = new Uint8Array([\n 0xe1, 0x00, 0x00, 0x00, 0x0e, 0x01, 0x03, 0x80, 0x00, 0x00, 0x54, 0x80, 0x00,\n 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,\n]);\n\nconst GET_EXTENDED_PUBLIC_KEY_APDU_WITHOUT_DISPLAY = new Uint8Array([\n 0xe1, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x80, 0x00, 0x00, 0x54, 0x80, 0x00,\n 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,\n]);\n\nconst GET_EXTENDED_PUBLIC_KEY_APDU_WITH_OTHER_DERIVATION_PATH = new Uint8Array([\n 0xe1, 0x00, 0x00, 0x00, 0x12, 0x01, 0x04, 0x80, 0x00, 0x00, 0x31, 0x80, 0x00,\n 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n]);\n\nconst GET_EXTENDED_PUBLIC_KEY_VALID_RESPONSE = new Uint8Array([\n 0x78, 0x70, 0x75, 0x62, 0x36, 0x44, 0x39, 0x50, 0x70, 0x34, 0x72, 0x46, 0x76,\n 0x77, 0x54, 0x47, 0x78, 0x38, 0x38, 0x59, 0x44, 0x34, 0x43, 0x44, 0x61, 0x31,\n 0x6e, 0x42, 0x45, 0x70, 0x63, 0x4b, 0x45, 0x5a, 0x54, 0x43, 0x4e, 0x46, 0x7a,\n 0x43, 0x46, 0x37, 0x67, 0x56, 0x50, 0x7a, 0x36, 0x54, 0x68, 0x39, 0x42, 0x61,\n 0x56, 0x68, 0x68, 0x50, 0x4a, 0x44, 0x75, 0x67, 0x39, 0x59, 0x59, 0x46, 0x50,\n 0x59, 0x6d, 0x6b, 0x53, 0x48, 0x4c, 0x66, 0x52, 0x31, 0x56, 0x51, 0x59, 0x6a,\n 0x35, 0x6a, 0x61, 0x79, 0x71, 0x77, 0x53, 0x59, 0x41, 0x52, 0x6e, 0x75, 0x42,\n 0x4a, 0x69, 0x50, 0x53, 0x44, 0x61, 0x62, 0x79, 0x79, 0x54, 0x69, 0x43, 0x44,\n 0x37, 0x42, 0x33, 0x63, 0x6a, 0x50, 0x71,\n]);\n\ndescribe(\"GetExtendedPublicKeyCommand\", () => {\n let command: GetExtendedPublicKeyCommand;\n const defaultArgs: GetExtendedPublicKeyCommandArgs = {\n checkOnDevice: true,\n derivationPath: \"84'/0'/0'\",\n };\n\n beforeEach(() => {});\n\n describe(\"getApdu\", () => {\n it(\"should return the correct APDU\", () => {\n // GIVEN\n command = new GetExtendedPublicKeyCommand(defaultArgs);\n\n // WHEN\n const apdu = command.getApdu();\n\n //THEN\n expect(apdu.getRawApdu()).toEqual(\n GET_EXTENDED_PUBLIC_KEY_APDU_WITH_DISPLAY,\n );\n });\n\n it(\"should return the correct APDU without checkOnDevice\", () => {\n // GIVEN\n command = new GetExtendedPublicKeyCommand({\n ...defaultArgs,\n checkOnDevice: false,\n });\n\n // WHEN\n const apdu = command.getApdu();\n\n //THEN\n expect(apdu.getRawApdu()).toEqual(\n GET_EXTENDED_PUBLIC_KEY_APDU_WITHOUT_DISPLAY,\n );\n });\n\n it(\"should return the correct APDU with different derivation path\", () => {\n // GIVEN\n command = new GetExtendedPublicKeyCommand({\n ...defaultArgs,\n derivationPath: \"49'/0'/0'/0\",\n });\n\n // WHEN\n const apdu = command.getApdu();\n\n //THEN\n expect(apdu.getRawApdu()).toEqual(\n GET_EXTENDED_PUBLIC_KEY_APDU_WITH_OTHER_DERIVATION_PATH,\n );\n });\n });\n\n describe(\"parseResponse\", () => {\n it(\"should return the extended public key\", () => {\n // GIVEN\n command = new GetExtendedPublicKeyCommand(defaultArgs);\n const response = new ApduResponse({\n data: GET_EXTENDED_PUBLIC_KEY_VALID_RESPONSE,\n statusCode: new Uint8Array([0x90, 0x00]),\n });\n\n // WHEN\n const result = command.parseResponse(response);\n\n // THEN\n expect(result).toEqual(\n CommandResultFactory({\n data: {\n extendedPublicKey:\n \"xpub6D9Pp4rFvwTGx88YD4CDa1nBEpcKEZTCNFzCF7gVPz6Th9BaVhhPJDug9YYFPYmkSHLfR1VQYj5jayqwSYARnuBJiPSDabyyTiCD7B3cjPq\",\n },\n }),\n );\n });\n\n it(\"should return an error if the response is not successful\", () => {\n // GIVEN\n command = new GetExtendedPublicKeyCommand(defaultArgs);\n const response = new ApduResponse({\n statusCode: Uint8Array.from([0x6d, 0x00]),\n data: new Uint8Array(0),\n });\n\n // WHEN\n const result = command.parseResponse(response);\n\n // THEN\n expect(result).toStrictEqual(\n CommandResultFactory({\n error: BtcAppCommandErrorFactory({\n ...BTC_APP_ERRORS[\"6d00\"],\n errorCode: \"6d00\",\n }),\n }),\n );\n });\n\n it(\"should return an error if the response is too short\", () => {\n // GIVEN\n command = new GetExtendedPublicKeyCommand(defaultArgs);\n const response = new ApduResponse({\n data: Uint8Array.from([]),\n statusCode: new Uint8Array([0x90, 0x00]),\n });\n\n // WHEN\n const result = command.parseResponse(response);\n\n // THEN\n expect(result).toStrictEqual(\n CommandResultFactory({\n error: new InvalidStatusWordError(\"Invalid response length\"),\n }),\n );\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["ApduResponse", "CommandResultFactory", "InvalidStatusWordError", "BTC_APP_ERRORS", "BtcAppCommandErrorFactory", "GetExtendedPublicKeyCommand", "GET_EXTENDED_PUBLIC_KEY_APDU_WITH_DISPLAY", "GET_EXTENDED_PUBLIC_KEY_APDU_WITHOUT_DISPLAY", "GET_EXTENDED_PUBLIC_KEY_APDU_WITH_OTHER_DERIVATION_PATH", "GET_EXTENDED_PUBLIC_KEY_VALID_RESPONSE", "command", "defaultArgs", "apdu", "response", "result"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{ApduBuilder as
|
|
1
|
+
import{ApduBuilder as r,CommandResultFactory as a}from"@ledgerhq/device-management-kit";import{CommandErrorHelper as o}from"@ledgerhq/signer-utils";import{Maybe as t}from"purify-ts";import{PROTOCOL_VERSION as d}from"../../app-binder/command/utils/constants";import{BtcCommandUtils as s}from"../../utils/BtcCommandUtils";import{BTC_APP_ERRORS as n,BtcAppCommandErrorFactory as m}from"./utils/bitcoinAppErrors";class f{constructor(e,p=new o(n,m,s.isSuccessResponse)){this.args=e;this._errorHelper=p}getApdu(){return new r({cla:225,ins:3,p1:0,p2:d}).addBufferToData(Uint8Array.from([this.args.checkOnDevice?1:0])).addBufferToData(this.args.walletId).addBufferToData(this.args.walletHmac).addBufferToData(Uint8Array.from([this.args.change?1:0])).add32BitUIntToData(this.args.addressIndex).build()}parseResponse(e){return t.fromNullable(this._errorHelper.getError(e)).orDefault(a({data:e}))}}export{f as GetWalletAddressCommand};
|
|
2
2
|
//# sourceMappingURL=GetWalletAddressCommand.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/app-binder/command/GetWalletAddressCommand.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n type Apdu,\n ApduBuilder,\n
|
|
5
|
-
"mappings": "AAAA,OAEE,eAAAA,
|
|
6
|
-
"names": ["ApduBuilder", "
|
|
4
|
+
"sourcesContent": ["import {\n type Apdu,\n ApduBuilder,\n type ApduResponse,\n type Command,\n type CommandResult,\n CommandResultFactory,\n} from \"@ledgerhq/device-management-kit\";\nimport { CommandErrorHelper } from \"@ledgerhq/signer-utils\";\nimport { Maybe } from \"purify-ts\";\n\nimport { PROTOCOL_VERSION } from \"@internal/app-binder/command/utils/constants\";\nimport { BtcCommandUtils } from \"@internal/utils/BtcCommandUtils\";\n\nimport {\n BTC_APP_ERRORS,\n BtcAppCommandErrorFactory,\n type BtcErrorCodes,\n} from \"./utils/bitcoinAppErrors\";\n\nexport type GetWalletAddressCommandResponse = ApduResponse;\n\nexport type GetWalletAddressCommandArgs = {\n readonly checkOnDevice: boolean;\n readonly walletId: Uint8Array;\n readonly walletHmac: Uint8Array;\n readonly change: boolean;\n readonly addressIndex: number;\n};\n\nexport class GetWalletAddressCommand\n implements\n Command<\n GetWalletAddressCommandResponse,\n GetWalletAddressCommandArgs,\n BtcErrorCodes\n >\n{\n constructor(\n private readonly args: GetWalletAddressCommandArgs,\n private readonly _errorHelper = new CommandErrorHelper<\n GetWalletAddressCommandResponse,\n BtcErrorCodes\n >(\n BTC_APP_ERRORS,\n BtcAppCommandErrorFactory,\n BtcCommandUtils.isSuccessResponse,\n ),\n ) {}\n\n getApdu(): Apdu {\n return new ApduBuilder({\n cla: 0xe1,\n ins: 0x03,\n p1: 0x00,\n p2: PROTOCOL_VERSION,\n })\n .addBufferToData(Uint8Array.from([this.args.checkOnDevice ? 1 : 0]))\n .addBufferToData(this.args.walletId)\n .addBufferToData(this.args.walletHmac)\n .addBufferToData(Uint8Array.from([this.args.change ? 1 : 0]))\n .add32BitUIntToData(this.args.addressIndex)\n .build();\n }\n\n parseResponse(\n response: ApduResponse,\n ): CommandResult<ApduResponse, BtcErrorCodes> {\n return Maybe.fromNullable(this._errorHelper.getError(response)).orDefault(\n CommandResultFactory({ data: response }),\n );\n }\n}\n"],
|
|
5
|
+
"mappings": "AAAA,OAEE,eAAAA,EAIA,wBAAAC,MACK,kCACP,OAAS,sBAAAC,MAA0B,yBACnC,OAAS,SAAAC,MAAa,YAEtB,OAAS,oBAAAC,MAAwB,+CACjC,OAAS,mBAAAC,MAAuB,kCAEhC,OACE,kBAAAC,EACA,6BAAAC,MAEK,2BAYA,MAAMC,CAOb,CACE,YACmBC,EACAC,EAAe,IAAIR,EAIlCI,EACAC,EACAF,EAAgB,iBAClB,EACA,CATiB,UAAAI,EACA,kBAAAC,CAQhB,CAEH,SAAgB,CACd,OAAO,IAAIV,EAAY,CACrB,IAAK,IACL,IAAK,EACL,GAAI,EACJ,GAAII,CACN,CAAC,EACE,gBAAgB,WAAW,KAAK,CAAC,KAAK,KAAK,cAAgB,EAAI,CAAC,CAAC,CAAC,EAClE,gBAAgB,KAAK,KAAK,QAAQ,EAClC,gBAAgB,KAAK,KAAK,UAAU,EACpC,gBAAgB,WAAW,KAAK,CAAC,KAAK,KAAK,OAAS,EAAI,CAAC,CAAC,CAAC,EAC3D,mBAAmB,KAAK,KAAK,YAAY,EACzC,MAAM,CACX,CAEA,cACEO,EAC4C,CAC5C,OAAOR,EAAM,aAAa,KAAK,aAAa,SAASQ,CAAQ,CAAC,EAAE,UAC9DV,EAAqB,CAAE,KAAMU,CAAS,CAAC,CACzC,CACF,CACF",
|
|
6
|
+
"names": ["ApduBuilder", "CommandResultFactory", "CommandErrorHelper", "Maybe", "PROTOCOL_VERSION", "BtcCommandUtils", "BTC_APP_ERRORS", "BtcAppCommandErrorFactory", "GetWalletAddressCommand", "args", "_errorHelper", "response"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{ApduResponse as
|
|
1
|
+
import{ApduResponse as o,CommandResultFactory as n,isSuccessCommandResult as d}from"@ledgerhq/device-management-kit";import{SW_INTERRUPTED_EXECUTION as A}from"./utils/constants";import{GetWalletAddressCommand as c}from"./GetWalletAddressCommand";const u=new Uint8Array([144,0]),p=new Uint8Array([105,133]);describe("GetWalletAddressCommand",()=>{let s;const l={checkOnDevice:!0,walletId:Uint8Array.from("walletIdBuffer",e=>e.charCodeAt(0)),walletHmac:Uint8Array.from("walletHmacBuffer",e=>e.charCodeAt(0)),change:!1,addressIndex:0};beforeEach(()=>{s=new c(l),jest.clearAllMocks(),jest.requireActual("@ledgerhq/device-management-kit")}),describe("getApdu",()=>{it("should return correct APDU for default arguments",()=>{const e=s.getApdu(),t=Uint8Array.from([225,3,0,1,36,1,...Uint8Array.from("walletIdBuffer",r=>r.charCodeAt(0)),...Uint8Array.from("walletHmacBuffer",r=>r.charCodeAt(0)),0,0,0,0,0]);expect(e.getRawApdu()).toEqual(t)}),it("should return correct APDU for different arguments",()=>{const e={checkOnDevice:!1,walletId:Uint8Array.from("anotherWalletId",a=>a.charCodeAt(0)),walletHmac:Uint8Array.from("anotherWalletHmac",a=>a.charCodeAt(0)),change:!0,addressIndex:5};s=new c(e);const t=s.getApdu(),r=Uint8Array.from([225,3,0,1,38,0,...Uint8Array.from("anotherWalletId",a=>a.charCodeAt(0)),...Uint8Array.from("anotherWalletHmac",a=>a.charCodeAt(0)),1,0,0,0,5]);expect(t.getRawApdu()).toEqual(r)})}),describe("parseResponse",()=>{it("should return the APDU response if it's a continue response",()=>{const e=new Uint8Array([1,2,3,4]),t=new o({statusCode:A,data:e}),r=s.parseResponse(t);expect(r).toStrictEqual(n({data:t}))}),it("should return an error if user denied the operation",()=>{const e=new o({statusCode:p,data:new Uint8Array([])}),t=s.parseResponse(e);expect(d(t)).toBe(!1),d(t)||expect(t.error).toBeDefined()}),it("should return correct data when response is not empty",()=>{const e=Uint8Array.from("addressData",a=>a.charCodeAt(0)),t=new o({statusCode:u,data:e}),r=s.parseResponse(t);expect(r).toStrictEqual(n({data:t}))})})});
|
|
2
2
|
//# sourceMappingURL=GetWalletAddressCommand.test.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/app-binder/command/GetWalletAddressCommand.test.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n ApduResponse,\n CommandResultFactory,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\n\nimport {
|
|
5
|
-
"mappings": "AAAA,OACE,gBAAAA,EACA,wBAAAC,EACA,0BAAAC,MACK,kCAEP,OAAS,
|
|
6
|
-
"names": ["ApduResponse", "CommandResultFactory", "isSuccessCommandResult", "
|
|
4
|
+
"sourcesContent": ["import {\n ApduResponse,\n CommandResultFactory,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { SW_INTERRUPTED_EXECUTION } from \"./utils/constants\";\nimport {\n GetWalletAddressCommand,\n type GetWalletAddressCommandArgs,\n} from \"./GetWalletAddressCommand\";\n\nconst SUCCESS_STATUS = new Uint8Array([0x90, 0x00]);\nconst USER_DENIED_STATUS = new Uint8Array([0x69, 0x85]);\n\ndescribe(\"GetWalletAddressCommand\", () => {\n let command: GetWalletAddressCommand;\n const defaultArgs: GetWalletAddressCommandArgs = {\n checkOnDevice: true,\n walletId: Uint8Array.from(\"walletIdBuffer\", (c) => c.charCodeAt(0)),\n walletHmac: Uint8Array.from(\"walletHmacBuffer\", (c) => c.charCodeAt(0)),\n change: false,\n addressIndex: 0x00000000,\n };\n\n beforeEach(() => {\n command = new GetWalletAddressCommand(defaultArgs);\n jest.clearAllMocks();\n jest.requireActual(\"@ledgerhq/device-management-kit\");\n });\n\n describe(\"getApdu\", () => {\n it(\"should return correct APDU for default arguments\", () => {\n const apdu = command.getApdu();\n const expectedApdu = Uint8Array.from([\n 0xe1, // CLA\n 0x03, // INS\n 0x00, // P1\n 0x01, // P2\n 0x24, // Length of data: 36 bytes\n 0x01, // checkOnDevice: true\n ...Uint8Array.from(\"walletIdBuffer\", (c) => c.charCodeAt(0)),\n ...Uint8Array.from(\"walletHmacBuffer\", (c) => c.charCodeAt(0)),\n 0x00, // change: false\n 0x00,\n 0x00,\n 0x00,\n 0x00, // addressIndex: 0x00000000\n ]);\n expect(apdu.getRawApdu()).toEqual(expectedApdu);\n });\n\n it(\"should return correct APDU for different arguments\", () => {\n const args: GetWalletAddressCommandArgs = {\n checkOnDevice: false,\n walletId: Uint8Array.from(\"anotherWalletId\", (c) => c.charCodeAt(0)),\n walletHmac: Uint8Array.from(\"anotherWalletHmac\", (c) =>\n c.charCodeAt(0),\n ),\n change: true,\n addressIndex: 0x00000005,\n };\n command = new GetWalletAddressCommand(args);\n const apdu = command.getApdu();\n const expectedApdu = Uint8Array.from([\n 0xe1, // CLA\n 0x03, // INS\n 0x00, // P1\n 0x01, // P2\n 0x26, // Length of data\n 0x00, // checkOnDevice: false\n ...Uint8Array.from(\"anotherWalletId\", (c) => c.charCodeAt(0)),\n ...Uint8Array.from(\"anotherWalletHmac\", (c) => c.charCodeAt(0)),\n 0x01, // change: true\n 0x00,\n 0x00,\n 0x00,\n 0x05, // addressIndex: 0x00000005\n ]);\n expect(apdu.getRawApdu()).toEqual(expectedApdu);\n });\n });\n\n describe(\"parseResponse\", () => {\n it(\"should return the APDU response if it's a continue response\", () => {\n // given\n const continueResponseData = new Uint8Array([0x01, 0x02, 0x03, 0x04]);\n\n const apduResponse = new ApduResponse({\n statusCode: SW_INTERRUPTED_EXECUTION,\n data: continueResponseData,\n });\n\n // when\n const response = command.parseResponse(apduResponse);\n\n // then\n expect(response).toStrictEqual(\n CommandResultFactory({\n data: apduResponse,\n }),\n );\n });\n\n it(\"should return an error if user denied the operation\", () => {\n // given\n const apduResponse = new ApduResponse({\n statusCode: USER_DENIED_STATUS,\n data: new Uint8Array([]),\n });\n\n // when\n const response = command.parseResponse(apduResponse);\n\n // then\n expect(isSuccessCommandResult(response)).toBe(false);\n if (!isSuccessCommandResult(response)) {\n expect(response.error).toBeDefined();\n }\n });\n\n it(\"should return correct data when response is not empty\", () => {\n // given\n const responseData = Uint8Array.from(\"addressData\", (c) =>\n c.charCodeAt(0),\n );\n\n const apduResponse = new ApduResponse({\n statusCode: SUCCESS_STATUS,\n data: responseData,\n });\n\n // when\n const response = command.parseResponse(apduResponse);\n\n // then\n expect(response).toStrictEqual(\n CommandResultFactory({ data: apduResponse }),\n );\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["ApduResponse", "CommandResultFactory", "isSuccessCommandResult", "SW_INTERRUPTED_EXECUTION", "GetWalletAddressCommand", "SUCCESS_STATUS", "USER_DENIED_STATUS", "command", "defaultArgs", "c", "apdu", "expectedApdu", "args", "continueResponseData", "apduResponse", "response", "responseData"]
|
|
7
7
|
}
|
package/lib/esm/internal/app-binder/device-action/GetWalletAddress/GetWalletAddressDeviceAction.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{isSuccessCommandResult as o,OpenAppDeviceAction as W,UnknownDAError as m,UserInteractionRequired as l,XStateDeviceAction as S}from"@ledgerhq/device-management-kit";import{Left as D,Right as y}from"purify-ts";import{assign as r,fromPromise as d,setup as w}from"xstate";import{GetWalletAddressTask as I}from"../../../app-binder/task/GetWalletAddressTask";import{PrepareWalletPolicyTask as h}from"../../../app-binder/task/PrepareWalletPolicyTask";class B extends S{constructor(a){super(a)}makeStateMachine(a){const{getWalletAddress:i,prepareWalletPolicy:s}=this.extractDependencies(a);return w({types:{input:{},context:{},output:{}},actors:{openAppStateMachine:new W({input:{appName:"Bitcoin"}}).makeStateMachine(a),prepareWalletPolicy:d(s),getWalletAddress:d(i)},guards:{noInternalError:({context:e})=>e._internalState.error===null},actions:{assignErrorFromEvent:r({_internalState:e=>({...e.context._internalState,error:e.event.error})})}}).createMachine({id:"GetWalletAddressDeviceAction",initial:"OpenAppDeviceAction",context:({input:e})=>({input:e,intermediateValue:{requiredUserInteraction:l.None},_internalState:{error:null,wallet:null,walletAddress:null}}),states:{OpenAppDeviceAction:{exit:r({intermediateValue:{requiredUserInteraction:l.None}}),invoke:{id:"openAppStateMachine",input:{appName:"Bitcoin"},src:"openAppStateMachine",onSnapshot:{actions:r({intermediateValue:e=>e.event.snapshot.context.intermediateValue})},onDone:{actions:r({_internalState:e=>e.event.output.caseOf({Right:()=>e.context._internalState,Left:t=>({...e.context._internalState,error:t})})}),target:"CheckOpenAppDeviceActionResult"}}},CheckOpenAppDeviceActionResult:{always:[{target:"PrepareWalletPolicy",guard:"noInternalError"},"Error"]},PrepareWalletPolicy:{invoke:{id:"prepareWalletPolicy",src:"prepareWalletPolicy",input:({context:e})=>({wallet:e.input.wallet,walletBuilder:e.input.walletBuilder}),onDone:{target:"PrepareWalletPolicyResultCheck",actions:[r({_internalState:({event:e,context:t})=>o(e.output)?{...t._internalState,wallet:e.output.data}:{...t._internalState,error:e.output.error}})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},PrepareWalletPolicyResultCheck:{always:[{guard:"noInternalError",target:"GetWalletAddress"},{target:"Error"}]},GetWalletAddress:{entry:r(({context:e})=>({intermediateValue:{requiredUserInteraction:e.input.checkOnDevice?l.VerifyAddress:l.None}})),exit:r({intermediateValue:{requiredUserInteraction:l.None}}),invoke:{id:"getWalletAddress",src:"getWalletAddress",input:({context:e})=>({checkOnDevice:e.input.checkOnDevice,wallet:e._internalState.wallet,change:e.input.change,addressIndex:e.input.addressIndex,dataStoreService:e.input.dataStoreService,walletSerializer:e.input.walletSerializer,walletBuilder:e.input.walletBuilder}),onDone:{target:"GetWalletAddressResultCheck",actions:[r({_internalState:({event:e,context:t})=>o(e.output)?{...t._internalState,walletAddress:e.output.data}:{...t._internalState,error:e.output.error}})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},GetWalletAddressResultCheck:{always:[{guard:"noInternalError",target:"Success"},{target:"Error"}]},Success:{type:"final"},Error:{type:"final"}},output:({context:e})=>e._internalState.walletAddress?y(e._internalState.walletAddress):D(e._internalState.error||new m("No error in final state"))})}extractDependencies(a){return{getWalletAddress:async e=>{const{checkOnDevice:t,wallet:n,change:p,addressIndex:c,walletSerializer:u,dataStoreService:A}=e.input;return await new I(a,{checkOnDevice:t,wallet:n,change:p,addressIndex:c},u,A).run()},prepareWalletPolicy:async e=>{const{input:{walletBuilder:t,wallet:n}}=e;return await new h(a,{wallet:n},t).run()}}}}export{B as GetWalletAddressDeviceAction};
|
|
2
|
+
//# sourceMappingURL=GetWalletAddressDeviceAction.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../src/internal/app-binder/device-action/GetWalletAddress/GetWalletAddressDeviceAction.ts"],
|
|
4
|
+
"sourcesContent": ["import {\n type CommandResult,\n type DeviceActionStateMachine,\n type InternalApi,\n isSuccessCommandResult,\n OpenAppDeviceAction,\n type StateMachineTypes,\n UnknownDAError,\n UserInteractionRequired,\n XStateDeviceAction,\n} from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\nimport { assign, fromPromise, setup } from \"xstate\";\n\nimport {\n type GetWalletAddressDAError,\n type GetWalletAddressDAInput,\n type GetWalletAddressDAIntermediateValue,\n type GetWalletAddressDAInternalState,\n type GetWalletAddressDAOutput,\n} from \"@api/app-binder/GetWalletAddressDeviceActionTypes\";\nimport { type WalletAddress } from \"@api/model/Wallet\";\nimport { type Wallet as ApiWallet } from \"@api/model/Wallet\";\nimport { type BtcErrorCodes } from \"@internal/app-binder/command/utils/bitcoinAppErrors\";\nimport { GetWalletAddressTask } from \"@internal/app-binder/task/GetWalletAddressTask\";\nimport { PrepareWalletPolicyTask } from \"@internal/app-binder/task/PrepareWalletPolicyTask\";\nimport { type DataStoreService } from \"@internal/data-store/service/DataStoreService\";\nimport { type Wallet as InternalWallet } from \"@internal/wallet/model/Wallet\";\nimport { type WalletBuilder } from \"@internal/wallet/service/WalletBuilder\";\nimport { type WalletSerializer } from \"@internal/wallet/service/WalletSerializer\";\n\nexport type GetWalletAddressMachineDependencies = {\n readonly prepareWalletPolicy: (arg0: {\n input: {\n wallet: ApiWallet;\n walletBuilder: WalletBuilder;\n };\n }) => Promise<CommandResult<InternalWallet, BtcErrorCodes>>;\n readonly getWalletAddress: (arg0: {\n input: {\n checkOnDevice: boolean;\n change: boolean;\n addressIndex: number;\n wallet: InternalWallet;\n walletBuilder: WalletBuilder;\n walletSerializer: WalletSerializer;\n dataStoreService: DataStoreService;\n };\n }) => Promise<CommandResult<WalletAddress, BtcErrorCodes>>;\n};\n\nexport type ExtractGetWalletAddressMachineDependencies = (\n internalApi: InternalApi,\n) => GetWalletAddressMachineDependencies;\n\nexport class GetWalletAddressDeviceAction extends XStateDeviceAction<\n GetWalletAddressDAOutput,\n GetWalletAddressDAInput,\n GetWalletAddressDAError,\n GetWalletAddressDAIntermediateValue,\n GetWalletAddressDAInternalState\n> {\n constructor(args: { input: GetWalletAddressDAInput; inspect?: boolean }) {\n super(args);\n }\n\n makeStateMachine(\n internalApi: InternalApi,\n ): DeviceActionStateMachine<\n GetWalletAddressDAOutput,\n GetWalletAddressDAInput,\n GetWalletAddressDAError,\n GetWalletAddressDAIntermediateValue,\n GetWalletAddressDAInternalState\n > {\n type types = StateMachineTypes<\n GetWalletAddressDAOutput,\n GetWalletAddressDAInput,\n GetWalletAddressDAError,\n GetWalletAddressDAIntermediateValue,\n GetWalletAddressDAInternalState\n >;\n\n const { getWalletAddress, prepareWalletPolicy } =\n this.extractDependencies(internalApi);\n\n return setup({\n types: {\n input: {} as types[\"input\"],\n context: {} as types[\"context\"],\n output: {} as types[\"output\"],\n },\n\n actors: {\n openAppStateMachine: new OpenAppDeviceAction({\n input: { appName: \"Bitcoin\" },\n }).makeStateMachine(internalApi),\n prepareWalletPolicy: fromPromise(prepareWalletPolicy),\n getWalletAddress: fromPromise(getWalletAddress),\n },\n guards: {\n noInternalError: ({ context }) => context._internalState.error === null,\n },\n actions: {\n assignErrorFromEvent: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n error: _.event[\"error\"], // NOTE: it should never happen, the error is not typed anymore here\n }),\n }),\n },\n }).createMachine({\n /** @xstate-layout N4IgpgJg5mDOIC5QGUCWUB2AFMAnWA9hgIYA2AsnLMTACJgBuqAxmAILMAuqRAdAPIAHMBjaDB9Jqw7ciAYghEwvVBgYEA1soLDR45J2Kcw5YswAWqsAG0ADAF1EoQQVipZGJyAAeiACwAzADsvACcABwAjKGRtuG2AGyRSX4ANCAAnoiRAEwArLy2uX6RQUGRpeHhfgC+NelomDj4RGSUsNR0jCzsXDwYvADC5mDMGkIiYhLd0n1EAEpwAK6knHJ2jkggLm4eXr4IoRG8eTlFOaWhQX45QaHpWQiRN4UBfu8JeaE3obY5OXUGuhsHhCCQKFQaGBJD0ZP0hiMxhM9NMpL0PItYCs1tZIptnK53P19ogjuETmdcpdrrd7pl-M8wnkgvkgvFbH48n4EkFASBGiCWuD2p1oTN0fCBc0wW1ITAFEoVGpNMo3E1Qa0IR0oRsvDsiUQSU88tVeOEktEEuE8m8cjcHqScicgokTXk8rZygFQgD6vzgdLNSKoTDZh5eFKNcK5WA5HhcARcLxBKQjAAzRMAW14asFMq1ot1W31ey2B0iJr8ZotoStNpu9vpCDtoTNHr8PoizyKvL9kaFsu1XTRcL4-fzwZgmOxw1GGnWDj1hNLoAOFwCBWC5u5RySEQdT1sra+OSt1wCAQuzICfPHQZjoYlY4DUcHounq1nY3WeKXu2JZaIOum5sgkO61tE4QHhWBS2HkCT-G8R5wc8N58hgBAQHAXh3tGQ5iiOcyeMWy4AauiAALQJAeVGFLY9EMYxDG9kC6oDgWIbiqOAzIlMj7cX+BrEeRCCNo8sS2CcRz-B6zIsnBaGsXm974fxREInOvHiGpGLLKsgkrj4iBnrwFwVgkCHfEeCQBNB3K8IEpxBO6ySep8in+mxE4Plx6m4W+UIGWRRlPJEVRmncOTmhyLI2QeUS8GFQRvPBXZRLWt4vuxk4EbCflZd5+EfpwX4aEFhqAU84RRYUpyXmBATJBeQTQZEARhKEG5Ne69GUplXkqaKOmSkszCsB05XCSFOSXgUyVshUdoJLYF7QYkvAXkUER3H45q1qE-XKXhQ2+eGACiuAJrgk1GjN+S8PNUTFMtq1Nrckl-O6wTct6KF5HUdRAA */\n id: \"GetWalletAddressDeviceAction\",\n initial: \"OpenAppDeviceAction\",\n context: ({ input }) => {\n return {\n input,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n _internalState: {\n error: null,\n wallet: null,\n walletAddress: null,\n },\n };\n },\n states: {\n OpenAppDeviceAction: {\n exit: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n }),\n invoke: {\n id: \"openAppStateMachine\",\n input: { appName: \"Bitcoin\" },\n src: \"openAppStateMachine\",\n onSnapshot: {\n actions: assign({\n intermediateValue: (_) =>\n _.event.snapshot.context.intermediateValue,\n }),\n },\n onDone: {\n actions: assign({\n _internalState: (_) => {\n return _.event.output.caseOf<GetWalletAddressDAInternalState>(\n {\n Right: () => _.context._internalState,\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n },\n );\n },\n }),\n target: \"CheckOpenAppDeviceActionResult\",\n },\n },\n },\n CheckOpenAppDeviceActionResult: {\n always: [\n {\n target: \"PrepareWalletPolicy\",\n guard: \"noInternalError\",\n },\n \"Error\",\n ],\n },\n PrepareWalletPolicy: {\n invoke: {\n id: \"prepareWalletPolicy\",\n src: \"prepareWalletPolicy\",\n input: ({ context }) => ({\n wallet: context.input.wallet,\n walletBuilder: context.input.walletBuilder,\n }),\n onDone: {\n target: \"PrepareWalletPolicyResultCheck\",\n actions: [\n assign({\n _internalState: ({ event, context }) => {\n if (isSuccessCommandResult(event.output)) {\n return {\n ...context._internalState,\n wallet: event.output.data,\n };\n }\n return {\n ...context._internalState,\n error: event.output.error,\n };\n },\n }),\n ],\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n PrepareWalletPolicyResultCheck: {\n always: [\n { guard: \"noInternalError\", target: \"GetWalletAddress\" },\n { target: \"Error\" },\n ],\n },\n GetWalletAddress: {\n entry: assign(({ context }) => ({\n intermediateValue: {\n requiredUserInteraction: context.input.checkOnDevice\n ? UserInteractionRequired.VerifyAddress\n : UserInteractionRequired.None,\n },\n })),\n exit: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n }),\n invoke: {\n id: \"getWalletAddress\",\n src: \"getWalletAddress\",\n input: ({ context }) => ({\n checkOnDevice: context.input.checkOnDevice,\n wallet: context._internalState.wallet!,\n change: context.input.change,\n addressIndex: context.input.addressIndex,\n dataStoreService: context.input.dataStoreService,\n walletSerializer: context.input.walletSerializer,\n walletBuilder: context.input.walletBuilder,\n }),\n onDone: {\n target: \"GetWalletAddressResultCheck\",\n actions: [\n assign({\n _internalState: ({ event, context }) => {\n if (isSuccessCommandResult(event.output)) {\n return {\n ...context._internalState,\n walletAddress: event.output.data,\n };\n }\n return {\n ...context._internalState,\n error: event.output.error,\n };\n },\n }),\n ],\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n GetWalletAddressResultCheck: {\n always: [\n { guard: \"noInternalError\", target: \"Success\" },\n { target: \"Error\" },\n ],\n },\n Success: {\n type: \"final\",\n },\n Error: {\n type: \"final\",\n },\n },\n output: ({ context }) =>\n context._internalState.walletAddress\n ? Right(context._internalState.walletAddress)\n : Left(\n context._internalState.error ||\n new UnknownDAError(\"No error in final state\"),\n ),\n });\n }\n\n extractDependencies(\n internalApi: InternalApi,\n ): GetWalletAddressMachineDependencies {\n const prepareWalletPolicy = async (arg0: {\n input: { wallet: ApiWallet; walletBuilder: WalletBuilder };\n }): Promise<CommandResult<InternalWallet, BtcErrorCodes>> => {\n const {\n input: { walletBuilder, wallet },\n } = arg0;\n return await new PrepareWalletPolicyTask(\n internalApi,\n { wallet },\n walletBuilder,\n ).run();\n };\n const getWalletAddress = async (arg0: {\n input: {\n checkOnDevice: boolean;\n change: boolean;\n addressIndex: number;\n wallet: InternalWallet;\n walletBuilder: WalletBuilder;\n walletSerializer: WalletSerializer;\n dataStoreService: DataStoreService;\n };\n }): Promise<CommandResult<WalletAddress, BtcErrorCodes>> => {\n const {\n checkOnDevice,\n wallet,\n change,\n addressIndex,\n walletSerializer,\n dataStoreService,\n } = arg0.input;\n\n return await new GetWalletAddressTask(\n internalApi,\n {\n checkOnDevice,\n wallet,\n change,\n addressIndex,\n },\n walletSerializer,\n dataStoreService,\n ).run();\n };\n return {\n getWalletAddress,\n prepareWalletPolicy,\n };\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["isSuccessCommandResult", "OpenAppDeviceAction", "UnknownDAError", "UserInteractionRequired", "XStateDeviceAction", "Left", "Right", "assign", "fromPromise", "setup", "GetWalletAddressTask", "PrepareWalletPolicyTask", "GetWalletAddressDeviceAction", "args", "internalApi", "getWalletAddress", "prepareWalletPolicy", "context", "_", "input", "error", "event", "arg0", "checkOnDevice", "wallet", "change", "addressIndex", "walletSerializer", "dataStoreService", "walletBuilder"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{CommandResultFactory as l,DeviceActionStatus as e,UnknownDeviceExchangeError as i,UserInteractionRequired as t}from"@ledgerhq/device-management-kit";import{makeDeviceActionInternalApiMock as c}from"../../../app-binder/device-action/__test-utils__/makeInternalApi";import{setupOpenAppDAMock as u}from"../../../app-binder/device-action/__test-utils__/setupOpenAppDAMock";import{testDeviceActionStates as p}from"../../../app-binder/device-action/__test-utils__/testDeviceActionStates";import{GetWalletAddressDeviceAction as m}from"./GetWalletAddressDeviceAction";jest.mock("@ledgerhq/device-management-kit",()=>({...jest.requireActual("@ledgerhq/device-management-kit"),OpenAppDeviceAction:jest.fn(()=>({makeStateMachine:jest.fn()}))}));describe("GetWalletAddressDeviceAction",()=>{const o=jest.fn(),s=jest.fn();function d(){return{prepareWalletPolicy:o,getWalletAddress:s}}describe("Success case",()=>{it("should call external dependencies with the correct parameters",n=>{u();const r=new m({input:{wallet:"ApiWallet",walletBuilder:"WalletBuilder",walletSerializer:"WalletSerializer",dataStoreService:"DataStoreService",checkOnDevice:!0,change:!1,addressIndex:1}});jest.spyOn(r,"extractDependencies").mockReturnValue(d()),o.mockResolvedValueOnce(l({data:"InternalWallet"})),s.mockResolvedValueOnce(l({data:"WalletAddress"}));const a=[{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.ConfirmOpenApp},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.None},status:e.Pending},{intermediateValue:{requiredUserInteraction:t.VerifyAddress},status:e.Pending},{output:"WalletAddress",status:e.Completed}];p(r,a,c(),n)})}),describe("Error cases",()=>{beforeEach(()=>{jest.resetAllMocks()}),it("Error if open app fails",n=>{u(new i("Mocked error"));const r=[{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.ConfirmOpenApp}},{status:e.Error,error:new i("Mocked error")}],a=new m({input:{wallet:{},walletBuilder:{},walletSerializer:{},dataStoreService:{},checkOnDevice:!0,change:!1,addressIndex:1}});jest.spyOn(a,"extractDependencies").mockReturnValue(d()),p(a,r,c(),n),expect(s).not.toHaveBeenCalled()}),it("Error if prepareWalletPolicy fails",n=>{u();const r=new m({input:{wallet:{},walletBuilder:{},walletSerializer:{},dataStoreService:{},checkOnDevice:!0,change:!1,addressIndex:1}});jest.spyOn(r,"extractDependencies").mockReturnValue(d()),o.mockResolvedValueOnce(l({error:new i("Mocked error")}));const a=[{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.ConfirmOpenApp}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None}},{status:e.Error,error:new i("Mocked error")}];p(r,a,c(),n),expect(s).not.toHaveBeenCalled()}),it("Error if getWalletAddress fails",n=>{u();const r=new m({input:{wallet:{},walletBuilder:{},walletSerializer:{},dataStoreService:{},checkOnDevice:!0,change:!1,addressIndex:1}});jest.spyOn(r,"extractDependencies").mockReturnValue(d()),o.mockResolvedValueOnce(l({data:"InternalWallet"})),s.mockResolvedValueOnce(l({error:new i("Mocked error")}));const a=[{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.ConfirmOpenApp}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.None}},{status:e.Pending,intermediateValue:{requiredUserInteraction:t.VerifyAddress}},{status:e.Error,error:new i("Mocked error")}];p(r,a,c(),n)})})});
|
|
2
|
+
//# sourceMappingURL=GetWalletAddressDeviceAction.test.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../src/internal/app-binder/device-action/GetWalletAddress/GetWalletAddressDeviceAction.test.ts"],
|
|
4
|
+
"sourcesContent": ["import {\n CommandResultFactory,\n DeviceActionStatus,\n UnknownDeviceExchangeError,\n UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type GetWalletAddressDAState } from \"@api/app-binder/GetWalletAddressDeviceActionTypes\";\nimport { type RegisteredWallet, type WalletAddress } from \"@api/model/Wallet\";\nimport { makeDeviceActionInternalApiMock } from \"@internal/app-binder/device-action/__test-utils__/makeInternalApi\";\nimport { setupOpenAppDAMock } from \"@internal/app-binder/device-action/__test-utils__/setupOpenAppDAMock\";\nimport { testDeviceActionStates } from \"@internal/app-binder/device-action/__test-utils__/testDeviceActionStates\";\nimport { type DataStoreService } from \"@internal/data-store/service/DataStoreService\";\nimport { type WalletBuilder } from \"@internal/wallet/service/WalletBuilder\";\nimport { type WalletSerializer } from \"@internal/wallet/service/WalletSerializer\";\n\nimport { GetWalletAddressDeviceAction } from \"./GetWalletAddressDeviceAction\";\n\njest.mock(\"@ledgerhq/device-management-kit\", () => ({\n ...jest.requireActual(\"@ledgerhq/device-management-kit\"),\n OpenAppDeviceAction: jest.fn(() => ({\n makeStateMachine: jest.fn(),\n })),\n}));\n\ndescribe(\"GetWalletAddressDeviceAction\", () => {\n const prepareWalletPolicyMock = jest.fn();\n const getWalletAddressMock = jest.fn();\n\n function extractDependenciesMock() {\n return {\n prepareWalletPolicy: prepareWalletPolicyMock,\n getWalletAddress: getWalletAddressMock,\n };\n }\n\n describe(\"Success case\", () => {\n it(\"should call external dependencies with the correct parameters\", (done) => {\n // given\n setupOpenAppDAMock();\n\n const deviceAction = new GetWalletAddressDeviceAction({\n input: {\n wallet: \"ApiWallet\" as unknown as RegisteredWallet,\n walletBuilder: \"WalletBuilder\" as unknown as WalletBuilder,\n walletSerializer: \"WalletSerializer\" as unknown as WalletSerializer,\n dataStoreService: \"DataStoreService\" as unknown as DataStoreService,\n checkOnDevice: true,\n change: false,\n addressIndex: 1,\n },\n });\n\n jest\n .spyOn(deviceAction, \"extractDependencies\")\n .mockReturnValue(extractDependenciesMock());\n prepareWalletPolicyMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: \"InternalWallet\",\n }),\n );\n getWalletAddressMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: \"WalletAddress\",\n }),\n );\n\n const expectedStates: Array<GetWalletAddressDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.ConfirmOpenApp,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.VerifyAddress,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n output: \"WalletAddress\" as unknown as WalletAddress,\n status: DeviceActionStatus.Completed,\n },\n ];\n\n // then\n testDeviceActionStates(\n deviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n done,\n );\n });\n });\n\n describe(\"Error cases\", () => {\n beforeEach(() => {\n jest.resetAllMocks();\n });\n\n it(\"Error if open app fails\", (done) => {\n // given\n setupOpenAppDAMock(new UnknownDeviceExchangeError(\"Mocked error\"));\n\n const expectedStates: Array<GetWalletAddressDAState> = [\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.ConfirmOpenApp,\n },\n },\n {\n status: DeviceActionStatus.Error,\n error: new UnknownDeviceExchangeError(\"Mocked error\"),\n },\n ];\n\n const deviceAction = new GetWalletAddressDeviceAction({\n input: {\n wallet: {} as unknown as RegisteredWallet,\n walletBuilder: {} as WalletBuilder,\n walletSerializer: {} as WalletSerializer,\n dataStoreService: {} as DataStoreService,\n checkOnDevice: true,\n change: false,\n addressIndex: 1,\n },\n });\n\n jest\n .spyOn(deviceAction, \"extractDependencies\")\n .mockReturnValue(extractDependenciesMock());\n\n testDeviceActionStates(\n deviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n done,\n );\n\n // then\n expect(getWalletAddressMock).not.toHaveBeenCalled();\n });\n\n it(\"Error if prepareWalletPolicy fails\", (done) => {\n // given\n setupOpenAppDAMock();\n\n const deviceAction = new GetWalletAddressDeviceAction({\n input: {\n wallet: {} as unknown as RegisteredWallet,\n walletBuilder: {} as WalletBuilder,\n walletSerializer: {} as WalletSerializer,\n dataStoreService: {} as DataStoreService,\n checkOnDevice: true,\n change: false,\n addressIndex: 1,\n },\n });\n\n jest\n .spyOn(deviceAction, \"extractDependencies\")\n .mockReturnValue(extractDependenciesMock());\n prepareWalletPolicyMock.mockResolvedValueOnce(\n CommandResultFactory({\n error: new UnknownDeviceExchangeError(\"Mocked error\"),\n }),\n );\n\n const expectedStates: Array<GetWalletAddressDAState> = [\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.ConfirmOpenApp,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Error,\n error: new UnknownDeviceExchangeError(\"Mocked error\"),\n },\n ];\n\n // then\n testDeviceActionStates(\n deviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n done,\n );\n\n expect(getWalletAddressMock).not.toHaveBeenCalled();\n });\n\n it(\"Error if getWalletAddress fails\", (done) => {\n // given\n setupOpenAppDAMock();\n\n const deviceAction = new GetWalletAddressDeviceAction({\n input: {\n wallet: {} as unknown as RegisteredWallet,\n walletBuilder: {} as WalletBuilder,\n walletSerializer: {} as WalletSerializer,\n dataStoreService: {} as DataStoreService,\n checkOnDevice: true,\n change: false,\n addressIndex: 1,\n },\n });\n\n jest\n .spyOn(deviceAction, \"extractDependencies\")\n .mockReturnValue(extractDependenciesMock());\n prepareWalletPolicyMock.mockResolvedValueOnce(\n CommandResultFactory({\n data: \"InternalWallet\",\n }),\n );\n getWalletAddressMock.mockResolvedValueOnce(\n CommandResultFactory({\n error: new UnknownDeviceExchangeError(\"Mocked error\"),\n }),\n );\n\n const expectedStates: Array<GetWalletAddressDAState> = [\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.ConfirmOpenApp,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n },\n {\n status: DeviceActionStatus.Pending,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.VerifyAddress,\n },\n },\n {\n status: DeviceActionStatus.Error,\n error: new UnknownDeviceExchangeError(\"Mocked error\"),\n },\n ];\n\n // then\n testDeviceActionStates(\n deviceAction,\n expectedStates,\n makeDeviceActionInternalApiMock(),\n done,\n );\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["CommandResultFactory", "DeviceActionStatus", "UnknownDeviceExchangeError", "UserInteractionRequired", "makeDeviceActionInternalApiMock", "setupOpenAppDAMock", "testDeviceActionStates", "GetWalletAddressDeviceAction", "prepareWalletPolicyMock", "getWalletAddressMock", "extractDependenciesMock", "done", "deviceAction", "expectedStates"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{isSuccessCommandResult as i}from"@ledgerhq/device-management-kit";import{GetWalletAddressCommand as d}from"../../app-binder/command/GetWalletAddressCommand";import{DataStore as m}from"../../data-store/model/DataStore";import{BtcCommandUtils as p}from"../../utils/BtcCommandUtils";import{ContinueTask as c}from"./ContinueTask";class f{constructor(o,s,l,t,r=(a,e)=>new c(a,e),n=p.getAddress){this._api=o;this._args=s;this._walletSerializer=l;this._dataStoreService=t;this._continueTaskFactory=r;this._getAddress=n}async run(){const{checkOnDevice:o,change:s,addressIndex:l,wallet:t}=this._args,r=new m;this._dataStoreService.merklizeWallet(r,t);const n=this._walletSerializer.getId(t),a=await this._api.sendCommand(new d({checkOnDevice:o,walletId:n,walletHmac:t.hmac,change:s,addressIndex:l})),e=await this._continueTaskFactory(this._api,r).run(a);return i(e)?this._getAddress(e):e}}export{f as GetWalletAddressTask};
|
|
2
|
+
//# sourceMappingURL=GetWalletAddressTask.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/internal/app-binder/task/GetWalletAddressTask.ts"],
|
|
4
|
+
"sourcesContent": ["import {\n type CommandResult,\n isSuccessCommandResult,\n} from \"@ledgerhq/device-management-kit\";\nimport { type InternalApi } from \"@ledgerhq/device-management-kit\";\n\nimport { type WalletAddress } from \"@api/model/Wallet\";\nimport { GetWalletAddressCommand } from \"@internal/app-binder/command/GetWalletAddressCommand\";\nimport { type BtcErrorCodes } from \"@internal/app-binder/command/utils/bitcoinAppErrors\";\nimport { DataStore } from \"@internal/data-store/model/DataStore\";\nimport { type DataStoreService } from \"@internal/data-store/service/DataStoreService\";\nimport { BtcCommandUtils } from \"@internal/utils/BtcCommandUtils\";\nimport { type Wallet as InternalWallet } from \"@internal/wallet/model/Wallet\";\nimport { type WalletSerializer } from \"@internal/wallet/service/WalletSerializer\";\n\nimport { ContinueTask } from \"./ContinueTask\";\n\nexport type SendGetWalletAddressTaskArgs = {\n checkOnDevice: boolean;\n wallet: InternalWallet;\n change: boolean;\n addressIndex: number;\n};\n\nexport class GetWalletAddressTask {\n constructor(\n private readonly _api: InternalApi,\n private readonly _args: SendGetWalletAddressTaskArgs,\n private readonly _walletSerializer: WalletSerializer,\n private readonly _dataStoreService: DataStoreService,\n private readonly _continueTaskFactory = (\n api: InternalApi,\n dataStore: DataStore,\n ) => new ContinueTask(api, dataStore),\n private readonly _getAddress = BtcCommandUtils.getAddress,\n ) {}\n\n async run(): Promise<CommandResult<WalletAddress, BtcErrorCodes>> {\n const { checkOnDevice, change, addressIndex, wallet } = this._args;\n\n const dataStore = new DataStore();\n\n this._dataStoreService.merklizeWallet(dataStore, wallet);\n\n const walletId = this._walletSerializer.getId(wallet);\n\n const getWalletAddressInitialResponse = await this._api.sendCommand(\n new GetWalletAddressCommand({\n checkOnDevice,\n walletId,\n walletHmac: wallet.hmac,\n change,\n addressIndex,\n }),\n );\n\n const response = await this._continueTaskFactory(this._api, dataStore).run(\n getWalletAddressInitialResponse,\n );\n\n if (isSuccessCommandResult(response)) {\n return this._getAddress(response);\n }\n\n return response;\n }\n}\n"],
|
|
5
|
+
"mappings": "AAAA,OAEE,0BAAAA,MACK,kCAIP,OAAS,2BAAAC,MAA+B,uDAExC,OAAS,aAAAC,MAAiB,uCAE1B,OAAS,mBAAAC,MAAuB,kCAIhC,OAAS,gBAAAC,MAAoB,iBAStB,MAAMC,CAAqB,CAChC,YACmBC,EACAC,EACAC,EACAC,EACAC,EAAuB,CACtCC,EACAC,IACG,IAAIR,EAAaO,EAAKC,CAAS,EACnBC,EAAcV,EAAgB,WAC/C,CATiB,UAAAG,EACA,WAAAC,EACA,uBAAAC,EACA,uBAAAC,EACA,0BAAAC,EAIA,iBAAAG,CAChB,CAEH,MAAM,KAA4D,CAChE,KAAM,CAAE,cAAAC,EAAe,OAAAC,EAAQ,aAAAC,EAAc,OAAAC,CAAO,EAAI,KAAK,MAEvDL,EAAY,IAAIV,EAEtB,KAAK,kBAAkB,eAAeU,EAAWK,CAAM,EAEvD,MAAMC,EAAW,KAAK,kBAAkB,MAAMD,CAAM,EAE9CE,EAAkC,MAAM,KAAK,KAAK,YACtD,IAAIlB,EAAwB,CAC1B,cAAAa,EACA,SAAAI,EACA,WAAYD,EAAO,KACnB,OAAAF,EACA,aAAAC,CACF,CAAC,CACH,EAEMI,EAAW,MAAM,KAAK,qBAAqB,KAAK,KAAMR,CAAS,EAAE,IACrEO,CACF,EAEA,OAAInB,EAAuBoB,CAAQ,EAC1B,KAAK,YAAYA,CAAQ,EAG3BA,CACT,CACF",
|
|
6
|
+
"names": ["isSuccessCommandResult", "GetWalletAddressCommand", "DataStore", "BtcCommandUtils", "ContinueTask", "GetWalletAddressTask", "_api", "_args", "_walletSerializer", "_dataStoreService", "_continueTaskFactory", "api", "dataStore", "_getAddress", "checkOnDevice", "change", "addressIndex", "wallet", "walletId", "getWalletAddressInitialResponse", "response"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{CommandResultFactory as e,InvalidStatusWordError as l}from"@ledgerhq/device-management-kit";import{GetWalletAddressTask as i}from"./GetWalletAddressTask";describe("GetWalletAddressTask",()=>{describe("run",()=>{it("should return a wallet address successfully",async()=>{const t={sendCommand:jest.fn().mockResolvedValueOnce(e({data:Uint8Array.from([1,2,3])}))},a={hmac:Uint8Array.from([4])},n={getId:jest.fn().mockReturnValue(Uint8Array.from([5]))},r={merklizeWallet:jest.fn()},s=()=>({run:jest.fn().mockResolvedValue(e({data:{data:Uint8Array.from([52,86,120,154,188,222,241])}}))}),o=jest.fn().mockReturnValue(e({data:{address:"some address"}})),c=await new i(t,{checkOnDevice:!0,wallet:a,change:!1,addressIndex:0},n,r,s,o).run();expect(n.getId).toHaveBeenCalledWith(a),expect(c).toStrictEqual(e({data:{address:"some address"}}))}),it("should fail if ContinueTask fails",async()=>{const t={sendCommand:jest.fn()},a={hmac:Uint8Array.from([4])},n={getId:jest.fn().mockReturnValue(Uint8Array.from([5]))},r={merklizeWallet:jest.fn()},s=()=>({run:jest.fn().mockResolvedValue(e({error:new l("ContinueTask failed")}))}),o=await new i(t,{checkOnDevice:!0,wallet:a,change:!1,addressIndex:0},n,r,s).run();expect(o).toStrictEqual(e({error:new l("ContinueTask failed")}))}),it("should fail with an invalid device response",async()=>{const t={sendCommand:jest.fn().mockResolvedValueOnce(e({error:new l("Invalid response from the device")}))},a={hmac:Uint8Array.from([4])},n={getId:jest.fn().mockReturnValue(Uint8Array.from([5]))},r={merklizeWallet:jest.fn()},s=()=>({run:jest.fn().mockResolvedValue(e({error:new l("Invalid response from the device")}))}),o=await new i(t,{checkOnDevice:!0,wallet:a,change:!1,addressIndex:0},n,r,s).run();expect(o).toStrictEqual(e({error:new l("Invalid response from the device")}))})})});
|
|
2
|
+
//# sourceMappingURL=GetWalletAddressTask.test.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/internal/app-binder/task/GetWalletAddressTask.test.ts"],
|
|
4
|
+
"sourcesContent": ["import {\n CommandResultFactory,\n type InternalApi,\n InvalidStatusWordError,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type DataStoreService } from \"@internal/data-store/service/DataStoreService\";\nimport { type Wallet as InternalWallet } from \"@internal/wallet/model/Wallet\";\nimport { type WalletSerializer } from \"@internal/wallet/service/WalletSerializer\";\n\nimport { type ContinueTask } from \"./ContinueTask\";\nimport { GetWalletAddressTask } from \"./GetWalletAddressTask\";\n\ndescribe(\"GetWalletAddressTask\", () => {\n describe(\"run\", () => {\n it(\"should return a wallet address successfully\", async () => {\n // given\n const api = {\n sendCommand: jest.fn().mockResolvedValueOnce(\n CommandResultFactory({\n data: Uint8Array.from([0x01, 0x02, 0x03]),\n }),\n ),\n } as unknown as InternalApi;\n\n const wallet = {\n hmac: Uint8Array.from([0x04]),\n } as unknown as InternalWallet;\n\n const walletSerializer = {\n getId: jest.fn().mockReturnValue(Uint8Array.from([0x05])),\n } as unknown as WalletSerializer;\n\n const dataStoreService = {\n merklizeWallet: jest.fn(),\n } as unknown as DataStoreService;\n\n const continueTaskFactory = () =>\n ({\n run: jest.fn().mockResolvedValue(\n CommandResultFactory({\n data: {\n data: Uint8Array.from([\n 0x34, 0x56, 0x78, 0x9a, 0xbc, 0xde, 0xf1,\n ]),\n },\n }),\n ),\n }) as unknown as ContinueTask;\n\n const mockGetAddress = jest.fn().mockReturnValue(\n CommandResultFactory({\n data: { address: \"some address\" },\n }),\n );\n\n // when\n const result = await new GetWalletAddressTask(\n api,\n {\n checkOnDevice: true,\n wallet,\n change: false,\n addressIndex: 0,\n },\n walletSerializer,\n dataStoreService,\n continueTaskFactory,\n mockGetAddress,\n ).run();\n\n // then\n expect(walletSerializer.getId).toHaveBeenCalledWith(wallet);\n expect(result).toStrictEqual(\n CommandResultFactory({\n data: {\n address: \"some address\",\n },\n }),\n );\n });\n\n it(\"should fail if ContinueTask fails\", async () => {\n // given\n const api = {\n sendCommand: jest.fn(),\n } as unknown as InternalApi;\n\n const wallet = {\n hmac: Uint8Array.from([0x04]),\n } as unknown as InternalWallet;\n\n const walletSerializer = {\n getId: jest.fn().mockReturnValue(Uint8Array.from([0x05])),\n } as unknown as WalletSerializer;\n\n const dataStoreService = {\n merklizeWallet: jest.fn(),\n } as unknown as DataStoreService;\n\n const continueTaskFactory = () =>\n ({\n run: jest.fn().mockResolvedValue(\n CommandResultFactory({\n error: new InvalidStatusWordError(\"ContinueTask failed\"),\n }),\n ),\n }) as unknown as ContinueTask;\n\n // when\n const result = await new GetWalletAddressTask(\n api,\n {\n checkOnDevice: true,\n wallet,\n change: false,\n addressIndex: 0,\n },\n walletSerializer,\n dataStoreService,\n continueTaskFactory,\n ).run();\n\n // then\n expect(result).toStrictEqual(\n CommandResultFactory({\n error: new InvalidStatusWordError(\"ContinueTask failed\"),\n }),\n );\n });\n\n it(\"should fail with an invalid device response\", async () => {\n // given\n const api = {\n sendCommand: jest.fn().mockResolvedValueOnce(\n CommandResultFactory({\n error: new InvalidStatusWordError(\n \"Invalid response from the device\",\n ),\n }),\n ),\n } as unknown as InternalApi;\n\n const wallet = {\n hmac: Uint8Array.from([0x04]),\n } as unknown as InternalWallet;\n\n const walletSerializer = {\n getId: jest.fn().mockReturnValue(Uint8Array.from([0x05])),\n } as unknown as WalletSerializer;\n\n const dataStoreService = {\n merklizeWallet: jest.fn(),\n } as unknown as DataStoreService;\n\n const continueTaskFactory = () =>\n ({\n run: jest.fn().mockResolvedValue(\n CommandResultFactory({\n error: new InvalidStatusWordError(\n \"Invalid response from the device\",\n ),\n }),\n ),\n }) as unknown as ContinueTask;\n\n // when\n const result = await new GetWalletAddressTask(\n api,\n {\n checkOnDevice: true,\n wallet,\n change: false,\n addressIndex: 0,\n },\n walletSerializer,\n dataStoreService,\n continueTaskFactory,\n ).run();\n\n // then\n expect(result).toStrictEqual(\n CommandResultFactory({\n error: new InvalidStatusWordError(\"Invalid response from the device\"),\n }),\n );\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["CommandResultFactory", "InvalidStatusWordError", "GetWalletAddressTask", "api", "wallet", "walletSerializer", "dataStoreService", "continueTaskFactory", "mockGetAddress", "result"]
|
|
7
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{ContainerModule as o}from"inversify";import{useCasesTypes as s}from"../../use-cases/di/useCasesTypes";import{GetExtendedPublicKeyUseCase as t}from"../../use-cases/get-extended-public-key/GetExtendedPublicKeyUseCase";import{SignMessageUseCase as n}from"../../use-cases/sign-message/SignMessageUseCase";import{SignPsbtUseCase as i}from"../../use-cases/sign-psbt/SignPsbtUseCase";import{SignTransactionUseCase as
|
|
1
|
+
import{ContainerModule as o}from"inversify";import{useCasesTypes as s}from"../../use-cases/di/useCasesTypes";import{GetExtendedPublicKeyUseCase as t}from"../../use-cases/get-extended-public-key/GetExtendedPublicKeyUseCase";import{GetWalletAddressUseCase as a}from"../../use-cases/get-wallet-address/GetWalletAddressUseCase";import{SignMessageUseCase as n}from"../../use-cases/sign-message/SignMessageUseCase";import{SignPsbtUseCase as i}from"../../use-cases/sign-psbt/SignPsbtUseCase";import{SignTransactionUseCase as r}from"../../use-cases/sign-transaction/SignTransactionUseCase";const A=()=>new o((e,m,C,d,U,c,p)=>{e(s.GetExtendedPublicKeyUseCase).to(t),e(s.SignMessageUseCase).to(n),e(s.SignPsbtUseCase).to(i),e(s.SignTransactionUseCase).to(r),e(s.GetWalletAddressUseCase).to(a)});export{A as useCasesModuleFactory};
|
|
2
2
|
//# sourceMappingURL=useCasesModule.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/use-cases/di/useCasesModule.ts"],
|
|
4
|
-
"sourcesContent": ["import { ContainerModule } from \"inversify\";\n\nimport { useCasesTypes } from \"@internal/use-cases/di/useCasesTypes\";\nimport { GetExtendedPublicKeyUseCase } from \"@internal/use-cases/get-extended-public-key/GetExtendedPublicKeyUseCase\";\nimport { SignMessageUseCase } from \"@internal/use-cases/sign-message/SignMessageUseCase\";\nimport { SignPsbtUseCase } from \"@internal/use-cases/sign-psbt/SignPsbtUseCase\";\nimport { SignTransactionUseCase } from \"@internal/use-cases/sign-transaction/SignTransactionUseCase\";\n\nexport const useCasesModuleFactory = () =>\n new ContainerModule(\n (\n bind,\n _unbind,\n _isBound,\n _rebind,\n _unbindAsync,\n _onActivation,\n _onDeactivation,\n ) => {\n bind(useCasesTypes.GetExtendedPublicKeyUseCase).to(\n GetExtendedPublicKeyUseCase,\n );\n bind(useCasesTypes.SignMessageUseCase).to(SignMessageUseCase);\n bind(useCasesTypes.SignPsbtUseCase).to(SignPsbtUseCase);\n bind(useCasesTypes.SignTransactionUseCase).to(SignTransactionUseCase);\n },\n );\n"],
|
|
5
|
-
"mappings": "AAAA,OAAS,mBAAAA,MAAuB,YAEhC,OAAS,iBAAAC,MAAqB,uCAC9B,OAAS,+BAAAC,MAAmC,0EAC5C,OAAS,sBAAAC,MAA0B,sDACnC,OAAS,mBAAAC,MAAuB,gDAChC,OAAS,0BAAAC,MAA8B,8DAEhC,MAAMC,EAAwB,IACnC,
|
|
6
|
-
"names": ["ContainerModule", "useCasesTypes", "GetExtendedPublicKeyUseCase", "SignMessageUseCase", "SignPsbtUseCase", "SignTransactionUseCase", "useCasesModuleFactory", "bind", "_unbind", "_isBound", "_rebind", "_unbindAsync", "_onActivation", "_onDeactivation"]
|
|
4
|
+
"sourcesContent": ["import { ContainerModule } from \"inversify\";\n\nimport { useCasesTypes } from \"@internal/use-cases/di/useCasesTypes\";\nimport { GetExtendedPublicKeyUseCase } from \"@internal/use-cases/get-extended-public-key/GetExtendedPublicKeyUseCase\";\nimport { GetWalletAddressUseCase } from \"@internal/use-cases/get-wallet-address/GetWalletAddressUseCase\";\nimport { SignMessageUseCase } from \"@internal/use-cases/sign-message/SignMessageUseCase\";\nimport { SignPsbtUseCase } from \"@internal/use-cases/sign-psbt/SignPsbtUseCase\";\nimport { SignTransactionUseCase } from \"@internal/use-cases/sign-transaction/SignTransactionUseCase\";\n\nexport const useCasesModuleFactory = () =>\n new ContainerModule(\n (\n bind,\n _unbind,\n _isBound,\n _rebind,\n _unbindAsync,\n _onActivation,\n _onDeactivation,\n ) => {\n bind(useCasesTypes.GetExtendedPublicKeyUseCase).to(\n GetExtendedPublicKeyUseCase,\n );\n bind(useCasesTypes.SignMessageUseCase).to(SignMessageUseCase);\n bind(useCasesTypes.SignPsbtUseCase).to(SignPsbtUseCase);\n bind(useCasesTypes.SignTransactionUseCase).to(SignTransactionUseCase);\n bind(useCasesTypes.GetWalletAddressUseCase).to(GetWalletAddressUseCase);\n },\n );\n"],
|
|
5
|
+
"mappings": "AAAA,OAAS,mBAAAA,MAAuB,YAEhC,OAAS,iBAAAC,MAAqB,uCAC9B,OAAS,+BAAAC,MAAmC,0EAC5C,OAAS,2BAAAC,MAA+B,iEACxC,OAAS,sBAAAC,MAA0B,sDACnC,OAAS,mBAAAC,MAAuB,gDAChC,OAAS,0BAAAC,MAA8B,8DAEhC,MAAMC,EAAwB,IACnC,IAAIP,EACF,CACEQ,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,IACG,CACHN,EAAKP,EAAc,2BAA2B,EAAE,GAC9CC,CACF,EACAM,EAAKP,EAAc,kBAAkB,EAAE,GAAGG,CAAkB,EAC5DI,EAAKP,EAAc,eAAe,EAAE,GAAGI,CAAe,EACtDG,EAAKP,EAAc,sBAAsB,EAAE,GAAGK,CAAsB,EACpEE,EAAKP,EAAc,uBAAuB,EAAE,GAAGE,CAAuB,CACxE,CACF",
|
|
6
|
+
"names": ["ContainerModule", "useCasesTypes", "GetExtendedPublicKeyUseCase", "GetWalletAddressUseCase", "SignMessageUseCase", "SignPsbtUseCase", "SignTransactionUseCase", "useCasesModuleFactory", "bind", "_unbind", "_isBound", "_rebind", "_unbindAsync", "_onActivation", "_onDeactivation"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Container as o}from"inversify";import{useCasesModuleFactory as d}from"./useCasesModule";import{useCasesTypes as t}from"./useCasesTypes";describe("useCasesModuleFactory",()=>{describe("Default",()=>{let e,s;beforeEach(()=>{s=d(),e=new o,e.load(s)}),it("should return the address module",()=>{expect(s).toBeDefined()}),it("should bind GetExtendedPublicKeyUseCase",()=>{expect(e.isBound(t.GetExtendedPublicKeyUseCase)).toBeTruthy()}),it("should bind SignMessageUseCase",()=>{expect(e.isBound(t.SignMessageUseCase)).toBeTruthy()})})});
|
|
1
|
+
import{Container as o}from"inversify";import{useCasesModuleFactory as d}from"./useCasesModule";import{useCasesTypes as t}from"./useCasesTypes";describe("useCasesModuleFactory",()=>{describe("Default",()=>{let e,s;beforeEach(()=>{s=d(),e=new o,e.load(s)}),it("should return the address module",()=>{expect(s).toBeDefined()}),it("should bind GetExtendedPublicKeyUseCase",()=>{expect(e.isBound(t.GetExtendedPublicKeyUseCase)).toBeTruthy()}),it("should bind SignMessageUseCase",()=>{expect(e.isBound(t.SignMessageUseCase)).toBeTruthy()}),it("should bind GetWalletAddressUseCase",()=>{expect(e.isBound(t.GetWalletAddressUseCase)).toBeTruthy()})})});
|
|
2
2
|
//# sourceMappingURL=useCasesModule.test.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/use-cases/di/useCasesModule.test.ts"],
|
|
4
|
-
"sourcesContent": ["import { Container } from \"inversify\";\n\nimport { useCasesModuleFactory } from \"./useCasesModule\";\nimport { useCasesTypes } from \"./useCasesTypes\";\n\ndescribe(\"useCasesModuleFactory\", () => {\n describe(\"Default\", () => {\n let container: Container;\n let mod: ReturnType<typeof useCasesModuleFactory>;\n beforeEach(() => {\n mod = useCasesModuleFactory();\n container = new Container();\n container.load(mod);\n });\n\n it(\"should return the address module\", () => {\n expect(mod).toBeDefined();\n });\n\n it(\"should bind GetExtendedPublicKeyUseCase\", () => {\n expect(\n container.isBound(useCasesTypes.GetExtendedPublicKeyUseCase),\n ).toBeTruthy();\n });\n\n it(\"should bind SignMessageUseCase\", () => {\n expect(container.isBound(useCasesTypes.SignMessageUseCase)).toBeTruthy();\n });\n });\n});\n"],
|
|
5
|
-
"mappings": "AAAA,OAAS,aAAAA,MAAiB,YAE1B,OAAS,yBAAAC,MAA6B,mBACtC,OAAS,iBAAAC,MAAqB,kBAE9B,SAAS,wBAAyB,IAAM,CACtC,SAAS,UAAW,IAAM,CACxB,IAAIC,EACAC,EACJ,WAAW,IAAM,CACfA,EAAMH,EAAsB,EAC5BE,EAAY,IAAIH,EAChBG,EAAU,KAAKC,CAAG,CACpB,CAAC,EAED,GAAG,mCAAoC,IAAM,CAC3C,OAAOA,CAAG,EAAE,YAAY,CAC1B,CAAC,EAED,GAAG,0CAA2C,IAAM,CAClD,OACED,EAAU,QAAQD,EAAc,2BAA2B,CAC7D,EAAE,WAAW,CACf,CAAC,EAED,GAAG,iCAAkC,IAAM,CACzC,OAAOC,EAAU,QAAQD,EAAc,kBAAkB,CAAC,EAAE,WAAW,CACzE,CAAC,CACH,CAAC,CACH,CAAC",
|
|
4
|
+
"sourcesContent": ["import { Container } from \"inversify\";\n\nimport { useCasesModuleFactory } from \"./useCasesModule\";\nimport { useCasesTypes } from \"./useCasesTypes\";\n\ndescribe(\"useCasesModuleFactory\", () => {\n describe(\"Default\", () => {\n let container: Container;\n let mod: ReturnType<typeof useCasesModuleFactory>;\n beforeEach(() => {\n mod = useCasesModuleFactory();\n container = new Container();\n container.load(mod);\n });\n\n it(\"should return the address module\", () => {\n expect(mod).toBeDefined();\n });\n\n it(\"should bind GetExtendedPublicKeyUseCase\", () => {\n expect(\n container.isBound(useCasesTypes.GetExtendedPublicKeyUseCase),\n ).toBeTruthy();\n });\n\n it(\"should bind SignMessageUseCase\", () => {\n expect(container.isBound(useCasesTypes.SignMessageUseCase)).toBeTruthy();\n });\n\n it(\"should bind GetWalletAddressUseCase\", () => {\n expect(\n container.isBound(useCasesTypes.GetWalletAddressUseCase),\n ).toBeTruthy();\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "AAAA,OAAS,aAAAA,MAAiB,YAE1B,OAAS,yBAAAC,MAA6B,mBACtC,OAAS,iBAAAC,MAAqB,kBAE9B,SAAS,wBAAyB,IAAM,CACtC,SAAS,UAAW,IAAM,CACxB,IAAIC,EACAC,EACJ,WAAW,IAAM,CACfA,EAAMH,EAAsB,EAC5BE,EAAY,IAAIH,EAChBG,EAAU,KAAKC,CAAG,CACpB,CAAC,EAED,GAAG,mCAAoC,IAAM,CAC3C,OAAOA,CAAG,EAAE,YAAY,CAC1B,CAAC,EAED,GAAG,0CAA2C,IAAM,CAClD,OACED,EAAU,QAAQD,EAAc,2BAA2B,CAC7D,EAAE,WAAW,CACf,CAAC,EAED,GAAG,iCAAkC,IAAM,CACzC,OAAOC,EAAU,QAAQD,EAAc,kBAAkB,CAAC,EAAE,WAAW,CACzE,CAAC,EAED,GAAG,sCAAuC,IAAM,CAC9C,OACEC,EAAU,QAAQD,EAAc,uBAAuB,CACzD,EAAE,WAAW,CACf,CAAC,CACH,CAAC,CACH,CAAC",
|
|
6
6
|
"names": ["Container", "useCasesModuleFactory", "useCasesTypes", "container", "mod"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e={GetExtendedPublicKeyUseCase:Symbol.for("GetExtendedPublicKeyUseCase"),SignMessageUseCase:Symbol.for("SignMessageUseCase"),SignPsbtUseCase:Symbol.for("SignPsbtUseCase"),SignTransactionUseCase:Symbol.for("SignTransactionUseCase")};export{e as useCasesTypes};
|
|
1
|
+
const e={GetExtendedPublicKeyUseCase:Symbol.for("GetExtendedPublicKeyUseCase"),SignMessageUseCase:Symbol.for("SignMessageUseCase"),SignPsbtUseCase:Symbol.for("SignPsbtUseCase"),SignTransactionUseCase:Symbol.for("SignTransactionUseCase"),GetWalletAddressUseCase:Symbol.for("GetWalletAddressUseCase")};export{e as useCasesTypes};
|
|
2
2
|
//# sourceMappingURL=useCasesTypes.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/use-cases/di/useCasesTypes.ts"],
|
|
4
|
-
"sourcesContent": ["export const useCasesTypes = {\n GetExtendedPublicKeyUseCase: Symbol.for(\"GetExtendedPublicKeyUseCase\"),\n SignMessageUseCase: Symbol.for(\"SignMessageUseCase\"),\n SignPsbtUseCase: Symbol.for(\"SignPsbtUseCase\"),\n SignTransactionUseCase: Symbol.for(\"SignTransactionUseCase\"),\n};\n"],
|
|
5
|
-
"mappings": "AAAO,MAAMA,EAAgB,CAC3B,4BAA6B,OAAO,IAAI,6BAA6B,EACrE,mBAAoB,OAAO,IAAI,oBAAoB,EACnD,gBAAiB,OAAO,IAAI,iBAAiB,EAC7C,uBAAwB,OAAO,IAAI,wBAAwB,
|
|
4
|
+
"sourcesContent": ["export const useCasesTypes = {\n GetExtendedPublicKeyUseCase: Symbol.for(\"GetExtendedPublicKeyUseCase\"),\n SignMessageUseCase: Symbol.for(\"SignMessageUseCase\"),\n SignPsbtUseCase: Symbol.for(\"SignPsbtUseCase\"),\n SignTransactionUseCase: Symbol.for(\"SignTransactionUseCase\"),\n GetWalletAddressUseCase: Symbol.for(\"GetWalletAddressUseCase\"),\n};\n"],
|
|
5
|
+
"mappings": "AAAO,MAAMA,EAAgB,CAC3B,4BAA6B,OAAO,IAAI,6BAA6B,EACrE,mBAAoB,OAAO,IAAI,oBAAoB,EACnD,gBAAiB,OAAO,IAAI,iBAAiB,EAC7C,uBAAwB,OAAO,IAAI,wBAAwB,EAC3D,wBAAyB,OAAO,IAAI,yBAAyB,CAC/D",
|
|
6
6
|
"names": ["useCasesTypes"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var a=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var B=(i,r,e,t)=>{for(var p=t>1?void 0:t?d(r,e):r,o=i.length-1,m;o>=0;o--)(m=i[o])&&(p=(t?m(r,e,p):m(p))||p);return t&&p&&a(r,e,p),p},c=(i,r)=>(e,t)=>r(e,t,i);import{inject as l,injectable as u}from"inversify";import{appBinderTypes as A}from"../../app-binder/di/appBinderTypes";let n=class{_appBinder;constructor(r){this._appBinder=r}execute(r,e,t,p){return this._appBinder.getWalletAddress({wallet:e,checkOnDevice:r,change:t,addressIndex:p})}};n=B([u(),c(0,l(A.AppBinder))],n);export{n as GetWalletAddressUseCase};
|
|
2
|
+
//# sourceMappingURL=GetWalletAddressUseCase.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/internal/use-cases/get-wallet-address/GetWalletAddressUseCase.ts"],
|
|
4
|
+
"sourcesContent": ["import { inject, injectable } from \"inversify\";\n\nimport { GetWalletAddressDAReturnType } from \"@api/app-binder/GetWalletAddressDeviceActionTypes\";\nimport { Wallet } from \"@api/model/Wallet\";\nimport { BtcAppBinder } from \"@internal/app-binder/BtcAppBinder\";\nimport { appBinderTypes } from \"@internal/app-binder/di/appBinderTypes\";\n\n@injectable()\nexport class GetWalletAddressUseCase {\n private _appBinder: BtcAppBinder;\n\n constructor(\n @inject(appBinderTypes.AppBinder)\n appBinding: BtcAppBinder,\n ) {\n this._appBinder = appBinding;\n }\n\n execute(\n checkOnDevice: boolean,\n wallet: Wallet,\n change: boolean,\n addressIndex: number,\n ): GetWalletAddressDAReturnType {\n return this._appBinder.getWalletAddress({\n wallet,\n checkOnDevice,\n change,\n addressIndex,\n });\n }\n}\n"],
|
|
5
|
+
"mappings": "iOAAA,OAAS,UAAAA,EAAQ,cAAAC,MAAkB,YAKnC,OAAS,kBAAAC,MAAsB,yCAGxB,IAAMC,EAAN,KAA8B,CAC3B,WAER,YAEEC,EACA,CACA,KAAK,WAAaA,CACpB,CAEA,QACEC,EACAC,EACAC,EACAC,EAC8B,CAC9B,OAAO,KAAK,WAAW,iBAAiB,CACtC,OAAAF,EACA,cAAAD,EACA,OAAAE,EACA,aAAAC,CACF,CAAC,CACH,CACF,EAvBaL,EAANM,EAAA,CADNC,EAAW,EAKPC,EAAA,EAAAC,EAAOC,EAAe,SAAS,IAJvBV",
|
|
6
|
+
"names": ["inject", "injectable", "appBinderTypes", "GetWalletAddressUseCase", "appBinding", "checkOnDevice", "wallet", "change", "addressIndex", "__decorateClass", "injectable", "__decorateParam", "inject", "appBinderTypes"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{Leaf as l}from"../../merkle-tree/model/Leaf";import{MerkleTree as n}from"../../merkle-tree/model/MerkleTree";import{GetWalletAddressUseCase as d}from"./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(new l(new Uint8Array,new Uint8Array(32).fill(7)),[]),descriptorBuffer:new Uint8Array(31).fill(16)},t=!1,s=!1,r=0,a={getWalletAddress:jest.fn()};new d(a).execute(t,e,s,r),expect(a.getWalletAddress).toHaveBeenCalledWith({wallet:e,checkOnDevice:t,change:s,addressIndex:r})})});
|
|
2
|
+
//# sourceMappingURL=GetWalletAddressUseCase.test.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 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: jest.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,OAAS,QAAAA,MAAY,mCACrB,OAAS,cAAAC,MAAkB,yCAE3B,OAAS,2BAAAC,MAA+B,4BAExC,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,IAAIF,EACZ,IAAID,EAAK,IAAI,WAAc,IAAI,WAAW,EAAE,EAAE,KAAK,CAAC,CAAC,EACrD,CAAC,CACH,EACA,iBAAkB,IAAI,WAAW,EAAE,EAAE,KAAK,EAAE,CAC9C,EACMI,EAAgB,GAChBC,EAAS,GACTC,EAAe,EAEfC,EAAY,CAChB,iBAAkB,KAAK,GAAG,CAC5B,EACgC,IAAIL,EAClCK,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
|
+
"names": ["Leaf", "MerkleTree", "GetWalletAddressUseCase", "wallet", "checkOnDevice", "change", "addressIndex", "appBinder"]
|
|
7
|
+
}
|