@ledgerhq/device-signer-kit-ethereum 0.0.0-multisig-20250905101831 → 0.0.0-no-issue-rn-ble-reconnection-20250916150911

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 (114) hide show
  1. package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js +1 -1
  2. package/lib/cjs/api/app-binder/SignTransactionDeviceActionTypes.js.map +2 -2
  3. package/lib/cjs/api/app-binder/SignTypedDataDeviceActionTypes.js +1 -1
  4. package/lib/cjs/api/app-binder/SignTypedDataDeviceActionTypes.js.map +2 -2
  5. package/lib/cjs/api/index.js +1 -1
  6. package/lib/cjs/api/index.js.map +3 -3
  7. package/lib/cjs/internal/app-binder/EthAppBinder.js +1 -1
  8. package/lib/cjs/internal/app-binder/EthAppBinder.js.map +2 -2
  9. package/lib/cjs/internal/app-binder/EthAppBinder.test.js +1 -1
  10. package/lib/cjs/internal/app-binder/EthAppBinder.test.js.map +2 -2
  11. package/lib/cjs/internal/app-binder/command/SendEIP712FilteringCommand.js +1 -1
  12. package/lib/cjs/internal/app-binder/command/SendEIP712FilteringCommand.js.map +3 -3
  13. package/lib/cjs/internal/app-binder/command/SendEIP712FilteringCommand.test.js +1 -1
  14. package/lib/cjs/internal/app-binder/command/SendEIP712FilteringCommand.test.js.map +3 -3
  15. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js +1 -1
  16. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js.map +3 -3
  17. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js +1 -1
  18. package/lib/cjs/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js.map +2 -2
  19. package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js +1 -1
  20. package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js.map +2 -2
  21. package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js +1 -1
  22. package/lib/cjs/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js.map +3 -3
  23. package/lib/cjs/internal/app-binder/task/BuildBaseContexts.test.js +1 -1
  24. package/lib/cjs/internal/app-binder/task/BuildBaseContexts.test.js.map +2 -2
  25. package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.js +1 -1
  26. package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.js.map +3 -3
  27. package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.test.js +1 -1
  28. package/lib/cjs/internal/app-binder/task/BuildEIP712ContextTask.test.js.map +3 -3
  29. package/lib/cjs/internal/app-binder/task/BuildFullContextsTask.test.js +1 -1
  30. package/lib/cjs/internal/app-binder/task/BuildFullContextsTask.test.js.map +2 -2
  31. package/lib/cjs/internal/app-binder/task/BuildSubcontextsTask.js +1 -1
  32. package/lib/cjs/internal/app-binder/task/BuildSubcontextsTask.js.map +2 -2
  33. package/lib/cjs/internal/app-binder/task/BuildSubcontextsTask.test.js +1 -1
  34. package/lib/cjs/internal/app-binder/task/BuildSubcontextsTask.test.js.map +2 -2
  35. package/lib/cjs/internal/app-binder/task/ParseTransactionTask.test.js +2 -0
  36. package/lib/cjs/internal/app-binder/task/ParseTransactionTask.test.js.map +7 -0
  37. package/lib/cjs/internal/app-binder/task/ProvideContextsTask.js +1 -1
  38. package/lib/cjs/internal/app-binder/task/ProvideContextsTask.js.map +2 -2
  39. package/lib/cjs/internal/app-binder/task/ProvideContextsTask.test.js +1 -1
  40. package/lib/cjs/internal/app-binder/task/ProvideContextsTask.test.js.map +2 -2
  41. package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.js +1 -1
  42. package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.js.map +3 -3
  43. package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.test.js +1 -1
  44. package/lib/cjs/internal/app-binder/task/ProvideEIP712ContextTask.test.js.map +3 -3
  45. package/lib/cjs/package.json +1 -1
  46. package/lib/esm/api/app-binder/SignTransactionDeviceActionTypes.js +1 -1
  47. package/lib/esm/api/app-binder/SignTransactionDeviceActionTypes.js.map +2 -2
  48. package/lib/esm/api/app-binder/SignTypedDataDeviceActionTypes.js +1 -1
  49. package/lib/esm/api/app-binder/SignTypedDataDeviceActionTypes.js.map +2 -2
  50. package/lib/esm/api/index.js +1 -1
  51. package/lib/esm/api/index.js.map +2 -2
  52. package/lib/esm/internal/app-binder/EthAppBinder.js +1 -1
  53. package/lib/esm/internal/app-binder/EthAppBinder.js.map +2 -2
  54. package/lib/esm/internal/app-binder/EthAppBinder.test.js +1 -1
  55. package/lib/esm/internal/app-binder/EthAppBinder.test.js.map +2 -2
  56. package/lib/esm/internal/app-binder/command/SendEIP712FilteringCommand.js +1 -1
  57. package/lib/esm/internal/app-binder/command/SendEIP712FilteringCommand.js.map +3 -3
  58. package/lib/esm/internal/app-binder/command/SendEIP712FilteringCommand.test.js +1 -1
  59. package/lib/esm/internal/app-binder/command/SendEIP712FilteringCommand.test.js.map +3 -3
  60. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js +1 -1
  61. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.js.map +3 -3
  62. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js +1 -1
  63. package/lib/esm/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.test.js.map +2 -2
  64. package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js +1 -1
  65. package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.js.map +2 -2
  66. package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js +1 -1
  67. package/lib/esm/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.test.js.map +3 -3
  68. package/lib/esm/internal/app-binder/task/BuildBaseContexts.test.js +1 -1
  69. package/lib/esm/internal/app-binder/task/BuildBaseContexts.test.js.map +2 -2
  70. package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.js +1 -1
  71. package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.js.map +3 -3
  72. package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.test.js +1 -1
  73. package/lib/esm/internal/app-binder/task/BuildEIP712ContextTask.test.js.map +3 -3
  74. package/lib/esm/internal/app-binder/task/BuildFullContextsTask.test.js +1 -1
  75. package/lib/esm/internal/app-binder/task/BuildFullContextsTask.test.js.map +2 -2
  76. package/lib/esm/internal/app-binder/task/BuildSubcontextsTask.js +1 -1
  77. package/lib/esm/internal/app-binder/task/BuildSubcontextsTask.js.map +2 -2
  78. package/lib/esm/internal/app-binder/task/BuildSubcontextsTask.test.js +1 -1
  79. package/lib/esm/internal/app-binder/task/BuildSubcontextsTask.test.js.map +2 -2
  80. package/lib/esm/internal/app-binder/task/ParseTransactionTask.test.js +2 -0
  81. package/lib/esm/internal/app-binder/task/ParseTransactionTask.test.js.map +7 -0
  82. package/lib/esm/internal/app-binder/task/ProvideContextsTask.js +1 -1
  83. package/lib/esm/internal/app-binder/task/ProvideContextsTask.js.map +2 -2
  84. package/lib/esm/internal/app-binder/task/ProvideContextsTask.test.js +1 -1
  85. package/lib/esm/internal/app-binder/task/ProvideContextsTask.test.js.map +2 -2
  86. package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.js +1 -1
  87. package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.js.map +3 -3
  88. package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.test.js +1 -1
  89. package/lib/esm/internal/app-binder/task/ProvideEIP712ContextTask.test.js.map +3 -3
  90. package/lib/esm/package.json +1 -1
  91. package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts +2 -1
  92. package/lib/types/api/app-binder/SignTransactionDeviceActionTypes.d.ts.map +1 -1
  93. package/lib/types/api/app-binder/SignTypedDataDeviceActionTypes.d.ts +4 -0
  94. package/lib/types/api/app-binder/SignTypedDataDeviceActionTypes.d.ts.map +1 -1
  95. package/lib/types/api/index.d.ts +5 -9
  96. package/lib/types/api/index.d.ts.map +1 -1
  97. package/lib/types/internal/app-binder/EthAppBinder.d.ts.map +1 -1
  98. package/lib/types/internal/app-binder/command/SendEIP712FilteringCommand.d.ts +29 -1
  99. package/lib/types/internal/app-binder/command/SendEIP712FilteringCommand.d.ts.map +1 -1
  100. package/lib/types/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.d.ts +1 -1
  101. package/lib/types/internal/app-binder/device-action/SignTransaction/SignTransactionDeviceAction.d.ts.map +1 -1
  102. package/lib/types/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.d.ts +4 -0
  103. package/lib/types/internal/app-binder/device-action/SignTypedData/SignTypedDataDeviceAction.d.ts.map +1 -1
  104. package/lib/types/internal/app-binder/task/BuildEIP712ContextTask.d.ts +8 -1
  105. package/lib/types/internal/app-binder/task/BuildEIP712ContextTask.d.ts.map +1 -1
  106. package/lib/types/internal/app-binder/task/BuildSubcontextsTask.d.ts.map +1 -1
  107. package/lib/types/internal/app-binder/task/ParseTransactionTask.test.d.ts +2 -0
  108. package/lib/types/internal/app-binder/task/ParseTransactionTask.test.d.ts.map +1 -0
  109. package/lib/types/internal/app-binder/task/ProvideContextsTask.d.ts +3 -1
  110. package/lib/types/internal/app-binder/task/ProvideContextsTask.d.ts.map +1 -1
  111. package/lib/types/internal/app-binder/task/ProvideEIP712ContextTask.d.ts +12 -2
  112. package/lib/types/internal/app-binder/task/ProvideEIP712ContextTask.d.ts.map +1 -1
  113. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  114. package/package.json +8 -8
@@ -1,2 +1,2 @@
1
- import{ClearSignContextType as o}from"@ledgerhq/context-module";import{ByteArrayBuilder as C,CommandResultFactory as h,InvalidStatusWordError as k,isSuccessCommandResult as d,LoadCertificateCommand as p}from"@ledgerhq/device-management-kit";import{DerivationPathUtils as T}from"@ledgerhq/signer-utils";import{Left as m,Right as l}from"purify-ts";import{ProvideEnumCommand as y}from"../../app-binder/command/ProvideEnumCommand";import{NetworkConfigurationType as u,ProvideNetworkConfigurationCommand as c}from"../../app-binder/command/ProvideNetworkConfigurationCommand";import{ProvideNFTInformationCommand as f}from"../../app-binder/command/ProvideNFTInformationCommand";import{ProvideProxyInfoCommand as I}from"../../app-binder/command/ProvideProxyInfoCommand";import{ProvideTokenInformationCommand as P}from"../../app-binder/command/ProvideTokenInformationCommand";import{ProvideTransactionFieldDescriptionCommand as F}from"../../app-binder/command/ProvideTransactionFieldDescriptionCommand";import{ProvideTransactionInformationCommand as _}from"../../app-binder/command/ProvideTransactionInformationCommand";import{ProvideTrustedNameCommand as v}from"../../app-binder/command/ProvideTrustedNameCommand";import{ProvideWeb3CheckCommand as x}from"../../app-binder/command/ProvideWeb3CheckCommand";import{SetExternalPluginCommand as w}from"../../app-binder/command/SetExternalPluginCommand";import{SetPluginCommand as E}from"../../app-binder/command/SetPluginCommand";import{StoreTransactionCommand as A}from"../../app-binder/command/StoreTransactionCommand";import{SendCommandInChunksTask as N}from"./SendCommandInChunksTask";import{SendPayloadInChunksTask as R}from"./SendPayloadInChunksTask";class J{constructor(s,n,i=(e,a)=>new R(e,a),t=(e,a)=>new N(e,a)){this._api=s;this._args=n;this._sendPayloadInChunksTaskFactory=i;this._sendCommandInChunksTaskFactory=t}async run(){let s=!1;console.log("LAU: ProvideContextsTask contexts",this._args.contexts);for(const{context:n,subcontextCallbacks:i}of this._args.contexts){for(const e of i){console.log("LAU: ProvideContextsTask callback",e);const a=await e();if(console.log("LAU: ProvideContextsTask subcontext",a),a.type===o.ERROR)continue;console.log("LAU: ProvideContextsTask subcontext",a);const r=await this.provideContext(a);if(!d(r))return m(r)}if(n.type===o.PROXY_DELEGATE_CALL)continue;if(!s&&n.type===o.TRANSACTION_INFO){s=!0;const e=T.splitPath(this._args.derivationPath),a=new C;a.add8BitUIntToData(e.length),e.forEach(r=>{a.add32BitUIntToData(r)}),a.addBufferToData(this._args.serializedTransaction),await this._sendCommandInChunksTaskFactory(this._api,{data:a.build(),commandFactory:r=>new A({serializedTransaction:r.chunkedData,isFirstChunk:r.isFirstChunk})}).run()}console.log("LAU: ProvideContextsTask context",n);const t=await this.provideContext(n);if(!d(t))return m(t)}return l(void 0)}async provideContext({type:s,payload:n,certificate:i}){switch(i&&await this._api.sendCommand(new p({keyUsage:i.keyUsageNumber,certificate:i.payload})),s){case o.PLUGIN:return await this._api.sendCommand(new E({payload:n}));case o.EXTERNAL_PLUGIN:return await this._api.sendCommand(new w({payload:n}));case o.NFT:return await this._api.sendCommand(new f({payload:n}));case o.TOKEN:return await this._api.sendCommand(new P({payload:n}));case o.TRANSACTION_INFO:return await this._sendPayloadInChunksTaskFactory(this._api,{payload:n,commandFactory:e=>new _({data:e.chunkedData,isFirstChunk:e.isFirstChunk})}).run();case o.TRUSTED_NAME:return this._sendPayloadInChunksTaskFactory(this._api,{payload:n,commandFactory:t=>new v({data:t.chunkedData,isFirstChunk:t.isFirstChunk})}).run();case o.ENUM:return this._sendPayloadInChunksTaskFactory(this._api,{payload:n,commandFactory:t=>new y({data:t.chunkedData,isFirstChunk:t.isFirstChunk})}).run();case o.TRANSACTION_FIELD_DESCRIPTION:return this._sendPayloadInChunksTaskFactory(this._api,{payload:n,commandFactory:t=>new F({data:t.chunkedData,isFirstChunk:t.isFirstChunk})}).run();case o.WEB3_CHECK:return this._sendPayloadInChunksTaskFactory(this._api,{payload:n,commandFactory:t=>new x({payload:t.chunkedData,isFirstChunk:t.isFirstChunk})}).run();case o.PROXY_DELEGATE_CALL:return this._sendPayloadInChunksTaskFactory(this._api,{payload:n,commandFactory:t=>new I({data:t.chunkedData,isFirstChunk:t.isFirstChunk})}).run();case o.DYNAMIC_NETWORK:return this._sendPayloadInChunksTaskFactory(this._api,{payload:n,commandFactory:t=>new c({data:t.chunkedData,isFirstChunk:t.isFirstChunk,configurationType:u.CONFIGURATION})}).run();case o.DYNAMIC_NETWORK_ICON:return this._sendPayloadInChunksTaskFactory(this._api,{payload:n,commandFactory:t=>new c({data:t.chunkedData,isFirstChunk:t.isFirstChunk,configurationType:u.ICON}),withPayloadLength:!1}).run();default:{const t=s;return h({error:new k(`The context type [${t}] is not covered`)})}}}}export{J as ProvideContextsTask};
1
+ import{ClearSignContextType as a}from"@ledgerhq/context-module";import{ByteArrayBuilder as c,CommandResultFactory as h,InvalidStatusWordError as k,isSuccessCommandResult as d,LoadCertificateCommand as p}from"@ledgerhq/device-management-kit";import{DerivationPathUtils as T}from"@ledgerhq/signer-utils";import{Left as m,Right as y}from"purify-ts";import{ProvideEnumCommand as f}from"../../app-binder/command/ProvideEnumCommand";import{NetworkConfigurationType as u,ProvideNetworkConfigurationCommand as C}from"../../app-binder/command/ProvideNetworkConfigurationCommand";import{ProvideNFTInformationCommand as I}from"../../app-binder/command/ProvideNFTInformationCommand";import{ProvideProxyInfoCommand as F}from"../../app-binder/command/ProvideProxyInfoCommand";import{ProvideTokenInformationCommand as l}from"../../app-binder/command/ProvideTokenInformationCommand";import{ProvideTransactionFieldDescriptionCommand as _}from"../../app-binder/command/ProvideTransactionFieldDescriptionCommand";import{ProvideTransactionInformationCommand as P}from"../../app-binder/command/ProvideTransactionInformationCommand";import{ProvideTrustedNameCommand as w}from"../../app-binder/command/ProvideTrustedNameCommand";import{ProvideWeb3CheckCommand as E}from"../../app-binder/command/ProvideWeb3CheckCommand";import{SetExternalPluginCommand as v}from"../../app-binder/command/SetExternalPluginCommand";import{SetPluginCommand as N}from"../../app-binder/command/SetPluginCommand";import{StoreTransactionCommand as A}from"../../app-binder/command/StoreTransactionCommand";import{SendCommandInChunksTask as x}from"./SendCommandInChunksTask";import{SendPayloadInChunksTask as R}from"./SendPayloadInChunksTask";class J{constructor(i,n,s=(r,o)=>new R(r,o),t=(r,o)=>new x(r,o)){this._api=i;this._args=n;this._sendPayloadInChunksTaskFactory=s;this._sendCommandInChunksTaskFactory=t}async run(){let i=!1;for(const{context:n,subcontextCallbacks:s}of this._args.contexts){for(const r of s){const o=await r();if(o.type===a.ERROR)continue;const e=await this.provideContext(o);if(!d(e))return m(e)}if(n.type===a.PROXY_DELEGATE_CALL)continue;if(!i&&this._args.serializedTransaction!==void 0&&n.type===a.TRANSACTION_INFO){i=!0;const r=T.splitPath(this._args.derivationPath),o=new c;o.add8BitUIntToData(r.length),r.forEach(e=>{o.add32BitUIntToData(e)}),o.addBufferToData(this._args.serializedTransaction),await this._sendCommandInChunksTaskFactory(this._api,{data:o.build(),commandFactory:e=>new A({serializedTransaction:e.chunkedData,isFirstChunk:e.isFirstChunk})}).run()}const t=await this.provideContext(n);if(!d(t))return m(t)}return y(void 0)}async provideContext({type:i,payload:n,certificate:s}){switch(s&&await this._api.sendCommand(new p({keyUsage:s.keyUsageNumber,certificate:s.payload})),i){case a.PLUGIN:return await this._api.sendCommand(new N({payload:n}));case a.EXTERNAL_PLUGIN:return await this._api.sendCommand(new v({payload:n}));case a.NFT:return await this._api.sendCommand(new I({payload:n}));case a.TOKEN:return await this._api.sendCommand(new l({payload:n}));case a.TRANSACTION_INFO:return await this._sendPayloadInChunksTaskFactory(this._api,{payload:n,commandFactory:r=>new P({data:r.chunkedData,isFirstChunk:r.isFirstChunk})}).run();case a.TRUSTED_NAME:return this._sendPayloadInChunksTaskFactory(this._api,{payload:n,commandFactory:t=>new w({data:t.chunkedData,isFirstChunk:t.isFirstChunk})}).run();case a.ENUM:return this._sendPayloadInChunksTaskFactory(this._api,{payload:n,commandFactory:t=>new f({data:t.chunkedData,isFirstChunk:t.isFirstChunk})}).run();case a.TRANSACTION_FIELD_DESCRIPTION:return this._sendPayloadInChunksTaskFactory(this._api,{payload:n,commandFactory:t=>new _({data:t.chunkedData,isFirstChunk:t.isFirstChunk})}).run();case a.WEB3_CHECK:return this._sendPayloadInChunksTaskFactory(this._api,{payload:n,commandFactory:t=>new E({payload:t.chunkedData,isFirstChunk:t.isFirstChunk})}).run();case a.PROXY_DELEGATE_CALL:return this._sendPayloadInChunksTaskFactory(this._api,{payload:n,commandFactory:t=>new F({data:t.chunkedData,isFirstChunk:t.isFirstChunk})}).run();case a.DYNAMIC_NETWORK:return this._sendPayloadInChunksTaskFactory(this._api,{payload:n,commandFactory:t=>new C({data:t.chunkedData,isFirstChunk:t.isFirstChunk,configurationType:u.CONFIGURATION})}).run();case a.DYNAMIC_NETWORK_ICON:return this._sendPayloadInChunksTaskFactory(this._api,{payload:n,commandFactory:t=>new C({data:t.chunkedData,isFirstChunk:t.isFirstChunk,configurationType:u.ICON}),withPayloadLength:!1}).run();default:{const t=i;return h({error:new k(`The context type [${t}] is not covered`)})}}}}export{J as ProvideContextsTask};
2
2
  //# sourceMappingURL=ProvideContextsTask.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/app-binder/task/ProvideContextsTask.ts"],
