@ledgerhq/device-signer-kit-tron 0.0.0-develop-20260731002630 → 0.0.0-develop-20260802002602
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +81 -0
- package/lib/cjs/internal/app-binder/TronAppBinder.test.js +2 -0
- package/lib/cjs/internal/app-binder/TronAppBinder.test.js.map +7 -0
- package/lib/cjs/internal/use-cases/address/GetAddressUseCase.test.js +2 -0
- package/lib/cjs/internal/use-cases/address/GetAddressUseCase.test.js.map +7 -0
- package/lib/cjs/internal/use-cases/app-configuration/GetAppConfigurationUseCase.test.js +2 -0
- package/lib/cjs/internal/use-cases/app-configuration/GetAppConfigurationUseCase.test.js.map +7 -0
- package/lib/cjs/package.json +1 -1
- package/lib/esm/internal/app-binder/TronAppBinder.test.js +2 -0
- package/lib/esm/internal/app-binder/TronAppBinder.test.js.map +7 -0
- package/lib/esm/internal/use-cases/address/GetAddressUseCase.test.js +2 -0
- package/lib/esm/internal/use-cases/address/GetAddressUseCase.test.js.map +7 -0
- package/lib/esm/internal/use-cases/app-configuration/GetAppConfigurationUseCase.test.js +2 -0
- package/lib/esm/internal/use-cases/app-configuration/GetAppConfigurationUseCase.test.js.map +7 -0
- package/lib/esm/package.json +1 -1
- package/lib/types/internal/app-binder/TronAppBinder.test.d.ts +2 -0
- package/lib/types/internal/app-binder/TronAppBinder.test.d.ts.map +1 -0
- package/lib/types/internal/use-cases/address/GetAddressUseCase.test.d.ts +2 -0
- package/lib/types/internal/use-cases/address/GetAddressUseCase.test.d.ts.map +1 -0
- package/lib/types/internal/use-cases/app-configuration/GetAppConfigurationUseCase.test.d.ts +2 -0
- package/lib/types/internal/use-cases/app-configuration/GetAppConfigurationUseCase.test.d.ts.map +1 -0
- package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -36,6 +36,87 @@ const { observable: messageObservable } = signer.signPersonalMessage(
|
|
|
36
36
|
const { observable: configObservable } = signer.getAppConfiguration();
|
|
37
37
|
```
|
|
38
38
|
|
|
39
|
+
### Get address
|
|
40
|
+
|
|
41
|
+
Derives the Tron address and public key for a BIP32 derivation path (Tron uses
|
|
42
|
+
coin type `195`).
|
|
43
|
+
|
|
44
|
+
```typescript
|
|
45
|
+
signer.getAddress(
|
|
46
|
+
derivationPath: string,
|
|
47
|
+
options?: {
|
|
48
|
+
// Display the address on the device for user verification (default: false).
|
|
49
|
+
checkOnDevice?: boolean;
|
|
50
|
+
// Skip the "open app" step if the Tron app is already open (default: false).
|
|
51
|
+
skipOpenApp?: boolean;
|
|
52
|
+
},
|
|
53
|
+
): GetAddressDAReturnType;
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
The returned device action resolves to:
|
|
57
|
+
|
|
58
|
+
```typescript
|
|
59
|
+
{
|
|
60
|
+
address: string; // Base58Check Tron address, e.g. "TWdnWBzFdBP1b8sqZ5RcFDbkV3sBmnxsYu"
|
|
61
|
+
publicKey: string; // hex-encoded public key
|
|
62
|
+
chainCode?: string; // hex-encoded chain code (only when requested)
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
```typescript
|
|
67
|
+
const { observable, cancel } = signer.getAddress("44'/195'/0'/0/0", {
|
|
68
|
+
checkOnDevice: true,
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
observable.subscribe((state) => {
|
|
72
|
+
switch (state.status) {
|
|
73
|
+
case "completed":
|
|
74
|
+
console.log(state.output.address, state.output.publicKey);
|
|
75
|
+
break;
|
|
76
|
+
case "error":
|
|
77
|
+
console.error(state.error);
|
|
78
|
+
break;
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### Get app configuration
|
|
84
|
+
|
|
85
|
+
Reads the Tron app configuration from the device (version and the flags the app
|
|
86
|
+
was built with). No user interaction is required.
|
|
87
|
+
|
|
88
|
+
```typescript
|
|
89
|
+
signer.getAppConfiguration(): GetAppConfigurationDAReturnType;
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
The returned device action resolves to:
|
|
93
|
+
|
|
94
|
+
```typescript
|
|
95
|
+
{
|
|
96
|
+
version: string; // semantic version, e.g. "0.5.0"
|
|
97
|
+
versionN: number; // numeric version (major * 10000 + minor * 100 + patch)
|
|
98
|
+
allowData: boolean; // "sign data" setting enabled on the device
|
|
99
|
+
allowContract: boolean; // "sign custom contracts" setting enabled
|
|
100
|
+
truncateAddress: boolean; // addresses are truncated on the device screen
|
|
101
|
+
signByHash: boolean; // "sign by hash" setting enabled
|
|
102
|
+
}
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
```typescript
|
|
106
|
+
const { observable, cancel } = signer.getAppConfiguration();
|
|
107
|
+
|
|
108
|
+
observable.subscribe((state) => {
|
|
109
|
+
switch (state.status) {
|
|
110
|
+
case "completed":
|
|
111
|
+
console.log(state.output.version, state.output.allowContract);
|
|
112
|
+
break;
|
|
113
|
+
case "error":
|
|
114
|
+
console.error(state.error);
|
|
115
|
+
break;
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
```
|
|
119
|
+
|
|
39
120
|
## Development
|
|
40
121
|
|
|
41
122
|
```bash
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var e=require("@ledgerhq/device-management-kit"),l=require("rxjs"),m=require("../app-binder/command/GetAddressCommand"),v=require("../app-binder/command/GetAppConfigurationCommand"),d=require("../app-binder/constants"),o=require("./TronAppBinder");describe("TronAppBinder",()=>{const n={sendCommand:vi.fn(),executeDeviceAction:vi.fn()},p={debug:vi.fn()},s=vi.fn().mockReturnValue(p);beforeEach(()=>{vi.clearAllMocks()}),it("should be defined",()=>{const t=new o.TronAppBinder({},{},s);expect(t).toBeDefined()}),describe("getAddress",()=>{it("should return the address",()=>new Promise((t,i)=>{const c={publicKey:"0401020304",address:"TWdnWBzFdBP1b8sqZ5RcFDbkV3sBmnxsYu"};vi.spyOn(n,"executeDeviceAction").mockReturnValue({observable:(0,l.from)([{status:e.DeviceActionStatus.Completed,output:c}]),cancel:vi.fn()});const u=new o.TronAppBinder(n,"sessionId",s),{observable:A}=u.getAddress({derivationPath:"44'/195'/0'/0/0",checkOnDevice:!1,skipOpenApp:!1}),a=[];A.subscribe({next:r=>a.push(r),error:i,complete:()=>{try{expect(a).toEqual([{status:e.DeviceActionStatus.Completed,output:c}]),t()}catch(r){i(r)}}})})),describe("calls executeDeviceAction with the correct params",()=>{const t="44'/195'/0'/0/0";it("requires no user interaction when checkOnDevice is false",()=>{new o.TronAppBinder(n,"sessionId",s).getAddress({derivationPath:t,checkOnDevice:!1,skipOpenApp:!1}),expect(n.executeDeviceAction).toHaveBeenCalledWith(expect.objectContaining({sessionId:"sessionId",deviceAction:new e.SendCommandInAppDeviceAction({input:{command:new m.GetAddressCommand({derivationPath:t,checkOnDevice:!1}),appName:d.APP_NAME,requiredUserInteraction:e.UserInteractionRequired.None,skipOpenApp:!1},logger:p})}))}),it("requires VerifyAddress interaction when checkOnDevice is true",()=>{new o.TronAppBinder(n,"sessionId",s).getAddress({derivationPath:t,checkOnDevice:!0,skipOpenApp:!0}),expect(n.executeDeviceAction).toHaveBeenCalledWith(expect.objectContaining({sessionId:"sessionId",deviceAction:new e.SendCommandInAppDeviceAction({input:{command:new m.GetAddressCommand({derivationPath:t,checkOnDevice:!0}),appName:d.APP_NAME,requiredUserInteraction:e.UserInteractionRequired.VerifyAddress,skipOpenApp:!0},logger:p})}))})})}),describe("getAppConfiguration",()=>{it("should return the app configuration",()=>new Promise((t,i)=>{const c={version:"0.5.0",versionN:500,allowData:!0,allowContract:!0,truncateAddress:!0,signByHash:!0};vi.spyOn(n,"executeDeviceAction").mockReturnValue({observable:(0,l.from)([{status:e.DeviceActionStatus.Completed,output:c}]),cancel:vi.fn()});const u=new o.TronAppBinder(n,"sessionId",s),{observable:A}=u.getAppConfiguration(),a=[];A.subscribe({next:r=>a.push(r),error:i,complete:()=>{try{expect(a).toEqual([{status:e.DeviceActionStatus.Completed,output:c}]),t()}catch(r){i(r)}}})})),it("should call executeDeviceAction with the correct params",()=>{new o.TronAppBinder(n,"sessionId",s).getAppConfiguration(),expect(n.executeDeviceAction).toHaveBeenCalledWith(expect.objectContaining({sessionId:"sessionId",deviceAction:new e.SendCommandInAppDeviceAction({input:{command:new v.GetAppConfigurationCommand,appName:d.APP_NAME,requiredUserInteraction:e.UserInteractionRequired.None,skipOpenApp:!1},logger:p})}))})})});
|
|
2
|
+
//# sourceMappingURL=TronAppBinder.test.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/internal/app-binder/TronAppBinder.test.ts"],
|
|
4
|
+
"sourcesContent": ["import {\n type DeviceActionState,\n DeviceActionStatus,\n type DeviceManagementKit,\n type DeviceSessionId,\n type LoggerPublisherService,\n SendCommandInAppDeviceAction,\n UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\nimport { from } from \"rxjs\";\n\nimport {\n type GetAddressDAError,\n type GetAddressDAIntermediateValue,\n type GetAddressDAOutput,\n} from \"@api/app-binder/GetAddressDeviceActionTypes\";\nimport {\n type GetAppConfigurationDAError,\n type GetAppConfigurationDAIntermediateValue,\n type GetAppConfigurationDAOutput,\n} from \"@api/app-binder/GetAppConfigurationDeviceActionTypes\";\nimport { GetAddressCommand } from \"@internal/app-binder/command/GetAddressCommand\";\nimport { GetAppConfigurationCommand } from \"@internal/app-binder/command/GetAppConfigurationCommand\";\nimport { APP_NAME } from \"@internal/app-binder/constants\";\n\nimport { TronAppBinder } from \"./TronAppBinder\";\n\ndescribe(\"TronAppBinder\", () => {\n const mockedDmk: DeviceManagementKit = {\n sendCommand: vi.fn(),\n executeDeviceAction: vi.fn(),\n } as unknown as DeviceManagementKit;\n\n const loggerMock = {\n debug: vi.fn(),\n } as unknown as LoggerPublisherService;\n const loggerFactoryMock = vi.fn().mockReturnValue(loggerMock);\n\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n it(\"should be defined\", () => {\n const binder = new TronAppBinder(\n {} as DeviceManagementKit,\n {} as DeviceSessionId,\n loggerFactoryMock,\n );\n expect(binder).toBeDefined();\n });\n\n describe(\"getAddress\", () => {\n it(\"should return the address\", () =>\n new Promise<void>((resolve, reject) => {\n // GIVEN\n const output: GetAddressDAOutput = {\n publicKey: \"0401020304\",\n address: \"TWdnWBzFdBP1b8sqZ5RcFDbkV3sBmnxsYu\",\n };\n\n vi.spyOn(mockedDmk, \"executeDeviceAction\").mockReturnValue({\n observable: from([\n {\n status: DeviceActionStatus.Completed,\n output,\n } as DeviceActionState<\n GetAddressDAOutput,\n GetAddressDAError,\n GetAddressDAIntermediateValue\n >,\n ]),\n cancel: vi.fn(),\n });\n\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n const { observable } = binder.getAddress({\n derivationPath: \"44'/195'/0'/0/0\",\n checkOnDevice: false,\n skipOpenApp: false,\n });\n\n // THEN\n const states: DeviceActionState<\n GetAddressDAOutput,\n GetAddressDAError,\n GetAddressDAIntermediateValue\n >[] = [];\n observable.subscribe({\n next: (state) => states.push(state),\n error: reject,\n complete: () => {\n try {\n expect(states).toEqual([\n { status: DeviceActionStatus.Completed, output },\n ]);\n resolve();\n } catch (err) {\n reject(err as Error);\n }\n },\n });\n }));\n\n describe(\"calls executeDeviceAction with the correct params\", () => {\n const derivationPath = \"44'/195'/0'/0/0\";\n\n it(\"requires no user interaction when checkOnDevice is false\", () => {\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n binder.getAddress({\n derivationPath,\n checkOnDevice: false,\n skipOpenApp: false,\n });\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith(\n expect.objectContaining({\n sessionId: \"sessionId\",\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetAddressCommand({\n derivationPath,\n checkOnDevice: false,\n }),\n appName: APP_NAME,\n requiredUserInteraction: UserInteractionRequired.None,\n skipOpenApp: false,\n },\n logger: loggerMock,\n }),\n }),\n );\n });\n\n it(\"requires VerifyAddress interaction when checkOnDevice is true\", () => {\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n binder.getAddress({\n derivationPath,\n checkOnDevice: true,\n skipOpenApp: true,\n });\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith(\n expect.objectContaining({\n sessionId: \"sessionId\",\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetAddressCommand({\n derivationPath,\n checkOnDevice: true,\n }),\n appName: APP_NAME,\n requiredUserInteraction: UserInteractionRequired.VerifyAddress,\n skipOpenApp: true,\n },\n logger: loggerMock,\n }),\n }),\n );\n });\n });\n });\n\n describe(\"getAppConfiguration\", () => {\n it(\"should return the app configuration\", () =>\n new Promise<void>((resolve, reject) => {\n // GIVEN\n const output: GetAppConfigurationDAOutput = {\n version: \"0.5.0\",\n versionN: 500,\n allowData: true,\n allowContract: true,\n truncateAddress: true,\n signByHash: true,\n };\n\n vi.spyOn(mockedDmk, \"executeDeviceAction\").mockReturnValue({\n observable: from([\n {\n status: DeviceActionStatus.Completed,\n output,\n } as DeviceActionState<\n GetAppConfigurationDAOutput,\n GetAppConfigurationDAError,\n GetAppConfigurationDAIntermediateValue\n >,\n ]),\n cancel: vi.fn(),\n });\n\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n const { observable } = binder.getAppConfiguration();\n\n // THEN\n const states: DeviceActionState<\n GetAppConfigurationDAOutput,\n GetAppConfigurationDAError,\n GetAppConfigurationDAIntermediateValue\n >[] = [];\n observable.subscribe({\n next: (state) => states.push(state),\n error: reject,\n complete: () => {\n try {\n expect(states).toEqual([\n { status: DeviceActionStatus.Completed, output },\n ]);\n resolve();\n } catch (err) {\n reject(err as Error);\n }\n },\n });\n }));\n\n it(\"should call executeDeviceAction with the correct params\", () => {\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n binder.getAppConfiguration();\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith(\n expect.objectContaining({\n sessionId: \"sessionId\",\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetAppConfigurationCommand(),\n appName: APP_NAME,\n requiredUserInteraction: UserInteractionRequired.None,\n skipOpenApp: false,\n },\n logger: loggerMock,\n }),\n }),\n );\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["import_device_management_kit", "import_rxjs", "import_GetAddressCommand", "import_GetAppConfigurationCommand", "import_constants", "import_TronAppBinder", "mockedDmk", "loggerMock", "loggerFactoryMock", "binder", "resolve", "reject", "output", "observable", "states", "state", "err", "derivationPath"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var n=require("./GetAddressUseCase");describe("GetAddressUseCase",()=>{const e="44'/195'/0'/0/0",s={address:"some-address"},t=vi.fn().mockReturnValue(s),o={getAddress:t};let p;beforeEach(()=>{vi.clearAllMocks(),p=new n.GetAddressUseCase(o)}),it("should forward the provided options to the app binder",()=>{const r=p.execute(e,{checkOnDevice:!0,skipOpenApp:!0});expect(r).toEqual(s),expect(t).toHaveBeenCalledWith({derivationPath:e,checkOnDevice:!0,skipOpenApp:!0})}),it("should default checkOnDevice and skipOpenApp to false",()=>{const c=p.execute(e);expect(c).toEqual(s),expect(t).toHaveBeenCalledWith({derivationPath:e,checkOnDevice:!1,skipOpenApp:!1})})});
|
|
2
|
+
//# sourceMappingURL=GetAddressUseCase.test.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/internal/use-cases/address/GetAddressUseCase.test.ts"],
|
|
4
|
+
"sourcesContent": ["import { type TronAppBinder } from \"@internal/app-binder/TronAppBinder\";\n\nimport { GetAddressUseCase } from \"./GetAddressUseCase\";\n\ndescribe(\"GetAddressUseCase\", () => {\n const derivationPath = \"44'/195'/0'/0/0\";\n const returnedValue = { address: \"some-address\" };\n const getAddressMock = vi.fn().mockReturnValue(returnedValue);\n const appBinderMock = {\n getAddress: getAddressMock,\n } as unknown as TronAppBinder;\n let useCase: GetAddressUseCase;\n\n beforeEach(() => {\n vi.clearAllMocks();\n useCase = new GetAddressUseCase(appBinderMock);\n });\n\n it(\"should forward the provided options to the app binder\", () => {\n // GIVEN\n const checkOnDevice = true;\n const skipOpenApp = true;\n\n // WHEN\n const result = useCase.execute(derivationPath, {\n checkOnDevice,\n skipOpenApp,\n });\n\n // THEN\n expect(result).toEqual(returnedValue);\n expect(getAddressMock).toHaveBeenCalledWith({\n derivationPath,\n checkOnDevice,\n skipOpenApp,\n });\n });\n\n it(\"should default checkOnDevice and skipOpenApp to false\", () => {\n // WHEN\n const result = useCase.execute(derivationPath);\n\n // THEN\n expect(result).toEqual(returnedValue);\n expect(getAddressMock).toHaveBeenCalledWith({\n derivationPath,\n checkOnDevice: false,\n skipOpenApp: false,\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "aAEA,IAAAA,EAAkC,+BAElC,SAAS,oBAAqB,IAAM,CAClC,MAAMC,EAAiB,kBACjBC,EAAgB,CAAE,QAAS,cAAe,EAC1CC,EAAiB,GAAG,GAAG,EAAE,gBAAgBD,CAAa,EACtDE,EAAgB,CACpB,WAAYD,CACd,EACA,IAAIE,EAEJ,WAAW,IAAM,CACf,GAAG,cAAc,EACjBA,EAAU,IAAI,oBAAkBD,CAAa,CAC/C,CAAC,EAED,GAAG,wDAAyD,IAAM,CAMhE,MAAME,EAASD,EAAQ,QAAQJ,EAAgB,CAC7C,iBACA,cACF,CAAC,EAGD,OAAOK,CAAM,EAAE,QAAQJ,CAAa,EACpC,OAAOC,CAAc,EAAE,qBAAqB,CAC1C,eAAAF,EACA,iBACA,cACF,CAAC,CACH,CAAC,EAED,GAAG,wDAAyD,IAAM,CAEhE,MAAMK,EAASD,EAAQ,QAAQJ,CAAc,EAG7C,OAAOK,CAAM,EAAE,QAAQJ,CAAa,EACpC,OAAOC,CAAc,EAAE,qBAAqB,CAC1C,eAAAF,EACA,cAAe,GACf,YAAa,EACf,CAAC,CACH,CAAC,CACH,CAAC",
|
|
6
|
+
"names": ["import_GetAddressUseCase", "derivationPath", "returnedValue", "getAddressMock", "appBinderMock", "useCase", "result"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var t=require("./GetAppConfigurationUseCase");describe("GetAppConfigurationUseCase",()=>{const e={observable:{},cancel:vi.fn()},n=vi.fn().mockReturnValue(e),p={getAppConfiguration:n};let o;beforeEach(()=>{vi.clearAllMocks(),o=new t.GetAppConfigurationUseCase(p)}),it("should call getAppConfiguration on the app binder",()=>{const a=o.execute();expect(a).toEqual(e),expect(n).toHaveBeenCalledWith()})});
|
|
2
|
+
//# sourceMappingURL=GetAppConfigurationUseCase.test.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/internal/use-cases/app-configuration/GetAppConfigurationUseCase.test.ts"],
|
|
4
|
+
"sourcesContent": ["import { type TronAppBinder } from \"@internal/app-binder/TronAppBinder\";\n\nimport { GetAppConfigurationUseCase } from \"./GetAppConfigurationUseCase\";\n\ndescribe(\"GetAppConfigurationUseCase\", () => {\n const returnedValue = { observable: {}, cancel: vi.fn() };\n const getAppConfigurationMock = vi.fn().mockReturnValue(returnedValue);\n const appBinderMock = {\n getAppConfiguration: getAppConfigurationMock,\n } as unknown as TronAppBinder;\n let useCase: GetAppConfigurationUseCase;\n\n beforeEach(() => {\n vi.clearAllMocks();\n useCase = new GetAppConfigurationUseCase(appBinderMock);\n });\n\n it(\"should call getAppConfiguration on the app binder\", () => {\n // WHEN\n const result = useCase.execute();\n\n // THEN\n expect(result).toEqual(returnedValue);\n expect(getAppConfigurationMock).toHaveBeenCalledWith();\n });\n});\n"],
|
|
5
|
+
"mappings": "aAEA,IAAAA,EAA2C,wCAE3C,SAAS,6BAA8B,IAAM,CAC3C,MAAMC,EAAgB,CAAE,WAAY,CAAC,EAAG,OAAQ,GAAG,GAAG,CAAE,EAClDC,EAA0B,GAAG,GAAG,EAAE,gBAAgBD,CAAa,EAC/DE,EAAgB,CACpB,oBAAqBD,CACvB,EACA,IAAIE,EAEJ,WAAW,IAAM,CACf,GAAG,cAAc,EACjBA,EAAU,IAAI,6BAA2BD,CAAa,CACxD,CAAC,EAED,GAAG,oDAAqD,IAAM,CAE5D,MAAME,EAASD,EAAQ,QAAQ,EAG/B,OAAOC,CAAM,EAAE,QAAQJ,CAAa,EACpC,OAAOC,CAAuB,EAAE,qBAAqB,CACvD,CAAC,CACH,CAAC",
|
|
6
|
+
"names": ["import_GetAppConfigurationUseCase", "returnedValue", "getAppConfigurationMock", "appBinderMock", "useCase", "result"]
|
|
7
|
+
}
|
package/lib/cjs/package.json
CHANGED
|
@@ -56,5 +56,5 @@
|
|
|
56
56
|
"watch:builds": "pnpm ldmk-tool watch --entryPoints src/index.ts,src/**/*.ts --tsconfig tsconfig.prod.json",
|
|
57
57
|
"watch:types": "concurrently \"tsc --watch -p tsconfig.prod.json\" \"tsc-alias --watch -p tsconfig.prod.json\""
|
|
58
58
|
},
|
|
59
|
-
"version": "0.0.0-develop-
|
|
59
|
+
"version": "0.0.0-develop-20260802002602"
|
|
60
60
|
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{DeviceActionStatus as p,SendCommandInAppDeviceAction as A,UserInteractionRequired as l}from"@ledgerhq/device-management-kit";import{from as v}from"rxjs";import{GetAddressCommand as D}from"../app-binder/command/GetAddressCommand";import{GetAppConfigurationCommand as g}from"../app-binder/command/GetAppConfigurationCommand";import{APP_NAME as m}from"../app-binder/constants";import{TronAppBinder as o}from"./TronAppBinder";describe("TronAppBinder",()=>{const t={sendCommand:vi.fn(),executeDeviceAction:vi.fn()},a={debug:vi.fn()},r=vi.fn().mockReturnValue(a);beforeEach(()=>{vi.clearAllMocks()}),it("should be defined",()=>{const e=new o({},{},r);expect(e).toBeDefined()}),describe("getAddress",()=>{it("should return the address",()=>new Promise((e,n)=>{const s={publicKey:"0401020304",address:"TWdnWBzFdBP1b8sqZ5RcFDbkV3sBmnxsYu"};vi.spyOn(t,"executeDeviceAction").mockReturnValue({observable:v([{status:p.Completed,output:s}]),cancel:vi.fn()});const d=new o(t,"sessionId",r),{observable:u}=d.getAddress({derivationPath:"44'/195'/0'/0/0",checkOnDevice:!1,skipOpenApp:!1}),c=[];u.subscribe({next:i=>c.push(i),error:n,complete:()=>{try{expect(c).toEqual([{status:p.Completed,output:s}]),e()}catch(i){n(i)}}})})),describe("calls executeDeviceAction with the correct params",()=>{const e="44'/195'/0'/0/0";it("requires no user interaction when checkOnDevice is false",()=>{new o(t,"sessionId",r).getAddress({derivationPath:e,checkOnDevice:!1,skipOpenApp:!1}),expect(t.executeDeviceAction).toHaveBeenCalledWith(expect.objectContaining({sessionId:"sessionId",deviceAction:new A({input:{command:new D({derivationPath:e,checkOnDevice:!1}),appName:m,requiredUserInteraction:l.None,skipOpenApp:!1},logger:a})}))}),it("requires VerifyAddress interaction when checkOnDevice is true",()=>{new o(t,"sessionId",r).getAddress({derivationPath:e,checkOnDevice:!0,skipOpenApp:!0}),expect(t.executeDeviceAction).toHaveBeenCalledWith(expect.objectContaining({sessionId:"sessionId",deviceAction:new A({input:{command:new D({derivationPath:e,checkOnDevice:!0}),appName:m,requiredUserInteraction:l.VerifyAddress,skipOpenApp:!0},logger:a})}))})})}),describe("getAppConfiguration",()=>{it("should return the app configuration",()=>new Promise((e,n)=>{const s={version:"0.5.0",versionN:500,allowData:!0,allowContract:!0,truncateAddress:!0,signByHash:!0};vi.spyOn(t,"executeDeviceAction").mockReturnValue({observable:v([{status:p.Completed,output:s}]),cancel:vi.fn()});const d=new o(t,"sessionId",r),{observable:u}=d.getAppConfiguration(),c=[];u.subscribe({next:i=>c.push(i),error:n,complete:()=>{try{expect(c).toEqual([{status:p.Completed,output:s}]),e()}catch(i){n(i)}}})})),it("should call executeDeviceAction with the correct params",()=>{new o(t,"sessionId",r).getAppConfiguration(),expect(t.executeDeviceAction).toHaveBeenCalledWith(expect.objectContaining({sessionId:"sessionId",deviceAction:new A({input:{command:new g,appName:m,requiredUserInteraction:l.None,skipOpenApp:!1},logger:a})}))})})});
|
|
2
|
+
//# sourceMappingURL=TronAppBinder.test.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/internal/app-binder/TronAppBinder.test.ts"],
|
|
4
|
+
"sourcesContent": ["import {\n type DeviceActionState,\n DeviceActionStatus,\n type DeviceManagementKit,\n type DeviceSessionId,\n type LoggerPublisherService,\n SendCommandInAppDeviceAction,\n UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\nimport { from } from \"rxjs\";\n\nimport {\n type GetAddressDAError,\n type GetAddressDAIntermediateValue,\n type GetAddressDAOutput,\n} from \"@api/app-binder/GetAddressDeviceActionTypes\";\nimport {\n type GetAppConfigurationDAError,\n type GetAppConfigurationDAIntermediateValue,\n type GetAppConfigurationDAOutput,\n} from \"@api/app-binder/GetAppConfigurationDeviceActionTypes\";\nimport { GetAddressCommand } from \"@internal/app-binder/command/GetAddressCommand\";\nimport { GetAppConfigurationCommand } from \"@internal/app-binder/command/GetAppConfigurationCommand\";\nimport { APP_NAME } from \"@internal/app-binder/constants\";\n\nimport { TronAppBinder } from \"./TronAppBinder\";\n\ndescribe(\"TronAppBinder\", () => {\n const mockedDmk: DeviceManagementKit = {\n sendCommand: vi.fn(),\n executeDeviceAction: vi.fn(),\n } as unknown as DeviceManagementKit;\n\n const loggerMock = {\n debug: vi.fn(),\n } as unknown as LoggerPublisherService;\n const loggerFactoryMock = vi.fn().mockReturnValue(loggerMock);\n\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n it(\"should be defined\", () => {\n const binder = new TronAppBinder(\n {} as DeviceManagementKit,\n {} as DeviceSessionId,\n loggerFactoryMock,\n );\n expect(binder).toBeDefined();\n });\n\n describe(\"getAddress\", () => {\n it(\"should return the address\", () =>\n new Promise<void>((resolve, reject) => {\n // GIVEN\n const output: GetAddressDAOutput = {\n publicKey: \"0401020304\",\n address: \"TWdnWBzFdBP1b8sqZ5RcFDbkV3sBmnxsYu\",\n };\n\n vi.spyOn(mockedDmk, \"executeDeviceAction\").mockReturnValue({\n observable: from([\n {\n status: DeviceActionStatus.Completed,\n output,\n } as DeviceActionState<\n GetAddressDAOutput,\n GetAddressDAError,\n GetAddressDAIntermediateValue\n >,\n ]),\n cancel: vi.fn(),\n });\n\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n const { observable } = binder.getAddress({\n derivationPath: \"44'/195'/0'/0/0\",\n checkOnDevice: false,\n skipOpenApp: false,\n });\n\n // THEN\n const states: DeviceActionState<\n GetAddressDAOutput,\n GetAddressDAError,\n GetAddressDAIntermediateValue\n >[] = [];\n observable.subscribe({\n next: (state) => states.push(state),\n error: reject,\n complete: () => {\n try {\n expect(states).toEqual([\n { status: DeviceActionStatus.Completed, output },\n ]);\n resolve();\n } catch (err) {\n reject(err as Error);\n }\n },\n });\n }));\n\n describe(\"calls executeDeviceAction with the correct params\", () => {\n const derivationPath = \"44'/195'/0'/0/0\";\n\n it(\"requires no user interaction when checkOnDevice is false\", () => {\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n binder.getAddress({\n derivationPath,\n checkOnDevice: false,\n skipOpenApp: false,\n });\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith(\n expect.objectContaining({\n sessionId: \"sessionId\",\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetAddressCommand({\n derivationPath,\n checkOnDevice: false,\n }),\n appName: APP_NAME,\n requiredUserInteraction: UserInteractionRequired.None,\n skipOpenApp: false,\n },\n logger: loggerMock,\n }),\n }),\n );\n });\n\n it(\"requires VerifyAddress interaction when checkOnDevice is true\", () => {\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n binder.getAddress({\n derivationPath,\n checkOnDevice: true,\n skipOpenApp: true,\n });\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith(\n expect.objectContaining({\n sessionId: \"sessionId\",\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetAddressCommand({\n derivationPath,\n checkOnDevice: true,\n }),\n appName: APP_NAME,\n requiredUserInteraction: UserInteractionRequired.VerifyAddress,\n skipOpenApp: true,\n },\n logger: loggerMock,\n }),\n }),\n );\n });\n });\n });\n\n describe(\"getAppConfiguration\", () => {\n it(\"should return the app configuration\", () =>\n new Promise<void>((resolve, reject) => {\n // GIVEN\n const output: GetAppConfigurationDAOutput = {\n version: \"0.5.0\",\n versionN: 500,\n allowData: true,\n allowContract: true,\n truncateAddress: true,\n signByHash: true,\n };\n\n vi.spyOn(mockedDmk, \"executeDeviceAction\").mockReturnValue({\n observable: from([\n {\n status: DeviceActionStatus.Completed,\n output,\n } as DeviceActionState<\n GetAppConfigurationDAOutput,\n GetAppConfigurationDAError,\n GetAppConfigurationDAIntermediateValue\n >,\n ]),\n cancel: vi.fn(),\n });\n\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n const { observable } = binder.getAppConfiguration();\n\n // THEN\n const states: DeviceActionState<\n GetAppConfigurationDAOutput,\n GetAppConfigurationDAError,\n GetAppConfigurationDAIntermediateValue\n >[] = [];\n observable.subscribe({\n next: (state) => states.push(state),\n error: reject,\n complete: () => {\n try {\n expect(states).toEqual([\n { status: DeviceActionStatus.Completed, output },\n ]);\n resolve();\n } catch (err) {\n reject(err as Error);\n }\n },\n });\n }));\n\n it(\"should call executeDeviceAction with the correct params\", () => {\n // WHEN\n const binder = new TronAppBinder(\n mockedDmk,\n \"sessionId\",\n loggerFactoryMock,\n );\n binder.getAppConfiguration();\n\n // THEN\n expect(mockedDmk.executeDeviceAction).toHaveBeenCalledWith(\n expect.objectContaining({\n sessionId: \"sessionId\",\n deviceAction: new SendCommandInAppDeviceAction({\n input: {\n command: new GetAppConfigurationCommand(),\n appName: APP_NAME,\n requiredUserInteraction: UserInteractionRequired.None,\n skipOpenApp: false,\n },\n logger: loggerMock,\n }),\n }),\n );\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["DeviceActionStatus", "SendCommandInAppDeviceAction", "UserInteractionRequired", "from", "GetAddressCommand", "GetAppConfigurationCommand", "APP_NAME", "TronAppBinder", "mockedDmk", "loggerMock", "loggerFactoryMock", "binder", "resolve", "reject", "output", "observable", "states", "state", "err", "derivationPath"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{GetAddressUseCase as r}from"./GetAddressUseCase";describe("GetAddressUseCase",()=>{const e="44'/195'/0'/0/0",s={address:"some-address"},t=vi.fn().mockReturnValue(s),n={getAddress:t};let p;beforeEach(()=>{vi.clearAllMocks(),p=new r(n)}),it("should forward the provided options to the app binder",()=>{const o=p.execute(e,{checkOnDevice:!0,skipOpenApp:!0});expect(o).toEqual(s),expect(t).toHaveBeenCalledWith({derivationPath:e,checkOnDevice:!0,skipOpenApp:!0})}),it("should default checkOnDevice and skipOpenApp to false",()=>{const c=p.execute(e);expect(c).toEqual(s),expect(t).toHaveBeenCalledWith({derivationPath:e,checkOnDevice:!1,skipOpenApp:!1})})});
|
|
2
|
+
//# sourceMappingURL=GetAddressUseCase.test.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/internal/use-cases/address/GetAddressUseCase.test.ts"],
|
|
4
|
+
"sourcesContent": ["import { type TronAppBinder } from \"@internal/app-binder/TronAppBinder\";\n\nimport { GetAddressUseCase } from \"./GetAddressUseCase\";\n\ndescribe(\"GetAddressUseCase\", () => {\n const derivationPath = \"44'/195'/0'/0/0\";\n const returnedValue = { address: \"some-address\" };\n const getAddressMock = vi.fn().mockReturnValue(returnedValue);\n const appBinderMock = {\n getAddress: getAddressMock,\n } as unknown as TronAppBinder;\n let useCase: GetAddressUseCase;\n\n beforeEach(() => {\n vi.clearAllMocks();\n useCase = new GetAddressUseCase(appBinderMock);\n });\n\n it(\"should forward the provided options to the app binder\", () => {\n // GIVEN\n const checkOnDevice = true;\n const skipOpenApp = true;\n\n // WHEN\n const result = useCase.execute(derivationPath, {\n checkOnDevice,\n skipOpenApp,\n });\n\n // THEN\n expect(result).toEqual(returnedValue);\n expect(getAddressMock).toHaveBeenCalledWith({\n derivationPath,\n checkOnDevice,\n skipOpenApp,\n });\n });\n\n it(\"should default checkOnDevice and skipOpenApp to false\", () => {\n // WHEN\n const result = useCase.execute(derivationPath);\n\n // THEN\n expect(result).toEqual(returnedValue);\n expect(getAddressMock).toHaveBeenCalledWith({\n derivationPath,\n checkOnDevice: false,\n skipOpenApp: false,\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "AAEA,OAAS,qBAAAA,MAAyB,sBAElC,SAAS,oBAAqB,IAAM,CAClC,MAAMC,EAAiB,kBACjBC,EAAgB,CAAE,QAAS,cAAe,EAC1CC,EAAiB,GAAG,GAAG,EAAE,gBAAgBD,CAAa,EACtDE,EAAgB,CACpB,WAAYD,CACd,EACA,IAAIE,EAEJ,WAAW,IAAM,CACf,GAAG,cAAc,EACjBA,EAAU,IAAIL,EAAkBI,CAAa,CAC/C,CAAC,EAED,GAAG,wDAAyD,IAAM,CAMhE,MAAME,EAASD,EAAQ,QAAQJ,EAAgB,CAC7C,iBACA,cACF,CAAC,EAGD,OAAOK,CAAM,EAAE,QAAQJ,CAAa,EACpC,OAAOC,CAAc,EAAE,qBAAqB,CAC1C,eAAAF,EACA,iBACA,cACF,CAAC,CACH,CAAC,EAED,GAAG,wDAAyD,IAAM,CAEhE,MAAMK,EAASD,EAAQ,QAAQJ,CAAc,EAG7C,OAAOK,CAAM,EAAE,QAAQJ,CAAa,EACpC,OAAOC,CAAc,EAAE,qBAAqB,CAC1C,eAAAF,EACA,cAAe,GACf,YAAa,EACf,CAAC,CACH,CAAC,CACH,CAAC",
|
|
6
|
+
"names": ["GetAddressUseCase", "derivationPath", "returnedValue", "getAddressMock", "appBinderMock", "useCase", "result"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{GetAppConfigurationUseCase as a}from"./GetAppConfigurationUseCase";describe("GetAppConfigurationUseCase",()=>{const e={observable:{},cancel:vi.fn()},n=vi.fn().mockReturnValue(e),t={getAppConfiguration:n};let o;beforeEach(()=>{vi.clearAllMocks(),o=new a(t)}),it("should call getAppConfiguration on the app binder",()=>{const p=o.execute();expect(p).toEqual(e),expect(n).toHaveBeenCalledWith()})});
|
|
2
|
+
//# sourceMappingURL=GetAppConfigurationUseCase.test.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/internal/use-cases/app-configuration/GetAppConfigurationUseCase.test.ts"],
|
|
4
|
+
"sourcesContent": ["import { type TronAppBinder } from \"@internal/app-binder/TronAppBinder\";\n\nimport { GetAppConfigurationUseCase } from \"./GetAppConfigurationUseCase\";\n\ndescribe(\"GetAppConfigurationUseCase\", () => {\n const returnedValue = { observable: {}, cancel: vi.fn() };\n const getAppConfigurationMock = vi.fn().mockReturnValue(returnedValue);\n const appBinderMock = {\n getAppConfiguration: getAppConfigurationMock,\n } as unknown as TronAppBinder;\n let useCase: GetAppConfigurationUseCase;\n\n beforeEach(() => {\n vi.clearAllMocks();\n useCase = new GetAppConfigurationUseCase(appBinderMock);\n });\n\n it(\"should call getAppConfiguration on the app binder\", () => {\n // WHEN\n const result = useCase.execute();\n\n // THEN\n expect(result).toEqual(returnedValue);\n expect(getAppConfigurationMock).toHaveBeenCalledWith();\n });\n});\n"],
|
|
5
|
+
"mappings": "AAEA,OAAS,8BAAAA,MAAkC,+BAE3C,SAAS,6BAA8B,IAAM,CAC3C,MAAMC,EAAgB,CAAE,WAAY,CAAC,EAAG,OAAQ,GAAG,GAAG,CAAE,EAClDC,EAA0B,GAAG,GAAG,EAAE,gBAAgBD,CAAa,EAC/DE,EAAgB,CACpB,oBAAqBD,CACvB,EACA,IAAIE,EAEJ,WAAW,IAAM,CACf,GAAG,cAAc,EACjBA,EAAU,IAAIJ,EAA2BG,CAAa,CACxD,CAAC,EAED,GAAG,oDAAqD,IAAM,CAE5D,MAAME,EAASD,EAAQ,QAAQ,EAG/B,OAAOC,CAAM,EAAE,QAAQJ,CAAa,EACpC,OAAOC,CAAuB,EAAE,qBAAqB,CACvD,CAAC,CACH,CAAC",
|
|
6
|
+
"names": ["GetAppConfigurationUseCase", "returnedValue", "getAppConfigurationMock", "appBinderMock", "useCase", "result"]
|
|
7
|
+
}
|
package/lib/esm/package.json
CHANGED
|
@@ -56,5 +56,5 @@
|
|
|
56
56
|
"watch:builds": "pnpm ldmk-tool watch --entryPoints src/index.ts,src/**/*.ts --tsconfig tsconfig.prod.json",
|
|
57
57
|
"watch:types": "concurrently \"tsc --watch -p tsconfig.prod.json\" \"tsc-alias --watch -p tsconfig.prod.json\""
|
|
58
58
|
},
|
|
59
|
-
"version": "0.0.0-develop-
|
|
59
|
+
"version": "0.0.0-develop-20260802002602"
|
|
60
60
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TronAppBinder.test.d.ts","sourceRoot":"","sources":["../../../../src/internal/app-binder/TronAppBinder.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GetAddressUseCase.test.d.ts","sourceRoot":"","sources":["../../../../../src/internal/use-cases/address/GetAddressUseCase.test.ts"],"names":[],"mappings":""}
|
package/lib/types/internal/use-cases/app-configuration/GetAppConfigurationUseCase.test.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GetAppConfigurationUseCase.test.d.ts","sourceRoot":"","sources":["../../../../../src/internal/use-cases/app-configuration/GetAppConfigurationUseCase.test.ts"],"names":[],"mappings":""}
|