@ledgerhq/speculos-device-controller 0.2.3 → 0.4.0
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 +4 -2
- package/lib/cjs/package.json +4 -5
- package/lib/cjs/src/api/DeviceController.js +1 -1
- package/lib/cjs/src/api/DeviceController.js.map +2 -2
- package/lib/cjs/src/api/DeviceController.test.js +1 -1
- package/lib/cjs/src/api/DeviceController.test.js.map +3 -3
- package/lib/cjs/src/internal/adapters/DefaultButtonController.js +1 -1
- package/lib/cjs/src/internal/adapters/DefaultButtonController.js.map +2 -2
- package/lib/cjs/src/internal/adapters/DefaultButtonController.test.js +1 -1
- package/lib/cjs/src/internal/adapters/DefaultButtonController.test.js.map +3 -3
- package/lib/cjs/src/internal/adapters/DefaultTouchController.js +1 -1
- package/lib/cjs/src/internal/adapters/DefaultTouchController.js.map +2 -2
- package/lib/cjs/src/internal/adapters/DefaultTouchController.test.js +1 -1
- package/lib/cjs/src/internal/adapters/DefaultTouchController.test.js.map +3 -3
- package/lib/cjs/src/internal/core/types.js +1 -1
- package/lib/cjs/src/internal/core/types.js.map +2 -2
- package/lib/cjs/src/internal/di.js +1 -1
- package/lib/cjs/src/internal/di.js.map +3 -3
- package/lib/cjs/src/internal/di.test.js +1 -1
- package/lib/cjs/src/internal/di.test.js.map +3 -3
- package/lib/cjs/src/internal/use-cases/touchUseCases.js +1 -1
- package/lib/cjs/src/internal/use-cases/touchUseCases.js.map +3 -3
- package/lib/cjs/src/internal/use-cases/touchUseCases.test.js +1 -1
- package/lib/cjs/src/internal/use-cases/touchUseCases.test.js.map +3 -3
- package/lib/esm/package.json +4 -5
- package/lib/esm/src/api/DeviceController.js +1 -1
- package/lib/esm/src/api/DeviceController.js.map +3 -3
- package/lib/esm/src/api/DeviceController.test.js +1 -1
- package/lib/esm/src/api/DeviceController.test.js.map +3 -3
- package/lib/esm/src/internal/adapters/DefaultButtonController.js.map +2 -2
- package/lib/esm/src/internal/adapters/DefaultButtonController.test.js +1 -1
- package/lib/esm/src/internal/adapters/DefaultButtonController.test.js.map +3 -3
- package/lib/esm/src/internal/adapters/DefaultTouchController.js +1 -1
- package/lib/esm/src/internal/adapters/DefaultTouchController.js.map +2 -2
- package/lib/esm/src/internal/adapters/DefaultTouchController.test.js +1 -1
- package/lib/esm/src/internal/adapters/DefaultTouchController.test.js.map +3 -3
- package/lib/esm/src/internal/core/types.js.map +2 -2
- package/lib/esm/src/internal/di.js +1 -1
- package/lib/esm/src/internal/di.js.map +3 -3
- package/lib/esm/src/internal/di.test.js +1 -1
- package/lib/esm/src/internal/di.test.js.map +3 -3
- package/lib/esm/src/internal/use-cases/touchUseCases.js +1 -1
- package/lib/esm/src/internal/use-cases/touchUseCases.js.map +3 -3
- package/lib/esm/src/internal/use-cases/touchUseCases.test.js +1 -1
- package/lib/esm/src/internal/use-cases/touchUseCases.test.js.map +3 -3
- package/lib/types/src/api/DeviceController.d.ts +7 -0
- package/lib/types/src/api/DeviceController.d.ts.map +1 -1
- package/lib/types/src/internal/adapters/DefaultButtonController.d.ts +2 -3
- package/lib/types/src/internal/adapters/DefaultButtonController.d.ts.map +1 -1
- package/lib/types/src/internal/adapters/DefaultTouchController.d.ts +2 -3
- package/lib/types/src/internal/adapters/DefaultTouchController.d.ts.map +1 -1
- package/lib/types/src/internal/core/types.d.ts +4 -0
- package/lib/types/src/internal/core/types.d.ts.map +1 -1
- package/lib/types/src/internal/di.d.ts.map +1 -1
- package/lib/types/src/internal/use-cases/touchUseCases.d.ts +6 -0
- package/lib/types/src/internal/use-cases/touchUseCases.d.ts.map +1 -1
- package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
- package/package.json +4 -5
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/internal/use-cases/touchUseCases.test.ts"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-unsafe-call */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\nimport type { TouchController } from \"@root/src/internal/core/TouchController\";\n\nimport {
|
|
5
|
-
"mappings": "AAMA,
|
|
6
|
-
"names": ["tapLong", "tapQuick", "deviceKey", "point", "controller", "timeoutSpy", "run", "customMs", "boom", "p", "assertion"]
|
|
4
|
+
"sourcesContent": ["/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-unsafe-call */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\nimport type { TouchController } from \"@root/src/internal/core/TouchController\";\n\nimport {\n acceptBlindSigning,\n confirmAddressBookReview,\n continueToBlindSigning,\n enableBlindSigningSettings,\n enterMenu,\n exitMenu,\n mainButton,\n navigateNext,\n navigatePrevious,\n reject,\n secondaryButton,\n sign,\n tapLong,\n tapQuick,\n} from \"./touchUseCases\";\n\ndescribe(\"touchUsecases\", () => {\n const deviceKey = \"devA\";\n const point = { x: 50, y: 30 } as any;\n\n let controller: TouchController;\n\n beforeEach(() => {\n controller = {\n tap: vi.fn().mockResolvedValue(undefined),\n release: vi.fn().mockResolvedValue(undefined),\n tapAndRelease: vi.fn().mockResolvedValue(undefined),\n } as unknown as TouchController;\n vi.restoreAllMocks();\n vi.useRealTimers();\n });\n\n it(\"tapQuick calls tapAndRelease with the same deviceKey and point\", async () => {\n const quick = tapQuick(controller, deviceKey);\n await quick(point);\n\n expect(controller.tapAndRelease).toHaveBeenCalledTimes(1);\n expect(controller.tapAndRelease).toHaveBeenCalledWith(deviceKey, point);\n expect(controller.tap).not.toHaveBeenCalled();\n expect(controller.release).not.toHaveBeenCalled();\n });\n\n it(\"tapLong taps, waits default timeout, then releases\", async () => {\n vi.useFakeTimers();\n const timeoutSpy = vi.spyOn(globalThis, \"setTimeout\");\n\n const longTap = tapLong(controller, deviceKey);\n const run = longTap(point);\n\n await Promise.resolve();\n\n expect(controller.tap).toHaveBeenCalledTimes(1);\n expect(controller.tap).toHaveBeenCalledWith(deviceKey, point);\n expect(timeoutSpy).toHaveBeenCalledTimes(1);\n expect(timeoutSpy).toHaveBeenLastCalledWith(expect.any(Function), 5000);\n expect(controller.release).not.toHaveBeenCalled();\n\n // let the 5s timer elapse\n await vi.advanceTimersByTimeAsync(5000);\n await run;\n\n expect(controller.release).toHaveBeenCalledTimes(1);\n expect(controller.release).toHaveBeenCalledWith(deviceKey, point);\n });\n\n it(\"tapLong uses the provided delayMs value\", async () => {\n vi.useFakeTimers();\n const timeoutSpy = vi.spyOn(globalThis, \"setTimeout\");\n\n const customMs = 1234;\n const longTap = tapLong(controller, deviceKey);\n const run = longTap(point, customMs);\n\n await Promise.resolve();\n\n expect(controller.tap).toHaveBeenCalledTimes(1);\n expect(controller.tap).toHaveBeenCalledWith(deviceKey, point);\n expect(timeoutSpy).toHaveBeenCalledTimes(1);\n expect(timeoutSpy).toHaveBeenLastCalledWith(expect.any(Function), customMs);\n expect(controller.release).not.toHaveBeenCalled();\n\n // advance exactly customMs and ensure release happens then\n await vi.advanceTimersByTimeAsync(customMs);\n await run;\n\n expect(controller.release).toHaveBeenCalledTimes(1);\n expect(controller.release).toHaveBeenCalledWith(deviceKey, point);\n });\n\n it(\"tapLong propagates error if tap() rejects (no release)\", async () => {\n vi.useFakeTimers();\n\n const boom = new Error(\"tap failed\");\n (controller.tap as any).mockRejectedValueOnce(boom);\n\n const longTap = tapLong(controller, deviceKey);\n const p = longTap(point);\n\n // attach rejection handler immediately\n await expect(p).rejects.toThrow(\"tap failed\");\n expect(controller.release).not.toHaveBeenCalled();\n });\n\n it(\"tapLong propagates error if release() rejects\", async () => {\n vi.useFakeTimers();\n\n const boom = new Error(\"release failed\");\n (controller.release as any).mockRejectedValueOnce(boom);\n\n const p = tapLong(controller, deviceKey)(point);\n\n const assertion = expect(p).rejects.toThrow(\"release failed\");\n\n await Promise.resolve();\n await vi.advanceTimersByTimeAsync(5000);\n\n await assertion;\n\n expect(controller.tap).toHaveBeenCalledTimes(1);\n expect(controller.release).toHaveBeenCalledTimes(1);\n });\n\n describe(\"enableBlindSigningSettings\", () => {\n it.each([\n [\"stax\", { x: 88, y: 51 }],\n [\"flex\", { x: 88, y: 58 }],\n [\"apex\", { x: 88, y: 58 }],\n ] as const)(\n \"taps the blind-signing toggle at the %s coordinates\",\n async (key, expected) => {\n await enableBlindSigningSettings(controller, key)();\n\n expect(controller.tapAndRelease).toHaveBeenCalledTimes(1);\n expect(controller.tapAndRelease).toHaveBeenCalledWith(key, expected);\n },\n );\n\n it(\"falls back to default coordinates for an unknown device key\", async () => {\n const unknownKey = \"unknown\";\n await enableBlindSigningSettings(controller, unknownKey)();\n\n expect(controller.tapAndRelease).toHaveBeenCalledTimes(1);\n expect(controller.tapAndRelease).toHaveBeenCalledWith(unknownKey, {\n x: 88,\n y: 51,\n });\n });\n });\n\n describe(\"fixed-coordinate taps\", () => {\n it.each([\n [\"reject\", reject, { x: 20, y: 90 }],\n [\"navigateNext\", navigateNext, { x: 90, y: 90 }],\n [\"navigatePrevious\", navigatePrevious, { x: 45, y: 90 }],\n [\"mainButton\", mainButton, { x: 50, y: 80 }],\n [\"secondaryButton\", secondaryButton, { x: 50, y: 90 }],\n [\"enterMenu\", enterMenu, { x: 85, y: 8 }],\n [\"exitMenu\", exitMenu, { x: 10, y: 4 }],\n [\"continueToBlindSigning\", continueToBlindSigning, { x: 50, y: 94 }],\n [\"acceptBlindSigning\", acceptBlindSigning, { x: 50, y: 94 }],\n ] as const)(\"%s taps %o\", async (_name, useCase, expected) => {\n await useCase(controller, deviceKey)();\n\n expect(controller.tapAndRelease).toHaveBeenCalledTimes(1);\n expect(controller.tapAndRelease).toHaveBeenCalledWith(\n deviceKey,\n expected,\n );\n });\n });\n\n describe(\"sign\", () => {\n const HOLD_TO_SIGN = { x: 85, y: 80 };\n\n it(\"holds the sign button for the default 5s\", async () => {\n vi.useFakeTimers();\n const timeoutSpy = vi.spyOn(globalThis, \"setTimeout\");\n\n const run = sign(controller, deviceKey)();\n await Promise.resolve();\n\n expect(controller.tap).toHaveBeenCalledWith(deviceKey, HOLD_TO_SIGN);\n expect(timeoutSpy).toHaveBeenLastCalledWith(expect.any(Function), 5000);\n\n await vi.advanceTimersByTimeAsync(5000);\n await run;\n\n expect(controller.release).toHaveBeenCalledWith(deviceKey, HOLD_TO_SIGN);\n });\n\n it(\"holds the sign button for the provided delay\", async () => {\n vi.useFakeTimers();\n const timeoutSpy = vi.spyOn(globalThis, \"setTimeout\");\n\n const customMs = 250;\n const run = sign(controller, deviceKey)(customMs);\n await Promise.resolve();\n\n expect(timeoutSpy).toHaveBeenLastCalledWith(\n expect.any(Function),\n customMs,\n );\n\n await vi.advanceTimersByTimeAsync(customMs);\n await run;\n\n expect(controller.release).toHaveBeenCalledTimes(1);\n });\n });\n\n describe(\"confirmAddressBookReview\", () => {\n // The Address Book review puts its Confirm button above the page footer,\n // so these coordinates are measured per model rather than shared with\n // mainButton/secondaryButton.\n it.each([\n [\"stax\", { x: 50, y: 77 }],\n [\"flex\", { x: 50, y: 72 }],\n ] as const)(\n \"taps the Confirm button at the %s coordinates\",\n async (key, expected) => {\n await confirmAddressBookReview(controller, key)();\n\n expect(controller.tapAndRelease).toHaveBeenCalledTimes(1);\n expect(controller.tapAndRelease).toHaveBeenCalledWith(key, expected);\n },\n );\n\n it(\"falls back to Flex coordinates for an unmeasured device key\", async () => {\n const unknownKey = \"apex\";\n await confirmAddressBookReview(controller, unknownKey)();\n\n expect(controller.tapAndRelease).toHaveBeenCalledTimes(1);\n expect(controller.tapAndRelease).toHaveBeenCalledWith(unknownKey, {\n x: 50,\n y: 72,\n });\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["acceptBlindSigning", "confirmAddressBookReview", "continueToBlindSigning", "enableBlindSigningSettings", "enterMenu", "exitMenu", "mainButton", "navigateNext", "navigatePrevious", "reject", "secondaryButton", "sign", "tapLong", "tapQuick", "deviceKey", "point", "controller", "timeoutSpy", "run", "customMs", "boom", "p", "assertion", "key", "expected", "unknownKey", "_name", "useCase", "HOLD_TO_SIGN"]
|
|
7
7
|
}
|
|
@@ -15,10 +15,17 @@ export type TapFactory = (deviceKey: string) => {
|
|
|
15
15
|
navigatePrevious: () => Promise<void>;
|
|
16
16
|
mainButton: () => Promise<void>;
|
|
17
17
|
secondaryButton: () => Promise<void>;
|
|
18
|
+
enterMenu: () => Promise<void>;
|
|
19
|
+
exitMenu: () => Promise<void>;
|
|
20
|
+
enableBlindSigningSettings: () => Promise<void>;
|
|
21
|
+
continueToBlindSigning: () => Promise<void>;
|
|
22
|
+
acceptBlindSigning: () => Promise<void>;
|
|
23
|
+
confirmAddressBookReview: () => Promise<void>;
|
|
18
24
|
};
|
|
19
25
|
export type DeviceControllerClientFactory = (baseURL: string, opts?: {
|
|
20
26
|
timeoutMs?: number;
|
|
21
27
|
clientHeader?: string;
|
|
28
|
+
bearerToken?: string;
|
|
22
29
|
screens?: DeviceScreens<string>;
|
|
23
30
|
}) => DeviceControllerClient;
|
|
24
31
|
export type DeviceControllerClient = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeviceController.d.ts","sourceRoot":"","sources":["../../../../src/api/DeviceController.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,KAAK,EACV,SAAS,EACT,uBAAuB,EACvB,aAAa,EACb,kBAAkB,EACnB,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"DeviceController.d.ts","sourceRoot":"","sources":["../../../../src/api/DeviceController.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,KAAK,EACV,SAAS,EACT,uBAAuB,EACvB,aAAa,EACb,kBAAkB,EACnB,MAAM,sBAAsB,CAAC;AAuB9B,MAAM,MAAM,aAAa,GAAG,MAAM,gBAAgB,GAAG;IACnD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnE,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,CAAC,SAAS,EAAE,MAAM,KAAK;IAC9C,QAAQ,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,OAAO,EAAE,CAAC,KAAK,EAAE,kBAAkB,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,YAAY,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,gBAAgB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,eAAe,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,0BAA0B,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,sBAAsB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,kBAAkB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,wBAAwB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG,CAC1C,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE;IACL,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CACjC,KACE,sBAAsB,CAAC;AAE5B,MAAM,MAAM,sBAAsB,GAAG;IACnC,aAAa,EAAE,aAAa,CAAC;IAC7B,UAAU,EAAE,UAAU,CAAC;CACxB,CAAC;AAEF,eAAO,MAAM,6BAA6B,EAAE,6BAuC3C,CAAC;AAEF,YAAY,EACV,SAAS,EACT,uBAAuB,EACvB,aAAa,EACb,kBAAkB,GACnB,CAAC"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import type { AxiosInstance } from "axios";
|
|
2
1
|
import type { ButtonController } from "../core/ButtonController";
|
|
3
|
-
import { type ButtonKey } from "../core/types";
|
|
2
|
+
import { type ButtonKey, type HttpClient } from "../core/types";
|
|
4
3
|
export declare class DefaultButtonController implements ButtonController {
|
|
5
4
|
private readonly client;
|
|
6
|
-
constructor(client:
|
|
5
|
+
constructor(client: HttpClient);
|
|
7
6
|
press(key: ButtonKey): Promise<void>;
|
|
8
7
|
}
|
|
9
8
|
//# sourceMappingURL=DefaultButtonController.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultButtonController.d.ts","sourceRoot":"","sources":["../../../../../src/internal/adapters/DefaultButtonController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"DefaultButtonController.d.ts","sourceRoot":"","sources":["../../../../../src/internal/adapters/DefaultButtonController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EACL,KAAK,SAAS,EACd,KAAK,UAAU,EAEhB,MAAM,sBAAsB,CAAC;AAE9B,qBAAa,uBAAwB,YAAW,gBAAgB;IAClD,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,UAAU;IAEzC,KAAK,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;CAK3C"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import { type PercentCoordinates } from "../core/types";
|
|
1
|
+
import { type HttpClient, type PercentCoordinates } from "../core/types";
|
|
3
2
|
import type { AxisMap } from "../utils/axisClamp";
|
|
4
3
|
import type { TouchController } from "../../../src/internal/core/TouchController";
|
|
5
4
|
export declare class DefaultTouchController<K extends string> implements TouchController<K> {
|
|
6
5
|
private readonly client;
|
|
7
6
|
private readonly axes;
|
|
8
|
-
constructor(client:
|
|
7
|
+
constructor(client: HttpClient, axes: AxisMap<K>);
|
|
9
8
|
private assertPercentPoint;
|
|
10
9
|
private toAbs;
|
|
11
10
|
tapAndRelease(deviceKey: K, point: PercentCoordinates): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultTouchController.d.ts","sourceRoot":"","sources":["../../../../../src/internal/adapters/DefaultTouchController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"DefaultTouchController.d.ts","sourceRoot":"","sources":["../../../../../src/internal/adapters/DefaultTouchController.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,UAAU,EACf,KAAK,kBAAkB,EAExB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAE/E,qBAAa,sBAAsB,CAAC,CAAC,SAAS,MAAM,CAClD,YAAW,eAAe,CAAC,CAAC,CAAC;IAG3B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBADJ,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IAGnC,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,KAAK;IAYP,aAAa,CAAC,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAQrE,GAAG,CAAC,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ3D,OAAO,CAAC,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;CAOtE"}
|
|
@@ -14,7 +14,11 @@ export type DeviceControllerOptions<K extends string = string> = {
|
|
|
14
14
|
screens: DeviceScreens<K>;
|
|
15
15
|
timeoutMs?: number;
|
|
16
16
|
clientHeader?: string;
|
|
17
|
+
bearerToken?: string;
|
|
17
18
|
};
|
|
19
|
+
export interface HttpClient {
|
|
20
|
+
post(url: string, data?: unknown): Promise<unknown>;
|
|
21
|
+
}
|
|
18
22
|
export declare enum SpeculosActions {
|
|
19
23
|
PRESS = "press",
|
|
20
24
|
RELEASE = "release",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/internal/core/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAElD,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAErE,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,QAAQ,CAC7D,MAAM,CAAC,CAAC,EAAE,UAAU,CAAC,CACtB,CAAC;AAEF,MAAM,MAAM,KAAK,CACf,CAAC,SAAS,MAAM,EAChB,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE,IACvB,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC9E,MAAM,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;AAEjC,MAAM,MAAM,kBAAkB,GAAG;IAAE,CAAC,EAAE,OAAO,CAAC;IAAC,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAE5D,MAAM,MAAM,uBAAuB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI;IAC/D,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/internal/core/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAElD,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAErE,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,QAAQ,CAC7D,MAAM,CAAC,CAAC,EAAE,UAAU,CAAC,CACtB,CAAC;AAEF,MAAM,MAAM,KAAK,CACf,CAAC,SAAS,MAAM,EAChB,GAAG,SAAS,MAAM,EAAE,GAAG,EAAE,IACvB,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC9E,MAAM,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;AAEjC,MAAM,MAAM,kBAAkB,GAAG;IAAE,CAAC,EAAE,OAAO,CAAC;IAAC,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAE5D,MAAM,MAAM,uBAAuB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI;IAC/D,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACrD;AAED,oBAAY,eAAe;IACzB,KAAK,UAAU;IACf,OAAO,YAAY;IACnB,iBAAiB,sBAAsB;CACxC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"di.d.ts","sourceRoot":"","sources":["../../../../src/internal/di.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,KAAK,EAAE,uBAAuB,
|
|
1
|
+
{"version":3,"file":"di.d.ts","sourceRoot":"","sources":["../../../../src/internal/di.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,KAAK,EAAE,uBAAuB,EAAc,MAAM,sBAAsB,CAAC;AAEhF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAE/E,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,EAAE,gBAAgB,CAAC;IAC1B,KAAK,EAAE,eAAe,CAAC;CACxB,CAAC;AAEF,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,uBAAuB,GAC5B,oBAAoB,CAwBtB"}
|
|
@@ -8,4 +8,10 @@ export declare const navigateNext: <K extends string>(touch: TouchController<K>,
|
|
|
8
8
|
export declare const navigatePrevious: <K extends string>(touch: TouchController<K>, deviceKey: K) => () => Promise<void>;
|
|
9
9
|
export declare const mainButton: <K extends string>(touch: TouchController<K>, deviceKey: K) => () => Promise<void>;
|
|
10
10
|
export declare const secondaryButton: <K extends string>(touch: TouchController<K>, deviceKey: K) => () => Promise<void>;
|
|
11
|
+
export declare const enterMenu: <K extends string>(touch: TouchController<K>, deviceKey: K) => () => Promise<void>;
|
|
12
|
+
export declare const exitMenu: <K extends string>(touch: TouchController<K>, deviceKey: K) => () => Promise<void>;
|
|
13
|
+
export declare const enableBlindSigningSettings: <K extends string>(touch: TouchController<K>, deviceKey: K) => () => Promise<void>;
|
|
14
|
+
export declare const confirmAddressBookReview: <K extends string>(touch: TouchController<K>, deviceKey: K) => () => Promise<void>;
|
|
15
|
+
export declare const continueToBlindSigning: <K extends string>(touch: TouchController<K>, deviceKey: K) => () => Promise<void>;
|
|
16
|
+
export declare const acceptBlindSigning: <K extends string>(touch: TouchController<K>, deviceKey: K) => () => Promise<void>;
|
|
11
17
|
//# sourceMappingURL=touchUseCases.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"touchUseCases.d.ts","sourceRoot":"","sources":["../../../../../src/internal/use-cases/touchUseCases.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAI/E,eAAO,MAAM,OAAO,GACjB,CAAC,SAAS,MAAM,EAAE,OAAO,eAAe,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,MACnD,OAAO,kBAAkB,EAAE,UAAS,MAAyB,kBAInE,CAAC;AAEJ,eAAO,MAAM,QAAQ,GAClB,CAAC,SAAS,MAAM,EAAE,OAAO,eAAe,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,MACnD,OAAO,kBAAkB,kBACa,CAAC;AAEhD,eAAO,MAAM,IAAI,GACd,CAAC,SAAS,MAAM,EAAE,OAAO,eAAe,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,MACnD,UAAS,MAAyB,kBACmB,CAAC;AAE/D,eAAO,MAAM,MAAM,GAChB,CAAC,SAAS,MAAM,EAAE,OAAO,eAAe,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,wBAEN,CAAC;AAEvD,eAAO,MAAM,YAAY,GACtB,CAAC,SAAS,MAAM,EAAE,OAAO,eAAe,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,wBAEN,CAAC;AAEvD,eAAO,MAAM,gBAAgB,GAC1B,CAAC,SAAS,MAAM,EAAE,OAAO,eAAe,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,wBAEN,CAAC;AAEvD,eAAO,MAAM,UAAU,GACpB,CAAC,SAAS,MAAM,EAAE,OAAO,eAAe,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,wBAEN,CAAC;AAEvD,eAAO,MAAM,eAAe,GACzB,CAAC,SAAS,MAAM,EAAE,OAAO,eAAe,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,wBAEN,CAAC"}
|
|
1
|
+
{"version":3,"file":"touchUseCases.d.ts","sourceRoot":"","sources":["../../../../../src/internal/use-cases/touchUseCases.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAI/E,eAAO,MAAM,OAAO,GACjB,CAAC,SAAS,MAAM,EAAE,OAAO,eAAe,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,MACnD,OAAO,kBAAkB,EAAE,UAAS,MAAyB,kBAInE,CAAC;AAEJ,eAAO,MAAM,QAAQ,GAClB,CAAC,SAAS,MAAM,EAAE,OAAO,eAAe,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,MACnD,OAAO,kBAAkB,kBACa,CAAC;AAEhD,eAAO,MAAM,IAAI,GACd,CAAC,SAAS,MAAM,EAAE,OAAO,eAAe,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,MACnD,UAAS,MAAyB,kBACmB,CAAC;AAE/D,eAAO,MAAM,MAAM,GAChB,CAAC,SAAS,MAAM,EAAE,OAAO,eAAe,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,wBAEN,CAAC;AAEvD,eAAO,MAAM,YAAY,GACtB,CAAC,SAAS,MAAM,EAAE,OAAO,eAAe,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,wBAEN,CAAC;AAEvD,eAAO,MAAM,gBAAgB,GAC1B,CAAC,SAAS,MAAM,EAAE,OAAO,eAAe,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,wBAEN,CAAC;AAEvD,eAAO,MAAM,UAAU,GACpB,CAAC,SAAS,MAAM,EAAE,OAAO,eAAe,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,wBAEN,CAAC;AAEvD,eAAO,MAAM,eAAe,GACzB,CAAC,SAAS,MAAM,EAAE,OAAO,eAAe,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,wBAEN,CAAC;AAEvD,eAAO,MAAM,SAAS,GACnB,CAAC,SAAS,MAAM,EAAE,OAAO,eAAe,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,wBAEP,CAAC;AAEtD,eAAO,MAAM,QAAQ,GAClB,CAAC,SAAS,MAAM,EAAE,OAAO,eAAe,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,wBAEP,CAAC;AAkBtD,eAAO,MAAM,0BAA0B,GACpC,CAAC,SAAS,MAAM,EAAE,OAAO,eAAe,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,wBAMzD,CAAC;AAwBJ,eAAO,MAAM,wBAAwB,GAClC,CAAC,SAAS,MAAM,EAAE,OAAO,eAAe,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,wBAMzD,CAAC;AAEJ,eAAO,MAAM,sBAAsB,GAChC,CAAC,SAAS,MAAM,EAAE,OAAO,eAAe,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,wBAEN,CAAC;AAEvD,eAAO,MAAM,kBAAkB,GAC5B,CAAC,SAAS,MAAM,EAAE,OAAO,eAAe,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,wBAEN,CAAC"}
|