From c204aa10d8c45f1c276e9509755ed9f01741a201 Mon Sep 17 00:00:00 2001 From: Andrea Scartabelli Date: Wed, 29 Jan 2025 09:30:07 +0100 Subject: [PATCH] web-wallet: Add local w3sper types - removed local w3sper's copy Resolves #3465 --- web-wallet/.eslintrc.cjs | 1 + web-wallet/.npmrc | 1 + web-wallet/package-lock.json | 16 +- web-wallet/package.json | 1 + web-wallet/src/app.d.ts | 13 + web-wallet/src/lib/__mocks__/AccountSyncer.js | 8 +- web-wallet/src/lib/__mocks__/AddressSyncer.js | 16 +- web-wallet/src/lib/__mocks__/Network.js | 15 +- .../src/lib/__mocks__/mockedWalletStore.js | 4 +- .../AddressPicker/AddressPicker.svelte | 4 +- .../lib/components/Allocate/Allocate.svelte | 2 +- .../StakeContract/StakeContract.svelte | 2 +- web-wallet/src/lib/contracts/executeSend.js | 2 +- .../src/lib/dusk/string/getAddressInfo.js | 2 +- .../lib/stores/__tests__/networkStore.spec.js | 6 +- .../lib/stores/__tests__/walletStore.spec.js | 17 +- web-wallet/src/lib/stores/networkStore.js | 21 +- web-wallet/src/lib/stores/stores.d.ts | 65 +- web-wallet/src/lib/stores/walletStore.js | 53 +- ...wallet_core.wasm => dusk_wallet_core.wasm} | Bin 307653 -> 307725 bytes web-wallet/src/lib/vendor/exu/mod.js | 173 --- web-wallet/src/lib/vendor/exu/proxies.js | 16 - web-wallet/src/lib/vendor/exu/sandbox/mod.js | 147 --- .../src/lib/vendor/exu/sandbox/worker.js | 101 -- .../lib/vendor/w3sper.js/src/bookkeeper.js | 120 -- .../lib/vendor/w3sper.js/src/encoders/b16.js | 26 - .../lib/vendor/w3sper.js/src/encoders/b58.js | 67 -- .../src/lib/vendor/w3sper.js/src/gas.js | 44 - .../src/lib/vendor/w3sper.js/src/lux.js | 104 -- .../src/lib/vendor/w3sper.js/src/mod.js | 13 - .../vendor/w3sper.js/src/network/bookmark.js | 54 - .../src/network/components/blocks.js | 42 - .../src/network/components/contracts.js | 44 - .../w3sper.js/src/network/components/node.js | 93 -- .../src/network/components/transactions.js | 86 -- .../lib/vendor/w3sper.js/src/network/error.js | 17 - .../vendor/w3sper.js/src/network/graphql.js | 33 - .../lib/vendor/w3sper.js/src/network/mod.js | 125 -- .../w3sper.js/src/network/syncer/account.js | 183 --- .../w3sper.js/src/network/syncer/address.js | 158 --- .../w3sper.js/src/network/syncer/event.js | 12 - .../src/lib/vendor/w3sper.js/src/profile.js | 151 --- .../w3sper.js/src/protocol-driver/alloc.js | 152 --- .../w3sper.js/src/protocol-driver/buffer.js | 178 --- .../w3sper.js/src/protocol-driver/error.js | 47 - .../w3sper.js/src/protocol-driver/mod.js | 1062 ----------------- .../w3sper.js/src/protocol-driver/none.js | 44 - .../w3sper.js/src/protocol-driver/stream.js | 97 -- .../lib/vendor/w3sper.js/src/rues/callable.js | 84 -- .../lib/vendor/w3sper.js/src/rues/event.js | 99 -- .../lib/vendor/w3sper.js/src/rues/listener.js | 155 --- .../src/lib/vendor/w3sper.js/src/rues/mod.js | 194 --- .../lib/vendor/w3sper.js/src/rues/scope.js | 16 - .../lib/vendor/w3sper.js/src/transaction.js | 467 -------- web-wallet/src/lib/wallet-cache/index.js | 10 +- .../src/lib/wallet-cache/wallet-cache.d.ts | 2 +- web-wallet/src/lib/wallet-treasury/index.js | 7 +- .../lib/wallet-treasury/wallet-treasury.d.ts | 15 - .../wallet/__tests__/initializeWallet.spec.js | 2 +- .../__tests__/profileGeneratorFrom.spec.js | 6 +- .../src/lib/wallet/profileGeneratorFrom.js | 2 +- .../src/routes/(app)/__tests__/layout.spec.js | 2 +- .../dashboard/receive/__tests__/page.spec.js | 7 +- .../setup/create/__tests__/page.spec.js | 2 +- .../setup/restore/__tests__/page.spec.js | 2 +- .../src/routes/(welcome)/unlock/+page.svelte | 2 +- .../(welcome)/unlock/__tests__/page.spec.js | 2 +- web-wallet/src/w3sper.d.ts | 516 ++++++++ 68 files changed, 671 insertions(+), 4559 deletions(-) rename web-wallet/src/lib/vendor/{wallet_core.wasm => dusk_wallet_core.wasm} (65%) delete mode 100644 web-wallet/src/lib/vendor/exu/mod.js delete mode 100644 web-wallet/src/lib/vendor/exu/proxies.js delete mode 100644 web-wallet/src/lib/vendor/exu/sandbox/mod.js delete mode 100644 web-wallet/src/lib/vendor/exu/sandbox/worker.js delete mode 100644 web-wallet/src/lib/vendor/w3sper.js/src/bookkeeper.js delete mode 100644 web-wallet/src/lib/vendor/w3sper.js/src/encoders/b16.js delete mode 100644 web-wallet/src/lib/vendor/w3sper.js/src/encoders/b58.js delete mode 100644 web-wallet/src/lib/vendor/w3sper.js/src/gas.js delete mode 100644 web-wallet/src/lib/vendor/w3sper.js/src/lux.js delete mode 100644 web-wallet/src/lib/vendor/w3sper.js/src/mod.js delete mode 100644 web-wallet/src/lib/vendor/w3sper.js/src/network/bookmark.js delete mode 100644 web-wallet/src/lib/vendor/w3sper.js/src/network/components/blocks.js delete mode 100644 web-wallet/src/lib/vendor/w3sper.js/src/network/components/contracts.js delete mode 100644 web-wallet/src/lib/vendor/w3sper.js/src/network/components/node.js delete mode 100644 web-wallet/src/lib/vendor/w3sper.js/src/network/components/transactions.js delete mode 100644 web-wallet/src/lib/vendor/w3sper.js/src/network/error.js delete mode 100644 web-wallet/src/lib/vendor/w3sper.js/src/network/graphql.js delete mode 100644 web-wallet/src/lib/vendor/w3sper.js/src/network/mod.js delete mode 100644 web-wallet/src/lib/vendor/w3sper.js/src/network/syncer/account.js delete mode 100644 web-wallet/src/lib/vendor/w3sper.js/src/network/syncer/address.js delete mode 100644 web-wallet/src/lib/vendor/w3sper.js/src/network/syncer/event.js delete mode 100644 web-wallet/src/lib/vendor/w3sper.js/src/profile.js delete mode 100644 web-wallet/src/lib/vendor/w3sper.js/src/protocol-driver/alloc.js delete mode 100644 web-wallet/src/lib/vendor/w3sper.js/src/protocol-driver/buffer.js delete mode 100644 web-wallet/src/lib/vendor/w3sper.js/src/protocol-driver/error.js delete mode 100644 web-wallet/src/lib/vendor/w3sper.js/src/protocol-driver/mod.js delete mode 100644 web-wallet/src/lib/vendor/w3sper.js/src/protocol-driver/none.js delete mode 100644 web-wallet/src/lib/vendor/w3sper.js/src/protocol-driver/stream.js delete mode 100644 web-wallet/src/lib/vendor/w3sper.js/src/rues/callable.js delete mode 100644 web-wallet/src/lib/vendor/w3sper.js/src/rues/event.js delete mode 100644 web-wallet/src/lib/vendor/w3sper.js/src/rues/listener.js delete mode 100644 web-wallet/src/lib/vendor/w3sper.js/src/rues/mod.js delete mode 100644 web-wallet/src/lib/vendor/w3sper.js/src/rues/scope.js delete mode 100644 web-wallet/src/lib/vendor/w3sper.js/src/transaction.js delete mode 100644 web-wallet/src/lib/wallet-treasury/wallet-treasury.d.ts create mode 100644 web-wallet/src/w3sper.d.ts diff --git a/web-wallet/.eslintrc.cjs b/web-wallet/.eslintrc.cjs index 6447794580..98ef6ff08a 100644 --- a/web-wallet/.eslintrc.cjs +++ b/web-wallet/.eslintrc.cjs @@ -35,6 +35,7 @@ module.exports = { $app: "node_modules/@sveltejs/kit/src/runtime/app", $config: "./src/config", $lib: "./src/lib", + "@dusk/w3sper": "node_modules/@dusk/w3sper/src/mod.js", "@sveltejs/kit": "node_modules/@sveltejs/kit/src/exports/index.js", "@testing-library/svelte": "node_modules/@testing-library/svelte/src/index.js", diff --git a/web-wallet/.npmrc b/web-wallet/.npmrc index b6f27f1359..3f0f34a2f8 100644 --- a/web-wallet/.npmrc +++ b/web-wallet/.npmrc @@ -1 +1,2 @@ engine-strict=true +@jsr:registry=https://npm.jsr.io diff --git a/web-wallet/package-lock.json b/web-wallet/package-lock.json index b31917fe32..ab494d0e5f 100644 --- a/web-wallet/package-lock.json +++ b/web-wallet/package-lock.json @@ -9,6 +9,7 @@ "version": "1.3.0", "license": "MPL-2.0", "dependencies": { + "@dusk/w3sper": "npm:@jsr/dusk__w3sper@^0.1.0", "@floating-ui/dom": "1.6.5", "@mdi/js": "7.4.47", "@reown/appkit": "1.5.3", @@ -2262,6 +2263,15 @@ "prettier-plugin-svelte": ">=3.2.1" } }, + "node_modules/@dusk/w3sper": { + "name": "@jsr/dusk__w3sper", + "version": "0.1.0", + "resolved": "https://npm.jsr.io/~/11/@jsr/dusk__w3sper/0.1.0.tgz", + "integrity": "sha512-DUkI9hk0sangwHXmuNuNqunQBTOiITB7GQP5c0HraT7tq1SuKZyvZu/7ml4eHxAlZCzV2TSCqrDpku35/pHX3w==", + "dependencies": { + "@jsr/dusk__exu": "0.1.2" + } + }, "node_modules/@esbuild/aix-ppc64": { "version": "0.21.5", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", @@ -3183,6 +3193,11 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@jsr/dusk__exu": { + "version": "0.1.2", + "resolved": "https://npm.jsr.io/~/11/@jsr/dusk__exu/0.1.2.tgz", + "integrity": "sha512-RDKqGshGZQX2Q6FR8P6KA8Pa2AU/Vcob0fx+oQgHzxFVBgSjZbVKvVGvM30ipbp2EsZLw+YkoapWftY2kJq83A==" + }, "node_modules/@juggle/resize-observer": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/@juggle/resize-observer/-/resize-observer-3.4.0.tgz", @@ -4057,7 +4072,6 @@ }, "node_modules/@parcel/watcher-wasm/node_modules/napi-wasm": { "version": "1.1.0", - "extraneous": true, "inBundle": true, "license": "MIT" }, diff --git a/web-wallet/package.json b/web-wallet/package.json index b8c967e316..5197f00e1a 100644 --- a/web-wallet/package.json +++ b/web-wallet/package.json @@ -35,6 +35,7 @@ "type": "module", "version": "1.3.0", "dependencies": { + "@dusk/w3sper": "npm:@jsr/dusk__w3sper@^0.1.0", "@floating-ui/dom": "1.6.5", "@mdi/js": "7.4.47", "@reown/appkit": "1.5.3", diff --git a/web-wallet/src/app.d.ts b/web-wallet/src/app.d.ts index 29d9e62e08..ef01344c83 100644 --- a/web-wallet/src/app.d.ts +++ b/web-wallet/src/app.d.ts @@ -5,3 +5,16 @@ declare namespace svelteHTML { ) => void; } } + +/* Aliases for common w3sper's types */ + +type AccountBalance = import("@dusk/w3sper").AccountBalance; +type AccountSyncer = import("@dusk/w3sper").AccountSyncer; +type AddressBalance = import("@dusk/w3sper").AddressBalance; +type AddressSyncer = import("@dusk/w3sper").AddressSyncer; +type Bookmark = import("@dusk/w3sper").Bookmark; +type Gas = import("@dusk/w3sper").Gas; +type Network = import("@dusk/w3sper").Network; +type Profile = import("@dusk/w3sper").Profile; +type ProfileGenerator = import("@dusk/w3sper").ProfileGenerator; +type StakeInfo = import("@dusk/w3sper").StakeInfo; diff --git a/web-wallet/src/lib/__mocks__/AccountSyncer.js b/web-wallet/src/lib/__mocks__/AccountSyncer.js index 7fe08f4532..e54b4a4a87 100644 --- a/web-wallet/src/lib/__mocks__/AccountSyncer.js +++ b/web-wallet/src/lib/__mocks__/AccountSyncer.js @@ -1,17 +1,17 @@ -import { AccountSyncer } from "$lib/vendor/w3sper.js/src/network/syncer/account"; +import { AccountSyncer } from "@dusk/w3sper"; import { stakeInfo } from "$lib/mock-data"; class AccountSyncerMock extends AccountSyncer { /** - * @param {import("$lib/vendor/w3sper.js/src/mod").Network} network + * @param {Network} network */ constructor(network) { super(network); } /** - * @param {Array} profiles + * @param {Array} profiles * @returns {Promise} */ async balances(profiles) { @@ -22,7 +22,7 @@ class AccountSyncerMock extends AccountSyncer { } /** - * @param {Array} profiles + * @param {Array} profiles * @returns {Promise} */ async stakes(profiles) { diff --git a/web-wallet/src/lib/__mocks__/AddressSyncer.js b/web-wallet/src/lib/__mocks__/AddressSyncer.js index 30f4dd0007..6117d289a7 100644 --- a/web-wallet/src/lib/__mocks__/AddressSyncer.js +++ b/web-wallet/src/lib/__mocks__/AddressSyncer.js @@ -1,4 +1,4 @@ -import { AddressSyncer } from "$lib/vendor/w3sper.js/src/network/syncer/address"; +import { AddressSyncer } from "@dusk/w3sper"; import { cacheUnspentNotes } from "$lib/mock-data"; @@ -33,17 +33,9 @@ class SyncEvent extends CustomEvent { class AddressSyncerMock extends AddressSyncer { /** - * @param {import("$lib/vendor/w3sper.js/src/mod").Network} network + * @param {Array} profiles * @param {Record} [options={}] - */ - constructor(network, options = {}) { - super(network, options); - } - - /** - * @param {Array} profiles - * @param {Record} [options={}] - * @returns {Promise>} + * @returns {Promise>, { blockHeight: bigint; bookmark: bigint; }]>>} */ // eslint-disable-next-line no-unused-vars async notes(profiles, options = {}) { @@ -96,7 +88,7 @@ class AddressSyncerMock extends AddressSyncer { /** * @param {Uint8Array[]} nullifiers - * @returns {Promise} + * @returns {Promise} */ // eslint-disable-next-line no-unused-vars async spent(nullifiers) { diff --git a/web-wallet/src/lib/__mocks__/Network.js b/web-wallet/src/lib/__mocks__/Network.js index 017f7e6d31..ad2948b4d3 100644 --- a/web-wallet/src/lib/__mocks__/Network.js +++ b/web-wallet/src/lib/__mocks__/Network.js @@ -1,4 +1,4 @@ -import { Network } from "$lib/vendor/w3sper.js/src/network/mod"; +import { Network } from "@dusk/w3sper"; class NetworkMock extends Network { /** @type {boolean} */ @@ -36,11 +36,18 @@ class NetworkMock extends Network { this.#connected = false; } - async execute() { - return { + /** + * @param {import("@dusk/w3sper").BasicTransfer} tx + * @returns {Promise} + */ + // @ts-ignore for our current tests we always return a `ShieldedTransferResult` + // eslint-disable-next-line no-unused-vars + async execute(tx) { + return Object.freeze({ + buffer: new Uint8Array(), hash: "821a88f10f823b74fa3489c5acc6e31b7e2e96d7adff47137f20f4af61612415", nullifiers: [], - }; + }); } } diff --git a/web-wallet/src/lib/__mocks__/mockedWalletStore.js b/web-wallet/src/lib/__mocks__/mockedWalletStore.js index 6e798b73c5..3c7e492c54 100644 --- a/web-wallet/src/lib/__mocks__/mockedWalletStore.js +++ b/web-wallet/src/lib/__mocks__/mockedWalletStore.js @@ -1,11 +1,11 @@ -import { ProfileGenerator } from "$lib/vendor/w3sper.js/src/profile"; +import { ProfileGenerator } from "@dusk/w3sper"; import { stakeInfo } from "$lib/mock-data"; import { mockReadableStore } from "$lib/dusk/test-helpers"; const seed = new Uint8Array(64); -const seeder = () => seed; +const seeder = async () => seed; const profileGenerator = new ProfileGenerator(seeder); const profiles = [ await profileGenerator.default, diff --git a/web-wallet/src/lib/components/AddressPicker/AddressPicker.svelte b/web-wallet/src/lib/components/AddressPicker/AddressPicker.svelte index cdef2b1d6a..b544bde4c0 100644 --- a/web-wallet/src/lib/components/AddressPicker/AddressPicker.svelte +++ b/web-wallet/src/lib/components/AddressPicker/AddressPicker.svelte @@ -12,10 +12,10 @@ import "./AddressPicker.css"; - /** @type {import("$lib/vendor/w3sper.js/src/mod").Profile | null} */ + /** @type {Profile | null} */ export let currentProfile; - /** @type {import("$lib/vendor/w3sper.js/src/mod").Profile[]} */ + /** @type {Profile[]} */ export let profiles; /** @type {boolean} */ diff --git a/web-wallet/src/lib/components/Allocate/Allocate.svelte b/web-wallet/src/lib/components/Allocate/Allocate.svelte index f70b120dde..2804751b5e 100644 --- a/web-wallet/src/lib/components/Allocate/Allocate.svelte +++ b/web-wallet/src/lib/components/Allocate/Allocate.svelte @@ -22,7 +22,7 @@ } from "$lib/dusk/components"; import { GasFee, GasSettings, OperationResult } from "$lib/components"; import { walletStore } from "$lib/stores"; - import { Gas } from "$lib/vendor/w3sper.js/src/mod"; + import { Gas } from "@dusk/w3sper"; import { MESSAGES } from "$lib/constants"; import Banner from "../Banner/Banner.svelte"; diff --git a/web-wallet/src/lib/containers/StakeContract/StakeContract.svelte b/web-wallet/src/lib/containers/StakeContract/StakeContract.svelte index d005381694..da102411a4 100644 --- a/web-wallet/src/lib/containers/StakeContract/StakeContract.svelte +++ b/web-wallet/src/lib/containers/StakeContract/StakeContract.svelte @@ -2,7 +2,7 @@