From fe385d81a36c0acab3eebaa10e0180807b4d028e Mon Sep 17 00:00:00 2001 From: Tomek Marciniak Date: Thu, 3 Oct 2024 17:00:51 +0200 Subject: [PATCH] chore(transport): change from lzw to msgpack --- bun.lockb | Bin 242489 -> 239129 bytes package.json | 109 ++++++++++++++-------------- src/lib/transport.spec.ts | 124 ++++++++++++++++---------------- src/lib/transport.ts | 58 +++++++-------- src/routes/(app)/+layout.svelte | 2 +- src/routes/+layout.server.ts | 1 + src/routes/+layout.svelte | 32 ++++----- svelte.config.js | 31 ++++---- vite.config.ts | 66 ++++++++--------- 9 files changed, 208 insertions(+), 215 deletions(-) create mode 100644 src/routes/+layout.server.ts diff --git a/bun.lockb b/bun.lockb index a9ce4f4b12e80c9dc574ec23d61aef69cd1bb093..1b030d7b5db7f3537f8defd3149f0ef4176729dd 100755 GIT binary patch delta 46764 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 delta 48530 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 { - const encoded = getTransportableAccount(testAccount); - expect(encoded).toEqual( - "eyJhZGRyZXNzIjoiQjYycWtZYTFvNk1qNnVUVGpEUUNvYjdGWVpzcHVoa200UlJRaGdKZzlqNGtvRUJXaVNyVFFyUyIsInNpZ25lcsSJMsWEZMWKaXZhdGlvblDFk2jEiVsyMTQ3NDgzNjnFjcWdxZ80OcSNMzQsxafFoMWiNsWhLDDFtF19", - ); + const encoded = getTransportableAccount(testAccount); + expect(encoded).toEqual( + "g6dhZGRyZXNz2TdCNjJxa1lhMW82TWo2dVRUakRRQ29iN0ZZWnNwdWhrbTRSUlFoZ0pnOWo0a29FQldpU3JUUXJTpnNpZ25lcgKuZGVyaXZhdGlvblBhdGiVzoAAACzOgAAxKs6AAAAAAAA=", + ); }); it("decodes transport data", async () => { - const mockData = - "eyJhZGRyZXNzIjoiQjYycWtZYTFvNk1qNnVUVGpEUUNvYjdGWVpzcHVoa200UlJRaGdKZzlqNGtvRUJXaVNyVFFyUyIsInNpZ25lcsSJMsWEZMWKaXZhdGlvblDFk2jEiVsyMTQ3NDgzNjnFjcWdxZ80OcSNMzQsxafFoMWiNsWhLDDFtF19"; - const account = getAccountFromTransportable(mockData); - expect(account.address).toEqual(testAccount.address); + const mockData = + "g6dhZGRyZXNz2TdCNjJxa1lhMW82TWo2dVRUakRRQ29iN0ZZWnNwdWhrbTRSUlFoZ0pnOWo0a29FQldpU3JUUXJTpnNpZ25lcgKuZGVyaXZhdGlvblBhdGiVzoAAACzOgAAxKs6AAAAAAAA="; + const account = getAccountFromTransportable(mockData); + expect(account.address).toEqual(testAccount.address); }); it("converts sign request to transportable", () => { - const signRequest = { - payload: "Bonjour", - derivationPath: pathToArray("m/44'/12586'/0'/0/0"), - signer: 2, - type: 0, - options: [0], - }; - const result = signRequestToTransportable(signRequest); - expect(result).toEqual( - "eyJwYXlsb2FkIjoiQm9uam91ciIsImRlcml2YXRpxI1QxJtoxIlbMjE0NzQ4MzY5MizEpMSmNDk2MjM0xK7EpcSnxKk2xKgsMMS9XcSUc2lnbsSXxInErSJ0eXBlxInEviJvcMScxI1zxKIwXX0=", - ); + const signRequest = { + payload: "Bonjour", + derivationPath: pathToArray("m/44'/12586'/0'/0/0"), + signer: 2, + type: 0, + options: [0], + }; + const result = signRequestToTransportable(signRequest); + expect(result).toEqual( + "hadwYXlsb2Fkp0JvbmpvdXKuZGVyaXZhdGlvblBhdGiVzoAAACzOgAAxKs6AAAAAAACmc2lnbmVyAqR0eXBlAKdvcHRpb25zkQA=", + ); }); it("converts sign request to transportable for transaction", () => { - const txPayload: MinaUnsignedTransaction = { - from: "B62qkYa1o6Mj6uTTjDQCob7FYZspuhkm4RRQhgJg9j4koEBWiSrTQrS", - to: "B62qkYa1o6Mj6uTTjDQCob7FYZspuhkm4RRQhgJg9j4koEBWiSrTQrS", - fee: "10000000", - nonce: "1", - amount: "1000000000", - memo: "Hello", - }; - const signRequest = { - payload: txPayload, - derivationPath: pathToArray("m/44'/12586'/0'/0/0"), - signer: 2, - type: 1, - options: [0], - }; - const result = signRequestToTransportable(signRequest); - expect(result).toEqual( - "eyJwYXlsb2FkIjrEgGZyb23EiSJCNjJxa1lhMW82TWo2dVRUakRRQ29iN0ZZWnNwdWhrbTRSUlFoZ0pnOWo0a29FQldpU3JUUXJTIiwidG/EkMSSxJTElsSYxJrEnMSexKDEosSkxKbEqMSqxKzErsSwxLLEtMS2xLjEusS8xL7FgMWCxYTFhsWIxYpmZWXEkDEwxbHFsjDFiSJub25jxa46IjHFtWFtb3VudMWvxbPGh8W1bWXGgcSQSGVsxIUifcWKZGVyaXZhdGnFuFDGmmjEiVsyMTQ3NDgzNjkyLMajxqU0OcSTMzTGrcakxqbGqDbGpywwxrtdxYpzaWduxpbEicasxYt5cMW7McWKb3DGm8W4c8ahMF19", - ); + const txPayload: MinaUnsignedTransaction = { + from: "B62qkYa1o6Mj6uTTjDQCob7FYZspuhkm4RRQhgJg9j4koEBWiSrTQrS", + to: "B62qkYa1o6Mj6uTTjDQCob7FYZspuhkm4RRQhgJg9j4koEBWiSrTQrS", + fee: "10000000", + nonce: "1", + amount: "1000000000", + memo: "Hello", + }; + const signRequest = { + payload: txPayload, + derivationPath: pathToArray("m/44'/12586'/0'/0/0"), + signer: 2, + type: 1, + options: [0], + }; + const result = signRequestToTransportable(signRequest); + expect(result).toEqual( + "hadwYXlsb2FkhqRmcm9t2TdCNjJxa1lhMW82TWo2dVRUakRRQ29iN0ZZWnNwdWhrbTRSUlFoZ0pnOWo0a29FQldpU3JUUXJTonRv2TdCNjJxa1lhMW82TWo2dVRUakRRQ29iN0ZZWnNwdWhrbTRSUlFoZ0pnOWo0a29FQldpU3JUUXJTo2ZlZagxMDAwMDAwMKVub25jZaExpmFtb3VudKoxMDAwMDAwMDAwpG1lbW+lSGVsbG+uZGVyaXZhdGlvblBhdGiVzoAAACzOgAAxKs6AAAAAAACmc2lnbmVyAqR0eXBlAadvcHRpb25zkQA=", + ); }); it("decodes sign request", () => { - const tranportable = - "eyJwYXlsb2FkIjoiQm9uam91ciIsImRlcml2YXRpxI1QxJtoxIlbMjE0NzQ4MzY5MizEpMSmNDk2MjM0xK7EpcSnxKk2xKgsMMS9XcSUc2lnbsSXxInErSJ0eXBlxInEviJvcMScxI1zxKIwXX0="; - const signRequest = transportableToSignRequest(tranportable); - expect(signRequest.payload).toEqual("Bonjour"); + const tranportable = + "hadwYXlsb2Fkp0JvbmpvdXKuZGVyaXZhdGlvblBhdGiVzoAAACzOgAAxKs6AAAAAAACmc2lnbmVyAqR0eXBlAKdvcHRpb25zkQA="; + const signRequest = transportableToSignRequest(tranportable); + expect(signRequest.payload).toEqual("Bonjour"); }); it("converts signature to transportable", () => { - const transportable = signatureToTransportable({ - signature: "signature", - publicKey: "publicKey", - }); - expect(transportable).toEqual( - "eyJzaWduYXR1cmUiOsSBxIPEhcSHxIkiLCJwdWJsaWNLZXnEi8SUxJbEmMSaxJwifQ==", - ); + const transportable = signatureToTransportable({ + signature: "signature", + publicKey: "publicKey", + }); + expect(transportable).toEqual( + "gqlzaWduYXR1cmWpc2lnbmF0dXJlqXB1YmxpY0tlealwdWJsaWNLZXk=", + ); }); it("decodes signature", () => { - const transportable = - "eyJzaWduYXR1cmUiOsSBxIPEhcSHxIkiLCJwdWJsaWNLZXnEi8SUxJbEmMSaxJwifQ=="; - const signature = transportableToSignature(transportable); - expect(signature.signature).toEqual("signature"); + const transportable = + "gqlzaWduYXR1cmWpc2lnbmF0dXJlqXB1YmxpY0tlealwdWJsaWNLZXk="; + const signature = transportableToSignature(transportable); + expect(signature.signature).toEqual("signature"); }); diff --git a/src/lib/transport.ts b/src/lib/transport.ts index ff64aa6..471c69c 100644 --- a/src/lib/transport.ts +++ b/src/lib/transport.ts @@ -1,58 +1,58 @@ -import { base64, bytesToString, stringToBytes } from "@scure/base"; -import { compress, decompress } from "lzw-compressor"; +import { base64 } from "@scure/base"; +import { encode, decode } from "@msgpack/msgpack"; import type { - TransportableAccount, - TransportableSignRequest, - TransportableSignature, + TransportableAccount, + TransportableSignRequest, + TransportableSignature, } from "./types"; import { - TransportableAccountSchema, - TransportableSignRequestSchema, - TransportableSignatureSchema, + TransportableAccountSchema, + TransportableSignRequestSchema, + TransportableSignatureSchema, } from "./validation"; -const _base64AndCompress = (data: object) => { - const compressed = compress(JSON.stringify(data)); - return base64.encode(stringToBytes("utf8", compressed)); +const _base64AndCompress = (data: object): string => { + const packed = encode(data); + return base64.encode(packed); }; -const _decompressAndDebase64 = (encoded: string) => { - const encodedString = bytesToString("utf8", base64.decode(encoded)); - return JSON.parse(decompress(encodedString)); +const _decompressAndDebase64 = (encoded: string): Record => { + const debased = base64.decode(encoded); + return decode(debased) as Record; }; export const getTransportableAccount = (account: object) => { - return _base64AndCompress(TransportableAccountSchema.parse(account)); + return _base64AndCompress(TransportableAccountSchema.parse(account)); }; export const getAccountFromTransportable = ( - encoded: string, + encoded: string, ): TransportableAccount => { - const accountPayload = _decompressAndDebase64(encoded); - return TransportableAccountSchema.parse({ - address: accountPayload.address, - derivationPath: accountPayload.derivationPath, - signer: accountPayload.signer, - }); + const accountPayload = _decompressAndDebase64(encoded); + return TransportableAccountSchema.parse({ + address: accountPayload.address, + derivationPath: accountPayload.derivationPath, + signer: accountPayload.signer, + }); }; export const signRequestToTransportable = (payload: object) => { - return _base64AndCompress(TransportableSignRequestSchema.parse(payload)); + return _base64AndCompress(TransportableSignRequestSchema.parse(payload)); }; export const transportableToSignRequest = ( - encoded: string, + encoded: string, ): TransportableSignRequest => { - const signRequest = _decompressAndDebase64(encoded); - return TransportableSignRequestSchema.parse(signRequest); + const signRequest = _decompressAndDebase64(encoded); + return TransportableSignRequestSchema.parse(signRequest); }; export const signatureToTransportable = (payload: object) => { - return _base64AndCompress(TransportableSignatureSchema.parse(payload)); + return _base64AndCompress(TransportableSignatureSchema.parse(payload)); }; export const transportableToSignature = ( - encoded: string, + encoded: string, ): TransportableSignature => { - return TransportableSignatureSchema.parse(_decompressAndDebase64(encoded)); + return TransportableSignatureSchema.parse(_decompressAndDebase64(encoded)); }; diff --git a/src/routes/(app)/+layout.svelte b/src/routes/(app)/+layout.svelte index baccaea..19642bf 100644 --- a/src/routes/(app)/+layout.svelte +++ b/src/routes/(app)/+layout.svelte @@ -1,5 +1,5 @@
diff --git a/src/routes/+layout.server.ts b/src/routes/+layout.server.ts new file mode 100644 index 0000000..a3d1578 --- /dev/null +++ b/src/routes/+layout.server.ts @@ -0,0 +1 @@ +export const ssr = false; diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 880b9bd..be09019 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -1,23 +1,23 @@ diff --git a/svelte.config.js b/svelte.config.js index 257a58c..601b621 100644 --- a/svelte.config.js +++ b/svelte.config.js @@ -3,24 +3,21 @@ import { vitePreprocess } from "@sveltejs/vite-plugin-svelte"; /** @type {import('@sveltejs/kit').Config} */ const config = { - // Consult https://kit.svelte.dev/docs/integrations#preprocessors - // for more information about preprocessors - preprocess: vitePreprocess(), + // Consult https://kit.svelte.dev/docs/integrations#preprocessors + // for more information about preprocessors + preprocess: vitePreprocess(), - kit: { - // adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list. - // If your environment is not supported, or you settled on a specific environment, switch out the adapter. - // See https://kit.svelte.dev/docs/adapters for more information about adapters. - adapter: adapter({ - fallback: "404.html", - }), - paths: { - base: process.argv.includes("dev") ? "" : "/silex", - }, - files: { - serviceWorker: "src/service-worker.ts", - }, - }, + kit: { + adapter: adapter({ + fallback: "404.html", + }), + paths: { + base: process.argv.includes("dev") ? "" : "/silex", + }, + files: { + serviceWorker: "src/service-worker.ts", + }, + }, }; export default config; diff --git a/vite.config.ts b/vite.config.ts index 75d0873..074fc6d 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -3,37 +3,37 @@ import { SvelteKitPWA } from "@vite-pwa/sveltekit"; import { defineConfig } from "vite"; export default defineConfig({ - plugins: [ - sveltekit(), - SvelteKitPWA({ - strategies: "generateSW", - srcDir: "src", - filename: "service-worker.ts", - manifest: { - name: "Silex", - short_name: "Silex", - start_url: "/", - scope: "/", - display: "standalone", - theme_color: "#000000", - background_color: "#000000", - }, - injectManifest: { - globPatterns: ["client/**/*.{js,css,ico,png,svg,webp,woff,woff2}"], - }, - workbox: { - globPatterns: ["client/**/*.{js,css,ico,png,svg,webp,woff,woff2}"], - maximumFileSizeToCacheInBytes: 15 * 1024 * 1024, - }, - devOptions: { - enabled: true, - suppressWarnings: process.env.SUPPRESS_WARNING === "true", - type: "module", - navigateFallback: "/", - }, - kit: { - includeVersionFile: true, - }, - }), - ], + plugins: [ + sveltekit(), + SvelteKitPWA({ + strategies: "generateSW", + srcDir: "src", + filename: "service-worker.ts", + manifest: { + name: "Silex", + short_name: "Silex", + start_url: "/", + scope: "/", + display: "standalone", + theme_color: "#000000", + background_color: "#000000", + }, + injectManifest: { + globPatterns: ["client/**/*.{js,css,ico,png,svg,webp,woff,woff2}"], + }, + workbox: { + globPatterns: ["client/**/*.{js,css,ico,png,svg,webp,woff,woff2}"], + maximumFileSizeToCacheInBytes: 15 * 1024 * 1024, + }, + devOptions: { + enabled: true, + suppressWarnings: process.env.SUPPRESS_WARNING === "true", + type: "module", + navigateFallback: "/", + }, + kit: { + includeVersionFile: true, + }, + }), + ], });