From 888ba349447531ebb7718ceb51411b82ca92b79c Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Wed, 19 Feb 2025 09:38:45 +0100 Subject: [PATCH 1/3] Fix tests and other minor issues --- .../examples/packages/bip32/snap.manifest.json | 2 +- .../examples/packages/bip44/snap.manifest.json | 2 +- .../packages/browserify-plugin/snap.manifest.json | 2 +- .../packages/browserify/snap.manifest.json | 2 +- .../examples/packages/cronjobs/snap.manifest.json | 2 +- .../examples/packages/dialogs/snap.manifest.json | 2 +- .../examples/packages/ethers-js/snap.manifest.json | 2 +- .../packages/get-entropy/snap.manifest.json | 2 +- .../examples/packages/images/snap.manifest.json | 2 +- .../packages/core-signer/snap.manifest.json | 2 +- .../packages/signature-insights/snap.manifest.json | 2 +- .../transaction-insights/snap.manifest.json | 2 +- packages/snaps-browserify-plugin/src/plugin.ts | 6 ++++-- .../src/types/vendor/readable-stream.d.ts | 9 ++------- packages/snaps-controllers/coverage.json | 4 ++-- packages/snaps-jest/src/internals/server.test.ts | 2 +- packages/snaps-jest/src/test-utils/response.ts | 1 + .../src/test-utils/snap/snap.manifest.json | 2 +- packages/snaps-simulation/src/files.test.ts | 14 +++++++------- 19 files changed, 30 insertions(+), 32 deletions(-) diff --git a/packages/examples/packages/bip32/snap.manifest.json b/packages/examples/packages/bip32/snap.manifest.json index f8086102f6..62b7cabfee 100644 --- a/packages/examples/packages/bip32/snap.manifest.json +++ b/packages/examples/packages/bip32/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "F7ivhZmdIvKZscE0qwB0R+xSc4HRTT0a95gMKeJl16Q=", + "shasum": "dzOD3mPn8PgVXC3LT3OtKqs09WIcvuYo/mIZGfhsTPw=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/bip44/snap.manifest.json b/packages/examples/packages/bip44/snap.manifest.json index f866ce1e47..7f013f7763 100644 --- a/packages/examples/packages/bip44/snap.manifest.json +++ b/packages/examples/packages/bip44/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "N5Q+VpmbEeHQaPvmkcVBFjklgZRtRQduE6DrpSsOOWg=", + "shasum": "t0+OXVvAOnJOEgxjLB9Gz9CtAhNJr0nj9WC7nEeEZUs=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/browserify-plugin/snap.manifest.json b/packages/examples/packages/browserify-plugin/snap.manifest.json index 0bbe45157c..7c1c084a28 100644 --- a/packages/examples/packages/browserify-plugin/snap.manifest.json +++ b/packages/examples/packages/browserify-plugin/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "2OBivoL7fIcLdItL+xVPHfXmQGRuTOivsbe64+GLQBs=", + "shasum": "F82zbRfEEnc1c86GZ4InV+zw8QWVrLUidEXAn9JEsQU=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/browserify/snap.manifest.json b/packages/examples/packages/browserify/snap.manifest.json index d148f70136..6bf7b04b1a 100644 --- a/packages/examples/packages/browserify/snap.manifest.json +++ b/packages/examples/packages/browserify/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "2nGjLyvpliG86yQdB2XXVd8sJRGVgZ5+G1u4VEu38ZI=", + "shasum": "1sJyCRTlEdkAIK1YhFlrKr10ANhP1JkHj6dO9TE2HNc=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/cronjobs/snap.manifest.json b/packages/examples/packages/cronjobs/snap.manifest.json index a4331b293d..ee89f69b01 100644 --- a/packages/examples/packages/cronjobs/snap.manifest.json +++ b/packages/examples/packages/cronjobs/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "cybkClzduKLQkOV9Xys+VqARKLhM2eNV1j2JWVBImsQ=", + "shasum": "cN0208xWa/KFZC1yxBzxI5kX8ippChcAvh6EktyVZc8=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/dialogs/snap.manifest.json b/packages/examples/packages/dialogs/snap.manifest.json index bfab68916a..ccc6996d41 100644 --- a/packages/examples/packages/dialogs/snap.manifest.json +++ b/packages/examples/packages/dialogs/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "s6P1F+6Smeqs9JtfkYqJirNEXQHBmG3rpuLfO5+d1SI=", + "shasum": "IYw+FXMDWsuPR9+Di86/XAyYLNKhGRD0V+cxpVRmE/k=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/ethers-js/snap.manifest.json b/packages/examples/packages/ethers-js/snap.manifest.json index e40f5f25b5..a438d4c19e 100644 --- a/packages/examples/packages/ethers-js/snap.manifest.json +++ b/packages/examples/packages/ethers-js/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "K+FpXp3Gdi9oVc1mtZvYc7fxgHV/azyRWrTKU5Cw0tA=", + "shasum": "Jlze2D18cQUFtRPMu4IbpSa+54YvNYgr1Sa7Jqj2tX4=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/get-entropy/snap.manifest.json b/packages/examples/packages/get-entropy/snap.manifest.json index 02df4b2f66..e15c1a34fd 100644 --- a/packages/examples/packages/get-entropy/snap.manifest.json +++ b/packages/examples/packages/get-entropy/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "tstA8WXQC7MJ0JSVZtXwKgUnsw2be2uHhzBAZ3lvsBE=", + "shasum": "lmkCL1vKbBcM9oIiHMkfGq1P7CATFx/fksf+kvlv+eU=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/images/snap.manifest.json b/packages/examples/packages/images/snap.manifest.json index e4e6ca2f7d..eed53d8c43 100644 --- a/packages/examples/packages/images/snap.manifest.json +++ b/packages/examples/packages/images/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "UQ7StQt/zx02mi9KSctaGDrRda9D8S4lpEisnHurpdI=", + "shasum": "CfLAZ5yE8Fpk5YX6CDSTVNHO6E6QikompdWug6768Oo=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/invoke-snap/packages/core-signer/snap.manifest.json b/packages/examples/packages/invoke-snap/packages/core-signer/snap.manifest.json index 7b12334912..0a953ad546 100644 --- a/packages/examples/packages/invoke-snap/packages/core-signer/snap.manifest.json +++ b/packages/examples/packages/invoke-snap/packages/core-signer/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "OM2JgZ2JWizvGRFKtFRmk0m5llAPB1onsd0DIZqgQDs=", + "shasum": "7/M6NL4m5ofiZWsPt9mXf095lXBwq81rEugAAiDMHiY=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/signature-insights/snap.manifest.json b/packages/examples/packages/signature-insights/snap.manifest.json index 5714779b66..a09a0251a8 100644 --- a/packages/examples/packages/signature-insights/snap.manifest.json +++ b/packages/examples/packages/signature-insights/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "aBna+Q/8uYXqPAam8KGHdJsUM1p9CQ/AKQZM4iUNZUo=", + "shasum": "Yv7P2vKDYmTXIHpy4TkFgUQhXAaLUSnvg6b2LZ+88OI=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/examples/packages/transaction-insights/snap.manifest.json b/packages/examples/packages/transaction-insights/snap.manifest.json index a6cf3a6ccf..22d1455410 100644 --- a/packages/examples/packages/transaction-insights/snap.manifest.json +++ b/packages/examples/packages/transaction-insights/snap.manifest.json @@ -7,7 +7,7 @@ "url": "https://github.com/MetaMask/snaps.git" }, "source": { - "shasum": "VZUO5kVGwedoq6iiiVOHODsE+MI+EvJQqiSabotepes=", + "shasum": "ndVs9qXJP41bolCI4yMyQ3RNSFMGkS7s8usi9Ieph0Y=", "location": { "npm": { "filePath": "dist/bundle.js", diff --git a/packages/snaps-browserify-plugin/src/plugin.ts b/packages/snaps-browserify-plugin/src/plugin.ts index b4d2066bf2..f74690df62 100644 --- a/packages/snaps-browserify-plugin/src/plugin.ts +++ b/packages/snaps-browserify-plugin/src/plugin.ts @@ -147,8 +147,10 @@ export class SnapsBrowserifyTransform extends Transform { postBundle(this.#options, result.code) .catch((error) => { - // Wrapped in `setTimeout` to avoid calling `callback` twice. - setTimeout(() => callback(error), 0); + // TODO: Either fix this lint violation or explain why it's necessary to + // ignore. + // eslint-disable-next-line promise/no-callback-in-promise + callback(error); }) .finally(() => { this.push(result.code); diff --git a/packages/snaps-browserify-plugin/src/types/vendor/readable-stream.d.ts b/packages/snaps-browserify-plugin/src/types/vendor/readable-stream.d.ts index 33ce8a7202..f254147714 100644 --- a/packages/snaps-browserify-plugin/src/types/vendor/readable-stream.d.ts +++ b/packages/snaps-browserify-plugin/src/types/vendor/readable-stream.d.ts @@ -1,9 +1,4 @@ declare module 'readable-stream' { - export type { - DuplexOptions, - Readable, - Writable, - TransformCallback, - } from 'stream'; - export { Transform, Duplex, pipeline } from 'stream'; + export type { DuplexOptions, Writable, TransformCallback } from 'stream'; + export { Readable, Transform, Duplex, pipeline } from 'stream'; } diff --git a/packages/snaps-controllers/coverage.json b/packages/snaps-controllers/coverage.json index 4f40812790..c73f8baa74 100644 --- a/packages/snaps-controllers/coverage.json +++ b/packages/snaps-controllers/coverage.json @@ -1,6 +1,6 @@ { "branches": 93.31, "functions": 97.05, - "lines": 98.2, - "statements": 97.93 + "lines": 98.25, + "statements": 97.98 } diff --git a/packages/snaps-jest/src/internals/server.test.ts b/packages/snaps-jest/src/internals/server.test.ts index a4ab5156fc..d366fb26ac 100644 --- a/packages/snaps-jest/src/internals/server.test.ts +++ b/packages/snaps-jest/src/internals/server.test.ts @@ -30,7 +30,7 @@ describe('startServer', () => { "registry": "https://registry.npmjs.org", }, }, - "shasum": "uaLwMO39qzKbshqPM6W2Ju7gkO/czuwgNKpjzXRXJj0=", + "shasum": "zp08CpwhlXWqh4cq0kjRownzH8Ujte70VVoiqikNKQs=", }, "version": "1.0.0", } diff --git a/packages/snaps-jest/src/test-utils/response.ts b/packages/snaps-jest/src/test-utils/response.ts index d525f9d48a..b316de1f40 100644 --- a/packages/snaps-jest/src/test-utils/response.ts +++ b/packages/snaps-jest/src/test-utils/response.ts @@ -48,5 +48,6 @@ export function getMockInterfaceResponse( selectFromRadioGroup: jest.fn(), selectFromSelector: jest.fn(), uploadFile: jest.fn(), + waitForUpdate: jest.fn(), }; } diff --git a/packages/snaps-jest/src/test-utils/snap/snap.manifest.json b/packages/snaps-jest/src/test-utils/snap/snap.manifest.json index e2dc9f902b..a239147c61 100644 --- a/packages/snaps-jest/src/test-utils/snap/snap.manifest.json +++ b/packages/snaps-jest/src/test-utils/snap/snap.manifest.json @@ -3,7 +3,7 @@ "description": "baz", "version": "1.0.0", "source": { - "shasum": "uaLwMO39qzKbshqPM6W2Ju7gkO/czuwgNKpjzXRXJj0=", + "shasum": "zp08CpwhlXWqh4cq0kjRownzH8Ujte70VVoiqikNKQs=", "location": { "npm": { "filePath": "snap.js", diff --git a/packages/snaps-simulation/src/files.test.ts b/packages/snaps-simulation/src/files.test.ts index 1b7fefc852..82a41d1890 100644 --- a/packages/snaps-simulation/src/files.test.ts +++ b/packages/snaps-simulation/src/files.test.ts @@ -57,7 +57,7 @@ describe('getFileSize', () => { it('returns the file size for a file path', async () => { expect( await getFileSize(resolve(__dirname, './test-utils/snap/snap.js')), - ).toBe(112); + ).toBe(73); }); }); @@ -73,9 +73,9 @@ describe('getFileToUpload', () => { expect(file).toStrictEqual({ name: 'bar.js', contentType: 'application/foo', - size: 112, + size: 73, contents: - 'Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGUKY29uc29sZS5sb2coJ0hlbGxvLCB3b3JsZCEnKTsKCm1vZHVsZS5leHBvcnRzLm9uUnBjUmVxdWVzdCA9ICgpID0+IG51bGw7Cg==', + 'Y29uc29sZS5sb2coJ0hlbGxvLCB3b3JsZCEnKTsKCm1vZHVsZS5leHBvcnRzLm9uUnBjUmVxdWVzdCA9ICgpID0+IG51bGw7Cg==', }); }); @@ -87,9 +87,9 @@ describe('getFileToUpload', () => { expect(file).toStrictEqual({ name: 'bar.js', contentType: 'application/javascript', - size: 112, + size: 73, contents: - 'Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGUKY29uc29sZS5sb2coJ0hlbGxvLCB3b3JsZCEnKTsKCm1vZHVsZS5leHBvcnRzLm9uUnBjUmVxdWVzdCA9ICgpID0+IG51bGw7Cg==', + 'Y29uc29sZS5sb2coJ0hlbGxvLCB3b3JsZCEnKTsKCm1vZHVsZS5leHBvcnRzLm9uUnBjUmVxdWVzdCA9ICgpID0+IG51bGw7Cg==', }); }); @@ -99,9 +99,9 @@ describe('getFileToUpload', () => { expect(file).toStrictEqual({ name: 'snap.js', contentType: 'application/javascript', - size: 112, + size: 73, contents: - 'Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGUKY29uc29sZS5sb2coJ0hlbGxvLCB3b3JsZCEnKTsKCm1vZHVsZS5leHBvcnRzLm9uUnBjUmVxdWVzdCA9ICgpID0+IG51bGw7Cg==', + 'Y29uc29sZS5sb2coJ0hlbGxvLCB3b3JsZCEnKTsKCm1vZHVsZS5leHBvcnRzLm9uUnBjUmVxdWVzdCA9ICgpID0+IG51bGw7Cg==', }); }); From 28676e68e7a1598acf524860c1c0f68ecb8a3db8 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Wed, 19 Feb 2025 09:49:01 +0100 Subject: [PATCH 2/3] Use `prettier-2` for Snaps Simulator --- packages/snaps-simulator/package.json | 1 + packages/snaps-simulator/src/features/builder/utils.ts | 4 ++-- yarn.lock | 3 ++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/snaps-simulator/package.json b/packages/snaps-simulator/package.json index 407fd4454d..9b5e2786f5 100644 --- a/packages/snaps-simulator/package.json +++ b/packages/snaps-simulator/package.json @@ -70,6 +70,7 @@ "lodash.memoize": "^4.1.2", "lodash.throttle": "^4.1.1", "monaco-editor": "^0.38.0", + "prettier-2": "npm:prettier@^2.7.1", "react": "^18.2.0", "react-dnd": "^16.0.1", "react-dom": "^18.2.0", diff --git a/packages/snaps-simulator/src/features/builder/utils.ts b/packages/snaps-simulator/src/features/builder/utils.ts index f42c96c663..0b05250e81 100644 --- a/packages/snaps-simulator/src/features/builder/utils.ts +++ b/packages/snaps-simulator/src/features/builder/utils.ts @@ -19,8 +19,8 @@ import { import { is } from '@metamask/superstruct'; import { assert, hasProperty } from '@metamask/utils'; import type { NodeModel } from '@minoru/react-dnd-treeview'; -import typescript from 'prettier/parser-typescript'; -import { format } from 'prettier/standalone'; +import typescript from 'prettier-2/parser-typescript'; +import { format } from 'prettier-2/standalone'; /** * Get the text of a node model. diff --git a/yarn.lock b/yarn.lock index ace22f784e..5bd39ac707 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5733,6 +5733,7 @@ __metadata: monaco-editor: "npm:^0.38.0" monaco-editor-webpack-plugin: "npm:^7.0.1" prettier: "npm:^3.3.3" + prettier-2: "npm:prettier@^2.7.1" process: "npm:^0.11.10" react: "npm:^18.2.0" react-dnd: "npm:^16.0.1" @@ -18472,7 +18473,7 @@ __metadata: languageName: node linkType: hard -"prettier-2@npm:prettier@^2.8.8": +"prettier-2@npm:prettier@^2.7.1, prettier-2@npm:prettier@^2.8.8": version: 2.8.8 resolution: "prettier@npm:2.8.8" bin: From dd73c6d9d2436edd5a2592f40f108ed5d6932cf7 Mon Sep 17 00:00:00 2001 From: Maarten Zuidhoorn Date: Wed, 19 Feb 2025 10:00:00 +0100 Subject: [PATCH 3/3] Fix snaps-jest issue --- packages/snaps-jest/src/matchers.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/snaps-jest/src/matchers.ts b/packages/snaps-jest/src/matchers.ts index 2bfeb9e86c..4507d76cb1 100644 --- a/packages/snaps-jest/src/matchers.ts +++ b/packages/snaps-jest/src/matchers.ts @@ -333,7 +333,9 @@ const toRenderLegacy: MatcherFunction<[expected: Component]> = function ( }; export const toRender: MatcherFunction<[expected: ComponentOrElement]> = - async function (actual, expected) { + // This should not return a promise. + // eslint-disable-next-line @typescript-eslint/promise-function-async + function (actual, expected) { assertHasInterface(actual, 'toRender'); if (!isJSXElementUnsafe(expected)) {