From 74ccf09c5cf6ed9878e01a5df5ff6d681f1d34f6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 8 Oct 2024 14:38:28 +0800 Subject: [PATCH] chore(deps): update dependency rollup to v4 (#216) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore(deps): update dependency rollup to v4 * chore(deps): update dependency rollup to v4 * build: upgrade rollup4 * refactor: vitest replace jest * ci: add compatibility for Yarn 4 * chore: modify yarn.lock * chore: ignore unhandled vitest errors * style: compatible with yjs tsconfig * refactor: refactor test、build depts - use turbo build - use vitest replace jest - delete unuse config\dept * test: coverage testing with c8 * chore: revert some eslint rule --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: cycleccc <2991205548@qq.com> --- .eslintrc.cjs | 1 + .github/workflows/coverage.yml | 68 +- .github/workflows/e2e.yml | 48 +- .github/workflows/release.yml | 33 +- .github/workflows/test.yml | 54 +- .gitignore | 9 +- .husky/pre-commit | 2 +- .prettierrc.js => .prettierrc.cjs | 0 .vscode/launch.json | 29 - .yarnrc | 2 - .yarnrc.yml | 3 + build/build-all.sh | 55 - docs/dev.md | 25 +- jest.config.cjs | 32 - package.json | 36 +- .../code-block/code-block-menu.test.ts | 3 +- .../__tests__/format-painter/plugin.test.ts | 8 +- .../full-screen/full-screen-menu.test.ts | 8 +- .../image/menu/edit-image-size.test.ts | 4 +- .../__tests__/image/menu/edit-image.test.ts | 4 +- .../__tests__/image/menu/insert-image.test.ts | 9 +- .../link/menu/edit-link-menu.test.ts | 4 +- .../link/menu/insert-link-menu.test.ts | 4 +- .../__tests__/link/plugin.test.ts | 9 +- packages/basic-modules/package.json | 13 +- packages/basic-modules/rollup.config.js | 7 +- .../__tests__/select-lang-menu.test.ts | 6 +- packages/code-highlight/package.json | 13 +- packages/code-highlight/rollup.config.js | 7 +- .../__tests__/config/editor-config.test.ts | 24 +- .../__tests__/editor/plugins/with-dom.test.ts | 11 +- .../editor/plugins/with-emitter.test.ts | 14 +- .../core/__tests__/upload/uploader.test.ts | 90 +- packages/core/package.json | 13 +- packages/core/rollup.config.js | 7 +- packages/core/src/upload/createUploader.ts | 13 +- packages/editor/package.json | 13 +- packages/editor/rollup.config.js | 7 +- packages/list-module/package.json | 13 +- packages/list-module/rollup.config.js | 7 +- .../__tests__/elem-to-html.test.ts | 10 +- .../__tests__/menu/delete-col.test.ts | 38 +- .../__tests__/menu/delete-row.test.ts | 36 +- .../__tests__/menu/delete-table.test.ts | 10 +- .../__tests__/menu/full-width.test.ts | 28 +- .../__tests__/menu/insert-col.test.ts | 42 +- .../__tests__/menu/insert-row.test.ts | 30 +- .../__tests__/menu/insert-table.test.ts | 42 +- .../__tests__/menu/table-header.test.ts | 28 +- .../table-module/__tests__/plugin.test.ts | 12 +- packages/table-module/package.json | 13 +- packages/table-module/rollup.config.js | 7 +- packages/table-module/src/utils/dom.ts | 60 +- .../__tests__/plugin.test.ts | 34 +- .../__tests__/upload-files.test.ts | 20 +- .../__tests__/upload-image-menu.test.ts | 10 +- packages/upload-image-module/package.json | 13 +- packages/upload-image-module/rollup.config.js | 7 +- .../video-module/__tests__/helpler.test.ts | 35 +- .../menu/delete-video-menu.test.ts.bak | 8 +- .../__tests__/menu/insert-video-menu.test.ts | 4 +- .../__tests__/menu/upload-video-menu.test.ts | 6 +- .../video-module/__tests__/plugin.test.ts | 2 +- packages/video-module/package.json | 13 +- packages/video-module/rollup.config.js | 7 +- packages/yjs-for-react/package.json | 19 +- packages/yjs-for-react/rollup.config.js | 7 +- packages/yjs-for-react/tsconfig.json | 4 +- .../examples/frontend/.yarn/install-state.gz | Bin 0 -> 1422518 bytes packages/yjs/examples/frontend/package.json | 6 +- packages/yjs/examples/frontend/yarn.lock | 24899 +++++++++------- packages/yjs/package.json | 17 +- packages/yjs/rollup.config.js | 7 +- packages/yjs/src/applyToSlate/textEvent.ts | 2 +- .../yjs/src/applyToYjs/node/insertNode.ts | 3 +- packages/yjs/src/applyToYjs/node/mergeNode.ts | 3 +- packages/yjs/src/applyToYjs/node/splitNode.ts | 1 + packages/yjs/src/plugins/withYjs.ts | 1 + packages/yjs/src/utils/convert.ts | 4 +- packages/yjs/src/utils/location.ts | 4 +- packages/yjs/src/utils/position.ts | 6 +- packages/yjs/tsconfig.json | 4 +- scripts/release-tag.js | 25 - .../rollup-config}/config/common.js | 10 +- {build => shared/rollup-config}/config/dev.js | 5 +- {build => shared/rollup-config}/config/prd.js | 5 +- .../rollup-config/index.js | 12 +- shared/rollup-config/package.json | 7 + tests/setup/index.ts | 5 +- tsconfig.json | 15 +- turbo.json | 80 +- vitest.config.mts | 54 + yarn.lock | 22766 ++++++++------ 93 files changed, 28501 insertions(+), 20693 deletions(-) rename .prettierrc.js => .prettierrc.cjs (100%) delete mode 100644 .vscode/launch.json delete mode 100644 .yarnrc create mode 100644 .yarnrc.yml delete mode 100644 build/build-all.sh delete mode 100644 jest.config.cjs create mode 100644 packages/yjs/examples/frontend/.yarn/install-state.gz delete mode 100644 scripts/release-tag.js rename {build => shared/rollup-config}/config/common.js (86%) rename {build => shared/rollup-config}/config/dev.js (83%) rename {build => shared/rollup-config}/config/prd.js (89%) rename build/create-rollup-config.js => shared/rollup-config/index.js (80%) create mode 100644 shared/rollup-config/package.json create mode 100644 vitest.config.mts diff --git a/.eslintrc.cjs b/.eslintrc.cjs index 5779170b8..07594a674 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -31,6 +31,7 @@ module.exports = { }, globals: { globalThis:'readonly', + vi: "readonly" }, extends: [ 'plugin:@typescript-eslint/eslint-recommended', diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index aa4fa403a..bdd4ef0f8 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -1,8 +1,4 @@ -# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node -# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions -# github actions 中文文档 https://docs.github.com/cn/actions/getting-started-with-github-actions - -name: coverage test +name: coverage test on: push: @@ -18,22 +14,46 @@ jobs: test: runs-on: ubuntu-latest steps: - - name: Checkout repo - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - name: Setup node - uses: actions/setup-node@v4 - with: - node-version: 18.x - registry-url: https://registry.npmjs.com - - name: Install dependencies - run: yarn install - - name: Build packages - run: yarn build - - name: Unit test - run: yarn run test-c - - name: Upload coverage reports to Codecov - uses: codecov/codecov-action@v4.6.0 - with: - token: ${{ secrets.CODECOV_TOKEN }} + # 检出代码库 + - name: Checkout repo + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + # 设置 Node.js 版本 + - name: Setup node + uses: actions/setup-node@v4 + with: + node-version: 18.x + registry-url: https://registry.npmjs.com + + # 启用 Corepack 以支持 Yarn 4 + - name: Enable Corepack + run: corepack enable + + # 准备 Yarn 4.x + - name: Prepare Yarn + run: corepack prepare yarn@4.4.1 --activate + + # 安装依赖 + - name: Install dependencies + run: yarn install + + # 构建项目 + - name: Build packages + run: yarn build + + # 运行单元测试并生成覆盖率报告 + - name: Unit test + run: yarn run test-c + + # 上传覆盖率报告到 Codecov + - name: Upload coverage reports to Codecov + uses: codecov/codecov-action@v4.6.0 + with: + token: ${{ secrets.CODECOV_TOKEN }} + - name: Upload test results to Codecov + if: ${{ !cancelled() }} + uses: codecov/test-results-action@v1 + with: + token: ${{ secrets.CODECOV_TOKEN }} diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 94092ffeb..6dd685b6b 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -1,7 +1,3 @@ -# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node -# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions -# github actions 中文文档 https://docs.github.com/cn/actions/getting-started-with-github-actions - name: Cypress tests on: @@ -31,21 +27,37 @@ on: jobs: test-e2e: runs-on: ubuntu-latest - container: + container: image: cypress/browsers:latest options: --user 1001 steps: - - uses: actions/checkout@v4 - - name: Use Node.js 18 - uses: actions/setup-node@v4 - with: + - uses: actions/checkout@v4 + + # 设置 Node.js 版本 + - name: Use Node.js 18 + uses: actions/setup-node@v4 + with: node-version: '18' - - name: Install dependencies - run: yarn install - - name: Build packages - run: yarn build - - uses: cypress-io/github-action@v6 - with: - browser: chrome - start: yarn run example - wait-on: 'http://localhost:8881/examples/default-mode.html' + + # 启用 Corepack + - name: Enable Corepack + run: corepack enable + + # 安装并激活 Yarn 4.x + - name: Prepare Yarn + run: corepack prepare yarn@4.4.1 --activate + + # 安装项目依赖 + - name: Install dependencies + run: yarn install + + # 构建项目 + - name: Build packages + run: yarn build + + # 运行 Cypress 测试 + - uses: cypress-io/github-action@v6 + with: + browser: chrome + start: yarn run example + wait-on: 'http://localhost:8881/examples/default-mode.html' diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 21b4002a8..8706bda11 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -26,18 +26,28 @@ jobs: node-version: [18] steps: + # 检出代码库 - name: Checkout repo uses: actions/checkout@v4 with: fetch-depth: 0 + # 设置 Node.js 版本 - name: Setup Node ${{ matrix.node-version }} uses: actions/setup-node@v4 - with: node-version: ${{ matrix.node-version }} registry-url: 'https://registry.npmjs.org/' + # 启用 Corepack 以支持 Yarn 4 + - name: Enable Corepack + run: corepack enable + + # 准备 Yarn 4.x + - name: Prepare Yarn + run: corepack prepare yarn@4.4.1 --activate + + # 加载依赖缓存 - name: Load cached dependencies uses: actions/cache@v4.1.0 id: cache @@ -48,25 +58,19 @@ jobs: /home/runner/.cache/Cypress key: ${{ runner.os }}-node-${{ matrix.node-version }}-${{ hashFiles('**/package-lock.json') }} + # 安装依赖 - name: Install dependencies run: yarn install - # - name: Load cached dependencies - # uses: actions/cache@v4.0.2 - # id: cache - # with: - # path: | - # **/node_modules - # **/.turbo - # /home/runner/.cache/Cypress - # key: ${{ runner.os }}-node-${{ matrix.node-version }}-${{ hashFiles('**/package-lock.json') }} - - - name: Install Dependencies + # 构建项目 + - name: Build packages run: yarn build + # 运行单元测试 - name: Unit test - run: yarn run test + run: yarn run test + # 运行 E2E 测试 - name: E2E test uses: cypress-io/github-action@v6 with: @@ -74,6 +78,7 @@ jobs: start: yarn run example wait-on: 'http://localhost:8881/examples/default-mode.html' + # 创建 Release PR 或发布稳定版本到 npm - name: Create Release PR or publish stable version to npm id: changesets uses: changesets/action@v1 @@ -85,4 +90,4 @@ jobs: ${{ github.ref_name == 'master' && 'chore(release): publish a new release version' || 'chore(release): publish a new pre-release version' }} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} \ No newline at end of file + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index a7b85f40d..100c09bfe 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,8 +1,4 @@ -# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node -# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions -# github actions 中文文档 https://docs.github.com/cn/actions/getting-started-with-github-actions - -name: unit test +name: Unit Test on: push: @@ -29,19 +25,37 @@ on: jobs: test: runs-on: ubuntu-latest + steps: - - name: Checkout repo - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - name: Setup node - uses: actions/setup-node@v4 - with: - node-version: 18.x - registry-url: https://registry.npmjs.com - - name: Install dependencies - run: yarn install - - name: Build packages - run: yarn build - - name: Unit test - run: yarn run test \ No newline at end of file + # 检出代码库 + - name: Checkout repo + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + # 设置 Node.js 版本 + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 18.x + registry-url: https://registry.npmjs.com + + # 启用 Corepack 以支持 Yarn 4 + - name: Enable Corepack + run: corepack enable + + # 准备 Yarn 4.x + - name: Prepare Yarn + run: corepack prepare yarn@4.4.1 --activate + + # 安装依赖 + - name: Install dependencies + run: yarn install + + # 构建项目 + - name: Build packages + run: yarn build + + # 运行单元测试 + - name: Unit test + run: yarn run test diff --git a/.gitignore b/.gitignore index 308b43575..863c45b30 100644 --- a/.gitignore +++ b/.gitignore @@ -67,6 +67,13 @@ typings/ # Yarn Integrity file .yarn-integrity +.pnp.* +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/sdks +!.yarn/versions # dotenv environment variables file .env @@ -127,4 +134,4 @@ stats.html # Turbo cache -.turbo \ No newline at end of file +.turbo diff --git a/.husky/pre-commit b/.husky/pre-commit index b29c21d1e..fea686042 100644 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,4 +1,4 @@ #!/usr/bin/env sh . "$(dirname -- "$0")/_/husky.sh" -yarn lint:staged \ No newline at end of file +yarn lint:staged diff --git a/.prettierrc.js b/.prettierrc.cjs similarity index 100% rename from .prettierrc.js rename to .prettierrc.cjs diff --git a/.vscode/launch.json b/.vscode/launch.json deleted file mode 100644 index 61af15f4c..000000000 --- a/.vscode/launch.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - // 使用 IntelliSense 了解相关属性。 - // 悬停以查看现有属性的描述。 - // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 - "version": "0.2.0", - "configurations": [ - { - "type": "node", - "name": "vscode-jest-tests.v2.wangEditor-next", - "request": "launch", - "args": [ - "--runInBand", - "--watchAll=false", - "--testNamePattern", - "${jest.testNamePattern}", - "--runTestsByPath", - "${jest.testFile}" - ], - "cwd": "${workspaceFolder}", - "console": "integratedTerminal", - "internalConsoleOptions": "neverOpen", - "disableOptimisticBPs": true, - "program": "${workspaceFolder}/node_modules/.bin/jest", - "windows": { - "program": "${workspaceFolder}/node_modules/jest/bin/jest" - } - } - ] -} \ No newline at end of file diff --git a/.yarnrc b/.yarnrc deleted file mode 100644 index 1d3280e43..000000000 --- a/.yarnrc +++ /dev/null @@ -1,2 +0,0 @@ -registry "https://registry.npmjs.org/" ---install.ignore-engines true \ No newline at end of file diff --git a/.yarnrc.yml b/.yarnrc.yml new file mode 100644 index 000000000..03ddc33fc --- /dev/null +++ b/.yarnrc.yml @@ -0,0 +1,3 @@ +nodeLinker: node-modules + +npmRegistryServer: "https://registry.npmjs.org/" diff --git a/build/build-all.sh b/build/build-all.sh deleted file mode 100644 index d7acf60c8..000000000 --- a/build/build-all.sh +++ /dev/null @@ -1,55 +0,0 @@ -#!/bin/bash - -## 一键打包所有 package(只打包基础 module 额外的如 yjs插件 vue2、vue3 等包 进入对应目录下打包) - -# 获取 yarn dev/build 类型 -buildType=build -if [ -n "$1" ]; then - buildType=$1 -fi - -cd ./packages - -# core 要第一个打包 -cd ./core -rm -rf dist # 清空 dist 目录 -yarn "$buildType" - -cd ../basic-modules -rm -rf dist # 清空 dist 目录 -yarn "$buildType" - -# code-highlight 依赖于 basic-modules 中的 code-block -cd ../code-highlight -rm -rf dist # 清空 dist 目录 -yarn "$buildType" - -cd ../list-module -rm -rf dist # 清空 dist 目录 -yarn "$buildType" - -cd ../table-module -rm -rf dist # 清空 dist 目录 -yarn "$buildType" - -# upload-image 依赖于 basic-modules 中的 image -cd ../upload-image-module -rm -rf dist # 清空 dist 目录 -yarn "$buildType" - -cd ../video-module -rm -rf dist # 清空 dist 目录 -yarn "$buildType" - -# editor 依赖于上述的 core + modules -cd ../editor -rm -rf dist # 清空 dist 目录 -yarn "$buildType" - -cd ../yjs -rm -rf dist -yarn "$buildType" - -cd ../yjs-for-react -rm -rf dist -yarn "$buildType" \ No newline at end of file diff --git a/docs/dev.md b/docs/dev.md index eecab3f16..08795e46b 100644 --- a/docs/dev.md +++ b/docs/dev.md @@ -12,7 +12,30 @@ ### 打包 - 下载代码到本地,进入 `wangEditor` 目录 -- 打包所有模块 `yarn dev` 或者 `yarn build`(调试使用 yarn dev 即可) +- 安装 yarn 4.x (node 18.x 以上) +~~~ shell +# 启用 Corepack +corepack enable + +# 安装并激活 Yarn 4.x +corepack prepare yarn@stable --activate + +# 安装完成后检查版本 +yarn -v +~~~ +- 安装依赖 +~~~ shell +yarn +# 或者 +yarn install +~~~ +- 打包所有模块 +~~~ shell + # (调试使用 yarn dev 即可) +yarn dev +# 正式包使用 yarn build +yarn build +~~~ ### 运行 demo diff --git a/jest.config.cjs b/jest.config.cjs deleted file mode 100644 index f62306441..000000000 --- a/jest.config.cjs +++ /dev/null @@ -1,32 +0,0 @@ -module.exports = { - roots: ['/packages'], - testEnvironment: 'jsdom', - testMatch: ['**/(*.)+(spec|test).+(ts|js|tsx)'], - transform: { - '^.+\\.tsx?$': 'ts-jest', - '^.+\\.js$': 'ts-jest', - }, - globals: { - 'ts-jest': { - tsconfig: '/tsconfig.json', - }, - }, - moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'], - moduleNameMapper: { - '^.+\\.(css|less)$': '/tests/utils/stylesMock.js', - }, - transformIgnorePatterns: ['node_modules/(?!(html-void-elements)/)'], - setupFilesAfterEnv: ['/tests/setup/index.ts'], - // just collect basic module - collectCoverageFrom: [ - '/packages/{basic-modules,code-highlight,core,editor,list-module,table-module,upload-image-module,video-module}/src/**/*.(ts|tsx)', - ], - coveragePathIgnorePatterns: [ - 'dist', - 'locale', - 'index.ts', - 'config.ts', - 'browser-polyfill.ts', - 'node-polyfill.ts', - ], -} diff --git a/package.json b/package.json index 901188bf8..3d3bc00ff 100644 --- a/package.json +++ b/package.json @@ -1,18 +1,17 @@ { "name": "@wangeditor-next/wangeditor", "private": true, - "packageManager": "yarn@1.22.22", + "packageManager": "yarn@4.4.1", "browserslist": [ "defaults", "not IE 11" ], "scripts": { "cz": "cz", - "test": "cross-env NODE_OPTIONS=--unhandled-rejections=warn jest --detectOpenHandles --passWithNoTests", - "test-c": "cross-env NODE_OPTIONS=--unhandled-rejections=warn jest --coverage", - "dev": "sh build/build-all.sh dev", - "build": "sh build/build-all.sh", - "build:ci": "turbo run build", + "test": "cross-env NODE_OPTIONS=--unhandled-rejections=warn vitest run --passWithNoTests --dangerouslyIgnoreUnhandledErrors", + "test-c": "cross-env NODE_OPTIONS=--unhandled-rejections=warn vitest run --passWithNoTests --dangerouslyIgnoreUnhandledErrors --coverage", + "dev": "turbo run dev", + "build": "turbo run build", "publish": "yarn changeset publish", "prerelease": "yarn build", "format": "yarn prettier --write", @@ -25,20 +24,20 @@ "e2e:dev": "concurrently \"yarn example\" \"yarn run cypress:open\"", "e2e": "concurrently \"yarn example\" \"yarn run cypress:run\"", "prepare": "husky install", - "turbo": "turbo", "changeset": "changeset", "example": "turbo run example --filter=@wangeditor-next/editor" }, "workspaces": [ + "shared/*", "packages/*" ], "devDependencies": { "@babel/core": "^7.24.7", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", "@babel/plugin-proposal-class-properties": "^7.10.4", "@babel/plugin-proposal-object-rest-spread": "^7.11.0", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", "@babel/plugin-transform-runtime": "^7.14.5", "@babel/preset-env": "^7.14.5", "@babel/preset-typescript": "^7.14.5", @@ -54,12 +53,11 @@ "@rollup/plugin-terser": "^0.4.0", "@testing-library/dom": "^10.4.0", "@testing-library/jest-dom": "^6.0.0", - "@types/jest": "^25.2.1", - "@typescript-eslint/eslint-plugin": "^8.0.0", - "@typescript-eslint/parser": "^8.0.0", + "@typescript-eslint/eslint-plugin": "^8.8.0", + "@typescript-eslint/parser": "^8.8.0", + "@vitest/coverage-v8": "2.1.2", "autoprefixer": "^10.2.5", "babel-core": "^7.0.0-bridge.0", - "babel-jest": "^27.0.6", "concurrently": "^9.0.0", "core-js": "3", "cross-env": "^7.0.2", @@ -78,7 +76,7 @@ "eslint-plugin-vue": "^9.27.0", "http-server": "^14.0.0", "husky": "^9.1.6", - "jest": "^27.0.6", + "jest-environment-jsdom": "^27.0.0", "less": "^4.0.0", "lint-staged": "^15.2.10", "lodash": "^4.17.21", @@ -87,7 +85,7 @@ "patch-package": "^8.0.0", "postcss": "^8.2.15", "prettier": "^3.3.3", - "rollup": "^2.41.0", + "rollup": "^4.0.0", "rollup-plugin-cleanup": "^3.2.1", "rollup-plugin-copy": "^3.4.0", "rollup-plugin-delete": "^2.0.0", @@ -97,10 +95,10 @@ "rollup-plugin-serve": "^1.1.0", "rollup-plugin-typescript2": "^0.36.0", "rollup-plugin-visualizer": "^5.5.0", - "ts-jest": "^27.0.4", "tslib": "^2.3.0", "turbo": "2.1.3", - "typescript": "4.9.5" + "typescript": "4.9.5", + "vitest": "^2.1.2" }, "commitlint": { "extends": [ @@ -121,4 +119,4 @@ "dependencies": { "@babel/runtime": "^7.14.6" } -} \ No newline at end of file +} diff --git a/packages/basic-modules/__tests__/code-block/code-block-menu.test.ts b/packages/basic-modules/__tests__/code-block/code-block-menu.test.ts index 0c5ac3087..1324a0cfe 100644 --- a/packages/basic-modules/__tests__/code-block/code-block-menu.test.ts +++ b/packages/basic-modules/__tests__/code-block/code-block-menu.test.ts @@ -33,7 +33,7 @@ describe('code-block menu', () => { startLocation = null }) - it('getValue and isActive', done => { + it('getValue and isActive', async () => { editor.select(startLocation) expect(menu.isActive(editor)).toBeFalsy() expect(menu.getValue(editor)).toBe('') @@ -46,7 +46,6 @@ describe('code-block menu', () => { setTimeout(() => { expect(menu.isActive(editor)).toBeTruthy() expect(menu.getValue(editor)).toBe('javascript') - done() }) }) diff --git a/packages/basic-modules/__tests__/format-painter/plugin.test.ts b/packages/basic-modules/__tests__/format-painter/plugin.test.ts index 13bf779cd..4155c22ba 100644 --- a/packages/basic-modules/__tests__/format-painter/plugin.test.ts +++ b/packages/basic-modules/__tests__/format-painter/plugin.test.ts @@ -8,8 +8,8 @@ describe('format painter plugin', () => { beforeEach(() => { editor = withFormatPainter(createEditor()) - jest.spyOn(document, 'addEventListener') - jest.spyOn(document, 'removeEventListener') + vi.spyOn(document, 'addEventListener') + vi.spyOn(document, 'removeEventListener') editor.focus() editor.insertText('Hello World') @@ -20,7 +20,7 @@ describe('format painter plugin', () => { }) afterEach(() => { - jest.clearAllMocks() + vi.clearAllMocks() }) it('format painter change', () => { @@ -28,7 +28,7 @@ describe('format painter plugin', () => { FormatPainter.attrs.isSelect = true // 监控静态方法 setFormatHtml - const setFormatHtmlSpy = jest.spyOn(FormatPainter.prototype, 'setFormatHtml') + const setFormatHtmlSpy = vi.spyOn(FormatPainter.prototype, 'setFormatHtml') // 模拟 onChange 的调用 editor.onChange() diff --git a/packages/basic-modules/__tests__/full-screen/full-screen-menu.test.ts b/packages/basic-modules/__tests__/full-screen/full-screen-menu.test.ts index 0279876c2..5560e47ed 100644 --- a/packages/basic-modules/__tests__/full-screen/full-screen-menu.test.ts +++ b/packages/basic-modules/__tests__/full-screen/full-screen-menu.test.ts @@ -21,24 +21,23 @@ describe('full screen menu', () => { expect(menu.isDisabled(editor)).toBeFalsy() }) - it('full screen menu', done => { + it('full screen menu', async () => { menu.exec(editor, '') // 设置全屏 expect(menu.isActive(editor)).toBeTruthy() menu.exec(editor, '') // 取消全屏(有延迟) setTimeout(() => { expect(menu.isActive(editor)).toBeFalsy() - done() }, 500) }) it('get title', () => { - expect(menu.getTitle(editor)).toBe(t('fullScreen.cancelTitle')) + expect(menu.getTitle(editor)).toBe(t('fullScreen.title')) menu.exec(editor, '') expect(menu.getTitle(editor)).toBe(t('fullScreen.title')) }) - it('get icon', done => { + it('get icon', async () => { let svg = menu.getIcon(editor) expect(svg).toBe(FULL_SCREEN_SVG) @@ -46,7 +45,6 @@ describe('full screen menu', () => { setTimeout(() => { svg = menu.getIcon(editor) expect(svg).toBe(CANCEL_FULL_SCREEN_SVG) - done() }, 500) }) }) diff --git a/packages/basic-modules/__tests__/image/menu/edit-image-size.test.ts b/packages/basic-modules/__tests__/image/menu/edit-image-size.test.ts index dfb904607..cbb0d02c8 100644 --- a/packages/basic-modules/__tests__/image/menu/edit-image-size.test.ts +++ b/packages/basic-modules/__tests__/image/menu/edit-image-size.test.ts @@ -104,7 +104,7 @@ describe('edit image size menu', () => { offset: 0, }) - const spy = jest.spyOn(editor, 'hidePanelOrModal') + const spy = vi.spyOn(editor, 'hidePanelOrModal') const elem = menu.getModalContentElem(editor) document.body.appendChild(elem) @@ -155,7 +155,7 @@ describe('edit image size menu', () => { menu.getModalContentElem(editor) const inputSrc = document.getElementById((menu as any).widthInputId) as HTMLInputElement - jest.spyOn(inputSrc, 'focus') + vi.spyOn(inputSrc, 'focus') await waitFor(() => { expect(inputSrc.focus).toHaveBeenCalled() diff --git a/packages/basic-modules/__tests__/image/menu/edit-image.test.ts b/packages/basic-modules/__tests__/image/menu/edit-image.test.ts index 5a5aee63e..4291b0d87 100644 --- a/packages/basic-modules/__tests__/image/menu/edit-image.test.ts +++ b/packages/basic-modules/__tests__/image/menu/edit-image.test.ts @@ -141,7 +141,7 @@ describe('edit image menu', () => { inputHref.value = 'https://example.com/new-link' // 设置 spy 监听 updateImage 方法 - const spy = jest.spyOn(menu as any, 'updateImage') + const spy = vi.spyOn(menu as any, 'updateImage') // 模拟点击事件 editor.deselect() @@ -179,7 +179,7 @@ describe('edit image menu', () => { menu.getModalContentElem(editor) const inputSrc = document.getElementById((menu as any).srcInputId) as HTMLInputElement - jest.spyOn(inputSrc, 'focus') + vi.spyOn(inputSrc, 'focus') await waitFor(() => { expect(inputSrc.focus).toHaveBeenCalled() diff --git a/packages/basic-modules/__tests__/image/menu/insert-image.test.ts b/packages/basic-modules/__tests__/image/menu/insert-image.test.ts index a6adc4b5e..f520fd42b 100644 --- a/packages/basic-modules/__tests__/image/menu/insert-image.test.ts +++ b/packages/basic-modules/__tests__/image/menu/insert-image.test.ts @@ -9,6 +9,11 @@ import { Editor, Transforms } from 'slate' import createEditor from '../../../../../tests/utils/create-editor' import InsertImage from '../../../src/modules/image/menu/InsertImage' +// 在测试文件中 +// beforeEach(() => { +// jest.spyOn(helper, 'insertImageNode').mockImplementation(jest.fn()) +// }) + describe('insert image menu', () => { const menu = new InsertImage() let editor: any @@ -57,7 +62,7 @@ describe('insert image menu', () => { }) it('get modal content elem', () => { - const spy = jest.spyOn(menu as any, 'insertImage') + const spy = vi.spyOn(menu as any, 'insertImage') // Generate modal content and simulate button click const elem = menu.getModalContentElem(editor) @@ -105,7 +110,7 @@ describe('insert image menu', () => { menu.getModalContentElem(editor) const inputSrc = document.getElementById((menu as any).srcInputId) as HTMLInputElement - jest.spyOn(inputSrc, 'focus') + vi.spyOn(inputSrc, 'focus') await waitFor(() => { expect(inputSrc.focus).toHaveBeenCalled() diff --git a/packages/basic-modules/__tests__/link/menu/edit-link-menu.test.ts b/packages/basic-modules/__tests__/link/menu/edit-link-menu.test.ts index 8f98dc566..32cf10811 100644 --- a/packages/basic-modules/__tests__/link/menu/edit-link-menu.test.ts +++ b/packages/basic-modules/__tests__/link/menu/edit-link-menu.test.ts @@ -74,7 +74,7 @@ describe('edit link menu', () => { }) it('get modal content elem', () => { - const spy = jest.spyOn(editor, 'hidePanelOrModal') + const spy = vi.spyOn(editor, 'hidePanelOrModal') const elem = menu.getModalContentElem(editor) editor.select(startLocation) @@ -100,7 +100,7 @@ describe('edit link menu', () => { menu.getModalContentElem(editor) const inputSrc = document.getElementById((menu as any).urlInputId) as HTMLInputElement - jest.spyOn(inputSrc, 'focus') + vi.spyOn(inputSrc, 'focus') await waitFor(() => { expect(inputSrc.focus).toHaveBeenCalled() diff --git a/packages/basic-modules/__tests__/link/menu/insert-link-menu.test.ts b/packages/basic-modules/__tests__/link/menu/insert-link-menu.test.ts index 7f5de0ada..405b81fd2 100644 --- a/packages/basic-modules/__tests__/link/menu/insert-link-menu.test.ts +++ b/packages/basic-modules/__tests__/link/menu/insert-link-menu.test.ts @@ -47,7 +47,7 @@ describe('insert link menu', () => { }) it('get modal content elem', () => { - const spy = jest.spyOn(editor, 'hidePanelOrModal') + const spy = vi.spyOn(editor, 'hidePanelOrModal') const elem = menu.getModalContentElem(editor) editor.select(startLocation) @@ -76,7 +76,7 @@ describe('insert link menu', () => { menu.getModalContentElem(editor) const inputSrc = document.getElementById((menu as any).textInputId) as HTMLInputElement - jest.spyOn(inputSrc, 'focus') + vi.spyOn(inputSrc, 'focus') await waitFor(() => { expect(inputSrc.focus).toHaveBeenCalled() diff --git a/packages/basic-modules/__tests__/link/plugin.test.ts b/packages/basic-modules/__tests__/link/plugin.test.ts index 558c25642..e77e8946c 100644 --- a/packages/basic-modules/__tests__/link/plugin.test.ts +++ b/packages/basic-modules/__tests__/link/plugin.test.ts @@ -31,7 +31,7 @@ describe('link plugin', () => { expect(editor.isInline(elem)).toBeTruthy() }) - it('link insert data', done => { + it('link insert data', () => { const url = 'https://cycleccc.github.io/docs/' const data = new MyDataTransfer() @@ -49,10 +49,9 @@ describe('link plugin', () => { const linkElem = links[0] as any expect(linkElem.url).toBe(url) - done() }) }) - it('should insert an image correctly when dragging and dropping an image', done => { + it('should insert an image correctly when dragging and dropping an image', () => { const imgHtml = '' const imgUrl = 'https://cycleccc.github.io/docs/image/logo.png' @@ -72,11 +71,10 @@ describe('link plugin', () => { const imgElem = images[0] as any expect(imgElem.src).toBe('https://www.wangeditor.com/img.jpg') - done() }) }) - it('should insert non-link data correctly', done => { + it('should insert non-link data correctly', async () => { const text = 'This is a test text.' const data = new MyDataTransfer() @@ -91,7 +89,6 @@ describe('link plugin', () => { const content = Editor.string(editor, []) expect(content).toContain(text) - done() }) }) }) diff --git a/packages/basic-modules/package.json b/packages/basic-modules/package.json index d68e5630a..816da4b44 100644 --- a/packages/basic-modules/package.json +++ b/packages/basic-modules/package.json @@ -3,15 +3,18 @@ "version": "1.5.5", "description": "wangEditor basic modules", "author": "cycleccc <2991205548@qq.com>", - "contributors": [], + "type": "module", "homepage": "https://github.com/cycleccc/wangEditor#readme", "license": "MIT", "types": "dist/basic-modules/src/index.d.ts", "main": "dist/index.js", - "module": "dist/index.esm.js", - "browser": { - "./dist/index.js": "./dist/index.js", - "./dist/index.esm.js": "./dist/index.esm.js" + "module": "dist/index.mjs", + "exports": { + ".": { + "types": "./dist/packages/basic-modules/src/index.d.ts", + "import": "./dist/index.mjs", + "require": "./dist/index.js" + } }, "directories": { "lib": "dist", diff --git a/packages/basic-modules/rollup.config.js b/packages/basic-modules/rollup.config.js index 03d6485c2..36d9bac54 100644 --- a/packages/basic-modules/rollup.config.js +++ b/packages/basic-modules/rollup.config.js @@ -1,5 +1,6 @@ -import { createRollupConfig, IS_PRD } from '../../build/create-rollup-config' -import pkg from './package.json' +import { createRollupConfig } from '@wangeditor-next-shared/rollup-config' + +import pkg from './package.json' assert { type: 'json' } const name = 'WangEditorBasicModules' @@ -13,6 +14,7 @@ const esmConf = createRollupConfig({ name, }, }) + configList.push(esmConf) // umd @@ -23,6 +25,7 @@ const umdConf = createRollupConfig({ name, }, }) + configList.push(umdConf) export default configList diff --git a/packages/code-highlight/__tests__/select-lang-menu.test.ts b/packages/code-highlight/__tests__/select-lang-menu.test.ts index bda3321fe..46d50bb61 100644 --- a/packages/code-highlight/__tests__/select-lang-menu.test.ts +++ b/packages/code-highlight/__tests__/select-lang-menu.test.ts @@ -94,7 +94,7 @@ describe('code-highlight select lang menu', () => { expect(menu.isDisabled(editor)).toBeFalsy() }) - it('menu exec (change lang)', done => { + it('menu exec (change lang)', async () => { if (editor == null || menu == null) { throw new Error('editor or menu is null') } // select codeNode @@ -106,11 +106,10 @@ describe('code-highlight select lang menu', () => { editor.select(codeLocation) expect(menu.getValue(editor)).toBe('html') - done() }) }) - it('menu exec (without lang)', done => { + it('menu exec (without lang)', async () => { if (editor == null || menu == null) { throw new Error('editor or menu is null') } // select codeNode @@ -122,7 +121,6 @@ describe('code-highlight select lang menu', () => { editor.select(codeLocation) expect(menu.getValue(editor)).toBe('') - done() }) }) }) diff --git a/packages/code-highlight/package.json b/packages/code-highlight/package.json index e59af4073..9a639d478 100644 --- a/packages/code-highlight/package.json +++ b/packages/code-highlight/package.json @@ -3,15 +3,18 @@ "version": "1.3.3", "description": "wangEditor code-highlight module", "author": "cycleccc <2991205548@qq.com>", - "contributors": [], + "type": "module", "homepage": "https://github.com/cycleccc/wangEditor#readme", "license": "MIT", "types": "dist/code-highlight/src/index.d.ts", "main": "dist/index.js", - "module": "dist/index.esm.js", - "browser": { - "./dist/index.js": "./dist/index.js", - "./dist/index.esm.js": "./dist/index.esm.js" + "module": "dist/index.mjs", + "exports": { + ".": { + "types": "./dist/code-highlight/src/index.d.ts", + "import": "./dist/index.mjs", + "require": "./dist/index.js" + } }, "directories": { "lib": "dist", diff --git a/packages/code-highlight/rollup.config.js b/packages/code-highlight/rollup.config.js index 636793c53..cbd020957 100644 --- a/packages/code-highlight/rollup.config.js +++ b/packages/code-highlight/rollup.config.js @@ -1,5 +1,6 @@ -import { createRollupConfig, IS_PRD } from '../../build/create-rollup-config' -import pkg from './package.json' +import { createRollupConfig } from '@wangeditor-next-shared/rollup-config' + +import pkg from './package.json' assert { type: 'json' } const name = 'WangEditorCodeHighLight' @@ -13,6 +14,7 @@ const esmConf = createRollupConfig({ name, }, }) + configList.push(esmConf) // umd @@ -23,6 +25,7 @@ const umdConf = createRollupConfig({ name, }, }) + configList.push(umdConf) export default configList diff --git a/packages/core/__tests__/config/editor-config.test.ts b/packages/core/__tests__/config/editor-config.test.ts index 16af5c08b..d21a70386 100644 --- a/packages/core/__tests__/config/editor-config.test.ts +++ b/packages/core/__tests__/config/editor-config.test.ts @@ -63,12 +63,12 @@ describe('editor config', () => { expect(editor.getText()).toBe('') }) - it('if set maxLength option, the editor can not update content when text length is equal to maxLength', done => { + it('if set maxLength option, the editor can not update content when text length is equal to maxLength', async () => { const editor = createCoreEditor({ config: { maxLength: 10, onMaxLength: () => { - done() // 触发回调,才能完成该测试 + // 触发回调,才能完成该测试 }, }, }) @@ -84,8 +84,8 @@ describe('editor config', () => { expect(editor.getText()).toBe('123456789a') }) - it('if set onCreated option, it will be called when created editor', done => { - const fn = jest.fn() + it('if set onCreated option, it will be called when created editor', async () => { + const fn = vi.fn() createCoreEditor({ config: { @@ -95,12 +95,11 @@ describe('editor config', () => { setTimeout(() => { expect(fn).toHaveBeenCalled() - done() }) }) - it('if set onChange option, it will be called when change editor selection', done => { - const fn = jest.fn() + it('if set onChange option, it will be called when change editor selection', async () => { + const fn = vi.fn() const editor = createCoreEditor({ config: { @@ -111,12 +110,11 @@ describe('editor config', () => { editor.select(getStartLocation(editor)) // 选区变化,触发 onchange setTimeout(() => { expect(fn).toHaveBeenCalledWith(editor) - done() }) }) - it('if set onChange option, it will be called when change editor content', done => { - const fn = jest.fn() + it('if set onChange option, it will be called when change editor content', async () => { + const fn = vi.fn() const editor = createCoreEditor({ config: { @@ -132,12 +130,11 @@ describe('editor config', () => { }, 50) setTimeout(() => { expect(fn).toHaveBeenCalledTimes(2) - done() }, 80) }) - it('if set onDestroyed option, it will be called when destroy editor', done => { - const fn = jest.fn() + it('if set onDestroyed option, it will be called when destroy editor', async () => { + const fn = vi.fn() const editor = createCoreEditor({ config: { onDestroyed: fn, @@ -150,7 +147,6 @@ describe('editor config', () => { setTimeout(() => { expect(fn).toHaveBeenCalledWith(editor) - done() }, 20) }) }) diff --git a/packages/core/__tests__/editor/plugins/with-dom.test.ts b/packages/core/__tests__/editor/plugins/with-dom.test.ts index d995fd178..d49361126 100644 --- a/packages/core/__tests__/editor/plugins/with-dom.test.ts +++ b/packages/core/__tests__/editor/plugins/with-dom.test.ts @@ -26,7 +26,7 @@ describe('editor DOM API', () => { expect(editor.id).not.toBeNull() }) - it('destroy', done => { + it('destroy', async () => { const editorConfig = { hoverbarKeys: {} } editorConfig.hoverbarKeys = { @@ -56,7 +56,6 @@ describe('editor DOM API', () => { setTimeout(() => { editor.destroy() expect(editor.isDestroyed).toBeTruthy() - done() }) }) @@ -75,7 +74,7 @@ describe('editor DOM API', () => { // TODO }) - it('isFullScreen fullScreen unFullScreen', done => { + it('isFullScreen fullScreen unFullScreen', async () => { const editor = createEditor() createToolbar(editor) @@ -88,11 +87,10 @@ describe('editor DOM API', () => { editor.unFullScreen() setTimeout(() => { expect(editor.isFullScreen).toBeFalsy() - done() }, 1000) }) - it('toDOMNode', done => { + it('toDOMNode', async () => { const p = { type: 'paragraph', children: [{ text: 'hello' }] } const editor = createEditor({ content: [p], @@ -102,7 +100,6 @@ describe('editor DOM API', () => { const domNode = editor.toDOMNode(p) expect(domNode.tagName).toBe('DIV') - done() }) }) @@ -141,7 +138,7 @@ describe('editor DOM API', () => { }) }) - // TODO blur isFocused 用 jest 测试异常,以及 editor-config.test.ts 中的 `onFocus` `onBlur` + // TODO blur isFocused 用 vi 测试异常,以及 editor-config.test.ts 中的 `onFocus` `onBlur` it('disable isDisabled enable', () => { const editor = createEditor() diff --git a/packages/core/__tests__/editor/plugins/with-emitter.test.ts b/packages/core/__tests__/editor/plugins/with-emitter.test.ts index 398e48c89..f0ce678a2 100644 --- a/packages/core/__tests__/editor/plugins/with-emitter.test.ts +++ b/packages/core/__tests__/editor/plugins/with-emitter.test.ts @@ -14,9 +14,9 @@ describe('eventBus API', () => { it('bind and emit', () => { const editor = createEditor() - const fn1 = jest.fn() // jest mock function - const fn2 = jest.fn() - const fn3 = jest.fn() + const fn1 = vi.fn() // vi mock function + const fn2 = vi.fn() + const fn3 = vi.fn() editor.on('key1', fn1) editor.on('key1', fn2) @@ -32,8 +32,8 @@ describe('eventBus API', () => { it('off single event', () => { const editor = createEditor() - const fn1 = jest.fn() - const fn2 = jest.fn() + const fn1 = vi.fn() + const fn2 = vi.fn() editor.on('key1', fn1) editor.on('key1', fn2) @@ -51,8 +51,8 @@ describe('eventBus API', () => { let n = 1 - const fn1 = jest.fn(() => n += 1) - const fn2 = jest.fn(() => n += 1) + const fn1 = vi.fn(() => n += 1) + const fn2 = vi.fn(() => n += 1) editor.once('key1', fn1) editor.once('key1', fn2) diff --git a/packages/core/__tests__/upload/uploader.test.ts b/packages/core/__tests__/upload/uploader.test.ts index f02307e47..1f76c2362 100644 --- a/packages/core/__tests__/upload/uploader.test.ts +++ b/packages/core/__tests__/upload/uploader.test.ts @@ -3,9 +3,10 @@ * @author wangfupeng */ +import nock from 'nock' + import createUploader from '../../src/upload/createUploader' import { IUploadConfig } from '../../src/upload/interface' -import nock from 'nock' const server = 'https://fake-endpoint.wangeditor-v5.com' @@ -18,10 +19,11 @@ describe('uploader', () => { meta: { token: 'xxx', }, - onSuccess: (file, res) => {}, - onFailed: (file, res) => {}, - onError: (file, err, res) => {}, + onSuccess: (_file, _res) => { return undefined }, + onFailed: (_file, _res) => { return undefined }, + onError: (_file, _err, _res) => { return undefined }, }) + expect(uppy).not.toBeNull() }) @@ -30,9 +32,9 @@ describe('uploader', () => { createUploader({ fieldName: 'file1', metaWithUrl: false, - onSuccess: (file, res) => {}, - onFailed: (file, res) => {}, - onError: (file, err, res) => {}, + onSuccess: (_file, _res) => { return undefined }, + onFailed: (_file, _res) => { return undefined }, + onError: (_file, _err, _res) => { return undefined }, } as IUploadConfig) } catch (err: unknown) { expect((err as Error).message).toBe('Cannot get upload server address\n没有配置上传地址') @@ -44,9 +46,9 @@ describe('uploader', () => { createUploader({ server: '/upload', metaWithUrl: false, - onSuccess: (file, res) => {}, - onFailed: (file, res) => {}, - onError: (file, err, res) => {}, + onSuccess: (_file, _res) => { return undefined }, + onFailed: (_file, _res) => { return undefined }, + onError: (_file, _err, _res) => { return undefined }, } as IUploadConfig) } catch (err: unknown) { expect((err as Error).message).toBe('Cannot get fieldName\n没有配置 fieldName') @@ -64,19 +66,19 @@ describe('uploader', () => { .post('/') .reply(200, {}) - const fn = jest.fn() + const fn = vi.fn() const uppy = createUploader({ server, fieldName: 'file1', metaWithUrl: false, onSuccess: fn, - onFailed: (file, res) => {}, - onError: (file, err, res) => {}, + onFailed: (_file, _res) => { return undefined }, + onError: (_file, _err, _res) => { return undefined }, }) // reference https://github.com/transloadit/uppy/blob/main/packages/%40uppy/xhr-upload/src/index.test.js uppy.addFile({ - source: 'jest', + source: 'vi', name: 'foo.jpg', type: 'image/jpeg', data: new Blob([Buffer.alloc(8192)]), @@ -98,29 +100,30 @@ describe('uploader', () => { .post('/') .reply(200, {}) - const fn = jest.fn() + const fn = vi.fn() + console.error = fn - let uppy = createUploader({ + const uppy = createUploader({ server, fieldName: 'file1', metaWithUrl: false, onSuccess: () => { throw new Error('test onSuccess error') }, - onFailed: (file, res) => {}, - onError: (file, err, res) => {}, + onFailed: (_file, _res) => { return undefined }, + onError: (_file, _err, _res) => { return undefined }, }) // reference https://github.com/transloadit/uppy/blob/main/packages/%40uppy/xhr-upload/src/index.test.js uppy.addFile({ - source: 'jest', + source: 'vi', name: 'foo.jpg', type: 'image/jpeg', data: new Blob([Buffer.alloc(8192)]), }) - return uppy.upload().catch(err => { + return uppy.upload().catch(_err => { expect(fn).toBeCalled() }) }) @@ -136,20 +139,20 @@ describe('uploader', () => { .post('/') .reply(200, {}) - const fn = jest.fn() + const fn = vi.fn() const uppy = createUploader({ server, fieldName: 'file1', metaWithUrl: false, onSuccess: () => {}, onProgress: fn, - onFailed: (file, res) => {}, - onError: (file, err, res) => {}, + onFailed: (_file, _res) => { return undefined }, + onError: (_file, _err, _res) => { return undefined }, }) // reference https://github.com/transloadit/uppy/blob/main/packages/%40uppy/xhr-upload/src/index.test.js uppy.addFile({ - source: 'jest', + source: 'vi', name: 'foo.jpg', type: 'image/jpeg', data: new Blob([Buffer.alloc(8192)]), @@ -171,19 +174,19 @@ describe('uploader', () => { .post('/') .reply(400, {}) - const fn = jest.fn() + const fn = vi.fn() const uppy = createUploader({ server, fieldName: 'file1', metaWithUrl: false, onSuccess: () => {}, - onFailed: (file, res) => {}, + onFailed: (_file, _res) => { return undefined }, onError: fn, }) // reference https://github.com/transloadit/uppy/blob/main/packages/%40uppy/xhr-upload/src/index.test.js uppy.addFile({ - source: 'jest', + source: 'vi', name: 'foo.jpg', type: 'image/jpeg', data: new Blob([Buffer.alloc(8192)]), @@ -205,19 +208,20 @@ describe('uploader', () => { .post('/') .reply(400, {}) - const fn = jest.fn() + const fn = vi.fn() + console.error = fn const uppy = createUploader({ server, fieldName: 'file1', metaWithUrl: false, onSuccess: () => {}, - onFailed: (file, res) => {}, + onFailed: (_file, _res) => { return undefined }, } as any) // reference https://github.com/transloadit/uppy/blob/main/packages/%40uppy/xhr-upload/src/index.test.js uppy.addFile({ - source: 'jest', + source: 'vi', name: 'foo.jpg', type: 'image/jpeg', data: new Blob([Buffer.alloc(8192)]), @@ -239,14 +243,15 @@ describe('uploader', () => { .post('/') .reply(400, {}) - const fn = jest.fn() + const fn = vi.fn() + console.error = fn const uppy = createUploader({ server, fieldName: 'file1', metaWithUrl: false, onSuccess: () => {}, - onFailed: (file, res) => {}, + onFailed: (_file, _res) => { return undefined }, onError: () => { throw new Error('test onError error') }, @@ -254,39 +259,40 @@ describe('uploader', () => { // reference https://github.com/transloadit/uppy/blob/main/packages/%40uppy/xhr-upload/src/index.test.js uppy.addFile({ - source: 'jest', + source: 'vi', name: 'foo.jpg', type: 'image/jpeg', data: new Blob([Buffer.alloc(8192)]), }) - return uppy.upload().catch(err => { + return uppy.upload().catch(_err => { expect(fn).toBeCalled() }) }) test('it should invoke error callback if file size over max size', () => { - const fn = jest.fn() - const consoleFn = jest.fn() + const fn = vi.fn() + const consoleFn = vi.fn() + console.error = consoleFn let uppy = createUploader({ server, fieldName: 'file1', metaWithUrl: false, onSuccess: () => {}, - onFailed: (file, res) => {}, + onFailed: (_file, _res) => { return undefined }, onError: fn, maxFileSize: 5, }) try { uppy.addFile({ - source: 'jest', + source: 'vi', name: 'foo.jpg', type: 'image/jpeg', data: new Blob([Buffer.alloc(8192)]), }) - } catch (err) { + } catch { expect(fn).toBeCalled() } @@ -295,7 +301,7 @@ describe('uploader', () => { fieldName: 'file1', metaWithUrl: false, onSuccess: () => {}, - onFailed: (file, res) => {}, + onFailed: (_file, _res) => { return undefined }, onError: () => { throw new Error('test onError error') }, @@ -304,12 +310,12 @@ describe('uploader', () => { try { uppy.addFile({ - source: 'jest', + source: 'vi', name: 'foo.jpg', type: 'image/jpeg', data: new Blob([Buffer.alloc(8192)]), }) - } catch (err) { + } catch { expect(consoleFn).toBeCalled() } }) diff --git a/packages/core/package.json b/packages/core/package.json index 195a08670..d5c0424a9 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -3,15 +3,18 @@ "version": "1.7.6", "description": "wangEditor core", "author": "cycleccc <2991205548@qq.com>", - "contributors": [], + "type": "module", "homepage": "https://github.com/cycleccc/wangEditor#readme", "license": "MIT", "types": "dist/core/src/index.d.ts", "main": "dist/index.js", - "module": "dist/index.esm.js", - "browser": { - "./dist/index.js": "./dist/index.js", - "./dist/index.esm.js": "./dist/index.esm.js" + "module": "dist/index.mjs", + "exports": { + ".": { + "types": "./dist/core/src/index.d.ts", + "import": "./dist/index.mjs", + "require": "./dist/index.js" + } }, "directories": { "lib": "dist", diff --git a/packages/core/rollup.config.js b/packages/core/rollup.config.js index 6cc2173be..7c9d38708 100644 --- a/packages/core/rollup.config.js +++ b/packages/core/rollup.config.js @@ -1,5 +1,6 @@ -import { createRollupConfig, IS_PRD } from '../../build/create-rollup-config' -import pkg from './package.json' +import { createRollupConfig } from '@wangeditor-next-shared/rollup-config' + +import pkg from './package.json' assert { type: 'json' } const name = 'WangEditorCore' @@ -13,6 +14,7 @@ const esmConf = createRollupConfig({ name, }, }) + configList.push(esmConf) // umd @@ -23,6 +25,7 @@ const umdConf = createRollupConfig({ name, }, }) + configList.push(umdConf) export default configList diff --git a/packages/core/src/upload/createUploader.ts b/packages/core/src/upload/createUploader.ts index 8b03ad585..b6d55945c 100644 --- a/packages/core/src/upload/createUploader.ts +++ b/packages/core/src/upload/createUploader.ts @@ -5,8 +5,9 @@ import Uppy from '@uppy/core' import XHRUpload from '@uppy/xhr-upload' -import { IUploadConfig } from './interface' + import { addQueryToUrl } from '../utils/util' +import { IUploadConfig } from './interface' function createUploader(config: IUploadConfig): Uppy { // 获取配置 @@ -21,13 +22,13 @@ function createUploader(config: IUploadConfig): Uppy { withCredentials = false, timeout = 10 * 1000, // 10s onBeforeUpload = files => files, - onSuccess = (file, res) => { + onSuccess = (_file, _res) => { /* on success */ }, onError = (file, err, res?) => { console.error(`${file.name} upload error`, err, res) }, - onProgress = progress => { + onProgress = _progress => { /* on progress */ }, } = config @@ -42,6 +43,7 @@ function createUploader(config: IUploadConfig): Uppy { // 是否要追加 url 参数 let url = server + if (metaWithUrl) { url = addQueryToUrl(url, meta) } @@ -67,6 +69,7 @@ function createUploader(config: IUploadConfig): Uppy { // 各个 callback uppy.on('upload-success', (file, response) => { const { body = {} } = response + try { // 有用户传入的第三方代码,得用 try catch 包裹 onSuccess(file, body) @@ -78,7 +81,7 @@ function createUploader(config: IUploadConfig): Uppy { uppy.on('progress', progress => { // progress 值范围: 0 - 100 - if (progress < 1) return + if (progress < 1) { return } onProgress(progress) }) @@ -99,10 +102,12 @@ function createUploader(config: IUploadConfig): Uppy { uppy.on('restriction-failed', (file, error) => { try { // 有用户传入的第三方代码,得用 try catch 包裹 + // @ts-ignore onError(file, error) } catch (err) { console.error('wangEditor upload file - onError error', err) } + // @ts-ignore uppy.removeFile(file.id) // 清空文件 }) diff --git a/packages/editor/package.json b/packages/editor/package.json index 64f8ed2ac..d719ad63e 100644 --- a/packages/editor/package.json +++ b/packages/editor/package.json @@ -10,15 +10,18 @@ "编辑器" ], "author": "cycleccc <29912005548@qq.com>", - "contributors": [], + "type": "module", "homepage": "https://github.com/cycleccc/wangEditor#readme", "license": "MIT", "types": "dist/editor/src/index.d.ts", "main": "dist/index.js", - "module": "dist/index.esm.js", - "browser": { - "./dist/index.js": "./dist/index.js", - "./dist/index.esm.js": "./dist/index.esm.js" + "module": "dist/index.mjs", + "exports": { + ".": { + "types": "./dist/editor/src/index.d.ts", + "import": "./dist/index.mjs", + "require": "./dist/index.js" + } }, "directories": { "lib": "dist", diff --git a/packages/editor/rollup.config.js b/packages/editor/rollup.config.js index 91bf6e0db..d580cd802 100644 --- a/packages/editor/rollup.config.js +++ b/packages/editor/rollup.config.js @@ -1,5 +1,6 @@ -import { createRollupConfig, IS_PRD, IS_DEV } from '../../build/create-rollup-config' -import pkg from './package.json' +import { createRollupConfig } from '@wangeditor-next-shared/rollup-config' + +import pkg from './package.json' assert { type: 'json' } const name = 'wangEditor' @@ -13,6 +14,7 @@ const umdConf = createRollupConfig({ name, }, }) + configList.push(umdConf) // esm @@ -23,6 +25,7 @@ const esmConf = createRollupConfig({ name, }, }) + configList.push(esmConf) export default configList diff --git a/packages/list-module/package.json b/packages/list-module/package.json index d95ded2f8..e65ad1719 100644 --- a/packages/list-module/package.json +++ b/packages/list-module/package.json @@ -3,15 +3,18 @@ "version": "1.1.11", "description": "wangEditor list module", "author": "cycleccc <2991205548@qq.com>", - "contributors": [], + "type": "module", "homepage": "https://github.com/cycleccc/wangEditor#readme", "license": "MIT", "types": "dist/list-module/src/index.d.ts", "main": "dist/index.js", - "module": "dist/index.esm.js", - "browser": { - "./dist/index.js": "./dist/index.js", - "./dist/index.esm.js": "./dist/index.esm.js" + "module": "dist/index.mjs", + "exports": { + ".": { + "types": "./dist/list-module/src/index.d.ts", + "import": "./dist/index.mjs", + "require": "./dist/index.js" + } }, "directories": { "lib": "dist", diff --git a/packages/list-module/rollup.config.js b/packages/list-module/rollup.config.js index 28f6aa6e9..d0d307196 100644 --- a/packages/list-module/rollup.config.js +++ b/packages/list-module/rollup.config.js @@ -1,5 +1,6 @@ -import { createRollupConfig, IS_PRD } from '../../build/create-rollup-config' -import pkg from './package.json' +import { createRollupConfig } from '@wangeditor-next-shared/rollup-config' + +import pkg from './package.json' assert { type: 'json' } const name = 'WangEditorListModule' @@ -13,6 +14,7 @@ const esmConf = createRollupConfig({ name, }, }) + configList.push(esmConf) // umd @@ -23,6 +25,7 @@ const umdConf = createRollupConfig({ name, }, }) + configList.push(umdConf) export default configList diff --git a/packages/table-module/__tests__/elem-to-html.test.ts b/packages/table-module/__tests__/elem-to-html.test.ts index 2d46a8049..adc9ea4c5 100644 --- a/packages/table-module/__tests__/elem-to-html.test.ts +++ b/packages/table-module/__tests__/elem-to-html.test.ts @@ -40,9 +40,10 @@ describe('TableModule module', () => { children: [], } - jest - .spyOn(core.DomEditor, 'getParentNode') - .mockReturnValue({ type: 'table-row', children: [{ text: '' }] } as any) + vi.spyOn(core.DomEditor, 'getParentNode').mockReturnValue({ + type: 'table-row', + children: [{ text: '' }], + } as any) try { tableCellToHtmlConf.elemToHtml(element, '123') } catch (err) { @@ -58,8 +59,7 @@ describe('TableModule module', () => { children: [], } - jest - .spyOn(core.DomEditor, 'getParentNode') + vi.spyOn(core.DomEditor, 'getParentNode') .mockReturnValueOnce({ type: 'table-row', children: [{ text: '' }] } as any) .mockReturnValueOnce({ type: 'table', children: [{ text: '' }] } as Ancestor) diff --git a/packages/table-module/__tests__/menu/delete-col.test.ts b/packages/table-module/__tests__/menu/delete-col.test.ts index 4b9e1cfbc..511c75ddb 100644 --- a/packages/table-module/__tests__/menu/delete-col.test.ts +++ b/packages/table-module/__tests__/menu/delete-col.test.ts @@ -7,10 +7,10 @@ import locale from '../../src/locale/zh-CN' import DeleteCol from '../../src/module/menu/DeleteCol' import * as utils from '../../src/utils' -jest.mock('../../src/utils', () => ({ - filledMatrix: jest.fn(), +vi.mock('../../src/utils', () => ({ + filledMatrix: vi.fn(), })) -const mockedUtils = utils as jest.Mocked +const mockedUtils = utils as vi.Mocked function setEditorSelection( editor: core.IDomEditor, @@ -59,7 +59,7 @@ describe('Table Module Delete Col Menu', () => { setEditorSelection(editor) - jest.spyOn(slate.Range, 'isCollapsed').mockImplementation(() => false) + vi.spyOn(slate.Range, 'isCollapsed').mockImplementation(() => false) expect(deleteColMenu.isDisabled(editor)).toBeTruthy() }) @@ -70,8 +70,8 @@ describe('Table Module Delete Col Menu', () => { setEditorSelection(editor) - jest.spyOn(slate.Range, 'isCollapsed').mockImplementation(() => true) - jest.spyOn(core.DomEditor, 'getSelectedNodeByType').mockImplementation(() => null) + vi.spyOn(slate.Range, 'isCollapsed').mockImplementation(() => true) + vi.spyOn(core.DomEditor, 'getSelectedNodeByType').mockImplementation(() => null) expect(deleteColMenu.isDisabled(editor)).toBeTruthy() }) @@ -82,8 +82,8 @@ describe('Table Module Delete Col Menu', () => { setEditorSelection(editor) - jest.spyOn(slate.Range, 'isCollapsed').mockImplementation(() => true) - jest.spyOn(core.DomEditor, 'getSelectedNodeByType').mockImplementation(() => ({} as any)) + vi.spyOn(slate.Range, 'isCollapsed').mockImplementation(() => true) + vi.spyOn(core.DomEditor, 'getSelectedNodeByType').mockImplementation(() => ({}) as any) expect(deleteColMenu.isDisabled(editor)).toBeFalsy() }) @@ -101,8 +101,8 @@ describe('Table Module Delete Col Menu', () => { const deleteColMenu = new DeleteCol() const editor = createEditor() - jest.spyOn(deleteColMenu, 'isDisabled').mockImplementation(() => false) - jest.spyOn(core.DomEditor, 'getParentNode').mockImplementation(() => ({ + vi.spyOn(deleteColMenu, 'isDisabled').mockImplementation(() => false) + vi.spyOn(core.DomEditor, 'getParentNode').mockImplementation(() => ({ type: 'table-col', children: [], })) @@ -117,10 +117,10 @@ describe('Table Module Delete Col Menu', () => { ] as slate.NodeEntry } - jest.spyOn(slate.Editor, 'nodes').mockReturnValue(fn()) - const removeNodesFn = jest.fn() + vi.spyOn(slate.Editor, 'nodes').mockReturnValue(fn()) + const removeNodesFn = vi.fn() - jest.spyOn(slate.Transforms, 'removeNodes').mockImplementation(removeNodesFn) + vi.spyOn(slate.Transforms, 'removeNodes').mockImplementation(removeNodesFn) deleteColMenu.exec(editor, '') expect(removeNodesFn).toBeCalled() @@ -130,8 +130,8 @@ describe('Table Module Delete Col Menu', () => { const deleteColMenu = new DeleteCol() const editor = createEditor() - jest.spyOn(deleteColMenu, 'isDisabled').mockImplementation(() => false) - jest.spyOn(core.DomEditor, 'getParentNode').mockImplementation(() => ({ + vi.spyOn(deleteColMenu, 'isDisabled').mockImplementation(() => false) + vi.spyOn(core.DomEditor, 'getParentNode').mockImplementation(() => ({ type: 'table-row', children: [ { @@ -155,8 +155,8 @@ describe('Table Module Delete Col Menu', () => { ] as slate.NodeEntry } - jest.spyOn(slate.Editor, 'nodes').mockReturnValue(fn()) - jest.spyOn(core.DomEditor, 'findPath').mockImplementation(() => [0, 1] as slate.Path) + vi.spyOn(slate.Editor, 'nodes').mockReturnValue(fn()) + vi.spyOn(core.DomEditor, 'findPath').mockImplementation(() => [0, 1] as slate.Path) mockedUtils.filledMatrix.mockImplementation(() => { return [ @@ -190,9 +190,9 @@ describe('Table Module Delete Col Menu', () => { ], ] }) - const removeNodesFn = jest.fn() + const removeNodesFn = vi.fn() - jest.spyOn(slate.Transforms, 'removeNodes').mockImplementation(removeNodesFn) + vi.spyOn(slate.Transforms, 'removeNodes').mockImplementation(removeNodesFn) deleteColMenu.exec(editor, '') expect(removeNodesFn).toBeCalledTimes(2) diff --git a/packages/table-module/__tests__/menu/delete-row.test.ts b/packages/table-module/__tests__/menu/delete-row.test.ts index c873e746c..7ae8256d2 100644 --- a/packages/table-module/__tests__/menu/delete-row.test.ts +++ b/packages/table-module/__tests__/menu/delete-row.test.ts @@ -7,10 +7,10 @@ import locale from '../../src/locale/zh-CN' import DeleteRow from '../../src/module/menu/DeleteRow' import * as utils from '../../src/utils' -jest.mock('../../src/utils', () => ({ - filledMatrix: jest.fn(), +vi.mock('../../src/utils', () => ({ + filledMatrix: vi.fn(), })) -const mockedUtils = utils as jest.Mocked +const mockedUtils = utils as vi.Mocked function setEditorSelection( editor: core.IDomEditor, @@ -59,7 +59,7 @@ describe('Table Module Delete Row Menu', () => { setEditorSelection(editor) - jest.spyOn(slate.Range, 'isCollapsed').mockImplementation(() => false) + vi.spyOn(slate.Range, 'isCollapsed').mockImplementation(() => false) expect(deleteRowMenu.isDisabled(editor)).toBeTruthy() }) @@ -70,8 +70,8 @@ describe('Table Module Delete Row Menu', () => { setEditorSelection(editor) - jest.spyOn(slate.Range, 'isCollapsed').mockImplementation(() => true) - jest.spyOn(core.DomEditor, 'getSelectedNodeByType').mockImplementation(() => null) + vi.spyOn(slate.Range, 'isCollapsed').mockImplementation(() => true) + vi.spyOn(core.DomEditor, 'getSelectedNodeByType').mockImplementation(() => null) expect(deleteRowMenu.isDisabled(editor)).toBeTruthy() }) @@ -82,8 +82,8 @@ describe('Table Module Delete Row Menu', () => { setEditorSelection(editor) - jest.spyOn(slate.Range, 'isCollapsed').mockImplementation(() => true) - jest.spyOn(core.DomEditor, 'getSelectedNodeByType').mockImplementation(() => ({} as any)) + vi.spyOn(slate.Range, 'isCollapsed').mockImplementation(() => true) + vi.spyOn(core.DomEditor, 'getSelectedNodeByType').mockImplementation(() => ({}) as any) expect(deleteRowMenu.isDisabled(editor)).toBeFalsy() }) @@ -101,8 +101,8 @@ describe('Table Module Delete Row Menu', () => { const deleteRowMenu = new DeleteRow() const editor = createEditor() - jest.spyOn(deleteRowMenu, 'isDisabled').mockImplementation(() => false) - jest.spyOn(core.DomEditor, 'getParentNode').mockImplementation(() => ({ + vi.spyOn(deleteRowMenu, 'isDisabled').mockImplementation(() => false) + vi.spyOn(core.DomEditor, 'getParentNode').mockImplementation(() => ({ type: 'table', children: [ { @@ -123,10 +123,10 @@ describe('Table Module Delete Row Menu', () => { ] as slate.NodeEntry } - jest.spyOn(slate.Editor, 'nodes').mockReturnValue(fn()) - const removeNodesFn = jest.fn() + vi.spyOn(slate.Editor, 'nodes').mockReturnValue(fn()) + const removeNodesFn = vi.fn() - jest.spyOn(slate.Transforms, 'removeNodes').mockImplementation(removeNodesFn) + vi.spyOn(slate.Transforms, 'removeNodes').mockImplementation(removeNodesFn) deleteRowMenu.exec(editor, '') expect(removeNodesFn).toBeCalled() @@ -136,8 +136,8 @@ describe('Table Module Delete Row Menu', () => { const deleteRowMenu = new DeleteRow() const editor = createEditor() - jest.spyOn(deleteRowMenu, 'isDisabled').mockImplementation(() => false) - jest.spyOn(core.DomEditor, 'getParentNode').mockImplementation(() => ({ + vi.spyOn(deleteRowMenu, 'isDisabled').mockImplementation(() => false) + vi.spyOn(core.DomEditor, 'getParentNode').mockImplementation(() => ({ type: 'table', children: [ { @@ -162,7 +162,7 @@ describe('Table Module Delete Row Menu', () => { ] as slate.NodeEntry } - jest.spyOn(slate.Editor, 'nodes').mockImplementation(() => fn()) + vi.spyOn(slate.Editor, 'nodes').mockImplementation(() => fn()) mockedUtils.filledMatrix.mockImplementation(() => { return [ [ @@ -195,9 +195,9 @@ describe('Table Module Delete Row Menu', () => { ], ] }) - const removeNodesFn = jest.fn() + const removeNodesFn = vi.fn() - jest.spyOn(slate.Transforms, 'removeNodes').mockImplementation(removeNodesFn) + vi.spyOn(slate.Transforms, 'removeNodes').mockImplementation(removeNodesFn) deleteRowMenu.exec(editor, '') expect(removeNodesFn).toBeCalledWith(editor, { at: path }) diff --git a/packages/table-module/__tests__/menu/delete-table.test.ts b/packages/table-module/__tests__/menu/delete-table.test.ts index b8111d9c7..4376e2558 100644 --- a/packages/table-module/__tests__/menu/delete-table.test.ts +++ b/packages/table-module/__tests__/menu/delete-table.test.ts @@ -51,7 +51,7 @@ describe('Table Module Delete Table Menu', () => { setEditorSelection(editor) - jest.spyOn(core.DomEditor, 'getSelectedNodeByType').mockImplementation(() => null) + vi.spyOn(core.DomEditor, 'getSelectedNodeByType').mockImplementation(() => null) expect(deleteTableMenu.isDisabled(editor)).toBeTruthy() }) @@ -62,7 +62,7 @@ describe('Table Module Delete Table Menu', () => { setEditorSelection(editor) - jest.spyOn(core.DomEditor, 'getSelectedNodeByType').mockImplementation(() => ({} as any)) + vi.spyOn(core.DomEditor, 'getSelectedNodeByType').mockImplementation(() => ({}) as any) expect(deleteTableMenu.isDisabled(editor)).toBeFalsy() }) @@ -80,10 +80,10 @@ describe('Table Module Delete Table Menu', () => { const deleteTableMenu = new DeleteTable() const editor = createEditor() - jest.spyOn(deleteTableMenu, 'isDisabled').mockReturnValue(false) - const fn = jest.fn() + vi.spyOn(deleteTableMenu, 'isDisabled').mockReturnValue(false) + const fn = vi.fn() - jest.spyOn(slate.Transforms, 'removeNodes').mockImplementation(fn) + vi.spyOn(slate.Transforms, 'removeNodes').mockImplementation(fn) deleteTableMenu.exec(editor, '') expect(fn).toBeCalled() diff --git a/packages/table-module/__tests__/menu/full-width.test.ts b/packages/table-module/__tests__/menu/full-width.test.ts index 042f13112..815fdf5c6 100644 --- a/packages/table-module/__tests__/menu/full-width.test.ts +++ b/packages/table-module/__tests__/menu/full-width.test.ts @@ -29,7 +29,7 @@ describe('Table Module Full Width Menu', () => { const fullWidthMenu = new FullWidth() const editor = createEditor() - jest.spyOn(core.DomEditor, 'getSelectedNodeByType').mockImplementation(() => null) + vi.spyOn(core.DomEditor, 'getSelectedNodeByType').mockImplementation(() => null) expect(fullWidthMenu.getValue(editor)).toBeFalsy() }) @@ -37,9 +37,9 @@ describe('Table Module Full Width Menu', () => { const fullWidthMenu = new FullWidth() const editor = createEditor() - jest - .spyOn(core.DomEditor, 'getSelectedNodeByType') - .mockImplementation(() => ({ width: '100%' } as any)) + vi.spyOn(core.DomEditor, 'getSelectedNodeByType').mockImplementation( + () => ({ width: '100%' }) as any, + ) expect(fullWidthMenu.getValue(editor)).toBeTruthy() }) @@ -47,7 +47,7 @@ describe('Table Module Full Width Menu', () => { const fullWidthMenu = new FullWidth() const editor = createEditor() - jest.spyOn(core.DomEditor, 'getSelectedNodeByType').mockImplementation(() => null) + vi.spyOn(core.DomEditor, 'getSelectedNodeByType').mockImplementation(() => null) expect(fullWidthMenu.isActive(editor)).toBeFalsy() }) @@ -66,7 +66,7 @@ describe('Table Module Full Width Menu', () => { setEditorSelection(editor) - jest.spyOn(slate.Range, 'isCollapsed').mockImplementation(() => false) + vi.spyOn(slate.Range, 'isCollapsed').mockImplementation(() => false) expect(fullWidthMenu.isDisabled(editor)).toBeTruthy() }) @@ -77,8 +77,8 @@ describe('Table Module Full Width Menu', () => { setEditorSelection(editor) - jest.spyOn(slate.Range, 'isCollapsed').mockImplementation(() => true) - jest.spyOn(core.DomEditor, 'getSelectedNodeByType').mockImplementation(() => null) + vi.spyOn(slate.Range, 'isCollapsed').mockImplementation(() => true) + vi.spyOn(core.DomEditor, 'getSelectedNodeByType').mockImplementation(() => null) expect(fullWidthMenu.isDisabled(editor)).toBeTruthy() }) @@ -89,8 +89,8 @@ describe('Table Module Full Width Menu', () => { setEditorSelection(editor) - jest.spyOn(slate.Range, 'isCollapsed').mockImplementation(() => true) - jest.spyOn(core.DomEditor, 'getSelectedNodeByType').mockImplementation(() => ({} as any)) + vi.spyOn(slate.Range, 'isCollapsed').mockImplementation(() => true) + vi.spyOn(core.DomEditor, 'getSelectedNodeByType').mockImplementation(() => ({}) as any) expect(fullWidthMenu.isDisabled(editor)).toBeFalsy() }) @@ -110,12 +110,12 @@ describe('Table Module Full Width Menu', () => { setEditorSelection(editor) - jest.spyOn(slate.Range, 'isCollapsed').mockImplementation(() => true) - jest.spyOn(core.DomEditor, 'getSelectedNodeByType').mockImplementation(() => ({} as any)) + vi.spyOn(slate.Range, 'isCollapsed').mockImplementation(() => true) + vi.spyOn(core.DomEditor, 'getSelectedNodeByType').mockImplementation(() => ({}) as any) - const fn = jest.fn() + const fn = vi.fn() - jest.spyOn(slate.Transforms, 'setNodes').mockImplementation(fn) + vi.spyOn(slate.Transforms, 'setNodes').mockImplementation(fn) fullWidthMenu.exec(editor, true) diff --git a/packages/table-module/__tests__/menu/insert-col.test.ts b/packages/table-module/__tests__/menu/insert-col.test.ts index 7a00fabff..93e7feeaf 100644 --- a/packages/table-module/__tests__/menu/insert-col.test.ts +++ b/packages/table-module/__tests__/menu/insert-col.test.ts @@ -7,10 +7,10 @@ import locale from '../../src/locale/zh-CN' import InsertCol from '../../src/module/menu/InsertCol' import * as utils from '../../src/utils' -jest.mock('../../src/utils', () => ({ - filledMatrix: jest.fn(), +vi.mock('../../src/utils', () => ({ + filledMatrix: vi.fn(), })) -const mockedUtils = utils as jest.Mocked +const mockedUtils = utils as vi.Mocked function setEditorSelection( editor: core.IDomEditor, @@ -59,7 +59,7 @@ describe('Table Module Insert Col Menu', () => { setEditorSelection(editor) - jest.spyOn(slate.Range, 'isCollapsed').mockImplementation(() => false) + vi.spyOn(slate.Range, 'isCollapsed').mockImplementation(() => false) expect(insertColMenu.isDisabled(editor)).toBeTruthy() }) @@ -70,8 +70,8 @@ describe('Table Module Insert Col Menu', () => { setEditorSelection(editor) - jest.spyOn(slate.Range, 'isCollapsed').mockImplementation(() => true) - jest.spyOn(core.DomEditor, 'getSelectedNodeByType').mockImplementation(() => null) + vi.spyOn(slate.Range, 'isCollapsed').mockImplementation(() => true) + vi.spyOn(core.DomEditor, 'getSelectedNodeByType').mockImplementation(() => null) expect(insertColMenu.isDisabled(editor)).toBeTruthy() }) @@ -82,8 +82,8 @@ describe('Table Module Insert Col Menu', () => { setEditorSelection(editor) - jest.spyOn(slate.Range, 'isCollapsed').mockImplementation(() => true) - jest.spyOn(core.DomEditor, 'getSelectedNodeByType').mockImplementation(() => ({} as any)) + vi.spyOn(slate.Range, 'isCollapsed').mockImplementation(() => true) + vi.spyOn(core.DomEditor, 'getSelectedNodeByType').mockImplementation(() => ({}) as any) expect(insertColMenu.isDisabled(editor)).toBeFalsy() }) @@ -101,7 +101,7 @@ describe('Table Module Insert Col Menu', () => { const insertColMenu = new InsertCol() const editor = createEditor() - jest.spyOn(insertColMenu, 'isDisabled').mockReturnValue(false) + vi.spyOn(insertColMenu, 'isDisabled').mockReturnValue(false) const fn = function* () { yield [ @@ -113,8 +113,8 @@ describe('Table Module Insert Col Menu', () => { ] as slate.NodeEntry } - jest.spyOn(slate.Editor, 'nodes').mockReturnValue(fn()) - jest.spyOn(core.DomEditor, 'getParentNode').mockReturnValue(null) + vi.spyOn(slate.Editor, 'nodes').mockReturnValue(fn()) + vi.spyOn(core.DomEditor, 'getParentNode').mockReturnValue(null) expect(insertColMenu.exec(editor, '')).toBeUndefined() }) @@ -123,7 +123,7 @@ describe('Table Module Insert Col Menu', () => { const insertColMenu = new InsertCol() const editor = createEditor() - jest.spyOn(insertColMenu, 'isDisabled').mockReturnValue(false) + vi.spyOn(insertColMenu, 'isDisabled').mockReturnValue(false) const fn = function* () { yield [ @@ -135,9 +135,8 @@ describe('Table Module Insert Col Menu', () => { ] as slate.NodeEntry } - jest.spyOn(slate.Editor, 'nodes').mockReturnValue(fn()) - jest - .spyOn(core.DomEditor, 'getParentNode') + vi.spyOn(slate.Editor, 'nodes').mockReturnValue(fn()) + vi.spyOn(core.DomEditor, 'getParentNode') .mockReturnValue({} as any) .mockReturnValue(null) @@ -148,7 +147,7 @@ describe('Table Module Insert Col Menu', () => { const insertColMenu = new InsertCol() const editor = createEditor() - jest.spyOn(insertColMenu, 'isDisabled').mockReturnValue(false) + vi.spyOn(insertColMenu, 'isDisabled').mockReturnValue(false) const fn = function* () { yield [ @@ -160,9 +159,8 @@ describe('Table Module Insert Col Menu', () => { ] as slate.NodeEntry } - jest.spyOn(slate.Editor, 'nodes').mockReturnValue(fn()) - jest - .spyOn(core.DomEditor, 'getParentNode') + vi.spyOn(slate.Editor, 'nodes').mockReturnValue(fn()) + vi.spyOn(core.DomEditor, 'getParentNode') .mockReturnValue({} as any) .mockReturnValue({ type: 'table', @@ -196,10 +194,10 @@ describe('Table Module Insert Col Menu', () => { ], } as any) - jest.spyOn(core.DomEditor, 'findPath').mockReturnValue([0, 1]) - const insertNodesFn = jest.fn() + vi.spyOn(core.DomEditor, 'findPath').mockReturnValue([0, 1]) + const insertNodesFn = vi.fn() - jest.spyOn(slate.Transforms, 'insertNodes').mockImplementation(insertNodesFn) + vi.spyOn(slate.Transforms, 'insertNodes').mockImplementation(insertNodesFn) mockedUtils.filledMatrix.mockImplementation(() => { return [ [ diff --git a/packages/table-module/__tests__/menu/insert-row.test.ts b/packages/table-module/__tests__/menu/insert-row.test.ts index b7fa0cf1b..6d04161e3 100644 --- a/packages/table-module/__tests__/menu/insert-row.test.ts +++ b/packages/table-module/__tests__/menu/insert-row.test.ts @@ -53,7 +53,7 @@ describe('Table Module Insert Row Menu', () => { setEditorSelection(editor) - jest.spyOn(slate.Range, 'isCollapsed').mockImplementation(() => false) + vi.spyOn(slate.Range, 'isCollapsed').mockImplementation(() => false) expect(insertRowMenu.isDisabled(editor)).toBeTruthy() }) @@ -64,8 +64,8 @@ describe('Table Module Insert Row Menu', () => { setEditorSelection(editor) - jest.spyOn(slate.Range, 'isCollapsed').mockImplementation(() => true) - jest.spyOn(core.DomEditor, 'getSelectedNodeByType').mockImplementation(() => null) + vi.spyOn(slate.Range, 'isCollapsed').mockImplementation(() => true) + vi.spyOn(core.DomEditor, 'getSelectedNodeByType').mockImplementation(() => null) expect(insertRowMenu.isDisabled(editor)).toBeTruthy() }) @@ -76,8 +76,8 @@ describe('Table Module Insert Row Menu', () => { setEditorSelection(editor) - jest.spyOn(slate.Range, 'isCollapsed').mockImplementation(() => true) - jest.spyOn(core.DomEditor, 'getSelectedNodeByType').mockImplementation(() => ({} as any)) + vi.spyOn(slate.Range, 'isCollapsed').mockImplementation(() => true) + vi.spyOn(core.DomEditor, 'getSelectedNodeByType').mockImplementation(() => ({}) as any) expect(insertRowMenu.isDisabled(editor)).toBeFalsy() }) @@ -95,8 +95,8 @@ describe('Table Module Insert Row Menu', () => { const insertRowMenu = new InsertRow() const editor = createEditor() - jest.spyOn(insertRowMenu, 'isDisabled').mockReturnValue(false) - jest.spyOn(core.DomEditor, 'getParentNode').mockImplementation(() => ({ + vi.spyOn(insertRowMenu, 'isDisabled').mockReturnValue(false) + vi.spyOn(core.DomEditor, 'getParentNode').mockImplementation(() => ({ type: 'table-row', children: [ { @@ -119,10 +119,10 @@ describe('Table Module Insert Row Menu', () => { ] as slate.NodeEntry } - jest.spyOn(slate.Editor, 'nodes').mockReturnValue(fn()) - const insertNodesFn = jest.fn() + vi.spyOn(slate.Editor, 'nodes').mockReturnValue(fn()) + const insertNodesFn = vi.fn() - jest.spyOn(slate.Transforms, 'insertNodes').mockImplementation(insertNodesFn) + vi.spyOn(slate.Transforms, 'insertNodes').mockImplementation(insertNodesFn) insertRowMenu.exec(editor, '') expect(insertNodesFn).toBeCalled() @@ -132,8 +132,8 @@ describe('Table Module Insert Row Menu', () => { const insertRowMenu = new InsertRow() const editor = createEditor() - jest.spyOn(insertRowMenu, 'isDisabled').mockReturnValue(false) - jest.spyOn(core.DomEditor, 'getParentNode').mockImplementation(() => ({ + vi.spyOn(insertRowMenu, 'isDisabled').mockReturnValue(false) + vi.spyOn(core.DomEditor, 'getParentNode').mockImplementation(() => ({ type: 'table-row', children: [], })) @@ -147,10 +147,10 @@ describe('Table Module Insert Row Menu', () => { ] as slate.NodeEntry } - jest.spyOn(slate.Editor, 'nodes').mockReturnValue(fn()) - const insertNodesFn = jest.fn() + vi.spyOn(slate.Editor, 'nodes').mockReturnValue(fn()) + const insertNodesFn = vi.fn() - jest.spyOn(slate.Transforms, 'insertNodes').mockImplementation(insertNodesFn) + vi.spyOn(slate.Transforms, 'insertNodes').mockImplementation(insertNodesFn) expect(insertRowMenu.exec(editor, '')).toBeUndefined() expect(insertNodesFn).not.toBeCalled() diff --git a/packages/table-module/__tests__/menu/insert-table.test.ts b/packages/table-module/__tests__/menu/insert-table.test.ts index 14e8b13c1..22fbc9029 100644 --- a/packages/table-module/__tests__/menu/insert-table.test.ts +++ b/packages/table-module/__tests__/menu/insert-table.test.ts @@ -55,7 +55,7 @@ describe('Table Module Insert Table Menu', () => { setEditorSelection(editor) - jest.spyOn(slate.Range, 'isCollapsed').mockImplementation(() => false) + vi.spyOn(slate.Range, 'isCollapsed').mockImplementation(() => false) expect(insertTableMenu.isDisabled(editor)).toBeTruthy() }) @@ -66,10 +66,10 @@ describe('Table Module Insert Table Menu', () => { setEditorSelection(editor) - jest.spyOn(slate.Range, 'isCollapsed').mockImplementation(() => true) - jest - .spyOn(core.DomEditor, 'getSelectedElems') - .mockImplementation(() => [{ type: 'pre', children: [] }]) + vi.spyOn(slate.Range, 'isCollapsed').mockImplementation(() => true) + vi.spyOn(core.DomEditor, 'getSelectedElems').mockImplementation(() => [ + { type: 'pre', children: [] }, + ]) expect(insertTableMenu.isDisabled(editor)).toBeTruthy() }) @@ -80,10 +80,10 @@ describe('Table Module Insert Table Menu', () => { setEditorSelection(editor) - jest.spyOn(slate.Range, 'isCollapsed').mockImplementation(() => true) - jest - .spyOn(core.DomEditor, 'getSelectedElems') - .mockImplementation(() => [{ type: 'table', children: [] }]) + vi.spyOn(slate.Range, 'isCollapsed').mockImplementation(() => true) + vi.spyOn(core.DomEditor, 'getSelectedElems').mockImplementation(() => [ + { type: 'table', children: [] }, + ]) expect(insertTableMenu.isDisabled(editor)).toBeTruthy() }) @@ -94,12 +94,12 @@ describe('Table Module Insert Table Menu', () => { setEditorSelection(editor) - jest.spyOn(slate.Range, 'isCollapsed').mockImplementation(() => true) - jest - .spyOn(core.DomEditor, 'getSelectedElems') - .mockImplementation(() => [{ type: 'image', children: [] }]) + vi.spyOn(slate.Range, 'isCollapsed').mockImplementation(() => true) + vi.spyOn(core.DomEditor, 'getSelectedElems').mockImplementation(() => [ + { type: 'image', children: [] }, + ]) - jest.spyOn(editor, 'isVoid').mockImplementation(() => true) + vi.spyOn(editor, 'isVoid').mockImplementation(() => true) expect(insertTableMenu.isDisabled(editor)).toBeTruthy() }) @@ -110,10 +110,10 @@ describe('Table Module Insert Table Menu', () => { setEditorSelection(editor) - jest.spyOn(slate.Range, 'isCollapsed').mockImplementation(() => true) - jest - .spyOn(core.DomEditor, 'getSelectedElems') - .mockImplementation(() => [{ type: 'paragraph', children: [] }]) + vi.spyOn(slate.Range, 'isCollapsed').mockImplementation(() => true) + vi.spyOn(core.DomEditor, 'getSelectedElems').mockImplementation(() => [ + { type: 'paragraph', children: [] }, + ]) expect(insertTableMenu.isDisabled(editor)).toBeFalsy() }) @@ -133,13 +133,12 @@ describe('Table Module Insert Table Menu', () => { const tablePanel = insertTableMenu.getPanelContentElem(editor) const tdEl = $(tablePanel).find('td')[0] - const fn = jest.fn() + const fn = vi.fn() - jest.spyOn(slate.Transforms, 'insertNodes').mockImplementation(fn) + vi.spyOn(slate.Transforms, 'insertNodes').mockImplementation(fn) tdEl.dispatchEvent( new MouseEvent('click', { - view: window, bubbles: true, cancelable: true, }), @@ -159,7 +158,6 @@ describe('Table Module Insert Table Menu', () => { tdEl.dispatchEvent( new MouseEvent('mouseenter', { - view: window, bubbles: true, cancelable: true, }), diff --git a/packages/table-module/__tests__/menu/table-header.test.ts b/packages/table-module/__tests__/menu/table-header.test.ts index b6236739f..b7f657771 100644 --- a/packages/table-module/__tests__/menu/table-header.test.ts +++ b/packages/table-module/__tests__/menu/table-header.test.ts @@ -29,7 +29,7 @@ describe('Table Module Table Header Menu', () => { const tableHeaderMenu = new TableHeader() const editor = createEditor() - jest.spyOn(core.DomEditor, 'getSelectedNodeByType').mockImplementation(() => null) + vi.spyOn(core.DomEditor, 'getSelectedNodeByType').mockImplementation(() => null) expect(tableHeaderMenu.getValue(editor)).toBeFalsy() }) @@ -38,7 +38,7 @@ describe('Table Module Table Header Menu', () => { const tableHeaderMenu = new TableHeader() const editor = createEditor() - jest.spyOn(core.DomEditor, 'getSelectedNodeByType').mockImplementation(() => null) + vi.spyOn(core.DomEditor, 'getSelectedNodeByType').mockImplementation(() => null) expect(tableHeaderMenu.isActive(editor)).toBeFalsy() }) @@ -57,7 +57,7 @@ describe('Table Module Table Header Menu', () => { setEditorSelection(editor) - jest.spyOn(slate.Range, 'isCollapsed').mockImplementation(() => false) + vi.spyOn(slate.Range, 'isCollapsed').mockImplementation(() => false) expect(tableHeaderMenu.isDisabled(editor)).toBeTruthy() }) @@ -68,8 +68,8 @@ describe('Table Module Table Header Menu', () => { setEditorSelection(editor) - jest.spyOn(slate.Range, 'isCollapsed').mockImplementation(() => true) - jest.spyOn(core.DomEditor, 'getSelectedNodeByType').mockImplementation(() => null) + vi.spyOn(slate.Range, 'isCollapsed').mockImplementation(() => true) + vi.spyOn(core.DomEditor, 'getSelectedNodeByType').mockImplementation(() => null) expect(tableHeaderMenu.isDisabled(editor)).toBeTruthy() }) @@ -80,8 +80,8 @@ describe('Table Module Table Header Menu', () => { setEditorSelection(editor) - jest.spyOn(slate.Range, 'isCollapsed').mockImplementation(() => true) - jest.spyOn(core.DomEditor, 'getSelectedNodeByType').mockImplementation(() => ({} as any)) + vi.spyOn(slate.Range, 'isCollapsed').mockImplementation(() => true) + vi.spyOn(core.DomEditor, 'getSelectedNodeByType').mockImplementation(() => ({}) as any) expect(tableHeaderMenu.isDisabled(editor)).toBeFalsy() }) @@ -99,8 +99,8 @@ describe('Table Module Table Header Menu', () => { const tableHeaderMenu = new TableHeader() const editor = createEditor() - jest.spyOn(tableHeaderMenu, 'isDisabled').mockReturnValue(false) - jest.spyOn(core.DomEditor, 'getSelectedNodeByType').mockImplementation(() => null) + vi.spyOn(tableHeaderMenu, 'isDisabled').mockReturnValue(false) + vi.spyOn(core.DomEditor, 'getSelectedNodeByType').mockImplementation(() => null) expect(tableHeaderMenu.exec(editor, '')).toBeUndefined() }) @@ -109,8 +109,8 @@ describe('Table Module Table Header Menu', () => { const tableHeaderMenu = new TableHeader() const editor = createEditor() - jest.spyOn(tableHeaderMenu, 'isDisabled').mockReturnValue(false) - jest.spyOn(core.DomEditor, 'getSelectedNodeByType').mockImplementation(() => ({ + vi.spyOn(tableHeaderMenu, 'isDisabled').mockReturnValue(false) + vi.spyOn(core.DomEditor, 'getSelectedNodeByType').mockImplementation(() => ({ type: 'table', children: [ { @@ -130,10 +130,10 @@ describe('Table Module Table Header Menu', () => { ], })) - const fn = jest.fn() + const fn = vi.fn() - jest.spyOn(slate.Transforms, 'setNodes').mockImplementation(fn) - jest.spyOn(core.DomEditor, 'findPath').mockImplementation(() => [0, 1]) + vi.spyOn(slate.Transforms, 'setNodes').mockImplementation(fn) + vi.spyOn(core.DomEditor, 'findPath').mockImplementation(() => [0, 1]) tableHeaderMenu.exec(editor, '') diff --git a/packages/table-module/__tests__/plugin.test.ts b/packages/table-module/__tests__/plugin.test.ts index e4fe657e1..cfd8545d2 100644 --- a/packages/table-module/__tests__/plugin.test.ts +++ b/packages/table-module/__tests__/plugin.test.ts @@ -15,12 +15,12 @@ describe('TableModule module', () => { const editor = createEditor() const newEditor = withTable(editor) - jest.spyOn(core.DomEditor, 'getSelectedNodeByType').mockReturnValue({ + vi.spyOn(core.DomEditor, 'getSelectedNodeByType').mockReturnValue({ type: 'table', children: [{ text: '' }], } as slate.Element) - const mockFn = jest.fn() + const mockFn = vi.fn() newEditor.insertText = mockFn @@ -33,12 +33,12 @@ describe('TableModule module', () => { const editor = createEditor() const newEditor = withTable(editor) - jest.spyOn(core.DomEditor, 'getSelectedNodeByType').mockReturnValue({ + vi.spyOn(core.DomEditor, 'getSelectedNodeByType').mockReturnValue({ type: 'table', children: [{ text: '' }], } as slate.Element) - const mockFn = jest.fn() + const mockFn = vi.fn() slate.Editor.insertText = mockFn @@ -49,13 +49,13 @@ describe('TableModule module', () => { test('use withTable plugin when insertData should invoke original insertData if selection not in table node', () => { const editor = createEditor() - const mockInsertDataFn = jest.fn() + const mockInsertDataFn = vi.fn() editor.insertData = mockInsertDataFn const newEditor = withTable(editor) - jest.spyOn(core.DomEditor, 'getSelectedNodeByType').mockReturnValue(null) + vi.spyOn(core.DomEditor, 'getSelectedNodeByType').mockReturnValue(null) newEditor.insertData({} as DataTransfer) diff --git a/packages/table-module/package.json b/packages/table-module/package.json index a92128b95..7e9c23433 100644 --- a/packages/table-module/package.json +++ b/packages/table-module/package.json @@ -3,15 +3,18 @@ "version": "1.6.4", "description": "wangEditor table module", "author": "cycleccc <2991205548@qq.com>", - "contributors": [], + "type": "module", "homepage": "https://github.com/cycleccc/wangEditor#readme", "license": "MIT", "types": "dist/table-module/src/index.d.ts", "main": "dist/index.js", - "module": "dist/index.esm.js", - "browser": { - "./dist/index.js": "./dist/index.js", - "./dist/index.esm.js": "./dist/index.esm.js" + "module": "dist/index.mjs", + "exports": { + ".": { + "types": "./dist/table-module/src/index.d.ts", + "import": "./dist/index.mjs", + "require": "./dist/index.js" + } }, "directories": { "lib": "dist", diff --git a/packages/table-module/rollup.config.js b/packages/table-module/rollup.config.js index d51fa5cf8..993f226c9 100644 --- a/packages/table-module/rollup.config.js +++ b/packages/table-module/rollup.config.js @@ -1,5 +1,6 @@ -import { createRollupConfig, IS_PRD } from '../../build/create-rollup-config' -import pkg from './package.json' +import { createRollupConfig } from '@wangeditor-next-shared/rollup-config' + +import pkg from './package.json' assert { type: 'json' } const name = 'WangEditorTableModule' @@ -13,6 +14,7 @@ const esmConf = createRollupConfig({ name, }, }) + configList.push(esmConf) // umd @@ -23,6 +25,7 @@ const umdConf = createRollupConfig({ name, }, }) + configList.push(umdConf) export default configList diff --git a/packages/table-module/src/utils/dom.ts b/packages/table-module/src/utils/dom.ts index b57977562..310d471b3 100644 --- a/packages/table-module/src/utils/dom.ts +++ b/packages/table-module/src/utils/dom.ts @@ -35,21 +35,51 @@ import DOMStaticRange = globalThis.StaticRange export { Dom7Array } from 'dom7' -if (append) { $.fn.append = append } -if (on) { $.fn.on = on } -if (focus) { $.fn.focus = focus } -if (attr) { $.fn.attr = attr } -if (val) { $.fn.val = val } -if (html) { $.fn.html = html } -if (dataset) { $.fn.dataset = dataset } -if (addClass) { $.fn.addClass = addClass } -if (removeClass) { $.fn.removeClass = removeClass } -if (children) { $.fn.children = children } -if (each) { $.fn.each = each } -if (find) { $.fn.find = find } -if (data) { $.fn.data = data } -if (hide) { $.fn.hide = hide } -if (show) { $.fn.show = show } +if (append && $.fn) { + $.fn.append = append +} +if (on && $.fn) { + $.fn.on = on +} +if (focus && $.fn) { + $.fn.focus = focus +} +if (attr && $.fn) { + $.fn.attr = attr +} +if (val && $.fn) { + $.fn.val = val +} +if (html && $.fn) { + $.fn.html = html +} +if (dataset && $.fn) { + $.fn.dataset = dataset +} +if (addClass && $.fn) { + $.fn.addClass = addClass +} +if (removeClass && $.fn) { + $.fn.removeClass = removeClass +} +if (children && $.fn) { + $.fn.children = children +} +if (each && $.fn) { + $.fn.each = each +} +if (find && $.fn) { + $.fn.find = find +} +if (data && $.fn) { + $.fn.data = data +} +if (hide && $.fn) { + $.fn.hide = hide +} +if (show && $.fn) { + $.fn.show = show +} export default $ diff --git a/packages/upload-image-module/__tests__/plugin.test.ts b/packages/upload-image-module/__tests__/plugin.test.ts index 870cde276..0831b0c2b 100644 --- a/packages/upload-image-module/__tests__/plugin.test.ts +++ b/packages/upload-image-module/__tests__/plugin.test.ts @@ -12,13 +12,13 @@ describe('withUploadImage plugin', () => { editor = createEditor() // mock isInsertImageMenuDisabled - jest.spyOn(basicModule, 'isInsertImageMenuDisabled').mockImplementation(() => false) + vi.spyOn(basicModule, 'isInsertImageMenuDisabled').mockImplementation(() => false) }) test('withUploadImage plugin should invoke insertData directly for insert transfer data if isInsertImageMenuDisabled return truthy value', () => { - jest.spyOn(basicModule, 'isInsertImageMenuDisabled').mockImplementation(() => true) + vi.spyOn(basicModule, 'isInsertImageMenuDisabled').mockImplementation(() => true) - const fn = jest.fn() + const fn = vi.fn() editor.insertData = fn @@ -30,13 +30,13 @@ describe('withUploadImage plugin', () => { }) test('withUploadImage plugin should invoke insertData with text data if transfer data contains plain text ', () => { - const fn = jest.fn() + const fn = vi.fn() editor.insertData = fn const newEditor = withUploadImage(editor) - jest.spyOn(DataTransfer.prototype, 'getData').mockImplementation(() => 'plain text') + vi.spyOn(DataTransfer.prototype, 'getData').mockImplementation(() => 'plain text') const transfer = new DataTransfer() newEditor.insertData(transfer) @@ -45,32 +45,32 @@ describe('withUploadImage plugin', () => { expect(fn).toBeCalledWith(transfer) // 不影响后面的测试,需要重置 - jest.spyOn(DataTransfer.prototype, 'getData').mockImplementation(() => '') + vi.spyOn(DataTransfer.prototype, 'getData').mockImplementation(() => '') }) test('withUploadImage plugin should invoke insertData with transfer data if transfer data contains empty files', () => { - const fn = jest.fn() + const fn = vi.fn() editor.insertData = fn const newEditor = withUploadImage(editor) - jest.spyOn(DataTransfer.prototype, 'files', 'get').mockReturnValue([] as any) + vi.spyOn(DataTransfer.prototype, 'files', 'get').mockReturnValue([] as any) newEditor.insertData(new DataTransfer()) expect(fn).toBeCalled() }) test('withUploadImage plugin should invoke uploadImage method with image files if transfer data contains file which mime type is image', () => { - const fn = jest.fn() + const fn = vi.fn() - jest.spyOn(uploadImage, 'default').mockImplementation(fn) + vi.spyOn(uploadImage, 'default').mockImplementation(fn) const newEditor = withUploadImage(editor) - jest - .spyOn(DataTransfer.prototype, 'files', 'get') - .mockReturnValue([{ type: 'image/png', size: 10 }] as any) + vi.spyOn(DataTransfer.prototype, 'files', 'get').mockReturnValue([ + { type: 'image/png', size: 10 }, + ] as any) newEditor.insertData(new DataTransfer()) @@ -78,15 +78,15 @@ describe('withUploadImage plugin', () => { }) test('withUploadImage plugin should invoke insertData method with transfer data if transfer data contains file which mime type is not image', () => { - const fn = jest.fn() + const fn = vi.fn() editor.insertData = fn const newEditor = withUploadImage(editor) - jest - .spyOn(DataTransfer.prototype, 'files', 'get') - .mockReturnValue([{ type: 'text/html', size: 10 }] as any) + vi.spyOn(DataTransfer.prototype, 'files', 'get').mockReturnValue([ + { type: 'text/html', size: 10 }, + ] as any) const transfer = new DataTransfer() diff --git a/packages/upload-image-module/__tests__/upload-files.test.ts b/packages/upload-image-module/__tests__/upload-files.test.ts index e371970fd..0ca43410f 100644 --- a/packages/upload-image-module/__tests__/upload-files.test.ts +++ b/packages/upload-image-module/__tests__/upload-files.test.ts @@ -18,7 +18,7 @@ describe('Upload image menu upload files util', () => { }) test('uploadImages should invoke customUpload if give customUpload to config', async () => { - const fn = jest.fn() + const fn = vi.fn() const editor = createEditor({ config: { MENU_CONF: { @@ -35,7 +35,7 @@ describe('Upload image menu upload files util', () => { }) test('uploadImages should insert image with base64 string if file size less than base64LimitSize config', async () => { - const fn = jest.fn() + const fn = vi.fn() const editor = createEditor({ config: { MENU_CONF: { @@ -47,7 +47,7 @@ describe('Upload image menu upload files util', () => { }, }) - const mockReadAsDataURL = jest.spyOn(FileReader.prototype, 'readAsDataURL') + const mockReadAsDataURL = vi.spyOn(FileReader.prototype, 'readAsDataURL') await uploadImages(editor, [mockFile('test.jpg')] as unknown as FileList) @@ -55,16 +55,14 @@ describe('Upload image menu upload files util', () => { }) test('uploadImages should invoke core createUploader if not give customUpload to config', async () => { - // 这里需要返回一个 duck 类型的 uppy 对象,防止后面代码执行报错 - const fn = jest.fn().mockImplementation(() => { - return { - addFile: jest.fn(), - upload: jest.fn(), - } as any - }) + const fn = vi.fn().mockImplementation(() => ({ + // 这里需要返回一个 duck 类型的 uppy 对象,防止后面代码执行报错 + addFile: vi.fn(), + upload: vi.fn(), + }) as any) const editor = createEditor() - jest.spyOn(core, 'createUploader').mockImplementation(fn) + vi.spyOn(core, 'createUploader').mockImplementation(fn) await uploadImages(editor, [mockFile('test.jpg')] as unknown as FileList) diff --git a/packages/upload-image-module/__tests__/upload-image-menu.test.ts b/packages/upload-image-module/__tests__/upload-image-menu.test.ts index e098702ad..0642b52c7 100644 --- a/packages/upload-image-module/__tests__/upload-image-menu.test.ts +++ b/packages/upload-image-module/__tests__/upload-image-menu.test.ts @@ -6,7 +6,9 @@ import uploadImages from '../src/module/upload-images' let baseEditor: IDomEditor let menu: UploadImageMenu -jest.mock('../src/module/upload-images', () => jest.fn()) +vi.mock('../src/module/upload-images', () => ({ + default: vi.fn(), +})) describe('Upload image menu', () => { beforeEach(() => { @@ -31,19 +33,19 @@ describe('Upload image menu', () => { }) test('UploadImageMenu invoke exec should exec customBrowseAndUpload if config has customBrowseAndUpload option', () => { - const jestFn = jest.fn() + const viFn = vi.fn() const editor = createEditor({ config: { MENU_CONF: { uploadImage: { - customBrowseAndUpload: jestFn, + customBrowseAndUpload: viFn, }, }, }, }) menu.exec(editor, 'test.jpg') - expect(jestFn).toBeCalled() + expect(viFn).toBeCalled() }) test('UploadImageMenu invoke exec should insert hidden input element to body', () => { diff --git a/packages/upload-image-module/package.json b/packages/upload-image-module/package.json index f85e46fd0..d65f3f4ea 100644 --- a/packages/upload-image-module/package.json +++ b/packages/upload-image-module/package.json @@ -3,15 +3,18 @@ "version": "1.1.7", "description": "wangEditor upload-image module", "author": "cycleccc <2991205548@qq.com>", - "contributors": [], + "type": "module", "homepage": "https://github.com/cycleccc/wangEditor#readme", "license": "MIT", "types": "dist/upload-image-module/src/index.d.ts", "main": "dist/index.js", - "module": "dist/index.esm.js", - "browser": { - "./dist/index.js": "./dist/index.js", - "./dist/index.esm.js": "./dist/index.esm.js" + "module": "dist/index.mjs", + "exports": { + ".": { + "types": "./dist/upload-image-module/src/index.d.ts", + "import": "./dist/index.mjs", + "require": "./dist/index.js" + } }, "directories": { "lib": "dist", diff --git a/packages/upload-image-module/rollup.config.js b/packages/upload-image-module/rollup.config.js index bc80f5ce7..f2084a264 100644 --- a/packages/upload-image-module/rollup.config.js +++ b/packages/upload-image-module/rollup.config.js @@ -1,5 +1,6 @@ -import { createRollupConfig, IS_PRD } from '../../build/create-rollup-config' -import pkg from './package.json' +import { createRollupConfig } from '@wangeditor-next-shared/rollup-config' + +import pkg from './package.json' assert { type: 'json' } const name = 'WangEditorUploadImageModule' @@ -13,6 +14,7 @@ const esmConf = createRollupConfig({ name, }, }) + configList.push(esmConf) // umd @@ -23,6 +25,7 @@ const umdConf = createRollupConfig({ name, }, }) + configList.push(umdConf) export default configList diff --git a/packages/video-module/__tests__/helpler.test.ts b/packages/video-module/__tests__/helpler.test.ts index 17cb5dc92..b837cf45c 100644 --- a/packages/video-module/__tests__/helpler.test.ts +++ b/packages/video-module/__tests__/helpler.test.ts @@ -29,7 +29,7 @@ describe('Video module helper', () => { }, }, }) - const fn = jest.fn() + const fn = vi.fn() editor.alert = fn @@ -52,21 +52,20 @@ describe('Video module helper', () => { expect(await insertVideo(editor, 'test.mp4', 'xxx.png')).toBeUndefined() }) - test('it should invoke slate insertNodes method if give right src', done => { - const fn = jest.fn() + test('it should invoke slate insertNodes method if give right src', async () => { + const fn = vi.fn() - jest.spyOn(slate.Transforms, 'insertNodes').mockImplementation(fn) + vi.spyOn(slate.Transforms, 'insertNodes').mockImplementation(fn) insertVideo(baseEditor, 'test.mp4', 'xxx.png').then(() => { setTimeout(() => { expect(fn).toBeCalled() - done() }) }) }) - test('it should invoke onInsertedVideo callback if pass the option when create editor', done => { - const fn = jest.fn() + test('it should invoke onInsertedVideo callback if pass the option when create editor', async () => { + const fn = vi.fn() const editor = createEditor({ config: { @@ -80,19 +79,17 @@ describe('Video module helper', () => { insertVideo(editor, 'test.mp4', 'xxx.png').then(() => { expect(fn).toBeCalled() - done() }) }) - test('it should parse iframe if give iframe element', done => { - const fn = jest.fn() + test('it should parse iframe if give iframe element', async () => { + const fn = vi.fn() - jest.spyOn(slate.Transforms, 'insertNodes').mockImplementation(fn) + vi.spyOn(slate.Transforms, 'insertNodes').mockImplementation(fn) insertVideo(baseEditor, '').then(() => { setTimeout(() => { expect(fn).toBeCalled() - done() }) }) }) @@ -104,7 +101,7 @@ describe('Video module helper', () => { }) test('it should invoke customUpload if give the option when create editor', async () => { - const fn = jest.fn() + const fn = vi.fn() const editor = createEditor({ config: { MENU_CONF: { @@ -121,7 +118,7 @@ describe('Video module helper', () => { }) test('it should invoke onSuccess callback if give the option when create editor', async () => { - const fn = jest.fn() + const fn = vi.fn() nock(server) .defaultReplyHeaders({ @@ -150,7 +147,7 @@ describe('Video module helper', () => { }) test('it should invoke onProgress callback and show progress bar if uploading', async () => { - const mockOnProgress = jest.fn() + const mockOnProgress = vi.fn() nock(server) .defaultReplyHeaders({ @@ -173,7 +170,7 @@ describe('Video module helper', () => { }, }) - const mockShowProgressBar = jest.fn() + const mockShowProgressBar = vi.fn() editor.showProgressBar = mockShowProgressBar @@ -184,7 +181,7 @@ describe('Video module helper', () => { }) test('it should invoke onError callback if upload failed', () => { - const fn = jest.fn() + const fn = vi.fn() nock(server) .defaultReplyHeaders({ @@ -213,7 +210,7 @@ describe('Video module helper', () => { }) test('it should invoke onFail callback if upload result with error', async () => { - const fn = jest.fn() + const fn = vi.fn() nock(server) .defaultReplyHeaders({ @@ -242,7 +239,7 @@ describe('Video module helper', () => { }) test('it should invoke customInsert callback if upload successfully', async () => { - const fn = jest.fn() + const fn = vi.fn() nock(server) .defaultReplyHeaders({ diff --git a/packages/video-module/__tests__/menu/delete-video-menu.test.ts.bak b/packages/video-module/__tests__/menu/delete-video-menu.test.ts.bak index 8e44c212f..915e7c383 100644 --- a/packages/video-module/__tests__/menu/delete-video-menu.test.ts.bak +++ b/packages/video-module/__tests__/menu/delete-video-menu.test.ts.bak @@ -42,7 +42,7 @@ describe('videoModule module', () => { }) test('DeleteVideoMenu invoke isDisabled function if editor do not selected video element should be true', () => { - jest.spyOn(core.DomEditor, 'getSelectedNodeByType').mockReturnValue(null) + vi.spyOn(core.DomEditor, 'getSelectedNodeByType').mockReturnValue(null) setEditorSelection(editor) @@ -50,8 +50,8 @@ describe('videoModule module', () => { }) test('DeleteVideoMenu invoke exec function if video menu is disabled should return directly', () => { - jest.spyOn(core.DomEditor, 'getSelectedNodeByType').mockReturnValue(null) - const fn = jest.spyOn(slate.Transforms, 'removeNodes') + vi.spyOn(core.DomEditor, 'getSelectedNodeByType').mockReturnValue(null) + const fn = vi.spyOn(slate.Transforms, 'removeNodes') setEditorSelection(editor) @@ -65,7 +65,7 @@ describe('videoModule module', () => { .spyOn(core.DomEditor, 'getSelectedNodeByType') .mockReturnValue({ type: 'video', children: [{ text: '' }] } as any) - const fn = jest.spyOn(slate.Transforms, 'removeNodes') + const fn = vi.spyOn(slate.Transforms, 'removeNodes') setEditorSelection(editor) diff --git a/packages/video-module/__tests__/menu/insert-video-menu.test.ts b/packages/video-module/__tests__/menu/insert-video-menu.test.ts index 60a590f62..80ecba9cd 100644 --- a/packages/video-module/__tests__/menu/insert-video-menu.test.ts +++ b/packages/video-module/__tests__/menu/insert-video-menu.test.ts @@ -41,14 +41,14 @@ describe('videoModule module', () => { test('InsertVideoMenu invoke isDisabled if editor selection is not collapsed that the function return true', () => { setEditorSelection(editor) - jest.spyOn(slate.Range, 'isCollapsed').mockReturnValue(false) + vi.spyOn(slate.Range, 'isCollapsed').mockReturnValue(false) expect(insertVideoMenu.isDisabled(editor)).toBe(true) }) test('InsertVideoMenu invoke isDisabled if editor selection is not null and collapsed that the function return false', () => { setEditorSelection(editor) - jest.spyOn(slate.Range, 'isCollapsed').mockReturnValue(true) + vi.spyOn(slate.Range, 'isCollapsed').mockReturnValue(true) expect(insertVideoMenu.isDisabled(editor)).toBe(false) }) diff --git a/packages/video-module/__tests__/menu/upload-video-menu.test.ts b/packages/video-module/__tests__/menu/upload-video-menu.test.ts index 427c85bc8..506e4aa41 100644 --- a/packages/video-module/__tests__/menu/upload-video-menu.test.ts +++ b/packages/video-module/__tests__/menu/upload-video-menu.test.ts @@ -41,19 +41,19 @@ describe('videoModule module', () => { test('UploadVideoMenu invoke isDisabled if editor selection is not collapsed that the function return true', () => { setEditorSelection(baseEditor) - jest.spyOn(slate.Range, 'isCollapsed').mockReturnValue(false) + vi.spyOn(slate.Range, 'isCollapsed').mockReturnValue(false) expect(uploadVideoMenu.isDisabled(baseEditor)).toBe(true) }) test('UploadVideoMenu invoke isDisabled if editor selection is not null and collapsed that the function return false', () => { setEditorSelection(baseEditor) - jest.spyOn(slate.Range, 'isCollapsed').mockReturnValue(true) + vi.spyOn(slate.Range, 'isCollapsed').mockReturnValue(true) expect(uploadVideoMenu.isDisabled(baseEditor)).toBe(false) }) test('UploadVideoMenu invoke customBrowseAndUpload if editor give customBrowseAndUpload option', () => { - const fn = jest.fn() + const fn = vi.fn() const editor = createEditor({ config: { MENU_CONF: { diff --git a/packages/video-module/__tests__/plugin.test.ts b/packages/video-module/__tests__/plugin.test.ts index 85b52b6f3..cb5cbc2e5 100644 --- a/packages/video-module/__tests__/plugin.test.ts +++ b/packages/video-module/__tests__/plugin.test.ts @@ -33,7 +33,7 @@ describe('videoModule module', () => { test('使用 withVideo 插件后,对于非 video 元素,直接调用 original isVoid 方法', () => { const editor = createEditor() - const fn = jest.fn() + const fn = vi.fn() editor.isVoid = fn diff --git a/packages/video-module/package.json b/packages/video-module/package.json index e65bf0925..210dc277d 100644 --- a/packages/video-module/package.json +++ b/packages/video-module/package.json @@ -3,15 +3,18 @@ "version": "1.3.10", "description": "wangEditor video module", "author": "cycleccc <2991205548@qq.com>", - "contributors": [], + "type": "module", "homepage": "https://github.com/cycleccc/wangEditor#readme", "license": "MIT", "types": "dist/video-module/src/index.d.ts", "main": "dist/index.js", - "module": "dist/index.esm.js", - "browser": { - "./dist/index.js": "./dist/index.js", - "./dist/index.esm.js": "./dist/index.esm.js" + "module": "dist/index.mjs", + "exports": { + ".": { + "types": "./dist/video-module/src/index.d.ts", + "import": "./dist/index.mjs", + "require": "./dist/index.js" + } }, "directories": { "lib": "dist", diff --git a/packages/video-module/rollup.config.js b/packages/video-module/rollup.config.js index 38b2b7a10..b2836fb37 100644 --- a/packages/video-module/rollup.config.js +++ b/packages/video-module/rollup.config.js @@ -1,5 +1,6 @@ -import { createRollupConfig, IS_PRD } from '../../build/create-rollup-config' -import pkg from './package.json' +import { createRollupConfig } from '@wangeditor-next-shared/rollup-config' + +import pkg from './package.json' assert { type: 'json' } const name = 'WangEditorVideoModule' @@ -13,6 +14,7 @@ const esmConf = createRollupConfig({ name, }, }) + configList.push(esmConf) // umd @@ -23,6 +25,7 @@ const umdConf = createRollupConfig({ name, }, }) + configList.push(umdConf) export default configList diff --git a/packages/yjs-for-react/package.json b/packages/yjs-for-react/package.json index c46ae5285..94b31446c 100644 --- a/packages/yjs-for-react/package.json +++ b/packages/yjs-for-react/package.json @@ -3,12 +3,12 @@ "version": "0.1.4", "description": "React specific components/utils for wangeditor-next-yjs.", "author": "cycleccc <2991205548@qq.com>", - "contributors": [], + "type": "module", "homepage": "https://github.com/cycleccc/wangEditor#readme", "license": "MIT", "types": "dist/index.d.ts", "main": "dist/index.js", - "module": "dist/index.esm.js", + "module": "dist/index.mjs", "unpkg": "dist/index.global.js", "keywords": [ "slate", @@ -17,13 +17,12 @@ "collaborative", "react" ], - "browser": { - "./dist/index.js": "./dist/index.js", - "./dist/index.esm.js": "./dist/index.esm.js" - }, "exports": { - "require": "./dist/index.js", - "default": "./dist/index.esm.js" + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.mjs", + "require": "./dist/index.js" + } }, "files": [ "dist" @@ -56,11 +55,11 @@ "y-protocols": "^1.0.5" }, "peerDependencies": { - "react": ">=16.8.0", "@wangeditor-next/core": "1.7.6", "@wangeditor-next/editor": "5.5.7", "@wangeditor-next/yjs": "^0.1.4", + "react": ">=16.8.0", "slate": "^0.72.0", "yjs": "^13.5.29" } -} \ No newline at end of file +} diff --git a/packages/yjs-for-react/rollup.config.js b/packages/yjs-for-react/rollup.config.js index 636793c53..cbd020957 100644 --- a/packages/yjs-for-react/rollup.config.js +++ b/packages/yjs-for-react/rollup.config.js @@ -1,5 +1,6 @@ -import { createRollupConfig, IS_PRD } from '../../build/create-rollup-config' -import pkg from './package.json' +import { createRollupConfig } from '@wangeditor-next-shared/rollup-config' + +import pkg from './package.json' assert { type: 'json' } const name = 'WangEditorCodeHighLight' @@ -13,6 +14,7 @@ const esmConf = createRollupConfig({ name, }, }) + configList.push(esmConf) // umd @@ -23,6 +25,7 @@ const umdConf = createRollupConfig({ name, }, }) + configList.push(umdConf) export default configList diff --git a/packages/yjs-for-react/tsconfig.json b/packages/yjs-for-react/tsconfig.json index 2809688c6..98e567695 100644 --- a/packages/yjs-for-react/tsconfig.json +++ b/packages/yjs-for-react/tsconfig.json @@ -3,6 +3,6 @@ "extends": "../../tsconfig.json", "include": [ "./src/**/*", - // "../custom-types.d.ts" + "../custom-types.d.ts" ] -} \ No newline at end of file +} diff --git a/packages/yjs/examples/frontend/.yarn/install-state.gz b/packages/yjs/examples/frontend/.yarn/install-state.gz new file mode 100644 index 0000000000000000000000000000000000000000..c0cb47464a226a92b3e86d463fe986dcc0d2d31d GIT binary patch literal 1422518 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

%Y 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