@ledgerhq/device-management-kit 1.3.0 → 1.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/lib/cjs/package.json +1 -1
- package/lib/cjs/src/api/Error.js +1 -1
- package/lib/cjs/src/api/Error.js.map +3 -3
- package/lib/cjs/src/api/command/model/CommandResult.js +1 -1
- package/lib/cjs/src/api/command/model/CommandResult.js.map +2 -2
- package/lib/cjs/src/api/command/os/DeleteLanguagePackCommand.js +2 -0
- package/lib/cjs/src/api/command/os/DeleteLanguagePackCommand.js.map +7 -0
- package/lib/cjs/src/api/command/os/DeleteLanguagePackCommand.test.js +2 -0
- package/lib/cjs/src/api/command/os/DeleteLanguagePackCommand.test.js.map +7 -0
- package/lib/cjs/src/api/command/os/ListLanguagePackCommand.js.map +2 -2
- package/lib/cjs/src/api/device-action/os/Errors.js +1 -1
- package/lib/cjs/src/api/device-action/os/Errors.js.map +3 -3
- package/lib/cjs/src/api/device-action/os/InstallLanguagePackage/InstallLanguagePackageDeviceAction.js +2 -0
- package/lib/cjs/src/api/device-action/os/InstallLanguagePackage/InstallLanguagePackageDeviceAction.js.map +7 -0
- package/lib/cjs/src/api/device-action/os/InstallLanguagePackage/InstallLanguagePackageDeviceAction.test.js +2 -0
- package/lib/cjs/src/api/device-action/os/InstallLanguagePackage/InstallLanguagePackageDeviceAction.test.js.map +7 -0
- package/lib/cjs/src/api/device-action/os/InstallLanguagePackage/types.js +2 -0
- package/lib/cjs/src/api/device-action/os/InstallLanguagePackage/types.js.map +7 -0
- package/lib/cjs/src/api/device-action/task/InstallLanguagePackageTask.js +2 -0
- package/lib/cjs/src/api/device-action/task/InstallLanguagePackageTask.js.map +7 -0
- package/lib/cjs/src/api/device-action/task/InstallLanguagePackageTask.test.js +9 -0
- package/lib/cjs/src/api/device-action/task/InstallLanguagePackageTask.test.js.map +7 -0
- package/lib/cjs/src/api/index.js +1 -1
- package/lib/cjs/src/api/index.js.map +3 -3
- package/lib/cjs/src/api/network/DmkNetworkClient.js +1 -1
- package/lib/cjs/src/api/network/DmkNetworkClient.js.map +2 -2
- package/lib/cjs/src/api/network/DmkNetworkClient.test.js +1 -1
- package/lib/cjs/src/api/network/DmkNetworkClient.test.js.map +2 -2
- package/lib/cjs/src/api/network/DmkNetworkClientHelpers.js +1 -1
- package/lib/cjs/src/api/network/DmkNetworkClientHelpers.js.map +3 -3
- package/lib/cjs/src/api/network/DmkNetworkClientHelpers.test.js +1 -1
- package/lib/cjs/src/api/network/DmkNetworkClientHelpers.test.js.map +3 -3
- package/lib/cjs/src/api/types.js +1 -1
- package/lib/cjs/src/api/types.js.map +1 -1
- package/lib/esm/package.json +1 -1
- package/lib/esm/src/api/Error.js +1 -1
- package/lib/esm/src/api/Error.js.map +3 -3
- package/lib/esm/src/api/command/model/CommandResult.js.map +2 -2
- package/lib/esm/src/api/command/os/DeleteLanguagePackCommand.js +2 -0
- package/lib/esm/src/api/command/os/DeleteLanguagePackCommand.js.map +7 -0
- package/lib/esm/src/api/command/os/DeleteLanguagePackCommand.test.js +2 -0
- package/lib/esm/src/api/command/os/DeleteLanguagePackCommand.test.js.map +7 -0
- package/lib/esm/src/api/command/os/ListLanguagePackCommand.js.map +2 -2
- package/lib/esm/src/api/device-action/os/Errors.js +1 -1
- package/lib/esm/src/api/device-action/os/Errors.js.map +3 -3
- package/lib/esm/src/api/device-action/os/InstallLanguagePackage/InstallLanguagePackageDeviceAction.js +2 -0
- package/lib/esm/src/api/device-action/os/InstallLanguagePackage/InstallLanguagePackageDeviceAction.js.map +7 -0
- package/lib/esm/src/api/device-action/os/InstallLanguagePackage/InstallLanguagePackageDeviceAction.test.js +2 -0
- package/lib/esm/src/api/device-action/os/InstallLanguagePackage/InstallLanguagePackageDeviceAction.test.js.map +7 -0
- package/lib/esm/src/api/device-action/os/InstallLanguagePackage/types.js +2 -0
- package/lib/esm/src/api/device-action/os/InstallLanguagePackage/types.js.map +7 -0
- package/lib/esm/src/api/device-action/task/InstallLanguagePackageTask.js +2 -0
- package/lib/esm/src/api/device-action/task/InstallLanguagePackageTask.js.map +7 -0
- package/lib/esm/src/api/device-action/task/InstallLanguagePackageTask.test.js +9 -0
- package/lib/esm/src/api/device-action/task/InstallLanguagePackageTask.test.js.map +7 -0
- package/lib/esm/src/api/index.js +1 -1
- package/lib/esm/src/api/index.js.map +3 -3
- package/lib/esm/src/api/network/DmkNetworkClient.js +1 -1
- package/lib/esm/src/api/network/DmkNetworkClient.js.map +2 -2
- package/lib/esm/src/api/network/DmkNetworkClient.test.js +1 -1
- package/lib/esm/src/api/network/DmkNetworkClient.test.js.map +2 -2
- package/lib/esm/src/api/network/DmkNetworkClientHelpers.js +1 -1
- package/lib/esm/src/api/network/DmkNetworkClientHelpers.js.map +3 -3
- package/lib/esm/src/api/network/DmkNetworkClientHelpers.test.js +1 -1
- package/lib/esm/src/api/network/DmkNetworkClientHelpers.test.js.map +3 -3
- package/lib/types/src/api/Error.d.ts +5 -0
- package/lib/types/src/api/Error.d.ts.map +1 -1
- package/lib/types/src/api/command/model/CommandResult.d.ts +2 -2
- package/lib/types/src/api/command/model/CommandResult.d.ts.map +1 -1
- package/lib/types/src/api/command/os/DeleteLanguagePackCommand.d.ts +24 -0
- package/lib/types/src/api/command/os/DeleteLanguagePackCommand.d.ts.map +1 -0
- package/lib/types/src/api/command/os/DeleteLanguagePackCommand.test.d.ts +2 -0
- package/lib/types/src/api/command/os/DeleteLanguagePackCommand.test.d.ts.map +1 -0
- package/lib/types/src/api/command/os/ListLanguagePackCommand.d.ts +1 -1
- package/lib/types/src/api/command/os/ListLanguagePackCommand.d.ts.map +1 -1
- package/lib/types/src/api/device-action/os/Errors.d.ts +20 -0
- package/lib/types/src/api/device-action/os/Errors.d.ts.map +1 -1
- package/lib/types/src/api/device-action/os/InstallLanguagePackage/InstallLanguagePackageDeviceAction.d.ts +23 -0
- package/lib/types/src/api/device-action/os/InstallLanguagePackage/InstallLanguagePackageDeviceAction.d.ts.map +1 -0
- package/lib/types/src/api/device-action/os/InstallLanguagePackage/InstallLanguagePackageDeviceAction.test.d.ts +2 -0
- package/lib/types/src/api/device-action/os/InstallLanguagePackage/InstallLanguagePackageDeviceAction.test.d.ts.map +1 -0
- package/lib/types/src/api/device-action/os/InstallLanguagePackage/types.d.ts +27 -0
- package/lib/types/src/api/device-action/os/InstallLanguagePackage/types.d.ts.map +1 -0
- package/lib/types/src/api/device-action/task/InstallLanguagePackageTask.d.ts +19 -0
- package/lib/types/src/api/device-action/task/InstallLanguagePackageTask.d.ts.map +1 -0
- package/lib/types/src/api/device-action/task/InstallLanguagePackageTask.test.d.ts +2 -0
- package/lib/types/src/api/device-action/task/InstallLanguagePackageTask.test.d.ts.map +1 -0
- package/lib/types/src/api/index.d.ts +4 -1
- package/lib/types/src/api/index.d.ts.map +1 -1
- package/lib/types/src/api/network/DmkNetworkClientHelpers.d.ts +21 -0
- package/lib/types/src/api/network/DmkNetworkClientHelpers.d.ts.map +1 -1
- package/lib/types/src/api/types.d.ts +1 -0
- package/lib/types/src/api/types.d.ts.map +1 -1
- package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
- package/package.json +4 -4
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/api/network/DmkNetworkClientHelpers.test.ts"],
|
|
4
|
-
"sourcesContent": ["import { DmkNetworkClientError } from \"./DmkNetworkClientError\";\nimport {\n buildBodyAndHeaders,\n buildSignal,\n buildUrl,\n hasHeader,\n isRawBody,\n joinPath,\n JSON_CONTENT_TYPE,\n parseBody,\n safeReadText,\n wrapFetchError,\n} from \"./DmkNetworkClientHelpers\";\n\ndescribe(\"DmkNetworkClientHelpers\", () => {\n describe(\"joinPath\", () => {\n it(\"should return the base when the path is empty\", () => {\n expect(joinPath(\"https://api.example.com\", \"\")).toBe(\n \"https://api.example.com\",\n );\n });\n\n it(\"should insert a single slash when neither side has one\", () => {\n expect(joinPath(\"https://api.example.com\", \"items\")).toBe(\n \"https://api.example.com/items\",\n );\n });\n\n it(\"should collapse a trailing base slash with a leading path slash\", () => {\n expect(joinPath(\"https://api.example.com/\", \"/items\")).toBe(\n \"https://api.example.com/items\",\n );\n });\n\n it(\"should keep a single slash when only one side has one\", () => {\n expect(joinPath(\"https://api.example.com/\", \"items\")).toBe(\n \"https://api.example.com/items\",\n );\n expect(joinPath(\"https://api.example.com\", \"/items\")).toBe(\n \"https://api.example.com/items\",\n );\n });\n });\n\n describe(\"buildUrl\", () => {\n it(\"should keep an absolute URL as-is\", () => {\n const url = buildUrl({ url: \"https://api.example.com/items\" });\n expect(url.toString()).toBe(\"https://api.example.com/items\");\n });\n\n it(\"should prepend the base URL to a relative path\", () => {\n const url = buildUrl({\n url: \"/items\",\n baseUrl: \"https://api.example.com/\",\n });\n expect(url.toString()).toBe(\"https://api.example.com/items\");\n });\n\n it(\"should ignore the base URL when the input URL is absolute\", () => {\n const url = buildUrl({\n url: \"https://other.example.com/items\",\n baseUrl: \"https://api.example.com\",\n });\n expect(url.toString()).toBe(\"https://other.example.com/items\");\n });\n\n it(\"should append query params and skip null/undefined entries\", () => {\n const url = buildUrl({\n url: \"https://api.example.com/items\",\n params: {\n chain: 1,\n contract: \"0xabc\",\n active: true,\n skip: null,\n alsoSkip: undefined,\n },\n });\n expect(url.searchParams.get(\"chain\")).toBe(\"1\");\n expect(url.searchParams.get(\"contract\")).toBe(\"0xabc\");\n expect(url.searchParams.get(\"active\")).toBe(\"true\");\n expect(url.searchParams.has(\"skip\")).toBe(false);\n expect(url.searchParams.has(\"alsoSkip\")).toBe(false);\n });\n });\n\n describe(\"hasHeader\", () => {\n it(\"should find a header regardless of case\", () => {\n expect(hasHeader({ \"Content-Type\": \"json\" }, \"content-type\")).toBe(true);\n expect(hasHeader({ \"content-type\": \"json\" }, \"Content-Type\")).toBe(true);\n });\n\n it(\"should return false when no matching header exists\", () => {\n expect(hasHeader({ Accept: \"json\" }, \"content-type\")).toBe(false);\n expect(hasHeader({}, \"content-type\")).toBe(false);\n });\n });\n\n describe(\"isRawBody\", () => {\n it(\"should accept native BodyInit values\", () => {\n expect(isRawBody(\"raw-string\")).toBe(true);\n expect(isRawBody(new ArrayBuffer(4))).toBe(true);\n expect(isRawBody(new Uint8Array([1, 2, 3]))).toBe(true);\n expect(isRawBody(new Blob([\"a\"]))).toBe(true);\n expect(isRawBody(new FormData())).toBe(true);\n expect(isRawBody(new URLSearchParams({ a: \"1\" }))).toBe(true);\n expect(isRawBody(new ReadableStream())).toBe(true);\n });\n\n it(\"should reject plain objects and primitives\", () => {\n expect(isRawBody({ foo: \"bar\" })).toBe(false);\n expect(isRawBody([1, 2, 3])).toBe(false);\n expect(isRawBody(42)).toBe(false);\n expect(isRawBody(null)).toBe(false);\n expect(isRawBody(undefined)).toBe(false);\n });\n });\n\n describe(\"buildBodyAndHeaders\", () => {\n it(\"should merge default and per-request headers with per-request winning\", () => {\n const { headers } = buildBodyAndHeaders({\n method: \"GET\",\n body: undefined,\n defaultHeaders: { \"X-Default\": \"default\", \"X-Shared\": \"from-default\" },\n perRequestHeaders: { \"X-Shared\": \"overridden\", \"X-Per\": \"per\" },\n });\n expect(headers).toEqual({\n \"X-Default\": \"default\",\n \"X-Shared\": \"overridden\",\n \"X-Per\": \"per\",\n });\n });\n\n it(\"should not emit a body on GET/HEAD even when a body is provided\", () => {\n const result = buildBodyAndHeaders({\n method: \"GET\",\n body: { foo: \"bar\" },\n defaultHeaders: {},\n });\n expect(result.body).toBeUndefined();\n expect(result.headers[\"Content-Type\"]).toBeUndefined();\n });\n\n it(\"should JSON-stringify plain objects and set the Content-Type\", () => {\n const result = buildBodyAndHeaders({\n method: \"POST\",\n body: { foo: \"bar\" },\n defaultHeaders: {},\n });\n expect(result.body).toBe(JSON.stringify({ foo: \"bar\" }));\n expect(result.headers[\"Content-Type\"]).toBe(JSON_CONTENT_TYPE);\n });\n\n it(\"should not override an explicit Content-Type header\", () => {\n const result = buildBodyAndHeaders({\n method: \"POST\",\n body: { foo: \"bar\" },\n defaultHeaders: {},\n perRequestHeaders: { \"content-type\": \"application/vnd.custom+json\" },\n });\n expect(result.body).toBe(JSON.stringify({ foo: \"bar\" }));\n expect(result.headers[\"content-type\"]).toBe(\n \"application/vnd.custom+json\",\n );\n expect(result.headers[\"Content-Type\"]).toBeUndefined();\n });\n\n it(\"should pass raw BodyInit values through unchanged without JSON headers\", () => {\n const formData = new FormData();\n formData.set(\"field\", \"value\");\n const result = buildBodyAndHeaders({\n method: \"POST\",\n body: formData,\n defaultHeaders: {},\n });\n expect(result.body).toBe(formData);\n expect(result.headers[\"Content-Type\"]).toBeUndefined();\n });\n\n it(\"should return an undefined body when the body itself is undefined\", () => {\n const result = buildBodyAndHeaders({\n method: \"POST\",\n body: undefined,\n defaultHeaders: { \"X-Default\": \"d\" },\n });\n expect(result.body).toBeUndefined();\n expect(result.headers).toEqual({ \"X-Default\": \"d\" });\n });\n });\n\n describe(\"buildSignal\", () => {\n it(\"should return undefined when no timeout and no external signal\", () => {\n expect(\n buildSignal({\n timeoutMs: undefined,\n externalSignal: undefined,\n }),\n ).toBeUndefined();\n });\n\n it(\"should return undefined when timeout is zero and no external signal\", () => {\n expect(\n buildSignal({\n timeoutMs: 0,\n externalSignal: undefined,\n }),\n ).toBeUndefined();\n });\n\n it(\"should return the external signal alone when no timeout is configured\", () => {\n const controller = new AbortController();\n const signal = buildSignal({\n timeoutMs: undefined,\n externalSignal: controller.signal,\n });\n expect(signal).toBe(controller.signal);\n });\n\n it(\"should return a timeout signal when only a timeout is configured\", () => {\n const signal = buildSignal({\n timeoutMs: 1000,\n externalSignal: undefined,\n });\n expect(signal).toBeInstanceOf(AbortSignal);\n });\n\n it(\"should use the provided timeout value for AbortSignal.timeout\", () => {\n const timeoutSpy = vi.spyOn(AbortSignal, \"timeout\");\n buildSignal({\n timeoutMs: 50,\n externalSignal: undefined,\n });\n expect(timeoutSpy).toHaveBeenCalledWith(50);\n timeoutSpy.mockRestore();\n });\n\n it(\"should compose both signals with AbortSignal.any when both are set\", () => {\n const anySpy = vi.spyOn(AbortSignal, \"any\");\n const controller = new AbortController();\n const signal = buildSignal({\n timeoutMs: 100,\n externalSignal: controller.signal,\n });\n expect(signal).toBeInstanceOf(AbortSignal);\n expect(anySpy).toHaveBeenCalledTimes(1);\n anySpy.mockRestore();\n });\n });\n\n describe(\"parseBody\", () => {\n it(\"should return undefined for 'void' response type without consuming the body\", async () => {\n const response = new Response(\"ignored\");\n const result = await parseBody(response, \"void\");\n expect(result).toBeUndefined();\n expect(response.bodyUsed).toBe(false);\n });\n\n it(\"should return text for 'text' response type\", async () => {\n const response = new Response(\"plain-body\");\n await expect(parseBody(response, \"text\")).resolves.toBe(\"plain-body\");\n });\n\n it(\"should return a Blob for 'blob' response type\", async () => {\n const response = new Response(\"blob-body\");\n const result = await parseBody(response, \"blob\");\n expect(result).toBeInstanceOf(Blob);\n });\n\n it(\"should return an ArrayBuffer for 'arrayBuffer' response type\", async () => {\n const response = new Response(new Uint8Array([1, 2, 3]));\n const result = await parseBody(response, \"arrayBuffer\");\n expect(result).toBeInstanceOf(ArrayBuffer);\n expect(new Uint8Array(result as ArrayBuffer)).toEqual(\n new Uint8Array([1, 2, 3]),\n );\n });\n\n it(\"should parse JSON for 'json' response type\", async () => {\n const response = new Response(JSON.stringify({ hello: \"world\" }));\n await expect(parseBody(response, \"json\")).resolves.toEqual({\n hello: \"world\",\n });\n });\n\n it(\"should resolve to undefined for an empty JSON body\", async () => {\n const response = new Response(\"\");\n await expect(parseBody(response, \"json\")).resolves.toBeUndefined();\n });\n\n it(\"should throw a DmkNetworkClientError for malformed JSON\", async () => {\n const response = new Response(\"not-json\", {\n status: 200,\n statusText: \"OK\",\n });\n const error = await parseBody(response, \"json\").catch((e: unknown) => e);\n expect(error).toBeInstanceOf(DmkNetworkClientError);\n const dmkError = error as DmkNetworkClientError;\n expect(dmkError.status).toBe(200);\n expect(dmkError.statusText).toBe(\"OK\");\n expect(dmkError.responseBody).toBe(\"not-json\");\n expect(dmkError.cause).toBeInstanceOf(SyntaxError);\n });\n });\n\n describe(\"safeReadText\", () => {\n it(\"should return the text body\", async () => {\n await expect(safeReadText(new Response(\"hello\"))).resolves.toBe(\"hello\");\n });\n\n it(\"should return undefined when reading the body throws\", async () => {\n const response = {\n text: () => Promise.reject(new Error(\"read failed\")),\n } as unknown as Response;\n await expect(safeReadText(response)).resolves.toBeUndefined();\n });\n });\n\n describe(\"wrapFetchError\", () => {\n it(\"should wrap a generic Error with its message\", () => {\n const cause = new TypeError(\"network down\");\n const error = wrapFetchError({\n cause,\n externalSignal: undefined,\n timeoutMs: undefined,\n });\n expect(error).toBeInstanceOf(DmkNetworkClientError);\n expect(error.message).toBe(\"network down\");\n expect(error.cause).toBe(cause);\n expect(error.isTimeout).toBe(false);\n expect(error.isAbort).toBe(false);\n });\n\n it(\"should fall back to a generic message for non-Error causes\", () => {\n const error = wrapFetchError({\n cause: \"something\",\n externalSignal: undefined,\n timeoutMs: undefined,\n });\n expect(error.message).toBe(\"Network request failed\");\n expect(error.cause).toBe(\"something\");\n });\n\n it(\"should flag TimeoutError as a timeout\", () => {\n const cause = new Error(\"timed out\");\n cause.name = \"TimeoutError\";\n const error = wrapFetchError({\n cause,\n externalSignal: undefined,\n timeoutMs: 10,\n });\n expect(error.isTimeout).toBe(true);\n expect(error.isAbort).toBe(false);\n expect(error.message).toBe(\"Request timed out\");\n });\n\n it(\"should flag AbortError as a timeout when a timeout is configured and no external abort\", () => {\n const cause = new Error(\"aborted\");\n cause.name = \"AbortError\";\n const error = wrapFetchError({\n cause,\n externalSignal: undefined,\n timeoutMs: 1000,\n });\n expect(error.isTimeout).toBe(true);\n expect(error.isAbort).toBe(false);\n });\n\n it(\"should flag AbortError as an external abort when the caller signal is aborted\", () => {\n const controller = new AbortController();\n controller.abort();\n const cause = new Error(\"aborted\");\n cause.name = \"AbortError\";\n const error = wrapFetchError({\n cause,\n externalSignal: controller.signal,\n timeoutMs: undefined,\n });\n expect(error.isAbort).toBe(true);\n expect(error.isTimeout).toBe(false);\n expect(error.message).toBe(\"Request aborted\");\n });\n\n it(\"should treat AbortError with no timeout and no external abort as a plain abort\", () => {\n const cause = new Error(\"aborted\");\n cause.name = \"AbortError\";\n const error = wrapFetchError({\n cause,\n externalSignal: undefined,\n timeoutMs: undefined,\n });\n expect(error.isTimeout).toBe(false);\n expect(error.isAbort).toBe(false);\n expect(error.message).toBe(\"Request aborted\");\n });\n });\n});\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["import_DmkNetworkClientError", "import_DmkNetworkClientHelpers", "url", "headers", "result", "formData", "controller", "signal", "timeoutSpy", "anySpy", "response", "error", "e", "dmkError", "cause"]
|
|
4
|
+
"sourcesContent": ["import { DmkNetworkClientError } from \"./DmkNetworkClientError\";\nimport {\n buildBodyAndHeaders,\n buildSignal,\n buildUrl,\n hasHeader,\n isRawBody,\n joinPath,\n JSON_CONTENT_TYPE,\n parseBody,\n safeReadText,\n wrapFetchError,\n} from \"./DmkNetworkClientHelpers\";\n\ndescribe(\"DmkNetworkClientHelpers\", () => {\n describe(\"joinPath\", () => {\n it(\"should return the base when the path is empty\", () => {\n expect(joinPath(\"https://api.example.com\", \"\")).toBe(\n \"https://api.example.com\",\n );\n });\n\n it(\"should insert a single slash when neither side has one\", () => {\n expect(joinPath(\"https://api.example.com\", \"items\")).toBe(\n \"https://api.example.com/items\",\n );\n });\n\n it(\"should collapse a trailing base slash with a leading path slash\", () => {\n expect(joinPath(\"https://api.example.com/\", \"/items\")).toBe(\n \"https://api.example.com/items\",\n );\n });\n\n it(\"should keep a single slash when only one side has one\", () => {\n expect(joinPath(\"https://api.example.com/\", \"items\")).toBe(\n \"https://api.example.com/items\",\n );\n expect(joinPath(\"https://api.example.com\", \"/items\")).toBe(\n \"https://api.example.com/items\",\n );\n });\n });\n\n describe(\"buildUrl\", () => {\n it(\"should keep an absolute URL as-is\", () => {\n const url = buildUrl({ url: \"https://api.example.com/items\" });\n expect(url.toString()).toBe(\"https://api.example.com/items\");\n });\n\n it(\"should prepend the base URL to a relative path\", () => {\n const url = buildUrl({\n url: \"/items\",\n baseUrl: \"https://api.example.com/\",\n });\n expect(url.toString()).toBe(\"https://api.example.com/items\");\n });\n\n it(\"should ignore the base URL when the input URL is absolute\", () => {\n const url = buildUrl({\n url: \"https://other.example.com/items\",\n baseUrl: \"https://api.example.com\",\n });\n expect(url.toString()).toBe(\"https://other.example.com/items\");\n });\n\n it(\"should append query params and skip null/undefined entries\", () => {\n const url = buildUrl({\n url: \"https://api.example.com/items\",\n params: {\n chain: 1,\n contract: \"0xabc\",\n active: true,\n skip: null,\n alsoSkip: undefined,\n },\n });\n expect(url.searchParams.get(\"chain\")).toBe(\"1\");\n expect(url.searchParams.get(\"contract\")).toBe(\"0xabc\");\n expect(url.searchParams.get(\"active\")).toBe(\"true\");\n expect(url.searchParams.has(\"skip\")).toBe(false);\n expect(url.searchParams.has(\"alsoSkip\")).toBe(false);\n });\n\n it(\"should preserve a pre-existing query string in the input URL\", () => {\n const url = buildUrl({\n url: \"https://api.example.com/items?keep=1\",\n params: { chain: 2 },\n });\n expect(url.searchParams.get(\"keep\")).toBe(\"1\");\n expect(url.searchParams.get(\"chain\")).toBe(\"2\");\n });\n\n it(\"should percent-encode keys and values\", () => {\n const url = buildUrl({\n url: \"https://api.example.com/items\",\n params: { \"a key\": \"a value&b\" },\n });\n expect(url.toString()).toBe(\n \"https://api.example.com/items?a%20key=a%20value%26b\",\n );\n });\n\n it(\"should still build the URL when URLSearchParams.set is unavailable (React Native regression)\", () => {\n const original = URLSearchParams.prototype.set;\n // Simulate a runtime (e.g. some React Native versions) where\n // URLSearchParams exists but `set` is not implemented.\n URLSearchParams.prototype.set = function notImplemented(): never {\n throw new Error(\"URLSearchParams.set is not implemented\");\n };\n try {\n const url = buildUrl({\n url: \"https://api.example.com/items\",\n params: { chain: 1, contract: \"0xabc\" },\n });\n // Reading `searchParams.get` in jsdom does not call `set`, so it is\n // safe to assert against the parsed URL here.\n expect(url.toString()).toContain(\"chain=1\");\n expect(url.toString()).toContain(\"contract=0xabc\");\n } finally {\n URLSearchParams.prototype.set = original;\n }\n });\n });\n\n describe(\"hasHeader\", () => {\n it(\"should find a header regardless of case\", () => {\n expect(hasHeader({ \"Content-Type\": \"json\" }, \"content-type\")).toBe(true);\n expect(hasHeader({ \"content-type\": \"json\" }, \"Content-Type\")).toBe(true);\n });\n\n it(\"should return false when no matching header exists\", () => {\n expect(hasHeader({ Accept: \"json\" }, \"content-type\")).toBe(false);\n expect(hasHeader({}, \"content-type\")).toBe(false);\n });\n });\n\n describe(\"isRawBody\", () => {\n it(\"should accept native BodyInit values\", () => {\n expect(isRawBody(\"raw-string\")).toBe(true);\n expect(isRawBody(new ArrayBuffer(4))).toBe(true);\n expect(isRawBody(new Uint8Array([1, 2, 3]))).toBe(true);\n expect(isRawBody(new Blob([\"a\"]))).toBe(true);\n expect(isRawBody(new FormData())).toBe(true);\n expect(isRawBody(new URLSearchParams({ a: \"1\" }))).toBe(true);\n expect(isRawBody(new ReadableStream())).toBe(true);\n });\n\n it(\"should reject plain objects and primitives\", () => {\n expect(isRawBody({ foo: \"bar\" })).toBe(false);\n expect(isRawBody([1, 2, 3])).toBe(false);\n expect(isRawBody(42)).toBe(false);\n expect(isRawBody(null)).toBe(false);\n expect(isRawBody(undefined)).toBe(false);\n });\n\n it(\"should not throw when optional Web globals are missing (React Native regression)\", () => {\n const globals = globalThis as unknown as Record<string, unknown>;\n const names = [\"Blob\", \"FormData\", \"URLSearchParams\", \"ReadableStream\"];\n const saved: Record<string, unknown> = {};\n for (const name of names) {\n saved[name] = globals[name];\n delete globals[name];\n }\n try {\n expect(() => isRawBody({ foo: \"bar\" })).not.toThrow();\n expect(isRawBody({ foo: \"bar\" })).toBe(false);\n expect(isRawBody(\"raw\")).toBe(true);\n expect(isRawBody(new Uint8Array([1]))).toBe(true);\n } finally {\n for (const name of names) {\n globals[name] = saved[name];\n }\n }\n });\n });\n\n describe(\"buildBodyAndHeaders\", () => {\n it(\"should merge default and per-request headers with per-request winning\", () => {\n const { headers } = buildBodyAndHeaders({\n method: \"GET\",\n body: undefined,\n defaultHeaders: { \"X-Default\": \"default\", \"X-Shared\": \"from-default\" },\n perRequestHeaders: { \"X-Shared\": \"overridden\", \"X-Per\": \"per\" },\n });\n expect(headers).toEqual({\n \"X-Default\": \"default\",\n \"X-Shared\": \"overridden\",\n \"X-Per\": \"per\",\n });\n });\n\n it(\"should not emit a body on GET/HEAD even when a body is provided\", () => {\n const result = buildBodyAndHeaders({\n method: \"GET\",\n body: { foo: \"bar\" },\n defaultHeaders: {},\n });\n expect(result.body).toBeUndefined();\n expect(result.headers[\"Content-Type\"]).toBeUndefined();\n });\n\n it(\"should JSON-stringify plain objects and set the Content-Type\", () => {\n const result = buildBodyAndHeaders({\n method: \"POST\",\n body: { foo: \"bar\" },\n defaultHeaders: {},\n });\n expect(result.body).toBe(JSON.stringify({ foo: \"bar\" }));\n expect(result.headers[\"Content-Type\"]).toBe(JSON_CONTENT_TYPE);\n });\n\n it(\"should not override an explicit Content-Type header\", () => {\n const result = buildBodyAndHeaders({\n method: \"POST\",\n body: { foo: \"bar\" },\n defaultHeaders: {},\n perRequestHeaders: { \"content-type\": \"application/vnd.custom+json\" },\n });\n expect(result.body).toBe(JSON.stringify({ foo: \"bar\" }));\n expect(result.headers[\"content-type\"]).toBe(\n \"application/vnd.custom+json\",\n );\n expect(result.headers[\"Content-Type\"]).toBeUndefined();\n });\n\n it(\"should pass raw BodyInit values through unchanged without JSON headers\", () => {\n const formData = new FormData();\n formData.set(\"field\", \"value\");\n const result = buildBodyAndHeaders({\n method: \"POST\",\n body: formData,\n defaultHeaders: {},\n });\n expect(result.body).toBe(formData);\n expect(result.headers[\"Content-Type\"]).toBeUndefined();\n });\n\n it(\"should return an undefined body when the body itself is undefined\", () => {\n const result = buildBodyAndHeaders({\n method: \"POST\",\n body: undefined,\n defaultHeaders: { \"X-Default\": \"d\" },\n });\n expect(result.body).toBeUndefined();\n expect(result.headers).toEqual({ \"X-Default\": \"d\" });\n });\n });\n\n describe(\"buildSignal\", () => {\n it(\"should return undefined when no timeout and no external signal\", () => {\n expect(\n buildSignal({\n timeoutMs: undefined,\n externalSignal: undefined,\n }),\n ).toBeUndefined();\n });\n\n it(\"should return undefined when timeout is zero and no external signal\", () => {\n expect(\n buildSignal({\n timeoutMs: 0,\n externalSignal: undefined,\n }),\n ).toBeUndefined();\n });\n\n it(\"should return the external signal alone when no timeout is configured\", () => {\n const controller = new AbortController();\n const signal = buildSignal({\n timeoutMs: undefined,\n externalSignal: controller.signal,\n });\n expect(signal).toBe(controller.signal);\n });\n\n it(\"should return a timeout signal when only a timeout is configured\", () => {\n const signal = buildSignal({\n timeoutMs: 1000,\n externalSignal: undefined,\n });\n expect(signal).toBeInstanceOf(AbortSignal);\n });\n\n it(\"should use the provided timeout value for AbortSignal.timeout\", () => {\n const timeoutSpy = vi.spyOn(AbortSignal, \"timeout\");\n buildSignal({\n timeoutMs: 50,\n externalSignal: undefined,\n });\n expect(timeoutSpy).toHaveBeenCalledWith(50);\n timeoutSpy.mockRestore();\n });\n\n it(\"should compose both signals with AbortSignal.any when both are set\", () => {\n const anySpy = vi.spyOn(AbortSignal, \"any\");\n const controller = new AbortController();\n const signal = buildSignal({\n timeoutMs: 100,\n externalSignal: controller.signal,\n });\n expect(signal).toBeInstanceOf(AbortSignal);\n expect(anySpy).toHaveBeenCalledTimes(1);\n anySpy.mockRestore();\n });\n });\n\n describe(\"parseBody\", () => {\n it(\"should return undefined for 'void' response type without consuming the body\", async () => {\n const response = new Response(\"ignored\");\n const result = await parseBody(response, \"void\");\n expect(result).toBeUndefined();\n expect(response.bodyUsed).toBe(false);\n });\n\n it(\"should return text for 'text' response type\", async () => {\n const response = new Response(\"plain-body\");\n await expect(parseBody(response, \"text\")).resolves.toBe(\"plain-body\");\n });\n\n it(\"should return a Blob for 'blob' response type\", async () => {\n const response = new Response(\"blob-body\");\n const result = await parseBody(response, \"blob\");\n expect(result).toBeInstanceOf(Blob);\n });\n\n it(\"should return an ArrayBuffer for 'arrayBuffer' response type\", async () => {\n const response = new Response(new Uint8Array([1, 2, 3]));\n const result = await parseBody(response, \"arrayBuffer\");\n expect(result).toBeInstanceOf(ArrayBuffer);\n expect(new Uint8Array(result as ArrayBuffer)).toEqual(\n new Uint8Array([1, 2, 3]),\n );\n });\n\n it(\"should parse JSON for 'json' response type\", async () => {\n const response = new Response(JSON.stringify({ hello: \"world\" }));\n await expect(parseBody(response, \"json\")).resolves.toEqual({\n hello: \"world\",\n });\n });\n\n it(\"should resolve to undefined for an empty JSON body\", async () => {\n const response = new Response(\"\");\n await expect(parseBody(response, \"json\")).resolves.toBeUndefined();\n });\n\n it(\"should throw a DmkNetworkClientError for malformed JSON\", async () => {\n const response = new Response(\"not-json\", {\n status: 200,\n statusText: \"OK\",\n });\n const error = await parseBody(response, \"json\").catch((e: unknown) => e);\n expect(error).toBeInstanceOf(DmkNetworkClientError);\n const dmkError = error as DmkNetworkClientError;\n expect(dmkError.status).toBe(200);\n expect(dmkError.statusText).toBe(\"OK\");\n expect(dmkError.responseBody).toBe(\"not-json\");\n expect(dmkError.cause).toBeInstanceOf(SyntaxError);\n });\n });\n\n describe(\"safeReadText\", () => {\n it(\"should return the text body\", async () => {\n await expect(safeReadText(new Response(\"hello\"))).resolves.toBe(\"hello\");\n });\n\n it(\"should return undefined when reading the body throws\", async () => {\n const response = {\n text: () => Promise.reject(new Error(\"read failed\")),\n } as unknown as Response;\n await expect(safeReadText(response)).resolves.toBeUndefined();\n });\n });\n\n describe(\"wrapFetchError\", () => {\n it(\"should wrap a generic Error with its message\", () => {\n const cause = new TypeError(\"network down\");\n const error = wrapFetchError({\n cause,\n externalSignal: undefined,\n timeoutMs: undefined,\n });\n expect(error).toBeInstanceOf(DmkNetworkClientError);\n expect(error.message).toBe(\"network down\");\n expect(error.cause).toBe(cause);\n expect(error.isTimeout).toBe(false);\n expect(error.isAbort).toBe(false);\n });\n\n it(\"should fall back to a generic message for non-Error causes\", () => {\n const error = wrapFetchError({\n cause: \"something\",\n externalSignal: undefined,\n timeoutMs: undefined,\n });\n expect(error.message).toBe(\"Network request failed\");\n expect(error.cause).toBe(\"something\");\n });\n\n it(\"should flag TimeoutError as a timeout\", () => {\n const cause = new Error(\"timed out\");\n cause.name = \"TimeoutError\";\n const error = wrapFetchError({\n cause,\n externalSignal: undefined,\n timeoutMs: 10,\n });\n expect(error.isTimeout).toBe(true);\n expect(error.isAbort).toBe(false);\n expect(error.message).toBe(\"Request timed out\");\n });\n\n it(\"should flag AbortError as a timeout when a timeout is configured and no external abort\", () => {\n const cause = new Error(\"aborted\");\n cause.name = \"AbortError\";\n const error = wrapFetchError({\n cause,\n externalSignal: undefined,\n timeoutMs: 1000,\n });\n expect(error.isTimeout).toBe(true);\n expect(error.isAbort).toBe(false);\n });\n\n it(\"should flag AbortError as an external abort when the caller signal is aborted\", () => {\n const controller = new AbortController();\n controller.abort();\n const cause = new Error(\"aborted\");\n cause.name = \"AbortError\";\n const error = wrapFetchError({\n cause,\n externalSignal: controller.signal,\n timeoutMs: undefined,\n });\n expect(error.isAbort).toBe(true);\n expect(error.isTimeout).toBe(false);\n expect(error.message).toBe(\"Request aborted\");\n });\n\n it(\"should treat AbortError with no timeout and no external abort as a plain abort\", () => {\n const cause = new Error(\"aborted\");\n cause.name = \"AbortError\";\n const error = wrapFetchError({\n cause,\n externalSignal: undefined,\n timeoutMs: undefined,\n });\n expect(error.isTimeout).toBe(false);\n expect(error.isAbort).toBe(false);\n expect(error.message).toBe(\"Request aborted\");\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["import_DmkNetworkClientError", "import_DmkNetworkClientHelpers", "url", "original", "globals", "names", "saved", "name", "headers", "result", "formData", "controller", "signal", "timeoutSpy", "anySpy", "response", "error", "e", "dmkError", "cause"]
|
|
7
7
|
}
|
package/lib/cjs/src/api/types.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var a=Object.defineProperty;var n=Object.getOwnPropertyDescriptor;var s=Object.getOwnPropertyNames;var i=Object.prototype.hasOwnProperty;var A=(t,e,o,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let p of s(e))!i.call(t,p)&&p!==o&&a(t,p,{get:()=>e[p],enumerable:!(r=n(e,p))||r.enumerable});return t};var y=t=>A(a({},"__esModule",{value:!0}),t);var d={};module.exports=y(d);
|
|
2
2
|
//# sourceMappingURL=types.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/api/types.ts"],
|
|
4
|
-
"sourcesContent": ["export type { OpenAppErrorCodes } from \"./command/os/OpenAppCommand\";\nexport type { CommandErrors } from \"./command/utils/CommandErrors\";\nexport type { DeviceId } from \"./device/DeviceModel\";\nexport type { ConnectionType } from \"./discovery/ConnectionType\";\nexport type { CommandErrorArgs } from \"./Error\";\nexport type { LogSubscriberOptions } from \"./logger-subscriber/model/LogSubscriberOptions\";\nexport type { DiscoveredDevice } from \"./transport/model/DiscoveredDevice\";\nexport type {\n Transport,\n TransportArgs,\n TransportFactory,\n} from \"./transport/model/Transport\";\nexport type { TransportIdentifier } from \"./transport/model/TransportIdentifier\";\nexport type { ApduBuilderArgs } from \"@api/apdu/utils/ApduBuilder\";\nexport type { Command } from \"@api/command/Command\";\nexport type {\n CommandErrorResult,\n CommandResult,\n CommandSuccessResult,\n} from \"@api/command/model/CommandResult\";\nexport type { SendCommandUseCaseArgs } from \"@api/command/use-case/SendCommandUseCase\";\nexport type { DeviceModelId } from \"@api/device/DeviceModel\";\nexport {\n type DeviceAction,\n type DeviceActionIntermediateValue,\n type ExecuteDeviceActionReturnType,\n} from \"@api/device-action/DeviceAction\";\nexport {\n type CallTaskInAppDAError,\n type CallTaskInAppDAIntermediateValue,\n type CallTaskInAppDAOutput,\n} from \"@api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceActionTypes\";\nexport {\n type GetDeviceMetadataDAError,\n type GetDeviceMetadataDAInput,\n type GetDeviceMetadataDAIntermediateValue,\n type GetDeviceMetadataDAOutput,\n type GetDeviceMetadataDAState,\n} from \"@api/device-action/os/GetDeviceMetadata/types\";\nexport {\n type GetDeviceStatusDAError,\n type GetDeviceStatusDAInput,\n type GetDeviceStatusDAIntermediateValue,\n type GetDeviceStatusDAOutput,\n type GetDeviceStatusDAState,\n} from \"@api/device-action/os/GetDeviceStatus/types\";\nexport {\n type GoToDashboardDAError,\n type GoToDashboardDAInput,\n type GoToDashboardDAIntermediateValue,\n type GoToDashboardDAOutput,\n type GoToDashboardDAState,\n} from \"@api/device-action/os/GoToDashboard/types\";\nexport {\n type ApplicationConstraint,\n type ApplicationDependency,\n type ApplicationVersionConstraint,\n type InstallOrUpdateAppsDAError,\n type InstallOrUpdateAppsDAInput,\n type InstallOrUpdateAppsDAIntermediateValue,\n type InstallOrUpdateAppsDAOutput,\n type InstallOrUpdateAppsDAState,\n type InstallPlan,\n} from \"@api/device-action/os/InstallOrUpdateApps/types\";\nexport {\n type ListAppsDAError,\n type ListAppsDAInput,\n type ListAppsDAIntermediateValue,\n type ListAppsDAOutput,\n type ListAppsDAState,\n} from \"@api/device-action/os/ListApps/types\";\nexport {\n type ListAppsWithMetadataDAError,\n type ListAppsWithMetadataDAInput,\n type ListAppsWithMetadataDAIntermediateValue,\n type ListAppsWithMetadataDAOutput,\n type ListAppsWithMetadataDAState,\n} from \"@api/device-action/os/ListAppsWithMetadata/types\";\nexport {\n type OpenAppDAError,\n type OpenAppDAInput,\n type OpenAppDAIntermediateValue,\n type OpenAppDAOutput,\n type OpenAppDARequiredInteraction,\n type OpenAppDAState,\n} from \"@api/device-action/os/OpenAppDeviceAction/types\";\nexport {\n type OpenAppWithDependenciesDAError,\n type OpenAppWithDependenciesDAInput,\n type OpenAppWithDependenciesDAIntermediateValue,\n type OpenAppWithDependenciesDAOutput,\n type OpenAppWithDependenciesDARequiredInteraction,\n type OpenAppWithDependenciesDAState,\n} from \"@api/device-action/os/OpenAppWithDependencies/types\";\nexport {\n type SendCommandInAppDAError,\n type SendCommandInAppDAInput,\n type SendCommandInAppDAIntermediateValue,\n type SendCommandInAppDAOutput,\n} from \"@api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceActionTypes\";\nexport type { ExecuteDeviceActionUseCaseArgs } from \"@api/device-action/use-case/ExecuteDeviceActionUseCase\";\nexport { type StateMachineTypes } from \"@api/device-action/xstate-utils/StateMachineTypes\";\nexport { type DeviceModelDataSource } from \"@api/device-model/data/DeviceModelDataSource\";\nexport type {\n Catalog,\n CustomImage,\n DeviceSessionState,\n FirmwareUpdate,\n FirmwareUpdateContext,\n FirmwareVersion,\n InstalledLanguagePackage,\n RunningApp,\n} from \"@api/device-session/DeviceSessionState\";\nexport { type ApduReceiverService } from \"@api/device-session/service/ApduReceiverService\";\nexport { type ApduReceiverServiceFactory } from \"@api/device-session/service/ApduReceiverService\";\nexport { type ApduSenderServiceFactory } from \"@api/device-session/service/ApduSenderService\";\nexport { type ApduSenderService } from \"@api/device-session/service/ApduSenderService\";\nexport type { DeviceSessionId } from \"@api/device-session/types\";\nexport type { DmkConfig } from \"@api/DmkConfig\";\nexport type { DmkError } from \"@api/Error\";\nexport type { LoggerPublisherService } from \"@api/logger-publisher/service/LoggerPublisherService\";\nexport type {\n LoggerSubscriberService,\n LogParams,\n} from \"@api/logger-subscriber/service/LoggerSubscriberService\";\nexport type {\n DmkErrorResult,\n DmkResult,\n DmkSuccessResult,\n} from \"@api/model/DmkResult\";\nexport {\n type GenuineCheckDAError,\n type GenuineCheckDAInput,\n type GenuineCheckDAIntermediateValue,\n type GenuineCheckDAOutput,\n type GenuineCheckDARequiredInteraction,\n type GenuineCheckDAState,\n} from \"@api/secure-channel/device-action/GenuineCheck/types\";\nexport {\n type InstallAppDAError,\n type InstallAppDAInput,\n type InstallAppDAIntermediateValue,\n type InstallAppDAOutput,\n type InstallAppDARequiredInteraction,\n type InstallAppDAState,\n} from \"@api/secure-channel/device-action/InstallApp/types\";\nexport {\n type ListInstalledAppsDAError,\n type ListInstalledAppsDAInput,\n type ListInstalledAppsDAIntermediateValue,\n type ListInstalledAppsDAOutput,\n type ListInstalledAppsDARequiredInteraction,\n type ListInstalledAppsDAState,\n} from \"@api/secure-channel/device-action/ListInstalledApps/types\";\nexport {\n type UninstallAppDAError,\n type UninstallAppDAInput,\n type UninstallAppDAIntermediateValue,\n type UninstallAppDAOutput,\n type UninstallAppDARequiredInteraction,\n type UninstallAppDAState,\n} from \"@api/secure-channel/device-action/UninstallApp/types\";\nexport { type DeviceApduSender } from \"@api/transport/model/DeviceApduSender\";\nexport {\n type DeviceConnection,\n type DisconnectHandler,\n type SendApduFnType,\n type SendApduResult,\n} from \"@api/transport/model/DeviceConnection\";\nexport { type TransportDiscoveredDevice } from \"@api/transport/model/TransportDiscoveredDevice\";\nexport type { HexaString } from \"@api/utils/HexaString\";\nexport type { ConnectUseCaseArgs } from \"@internal/discovery/use-case/ConnectUseCase\";\nexport type { DisconnectUseCaseArgs } from \"@internal/discovery/use-case/DisconnectUseCase\";\nexport type { GetConnectedDeviceUseCaseArgs } from \"@internal/discovery/use-case/GetConnectedDeviceUseCase\";\nexport type { StartDiscoveringUseCaseArgs } from \"@internal/discovery/use-case/StartDiscoveringUseCase\";\nexport type { SendApduUseCaseArgs } from \"@internal/send/use-case/SendApduUseCase\";\n"],
|
|
4
|
+
"sourcesContent": ["export type { OpenAppErrorCodes } from \"./command/os/OpenAppCommand\";\nexport type { CommandErrors } from \"./command/utils/CommandErrors\";\nexport type { DeviceId } from \"./device/DeviceModel\";\nexport type { ConnectionType } from \"./discovery/ConnectionType\";\nexport type { CommandErrorArgs } from \"./Error\";\nexport type { LogSubscriberOptions } from \"./logger-subscriber/model/LogSubscriberOptions\";\nexport type { DiscoveredDevice } from \"./transport/model/DiscoveredDevice\";\nexport type {\n Transport,\n TransportArgs,\n TransportFactory,\n} from \"./transport/model/Transport\";\nexport type { TransportIdentifier } from \"./transport/model/TransportIdentifier\";\nexport type { ApduBuilderArgs } from \"@api/apdu/utils/ApduBuilder\";\nexport type { Command } from \"@api/command/Command\";\nexport type {\n CommandErrorResult,\n CommandResult,\n CommandSuccessResult,\n} from \"@api/command/model/CommandResult\";\nexport type { SendCommandUseCaseArgs } from \"@api/command/use-case/SendCommandUseCase\";\nexport type { DeviceModelId } from \"@api/device/DeviceModel\";\nexport {\n type DeviceAction,\n type DeviceActionIntermediateValue,\n type ExecuteDeviceActionReturnType,\n} from \"@api/device-action/DeviceAction\";\nexport {\n type CallTaskInAppDAError,\n type CallTaskInAppDAIntermediateValue,\n type CallTaskInAppDAOutput,\n} from \"@api/device-action/os/CallTaskInAppDeviceAction/CallTaskInAppDeviceActionTypes\";\nexport {\n type GetDeviceMetadataDAError,\n type GetDeviceMetadataDAInput,\n type GetDeviceMetadataDAIntermediateValue,\n type GetDeviceMetadataDAOutput,\n type GetDeviceMetadataDAState,\n} from \"@api/device-action/os/GetDeviceMetadata/types\";\nexport {\n type GetDeviceStatusDAError,\n type GetDeviceStatusDAInput,\n type GetDeviceStatusDAIntermediateValue,\n type GetDeviceStatusDAOutput,\n type GetDeviceStatusDAState,\n} from \"@api/device-action/os/GetDeviceStatus/types\";\nexport {\n type GoToDashboardDAError,\n type GoToDashboardDAInput,\n type GoToDashboardDAIntermediateValue,\n type GoToDashboardDAOutput,\n type GoToDashboardDAState,\n} from \"@api/device-action/os/GoToDashboard/types\";\nexport {\n type InstallLanguagePackageDAError,\n type InstallLanguagePackageDAInput,\n type InstallLanguagePackageDAIntermediateValue,\n type InstallLanguagePackageDAOutput,\n type InstallLanguagePackageDAState,\n type Language,\n} from \"@api/device-action/os/InstallLanguagePackage/types\";\nexport {\n type ApplicationConstraint,\n type ApplicationDependency,\n type ApplicationVersionConstraint,\n type InstallOrUpdateAppsDAError,\n type InstallOrUpdateAppsDAInput,\n type InstallOrUpdateAppsDAIntermediateValue,\n type InstallOrUpdateAppsDAOutput,\n type InstallOrUpdateAppsDAState,\n type InstallPlan,\n} from \"@api/device-action/os/InstallOrUpdateApps/types\";\nexport {\n type ListAppsDAError,\n type ListAppsDAInput,\n type ListAppsDAIntermediateValue,\n type ListAppsDAOutput,\n type ListAppsDAState,\n} from \"@api/device-action/os/ListApps/types\";\nexport {\n type ListAppsWithMetadataDAError,\n type ListAppsWithMetadataDAInput,\n type ListAppsWithMetadataDAIntermediateValue,\n type ListAppsWithMetadataDAOutput,\n type ListAppsWithMetadataDAState,\n} from \"@api/device-action/os/ListAppsWithMetadata/types\";\nexport {\n type OpenAppDAError,\n type OpenAppDAInput,\n type OpenAppDAIntermediateValue,\n type OpenAppDAOutput,\n type OpenAppDARequiredInteraction,\n type OpenAppDAState,\n} from \"@api/device-action/os/OpenAppDeviceAction/types\";\nexport {\n type OpenAppWithDependenciesDAError,\n type OpenAppWithDependenciesDAInput,\n type OpenAppWithDependenciesDAIntermediateValue,\n type OpenAppWithDependenciesDAOutput,\n type OpenAppWithDependenciesDARequiredInteraction,\n type OpenAppWithDependenciesDAState,\n} from \"@api/device-action/os/OpenAppWithDependencies/types\";\nexport {\n type SendCommandInAppDAError,\n type SendCommandInAppDAInput,\n type SendCommandInAppDAIntermediateValue,\n type SendCommandInAppDAOutput,\n} from \"@api/device-action/os/SendCommandInAppDeviceAction/SendCommandInAppDeviceActionTypes\";\nexport type { ExecuteDeviceActionUseCaseArgs } from \"@api/device-action/use-case/ExecuteDeviceActionUseCase\";\nexport { type StateMachineTypes } from \"@api/device-action/xstate-utils/StateMachineTypes\";\nexport { type DeviceModelDataSource } from \"@api/device-model/data/DeviceModelDataSource\";\nexport type {\n Catalog,\n CustomImage,\n DeviceSessionState,\n FirmwareUpdate,\n FirmwareUpdateContext,\n FirmwareVersion,\n InstalledLanguagePackage,\n RunningApp,\n} from \"@api/device-session/DeviceSessionState\";\nexport { type ApduReceiverService } from \"@api/device-session/service/ApduReceiverService\";\nexport { type ApduReceiverServiceFactory } from \"@api/device-session/service/ApduReceiverService\";\nexport { type ApduSenderServiceFactory } from \"@api/device-session/service/ApduSenderService\";\nexport { type ApduSenderService } from \"@api/device-session/service/ApduSenderService\";\nexport type { DeviceSessionId } from \"@api/device-session/types\";\nexport type { DmkConfig } from \"@api/DmkConfig\";\nexport type { DmkError } from \"@api/Error\";\nexport type { LoggerPublisherService } from \"@api/logger-publisher/service/LoggerPublisherService\";\nexport type {\n LoggerSubscriberService,\n LogParams,\n} from \"@api/logger-subscriber/service/LoggerSubscriberService\";\nexport type {\n DmkErrorResult,\n DmkResult,\n DmkSuccessResult,\n} from \"@api/model/DmkResult\";\nexport {\n type GenuineCheckDAError,\n type GenuineCheckDAInput,\n type GenuineCheckDAIntermediateValue,\n type GenuineCheckDAOutput,\n type GenuineCheckDARequiredInteraction,\n type GenuineCheckDAState,\n} from \"@api/secure-channel/device-action/GenuineCheck/types\";\nexport {\n type InstallAppDAError,\n type InstallAppDAInput,\n type InstallAppDAIntermediateValue,\n type InstallAppDAOutput,\n type InstallAppDARequiredInteraction,\n type InstallAppDAState,\n} from \"@api/secure-channel/device-action/InstallApp/types\";\nexport {\n type ListInstalledAppsDAError,\n type ListInstalledAppsDAInput,\n type ListInstalledAppsDAIntermediateValue,\n type ListInstalledAppsDAOutput,\n type ListInstalledAppsDARequiredInteraction,\n type ListInstalledAppsDAState,\n} from \"@api/secure-channel/device-action/ListInstalledApps/types\";\nexport {\n type UninstallAppDAError,\n type UninstallAppDAInput,\n type UninstallAppDAIntermediateValue,\n type UninstallAppDAOutput,\n type UninstallAppDARequiredInteraction,\n type UninstallAppDAState,\n} from \"@api/secure-channel/device-action/UninstallApp/types\";\nexport { type DeviceApduSender } from \"@api/transport/model/DeviceApduSender\";\nexport {\n type DeviceConnection,\n type DisconnectHandler,\n type SendApduFnType,\n type SendApduResult,\n} from \"@api/transport/model/DeviceConnection\";\nexport { type TransportDiscoveredDevice } from \"@api/transport/model/TransportDiscoveredDevice\";\nexport type { HexaString } from \"@api/utils/HexaString\";\nexport type { ConnectUseCaseArgs } from \"@internal/discovery/use-case/ConnectUseCase\";\nexport type { DisconnectUseCaseArgs } from \"@internal/discovery/use-case/DisconnectUseCase\";\nexport type { GetConnectedDeviceUseCaseArgs } from \"@internal/discovery/use-case/GetConnectedDeviceUseCase\";\nexport type { StartDiscoveringUseCaseArgs } from \"@internal/discovery/use-case/StartDiscoveringUseCase\";\nexport type { SendApduUseCaseArgs } from \"@internal/send/use-case/SendApduUseCase\";\n"],
|
|
5
5
|
"mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
|
|
6
6
|
"names": ["types_exports", "__toCommonJS"]
|
|
7
7
|
}
|
package/lib/esm/package.json
CHANGED
|
@@ -63,5 +63,5 @@
|
|
|
63
63
|
"watch:builds": "pnpm ldmk-tool watch --entryPoints index.ts,src/**/*.ts --tsconfig tsconfig.prod.json",
|
|
64
64
|
"watch:types": "concurrently \"tsc --watch -p tsconfig.prod.json\" \"tsc-alias --watch -p tsconfig.prod.json\""
|
|
65
65
|
},
|
|
66
|
-
"version": "1.
|
|
66
|
+
"version": "1.4.0"
|
|
67
67
|
}
|
package/lib/esm/src/api/Error.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
class
|
|
1
|
+
class a{_tag;originalError;errorCode;message;constructor({tag:r,errorCode:o,originalError:n,message:i}){this._tag=r,this.originalError=n,this.errorCode=o,this.message=i??"An error occured during device exchange."}}class s{_tag="UnknownDeviceExchangeError";originalError;message;constructor(r){this.originalError=r,this.message="Unexpected device exchange error happened."}}class t{_tag="DeviceBusyError";originalError;constructor(r){this.originalError=r??new Error("Device is busy, please try again later")}}class c{_tag="InvalidArgumentError";originalError;constructor(r){this.originalError=new Error(r??"Invalid argument.")}}export{t as DeviceBusyError,a as DeviceExchangeError,c as InvalidArgumentError,s as UnknownDeviceExchangeError};
|
|
2
2
|
//# sourceMappingURL=Error.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/api/Error.ts"],
|
|
4
|
-
"sourcesContent": ["export interface DmkError {\n readonly _tag: string;\n readonly originalError?: unknown;\n message?: string;\n}\n\nexport type DeviceExchangeErrorArgs<SpecificErrorCodes> = {\n tag: string;\n originalError?: unknown;\n errorCode: SpecificErrorCodes;\n message: string;\n};\n\nexport type CommandErrorArgs<SpecificErrorCodes> = Omit<\n DeviceExchangeErrorArgs<SpecificErrorCodes>,\n \"tag\"\n>;\n\nexport abstract class DeviceExchangeError<SpecificErrorCodes = void> {\n readonly _tag: string;\n readonly originalError?: unknown;\n readonly errorCode: SpecificErrorCodes;\n readonly message: string;\n\n protected constructor({\n tag,\n errorCode,\n originalError,\n message,\n }: DeviceExchangeErrorArgs<SpecificErrorCodes>) {\n this._tag = tag;\n this.originalError = originalError;\n this.errorCode = errorCode;\n this.message = message ?? \"An error occured during device exchange.\";\n }\n}\n\nexport class UnknownDeviceExchangeError implements DmkError {\n readonly _tag = \"UnknownDeviceExchangeError\";\n readonly originalError?: unknown;\n readonly message: string;\n\n constructor(originalError?: unknown) {\n this.originalError = originalError;\n this.message = \"Unexpected device exchange error happened.\";\n }\n}\n\nexport class DeviceBusyError implements DmkError {\n readonly _tag = \"DeviceBusyError\";\n originalError?: Error;\n\n constructor(originalError?: Error) {\n this.originalError =\n originalError ?? new Error(\"Device is busy, please try again later\");\n }\n}\n"],
|
|
5
|
-
"mappings": "AAkBO,MAAeA,CAA+C,CAC1D,KACA,cACA,UACA,QAEC,YAAY,CACpB,IAAAC,EACA,UAAAC,EACA,cAAAC,EACA,QAAAC,CACF,EAAgD,CAC9C,KAAK,KAAOH,EACZ,KAAK,cAAgBE,EACrB,KAAK,UAAYD,EACjB,KAAK,QAAUE,GAAW,0CAC5B,CACF,CAEO,MAAMC,CAA+C,CACjD,KAAO,6BACP,cACA,QAET,YAAYF,EAAyB,CACnC,KAAK,cAAgBA,EACrB,KAAK,QAAU,4CACjB,CACF,CAEO,MAAMG,CAAoC,CACtC,KAAO,kBAChB,cAEA,YAAYH,EAAuB,CACjC,KAAK,cACHA,GAAiB,IAAI,MAAM,wCAAwC,CACvE,CACF",
|
|
6
|
-
"names": ["DeviceExchangeError", "tag", "errorCode", "originalError", "message", "UnknownDeviceExchangeError", "DeviceBusyError"]
|
|
4
|
+
"sourcesContent": ["export interface DmkError {\n readonly _tag: string;\n readonly originalError?: unknown;\n message?: string;\n}\n\nexport type DeviceExchangeErrorArgs<SpecificErrorCodes> = {\n tag: string;\n originalError?: unknown;\n errorCode: SpecificErrorCodes;\n message: string;\n};\n\nexport type CommandErrorArgs<SpecificErrorCodes> = Omit<\n DeviceExchangeErrorArgs<SpecificErrorCodes>,\n \"tag\"\n>;\n\nexport abstract class DeviceExchangeError<SpecificErrorCodes = void> {\n readonly _tag: string;\n readonly originalError?: unknown;\n readonly errorCode: SpecificErrorCodes;\n readonly message: string;\n\n protected constructor({\n tag,\n errorCode,\n originalError,\n message,\n }: DeviceExchangeErrorArgs<SpecificErrorCodes>) {\n this._tag = tag;\n this.originalError = originalError;\n this.errorCode = errorCode;\n this.message = message ?? \"An error occured during device exchange.\";\n }\n}\n\nexport class UnknownDeviceExchangeError implements DmkError {\n readonly _tag = \"UnknownDeviceExchangeError\";\n readonly originalError?: unknown;\n readonly message: string;\n\n constructor(originalError?: unknown) {\n this.originalError = originalError;\n this.message = \"Unexpected device exchange error happened.\";\n }\n}\n\nexport class DeviceBusyError implements DmkError {\n readonly _tag = \"DeviceBusyError\";\n originalError?: Error;\n\n constructor(originalError?: Error) {\n this.originalError =\n originalError ?? new Error(\"Device is busy, please try again later\");\n }\n}\n\nexport class InvalidArgumentError implements DmkError {\n readonly _tag = \"InvalidArgumentError\";\n readonly originalError: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(message ?? \"Invalid argument.\");\n }\n}\n"],
|
|
5
|
+
"mappings": "AAkBO,MAAeA,CAA+C,CAC1D,KACA,cACA,UACA,QAEC,YAAY,CACpB,IAAAC,EACA,UAAAC,EACA,cAAAC,EACA,QAAAC,CACF,EAAgD,CAC9C,KAAK,KAAOH,EACZ,KAAK,cAAgBE,EACrB,KAAK,UAAYD,EACjB,KAAK,QAAUE,GAAW,0CAC5B,CACF,CAEO,MAAMC,CAA+C,CACjD,KAAO,6BACP,cACA,QAET,YAAYF,EAAyB,CACnC,KAAK,cAAgBA,EACrB,KAAK,QAAU,4CACjB,CACF,CAEO,MAAMG,CAAoC,CACtC,KAAO,kBAChB,cAEA,YAAYH,EAAuB,CACjC,KAAK,cACHA,GAAiB,IAAI,MAAM,wCAAwC,CACvE,CACF,CAEO,MAAMI,CAAyC,CAC3C,KAAO,uBACP,cAET,YAAYH,EAAkB,CAC5B,KAAK,cAAgB,IAAI,MAAMA,GAAW,mBAAmB,CAC/D,CACF",
|
|
6
|
+
"names": ["DeviceExchangeError", "tag", "errorCode", "originalError", "message", "UnknownDeviceExchangeError", "DeviceBusyError", "InvalidArgumentError"]
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/api/command/model/CommandResult.ts"],
|
|
4
|
-
"sourcesContent": ["import type {\n InvalidResponseFormatError,\n InvalidStatusWordError,\n} from \"@api/command/Errors\";\nimport type { GlobalCommandErrorStatusCode } from \"@api/command/utils/GlobalCommandError\";\nimport type {\n DeviceExchangeError,\n UnknownDeviceExchangeError,\n} from \"@api/Error\";\nimport type {\n DmkErrorResult,\n DmkResult,\n DmkSuccessResult,\n} from \"@api/model/DmkResult\";\nimport {\n DmkResultFactory,\n DmkResultStatus,\n isSuccessDmkResult,\n} from \"@api/model/DmkResult\";\n\nexport { DmkResultStatus as CommandResultStatus };\ntype CommandError<SpecificErrorCodes = void> =\n | DeviceExchangeError<SpecificErrorCodes | GlobalCommandErrorStatusCode>\n | InvalidResponseFormatError\n | InvalidStatusWordError\n | UnknownDeviceExchangeError;\n\nexport type CommandSuccessResult<Data> = DmkSuccessResult<Data>;\nexport type CommandErrorResult<SpecificErrorCodes = void> = DmkErrorResult<\n CommandError<SpecificErrorCodes>\n>;\nexport type CommandResult<Data, SpecificErrorCodes = void> = DmkResult<\n Data,\n CommandError<SpecificErrorCodes>\n>;\n\nexport function CommandResultFactory<Data, SpecificErrorCodes = void>({\n data,\n error,\n}:\n | { data: Data; error?: undefined }\n | {\n data?: undefined;\n error: CommandError<SpecificErrorCodes>;\n }): CommandResult<Data, SpecificErrorCodes> {\n if (error !== undefined) {\n return DmkResultFactory({\n error,\n });\n }\n\n return DmkResultFactory({\n data,\n });\n}\n\nexport function isSuccessCommandResult<Data, StatusCode>(\n result: CommandResult<Data, StatusCode>,\n): result is CommandSuccessResult<Data> {\n return isSuccessDmkResult(result);\n}\n"],
|
|
5
|
-
"mappings": "
|
|
4
|
+
"sourcesContent": ["import type {\n InvalidResponseFormatError,\n InvalidStatusWordError,\n} from \"@api/command/Errors\";\nimport type { GlobalCommandErrorStatusCode } from \"@api/command/utils/GlobalCommandError\";\nimport type {\n DeviceExchangeError,\n InvalidArgumentError,\n UnknownDeviceExchangeError,\n} from \"@api/Error\";\nimport type {\n DmkErrorResult,\n DmkResult,\n DmkSuccessResult,\n} from \"@api/model/DmkResult\";\nimport {\n DmkResultFactory,\n DmkResultStatus,\n isSuccessDmkResult,\n} from \"@api/model/DmkResult\";\n\nexport { DmkResultStatus as CommandResultStatus };\ntype CommandError<SpecificErrorCodes = void> =\n | DeviceExchangeError<SpecificErrorCodes | GlobalCommandErrorStatusCode>\n | InvalidResponseFormatError\n | InvalidStatusWordError\n | InvalidArgumentError\n | UnknownDeviceExchangeError;\n\nexport type CommandSuccessResult<Data> = DmkSuccessResult<Data>;\nexport type CommandErrorResult<SpecificErrorCodes = void> = DmkErrorResult<\n CommandError<SpecificErrorCodes>\n>;\nexport type CommandResult<Data, SpecificErrorCodes = void> = DmkResult<\n Data,\n CommandError<SpecificErrorCodes>\n>;\n\nexport function CommandResultFactory<Data, SpecificErrorCodes = void>({\n data,\n error,\n}:\n | { data: Data; error?: undefined }\n | {\n data?: undefined;\n error: CommandError<SpecificErrorCodes>;\n }): CommandResult<Data, SpecificErrorCodes> {\n if (error !== undefined) {\n return DmkResultFactory({\n error,\n });\n }\n\n return DmkResultFactory({\n data,\n });\n}\n\nexport function isSuccessCommandResult<Data, StatusCode>(\n result: CommandResult<Data, StatusCode>,\n): result is CommandSuccessResult<Data> {\n return isSuccessDmkResult(result);\n}\n"],
|
|
5
|
+
"mappings": "AAeA,OACE,oBAAAA,EACA,mBAAAC,EACA,sBAAAC,MACK,uBAmBA,SAASC,EAAsD,CACpE,KAAAC,EACA,MAAAC,CACF,EAKgD,CAC9C,OAAIA,IAAU,OACLC,EAAiB,CACtB,MAAAD,CACF,CAAC,EAGIC,EAAiB,CACtB,KAAAF,CACF,CAAC,CACH,CAEO,SAASG,EACdC,EACsC,CACtC,OAAOC,EAAmBD,CAAM,CAClC",
|
|
6
6
|
"names": ["DmkResultFactory", "DmkResultStatus", "isSuccessDmkResult", "CommandResultFactory", "data", "error", "DmkResultFactory", "isSuccessCommandResult", "result", "isSuccessDmkResult"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{ApduBuilder as m}from"../../apdu/utils/ApduBuilder";import{ApduParser as d}from"../../apdu/utils/ApduParser";import{CommandResultFactory as o}from"../../command/model/CommandResult";import{isCommandErrorCode as s}from"../../command/utils/CommandErrors";import{CommandUtils as g}from"../../command/utils/CommandUtils";import{GlobalCommandErrorHandler as u}from"../../command/utils/GlobalCommandError";import{DeviceExchangeError as l}from"../../Error";const t={"681a":{message:"Invalid LANG_ID value."}};class p extends l{constructor({message:e,errorCode:r}){super({message:e,errorCode:r,tag:"DeleteLanguagePackCommandError"})}}class k{constructor(e){this.args=e}name="deleteLanguagePack";getApdu(){const e={cla:224,ins:51,p1:this.args.languagePackageId,p2:0};return new m(e).build()}parseResponse(e){const r=new d(e);if(!g.isSuccessResponse(e)){const a=r.encodeToHexaString(e.statusCode);return s(a,t)?o({error:new p({...t[a],errorCode:a})}):o({error:u.handle(e)})}return o({data:void 0})}}export{k as DeleteLanguagePackCommand,p as DeleteLanguagePackCommandError};
|
|
2
|
+
//# sourceMappingURL=DeleteLanguagePackCommand.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../src/api/command/os/DeleteLanguagePackCommand.ts"],
|
|
4
|
+
"sourcesContent": ["import { type Apdu } from \"@api/apdu/model/Apdu\";\nimport { ApduBuilder, type ApduBuilderArgs } from \"@api/apdu/utils/ApduBuilder\";\nimport { ApduParser } from \"@api/apdu/utils/ApduParser\";\nimport { type Command } from \"@api/command/Command\";\nimport {\n type CommandResult,\n CommandResultFactory,\n} from \"@api/command/model/CommandResult\";\nimport {\n type CommandErrors,\n isCommandErrorCode,\n} from \"@api/command/utils/CommandErrors\";\nimport { CommandUtils } from \"@api/command/utils/CommandUtils\";\nimport { GlobalCommandErrorHandler } from \"@api/command/utils/GlobalCommandError\";\nimport { type ApduResponse } from \"@api/device-session/ApduResponse\";\nimport { type CommandErrorArgs, DeviceExchangeError } from \"@api/Error\";\n\nexport type DeleteLanguagePackCommandArgs = {\n readonly languagePackageId: number;\n};\n\nexport type DeleteLanguagePackErrorCodes = \"681a\";\n\nconst DELETE_LANGUAGE_PACK_ERRORS: CommandErrors<DeleteLanguagePackErrorCodes> =\n {\n \"681a\": { message: \"Invalid LANG_ID value.\" },\n };\n\nexport type DeleteLanguagePackCommandResult = CommandResult<\n void,\n DeleteLanguagePackErrorCodes\n>;\n\nexport class DeleteLanguagePackCommandError extends DeviceExchangeError<DeleteLanguagePackErrorCodes> {\n constructor({\n message,\n errorCode,\n }: CommandErrorArgs<DeleteLanguagePackErrorCodes>) {\n super({ message, errorCode, tag: \"DeleteLanguagePackCommandError\" });\n }\n}\n\n/**\n * Delete installed language package by languagePackageId or delete all language packages if languagePackageId = 0xFF.\n */\nexport class DeleteLanguagePackCommand\n implements\n Command<void, DeleteLanguagePackCommandArgs, DeleteLanguagePackErrorCodes>\n{\n readonly name = \"deleteLanguagePack\";\n\n constructor(private readonly args: DeleteLanguagePackCommandArgs) {}\n\n getApdu(): Apdu {\n const apduArgs: ApduBuilderArgs = {\n cla: 0xe0,\n ins: 0x33,\n p1: this.args.languagePackageId,\n p2: 0x00,\n };\n return new ApduBuilder(apduArgs).build();\n }\n\n parseResponse(apduResponse: ApduResponse): DeleteLanguagePackCommandResult {\n const parser = new ApduParser(apduResponse);\n\n if (!CommandUtils.isSuccessResponse(apduResponse)) {\n const errorCode = parser.encodeToHexaString(apduResponse.statusCode);\n if (isCommandErrorCode(errorCode, DELETE_LANGUAGE_PACK_ERRORS)) {\n return CommandResultFactory({\n error: new DeleteLanguagePackCommandError({\n ...DELETE_LANGUAGE_PACK_ERRORS[errorCode],\n errorCode,\n }),\n });\n }\n return CommandResultFactory({\n error: GlobalCommandErrorHandler.handle(apduResponse),\n });\n }\n\n return CommandResultFactory({\n data: undefined,\n });\n }\n}\n"],
|
|
5
|
+
"mappings": "AACA,OAAS,eAAAA,MAAyC,8BAClD,OAAS,cAAAC,MAAkB,6BAE3B,OAEE,wBAAAC,MACK,mCACP,OAEE,sBAAAC,MACK,mCACP,OAAS,gBAAAC,MAAoB,kCAC7B,OAAS,6BAAAC,MAAiC,wCAE1C,OAAgC,uBAAAC,MAA2B,aAQ3D,MAAMC,EACJ,CACE,OAAQ,CAAE,QAAS,wBAAyB,CAC9C,EAOK,MAAMC,UAAuCF,CAAkD,CACpG,YAAY,CACV,QAAAG,EACA,UAAAC,CACF,EAAmD,CACjD,MAAM,CAAE,QAAAD,EAAS,UAAAC,EAAW,IAAK,gCAAiC,CAAC,CACrE,CACF,CAKO,MAAMC,CAGb,CAGE,YAA6BC,EAAqC,CAArC,UAAAA,CAAsC,CAF1D,KAAO,qBAIhB,SAAgB,CACd,MAAMC,EAA4B,CAChC,IAAK,IACL,IAAK,GACL,GAAI,KAAK,KAAK,kBACd,GAAI,CACN,EACA,OAAO,IAAIb,EAAYa,CAAQ,EAAE,MAAM,CACzC,CAEA,cAAcC,EAA6D,CACzE,MAAMC,EAAS,IAAId,EAAWa,CAAY,EAE1C,GAAI,CAACV,EAAa,kBAAkBU,CAAY,EAAG,CACjD,MAAMJ,EAAYK,EAAO,mBAAmBD,EAAa,UAAU,EACnE,OAAIX,EAAmBO,EAAWH,CAA2B,EACpDL,EAAqB,CAC1B,MAAO,IAAIM,EAA+B,CACxC,GAAGD,EAA4BG,CAAS,EACxC,UAAAA,CACF,CAAC,CACH,CAAC,EAEIR,EAAqB,CAC1B,MAAOG,EAA0B,OAAOS,CAAY,CACtD,CAAC,CACH,CAEA,OAAOZ,EAAqB,CAC1B,KAAM,MACR,CAAC,CACH,CACF",
|
|
6
|
+
"names": ["ApduBuilder", "ApduParser", "CommandResultFactory", "isCommandErrorCode", "CommandUtils", "GlobalCommandErrorHandler", "DeviceExchangeError", "DELETE_LANGUAGE_PACK_ERRORS", "DeleteLanguagePackCommandError", "message", "errorCode", "DeleteLanguagePackCommand", "args", "apduArgs", "apduResponse", "parser"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{CommandResultFactory as u,CommandResultStatus as n}from"../../command/model/CommandResult";import{DeleteLanguagePackCommand as s,DeleteLanguagePackCommandError as c}from"../../command/os/DeleteLanguagePackCommand";import{ApduResponse as o}from"../../device-session/ApduResponse";const d=new Uint8Array([224,51,1,0,0]),p=new Uint8Array([224,51,255,0,0]);describe("DeleteLanguagePackCommand",()=>{let a;beforeEach(()=>{a=new s({languagePackageId:1})}),describe("name",()=>{it("should be 'deleteLanguagePack'",()=>{expect(a.name).toBe("deleteLanguagePack")})}),it("should return the correct APDU for languagePackageId 1",()=>{const e=a.getApdu();expect(e.getRawApdu()).toStrictEqual(d)}),it("should return the correct APDU for languagePackageId 0xFF",()=>{a=new s({languagePackageId:255});const e=a.getApdu();expect(e.getRawApdu()).toStrictEqual(p)}),it("should parse success response",()=>{const e=new o({statusCode:new Uint8Array([144,0]),data:new Uint8Array([])}),t=a.parseResponse(e);expect(t).toStrictEqual(u({data:void 0}))}),it("should parse error response",()=>{const e=new o({statusCode:new Uint8Array([110,1]),data:new Uint8Array([])}),t=a.parseResponse(e);expect(t.status).toBe(n.Error)}),it("should map 0x681A to DeleteLanguagePackCommandError",()=>{const e=new o({statusCode:new Uint8Array([104,26]),data:new Uint8Array([])}),t=a.parseResponse(e);if(expect(t.status).toBe(n.Error),t.status===n.Error){const{error:r}=t;expect(r).toBeInstanceOf(c),expect(r.errorCode).toBe("681a"),expect(r.message).toBe("Invalid LANG_ID value.")}})});
|
|
2
|
+
//# sourceMappingURL=DeleteLanguagePackCommand.test.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../src/api/command/os/DeleteLanguagePackCommand.test.ts"],
|
|
4
|
+
"sourcesContent": ["import {\n CommandResultFactory,\n CommandResultStatus,\n} from \"@api/command/model/CommandResult\";\nimport {\n DeleteLanguagePackCommand,\n DeleteLanguagePackCommandError,\n} from \"@api/command/os/DeleteLanguagePackCommand\";\nimport { ApduResponse } from \"@api/device-session/ApduResponse\";\n\nconst DELETE_LANGUAGE_PACK_APDU_ID_1 = new Uint8Array([\n 0xe0, 0x33, 0x01, 0x00, 0x00,\n]);\n\nconst DELETE_ALL_LANGUAGE_PACKS = new Uint8Array([\n 0xe0, 0x33, 0xff, 0x00, 0x00,\n]);\n\ndescribe(\"DeleteLanguagePackCommand\", () => {\n let command: DeleteLanguagePackCommand;\n\n beforeEach(() => {\n command = new DeleteLanguagePackCommand({ languagePackageId: 1 });\n });\n\n describe(\"name\", () => {\n it(\"should be 'deleteLanguagePack'\", () => {\n expect(command.name).toBe(\"deleteLanguagePack\");\n });\n });\n\n it(\"should return the correct APDU for languagePackageId 1\", () => {\n const apdu = command.getApdu();\n expect(apdu.getRawApdu()).toStrictEqual(DELETE_LANGUAGE_PACK_APDU_ID_1);\n });\n\n it(\"should return the correct APDU for languagePackageId 0xFF\", () => {\n command = new DeleteLanguagePackCommand({ languagePackageId: 0xff });\n const apdu = command.getApdu();\n expect(apdu.getRawApdu()).toStrictEqual(DELETE_ALL_LANGUAGE_PACKS);\n });\n\n it(\"should parse success response\", () => {\n const response: ApduResponse = new ApduResponse({\n statusCode: new Uint8Array([0x90, 0x00]),\n data: new Uint8Array([]),\n });\n const result = command.parseResponse(response);\n expect(result).toStrictEqual(\n CommandResultFactory({\n data: undefined,\n }),\n );\n });\n\n it(\"should parse error response\", () => {\n const response: ApduResponse = new ApduResponse({\n statusCode: new Uint8Array([0x6e, 0x01]),\n data: new Uint8Array([]),\n });\n const result = command.parseResponse(response);\n expect(result.status).toBe(CommandResultStatus.Error);\n });\n\n it(\"should map 0x681A to DeleteLanguagePackCommandError\", () => {\n const response: ApduResponse = new ApduResponse({\n statusCode: new Uint8Array([0x68, 0x1a]),\n data: new Uint8Array([]),\n });\n const result = command.parseResponse(response);\n expect(result.status).toBe(CommandResultStatus.Error);\n if (result.status === CommandResultStatus.Error) {\n const { error } = result;\n expect(error).toBeInstanceOf(DeleteLanguagePackCommandError);\n expect((error as DeleteLanguagePackCommandError).errorCode).toBe(\"681a\");\n expect((error as DeleteLanguagePackCommandError).message).toBe(\n \"Invalid LANG_ID value.\",\n );\n }\n });\n});\n"],
|
|
5
|
+
"mappings": "AAAA,OACE,wBAAAA,EACA,uBAAAC,MACK,mCACP,OACE,6BAAAC,EACA,kCAAAC,MACK,4CACP,OAAS,gBAAAC,MAAoB,mCAE7B,MAAMC,EAAiC,IAAI,WAAW,CACpD,IAAM,GAAM,EAAM,EAAM,CAC1B,CAAC,EAEKC,EAA4B,IAAI,WAAW,CAC/C,IAAM,GAAM,IAAM,EAAM,CAC1B,CAAC,EAED,SAAS,4BAA6B,IAAM,CAC1C,IAAIC,EAEJ,WAAW,IAAM,CACfA,EAAU,IAAIL,EAA0B,CAAE,kBAAmB,CAAE,CAAC,CAClE,CAAC,EAED,SAAS,OAAQ,IAAM,CACrB,GAAG,iCAAkC,IAAM,CACzC,OAAOK,EAAQ,IAAI,EAAE,KAAK,oBAAoB,CAChD,CAAC,CACH,CAAC,EAED,GAAG,yDAA0D,IAAM,CACjE,MAAMC,EAAOD,EAAQ,QAAQ,EAC7B,OAAOC,EAAK,WAAW,CAAC,EAAE,cAAcH,CAA8B,CACxE,CAAC,EAED,GAAG,4DAA6D,IAAM,CACpEE,EAAU,IAAIL,EAA0B,CAAE,kBAAmB,GAAK,CAAC,EACnE,MAAMM,EAAOD,EAAQ,QAAQ,EAC7B,OAAOC,EAAK,WAAW,CAAC,EAAE,cAAcF,CAAyB,CACnE,CAAC,EAED,GAAG,gCAAiC,IAAM,CACxC,MAAMG,EAAyB,IAAIL,EAAa,CAC9C,WAAY,IAAI,WAAW,CAAC,IAAM,CAAI,CAAC,EACvC,KAAM,IAAI,WAAW,CAAC,CAAC,CACzB,CAAC,EACKM,EAASH,EAAQ,cAAcE,CAAQ,EAC7C,OAAOC,CAAM,EAAE,cACbV,EAAqB,CACnB,KAAM,MACR,CAAC,CACH,CACF,CAAC,EAED,GAAG,8BAA+B,IAAM,CACtC,MAAMS,EAAyB,IAAIL,EAAa,CAC9C,WAAY,IAAI,WAAW,CAAC,IAAM,CAAI,CAAC,EACvC,KAAM,IAAI,WAAW,CAAC,CAAC,CACzB,CAAC,EACKM,EAASH,EAAQ,cAAcE,CAAQ,EAC7C,OAAOC,EAAO,MAAM,EAAE,KAAKT,EAAoB,KAAK,CACtD,CAAC,EAED,GAAG,sDAAuD,IAAM,CAC9D,MAAMQ,EAAyB,IAAIL,EAAa,CAC9C,WAAY,IAAI,WAAW,CAAC,IAAM,EAAI,CAAC,EACvC,KAAM,IAAI,WAAW,CAAC,CAAC,CACzB,CAAC,EACKM,EAASH,EAAQ,cAAcE,CAAQ,EAE7C,GADA,OAAOC,EAAO,MAAM,EAAE,KAAKT,EAAoB,KAAK,EAChDS,EAAO,SAAWT,EAAoB,MAAO,CAC/C,KAAM,CAAE,MAAAU,CAAM,EAAID,EAClB,OAAOC,CAAK,EAAE,eAAeR,CAA8B,EAC3D,OAAQQ,EAAyC,SAAS,EAAE,KAAK,MAAM,EACvE,OAAQA,EAAyC,OAAO,EAAE,KACxD,wBACF,CACF,CACF,CAAC,CACH,CAAC",
|
|
6
|
+
"names": ["CommandResultFactory", "CommandResultStatus", "DeleteLanguagePackCommand", "DeleteLanguagePackCommandError", "ApduResponse", "DELETE_LANGUAGE_PACK_APDU_ID_1", "DELETE_ALL_LANGUAGE_PACKS", "command", "apdu", "response", "result", "error"]
|
|
7
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/api/command/os/ListLanguagePackCommand.ts"],
|
|
4
|
-
"sourcesContent": ["import { type Apdu } from \"@api/apdu/model/Apdu\";\nimport { ApduBuilder, type ApduBuilderArgs } from \"@api/apdu/utils/ApduBuilder\";\nimport { ApduParser } from \"@api/apdu/utils/ApduParser\";\nimport { type Command } from \"@api/command/Command\";\nimport { InvalidStatusWordError } from \"@api/command/Errors\";\nimport {\n type CommandResult,\n CommandResultFactory,\n} from \"@api/command/model/CommandResult\";\nimport {\n type CommandErrors,\n isCommandErrorCode,\n} from \"@api/command/utils/CommandErrors\";\nimport { CommandUtils } from \"@api/command/utils/CommandUtils\";\nimport { GlobalCommandErrorHandler } from \"@api/command/utils/GlobalCommandError\";\nimport { type ApduResponse } from \"@api/device-session/ApduResponse\";\nimport { type CommandErrorArgs, DeviceExchangeError } from \"@api/Error\";\nimport { bufferToHexaString } from \"@api/utils/HexaString\";\n\nexport type ListLanguagePackCommandArgs = {\n readonly firstChunk: boolean;\n};\n\nexport type ListLanguagePackResponse =\n | {\n readonly id: number;\n readonly size: number;\n }\n | undefined;\n\nexport type ListLanguagePackErrorCodes = \"662d\";\n\nconst LANGUAGE_PACK_ERRORS: CommandErrors<ListLanguagePackErrorCodes> = {\n \"662d\": {\n message:\n \"Invalid LIST_ARG, first command must be sent with P1_LIST_LANGUAGE_PACKS_FIRST.\",\n },\n};\n\nexport type ListLanguagePackCommandResult = CommandResult<\n ListLanguagePackResponse,\n ListLanguagePackErrorCodes\n>;\n\nexport class ListLanguagePackCommandError extends DeviceExchangeError<ListLanguagePackErrorCodes> {\n constructor({\n message,\n errorCode,\n }: CommandErrorArgs<ListLanguagePackErrorCodes>) {\n super({ message, errorCode, tag: \"ListLanguagePackCommandError\" });\n }\n}\n\nexport class ListLanguagePackCommand\n implements\n Command<\n ListLanguagePackResponse,\n ListLanguagePackCommandArgs,\n ListLanguagePackErrorCodes\n >\n{\n readonly name = \"listLanguagePack\";\n\n constructor(private args: ListLanguagePackCommandArgs) {}\n\n getApdu(): Apdu {\n const apduArgs: ApduBuilderArgs = {\n cla: 0xe0,\n ins: 0x34,\n p1: this.args.firstChunk ? 0x00 : 0x01,\n p2: 0x00,\n };\n return new ApduBuilder(apduArgs).build();\n }\n\n parseResponse(apduResponse: ApduResponse): ListLanguagePackCommandResult {\n const parser = new ApduParser(apduResponse);\n\n if (!CommandUtils.isSuccessResponse(apduResponse)) {\n const errorCode = parser.encodeToHexaString(apduResponse.statusCode);\n if (isCommandErrorCode(errorCode, LANGUAGE_PACK_ERRORS)) {\n return CommandResultFactory({\n error: new ListLanguagePackCommandError({\n ...LANGUAGE_PACK_ERRORS[errorCode],\n errorCode,\n }),\n });\n }\n return CommandResultFactory({\n error: GlobalCommandErrorHandler.handle(apduResponse),\n });\n }\n\n const tlvVersion = parser.extract8BitUInt();\n if (tlvVersion === undefined) {\n // No more language package\n return CommandResultFactory({\n data: undefined,\n });\n }\n\n parser.extract8BitUInt(); // total length\n const idBuffer = parser.extractFieldLVEncoded();\n if (idBuffer === undefined) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\"Failed to get language pack id\"),\n });\n }\n\n const sizeBuffer = parser.extractFieldLVEncoded();\n if (sizeBuffer === undefined) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\"Failed to get language pack size\"),\n });\n }\n\n const id = parseInt(bufferToHexaString(idBuffer), 16);\n const size = parseInt(bufferToHexaString(sizeBuffer), 16);\n return CommandResultFactory({\n data: { id, size },\n });\n }\n}\n"],
|
|
5
|
-
"mappings": "AACA,OAAS,eAAAA,MAAyC,8BAClD,OAAS,cAAAC,MAAkB,6BAE3B,OAAS,0BAAAC,MAA8B,sBACvC,OAEE,wBAAAC,MACK,mCACP,OAEE,sBAAAC,MACK,mCACP,OAAS,gBAAAC,MAAoB,kCAC7B,OAAS,6BAAAC,MAAiC,wCAE1C,OAAgC,uBAAAC,MAA2B,aAC3D,OAAS,sBAAAC,MAA0B,wBAenC,MAAMC,EAAkE,CACtE,OAAQ,CACN,QACE,iFACJ,CACF,EAOO,MAAMC,UAAqCH,CAAgD,CAChG,YAAY,CACV,QAAAI,EACA,UAAAC,CACF,EAAiD,CAC/C,MAAM,CAAE,QAAAD,EAAS,UAAAC,EAAW,IAAK,8BAA+B,CAAC,CACnE,CACF,CAEO,MAAMC,CAOb,CAGE,
|
|
4
|
+
"sourcesContent": ["import { type Apdu } from \"@api/apdu/model/Apdu\";\nimport { ApduBuilder, type ApduBuilderArgs } from \"@api/apdu/utils/ApduBuilder\";\nimport { ApduParser } from \"@api/apdu/utils/ApduParser\";\nimport { type Command } from \"@api/command/Command\";\nimport { InvalidStatusWordError } from \"@api/command/Errors\";\nimport {\n type CommandResult,\n CommandResultFactory,\n} from \"@api/command/model/CommandResult\";\nimport {\n type CommandErrors,\n isCommandErrorCode,\n} from \"@api/command/utils/CommandErrors\";\nimport { CommandUtils } from \"@api/command/utils/CommandUtils\";\nimport { GlobalCommandErrorHandler } from \"@api/command/utils/GlobalCommandError\";\nimport { type ApduResponse } from \"@api/device-session/ApduResponse\";\nimport { type CommandErrorArgs, DeviceExchangeError } from \"@api/Error\";\nimport { bufferToHexaString } from \"@api/utils/HexaString\";\n\nexport type ListLanguagePackCommandArgs = {\n readonly firstChunk: boolean;\n};\n\nexport type ListLanguagePackResponse =\n | {\n readonly id: number;\n readonly size: number;\n }\n | undefined;\n\nexport type ListLanguagePackErrorCodes = \"662d\";\n\nconst LANGUAGE_PACK_ERRORS: CommandErrors<ListLanguagePackErrorCodes> = {\n \"662d\": {\n message:\n \"Invalid LIST_ARG, first command must be sent with P1_LIST_LANGUAGE_PACKS_FIRST.\",\n },\n};\n\nexport type ListLanguagePackCommandResult = CommandResult<\n ListLanguagePackResponse,\n ListLanguagePackErrorCodes\n>;\n\nexport class ListLanguagePackCommandError extends DeviceExchangeError<ListLanguagePackErrorCodes> {\n constructor({\n message,\n errorCode,\n }: CommandErrorArgs<ListLanguagePackErrorCodes>) {\n super({ message, errorCode, tag: \"ListLanguagePackCommandError\" });\n }\n}\n\nexport class ListLanguagePackCommand\n implements\n Command<\n ListLanguagePackResponse,\n ListLanguagePackCommandArgs,\n ListLanguagePackErrorCodes\n >\n{\n readonly name = \"listLanguagePack\";\n\n constructor(private readonly args: ListLanguagePackCommandArgs) {}\n\n getApdu(): Apdu {\n const apduArgs: ApduBuilderArgs = {\n cla: 0xe0,\n ins: 0x34,\n p1: this.args.firstChunk ? 0x00 : 0x01,\n p2: 0x00,\n };\n return new ApduBuilder(apduArgs).build();\n }\n\n parseResponse(apduResponse: ApduResponse): ListLanguagePackCommandResult {\n const parser = new ApduParser(apduResponse);\n\n if (!CommandUtils.isSuccessResponse(apduResponse)) {\n const errorCode = parser.encodeToHexaString(apduResponse.statusCode);\n if (isCommandErrorCode(errorCode, LANGUAGE_PACK_ERRORS)) {\n return CommandResultFactory({\n error: new ListLanguagePackCommandError({\n ...LANGUAGE_PACK_ERRORS[errorCode],\n errorCode,\n }),\n });\n }\n return CommandResultFactory({\n error: GlobalCommandErrorHandler.handle(apduResponse),\n });\n }\n\n const tlvVersion = parser.extract8BitUInt();\n if (tlvVersion === undefined) {\n // No more language package\n return CommandResultFactory({\n data: undefined,\n });\n }\n\n parser.extract8BitUInt(); // total length\n const idBuffer = parser.extractFieldLVEncoded();\n if (idBuffer === undefined) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\"Failed to get language pack id\"),\n });\n }\n\n const sizeBuffer = parser.extractFieldLVEncoded();\n if (sizeBuffer === undefined) {\n return CommandResultFactory({\n error: new InvalidStatusWordError(\"Failed to get language pack size\"),\n });\n }\n\n const id = parseInt(bufferToHexaString(idBuffer), 16);\n const size = parseInt(bufferToHexaString(sizeBuffer), 16);\n return CommandResultFactory({\n data: { id, size },\n });\n }\n}\n"],
|
|
5
|
+
"mappings": "AACA,OAAS,eAAAA,MAAyC,8BAClD,OAAS,cAAAC,MAAkB,6BAE3B,OAAS,0BAAAC,MAA8B,sBACvC,OAEE,wBAAAC,MACK,mCACP,OAEE,sBAAAC,MACK,mCACP,OAAS,gBAAAC,MAAoB,kCAC7B,OAAS,6BAAAC,MAAiC,wCAE1C,OAAgC,uBAAAC,MAA2B,aAC3D,OAAS,sBAAAC,MAA0B,wBAenC,MAAMC,EAAkE,CACtE,OAAQ,CACN,QACE,iFACJ,CACF,EAOO,MAAMC,UAAqCH,CAAgD,CAChG,YAAY,CACV,QAAAI,EACA,UAAAC,CACF,EAAiD,CAC/C,MAAM,CAAE,QAAAD,EAAS,UAAAC,EAAW,IAAK,8BAA+B,CAAC,CACnE,CACF,CAEO,MAAMC,CAOb,CAGE,YAA6BC,EAAmC,CAAnC,UAAAA,CAAoC,CAFxD,KAAO,mBAIhB,SAAgB,CACd,MAAMC,EAA4B,CAChC,IAAK,IACL,IAAK,GACL,GAAI,KAAK,KAAK,WAAa,EAAO,EAClC,GAAI,CACN,EACA,OAAO,IAAIf,EAAYe,CAAQ,EAAE,MAAM,CACzC,CAEA,cAAcC,EAA2D,CACvE,MAAMC,EAAS,IAAIhB,EAAWe,CAAY,EAE1C,GAAI,CAACX,EAAa,kBAAkBW,CAAY,EAAG,CACjD,MAAMJ,EAAYK,EAAO,mBAAmBD,EAAa,UAAU,EACnE,OAAIZ,EAAmBQ,EAAWH,CAAoB,EAC7CN,EAAqB,CAC1B,MAAO,IAAIO,EAA6B,CACtC,GAAGD,EAAqBG,CAAS,EACjC,UAAAA,CACF,CAAC,CACH,CAAC,EAEIT,EAAqB,CAC1B,MAAOG,EAA0B,OAAOU,CAAY,CACtD,CAAC,CACH,CAGA,GADmBC,EAAO,gBAAgB,IACvB,OAEjB,OAAOd,EAAqB,CAC1B,KAAM,MACR,CAAC,EAGHc,EAAO,gBAAgB,EACvB,MAAMC,EAAWD,EAAO,sBAAsB,EAC9C,GAAIC,IAAa,OACf,OAAOf,EAAqB,CAC1B,MAAO,IAAID,EAAuB,gCAAgC,CACpE,CAAC,EAGH,MAAMiB,EAAaF,EAAO,sBAAsB,EAChD,GAAIE,IAAe,OACjB,OAAOhB,EAAqB,CAC1B,MAAO,IAAID,EAAuB,kCAAkC,CACtE,CAAC,EAGH,MAAMkB,EAAK,SAASZ,EAAmBU,CAAQ,EAAG,EAAE,EAC9CG,EAAO,SAASb,EAAmBW,CAAU,EAAG,EAAE,EACxD,OAAOhB,EAAqB,CAC1B,KAAM,CAAE,GAAAiB,EAAI,KAAAC,CAAK,CACnB,CAAC,CACH,CACF",
|
|
6
6
|
"names": ["ApduBuilder", "ApduParser", "InvalidStatusWordError", "CommandResultFactory", "isCommandErrorCode", "CommandUtils", "GlobalCommandErrorHandler", "DeviceExchangeError", "bufferToHexaString", "LANGUAGE_PACK_ERRORS", "ListLanguagePackCommandError", "message", "errorCode", "ListLanguagePackCommand", "args", "apduArgs", "apduResponse", "parser", "idBuffer", "sizeBuffer", "id", "size"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
class n{_tag="DeviceNotOnboardedError";originalError;constructor(r){this.originalError=new Error(r??"Device not onboarded.")}}class e{_tag="DeviceLockedError";originalError;constructor(r){this.originalError=new Error(r??"Device locked.")}}class
|
|
1
|
+
class n{_tag="DeviceNotOnboardedError";originalError;constructor(r){this.originalError=new Error(r??"Device not onboarded.")}}class e{_tag="DeviceLockedError";originalError;constructor(r){this.originalError=new Error(r??"Device locked.")}}class a{_tag="UnsupportedFirmwareDAError";originalError;constructor(r){this.originalError=new Error(r??"Unknown error.")}}class i{_tag="RefusedByUserDAError";originalError;constructor(r){this.originalError=new Error(r??"Unknown error.")}}class t{_tag="AppAlreadyInstalledDAError";originalError;constructor(r){this.originalError=new Error(r??"Unknown error.")}}class s{_tag="OutOfMemoryDAError";originalError;constructor(r){this.originalError=new Error(r??"Unknown error.")}}class l{_tag="UnknownDAError";originalError;constructor(r){this.originalError=new Error(r??"Unknown error.")}}class E{_tag="UnsupportedApplicationDAError";originalError;constructor(r){this.originalError=new Error(r??"Application currently not supported.")}}class g{_tag="MissingLanguagePackagesForOSDAError";originalError;constructor(r){this.originalError=new Error(r??"Missing Language Packages for OS DAError.")}}class c{_tag="MissingLanguagePackageDAError";originalError;constructor(r){this.originalError=new Error(r??"Missing Language Package DAError.")}}class p{_tag="DeleteLanguagePackDAError";originalError;constructor(r){this.originalError=new Error(r??"Delete language pack failed.")}}class d{_tag="NetworkDAError";originalError;constructor(r){this.originalError=new Error(r??"Network error.")}}export{t as AppAlreadyInstalledDAError,p as DeleteLanguagePackDAError,e as DeviceLockedError,n as DeviceNotOnboardedError,c as MissingLanguagePackageDAError,g as MissingLanguagePackagesForOSDAError,d as NetworkDAError,s as OutOfMemoryDAError,i as RefusedByUserDAError,l as UnknownDAError,E as UnsupportedApplicationDAError,a as UnsupportedFirmwareDAError};
|
|
2
2
|
//# sourceMappingURL=Errors.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../src/api/device-action/os/Errors.ts"],
|
|
4
|
-
"sourcesContent": ["import { type DmkError } from \"@api/Error\";\n\nexport class DeviceNotOnboardedError implements DmkError {\n readonly _tag = \"DeviceNotOnboardedError\";\n readonly originalError?: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(message ?? \"Device not onboarded.\");\n }\n}\n\nexport class DeviceLockedError implements DmkError {\n readonly _tag = \"DeviceLockedError\";\n readonly originalError?: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(message ?? \"Device locked.\");\n }\n}\n\nexport class UnsupportedFirmwareDAError implements DmkError {\n readonly _tag = \"UnsupportedFirmwareDAError\";\n readonly originalError?: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(message ?? \"Unknown error.\");\n }\n}\n\nexport class RefusedByUserDAError implements DmkError {\n readonly _tag = \"RefusedByUserDAError\";\n readonly originalError?: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(message ?? \"Unknown error.\");\n }\n}\n\nexport class AppAlreadyInstalledDAError implements DmkError {\n readonly _tag = \"AppAlreadyInstalledDAError\";\n readonly originalError?: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(message ?? \"Unknown error.\");\n }\n}\n\nexport class OutOfMemoryDAError implements DmkError {\n readonly _tag = \"OutOfMemoryDAError\";\n readonly originalError?: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(message ?? \"Unknown error.\");\n }\n}\n\nexport class UnknownDAError implements DmkError {\n readonly _tag = \"UnknownDAError\";\n readonly originalError?: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(message ?? \"Unknown error.\");\n }\n}\n\nexport class UnsupportedApplicationDAError implements DmkError {\n readonly _tag = \"UnsupportedApplicationDAError\";\n readonly originalError?: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(\n message ?? \"Application currently not supported.\",\n );\n }\n}\n"],
|
|
5
|
-
"mappings": "AAEO,MAAMA,CAA4C,CAC9C,KAAO,0BACP,cAET,YAAYC,EAAkB,CAC5B,KAAK,cAAgB,IAAI,MAAMA,GAAW,uBAAuB,CACnE,CACF,CAEO,MAAMC,CAAsC,CACxC,KAAO,oBACP,cAET,YAAYD,EAAkB,CAC5B,KAAK,cAAgB,IAAI,MAAMA,GAAW,gBAAgB,CAC5D,CACF,CAEO,MAAME,CAA+C,CACjD,KAAO,6BACP,cAET,YAAYF,EAAkB,CAC5B,KAAK,cAAgB,IAAI,MAAMA,GAAW,gBAAgB,CAC5D,CACF,CAEO,MAAMG,CAAyC,CAC3C,KAAO,uBACP,cAET,YAAYH,EAAkB,CAC5B,KAAK,cAAgB,IAAI,MAAMA,GAAW,gBAAgB,CAC5D,CACF,CAEO,MAAMI,CAA+C,CACjD,KAAO,6BACP,cAET,YAAYJ,EAAkB,CAC5B,KAAK,cAAgB,IAAI,MAAMA,GAAW,gBAAgB,CAC5D,CACF,CAEO,MAAMK,CAAuC,CACzC,KAAO,qBACP,cAET,YAAYL,EAAkB,CAC5B,KAAK,cAAgB,IAAI,MAAMA,GAAW,gBAAgB,CAC5D,CACF,CAEO,MAAMM,CAAmC,CACrC,KAAO,iBACP,cAET,YAAYN,EAAkB,CAC5B,KAAK,cAAgB,IAAI,MAAMA,GAAW,gBAAgB,CAC5D,CACF,CAEO,MAAMO,CAAkD,CACpD,KAAO,gCACP,cAET,YAAYP,EAAkB,CAC5B,KAAK,cAAgB,IAAI,MACvBA,GAAW,sCACb,CACF,CACF",
|
|
6
|
-
"names": ["DeviceNotOnboardedError", "message", "DeviceLockedError", "UnsupportedFirmwareDAError", "RefusedByUserDAError", "AppAlreadyInstalledDAError", "OutOfMemoryDAError", "UnknownDAError", "UnsupportedApplicationDAError"]
|
|
4
|
+
"sourcesContent": ["import { type DmkError } from \"@api/Error\";\n\nexport class DeviceNotOnboardedError implements DmkError {\n readonly _tag = \"DeviceNotOnboardedError\";\n readonly originalError?: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(message ?? \"Device not onboarded.\");\n }\n}\n\nexport class DeviceLockedError implements DmkError {\n readonly _tag = \"DeviceLockedError\";\n readonly originalError?: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(message ?? \"Device locked.\");\n }\n}\n\nexport class UnsupportedFirmwareDAError implements DmkError {\n readonly _tag = \"UnsupportedFirmwareDAError\";\n readonly originalError?: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(message ?? \"Unknown error.\");\n }\n}\n\nexport class RefusedByUserDAError implements DmkError {\n readonly _tag = \"RefusedByUserDAError\";\n readonly originalError?: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(message ?? \"Unknown error.\");\n }\n}\n\nexport class AppAlreadyInstalledDAError implements DmkError {\n readonly _tag = \"AppAlreadyInstalledDAError\";\n readonly originalError?: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(message ?? \"Unknown error.\");\n }\n}\n\nexport class OutOfMemoryDAError implements DmkError {\n readonly _tag = \"OutOfMemoryDAError\";\n readonly originalError?: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(message ?? \"Unknown error.\");\n }\n}\n\nexport class UnknownDAError implements DmkError {\n readonly _tag = \"UnknownDAError\";\n readonly originalError?: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(message ?? \"Unknown error.\");\n }\n}\n\nexport class UnsupportedApplicationDAError implements DmkError {\n readonly _tag = \"UnsupportedApplicationDAError\";\n readonly originalError?: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(\n message ?? \"Application currently not supported.\",\n );\n }\n}\n\nexport class MissingLanguagePackagesForOSDAError implements DmkError {\n readonly _tag = \"MissingLanguagePackagesForOSDAError\";\n readonly originalError?: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(\n message ?? \"Missing Language Packages for OS DAError.\",\n );\n }\n}\n\nexport class MissingLanguagePackageDAError implements DmkError {\n readonly _tag = \"MissingLanguagePackageDAError\";\n readonly originalError?: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(\n message ?? \"Missing Language Package DAError.\",\n );\n }\n}\n\nexport class DeleteLanguagePackDAError implements DmkError {\n readonly _tag = \"DeleteLanguagePackDAError\";\n readonly originalError?: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(message ?? \"Delete language pack failed.\");\n }\n}\n\nexport class NetworkDAError implements DmkError {\n readonly _tag = \"NetworkDAError\";\n readonly originalError?: Error;\n\n constructor(message?: string) {\n this.originalError = new Error(message ?? \"Network error.\");\n }\n}\n"],
|
|
5
|
+
"mappings": "AAEO,MAAMA,CAA4C,CAC9C,KAAO,0BACP,cAET,YAAYC,EAAkB,CAC5B,KAAK,cAAgB,IAAI,MAAMA,GAAW,uBAAuB,CACnE,CACF,CAEO,MAAMC,CAAsC,CACxC,KAAO,oBACP,cAET,YAAYD,EAAkB,CAC5B,KAAK,cAAgB,IAAI,MAAMA,GAAW,gBAAgB,CAC5D,CACF,CAEO,MAAME,CAA+C,CACjD,KAAO,6BACP,cAET,YAAYF,EAAkB,CAC5B,KAAK,cAAgB,IAAI,MAAMA,GAAW,gBAAgB,CAC5D,CACF,CAEO,MAAMG,CAAyC,CAC3C,KAAO,uBACP,cAET,YAAYH,EAAkB,CAC5B,KAAK,cAAgB,IAAI,MAAMA,GAAW,gBAAgB,CAC5D,CACF,CAEO,MAAMI,CAA+C,CACjD,KAAO,6BACP,cAET,YAAYJ,EAAkB,CAC5B,KAAK,cAAgB,IAAI,MAAMA,GAAW,gBAAgB,CAC5D,CACF,CAEO,MAAMK,CAAuC,CACzC,KAAO,qBACP,cAET,YAAYL,EAAkB,CAC5B,KAAK,cAAgB,IAAI,MAAMA,GAAW,gBAAgB,CAC5D,CACF,CAEO,MAAMM,CAAmC,CACrC,KAAO,iBACP,cAET,YAAYN,EAAkB,CAC5B,KAAK,cAAgB,IAAI,MAAMA,GAAW,gBAAgB,CAC5D,CACF,CAEO,MAAMO,CAAkD,CACpD,KAAO,gCACP,cAET,YAAYP,EAAkB,CAC5B,KAAK,cAAgB,IAAI,MACvBA,GAAW,sCACb,CACF,CACF,CAEO,MAAMQ,CAAwD,CAC1D,KAAO,sCACP,cAET,YAAYR,EAAkB,CAC5B,KAAK,cAAgB,IAAI,MACvBA,GAAW,2CACb,CACF,CACF,CAEO,MAAMS,CAAkD,CACpD,KAAO,gCACP,cAET,YAAYT,EAAkB,CAC5B,KAAK,cAAgB,IAAI,MACvBA,GAAW,mCACb,CACF,CACF,CAEO,MAAMU,CAA8C,CAChD,KAAO,4BACP,cAET,YAAYV,EAAkB,CAC5B,KAAK,cAAgB,IAAI,MAAMA,GAAW,8BAA8B,CAC1E,CACF,CAEO,MAAMW,CAAmC,CACrC,KAAO,iBACP,cAET,YAAYX,EAAkB,CAC5B,KAAK,cAAgB,IAAI,MAAMA,GAAW,gBAAgB,CAC5D,CACF",
|
|
6
|
+
"names": ["DeviceNotOnboardedError", "message", "DeviceLockedError", "UnsupportedFirmwareDAError", "RefusedByUserDAError", "AppAlreadyInstalledDAError", "OutOfMemoryDAError", "UnknownDAError", "UnsupportedApplicationDAError", "MissingLanguagePackagesForOSDAError", "MissingLanguagePackageDAError", "DeleteLanguagePackDAError", "NetworkDAError"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{Left as m,Right as P}from"purify-ts";import{assign as n,fromObservable as E,fromPromise as S,setup as h}from"xstate";import{isSuccessCommandResult as A}from"../../../command/model/CommandResult";import{DeleteLanguagePackCommand as f}from"../../../command/os/DeleteLanguagePackCommand";import{UserInteractionRequired as y}from"../../../device-action/model/UserInteractionRequired";import{DEFAULT_UNLOCK_TIMEOUT_MS as v}from"../../../device-action/os/Const";import{DeleteLanguagePackDAError as M,MissingLanguagePackageDAError as C,MissingLanguagePackagesForOSDAError as x}from"../../../device-action/os/Errors";import{GetDeviceMetadataDeviceAction as V}from"../../../device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction";import{getDeviceMetadataDAStateStep as T}from"../../../device-action/os/GetDeviceMetadata/types";import{InstallLanguagePackageTask as G}from"../../../device-action/task/InstallLanguagePackageTask";import{XStateDeviceAction as _}from"../../../device-action/xstate-utils/XStateDeviceAction";import{installLanguagePackageDAStateStep as U}from"./types";class J extends _{makeStateMachine(r){const{deleteCurrentLanguagePack:l,installLanguagePack:p}=this.extractDependencies(r),c=this.input.unlockTimeout??v,u=this.input.language,{None:i}=y,{DEVICE_READY:d,GET_DEVICE_METADATA:k,DELETE_CURRENT_LANGUAGE_PACK:D,INSTALL_LANGUAGE_PACK:L}=U,I=new V({input:{unlockTimeout:c}}).makeStateMachine(r);return h({types:{input:{unlockTimeout:c,language:u},context:{},output:{}},actors:{getDeviceMetadata:I,deleteCurrentLanguagePack:S(l),installLanguagePack:E(({input:e})=>p(e.apduInstallUrl))},guards:{isDefaultLanguage:({context:e})=>e.input.language==="english",hasError:({context:e})=>e._internalState.error!==null,shouldSkipInstall:({context:e})=>e._internalState.shouldSkipInstall},actions:{assignErrorFromEvent:n({_internalState:e=>({...e.context._internalState,error:e.event.error,shouldSkipInstall:!1})}),assignGetDeviceMetadataSnapshot:n({intermediateValue:e=>{const a=e.event.snapshot.context.intermediateValue;return a.step===T.GET_DEVICE_METADATA?{...a,step:k}:a}}),assignGetDeviceMetadataDone:n({_internalState:e=>e.event.output.caseOf({Right:a=>{const g=a.catalog.languagePackages;if(!g)return{...e.context._internalState,error:new x(`Language packages not found for OS ${a?.firmwareVersion?.os}.`)};const s=g.find(o=>o.language===u);return s?(a.installedLanguages??[]).map(({id:o})=>o).includes(s.languagePackageId)?{...e.context._internalState,shouldSkipInstall:!0}:{...e.context._internalState,languagePackage:s}:{...e.context._internalState,error:new C(`Language package not found for ${u}.`)}},Left:a=>({...e.context._internalState,error:a})})}),assignDeleteCurrentLanguagePackSnapshot:n({intermediateValue:e=>({requiredUserInteraction:i,step:D})}),assignDeleteCurrentLanguagePackDone:n({_internalState:e=>{const t=e.event.output;return A(t)?e.context._internalState:{...e.context._internalState,error:new M("message"in t.error?t.error.message:"Delete language pack failed.")}}}),assignInstallLanguagePackSnapshot:n({intermediateValue:e=>{const a=e.event.snapshot.context,g=e.context,s="progress"in g.intermediateValue?g.intermediateValue.progress??0:0;return{requiredUserInteraction:i,step:L,progress:a?.type==="progress"?a.progress:s}}})}}).createMachine({id:"InstallLanguagePackageDeviceAction",initial:"CheckRequestedLanguage",context:e=>({input:{unlockTimeout:e.input.unlockTimeout,language:e.input.language},intermediateValue:{requiredUserInteraction:i,step:d,progress:0},_internalState:{error:null,languagePackage:null,shouldSkipInstall:!1}}),states:{CheckRequestedLanguage:{always:[{guard:"isDefaultLanguage",target:"DeleteCurrentLanguagePack"},{target:"GetDeviceMetadata"}]},GetDeviceMetadata:{invoke:{id:"GetDeviceMetadata",src:"getDeviceMetadata",input:({context:e})=>({unlockTimeout:e.input.unlockTimeout,forceUpdate:!0,useSecureChannel:!0}),onSnapshot:{actions:"assignGetDeviceMetadataSnapshot"},onDone:{target:"LanguagePackCheck",actions:"assignGetDeviceMetadataDone"},onError:{target:"Error",actions:"assignErrorFromEvent"}}},LanguagePackCheck:{always:[{guard:"hasError",target:"Error"},{guard:"shouldSkipInstall",target:"Success"},{target:"DeleteCurrentLanguagePack"}]},DeleteCurrentLanguagePack:{invoke:{id:"DeleteCurrentLanguagePack",src:"deleteCurrentLanguagePack",onSnapshot:{actions:"assignDeleteCurrentLanguagePackSnapshot"},onDone:{target:"DeleteCurrentLanguagePackResultCheck",actions:"assignDeleteCurrentLanguagePackDone"},onError:{target:"Error",actions:"assignErrorFromEvent"}}},DeleteCurrentLanguagePackResultCheck:{always:[{guard:"hasError",target:"Error"},{guard:"isDefaultLanguage",target:"Success"},{target:"InstallLanguagePack"}]},InstallLanguagePack:{invoke:{id:"InstallLanguagePack",src:"installLanguagePack",input:({context:e})=>({apduInstallUrl:e._internalState.languagePackage.apduInstallUrl}),onSnapshot:{actions:"assignInstallLanguagePackSnapshot"},onDone:{target:"Success"},onError:{target:"Error",actions:"assignErrorFromEvent"}}},Success:{type:"final"},Error:{type:"final"}},output:e=>e.context._internalState.error!==null?m(e.context._internalState.error):P(void 0)})}extractDependencies(r){return{deleteCurrentLanguagePack:()=>r.sendCommand(new f({languagePackageId:255})),installLanguagePack:l=>new G(r,{apduInstallUrl:l}).run()}}}export{J as InstallLanguagePackageDeviceAction};
|
|
2
|
+
//# sourceMappingURL=InstallLanguagePackageDeviceAction.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../../src/api/device-action/os/InstallLanguagePackage/InstallLanguagePackageDeviceAction.ts"],
|
|
4
|
+
"sourcesContent": ["import { type Either, Left, Right } from \"purify-ts\";\nimport { type Observable } from \"rxjs\";\nimport { assign, fromObservable, fromPromise, setup } from \"xstate\";\n\nimport { isSuccessCommandResult } from \"@api/command/model/CommandResult\";\nimport {\n DeleteLanguagePackCommand,\n type DeleteLanguagePackCommandResult,\n} from \"@api/command/os/DeleteLanguagePackCommand\";\nimport { type InternalApi } from \"@api/device-action/DeviceAction\";\nimport { UserInteractionRequired } from \"@api/device-action/model/UserInteractionRequired\";\nimport { DEFAULT_UNLOCK_TIMEOUT_MS } from \"@api/device-action/os/Const\";\nimport {\n DeleteLanguagePackDAError,\n MissingLanguagePackageDAError,\n MissingLanguagePackagesForOSDAError,\n} from \"@api/device-action/os/Errors\";\nimport { GetDeviceMetadataDeviceAction } from \"@api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction\";\nimport {\n type GetDeviceMetadataDAError,\n type GetDeviceMetadataDAIntermediateValue,\n type GetDeviceMetadataDAOutput,\n getDeviceMetadataDAStateStep,\n} from \"@api/device-action/os/GetDeviceMetadata/types\";\nimport {\n type InstallLanguagePackageEvent,\n InstallLanguagePackageTask,\n} from \"@api/device-action/task/InstallLanguagePackageTask\";\nimport { type StateMachineTypes } from \"@api/device-action/xstate-utils/StateMachineTypes\";\nimport {\n type DeviceActionStateMachine,\n XStateDeviceAction,\n} from \"@api/device-action/xstate-utils/XStateDeviceAction\";\nimport { type LanguagePackage } from \"@internal/manager-api/model/Language\";\n\nimport {\n type InstallLanguagePackageDAError,\n type InstallLanguagePackageDAInput,\n type InstallLanguagePackageDAIntermediateValue,\n type InstallLanguagePackageDAOutput,\n installLanguagePackageDAStateStep,\n} from \"./types\";\n\ntype InstallLanguagePackageMachineInternalState = {\n readonly error: InstallLanguagePackageDAError | null;\n readonly languagePackage: LanguagePackage | null;\n readonly shouldSkipInstall: boolean;\n};\n\nexport type MachineDependencies = {\n readonly deleteCurrentLanguagePack: () => Promise<DeleteLanguagePackCommandResult>;\n readonly installLanguagePack: (\n apduInstallUrl: string,\n ) => Observable<InstallLanguagePackageEvent>;\n};\n\nexport type ExtractMachineDependencies = (\n internalApi: InternalApi,\n) => MachineDependencies;\n\nexport class InstallLanguagePackageDeviceAction extends XStateDeviceAction<\n InstallLanguagePackageDAOutput,\n InstallLanguagePackageDAInput,\n InstallLanguagePackageDAError,\n InstallLanguagePackageDAIntermediateValue,\n InstallLanguagePackageMachineInternalState\n> {\n makeStateMachine(\n internalApi: InternalApi,\n ): DeviceActionStateMachine<\n InstallLanguagePackageDAOutput,\n InstallLanguagePackageDAInput,\n InstallLanguagePackageDAError,\n InstallLanguagePackageDAIntermediateValue,\n InstallLanguagePackageMachineInternalState\n > {\n type types = StateMachineTypes<\n InstallLanguagePackageDAOutput,\n InstallLanguagePackageDAInput,\n InstallLanguagePackageDAError,\n InstallLanguagePackageDAIntermediateValue,\n InstallLanguagePackageMachineInternalState\n >;\n\n const { deleteCurrentLanguagePack, installLanguagePack } =\n this.extractDependencies(internalApi);\n\n const unlockTimeout = this.input.unlockTimeout ?? DEFAULT_UNLOCK_TIMEOUT_MS;\n const language = this.input.language;\n\n const { None } = UserInteractionRequired;\n const {\n DEVICE_READY,\n GET_DEVICE_METADATA,\n DELETE_CURRENT_LANGUAGE_PACK,\n INSTALL_LANGUAGE_PACK,\n } = installLanguagePackageDAStateStep;\n\n const getDeviceMetadataMachine = new GetDeviceMetadataDeviceAction({\n input: {\n unlockTimeout,\n },\n }).makeStateMachine(internalApi);\n\n return setup({\n types: {\n input: {\n unlockTimeout,\n language,\n } as types[\"input\"],\n context: {} as types[\"context\"],\n output: {} as types[\"output\"],\n },\n actors: {\n getDeviceMetadata: getDeviceMetadataMachine,\n deleteCurrentLanguagePack: fromPromise(deleteCurrentLanguagePack),\n installLanguagePack: fromObservable(\n ({ input }: { input: { apduInstallUrl: string } }) =>\n installLanguagePack(input.apduInstallUrl),\n ),\n },\n guards: {\n // The default language package (English) cannot be installed as a language pack.\n // If the requested language is English, we still delete all installed packs and only skip the install step.\n isDefaultLanguage: ({ context }) =>\n context.input.language === \"english\",\n hasError: ({ context }: { context: types[\"context\"] }) =>\n context._internalState.error !== null,\n shouldSkipInstall: ({ context }) =>\n context._internalState.shouldSkipInstall,\n },\n actions: {\n assignErrorFromEvent: assign({\n _internalState: (_) => ({\n ..._.context._internalState,\n error: _.event[\"error\"] as InstallLanguagePackageDAError,\n shouldSkipInstall: false,\n }),\n }),\n assignGetDeviceMetadataSnapshot: assign({\n intermediateValue: (_) => {\n const snapshot = _.event[\"snapshot\"] as {\n context: {\n intermediateValue: GetDeviceMetadataDAIntermediateValue;\n };\n };\n const childIv = snapshot.context.intermediateValue;\n if (\n childIv.step === getDeviceMetadataDAStateStep.GET_DEVICE_METADATA\n ) {\n return {\n ...childIv,\n step: GET_DEVICE_METADATA,\n } satisfies types[\"context\"][\"intermediateValue\"];\n }\n return childIv as types[\"context\"][\"intermediateValue\"];\n },\n }),\n assignGetDeviceMetadataDone: assign({\n _internalState: (_) => {\n const output = _.event[\"output\"] as Either<\n GetDeviceMetadataDAError,\n GetDeviceMetadataDAOutput\n >;\n return output.caseOf({\n Right: (metadata) => {\n const languagePackages = metadata.catalog.languagePackages;\n if (!languagePackages) {\n return {\n ..._.context._internalState,\n error: new MissingLanguagePackagesForOSDAError(\n `Language packages not found for OS ${metadata?.firmwareVersion?.os}.`,\n ) as InstallLanguagePackageDAError,\n };\n }\n\n const languagePackage = languagePackages.find(\n (lp) => lp.language === language,\n );\n if (!languagePackage) {\n return {\n ..._.context._internalState,\n error: new MissingLanguagePackageDAError(\n `Language package not found for ${language}.`,\n ),\n };\n }\n\n const installedLanguageIds = (\n metadata.installedLanguages ?? []\n ).map(({ id }) => id);\n\n const isAlreadyInstalled = installedLanguageIds.includes(\n languagePackage.languagePackageId,\n );\n\n if (isAlreadyInstalled) {\n return {\n ..._.context._internalState,\n shouldSkipInstall: true,\n };\n }\n return {\n ..._.context._internalState,\n languagePackage,\n };\n },\n Left: (error: InstallLanguagePackageDAError) => ({\n ..._.context._internalState,\n error,\n }),\n });\n },\n }),\n assignDeleteCurrentLanguagePackSnapshot: assign({\n intermediateValue: (_) =>\n ({\n requiredUserInteraction: None,\n step: DELETE_CURRENT_LANGUAGE_PACK,\n }) satisfies types[\"context\"][\"intermediateValue\"],\n }),\n assignDeleteCurrentLanguagePackDone: assign({\n _internalState: (_) => {\n const result = _.event[\"output\"] as DeleteLanguagePackCommandResult;\n if (isSuccessCommandResult(result)) {\n return _.context._internalState;\n }\n\n return {\n ..._.context._internalState,\n error: new DeleteLanguagePackDAError(\n \"message\" in result.error\n ? result.error.message\n : \"Delete language pack failed.\",\n ),\n };\n },\n }),\n assignInstallLanguagePackSnapshot: assign({\n intermediateValue: (_) => {\n const snapshot = _.event[\"snapshot\"] as {\n context: InstallLanguagePackageEvent | null;\n };\n const event = snapshot.context;\n const ctx = _.context as types[\"context\"];\n const currentProgress =\n \"progress\" in ctx.intermediateValue\n ? (ctx.intermediateValue.progress ?? 0)\n : 0;\n return {\n requiredUserInteraction: None,\n step: INSTALL_LANGUAGE_PACK,\n progress:\n event?.type === \"progress\" ? event.progress : currentProgress,\n } satisfies types[\"context\"][\"intermediateValue\"];\n },\n }),\n },\n }).createMachine({\n /** @xstate-layout N4IgpgJg5mDOIC5QEkB2sAuBDANjgMlqlAK5YwAKWAxgNblgAiYAbgJbVgCC1GbA9qgB0AYQAWYOgCUwARxJwMkQsTIwAxAG0ADAF1EoAA79YbPoIMgAHogBMATltCAjPYCsAZm0AWAOwAObTdfe18AGhAAT0RvRyEPW39nZw9nb20PBIBfLIi0TFwCIlIGKjoGZnZOHnNhcUlaGXlFZWK1MC1nfSQQY1NayxsEBydXTx8AoJDwqMRk+yE-ADY3Vb9fNxSPHLz0bDwVEsoaehhKjm5eAWEAcTAMc84AWXusCCxsdQhBMCE2VBY-FovzuD1YFxe2He2B03SMJjM10GiH8cUc9iWS3cbhWthWEWiw20S0WzkxvhS3g8S38wVsOxA+X2RVUpROFXB1SugiEoMeYEhbw+WHUYAATmL+GKhIYcB8AGZSgC2vPu-MF0KwsMsfURFh6Q1RTnRmOxuPxswQSSEbm0drttPs-l8LoZTMKh3aZVOTE5l1qQk9bLo9ToWj0OoRAwNc2pHiEtlioXSTu8Sw8BLstnjvjxqxdQQ8Gypbr2HrawZ9-Jq10DFeOIYkYc0XUj-SRMYQKXTCaTvhT-jTGctRfj-kSzm0-hp-aWPlLBQO9bA3o5VX9teYOHuYBEJAlYFQGCDDdoXx+fwBQN+W53e4PR5PK5O2p6uujoCGrgSQinbnsdqxEs3jeLYMyElivguDi2a2mB-7aPYC7Mk+q5nH6NY8reSj3mKh7Hsu3rnqgvz-ICwJCNhu77nhj6ES+rZvlGHafnM9g-n+AE+BiIFgZmCBuImQiDum3iDm4zq+JiyHlqyp5rhcmHCFRuH4ahJyihKUoynKGCKmKKoqTRan0XQr7wu2+qsV27FOJxgE8aB4GIB4oEJnmSy2M4EmJr4MlLnJz7lOh65KUI7oBUcQVnt8JGXuRvwRSyUXeuZvTMVZ1h2C6-i-h4AG2sB6TBPxwRQQBnkJFifjpPSuSMmWkVeuyIWKdywhJepYbipK0qygqyrhY1yXNWZEZMZZqDIsMOV5QVxIgVM-Fid4iyePMdpFiBGw5PVqD8BAcCWJ1plVhh7VtnqU2dgAtEs-E3W4Qj2C9r1vW92z1SdgVob6oXtaITaNHICiYK0gWXR+WUIKB-HOEJaQJGB060vDdW7IuI2VgpXIBnyfoasKkMsdDtqrf2r1LCESSrG4-H2Ktth5p4tirB4OLeM4-lY-JrW47WXW0KGtDE5lX7eU9-jswBL0rEExL8UzuX5QkXiIem-afRjKGnTjG5YWA244cZdE-ScovXdZ3l4r+jopLY9qTsOhLs1BCRJNS-75VLXNfcNgt62F30pebE1XdN2bjnNxKZMsrPLQBwlDqzjm5n5fuYwHfP68IADKJDUJwsDwGHUNDF4CPOmJqTAVOIGlVL8RM-YTtebZSEZzrZvBX9bUBgAolpYoW9NFerc4Vc+7Xg7eIrrNNysuabGkwTUrtWRAA */\n id: \"InstallLanguagePackageDeviceAction\",\n initial: \"CheckRequestedLanguage\",\n context: (_) => {\n return {\n input: {\n unlockTimeout: _.input.unlockTimeout,\n language: _.input.language,\n },\n intermediateValue: {\n requiredUserInteraction: None,\n step: DEVICE_READY,\n progress: 0,\n },\n _internalState: {\n error: null,\n languagePackage: null,\n shouldSkipInstall: false,\n },\n };\n },\n states: {\n CheckRequestedLanguage: {\n always: [\n {\n guard: \"isDefaultLanguage\",\n target: \"DeleteCurrentLanguagePack\",\n },\n { target: \"GetDeviceMetadata\" },\n ],\n },\n GetDeviceMetadata: {\n invoke: {\n id: \"GetDeviceMetadata\",\n src: \"getDeviceMetadata\",\n input: ({ context }) => ({\n unlockTimeout: context.input.unlockTimeout,\n forceUpdate: true, // ensures the Language pack is fresh and forces user to go to Dashboard\n useSecureChannel: true,\n }),\n onSnapshot: {\n actions: \"assignGetDeviceMetadataSnapshot\",\n },\n onDone: {\n target: \"LanguagePackCheck\",\n actions: \"assignGetDeviceMetadataDone\",\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n LanguagePackCheck: {\n always: [\n {\n guard: \"hasError\",\n target: \"Error\",\n },\n {\n guard: \"shouldSkipInstall\",\n target: \"Success\",\n },\n { target: \"DeleteCurrentLanguagePack\" },\n ],\n },\n DeleteCurrentLanguagePack: {\n invoke: {\n id: \"DeleteCurrentLanguagePack\",\n src: \"deleteCurrentLanguagePack\",\n onSnapshot: {\n actions: \"assignDeleteCurrentLanguagePackSnapshot\",\n },\n onDone: {\n target: \"DeleteCurrentLanguagePackResultCheck\",\n actions: \"assignDeleteCurrentLanguagePackDone\",\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n DeleteCurrentLanguagePackResultCheck: {\n always: [\n {\n guard: \"hasError\",\n target: \"Error\",\n },\n {\n guard: \"isDefaultLanguage\",\n target: \"Success\",\n },\n { target: \"InstallLanguagePack\" },\n ],\n },\n InstallLanguagePack: {\n invoke: {\n id: \"InstallLanguagePack\",\n src: \"installLanguagePack\",\n input: ({ context }) => ({\n apduInstallUrl:\n context._internalState.languagePackage!.apduInstallUrl,\n }),\n onSnapshot: {\n actions: \"assignInstallLanguagePackSnapshot\",\n },\n onDone: {\n target: \"Success\",\n },\n onError: {\n target: \"Error\",\n actions: \"assignErrorFromEvent\",\n },\n },\n },\n Success: {\n type: \"final\",\n },\n Error: {\n type: \"final\",\n },\n },\n output: (_) => {\n if (_.context._internalState.error !== null) {\n return Left(_.context._internalState.error);\n }\n return Right(undefined);\n },\n });\n }\n\n extractDependencies(internalApi: InternalApi): MachineDependencies {\n return {\n deleteCurrentLanguagePack: () =>\n internalApi.sendCommand(\n new DeleteLanguagePackCommand({ languagePackageId: 0xff }),\n ),\n installLanguagePack: (apduInstallUrl: string) =>\n new InstallLanguagePackageTask(internalApi, {\n apduInstallUrl,\n }).run(),\n };\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["Left", "Right", "assign", "fromObservable", "fromPromise", "setup", "isSuccessCommandResult", "DeleteLanguagePackCommand", "UserInteractionRequired", "DEFAULT_UNLOCK_TIMEOUT_MS", "DeleteLanguagePackDAError", "MissingLanguagePackageDAError", "MissingLanguagePackagesForOSDAError", "GetDeviceMetadataDeviceAction", "getDeviceMetadataDAStateStep", "InstallLanguagePackageTask", "XStateDeviceAction", "installLanguagePackageDAStateStep", "InstallLanguagePackageDeviceAction", "internalApi", "deleteCurrentLanguagePack", "installLanguagePack", "unlockTimeout", "language", "None", "DEVICE_READY", "GET_DEVICE_METADATA", "DELETE_CURRENT_LANGUAGE_PACK", "INSTALL_LANGUAGE_PACK", "getDeviceMetadataMachine", "input", "context", "_", "childIv", "metadata", "languagePackages", "languagePackage", "lp", "id", "error", "result", "event", "ctx", "currentProgress", "apduInstallUrl"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{of as I,throwError as L}from"rxjs";import{CommandResultFactory as P}from"../../../command/model/CommandResult";import{DeleteLanguagePackCommandError as h}from"../../../command/os/DeleteLanguagePackCommand";import{makeDeviceActionInternalApiMock as w}from"../../../device-action/__test-utils__/makeInternalApi";import{setupGetDeviceMetadataMock as g}from"../../../device-action/__test-utils__/setupTestMachine";import{testDeviceActionStates as S}from"../../../device-action/__test-utils__/testDeviceActionStates";import{DeviceActionStatus as e}from"../../../device-action/model/DeviceActionState";import{UserInteractionRequired as y}from"../../../device-action/model/UserInteractionRequired";import{DeleteLanguagePackDAError as k,MissingLanguagePackageDAError as E,MissingLanguagePackagesForOSDAError as C,UnknownDAError as A}from"../../../device-action/os/Errors";import{InstallLanguagePackageDeviceAction as c}from"./InstallLanguagePackageDeviceAction";import{installLanguagePackageDAStateStep as M}from"./types";vi.mock("@api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction");describe("InstallLanguagePackageDeviceAction",()=>{const f=w(),i=vi.fn(),l=vi.fn(),s={language:"french",languagePackageVersionId:1,version:"1.0.0",languagePackageId:42,apduInstallUrl:"https://example.com/install-french",apduUninstallUrl:"https://example.com/uninstall-french",bytes:1024,dateCreation:"2024-01-01",dateLastModified:"2024-01-01"},{None:t}=y,{DEVICE_READY:u,GET_DEVICE_METADATA:r,DELETE_CURRENT_LANGUAGE_PACK:o,INSTALL_LANGUAGE_PACK:m}=M,D={deleteCurrentLanguagePack:i,installLanguagePack:l},p=(a={})=>({installedLanguages:[],...a,catalog:{languagePackages:[],...a.catalog??{}}}),d=(a,n,v)=>new Promise((U,V)=>{vi.spyOn(a,"extractDependencies").mockReturnValue(D),S(a,n,f,{onDone:()=>{try{v?.(),U()}catch(q){V(q)}},onError:V})});beforeEach(()=>{vi.clearAllMocks()}),describe("success cases",()=>{it("should install a non-default language package",()=>{g(p({catalog:{languagePackages:[s]}}));const a=new c({input:{language:"french"}});i.mockResolvedValueOnce(P({data:void 0})),l.mockReturnValueOnce(I({type:"progress",progress:.5},{type:"progress",progress:1}));const n=[{intermediateValue:{requiredUserInteraction:t,step:u,progress:0},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:r},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:r},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:o},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:o},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:m,progress:0},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:m,progress:.5},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:m,progress:1},status:e.Pending},{output:void 0,status:e.Completed}];return d(a,n)}),it("should install when a different language pack is already installed",()=>{g(p({catalog:{languagePackages:[s]},installedLanguages:[{id:999,size:2048}]}));const a=new c({input:{language:"french"}});i.mockResolvedValueOnce(P({data:void 0})),l.mockReturnValueOnce(I({type:"progress",progress:1}));const n=[{intermediateValue:{requiredUserInteraction:t,step:u,progress:0},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:r},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:r},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:o},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:o},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:m,progress:0},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:m,progress:1},status:e.Pending},{output:void 0,status:e.Completed}];return d(a,n,()=>{expect(i).toHaveBeenCalledOnce(),expect(l).toHaveBeenCalledOnce()})}),it("should succeed without delete or install when the language pack is already installed",()=>{g(p({catalog:{languagePackages:[s]},installedLanguages:[{id:s.languagePackageId,size:s.bytes}]}));const a=new c({input:{language:"french"}}),n=[{intermediateValue:{requiredUserInteraction:t,step:u,progress:0},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:r},status:e.Pending},{output:void 0,status:e.Completed}];return d(a,n,()=>{expect(i).not.toHaveBeenCalled(),expect(l).not.toHaveBeenCalled()})}),it("should install when only a matching languagePackageVersionId is reported as installed",()=>{g(p({catalog:{languagePackages:[s]},installedLanguages:[{id:s.languagePackageVersionId,size:s.bytes}]}));const a=new c({input:{language:"french"}});i.mockResolvedValueOnce(P({data:void 0})),l.mockReturnValueOnce(I({type:"progress",progress:1}));const n=[{intermediateValue:{requiredUserInteraction:t,step:u,progress:0},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:r},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:r},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:o},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:o},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:m,progress:0},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:m,progress:1},status:e.Pending},{output:void 0,status:e.Completed}];return d(a,n,()=>{expect(l).toHaveBeenCalledOnce()})}),it("should delete and skip install for the default language (english)",()=>{const a=new c({input:{language:"english"}});i.mockResolvedValueOnce(P({data:void 0}));const n=[{intermediateValue:{requiredUserInteraction:t,step:u,progress:0},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:o},status:e.Pending},{output:void 0,status:e.Completed}];return d(a,n,()=>{expect(i).toHaveBeenCalledOnce(),expect(l).not.toHaveBeenCalled()})})}),describe("error cases",()=>{it("should error when GetDeviceMetadata fails",()=>{g({},!0);const a=new c({input:{language:"french"}}),n=[{intermediateValue:{requiredUserInteraction:t,step:u,progress:0},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:r},status:e.Pending},{error:new A("GetDeviceMetadata failed"),status:e.Error}];return d(a,n)}),it("should error when language packages are missing from metadata",()=>{g(p({firmwareVersion:{mcu:"1.0.0",bootloader:"1.0.0",os:"2.4.0"},catalog:{languagePackages:void 0}}));const a=new c({input:{language:"french"}}),n=[{intermediateValue:{requiredUserInteraction:t,step:u,progress:0},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:r},status:e.Pending},{error:new C("Language packages not found for OS 2.4.0."),status:e.Error}];return d(a,n)}),it("should error when the requested language is not found",()=>{g(p({catalog:{languagePackages:[s]}}));const a=new c({input:{language:"spanish"}}),n=[{intermediateValue:{requiredUserInteraction:t,step:u,progress:0},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:r},status:e.Pending},{error:new E("Language package not found for spanish."),status:e.Error}];return d(a,n)}),it("should error when DeleteCurrentLanguagePack returns a command error",()=>{g(p({catalog:{languagePackages:[s]}}));const a=new c({input:{language:"french"}});i.mockResolvedValueOnce(P({error:new h({message:"Invalid LANG_ID value.",errorCode:"681a"})}));const n=[{intermediateValue:{requiredUserInteraction:t,step:u,progress:0},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:r},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:r},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:o},status:e.Pending},{error:new k("Invalid LANG_ID value."),status:e.Error}];return d(a,n)}),it("should error when DeleteCurrentLanguagePack promise rejects",()=>{g(p({catalog:{languagePackages:[s]}}));const a=new c({input:{language:"french"}});i.mockRejectedValueOnce(new k("Delete failed"));const n=[{intermediateValue:{requiredUserInteraction:t,step:u,progress:0},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:r},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:r},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:o},status:e.Pending},{error:new k("Delete failed"),status:e.Error}];return d(a,n)}),it("should error when InstallLanguagePack observable errors",()=>{g(p({catalog:{languagePackages:[s]}}));const a=new c({input:{language:"french"}});i.mockResolvedValueOnce(P({data:void 0})),l.mockReturnValueOnce(L(()=>new A("Install failed")));const n=[{intermediateValue:{requiredUserInteraction:t,step:u,progress:0},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:r},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:r},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:o},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:o},status:e.Pending},{intermediateValue:{requiredUserInteraction:t,step:m,progress:0},status:e.Pending},{error:new A("Install failed"),status:e.Error}];return d(a,n)})})});
|
|
2
|
+
//# sourceMappingURL=InstallLanguagePackageDeviceAction.test.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../../src/api/device-action/os/InstallLanguagePackage/InstallLanguagePackageDeviceAction.test.ts"],
|
|
4
|
+
"sourcesContent": ["import { of, throwError } from \"rxjs\";\n\nimport { CommandResultFactory } from \"@api/command/model/CommandResult\";\nimport { DeleteLanguagePackCommandError } from \"@api/command/os/DeleteLanguagePackCommand\";\nimport { makeDeviceActionInternalApiMock } from \"@api/device-action/__test-utils__/makeInternalApi\";\nimport { setupGetDeviceMetadataMock } from \"@api/device-action/__test-utils__/setupTestMachine\";\nimport { testDeviceActionStates } from \"@api/device-action/__test-utils__/testDeviceActionStates\";\nimport { DeviceActionStatus } from \"@api/device-action/model/DeviceActionState\";\nimport { UserInteractionRequired } from \"@api/device-action/model/UserInteractionRequired\";\nimport {\n DeleteLanguagePackDAError,\n MissingLanguagePackageDAError,\n MissingLanguagePackagesForOSDAError,\n UnknownDAError,\n} from \"@api/device-action/os/Errors\";\nimport type { GetDeviceMetadataDAOutput } from \"@api/device-action/os/GetDeviceMetadata/types\";\nimport type { LanguagePackage } from \"@internal/manager-api/model/Language\";\n\nimport { InstallLanguagePackageDeviceAction } from \"./InstallLanguagePackageDeviceAction\";\nimport {\n type InstallLanguagePackageDAState,\n installLanguagePackageDAStateStep,\n} from \"./types\";\n\nvi.mock(\n \"@api/device-action/os/GetDeviceMetadata/GetDeviceMetadataDeviceAction\",\n);\n\ndescribe(\"InstallLanguagePackageDeviceAction\", () => {\n const apiMock = makeDeviceActionInternalApiMock();\n const deleteCurrentLanguagePackMock = vi.fn();\n const installLanguagePackMock = vi.fn();\n\n const LANGUAGE_PACKAGE: LanguagePackage = {\n language: \"french\",\n languagePackageVersionId: 1,\n version: \"1.0.0\",\n languagePackageId: 42,\n apduInstallUrl: \"https://example.com/install-french\",\n apduUninstallUrl: \"https://example.com/uninstall-french\",\n bytes: 1024,\n dateCreation: \"2024-01-01\",\n dateLastModified: \"2024-01-01\",\n };\n\n const { None } = UserInteractionRequired;\n const {\n DEVICE_READY,\n GET_DEVICE_METADATA,\n DELETE_CURRENT_LANGUAGE_PACK,\n INSTALL_LANGUAGE_PACK,\n } = installLanguagePackageDAStateStep;\n\n const extractDependenciesMock = {\n deleteCurrentLanguagePack: deleteCurrentLanguagePackMock,\n installLanguagePack: installLanguagePackMock,\n };\n\n const buildMetadata = (\n partial: {\n installedLanguages?: Array<{ id: number; size: number }>;\n catalog?: { languagePackages?: LanguagePackage[] | undefined };\n firmwareVersion?: GetDeviceMetadataDAOutput[\"firmwareVersion\"];\n } = {},\n ): GetDeviceMetadataDAOutput =>\n ({\n installedLanguages: [],\n ...partial,\n catalog: {\n languagePackages: [],\n ...(partial.catalog ?? {}),\n },\n }) as unknown as GetDeviceMetadataDAOutput;\n\n const runTest = (\n deviceAction: InstallLanguagePackageDeviceAction,\n expectedStates: Array<InstallLanguagePackageDAState>,\n onDoneExtra?: () => void,\n ) =>\n new Promise<void>((resolve, reject) => {\n vi.spyOn(deviceAction, \"extractDependencies\").mockReturnValue(\n extractDependenciesMock,\n );\n testDeviceActionStates(deviceAction, expectedStates, apiMock, {\n onDone: () => {\n try {\n onDoneExtra?.();\n resolve();\n } catch (e) {\n reject(e as Error);\n }\n },\n onError: reject,\n });\n });\n\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n describe(\"success cases\", () => {\n it(\"should install a non-default language package\", () => {\n setupGetDeviceMetadataMock(\n buildMetadata({ catalog: { languagePackages: [LANGUAGE_PACKAGE] } }),\n );\n\n const deviceAction = new InstallLanguagePackageDeviceAction({\n input: { language: \"french\" },\n });\n\n deleteCurrentLanguagePackMock.mockResolvedValueOnce(\n CommandResultFactory({ data: undefined }),\n );\n installLanguagePackMock.mockReturnValueOnce(\n of(\n { type: \"progress\", progress: 0.5 },\n { type: \"progress\", progress: 1 },\n ),\n );\n\n const expectedStates: Array<InstallLanguagePackageDAState> = [\n // Initial\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: DEVICE_READY,\n progress: 0,\n },\n status: DeviceActionStatus.Pending,\n },\n // GetDeviceMetadata\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n // DeleteCurrentLanguagePack\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: DELETE_CURRENT_LANGUAGE_PACK,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: DELETE_CURRENT_LANGUAGE_PACK,\n },\n status: DeviceActionStatus.Pending,\n },\n // InstallLanguagePack\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: INSTALL_LANGUAGE_PACK,\n progress: 0,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: INSTALL_LANGUAGE_PACK,\n progress: 0.5,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: INSTALL_LANGUAGE_PACK,\n progress: 1,\n },\n status: DeviceActionStatus.Pending,\n },\n // Success\n {\n output: undefined,\n status: DeviceActionStatus.Completed,\n },\n ];\n\n return runTest(deviceAction, expectedStates);\n });\n\n it(\"should install when a different language pack is already installed\", () => {\n setupGetDeviceMetadataMock(\n buildMetadata({\n catalog: { languagePackages: [LANGUAGE_PACKAGE] },\n installedLanguages: [{ id: 999, size: 2048 }],\n }),\n );\n\n const deviceAction = new InstallLanguagePackageDeviceAction({\n input: { language: \"french\" },\n });\n\n deleteCurrentLanguagePackMock.mockResolvedValueOnce(\n CommandResultFactory({ data: undefined }),\n );\n installLanguagePackMock.mockReturnValueOnce(\n of({ type: \"progress\", progress: 1 }),\n );\n\n const expectedStates: Array<InstallLanguagePackageDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: DEVICE_READY,\n progress: 0,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: DELETE_CURRENT_LANGUAGE_PACK,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: DELETE_CURRENT_LANGUAGE_PACK,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: INSTALL_LANGUAGE_PACK,\n progress: 0,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: INSTALL_LANGUAGE_PACK,\n progress: 1,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n output: undefined,\n status: DeviceActionStatus.Completed,\n },\n ];\n\n return runTest(deviceAction, expectedStates, () => {\n expect(deleteCurrentLanguagePackMock).toHaveBeenCalledOnce();\n expect(installLanguagePackMock).toHaveBeenCalledOnce();\n });\n });\n\n it(\"should succeed without delete or install when the language pack is already installed\", () => {\n setupGetDeviceMetadataMock(\n buildMetadata({\n catalog: { languagePackages: [LANGUAGE_PACKAGE] },\n installedLanguages: [\n {\n id: LANGUAGE_PACKAGE.languagePackageId,\n size: LANGUAGE_PACKAGE.bytes,\n },\n ],\n }),\n );\n\n const deviceAction = new InstallLanguagePackageDeviceAction({\n input: { language: \"french\" },\n });\n\n const expectedStates: Array<InstallLanguagePackageDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: DEVICE_READY,\n progress: 0,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n output: undefined,\n status: DeviceActionStatus.Completed,\n },\n ];\n\n return runTest(deviceAction, expectedStates, () => {\n expect(deleteCurrentLanguagePackMock).not.toHaveBeenCalled();\n expect(installLanguagePackMock).not.toHaveBeenCalled();\n });\n });\n\n it(\"should install when only a matching languagePackageVersionId is reported as installed\", () => {\n // Guards against a regression where the implementation compares against\n // languagePackageVersionId instead of languagePackageId.\n setupGetDeviceMetadataMock(\n buildMetadata({\n catalog: { languagePackages: [LANGUAGE_PACKAGE] },\n installedLanguages: [\n {\n id: LANGUAGE_PACKAGE.languagePackageVersionId,\n size: LANGUAGE_PACKAGE.bytes,\n },\n ],\n }),\n );\n\n const deviceAction = new InstallLanguagePackageDeviceAction({\n input: { language: \"french\" },\n });\n\n deleteCurrentLanguagePackMock.mockResolvedValueOnce(\n CommandResultFactory({ data: undefined }),\n );\n installLanguagePackMock.mockReturnValueOnce(\n of({ type: \"progress\", progress: 1 }),\n );\n\n const expectedStates: Array<InstallLanguagePackageDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: DEVICE_READY,\n progress: 0,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: DELETE_CURRENT_LANGUAGE_PACK,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: DELETE_CURRENT_LANGUAGE_PACK,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: INSTALL_LANGUAGE_PACK,\n progress: 0,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: INSTALL_LANGUAGE_PACK,\n progress: 1,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n output: undefined,\n status: DeviceActionStatus.Completed,\n },\n ];\n\n return runTest(deviceAction, expectedStates, () => {\n expect(installLanguagePackMock).toHaveBeenCalledOnce();\n });\n });\n\n it(\"should delete and skip install for the default language (english)\", () => {\n const deviceAction = new InstallLanguagePackageDeviceAction({\n input: { language: \"english\" },\n });\n\n deleteCurrentLanguagePackMock.mockResolvedValueOnce(\n CommandResultFactory({ data: undefined }),\n );\n\n const expectedStates: Array<InstallLanguagePackageDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: DEVICE_READY,\n progress: 0,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: DELETE_CURRENT_LANGUAGE_PACK,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n output: undefined,\n status: DeviceActionStatus.Completed,\n },\n ];\n\n return runTest(deviceAction, expectedStates, () => {\n expect(deleteCurrentLanguagePackMock).toHaveBeenCalledOnce();\n expect(installLanguagePackMock).not.toHaveBeenCalled();\n });\n });\n });\n\n describe(\"error cases\", () => {\n it(\"should error when GetDeviceMetadata fails\", () => {\n setupGetDeviceMetadataMock(\n {} as unknown as GetDeviceMetadataDAOutput,\n true,\n );\n\n const deviceAction = new InstallLanguagePackageDeviceAction({\n input: { language: \"french\" },\n });\n\n const expectedStates: Array<InstallLanguagePackageDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: DEVICE_READY,\n progress: 0,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n error: new UnknownDAError(\"GetDeviceMetadata failed\"),\n status: DeviceActionStatus.Error,\n },\n ];\n\n return runTest(deviceAction, expectedStates);\n });\n\n it(\"should error when language packages are missing from metadata\", () => {\n setupGetDeviceMetadataMock(\n buildMetadata({\n firmwareVersion: {\n mcu: \"1.0.0\",\n bootloader: \"1.0.0\",\n os: \"2.4.0\",\n } as GetDeviceMetadataDAOutput[\"firmwareVersion\"],\n catalog: { languagePackages: undefined },\n }),\n );\n\n const deviceAction = new InstallLanguagePackageDeviceAction({\n input: { language: \"french\" },\n });\n\n const expectedStates: Array<InstallLanguagePackageDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: DEVICE_READY,\n progress: 0,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n error: new MissingLanguagePackagesForOSDAError(\n \"Language packages not found for OS 2.4.0.\",\n ),\n status: DeviceActionStatus.Error,\n },\n ];\n\n return runTest(deviceAction, expectedStates);\n });\n\n it(\"should error when the requested language is not found\", () => {\n setupGetDeviceMetadataMock(\n buildMetadata({ catalog: { languagePackages: [LANGUAGE_PACKAGE] } }),\n );\n\n const deviceAction = new InstallLanguagePackageDeviceAction({\n input: { language: \"spanish\" },\n });\n\n const expectedStates: Array<InstallLanguagePackageDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: DEVICE_READY,\n progress: 0,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n error: new MissingLanguagePackageDAError(\n \"Language package not found for spanish.\",\n ),\n status: DeviceActionStatus.Error,\n },\n ];\n\n return runTest(deviceAction, expectedStates);\n });\n\n it(\"should error when DeleteCurrentLanguagePack returns a command error\", () => {\n setupGetDeviceMetadataMock(\n buildMetadata({ catalog: { languagePackages: [LANGUAGE_PACKAGE] } }),\n );\n\n const deviceAction = new InstallLanguagePackageDeviceAction({\n input: { language: \"french\" },\n });\n\n deleteCurrentLanguagePackMock.mockResolvedValueOnce(\n CommandResultFactory({\n error: new DeleteLanguagePackCommandError({\n message: \"Invalid LANG_ID value.\",\n errorCode: \"681a\",\n }),\n }),\n );\n\n const expectedStates: Array<InstallLanguagePackageDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: DEVICE_READY,\n progress: 0,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: DELETE_CURRENT_LANGUAGE_PACK,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n error: new DeleteLanguagePackDAError(\"Invalid LANG_ID value.\"),\n status: DeviceActionStatus.Error,\n },\n ];\n\n return runTest(deviceAction, expectedStates);\n });\n\n it(\"should error when DeleteCurrentLanguagePack promise rejects\", () => {\n setupGetDeviceMetadataMock(\n buildMetadata({ catalog: { languagePackages: [LANGUAGE_PACKAGE] } }),\n );\n\n const deviceAction = new InstallLanguagePackageDeviceAction({\n input: { language: \"french\" },\n });\n\n deleteCurrentLanguagePackMock.mockRejectedValueOnce(\n new DeleteLanguagePackDAError(\"Delete failed\"),\n );\n\n const expectedStates: Array<InstallLanguagePackageDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: DEVICE_READY,\n progress: 0,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: DELETE_CURRENT_LANGUAGE_PACK,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n error: new DeleteLanguagePackDAError(\"Delete failed\"),\n status: DeviceActionStatus.Error,\n },\n ];\n\n return runTest(deviceAction, expectedStates);\n });\n\n it(\"should error when InstallLanguagePack observable errors\", () => {\n setupGetDeviceMetadataMock(\n buildMetadata({ catalog: { languagePackages: [LANGUAGE_PACKAGE] } }),\n );\n\n const deviceAction = new InstallLanguagePackageDeviceAction({\n input: { language: \"french\" },\n });\n\n deleteCurrentLanguagePackMock.mockResolvedValueOnce(\n CommandResultFactory({ data: undefined }),\n );\n installLanguagePackMock.mockReturnValueOnce(\n throwError(() => new UnknownDAError(\"Install failed\")),\n );\n\n const expectedStates: Array<InstallLanguagePackageDAState> = [\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: DEVICE_READY,\n progress: 0,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: GET_DEVICE_METADATA,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: DELETE_CURRENT_LANGUAGE_PACK,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: DELETE_CURRENT_LANGUAGE_PACK,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n intermediateValue: {\n requiredUserInteraction: None,\n step: INSTALL_LANGUAGE_PACK,\n progress: 0,\n },\n status: DeviceActionStatus.Pending,\n },\n {\n error: new UnknownDAError(\"Install failed\"),\n status: DeviceActionStatus.Error,\n },\n ];\n\n return runTest(deviceAction, expectedStates);\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["of", "throwError", "CommandResultFactory", "DeleteLanguagePackCommandError", "makeDeviceActionInternalApiMock", "setupGetDeviceMetadataMock", "testDeviceActionStates", "DeviceActionStatus", "UserInteractionRequired", "DeleteLanguagePackDAError", "MissingLanguagePackageDAError", "MissingLanguagePackagesForOSDAError", "UnknownDAError", "InstallLanguagePackageDeviceAction", "installLanguagePackageDAStateStep", "apiMock", "deleteCurrentLanguagePackMock", "installLanguagePackMock", "LANGUAGE_PACKAGE", "None", "DEVICE_READY", "GET_DEVICE_METADATA", "DELETE_CURRENT_LANGUAGE_PACK", "INSTALL_LANGUAGE_PACK", "extractDependenciesMock", "buildMetadata", "partial", "runTest", "deviceAction", "expectedStates", "onDoneExtra", "resolve", "reject", "e"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=Object.freeze({DEVICE_READY:"os.installLanguagePackage.steps.deviceReady",GET_DEVICE_METADATA:"os.installLanguagePackage.steps.getDeviceMetadata",DELETE_CURRENT_LANGUAGE_PACK:"os.installLanguagePackage.steps.deleteCurrentLanguagePack",INSTALL_LANGUAGE_PACK:"os.installLanguagePackage.steps.installLanguagePack"});export{e as installLanguagePackageDAStateStep};
|
|
2
|
+
//# sourceMappingURL=types.js.map
|