@ledgerhq/device-signer-kit-ethereum 1.3.0 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js +1 -1
  2. package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js.map +1 -1
  3. package/lib/cjs/api/app-binder/SignTypedDataDeviceActionTypes.js +1 -1
  4. package/lib/cjs/api/app-binder/SignTypedDataDeviceActionTypes.js.map +1 -1
  5. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js +1 -1
  6. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js.map +3 -3
  7. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js +1 -1
  8. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js.map +3 -3
  9. package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js +1 -1
  10. package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js.map +3 -3
  11. package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js +1 -1
  12. package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js.map +3 -3
  13. package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.js +1 -1
  14. package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.js.map +3 -3
  15. package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.test.js +1 -1
  16. package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.test.js.map +2 -2
  17. package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.js +1 -1
  18. package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.js.map +3 -3
  19. package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.test.js +1 -1
  20. package/lib/cjs/internal/app-binder/task/BuildTransactionContextTask.test.js.map +3 -3
  21. package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.js +1 -1
  22. package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.js.map +3 -3
  23. package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.test.js +1 -1
  24. package/lib/cjs/internal/app-binder/task/GetWeb3CheckTask.test.js.map +3 -3
  25. package/lib/cjs/internal/shared/utils/ApplicationChecker.js +2 -0
  26. package/lib/cjs/internal/shared/utils/ApplicationChecker.js.map +7 -0
  27. package/lib/cjs/internal/shared/utils/ApplicationChecker.test.js +2 -0
  28. package/lib/cjs/internal/shared/utils/ApplicationChecker.test.js.map +7 -0
  29. package/lib/cjs/package.json +3 -3
  30. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js +1 -1
  31. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js.map +3 -3
  32. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js +1 -1
  33. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js.map +3 -3
  34. package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js +1 -1
  35. package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js.map +3 -3
  36. package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js +1 -1
  37. package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js.map +3 -3
  38. package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.js +1 -1
  39. package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.js.map +3 -3
  40. package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.test.js +1 -1
  41. package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.test.js.map +2 -2
  42. package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.js +1 -1
  43. package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.js.map +3 -3
  44. package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.test.js +1 -1
  45. package/lib/esm/internal/app-binder/task/BuildTransactionContextTask.test.js.map +3 -3
  46. package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.js +1 -1
  47. package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.js.map +3 -3
  48. package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.test.js +1 -1
  49. package/lib/esm/internal/app-binder/task/GetWeb3CheckTask.test.js.map +3 -3
  50. package/lib/esm/internal/shared/utils/ApplicationChecker.js +2 -0
  51. package/lib/esm/internal/shared/utils/ApplicationChecker.js.map +7 -0
  52. package/lib/esm/internal/shared/utils/ApplicationChecker.test.js +2 -0
  53. package/lib/esm/internal/shared/utils/ApplicationChecker.test.js.map +7 -0
  54. package/lib/esm/package.json +3 -3
  55. package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts +3 -2
  56. package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts.map +1 -1
  57. package/lib/types/api/app-binder/SignTypedDataDeviceActionTypes.d.ts +3 -1
  58. package/lib/types/api/app-binder/SignTypedDataDeviceActionTypes.d.ts.map +1 -1
  59. package/lib/types/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.d.ts +6 -13
  60. package/lib/types/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.d.ts.map +1 -1
  61. package/lib/types/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.d.ts +5 -0
  62. package/lib/types/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.d.ts.map +1 -1
  63. package/lib/types/internal/app-binder/task/BuildEIP712ContextTask.d.ts +8 -7
  64. package/lib/types/internal/app-binder/task/BuildEIP712ContextTask.d.ts.map +1 -1
  65. package/lib/types/internal/app-binder/task/BuildTransactionContextTask.d.ts +7 -3
  66. package/lib/types/internal/app-binder/task/BuildTransactionContextTask.d.ts.map +1 -1
  67. package/lib/types/internal/app-binder/task/GetWeb3CheckTask.d.ts +0 -1
  68. package/lib/types/internal/app-binder/task/GetWeb3CheckTask.d.ts.map +1 -1
  69. package/lib/types/internal/shared/utils/ApplicationChecker.d.ts +12 -0
  70. package/lib/types/internal/shared/utils/ApplicationChecker.d.ts.map +1 -0
  71. package/lib/types/internal/shared/utils/ApplicationChecker.test.d.ts +2 -0
  72. package/lib/types/internal/shared/utils/ApplicationChecker.test.d.ts.map +1 -0
  73. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  74. package/package.json +6 -6
@@ -1,2 +1,2 @@
1
- "use strict";var a=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var s=(n,e,o,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of p(e))!c.call(n,r)&&r!==o&&a(n,r,{get:()=>e[r],enumerable:!(t=i(e,r))||t.enumerable});return n};var l=n=>s(a({},"__esModule",{value:!0}),n);var y={};module.exports=l(y);
1
+ "use strict";var o=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var s=(n,e,a,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of p(e))!c.call(n,r)&&r!==a&&o(n,r,{get:()=>e[r],enumerable:!(t=i(e,r))||t.enumerable});return n};var y=n=>s(o({},"__esModule",{value:!0}),n);var l={};module.exports=y(l);
2
2
  //# sourceMappingURL=SignTransactionDeviceActionTypes.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/api/app-binder/SignTransactionDeviceActionTypes.ts"],
4
- "sourcesContent": ["import {\n type ClearSignContextSuccess,\n type ClearSignContextType,\n type ContextModule,\n} from \"@ledgerhq/context-module\";\nimport {\n type CommandErrorResult,\n type DeviceActionState,\n type ExecuteDeviceActionReturnType,\n type OpenAppDAError,\n type OpenAppDARequiredInteraction,\n type UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type Signature } from \"@api/model/Signature\";\nimport { type TransactionOptions } from \"@api/model/TransactionOptions\";\nimport { type TransactionType } from \"@api/model/TransactionType\";\nimport { type EthErrorCodes } from \"@internal/app-binder/command/utils/ethAppErrors\";\nimport { type GenericContext } from \"@internal/app-binder/task/ProvideTransactionGenericContextTask\";\nimport { type TransactionMapperService } from \"@internal/transaction/service/mapper/TransactionMapperService\";\nimport { type TransactionParserService } from \"@internal/transaction/service/parser/TransactionParserService\";\n\nexport type SignTransactionDAOutput = Signature;\n\nexport type SignTransactionDAInput = {\n readonly derivationPath: string;\n readonly transaction: Uint8Array;\n readonly mapper: TransactionMapperService;\n readonly parser: TransactionParserService;\n readonly contextModule: ContextModule;\n readonly options: TransactionOptions;\n};\n\nexport type SignTransactionDAError =\n | OpenAppDAError\n | CommandErrorResult<EthErrorCodes>[\"error\"];\n\ntype SignTransactionDARequiredInteraction =\n | OpenAppDARequiredInteraction\n | UserInteractionRequired.SignTransaction;\n\nexport type SignTransactionDAIntermediateValue = {\n requiredUserInteraction: SignTransactionDARequiredInteraction;\n};\n\nexport type SignTransactionDAState = DeviceActionState<\n SignTransactionDAOutput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue\n>;\n\nexport type SignTransactionDAInternalState = {\n readonly error: SignTransactionDAError | null;\n readonly challenge: string | null;\n readonly clearSignContexts: ClearSignContextSuccess[] | GenericContext | null;\n readonly web3Check: ClearSignContextSuccess<ClearSignContextType.WEB3_CHECK> | null;\n readonly serializedTransaction: Uint8Array | null;\n readonly chainId: number | null;\n readonly transactionType: TransactionType | null;\n readonly isLegacy: boolean;\n readonly signature: Signature | null;\n};\n\nexport type SignTransactionDAReturnType = ExecuteDeviceActionReturnType<\n SignTransactionDAOutput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue\n>;\n"],
4
+ "sourcesContent": ["import {\n type ClearSignContextSuccess,\n type ClearSignContextType,\n type ContextModule,\n} from \"@ledgerhq/context-module\";\nimport {\n type CommandErrorResult,\n type DeviceActionState,\n type ExecuteDeviceActionReturnType,\n type OpenAppDAError,\n type OpenAppDARequiredInteraction,\n type UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type Signature } from \"@api/model/Signature\";\nimport { type TransactionOptions } from \"@api/model/TransactionOptions\";\nimport { type TransactionType } from \"@api/model/TransactionType\";\nimport { type EthErrorCodes } from \"@internal/app-binder/command/utils/ethAppErrors\";\nimport { type GenericContext } from \"@internal/app-binder/task/ProvideTransactionGenericContextTask\";\nimport { type TransactionMapperService } from \"@internal/transaction/service/mapper/TransactionMapperService\";\nimport { type TransactionParserService } from \"@internal/transaction/service/parser/TransactionParserService\";\n\nexport type SignTransactionDAOutput = Signature;\n\nexport type SignTransactionDAInput = {\n readonly derivationPath: string;\n readonly transaction: Uint8Array;\n readonly mapper: TransactionMapperService;\n readonly parser: TransactionParserService;\n readonly contextModule: ContextModule;\n readonly options: TransactionOptions;\n};\n\nexport type SignTransactionDAError =\n | OpenAppDAError\n | CommandErrorResult<EthErrorCodes>[\"error\"];\n\ntype SignTransactionDARequiredInteraction =\n | OpenAppDARequiredInteraction\n | UserInteractionRequired.Web3ChecksOptIn\n | UserInteractionRequired.SignTransaction;\n\nexport type SignTransactionDAIntermediateValue = {\n requiredUserInteraction: SignTransactionDARequiredInteraction;\n};\n\nexport type SignTransactionDAState = DeviceActionState<\n SignTransactionDAOutput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue\n>;\n\nexport type SignTransactionDAInternalState = {\n readonly error: SignTransactionDAError | null;\n readonly clearSignContexts: ClearSignContextSuccess[] | GenericContext | null;\n readonly web3ChecksOptIn: boolean;\n readonly web3ChecksEnabled: boolean;\n readonly web3Check: ClearSignContextSuccess<ClearSignContextType.WEB3_CHECK> | null;\n readonly serializedTransaction: Uint8Array | null;\n readonly chainId: number | null;\n readonly transactionType: TransactionType | null;\n readonly isLegacy: boolean;\n readonly signature: Signature | null;\n};\n\nexport type SignTransactionDAReturnType = ExecuteDeviceActionReturnType<\n SignTransactionDAOutput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue\n>;\n"],
5
5
  "mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
6
6
  "names": ["SignTransactionDeviceActionTypes_exports", "__toCommonJS"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var p=Object.defineProperty;var o=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var y=(t,e,n,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of i(e))!d.call(t,r)&&r!==n&&p(t,r,{get:()=>e[r],enumerable:!(a=o(e,r))||a.enumerable});return t};var D=t=>y(p({},"__esModule",{value:!0}),t);var u={};module.exports=D(u);
1
+ "use strict";var n=Object.defineProperty;var o=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var y=(t,e,p,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of i(e))!d.call(t,r)&&r!==p&&n(t,r,{get:()=>e[r],enumerable:!(a=o(e,r))||a.enumerable});return t};var D=t=>y(n({},"__esModule",{value:!0}),t);var u={};module.exports=D(u);
2
2
  //# sourceMappingURL=SignTypedDataDeviceActionTypes.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/api/app-binder/SignTypedDataDeviceActionTypes.ts"],
4
- "sourcesContent": ["import { type ContextModule } from \"@ledgerhq/context-module\";\nimport {\n type CommandErrorResult,\n type DeviceActionState,\n type ExecuteDeviceActionReturnType,\n type OpenAppDAError,\n type OpenAppDARequiredInteraction,\n type UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type Signature } from \"@api/model/Signature\";\nimport { type TypedData } from \"@api/model/TypedData\";\nimport { type EthErrorCodes } from \"@internal/app-binder/command/utils/ethAppErrors\";\nimport type { ProvideEIP712ContextTaskArgs } from \"@internal/app-binder/task/ProvideEIP712ContextTask\";\nimport { type TypedDataParserService } from \"@internal/typed-data/service/TypedDataParserService\";\n\nexport type SignTypedDataDAOutput = Signature;\n\nexport type SignTypedDataDAInput = {\n readonly derivationPath: string;\n readonly data: TypedData;\n readonly parser: TypedDataParserService;\n readonly contextModule: ContextModule;\n};\n\nexport type SignTypedDataDAError =\n | OpenAppDAError\n | CommandErrorResult<EthErrorCodes>[\"error\"];\n\ntype SignTypedDataDARequiredInteraction =\n | OpenAppDARequiredInteraction\n | UserInteractionRequired.SignTypedData;\n\nexport type SignTypedDataDAIntermediateValue = {\n requiredUserInteraction: SignTypedDataDARequiredInteraction;\n};\n\nexport type SignTypedDataDAState = DeviceActionState<\n SignTypedDataDAOutput,\n SignTypedDataDAError,\n SignTypedDataDAIntermediateValue\n>;\n\nexport type SignTypedDataDAInternalState = {\n readonly error: SignTypedDataDAError | null;\n readonly typedDataContext: ProvideEIP712ContextTaskArgs | null;\n readonly signature: Signature | null;\n};\n\nexport type SignTypedDataDAReturnType = ExecuteDeviceActionReturnType<\n SignTypedDataDAOutput,\n SignTypedDataDAError,\n SignTypedDataDAIntermediateValue\n>;\n"],
4
+ "sourcesContent": ["import { type ContextModule } from \"@ledgerhq/context-module\";\nimport {\n type CommandErrorResult,\n type DeviceActionState,\n type ExecuteDeviceActionReturnType,\n type OpenAppDAError,\n type OpenAppDARequiredInteraction,\n type UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type Signature } from \"@api/model/Signature\";\nimport { type TypedData } from \"@api/model/TypedData\";\nimport { type EthErrorCodes } from \"@internal/app-binder/command/utils/ethAppErrors\";\nimport type { ProvideEIP712ContextTaskArgs } from \"@internal/app-binder/task/ProvideEIP712ContextTask\";\nimport { type TypedDataParserService } from \"@internal/typed-data/service/TypedDataParserService\";\n\nexport type SignTypedDataDAOutput = Signature;\n\nexport type SignTypedDataDAInput = {\n readonly derivationPath: string;\n readonly data: TypedData;\n readonly parser: TypedDataParserService;\n readonly contextModule: ContextModule;\n};\n\nexport type SignTypedDataDAError =\n | OpenAppDAError\n | CommandErrorResult<EthErrorCodes>[\"error\"];\n\ntype SignTypedDataDARequiredInteraction =\n | OpenAppDARequiredInteraction\n | UserInteractionRequired.Web3ChecksOptIn\n | UserInteractionRequired.SignTypedData;\n\nexport type SignTypedDataDAIntermediateValue = {\n requiredUserInteraction: SignTypedDataDARequiredInteraction;\n};\n\nexport type SignTypedDataDAState = DeviceActionState<\n SignTypedDataDAOutput,\n SignTypedDataDAError,\n SignTypedDataDAIntermediateValue\n>;\n\nexport type SignTypedDataDAInternalState = {\n readonly error: SignTypedDataDAError | null;\n web3ChecksOptIn: boolean;\n web3ChecksEnabled: boolean;\n readonly typedDataContext: ProvideEIP712ContextTaskArgs | null;\n readonly signature: Signature | null;\n};\n\nexport type SignTypedDataDAReturnType = ExecuteDeviceActionReturnType<\n SignTypedDataDAOutput,\n SignTypedDataDAError,\n SignTypedDataDAIntermediateValue\n>;\n"],
5
5
  "mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
