From 51274050633e42e5d45eaba3c287bb7eaf142199 Mon Sep 17 00:00:00 2001 From: "fred.tran" Date: Fri, 22 Nov 2024 16:15:50 +0800 Subject: [PATCH 1/9] chore: clean up tests and typings for jest matchers --- packages/react/jest.config.ts | 2 +- packages/react/jest.setup.js | 2 -- packages/react/jest.setup.ts | 23 +++++++++++++++++++ packages/react/src/__tests__/context.test.tsx | 12 ++-------- packages/react/src/__tests__/init.test.ts | 5 ---- .../src/__tests__/useConnectWallet.test.tsx | 20 +++++++--------- .../src/__tests__/useExternalStore.test.tsx | 16 ++----------- tsconfig.base.json | 3 ++- 8 files changed, 38 insertions(+), 45 deletions(-) delete mode 100644 packages/react/jest.setup.js create mode 100644 packages/react/jest.setup.ts diff --git a/packages/react/jest.config.ts b/packages/react/jest.config.ts index 04934fc6..faa3d90d 100644 --- a/packages/react/jest.config.ts +++ b/packages/react/jest.config.ts @@ -146,7 +146,7 @@ const config: JestConfigWithTsJest = { // setupFiles: [], // A list of paths to modules that run some code to configure or set up the testing framework before each test - setupFilesAfterEnv: ['/jest.setup.js'], + setupFilesAfterEnv: ['/jest.setup.ts'], // The number of seconds after which a test is considered as slow and reported as such in the results. // slowTestThreshold: 5, diff --git a/packages/react/jest.setup.js b/packages/react/jest.setup.js deleted file mode 100644 index cc559f67..00000000 --- a/packages/react/jest.setup.js +++ /dev/null @@ -1,2 +0,0 @@ -import '@testing-library/jest-dom'; -global.fetch = require('node-fetch'); diff --git a/packages/react/jest.setup.ts b/packages/react/jest.setup.ts new file mode 100644 index 00000000..446173b6 --- /dev/null +++ b/packages/react/jest.setup.ts @@ -0,0 +1,23 @@ +// In your own jest-setup.js (or any other name) +import '@testing-library/jest-dom'; +global.fetch = require('node-fetch'); +import { type IBridgeAPI } from '@aelf-web-login/wallet-adapter-bridge'; + +jest.mock('@aelf-web-login/wallet-adapter-bridge', () => ({ + initBridge: jest.fn().mockReturnValue({ + getSignIn: jest.fn((children) => children), + store: { + getState: () => null, + subscribe: () => null, + }, + instance: {} as IBridgeAPI['instance'], + mountApp: () => null, + unMountApp: () => null, + }), +})); + +jest.mock('@aelf-web-login/wallet-adapter-portkey-aa', () => ({ + PortkeyAAWallet: jest.fn(), +})); + +jest.mock('vconsole'); diff --git a/packages/react/src/__tests__/context.test.tsx b/packages/react/src/__tests__/context.test.tsx index 5cb65d73..72986569 100644 --- a/packages/react/src/__tests__/context.test.tsx +++ b/packages/react/src/__tests__/context.test.tsx @@ -14,19 +14,10 @@ const mockBridgeAPI: IBridgeAPI = { unMountApp: () => null, }; -jest.mock('@aelf-web-login/wallet-adapter-bridge', () => ({ - initBridge: jest.fn().mockReturnValue({ - getSignIn: jest.fn((children) => children), - }), -})); - -jest.mock('@aelf-web-login/wallet-adapter-portkey-aa', () => ({ - PortkeyAAWallet: jest.fn(), -})); - describe('WebLoginProvider', () => { it('should render children with provided bridgeAPI', () => { render( + // @ts-expect-error passing invalid props on purpose
Test Child
, @@ -47,6 +38,7 @@ describe('WebLoginProvider', () => { it('should return null if no bridgeAPI nor config', () => { const { container } = render( + // @ts-expect-error passing invalid props on purpose
Test Child
, diff --git a/packages/react/src/__tests__/init.test.ts b/packages/react/src/__tests__/init.test.ts index fb56a67e..202a308b 100644 --- a/packages/react/src/__tests__/init.test.ts +++ b/packages/react/src/__tests__/init.test.ts @@ -1,10 +1,5 @@ -// import { initBridge, IConfigProps, IBridgeAPI } from '@aelf-web-login/wallet-adapter-bridge'; import { init } from '../index'; import { initBridge } from '@aelf-web-login/wallet-adapter-bridge'; -jest.mock('vconsole'); -jest.mock('@aelf-web-login/wallet-adapter-bridge', () => ({ - initBridge: jest.fn(), -})); describe('init', () => { it('should initialize VConsole if showVconsole is true', async () => { diff --git a/packages/react/src/__tests__/useConnectWallet.test.tsx b/packages/react/src/__tests__/useConnectWallet.test.tsx index aa2ad3e2..0540fd5f 100644 --- a/packages/react/src/__tests__/useConnectWallet.test.tsx +++ b/packages/react/src/__tests__/useConnectWallet.test.tsx @@ -1,22 +1,18 @@ import { render } from '@testing-library/react'; import useConnectWallet from '../useConnectWallet'; import { WebLoginProvider } from '../context'; -import { IBridgeAPI } from '@aelf-web-login/wallet-adapter-bridge'; +import config from '../data/config'; -jest.mock('@aelf-web-login/wallet-adapter-bridge', () => ({ - initBridge: jest.fn(), -})); - -const mockBridgeAPI: IBridgeAPI = { - getSignIn: jest.fn((children) => children), +jest.mock('../useExternalStore', () => () => ({ store: { getState: () => null, subscribe: () => null, }, - instance: { - connect: () => null, - }, -}; +})); + +beforeEach(() => { + jest.clearAllMocks(); +}); const Comp = () => { useConnectWallet(); @@ -25,7 +21,7 @@ const Comp = () => { describe('useConnectWallet', () => { it('should render hook', () => { render( - + , ); diff --git a/packages/react/src/__tests__/useExternalStore.test.tsx b/packages/react/src/__tests__/useExternalStore.test.tsx index 93f32ed2..f05ecc77 100644 --- a/packages/react/src/__tests__/useExternalStore.test.tsx +++ b/packages/react/src/__tests__/useExternalStore.test.tsx @@ -1,19 +1,7 @@ import { render } from '@testing-library/react'; import useExternalStore from '../useExternalStore'; import { WebLoginProvider } from '../context'; -import { IBridgeAPI } from '@aelf-web-login/wallet-adapter-bridge'; - -jest.mock('@aelf-web-login/wallet-adapter-bridge', () => ({ - initBridge: jest.fn(), -})); - -const mockBridgeAPI: Partial = { - getSignIn: jest.fn((children) => children), - store: { - getState: () => null, - subscribe: () => null, - }, -}; +import config from '../data/config'; const Comp = () => { useExternalStore(); @@ -22,7 +10,7 @@ const Comp = () => { describe('useExternalStore', () => { it('should render hook', () => { render( - + , ); diff --git a/tsconfig.base.json b/tsconfig.base.json index a18a573d..ef8fe15d 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -26,6 +26,7 @@ "./packages/wallets/portkey-discover/src" ], "@aelf-web-login/wallet-adapter-night-elf": ["./packages/wallets/night-elf/src"] - } + }, + "types": ["node", "jest", "@testing-library/jest-dom"] } } From 57f4f6570a7c996ec0ef2fecd3942c9e25113876 Mon Sep 17 00:00:00 2001 From: "fred.tran" Date: Fri, 22 Nov 2024 17:27:40 +0800 Subject: [PATCH 2/9] chore: add initial tests for packages/bridge --- packages/bridge/package.json | 11 +- pnpm-lock.yaml | 301 +++++++++++++++++++++++++++-------- 2 files changed, 241 insertions(+), 71 deletions(-) diff --git a/packages/bridge/package.json b/packages/bridge/package.json index 85465e60..39852a0f 100755 --- a/packages/bridge/package.json +++ b/packages/bridge/package.json @@ -25,7 +25,11 @@ ], "scripts": { "dev": "father dev", - "build": "father build" + "build": "father build", + "test": "NODE_OPTIONS='$NODE_OPTIONS --experimental-vm-modules' jest", + "test:dev": "pnpm test -- --watch", + "test:coverage": "pnpm test -- --coverage", + "test:debug": "pnpm test -- --detectOpenHandles" }, "dependencies": { "@aelf-web-login/wallet-adapter-base": "workspace:*", @@ -43,7 +47,10 @@ "@types/react-dom": "^18.3.0", "antd": "4.24.14", "father": "^4.3.8", - "typescript": "^5.3.3" + "typescript": "^5.3.3", + "@swc/core": "^1.9.3", + "@swc/jest": "^0.2.37", + "jest": "^29.7.0" }, "peerDependencies": { "@portkey/did-ui-react": "^2.15.9" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ef392b57..5d2ad048 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -114,7 +114,7 @@ importers: version: 29.7.0(@babel/core@7.25.2) jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.7.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.3.72(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2)) + version: 29.7.0(@types/node@22.7.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.3(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2)) jest-environment-jsdom: specifier: ^29.7.0 version: 29.7.0 @@ -158,6 +158,12 @@ importers: '@portkey/utils': specifier: ^2.15.9 version: 2.15.9(@portkey/request@2.15.9)(aelf-sdk@3.4.16-alpha.7(@babel/core@7.25.2)(encoding@0.1.13)(eslint@8.57.1))(query-string@7.1.3) + '@swc/core': + specifier: ^1.9.3 + version: 1.9.3(@swc/helpers@0.5.1) + '@swc/jest': + specifier: ^0.2.37 + version: 0.2.37(@swc/core@1.9.3(@swc/helpers@0.5.1)) '@types/react': specifier: ^18.3.1 version: 18.3.9 @@ -169,7 +175,10 @@ importers: version: 4.24.14(react-dom@18.3.1(react@18.3.1))(react@18.3.1) father: specifier: ^4.3.8 - version: 4.5.0(@babel/core@7.25.2)(@types/node@22.7.3)(styled-components@6.1.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(type-fest@0.21.3)(webpack@5.95.0) + version: 4.5.0(@babel/core@7.25.2)(@types/node@22.7.3)(styled-components@6.1.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(type-fest@0.21.3)(webpack@5.95.0(@swc/core@1.9.3(@swc/helpers@0.5.1))) + jest: + specifier: ^29.7.0 + version: 29.7.0(@types/node@22.7.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.3(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2)) typescript: specifier: ^5.3.3 version: 5.6.2 @@ -224,10 +233,10 @@ importers: version: 29.7.0(@babel/core@7.25.2) father: specifier: ^4.3.8 - version: 4.5.0(@babel/core@7.25.2)(@types/node@22.7.3)(styled-components@6.1.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(type-fest@0.21.3)(webpack@5.95.0(@swc/core@1.3.72(@swc/helpers@0.5.1))) + version: 4.5.0(@babel/core@7.25.2)(@types/node@22.7.3)(styled-components@6.1.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(type-fest@0.21.3)(webpack@5.95.0(@swc/core@1.9.3(@swc/helpers@0.5.1))) jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.7.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.3.72(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2)) + version: 29.7.0(@types/node@22.7.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.3(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2)) jest-junit: specifier: ^16.0.0 version: 16.0.0 @@ -239,7 +248,7 @@ importers: version: 18.3.1(react@18.3.1) ts-jest: specifier: ^29.2.5 - version: 29.2.5(@babel/core@7.25.2)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.2))(jest@29.7.0(@types/node@22.7.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.3.72(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2)))(typescript@5.6.2) + version: 29.2.5(@babel/core@7.25.2)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.2))(jest@29.7.0(@types/node@22.7.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.3(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2)))(typescript@5.6.2) typescript: specifier: ^5.3.3 version: 5.6.2 @@ -291,7 +300,7 @@ importers: version: 18.3.0 '@umijs/lint': specifier: ^4.0.0 - version: 4.3.24(eslint@8.57.1)(jest@29.7.0(@types/node@22.7.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.3.72(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2)))(stylelint@14.16.1)(typescript@5.6.2) + version: 4.3.24(eslint@8.57.1)(jest@29.7.0(@types/node@22.7.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.3(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2)))(stylelint@14.16.1)(typescript@5.6.2) aelf-design: specifier: ^1.1.1 version: 1.1.1(@types/react@18.3.9)(antd@5.18.0(date-fns@2.30.0)(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -300,13 +309,13 @@ importers: version: 5.18.0(date-fns@2.30.0)(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) dumi: specifier: 2.2.17 - version: 2.2.17(@babel/core@7.25.2)(@swc/helpers@0.5.1)(@types/node@22.7.3)(@types/react@18.3.9)(eslint@8.57.1)(jest@29.7.0(@types/node@22.7.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.3.72(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2)))(lightningcss@1.22.1)(prettier@3.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@3.29.5)(stylelint@14.16.1)(terser@5.34.0)(type-fest@0.21.3)(typescript@5.6.2)(webpack@5.95.0(@swc/core@1.3.72(@swc/helpers@0.5.1))) + version: 2.2.17(@babel/core@7.25.2)(@swc/helpers@0.5.1)(@types/node@22.7.3)(@types/react@18.3.9)(eslint@8.57.1)(jest@29.7.0(@types/node@22.7.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.3(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2)))(lightningcss@1.22.1)(prettier@3.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@3.29.5)(stylelint@14.16.1)(terser@5.34.0)(type-fest@0.21.3)(typescript@5.6.2)(webpack@5.95.0(@swc/core@1.9.3(@swc/helpers@0.5.1))) eslint: specifier: ^8.23.0 version: 8.57.1 father: specifier: ^4.1.0 - version: 4.5.0(@babel/core@7.25.2)(@types/node@22.7.3)(styled-components@6.1.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(type-fest@0.21.3)(webpack@5.95.0(@swc/core@1.3.72(@swc/helpers@0.5.1))) + version: 4.5.0(@babel/core@7.25.2)(@types/node@22.7.3)(styled-components@6.1.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(type-fest@0.21.3)(webpack@5.95.0(@swc/core@1.9.3(@swc/helpers@0.5.1))) glob: specifier: ^10.3.12 version: 10.4.5 @@ -388,13 +397,13 @@ importers: version: 29.7.0(@babel/core@7.25.2) father: specifier: ^4.3.8 - version: 4.5.0(@babel/core@7.25.2)(@types/node@22.7.3)(styled-components@6.1.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(type-fest@0.21.3)(webpack@5.95.0(@swc/core@1.3.72(@swc/helpers@0.5.1))) + version: 4.5.0(@babel/core@7.25.2)(@types/node@22.7.3)(styled-components@6.1.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(type-fest@0.21.3)(webpack@5.95.0(@swc/core@1.9.3(@swc/helpers@0.5.1))) identity-obj-proxy: specifier: ^3.0.0 version: 3.0.0 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.7.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.3.72(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2)) + version: 29.7.0(@types/node@22.7.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.3(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2)) jest-canvas-mock: specifier: ^2.5.2 version: 2.5.2 @@ -406,7 +415,7 @@ importers: version: 16.0.0 ts-node: specifier: ^10.9.2 - version: 10.9.2(@swc/core@1.3.72(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2) + version: 10.9.2(@swc/core@1.9.3(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2) typescript: specifier: ^5.3.3 version: 5.6.2 @@ -2399,6 +2408,10 @@ packages: node-notifier: optional: true + '@jest/create-cache-key-function@29.7.0': + resolution: {integrity: sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/environment@29.7.0': resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -3312,60 +3325,120 @@ packages: cpu: [arm64] os: [darwin] + '@swc/core-darwin-arm64@1.9.3': + resolution: {integrity: sha512-hGfl/KTic/QY4tB9DkTbNuxy5cV4IeejpPD4zo+Lzt4iLlDWIeANL4Fkg67FiVceNJboqg48CUX+APhDHO5G1w==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + '@swc/core-darwin-x64@1.3.72': resolution: {integrity: sha512-y5O/WQ1g0/VfTgeNahWIOutbdD5U2Gi703jaefdcoJo3FUx8WU108QQdbVGwGMgaqapo3iQB6Qs9paixYQAYsA==} engines: {node: '>=10'} cpu: [x64] os: [darwin] + '@swc/core-darwin-x64@1.9.3': + resolution: {integrity: sha512-IaRq05ZLdtgF5h9CzlcgaNHyg4VXuiStnOFpfNEMuI5fm5afP2S0FHq8WdakUz5WppsbddTdplL+vpeApt/WCQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + '@swc/core-linux-arm-gnueabihf@1.3.72': resolution: {integrity: sha512-05JdWcso0OomHF+7bk5MBDgI8MZ9skcQ/4nhSv5gboSgSiuBmKM15Bg3lZ5iAUwGByNj7pGkSmmd3YwTrXEB+g==} engines: {node: '>=10'} cpu: [arm] os: [linux] + '@swc/core-linux-arm-gnueabihf@1.9.3': + resolution: {integrity: sha512-Pbwe7xYprj/nEnZrNBvZfjnTxlBIcfApAGdz2EROhjpPj+FBqBa3wOogqbsuGGBdCphf8S+KPprL1z+oDWkmSQ==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + '@swc/core-linux-arm64-gnu@1.3.72': resolution: {integrity: sha512-8qRELJaeYshhJgqvyOeXCKqBOpai+JYdWuouMbvvDUL85j3OcZhzR+bipexEbbJKcOCdRnoYB7Qg6mjqZ0t7VA==} engines: {node: '>=10'} cpu: [arm64] os: [linux] + '@swc/core-linux-arm64-gnu@1.9.3': + resolution: {integrity: sha512-AQ5JZiwNGVV/2K2TVulg0mw/3LYfqpjZO6jDPtR2evNbk9Yt57YsVzS+3vHSlUBQDRV9/jqMuZYVU3P13xrk+g==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + '@swc/core-linux-arm64-musl@1.3.72': resolution: {integrity: sha512-tOqAGZw+Pe7YrBHFrwFVyRiKqjgjzwYbJmY+UDxLrzWrZSVtC3eO2TPrp7kWmhirg40Og81BbdfRAl8ds48w0Q==} engines: {node: '>=10'} cpu: [arm64] os: [linux] + '@swc/core-linux-arm64-musl@1.9.3': + resolution: {integrity: sha512-tzVH480RY6RbMl/QRgh5HK3zn1ZTFsThuxDGo6Iuk1MdwIbdFYUY034heWUTI4u3Db97ArKh0hNL0xhO3+PZdg==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + '@swc/core-linux-x64-gnu@1.3.72': resolution: {integrity: sha512-U2W2xWR3s9nplGVWz376GiBlcLTgxyYKlpZPBNZk0w3OvTcjKC62gW1Pe7PUkk4NgJUnaQDBa/mb4V4Zl+GZPA==} engines: {node: '>=10'} cpu: [x64] os: [linux] + '@swc/core-linux-x64-gnu@1.9.3': + resolution: {integrity: sha512-ivXXBRDXDc9k4cdv10R21ccBmGebVOwKXT/UdH1PhxUn9m/h8erAWjz5pcELwjiMf27WokqPgaWVfaclDbgE+w==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + '@swc/core-linux-x64-musl@1.3.72': resolution: {integrity: sha512-3+2dUiZBsifKgvnFEHWdysXjInK8K+BfPBw2tTZJmq1+fZLt0rvuErYDVMLfIJnVWLCcJMnDtTXrvkFV1y/6iA==} engines: {node: '>=10'} cpu: [x64] os: [linux] + '@swc/core-linux-x64-musl@1.9.3': + resolution: {integrity: sha512-ILsGMgfnOz1HwdDz+ZgEuomIwkP1PHT6maigZxaCIuC6OPEhKE8uYna22uU63XvYcLQvZYDzpR3ms47WQPuNEg==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + '@swc/core-win32-arm64-msvc@1.3.72': resolution: {integrity: sha512-ndI8xZ2AId806D25xgqw2SFJ9gc/jhg21+5hA8XPq9ZL+oDiaYDztaP3ijVmZ1G5xXKD9DpgB7xmylv/f6o6GA==} engines: {node: '>=10'} cpu: [arm64] os: [win32] + '@swc/core-win32-arm64-msvc@1.9.3': + resolution: {integrity: sha512-e+XmltDVIHieUnNJHtspn6B+PCcFOMYXNJB1GqoCcyinkEIQNwC8KtWgMqUucUbEWJkPc35NHy9k8aCXRmw9Kg==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + '@swc/core-win32-ia32-msvc@1.3.72': resolution: {integrity: sha512-F3TK8JHP3SRFjLRlzcRVZPnvvGm2CQ5/cwbIkaEq0Dla3kyctU8SiRqvtYwWCW4JuY10cUygIg93Ec/C9Lkk4g==} engines: {node: '>=10'} cpu: [ia32] os: [win32] + '@swc/core-win32-ia32-msvc@1.9.3': + resolution: {integrity: sha512-rqpzNfpAooSL4UfQnHhkW8aL+oyjqJniDP0qwZfGnjDoJSbtPysHg2LpcOBEdSnEH+uIZq6J96qf0ZFD8AGfXA==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + '@swc/core-win32-x64-msvc@1.3.72': resolution: {integrity: sha512-FXMnIUtLl0yEmGkw+xbUg/uUPExvUxUlLSHbX7CnbSuOIHqMHzvEd9skIueLAst4bvmJ8kT1hDyAIWQcTIAJYQ==} engines: {node: '>=10'} cpu: [x64] os: [win32] + '@swc/core-win32-x64-msvc@1.9.3': + resolution: {integrity: sha512-3YJJLQ5suIEHEKc1GHtqVq475guiyqisKSoUnoaRtxkDaW5g1yvPt9IoSLOe2mRs7+FFhGGU693RsBUSwOXSdQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + '@swc/core@1.3.72': resolution: {integrity: sha512-+AKjwLH3/STfPrd7CHzB9+NG1FVT0UKJMUChuWq9sQ8b9xlV8vUeRgZXgh/EHYvNQgl/OUTQKtL6xU2yOLuEuA==} engines: {node: '>=10'} @@ -3375,9 +3448,30 @@ packages: '@swc/helpers': optional: true + '@swc/core@1.9.3': + resolution: {integrity: sha512-oRj0AFePUhtatX+BscVhnzaAmWjpfAeySpM1TCbxA1rtBDeH/JDhi5yYzAKneDYtVtBvA7ApfeuzhMC9ye4xSg==} + engines: {node: '>=10'} + peerDependencies: + '@swc/helpers': '*' + peerDependenciesMeta: + '@swc/helpers': + optional: true + + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + '@swc/helpers@0.5.1': resolution: {integrity: sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==} + '@swc/jest@0.2.37': + resolution: {integrity: sha512-CR2BHhmXKGxTiFr21DYPRHQunLkX3mNIFGFkxBGji6r9uyIR5zftTOVYj1e0sFNMV2H7mf/+vpaglqaryBtqfQ==} + engines: {npm: '>= 7.0.0'} + peerDependencies: + '@swc/core': '*' + + '@swc/types@0.1.17': + resolution: {integrity: sha512-V5gRru+aD8YVyCOMAjMpWR1Ui577DD5KSJsHP8RAxopAH22jFz6GZd/qxqjO6MJHQhcsjvjOFXyDhyLQUnMveQ==} + '@testing-library/dom@10.4.0': resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} engines: {node: '>=18'} @@ -7165,6 +7259,9 @@ packages: engines: {node: '>=6'} hasBin: true + jsonc-parser@3.3.1: + resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} + jsonfile@3.0.1: resolution: {integrity: sha512-oBko6ZHlubVB5mRFkur5vgYR1UyqX+S6Y/oCfLhqNdcc2fYFlDpIoNc7AfKS1KOGcnNAkvsr0grLck9ANM815w==} @@ -13575,7 +13672,7 @@ snapshots: jest-util: 29.7.0 slash: 3.0.0 - '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.3.72(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2))': + '@jest/core@29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.3(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2))': dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0 @@ -13589,7 +13686,7 @@ snapshots: exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@22.7.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.3.72(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2)) + jest-config: 29.7.0(@types/node@22.7.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.3(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -13610,6 +13707,10 @@ snapshots: - supports-color - ts-node + '@jest/create-cache-key-function@29.7.0': + dependencies: + '@jest/types': 29.6.3 + '@jest/environment@29.7.0': dependencies: '@jest/fake-timers': 29.7.0 @@ -15014,33 +15115,63 @@ snapshots: '@swc/core-darwin-arm64@1.3.72': optional: true + '@swc/core-darwin-arm64@1.9.3': + optional: true + '@swc/core-darwin-x64@1.3.72': optional: true + '@swc/core-darwin-x64@1.9.3': + optional: true + '@swc/core-linux-arm-gnueabihf@1.3.72': optional: true + '@swc/core-linux-arm-gnueabihf@1.9.3': + optional: true + '@swc/core-linux-arm64-gnu@1.3.72': optional: true + '@swc/core-linux-arm64-gnu@1.9.3': + optional: true + '@swc/core-linux-arm64-musl@1.3.72': optional: true + '@swc/core-linux-arm64-musl@1.9.3': + optional: true + '@swc/core-linux-x64-gnu@1.3.72': optional: true + '@swc/core-linux-x64-gnu@1.9.3': + optional: true + '@swc/core-linux-x64-musl@1.3.72': optional: true + '@swc/core-linux-x64-musl@1.9.3': + optional: true + '@swc/core-win32-arm64-msvc@1.3.72': optional: true + '@swc/core-win32-arm64-msvc@1.9.3': + optional: true + '@swc/core-win32-ia32-msvc@1.3.72': optional: true + '@swc/core-win32-ia32-msvc@1.9.3': + optional: true + '@swc/core-win32-x64-msvc@1.3.72': optional: true + '@swc/core-win32-x64-msvc@1.9.3': + optional: true + '@swc/core@1.3.72(@swc/helpers@0.5.1)': optionalDependencies: '@swc/core-darwin-arm64': 1.3.72 @@ -15055,10 +15186,40 @@ snapshots: '@swc/core-win32-x64-msvc': 1.3.72 '@swc/helpers': 0.5.1 + '@swc/core@1.9.3(@swc/helpers@0.5.1)': + dependencies: + '@swc/counter': 0.1.3 + '@swc/types': 0.1.17 + optionalDependencies: + '@swc/core-darwin-arm64': 1.9.3 + '@swc/core-darwin-x64': 1.9.3 + '@swc/core-linux-arm-gnueabihf': 1.9.3 + '@swc/core-linux-arm64-gnu': 1.9.3 + '@swc/core-linux-arm64-musl': 1.9.3 + '@swc/core-linux-x64-gnu': 1.9.3 + '@swc/core-linux-x64-musl': 1.9.3 + '@swc/core-win32-arm64-msvc': 1.9.3 + '@swc/core-win32-ia32-msvc': 1.9.3 + '@swc/core-win32-x64-msvc': 1.9.3 + '@swc/helpers': 0.5.1 + + '@swc/counter@0.1.3': {} + '@swc/helpers@0.5.1': dependencies: tslib: 2.7.0 + '@swc/jest@0.2.37(@swc/core@1.9.3(@swc/helpers@0.5.1))': + dependencies: + '@jest/create-cache-key-function': 29.7.0 + '@swc/core': 1.9.3(@swc/helpers@0.5.1) + '@swc/counter': 0.1.3 + jsonc-parser: 3.3.1 + + '@swc/types@0.1.17': + dependencies: + '@swc/counter': 0.1.3 + '@testing-library/dom@10.4.0': dependencies: '@babel/code-frame': 7.24.7 @@ -15535,7 +15696,7 @@ snapshots: - supports-color - terser - '@umijs/bundler-webpack@4.3.24(type-fest@0.21.3)(typescript@5.3.3)(webpack@5.95.0(@swc/core@1.3.72(@swc/helpers@0.5.1)))': + '@umijs/bundler-webpack@4.3.24(type-fest@0.21.3)(typescript@5.3.3)(webpack@5.95.0(@swc/core@1.9.3(@swc/helpers@0.5.1)))': dependencies: '@svgr/core': 6.5.1 '@svgr/plugin-jsx': 6.5.1(@svgr/core@6.5.1) @@ -15545,12 +15706,12 @@ snapshots: '@umijs/bundler-utils': 4.3.24 '@umijs/case-sensitive-paths-webpack-plugin': 1.0.1 '@umijs/mfsu': 4.3.24 - '@umijs/react-refresh-webpack-plugin': 0.5.11(react-refresh@0.14.0)(type-fest@0.21.3)(webpack@5.95.0(@swc/core@1.3.72(@swc/helpers@0.5.1))) + '@umijs/react-refresh-webpack-plugin': 0.5.11(react-refresh@0.14.0)(type-fest@0.21.3)(webpack@5.95.0(@swc/core@1.9.3(@swc/helpers@0.5.1))) '@umijs/utils': 4.3.24 cors: 2.8.5 - css-loader: 6.7.1(webpack@5.95.0(@swc/core@1.3.72(@swc/helpers@0.5.1))) + css-loader: 6.7.1(webpack@5.95.0(@swc/core@1.9.3(@swc/helpers@0.5.1))) es5-imcompatible-versions: 0.1.90 - fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.3.3)(webpack@5.95.0(@swc/core@1.3.72(@swc/helpers@0.5.1))) + fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.3.3)(webpack@5.95.0(@swc/core@1.9.3(@swc/helpers@0.5.1))) jest-worker: 29.4.3 lightningcss: 1.22.1 node-libs-browser: 2.2.1 @@ -15603,7 +15764,7 @@ snapshots: - webpack-hot-middleware - webpack-plugin-serve - '@umijs/bundler-webpack@4.3.24(type-fest@0.21.3)(typescript@5.6.2)(webpack@5.95.0(@swc/core@1.3.72(@swc/helpers@0.5.1)))': + '@umijs/bundler-webpack@4.3.24(type-fest@0.21.3)(typescript@5.6.2)(webpack@5.95.0(@swc/core@1.9.3(@swc/helpers@0.5.1)))': dependencies: '@svgr/core': 6.5.1 '@svgr/plugin-jsx': 6.5.1(@svgr/core@6.5.1) @@ -15613,12 +15774,12 @@ snapshots: '@umijs/bundler-utils': 4.3.24 '@umijs/case-sensitive-paths-webpack-plugin': 1.0.1 '@umijs/mfsu': 4.3.24 - '@umijs/react-refresh-webpack-plugin': 0.5.11(react-refresh@0.14.0)(type-fest@0.21.3)(webpack@5.95.0(@swc/core@1.3.72(@swc/helpers@0.5.1))) + '@umijs/react-refresh-webpack-plugin': 0.5.11(react-refresh@0.14.0)(type-fest@0.21.3)(webpack@5.95.0(@swc/core@1.9.3(@swc/helpers@0.5.1))) '@umijs/utils': 4.3.24 cors: 2.8.5 - css-loader: 6.7.1(webpack@5.95.0(@swc/core@1.3.72(@swc/helpers@0.5.1))) + css-loader: 6.7.1(webpack@5.95.0(@swc/core@1.9.3(@swc/helpers@0.5.1))) es5-imcompatible-versions: 0.1.90 - fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.6.2)(webpack@5.95.0(@swc/core@1.3.72(@swc/helpers@0.5.1))) + fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.6.2)(webpack@5.95.0(@swc/core@1.9.3(@swc/helpers@0.5.1))) jest-worker: 29.4.3 lightningcss: 1.22.1 node-libs-browser: 2.2.1 @@ -15692,7 +15853,7 @@ snapshots: '@babel/runtime': 7.25.6 query-string: 6.14.1 - '@umijs/lint@4.3.24(eslint@8.57.1)(jest@29.7.0(@types/node@22.7.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.3.72(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2)))(stylelint@14.16.1)(typescript@5.6.2)': + '@umijs/lint@4.3.24(eslint@8.57.1)(jest@29.7.0(@types/node@22.7.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.3(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2)))(stylelint@14.16.1)(typescript@5.6.2)': dependencies: '@babel/core': 7.25.2 '@babel/eslint-parser': 7.23.3(@babel/core@7.25.2)(eslint@8.57.1) @@ -15700,7 +15861,7 @@ snapshots: '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.6.2))(eslint@8.57.1)(typescript@5.6.2) '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.6.2) '@umijs/babel-preset-umi': 4.3.24 - eslint-plugin-jest: 27.2.3(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.6.2))(eslint@8.57.1)(typescript@5.6.2))(eslint@8.57.1)(jest@29.7.0(@types/node@22.7.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.3.72(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2)))(typescript@5.6.2) + eslint-plugin-jest: 27.2.3(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.6.2))(eslint@8.57.1)(typescript@5.6.2))(eslint@8.57.1)(jest@29.7.0(@types/node@22.7.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.3(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2)))(typescript@5.6.2) eslint-plugin-react: 7.33.2(eslint@8.57.1) eslint-plugin-react-hooks: 4.6.0(eslint@8.57.1) postcss: 8.4.47 @@ -15781,7 +15942,7 @@ snapshots: dependencies: tsx: 3.12.2 - '@umijs/preset-umi@4.3.24(@types/node@22.7.3)(@types/react@18.3.9)(lightningcss@1.22.1)(rollup@3.29.5)(sass@1.79.3)(terser@5.34.0)(type-fest@0.21.3)(typescript@5.6.2)(webpack@5.95.0(@swc/core@1.3.72(@swc/helpers@0.5.1)))': + '@umijs/preset-umi@4.3.24(@types/node@22.7.3)(@types/react@18.3.9)(lightningcss@1.22.1)(rollup@3.29.5)(sass@1.79.3)(terser@5.34.0)(type-fest@0.21.3)(typescript@5.6.2)(webpack@5.95.0(@swc/core@1.9.3(@swc/helpers@0.5.1)))': dependencies: '@iconify/utils': 2.1.1 '@svgr/core': 6.5.1 @@ -15791,7 +15952,7 @@ snapshots: '@umijs/bundler-mako': 0.8.14 '@umijs/bundler-utils': 4.3.24 '@umijs/bundler-vite': 4.3.24(@types/node@22.7.3)(lightningcss@1.22.1)(postcss@8.4.47)(rollup@3.29.5)(sass@1.79.3)(terser@5.34.0) - '@umijs/bundler-webpack': 4.3.24(type-fest@0.21.3)(typescript@5.6.2)(webpack@5.95.0(@swc/core@1.3.72(@swc/helpers@0.5.1))) + '@umijs/bundler-webpack': 4.3.24(type-fest@0.21.3)(typescript@5.6.2)(webpack@5.95.0(@swc/core@1.9.3(@swc/helpers@0.5.1))) '@umijs/core': 4.3.24 '@umijs/did-you-know': 1.0.3 '@umijs/es-module-parser': 0.0.7 @@ -15810,7 +15971,7 @@ snapshots: current-script-polyfill: 1.0.0 enhanced-resolve: 5.9.3 fast-glob: 3.2.12 - html-webpack-plugin: 5.5.0(webpack@5.95.0(@swc/core@1.3.72(@swc/helpers@0.5.1))) + html-webpack-plugin: 5.5.0(webpack@5.95.0(@swc/core@1.9.3(@swc/helpers@0.5.1))) less-plugin-resolve: 1.0.2 path-to-regexp: 1.7.0 postcss: 8.4.47 @@ -15839,7 +16000,7 @@ snapshots: - webpack-hot-middleware - webpack-plugin-serve - '@umijs/react-refresh-webpack-plugin@0.5.11(react-refresh@0.14.0)(type-fest@0.21.3)(webpack@5.95.0(@swc/core@1.3.72(@swc/helpers@0.5.1)))': + '@umijs/react-refresh-webpack-plugin@0.5.11(react-refresh@0.14.0)(type-fest@0.21.3)(webpack@5.95.0(@swc/core@1.9.3(@swc/helpers@0.5.1)))': dependencies: ansi-html-community: 0.0.8 common-path-prefix: 3.0.0 @@ -15851,7 +16012,7 @@ snapshots: react-refresh: 0.14.0 schema-utils: 3.3.0 source-map: 0.7.4 - webpack: 5.95.0(@swc/core@1.3.72(@swc/helpers@0.5.1)) + webpack: 5.95.0(@swc/core@1.9.3(@swc/helpers@0.5.1)) optionalDependencies: type-fest: 0.21.3 @@ -17409,13 +17570,13 @@ snapshots: safe-buffer: 5.2.1 sha.js: 2.4.11 - create-jest@29.7.0(@types/node@22.7.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.3.72(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2)): + create-jest@29.7.0(@types/node@22.7.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.3(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2)): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@22.7.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.3.72(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2)) + jest-config: 29.7.0(@types/node@22.7.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.3(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -17474,7 +17635,7 @@ snapshots: dependencies: hyphenate-style-name: 1.1.0 - css-loader@6.7.1(webpack@5.95.0(@swc/core@1.3.72(@swc/helpers@0.5.1))): + css-loader@6.7.1(webpack@5.95.0(@swc/core@1.9.3(@swc/helpers@0.5.1))): dependencies: icss-utils: 5.1.0(postcss@8.4.47) postcss: 8.4.47 @@ -17484,7 +17645,7 @@ snapshots: postcss-modules-values: 4.0.0(postcss@8.4.47) postcss-value-parser: 4.2.0 semver: 7.6.3 - webpack: 5.95.0(@swc/core@1.3.72(@swc/helpers@0.5.1)) + webpack: 5.95.0(@swc/core@1.9.3(@swc/helpers@0.5.1)) css-loader@6.7.1(webpack@5.95.0): dependencies: @@ -17836,7 +17997,7 @@ snapshots: dumi-assets-types@2.0.0-alpha.0: {} - dumi@2.2.17(@babel/core@7.25.2)(@swc/helpers@0.5.1)(@types/node@22.7.3)(@types/react@18.3.9)(eslint@8.57.1)(jest@29.7.0(@types/node@22.7.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.3.72(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2)))(lightningcss@1.22.1)(prettier@3.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@3.29.5)(stylelint@14.16.1)(terser@5.34.0)(type-fest@0.21.3)(typescript@5.6.2)(webpack@5.95.0(@swc/core@1.3.72(@swc/helpers@0.5.1))): + dumi@2.2.17(@babel/core@7.25.2)(@swc/helpers@0.5.1)(@types/node@22.7.3)(@types/react@18.3.9)(eslint@8.57.1)(jest@29.7.0(@types/node@22.7.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.3(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2)))(lightningcss@1.22.1)(prettier@3.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@3.29.5)(stylelint@14.16.1)(terser@5.34.0)(type-fest@0.21.3)(typescript@5.6.2)(webpack@5.95.0(@swc/core@1.9.3(@swc/helpers@0.5.1))): dependencies: '@ant-design/icons-svg': 4.4.2 '@makotot/ghostui': 2.0.0(react@18.3.1) @@ -17876,7 +18037,7 @@ snapshots: prism-react-renderer: 1.3.5(react@18.3.1) prism-themes: 1.9.0 prismjs: 1.29.0 - raw-loader: 4.0.2(webpack@5.95.0(@swc/core@1.3.72(@swc/helpers@0.5.1))) + raw-loader: 4.0.2(webpack@5.95.0(@swc/core@1.9.3(@swc/helpers@0.5.1))) rc-motion: 2.9.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) rc-tabs: 12.15.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) rc-tree: 5.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -17895,7 +18056,7 @@ snapshots: remark-rehype: 10.1.0 sass: 1.79.3 sitemap: 7.1.2 - umi: 4.3.24(@babel/core@7.25.2)(@types/node@22.7.3)(@types/react@18.3.9)(eslint@8.57.1)(jest@29.7.0(@types/node@22.7.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.3.72(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2)))(lightningcss@1.22.1)(prettier@3.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@3.29.5)(sass@1.79.3)(stylelint@14.16.1)(terser@5.34.0)(type-fest@0.21.3)(typescript@5.6.2)(webpack@5.95.0(@swc/core@1.3.72(@swc/helpers@0.5.1))) + umi: 4.3.24(@babel/core@7.25.2)(@types/node@22.7.3)(@types/react@18.3.9)(eslint@8.57.1)(jest@29.7.0(@types/node@22.7.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.3(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2)))(lightningcss@1.22.1)(prettier@3.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@3.29.5)(sass@1.79.3)(stylelint@14.16.1)(terser@5.34.0)(type-fest@0.21.3)(typescript@5.6.2)(webpack@5.95.0(@swc/core@1.9.3(@swc/helpers@0.5.1))) unified: 10.1.2 unist-util-visit: 4.1.2 unist-util-visit-parents: 5.1.3 @@ -18294,13 +18455,13 @@ snapshots: dependencies: eslint: 8.57.1 - eslint-plugin-jest@27.2.3(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.6.2))(eslint@8.57.1)(typescript@5.6.2))(eslint@8.57.1)(jest@29.7.0(@types/node@22.7.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.3.72(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2)))(typescript@5.6.2): + eslint-plugin-jest@27.2.3(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.6.2))(eslint@8.57.1)(typescript@5.6.2))(eslint@8.57.1)(jest@29.7.0(@types/node@22.7.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.3(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2)))(typescript@5.6.2): dependencies: '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.6.2) eslint: 8.57.1 optionalDependencies: '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.6.2))(eslint@8.57.1)(typescript@5.6.2) - jest: 29.7.0(@types/node@22.7.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.3.72(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2)) + jest: 29.7.0(@types/node@22.7.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.3(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2)) transitivePeerDependencies: - supports-color - typescript @@ -18654,12 +18815,12 @@ snapshots: dependencies: reusify: 1.0.4 - father@4.5.0(@babel/core@7.25.2)(@types/node@22.7.3)(styled-components@6.1.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(type-fest@0.21.3)(webpack@5.95.0(@swc/core@1.3.72(@swc/helpers@0.5.1))): + father@4.5.0(@babel/core@7.25.2)(@types/node@22.7.3)(styled-components@6.1.13(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(type-fest@0.21.3)(webpack@5.95.0(@swc/core@1.9.3(@swc/helpers@0.5.1))): dependencies: '@microsoft/api-extractor': 7.39.1(@types/node@22.7.3) '@umijs/babel-preset-umi': 4.3.24 '@umijs/bundler-utils': 4.3.24 - '@umijs/bundler-webpack': 4.3.24(type-fest@0.21.3)(typescript@5.3.3)(webpack@5.95.0(@swc/core@1.3.72(@swc/helpers@0.5.1))) + '@umijs/bundler-webpack': 4.3.24(type-fest@0.21.3)(typescript@5.3.3)(webpack@5.95.0(@swc/core@1.9.3(@swc/helpers@0.5.1))) '@umijs/case-sensitive-paths-webpack-plugin': 1.0.1 '@umijs/core': 4.3.24 '@umijs/utils': 4.3.24 @@ -18853,7 +19014,7 @@ snapshots: cross-spawn: 7.0.3 signal-exit: 4.1.0 - fork-ts-checker-webpack-plugin@8.0.0(typescript@5.3.3)(webpack@5.95.0(@swc/core@1.3.72(@swc/helpers@0.5.1))): + fork-ts-checker-webpack-plugin@8.0.0(typescript@5.3.3)(webpack@5.95.0(@swc/core@1.9.3(@swc/helpers@0.5.1))): dependencies: '@babel/code-frame': 7.24.7 chalk: 4.1.2 @@ -18868,7 +19029,7 @@ snapshots: semver: 7.6.3 tapable: 2.2.1 typescript: 5.3.3 - webpack: 5.95.0(@swc/core@1.3.72(@swc/helpers@0.5.1)) + webpack: 5.95.0(@swc/core@1.9.3(@swc/helpers@0.5.1)) fork-ts-checker-webpack-plugin@8.0.0(typescript@5.3.3)(webpack@5.95.0): dependencies: @@ -18887,7 +19048,7 @@ snapshots: typescript: 5.3.3 webpack: 5.95.0 - fork-ts-checker-webpack-plugin@8.0.0(typescript@5.6.2)(webpack@5.95.0(@swc/core@1.3.72(@swc/helpers@0.5.1))): + fork-ts-checker-webpack-plugin@8.0.0(typescript@5.6.2)(webpack@5.95.0(@swc/core@1.9.3(@swc/helpers@0.5.1))): dependencies: '@babel/code-frame': 7.24.7 chalk: 4.1.2 @@ -18902,7 +19063,7 @@ snapshots: semver: 7.6.3 tapable: 2.2.1 typescript: 5.6.2 - webpack: 5.95.0(@swc/core@1.3.72(@swc/helpers@0.5.1)) + webpack: 5.95.0(@swc/core@1.9.3(@swc/helpers@0.5.1)) form-data@4.0.0: dependencies: @@ -19434,14 +19595,14 @@ snapshots: html-void-elements@2.0.1: {} - html-webpack-plugin@5.5.0(webpack@5.95.0(@swc/core@1.3.72(@swc/helpers@0.5.1))): + html-webpack-plugin@5.5.0(webpack@5.95.0(@swc/core@1.9.3(@swc/helpers@0.5.1))): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 lodash: 4.17.21 pretty-error: 4.0.0 tapable: 2.2.1 - webpack: 5.95.0(@swc/core@1.3.72(@swc/helpers@0.5.1)) + webpack: 5.95.0(@swc/core@1.9.3(@swc/helpers@0.5.1)) html2sketch@1.0.2: dependencies: @@ -20030,16 +20191,16 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@29.7.0(@types/node@22.7.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.3.72(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2)): + jest-cli@29.7.0(@types/node@22.7.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.3(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2)): dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.3.72(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2)) + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.3(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@22.7.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.3.72(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2)) + create-jest: 29.7.0(@types/node@22.7.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.3(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2)) exit: 0.1.2 import-local: 3.2.0 - jest-config: 29.7.0(@types/node@22.7.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.3.72(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2)) + jest-config: 29.7.0(@types/node@22.7.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.3(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -20049,7 +20210,7 @@ snapshots: - supports-color - ts-node - jest-config@29.7.0(@types/node@22.7.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.3.72(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2)): + jest-config@29.7.0(@types/node@22.7.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.3(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2)): dependencies: '@babel/core': 7.25.2 '@jest/test-sequencer': 29.7.0 @@ -20075,7 +20236,7 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 22.7.3 - ts-node: 10.9.2(@swc/core@1.3.72(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2) + ts-node: 10.9.2(@swc/core@1.9.3(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -20330,12 +20491,12 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.7.0(@types/node@22.7.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.3.72(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2)): + jest@29.7.0(@types/node@22.7.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.3(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2)): dependencies: - '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.3.72(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2)) + '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.3(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2)) '@jest/types': 29.6.3 import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@22.7.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.3.72(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2)) + jest-cli: 29.7.0(@types/node@22.7.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.3(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -20450,6 +20611,8 @@ snapshots: json5@2.2.3: {} + jsonc-parser@3.3.1: {} + jsonfile@3.0.1: optionalDependencies: graceful-fs: 4.2.11 @@ -22312,11 +22475,11 @@ snapshots: iconv-lite: 0.4.24 unpipe: 1.0.0 - raw-loader@4.0.2(webpack@5.95.0(@swc/core@1.3.72(@swc/helpers@0.5.1))): + raw-loader@4.0.2(webpack@5.95.0(@swc/core@1.9.3(@swc/helpers@0.5.1))): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.95.0(@swc/core@1.3.72(@swc/helpers@0.5.1)) + webpack: 5.95.0(@swc/core@1.9.3(@swc/helpers@0.5.1)) rc-align@4.0.15(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: @@ -24218,16 +24381,16 @@ snapshots: term-size@2.2.1: {} - terser-webpack-plugin@5.3.10(@swc/core@1.3.72(@swc/helpers@0.5.1))(webpack@5.95.0(@swc/core@1.3.72(@swc/helpers@0.5.1))): + terser-webpack-plugin@5.3.10(@swc/core@1.9.3(@swc/helpers@0.5.1))(webpack@5.95.0(@swc/core@1.9.3(@swc/helpers@0.5.1))): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.2 terser: 5.34.0 - webpack: 5.95.0(@swc/core@1.3.72(@swc/helpers@0.5.1)) + webpack: 5.95.0(@swc/core@1.9.3(@swc/helpers@0.5.1)) optionalDependencies: - '@swc/core': 1.3.72(@swc/helpers@0.5.1) + '@swc/core': 1.9.3(@swc/helpers@0.5.1) terser-webpack-plugin@5.3.10(webpack@5.95.0): dependencies: @@ -24348,12 +24511,12 @@ snapshots: dependencies: tslib: 2.7.0 - ts-jest@29.2.5(@babel/core@7.25.2)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.2))(jest@29.7.0(@types/node@22.7.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.3.72(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2)))(typescript@5.6.2): + ts-jest@29.2.5(@babel/core@7.25.2)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.2))(jest@29.7.0(@types/node@22.7.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.3(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2)))(typescript@5.6.2): dependencies: bs-logger: 0.2.6 ejs: 3.1.10 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@22.7.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.3.72(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2)) + jest: 29.7.0(@types/node@22.7.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.3(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2)) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -24367,7 +24530,7 @@ snapshots: '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.25.2) - ts-node@10.9.2(@swc/core@1.3.72(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2): + ts-node@10.9.2(@swc/core@1.9.3(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 @@ -24385,7 +24548,7 @@ snapshots: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 optionalDependencies: - '@swc/core': 1.3.72(@swc/helpers@0.5.1) + '@swc/core': 1.9.3(@swc/helpers@0.5.1) ts-toolbelt@9.6.0: {} @@ -24488,14 +24651,14 @@ snapshots: ufo@1.5.4: {} - umi@4.3.24(@babel/core@7.25.2)(@types/node@22.7.3)(@types/react@18.3.9)(eslint@8.57.1)(jest@29.7.0(@types/node@22.7.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.3.72(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2)))(lightningcss@1.22.1)(prettier@3.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@3.29.5)(sass@1.79.3)(stylelint@14.16.1)(terser@5.34.0)(type-fest@0.21.3)(typescript@5.6.2)(webpack@5.95.0(@swc/core@1.3.72(@swc/helpers@0.5.1))): + umi@4.3.24(@babel/core@7.25.2)(@types/node@22.7.3)(@types/react@18.3.9)(eslint@8.57.1)(jest@29.7.0(@types/node@22.7.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.3(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2)))(lightningcss@1.22.1)(prettier@3.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@3.29.5)(sass@1.79.3)(stylelint@14.16.1)(terser@5.34.0)(type-fest@0.21.3)(typescript@5.6.2)(webpack@5.95.0(@swc/core@1.9.3(@swc/helpers@0.5.1))): dependencies: '@babel/runtime': 7.23.6 '@umijs/bundler-utils': 4.3.24 - '@umijs/bundler-webpack': 4.3.24(type-fest@0.21.3)(typescript@5.6.2)(webpack@5.95.0(@swc/core@1.3.72(@swc/helpers@0.5.1))) + '@umijs/bundler-webpack': 4.3.24(type-fest@0.21.3)(typescript@5.6.2)(webpack@5.95.0(@swc/core@1.9.3(@swc/helpers@0.5.1))) '@umijs/core': 4.3.24 - '@umijs/lint': 4.3.24(eslint@8.57.1)(jest@29.7.0(@types/node@22.7.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.3.72(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2)))(stylelint@14.16.1)(typescript@5.6.2) - '@umijs/preset-umi': 4.3.24(@types/node@22.7.3)(@types/react@18.3.9)(lightningcss@1.22.1)(rollup@3.29.5)(sass@1.79.3)(terser@5.34.0)(type-fest@0.21.3)(typescript@5.6.2)(webpack@5.95.0(@swc/core@1.3.72(@swc/helpers@0.5.1))) + '@umijs/lint': 4.3.24(eslint@8.57.1)(jest@29.7.0(@types/node@22.7.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.3(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2)))(stylelint@14.16.1)(typescript@5.6.2) + '@umijs/preset-umi': 4.3.24(@types/node@22.7.3)(@types/react@18.3.9)(lightningcss@1.22.1)(rollup@3.29.5)(sass@1.79.3)(terser@5.34.0)(type-fest@0.21.3)(typescript@5.6.2)(webpack@5.95.0(@swc/core@1.9.3(@swc/helpers@0.5.1))) '@umijs/renderer-react': 4.3.24(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@umijs/server': 4.3.24 '@umijs/test': 4.3.24(@babel/core@7.25.2) @@ -24933,7 +25096,7 @@ snapshots: - esbuild - uglify-js - webpack@5.95.0(@swc/core@1.3.72(@swc/helpers@0.5.1)): + webpack@5.95.0(@swc/core@1.9.3(@swc/helpers@0.5.1)): dependencies: '@types/estree': 1.0.6 '@webassemblyjs/ast': 1.12.1 @@ -24955,7 +25118,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.3.72(@swc/helpers@0.5.1))(webpack@5.95.0(@swc/core@1.3.72(@swc/helpers@0.5.1))) + terser-webpack-plugin: 5.3.10(@swc/core@1.9.3(@swc/helpers@0.5.1))(webpack@5.95.0(@swc/core@1.9.3(@swc/helpers@0.5.1))) watchpack: 2.4.2 webpack-sources: 3.2.3 transitivePeerDependencies: From 4b40a9692b96df589753803ea079f451c054349c Mon Sep 17 00:00:00 2001 From: "fred.tran" Date: Fri, 22 Nov 2024 17:28:46 +0800 Subject: [PATCH 3/9] chore: add initial tests for packages/bridge --- packages/bridge/jest.config.ts | 208 ++++++++++++++++++++++++++++++ packages/bridge/jest.setup.ts | 16 +++ packages/bridge/src/utils.test.ts | 14 ++ packages/bridge/src/utils.ts | 6 +- 4 files changed, 240 insertions(+), 4 deletions(-) create mode 100644 packages/bridge/jest.config.ts create mode 100644 packages/bridge/jest.setup.ts create mode 100644 packages/bridge/src/utils.test.ts diff --git a/packages/bridge/jest.config.ts b/packages/bridge/jest.config.ts new file mode 100644 index 00000000..9e54d95c --- /dev/null +++ b/packages/bridge/jest.config.ts @@ -0,0 +1,208 @@ +// eslint-disable-next-line @typescript-eslint/ban-ts-comment +// @ts-nocheck skip tsc for jest +/** + * For a detailed explanation regarding each configuration property, visit: + * https://jestjs.io/docs/configuration + */ + +import { compilerOptions } from '../../tsconfig.base.json'; +import path from 'path'; +const config = { + // All imported modules in your tests should be mocked automatically + // automock: false, + + // Stop running tests after `n` failures + // bail: 0, + + // The directory where Jest should store its cached dependency information + // cacheDirectory: "/private/var/folders/46/f0k6l2594mg21yh77r2msl8w0000gn/T/jest_dx", + + // Automatically clear mock calls, instances, contexts and results before every test + clearMocks: true, + + // Indicates whether the coverage information should be collected while executing the test + collectCoverage: true, + + // An array of glob patterns indicating a set of files for which coverage information should be collected + // collectCoverageFrom: undefined, + + // The directory where Jest should output its coverage files + coverageDirectory: 'coverage', + + // An array of regexp pattern strings used to skip coverage collection + // coveragePathIgnorePatterns: [ + // "/node_modules/" + // ], + + // Indicates which provider should be used to instrument code for coverage + // coverageProvider: "babel", + + // A list of reporter names that Jest uses when writing coverage reports + coverageReporters: ['json-summary', 'text'], + + // An object that configures minimum threshold enforcement for coverage results + // coverageThreshold: undefined, + + // A path to a custom dependency extractor + // dependencyExtractor: undefined, + + // Make calling deprecated APIs throw helpful error messages + // errorOnDeprecated: false, + + // The default configuration for fake timers + // fakeTimers: { + // "enableGlobally": false + // }, + + // Force coverage collection from ignored files using an array of glob patterns + // forceCoverageMatch: [], + + // A path to a module which exports an async function that is triggered once before all test suites + // globalSetup: undefined, + + // A path to a module which exports an async function that is triggered once after all test suites + // globalTeardown: undefined, + + // A set of global variables that need to be available in all test environments + + // The maximum amount of workers used to run your tests. Can be specified as % or a number. E.g. maxWorkers: 10% will use 10% of your CPU amount + 1 as the maximum worker number. maxWorkers: 2 will use a maximum of 2 workers. + // maxWorkers: "50%", + + // An array of directory names to be searched recursively up from the requiring module's location + // moduleDirectories: [ + // "node_modules" + // ], + + // An array of file extensions your modules use + moduleFileExtensions: ['js', 'jsx', 'ts', 'tsx'], + + // A map from regular expressions to module names or to arrays of module names that allow to stub out resources with a single module + // moduleNameMapper: {}, + + // An array of regexp pattern strings, matched against all module paths before considered 'visible' to the module loader + // modulePathIgnorePatterns: [], + + // Activates notifications for test results + // notify: false, + + // An enum that specifies notification mode. Requires { notify: true } + // notifyMode: "failure-change", + + // A preset that is used as a base for Jest's configuration + // preset: 'babel-jest', + + // Run tests from one or more projects + // projects: undefined, + + // Use this configuration option to add custom reporters to Jest + reporters: [ + 'default', + [ + 'jest-junit', + { + outputDirectory: '.', + outputName: 'jest-report.xml', + }, + ], + ], + + // Automatically reset mock state before every test + // resetMocks: false, + + // Reset the module registry before running each individual test + // resetModules: false, + + // A path to a custom resolver + // resolver: undefined, + + // Automatically restore mock state and implementation before every test + // restoreMocks: false, + + // The root directory that Jest should scan for tests and modules within + // rootDir: './', + + // A list of paths to directories that Jest should use to search for files in + // roots: [ + // "" + // ], + + // Allows you to use a custom runner instead of Jest's default test runner + // runner: "jest-runner", + + // The paths to modules that run some code to configure or set up the testing environment before each test + // setupFiles: [], + + // A list of paths to modules that run some code to configure or set up the testing framework before each test + + // The number of seconds after which a test is considered as slow and reported as such in the results. + // slowTestThreshold: 5, + + // A list of paths to snapshot serializer modules Jest should use for snapshot testing + // snapshotSerializers: [], + + // The test environment that will be used for testing + + // Options that will be passed to the testEnvironment + // testEnvironmentOptions: {}, + + // Adds a location field to test results + // testLocationInResults: false, + + // The glob patterns Jest uses to detect test files + // testMatch: ['**/__tests__/**/*.[jt]s?(x)', '**/?(*.)+(spec|test).[tj]s?(x)'], + + // An array of regexp pattern strings that are matched against all test paths, matched tests are skipped + // testPathIgnorePatterns: [ + // "/node_modules/" + // ], + + // The regexp pattern or array of patterns that Jest uses to detect test files + // testRegex: [], + + // This option allows the use of a custom results processor + // testResultsProcessor: undefined, + + // This option allows use of a custom test runner + // testRunner: "jest-circus/runner", + + // A map from regular expressions to paths to transformers + transform: { + '^.+\\.(t|j)sx?$': '@swc/jest', + }, + // An array of regexp pattern strings that are matched against all source file paths, matched files will skip transformation + // An array of regexp pattern strings that are matched against all source file paths, matched files will skip transformation + transformIgnorePatterns: [ + '.pnpm/node_modules/(?!((jest-)?react-native(-.*)?|@react-native(-community)?|victory(-.*)?|uuid)|react-navigation|@shopify/react-native-skia|@react-navigation/.*/)', + ], + + // An array of regexp pattern strings that are matched against all modules before the module loader will automatically return a mock for them + // unmockedModulePathPatterns: undefined, + + // Indicates whether each individual test should be reported during the run + // verbose: undefined, + + // An array of regexp patterns that are matched against all source file paths before re-running tests in watch mode + // watchPathIgnorePatterns: [], + + // Whether to use watchman for file crawling + // watchman: true, + roots: [''], + testEnvironment: 'jsdom', + setupFilesAfterEnv: ['/jest.setup.ts'], + modulePaths: ['./', compilerOptions.baseUrl], + moduleDirectories: ['node_modules', 'src'], + moduleNameMapper: { + ...Object.keys(compilerOptions.paths).reduce( + (prev, k) => ({ + ...prev, + [k]: path.resolve(__dirname, `../../${compilerOptions.paths[k][0]}`), + }), + {}, + ), + '\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': + '/empty.js', + '\\.(css|less|scss|sass)$': '/empty.js', + }, +}; + +export default config; diff --git a/packages/bridge/jest.setup.ts b/packages/bridge/jest.setup.ts new file mode 100644 index 00000000..edddde07 --- /dev/null +++ b/packages/bridge/jest.setup.ts @@ -0,0 +1,16 @@ +// In your own jest-setup.js (or any other name) +import '@testing-library/jest-dom'; +jest.mock('@aelf-web-login/wallet-adapter-portkey-aa', () => ({ + PortkeyAAWallet: jest.fn(), +})); +jest.mock('@portkey/did-ui-react', () => ({ + getChainInfo: () => null, + did: { + didWallet: { + managementAccount: { + privateKey: '', + }, + }, + }, +})); +global.fetch = require('node-fetch'); diff --git a/packages/bridge/src/utils.test.ts b/packages/bridge/src/utils.test.ts new file mode 100644 index 00000000..57d4ebc5 --- /dev/null +++ b/packages/bridge/src/utils.test.ts @@ -0,0 +1,14 @@ +import { type TChainId } from '@aelf-web-login/wallet-adapter-base'; +import { getCaContractBase } from './utils'; + +describe('getCaContractBase()', () => { + it('should throw error if no chainId', async () => { + const chainId: TChainId = 'tDVV'; + try { + await getCaContractBase(chainId); + } catch (error) { + expect(error).toBeInstanceOf(Error); + expect(error).toHaveProperty('message', `Chain is not running: ${chainId}`); + } + }); +}); diff --git a/packages/bridge/src/utils.ts b/packages/bridge/src/utils.ts index e032a2e6..17c4d748 100644 --- a/packages/bridge/src/utils.ts +++ b/packages/bridge/src/utils.ts @@ -7,7 +7,7 @@ export const EE = new EventEmitter(); export const SET_GUARDIAN_APPROVAL_MODAL = 'SET_GUARDIAN_APPROVAL_MODAL'; export const SET_GUARDIAN_APPROVAL_PAYLOAD = 'SET_GUARDIAN_APPROVAL_PAYLOAD'; -const getCaContractBase = async (chainId: TChainId) => { +export const getCaContractBase = async (chainId: TChainId) => { const chainInfo = await getChainInfo(chainId); if (!chainInfo) { throw new Error(`Chain is not running: ${chainId}`); @@ -21,7 +21,7 @@ const getCaContractBase = async (chainId: TChainId) => { return caContract; }; -const getIsManagerReadOnly = async (chainId: TChainId, caHash = '', manager = '') => { +export const getIsManagerReadOnly = async (chainId: TChainId, caHash = '', manager = '') => { const caIns = await getCaContractBase(chainId); try { const rs = await caIns.callViewMethod('IsManagerReadOnly', { @@ -35,5 +35,3 @@ const getIsManagerReadOnly = async (chainId: TChainId, caHash = '', manager = '' return false; } }; - -export { getIsManagerReadOnly }; From 96654aec3617d21d189c9daf24ab4659cdf6e27a Mon Sep 17 00:00:00 2001 From: "fred.tran" Date: Fri, 22 Nov 2024 17:30:04 +0800 Subject: [PATCH 4/9] chore: fix typings for packages/react --- packages/react/src/__tests__/context.test.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/react/src/__tests__/context.test.tsx b/packages/react/src/__tests__/context.test.tsx index 72986569..5d12b0e2 100644 --- a/packages/react/src/__tests__/context.test.tsx +++ b/packages/react/src/__tests__/context.test.tsx @@ -6,9 +6,9 @@ import { IBridgeAPI } from '@aelf-web-login/wallet-adapter-bridge'; const mockBridgeAPI: IBridgeAPI = { getSignIn: jest.fn((children) => children), store: { - getState: () => null, - subscribe: () => null, - }, + getState: () => null as unknown as ReturnType, + subscribe: () => null as unknown as ReturnType, + } as unknown as IBridgeAPI['store'], instance: {} as IBridgeAPI['instance'], mountApp: () => null, unMountApp: () => null, From 6f81ea41df8cbf707993e44b9f5320facfdab450 Mon Sep 17 00:00:00 2001 From: "fred.tran" Date: Fri, 22 Nov 2024 17:30:14 +0800 Subject: [PATCH 5/9] chore: coverage --- .../bridge/coverage/coverage-summary.json | 3 +++ packages/bridge/jest-report.xml | 7 ++++++ packages/react/jest-report.xml | 22 +++++++++---------- 3 files changed, 21 insertions(+), 11 deletions(-) create mode 100644 packages/bridge/coverage/coverage-summary.json create mode 100644 packages/bridge/jest-report.xml diff --git a/packages/bridge/coverage/coverage-summary.json b/packages/bridge/coverage/coverage-summary.json new file mode 100644 index 00000000..fa8a5109 --- /dev/null +++ b/packages/bridge/coverage/coverage-summary.json @@ -0,0 +1,3 @@ +{"total": {"lines":{"total":22,"covered":12,"skipped":0,"pct":54.54},"statements":{"total":27,"covered":13,"skipped":0,"pct":48.14},"functions":{"total":2,"covered":1,"skipped":0,"pct":50},"branches":{"total":5,"covered":1,"skipped":0,"pct":20},"branchesTrue":{"total":0,"covered":0,"skipped":0,"pct":"Unknown"}} +,"/Users/aelf/Documents/Projects/aelf/aelf-web-login/packages/bridge/src/utils.ts": {"lines":{"total":22,"covered":12,"skipped":0,"pct":54.54},"functions":{"total":2,"covered":1,"skipped":0,"pct":50},"statements":{"total":27,"covered":13,"skipped":0,"pct":48.14},"branches":{"total":5,"covered":1,"skipped":0,"pct":20}} +} diff --git a/packages/bridge/jest-report.xml b/packages/bridge/jest-report.xml new file mode 100644 index 00000000..d92d32f0 --- /dev/null +++ b/packages/bridge/jest-report.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/packages/react/jest-report.xml b/packages/react/jest-report.xml index fb96d49b..ab9bca0a 100644 --- a/packages/react/jest-report.xml +++ b/packages/react/jest-report.xml @@ -1,27 +1,27 @@ - - - + + + - - + + - - + + - - + + - + - + \ No newline at end of file From 9e0536bf4a57548bd526979c83617356bfab0c89 Mon Sep 17 00:00:00 2001 From: "fred.tran" Date: Mon, 25 Nov 2024 10:53:33 +0800 Subject: [PATCH 6/9] chore: add common jest mocks --- package.json | 2 ++ pnpm-lock.yaml | 14 ++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/package.json b/package.json index 312d1129..70448b48 100644 --- a/package.json +++ b/package.json @@ -68,6 +68,8 @@ "eslint-plugin-unused-imports": "^3.0.0", "father": "^4.3.8", "husky": "^8.0.3", + "jest-canvas-mock": "^2.5.2", + "jest-transform-stub": "^2.0.0", "jsdom": "^23.0.1", "lint-staged": "^15.2.0", "prettier": "^3.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5d2ad048..900a1b4f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -66,6 +66,12 @@ importers: husky: specifier: ^8.0.3 version: 8.0.3 + jest-canvas-mock: + specifier: ^2.5.2 + version: 2.5.2 + jest-transform-stub: + specifier: ^2.0.0 + version: 2.0.0 jsdom: specifier: ^23.0.1 version: 23.2.0 @@ -179,6 +185,9 @@ importers: jest: specifier: ^29.7.0 version: 29.7.0(@types/node@22.7.3)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.9.3(@swc/helpers@0.5.1))(@types/node@22.7.3)(typescript@5.6.2)) + jest-canvas-mock: + specifier: ^2.5.2 + version: 2.5.2 typescript: specifier: ^5.3.3 version: 5.6.2 @@ -7141,6 +7150,9 @@ packages: resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-transform-stub@2.0.0: + resolution: {integrity: sha512-lspHaCRx/mBbnm3h4uMMS3R5aZzMwyNpNIJLXj4cEsV0mIUtS4IjYJLSoyjRCtnxb6RIGJ4NL2quZzfIeNhbkg==} + jest-util@29.7.0: resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -20442,6 +20454,8 @@ snapshots: transitivePeerDependencies: - supports-color + jest-transform-stub@2.0.0: {} + jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 From 5e9212c87b3fff4794aaf7ea64821d6ab7d03a27 Mon Sep 17 00:00:00 2001 From: "fred.tran" Date: Mon, 25 Nov 2024 12:05:52 +0800 Subject: [PATCH 7/9] chore: clean up tests --- .../bridge/coverage/coverage-summary.json | 4 +- packages/bridge/jest-report.xml | 12 +++-- packages/bridge/jest.config.ts | 6 +-- packages/bridge/jest.setup.ts | 11 ++++- packages/bridge/package.json | 12 ++--- packages/bridge/src/__tests__/utils.test.ts | 48 +++++++++++++++++++ packages/bridge/src/utils.test.ts | 14 ------ packages/react/empty.js | 1 - packages/react/jest.config.ts | 7 +-- 9 files changed, 78 insertions(+), 37 deletions(-) create mode 100644 packages/bridge/src/__tests__/utils.test.ts delete mode 100644 packages/bridge/src/utils.test.ts delete mode 100644 packages/react/empty.js diff --git a/packages/bridge/coverage/coverage-summary.json b/packages/bridge/coverage/coverage-summary.json index fa8a5109..488ca083 100644 --- a/packages/bridge/coverage/coverage-summary.json +++ b/packages/bridge/coverage/coverage-summary.json @@ -1,3 +1,3 @@ -{"total": {"lines":{"total":22,"covered":12,"skipped":0,"pct":54.54},"statements":{"total":27,"covered":13,"skipped":0,"pct":48.14},"functions":{"total":2,"covered":1,"skipped":0,"pct":50},"branches":{"total":5,"covered":1,"skipped":0,"pct":20},"branchesTrue":{"total":0,"covered":0,"skipped":0,"pct":"Unknown"}} -,"/Users/aelf/Documents/Projects/aelf/aelf-web-login/packages/bridge/src/utils.ts": {"lines":{"total":22,"covered":12,"skipped":0,"pct":54.54},"functions":{"total":2,"covered":1,"skipped":0,"pct":50},"statements":{"total":27,"covered":13,"skipped":0,"pct":48.14},"branches":{"total":5,"covered":1,"skipped":0,"pct":20}} +{"total": {"lines":{"total":22,"covered":20,"skipped":0,"pct":90.9},"statements":{"total":27,"covered":22,"skipped":0,"pct":81.48},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"branches":{"total":5,"covered":5,"skipped":0,"pct":100},"branchesTrue":{"total":0,"covered":0,"skipped":0,"pct":"Unknown"}} +,"/Users/aelf/Documents/Projects/aelf/aelf-web-login/packages/bridge/src/utils.ts": {"lines":{"total":22,"covered":20,"skipped":0,"pct":90.9},"functions":{"total":2,"covered":2,"skipped":0,"pct":100},"statements":{"total":27,"covered":22,"skipped":0,"pct":81.48},"branches":{"total":5,"covered":5,"skipped":0,"pct":100}} } diff --git a/packages/bridge/jest-report.xml b/packages/bridge/jest-report.xml index d92d32f0..685de988 100644 --- a/packages/bridge/jest-report.xml +++ b/packages/bridge/jest-report.xml @@ -1,7 +1,13 @@ - - - + + + + + + + + + \ No newline at end of file diff --git a/packages/bridge/jest.config.ts b/packages/bridge/jest.config.ts index 9e54d95c..e04c7daa 100644 --- a/packages/bridge/jest.config.ts +++ b/packages/bridge/jest.config.ts @@ -170,7 +170,6 @@ const config = { '^.+\\.(t|j)sx?$': '@swc/jest', }, // An array of regexp pattern strings that are matched against all source file paths, matched files will skip transformation - // An array of regexp pattern strings that are matched against all source file paths, matched files will skip transformation transformIgnorePatterns: [ '.pnpm/node_modules/(?!((jest-)?react-native(-.*)?|@react-native(-community)?|victory(-.*)?|uuid)|react-navigation|@shopify/react-native-skia|@react-navigation/.*/)', ], @@ -192,6 +191,8 @@ const config = { modulePaths: ['./', compilerOptions.baseUrl], moduleDirectories: ['node_modules', 'src'], moduleNameMapper: { + '\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga|css|less|scss|sass)$': + 'jest-transform-stub', ...Object.keys(compilerOptions.paths).reduce( (prev, k) => ({ ...prev, @@ -199,9 +200,6 @@ const config = { }), {}, ), - '\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': - '/empty.js', - '\\.(css|less|scss|sass)$': '/empty.js', }, }; diff --git a/packages/bridge/jest.setup.ts b/packages/bridge/jest.setup.ts index edddde07..7317d3cb 100644 --- a/packages/bridge/jest.setup.ts +++ b/packages/bridge/jest.setup.ts @@ -1,10 +1,10 @@ -// In your own jest-setup.js (or any other name) +import { type TChainId } from '@aelf-web-login/wallet-adapter-base'; import '@testing-library/jest-dom'; jest.mock('@aelf-web-login/wallet-adapter-portkey-aa', () => ({ PortkeyAAWallet: jest.fn(), })); jest.mock('@portkey/did-ui-react', () => ({ - getChainInfo: () => null, + getChainInfo: (c: TChainId) => (!c ? null : {}), did: { didWallet: { managementAccount: { @@ -13,4 +13,11 @@ jest.mock('@portkey/did-ui-react', () => ({ }, }, })); +jest.mock('lottie-web'); +jest.mock('@portkey/utils'); +import 'jest-canvas-mock'; global.fetch = require('node-fetch'); +import { TextEncoder, TextDecoder } from 'util'; +global.TextEncoder = TextEncoder; +// @ts-expect-error TextDecoder +global.TextDecoder = TextDecoder; diff --git a/packages/bridge/package.json b/packages/bridge/package.json index 39852a0f..65c34310 100755 --- a/packages/bridge/package.json +++ b/packages/bridge/package.json @@ -33,24 +33,24 @@ }, "dependencies": { "@aelf-web-login/wallet-adapter-base": "workspace:*", - "@portkey/services": "^2.15.9", "@portkey/contracts": "^2.15.9", + "@portkey/services": "^2.15.9", "@reduxjs/toolkit": "^2.2.3", "react": "^18.0.0", "react-dom": "^18.0.0" }, "devDependencies": { - "@portkey/types": "^2.15.9", "@portkey/did-ui-react": "^2.15.9", + "@portkey/types": "^2.15.9", "@portkey/utils": "^2.15.9", + "@swc/core": "^1.9.3", + "@swc/jest": "^0.2.37", "@types/react": "^18.3.1", "@types/react-dom": "^18.3.0", "antd": "4.24.14", "father": "^4.3.8", - "typescript": "^5.3.3", - "@swc/core": "^1.9.3", - "@swc/jest": "^0.2.37", - "jest": "^29.7.0" + "jest": "^29.7.0", + "typescript": "^5.3.3" }, "peerDependencies": { "@portkey/did-ui-react": "^2.15.9" diff --git a/packages/bridge/src/__tests__/utils.test.ts b/packages/bridge/src/__tests__/utils.test.ts new file mode 100644 index 00000000..ae5874e6 --- /dev/null +++ b/packages/bridge/src/__tests__/utils.test.ts @@ -0,0 +1,48 @@ +import { type TChainId } from '@aelf-web-login/wallet-adapter-base'; +import { getCaContractBase, getIsManagerReadOnly } from '../utils'; +import { getContractBasic } from '@portkey/contracts'; + +afterEach(() => { + jest.unmock('@portkey/contracts'); +}); +jest.mock('@portkey/contracts', () => ({ + getContractBasic: jest.fn(), +})); + +describe('getCaContractBase()', () => { + it('should throw error about chain is not running', async () => { + const chainId = null; + try { + await getCaContractBase(chainId as unknown as TChainId); + } catch (error) { + expect(error).toBeInstanceOf(Error); + expect(error).toHaveProperty('message', `Chain is not running: ${chainId}`); + } + }); + it('should get back contract base', async () => { + const chainId: TChainId = 'tDVW'; + const mockContractBase = { + chainId, + address: '', + }; + (getContractBasic as jest.Mock).mockImplementation(() => mockContractBase); + const contractBase = await getCaContractBase(chainId); + expect(contractBase).toMatchObject(mockContractBase); + }); +}); + +describe('getIsManagerReadOnly()', () => { + it('should throw error about chain is not running', async () => { + const chainId = null; + try { + await getIsManagerReadOnly(chainId as unknown as TChainId); + } catch (error) { + expect(error).toBeInstanceOf(Error); + expect(error).toHaveProperty('message', `Chain is not running: ${chainId}`); + } + }); + it('should return false', async () => { + const r = await getIsManagerReadOnly('tDVV'); + expect(r).toBeFalsy(); + }); +}); diff --git a/packages/bridge/src/utils.test.ts b/packages/bridge/src/utils.test.ts deleted file mode 100644 index 57d4ebc5..00000000 --- a/packages/bridge/src/utils.test.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { type TChainId } from '@aelf-web-login/wallet-adapter-base'; -import { getCaContractBase } from './utils'; - -describe('getCaContractBase()', () => { - it('should throw error if no chainId', async () => { - const chainId: TChainId = 'tDVV'; - try { - await getCaContractBase(chainId); - } catch (error) { - expect(error).toBeInstanceOf(Error); - expect(error).toHaveProperty('message', `Chain is not running: ${chainId}`); - } - }); -}); diff --git a/packages/react/empty.js b/packages/react/empty.js deleted file mode 100644 index 9dc5fc1e..00000000 --- a/packages/react/empty.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = ''; diff --git a/packages/react/jest.config.ts b/packages/react/jest.config.ts index faa3d90d..caf397c4 100644 --- a/packages/react/jest.config.ts +++ b/packages/react/jest.config.ts @@ -17,8 +17,6 @@ const presetConfig = createDefaultEsmPreset({ isolatedModules: true, // perf }); -console.log(Object.values(presetConfig.transform)[0][1].tsconfig); - const config: JestConfigWithTsJest = { ...presetConfig, // All imported modules in your tests should be mocked automatically @@ -207,9 +205,8 @@ const config: JestConfigWithTsJest = { moduleDirectories: ['node_modules', 'src'], moduleNameMapper: { ...pathsToModuleNameMapper(compilerOptions.paths, { prefix: '../../' }), - '\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': - '/empty.js', - '\\.(css|less|scss|sass)$': '/empty.js', + '\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga|css|less|scss|sass)$': + 'jest-transform-stub', }, preset: 'ts-jest', }; From e60c2253c6869b13f85e5be65376fce14a63a771 Mon Sep 17 00:00:00 2001 From: "fred.tran" Date: Mon, 25 Nov 2024 12:11:13 +0800 Subject: [PATCH 8/9] chore: include bridge in packages to test --- .github/workflows/coverage.yml | 2 +- .github/workflows/test-badge.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index 730d4426..fcfed08a 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -15,7 +15,7 @@ jobs: strategy: matrix: - package: [utils, base, react] + package: [utils, base, react, bridge] steps: - name: Checkout repository diff --git a/.github/workflows/test-badge.yml b/.github/workflows/test-badge.yml index bacba1a9..e1c7a47a 100644 --- a/.github/workflows/test-badge.yml +++ b/.github/workflows/test-badge.yml @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - package: [utils, base, react] + package: [utils, base, react, bridge] steps: - name: Run frontend CI uses: AElfProject/frontend-ci-action@v0.0.2 From d78e8181044d8abe0c8c9e9ebaffcd3dd628df15 Mon Sep 17 00:00:00 2001 From: "fred.tran" Date: Mon, 25 Nov 2024 12:35:09 +0800 Subject: [PATCH 9/9] chore: update README with bridge test coverage --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index d76dba24..699d9dca 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,7 @@ | --- | --- | --- | | @aelf-web-login/utils | ![GitHub Workflow Test Status](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/AElfProject/aelf-web-login/feature/badge-json/master-utils-test-results.json) | [![Coverage](https://aelfproject.github.io/aelf-web-login/coverage-utils/badge.svg)](https://github.com/AElfProject/aelf-web-login/actions) | | @aelf-web-login/base | ![GitHub Workflow Test Status](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/AElfProject/aelf-web-login/feature/badge-json/master-base-test-results.json) | [![Coverage](https://aelfproject.github.io/aelf-web-login/coverage-base/badge.svg)](https://github.com/AElfProject/aelf-web-login/actions) | +| @aelf-web-login/bridge | ![GitHub Workflow Test Status](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/AElfProject/aelf-web-login/feature/badge-json/master-bridge-test-results.json) | [![Coverage](https://aelfproject.github.io/aelf-web-login/coverage-bridge/badge.svg)](https://github.com/AElfProject/aelf-web-login/actions) | | @aelf-web-login/react | ![GitHub Workflow Test Status](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/AElfProject/aelf-web-login/feature/badge-json/master-react-test-results.json) | [![Coverage](https://aelfproject.github.io/aelf-web-login/coverage-react/badge.svg)](https://github.com/AElfProject/aelf-web-login/actions) | # Install