From 41037aefe0b6a804258e40cc0a814afdb31ddf44 Mon Sep 17 00:00:00 2001 From: hemengke <23536175@qq.com> Date: Thu, 13 Feb 2025 18:26:58 +0800 Subject: [PATCH] chore: release --- package.json | 20 +- packages/istanbul-widget/CHANGELOG.md | 5 + packages/istanbul-widget/package.json | 58 +- .../src/core/components/draggable.tsx | 24 +- .../src/core/istanbul-widget.tsx | 45 +- .../vite-plugin-istanbul-widget/CHANGELOG.md | 7 + .../vite-plugin-istanbul-widget/README.md | 15 +- .../vite-plugin-istanbul-widget/package.json | 29 +- .../vite-plugin-istanbul-widget/remix.d.ts | 1 - .../src/astro/index.ts | 11 +- .../vite-plugin-istanbul-widget/src/index.ts | 91 +- .../src/remix/client.tsx | 29 - .../src/remix/index.ts | 61 - .../src/types.d.ts | 13 +- .../src/utils/index.ts | 45 +- .../src/virtual.ts | 7 + .../tsup.config.ts | 6 +- playground/astro-app/astro.config.ts | 7 +- playground/astro-app/package.json | 3 +- .../astro-app/public-typescript/report.ts | 19 - playground/astro-app/src/env.d.ts | 1 + playground/astro-app/src/layouts/Layout.astro | 2 - playground/astro3-app/astro.config.ts | 7 +- playground/astro3-app/package.json | 3 +- playground/nextjs14-app/.babelrc | 11 - playground/nextjs14-app/.gitignore | 39 - playground/nextjs14-app/@types/global.d.ts | 8 - playground/nextjs14-app/index.html | 17 - playground/nextjs14-app/next.config.mjs | 12 - playground/nextjs14-app/package.json | 32 - playground/nextjs14-app/postcss.config.mjs | 8 - .../public-typescript/istanbul.ts | 44 - playground/nextjs14-app/public/next.svg | 1 - playground/nextjs14-app/public/vercel.svg | 1 - playground/nextjs14-app/src/app/favicon.ico | Bin 25931 -> 0 bytes playground/nextjs14-app/src/app/globals.css | 33 - playground/nextjs14-app/src/app/layout.tsx | 22 - playground/nextjs14-app/src/app/page.tsx | 103 - playground/nextjs14-app/tailwind.config.ts | 19 - playground/nextjs14-app/tsconfig.json | 18 - playground/nextjs14-app/vite.config.mts | 37 - playground/remix-app/vite.config.ts | 2 +- pnpm-lock.yaml | 4573 +++++++++++------ 43 files changed, 3140 insertions(+), 2349 deletions(-) delete mode 100644 packages/vite-plugin-istanbul-widget/remix.d.ts delete mode 100644 packages/vite-plugin-istanbul-widget/src/remix/client.tsx delete mode 100644 packages/vite-plugin-istanbul-widget/src/remix/index.ts create mode 100644 packages/vite-plugin-istanbul-widget/src/virtual.ts delete mode 100644 playground/astro-app/public-typescript/report.ts delete mode 100644 playground/nextjs14-app/.babelrc delete mode 100644 playground/nextjs14-app/.gitignore delete mode 100644 playground/nextjs14-app/@types/global.d.ts delete mode 100644 playground/nextjs14-app/index.html delete mode 100644 playground/nextjs14-app/next.config.mjs delete mode 100644 playground/nextjs14-app/package.json delete mode 100644 playground/nextjs14-app/postcss.config.mjs delete mode 100644 playground/nextjs14-app/public-typescript/istanbul.ts delete mode 100644 playground/nextjs14-app/public/next.svg delete mode 100644 playground/nextjs14-app/public/vercel.svg delete mode 100644 playground/nextjs14-app/src/app/favicon.ico delete mode 100644 playground/nextjs14-app/src/app/globals.css delete mode 100644 playground/nextjs14-app/src/app/layout.tsx delete mode 100644 playground/nextjs14-app/src/app/page.tsx delete mode 100644 playground/nextjs14-app/tailwind.config.ts delete mode 100644 playground/nextjs14-app/tsconfig.json delete mode 100644 playground/nextjs14-app/vite.config.mts diff --git a/package.json b/package.json index e5b0460..42a02b9 100644 --- a/package.json +++ b/package.json @@ -31,22 +31,22 @@ }, "devDependencies": { "@changesets/changelog-github": "^0.5.0", - "@changesets/cli": "^2.27.8", - "@commitlint/cli": "^19.5.0", + "@changesets/cli": "^2.27.12", + "@commitlint/cli": "^19.7.1", "@minko-fe/commitlint-config": "^2.1.2", - "@minko-fe/eslint-config": "^4.0.2", + "@minko-fe/eslint-config": "^4.1.1", "@minko-fe/prettier-config": "^2.2.3", "@minko-fe/tsconfig": "latest", - "eslint": "^9.10.0", - "npm-run-all2": "^6.2.3", + "eslint": "^9.20.1", + "npm-run-all2": "^6.2.6", "nyc": "^17.1.0", "prettier-plugin-astro": "^0.14.1", - "prettier-plugin-tailwindcss": "^0.6.6", + "prettier-plugin-tailwindcss": "^0.6.11", "simple-git-hooks": "^2.11.1", - "taze": "^0.16.9", - "tsup": "^8.3.0", - "turbo": "^2.1.2", - "typescript": "^5.6.2" + "taze": "^18.5.0", + "tsup": "^8.3.6", + "turbo": "^2.4.2", + "typescript": "^5.7.3" }, "simple-git-hooks": { "commit-msg": "npm run commitlint", diff --git a/packages/istanbul-widget/CHANGELOG.md b/packages/istanbul-widget/CHANGELOG.md index 4a751c4..0b59b31 100644 --- a/packages/istanbul-widget/CHANGELOG.md +++ b/packages/istanbul-widget/CHANGELOG.md @@ -1,5 +1,10 @@ # istanbul-widget +## 1.9.2 +### Patch Changes + +- update + ## 1.9.1 ### Patch Changes diff --git a/packages/istanbul-widget/package.json b/packages/istanbul-widget/package.json index 4fdc389..3893e04 100644 --- a/packages/istanbul-widget/package.json +++ b/packages/istanbul-widget/package.json @@ -1,6 +1,6 @@ { "name": "istanbul-widget", - "version": "1.9.1", + "version": "1.9.2", "description": "收集 istanbul 代码覆盖率的web小组件", "type": "module", "keywords": [ @@ -70,45 +70,45 @@ } }, "dependencies": { - "@iconify-json/vscode-icons": "^1.2.2", - "@neodrag/react": "^2.0.4", - "@radix-ui/react-alert-dialog": "^1.1.1", - "@radix-ui/react-dialog": "^1.1.1", - "@radix-ui/react-icons": "^1.3.0", - "@radix-ui/react-label": "^2.1.0", - "@radix-ui/react-popover": "^1.1.1", - "@radix-ui/react-slot": "^1.1.0", - "@radix-ui/react-switch": "^1.1.0", - "@radix-ui/react-toast": "^1.2.1", - "class-variance-authority": "^0.7.0", - "consola": "^3.2.3", - "context-state": "^3.1.2", + "@iconify-json/vscode-icons": "^1.2.14", + "@neodrag/react": "^2.3.0", + "@radix-ui/react-alert-dialog": "^1.1.6", + "@radix-ui/react-dialog": "^1.1.6", + "@radix-ui/react-icons": "^1.3.2", + "@radix-ui/react-label": "^2.1.2", + "@radix-ui/react-popover": "^1.1.6", + "@radix-ui/react-slot": "^1.1.2", + "@radix-ui/react-switch": "^1.1.3", + "@radix-ui/react-toast": "^1.2.6", + "class-variance-authority": "^0.7.1", + "consola": "^3.4.0", + "context-state": "^3.2.0", "eventemitter3": "^5.0.1", - "tw-clsx": "^0.1.0" + "tw-clsx": "^1.0.0" }, "devDependencies": { - "@iconify/tailwind": "^1.1.3", - "@swc/core": "^1.7.26", + "@iconify/tailwind": "^1.2.0", + "@swc/core": "^1.10.16", "@types/lodash-es": "^4.17.12", - "@types/node": "^20.16.5", - "@types/react": "^18.3.8", - "@types/react-dom": "^18.3.0", - "@vitejs/plugin-react": "^4.3.1", - "ahooks": "^3.8.1", + "@types/node": "^20.17.18", + "@types/react": "^18.3.18", + "@types/react-dom": "^18.3.5", + "@vitejs/plugin-react": "^4.3.4", + "ahooks": "^3.8.4", "autoprefixer": "^10.4.20", "lodash-es": "^4.17.21", - "npm-run-all2": "^6.2.3", - "postcss": "^8.4.47", + "npm-run-all2": "^6.2.6", + "postcss": "^8.5.2", "react": "^18.3.1", "react-dom": "^18.3.1", - "rollup-plugin-visualizer": "^5.12.0", + "rollup-plugin-visualizer": "^5.14.0", "tailwindcss": "3.2.7", "tailwindcss-animate": "^1.0.7", "tailwindcss-rem-to-px": "^0.1.1", - "tsup": "^8.3.0", - "tsup-plugin-bundleless": "^1.1.0", + "tsup": "^8.3.6", + "tsup-plugin-bundleless": "^1.2.1", "tsup-plugin-css-legacy": "^1.0.0", - "typescript": "^5.6.2", - "vite": "^5.4.6" + "typescript": "^5.7.3", + "vite": "^5.4.14" } } diff --git a/packages/istanbul-widget/src/core/components/draggable.tsx b/packages/istanbul-widget/src/core/components/draggable.tsx index a022146..873db39 100644 --- a/packages/istanbul-widget/src/core/components/draggable.tsx +++ b/packages/istanbul-widget/src/core/components/draggable.tsx @@ -1,5 +1,5 @@ -import { memo, type PropsWithChildren, useEffect, useRef, useState } from 'react' -import { type DragOptions, useDraggable } from '@neodrag/react' +import { memo, type PropsWithChildren, useEffect, useRef } from 'react' +import { useDraggable } from '@neodrag/react' import { useLocalStorageState, useMemoizedFn } from 'ahooks' import { max } from 'lodash-es' import { cn } from '@/components/utils' @@ -8,7 +8,6 @@ import Context from '../context' import { type Position } from '../options.interface' type DraggableProps = PropsWithChildren<{ - dragOptions: DragOptions className?: string }> @@ -22,15 +21,13 @@ const bounds = { } function Draggable(props: DraggableProps) { - const { children, dragOptions, className } = props + const { children, className } = props const { defaultPosition, float } = Context.usePicker(['defaultPosition', 'float']) const handleRef = useRef(null) const draggableRef = useRef(null) - const [dragging, setDragging] = useState(false) - const [position, setPosition] = useLocalStorageState(`${ISTANBUL_WIDGET_ID}_position`, { defaultValue: { x: defaultPosition?.x || 0, @@ -38,26 +35,17 @@ function Draggable(props: DraggableProps) { }, }) - useDraggable(draggableRef, { - ...dragOptions, + const { isDragging } = useDraggable(draggableRef, { position, handle: handleRef, - onDragStart(data) { - setDragging(true) - dragOptions.onDragStart?.(data) - }, + onDrag: (data) => { const { offsetX, offsetY } = data setPosition({ x: offsetX, y: offsetY }) - dragOptions.onDrag?.(data) }, onDragEnd(data) { - setDragging(false) - const { offsetX, offsetY } = data setPosition(fixFloatPosition({ x: offsetX, y: offsetY })) - - dragOptions.onDragEnd?.(data) }, axis: 'both', bounds, @@ -128,7 +116,7 @@ function Draggable(props: DraggableProps) { return (
{children} diff --git a/packages/istanbul-widget/src/core/istanbul-widget.tsx b/packages/istanbul-widget/src/core/istanbul-widget.tsx index 017af90..ec5d442 100644 --- a/packages/istanbul-widget/src/core/istanbul-widget.tsx +++ b/packages/istanbul-widget/src/core/istanbul-widget.tsx @@ -1,11 +1,10 @@ -import { memo, useLayoutEffect, useRef, useState } from 'react' +import { memo, useLayoutEffect, useState } from 'react' import { Popover, PopoverArrow, PopoverClose, PopoverContent, PopoverTrigger } from '@/components/ui/popover' import { Toaster } from '@/components/ui/toaster' import { ISTANBUL_WIDGET_ID } from '@/utils/const' import { $ } from '@/utils/query' import Draggable from './components/draggable' import Context from './context' -import { type Position } from './options.interface' function IstanbulWidgetComponent() { const { theme, pluginList } = Context.usePicker(['theme', 'pluginList']) @@ -28,50 +27,12 @@ function IstanbulWidgetComponent() { } }, []) - const dragging = useRef(false) - const draggingTimer = useRef(null) - const [dragPos, setDragPos] = useState({ x: 0, y: 0 }) - return ( <>
- 10 || dragY > 10) { - setPopoverOpen(false) - draggingTimer.current && window.clearTimeout(draggingTimer.current) - dragging.current = true - } else { - dragging.current = false - } - }, - onDragEnd() { - if (dragging.current) { - draggingTimer.current = window.setTimeout(() => { - dragging.current = false - }, 20) - } - }, - }} - className='iw-rounded-full iw-overflow-hidden' - > - { - if (dragging.current) { - e.preventDefault() - return - } - }} - > + +
!hydrating) - - useEffect(() => { - hydrating = false - setHydrated(true) - }, []) - - return hydrated -} - -export const withIstanbulWidget = (Component: ComponentType, istanbulWidgetConfig: IstanbulWidgetOptions) => () => { - function AppWithIstanbulWidget(props: any) { - const hydrated = useHydrated() - useEffect(() => { - if (hydrated) { - new IstanbulWidget(istanbulWidgetConfig) - } - }, [hydrated]) - return - } - return AppWithIstanbulWidget -} diff --git a/packages/vite-plugin-istanbul-widget/src/remix/index.ts b/packages/vite-plugin-istanbul-widget/src/remix/index.ts deleted file mode 100644 index c1f03e0..0000000 --- a/packages/vite-plugin-istanbul-widget/src/remix/index.ts +++ /dev/null @@ -1,61 +0,0 @@ -import type { Plugin } from 'vite' -import MagicString from 'magic-string' -import serialize from 'serialize-javascript' -import ts from 'typescript' -import { istanbulWidget as viteIstanbulWidget } from '..' -import { type VitePluginIstanbulWidgetOptions } from '../types' -import { checkPluginEnabled, resolveOptions } from '../utils' -import { debug } from '../utils/debug' - -export function istanbulWidget(opts: VitePluginIstanbulWidgetOptions): any { - const { enabled, checkProd, istanbulWidgetConfig } = resolveOptions(opts) - if (!checkPluginEnabled(enabled, checkProd)) return - - debug('remix istanbulWidget options:', opts) - - return [ - { - name: 'vite:plugin-istanbul-widget:remix', - enforce: 'pre', - transform: { - order: 'pre', - async handler(code, id) { - if (/.+\/root\.[t|j]sx?$/.test(id)) { - const app = 'AppExport' - - const s = new MagicString(code) - const sourceFile = ts.createSourceFile('source.tsx', code, ts.ScriptTarget.Latest, true, ts.ScriptKind.TSX) - - function visit(node: ts.Node) { - if ( - ts.isFunctionDeclaration(node) && - node.modifiers?.some((m) => m.kind === ts.SyntaxKind.DefaultKeyword) - ) { - s.remove(node.modifiers.pos, node.modifiers.end) - if (node.name) { - s.overwrite(node.name.pos + 1, node.name.end, app) - } else { - s.prependLeft(node.pos, `\nconst ${app} =`) - } - } else if (ts.isExportAssignment(node)) { - s.overwrite(node.pos, node.expression.pos, `\nconst ${app} =`) - } - ts.forEachChild(node, visit) - } - - visit(sourceFile) - - const imports = [/*js*/ `import { withIstanbulWidget } from "vite-plugin-istanbul-widget/remix/client";`] - const defaultExport = /*js*/ `export default withIstanbulWidget(${app}, ${serialize(istanbulWidgetConfig)})();` - - return { - code: `${imports.join('\n')}\n${s.toString()}\n${defaultExport}`, - map: null, - } - } - }, - }, - }, - ...viteIstanbulWidget(opts), - ] as Plugin[] -} diff --git a/packages/vite-plugin-istanbul-widget/src/types.d.ts b/packages/vite-plugin-istanbul-widget/src/types.d.ts index d7c9485..8063a83 100644 --- a/packages/vite-plugin-istanbul-widget/src/types.d.ts +++ b/packages/vite-plugin-istanbul-widget/src/types.d.ts @@ -7,6 +7,14 @@ export type VitePluginIstanbulWidgetOptions = { * @default false */ enabled?: boolean + /** + * 入口文件 + * 对于 csr 项目,入口通常是 src/main 或 app/main + * 对于 remix/rr7 项目,入口通常是 app/root + * + * 默认情况自动探测 ['src/main', 'src/root', 'app/main', 'app/root'] + */ + entry?: string /** * 是否检查正式环境 * 若为true,则正式环境下禁用插件 @@ -27,9 +35,4 @@ export type VitePluginIstanbulWidgetOptions = { * @description false 则关闭 istanbul-widget 控件 */ istanbulWidgetConfig?: IstanbulWidgetOptions | false - /** - * 延迟istanbul-widget初始化(ms) - * @default 0 - */ - delayIstanbulWidgetInit?: number } diff --git a/packages/vite-plugin-istanbul-widget/src/utils/index.ts b/packages/vite-plugin-istanbul-widget/src/utils/index.ts index 3948063..4a15ea6 100644 --- a/packages/vite-plugin-istanbul-widget/src/utils/index.ts +++ b/packages/vite-plugin-istanbul-widget/src/utils/index.ts @@ -20,49 +20,23 @@ export async function getCommitId() { } } -export function resolveInlineScript( - mode: 'lib' | 'min', - config: IstanbulWidgetOptions, - options?: { - delayIstanbulWidgetInit?: number - }, -) { +export function resolveWidgetScript(config: IstanbulWidgetOptions) { const require = createRequire(import.meta.url) - const { delayIstanbulWidgetInit = 0 } = options || {} const istanbulWidgetPath = normalizePath( - `/@fs/${path.join(path.dirname(require.resolve('istanbul-widget')), `istanbul-widget.${mode}.js`)}`, + `/@fs/${path.join(path.dirname(require.resolve('istanbul-widget')), `istanbul-widget.lib.js`)}`, ) debug('istanbul-widget path:', istanbulWidgetPath) - const map = { - lib: { - src: istanbulWidgetPath, - script: /*js*/ ` - import { IstanbulWidget } from "${istanbulWidgetPath}"; - if(typeof window !== 'undefined' && typeof document !== 'undefined') { - const timer = setTimeout(() => { - new IstanbulWidget(${serialize(config)}); - clearTimeout(timer); - }, ${delayIstanbulWidgetInit}); - } - `, - }, - min: { - src: istanbulWidgetPath, - script: /*js*/ ` - if(typeof window !== 'undefined' && typeof document !== 'undefined') { - const timer = setTimeout(() => { - new window.IstanbulWidget(${serialize(config)}); - clearTimeout(timer); - }, ${delayIstanbulWidgetInit}); - } - `, - }, + return /*js*/ `import { IstanbulWidget } from "${istanbulWidgetPath}"; + if(typeof window !== 'undefined' && typeof document !== 'undefined') { + const timer = setTimeout(() => { + new IstanbulWidget(${serialize(config)}); + clearTimeout(timer); + }, 60); } - - return map[mode] +` } export function ensureArray(value: T | T[] | undefined): T[] { @@ -82,7 +56,6 @@ export function resolveOptions(opts: VitePluginIstanbulWidgetOptions) { istanbulPluginConfig: {}, istanbulWidgetConfig: {}, checkProd: true, - delayIstanbulWidgetInit: 0, } return { ...defaultOptions, diff --git a/packages/vite-plugin-istanbul-widget/src/virtual.ts b/packages/vite-plugin-istanbul-widget/src/virtual.ts new file mode 100644 index 0000000..8b87c72 --- /dev/null +++ b/packages/vite-plugin-istanbul-widget/src/virtual.ts @@ -0,0 +1,7 @@ +export const id = (name: string) => `virtual:istanbul-widget-${name}` + +export const runtimeId = id('runtime') + +export const vmods = [runtimeId] + +export const resolvedVirtualModuleId = (virtualModuleId: string) => `\0${virtualModuleId}` diff --git a/packages/vite-plugin-istanbul-widget/tsup.config.ts b/packages/vite-plugin-istanbul-widget/tsup.config.ts index 8b1afeb..6eda4ca 100644 --- a/packages/vite-plugin-istanbul-widget/tsup.config.ts +++ b/packages/vite-plugin-istanbul-widget/tsup.config.ts @@ -4,10 +4,8 @@ export const tsup = defineConfig((option) => { return [ { entry: { - 'index': 'src/index.ts', - 'astro': 'src/astro/index.ts', - 'remix': 'src/remix/index.ts', - 'remix/client': 'src/remix/client.tsx', + index: 'src/index.ts', + astro: 'src/astro/index.ts', }, dts: true, target: 'node16', diff --git a/playground/astro-app/astro.config.ts b/playground/astro-app/astro.config.ts index d4a1f6a..3ad403f 100644 --- a/playground/astro-app/astro.config.ts +++ b/playground/astro-app/astro.config.ts @@ -1,7 +1,6 @@ import react from '@astrojs/react' import { defineConfig } from 'astro/config' import { exclude, istanbulWidget } from 'vite-plugin-istanbul-widget/astro' -import { publicTypescript } from 'vite-plugin-public-typescript' export default defineConfig({ integrations: [ @@ -42,11 +41,7 @@ export default defineConfig({ }), ], vite: { - plugins: [ - publicTypescript({ - babel: true, - }), - ], + plugins: [], build: { minify: false, }, diff --git a/playground/astro-app/package.json b/playground/astro-app/package.json index 3d752ae..85b74c3 100644 --- a/playground/astro-app/package.json +++ b/playground/astro-app/package.json @@ -15,8 +15,7 @@ "react": "^18.3.1", "react-dom": "^18.3.1", "typescript": "^5.6.2", - "vite-plugin-istanbul-widget": "workspace:*", - "vite-plugin-public-typescript": "^4.0.0" + "vite-plugin-istanbul-widget": "workspace:*" }, "devDependencies": { "@astrojs/react": "^3.6.2", diff --git a/playground/astro-app/public-typescript/report.ts b/playground/astro-app/public-typescript/report.ts deleted file mode 100644 index dad00ff..0000000 --- a/playground/astro-app/public-typescript/report.ts +++ /dev/null @@ -1,19 +0,0 @@ -async function report(coverage: any) { - console.log(coverage, 'coverage') - const reponame = 'astro-app' - await fetch(`http://localhost:3000/${reponame}/coverage/client?v=${__GIT_COMMIT_ID__}`, { - body: JSON.stringify(coverage), - method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, - }) -} - -window.__report = report - -const customClick = (...args: any[]) => { - console.log('自定义按钮点击事件', args) -} - -window.__customClick = customClick diff --git a/playground/astro-app/src/env.d.ts b/playground/astro-app/src/env.d.ts index f964fe0..acef35f 100644 --- a/playground/astro-app/src/env.d.ts +++ b/playground/astro-app/src/env.d.ts @@ -1 +1,2 @@ +/// /// diff --git a/playground/astro-app/src/layouts/Layout.astro b/playground/astro-app/src/layouts/Layout.astro index c316bd4..85911ab 100644 --- a/playground/astro-app/src/layouts/Layout.astro +++ b/playground/astro-app/src/layouts/Layout.astro @@ -1,5 +1,4 @@ --- -import { getManifest } from 'vite-plugin-public-typescript' interface Props { title: string } @@ -20,7 +19,6 @@ const { title } = Astro.props -