6
6
  "names": ["SignTypedDataDeviceActionTypes_exports", "__toCommonJS"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var p=Object.defineProperty;var k=Object.getOwnPropertyDescriptor;var v=Object.getOwnPropertyNames;var A=Object.prototype.hasOwnProperty;var b=(i,n)=>{for(var s in n)p(i,s,{get:n[s],enumerable:!0})},D=(i,n,s,c)=>{if(n&&typeof n=="object"||typeof n=="function")for(let o of v(n))!A.call(i,o)&&o!==s&&p(i,o,{get:()=>n[o],enumerable:!(c=k(n,o))||c.enumerable});return i};var I=i=>D(p({},"__esModule",{value:!0}),i);var P={};b(P,{SignTransactionDeviceAction:()=>_});module.exports=I(P);var a=require("@ledgerhq/device-management-kit"),l=require("purify-ts"),t=require("xstate"),S=require("../../../app-binder/command/GetChallengeCommand"),h=require("../../../app-binder/constant/plugins"),T=require("../../../app-binder/task/BuildTransactionContextTask"),m=require("../../../app-binder/task/GetWeb3CheckTask"),y=require("../../../app-binder/task/ProvideTransactionContextTask"),x=require("../../../app-binder/task/ProvideTransactionGenericContextTask"),E=require("../../../app-binder/task/SendSignTransactionTask");class _ extends a.XStateDeviceAction{makeStateMachine(n){const{getChallenge:s,getWeb3Check:c,buildContext:o,provideContext:u,provideGenericContext:C,signTransaction:g}=this.extractDependencies(n);return(0,t.setup)({types:{input:{},context:{},output:{}},actors:{openAppStateMachine:new a.OpenAppDeviceAction({input:{appName:"Ethereum"}}).makeStateMachine(n),getChallenge:(0,t.fromPromise)(s),getWeb3Check:(0,t.fromPromise)(c),buildContext:(0,t.fromPromise)(o),provideContext:(0,t.fromPromise)(u),provideGenericContext:(0,t.fromPromise)(C),signTransaction:(0,t.fromPromise)(g)},guards:{noInternalError:({context:e})=>e._internalState.error===null,isGenericContext:({context:e})=>e._internalState.clearSignContexts!==null&&typeof e._internalState.clearSignContexts.transactionInfo=="string"},actions:{assignErrorFromEvent:(0,t.assign)({_internalState:e=>({...e.context._internalState,error:e.event.error})})}}).createMachine({id:"SignTransactionDeviceAction",initial:"OpenAppDeviceAction",context:({input:e})=>({input:e,intermediateValue:{requiredUserInteraction:a.UserInteractionRequired.None},_internalState:{error:null,clearSignContexts:null,serializedTransaction:null,chainId:null,web3Check:null,transactionType:null,challenge:null,isLegacy:!0,signature:null}}),states:{OpenAppDeviceAction:{exit:(0,t.assign)({intermediateValue:{requiredUserInteraction:a.UserInteractionRequired.None}}),invoke:{id:"openAppStateMachine",input:{appName:"Ethereum",compatibleAppNames:h.ETHEREUM_PLUGINS},src:"openAppStateMachine",onSnapshot:{actions:(0,t.assign)({intermediateValue:e=>e.event.snapshot.context.intermediateValue})},onDone:{actions:(0,t.assign)({_internalState:e=>e.event.output.caseOf({Right:()=>e.context._internalState,Left:r=>({...e.context._internalState,error:r})})}),target:"CheckOpenAppDeviceActionResult"}}},CheckOpenAppDeviceActionResult:{always:[{target:"GetChallenge",guard:"noInternalError"},"Error"]},GetChallenge:{invoke:{id:"getChallenge",src:"getChallenge",onDone:{target:"GetChallengeResultCheck",actions:[(0,t.assign)({_internalState:({event:e,context:r})=>(0,a.isSuccessCommandResult)(e.output)?{...r._internalState,challenge:e.output.data.challenge}:typeof e.output.error.originalError=="object"&&e.output.error.originalError!==null&&"errorCode"in e.output.error.originalError&&e.output.error.originalError.errorCode==="6d00"?r._internalState:{...r._internalState,error:e.output.error}})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},GetChallengeResultCheck:{always:[{target:"GetWeb3Check",guard:"noInternalError"},"Error"]},GetWeb3Check:{invoke:{id:"getWeb3Check",src:"getWeb3Check",input:({context:e})=>({contextModule:e.input.contextModule,mapper:e.input.mapper,transaction:e.input.transaction,options:e.input.options,derivationPath:e.input.derivationPath}),onDone:{target:"BuildContext",actions:[(0,t.assign)({_internalState:({event:e,context:r})=>({...r._internalState,web3Check:e.output.web3Check})})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},BuildContext:{invoke:{id:"buildContext",src:"buildContext",input:({context:e})=>({contextModule:e.input.contextModule,mapper:e.input.mapper,transaction:e.input.transaction,options:e.input.options,challenge:e._internalState.challenge}),onDone:{target:"BuildContextResultCheck",actions:[(0,t.assign)({_internalState:({event:e,context:r})=>({...r._internalState,clearSignContexts:e.output.clearSignContexts,serializedTransaction:e.output.serializedTransaction,chainId:e.output.chainId,transactionType:e.output.transactionType})})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},BuildContextResultCheck:{always:[{target:"ProvideGenericContext",guard:"isGenericContext"},{target:"ProvideContext"}]},ProvideContext:{invoke:{id:"provideContext",src:"provideContext",input:({context:e})=>({clearSignContexts:e._internalState.clearSignContexts,web3Check:e._internalState.web3Check}),onDone:{target:"SignTransaction"},onError:{target:"Error",actions:"assignErrorFromEvent"}}},ProvideGenericContext:{invoke:{id:"provideGenericContext",src:"provideGenericContext",input:({context:e})=>({contextModule:e.input.contextModule,transactionParser:e.input.parser,chainId:e._internalState.chainId,derivationPath:e.input.derivationPath,serializedTransaction:e._internalState.serializedTransaction,context:e._internalState.clearSignContexts,web3Check:e._internalState.web3Check}),onDone:{actions:(0,t.assign)({_internalState:({event:e,context:r})=>{const{isLegacy:M,...d}=r._internalState;return e.output.caseOf({Just:()=>({...d,isLegacy:!1}),Nothing:()=>({...d,isLegacy:!1})})}}),target:"SignTransaction"},onError:{target:"Error",actions:"assignErrorFromEvent"}}},SignTransaction:{entry:(0,t.assign)({intermediateValue:{requiredUserInteraction:a.UserInteractionRequired.SignTransaction}}),exit:(0,t.assign)({intermediateValue:{requiredUserInteraction:a.UserInteractionRequired.None}}),invoke:{id:"signTransaction",src:"signTransaction",input:({context:e})=>({derivationPath:e.input.derivationPath,serializedTransaction:e._internalState.serializedTransaction,chainId:e._internalState.chainId,transactionType:e._internalState.transactionType,isLegacy:e._internalState.isLegacy}),onDone:{target:"SignTransactionResultCheck",actions:[(0,t.assign)({_internalState:({event:e,context:r})=>(0,a.isSuccessCommandResult)(e.output)?{...r._internalState,signature:e.output.data}:{...r._internalState,error:e.output.error}})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},SignTransactionResultCheck:{always:[{guard:"noInternalError",target:"Success"},{target:"Error"}]},Success:{type:"final"},Error:{type:"final"}},output:({context:e})=>e._internalState.signature?(0,l.Right)(e._internalState.signature):(0,l.Left)(e._internalState.error||new a.UnknownDAError("No error in final state"))})}extractDependencies(n){return{getChallenge:async()=>n.sendCommand(new S.GetChallengeCommand),buildContext:async e=>new T.BuildTransactionContextTask(n,e.input).run(),getWeb3Check:async e=>new m.GetWeb3CheckTask(n,e.input).run(),provideContext:async e=>new y.ProvideTransactionContextTask(n,{clearSignContexts:e.input.clearSignContexts,web3Check:e.input.web3Check}).run(),provideGenericContext:async e=>new x.ProvideTransactionGenericContextTask(n,{contextModule:e.input.contextModule,transactionParser:e.input.transactionParser,chainId:e.input.chainId,derivationPath:e.input.derivationPath,serializedTransaction:e.input.serializedTransaction,context:e.input.context,web3Check:e.input.web3Check}).run(),signTransaction:async e=>new E.SendSignTransactionTask(n,e.input).run()}}}0&&(module.exports={SignTransactionDeviceAction});
1
+ "use strict";var u=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var v=Object.getOwnPropertyNames;var I=Object.prototype.hasOwnProperty;var A=(i,n)=>{for(var s in n)u(i,s,{get:n[s],enumerable:!0})},f=(i,n,s,c)=>{if(n&&typeof n=="object"||typeof n=="function")for(let o of v(n))!I.call(i,o)&&o!==s&&u(i,o,{get:()=>n[o],enumerable:!(c=b(n,o))||c.enumerable});return i};var w=i=>f(u({},"__esModule",{value:!0}),i);var _={};A(_,{SignTransactionDeviceAction:()=>D});module.exports=w(_);var r=require("@ledgerhq/device-management-kit"),p=require("purify-ts"),t=require("xstate"),S=require("../../../app-binder/command/GetAppConfigurationCommand"),m=require("../../../app-binder/command/Web3CheckOptInCommand"),h=require("../../../app-binder/constant/plugins"),T=require("../../../app-binder/task/BuildTransactionContextTask"),y=require("../../../app-binder/task/ProvideTransactionContextTask"),x=require("../../../app-binder/task/ProvideTransactionGenericContextTask"),E=require("../../../app-binder/task/SendSignTransactionTask"),k=require("../../../shared/utils/ApplicationChecker");class D extends r.XStateDeviceAction{makeStateMachine(n){const{getAppConfig:s,web3CheckOptIn:c,buildContext:o,provideContext:l,provideGenericContext:d,signTransaction:C}=this.extractDependencies(n);return(0,t.setup)({types:{input:{},context:{},output:{}},actors:{openAppStateMachine:new r.OpenAppDeviceAction({input:{appName:"Ethereum"}}).makeStateMachine(n),getAppConfig:(0,t.fromPromise)(s),web3CheckOptIn:(0,t.fromPromise)(c),buildContext:(0,t.fromPromise)(o),provideContext:(0,t.fromPromise)(l),provideGenericContext:(0,t.fromPromise)(d),signTransaction:(0,t.fromPromise)(C)},guards:{noInternalError:({context:e})=>e._internalState.error===null,isGenericContext:({context:e})=>e._internalState.clearSignContexts!==null&&typeof e._internalState.clearSignContexts.transactionInfo=="string",isWeb3ChecksSupported:()=>new k.ApplicationChecker(n.getDeviceSessionState()).withMinVersionExclusive("1.15.0").excludeDeviceModel(r.DeviceModelId.NANO_S).check(),shouldOptIn:({context:e})=>!e._internalState.web3ChecksEnabled&&!e._internalState.web3ChecksOptIn},actions:{assignErrorFromEvent:(0,t.assign)({_internalState:e=>({...e.context._internalState,error:e.event.error})})}}).createMachine({id:"SignTransactionDeviceAction",initial:"OpenAppDeviceAction",context:({input:e})=>({input:e,intermediateValue:{requiredUserInteraction:r.UserInteractionRequired.None},_internalState:{error:null,clearSignContexts:null,serializedTransaction:null,chainId:null,web3ChecksOptIn:!1,web3ChecksEnabled:!1,web3Check:null,transactionType:null,isLegacy:!0,signature:null}}),states:{OpenAppDeviceAction:{exit:(0,t.assign)({intermediateValue:{requiredUserInteraction:r.UserInteractionRequired.None}}),invoke:{id:"openAppStateMachine",input:{appName:"Ethereum",compatibleAppNames:h.ETHEREUM_PLUGINS},src:"openAppStateMachine",onSnapshot:{actions:(0,t.assign)({intermediateValue:e=>e.event.snapshot.context.intermediateValue})},onDone:{actions:(0,t.assign)({_internalState:e=>e.event.output.caseOf({Right:()=>e.context._internalState,Left:a=>({...e.context._internalState,error:a})})}),target:"CheckOpenAppDeviceActionResult"}}},CheckOpenAppDeviceActionResult:{always:[{target:"GetAppConfig",guard:(0,t.and)(["noInternalError","isWeb3ChecksSupported"])},{target:"BuildContext",guard:"noInternalError"},"Error"]},GetAppConfig:{invoke:{id:"getAppConfig",src:"getAppConfig",onDone:{target:"GetAppConfigResultCheck",actions:[(0,t.assign)({_internalState:({event:e,context:a})=>(0,r.isSuccessCommandResult)(e.output)?{...a._internalState,web3ChecksOptIn:e.output.data.web3ChecksOptIn,web3ChecksEnabled:e.output.data.web3ChecksEnabled}:a._internalState})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},GetAppConfigResultCheck:{always:[{target:"Web3ChecksOptIn",guard:"shouldOptIn"},{target:"BuildContext"}]},Web3ChecksOptIn:{entry:(0,t.assign)({intermediateValue:{requiredUserInteraction:r.UserInteractionRequired.Web3ChecksOptIn}}),exit:(0,t.assign)({intermediateValue:{requiredUserInteraction:r.UserInteractionRequired.None}}),invoke:{id:"web3CheckOptIn",src:"web3CheckOptIn",onDone:{target:"BuildContext",actions:[(0,t.assign)({_internalState:({event:e,context:a})=>(0,r.isSuccessCommandResult)(e.output)?{...a._internalState,web3ChecksEnabled:e.output.data.enabled}:a._internalState})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},BuildContext:{invoke:{id:"buildContext",src:"buildContext",input:({context:e})=>({contextModule:e.input.contextModule,mapper:e.input.mapper,transaction:e.input.transaction,options:e.input.options,web3ChecksEnabled:e._internalState.web3ChecksEnabled,derivationPath:e.input.derivationPath}),onDone:{target:"BuildContextResultCheck",actions:[(0,t.assign)({_internalState:({event:e,context:a})=>({...a._internalState,clearSignContexts:e.output.clearSignContexts,web3Check:e.output.web3Check,serializedTransaction:e.output.serializedTransaction,chainId:e.output.chainId,transactionType:e.output.transactionType})})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},BuildContextResultCheck:{always:[{target:"ProvideGenericContext",guard:"isGenericContext"},{target:"ProvideContext"}]},ProvideContext:{invoke:{id:"provideContext",src:"provideContext",input:({context:e})=>({clearSignContexts:e._internalState.clearSignContexts,web3Check:e._internalState.web3Check}),onDone:{target:"SignTransaction"},onError:{target:"Error",actions:"assignErrorFromEvent"}}},ProvideGenericContext:{invoke:{id:"provideGenericContext",src:"provideGenericContext",input:({context:e})=>({contextModule:e.input.contextModule,transactionParser:e.input.parser,chainId:e._internalState.chainId,derivationPath:e.input.derivationPath,serializedTransaction:e._internalState.serializedTransaction,context:e._internalState.clearSignContexts,web3Check:e._internalState.web3Check}),onDone:{actions:(0,t.assign)({_internalState:({event:e,context:a})=>{const{isLegacy:P,...g}=a._internalState;return e.output.caseOf({Just:()=>({...g,isLegacy:!1}),Nothing:()=>({...g,isLegacy:!1})})}}),target:"SignTransaction"},onError:{target:"Error",actions:"assignErrorFromEvent"}}},SignTransaction:{entry:(0,t.assign)({intermediateValue:{requiredUserInteraction:r.UserInteractionRequired.SignTransaction}}),exit:(0,t.assign)({intermediateValue:{requiredUserInteraction:r.UserInteractionRequired.None}}),invoke:{id:"signTransaction",src:"signTransaction",input:({context:e})=>({derivationPath:e.input.derivationPath,serializedTransaction:e._internalState.serializedTransaction,chainId:e._internalState.chainId,transactionType:e._internalState.transactionType,isLegacy:e._internalState.isLegacy}),onDone:{target:"SignTransactionResultCheck",actions:[(0,t.assign)({_internalState:({event:e,context:a})=>(0,r.isSuccessCommandResult)(e.output)?{...a._internalState,signature:e.output.data}:{...a._internalState,error:e.output.error}})]},onError:{target:"Error",actions:"assignErrorFromEvent"}}},SignTransactionResultCheck:{always:[{guard:"noInternalError",target:"Success"},{target:"Error"}]},Success:{type:"final"},Error:{type:"final"}},output:({context:e})=>e._internalState.signature?(0,p.Right)(e._internalState.signature):(0,p.Left)(e._internalState.error||new r.UnknownDAError("No error in final state"))})}extractDependencies(n){return{getAppConfig:async()=>n.sendCommand(new S.GetAppConfiguration),web3CheckOptIn:async()=>n.sendCommand(new m.Web3CheckOptInCommand),buildContext:async e=>new T.BuildTransactionContextTask(n,e.input).run(),provideContext:async e=>new y.ProvideTransactionContextTask(n,{clearSignContexts:e.input.clearSignContexts,web3Check:e.input.web3Check}).run(),provideGenericContext:async e=>new x.ProvideTransactionGenericContextTask(n,{contextModule:e.input.contextModule,transactionParser:e.input.transactionParser,chainId:e.input.chainId,derivationPath:e.input.derivationPath,serializedTransaction:e.input.serializedTransaction,context:e.input.context,web3Check:e.input.web3Check}).run(),signTransaction:async e=>new E.SendSignTransactionTask(n,e.input).run()}}}0&&(module.exports={SignTransactionDeviceAction});
2
2
  //# sourceMappingURL=SignTransactionDeviceAction.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.ts"],
4
- "sourcesContent": ["import {\n type ClearSignContextSuccess,\n type ClearSignContextType,\n type ContextModule,\n} from \"@ledgerhq/context-module\";\nimport {\n type CommandErrorResult,\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, type Maybe, Right } from \"purify-ts\";\nimport { assign, fromPromise, setup } from \"xstate\";\n\nimport {\n type SignTransactionDAError,\n type SignTransactionDAInput,\n type SignTransactionDAIntermediateValue,\n type SignTransactionDAInternalState,\n type SignTransactionDAOutput,\n} from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport { type Signature } from \"@api/model/Signature\";\nimport { type TransactionOptions } from \"@api/model/TransactionOptions\";\nimport { type TransactionType } from \"@api/model/TransactionType\";\nimport {\n GetChallengeCommand,\n type GetChallengeCommandResponse,\n} from \"@internal/app-binder/command/GetChallengeCommand\";\nimport { type EthErrorCodes } from \"@internal/app-binder/command/utils/ethAppErrors\";\nimport { ETHEREUM_PLUGINS } from \"@internal/app-binder/constant/plugins\";\nimport {\n BuildTransactionContextTask,\n type BuildTransactionContextTaskArgs,\n type BuildTransactionTaskResult,\n} from \"@internal/app-binder/task/BuildTransactionContextTask\";\nimport {\n GetWeb3CheckTask,\n type GetWeb3CheckTaskArgs,\n type GetWeb3CheckTaskResult,\n} from \"@internal/app-binder/task/GetWeb3CheckTask\";\nimport { ProvideTransactionContextTask } from \"@internal/app-binder/task/ProvideTransactionContextTask\";\nimport {\n type GenericContext,\n ProvideTransactionGenericContextTask,\n type ProvideTransactionGenericContextTaskErrorCodes,\n} from \"@internal/app-binder/task/ProvideTransactionGenericContextTask\";\nimport { SendSignTransactionTask } from \"@internal/app-binder/task/SendSignTransactionTask\";\nimport { type TransactionMapperService } from \"@internal/transaction/service/mapper/TransactionMapperService\";\nimport { type TransactionParserService } from \"@internal/transaction/service/parser/TransactionParserService\";\n\nexport type MachineDependencies = {\n readonly getChallenge: () => Promise<\n CommandResult<GetChallengeCommandResponse, EthErrorCodes>\n >;\n readonly buildContext: (arg0: {\n input: {\n contextModule: ContextModule;\n mapper: TransactionMapperService;\n transaction: Uint8Array;\n options: TransactionOptions;\n challenge: string | null;\n };\n }) => Promise<BuildTransactionTaskResult>;\n readonly getWeb3Check: (arg0: {\n input: {\n contextModule: ContextModule;\n mapper: TransactionMapperService;\n transaction: Uint8Array;\n options: TransactionOptions;\n derivationPath: string;\n };\n }) => Promise<GetWeb3CheckTaskResult>;\n readonly provideContext: (arg0: {\n input: {\n clearSignContexts: ClearSignContextSuccess[];\n web3Check: ClearSignContextSuccess<ClearSignContextType.WEB3_CHECK> | null;\n };\n }) => Promise<Maybe<CommandErrorResult<EthErrorCodes>>>;\n readonly provideGenericContext: (arg0: {\n input: {\n contextModule: ContextModule;\n transactionParser: TransactionParserService;\n chainId: number;\n derivationPath: string;\n serializedTransaction: Uint8Array;\n context: GenericContext;\n web3Check: ClearSignContextSuccess<ClearSignContextType.WEB3_CHECK> | null;\n };\n }) => Promise<\n Maybe<CommandErrorResult<ProvideTransactionGenericContextTaskErrorCodes>>\n >;\n readonly signTransaction: (arg0: {\n input: {\n derivationPath: string;\n serializedTransaction: Uint8Array;\n chainId: number;\n transactionType: TransactionType;\n isLegacy: boolean;\n };\n }) => Promise<CommandResult<Signature, EthErrorCodes>>;\n};\n\nexport class SignTransactionDeviceAction extends XStateDeviceAction<\n SignTransactionDAOutput,\n SignTransactionDAInput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue,\n SignTransactionDAInternalState\n> {\n makeStateMachine(\n internalApi: InternalApi,\n ): DeviceActionStateMachine<\n SignTransactionDAOutput,\n SignTransactionDAInput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue,\n SignTransactionDAInternalState\n > {\n type types = StateMachineTypes<\n SignTransactionDAOutput,\n SignTransactionDAInput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue,\n SignTransactionDAInternalState\n >;\n\n const {\n getChallenge,\n getWeb3Check,\n buildContext,\n provideContext,\n provideGenericContext,\n signTransaction,\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 actors: {\n openAppStateMachine: new OpenAppDeviceAction({\n input: { appName: \"Ethereum\" },\n }).makeStateMachine(internalApi),\n getChallenge: fromPromise(getChallenge),\n getWeb3Check: fromPromise(getWeb3Check),\n buildContext: fromPromise(buildContext),\n provideContext: fromPromise(provideContext),\n provideGenericContext: fromPromise(provideGenericContext),\n signTransaction: fromPromise(signTransaction),\n },\n guards: {\n noInternalError: ({ context }) => context._internalState.error === null,\n isGenericContext: ({ context }) =>\n context._internalState.clearSignContexts !== null &&\n typeof (context._internalState.clearSignContexts as GenericContext)\n .transactionInfo === \"string\",\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 N4IgpgJg5mDOIC5QGUCWUB2AVATgQw1jwGMAXVAewwBEwA3VYsAQTMowDoB5ABzA2Y8etBk1bkqAYghUwHVBjoUA1nIp8BQ5KTykwAWRIALBWADaABgC6iUDwqxUEjLZAAPRABYAzAHYOAJwAHACMAb4ArBYWAEw+FkHeADQgAJ6IwRYcAGwRQUG52TF5EcUAvmUpaJi4BERsVCKMLA2cAMJGYMTKvPyCwvTN4uwASnAArgA2pJKWNkgg9o7Orh4IAcEcpRYhvonZAd4byWmIITtZESEhBTHeEVH33hVV6Nj4hCTOTWKtHB1dHoafo-FrOMawKYzMwheZ2BxOdirDKbba7faHY4pdIIUIcG6+bwWbKeXwxIKeTzkl4garvOpfdig4ZUDgAcTApA6eEmk34MGksnkihUchgXKMPL5GBgc1cS0RVGRCBCngC2Q4aqCewCEWyQUyJxx5x2HBiByCsV8AQsaoinhpdNqn1azL+HIlUv5YEkYBwOAoOA4PEmugAZoGALYccXc3neuULBUrBZrVXqzXBHV6g2Wo1nDaasIWXxkwkxW0xXyOt7O+rfQa-Zzszlx6UwCFQgHdWbWeUIlOgNMBTxBDiJby3MkmiK+bFnCzeEL4mLm4m5aLeB2VWm1j71pmNsHsFue+MysCd6bd5SzWH95ZI1MF0fj7yTorT6Kz+cILfLhJEgiDZslVXwLACGsan3RlGiPFlOAAIXGVBJggNoqD0NwZhkDA5AUJRVA4AAjFC0IwjAsNIRN4UfJVnwQOJPCyIJyWLHYqV1bJf3OGJl3yYlfFA0dsiOZ4dydGDXXgv5kNQ9DMLAbDfX9QNg1DUgIxwaNSPkiiqJoxYByfIdECYli2JtDiYi439PGAjhvArVdrT4skDm3V5oIZaTRGPVk5PIxTsKvCVAV7OEjLolwGPJfJMwrUkjkiNUeIsK4OEJLdLWiUI9ig+kXQbPyEI4QKFMopTSFCm870i5MTPcMz8jHNVEsJcJ7QCX88pySJSlKPw7jCAq61gmgZObAAFAMGAgMB9KqwU8OFQi5B4WbUHmxbsMMhr6NMv9RzHFK8kiLdBu405cQSTV32Ym5slAw4YlGqTiqGP4ZooOaFuCmY-QDIMQ3DKNg027b-r24yDqao74tO7UIguu4rpxbJokCA0rmJCDjk83dvKKw8Sq+iGwA5PCcEYHacKFAjRXBn6top-g-RpqG+yTGGYsO7KTvtM7kfs1HfyszLfDCbIySpdzxK8wqDzg0npvJyn2eIWmVKB9TQe0pnfvV6nNc5+qeeVfnMsFpGUe8NGF3snI8liViQlEolIIkvcfI+psT0kn32GW-CRSIxwiaVjBoei5VmL2M1SSCB4KyTykIh6wtDgKcJJbyAIRq9iPxrdZsA+JqRAbUkHNLB8PFfG6PFV5uG47HOI9mThJ7Xs39fCpJ3tRe4JzTewPlc+0vvfLjAas6HtG8HFuuo4YldiXOJQgpdProCGzMvz-VOOYuPR+nkv-anyPZ-CmEzZjhj7LVFfQMJEIN5uHvrvyTxHPJEtgIKKUXIFQdwYAoPNeACwy6R3PrDfazc1gAFp7YIGQSvaIGDMEYNnKfGBk0Ty9E0AMFWjV4GxxiGLPUCc9SlGCKBSsuDi74NZDeQhIJmEzwmNMB8TdlT6n8HxEIeoP5kichQ66JoYgrzytjDBk5qyF3rr5CeJ4PRtm9DwxeaYbhjkHtla0dtRJzh3knfEs53wbHztaHwjDlF+1ZGoyU54OxcLCt0TRjU0zgW8IECCrF872Q2PaNKq4ci7yeuSPINxqSKLGnY-ySEyIVSoh42Gaw+JHHxIcaIGxOIlnzCqb8mV9QZK3McJOtjfYJLKkk2m193Hc3vodc0r47i7xssBEIS40o+EcouZGRQ3ZOSepUkmKjWTfV+rTVJCDEBLicpqAoeYUqLm6tdVyv9JHaiOPnUZ497GcEmSzI2HNKrYRmRbCCUjSzmjfsjCshw0pu3HK5aWfdbSeBGbE96YyDkcGgeNC5DE-DMRXl080fdKShDWTiCkAR8QHDCLsG05JyjfLHhNEhrIAWtHqcoIFh0qSmNyPkEcHc9Riz4o5UCDx3ZbiXBEPZmLxmcGQOMYgTBYCQNorwh+Ql4VUgSD4J6uRPAhEpRqWhYRjoXCCEy2BnAACiqkcAEpbvyzUKdhVPXtOK66oExwY3VEI1Ffhd4gLKEAA */\n id: \"SignTransactionDeviceAction\",\n initial: \"OpenAppDeviceAction\",\n context: ({ input }) => {\n return {\n input,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n _internalState: {\n error: null,\n clearSignContexts: null,\n serializedTransaction: null,\n chainId: null,\n web3Check: null,\n transactionType: null,\n challenge: null,\n isLegacy: true,\n signature: 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: {\n appName: \"Ethereum\",\n compatibleAppNames: ETHEREUM_PLUGINS,\n },\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<SignTransactionDAInternalState>({\n Right: () => _.context._internalState,\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n });\n },\n }),\n target: \"CheckOpenAppDeviceActionResult\",\n },\n },\n },\n CheckOpenAppDeviceActionResult: {\n always: [\n {\n target: \"GetChallenge\",\n guard: \"noInternalError\",\n },\n \"Error\",\n ],\n },\n GetChallenge: {\n invoke: {\n id: \"getChallenge\",\n src: \"getChallenge\",\n onDone: {\n target: \"GetChallengeResultCheck\",\n actions: [\n assign({\n _internalState: ({ event, context }) => {\n if (isSuccessCommandResult(event.output)) {\n return {\n ...context._internalState,\n challenge: event.output.data.challenge,\n };\n }\n\n // if the command is not supported, we can skip the error\n if (\n typeof event.output.error.originalError === \"object\" &&\n event.output.error.originalError !== null &&\n \"errorCode\" in event.output.error.originalError &&\n event.output.error.originalError.errorCode === \"6d00\"\n ) {\n return context._internalState;\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 GetChallengeResultCheck: {\n always: [\n {\n target: \"GetWeb3Check\",\n guard: \"noInternalError\",\n },\n \"Error\",\n ],\n },\n GetWeb3Check: {\n invoke: {\n id: \"getWeb3Check\",\n src: \"getWeb3Check\",\n input: ({ context }) => ({\n contextModule: context.input.contextModule,\n mapper: context.input.mapper,\n transaction: context.input.transaction,\n options: context.input.options,\n derivationPath: context.input.derivationPath,\n }),\n onDone: {\n target: \"BuildContext\",\n actions: [\n assign({\n _internalState: ({ event, context }) => {\n return {\n ...context._internalState,\n web3Check: event.output.web3Check,\n };\n },\n }),\n ],\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n BuildContext: {\n invoke: {\n id: \"buildContext\",\n src: \"buildContext\",\n input: ({ context }) => ({\n contextModule: context.input.contextModule,\n mapper: context.input.mapper,\n transaction: context.input.transaction,\n options: context.input.options,\n challenge: context._internalState.challenge,\n }),\n onDone: {\n target: \"BuildContextResultCheck\",\n actions: [\n assign({\n _internalState: ({ event, context }) => ({\n ...context._internalState,\n clearSignContexts: event.output.clearSignContexts!,\n serializedTransaction: event.output.serializedTransaction,\n chainId: event.output.chainId,\n transactionType: event.output.transactionType,\n }),\n }),\n ],\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n BuildContextResultCheck: {\n always: [\n {\n target: \"ProvideGenericContext\",\n guard: \"isGenericContext\",\n },\n {\n target: \"ProvideContext\",\n },\n ],\n },\n ProvideContext: {\n invoke: {\n id: \"provideContext\",\n src: \"provideContext\",\n input: ({ context }) => ({\n clearSignContexts: context._internalState\n .clearSignContexts as ClearSignContextSuccess[],\n web3Check: context._internalState.web3Check,\n }),\n onDone: {\n target: \"SignTransaction\",\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n ProvideGenericContext: {\n invoke: {\n id: \"provideGenericContext\",\n src: \"provideGenericContext\",\n input: ({ context }) => ({\n contextModule: context.input.contextModule,\n transactionParser: context.input.parser,\n chainId: context._internalState.chainId!,\n derivationPath: context.input.derivationPath,\n serializedTransaction:\n context._internalState.serializedTransaction!,\n context: context._internalState\n .clearSignContexts as GenericContext,\n web3Check: context._internalState.web3Check,\n }),\n onDone: {\n actions: assign({\n _internalState: ({ event, context }) => {\n const { isLegacy: _, ...rest } = context._internalState;\n return event.output.caseOf({\n Just: () => ({\n ...rest,\n isLegacy: false,\n }),\n Nothing: () => ({\n ...rest,\n isLegacy: false,\n }),\n });\n },\n }),\n // NOTE: don't check errors to fallback to blind signing\n target: \"SignTransaction\",\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n SignTransaction: {\n entry: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.SignTransaction,\n },\n }),\n exit: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n }),\n invoke: {\n id: \"signTransaction\",\n src: \"signTransaction\",\n input: ({ context }) => ({\n derivationPath: context.input.derivationPath,\n serializedTransaction:\n context._internalState.serializedTransaction!,\n chainId: context._internalState.chainId!,\n transactionType: context._internalState.transactionType!,\n isLegacy: context._internalState.isLegacy,\n }),\n onDone: {\n target: \"SignTransactionResultCheck\",\n actions: [\n assign({\n _internalState: ({ event, context }) => {\n if (isSuccessCommandResult(event.output)) {\n return {\n ...context._internalState,\n signature: 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 SignTransactionResultCheck: {\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.signature\n ? Right(context._internalState.signature)\n : Left(\n context._internalState.error ||\n new UnknownDAError(\"No error in final state\"),\n ),\n });\n }\n\n extractDependencies(internalApi: InternalApi): MachineDependencies {\n const getChallenge = async () =>\n internalApi.sendCommand(new GetChallengeCommand());\n\n const getWeb3Check = async (arg0: { input: GetWeb3CheckTaskArgs }) =>\n new GetWeb3CheckTask(internalApi, arg0.input).run();\n\n const buildContext = async (arg0: {\n input: BuildTransactionContextTaskArgs;\n }) => new BuildTransactionContextTask(internalApi, arg0.input).run();\n\n const provideContext = async (arg0: {\n input: {\n clearSignContexts: ClearSignContextSuccess[];\n web3Check: ClearSignContextSuccess<ClearSignContextType.WEB3_CHECK> | null;\n };\n }) =>\n new ProvideTransactionContextTask(internalApi, {\n clearSignContexts: arg0.input.clearSignContexts,\n web3Check: arg0.input.web3Check,\n }).run();\n\n const provideGenericContext = async (arg0: {\n input: {\n contextModule: ContextModule;\n transactionParser: TransactionParserService;\n chainId: number;\n derivationPath: string;\n serializedTransaction: Uint8Array;\n context: GenericContext;\n web3Check: ClearSignContextSuccess<ClearSignContextType.WEB3_CHECK> | null;\n };\n }) =>\n new ProvideTransactionGenericContextTask(internalApi, {\n contextModule: arg0.input.contextModule,\n transactionParser: arg0.input.transactionParser,\n chainId: arg0.input.chainId,\n derivationPath: arg0.input.derivationPath,\n serializedTransaction: arg0.input.serializedTransaction,\n context: arg0.input.context,\n web3Check: arg0.input.web3Check,\n }).run();\n\n const signTransaction = async (arg0: {\n input: {\n derivationPath: string;\n serializedTransaction: Uint8Array;\n chainId: number;\n transactionType: TransactionType;\n isLegacy: boolean;\n };\n }) => new SendSignTransactionTask(internalApi, arg0.input).run();\n\n return {\n getChallenge,\n buildContext,\n getWeb3Check,\n provideContext,\n provideGenericContext,\n signTransaction,\n };\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["SignTransactionDeviceAction_exports", "__export", "SignTransactionDeviceAction", "__toCommonJS", "import_device_management_kit", "import_purify_ts", "import_xstate", "import_GetChallengeCommand", "import_plugins", "import_BuildTransactionContextTask", "import_GetWeb3CheckTask", "import_ProvideTransactionContextTask", "import_ProvideTransactionGenericContextTask", "import_SendSignTransactionTask", "internalApi", "getChallenge", "getWeb3Check", "buildContext", "provideContext", "provideGenericContext", "signTransaction", "context", "_", "input", "error", "event", "rest", "arg0"]
4
+ "sourcesContent": ["import {\n type ClearSignContextSuccess,\n type ClearSignContextType,\n type ContextModule,\n} from \"@ledgerhq/context-module\";\nimport {\n type CommandErrorResult,\n type CommandResult,\n type DeviceActionStateMachine,\n DeviceModelId,\n type InternalApi,\n isSuccessCommandResult,\n OpenAppDeviceAction,\n type StateMachineTypes,\n UnknownDAError,\n UserInteractionRequired,\n XStateDeviceAction,\n} from \"@ledgerhq/device-management-kit\";\nimport { Left, type Maybe, Right } from \"purify-ts\";\nimport { and, assign, fromPromise, setup } from \"xstate\";\n\nimport { type GetConfigCommandResponse } from \"@api/app-binder/GetConfigCommandTypes\";\nimport {\n type SignTransactionDAError,\n type SignTransactionDAInput,\n type SignTransactionDAIntermediateValue,\n type SignTransactionDAInternalState,\n type SignTransactionDAOutput,\n} from \"@api/app-binder/SignTransactionDeviceActionTypes\";\nimport { type Signature } from \"@api/model/Signature\";\nimport { type TransactionOptions } from \"@api/model/TransactionOptions\";\nimport { type TransactionType } from \"@api/model/TransactionType\";\nimport { GetAppConfiguration } from \"@internal/app-binder/command/GetAppConfigurationCommand\";\nimport { type EthErrorCodes } from \"@internal/app-binder/command/utils/ethAppErrors\";\nimport {\n Web3CheckOptInCommand,\n type Web3CheckOptInCommandResponse,\n} from \"@internal/app-binder/command/Web3CheckOptInCommand\";\nimport { ETHEREUM_PLUGINS } from \"@internal/app-binder/constant/plugins\";\nimport {\n BuildTransactionContextTask,\n type BuildTransactionContextTaskArgs,\n type BuildTransactionTaskResult,\n} from \"@internal/app-binder/task/BuildTransactionContextTask\";\nimport { ProvideTransactionContextTask } from \"@internal/app-binder/task/ProvideTransactionContextTask\";\nimport {\n type GenericContext,\n ProvideTransactionGenericContextTask,\n type ProvideTransactionGenericContextTaskErrorCodes,\n} from \"@internal/app-binder/task/ProvideTransactionGenericContextTask\";\nimport { SendSignTransactionTask } from \"@internal/app-binder/task/SendSignTransactionTask\";\nimport { ApplicationChecker } from \"@internal/shared/utils/ApplicationChecker\";\nimport { type TransactionMapperService } from \"@internal/transaction/service/mapper/TransactionMapperService\";\nimport { type TransactionParserService } from \"@internal/transaction/service/parser/TransactionParserService\";\n\nexport type MachineDependencies = {\n readonly getAppConfig: () => Promise<\n CommandResult<GetConfigCommandResponse, EthErrorCodes>\n >;\n readonly web3CheckOptIn: () => Promise<\n CommandResult<Web3CheckOptInCommandResponse, EthErrorCodes>\n >;\n readonly buildContext: (arg0: {\n input: {\n contextModule: ContextModule;\n mapper: TransactionMapperService;\n transaction: Uint8Array;\n options: TransactionOptions;\n web3ChecksEnabled: boolean;\n derivationPath: string;\n };\n }) => Promise<BuildTransactionTaskResult>;\n readonly provideContext: (arg0: {\n input: {\n clearSignContexts: ClearSignContextSuccess[];\n web3Check: ClearSignContextSuccess<ClearSignContextType.WEB3_CHECK> | null;\n };\n }) => Promise<Maybe<CommandErrorResult<EthErrorCodes>>>;\n readonly provideGenericContext: (arg0: {\n input: {\n contextModule: ContextModule;\n transactionParser: TransactionParserService;\n chainId: number;\n derivationPath: string;\n serializedTransaction: Uint8Array;\n context: GenericContext;\n web3Check: ClearSignContextSuccess<ClearSignContextType.WEB3_CHECK> | null;\n };\n }) => Promise<\n Maybe<CommandErrorResult<ProvideTransactionGenericContextTaskErrorCodes>>\n >;\n readonly signTransaction: (arg0: {\n input: {\n derivationPath: string;\n serializedTransaction: Uint8Array;\n chainId: number;\n transactionType: TransactionType;\n isLegacy: boolean;\n };\n }) => Promise<CommandResult<Signature, EthErrorCodes>>;\n};\n\nexport class SignTransactionDeviceAction extends XStateDeviceAction<\n SignTransactionDAOutput,\n SignTransactionDAInput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue,\n SignTransactionDAInternalState\n> {\n makeStateMachine(\n internalApi: InternalApi,\n ): DeviceActionStateMachine<\n SignTransactionDAOutput,\n SignTransactionDAInput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue,\n SignTransactionDAInternalState\n > {\n type types = StateMachineTypes<\n SignTransactionDAOutput,\n SignTransactionDAInput,\n SignTransactionDAError,\n SignTransactionDAIntermediateValue,\n SignTransactionDAInternalState\n >;\n\n const {\n getAppConfig,\n web3CheckOptIn,\n buildContext,\n provideContext,\n provideGenericContext,\n signTransaction,\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 actors: {\n openAppStateMachine: new OpenAppDeviceAction({\n input: { appName: \"Ethereum\" },\n }).makeStateMachine(internalApi),\n getAppConfig: fromPromise(getAppConfig),\n web3CheckOptIn: fromPromise(web3CheckOptIn),\n buildContext: fromPromise(buildContext),\n provideContext: fromPromise(provideContext),\n provideGenericContext: fromPromise(provideGenericContext),\n signTransaction: fromPromise(signTransaction),\n },\n guards: {\n noInternalError: ({ context }) => context._internalState.error === null,\n isGenericContext: ({ context }) =>\n context._internalState.clearSignContexts !== null &&\n typeof (context._internalState.clearSignContexts as GenericContext)\n .transactionInfo === \"string\",\n isWeb3ChecksSupported: () =>\n new ApplicationChecker(internalApi.getDeviceSessionState())\n .withMinVersionExclusive(\"1.15.0\")\n .excludeDeviceModel(DeviceModelId.NANO_S)\n .check(),\n shouldOptIn: ({ context }) =>\n !context._internalState.web3ChecksEnabled &&\n !context._internalState.web3ChecksOptIn,\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 N4IgpgJg5mDOIC5QGUCWUB2AVATgQw1jwGMAXVAewwBEwA3VYsAQTMowDoB5ABzA2Y8etBk1bkqAYghUwHVBjoUA1nIp8BQ5KTykwAWRIALBWADaABgC6iUDwqxUEjLZAAPRABYAzAHYOAJwAHACMAb4ArBYWAEw+FkHeADQgAJ6IwRYcAGwRQUG52TF5EcUAvmUpaJi4BERsVCKMLA2cAMJGYMTKvPyCwvTN4uwASnAArgA2pJKWNkgg9o7Orh4IAcEcpRYhvonZAd4byWmIITtZESEhBTHeEVH33hVV6Nj4hCTOTWKtHB1dHoafo-FrOMawKYzMwheZ2BxOdirDKbba7faHY4pdIIUIcG6+bwWbKeXwxIKeTzkl4garvOpfdig4ZUDgAcTApA6eEmk34MGksnkihUchgXKMPL5GBgc1cS0RVGRCBCngC2Q4aqCewCEWyQUyJxx5x2HBiByCsV8AQsaoinhpdNqn1azL+HIlUv5YEkYBwOAoOA4PEmugAZoGALYccXc3neuULBUrBZrVXqzXBHV6g2Wo1nDaasIWXxkwkxW0xXyOt7O+rfQa-Zzszlx6UwCFQgHdWbWeUIlOgNMBTxBDiJby3MkmiK+bFnCzeEL4mLm4m5aLeB2VWm1j71pmNsHsFue+MysCd6bd5SzWH95ZI1MF0fj7yTorT6Kz+cILfLhJEgiDZslVXwLACGsan3RlGiPFlOAAIXGVBJggNoqD0NwZhkDA5AUJRVA4AAjFC0IwjAsNIRN4UfJVnwQOJPCyIJyWLHYqV1bJf3OGJl3yYlfFA0dsiOZ4dydGDXXgv5kNQ9DMLAbDfX9QNg1DUgIxwaNSPkiiqJoxYByfIdECYli2JtDiYi439PGAjhvArVdrT4skDm3V5oIZaTRGPVk5PIxTsKvCVAV7OEjLolwGPJfJMwrUkjkiNUeIsK4OEJLdLWiUI9ig+kXQbPyEI4QKFMopTSFCm870i5MTPcMz8jHNVEsJcJ7QCX88pySJSlKPw7jCAq61gmgZObAAFAMGAgMB9KqwU8OFQi5B4WbUHmxbsMMhr6NMv9RzHFK8kiLdBu405cQSTV32Ym5slAw4YlGqTiqGP4ZooOaFuCmY-QDIMQ3DKNg027b-r24yDqao74tO7UIguu4rpxbJokCA0rmJCDjk83dvKKw8Sq+iGwA5PCcEYHacKFAjRXBn6top-g-RpqG+yTGGYsO7KTvtM7kfs1HfyszLfDCbIySpdzxK8wqDzg0npvJyn2eIWmVKB9TQe0pnfvV6nNc5+qeeVfnMsFpGUe8NGF3snI8liViQlEolIIkvcfI+psT0kn32GW-CRSIxwiaVjBoei5VmL2M1SSCB4KyTykIh6wtDgKcJJbyAIRq9iPxrdZsA+JqRAbUkHNLB8PFfG6PFV5uG47HOI9mThJ7Xs39fCpJ3tRe4JzTewPlc+0vvfLjAas6HtG8HFuuo4YldiXOJQgpdProCGzMvz-VOOYuPR+nkv-anyPZ-CmEzZjhj7LVFfQMJEIN5uHvrvyTxHPJEtgIKKUXIFQdwYAoPNeACwy6R3PrDfazc1gAFp7YIGQSvaIGDMEYNnKfGBk0Ty9E0AMFWjV4GxxiGLPUCc9SlGCKBSsuDi74NZDeQhIJmEzwmNMB8TdlT6n8HxEIeoP5kichQ66JoYgrzytjDBk5qyF3rr5CeJ4PRtm9DwxeaYbhjkHtla0dtRJzh3knfEs53wbHztaHwjDlF+1ZGoyU54OxcLCt0TRjU0zgW8IECCrF872Q2PaNKq4ci7yeuSPINxqSKLGnY-ySEyIVSoh42Gaw+JHHxIcaIGxOIlnzCqb8mV9QZK3McJOtjfYJLKkk2m193Hc3vodc0r47i7xssBEIS40o+EcouZGRQ3ZOSepUkmKjWTfV+rTVJCDEBLicpqAoeYUqLm6tdVyv9JHaiOPnUZ497GcEmSzI2HNKrYRmRbCCUjSzmjfsjCshw0pu3HK5aWfdbSeBGbE96YyDkcGgeNC5DE-DMRXl080fdKShDWTiCkAR8QHDCLsG05JyjfLHhNEhrIAWtHqcoIFh0qSmNyPkEcHc9Riz4o5UCDx3ZbiXBEPZmLxmcGQOMYgTBYCQNorwh+Ql4VUgSD4J6uRPAhEpRqWhYRjoXCCEy2BnAACiqkcAEpbvyzUKdhVPXtOK66oExwY3VEI1Ffhd4gLKEAA */\n id: \"SignTransactionDeviceAction\",\n initial: \"OpenAppDeviceAction\",\n context: ({ input }) => {\n return {\n input,\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n _internalState: {\n error: null,\n clearSignContexts: null,\n serializedTransaction: null,\n chainId: null,\n web3ChecksOptIn: false,\n web3ChecksEnabled: false,\n web3Check: null,\n transactionType: null,\n isLegacy: true,\n signature: 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: {\n appName: \"Ethereum\",\n compatibleAppNames: ETHEREUM_PLUGINS,\n },\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<SignTransactionDAInternalState>({\n Right: () => _.context._internalState,\n Left: (error) => ({\n ..._.context._internalState,\n error,\n }),\n });\n },\n }),\n target: \"CheckOpenAppDeviceActionResult\",\n },\n },\n },\n CheckOpenAppDeviceActionResult: {\n always: [\n {\n target: \"GetAppConfig\",\n guard: and([\"noInternalError\", \"isWeb3ChecksSupported\"]),\n },\n {\n target: \"BuildContext\",\n guard: \"noInternalError\",\n },\n \"Error\",\n ],\n },\n GetAppConfig: {\n invoke: {\n id: \"getAppConfig\",\n src: \"getAppConfig\",\n onDone: {\n target: \"GetAppConfigResultCheck\",\n actions: [\n assign({\n _internalState: ({ event, context }) => {\n if (isSuccessCommandResult(event.output)) {\n return {\n ...context._internalState,\n web3ChecksOptIn: event.output.data.web3ChecksOptIn,\n web3ChecksEnabled: event.output.data.web3ChecksEnabled,\n };\n } else {\n return context._internalState;\n }\n },\n }),\n ],\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n GetAppConfigResultCheck: {\n always: [\n {\n target: \"Web3ChecksOptIn\",\n guard: \"shouldOptIn\",\n },\n {\n target: \"BuildContext\",\n },\n ],\n },\n Web3ChecksOptIn: {\n entry: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.Web3ChecksOptIn,\n },\n }),\n exit: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n }),\n invoke: {\n id: \"web3CheckOptIn\",\n src: \"web3CheckOptIn\",\n onDone: {\n target: \"BuildContext\",\n actions: [\n assign({\n _internalState: ({ event, context }) => {\n if (isSuccessCommandResult(event.output)) {\n return {\n ...context._internalState,\n web3ChecksEnabled: event.output.data.enabled,\n };\n } else {\n return context._internalState;\n }\n },\n }),\n ],\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n BuildContext: {\n invoke: {\n id: \"buildContext\",\n src: \"buildContext\",\n input: ({ context }) => ({\n contextModule: context.input.contextModule,\n mapper: context.input.mapper,\n transaction: context.input.transaction,\n options: context.input.options,\n web3ChecksEnabled: context._internalState.web3ChecksEnabled,\n derivationPath: context.input.derivationPath,\n }),\n onDone: {\n target: \"BuildContextResultCheck\",\n actions: [\n assign({\n _internalState: ({ event, context }) => ({\n ...context._internalState,\n clearSignContexts: event.output.clearSignContexts!,\n web3Check: event.output.web3Check,\n serializedTransaction: event.output.serializedTransaction,\n chainId: event.output.chainId,\n transactionType: event.output.transactionType,\n }),\n }),\n ],\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n BuildContextResultCheck: {\n always: [\n {\n target: \"ProvideGenericContext\",\n guard: \"isGenericContext\",\n },\n {\n target: \"ProvideContext\",\n },\n ],\n },\n ProvideContext: {\n invoke: {\n id: \"provideContext\",\n src: \"provideContext\",\n input: ({ context }) => ({\n clearSignContexts: context._internalState\n .clearSignContexts as ClearSignContextSuccess[],\n web3Check: context._internalState.web3Check,\n }),\n onDone: {\n target: \"SignTransaction\",\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n ProvideGenericContext: {\n invoke: {\n id: \"provideGenericContext\",\n src: \"provideGenericContext\",\n input: ({ context }) => ({\n contextModule: context.input.contextModule,\n transactionParser: context.input.parser,\n chainId: context._internalState.chainId!,\n derivationPath: context.input.derivationPath,\n serializedTransaction:\n context._internalState.serializedTransaction!,\n context: context._internalState\n .clearSignContexts as GenericContext,\n web3Check: context._internalState.web3Check,\n }),\n onDone: {\n actions: assign({\n _internalState: ({ event, context }) => {\n const { isLegacy: _, ...rest } = context._internalState;\n return event.output.caseOf({\n Just: () => ({\n ...rest,\n isLegacy: false,\n }),\n Nothing: () => ({\n ...rest,\n isLegacy: false,\n }),\n });\n },\n }),\n // NOTE: don't check errors to fallback to blind signing\n target: \"SignTransaction\",\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n SignTransaction: {\n entry: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.SignTransaction,\n },\n }),\n exit: assign({\n intermediateValue: {\n requiredUserInteraction: UserInteractionRequired.None,\n },\n }),\n invoke: {\n id: \"signTransaction\",\n src: \"signTransaction\",\n input: ({ context }) => ({\n derivationPath: context.input.derivationPath,\n serializedTransaction:\n context._internalState.serializedTransaction!,\n chainId: context._internalState.chainId!,\n transactionType: context._internalState.transactionType!,\n isLegacy: context._internalState.isLegacy,\n }),\n onDone: {\n target: \"SignTransactionResultCheck\",\n actions: [\n assign({\n _internalState: ({ event, context }) => {\n if (isSuccessCommandResult(event.output)) {\n return {\n ...context._internalState,\n signature: 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 SignTransactionResultCheck: {\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.signature\n ? Right(context._internalState.signature)\n : Left(\n context._internalState.error ||\n new UnknownDAError(\"No error in final state\"),\n ),\n });\n }\n\n extractDependencies(internalApi: InternalApi): MachineDependencies {\n const getAppConfig = async () =>\n internalApi.sendCommand(new GetAppConfiguration());\n const web3CheckOptIn = async () =>\n internalApi.sendCommand(new Web3CheckOptInCommand());\n const buildContext = async (arg0: {\n input: BuildTransactionContextTaskArgs;\n }) => new BuildTransactionContextTask(internalApi, arg0.input).run();\n\n const provideContext = async (arg0: {\n input: {\n clearSignContexts: ClearSignContextSuccess[];\n web3Check: ClearSignContextSuccess<ClearSignContextType.WEB3_CHECK> | null;\n };\n }) =>\n new ProvideTransactionContextTask(internalApi, {\n clearSignContexts: arg0.input.clearSignContexts,\n web3Check: arg0.input.web3Check,\n }).run();\n\n const provideGenericContext = async (arg0: {\n input: {\n contextModule: ContextModule;\n transactionParser: TransactionParserService;\n chainId: number;\n derivationPath: string;\n serializedTransaction: Uint8Array;\n context: GenericContext;\n web3Check: ClearSignContextSuccess<ClearSignContextType.WEB3_CHECK> | null;\n };\n }) =>\n new ProvideTransactionGenericContextTask(internalApi, {\n contextModule: arg0.input.contextModule,\n transactionParser: arg0.input.transactionParser,\n chainId: arg0.input.chainId,\n derivationPath: arg0.input.derivationPath,\n serializedTransaction: arg0.input.serializedTransaction,\n context: arg0.input.context,\n web3Check: arg0.input.web3Check,\n }).run();\n\n const signTransaction = async (arg0: {\n input: {\n derivationPath: string;\n serializedTransaction: Uint8Array;\n chainId: number;\n transactionType: TransactionType;\n isLegacy: boolean;\n };\n }) => new SendSignTransactionTask(internalApi, arg0.input).run();\n\n return {\n getAppConfig,\n web3CheckOptIn,\n buildContext,\n provideContext,\n provideGenericContext,\n signTransaction,\n };\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["SignTransactionDeviceAction_exports", "__export", "SignTransactionDeviceAction", "__toCommonJS", "import_device_management_kit", "import_purify_ts", "import_xstate", "import_GetAppConfigurationCommand", "import_Web3CheckOptInCommand", "import_plugins", "import_BuildTransactionContextTask", "import_ProvideTransactionContextTask", "import_ProvideTransactionGenericContextTask", "import_SendSignTransactionTask", "import_ApplicationChecker", "internalApi", "getAppConfig", "web3CheckOptIn", "buildContext", "provideContext", "provideGenericContext", "signTransaction", "context", "_", "input", "error", "event", "rest", "arg0"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var k=require("@ledgerhq/context-module"),e=require("@ledgerhq/device-management-kit"),m=require("@ledgerhq/device-management-kit"),I=require("ethers"),y=require("purify-ts"),x=require("../../../../api/model/TransactionType"),g=require("../../../app-binder/device-action/__test-utils__/makeInternalApi"),v=require("../../../app-binder/device-action/__test-utils__/setupOpenAppDAMock"),h=require("../../../app-binder/device-action/__test-utils__/testDeviceActionStates"),f=require("./SignTransactionDeviceAction");vi.mock("@ledgerhq/device-management-kit",async i=>({...await i(),OpenAppDeviceAction:vi.fn(()=>({makeStateMachine:vi.fn()}))}));describe("SignTransactionDeviceAction",()=>{const i={getContext:vi.fn(),getContexts:vi.fn(),getTypedDataFilters:vi.fn(),getWeb3Checks:vi.fn()},o={mapTransactionToSubset:vi.fn()},u={extractValue:vi.fn()},c=vi.fn(),l=vi.fn(),b=vi.fn(),P=vi.fn(),p=vi.fn(),V=vi.fn();function C(){return{getChallenge:c,buildContext:l,provideContext:b,provideGenericContext:P,signTransaction:p,getWeb3Check:V}}const d={domain:"domain-name.eth"},s=(0,e.hexaStringToBuffer)(I.Transaction.from({chainId:1n,nonce:0,data:"0x"}).unsignedSerialized);beforeEach(()=>{vi.clearAllMocks()}),describe("Happy path",()=>{it("should call external dependencies with the correct parameters",()=>new Promise((t,a)=>{(0,v.setupOpenAppDAMock)();const n=new f.SignTransactionDeviceAction({input:{derivationPath:"44'/60'/0'/0/0",transaction:s,options:d,contextModule:i,mapper:o,parser:u}});c.mockResolvedValueOnce((0,e.CommandResultFactory)({data:{challenge:"challenge"}})),V.mockResolvedValueOnce({web3Check:null}),l.mockResolvedValueOnce({clearSignContexts:[{type:"token",payload:"payload-1"}],serializedTransaction:new Uint8Array([1,2,3]),chainId:1,transactionType:x.TransactionType.LEGACY}),b.mockResolvedValueOnce(y.Nothing),p.mockResolvedValueOnce((0,e.CommandResultFactory)({data:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"}})),vi.spyOn(n,"extractDependencies").mockReturnValue(C());const r=[{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.ConfirmOpenApp},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.SignTransaction},status:e.DeviceActionStatus.Pending},{output:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"},status:e.DeviceActionStatus.Completed}];(0,h.testDeviceActionStates)(n,r,(0,g.makeDeviceActionInternalApiMock)(),{onDone:()=>{expect(c).toHaveBeenCalled(),expect(l).toHaveBeenCalledWith(expect.objectContaining({input:{challenge:"challenge",contextModule:i,mapper:o,options:d,transaction:s}})),expect(b).toHaveBeenCalledWith(expect.objectContaining({input:{clearSignContexts:[{type:"token",payload:"payload-1"}],web3Check:null}})),expect(p).toHaveBeenCalledWith(expect.objectContaining({input:{derivationPath:"44'/60'/0'/0/0",serializedTransaction:new Uint8Array([1,2,3]),isLegacy:!0,chainId:1,transactionType:x.TransactionType.LEGACY}})),t()},onError:a})})),it("should call external dependencies with the correct parameters with the generic parser",()=>new Promise((t,a)=>{(0,v.setupOpenAppDAMock)();const n=new f.SignTransactionDeviceAction({input:{derivationPath:"44'/60'/0'/0/0",transaction:s,options:d,contextModule:i,mapper:o,parser:u}});c.mockResolvedValueOnce((0,e.CommandResultFactory)({data:{challenge:"challenge"}})),V.mockResolvedValueOnce({web3Check:null}),l.mockResolvedValueOnce({clearSignContexts:{transactionInfo:"payload-1",transactionFields:[{type:"enum",payload:"payload-2"}]},serializedTransaction:new Uint8Array([1,2,3]),chainId:7,transactionType:x.TransactionType.EIP1559}),P.mockResolvedValueOnce(y.Nothing),p.mockResolvedValueOnce((0,e.CommandResultFactory)({data:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"}})),vi.spyOn(n,"extractDependencies").mockReturnValue(C());const r=[{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.ConfirmOpenApp},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.SignTransaction},status:e.DeviceActionStatus.Pending},{output:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"},status:e.DeviceActionStatus.Completed}];(0,h.testDeviceActionStates)(n,r,(0,g.makeDeviceActionInternalApiMock)(),{onError:a,onDone:()=>{expect(c).toHaveBeenCalled(),expect(l).toHaveBeenCalledWith(expect.objectContaining({input:{challenge:"challenge",contextModule:i,mapper:o,options:d,transaction:s}})),expect(P).toHaveBeenCalledWith(expect.objectContaining({input:{chainId:7,context:{transactionInfo:"payload-1",transactionFields:[{type:"enum",payload:"payload-2"}]},contextModule:i,derivationPath:"44'/60'/0'/0/0",serializedTransaction:new Uint8Array([1,2,3]),transactionParser:u,web3Check:null}})),expect(p).toHaveBeenCalledWith(expect.objectContaining({input:{derivationPath:"44'/60'/0'/0/0",serializedTransaction:new Uint8Array([1,2,3]),isLegacy:!1,chainId:7,transactionType:x.TransactionType.EIP1559}})),t()}})})),it("should fallback to blind signing if provideContext return an error",()=>new Promise((t,a)=>{(0,v.setupOpenAppDAMock)();const n=new f.SignTransactionDeviceAction({input:{derivationPath:"44'/60'/0'/0/0",transaction:s,options:d,contextModule:i,mapper:o,parser:u}});c.mockResolvedValueOnce((0,e.CommandResultFactory)({data:{challenge:"challenge"}})),V.mockResolvedValueOnce({web3Check:null}),l.mockResolvedValueOnce({clearSignContexts:[{type:"token",payload:"payload-1"}],serializedTransaction:new Uint8Array([1,2,3]),chainId:1,transactionType:x.TransactionType.LEGACY}),b.mockResolvedValueOnce((0,y.Just)((0,e.CommandResultFactory)({error:new m.InvalidStatusWordError("provideContext error")}))),p.mockResolvedValueOnce((0,e.CommandResultFactory)({data:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"}})),vi.spyOn(n,"extractDependencies").mockReturnValue(C());const r=[{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.ConfirmOpenApp},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.SignTransaction},status:e.DeviceActionStatus.Pending},{output:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"},status:e.DeviceActionStatus.Completed}];(0,h.testDeviceActionStates)(n,r,(0,g.makeDeviceActionInternalApiMock)(),{onError:a,onDone:()=>{expect(c).toHaveBeenCalled(),expect(l).toHaveBeenCalledWith(expect.objectContaining({input:{challenge:"challenge",contextModule:i,mapper:o,options:d,transaction:s}})),expect(b).toHaveBeenCalledWith(expect.objectContaining({input:{clearSignContexts:[{type:"token",payload:"payload-1"}],web3Check:null}})),expect(p).toHaveBeenCalledWith(expect.objectContaining({input:{derivationPath:"44'/60'/0'/0/0",serializedTransaction:new Uint8Array([1,2,3]),isLegacy:!0,chainId:1,transactionType:x.TransactionType.LEGACY}})),t()}})})),it("should fallback to blind signing if provideGenericContext return an error",()=>new Promise((t,a)=>{(0,v.setupOpenAppDAMock)();const n=new f.SignTransactionDeviceAction({input:{derivationPath:"44'/60'/0'/0/0",transaction:s,options:d,contextModule:i,mapper:o,parser:u}});c.mockResolvedValueOnce((0,e.CommandResultFactory)({data:{challenge:"challenge"}})),V.mockResolvedValueOnce({web3Check:null}),l.mockResolvedValueOnce({clearSignContexts:{transactionInfo:"payload-1",transactionFields:[{type:"enum",payload:"payload-2"}]},serializedTransaction:new Uint8Array([1,2,3]),chainId:7,transactionType:x.TransactionType.EIP1559}),P.mockResolvedValueOnce((0,y.Just)((0,e.CommandResultFactory)({error:new m.InvalidStatusWordError("provideGenericContext error")}))),p.mockResolvedValueOnce((0,e.CommandResultFactory)({data:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"}})),vi.spyOn(n,"extractDependencies").mockReturnValue(C());const r=[{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.ConfirmOpenApp},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.SignTransaction},status:e.DeviceActionStatus.Pending},{output:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"},status:e.DeviceActionStatus.Completed}];(0,h.testDeviceActionStates)(n,r,(0,g.makeDeviceActionInternalApiMock)(),{onError:a,onDone:()=>{expect(c).toHaveBeenCalled(),expect(l).toHaveBeenCalledWith(expect.objectContaining({input:{challenge:"challenge",contextModule:i,mapper:o,options:d,transaction:s}})),expect(P).toHaveBeenCalledWith(expect.objectContaining({input:{chainId:7,context:{transactionInfo:"payload-1",transactionFields:[{type:"enum",payload:"payload-2"}]},contextModule:i,derivationPath:"44'/60'/0'/0/0",serializedTransaction:new Uint8Array([1,2,3]),transactionParser:u,web3Check:null}})),expect(p).toHaveBeenCalledWith(expect.objectContaining({input:{derivationPath:"44'/60'/0'/0/0",serializedTransaction:new Uint8Array([1,2,3]),isLegacy:!1,chainId:7,transactionType:x.TransactionType.EIP1559}})),t()}})})),it("should continue if getChallenge return an error 6d00 not supported",()=>new Promise((t,a)=>{(0,v.setupOpenAppDAMock)();const n=new f.SignTransactionDeviceAction({input:{derivationPath:"44'/60'/0'/0/0",transaction:s,options:d,contextModule:i,mapper:o,parser:u}});c.mockResolvedValueOnce((0,e.CommandResultFactory)({error:new e.UnknownDeviceExchangeError({message:"UnknownError",errorCode:"6d00"})})),V.mockResolvedValueOnce({web3Check:null}),l.mockResolvedValueOnce({clearSignContexts:[],serializedTransaction:new Uint8Array([1,2,3]),chainId:7,transactionType:x.TransactionType.EIP1559}),P.mockResolvedValueOnce(y.Nothing),p.mockResolvedValueOnce((0,e.CommandResultFactory)({data:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"}})),vi.spyOn(n,"extractDependencies").mockReturnValue(C());const r=[{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.ConfirmOpenApp},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.SignTransaction},status:e.DeviceActionStatus.Pending},{output:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"},status:e.DeviceActionStatus.Completed}];(0,h.testDeviceActionStates)(n,r,(0,g.makeDeviceActionInternalApiMock)(),{onError:a,onDone:()=>{expect(c).toHaveBeenCalled(),expect(l).toHaveBeenCalledWith(expect.objectContaining({input:{challenge:null,contextModule:i,mapper:o,options:d,transaction:s}})),expect(p).toHaveBeenCalledWith(expect.objectContaining({input:{derivationPath:"44'/60'/0'/0/0",serializedTransaction:new Uint8Array([1,2,3]),isLegacy:!0,chainId:7,transactionType:x.TransactionType.EIP1559}})),t()}})})),it("should provide web3checks context if getWeb3Check return a value",()=>new Promise((t,a)=>{(0,v.setupOpenAppDAMock)();const n=new f.SignTransactionDeviceAction({input:{derivationPath:"44'/60'/0'/0/0",transaction:s,options:d,contextModule:i,mapper:o,parser:u}});c.mockResolvedValueOnce((0,e.CommandResultFactory)({data:{challenge:"challenge"}})),V.mockResolvedValueOnce({web3Check:{type:k.ClearSignContextType.ENUM,id:1,payload:"0x01020304",value:1,certificate:void 0}}),l.mockResolvedValueOnce({clearSignContexts:[{type:"token",payload:"payload-1"}],serializedTransaction:new Uint8Array([1,2,3]),chainId:1,transactionType:x.TransactionType.LEGACY}),b.mockResolvedValueOnce(y.Nothing),p.mockResolvedValueOnce((0,e.CommandResultFactory)({data:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"}})),vi.spyOn(n,"extractDependencies").mockReturnValue(C());const r=[{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.ConfirmOpenApp},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.SignTransaction},status:e.DeviceActionStatus.Pending},{output:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"},status:e.DeviceActionStatus.Completed}];(0,h.testDeviceActionStates)(n,r,(0,g.makeDeviceActionInternalApiMock)(),{onError:a,onDone:()=>{expect(c).toHaveBeenCalled(),expect(l).toHaveBeenCalledWith(expect.objectContaining({input:{challenge:"challenge",contextModule:i,mapper:o,options:d,transaction:s}})),expect(b).toHaveBeenCalledWith(expect.objectContaining({input:{clearSignContexts:[{type:"token",payload:"payload-1"}],web3Check:{type:k.ClearSignContextType.ENUM,id:1,payload:"0x01020304",value:1,certificate:void 0}}})),expect(p).toHaveBeenCalledWith(expect.objectContaining({input:{derivationPath:"44'/60'/0'/0/0",serializedTransaction:new Uint8Array([1,2,3]),isLegacy:!0,chainId:1,transactionType:x.TransactionType.LEGACY}})),t()}})})),it("should ignore web3checks errors",()=>new Promise((t,a)=>{(0,v.setupOpenAppDAMock)();const n=new f.SignTransactionDeviceAction({input:{derivationPath:"44'/60'/0'/0/0",transaction:s,options:d,contextModule:i,mapper:o,parser:u}});c.mockResolvedValueOnce((0,e.CommandResultFactory)({data:{challenge:"challenge"}})),V.mockResolvedValueOnce({web3Check:null,error:new m.InvalidStatusWordError("getWeb3Check error")}),l.mockResolvedValueOnce({clearSignContexts:[{type:"token",payload:"payload-1"}],serializedTransaction:new Uint8Array([1,2,3]),chainId:1,transactionType:x.TransactionType.LEGACY}),b.mockResolvedValueOnce(y.Nothing),p.mockResolvedValueOnce((0,e.CommandResultFactory)({data:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"}})),vi.spyOn(n,"extractDependencies").mockReturnValue(C());const r=[{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.ConfirmOpenApp},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.SignTransaction},status:e.DeviceActionStatus.Pending},{output:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"},status:e.DeviceActionStatus.Completed}];(0,h.testDeviceActionStates)(n,r,(0,g.makeDeviceActionInternalApiMock)(),{onError:a,onDone:()=>{expect(c).toHaveBeenCalled(),expect(l).toHaveBeenCalledWith(expect.objectContaining({input:{challenge:"challenge",contextModule:i,mapper:o,options:d,transaction:s}})),expect(b).toHaveBeenCalledWith(expect.objectContaining({input:{clearSignContexts:[{type:"token",payload:"payload-1"}],web3Check:null}})),expect(p).toHaveBeenCalledWith(expect.objectContaining({input:{derivationPath:"44'/60'/0'/0/0",serializedTransaction:new Uint8Array([1,2,3]),isLegacy:!0,chainId:1,transactionType:x.TransactionType.LEGACY}})),t()}})}))}),describe("OpenApp errors",()=>{it("should fail if OpenApp throw an error",()=>new Promise((t,a)=>{(0,v.setupOpenAppDAMock)(new e.UnknownDAError("OpenApp error"));const n=new f.SignTransactionDeviceAction({input:{derivationPath:"44'/60'/0'/0/0",transaction:s,options:d,contextModule:i,mapper:o,parser:u}});vi.spyOn(n,"extractDependencies").mockReturnValue(C());const r=[{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.ConfirmOpenApp},status:e.DeviceActionStatus.Pending},{error:new e.UnknownDAError("OpenApp error"),status:e.DeviceActionStatus.Error}];(0,h.testDeviceActionStates)(n,r,(0,g.makeDeviceActionInternalApiMock)(),{onError:a,onDone:()=>{t()}})}))}),describe("GetChallenge errors",()=>{it("should fail if getChallenge throws an error",()=>new Promise((t,a)=>{(0,v.setupOpenAppDAMock)();const n=new f.SignTransactionDeviceAction({input:{derivationPath:"44'/60'/0'/0/0",transaction:s,options:d,contextModule:i,mapper:o,parser:u}});c.mockRejectedValueOnce(new m.InvalidStatusWordError("getChallenge error")),vi.spyOn(n,"extractDependencies").mockReturnValue(C());const r=[{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.ConfirmOpenApp},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{error:new m.InvalidStatusWordError("getChallenge error"),status:e.DeviceActionStatus.Error}];(0,h.testDeviceActionStates)(n,r,(0,g.makeDeviceActionInternalApiMock)(),{onError:a,onDone:t})})),it("should fail if getChallenge return an error",()=>new Promise((t,a)=>{(0,v.setupOpenAppDAMock)();const n=new f.SignTransactionDeviceAction({input:{derivationPath:"44'/60'/0'/0/0",transaction:s,options:d,contextModule:i,mapper:o,parser:u}});c.mockResolvedValueOnce((0,e.CommandResultFactory)({error:new m.InvalidStatusWordError("getChallenge error")})),vi.spyOn(n,"extractDependencies").mockReturnValue(C());const r=[{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.ConfirmOpenApp},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{error:new m.InvalidStatusWordError("getChallenge error"),status:e.DeviceActionStatus.Error}];(0,h.testDeviceActionStates)(n,r,(0,g.makeDeviceActionInternalApiMock)(),{onError:a,onDone:t})}))}),describe("GetWeb3Checks errors",()=>{it("should fail if GetWeb3Checks throws an error",()=>new Promise((t,a)=>{(0,v.setupOpenAppDAMock)();const n=new f.SignTransactionDeviceAction({input:{derivationPath:"44'/60'/0'/0/0",transaction:s,options:d,contextModule:i,mapper:o,parser:u}});c.mockResolvedValueOnce((0,e.CommandResultFactory)({data:{challenge:"challenge"}})),V.mockRejectedValueOnce(new m.InvalidStatusWordError("getWeb3Checks error")),vi.spyOn(n,"extractDependencies").mockReturnValue(C());const r=[{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.ConfirmOpenApp},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{error:new m.InvalidStatusWordError("getWeb3Checks error"),status:e.DeviceActionStatus.Error}];(0,h.testDeviceActionStates)(n,r,(0,g.makeDeviceActionInternalApiMock)(),{onError:a,onDone:()=>{t()}})}))}),describe("BuildContext errors",()=>{it("should fail if buildContext throws an error",()=>new Promise((t,a)=>{(0,v.setupOpenAppDAMock)();const n=new f.SignTransactionDeviceAction({input:{derivationPath:"44'/60'/0'/0/0",transaction:s,options:d,contextModule:i,mapper:o,parser:u}});c.mockResolvedValueOnce((0,e.CommandResultFactory)({data:{challenge:"challenge"}})),V.mockResolvedValueOnce({web3Check:null}),l.mockRejectedValueOnce(new m.InvalidStatusWordError("buildContext error")),vi.spyOn(n,"extractDependencies").mockReturnValue(C());const r=[{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.ConfirmOpenApp},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{error:new m.InvalidStatusWordError("buildContext error"),status:e.DeviceActionStatus.Error}];(0,h.testDeviceActionStates)(n,r,(0,g.makeDeviceActionInternalApiMock)(),{onError:a,onDone:t})}))}),describe("ProvideContext errors",()=>{it("should fail if provideContext throws an error",()=>new Promise((t,a)=>{(0,v.setupOpenAppDAMock)();const n=new f.SignTransactionDeviceAction({input:{derivationPath:"44'/60'/0'/0/0",transaction:s,options:d,contextModule:i,mapper:o,parser:u}});c.mockResolvedValueOnce((0,e.CommandResultFactory)({data:{challenge:"challenge"}})),V.mockResolvedValueOnce({web3Check:null}),l.mockResolvedValueOnce({clearSignContexts:[{type:"token",payload:"payload-1"}],serializedTransaction:new Uint8Array([1,2,3])}),b.mockRejectedValueOnce(new m.InvalidStatusWordError("provideContext error")),vi.spyOn(n,"extractDependencies").mockReturnValue(C());const r=[{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.ConfirmOpenApp},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{error:new m.InvalidStatusWordError("provideContext error"),status:e.DeviceActionStatus.Error}];(0,h.testDeviceActionStates)(n,r,(0,g.makeDeviceActionInternalApiMock)(),{onError:a,onDone:t})}))}),describe("SignTransaction errors",()=>{it("should fail if signTransaction returns an error",()=>new Promise((t,a)=>{(0,v.setupOpenAppDAMock)();const n=new f.SignTransactionDeviceAction({input:{derivationPath:"44'/60'/0'/0/0",transaction:s,options:d,contextModule:i,mapper:o,parser:u}});c.mockResolvedValueOnce((0,e.CommandResultFactory)({data:{challenge:"challenge"}})),V.mockResolvedValueOnce({web3Check:null}),l.mockResolvedValueOnce({clearSignContexts:[{type:"token",payload:"payload-1"}],serializedTransaction:new Uint8Array([1,2,3])}),b.mockResolvedValueOnce(y.Nothing),p.mockResolvedValueOnce((0,e.CommandResultFactory)({error:new m.InvalidStatusWordError("signTransaction error")})),vi.spyOn(n,"extractDependencies").mockReturnValue(C());const r=[{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.ConfirmOpenApp},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.SignTransaction},status:e.DeviceActionStatus.Pending},{error:new m.InvalidStatusWordError("signTransaction error"),status:e.DeviceActionStatus.Error}];(0,h.testDeviceActionStates)(n,r,(0,g.makeDeviceActionInternalApiMock)(),{onError:a,onDone:t})}))})});
1
+ "use strict";var V=require("@ledgerhq/context-module"),e=require("@ledgerhq/device-management-kit"),l=require("@ledgerhq/device-management-kit"),A=require("ethers"),y=require("purify-ts"),f=require("../../../../api/model/TransactionType"),I=require("../../../app-binder/device-action/__test-utils__/makeInternalApi"),x=require("../../../app-binder/device-action/__test-utils__/setupOpenAppDAMock"),m=require("../../../app-binder/device-action/__test-utils__/testDeviceActionStates"),v=require("./SignTransactionDeviceAction");vi.mock("@ledgerhq/device-management-kit",async a=>({...await a(),OpenAppDeviceAction:vi.fn(()=>({makeStateMachine:vi.fn()}))}));describe("SignTransactionDeviceAction",()=>{const a={getContext:vi.fn(),getContexts:vi.fn(),getTypedDataFilters:vi.fn(),getWeb3Checks:vi.fn()},o={mapTransactionToSubset:vi.fn()},p={extractValue:vi.fn()},h=vi.fn(),w=vi.fn(),c=vi.fn(),k=vi.fn(),P=vi.fn(),C=vi.fn();function b(){return{getAppConfig:h,web3CheckOptIn:w,buildContext:c,provideContext:k,provideGenericContext:P,signTransaction:C}}const u=(0,I.makeDeviceActionInternalApiMock)(),s={domain:"domain-name.eth"},d=(0,e.hexaStringToBuffer)(A.Transaction.from({chainId:1n,nonce:0,data:"0x"}).unsignedSerialized);function g(n){u.getDeviceSessionState.mockReturnValueOnce({sessionStateType:e.DeviceSessionStateType.ReadyWithoutSecureChannel,deviceStatus:e.DeviceStatus.CONNECTED,installedApps:[],currentApp:{name:"Ethereum",version:n},deviceModelId:e.DeviceModelId.FLEX,isSecureConnectionAllowed:!1})}beforeEach(()=>{vi.clearAllMocks()}),describe("Happy path",()=>{it("should call external dependencies with the correct parameters",()=>new Promise((n,i)=>{(0,x.setupOpenAppDAMock)(),g("1.15.0");const t=new v.SignTransactionDeviceAction({input:{derivationPath:"44'/60'/0'/0/0",transaction:d,options:s,contextModule:a,mapper:o,parser:p}});c.mockResolvedValueOnce({clearSignContexts:[{type:"token",payload:"payload-1"}],serializedTransaction:new Uint8Array([1,2,3]),chainId:1,transactionType:f.TransactionType.LEGACY,web3Check:null}),k.mockResolvedValueOnce(y.Nothing),C.mockResolvedValueOnce((0,e.CommandResultFactory)({data:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"}})),vi.spyOn(t,"extractDependencies").mockReturnValue(b());const r=[{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.ConfirmOpenApp},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.SignTransaction},status:e.DeviceActionStatus.Pending},{output:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"},status:e.DeviceActionStatus.Completed}];(0,m.testDeviceActionStates)(t,r,u,{onDone:()=>{expect(c).toHaveBeenCalledWith(expect.objectContaining({input:{contextModule:a,mapper:o,options:s,transaction:d,web3ChecksEnabled:!1,derivationPath:"44'/60'/0'/0/0"}})),expect(k).toHaveBeenCalledWith(expect.objectContaining({input:{clearSignContexts:[{type:"token",payload:"payload-1"}],web3Check:null}})),expect(C).toHaveBeenCalledWith(expect.objectContaining({input:{derivationPath:"44'/60'/0'/0/0",serializedTransaction:new Uint8Array([1,2,3]),isLegacy:!0,chainId:1,transactionType:f.TransactionType.LEGACY}})),n()},onError:i})})),it("should call external dependencies with the correct parameters with the generic parser",()=>new Promise((n,i)=>{(0,x.setupOpenAppDAMock)(),g("1.15.0");const t=new v.SignTransactionDeviceAction({input:{derivationPath:"44'/60'/0'/0/0",transaction:d,options:s,contextModule:a,mapper:o,parser:p}});c.mockResolvedValueOnce({clearSignContexts:{transactionInfo:"payload-1",transactionFields:[{type:"enum",payload:"payload-2"}]},serializedTransaction:new Uint8Array([1,2,3]),chainId:7,transactionType:f.TransactionType.EIP1559,web3Check:null}),P.mockResolvedValueOnce(y.Nothing),C.mockResolvedValueOnce((0,e.CommandResultFactory)({data:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"}})),vi.spyOn(t,"extractDependencies").mockReturnValue(b());const r=[{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.ConfirmOpenApp},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.SignTransaction},status:e.DeviceActionStatus.Pending},{output:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"},status:e.DeviceActionStatus.Completed}];(0,m.testDeviceActionStates)(t,r,u,{onError:i,onDone:()=>{expect(c).toHaveBeenCalledWith(expect.objectContaining({input:{contextModule:a,mapper:o,options:s,transaction:d,web3ChecksEnabled:!1,derivationPath:"44'/60'/0'/0/0"}})),expect(P).toHaveBeenCalledWith(expect.objectContaining({input:{chainId:7,context:{transactionInfo:"payload-1",transactionFields:[{type:"enum",payload:"payload-2"}]},contextModule:a,derivationPath:"44'/60'/0'/0/0",serializedTransaction:new Uint8Array([1,2,3]),transactionParser:p,web3Check:null}})),expect(C).toHaveBeenCalledWith(expect.objectContaining({input:{derivationPath:"44'/60'/0'/0/0",serializedTransaction:new Uint8Array([1,2,3]),isLegacy:!1,chainId:7,transactionType:f.TransactionType.EIP1559}})),n()}})})),it("should fallback to blind signing if provideContext return an error",()=>new Promise((n,i)=>{(0,x.setupOpenAppDAMock)(),g("1.15.0");const t=new v.SignTransactionDeviceAction({input:{derivationPath:"44'/60'/0'/0/0",transaction:d,options:s,contextModule:a,mapper:o,parser:p}});c.mockResolvedValueOnce({clearSignContexts:[{type:"token",payload:"payload-1"}],serializedTransaction:new Uint8Array([1,2,3]),chainId:1,transactionType:f.TransactionType.LEGACY,web3Check:null}),k.mockResolvedValueOnce((0,y.Just)((0,e.CommandResultFactory)({error:new l.InvalidStatusWordError("provideContext error")}))),C.mockResolvedValueOnce((0,e.CommandResultFactory)({data:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"}})),vi.spyOn(t,"extractDependencies").mockReturnValue(b());const r=[{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.ConfirmOpenApp},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.SignTransaction},status:e.DeviceActionStatus.Pending},{output:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"},status:e.DeviceActionStatus.Completed}];(0,m.testDeviceActionStates)(t,r,u,{onError:i,onDone:()=>{expect(c).toHaveBeenCalledWith(expect.objectContaining({input:{contextModule:a,mapper:o,options:s,transaction:d,web3ChecksEnabled:!1,derivationPath:"44'/60'/0'/0/0"}})),expect(k).toHaveBeenCalledWith(expect.objectContaining({input:{clearSignContexts:[{type:"token",payload:"payload-1"}],web3Check:null}})),expect(C).toHaveBeenCalledWith(expect.objectContaining({input:{derivationPath:"44'/60'/0'/0/0",serializedTransaction:new Uint8Array([1,2,3]),isLegacy:!0,chainId:1,transactionType:f.TransactionType.LEGACY}})),n()}})})),it("should fallback to blind signing if provideGenericContext return an error",()=>new Promise((n,i)=>{(0,x.setupOpenAppDAMock)(),g("1.15.0");const t=new v.SignTransactionDeviceAction({input:{derivationPath:"44'/60'/0'/0/0",transaction:d,options:s,contextModule:a,mapper:o,parser:p}});c.mockResolvedValueOnce({clearSignContexts:{transactionInfo:"payload-1",transactionFields:[{type:"enum",payload:"payload-2"}]},serializedTransaction:new Uint8Array([1,2,3]),chainId:7,transactionType:f.TransactionType.EIP1559,web3Check:null}),P.mockResolvedValueOnce((0,y.Just)((0,e.CommandResultFactory)({error:new l.InvalidStatusWordError("provideGenericContext error")}))),C.mockResolvedValueOnce((0,e.CommandResultFactory)({data:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"}})),vi.spyOn(t,"extractDependencies").mockReturnValue(b());const r=[{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.ConfirmOpenApp},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.SignTransaction},status:e.DeviceActionStatus.Pending},{output:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"},status:e.DeviceActionStatus.Completed}];(0,m.testDeviceActionStates)(t,r,u,{onError:i,onDone:()=>{expect(c).toHaveBeenCalledWith(expect.objectContaining({input:{contextModule:a,mapper:o,options:s,transaction:d,web3ChecksEnabled:!1,derivationPath:"44'/60'/0'/0/0"}})),expect(P).toHaveBeenCalledWith(expect.objectContaining({input:{chainId:7,context:{transactionInfo:"payload-1",transactionFields:[{type:"enum",payload:"payload-2"}]},contextModule:a,derivationPath:"44'/60'/0'/0/0",serializedTransaction:new Uint8Array([1,2,3]),transactionParser:p,web3Check:null}})),expect(C).toHaveBeenCalledWith(expect.objectContaining({input:{derivationPath:"44'/60'/0'/0/0",serializedTransaction:new Uint8Array([1,2,3]),isLegacy:!1,chainId:7,transactionType:f.TransactionType.EIP1559}})),n()}})}))}),describe("Web3Checks",()=>{it("should call external dependencies with web3Checks enabled and supported",()=>new Promise((n,i)=>{(0,x.setupOpenAppDAMock)(),g("1.16.0");const t=new v.SignTransactionDeviceAction({input:{derivationPath:"44'/60'/0'/0/0",transaction:d,options:s,contextModule:a,mapper:o,parser:p}});h.mockResolvedValue((0,e.CommandResultFactory)({data:{blindSigningEnabled:!1,web3ChecksEnabled:!0,web3ChecksOptIn:!0,version:"1.16.0"}})),c.mockRejectedValueOnce(new l.InvalidStatusWordError("buildContext error")),vi.spyOn(t,"extractDependencies").mockReturnValue(b());const r=[{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.ConfirmOpenApp},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{error:new l.InvalidStatusWordError("buildContext error"),status:e.DeviceActionStatus.Error}];(0,m.testDeviceActionStates)(t,r,u,{onDone:()=>{expect(h).toHaveBeenCalled(),expect(c).toHaveBeenCalledWith(expect.objectContaining({input:{contextModule:a,mapper:o,options:s,transaction:d,web3ChecksEnabled:!0,derivationPath:"44'/60'/0'/0/0"}})),n()},onError:i})})),it("should call external dependencies with web3Checks supported but disabled",()=>new Promise((n,i)=>{(0,x.setupOpenAppDAMock)(),g("1.16.0");const t=new v.SignTransactionDeviceAction({input:{derivationPath:"44'/60'/0'/0/0",transaction:d,options:s,contextModule:a,mapper:o,parser:p}});h.mockResolvedValue((0,e.CommandResultFactory)({data:{blindSigningEnabled:!1,web3ChecksEnabled:!1,web3ChecksOptIn:!0,version:"1.16.0"}})),c.mockRejectedValueOnce(new l.InvalidStatusWordError("buildContext error")),vi.spyOn(t,"extractDependencies").mockReturnValue(b());const r=[{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.ConfirmOpenApp},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{error:new l.InvalidStatusWordError("buildContext error"),status:e.DeviceActionStatus.Error}];(0,m.testDeviceActionStates)(t,r,u,{onDone:()=>{expect(h).toHaveBeenCalled(),expect(c).toHaveBeenCalledWith(expect.objectContaining({input:{contextModule:a,mapper:o,options:s,transaction:d,web3ChecksEnabled:!1,derivationPath:"44'/60'/0'/0/0"}})),n()},onError:i})})),it("should call external dependencies with web3Checks opt-in, then enabled",()=>new Promise((n,i)=>{(0,x.setupOpenAppDAMock)(),g("1.16.0");const t=new v.SignTransactionDeviceAction({input:{derivationPath:"44'/60'/0'/0/0",transaction:d,options:s,contextModule:a,mapper:o,parser:p}});h.mockResolvedValue((0,e.CommandResultFactory)({data:{blindSigningEnabled:!1,web3ChecksEnabled:!1,web3ChecksOptIn:!1,version:"1.16.0"}})),w.mockResolvedValueOnce((0,e.CommandResultFactory)({data:{enabled:!0}})),c.mockRejectedValueOnce(new l.InvalidStatusWordError("buildContext error")),vi.spyOn(t,"extractDependencies").mockReturnValue(b());const r=[{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.ConfirmOpenApp},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.Web3ChecksOptIn},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{error:new l.InvalidStatusWordError("buildContext error"),status:e.DeviceActionStatus.Error}];(0,m.testDeviceActionStates)(t,r,u,{onDone:()=>{expect(h).toHaveBeenCalled(),expect(w).toHaveBeenCalled(),expect(c).toHaveBeenCalledWith(expect.objectContaining({input:{contextModule:a,mapper:o,options:s,transaction:d,web3ChecksEnabled:!0,derivationPath:"44'/60'/0'/0/0"}})),n()},onError:i})})),it("should call external dependencies with web3Checks opt-in, then disabled",()=>new Promise((n,i)=>{(0,x.setupOpenAppDAMock)(),g("1.16.0");const t=new v.SignTransactionDeviceAction({input:{derivationPath:"44'/60'/0'/0/0",transaction:d,options:s,contextModule:a,mapper:o,parser:p}});h.mockResolvedValue((0,e.CommandResultFactory)({data:{blindSigningEnabled:!1,web3ChecksEnabled:!1,web3ChecksOptIn:!1,version:"1.16.0"}})),w.mockResolvedValueOnce((0,e.CommandResultFactory)({data:{enabled:!1}})),c.mockRejectedValueOnce(new l.InvalidStatusWordError("buildContext error")),vi.spyOn(t,"extractDependencies").mockReturnValue(b());const r=[{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.ConfirmOpenApp},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.Web3ChecksOptIn},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{error:new l.InvalidStatusWordError("buildContext error"),status:e.DeviceActionStatus.Error}];(0,m.testDeviceActionStates)(t,r,u,{onDone:()=>{expect(h).toHaveBeenCalled(),expect(w).toHaveBeenCalled(),expect(c).toHaveBeenCalledWith(expect.objectContaining({input:{contextModule:a,mapper:o,options:s,transaction:d,web3ChecksEnabled:!1,derivationPath:"44'/60'/0'/0/0"}})),n()},onError:i})})),it("should provide web3Checks context if getWeb3Check return a value",()=>new Promise((n,i)=>{(0,x.setupOpenAppDAMock)(),g("1.15.0");const t=new v.SignTransactionDeviceAction({input:{derivationPath:"44'/60'/0'/0/0",transaction:d,options:s,contextModule:a,mapper:o,parser:p}});c.mockResolvedValueOnce({clearSignContexts:[{type:"token",payload:"payload-1"}],serializedTransaction:new Uint8Array([1,2,3]),chainId:1,transactionType:f.TransactionType.LEGACY,web3Check:{type:V.ClearSignContextType.ENUM,id:1,payload:"0x01020304",value:1,certificate:void 0}}),k.mockResolvedValueOnce(y.Nothing),C.mockResolvedValueOnce((0,e.CommandResultFactory)({data:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"}})),vi.spyOn(t,"extractDependencies").mockReturnValue(b());const r=[{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.ConfirmOpenApp},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.SignTransaction},status:e.DeviceActionStatus.Pending},{output:{v:28,r:"0x8a540510e13b0f2b11a451275716d29e08caad07e89a1c84964782fb5e1ad788",s:"0x64a0de235b270fbe81e8e40688f4a9f9ad9d283d690552c9331d7773ceafa513"},status:e.DeviceActionStatus.Completed}];(0,m.testDeviceActionStates)(t,r,u,{onError:i,onDone:()=>{expect(c).toHaveBeenCalledWith(expect.objectContaining({input:{contextModule:a,mapper:o,options:s,transaction:d,web3ChecksEnabled:!1,derivationPath:"44'/60'/0'/0/0"}})),expect(k).toHaveBeenCalledWith(expect.objectContaining({input:{clearSignContexts:[{type:"token",payload:"payload-1"}],web3Check:{type:V.ClearSignContextType.ENUM,id:1,payload:"0x01020304",value:1,certificate:void 0}}})),expect(C).toHaveBeenCalledWith(expect.objectContaining({input:{derivationPath:"44'/60'/0'/0/0",serializedTransaction:new Uint8Array([1,2,3]),isLegacy:!0,chainId:1,transactionType:f.TransactionType.LEGACY}})),n()}})}))}),describe("OpenApp errors",()=>{it("should fail if OpenApp throw an error",()=>new Promise((n,i)=>{(0,x.setupOpenAppDAMock)(new e.UnknownDAError("OpenApp error"));const t=new v.SignTransactionDeviceAction({input:{derivationPath:"44'/60'/0'/0/0",transaction:d,options:s,contextModule:a,mapper:o,parser:p}});vi.spyOn(t,"extractDependencies").mockReturnValue(b());const r=[{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.ConfirmOpenApp},status:e.DeviceActionStatus.Pending},{error:new e.UnknownDAError("OpenApp error"),status:e.DeviceActionStatus.Error}];(0,m.testDeviceActionStates)(t,r,u,{onError:i,onDone:()=>{n()}})}))}),describe("BuildContext errors",()=>{it("should fail if buildContext throws an error",()=>new Promise((n,i)=>{(0,x.setupOpenAppDAMock)(),g("1.15.0");const t=new v.SignTransactionDeviceAction({input:{derivationPath:"44'/60'/0'/0/0",transaction:d,options:s,contextModule:a,mapper:o,parser:p}});c.mockRejectedValueOnce(new l.InvalidStatusWordError("buildContext error")),vi.spyOn(t,"extractDependencies").mockReturnValue(b());const r=[{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.ConfirmOpenApp},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{error:new l.InvalidStatusWordError("buildContext error"),status:e.DeviceActionStatus.Error}];(0,m.testDeviceActionStates)(t,r,u,{onError:i,onDone:n})}))}),describe("ProvideContext errors",()=>{it("should fail if provideContext throws an error",()=>new Promise((n,i)=>{(0,x.setupOpenAppDAMock)(),g("1.15.0");const t=new v.SignTransactionDeviceAction({input:{derivationPath:"44'/60'/0'/0/0",transaction:d,options:s,contextModule:a,mapper:o,parser:p}});c.mockResolvedValueOnce({clearSignContexts:[{type:"token",payload:"payload-1"}],serializedTransaction:new Uint8Array([1,2,3]),web3Check:null}),k.mockRejectedValueOnce(new l.InvalidStatusWordError("provideContext error")),vi.spyOn(t,"extractDependencies").mockReturnValue(b());const r=[{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.ConfirmOpenApp},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{error:new l.InvalidStatusWordError("provideContext error"),status:e.DeviceActionStatus.Error}];(0,m.testDeviceActionStates)(t,r,u,{onError:i,onDone:n})}))}),describe("SignTransaction errors",()=>{it("should fail if signTransaction returns an error",()=>new Promise((n,i)=>{(0,x.setupOpenAppDAMock)(),g("1.15.0");const t=new v.SignTransactionDeviceAction({input:{derivationPath:"44'/60'/0'/0/0",transaction:d,options:s,contextModule:a,mapper:o,parser:p}});c.mockResolvedValueOnce({clearSignContexts:[{type:"token",payload:"payload-1"}],serializedTransaction:new Uint8Array([1,2,3]),web3Check:null}),k.mockResolvedValueOnce(y.Nothing),C.mockResolvedValueOnce((0,e.CommandResultFactory)({error:new l.InvalidStatusWordError("signTransaction error")})),vi.spyOn(t,"extractDependencies").mockReturnValue(b());const r=[{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.ConfirmOpenApp},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.None},status:e.DeviceActionStatus.Pending},{intermediateValue:{requiredUserInteraction:e.UserInteractionRequired.SignTransaction},status:e.DeviceActionStatus.Pending},{error:new l.InvalidStatusWordError("signTransaction error"),status:e.DeviceActionStatus.Error}];(0,m.testDeviceActionStates)(t,r,u,{onError:i,onDone:n})}))})});
2
2
  //# sourceMappingURL=SignTransactionDeviceAction.test.js.map