From 56da6b5cafe7ea85ef1b9944dd828c8ae30f483b Mon Sep 17 00:00:00 2001 From: Hugo Dias Date: Tue, 3 Sep 2024 16:40:31 +0100 Subject: [PATCH] fix: moved provider type to adapter, updated to mm v12 --- packages/snap/package.json | 20 +++--- packages/snap/playwright.config.js | 2 +- packages/snap/snap.manifest.json | 2 +- packages/snap/src/index.ts | 2 +- packages/snap/src/types.ts | 84 +------------------------ packages/snap/test/configure.spec.ts | 7 ++- packages/snap/test/error.spec.ts | 1 - packages/snap/test/gas-estimate.spec.ts | 4 +- packages/snap/test/mainnet.spec.ts | 4 +- packages/snap/test/methods.spec.ts | 25 ++++---- 10 files changed, 36 insertions(+), 115 deletions(-) diff --git a/packages/snap/package.json b/packages/snap/package.json index 837861cb..c42c00ae 100644 --- a/packages/snap/package.json +++ b/packages/snap/package.json @@ -77,30 +77,30 @@ } }, "dependencies": { - "@metamask/key-tree": "^9.0.0", - "@metamask/snaps-sdk": "^6.0.0", + "@metamask/key-tree": "^9.1.2", + "@metamask/snaps-sdk": "^6.3.0", "@paulmillr/qr": "^0.2.0", "dequal": "^2.0.3", "iso-base": "^4.0.0", "iso-filecoin": "^4.1.0", "merge-options": "^3.0.4", "sirv-cli": "^2.0.2", - "viem": "^2.17.0", + "viem": "^2.20.1", "zod": "^3.22.4" }, "devDependencies": { - "@metamask/approval-controller": "^7.0.0", + "@metamask/approval-controller": "^7.0.2", "@metamask/snaps-rollup-plugin": "^3.0.0", - "@playwright/test": "^1.45.1", + "@playwright/test": "^1.46.1", "@rollup/plugin-commonjs": "^26.0.1", "@rollup/plugin-node-resolve": "^15.2.3", "@rollup/plugin-sucrase": "^5.0.2", "@rollup/plugin-terser": "^0.4.4", - "metamask-testing-tools": "^1.2.6", - "playwright-test": "^14.1.1", - "rollup": "^4.12.0", - "type-fest": "^4.21.0", - "typescript": "5.5.3" + "metamask-testing-tools": "^2.0.0", + "playwright-test": "^14.1.4", + "rollup": "^4.21.2", + "type-fest": "^4.26.0", + "typescript": "5.5.4" }, "publishConfig": { "provenance": true diff --git a/packages/snap/playwright.config.js b/packages/snap/playwright.config.js index 2f3fb89a..bfca07ae 100644 --- a/packages/snap/playwright.config.js +++ b/packages/snap/playwright.config.js @@ -6,7 +6,7 @@ export default defineConfig({ timeout: process.env.CI ? 60 * 1000 : 30 * 1000, forbidOnly: Boolean(process.env.CI), retries: process.env.CI ? 2 : 1, - workers: process.env.CI ? 1 : 2, + workers: process.env.CI ? 1 : 1, reporter: process.env.CI ? [['html'], ['list']] : 'list', use: { baseURL: 'http://example.org', diff --git a/packages/snap/snap.manifest.json b/packages/snap/snap.manifest.json index e5eabe3d..00af8004 100644 --- a/packages/snap/snap.manifest.json +++ b/packages/snap/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/filecoin-project/filsnap.git" }, "source": { - "shasum": "KD3E+tnx/8f/Z4XImMnezw76DxoubGurnxXd8Tslpcc=", + "shasum": "4Hli2ldMXbJmpDd2+MHqlCDBk2zoU2jT5quO3ZyFuh0=", "location": { "npm": { "filePath": "dist/snap.js", diff --git a/packages/snap/src/index.ts b/packages/snap/src/index.ts index 87053caf..5d11f318 100644 --- a/packages/snap/src/index.ts +++ b/packages/snap/src/index.ts @@ -39,9 +39,9 @@ export type { AccountInfo, FilSnapMethods, Network, - RequestWithFilSnap, SnapConfig, Snap, + SnapError, } from './types' // Disable transaction insight for now diff --git a/packages/snap/src/types.ts b/packages/snap/src/types.ts index e098edf7..45353f88 100644 --- a/packages/snap/src/types.ts +++ b/packages/snap/src/types.ts @@ -1,13 +1,7 @@ -import type { - GetSnapsParams, - JsonRpcError, - JsonRpcParams, - JsonRpcRequest, - Snap, - SnapMethods, - SnapsProvider, -} from '@metamask/snaps-sdk' +import type { SnapsProvider } from '@metamask/snaps-sdk' + import type { accountFromPrivateKey } from 'iso-filecoin/wallet' + import type { z } from 'zod' import type { configure } from './rpc/configure' import type { exportPrivateKey } from './rpc/export-private-key' @@ -97,75 +91,3 @@ export interface FilSnapMethods { fil_sendMessage: typeof sendMessage fil_getAccountInfo: typeof getAccountInfo } - -/** - * Snaps Provider request types - * - * @see https://github.com/MetaMask/snaps/blob/main/packages/snaps-sdk/src/types/methods/methods.ts - */ - -export type Method< - MethodName extends string, - Params extends JsonRpcParams, -> = Partial & Params extends never - ? { - method: MethodName - } - : { - method: MethodName - params: Params - } - -/** - * Patched GetSnapsResult - */ -type GetSnapsResult = Record< - string, - | { - error: JsonRpcError - } - | Snap -> - -export type AddEthereumChainParameter = { - chainId: string - chainName: string - rpcUrls: string[] - blockExplorerUrls: string[] - nativeCurrency: { - name: string - symbol: string - decimals: number - } - iconUrls: string[] -} - -export type CustomSnapsMethos = SnapMethods & { - wallet_getSnaps: [GetSnapsParams, GetSnapsResult] - wallet_switchEthereumChain: [{ chainId: string }[], null] - wallet_addEthereumChain: [[AddEthereumChainParameter], null] -} - -export type RequestWithFilSnap = < - MethodName extends keyof CustomSnapsMethos, - SnapMethod extends keyof FilSnapMethods = keyof FilSnapMethods, ->( - args: MethodName extends 'wallet_invokeSnap' - ? { - method: MethodName - params: { - request: Parameters[1] extends undefined - ? { - method: SnapMethod - } - : { - method: SnapMethod - params: Parameters[1] - } - snapId: string - } - } - : Method -) => MethodName extends 'wallet_invokeSnap' - ? ReturnType - : Promise diff --git a/packages/snap/test/configure.spec.ts b/packages/snap/test/configure.spec.ts index 14114649..b9cffa70 100644 --- a/packages/snap/test/configure.spec.ts +++ b/packages/snap/test/configure.spec.ts @@ -5,7 +5,6 @@ const { test, expect } = createFixture({ isolated: true, downloadOptions: { flask: true, - tag: 'v11.16.5', }, snap: { id: 'local:http://localhost:8081', @@ -25,7 +24,8 @@ test.describe('fil_configure', () => { }) const dialog = await metamask.waitForDialog('confirmation') - await dialog.getByRole('button').filter({ hasText: 'Approve' }).click() + await dialog.getByTestId('confirmation-submit-button').click() + await dialog.getByTestId('confirmation-submit-button').click() const response = await req expect(response.result).toStrictEqual({ @@ -51,7 +51,8 @@ test.describe('fil_configure', () => { }) const dialog = await metamask.waitForDialog('confirmation') - await dialog.getByRole('button').filter({ hasText: 'Approve' }).click() + await dialog.getByTestId('confirmation-submit-button').click() + await dialog.getByTestId('confirmation-submit-button').click() const response = await req expect(response.result).toStrictEqual({ diff --git a/packages/snap/test/error.spec.ts b/packages/snap/test/error.spec.ts index 06a7b372..b2b8b343 100644 --- a/packages/snap/test/error.spec.ts +++ b/packages/snap/test/error.spec.ts @@ -6,7 +6,6 @@ const { test, expect } = createFixture({ isolated: false, downloadOptions: { flask: true, - tag: 'v11.16.5', }, snap: { id: 'local:http://localhost:8081', diff --git a/packages/snap/test/gas-estimate.spec.ts b/packages/snap/test/gas-estimate.spec.ts index 43bd60cb..fbd992be 100644 --- a/packages/snap/test/gas-estimate.spec.ts +++ b/packages/snap/test/gas-estimate.spec.ts @@ -9,7 +9,6 @@ const { test, expect } = createFixture({ isolated: false, downloadOptions: { flask: true, - tag: 'v11.16.5', }, snap: { id: 'local:http://localhost:8081', @@ -27,7 +26,8 @@ test.beforeAll(async ({ metamask, page }) => { }) const dialog = await metamask.waitForDialog('confirmation') - await dialog.getByRole('button').filter({ hasText: 'Approve' }).click() + await dialog.getByTestId('confirmation-submit-button').click() + await dialog.getByTestId('confirmation-submit-button').click() await req }) diff --git a/packages/snap/test/mainnet.spec.ts b/packages/snap/test/mainnet.spec.ts index 541bcc7b..15060ec4 100644 --- a/packages/snap/test/mainnet.spec.ts +++ b/packages/snap/test/mainnet.spec.ts @@ -5,7 +5,6 @@ const { test, expect } = createFixture({ isolated: false, downloadOptions: { flask: true, - tag: 'v11.16.5', }, snap: { id: 'local:http://localhost:8081', @@ -24,7 +23,8 @@ test.beforeAll(async ({ metamask, page }) => { }) const dialog = await metamask.waitForDialog('confirmation') - await dialog.getByRole('button').filter({ hasText: 'Approve' }).click() + await dialog.getByTestId('confirmation-submit-button').click() + await dialog.getByTestId('confirmation-submit-button').click() await req }) diff --git a/packages/snap/test/methods.spec.ts b/packages/snap/test/methods.spec.ts index 6ecc37b4..c7d0202c 100644 --- a/packages/snap/test/methods.spec.ts +++ b/packages/snap/test/methods.spec.ts @@ -17,7 +17,6 @@ const { test, expect } = createFixture({ isolated: false, downloadOptions: { flask: true, - tag: 'v11.16.5', }, snap: { id: 'local:http://localhost:8081', @@ -25,6 +24,7 @@ const { test, expect } = createFixture({ }) test.beforeAll(async ({ metamask, page }) => { + await metamask.page.getByTestId('confirmation-submit-button').click() const req = metamask.invokeSnap({ request: { method: 'fil_configure', @@ -36,8 +36,7 @@ test.beforeAll(async ({ metamask, page }) => { }) const dialog = await metamask.waitForDialog('confirmation') - await dialog.getByRole('button').filter({ hasText: 'Approve' }).click() - + await dialog.getByTestId('confirmation-submit-button').click() await req }) @@ -74,11 +73,11 @@ test.describe('filsnap testnet', () => { page, }) - const dialog1 = await metamask.waitForDialog('confirmation') - await dialog1.getByRole('button').filter({ hasText: 'Approve' }).click() + let popup = await metamask.waitForDialog('confirmation') + await popup.getByTestId('confirmation-submit-button').click() + popup = await metamask.waitForDialog('confirmation') + await popup.getByTestId('confirmation-submit-button').click() - const dialog2 = await metamask.waitForDialog('confirmation') - await dialog2.locator('.confirmation-footer__actions > button').click() const { result } = await privateKey expect(result).toBe(true) @@ -104,8 +103,8 @@ test.describe('filsnap testnet', () => { page, }) - const dialog = await metamask.waitForDialog('confirmation') - await dialog.getByRole('button').filter({ hasText: 'Approve' }).click() + const popup = await metamask.waitForDialog('confirmation') + await popup.getByTestId('confirmation-submit-button').click() const { result } = await signRaw expect(result).toStrictEqual( @@ -141,8 +140,8 @@ test.describe('filsnap testnet', () => { page, }) - const dialog = await metamask.waitForDialog('confirmation') - await dialog.getByRole('button').filter({ hasText: 'Approve' }).click() + const popup = await metamask.waitForDialog('confirmation') + await popup.getByTestId('confirmation-submit-button').click() const { result } = await sign if (result == null) { @@ -179,8 +178,8 @@ test.describe('filsnap testnet', () => { page, }) - const dialog = await metamask.waitForDialog('confirmation') - await dialog.getByRole('button').filter({ hasText: 'Approve' }).click() + const popup = await metamask.waitForDialog('confirmation') + await popup.getByTestId('confirmation-submit-button').click() const signedMessageResponse = await invoke if (signedMessageResponse.error != null) {