4
- "sourcesContent": ["import {\n type ClearSignContextSuccess,\n ClearSignContextType,\n} from \"@ledgerhq/context-module\";\nimport {\n ByteArrayBuilder,\n type CommandErrorResult,\n type CommandResult,\n CommandResultFactory,\n type InternalApi,\n InvalidStatusWordError,\n isSuccessCommandResult,\n LoadCertificateCommand,\n} from \"@ledgerhq/device-management-kit\";\nimport { DerivationPathUtils } from \"@ledgerhq/signer-utils\";\nimport { type Either, Left, Right } from \"purify-ts\";\n\nimport { ProvideEnumCommand } from \"@internal/app-binder/command/ProvideEnumCommand\";\nimport {\n NetworkConfigurationType,\n ProvideNetworkConfigurationCommand,\n} from \"@internal/app-binder/command/ProvideNetworkConfigurationCommand\";\nimport { ProvideNFTInformationCommand } from \"@internal/app-binder/command/ProvideNFTInformationCommand\";\nimport { ProvideProxyInfoCommand } from \"@internal/app-binder/command/ProvideProxyInfoCommand\";\nimport { ProvideTokenInformationCommand } from \"@internal/app-binder/command/ProvideTokenInformationCommand\";\nimport { ProvideTransactionFieldDescriptionCommand } from \"@internal/app-binder/command/ProvideTransactionFieldDescriptionCommand\";\nimport { ProvideTransactionInformationCommand } from \"@internal/app-binder/command/ProvideTransactionInformationCommand\";\nimport { ProvideTrustedNameCommand } from \"@internal/app-binder/command/ProvideTrustedNameCommand\";\nimport { ProvideWeb3CheckCommand } from \"@internal/app-binder/command/ProvideWeb3CheckCommand\";\nimport { SetExternalPluginCommand } from \"@internal/app-binder/command/SetExternalPluginCommand\";\nimport { SetPluginCommand } from \"@internal/app-binder/command/SetPluginCommand\";\nimport { StoreTransactionCommand } from \"@internal/app-binder/command/StoreTransactionCommand\";\nimport { type EthErrorCodes } from \"@internal/app-binder/command/utils/ethAppErrors\";\n\nimport { type ContextWithSubContexts } from \"./BuildFullContextsTask\";\nimport {\n SendCommandInChunksTask,\n type SendCommandInChunksTaskArgs,\n} from \"./SendCommandInChunksTask\";\nimport {\n SendPayloadInChunksTask,\n type SendPayloadInChunksTaskArgs,\n} from \"./SendPayloadInChunksTask\";\n\nexport type ProvideContextsTaskArgs = {\n /**\n * The list of clear sign context with subcontexts callback to provide.\n */\n contexts: ContextWithSubContexts[];\n /**\n * The derivation path to provide.\n */\n derivationPath: string;\n /**\n * The serialized transaction to provide.\n */\n serializedTransaction: Uint8Array;\n};\n\nexport type ProvideContextsTaskResult = Either<\n CommandErrorResult<EthErrorCodes>,\n void\n>;\n\n/**\n * This task is responsible for providing the transaction context to the device.\n * It will send the subcontexts callbacks in order and finish with the context.\n */\nexport class ProvideContextsTask {\n constructor(\n private _api: InternalApi,\n private _args: ProvideContextsTaskArgs,\n private _sendPayloadInChunksTaskFactory = (\n api: InternalApi,\n args: SendPayloadInChunksTaskArgs<unknown>,\n ) => new SendPayloadInChunksTask(api, args),\n private _sendCommandInChunksTaskFactory = (\n api: InternalApi,\n args: SendCommandInChunksTaskArgs<unknown>,\n ) => new SendCommandInChunksTask(api, args),\n ) {}\n\n async run(): Promise<ProvideContextsTaskResult> {\n let transactionInfoProvided = false;\n console.log(\"LAU: ProvideContextsTask contexts\", this._args.contexts);\n\n for (const { context, subcontextCallbacks } of this._args.contexts) {\n for (const callback of subcontextCallbacks) {\n console.log(\"LAU: ProvideContextsTask callback\", callback);\n const subcontext = await callback();\n console.log(\"LAU: ProvideContextsTask subcontext\", subcontext);\n\n if (subcontext.type === ClearSignContextType.ERROR) {\n // silently ignore error subcontexts\n continue;\n }\n\n console.log(\"LAU: ProvideContextsTask subcontext\", subcontext);\n\n const res = await this.provideContext(subcontext);\n if (!isSuccessCommandResult(res)) {\n return Left(res);\n }\n }\n\n if (context.type === ClearSignContextType.PROXY_DELEGATE_CALL) {\n // In this specific case, the context is not valid as the challenge is not valid on the first call\n // the real data is provided in the subcontext callback\n continue;\n }\n\n if (\n !transactionInfoProvided &&\n context.type === ClearSignContextType.TRANSACTION_INFO\n ) {\n // Send the serialized transaction for the first TRANSACTION_INFO.\n // All other TRANSACTION_INFO contexts will be ignored as it will be for nested calldata.\n transactionInfoProvided = true;\n\n const paths = DerivationPathUtils.splitPath(this._args.derivationPath);\n const builder = new ByteArrayBuilder();\n builder.add8BitUIntToData(paths.length);\n paths.forEach((path) => {\n builder.add32BitUIntToData(path);\n });\n builder.addBufferToData(this._args.serializedTransaction);\n await this._sendCommandInChunksTaskFactory(this._api, {\n data: builder.build(),\n commandFactory: (args) =>\n new StoreTransactionCommand({\n serializedTransaction: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n }).run();\n }\n\n console.log(\"LAU: ProvideContextsTask context\", context);\n const res = await this.provideContext(context);\n if (!isSuccessCommandResult(res)) {\n return Left(res);\n }\n }\n\n return Right(void 0);\n }\n\n /**\n * This method will send the context to the device.\n *\n * @param context The clear sign context to provide.\n * @returns A promise that resolves when the command is sent.\n */\n async provideContext({\n type,\n payload,\n certificate,\n }: ClearSignContextSuccess): Promise<CommandResult<unknown, EthErrorCodes>> {\n // if a certificate is provided, we load it before sending the command\n if (certificate) {\n await this._api.sendCommand(\n new LoadCertificateCommand({\n keyUsage: certificate.keyUsageNumber,\n certificate: certificate.payload,\n }),\n );\n }\n\n switch (type) {\n case ClearSignContextType.PLUGIN: {\n return await this._api.sendCommand(new SetPluginCommand({ payload }));\n }\n case ClearSignContextType.EXTERNAL_PLUGIN: {\n return await this._api.sendCommand(\n new SetExternalPluginCommand({ payload }),\n );\n }\n case ClearSignContextType.NFT: {\n return await this._api.sendCommand(\n new ProvideNFTInformationCommand({ payload }),\n );\n }\n case ClearSignContextType.TOKEN: {\n return await this._api.sendCommand(\n new ProvideTokenInformationCommand({ payload }),\n );\n }\n case ClearSignContextType.TRANSACTION_INFO: {\n const transactionInfoResult =\n await this._sendPayloadInChunksTaskFactory(this._api, {\n payload,\n commandFactory: (args) =>\n new ProvideTransactionInformationCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n }).run();\n\n return transactionInfoResult;\n }\n case ClearSignContextType.TRUSTED_NAME: {\n return this._sendPayloadInChunksTaskFactory(this._api, {\n payload,\n commandFactory: (args) =>\n new ProvideTrustedNameCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n }).run();\n }\n case ClearSignContextType.ENUM:\n return this._sendPayloadInChunksTaskFactory(this._api, {\n payload,\n commandFactory: (args) =>\n new ProvideEnumCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n }).run();\n case ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION:\n return this._sendPayloadInChunksTaskFactory(this._api, {\n payload,\n commandFactory: (args) =>\n new ProvideTransactionFieldDescriptionCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n }).run();\n case ClearSignContextType.WEB3_CHECK:\n return this._sendPayloadInChunksTaskFactory(this._api, {\n payload,\n commandFactory: (args) =>\n new ProvideWeb3CheckCommand({\n payload: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n }).run();\n case ClearSignContextType.PROXY_DELEGATE_CALL:\n return this._sendPayloadInChunksTaskFactory(this._api, {\n payload,\n commandFactory: (args) =>\n new ProvideProxyInfoCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n }).run();\n case ClearSignContextType.DYNAMIC_NETWORK:\n // Dynamic network configuration uses the existing ProvideNetworkConfiguration command\n // but is provided as part of the context flow\n return this._sendPayloadInChunksTaskFactory(this._api, {\n payload,\n commandFactory: (args) =>\n new ProvideNetworkConfigurationCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n configurationType: NetworkConfigurationType.CONFIGURATION,\n }),\n }).run();\n case ClearSignContextType.DYNAMIC_NETWORK_ICON: {\n return this._sendPayloadInChunksTaskFactory(this._api, {\n payload,\n commandFactory: (args) =>\n new ProvideNetworkConfigurationCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n configurationType: NetworkConfigurationType.ICON,\n }),\n withPayloadLength: false,\n }).run();\n }\n default: {\n const uncoveredType: never = type;\n return CommandResultFactory({\n error: new InvalidStatusWordError(\n `The context type [${uncoveredType}] is not covered`,\n ),\n });\n }\n }\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import {\n type ClearSignContextSuccess,\n ClearSignContextType,\n} from \"@ledgerhq/context-module\";\nimport {\n ByteArrayBuilder,\n type CommandErrorResult,\n type CommandResult,\n CommandResultFactory,\n type InternalApi,\n InvalidStatusWordError,\n isSuccessCommandResult,\n LoadCertificateCommand,\n} from \"@ledgerhq/device-management-kit\";\nimport { DerivationPathUtils } from \"@ledgerhq/signer-utils\";\nimport { type Either, Left, Right } from \"purify-ts\";\n\nimport { ProvideEnumCommand } from \"@internal/app-binder/command/ProvideEnumCommand\";\nimport {\n NetworkConfigurationType,\n ProvideNetworkConfigurationCommand,\n} from \"@internal/app-binder/command/ProvideNetworkConfigurationCommand\";\nimport { ProvideNFTInformationCommand } from \"@internal/app-binder/command/ProvideNFTInformationCommand\";\nimport { ProvideProxyInfoCommand } from \"@internal/app-binder/command/ProvideProxyInfoCommand\";\nimport { ProvideTokenInformationCommand } from \"@internal/app-binder/command/ProvideTokenInformationCommand\";\nimport { ProvideTransactionFieldDescriptionCommand } from \"@internal/app-binder/command/ProvideTransactionFieldDescriptionCommand\";\nimport { ProvideTransactionInformationCommand } from \"@internal/app-binder/command/ProvideTransactionInformationCommand\";\nimport { ProvideTrustedNameCommand } from \"@internal/app-binder/command/ProvideTrustedNameCommand\";\nimport { ProvideWeb3CheckCommand } from \"@internal/app-binder/command/ProvideWeb3CheckCommand\";\nimport { SetExternalPluginCommand } from \"@internal/app-binder/command/SetExternalPluginCommand\";\nimport { SetPluginCommand } from \"@internal/app-binder/command/SetPluginCommand\";\nimport { StoreTransactionCommand } from \"@internal/app-binder/command/StoreTransactionCommand\";\nimport { type EthErrorCodes } from \"@internal/app-binder/command/utils/ethAppErrors\";\n\nimport { type ContextWithSubContexts } from \"./BuildFullContextsTask\";\nimport {\n SendCommandInChunksTask,\n type SendCommandInChunksTaskArgs,\n} from \"./SendCommandInChunksTask\";\nimport {\n SendPayloadInChunksTask,\n type SendPayloadInChunksTaskArgs,\n} from \"./SendPayloadInChunksTask\";\n\nexport type ProvideContextsTaskArgs = {\n /**\n * The list of clear sign context with subcontexts callback to provide.\n */\n contexts: ContextWithSubContexts[];\n /**\n * The derivation path to provide.\n */\n derivationPath: string;\n /**\n * The serialized transaction to provide.\n * This parameter is optional in the case there is no transaction at all, for instance\n * if there is only a standalone calldata embedded in a message.\n */\n serializedTransaction?: Uint8Array;\n};\n\nexport type ProvideContextsTaskResult = Either<\n CommandErrorResult<EthErrorCodes>,\n void\n>;\n\n/**\n * This task is responsible for providing the transaction context to the device.\n * It will send the subcontexts callbacks in order and finish with the context.\n */\nexport class ProvideContextsTask {\n constructor(\n private _api: InternalApi,\n private _args: ProvideContextsTaskArgs,\n private _sendPayloadInChunksTaskFactory = (\n api: InternalApi,\n args: SendPayloadInChunksTaskArgs<unknown>,\n ) => new SendPayloadInChunksTask(api, args),\n private _sendCommandInChunksTaskFactory = (\n api: InternalApi,\n args: SendCommandInChunksTaskArgs<unknown>,\n ) => new SendCommandInChunksTask(api, args),\n ) {}\n\n async run(): Promise<ProvideContextsTaskResult> {\n let transactionInfoProvided = false;\n\n for (const { context, subcontextCallbacks } of this._args.contexts) {\n for (const callback of subcontextCallbacks) {\n const subcontext = await callback();\n\n if (subcontext.type === ClearSignContextType.ERROR) {\n // silently ignore error subcontexts\n continue;\n }\n\n const res = await this.provideContext(subcontext);\n if (!isSuccessCommandResult(res)) {\n return Left(res);\n }\n }\n\n if (context.type === ClearSignContextType.PROXY_DELEGATE_CALL) {\n // In this specific case, the context is not valid as the challenge is not valid on the first call\n // the real data is provided in the subcontext callback\n continue;\n }\n\n if (\n !transactionInfoProvided &&\n this._args.serializedTransaction !== undefined &&\n context.type === ClearSignContextType.TRANSACTION_INFO\n ) {\n // Send the serialized transaction for the first TRANSACTION_INFO.\n // All other TRANSACTION_INFO contexts will be ignored as it will be for nested calldata.\n transactionInfoProvided = true;\n\n const paths = DerivationPathUtils.splitPath(this._args.derivationPath);\n const builder = new ByteArrayBuilder();\n builder.add8BitUIntToData(paths.length);\n paths.forEach((path) => {\n builder.add32BitUIntToData(path);\n });\n builder.addBufferToData(this._args.serializedTransaction);\n await this._sendCommandInChunksTaskFactory(this._api, {\n data: builder.build(),\n commandFactory: (args) =>\n new StoreTransactionCommand({\n serializedTransaction: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n }).run();\n }\n\n const res = await this.provideContext(context);\n if (!isSuccessCommandResult(res)) {\n return Left(res);\n }\n }\n\n return Right(void 0);\n }\n\n /**\n * This method will send the context to the device.\n *\n * @param context The clear sign context to provide.\n * @returns A promise that resolves when the command is sent.\n */\n async provideContext({\n type,\n payload,\n certificate,\n }: ClearSignContextSuccess): Promise<CommandResult<unknown, EthErrorCodes>> {\n // if a certificate is provided, we load it before sending the command\n if (certificate) {\n await this._api.sendCommand(\n new LoadCertificateCommand({\n keyUsage: certificate.keyUsageNumber,\n certificate: certificate.payload,\n }),\n );\n }\n\n switch (type) {\n case ClearSignContextType.PLUGIN: {\n return await this._api.sendCommand(new SetPluginCommand({ payload }));\n }\n case ClearSignContextType.EXTERNAL_PLUGIN: {\n return await this._api.sendCommand(\n new SetExternalPluginCommand({ payload }),\n );\n }\n case ClearSignContextType.NFT: {\n return await this._api.sendCommand(\n new ProvideNFTInformationCommand({ payload }),\n );\n }\n case ClearSignContextType.TOKEN: {\n return await this._api.sendCommand(\n new ProvideTokenInformationCommand({ payload }),\n );\n }\n case ClearSignContextType.TRANSACTION_INFO: {\n const transactionInfoResult =\n await this._sendPayloadInChunksTaskFactory(this._api, {\n payload,\n commandFactory: (args) =>\n new ProvideTransactionInformationCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n }).run();\n\n return transactionInfoResult;\n }\n case ClearSignContextType.TRUSTED_NAME: {\n return this._sendPayloadInChunksTaskFactory(this._api, {\n payload,\n commandFactory: (args) =>\n new ProvideTrustedNameCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n }).run();\n }\n case ClearSignContextType.ENUM:\n return this._sendPayloadInChunksTaskFactory(this._api, {\n payload,\n commandFactory: (args) =>\n new ProvideEnumCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n }).run();\n case ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION:\n return this._sendPayloadInChunksTaskFactory(this._api, {\n payload,\n commandFactory: (args) =>\n new ProvideTransactionFieldDescriptionCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n }).run();\n case ClearSignContextType.WEB3_CHECK:\n return this._sendPayloadInChunksTaskFactory(this._api, {\n payload,\n commandFactory: (args) =>\n new ProvideWeb3CheckCommand({\n payload: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n }).run();\n case ClearSignContextType.PROXY_DELEGATE_CALL:\n return this._sendPayloadInChunksTaskFactory(this._api, {\n payload,\n commandFactory: (args) =>\n new ProvideProxyInfoCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n }),\n }).run();\n case ClearSignContextType.DYNAMIC_NETWORK:\n // Dynamic network configuration uses the existing ProvideNetworkConfiguration command\n // but is provided as part of the context flow\n return this._sendPayloadInChunksTaskFactory(this._api, {\n payload,\n commandFactory: (args) =>\n new ProvideNetworkConfigurationCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n configurationType: NetworkConfigurationType.CONFIGURATION,\n }),\n }).run();\n case ClearSignContextType.DYNAMIC_NETWORK_ICON: {\n return this._sendPayloadInChunksTaskFactory(this._api, {\n payload,\n commandFactory: (args) =>\n new ProvideNetworkConfigurationCommand({\n data: args.chunkedData,\n isFirstChunk: args.isFirstChunk,\n configurationType: NetworkConfigurationType.ICON,\n }),\n withPayloadLength: false,\n }).run();\n }\n default: {\n const uncoveredType: never = type;\n return CommandResultFactory({\n error: new InvalidStatusWordError(\n `The context type [${uncoveredType}] is not covered`,\n ),\n });\n }\n }\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["ClearSignContextType", "ByteArrayBuilder", "CommandResultFactory", "InvalidStatusWordError", "isSuccessCommandResult", "LoadCertificateCommand", "DerivationPathUtils", "Left", "Right", "ProvideEnumCommand", "NetworkConfigurationType", "ProvideNetworkConfigurationCommand", "ProvideNFTInformationCommand", "ProvideProxyInfoCommand", "ProvideTokenInformationCommand", "ProvideTransactionFieldDescriptionCommand", "ProvideTransactionInformationCommand", "ProvideTrustedNameCommand", "ProvideWeb3CheckCommand", "SetExternalPluginCommand", "SetPluginCommand", "StoreTransactionCommand", "SendCommandInChunksTask", "SendPayloadInChunksTask", "ProvideContextsTask", "_api", "_args", "_sendPayloadInChunksTaskFactory", "api", "args", "_sendCommandInChunksTaskFactory", "transactionInfoProvided", "context", "subcontextCallbacks", "callback", "subcontext", "res", "paths", "builder", "path", "type", "payload", "certificate", "uncoveredType"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{ClearSignContextType as a}from"@ledgerhq/context-module";import{CommandResultFactory as A,InvalidStatusWordError as B,LoadCertificateCommand as T}from"@ledgerhq/device-management-kit";import{Left as w,Right as y}from"purify-ts";import{ProvideEnumCommand as R}from"../../app-binder/command/ProvideEnumCommand";import{ProvideNetworkConfigurationCommand as P}from"../../app-binder/command/ProvideNetworkConfigurationCommand";import{ProvideNFTInformationCommand as I}from"../../app-binder/command/ProvideNFTInformationCommand";import{ProvideProxyInfoCommand as g}from"../../app-binder/command/ProvideProxyInfoCommand";import{ProvideTokenInformationCommand as h}from"../../app-binder/command/ProvideTokenInformationCommand";import{ProvideTransactionFieldDescriptionCommand as E}from"../../app-binder/command/ProvideTransactionFieldDescriptionCommand";import{ProvideTransactionInformationCommand as F}from"../../app-binder/command/ProvideTransactionInformationCommand";import{ProvideTrustedNameCommand as b}from"../../app-binder/command/ProvideTrustedNameCommand";import{ProvideWeb3CheckCommand as U}from"../../app-binder/command/ProvideWeb3CheckCommand";import{SetExternalPluginCommand as O}from"../../app-binder/command/SetExternalPluginCommand";import{SetPluginCommand as H}from"../../app-binder/command/SetPluginCommand";import{StoreTransactionCommand as N}from"../../app-binder/command/StoreTransactionCommand";import{makeDeviceActionInternalApiMock as S}from"../../app-binder/device-action/__test-utils__/makeInternalApi";import{ProvideContextsTask as i}from"./ProvideContextsTask";import{SendCommandInChunksTask as _}from"./SendCommandInChunksTask";import{SendPayloadInChunksTask as D}from"./SendPayloadInChunksTask";describe("ProvideContextsTask",()=>{const e=S(),c=A({data:void 0}),v=A({data:void 0,error:{}});beforeEach(()=>{vi.resetAllMocks()}),describe("run",()=>{const n=vi.fn(),p=vi.fn(),r=vi.fn(),d=vi.fn();beforeEach(()=>{vi.clearAllMocks(),r.mockImplementation((t,o)=>({run:()=>p(t,o)})),d.mockImplementation((t,o)=>({run:()=>n(t,o)}))}),describe("with no subcontexts",()=>{it("should provide the transaction context for a TRANSACTION_INFO context",async()=>{const t={contexts:[{context:{type:a.TRANSACTION_INFO,payload:"0x00",certificate:{keyUsageNumber:1,payload:new Uint8Array([1,2,3])}},subcontextCallbacks:[]}],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};p.mockResolvedValue(c),n.mockResolvedValue(c),e.sendCommand.mockResolvedValue(c);const s=await new i(e,t,d,r).run();expect(s).toEqual(y(void 0)),expect(p).toHaveBeenCalledTimes(1),expect(r).toHaveBeenCalledWith(e,{data:new Uint8Array([5,128,0,0,44,128,0,0,60,128,0,0,0,0,0,0,0,0,0,0,0]),commandFactory:expect.any(Function)});const m=r.mock.calls[0][1].commandFactory,l={chunkedData:new Uint8Array([1,2,3,4]),isFirstChunk:!0},x=m(l);expect(x).toBeInstanceOf(N),expect(e.sendCommand).toHaveBeenCalledTimes(1),expect(e.sendCommand).toHaveBeenCalledWith(expect.any(T)),expect(n).toHaveBeenCalledTimes(1),expect(n).toHaveBeenCalledWith(e,{payload:"0x00",commandFactory:expect.any(Function)});const u=n.mock.calls[0][1].commandFactory,k=u(l);expect(k).toBeInstanceOf(F)}),it("should provide the transaction context for a TRANSACTION_INFO context without certificate",async()=>{const t={contexts:[{context:{type:a.TRANSACTION_INFO,payload:"0x00"},subcontextCallbacks:[]}],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};p.mockResolvedValue(c),n.mockResolvedValue(c),e.sendCommand.mockResolvedValue(c);const s=await new i(e,t,d,r).run();expect(s).toEqual(y(void 0)),expect(p).toHaveBeenCalledTimes(1),expect(r).toHaveBeenCalledWith(e,{data:new Uint8Array([5,128,0,0,44,128,0,0,60,128,0,0,0,0,0,0,0,0,0,0,0]),commandFactory:expect.any(Function)});const m=r.mock.calls[0][1].commandFactory,l={chunkedData:new Uint8Array([1,2,3,4]),isFirstChunk:!0},x=m(l);expect(x).toBeInstanceOf(N),expect(e.sendCommand).toHaveBeenCalledTimes(0),expect(n).toHaveBeenCalledTimes(1),expect(n).toHaveBeenCalledWith(e,{payload:"0x00",commandFactory:expect.any(Function)});const u=n.mock.calls[0][1].commandFactory,k=u(l);expect(k).toBeInstanceOf(F)}),it.each([[a.PLUGIN,H],[a.EXTERNAL_PLUGIN,O],[a.NFT,I],[a.TOKEN,h]])("should provide the transaction context by calling sendCommand for a %s context",async(t,o)=>{const s={contexts:[{context:{type:t,payload:"payload"},subcontextCallbacks:[]}],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};e.sendCommand.mockResolvedValue(c);const m=await new i(e,s,d,r).run();expect(m).toEqual(y(void 0)),expect(e.sendCommand).toHaveBeenCalledTimes(1),expect(e.sendCommand).toHaveBeenCalledWith(expect.any(o))}),it.each([[a.ENUM,R],[a.TRUSTED_NAME,b],[a.WEB3_CHECK,U],[a.TRANSACTION_FIELD_DESCRIPTION,E],[a.PROXY_DELEGATE_CALL,g],[a.DYNAMIC_NETWORK_ICON,P,!1],[a.DYNAMIC_NETWORK,P]])("should provide the transaction context by calling sendPayloadInChunksTask for a %s context",async(t,o,s=void 0)=>{const C={contexts:[{context:{type:t,payload:"payload",id:1,value:1},subcontextCallbacks:[]}],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};n.mockResolvedValue(c);const l=await new i(e,C,d,r).run();expect(l).toEqual(y(void 0)),expect(n).toHaveBeenCalledTimes(1),s===void 0?expect(n).toHaveBeenCalledWith(e,{payload:"payload",commandFactory:expect.any(Function)}):expect(n).toHaveBeenCalledWith(e,{payload:"payload",commandFactory:expect.any(Function),withPayloadLength:s});const f=d.mock.calls[0][1].commandFactory,u={chunkedData:new Uint8Array([1,2,3]),isFirstChunk:!0},k=f(u);expect(k).toBeInstanceOf(o)}),it("should skip the subcontexts if the context is an error",async()=>{const t={contexts:[{context:{type:a.TOKEN,payload:"payload",certificate:{keyUsageNumber:1,payload:new Uint8Array([1,2,3])}},subcontextCallbacks:[()=>Promise.resolve({type:a.ERROR,error:new Error("error")})]}],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};n.mockResolvedValue(c),e.sendCommand.mockResolvedValue(c);const s=await new i(e,t,d,r).run();expect(s).toEqual(y(void 0)),expect(n).toHaveBeenCalledTimes(0),expect(p).toHaveBeenCalledTimes(0),expect(e.sendCommand).toHaveBeenCalledTimes(2),expect(e.sendCommand).toHaveBeenNthCalledWith(1,expect.any(T)),expect(e.sendCommand).toHaveBeenNthCalledWith(2,expect.any(h))})}),describe("with subcontexts",()=>{it("should provide the transaction context and subcontext for a TRANSACTION_FIELD_DESCRIPTION context",async()=>{const t={contexts:[{context:{type:a.TRANSACTION_FIELD_DESCRIPTION,payload:"payload"},subcontextCallbacks:[()=>Promise.resolve({type:a.TOKEN,payload:"payload"})]}],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};n.mockResolvedValue(c),e.sendCommand.mockResolvedValue(c);const s=await new i(e,t,d,r).run();expect(s).toEqual(y(void 0)),expect(n).toHaveBeenCalledTimes(1),expect(n).toHaveBeenCalledWith(e,{payload:"payload",commandFactory:expect.any(Function)});const m=d.mock.calls[0][1].commandFactory,l={chunkedData:new Uint8Array([1,2,3]),isFirstChunk:!0},x=m(l);expect(x).toBeInstanceOf(E),expect(e.sendCommand).toHaveBeenCalledTimes(1),expect(e.sendCommand).toHaveBeenCalledWith(expect.any(h))}),it("should provide the transaction context and subcontexts for a TRUSTED_NAME context",async()=>{const t={contexts:[{context:{type:a.TRUSTED_NAME,payload:"payload"},subcontextCallbacks:[()=>Promise.resolve({type:a.NFT,payload:"payload1"}),()=>Promise.resolve({type:a.TOKEN,payload:"payload2"})]}],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};n.mockResolvedValue(c),e.sendCommand.mockResolvedValue(c);const s=await new i(e,t,d,r).run();expect(s).toEqual(y(void 0)),expect(n).toHaveBeenCalledTimes(1),expect(n).toHaveBeenCalledWith(e,{payload:"payload",commandFactory:expect.any(Function)});const m=d.mock.calls[0][1].commandFactory,l={chunkedData:new Uint8Array([1,2,3]),isFirstChunk:!0},x=m(l);expect(x).toBeInstanceOf(b),expect(e.sendCommand).toHaveBeenCalledTimes(2),expect(e.sendCommand).toHaveBeenNthCalledWith(1,expect.any(I)),expect(e.sendCommand).toHaveBeenNthCalledWith(2,expect.any(h))})}),describe("with subcontexts and certificate",()=>{it("should provide the transaction context and subcontexts for a TRUSTED_NAME context",async()=>{const t={contexts:[{context:{type:a.TRUSTED_NAME,payload:"payload",certificate:{keyUsageNumber:1,payload:new Uint8Array([1,2,3])}},subcontextCallbacks:[()=>Promise.resolve({type:a.NFT,payload:"payload1",certificate:{keyUsageNumber:2,payload:new Uint8Array([4,5,6])}})]}],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};n.mockResolvedValue(c),e.sendCommand.mockResolvedValue(c),await new i(e,t,d,r).run(),expect(e.sendCommand).toHaveBeenCalledTimes(3),expect(e.sendCommand).toHaveBeenNthCalledWith(1,expect.any(T)),expect(e.sendCommand).toHaveBeenNthCalledWith(2,expect.any(I)),expect(e.sendCommand).toHaveBeenNthCalledWith(3,expect.any(T))})}),describe("with error",()=>{it("should return an error if the provideContext fails",async()=>{const t={contexts:[{context:{type:a.TOKEN,payload:"payload"},subcontextCallbacks:[]}],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};e.sendCommand.mockResolvedValue(v);const s=await new i(e,t,d,r).run();expect(s).toEqual(w(v))}),it("should return an error if the provide subcontext fails",async()=>{const t={contexts:[{context:{type:a.TOKEN,payload:"payload"},subcontextCallbacks:[()=>Promise.resolve({type:a.TOKEN,payload:"payload"})]}],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};e.sendCommand.mockResolvedValue(v);const s=await new i(e,t,d,r).run();expect(s).toEqual(w(v))}),it("should return an error if the type is not supported",async()=>{const t={contexts:[{context:{type:"unsupported",payload:"payload"},subcontextCallbacks:[]}],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"},s=await new i(e,t,d,r).run();expect(s).toEqual(w(A({error:new B("The context type [unsupported] is not covered")})))})}),describe("factory types",()=>{it("should have a sendPayloadInChunksTaskFactory by default",()=>{const t=new i(e,{contexts:[{context:{type:a.TOKEN,payload:"payload"},subcontextCallbacks:[]}],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"});expect(t._sendPayloadInChunksTaskFactory).toBeDefined();const o=t._sendPayloadInChunksTaskFactory(e,{payload:"payload",commandFactory:()=>new E({data:new Uint8Array,isFirstChunk:!0})});expect(o).toBeInstanceOf(D)}),it("should have a sendCommandInChunksTaskFactory by default",()=>{const t=new i(e,{contexts:[{context:{type:a.TOKEN,payload:"payload"},subcontextCallbacks:[]}],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"});expect(t._sendCommandInChunksTaskFactory).toBeDefined();const o=t._sendCommandInChunksTaskFactory(e,{data:new Uint8Array,commandFactory:()=>new N({serializedTransaction:new Uint8Array,isFirstChunk:!0})});expect(o).toBeInstanceOf(_)})})})});
1
+ import{ClearSignContextType as a}from"@ledgerhq/context-module";import{CommandResultFactory as A,InvalidStatusWordError as B,LoadCertificateCommand as T}from"@ledgerhq/device-management-kit";import{Left as w,Right as x}from"purify-ts";import{ProvideEnumCommand as R}from"../../app-binder/command/ProvideEnumCommand";import{ProvideNetworkConfigurationCommand as F}from"../../app-binder/command/ProvideNetworkConfigurationCommand";import{ProvideNFTInformationCommand as E}from"../../app-binder/command/ProvideNFTInformationCommand";import{ProvideProxyInfoCommand as g}from"../../app-binder/command/ProvideProxyInfoCommand";import{ProvideTokenInformationCommand as h}from"../../app-binder/command/ProvideTokenInformationCommand";import{ProvideTransactionFieldDescriptionCommand as I}from"../../app-binder/command/ProvideTransactionFieldDescriptionCommand";import{ProvideTransactionInformationCommand as N}from"../../app-binder/command/ProvideTransactionInformationCommand";import{ProvideTrustedNameCommand as b}from"../../app-binder/command/ProvideTrustedNameCommand";import{ProvideWeb3CheckCommand as U}from"../../app-binder/command/ProvideWeb3CheckCommand";import{SetExternalPluginCommand as O}from"../../app-binder/command/SetExternalPluginCommand";import{SetPluginCommand as H}from"../../app-binder/command/SetPluginCommand";import{StoreTransactionCommand as P}from"../../app-binder/command/StoreTransactionCommand";import{makeDeviceActionInternalApiMock as _}from"../../app-binder/device-action/__test-utils__/makeInternalApi";import{ProvideContextsTask as i}from"./ProvideContextsTask";import{SendCommandInChunksTask as S}from"./SendCommandInChunksTask";import{SendPayloadInChunksTask as D}from"./SendPayloadInChunksTask";describe("ProvideContextsTask",()=>{const e=_(),c=A({data:void 0}),v=A({data:void 0,error:{}});beforeEach(()=>{vi.resetAllMocks()}),describe("run",()=>{const o=vi.fn(),C=vi.fn(),r=vi.fn(),d=vi.fn();beforeEach(()=>{vi.clearAllMocks(),r.mockImplementation((t,s)=>({run:()=>C(t,s)})),d.mockImplementation((t,s)=>({run:()=>o(t,s)}))}),describe("with no subcontexts",()=>{it("should provide the transaction context for a TRANSACTION_INFO context",async()=>{const t={contexts:[{context:{type:a.TRANSACTION_INFO,payload:"0x00",certificate:{keyUsageNumber:1,payload:new Uint8Array([1,2,3])}},subcontextCallbacks:[]}],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};C.mockResolvedValue(c),o.mockResolvedValue(c),e.sendCommand.mockResolvedValue(c);const n=await new i(e,t,d,r).run();expect(n).toEqual(x(void 0)),expect(C).toHaveBeenCalledTimes(1),expect(r).toHaveBeenCalledWith(e,{data:new Uint8Array([5,128,0,0,44,128,0,0,60,128,0,0,0,0,0,0,0,0,0,0,0]),commandFactory:expect.any(Function)});const m=r.mock.calls[0][1].commandFactory,l={chunkedData:new Uint8Array([1,2,3,4]),isFirstChunk:!0},y=m(l);expect(y).toBeInstanceOf(P),expect(e.sendCommand).toHaveBeenCalledTimes(1),expect(e.sendCommand).toHaveBeenCalledWith(expect.any(T)),expect(o).toHaveBeenCalledTimes(1),expect(o).toHaveBeenCalledWith(e,{payload:"0x00",commandFactory:expect.any(Function)});const u=o.mock.calls[0][1].commandFactory,k=u(l);expect(k).toBeInstanceOf(N)}),it("should provide the transaction context for a TRANSACTION_INFO context without certificate",async()=>{const t={contexts:[{context:{type:a.TRANSACTION_INFO,payload:"0x00"},subcontextCallbacks:[]}],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};C.mockResolvedValue(c),o.mockResolvedValue(c),e.sendCommand.mockResolvedValue(c);const n=await new i(e,t,d,r).run();expect(n).toEqual(x(void 0)),expect(C).toHaveBeenCalledTimes(1),expect(r).toHaveBeenCalledWith(e,{data:new Uint8Array([5,128,0,0,44,128,0,0,60,128,0,0,0,0,0,0,0,0,0,0,0]),commandFactory:expect.any(Function)});const m=r.mock.calls[0][1].commandFactory,l={chunkedData:new Uint8Array([1,2,3,4]),isFirstChunk:!0},y=m(l);expect(y).toBeInstanceOf(P),expect(e.sendCommand).toHaveBeenCalledTimes(0),expect(o).toHaveBeenCalledTimes(1),expect(o).toHaveBeenCalledWith(e,{payload:"0x00",commandFactory:expect.any(Function)});const u=o.mock.calls[0][1].commandFactory,k=u(l);expect(k).toBeInstanceOf(N)}),it.each([[a.PLUGIN,H],[a.EXTERNAL_PLUGIN,O],[a.NFT,E],[a.TOKEN,h]])("should provide the transaction context by calling sendCommand for a %s context",async(t,s)=>{const n={contexts:[{context:{type:t,payload:"payload"},subcontextCallbacks:[]}],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};e.sendCommand.mockResolvedValue(c);const m=await new i(e,n,d,r).run();expect(m).toEqual(x(void 0)),expect(e.sendCommand).toHaveBeenCalledTimes(1),expect(e.sendCommand).toHaveBeenCalledWith(expect.any(s))}),it.each([[a.ENUM,R],[a.TRUSTED_NAME,b],[a.WEB3_CHECK,U],[a.TRANSACTION_FIELD_DESCRIPTION,I],[a.DYNAMIC_NETWORK_ICON,F,!1],[a.DYNAMIC_NETWORK,F]])("should provide the transaction context by calling sendPayloadInChunksTask for a %s context",async(t,s,n=void 0)=>{const p={contexts:[{context:{type:t,payload:"payload",id:1,value:1},subcontextCallbacks:[]}],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};o.mockResolvedValue(c);const l=await new i(e,p,d,r).run();expect(l).toEqual(x(void 0)),expect(o).toHaveBeenCalledTimes(1),n===void 0?expect(o).toHaveBeenCalledWith(e,{payload:"payload",commandFactory:expect.any(Function)}):expect(o).toHaveBeenCalledWith(e,{payload:"payload",commandFactory:expect.any(Function),withPayloadLength:n});const f=d.mock.calls[0][1].commandFactory,u={chunkedData:new Uint8Array([1,2,3]),isFirstChunk:!0},k=f(u);expect(k).toBeInstanceOf(s)}),it("should only provide the subcontexts if the context is a PROXY_DELEGATE_CALL",async()=>{const t={contexts:[{context:{type:a.PROXY_DELEGATE_CALL,payload:"payload"},subcontextCallbacks:[()=>Promise.resolve({type:a.PROXY_DELEGATE_CALL,payload:"subcontext payload"})]}],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};o.mockResolvedValue(c);const n=await new i(e,t,d,r).run();expect(n).toEqual(x(void 0)),expect(o).toHaveBeenCalledTimes(1),expect(o).toHaveBeenCalledWith(e,{payload:"subcontext payload",commandFactory:expect.any(Function)});const m=d.mock.calls[0][1].commandFactory,l={chunkedData:new Uint8Array([1,2,3]),isFirstChunk:!0},y=m(l);expect(y).toBeInstanceOf(g)}),it("should skip the subcontexts if the context is an error",async()=>{const t={contexts:[{context:{type:a.TOKEN,payload:"payload",certificate:{keyUsageNumber:1,payload:new Uint8Array([1,2,3])}},subcontextCallbacks:[()=>Promise.resolve({type:a.ERROR,error:new Error("error")})]}],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};o.mockResolvedValue(c),e.sendCommand.mockResolvedValue(c);const n=await new i(e,t,d,r).run();expect(n).toEqual(x(void 0)),expect(o).toHaveBeenCalledTimes(0),expect(C).toHaveBeenCalledTimes(0),expect(e.sendCommand).toHaveBeenCalledTimes(2),expect(e.sendCommand).toHaveBeenNthCalledWith(1,expect.any(T)),expect(e.sendCommand).toHaveBeenNthCalledWith(2,expect.any(h))})}),describe("with subcontexts",()=>{it("should provide the transaction context and subcontext for a TRANSACTION_FIELD_DESCRIPTION context",async()=>{const t={contexts:[{context:{type:a.TRANSACTION_FIELD_DESCRIPTION,payload:"payload"},subcontextCallbacks:[()=>Promise.resolve({type:a.TOKEN,payload:"payload"})]}],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};o.mockResolvedValue(c),e.sendCommand.mockResolvedValue(c);const n=await new i(e,t,d,r).run();expect(n).toEqual(x(void 0)),expect(o).toHaveBeenCalledTimes(1),expect(o).toHaveBeenCalledWith(e,{payload:"payload",commandFactory:expect.any(Function)});const m=d.mock.calls[0][1].commandFactory,l={chunkedData:new Uint8Array([1,2,3]),isFirstChunk:!0},y=m(l);expect(y).toBeInstanceOf(I),expect(e.sendCommand).toHaveBeenCalledTimes(1),expect(e.sendCommand).toHaveBeenCalledWith(expect.any(h))}),it("should provide the transaction context and subcontexts for a TRUSTED_NAME context",async()=>{const t={contexts:[{context:{type:a.TRUSTED_NAME,payload:"payload"},subcontextCallbacks:[()=>Promise.resolve({type:a.NFT,payload:"payload1"}),()=>Promise.resolve({type:a.TOKEN,payload:"payload2"})]}],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};o.mockResolvedValue(c),e.sendCommand.mockResolvedValue(c);const n=await new i(e,t,d,r).run();expect(n).toEqual(x(void 0)),expect(o).toHaveBeenCalledTimes(1),expect(o).toHaveBeenCalledWith(e,{payload:"payload",commandFactory:expect.any(Function)});const m=d.mock.calls[0][1].commandFactory,l={chunkedData:new Uint8Array([1,2,3]),isFirstChunk:!0},y=m(l);expect(y).toBeInstanceOf(b),expect(e.sendCommand).toHaveBeenCalledTimes(2),expect(e.sendCommand).toHaveBeenNthCalledWith(1,expect.any(E)),expect(e.sendCommand).toHaveBeenNthCalledWith(2,expect.any(h))})}),describe("with subcontexts and certificate",()=>{it("should provide the transaction context and subcontexts for a TRUSTED_NAME context",async()=>{const t={contexts:[{context:{type:a.TRUSTED_NAME,payload:"payload",certificate:{keyUsageNumber:1,payload:new Uint8Array([1,2,3])}},subcontextCallbacks:[()=>Promise.resolve({type:a.NFT,payload:"payload1",certificate:{keyUsageNumber:2,payload:new Uint8Array([4,5,6])}})]}],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};o.mockResolvedValue(c),e.sendCommand.mockResolvedValue(c),await new i(e,t,d,r).run(),expect(e.sendCommand).toHaveBeenCalledTimes(3),expect(e.sendCommand).toHaveBeenNthCalledWith(1,expect.any(T)),expect(e.sendCommand).toHaveBeenNthCalledWith(2,expect.any(E)),expect(e.sendCommand).toHaveBeenNthCalledWith(3,expect.any(T))})}),describe("with error",()=>{it("should return an error if the provideContext fails",async()=>{const t={contexts:[{context:{type:a.TOKEN,payload:"payload"},subcontextCallbacks:[]}],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};e.sendCommand.mockResolvedValue(v);const n=await new i(e,t,d,r).run();expect(n).toEqual(w(v))}),it("should return an error if the provide subcontext fails",async()=>{const t={contexts:[{context:{type:a.TOKEN,payload:"payload"},subcontextCallbacks:[()=>Promise.resolve({type:a.TOKEN,payload:"payload"})]}],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"};e.sendCommand.mockResolvedValue(v);const n=await new i(e,t,d,r).run();expect(n).toEqual(w(v))}),it("should return an error if the type is not supported",async()=>{const t={contexts:[{context:{type:"unsupported",payload:"payload"},subcontextCallbacks:[]}],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"},n=await new i(e,t,d,r).run();expect(n).toEqual(w(A({error:new B("The context type [unsupported] is not covered")})))})}),describe("factory types",()=>{it("should have a sendPayloadInChunksTaskFactory by default",()=>{const t=new i(e,{contexts:[{context:{type:a.TOKEN,payload:"payload"},subcontextCallbacks:[]}],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"});expect(t._sendPayloadInChunksTaskFactory).toBeDefined();const s=t._sendPayloadInChunksTaskFactory(e,{payload:"payload",commandFactory:()=>new I({data:new Uint8Array,isFirstChunk:!0})});expect(s).toBeInstanceOf(D)}),it("should have a sendCommandInChunksTaskFactory by default",()=>{const t=new i(e,{contexts:[{context:{type:a.TOKEN,payload:"payload"},subcontextCallbacks:[]}],serializedTransaction:new Uint8Array,derivationPath:"44'/60'/0'/0/0"});expect(t._sendCommandInChunksTaskFactory).toBeDefined();const s=t._sendCommandInChunksTaskFactory(e,{data:new Uint8Array,commandFactory:()=>new P({serializedTransaction:new Uint8Array,isFirstChunk:!0})});expect(s).toBeInstanceOf(S)})})})});
2
2
  //# sourceMappingURL=ProvideContextsTask.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/internal/app-binder/task/ProvideContextsTask.test.ts"],
4
- "sourcesContent": ["import { ClearSignContextType } from \"@ledgerhq/context-module\";\nimport {\n CommandResultFactory,\n type InternalApi,\n InvalidStatusWordError,\n LoadCertificateCommand,\n type UnknownDeviceExchangeError,\n} from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\n\nimport { ProvideEnumCommand } from \"@internal/app-binder/command/ProvideEnumCommand\";\nimport { ProvideNetworkConfigurationCommand } from \"@internal/app-binder/command/ProvideNetworkConfigurationCommand\";\nimport { ProvideNFTInformationCommand } from \"@internal/app-binder/command/ProvideNFTInformationCommand\";\nimport { ProvideProxyInfoCommand } from \"@internal/app-binder/command/ProvideProxyInfoCommand\";\nimport { ProvideTokenInformationCommand } from \"@internal/app-binder/command/ProvideTokenInformationCommand\";\nimport { ProvideTransactionFieldDescriptionCommand } from \"@internal/app-binder/command/ProvideTransactionFieldDescriptionCommand\";\nimport { ProvideTransactionInformationCommand } from \"@internal/app-binder/command/ProvideTransactionInformationCommand\";\nimport { ProvideTrustedNameCommand } from \"@internal/app-binder/command/ProvideTrustedNameCommand\";\nimport { ProvideWeb3CheckCommand } from \"@internal/app-binder/command/ProvideWeb3CheckCommand\";\nimport { SetExternalPluginCommand } from \"@internal/app-binder/command/SetExternalPluginCommand\";\nimport { SetPluginCommand } from \"@internal/app-binder/command/SetPluginCommand\";\nimport { StoreTransactionCommand } from \"@internal/app-binder/command/StoreTransactionCommand\";\nimport { type EthErrorCodes } from \"@internal/app-binder/command/utils/ethAppErrors\";\nimport { makeDeviceActionInternalApiMock } from \"@internal/app-binder/device-action/__test-utils__/makeInternalApi\";\n\nimport {\n ProvideContextsTask,\n type ProvideContextsTaskArgs,\n} from \"./ProvideContextsTask\";\nimport {\n SendCommandInChunksTask,\n type SendCommandInChunksTaskArgs,\n} from \"./SendCommandInChunksTask\";\nimport {\n SendPayloadInChunksTask,\n type SendPayloadInChunksTaskArgs,\n} from \"./SendPayloadInChunksTask\";\n\ndescribe(\"ProvideContextsTask\", () => {\n const api = makeDeviceActionInternalApiMock();\n const successResult = CommandResultFactory<void, EthErrorCodes>({\n data: undefined,\n });\n const errorResult = CommandResultFactory<void, EthErrorCodes>({\n data: undefined,\n error: {} as UnknownDeviceExchangeError,\n });\n\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n describe(\"run\", () => {\n const sendPayloadInChunksRunMock = vi.fn();\n const sendCommandInChunksTaskRunMock = vi.fn();\n const sendCommandInChunksTaskMockFactory = vi.fn();\n const sendPayloadInChunksTaskMockFactory = vi.fn();\n\n beforeEach(() => {\n vi.clearAllMocks();\n sendCommandInChunksTaskMockFactory.mockImplementation(\n (a: InternalApi, args: SendCommandInChunksTaskArgs<unknown>) =>\n ({\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n run: () => sendCommandInChunksTaskRunMock(a, args),\n }) as unknown as SendCommandInChunksTask<unknown>,\n );\n sendPayloadInChunksTaskMockFactory.mockImplementation(\n (a: InternalApi, args: SendPayloadInChunksTaskArgs<unknown>) =>\n ({\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n run: () => sendPayloadInChunksRunMock(a, args),\n }) as unknown as SendPayloadInChunksTask<unknown>,\n );\n });\n\n describe(\"with no subcontexts\", () => {\n it(\"should provide the transaction context for a TRANSACTION_INFO context\", async () => {\n // GIVEN\n const args: ProvideContextsTaskArgs = {\n contexts: [\n {\n context: {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: \"0x00\",\n certificate: {\n keyUsageNumber: 1,\n payload: new Uint8Array([1, 2, 3]),\n },\n },\n subcontextCallbacks: [],\n },\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n sendCommandInChunksTaskRunMock.mockResolvedValue(successResult);\n sendPayloadInChunksRunMock.mockResolvedValue(successResult);\n api.sendCommand.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideContextsTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Right(void 0));\n\n // StoreTransactionCommand\n expect(sendCommandInChunksTaskRunMock).toHaveBeenCalledTimes(1);\n expect(sendCommandInChunksTaskMockFactory).toHaveBeenCalledWith(api, {\n data: new Uint8Array([\n 0x05, 0x80, 0x00, 0x00, 0x2c, 0x80, 0x00, 0x00, 0x3c, 0x80, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n ]),\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n commandFactory: expect.any(Function),\n });\n // Test that the commandFactory returns a StoreTransactionCommand\n const factoryCall = sendCommandInChunksTaskMockFactory.mock.calls[0]!;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const commandFactory = factoryCall[1].commandFactory;\n // arbitrary data to test the commandFactory\n const mockArgs = {\n chunkedData: new Uint8Array([1, 2, 3, 4]),\n isFirstChunk: true,\n };\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n const command = commandFactory(mockArgs);\n expect(command).toBeInstanceOf(StoreTransactionCommand);\n\n // LoadCertificateCommand\n expect(api.sendCommand).toHaveBeenCalledTimes(1);\n expect(api.sendCommand).toHaveBeenCalledWith(\n expect.any(LoadCertificateCommand),\n );\n\n // ProvideTransactionInformationCommand\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledTimes(1);\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledWith(api, {\n payload: \"0x00\",\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n commandFactory: expect.any(Function),\n });\n // Test that the commandFactory returns a ProvideTransactionInformationCommand\n const factoryCall2 = sendPayloadInChunksRunMock.mock.calls[0]!;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const commandFactory2 = factoryCall2[1].commandFactory;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n const command2 = commandFactory2(mockArgs);\n expect(command2).toBeInstanceOf(ProvideTransactionInformationCommand);\n });\n\n it(\"should provide the transaction context for a TRANSACTION_INFO context without certificate\", async () => {\n // GIVEN\n const args: ProvideContextsTaskArgs = {\n contexts: [\n {\n context: {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: \"0x00\",\n },\n subcontextCallbacks: [],\n },\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n sendCommandInChunksTaskRunMock.mockResolvedValue(successResult);\n sendPayloadInChunksRunMock.mockResolvedValue(successResult);\n api.sendCommand.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideContextsTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Right(void 0));\n\n // StoreTransactionCommand\n expect(sendCommandInChunksTaskRunMock).toHaveBeenCalledTimes(1);\n expect(sendCommandInChunksTaskMockFactory).toHaveBeenCalledWith(api, {\n data: new Uint8Array([\n 0x05, 0x80, 0x00, 0x00, 0x2c, 0x80, 0x00, 0x00, 0x3c, 0x80, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n ]),\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n commandFactory: expect.any(Function),\n });\n // Test that the commandFactory returns a StoreTransactionCommand\n const factoryCall = sendCommandInChunksTaskMockFactory.mock.calls[0]!;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const commandFactory = factoryCall[1].commandFactory;\n // arbitrary data to test the commandFactory\n const mockArgs = {\n chunkedData: new Uint8Array([1, 2, 3, 4]),\n isFirstChunk: true,\n };\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n const command = commandFactory(mockArgs);\n expect(command).toBeInstanceOf(StoreTransactionCommand);\n\n // LoadCertificateCommand\n expect(api.sendCommand).toHaveBeenCalledTimes(0);\n\n // ProvideTransactionInformationCommand\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledTimes(1);\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledWith(api, {\n payload: \"0x00\",\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n commandFactory: expect.any(Function),\n });\n // Test that the commandFactory returns a ProvideTransactionInformationCommand\n const factoryCall2 = sendPayloadInChunksRunMock.mock.calls[0]!;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const commandFactory2 = factoryCall2[1].commandFactory;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n const command2 = commandFactory2(mockArgs);\n expect(command2).toBeInstanceOf(ProvideTransactionInformationCommand);\n });\n\n it.each([\n [ClearSignContextType.PLUGIN, SetPluginCommand],\n [ClearSignContextType.EXTERNAL_PLUGIN, SetExternalPluginCommand],\n [ClearSignContextType.NFT, ProvideNFTInformationCommand],\n [ClearSignContextType.TOKEN, ProvideTokenInformationCommand],\n ] as const)(\n \"should provide the transaction context by calling sendCommand for a %s context\",\n async (contextType, commandClass) => {\n // GIVEN\n const args: ProvideContextsTaskArgs = {\n contexts: [\n {\n context: {\n type: contextType,\n payload: \"payload\",\n },\n subcontextCallbacks: [],\n },\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n api.sendCommand.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideContextsTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Right(void 0));\n expect(api.sendCommand).toHaveBeenCalledTimes(1);\n expect(api.sendCommand).toHaveBeenCalledWith(\n expect.any(commandClass),\n );\n },\n );\n\n it.each([\n [ClearSignContextType.ENUM, ProvideEnumCommand],\n [ClearSignContextType.TRUSTED_NAME, ProvideTrustedNameCommand],\n [ClearSignContextType.WEB3_CHECK, ProvideWeb3CheckCommand],\n [\n ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n ProvideTransactionFieldDescriptionCommand,\n ],\n [ClearSignContextType.PROXY_DELEGATE_CALL, ProvideProxyInfoCommand],\n [\n ClearSignContextType.DYNAMIC_NETWORK_ICON,\n ProvideNetworkConfigurationCommand,\n false,\n ],\n [\n ClearSignContextType.DYNAMIC_NETWORK,\n ProvideNetworkConfigurationCommand,\n ],\n ] as const)(\n \"should provide the transaction context by calling sendPayloadInChunksTask for a %s context\",\n async (contextType, commandClass, withPayloadLength = undefined) => {\n // GIVEN\n const args: ProvideContextsTaskArgs = {\n contexts: [\n {\n context: {\n type: contextType,\n payload: \"payload\",\n id: 1,\n value: 1,\n },\n subcontextCallbacks: [],\n },\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n sendPayloadInChunksRunMock.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideContextsTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Right(void 0));\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledTimes(1);\n if (withPayloadLength === undefined) {\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledWith(api, {\n payload: \"payload\",\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n commandFactory: expect.any(Function),\n });\n } else {\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledWith(api, {\n payload: \"payload\",\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n commandFactory: expect.any(Function),\n withPayloadLength,\n });\n }\n\n // Test that the commandFactory returns a commandClass\n const factoryCall = sendPayloadInChunksTaskMockFactory.mock.calls[0]!;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const commandFactory = factoryCall[1].commandFactory;\n const mockArgs = {\n chunkedData: new Uint8Array([1, 2, 3]),\n isFirstChunk: true,\n };\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n const command = commandFactory(mockArgs);\n expect(command).toBeInstanceOf(commandClass);\n },\n );\n\n it(\"should skip the subcontexts if the context is an error\", async () => {\n // GIVEN\n const args: ProvideContextsTaskArgs = {\n contexts: [\n {\n context: {\n type: ClearSignContextType.TOKEN,\n payload: \"payload\",\n certificate: {\n keyUsageNumber: 1,\n payload: new Uint8Array([1, 2, 3]),\n },\n },\n subcontextCallbacks: [\n () =>\n Promise.resolve({\n type: ClearSignContextType.ERROR,\n error: new Error(\"error\"),\n }),\n ],\n },\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n sendPayloadInChunksRunMock.mockResolvedValue(successResult);\n api.sendCommand.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideContextsTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Right(void 0));\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledTimes(0);\n expect(sendCommandInChunksTaskRunMock).toHaveBeenCalledTimes(0);\n expect(api.sendCommand).toHaveBeenCalledTimes(2);\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n 1,\n expect.any(LoadCertificateCommand),\n );\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n 2,\n expect.any(ProvideTokenInformationCommand),\n );\n });\n });\n\n describe(\"with subcontexts\", () => {\n it(\"should provide the transaction context and subcontext for a TRANSACTION_FIELD_DESCRIPTION context\", async () => {\n // GIVEN\n const args: ProvideContextsTaskArgs = {\n contexts: [\n {\n context: {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"payload\",\n },\n subcontextCallbacks: [\n () =>\n Promise.resolve({\n type: ClearSignContextType.TOKEN,\n payload: \"payload\",\n }),\n ],\n },\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n sendPayloadInChunksRunMock.mockResolvedValue(successResult);\n api.sendCommand.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideContextsTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Right(void 0));\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledTimes(1);\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledWith(api, {\n payload: \"payload\",\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n commandFactory: expect.any(Function),\n });\n\n // Test that the commandFactory returns a commandClass\n const factoryCall = sendPayloadInChunksTaskMockFactory.mock.calls[0]!;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const commandFactory = factoryCall[1].commandFactory;\n const mockArgs = {\n chunkedData: new Uint8Array([1, 2, 3]),\n isFirstChunk: true,\n };\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n const command = commandFactory(mockArgs);\n expect(command).toBeInstanceOf(\n ProvideTransactionFieldDescriptionCommand,\n );\n\n expect(api.sendCommand).toHaveBeenCalledTimes(1);\n expect(api.sendCommand).toHaveBeenCalledWith(\n expect.any(ProvideTokenInformationCommand),\n );\n });\n\n it(\"should provide the transaction context and subcontexts for a TRUSTED_NAME context\", async () => {\n // GIVEN\n const args: ProvideContextsTaskArgs = {\n contexts: [\n {\n context: {\n type: ClearSignContextType.TRUSTED_NAME,\n payload: \"payload\",\n },\n subcontextCallbacks: [\n () =>\n Promise.resolve({\n type: ClearSignContextType.NFT,\n payload: \"payload1\",\n }),\n\n () =>\n Promise.resolve({\n type: ClearSignContextType.TOKEN,\n payload: \"payload2\",\n }),\n ],\n },\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n sendPayloadInChunksRunMock.mockResolvedValue(successResult);\n api.sendCommand.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideContextsTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Right(void 0));\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledTimes(1);\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledWith(api, {\n payload: \"payload\",\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n commandFactory: expect.any(Function),\n });\n\n // Test that the commandFactory returns a commandClass\n const factoryCall = sendPayloadInChunksTaskMockFactory.mock.calls[0]!;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const commandFactory = factoryCall[1].commandFactory;\n const mockArgs = {\n chunkedData: new Uint8Array([1, 2, 3]),\n isFirstChunk: true,\n };\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n const command = commandFactory(mockArgs);\n expect(command).toBeInstanceOf(ProvideTrustedNameCommand);\n\n expect(api.sendCommand).toHaveBeenCalledTimes(2);\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n 1,\n expect.any(ProvideNFTInformationCommand),\n );\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n 2,\n expect.any(ProvideTokenInformationCommand),\n );\n });\n });\n\n describe(\"with subcontexts and certificate\", () => {\n it(\"should provide the transaction context and subcontexts for a TRUSTED_NAME context\", async () => {\n // GIVEN\n const args: ProvideContextsTaskArgs = {\n contexts: [\n {\n context: {\n type: ClearSignContextType.TRUSTED_NAME,\n payload: \"payload\",\n certificate: {\n keyUsageNumber: 1,\n payload: new Uint8Array([1, 2, 3]),\n },\n },\n subcontextCallbacks: [\n () =>\n Promise.resolve({\n type: ClearSignContextType.NFT,\n payload: \"payload1\",\n certificate: {\n keyUsageNumber: 2,\n payload: new Uint8Array([4, 5, 6]),\n },\n }),\n ],\n },\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n sendPayloadInChunksRunMock.mockResolvedValue(successResult);\n api.sendCommand.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideContextsTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n await task.run();\n\n // THEN\n expect(api.sendCommand).toHaveBeenCalledTimes(3);\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n 1,\n expect.any(LoadCertificateCommand),\n );\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n 2,\n expect.any(ProvideNFTInformationCommand),\n );\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n 3,\n expect.any(LoadCertificateCommand),\n );\n });\n });\n\n describe(\"with error\", () => {\n it(\"should return an error if the provideContext fails\", async () => {\n // GIVEN\n const args: ProvideContextsTaskArgs = {\n contexts: [\n {\n context: {\n type: ClearSignContextType.TOKEN,\n payload: \"payload\",\n },\n subcontextCallbacks: [],\n },\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n api.sendCommand.mockResolvedValue(errorResult);\n\n // WHEN\n const task = new ProvideContextsTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Left(errorResult));\n });\n\n it(\"should return an error if the provide subcontext fails\", async () => {\n // GIVEN\n const args: ProvideContextsTaskArgs = {\n contexts: [\n {\n context: {\n type: ClearSignContextType.TOKEN,\n payload: \"payload\",\n },\n subcontextCallbacks: [\n () =>\n Promise.resolve({\n type: ClearSignContextType.TOKEN,\n payload: \"payload\",\n }),\n ],\n },\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n api.sendCommand.mockResolvedValue(errorResult);\n\n // WHEN\n const task = new ProvideContextsTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Left(errorResult));\n });\n\n it(\"should return an error if the type is not supported\", async () => {\n // GIVEN\n const args: ProvideContextsTaskArgs = {\n contexts: [\n {\n context: {\n type: \"unsupported\" as unknown as ClearSignContextType.TOKEN,\n payload: \"payload\",\n },\n subcontextCallbacks: [],\n },\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n\n // WHEN\n const task = new ProvideContextsTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(\n Left(\n CommandResultFactory({\n error: new InvalidStatusWordError(\n `The context type [unsupported] is not covered`,\n ),\n }),\n ),\n );\n });\n });\n\n describe(\"factory types\", () => {\n it(\"should have a sendPayloadInChunksTaskFactory by default\", () => {\n // GIVEN\n const task = new ProvideContextsTask(api, {\n contexts: [\n {\n context: {\n type: ClearSignContextType.TOKEN,\n payload: \"payload\",\n },\n subcontextCallbacks: [],\n },\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n });\n\n // THEN\n expect(task[\"_sendPayloadInChunksTaskFactory\"]).toBeDefined();\n const sendPayloadInChunksTask = task[\"_sendPayloadInChunksTaskFactory\"](\n api,\n {\n payload: \"payload\",\n commandFactory: () =>\n new ProvideTransactionFieldDescriptionCommand({\n data: new Uint8Array(),\n isFirstChunk: true,\n }),\n },\n );\n expect(sendPayloadInChunksTask).toBeInstanceOf(SendPayloadInChunksTask);\n });\n\n it(\"should have a sendCommandInChunksTaskFactory by default\", () => {\n // GIVEN\n const task = new ProvideContextsTask(api, {\n contexts: [\n {\n context: {\n type: ClearSignContextType.TOKEN,\n payload: \"payload\",\n },\n subcontextCallbacks: [],\n },\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n });\n\n // THEN\n expect(task[\"_sendCommandInChunksTaskFactory\"]).toBeDefined();\n const sendCommandInChunksTask = task[\"_sendCommandInChunksTaskFactory\"](\n api,\n {\n data: new Uint8Array(),\n commandFactory: () =>\n new StoreTransactionCommand({\n serializedTransaction: new Uint8Array(),\n isFirstChunk: true,\n }),\n },\n );\n expect(sendCommandInChunksTask).toBeInstanceOf(SendCommandInChunksTask);\n });\n });\n });\n});\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { ClearSignContextType } from \"@ledgerhq/context-module\";\nimport {\n CommandResultFactory,\n type InternalApi,\n InvalidStatusWordError,\n LoadCertificateCommand,\n type UnknownDeviceExchangeError,\n} from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\n\nimport { ProvideEnumCommand } from \"@internal/app-binder/command/ProvideEnumCommand\";\nimport { ProvideNetworkConfigurationCommand } from \"@internal/app-binder/command/ProvideNetworkConfigurationCommand\";\nimport { ProvideNFTInformationCommand } from \"@internal/app-binder/command/ProvideNFTInformationCommand\";\nimport { ProvideProxyInfoCommand } from \"@internal/app-binder/command/ProvideProxyInfoCommand\";\nimport { ProvideTokenInformationCommand } from \"@internal/app-binder/command/ProvideTokenInformationCommand\";\nimport { ProvideTransactionFieldDescriptionCommand } from \"@internal/app-binder/command/ProvideTransactionFieldDescriptionCommand\";\nimport { ProvideTransactionInformationCommand } from \"@internal/app-binder/command/ProvideTransactionInformationCommand\";\nimport { ProvideTrustedNameCommand } from \"@internal/app-binder/command/ProvideTrustedNameCommand\";\nimport { ProvideWeb3CheckCommand } from \"@internal/app-binder/command/ProvideWeb3CheckCommand\";\nimport { SetExternalPluginCommand } from \"@internal/app-binder/command/SetExternalPluginCommand\";\nimport { SetPluginCommand } from \"@internal/app-binder/command/SetPluginCommand\";\nimport { StoreTransactionCommand } from \"@internal/app-binder/command/StoreTransactionCommand\";\nimport { type EthErrorCodes } from \"@internal/app-binder/command/utils/ethAppErrors\";\nimport { makeDeviceActionInternalApiMock } from \"@internal/app-binder/device-action/__test-utils__/makeInternalApi\";\n\nimport {\n ProvideContextsTask,\n type ProvideContextsTaskArgs,\n} from \"./ProvideContextsTask\";\nimport {\n SendCommandInChunksTask,\n type SendCommandInChunksTaskArgs,\n} from \"./SendCommandInChunksTask\";\nimport {\n SendPayloadInChunksTask,\n type SendPayloadInChunksTaskArgs,\n} from \"./SendPayloadInChunksTask\";\n\ndescribe(\"ProvideContextsTask\", () => {\n const api = makeDeviceActionInternalApiMock();\n const successResult = CommandResultFactory<void, EthErrorCodes>({\n data: undefined,\n });\n const errorResult = CommandResultFactory<void, EthErrorCodes>({\n data: undefined,\n error: {} as UnknownDeviceExchangeError,\n });\n\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n describe(\"run\", () => {\n const sendPayloadInChunksRunMock = vi.fn();\n const sendCommandInChunksTaskRunMock = vi.fn();\n const sendCommandInChunksTaskMockFactory = vi.fn();\n const sendPayloadInChunksTaskMockFactory = vi.fn();\n\n beforeEach(() => {\n vi.clearAllMocks();\n sendCommandInChunksTaskMockFactory.mockImplementation(\n (a: InternalApi, args: SendCommandInChunksTaskArgs<unknown>) =>\n ({\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n run: () => sendCommandInChunksTaskRunMock(a, args),\n }) as unknown as SendCommandInChunksTask<unknown>,\n );\n sendPayloadInChunksTaskMockFactory.mockImplementation(\n (a: InternalApi, args: SendPayloadInChunksTaskArgs<unknown>) =>\n ({\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n run: () => sendPayloadInChunksRunMock(a, args),\n }) as unknown as SendPayloadInChunksTask<unknown>,\n );\n });\n\n describe(\"with no subcontexts\", () => {\n it(\"should provide the transaction context for a TRANSACTION_INFO context\", async () => {\n // GIVEN\n const args: ProvideContextsTaskArgs = {\n contexts: [\n {\n context: {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: \"0x00\",\n certificate: {\n keyUsageNumber: 1,\n payload: new Uint8Array([1, 2, 3]),\n },\n },\n subcontextCallbacks: [],\n },\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n sendCommandInChunksTaskRunMock.mockResolvedValue(successResult);\n sendPayloadInChunksRunMock.mockResolvedValue(successResult);\n api.sendCommand.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideContextsTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Right(void 0));\n\n // StoreTransactionCommand\n expect(sendCommandInChunksTaskRunMock).toHaveBeenCalledTimes(1);\n expect(sendCommandInChunksTaskMockFactory).toHaveBeenCalledWith(api, {\n data: new Uint8Array([\n 0x05, 0x80, 0x00, 0x00, 0x2c, 0x80, 0x00, 0x00, 0x3c, 0x80, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n ]),\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n commandFactory: expect.any(Function),\n });\n // Test that the commandFactory returns a StoreTransactionCommand\n const factoryCall = sendCommandInChunksTaskMockFactory.mock.calls[0]!;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const commandFactory = factoryCall[1].commandFactory;\n // arbitrary data to test the commandFactory\n const mockArgs = {\n chunkedData: new Uint8Array([1, 2, 3, 4]),\n isFirstChunk: true,\n };\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n const command = commandFactory(mockArgs);\n expect(command).toBeInstanceOf(StoreTransactionCommand);\n\n // LoadCertificateCommand\n expect(api.sendCommand).toHaveBeenCalledTimes(1);\n expect(api.sendCommand).toHaveBeenCalledWith(\n expect.any(LoadCertificateCommand),\n );\n\n // ProvideTransactionInformationCommand\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledTimes(1);\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledWith(api, {\n payload: \"0x00\",\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n commandFactory: expect.any(Function),\n });\n // Test that the commandFactory returns a ProvideTransactionInformationCommand\n const factoryCall2 = sendPayloadInChunksRunMock.mock.calls[0]!;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const commandFactory2 = factoryCall2[1].commandFactory;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n const command2 = commandFactory2(mockArgs);\n expect(command2).toBeInstanceOf(ProvideTransactionInformationCommand);\n });\n\n it(\"should provide the transaction context for a TRANSACTION_INFO context without certificate\", async () => {\n // GIVEN\n const args: ProvideContextsTaskArgs = {\n contexts: [\n {\n context: {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: \"0x00\",\n },\n subcontextCallbacks: [],\n },\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n sendCommandInChunksTaskRunMock.mockResolvedValue(successResult);\n sendPayloadInChunksRunMock.mockResolvedValue(successResult);\n api.sendCommand.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideContextsTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Right(void 0));\n\n // StoreTransactionCommand\n expect(sendCommandInChunksTaskRunMock).toHaveBeenCalledTimes(1);\n expect(sendCommandInChunksTaskMockFactory).toHaveBeenCalledWith(api, {\n data: new Uint8Array([\n 0x05, 0x80, 0x00, 0x00, 0x2c, 0x80, 0x00, 0x00, 0x3c, 0x80, 0x00,\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n ]),\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n commandFactory: expect.any(Function),\n });\n // Test that the commandFactory returns a StoreTransactionCommand\n const factoryCall = sendCommandInChunksTaskMockFactory.mock.calls[0]!;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const commandFactory = factoryCall[1].commandFactory;\n // arbitrary data to test the commandFactory\n const mockArgs = {\n chunkedData: new Uint8Array([1, 2, 3, 4]),\n isFirstChunk: true,\n };\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n const command = commandFactory(mockArgs);\n expect(command).toBeInstanceOf(StoreTransactionCommand);\n\n // LoadCertificateCommand\n expect(api.sendCommand).toHaveBeenCalledTimes(0);\n\n // ProvideTransactionInformationCommand\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledTimes(1);\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledWith(api, {\n payload: \"0x00\",\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n commandFactory: expect.any(Function),\n });\n // Test that the commandFactory returns a ProvideTransactionInformationCommand\n const factoryCall2 = sendPayloadInChunksRunMock.mock.calls[0]!;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const commandFactory2 = factoryCall2[1].commandFactory;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n const command2 = commandFactory2(mockArgs);\n expect(command2).toBeInstanceOf(ProvideTransactionInformationCommand);\n });\n\n it.each([\n [ClearSignContextType.PLUGIN, SetPluginCommand],\n [ClearSignContextType.EXTERNAL_PLUGIN, SetExternalPluginCommand],\n [ClearSignContextType.NFT, ProvideNFTInformationCommand],\n [ClearSignContextType.TOKEN, ProvideTokenInformationCommand],\n ] as const)(\n \"should provide the transaction context by calling sendCommand for a %s context\",\n async (contextType, commandClass) => {\n // GIVEN\n const args: ProvideContextsTaskArgs = {\n contexts: [\n {\n context: {\n type: contextType,\n payload: \"payload\",\n },\n subcontextCallbacks: [],\n },\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n api.sendCommand.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideContextsTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Right(void 0));\n expect(api.sendCommand).toHaveBeenCalledTimes(1);\n expect(api.sendCommand).toHaveBeenCalledWith(\n expect.any(commandClass),\n );\n },\n );\n\n it.each([\n [ClearSignContextType.ENUM, ProvideEnumCommand],\n [ClearSignContextType.TRUSTED_NAME, ProvideTrustedNameCommand],\n [ClearSignContextType.WEB3_CHECK, ProvideWeb3CheckCommand],\n [\n ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n ProvideTransactionFieldDescriptionCommand,\n ],\n [\n ClearSignContextType.DYNAMIC_NETWORK_ICON,\n ProvideNetworkConfigurationCommand,\n false,\n ],\n [\n ClearSignContextType.DYNAMIC_NETWORK,\n ProvideNetworkConfigurationCommand,\n ],\n ] as const)(\n \"should provide the transaction context by calling sendPayloadInChunksTask for a %s context\",\n async (contextType, commandClass, withPayloadLength = undefined) => {\n // GIVEN\n const args: ProvideContextsTaskArgs = {\n contexts: [\n {\n context: {\n type: contextType,\n payload: \"payload\",\n id: 1,\n value: 1,\n },\n subcontextCallbacks: [],\n },\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n sendPayloadInChunksRunMock.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideContextsTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Right(void 0));\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledTimes(1);\n if (withPayloadLength === undefined) {\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledWith(api, {\n payload: \"payload\",\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n commandFactory: expect.any(Function),\n });\n } else {\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledWith(api, {\n payload: \"payload\",\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n commandFactory: expect.any(Function),\n withPayloadLength,\n });\n }\n\n // Test that the commandFactory returns a commandClass\n const factoryCall = sendPayloadInChunksTaskMockFactory.mock.calls[0]!;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const commandFactory = factoryCall[1].commandFactory;\n const mockArgs = {\n chunkedData: new Uint8Array([1, 2, 3]),\n isFirstChunk: true,\n };\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n const command = commandFactory(mockArgs);\n expect(command).toBeInstanceOf(commandClass);\n },\n );\n\n it(\"should only provide the subcontexts if the context is a PROXY_DELEGATE_CALL\", async () => {\n // GIVEN\n const args: ProvideContextsTaskArgs = {\n contexts: [\n {\n context: {\n type: ClearSignContextType.PROXY_DELEGATE_CALL,\n payload: \"payload\",\n },\n subcontextCallbacks: [\n () =>\n Promise.resolve({\n type: ClearSignContextType.PROXY_DELEGATE_CALL,\n payload: \"subcontext payload\",\n }),\n ],\n },\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n sendPayloadInChunksRunMock.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideContextsTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Right(void 0));\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledTimes(1);\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledWith(api, {\n payload: \"subcontext payload\",\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n commandFactory: expect.any(Function),\n });\n\n // Test that the commandFactory returns a commandClass\n const factoryCall = sendPayloadInChunksTaskMockFactory.mock.calls[0]!;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const commandFactory = factoryCall[1].commandFactory;\n const mockArgs = {\n chunkedData: new Uint8Array([1, 2, 3]),\n isFirstChunk: true,\n };\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n const command = commandFactory(mockArgs);\n expect(command).toBeInstanceOf(ProvideProxyInfoCommand);\n });\n\n it(\"should skip the subcontexts if the context is an error\", async () => {\n // GIVEN\n const args: ProvideContextsTaskArgs = {\n contexts: [\n {\n context: {\n type: ClearSignContextType.TOKEN,\n payload: \"payload\",\n certificate: {\n keyUsageNumber: 1,\n payload: new Uint8Array([1, 2, 3]),\n },\n },\n subcontextCallbacks: [\n () =>\n Promise.resolve({\n type: ClearSignContextType.ERROR,\n error: new Error(\"error\"),\n }),\n ],\n },\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n sendPayloadInChunksRunMock.mockResolvedValue(successResult);\n api.sendCommand.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideContextsTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Right(void 0));\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledTimes(0);\n expect(sendCommandInChunksTaskRunMock).toHaveBeenCalledTimes(0);\n expect(api.sendCommand).toHaveBeenCalledTimes(2);\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n 1,\n expect.any(LoadCertificateCommand),\n );\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n 2,\n expect.any(ProvideTokenInformationCommand),\n );\n });\n });\n\n describe(\"with subcontexts\", () => {\n it(\"should provide the transaction context and subcontext for a TRANSACTION_FIELD_DESCRIPTION context\", async () => {\n // GIVEN\n const args: ProvideContextsTaskArgs = {\n contexts: [\n {\n context: {\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: \"payload\",\n },\n subcontextCallbacks: [\n () =>\n Promise.resolve({\n type: ClearSignContextType.TOKEN,\n payload: \"payload\",\n }),\n ],\n },\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n sendPayloadInChunksRunMock.mockResolvedValue(successResult);\n api.sendCommand.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideContextsTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Right(void 0));\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledTimes(1);\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledWith(api, {\n payload: \"payload\",\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n commandFactory: expect.any(Function),\n });\n\n // Test that the commandFactory returns a commandClass\n const factoryCall = sendPayloadInChunksTaskMockFactory.mock.calls[0]!;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const commandFactory = factoryCall[1].commandFactory;\n const mockArgs = {\n chunkedData: new Uint8Array([1, 2, 3]),\n isFirstChunk: true,\n };\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n const command = commandFactory(mockArgs);\n expect(command).toBeInstanceOf(\n ProvideTransactionFieldDescriptionCommand,\n );\n\n expect(api.sendCommand).toHaveBeenCalledTimes(1);\n expect(api.sendCommand).toHaveBeenCalledWith(\n expect.any(ProvideTokenInformationCommand),\n );\n });\n\n it(\"should provide the transaction context and subcontexts for a TRUSTED_NAME context\", async () => {\n // GIVEN\n const args: ProvideContextsTaskArgs = {\n contexts: [\n {\n context: {\n type: ClearSignContextType.TRUSTED_NAME,\n payload: \"payload\",\n },\n subcontextCallbacks: [\n () =>\n Promise.resolve({\n type: ClearSignContextType.NFT,\n payload: \"payload1\",\n }),\n\n () =>\n Promise.resolve({\n type: ClearSignContextType.TOKEN,\n payload: \"payload2\",\n }),\n ],\n },\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n sendPayloadInChunksRunMock.mockResolvedValue(successResult);\n api.sendCommand.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideContextsTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Right(void 0));\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledTimes(1);\n expect(sendPayloadInChunksRunMock).toHaveBeenCalledWith(api, {\n payload: \"payload\",\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n commandFactory: expect.any(Function),\n });\n\n // Test that the commandFactory returns a commandClass\n const factoryCall = sendPayloadInChunksTaskMockFactory.mock.calls[0]!;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n const commandFactory = factoryCall[1].commandFactory;\n const mockArgs = {\n chunkedData: new Uint8Array([1, 2, 3]),\n isFirstChunk: true,\n };\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n const command = commandFactory(mockArgs);\n expect(command).toBeInstanceOf(ProvideTrustedNameCommand);\n\n expect(api.sendCommand).toHaveBeenCalledTimes(2);\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n 1,\n expect.any(ProvideNFTInformationCommand),\n );\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n 2,\n expect.any(ProvideTokenInformationCommand),\n );\n });\n });\n\n describe(\"with subcontexts and certificate\", () => {\n it(\"should provide the transaction context and subcontexts for a TRUSTED_NAME context\", async () => {\n // GIVEN\n const args: ProvideContextsTaskArgs = {\n contexts: [\n {\n context: {\n type: ClearSignContextType.TRUSTED_NAME,\n payload: \"payload\",\n certificate: {\n keyUsageNumber: 1,\n payload: new Uint8Array([1, 2, 3]),\n },\n },\n subcontextCallbacks: [\n () =>\n Promise.resolve({\n type: ClearSignContextType.NFT,\n payload: \"payload1\",\n certificate: {\n keyUsageNumber: 2,\n payload: new Uint8Array([4, 5, 6]),\n },\n }),\n ],\n },\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n sendPayloadInChunksRunMock.mockResolvedValue(successResult);\n api.sendCommand.mockResolvedValue(successResult);\n\n // WHEN\n const task = new ProvideContextsTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n await task.run();\n\n // THEN\n expect(api.sendCommand).toHaveBeenCalledTimes(3);\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n 1,\n expect.any(LoadCertificateCommand),\n );\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n 2,\n expect.any(ProvideNFTInformationCommand),\n );\n expect(api.sendCommand).toHaveBeenNthCalledWith(\n 3,\n expect.any(LoadCertificateCommand),\n );\n });\n });\n\n describe(\"with error\", () => {\n it(\"should return an error if the provideContext fails\", async () => {\n // GIVEN\n const args: ProvideContextsTaskArgs = {\n contexts: [\n {\n context: {\n type: ClearSignContextType.TOKEN,\n payload: \"payload\",\n },\n subcontextCallbacks: [],\n },\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n api.sendCommand.mockResolvedValue(errorResult);\n\n // WHEN\n const task = new ProvideContextsTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Left(errorResult));\n });\n\n it(\"should return an error if the provide subcontext fails\", async () => {\n // GIVEN\n const args: ProvideContextsTaskArgs = {\n contexts: [\n {\n context: {\n type: ClearSignContextType.TOKEN,\n payload: \"payload\",\n },\n subcontextCallbacks: [\n () =>\n Promise.resolve({\n type: ClearSignContextType.TOKEN,\n payload: \"payload\",\n }),\n ],\n },\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n api.sendCommand.mockResolvedValue(errorResult);\n\n // WHEN\n const task = new ProvideContextsTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(Left(errorResult));\n });\n\n it(\"should return an error if the type is not supported\", async () => {\n // GIVEN\n const args: ProvideContextsTaskArgs = {\n contexts: [\n {\n context: {\n type: \"unsupported\" as unknown as ClearSignContextType.TOKEN,\n payload: \"payload\",\n },\n subcontextCallbacks: [],\n },\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n };\n\n // WHEN\n const task = new ProvideContextsTask(\n api,\n args,\n sendPayloadInChunksTaskMockFactory,\n sendCommandInChunksTaskMockFactory,\n );\n const result = await task.run();\n\n // THEN\n expect(result).toEqual(\n Left(\n CommandResultFactory({\n error: new InvalidStatusWordError(\n `The context type [unsupported] is not covered`,\n ),\n }),\n ),\n );\n });\n });\n\n describe(\"factory types\", () => {\n it(\"should have a sendPayloadInChunksTaskFactory by default\", () => {\n // GIVEN\n const task = new ProvideContextsTask(api, {\n contexts: [\n {\n context: {\n type: ClearSignContextType.TOKEN,\n payload: \"payload\",\n },\n subcontextCallbacks: [],\n },\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n });\n\n // THEN\n expect(task[\"_sendPayloadInChunksTaskFactory\"]).toBeDefined();\n const sendPayloadInChunksTask = task[\"_sendPayloadInChunksTaskFactory\"](\n api,\n {\n payload: \"payload\",\n commandFactory: () =>\n new ProvideTransactionFieldDescriptionCommand({\n data: new Uint8Array(),\n isFirstChunk: true,\n }),\n },\n );\n expect(sendPayloadInChunksTask).toBeInstanceOf(SendPayloadInChunksTask);\n });\n\n it(\"should have a sendCommandInChunksTaskFactory by default\", () => {\n // GIVEN\n const task = new ProvideContextsTask(api, {\n contexts: [\n {\n context: {\n type: ClearSignContextType.TOKEN,\n payload: \"payload\",\n },\n subcontextCallbacks: [],\n },\n ],\n serializedTransaction: new Uint8Array(),\n derivationPath: \"44'/60'/0'/0/0\",\n });\n\n // THEN\n expect(task[\"_sendCommandInChunksTaskFactory\"]).toBeDefined();\n const sendCommandInChunksTask = task[\"_sendCommandInChunksTaskFactory\"](\n api,\n {\n data: new Uint8Array(),\n commandFactory: () =>\n new StoreTransactionCommand({\n serializedTransaction: new Uint8Array(),\n isFirstChunk: true,\n }),\n },\n );\n expect(sendCommandInChunksTask).toBeInstanceOf(SendCommandInChunksTask);\n });\n });\n });\n});\n"],
5
+ "mappings": "AAAA,OAAS,wBAAAA,MAA4B,2BACrC,OACE,wBAAAC,EAEA,0BAAAC,EACA,0BAAAC,MAEK,kCACP,OAAS,QAAAC,EAAM,SAAAC,MAAa,YAE5B,OAAS,sBAAAC,MAA0B,kDACnC,OAAS,sCAAAC,MAA0C,kEACnD,OAAS,gCAAAC,MAAoC,4DAC7C,OAAS,2BAAAC,MAA+B,uDACxC,OAAS,kCAAAC,MAAsC,8DAC/C,OAAS,6CAAAC,MAAiD,yEAC1D,OAAS,wCAAAC,MAA4C,oEACrD,OAAS,6BAAAC,MAAiC,yDAC1C,OAAS,2BAAAC,MAA+B,uDACxC,OAAS,4BAAAC,MAAgC,wDACzC,OAAS,oBAAAC,MAAwB,gDACjC,OAAS,2BAAAC,MAA+B,uDAExC,OAAS,mCAAAC,MAAuC,oEAEhD,OACE,uBAAAC,MAEK,wBACP,OACE,2BAAAC,MAEK,4BACP,OACE,2BAAAC,MAEK,4BAEP,SAAS,sBAAuB,IAAM,CACpC,MAAMC,EAAMJ,EAAgC,EACtCK,EAAgBtB,EAA0C,CAC9D,KAAM,MACR,CAAC,EACKuB,EAAcvB,EAA0C,CAC5D,KAAM,OACN,MAAO,CAAC,CACV,CAAC,EAED,WAAW,IAAM,CACf,GAAG,cAAc,CACnB,CAAC,EAED,SAAS,MAAO,IAAM,CACpB,MAAMwB,EAA6B,GAAG,GAAG,EACnCC,EAAiC,GAAG,GAAG,EACvCC,EAAqC,GAAG,GAAG,EAC3CC,EAAqC,GAAG,GAAG,EAEjD,WAAW,IAAM,CACf,GAAG,cAAc,EACjBD,EAAmC,mBACjC,CAACE,EAAgBC,KACd,CAEC,IAAK,IAAMJ,EAA+BG,EAAGC,CAAI,CACnD,EACJ,EACAF,EAAmC,mBACjC,CAACC,EAAgBC,KACd,CAEC,IAAK,IAAML,EAA2BI,EAAGC,CAAI,CAC/C,EACJ,CACF,CAAC,EAED,SAAS,sBAAuB,IAAM,CACpC,GAAG,wEAAyE,SAAY,CAEtF,MAAMA,EAAgC,CACpC,SAAU,CACR,CACE,QAAS,CACP,KAAM9B,EAAqB,iBAC3B,QAAS,OACT,YAAa,CACX,eAAgB,EAChB,QAAS,IAAI,WAAW,CAAC,EAAG,EAAG,CAAC,CAAC,CACnC,CACF,EACA,oBAAqB,CAAC,CACxB,CACF,EACA,sBAAuB,IAAI,WAC3B,eAAgB,gBAClB,EACA0B,EAA+B,kBAAkBH,CAAa,EAC9DE,EAA2B,kBAAkBF,CAAa,EAC1DD,EAAI,YAAY,kBAAkBC,CAAa,EAS/C,MAAMQ,EAAS,MANF,IAAIZ,EACfG,EACAQ,EACAF,EACAD,CACF,EAC0B,IAAI,EAG9B,OAAOI,CAAM,EAAE,QAAQ1B,EAAM,MAAM,CAAC,EAGpC,OAAOqB,CAA8B,EAAE,sBAAsB,CAAC,EAC9D,OAAOC,CAAkC,EAAE,qBAAqBL,EAAK,CACnE,KAAM,IAAI,WAAW,CACnB,EAAM,IAAM,EAAM,EAAM,GAAM,IAAM,EAAM,EAAM,GAAM,IAAM,EAC5D,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,CACxD,CAAC,EAED,eAAgB,OAAO,IAAI,QAAQ,CACrC,CAAC,EAID,MAAMU,EAFcL,EAAmC,KAAK,MAAM,CAAC,EAEhC,CAAC,EAAE,eAEhCM,EAAW,CACf,YAAa,IAAI,WAAW,CAAC,EAAG,EAAG,EAAG,CAAC,CAAC,EACxC,aAAc,EAChB,EAEMC,EAAUF,EAAeC,CAAQ,EACvC,OAAOC,CAAO,EAAE,eAAejB,CAAuB,EAGtD,OAAOK,EAAI,WAAW,EAAE,sBAAsB,CAAC,EAC/C,OAAOA,EAAI,WAAW,EAAE,qBACtB,OAAO,IAAInB,CAAsB,CACnC,EAGA,OAAOsB,CAA0B,EAAE,sBAAsB,CAAC,EAC1D,OAAOA,CAA0B,EAAE,qBAAqBH,EAAK,CAC3D,QAAS,OAET,eAAgB,OAAO,IAAI,QAAQ,CACrC,CAAC,EAID,MAAMa,EAFeV,EAA2B,KAAK,MAAM,CAAC,EAEvB,CAAC,EAAE,eAElCW,EAAWD,EAAgBF,CAAQ,EACzC,OAAOG,CAAQ,EAAE,eAAexB,CAAoC,CACtE,CAAC,EAED,GAAG,4FAA6F,SAAY,CAE1G,MAAMkB,EAAgC,CACpC,SAAU,CACR,CACE,QAAS,CACP,KAAM9B,EAAqB,iBAC3B,QAAS,MACX,EACA,oBAAqB,CAAC,CACxB,CACF,EACA,sBAAuB,IAAI,WAC3B,eAAgB,gBAClB,EACA0B,EAA+B,kBAAkBH,CAAa,EAC9DE,EAA2B,kBAAkBF,CAAa,EAC1DD,EAAI,YAAY,kBAAkBC,CAAa,EAS/C,MAAMQ,EAAS,MANF,IAAIZ,EACfG,EACAQ,EACAF,EACAD,CACF,EAC0B,IAAI,EAG9B,OAAOI,CAAM,EAAE,QAAQ1B,EAAM,MAAM,CAAC,EAGpC,OAAOqB,CAA8B,EAAE,sBAAsB,CAAC,EAC9D,OAAOC,CAAkC,EAAE,qBAAqBL,EAAK,CACnE,KAAM,IAAI,WAAW,CACnB,EAAM,IAAM,EAAM,EAAM,GAAM,IAAM,EAAM,EAAM,GAAM,IAAM,EAC5D,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,CACxD,CAAC,EAED,eAAgB,OAAO,IAAI,QAAQ,CACrC,CAAC,EAID,MAAMU,EAFcL,EAAmC,KAAK,MAAM,CAAC,EAEhC,CAAC,EAAE,eAEhCM,EAAW,CACf,YAAa,IAAI,WAAW,CAAC,EAAG,EAAG,EAAG,CAAC,CAAC,EACxC,aAAc,EAChB,EAEMC,EAAUF,EAAeC,CAAQ,EACvC,OAAOC,CAAO,EAAE,eAAejB,CAAuB,EAGtD,OAAOK,EAAI,WAAW,EAAE,sBAAsB,CAAC,EAG/C,OAAOG,CAA0B,EAAE,sBAAsB,CAAC,EAC1D,OAAOA,CAA0B,EAAE,qBAAqBH,EAAK,CAC3D,QAAS,OAET,eAAgB,OAAO,IAAI,QAAQ,CACrC,CAAC,EAID,MAAMa,EAFeV,EAA2B,KAAK,MAAM,CAAC,EAEvB,CAAC,EAAE,eAElCW,EAAWD,EAAgBF,CAAQ,EACzC,OAAOG,CAAQ,EAAE,eAAexB,CAAoC,CACtE,CAAC,EAED,GAAG,KAAK,CACN,CAACZ,EAAqB,OAAQgB,CAAgB,EAC9C,CAAChB,EAAqB,gBAAiBe,CAAwB,EAC/D,CAACf,EAAqB,IAAKQ,CAA4B,EACvD,CAACR,EAAqB,MAAOU,CAA8B,CAC7D,CAAU,EACR,iFACA,MAAO2B,EAAaC,IAAiB,CAEnC,MAAMR,EAAgC,CACpC,SAAU,CACR,CACE,QAAS,CACP,KAAMO,EACN,QAAS,SACX,EACA,oBAAqB,CAAC,CACxB,CACF,EACA,sBAAuB,IAAI,WAC3B,eAAgB,gBAClB,EACAf,EAAI,YAAY,kBAAkBC,CAAa,EAS/C,MAAMQ,EAAS,MANF,IAAIZ,EACfG,EACAQ,EACAF,EACAD,CACF,EAC0B,IAAI,EAG9B,OAAOI,CAAM,EAAE,QAAQ1B,EAAM,MAAM,CAAC,EACpC,OAAOiB,EAAI,WAAW,EAAE,sBAAsB,CAAC,EAC/C,OAAOA,EAAI,WAAW,EAAE,qBACtB,OAAO,IAAIgB,CAAY,CACzB,CACF,CACF,EAEA,GAAG,KAAK,CACN,CAACtC,EAAqB,KAAMM,CAAkB,EAC9C,CAACN,EAAqB,aAAca,CAAyB,EAC7D,CAACb,EAAqB,WAAYc,CAAuB,EACzD,CACEd,EAAqB,8BACrBW,CACF,EACA,CACEX,EAAqB,qBACrBO,EACA,EACF,EACA,CACEP,EAAqB,gBACrBO,CACF,CACF,CAAU,EACR,6FACA,MAAO8B,EAAaC,EAAcC,EAAoB,SAAc,CAElE,MAAMT,EAAgC,CACpC,SAAU,CACR,CACE,QAAS,CACP,KAAMO,EACN,QAAS,UACT,GAAI,EACJ,MAAO,CACT,EACA,oBAAqB,CAAC,CACxB,CACF,EACA,sBAAuB,IAAI,WAC3B,eAAgB,gBAClB,EACAZ,EAA2B,kBAAkBF,CAAa,EAS1D,MAAMQ,EAAS,MANF,IAAIZ,EACfG,EACAQ,EACAF,EACAD,CACF,EAC0B,IAAI,EAG9B,OAAOI,CAAM,EAAE,QAAQ1B,EAAM,MAAM,CAAC,EACpC,OAAOoB,CAA0B,EAAE,sBAAsB,CAAC,EACtDc,IAAsB,OACxB,OAAOd,CAA0B,EAAE,qBAAqBH,EAAK,CAC3D,QAAS,UAET,eAAgB,OAAO,IAAI,QAAQ,CACrC,CAAC,EAED,OAAOG,CAA0B,EAAE,qBAAqBH,EAAK,CAC3D,QAAS,UAET,eAAgB,OAAO,IAAI,QAAQ,EACnC,kBAAAiB,CACF,CAAC,EAMH,MAAMP,EAFcJ,EAAmC,KAAK,MAAM,CAAC,EAEhC,CAAC,EAAE,eAChCK,EAAW,CACf,YAAa,IAAI,WAAW,CAAC,EAAG,EAAG,CAAC,CAAC,EACrC,aAAc,EAChB,EAEMC,EAAUF,EAAeC,CAAQ,EACvC,OAAOC,CAAO,EAAE,eAAeI,CAAY,CAC7C,CACF,EAEA,GAAG,8EAA+E,SAAY,CAE5F,MAAMR,EAAgC,CACpC,SAAU,CACR,CACE,QAAS,CACP,KAAM9B,EAAqB,oBAC3B,QAAS,SACX,EACA,oBAAqB,CACnB,IACE,QAAQ,QAAQ,CACd,KAAMA,EAAqB,oBAC3B,QAAS,oBACX,CAAC,CACL,CACF,CACF,EACA,sBAAuB,IAAI,WAC3B,eAAgB,gBAClB,EACAyB,EAA2B,kBAAkBF,CAAa,EAS1D,MAAMQ,EAAS,MANF,IAAIZ,EACfG,EACAQ,EACAF,EACAD,CACF,EAC0B,IAAI,EAG9B,OAAOI,CAAM,EAAE,QAAQ1B,EAAM,MAAM,CAAC,EACpC,OAAOoB,CAA0B,EAAE,sBAAsB,CAAC,EAC1D,OAAOA,CAA0B,EAAE,qBAAqBH,EAAK,CAC3D,QAAS,qBAET,eAAgB,OAAO,IAAI,QAAQ,CACrC,CAAC,EAKD,MAAMU,EAFcJ,EAAmC,KAAK,MAAM,CAAC,EAEhC,CAAC,EAAE,eAChCK,EAAW,CACf,YAAa,IAAI,WAAW,CAAC,EAAG,EAAG,CAAC,CAAC,EACrC,aAAc,EAChB,EAEMC,EAAUF,EAAeC,CAAQ,EACvC,OAAOC,CAAO,EAAE,eAAezB,CAAuB,CACxD,CAAC,EAED,GAAG,yDAA0D,SAAY,CAEvE,MAAMqB,EAAgC,CACpC,SAAU,CACR,CACE,QAAS,CACP,KAAM9B,EAAqB,MAC3B,QAAS,UACT,YAAa,CACX,eAAgB,EAChB,QAAS,IAAI,WAAW,CAAC,EAAG,EAAG,CAAC,CAAC,CACnC,CACF,EACA,oBAAqB,CACnB,IACE,QAAQ,QAAQ,CACd,KAAMA,EAAqB,MAC3B,MAAO,IAAI,MAAM,OAAO,CAC1B,CAAC,CACL,CACF,CACF,EACA,sBAAuB,IAAI,WAC3B,eAAgB,gBAClB,EACAyB,EAA2B,kBAAkBF,CAAa,EAC1DD,EAAI,YAAY,kBAAkBC,CAAa,EAS/C,MAAMQ,EAAS,MANF,IAAIZ,EACfG,EACAQ,EACAF,EACAD,CACF,EAC0B,IAAI,EAG9B,OAAOI,CAAM,EAAE,QAAQ1B,EAAM,MAAM,CAAC,EACpC,OAAOoB,CAA0B,EAAE,sBAAsB,CAAC,EAC1D,OAAOC,CAA8B,EAAE,sBAAsB,CAAC,EAC9D,OAAOJ,EAAI,WAAW,EAAE,sBAAsB,CAAC,EAC/C,OAAOA,EAAI,WAAW,EAAE,wBACtB,EACA,OAAO,IAAInB,CAAsB,CACnC,EACA,OAAOmB,EAAI,WAAW,EAAE,wBACtB,EACA,OAAO,IAAIZ,CAA8B,CAC3C,CACF,CAAC,CACH,CAAC,EAED,SAAS,mBAAoB,IAAM,CACjC,GAAG,oGAAqG,SAAY,CAElH,MAAMoB,EAAgC,CACpC,SAAU,CACR,CACE,QAAS,CACP,KAAM9B,EAAqB,8BAC3B,QAAS,SACX,EACA,oBAAqB,CACnB,IACE,QAAQ,QAAQ,CACd,KAAMA,EAAqB,MAC3B,QAAS,SACX,CAAC,CACL,CACF,CACF,EACA,sBAAuB,IAAI,WAC3B,eAAgB,gBAClB,EACAyB,EAA2B,kBAAkBF,CAAa,EAC1DD,EAAI,YAAY,kBAAkBC,CAAa,EAS/C,MAAMQ,EAAS,MANF,IAAIZ,EACfG,EACAQ,EACAF,EACAD,CACF,EAC0B,IAAI,EAG9B,OAAOI,CAAM,EAAE,QAAQ1B,EAAM,MAAM,CAAC,EACpC,OAAOoB,CAA0B,EAAE,sBAAsB,CAAC,EAC1D,OAAOA,CAA0B,EAAE,qBAAqBH,EAAK,CAC3D,QAAS,UAET,eAAgB,OAAO,IAAI,QAAQ,CACrC,CAAC,EAKD,MAAMU,EAFcJ,EAAmC,KAAK,MAAM,CAAC,EAEhC,CAAC,EAAE,eAChCK,EAAW,CACf,YAAa,IAAI,WAAW,CAAC,EAAG,EAAG,CAAC,CAAC,EACrC,aAAc,EAChB,EAEMC,EAAUF,EAAeC,CAAQ,EACvC,OAAOC,CAAO,EAAE,eACdvB,CACF,EAEA,OAAOW,EAAI,WAAW,EAAE,sBAAsB,CAAC,EAC/C,OAAOA,EAAI,WAAW,EAAE,qBACtB,OAAO,IAAIZ,CAA8B,CAC3C,CACF,CAAC,EAED,GAAG,oFAAqF,SAAY,CAElG,MAAMoB,EAAgC,CACpC,SAAU,CACR,CACE,QAAS,CACP,KAAM9B,EAAqB,aAC3B,QAAS,SACX,EACA,oBAAqB,CACnB,IACE,QAAQ,QAAQ,CACd,KAAMA,EAAqB,IAC3B,QAAS,UACX,CAAC,EAEH,IACE,QAAQ,QAAQ,CACd,KAAMA,EAAqB,MAC3B,QAAS,UACX,CAAC,CACL,CACF,CACF,EACA,sBAAuB,IAAI,WAC3B,eAAgB,gBAClB,EACAyB,EAA2B,kBAAkBF,CAAa,EAC1DD,EAAI,YAAY,kBAAkBC,CAAa,EAS/C,MAAMQ,EAAS,MANF,IAAIZ,EACfG,EACAQ,EACAF,EACAD,CACF,EAC0B,IAAI,EAG9B,OAAOI,CAAM,EAAE,QAAQ1B,EAAM,MAAM,CAAC,EACpC,OAAOoB,CAA0B,EAAE,sBAAsB,CAAC,EAC1D,OAAOA,CAA0B,EAAE,qBAAqBH,EAAK,CAC3D,QAAS,UAET,eAAgB,OAAO,IAAI,QAAQ,CACrC,CAAC,EAKD,MAAMU,EAFcJ,EAAmC,KAAK,MAAM,CAAC,EAEhC,CAAC,EAAE,eAChCK,EAAW,CACf,YAAa,IAAI,WAAW,CAAC,EAAG,EAAG,CAAC,CAAC,EACrC,aAAc,EAChB,EAEMC,EAAUF,EAAeC,CAAQ,EACvC,OAAOC,CAAO,EAAE,eAAerB,CAAyB,EAExD,OAAOS,EAAI,WAAW,EAAE,sBAAsB,CAAC,EAC/C,OAAOA,EAAI,WAAW,EAAE,wBACtB,EACA,OAAO,IAAId,CAA4B,CACzC,EACA,OAAOc,EAAI,WAAW,EAAE,wBACtB,EACA,OAAO,IAAIZ,CAA8B,CAC3C,CACF,CAAC,CACH,CAAC,EAED,SAAS,mCAAoC,IAAM,CACjD,GAAG,oFAAqF,SAAY,CAElG,MAAMoB,EAAgC,CACpC,SAAU,CACR,CACE,QAAS,CACP,KAAM9B,EAAqB,aAC3B,QAAS,UACT,YAAa,CACX,eAAgB,EAChB,QAAS,IAAI,WAAW,CAAC,EAAG,EAAG,CAAC,CAAC,CACnC,CACF,EACA,oBAAqB,CACnB,IACE,QAAQ,QAAQ,CACd,KAAMA,EAAqB,IAC3B,QAAS,WACT,YAAa,CACX,eAAgB,EAChB,QAAS,IAAI,WAAW,CAAC,EAAG,EAAG,CAAC,CAAC,CACnC,CACF,CAAC,CACL,CACF,CACF,EACA,sBAAuB,IAAI,WAC3B,eAAgB,gBAClB,EACAyB,EAA2B,kBAAkBF,CAAa,EAC1DD,EAAI,YAAY,kBAAkBC,CAAa,EAS/C,MANa,IAAIJ,EACfG,EACAQ,EACAF,EACAD,CACF,EACW,IAAI,EAGf,OAAOL,EAAI,WAAW,EAAE,sBAAsB,CAAC,EAC/C,OAAOA,EAAI,WAAW,EAAE,wBACtB,EACA,OAAO,IAAInB,CAAsB,CACnC,EACA,OAAOmB,EAAI,WAAW,EAAE,wBACtB,EACA,OAAO,IAAId,CAA4B,CACzC,EACA,OAAOc,EAAI,WAAW,EAAE,wBACtB,EACA,OAAO,IAAInB,CAAsB,CACnC,CACF,CAAC,CACH,CAAC,EAED,SAAS,aAAc,IAAM,CAC3B,GAAG,qDAAsD,SAAY,CAEnE,MAAM2B,EAAgC,CACpC,SAAU,CACR,CACE,QAAS,CACP,KAAM9B,EAAqB,MAC3B,QAAS,SACX,EACA,oBAAqB,CAAC,CACxB,CACF,EACA,sBAAuB,IAAI,WAC3B,eAAgB,gBAClB,EACAsB,EAAI,YAAY,kBAAkBE,CAAW,EAS7C,MAAMO,EAAS,MANF,IAAIZ,EACfG,EACAQ,EACAF,EACAD,CACF,EAC0B,IAAI,EAG9B,OAAOI,CAAM,EAAE,QAAQ3B,EAAKoB,CAAW,CAAC,CAC1C,CAAC,EAED,GAAG,yDAA0D,SAAY,CAEvE,MAAMM,EAAgC,CACpC,SAAU,CACR,CACE,QAAS,CACP,KAAM9B,EAAqB,MAC3B,QAAS,SACX,EACA,oBAAqB,CACnB,IACE,QAAQ,QAAQ,CACd,KAAMA,EAAqB,MAC3B,QAAS,SACX,CAAC,CACL,CACF,CACF,EACA,sBAAuB,IAAI,WAC3B,eAAgB,gBAClB,EACAsB,EAAI,YAAY,kBAAkBE,CAAW,EAS7C,MAAMO,EAAS,MANF,IAAIZ,EACfG,EACAQ,EACAF,EACAD,CACF,EAC0B,IAAI,EAG9B,OAAOI,CAAM,EAAE,QAAQ3B,EAAKoB,CAAW,CAAC,CAC1C,CAAC,EAED,GAAG,sDAAuD,SAAY,CAEpE,MAAMM,EAAgC,CACpC,SAAU,CACR,CACE,QAAS,CACP,KAAM,cACN,QAAS,SACX,EACA,oBAAqB,CAAC,CACxB,CACF,EACA,sBAAuB,IAAI,WAC3B,eAAgB,gBAClB,EASMC,EAAS,MANF,IAAIZ,EACfG,EACAQ,EACAF,EACAD,CACF,EAC0B,IAAI,EAG9B,OAAOI,CAAM,EAAE,QACb3B,EACEH,EAAqB,CACnB,MAAO,IAAIC,EACT,+CACF,CACF,CAAC,CACH,CACF,CACF,CAAC,CACH,CAAC,EAED,SAAS,gBAAiB,IAAM,CAC9B,GAAG,0DAA2D,IAAM,CAElE,MAAMsC,EAAO,IAAIrB,EAAoBG,EAAK,CACxC,SAAU,CACR,CACE,QAAS,CACP,KAAMtB,EAAqB,MAC3B,QAAS,SACX,EACA,oBAAqB,CAAC,CACxB,CACF,EACA,sBAAuB,IAAI,WAC3B,eAAgB,gBAClB,CAAC,EAGD,OAAOwC,EAAK,+BAAkC,EAAE,YAAY,EAC5D,MAAMC,EAA0BD,EAAK,gCACnClB,EACA,CACE,QAAS,UACT,eAAgB,IACd,IAAIX,EAA0C,CAC5C,KAAM,IAAI,WACV,aAAc,EAChB,CAAC,CACL,CACF,EACA,OAAO8B,CAAuB,EAAE,eAAepB,CAAuB,CACxE,CAAC,EAED,GAAG,0DAA2D,IAAM,CAElE,MAAMmB,EAAO,IAAIrB,EAAoBG,EAAK,CACxC,SAAU,CACR,CACE,QAAS,CACP,KAAMtB,EAAqB,MAC3B,QAAS,SACX,EACA,oBAAqB,CAAC,CACxB,CACF,EACA,sBAAuB,IAAI,WAC3B,eAAgB,gBAClB,CAAC,EAGD,OAAOwC,EAAK,+BAAkC,EAAE,YAAY,EAC5D,MAAME,EAA0BF,EAAK,gCACnClB,EACA,CACE,KAAM,IAAI,WACV,eAAgB,IACd,IAAIL,EAAwB,CAC1B,sBAAuB,IAAI,WAC3B,aAAc,EAChB,CAAC,CACL,CACF,EACA,OAAOyB,CAAuB,EAAE,eAAetB,CAAuB,CACxE,CAAC,CACH,CAAC,CACH,CAAC,CACH,CAAC",
6
6
  "names": ["ClearSignContextType", "CommandResultFactory", "InvalidStatusWordError", "LoadCertificateCommand", "Left", "Right", "ProvideEnumCommand", "ProvideNetworkConfigurationCommand", "ProvideNFTInformationCommand", "ProvideProxyInfoCommand", "ProvideTokenInformationCommand", "ProvideTransactionFieldDescriptionCommand", "ProvideTransactionInformationCommand", "ProvideTrustedNameCommand", "ProvideWeb3CheckCommand", "SetExternalPluginCommand", "SetPluginCommand", "StoreTransactionCommand", "makeDeviceActionInternalApiMock", "ProvideContextsTask", "SendCommandInChunksTask", "SendPayloadInChunksTask", "api", "successResult", "errorResult", "sendPayloadInChunksRunMock", "sendCommandInChunksTaskRunMock", "sendCommandInChunksTaskMockFactory", "sendPayloadInChunksTaskMockFactory", "a", "args", "result", "commandFactory", "mockArgs", "command", "commandFactory2", "command2", "contextType", "commandClass", "withPayloadLength", "task", "sendPayloadInChunksTask", "sendCommandInChunksTask"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{VERIFYING_CONTRACT_TOKEN_INDEX as x}from"@ledgerhq/context-module";import{ClearSignContextType as A}from"@ledgerhq/context-module";import{ContextFieldLoaderKind as D}from"@ledgerhq/context-module/src/shared/domain/ContextFieldLoader.js";import{bufferToHexaString as b,CommandResultFactory as T,InvalidStatusWordError as F,isSuccessCommandResult as o,LoadCertificateCommand as I}from"@ledgerhq/device-management-kit";import{Just as y,Maybe as k,Nothing as p}from"purify-ts";import{GetChallengeCommand as P}from"../../app-binder/command/GetChallengeCommand";import{ProvideTokenInformationCommand as M}from"../../app-binder/command/ProvideTokenInformationCommand";import{ProvideTrustedNameCommand as V}from"../../app-binder/command/ProvideTrustedNameCommand";import{ProvideWeb3CheckCommand as J}from"../../app-binder/command/ProvideWeb3CheckCommand";import{Eip712FilterType as m,SendEIP712FilteringCommand as c}from"../../app-binder/command/SendEIP712FilteringCommand";import{SendEIP712StructDefinitionCommand as S,StructDefinitionCommand as w}from"../../app-binder/command/SendEIP712StructDefinitionCommand";import{StructImplemType as f}from"../../app-binder/command/SendEIP712StructImplemCommand";import{SendEIP712StructImplemTask as h}from"../../app-binder/task/SendEIP712StructImplemTask";import{TypedDataValueField as _}from"../../typed-data/model/Types";import{TypedDataValueArray as E,TypedDataValueRoot as O}from"../../typed-data/model/Types";import{SendPayloadInChunksTask as v}from"./SendPayloadInChunksTask";const N=5;class ne{constructor(t,n,a){this.api=t;this.contextModule=n;this.args=a;for(const e of this.args.domain)if(e.path==="chainId"&&e.value instanceof _){const s=BigInt(b(e.value.data));s<=Number.MAX_SAFE_INTEGER&&(this.chainId=y(Number(s)));break}}chainId=p;async run(){this.args.web3Check&&(this.args.web3Check.certificate&&await this.api.sendCommand(new I({keyUsage:this.args.web3Check.certificate.keyUsageNumber,certificate:this.args.web3Check.certificate.payload})),await new v(this.api,{payload:this.args.web3Check.payload,commandFactory:e=>new J({payload:e.chunkedData,isFirstChunk:e.isFirstChunk})}).run());const t=T({data:void 0}),n=Object.entries(this.args.types).sort(([e],[s])=>e.localeCompare(s));for(const[e,s]of n){const i=await this.api.sendCommand(new S({command:w.Name,name:e}));if(!o(i))return i;for(const[r,d]of Object.entries(s)){const l=await this.api.sendCommand(new S({command:w.Field,name:r,type:d}));if(!o(l))return l}}if(this.args.clearSignContext.isJust()){const e=await this.api.sendCommand(new c({type:m.Activation}));if(!o(e))return e}for(const e of this.args.domain){const i=await this.getImplementationTask(e).run();if(!o(i))return i}if(this.args.clearSignContext.isJust()){const e=this.args.clearSignContext.extract(),s=await this.api.sendCommand(new c({type:m.MessageInfo,displayName:e.messageInfo.displayName,filtersCount:e.messageInfo.filtersCount,signature:e.messageInfo.signature}));if(!o(s))return s}const a={indexes:{},nextIndex:0};for(const e of this.args.message){const s=await this.provideTokenInformation(e,a);if(s.isJust())return s.extract();const i=await this.provideTrustedName(e);if(i.isJust())return i.extract();const r=await this.filterValue(e,a);if(r.isJust()&&!o(r.extract()))return r.extract();const l=await this.getImplementationTask(e).run();if(!o(l))return l;if(this.args.clearSignContext.isJust()&&e.value instanceof E&&e.value.length===0){const R=Object.entries(this.args.clearSignContext.extract().filters).filter(([u])=>u.startsWith(`${e.path}.[]`)).map(([,u])=>u);for(const u of R){const C=await this.api.sendCommand(new c({type:m.DiscardedPath,path:u.path}));if(!o(C))return C;const g=await this.provideFiltering(u,a,!0);if(!o(g))return g}}}return t}getImplementationTask(t){return t.value instanceof O?new h(this.api,{type:f.ROOT,value:t.value.root}):t.value instanceof E?new h(this.api,{type:f.ARRAY,value:t.value.length}):new h(this.api,{type:f.FIELD,value:t.value.data})}async provideTokenInformation(t,n){if(this.args.clearSignContext.isJust()){const a=this.args.clearSignContext.extract().filters[t.path];if(a!==void 0&&(a.type==="amount"||a.type==="token")&&n.indexes[a.tokenIndex]===void 0){const e=a.tokenIndex,i=this.args.clearSignContext.extract().tokens[e];if(i===void 0)return p;const r=await this.api.sendCommand(new M({payload:i}));if(!o(r))return k.of(r);let{tokenIndex:d}=r.data;n.nextIndex=(d+1)%N,Number(e)===x&&(d=x),n.indexes[Number(e)]=d}}return p}async provideTrustedName(t){if(this.args.clearSignContext.isJust()&&this.chainId.isJust()){const n=this.args.clearSignContext.extract(),a=n.filters[t.path],e=n.trustedNamesAddresses[t.path];if(a!==void 0&&a.type==="trusted-name"&&e!==void 0){const s=await this.api.sendCommand(new P);if(!o(s))return y(s);const i=await this.contextModule.getFieldContext({kind:D.TRUSTED_NAME,chainId:this.chainId.extract(),address:e,challenge:s.data.challenge,types:a.types,sources:a.sources});if(i.type===A.TRUSTED_NAME){i.certificate&&await this.api.sendCommand(new I({keyUsage:i.certificate.keyUsageNumber,certificate:i.certificate.payload}));const r=await new v(this.api,{payload:i.payload,commandFactory:d=>new V({data:d.chunkedData,isFirstChunk:d.isFirstChunk})}).run();if(!o(r))return y(r)}}}return p}async filterValue(t,n){if(this.args.clearSignContext.isJust()){const a=this.args.clearSignContext.extract().filters[t.path];if(a===void 0)return p;const e=await this.provideFiltering(a,n,!1);return k.of(e)}return p}async provideFiltering(t,n,a){switch(t.type){case"trusted-name":return await this.api.sendCommand(new c({type:m.TrustedName,discarded:a,displayName:t.displayName,typesAndSourcesPayload:t.typesAndSourcesPayload,signature:t.signature}));case"datetime":return await this.api.sendCommand(new c({type:m.Datetime,discarded:a,displayName:t.displayName,signature:t.signature}));case"raw":return await this.api.sendCommand(new c({type:m.Raw,discarded:a,displayName:t.displayName,signature:t.signature}));case"token":return this.sanitizeDeviceIndex(t.tokenIndex,n),await this.api.sendCommand(new c({type:m.Token,discarded:a,tokenIndex:n.indexes[t.tokenIndex],signature:t.signature}));case"amount":return this.sanitizeDeviceIndex(t.tokenIndex,n),await this.api.sendCommand(new c({type:m.Amount,discarded:a,displayName:t.displayName,tokenIndex:n.indexes[t.tokenIndex],signature:t.signature}));default:return T({error:new F("ProvideEIP712ContextTask/provideFiltering - Unhandled filter type")})}}sanitizeDeviceIndex(t,n){n.indexes[t]===void 0&&(n.indexes[t]=n.nextIndex,n.nextIndex=(n.nextIndex+1)%N)}}export{ne as ProvideEIP712ContextTask};
1
+ import{TypedDataCalldataParamPresence as h,VERIFYING_CONTRACT_TOKEN_INDEX as S}from"@ledgerhq/context-module";import{ClearSignContextType as d}from"@ledgerhq/context-module";import{ContextFieldLoaderKind as D}from"@ledgerhq/context-module/src/shared/domain/ContextFieldLoader.js";import{bufferToHexaString as R,CommandResultFactory as b,isSuccessCommandResult as c,LoadCertificateCommand as E}from"@ledgerhq/device-management-kit";import{Just as y,Maybe as g,Nothing as u}from"purify-ts";import{GetChallengeCommand as M}from"../../app-binder/command/GetChallengeCommand";import{ProvideProxyInfoCommand as _}from"../../app-binder/command/ProvideProxyInfoCommand";import{ProvideTokenInformationCommand as V}from"../../app-binder/command/ProvideTokenInformationCommand";import{ProvideTrustedNameCommand as O}from"../../app-binder/command/ProvideTrustedNameCommand";import{ProvideWeb3CheckCommand as J}from"../../app-binder/command/ProvideWeb3CheckCommand";import{CalldataParamPresence as f,Eip712FilterType as r,SendEIP712FilteringCommand as o}from"../../app-binder/command/SendEIP712FilteringCommand";import{SendEIP712StructDefinitionCommand as k,StructDefinitionCommand as P}from"../../app-binder/command/SendEIP712StructDefinitionCommand";import{StructImplemType as x}from"../../app-binder/command/SendEIP712StructImplemCommand";import{ProvideContextsTask as U}from"../../app-binder/task/ProvideContextsTask";import{SendEIP712StructImplemTask as I}from"../../app-binder/task/SendEIP712StructImplemTask";import{TypedDataValueField as L}from"../../typed-data/model/Types";import{TypedDataValueArray as F,TypedDataValueRoot as W}from"../../typed-data/model/Types";import{SendPayloadInChunksTask as T}from"./SendPayloadInChunksTask";const N=5;class de{constructor(e,t,n,a=s=>new U(this.api,s)){this.api=e;this.contextModule=t;this.args=n;this.provideContextFactory=a;for(const s of this.args.domain)if(s.path==="chainId"&&s.value instanceof L){const i=BigInt(R(s.value.data));i<=Number.MAX_SAFE_INTEGER&&(this.chainId=y(Number(i)));break}}chainId=u;calldataMetadatas={};async run(){this.args.web3Check&&await this.provideContext(this.args.web3Check),await this.args.clearSignContext.ifJust(async a=>{a.proxy!==void 0&&await this.provideContext(a.proxy)});const e=b({data:void 0}),t=Object.entries(this.args.types).sort(([a],[s])=>a.localeCompare(s));for(const[a,s]of t){const i=await this.api.sendCommand(new k({command:P.Name,name:a}));if(!c(i))return i;for(const[l,m]of Object.entries(s)){const C=await this.api.sendCommand(new k({command:P.Field,name:l,type:m}));if(!c(C))return C}}if(this.args.clearSignContext.isJust()){const a=await this.api.sendCommand(new o({type:r.Activation}));if(!c(a))return a}for(const a of this.args.domain){const i=await this.getImplementationTask(a).run();if(!c(i))return i}if(this.args.clearSignContext.isJust()){const a=this.args.clearSignContext.extract(),s=await this.api.sendCommand(new o({type:r.MessageInfo,displayName:a.messageInfo.displayName,filtersCount:a.messageInfo.filtersCount,signature:a.messageInfo.signature}));if(!c(s))return s}const n={indexes:{},nextIndex:0};for(const a of this.args.message){const s=await this.provideTokenInformation(a,n);if(s.isJust())return s.extract();const i=await this.provideTrustedName(a);if(i.isJust())return i.extract();const l=await this.filterValue(a,n);if(l.isJust()&&!c(l.extract()))return l.extract();const C=await this.getImplementationTask(a).run();if(!c(C))return C;if(await this.tryProvideTransactionContext(),this.args.clearSignContext.isJust()&&a.value instanceof F&&a.value.length===0){const A=Object.entries(this.args.clearSignContext.extract().filters).filter(([p])=>p.startsWith(`${a.path}.[]`)).map(([,p])=>p);for(const p of A){const w=await this.api.sendCommand(new o({type:r.DiscardedPath,path:p.path}));if(!c(w))return w;const v=await this.provideFiltering(p,n,!0);if(!c(v))return v}}}return e}async provideContext({type:e,payload:t,certificate:n}){switch(n&&await this.api.sendCommand(new E({keyUsage:n.keyUsageNumber,certificate:n.payload})),e){case d.WEB3_CHECK:await new T(this.api,{payload:t,commandFactory:a=>new J({payload:a.chunkedData,isFirstChunk:a.isFirstChunk})}).run();break;case d.PROXY_DELEGATE_CALL:await new T(this.api,{payload:t,commandFactory:a=>new _({data:a.chunkedData,isFirstChunk:a.isFirstChunk})}).run();break;case d.TOKEN:case d.NFT:case d.TRUSTED_NAME:case d.PLUGIN:case d.EXTERNAL_PLUGIN:case d.ENUM:case d.TRANSACTION_INFO:case d.TRANSACTION_FIELD_DESCRIPTION:case d.DYNAMIC_NETWORK:case d.DYNAMIC_NETWORK_ICON:throw new Error(`Context type ${e} not supported in EIP712 messages`);default:{const a=e;throw new Error(`Unhandled context type ${a}`)}}}getImplementationTask(e){return e.value instanceof W?new I(this.api,{type:x.ROOT,value:e.value.root}):e.value instanceof F?new I(this.api,{type:x.ARRAY,value:e.value.length}):new I(this.api,{type:x.FIELD,value:e.value.data})}async provideTokenInformation(e,t){if(this.args.clearSignContext.isJust()){const n=this.args.clearSignContext.extract().filters[e.path];if(n!==void 0&&(n.type==="amount"||n.type==="token")&&t.indexes[n.tokenIndex]===void 0){const a=n.tokenIndex,i=this.args.clearSignContext.extract().tokens[a];if(i===void 0)return u;const l=await this.api.sendCommand(new V({payload:i}));if(!c(l))return g.of(l);let{tokenIndex:m}=l.data;t.nextIndex=(m+1)%N,Number(a)===S&&(m=S),t.indexes[Number(a)]=m}}return u}async provideTrustedName(e){if(this.args.clearSignContext.isJust()&&this.chainId.isJust()){const t=this.args.clearSignContext.extract(),n=t.filters[e.path],a=t.trustedNamesAddresses[e.path];if(n!==void 0&&n.type==="trusted-name"&&a!==void 0){const s=await this.api.sendCommand(new M);if(!c(s))return y(s);const i=await this.contextModule.getFieldContext({kind:D.TRUSTED_NAME,chainId:this.chainId.extract(),address:a,challenge:s.data.challenge,types:n.types,sources:n.sources});if(i.type===d.TRUSTED_NAME){i.certificate&&await this.api.sendCommand(new E({keyUsage:i.certificate.keyUsageNumber,certificate:i.certificate.payload}));const l=await new T(this.api,{payload:i.payload,commandFactory:m=>new O({data:m.chunkedData,isFirstChunk:m.isFirstChunk})}).run();if(!c(l))return y(l)}}}return u}async filterValue(e,t){if(this.args.clearSignContext.isJust()){const n=this.args.clearSignContext.extract().filters[e.path];if(n===void 0)return u;const a=await this.provideFiltering(n,t,!1);return g.of(a)}return u}async provideFiltering(e,t,n){switch(e.type){case"trusted-name":return await this.api.sendCommand(new o({type:r.TrustedName,discarded:n,displayName:e.displayName,typesAndSourcesPayload:e.typesAndSourcesPayload,signature:e.signature}));case"datetime":return await this.api.sendCommand(new o({type:r.Datetime,discarded:n,displayName:e.displayName,signature:e.signature}));case"raw":return await this.api.sendCommand(new o({type:r.Raw,discarded:n,displayName:e.displayName,signature:e.signature}));case"token":return this.sanitizeDeviceIndex(e.tokenIndex,t),await this.api.sendCommand(new o({type:r.Token,discarded:n,tokenIndex:t.indexes[e.tokenIndex],signature:e.signature}));case"amount":return this.sanitizeDeviceIndex(e.tokenIndex,t),await this.api.sendCommand(new o({type:r.Amount,discarded:n,displayName:e.displayName,tokenIndex:t.indexes[e.tokenIndex],signature:e.signature}));case"calldata-value":return await this.provideCalldataInfos(e.calldataIndex),await this.api.sendCommand(new o({type:r.CalldataValue,discarded:n,calldataIndex:e.calldataIndex,signature:e.signature}));case"calldata-callee":return await this.provideCalldataInfos(e.calldataIndex),await this.api.sendCommand(new o({type:r.CalldataCallee,discarded:n,calldataIndex:e.calldataIndex,signature:e.signature}));case"calldata-spender":return await this.provideCalldataInfos(e.calldataIndex),await this.api.sendCommand(new o({type:r.CalldataSpender,discarded:n,calldataIndex:e.calldataIndex,signature:e.signature}));case"calldata-chain-id":return await this.provideCalldataInfos(e.calldataIndex),await this.api.sendCommand(new o({type:r.CalldataChainId,discarded:n,calldataIndex:e.calldataIndex,signature:e.signature}));case"calldata-selector":return await this.provideCalldataInfos(e.calldataIndex),await this.api.sendCommand(new o({type:r.CalldataSelector,discarded:n,calldataIndex:e.calldataIndex,signature:e.signature}));case"calldata-amount":return await this.provideCalldataInfos(e.calldataIndex),await this.api.sendCommand(new o({type:r.CalldataAmount,discarded:n,calldataIndex:e.calldataIndex,signature:e.signature}));default:{const a=e;throw new Error(`ProvideEIP712ContextTask/provideFiltering - Unhandled filter ${a}`)}}}async provideCalldataInfos(e){if(this.args.clearSignContext.isJust()){if(this.calldataMetadatas[e]!==void 0)return this.calldataMetadatas[e].remainingFilters--,u;const t=this.args.clearSignContext.extract().calldatas[e];if(t===void 0)return u;const a=[t.filter.valueFlag,t.filter.calleeFlag===h.Present,t.filter.chainIdFlag,t.filter.selectorFlag,t.filter.amountFlag,t.filter.spenderFlag===h.Present].filter(s=>s).length;return this.calldataMetadatas[e]={remainingFilters:a-1,contexts:this.args.calldatasContexts[e]},g.of(await this.api.sendCommand(new o({type:r.CalldataInfo,discarded:!1,calldataIndex:e,valueFlag:t.filter.valueFlag,calleeFlag:this.mapCalldataPresence(t.filter.calleeFlag),chainIdFlag:t.filter.chainIdFlag,selectorFlag:t.filter.selectorFlag,amountFlag:t.filter.amountFlag,spenderFlag:this.mapCalldataPresence(t.filter.spenderFlag),signature:t.filter.signature})))}return u}async tryProvideTransactionContext(){for(const e in this.calldataMetadatas){const t=this.calldataMetadatas[e];t.remainingFilters===0&&(t.contexts!==void 0&&await this.provideContextFactory({contexts:t.contexts,derivationPath:this.args.derivationPath}).run(),delete this.calldataMetadatas[e])}}mapCalldataPresence(e){switch(e){case h.None:return f.None;case h.Present:return f.Present;case h.VerifyingContract:return f.VerifyingContract;default:{const t=e;throw new Error(`Unhandled presence ${t}`)}}}sanitizeDeviceIndex(e,t){t.indexes[e]===void 0&&(t.indexes[e]=t.nextIndex,t.nextIndex=(t.nextIndex+1)%N)}}export{de as ProvideEIP712ContextTask};
2
2
  //# sourceMappingURL=ProvideEIP712ContextTask.js.map