From 6b81e76c2b66f69884c327b4e90c911e71927d32 Mon Sep 17 00:00:00 2001 From: Pavel Feldman Date: Fri, 25 Mar 2022 13:12:00 -0800 Subject: [PATCH] chore: migrate trace-viewer and recorder to vite (#13076) --- .eslintignore | 1 + package-lock.json | 916 ++++++++++++++++-- package.json | 2 + packages/playwright-core/.npmignore | 1 + packages/playwright-core/src/DEPS | 69 +- .../src/server/instrumentation.ts | 4 +- .../src/server/trace/common/traceEvents.ts | 1 + .../trace/test}/inMemorySnapshotter.ts | 20 +- packages/playwright-core/src/server/types.ts | 4 +- .../highlightjs/highlightjs/highlight.js | 2 - .../highlightjs/highlightjs/index.js | 8 - .../src/web/recorder/webpack.config.js | 45 - .../src/web/traceViewer/webpack-sw.config.js | 32 - .../src/web/traceViewer/webpack.config.js | 60 -- packages/playwright-core/src/web/types.d.ts | 20 - packages/playwright-test/src/DEPS | 6 +- packages/playwright-test/src/mount.ts | 2 +- packages/recorder/.gitignore | 24 + .../src/web => }/recorder/index.html | 9 +- packages/recorder/package.json | 10 + .../static => recorder/public}/icon-16x16.png | Bin .../public}/icon-192x192.png | Bin .../public}/icon-256x256.png | Bin .../static => recorder/public}/icon-32x32.png | Bin .../public}/icon-384x384.png | Bin .../public}/icon-512x512.png | Bin packages/recorder/public/manifest.webmanifest | 30 + packages/recorder/src/DEPS | 5 + .../web/recorder => recorder/src}/callLog.css | 0 .../web/recorder => recorder/src}/callLog.tsx | 4 +- .../web/recorder => recorder/src}/index.tsx | 6 +- .../web/recorder => recorder/src}/main.tsx | 4 +- .../recorder => recorder/src}/recorder.css | 0 .../recorder => recorder/src}/recorder.tsx | 12 +- packages/recorder/src/vite-env.d.ts | 1 + packages/recorder/tsconfig.json | 26 + packages/recorder/tsconfig.node.json | 8 + packages/recorder/vite.config.ts | 41 + packages/trace-viewer/.gitignore | 24 + .../traceViewer => trace-viewer}/index.html | 12 +- packages/trace-viewer/package.json | 10 + packages/trace-viewer/public/icon-16x16.png | Bin 0 -> 593 bytes packages/trace-viewer/public/icon-192x192.png | Bin 0 -> 16906 bytes packages/trace-viewer/public/icon-256x256.png | Bin 0 -> 15197 bytes packages/trace-viewer/public/icon-32x32.png | Bin 0 -> 1330 bytes packages/trace-viewer/public/icon-384x384.png | Bin 0 -> 57371 bytes packages/trace-viewer/public/icon-512x512.png | Bin 0 -> 37343 bytes .../public}/manifest.webmanifest | 0 packages/trace-viewer/src/DEPS | 12 + .../src}/entries.ts | 4 +- .../src}/geometry.ts | 0 .../src}/index.tsx | 6 +- .../src}/snapshotRenderer.ts | 2 +- .../src}/snapshotServer.ts | 2 +- .../src}/snapshotStorage.ts | 2 +- .../traceViewer => trace-viewer/src}/sw.ts | 0 .../src}/traceModel.ts | 18 +- .../src}/ui/actionList.css | 0 .../src}/ui/actionList.tsx | 8 +- .../src}/ui/callTab.css | 0 .../src}/ui/callTab.tsx | 49 +- .../src}/ui/consoleTab.css | 0 .../src}/ui/consoleTab.tsx | 4 +- .../src}/ui/contextSelector.css | 0 .../src}/ui/contextSelector.tsx | 0 .../src}/ui/filmStrip.css | 0 .../src}/ui/filmStrip.tsx | 2 +- .../src}/ui/helpers.tsx | 0 .../src}/ui/modelUtil.ts | 8 +- .../src}/ui/networkResourceDetails.css | 0 .../src}/ui/networkResourceDetails.tsx | 6 +- .../src}/ui/networkTab.css | 0 .../src}/ui/networkTab.tsx | 2 +- .../src}/ui/snapshotTab.css | 0 .../src}/ui/snapshotTab.tsx | 2 +- .../src}/ui/sourceTab.css | 0 .../src}/ui/sourceTab.tsx | 10 +- .../src}/ui/stackTrace.css | 0 .../src}/ui/stackTrace.tsx | 2 +- .../src}/ui/tabbedPane.css | 0 .../src}/ui/tabbedPane.tsx | 0 .../src}/ui/timeline.css | 0 .../src}/ui/timeline.tsx | 4 +- .../src}/ui/workbench.css | 0 .../src}/ui/workbench.tsx | 22 +- packages/trace-viewer/src/vite-env.d.ts | 1 + packages/trace-viewer/tsconfig.json | 26 + packages/trace-viewer/tsconfig.node.json | 8 + packages/trace-viewer/vite.config.ts | 48 + .../src/web => web/src}/common.css | 0 .../web => web/src}/components/expandable.tsx | 0 .../src/web => web/src}/components/source.css | 0 .../src/web => web/src}/components/source.tsx | 4 +- .../web => web/src}/components/splitView.css | 0 .../web => web/src}/components/splitView.tsx | 0 .../web => web/src}/components/toolbar.css | 0 .../web => web/src}/components/toolbar.tsx | 0 .../src}/components/toolbarButton.css | 0 .../src}/components/toolbarButton.tsx | 0 .../src/web => web/src}/theme.ts | 0 .../src/third_party/highlightjs/README.md | 0 .../highlightjs/highlightjs/LICENSE | 0 .../highlightjs/highlightjs/core.js | 4 +- .../highlightjs/highlightjs/index.d.ts | 0 .../highlightjs/highlightjs/index.js | 12 + .../highlightjs/languages/csharp.js | 4 +- .../highlightjs/highlightjs/languages/java.js | 4 +- .../highlightjs/languages/javascript.js | 4 +- .../highlightjs/languages/python.js | 4 +- .../highlightjs/highlightjs/tomorrow.css | 0 .../src/third_party/highlightjs/roll.sh | 0 .../src}/third_party/vscode/LICENSE.txt | 0 .../src}/third_party/vscode/codicon.css | 0 .../src}/third_party/vscode/codicon.ttf | Bin .../src/web => web/src}/uiUtils.ts | 0 tests/snapshotter.spec.ts | 2 +- tests/tsconfig.json | 4 + tsconfig.json | 9 + utils/build/build.js | 74 +- utils/check_deps.js | 9 +- 120 files changed, 1387 insertions(+), 414 deletions(-) rename packages/playwright-core/src/{web/traceViewer => server/trace/test}/inMemorySnapshotter.ts (82%) delete mode 100644 packages/playwright-core/src/third_party/highlightjs/highlightjs/highlight.js delete mode 100644 packages/playwright-core/src/third_party/highlightjs/highlightjs/index.js delete mode 100644 packages/playwright-core/src/web/recorder/webpack.config.js delete mode 100644 packages/playwright-core/src/web/traceViewer/webpack-sw.config.js delete mode 100644 packages/playwright-core/src/web/traceViewer/webpack.config.js delete mode 100644 packages/playwright-core/src/web/types.d.ts create mode 100644 packages/recorder/.gitignore rename packages/{playwright-core/src/web => }/recorder/index.html (72%) create mode 100644 packages/recorder/package.json rename packages/{playwright-core/src/web/traceViewer/static => recorder/public}/icon-16x16.png (100%) rename packages/{playwright-core/src/web/traceViewer/static => recorder/public}/icon-192x192.png (100%) rename packages/{playwright-core/src/web/traceViewer/static => recorder/public}/icon-256x256.png (100%) rename packages/{playwright-core/src/web/traceViewer/static => recorder/public}/icon-32x32.png (100%) rename packages/{playwright-core/src/web/traceViewer/static => recorder/public}/icon-384x384.png (100%) rename packages/{playwright-core/src/web/traceViewer/static => recorder/public}/icon-512x512.png (100%) create mode 100644 packages/recorder/public/manifest.webmanifest create mode 100644 packages/recorder/src/DEPS rename packages/{playwright-core/src/web/recorder => recorder/src}/callLog.css (100%) rename packages/{playwright-core/src/web/recorder => recorder/src}/callLog.tsx (95%) rename packages/{playwright-core/src/web/recorder => recorder/src}/index.tsx (87%) rename packages/{playwright-core/src/web/recorder => recorder/src}/main.tsx (94%) rename packages/{playwright-core/src/web/recorder => recorder/src}/recorder.css (100%) rename packages/{playwright-core/src/web/recorder => recorder/src}/recorder.tsx (93%) create mode 100644 packages/recorder/src/vite-env.d.ts create mode 100644 packages/recorder/tsconfig.json create mode 100644 packages/recorder/tsconfig.node.json create mode 100644 packages/recorder/vite.config.ts create mode 100644 packages/trace-viewer/.gitignore rename packages/{playwright-core/src/web/traceViewer => trace-viewer}/index.html (72%) create mode 100644 packages/trace-viewer/package.json create mode 100644 packages/trace-viewer/public/icon-16x16.png create mode 100644 packages/trace-viewer/public/icon-192x192.png create mode 100644 packages/trace-viewer/public/icon-256x256.png create mode 100644 packages/trace-viewer/public/icon-32x32.png create mode 100644 packages/trace-viewer/public/icon-384x384.png create mode 100644 packages/trace-viewer/public/icon-512x512.png rename packages/{playwright-core/src/web/traceViewer/static => trace-viewer/public}/manifest.webmanifest (100%) create mode 100644 packages/trace-viewer/src/DEPS rename packages/{playwright-core/src/web/traceViewer => trace-viewer/src}/entries.ts (89%) rename packages/{playwright-core/src/web/traceViewer => trace-viewer/src}/geometry.ts (100%) rename packages/{playwright-core/src/web/traceViewer => trace-viewer/src}/index.tsx (91%) rename packages/{playwright-core/src/web/traceViewer => trace-viewer/src}/snapshotRenderer.ts (98%) rename packages/{playwright-core/src/web/traceViewer => trace-viewer/src}/snapshotServer.ts (98%) rename packages/{playwright-core/src/web/traceViewer => trace-viewer/src}/snapshotStorage.ts (96%) rename packages/{playwright-core/src/web/traceViewer => trace-viewer/src}/sw.ts (100%) rename packages/{playwright-core/src/web/traceViewer => trace-viewer/src}/traceModel.ts (95%) rename packages/{playwright-core/src/web/traceViewer => trace-viewer/src}/ui/actionList.css (100%) rename packages/{playwright-core/src/web/traceViewer => trace-viewer/src}/ui/actionList.tsx (97%) rename packages/{playwright-core/src/web/traceViewer => trace-viewer/src}/ui/callTab.css (100%) rename packages/{playwright-core/src/web/traceViewer => trace-viewer/src}/ui/callTab.tsx (71%) rename packages/{playwright-core/src/web/traceViewer => trace-viewer/src}/ui/consoleTab.css (100%) rename packages/{playwright-core/src/web/traceViewer => trace-viewer/src}/ui/consoleTab.tsx (95%) rename packages/{playwright-core/src/web/traceViewer => trace-viewer/src}/ui/contextSelector.css (100%) rename packages/{playwright-core/src/web/traceViewer => trace-viewer/src}/ui/contextSelector.tsx (100%) rename packages/{playwright-core/src/web/traceViewer => trace-viewer/src}/ui/filmStrip.css (100%) rename packages/{playwright-core/src/web/traceViewer => trace-viewer/src}/ui/filmStrip.tsx (99%) rename packages/{playwright-core/src/web/traceViewer => trace-viewer/src}/ui/helpers.tsx (100%) rename packages/{playwright-core/src/web/traceViewer => trace-viewer/src}/ui/modelUtil.ts (93%) rename packages/{playwright-core/src/web/traceViewer => trace-viewer/src}/ui/networkResourceDetails.css (100%) rename packages/{playwright-core/src/web/traceViewer => trace-viewer/src}/ui/networkResourceDetails.tsx (97%) rename packages/{playwright-core/src/web/traceViewer => trace-viewer/src}/ui/networkTab.css (100%) rename packages/{playwright-core/src/web/traceViewer => trace-viewer/src}/ui/networkTab.tsx (93%) rename packages/{playwright-core/src/web/traceViewer => trace-viewer/src}/ui/snapshotTab.css (100%) rename packages/{playwright-core/src/web/traceViewer => trace-viewer/src}/ui/snapshotTab.tsx (98%) rename packages/{playwright-core/src/web/traceViewer => trace-viewer/src}/ui/sourceTab.css (100%) rename packages/{playwright-core/src/web/traceViewer => trace-viewer/src}/ui/sourceTab.tsx (90%) rename packages/{playwright-core/src/web/traceViewer => trace-viewer/src}/ui/stackTrace.css (100%) rename packages/{playwright-core/src/web/traceViewer => trace-viewer/src}/ui/stackTrace.tsx (94%) rename packages/{playwright-core/src/web/traceViewer => trace-viewer/src}/ui/tabbedPane.css (100%) rename packages/{playwright-core/src/web/traceViewer => trace-viewer/src}/ui/tabbedPane.tsx (100%) rename packages/{playwright-core/src/web/traceViewer => trace-viewer/src}/ui/timeline.css (100%) rename packages/{playwright-core/src/web/traceViewer => trace-viewer/src}/ui/timeline.tsx (98%) rename packages/{playwright-core/src/web/traceViewer => trace-viewer/src}/ui/workbench.css (100%) rename packages/{playwright-core/src/web/traceViewer => trace-viewer/src}/ui/workbench.tsx (98%) create mode 100644 packages/trace-viewer/src/vite-env.d.ts create mode 100644 packages/trace-viewer/tsconfig.json create mode 100644 packages/trace-viewer/tsconfig.node.json create mode 100644 packages/trace-viewer/vite.config.ts rename packages/{playwright-core/src/web => web/src}/common.css (100%) rename packages/{playwright-core/src/web => web/src}/components/expandable.tsx (100%) rename packages/{playwright-core/src/web => web/src}/components/source.css (100%) rename packages/{playwright-core/src/web => web/src}/components/source.tsx (94%) rename packages/{playwright-core/src/web => web/src}/components/splitView.css (100%) rename packages/{playwright-core/src/web => web/src}/components/splitView.tsx (100%) rename packages/{playwright-core/src/web => web/src}/components/toolbar.css (100%) rename packages/{playwright-core/src/web => web/src}/components/toolbar.tsx (100%) rename packages/{playwright-core/src/web => web/src}/components/toolbarButton.css (100%) rename packages/{playwright-core/src/web => web/src}/components/toolbarButton.tsx (100%) rename packages/{playwright-core/src/web => web/src}/theme.ts (100%) rename packages/{playwright-core => web}/src/third_party/highlightjs/README.md (100%) rename packages/{playwright-core => web}/src/third_party/highlightjs/highlightjs/LICENSE (100%) rename packages/{playwright-core => web}/src/third_party/highlightjs/highlightjs/core.js (99%) rename packages/{playwright-core => web}/src/third_party/highlightjs/highlightjs/index.d.ts (100%) create mode 100644 packages/web/src/third_party/highlightjs/highlightjs/index.js rename packages/{playwright-core => web}/src/third_party/highlightjs/highlightjs/languages/csharp.js (99%) rename packages/{playwright-core => web}/src/third_party/highlightjs/highlightjs/languages/java.js (99%) rename packages/{playwright-core => web}/src/third_party/highlightjs/highlightjs/languages/javascript.js (99%) rename packages/{playwright-core => web}/src/third_party/highlightjs/highlightjs/languages/python.js (99%) rename packages/{playwright-core => web}/src/third_party/highlightjs/highlightjs/tomorrow.css (100%) rename packages/{playwright-core => web}/src/third_party/highlightjs/roll.sh (100%) rename packages/{playwright-core/src/web => web/src}/third_party/vscode/LICENSE.txt (100%) rename packages/{playwright-core/src/web => web/src}/third_party/vscode/codicon.css (100%) rename packages/{playwright-core/src/web => web/src}/third_party/vscode/codicon.ttf (100%) rename packages/{playwright-core/src/web => web/src}/uiUtils.ts (100%) diff --git a/.eslintignore b/.eslintignore index c0ba36077a..da2559f566 100644 --- a/.eslintignore +++ b/.eslintignore @@ -15,3 +15,4 @@ output/ test-results/ tests-components/ examples/ +DEPS \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index f582edba3b..366b58b577 100644 --- a/package-lock.json +++ b/package-lock.json @@ -40,6 +40,7 @@ "@types/yazl": "^2.4.2", "@typescript-eslint/eslint-plugin": "^5.10.2", "@typescript-eslint/parser": "^5.10.2", + "@vitejs/plugin-react": "^1.0.7", "@zip.js/zip.js": "^2.4.2", "ansi-to-html": "^0.7.2", "babel-loader": "^8.2.3", @@ -67,6 +68,7 @@ "socksv5": "0.0.6", "style-loader": "^3.3.1", "typescript": "^4.5.5", + "vite": "^2.8.0", "webpack": "^5.68.0", "webpack-cli": "^4.9.2", "xml2js": "^0.4.23", @@ -777,6 +779,36 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.16.7.tgz", + "integrity": "sha512-oe5VuWs7J9ilH3BCCApGoYjHoSO48vkjX2CbA5bFVhIuO2HKxA3vyF7rleA4o6/4rTDbk6r8hBW7Ul8E+UZrpA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.16.7.tgz", + "integrity": "sha512-rONFiQz9vgbsnaMtQlZCjIRwhJvlrPET8TabIUK2hzlXw9B9s2Ieaxte1SCOOXMbWRHodbKixNf3BLcWVOQ8Bw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-transform-react-pure-annotations": { "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.7.tgz", @@ -1134,6 +1166,19 @@ "resolved": "packages/playwright-test", "link": true }, + "node_modules/@rollup/pluginutils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.0.tgz", + "integrity": "sha512-2WUyJNRkyH5p487pGnn4tWAsxhEFKN/pT8CMgHshd5H+IXkOnKvKZwsz5ZWz+YCXkleZRAU5kwbfgF8CPfDRqA==", + "dev": true, + "dependencies": { + "estree-walker": "^2.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + } + }, "node_modules/@sindresorhus/is": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", @@ -1723,6 +1768,25 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@vitejs/plugin-react": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-1.2.0.tgz", + "integrity": "sha512-Rywwt0IXXg6yQ0hv3cMT3mtdDcGIw31mGaa+MMMAT651LhoXLF2yFy4LrakiTs7UKs7RPBo9eNgaS8pgl2A6Qw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.16.12", + "@babel/plugin-transform-react-jsx": "^7.16.7", + "@babel/plugin-transform-react-jsx-development": "^7.16.7", + "@babel/plugin-transform-react-jsx-self": "^7.16.7", + "@babel/plugin-transform-react-jsx-source": "^7.16.7", + "@rollup/pluginutils": "^4.1.2", + "react-refresh": "^0.11.0", + "resolve": "^1.22.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/@webassemblyjs/ast": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", @@ -2176,11 +2240,6 @@ "url": "https://opencollective.com/browserslist" } }, - "node_modules/browserslist/node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, "node_modules/buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", @@ -3201,6 +3260,361 @@ "dev": true, "optional": true }, + "node_modules/esbuild": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.27.tgz", + "integrity": "sha512-MZQt5SywZS3hA9fXnMhR22dv0oPGh6QtjJRIYbgL1AeqAoQZE+Qn5ppGYQAoHv/vq827flj4tIJ79Mrdiwk46Q==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "esbuild-android-64": "0.14.27", + "esbuild-android-arm64": "0.14.27", + "esbuild-darwin-64": "0.14.27", + "esbuild-darwin-arm64": "0.14.27", + "esbuild-freebsd-64": "0.14.27", + "esbuild-freebsd-arm64": "0.14.27", + "esbuild-linux-32": "0.14.27", + "esbuild-linux-64": "0.14.27", + "esbuild-linux-arm": "0.14.27", + "esbuild-linux-arm64": "0.14.27", + "esbuild-linux-mips64le": "0.14.27", + "esbuild-linux-ppc64le": "0.14.27", + "esbuild-linux-riscv64": "0.14.27", + "esbuild-linux-s390x": "0.14.27", + "esbuild-netbsd-64": "0.14.27", + "esbuild-openbsd-64": "0.14.27", + "esbuild-sunos-64": "0.14.27", + "esbuild-windows-32": "0.14.27", + "esbuild-windows-64": "0.14.27", + "esbuild-windows-arm64": "0.14.27" + } + }, + "node_modules/esbuild-android-64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.27.tgz", + "integrity": "sha512-LuEd4uPuj/16Y8j6kqy3Z2E9vNY9logfq8Tq+oTE2PZVuNs3M1kj5Qd4O95ee66yDGb3isaOCV7sOLDwtMfGaQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-android-arm64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.27.tgz", + "integrity": "sha512-E8Ktwwa6vX8q7QeJmg8yepBYXaee50OdQS3BFtEHKrzbV45H4foMOeEE7uqdjGQZFBap5VAqo7pvjlyA92wznQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.27.tgz", + "integrity": "sha512-czw/kXl/1ZdenPWfw9jDc5iuIYxqUxgQ/Q+hRd4/3udyGGVI31r29LCViN2bAJgGvQkqyLGVcG03PJPEXQ5i2g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-arm64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.27.tgz", + "integrity": "sha512-BEsv2U2U4o672oV8+xpXNxN9bgqRCtddQC6WBh4YhXKDcSZcdNh7+6nS+DM2vu7qWIWNA4JbRG24LUUYXysimQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.27.tgz", + "integrity": "sha512-7FeiFPGBo+ga+kOkDxtPmdPZdayrSzsV9pmfHxcyLKxu+3oTcajeZlOO1y9HW+t5aFZPiv7czOHM4KNd0tNwCA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-arm64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.27.tgz", + "integrity": "sha512-8CK3++foRZJluOWXpllG5zwAVlxtv36NpHfsbWS7TYlD8S+QruXltKlXToc/5ZNzBK++l6rvRKELu/puCLc7jA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-32": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.27.tgz", + "integrity": "sha512-qhNYIcT+EsYSBClZ5QhLzFzV5iVsP1YsITqblSaztr3+ZJUI+GoK8aXHyzKd7/CKKuK93cxEMJPpfi1dfsOfdw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.27.tgz", + "integrity": "sha512-ESjck9+EsHoTaKWlFKJpPZRN26uiav5gkI16RuI8WBxUdLrrAlYuYSndxxKgEn1csd968BX/8yQZATYf/9+/qg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.27.tgz", + "integrity": "sha512-JnnmgUBdqLQO9hoNZQqNHFWlNpSX82vzB3rYuCJMhtkuaWQEmQz6Lec1UIxJdC38ifEghNTBsF9bbe8dFilnCw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.27.tgz", + "integrity": "sha512-no6Mi17eV2tHlJnqBHRLekpZ2/VYx+NfGxKcBE/2xOMYwctsanCaXxw4zapvNrGE9X38vefVXLz6YCF8b1EHiQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-mips64le": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.27.tgz", + "integrity": "sha512-NolWP2uOvIJpbwpsDbwfeExZOY1bZNlWE/kVfkzLMsSgqeVcl5YMen/cedRe9mKnpfLli+i0uSp7N+fkKNU27A==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-ppc64le": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.27.tgz", + "integrity": "sha512-/7dTjDvXMdRKmsSxKXeWyonuGgblnYDn0MI1xDC7J1VQXny8k1qgNp6VmrlsawwnsymSUUiThhkJsI+rx0taNA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-riscv64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.27.tgz", + "integrity": "sha512-D+aFiUzOJG13RhrSmZgrcFaF4UUHpqj7XSKrIiCXIj1dkIkFqdrmqMSOtSs78dOtObWiOrFCDDzB24UyeEiNGg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-s390x": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.27.tgz", + "integrity": "sha512-CD/D4tj0U4UQjELkdNlZhQ8nDHU5rBn6NGp47Hiz0Y7/akAY5i0oGadhEIg0WCY/HYVXFb3CsSPPwaKcTOW3bg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-netbsd-64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.27.tgz", + "integrity": "sha512-h3mAld69SrO1VoaMpYl3a5FNdGRE/Nqc+E8VtHOag4tyBwhCQXxtvDDOAKOUQexBGca0IuR6UayQ4ntSX5ij1Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-openbsd-64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.27.tgz", + "integrity": "sha512-xwSje6qIZaDHXWoPpIgvL+7fC6WeubHHv18tusLYMwL+Z6bEa4Pbfs5IWDtQdHkArtfxEkIZz77944z8MgDxGw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-sunos-64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.27.tgz", + "integrity": "sha512-/nBVpWIDjYiyMhuqIqbXXsxBc58cBVH9uztAOIfWShStxq9BNBik92oPQPJ57nzWXRNKQUEFWr4Q98utDWz7jg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-32": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.27.tgz", + "integrity": "sha512-Q9/zEjhZJ4trtWhFWIZvS/7RUzzi8rvkoaS9oiizkHTTKd8UxFwn/Mm2OywsAfYymgUYm8+y2b+BKTNEFxUekw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.27.tgz", + "integrity": "sha512-b3y3vTSl5aEhWHK66ngtiS/c6byLf6y/ZBvODH1YkBM+MGtVL6jN38FdHUsZasCz9gFwYs/lJMVY9u7GL6wfYg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-arm64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.27.tgz", + "integrity": "sha512-I/reTxr6TFMcR5qbIkwRGvldMIaiBu2+MP0LlD7sOlNXrfqIl9uNjsuxFPGEG4IRomjfQ5q8WT+xlF/ySVkqKg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -3561,6 +3975,12 @@ "node": ">=4.0" } }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -3902,6 +4322,20 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -4398,9 +4832,9 @@ "dev": true }, "node_modules/is-core-module": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.6.0.tgz", - "integrity": "sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", + "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", "dev": true, "dependencies": { "has": "^1.0.3" @@ -5216,9 +5650,9 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/nanoid": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz", - "integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", + "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", "dev": true, "bin": { "nanoid": "bin/nanoid.cjs" @@ -5621,10 +6055,9 @@ "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" }, "node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" }, "node_modules/picomatch": { "version": "2.2.3", @@ -5706,21 +6139,27 @@ } }, "node_modules/postcss": { - "version": "8.3.9", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.9.tgz", - "integrity": "sha512-f/ZFyAKh9Dnqytx5X62jgjhhzttjZS7hMsohcI7HEI5tjELX/HxCy3EFhsRxyzGvrzFF+82XPvCS8T9TFleVJw==", + "version": "8.4.12", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.12.tgz", + "integrity": "sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], "dependencies": { - "nanoid": "^3.1.28", - "picocolors": "^0.2.1", - "source-map-js": "^0.6.2" + "nanoid": "^3.3.1", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" }, "engines": { "node": "^10 || ^12 || >=14" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" } }, "node_modules/postcss-modules-extract-imports": { @@ -5995,6 +6434,15 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" }, + "node_modules/react-refresh": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz", + "integrity": "sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/read-pkg": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", @@ -6049,6 +6497,10 @@ "node": ">= 0.10" } }, + "node_modules/recorder": { + "resolved": "packages/recorder", + "link": true + }, "node_modules/regexpp": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", @@ -6093,13 +6545,17 @@ } }, "node_modules/resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", "dev": true, "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -6201,6 +6657,21 @@ "dev": true, "optional": true }, + "node_modules/rollup": { + "version": "2.70.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.70.1.tgz", + "integrity": "sha512-CRYsI5EuzLbXdxC6RnYhOuRdtz4bhejPMSWjsFLfVM/7w/85n2szZv6yExqUXsBdz5KT8eoubeyDUDjhLHEslA==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -6475,9 +6946,9 @@ } }, "node_modules/source-map-js": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", - "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", "dev": true, "engines": { "node": ">=0.10.0" @@ -6660,6 +7131,18 @@ "node": ">=4" } }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", @@ -6805,6 +7288,10 @@ "node": ">=8.0" } }, + "node_modules/trace-viewer": { + "resolved": "packages/trace-viewer", + "link": true + }, "node_modules/tree-kill": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", @@ -6949,6 +7436,43 @@ "spdx-expression-parse": "^3.0.0" } }, + "node_modules/vite": { + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/vite/-/vite-2.8.6.tgz", + "integrity": "sha512-e4H0QpludOVKkmOsRyqQ7LTcMUDF3mcgyNU4lmi0B5JUbe0ZxeBBl8VoZ8Y6Rfn9eFKYtdXNPcYK97ZwH+K2ug==", + "dev": true, + "dependencies": { + "esbuild": "^0.14.14", + "postcss": "^8.4.6", + "resolve": "^1.22.0", + "rollup": "^2.59.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": ">=12.2.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "less": "*", + "sass": "*", + "stylus": "*" + }, + "peerDependenciesMeta": { + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + } + } + }, "node_modules/watchpack": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", @@ -7520,6 +8044,12 @@ "engines": { "node": ">=12" } + }, + "packages/recorder": { + "version": "0.0.0" + }, + "packages/trace-viewer": { + "version": "0.0.0" } }, "dependencies": { @@ -7998,6 +8528,24 @@ "@babel/plugin-transform-react-jsx": "^7.16.7" } }, + "@babel/plugin-transform-react-jsx-self": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.16.7.tgz", + "integrity": "sha512-oe5VuWs7J9ilH3BCCApGoYjHoSO48vkjX2CbA5bFVhIuO2HKxA3vyF7rleA4o6/4rTDbk6r8hBW7Ul8E+UZrpA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-react-jsx-source": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.16.7.tgz", + "integrity": "sha512-rONFiQz9vgbsnaMtQlZCjIRwhJvlrPET8TabIUK2hzlXw9B9s2Ieaxte1SCOOXMbWRHodbKixNf3BLcWVOQ8Bw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, "@babel/plugin-transform-react-pure-annotations": { "version": "7.16.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.16.7.tgz", @@ -8330,6 +8878,16 @@ } } }, + "@rollup/pluginutils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.0.tgz", + "integrity": "sha512-2WUyJNRkyH5p487pGnn4tWAsxhEFKN/pT8CMgHshd5H+IXkOnKvKZwsz5ZWz+YCXkleZRAU5kwbfgF8CPfDRqA==", + "dev": true, + "requires": { + "estree-walker": "^2.0.1", + "picomatch": "^2.2.2" + } + }, "@sindresorhus/is": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", @@ -8815,6 +9373,22 @@ "eslint-visitor-keys": "^3.0.0" } }, + "@vitejs/plugin-react": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-1.2.0.tgz", + "integrity": "sha512-Rywwt0IXXg6yQ0hv3cMT3mtdDcGIw31mGaa+MMMAT651LhoXLF2yFy4LrakiTs7UKs7RPBo9eNgaS8pgl2A6Qw==", + "dev": true, + "requires": { + "@babel/core": "^7.16.12", + "@babel/plugin-transform-react-jsx": "^7.16.7", + "@babel/plugin-transform-react-jsx-development": "^7.16.7", + "@babel/plugin-transform-react-jsx-self": "^7.16.7", + "@babel/plugin-transform-react-jsx-source": "^7.16.7", + "@rollup/pluginutils": "^4.1.2", + "react-refresh": "^0.11.0", + "resolve": "^1.22.0" + } + }, "@webassemblyjs/ast": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", @@ -9188,13 +9762,6 @@ "escalade": "^3.1.1", "node-releases": "^2.0.1", "picocolors": "^1.0.0" - }, - "dependencies": { - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - } } }, "buffer-crc32": { @@ -9973,6 +10540,174 @@ "dev": true, "optional": true }, + "esbuild": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.27.tgz", + "integrity": "sha512-MZQt5SywZS3hA9fXnMhR22dv0oPGh6QtjJRIYbgL1AeqAoQZE+Qn5ppGYQAoHv/vq827flj4tIJ79Mrdiwk46Q==", + "dev": true, + "requires": { + "esbuild-android-64": "0.14.27", + "esbuild-android-arm64": "0.14.27", + "esbuild-darwin-64": "0.14.27", + "esbuild-darwin-arm64": "0.14.27", + "esbuild-freebsd-64": "0.14.27", + "esbuild-freebsd-arm64": "0.14.27", + "esbuild-linux-32": "0.14.27", + "esbuild-linux-64": "0.14.27", + "esbuild-linux-arm": "0.14.27", + "esbuild-linux-arm64": "0.14.27", + "esbuild-linux-mips64le": "0.14.27", + "esbuild-linux-ppc64le": "0.14.27", + "esbuild-linux-riscv64": "0.14.27", + "esbuild-linux-s390x": "0.14.27", + "esbuild-netbsd-64": "0.14.27", + "esbuild-openbsd-64": "0.14.27", + "esbuild-sunos-64": "0.14.27", + "esbuild-windows-32": "0.14.27", + "esbuild-windows-64": "0.14.27", + "esbuild-windows-arm64": "0.14.27" + } + }, + "esbuild-android-64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.27.tgz", + "integrity": "sha512-LuEd4uPuj/16Y8j6kqy3Z2E9vNY9logfq8Tq+oTE2PZVuNs3M1kj5Qd4O95ee66yDGb3isaOCV7sOLDwtMfGaQ==", + "dev": true, + "optional": true + }, + "esbuild-android-arm64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.27.tgz", + "integrity": "sha512-E8Ktwwa6vX8q7QeJmg8yepBYXaee50OdQS3BFtEHKrzbV45H4foMOeEE7uqdjGQZFBap5VAqo7pvjlyA92wznQ==", + "dev": true, + "optional": true + }, + "esbuild-darwin-64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.27.tgz", + "integrity": "sha512-czw/kXl/1ZdenPWfw9jDc5iuIYxqUxgQ/Q+hRd4/3udyGGVI31r29LCViN2bAJgGvQkqyLGVcG03PJPEXQ5i2g==", + "dev": true, + "optional": true + }, + "esbuild-darwin-arm64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.27.tgz", + "integrity": "sha512-BEsv2U2U4o672oV8+xpXNxN9bgqRCtddQC6WBh4YhXKDcSZcdNh7+6nS+DM2vu7qWIWNA4JbRG24LUUYXysimQ==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.27.tgz", + "integrity": "sha512-7FeiFPGBo+ga+kOkDxtPmdPZdayrSzsV9pmfHxcyLKxu+3oTcajeZlOO1y9HW+t5aFZPiv7czOHM4KNd0tNwCA==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-arm64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.27.tgz", + "integrity": "sha512-8CK3++foRZJluOWXpllG5zwAVlxtv36NpHfsbWS7TYlD8S+QruXltKlXToc/5ZNzBK++l6rvRKELu/puCLc7jA==", + "dev": true, + "optional": true + }, + "esbuild-linux-32": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.27.tgz", + "integrity": "sha512-qhNYIcT+EsYSBClZ5QhLzFzV5iVsP1YsITqblSaztr3+ZJUI+GoK8aXHyzKd7/CKKuK93cxEMJPpfi1dfsOfdw==", + "dev": true, + "optional": true + }, + "esbuild-linux-64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.27.tgz", + "integrity": "sha512-ESjck9+EsHoTaKWlFKJpPZRN26uiav5gkI16RuI8WBxUdLrrAlYuYSndxxKgEn1csd968BX/8yQZATYf/9+/qg==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.27.tgz", + "integrity": "sha512-JnnmgUBdqLQO9hoNZQqNHFWlNpSX82vzB3rYuCJMhtkuaWQEmQz6Lec1UIxJdC38ifEghNTBsF9bbe8dFilnCw==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.27.tgz", + "integrity": "sha512-no6Mi17eV2tHlJnqBHRLekpZ2/VYx+NfGxKcBE/2xOMYwctsanCaXxw4zapvNrGE9X38vefVXLz6YCF8b1EHiQ==", + "dev": true, + "optional": true + }, + "esbuild-linux-mips64le": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.27.tgz", + "integrity": "sha512-NolWP2uOvIJpbwpsDbwfeExZOY1bZNlWE/kVfkzLMsSgqeVcl5YMen/cedRe9mKnpfLli+i0uSp7N+fkKNU27A==", + "dev": true, + "optional": true + }, + "esbuild-linux-ppc64le": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.27.tgz", + "integrity": "sha512-/7dTjDvXMdRKmsSxKXeWyonuGgblnYDn0MI1xDC7J1VQXny8k1qgNp6VmrlsawwnsymSUUiThhkJsI+rx0taNA==", + "dev": true, + "optional": true + }, + "esbuild-linux-riscv64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.27.tgz", + "integrity": "sha512-D+aFiUzOJG13RhrSmZgrcFaF4UUHpqj7XSKrIiCXIj1dkIkFqdrmqMSOtSs78dOtObWiOrFCDDzB24UyeEiNGg==", + "dev": true, + "optional": true + }, + "esbuild-linux-s390x": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.27.tgz", + "integrity": "sha512-CD/D4tj0U4UQjELkdNlZhQ8nDHU5rBn6NGp47Hiz0Y7/akAY5i0oGadhEIg0WCY/HYVXFb3CsSPPwaKcTOW3bg==", + "dev": true, + "optional": true + }, + "esbuild-netbsd-64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.27.tgz", + "integrity": "sha512-h3mAld69SrO1VoaMpYl3a5FNdGRE/Nqc+E8VtHOag4tyBwhCQXxtvDDOAKOUQexBGca0IuR6UayQ4ntSX5ij1Q==", + "dev": true, + "optional": true + }, + "esbuild-openbsd-64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.27.tgz", + "integrity": "sha512-xwSje6qIZaDHXWoPpIgvL+7fC6WeubHHv18tusLYMwL+Z6bEa4Pbfs5IWDtQdHkArtfxEkIZz77944z8MgDxGw==", + "dev": true, + "optional": true + }, + "esbuild-sunos-64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.27.tgz", + "integrity": "sha512-/nBVpWIDjYiyMhuqIqbXXsxBc58cBVH9uztAOIfWShStxq9BNBik92oPQPJ57nzWXRNKQUEFWr4Q98utDWz7jg==", + "dev": true, + "optional": true + }, + "esbuild-windows-32": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.27.tgz", + "integrity": "sha512-Q9/zEjhZJ4trtWhFWIZvS/7RUzzi8rvkoaS9oiizkHTTKd8UxFwn/Mm2OywsAfYymgUYm8+y2b+BKTNEFxUekw==", + "dev": true, + "optional": true + }, + "esbuild-windows-64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.27.tgz", + "integrity": "sha512-b3y3vTSl5aEhWHK66ngtiS/c6byLf6y/ZBvODH1YkBM+MGtVL6jN38FdHUsZasCz9gFwYs/lJMVY9u7GL6wfYg==", + "dev": true, + "optional": true + }, + "esbuild-windows-arm64": { + "version": "0.14.27", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.27.tgz", + "integrity": "sha512-I/reTxr6TFMcR5qbIkwRGvldMIaiBu2+MP0LlD7sOlNXrfqIl9uNjsuxFPGEG4IRomjfQ5q8WT+xlF/ySVkqKg==", + "dev": true, + "optional": true + }, "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -10231,6 +10966,12 @@ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true }, + "estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -10492,6 +11233,13 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -10859,9 +11607,9 @@ "dev": true }, "is-core-module": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.6.0.tgz", - "integrity": "sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", + "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", "dev": true, "requires": { "has": "^1.0.3" @@ -11472,9 +12220,9 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "nanoid": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz", - "integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", + "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", "dev": true }, "natural-compare": { @@ -11776,10 +12524,9 @@ "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" }, "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" }, "picomatch": { "version": "2.2.3", @@ -11876,14 +12623,14 @@ "integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==" }, "postcss": { - "version": "8.3.9", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.9.tgz", - "integrity": "sha512-f/ZFyAKh9Dnqytx5X62jgjhhzttjZS7hMsohcI7HEI5tjELX/HxCy3EFhsRxyzGvrzFF+82XPvCS8T9TFleVJw==", + "version": "8.4.12", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.12.tgz", + "integrity": "sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==", "dev": true, "requires": { - "nanoid": "^3.1.28", - "picocolors": "^0.2.1", - "source-map-js": "^0.6.2" + "nanoid": "^3.3.1", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" } }, "postcss-modules-extract-imports": { @@ -12084,6 +12831,12 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" }, + "react-refresh": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz", + "integrity": "sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==", + "dev": true + }, "read-pkg": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", @@ -12129,6 +12882,9 @@ "resolve": "^1.9.0" } }, + "recorder": { + "version": "file:packages/recorder" + }, "regexpp": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", @@ -12161,13 +12917,14 @@ "dev": true }, "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", "dev": true, "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" } }, "resolve-cwd": { @@ -12245,6 +13002,15 @@ } } }, + "rollup": { + "version": "2.70.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.70.1.tgz", + "integrity": "sha512-CRYsI5EuzLbXdxC6RnYhOuRdtz4bhejPMSWjsFLfVM/7w/85n2szZv6yExqUXsBdz5KT8eoubeyDUDjhLHEslA==", + "dev": true, + "requires": { + "fsevents": "~2.3.2" + } + }, "run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -12444,9 +13210,9 @@ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" }, "source-map-js": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", - "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", "dev": true }, "source-map-support": { @@ -12591,6 +13357,12 @@ "has-flag": "^3.0.0" } }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, "tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", @@ -12680,6 +13452,9 @@ "is-number": "^7.0.0" } }, + "trace-viewer": { + "version": "file:packages/trace-viewer" + }, "tree-kill": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", @@ -12795,6 +13570,19 @@ "spdx-expression-parse": "^3.0.0" } }, + "vite": { + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/vite/-/vite-2.8.6.tgz", + "integrity": "sha512-e4H0QpludOVKkmOsRyqQ7LTcMUDF3mcgyNU4lmi0B5JUbe0ZxeBBl8VoZ8Y6Rfn9eFKYtdXNPcYK97ZwH+K2ug==", + "dev": true, + "requires": { + "esbuild": "^0.14.14", + "fsevents": "~2.3.2", + "postcss": "^8.4.6", + "resolve": "^1.22.0", + "rollup": "^2.59.0" + } + }, "watchpack": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", diff --git a/package.json b/package.json index 0268cbd6f8..4a07e14bef 100644 --- a/package.json +++ b/package.json @@ -71,6 +71,7 @@ "@types/yazl": "^2.4.2", "@typescript-eslint/eslint-plugin": "^5.10.2", "@typescript-eslint/parser": "^5.10.2", + "@vitejs/plugin-react": "^1.0.7", "@zip.js/zip.js": "^2.4.2", "ansi-to-html": "^0.7.2", "babel-loader": "^8.2.3", @@ -98,6 +99,7 @@ "socksv5": "0.0.6", "style-loader": "^3.3.1", "typescript": "^4.5.5", + "vite": "^2.8.0", "webpack": "^5.68.0", "webpack-cli": "^4.9.2", "xml2js": "^0.4.23", diff --git a/packages/playwright-core/.npmignore b/packages/playwright-core/.npmignore index 0d183a6b81..15378d04e2 100644 --- a/packages/playwright-core/.npmignore +++ b/packages/playwright-core/.npmignore @@ -5,6 +5,7 @@ # Include sources from lib, but not map files. !lib/**/*.js # Include web assets for recorder, trace viewer, etc. +!lib/**/*.css !lib/**/*.html !lib/**/*.png !lib/**/*.ttf diff --git a/packages/playwright-core/src/DEPS b/packages/playwright-core/src/DEPS index c741fc6a88..e19298276f 100644 --- a/packages/playwright-core/src/DEPS +++ b/packages/playwright-core/src/DEPS @@ -3,6 +3,7 @@ module.exports = { // CLI should only use client-side features. 'cli/': [ + '..', 'cli/**', 'client/**', 'debug/injected/', @@ -13,10 +14,14 @@ module.exports = { 'utils/**', ], - 'cli/driver.ts': [ '**' ], + 'cli/driver.ts': [ + '..', + '**', + ], // Client depends on chromium protocol for types. 'client/': [ + '../types/**', 'common/', 'protocol/', 'server/chromium/protocol.d.ts', @@ -52,6 +57,7 @@ module.exports = { // Generic dependencies for server-side code. 'server/': [ + '../types/types.d.ts', 'common/', 'generated/', 'protocol/**', @@ -61,6 +67,8 @@ module.exports = { 'server/common/**', 'server/injected/**', 'server/supplements/**', + // For fetch ?!? + 'server/trace/recorder/tracing.ts', 'utils/', ], @@ -110,18 +118,6 @@ module.exports = { 'utils/', ], - 'server/fetch.ts': [ - 'common/', - 'generated/', - 'protocol/**', - 'server/', - 'server/common/**', - 'server/injected/**', - 'server/supplements/**', - 'server/trace/recorder/tracing.ts', - 'utils/', - ], - 'server/playwright.ts': [ 'common/', 'generated/', @@ -171,6 +167,12 @@ module.exports = { 'utils/', ], + // For testing + 'server/trace/test/': [ + '@trace-viewer/**', + '**', + ], + 'server/trace/recorder/': [ 'common/', 'generated/', @@ -216,43 +218,4 @@ module.exports = { 'protocol/', 'third_party/diff_match_patch', ], - - // Tracing is a client/server plugin, nothing should depend on it. - 'web/components/': [ - 'third_party/highlightjs/**', - 'web/third_party/vscode/', - ], - - 'web/recorder/': [ - 'common/', - 'server/supplements/recorder/recorderTypes.ts', - 'web/', - 'web/components/', - 'web/third_party/vscode/', - ], - - 'web/traceViewer/': [ - 'common/', - 'protocol/callMetadata.ts', - 'server/trace/common/', - 'web/', - 'web/third_party/vscode/', - 'web/traceViewer/ui/', - ], - - 'web/traceViewer/ui/': [ - 'common/', - 'protocol/', - 'protocol/channels.ts', - 'server/snapshot/snapshotTypes.ts', - 'server/trace/', - 'server/trace/common/', - 'server/trace/viewer/', - 'third_party/**', - 'web/', - 'web/components/', - 'web/traceViewer/', - ], - - 'web/traceViewer/inMemorySnapshotter.ts': [ '**' ], -} +}; diff --git a/packages/playwright-core/src/server/instrumentation.ts b/packages/playwright-core/src/server/instrumentation.ts index 478f4b2cff..f2186696b6 100644 --- a/packages/playwright-core/src/server/instrumentation.ts +++ b/packages/playwright-core/src/server/instrumentation.ts @@ -33,8 +33,8 @@ export type Attribution = { frame?: Frame; }; -import { CallMetadata } from '../protocol/callMetadata'; -export { CallMetadata } from '../protocol/callMetadata'; +import type { CallMetadata } from '../protocol/callMetadata'; +export type { CallMetadata } from '../protocol/callMetadata'; export class SdkObject extends EventEmitter { guid: string; diff --git a/packages/playwright-core/src/server/trace/common/traceEvents.ts b/packages/playwright-core/src/server/trace/common/traceEvents.ts index 581b7c5fb1..2f4e5e3cb1 100644 --- a/packages/playwright-core/src/server/trace/common/traceEvents.ts +++ b/packages/playwright-core/src/server/trace/common/traceEvents.ts @@ -18,6 +18,7 @@ import type { Size } from '../../../common/types'; import type { CallMetadata } from '../../instrumentation'; import type { FrameSnapshot, ResourceSnapshot } from './snapshotTypes'; +// Make sure you add _modernize_N_to_N1(event: any) to traceModel.ts. export const VERSION = 3; export type BrowserContextEventOptions = { diff --git a/packages/playwright-core/src/web/traceViewer/inMemorySnapshotter.ts b/packages/playwright-core/src/server/trace/test/inMemorySnapshotter.ts similarity index 82% rename from packages/playwright-core/src/web/traceViewer/inMemorySnapshotter.ts rename to packages/playwright-core/src/server/trace/test/inMemorySnapshotter.ts index 5b32775b80..d2cbd6b3a9 100644 --- a/packages/playwright-core/src/web/traceViewer/inMemorySnapshotter.ts +++ b/packages/playwright-core/src/server/trace/test/inMemorySnapshotter.ts @@ -14,16 +14,16 @@ * limitations under the License. */ -import { BrowserContext } from '../../server/browserContext'; -import { eventsHelper } from '../../utils/eventsHelper'; -import { Page } from '../../server/page'; -import { FrameSnapshot } from '../../server/trace/common/snapshotTypes'; -import { SnapshotRenderer } from './snapshotRenderer'; -import { BaseSnapshotStorage } from './snapshotStorage'; -import { Snapshotter, SnapshotterBlob, SnapshotterDelegate } from '../../server/trace/recorder/snapshotter'; -import { ElementHandle } from '../../server/dom'; -import { HarTracer, HarTracerDelegate } from '../../server/supplements/har/harTracer'; -import * as har from '../../server/supplements/har/har'; +import { BrowserContext } from '../../browserContext'; +import { eventsHelper } from '../../../utils/eventsHelper'; +import { Page } from '../../page'; +import { FrameSnapshot } from '../common/snapshotTypes'; +import { SnapshotRenderer } from '../../../../../trace-viewer/src/snapshotRenderer'; +import { BaseSnapshotStorage } from '../../../../../trace-viewer/src/snapshotStorage'; +import { Snapshotter, SnapshotterBlob, SnapshotterDelegate } from '../recorder/snapshotter'; +import { ElementHandle } from '../../dom'; +import { HarTracer, HarTracerDelegate } from '../../supplements/har/harTracer'; +import * as har from '../../supplements/har/har'; export class InMemorySnapshotter extends BaseSnapshotStorage implements SnapshotterDelegate, HarTracerDelegate { private _blobs = new Map(); diff --git a/packages/playwright-core/src/server/types.ts b/packages/playwright-core/src/server/types.ts index f5aeb683ae..f3d7237dc7 100644 --- a/packages/playwright-core/src/server/types.ts +++ b/packages/playwright-core/src/server/types.ts @@ -15,8 +15,8 @@ * limitations under the License. */ -import { Size, Point, TimeoutOptions } from '../common/types'; -export { Size, Point, Rect, Quad, URLMatch, TimeoutOptions } from '../common/types'; +import type { Size, Point, TimeoutOptions } from '../common/types'; +export type { Size, Point, Rect, Quad, URLMatch, TimeoutOptions } from '../common/types'; export type StrictOptions = { strict?: boolean, diff --git a/packages/playwright-core/src/third_party/highlightjs/highlightjs/highlight.js b/packages/playwright-core/src/third_party/highlightjs/highlightjs/highlight.js deleted file mode 100644 index 44179572e8..0000000000 --- a/packages/playwright-core/src/third_party/highlightjs/highlightjs/highlight.js +++ /dev/null @@ -1,2 +0,0 @@ -// This file has been deprecated in favor of core.js -var hljs = require('./core'); diff --git a/packages/playwright-core/src/third_party/highlightjs/highlightjs/index.js b/packages/playwright-core/src/third_party/highlightjs/highlightjs/index.js deleted file mode 100644 index 995333f42c..0000000000 --- a/packages/playwright-core/src/third_party/highlightjs/highlightjs/index.js +++ /dev/null @@ -1,8 +0,0 @@ -var hljs = require('./core'); - -hljs.registerLanguage('javascript', require('./languages/javascript')); -hljs.registerLanguage('python', require('./languages/python')); -hljs.registerLanguage('csharp', require('./languages/csharp')); -hljs.registerLanguage('java', require('./languages/java')); - -module.exports = hljs; \ No newline at end of file diff --git a/packages/playwright-core/src/web/recorder/webpack.config.js b/packages/playwright-core/src/web/recorder/webpack.config.js deleted file mode 100644 index 480b5c2cc2..0000000000 --- a/packages/playwright-core/src/web/recorder/webpack.config.js +++ /dev/null @@ -1,45 +0,0 @@ -const path = require('path'); -const HtmlWebPackPlugin = require('html-webpack-plugin'); - -const mode = process.env.NODE_ENV === 'production' ? 'production' : 'development'; - -module.exports = { - mode, - entry: { - app: path.join(__dirname, 'index.tsx'), - }, - resolve: { - extensions: ['.ts', '.js', '.tsx', '.jsx'] - }, - devtool: mode === 'production' ? false : 'source-map', - output: { - globalObject: 'self', - filename: '[name].bundle.js', - path: path.resolve(__dirname, '../../../lib/webpack/recorder') - }, - module: { - rules: [ - { - test: /\.(j|t)sx?$/, - loader: 'babel-loader', - options: { - presets: [ - "@babel/preset-typescript", - "@babel/preset-react" - ] - }, - exclude: /node_modules/ - }, - { - test: /\.css$/, - use: ['style-loader', 'css-loader'] - }, - ] - }, - plugins: [ - new HtmlWebPackPlugin({ - title: 'Playwright Inspector', - template: path.join(__dirname, 'index.html'), - }) - ] -}; diff --git a/packages/playwright-core/src/web/traceViewer/webpack-sw.config.js b/packages/playwright-core/src/web/traceViewer/webpack-sw.config.js deleted file mode 100644 index 9d0195ae3c..0000000000 --- a/packages/playwright-core/src/web/traceViewer/webpack-sw.config.js +++ /dev/null @@ -1,32 +0,0 @@ -const path = require('path'); - -const mode = process.env.NODE_ENV === 'production' ? 'production' : 'development'; -module.exports = { - mode, - entry: { - sw: path.join(__dirname, 'sw.ts'), - }, - resolve: { - extensions: ['.ts', '.js'] - }, - devtool: mode === 'production' ? false : 'source-map', - output: { - globalObject: 'self', - filename: '[name].bundle.js', - path: path.resolve(__dirname, '../../../lib/webpack/traceViewer') - }, - module: { - rules: [ - { - test: /\.(j|t)sx?$/, - loader: 'babel-loader', - options: { - presets: [ - "@babel/preset-typescript", - ] - }, - exclude: /node_modules/ - }, - ] - }, -}; diff --git a/packages/playwright-core/src/web/traceViewer/webpack.config.js b/packages/playwright-core/src/web/traceViewer/webpack.config.js deleted file mode 100644 index cc0a82a19b..0000000000 --- a/packages/playwright-core/src/web/traceViewer/webpack.config.js +++ /dev/null @@ -1,60 +0,0 @@ -const path = require('path'); -const HtmlWebPackPlugin = require('html-webpack-plugin'); -const CopyPlugin = require('copy-webpack-plugin'); - -const mode = process.env.NODE_ENV === 'production' ? 'production' : 'development'; -module.exports = { - mode, - entry: { - app: path.join(__dirname, 'index.tsx'), - }, - resolve: { - extensions: ['.ts', '.js', '.tsx', '.jsx'] - }, - devtool: mode === 'production' ? false : 'source-map', - output: { - globalObject: 'self', - filename: '[name].bundle.js', - path: path.resolve(__dirname, '../../../lib/webpack/traceViewer') - }, - module: { - rules: [ - { - test: /\.(j|t)sx?$/, - loader: 'babel-loader', - options: { - presets: [ - "@babel/preset-typescript", - "@babel/preset-react" - ] - }, - exclude: /node_modules/ - }, - { - test: /\.css$/, - use: ['style-loader', 'css-loader'] - }, - ] - }, - plugins: [ - new CopyPlugin({ - patterns: [ - { - from: path.resolve(__dirname, '../../../../../node_modules/@zip.js/zip.js/dist/zip-no-worker-inflate.min.js'), - to: 'zip.min.js' - }, - ], - }), - new CopyPlugin({ - patterns: [ - { - from: path.resolve(__dirname, 'static'), - }, - ], - }), - new HtmlWebPackPlugin({ - title: 'Playwright Trace Viewer', - template: path.join(__dirname, 'index.html'), - }) - ] -}; diff --git a/packages/playwright-core/src/web/types.d.ts b/packages/playwright-core/src/web/types.d.ts deleted file mode 100644 index 922973fbaa..0000000000 --- a/packages/playwright-core/src/web/types.d.ts +++ /dev/null @@ -1,20 +0,0 @@ -/* - Copyright (c) Microsoft Corporation. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - -declare module '*.png' { - const value: any; - export = value; -} diff --git a/packages/playwright-test/src/DEPS b/packages/playwright-test/src/DEPS index c8cfba6f24..4936cc7f31 100644 --- a/packages/playwright-test/src/DEPS +++ b/packages/playwright-test/src/DEPS @@ -1,8 +1,9 @@ module.exports = { '/': [ + '../types/testReporter.d.ts', + 'matchers/', 'reporters/', 'third_party/', - 'matchers/', ], 'matchers': [ 'expect.ts', @@ -12,6 +13,7 @@ module.exports = { 'util.ts', ], 'reporters': [ - 'util.ts' + '../types/testReporter.d.ts', + 'util.ts', ], }; diff --git a/packages/playwright-test/src/mount.ts b/packages/playwright-test/src/mount.ts index 14baccf96a..62664d893f 100644 --- a/packages/playwright-test/src/mount.ts +++ b/packages/playwright-test/src/mount.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -import { Page } from '@playwright/test'; +import type { Page } from '@playwright/test'; import { createGuid } from 'playwright-core/lib/utils/utils'; export async function mount(page: Page, jsxOrType: any, options: any): Promise { diff --git a/packages/recorder/.gitignore b/packages/recorder/.gitignore new file mode 100644 index 0000000000..a547bf36d8 --- /dev/null +++ b/packages/recorder/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/packages/playwright-core/src/web/recorder/index.html b/packages/recorder/index.html similarity index 72% rename from packages/playwright-core/src/web/recorder/index.html rename to packages/recorder/index.html index dc369e7624..2add6860ca 100644 --- a/packages/playwright-core/src/web/recorder/index.html +++ b/packages/recorder/index.html @@ -13,15 +13,18 @@ See the License for the specific language governing permissions and limitations under the License. --> - - + + + + Playwright Inspector -
+
+ diff --git a/packages/recorder/package.json b/packages/recorder/package.json new file mode 100644 index 0000000000..0641d13367 --- /dev/null +++ b/packages/recorder/package.json @@ -0,0 +1,10 @@ +{ + "name": "recorder", + "private": true, + "version": "0.0.0", + "scripts": { + "dev": "vite", + "build": "vite build && tsc", + "preview": "vite preview" + } +} diff --git a/packages/playwright-core/src/web/traceViewer/static/icon-16x16.png b/packages/recorder/public/icon-16x16.png similarity index 100% rename from packages/playwright-core/src/web/traceViewer/static/icon-16x16.png rename to packages/recorder/public/icon-16x16.png diff --git a/packages/playwright-core/src/web/traceViewer/static/icon-192x192.png b/packages/recorder/public/icon-192x192.png similarity index 100% rename from packages/playwright-core/src/web/traceViewer/static/icon-192x192.png rename to packages/recorder/public/icon-192x192.png diff --git a/packages/playwright-core/src/web/traceViewer/static/icon-256x256.png b/packages/recorder/public/icon-256x256.png similarity index 100% rename from packages/playwright-core/src/web/traceViewer/static/icon-256x256.png rename to packages/recorder/public/icon-256x256.png diff --git a/packages/playwright-core/src/web/traceViewer/static/icon-32x32.png b/packages/recorder/public/icon-32x32.png similarity index 100% rename from packages/playwright-core/src/web/traceViewer/static/icon-32x32.png rename to packages/recorder/public/icon-32x32.png diff --git a/packages/playwright-core/src/web/traceViewer/static/icon-384x384.png b/packages/recorder/public/icon-384x384.png similarity index 100% rename from packages/playwright-core/src/web/traceViewer/static/icon-384x384.png rename to packages/recorder/public/icon-384x384.png diff --git a/packages/playwright-core/src/web/traceViewer/static/icon-512x512.png b/packages/recorder/public/icon-512x512.png similarity index 100% rename from packages/playwright-core/src/web/traceViewer/static/icon-512x512.png rename to packages/recorder/public/icon-512x512.png diff --git a/packages/recorder/public/manifest.webmanifest b/packages/recorder/public/manifest.webmanifest new file mode 100644 index 0000000000..5756cb3b7e --- /dev/null +++ b/packages/recorder/public/manifest.webmanifest @@ -0,0 +1,30 @@ +{ + "theme_color": "#000", + "background_color": "#fff", + "display": "browser", + "start_url": "index.html", + "name": "Playwright Inspector", + "short_name": "Playwright Inspector", + "icons": [ + { + "src": "icon-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "icon-256x256.png", + "sizes": "256x256", + "type": "image/png" + }, + { + "src": "icon-384x384.png", + "sizes": "384x384", + "type": "image/png" + }, + { + "src": "icon-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ] +} diff --git a/packages/recorder/src/DEPS b/packages/recorder/src/DEPS new file mode 100644 index 0000000000..1949198364 --- /dev/null +++ b/packages/recorder/src/DEPS @@ -0,0 +1,5 @@ +module.exports = { + '/': [ + '@web/**' + ] +}; diff --git a/packages/playwright-core/src/web/recorder/callLog.css b/packages/recorder/src/callLog.css similarity index 100% rename from packages/playwright-core/src/web/recorder/callLog.css rename to packages/recorder/src/callLog.css diff --git a/packages/playwright-core/src/web/recorder/callLog.tsx b/packages/recorder/src/callLog.tsx similarity index 95% rename from packages/playwright-core/src/web/recorder/callLog.tsx rename to packages/recorder/src/callLog.tsx index 5c7afed250..c5feb2b751 100644 --- a/packages/playwright-core/src/web/recorder/callLog.tsx +++ b/packages/recorder/src/callLog.tsx @@ -16,8 +16,8 @@ import './callLog.css'; import * as React from 'react'; -import type { CallLog } from '../../server/supplements/recorder/recorderTypes'; -import { msToString } from '../uiUtils'; +import type { CallLog } from '@playwright-core/server/supplements/recorder/recorderTypes'; +import { msToString } from '@web/uiUtils'; export interface CallLogProps { log: CallLog[], diff --git a/packages/playwright-core/src/web/recorder/index.tsx b/packages/recorder/src/index.tsx similarity index 87% rename from packages/playwright-core/src/web/recorder/index.tsx rename to packages/recorder/src/index.tsx index d82790f2c3..9d55f8608a 100644 --- a/packages/playwright-core/src/web/recorder/index.tsx +++ b/packages/recorder/src/index.tsx @@ -14,11 +14,11 @@ * limitations under the License. */ -import '../third_party/vscode/codicon.css'; +import '@web/common.css'; +import { applyTheme } from '@web/theme'; +import '@web/third_party/vscode/codicon.css'; import * as React from 'react'; import * as ReactDOM from 'react-dom'; -import { applyTheme } from '../theme'; -import '../common.css'; import { Main } from './main'; (async () => { diff --git a/packages/playwright-core/src/web/recorder/main.tsx b/packages/recorder/src/main.tsx similarity index 94% rename from packages/playwright-core/src/web/recorder/main.tsx rename to packages/recorder/src/main.tsx index 05ab7b7328..e1dfc3b155 100644 --- a/packages/playwright-core/src/web/recorder/main.tsx +++ b/packages/recorder/src/main.tsx @@ -14,10 +14,10 @@ limitations under the License. */ -import './recorder.css'; +import type { CallLog, Mode, Source } from '@playwright-core/server/supplements/recorder/recorderTypes'; import * as React from 'react'; -import type { CallLog, Mode, Source } from '../../server/supplements/recorder/recorderTypes'; import { Recorder } from './recorder'; +import './recorder.css'; declare global { interface Window { diff --git a/packages/playwright-core/src/web/recorder/recorder.css b/packages/recorder/src/recorder.css similarity index 100% rename from packages/playwright-core/src/web/recorder/recorder.css rename to packages/recorder/src/recorder.css diff --git a/packages/playwright-core/src/web/recorder/recorder.tsx b/packages/recorder/src/recorder.tsx similarity index 93% rename from packages/playwright-core/src/web/recorder/recorder.tsx rename to packages/recorder/src/recorder.tsx index 10c8ea015b..dca24e35b0 100644 --- a/packages/playwright-core/src/web/recorder/recorder.tsx +++ b/packages/recorder/src/recorder.tsx @@ -14,14 +14,14 @@ limitations under the License. */ -import './recorder.css'; +import type { CallLog, Mode, Source } from '@playwright-core/server/supplements/recorder/recorderTypes'; +import { Source as SourceView } from '@web/components/source'; +import { SplitView } from '@web/components/splitView'; +import { Toolbar } from '@web/components/toolbar'; +import { ToolbarButton } from '@web/components/toolbarButton'; import * as React from 'react'; -import { Toolbar } from '../components/toolbar'; -import { ToolbarButton } from '../components/toolbarButton'; -import { Source as SourceView } from '../components/source'; -import type { CallLog, Mode, Source } from '../../server/supplements/recorder/recorderTypes'; -import { SplitView } from '../components/splitView'; import { CallLogView } from './callLog'; +import './recorder.css'; declare global { interface Window { diff --git a/packages/recorder/src/vite-env.d.ts b/packages/recorder/src/vite-env.d.ts new file mode 100644 index 0000000000..11f02fe2a0 --- /dev/null +++ b/packages/recorder/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/packages/recorder/tsconfig.json b/packages/recorder/tsconfig.json new file mode 100644 index 0000000000..fd28152728 --- /dev/null +++ b/packages/recorder/tsconfig.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "target": "ESNext", + "useDefineForClassFields": true, + "lib": ["DOM", "DOM.Iterable", "ESNext"], + "allowJs": true, + "skipLibCheck": false, + "esModuleInterop": false, + "allowSyntheticDefaultImports": true, + "strict": true, + "module": "ESNext", + "moduleResolution": "Node", + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", + "baseUrl": ".", + "useUnknownInCatchVariables": false, + "paths": { + "@web/*": ["../web/src/*"], + "@playwright-core/*": ["../playwright-core/src/*"], + } + }, + "include": ["src"], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/packages/recorder/tsconfig.node.json b/packages/recorder/tsconfig.node.json new file mode 100644 index 0000000000..e993792cb1 --- /dev/null +++ b/packages/recorder/tsconfig.node.json @@ -0,0 +1,8 @@ +{ + "compilerOptions": { + "composite": true, + "module": "esnext", + "moduleResolution": "node" + }, + "include": ["vite.config.ts"] +} diff --git a/packages/recorder/vite.config.ts b/packages/recorder/vite.config.ts new file mode 100644 index 0000000000..019f44b435 --- /dev/null +++ b/packages/recorder/vite.config.ts @@ -0,0 +1,41 @@ +/** + * Copyright (c) Microsoft Corporation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; +import * as path from 'path'; + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [ + react() + ], + resolve: { + alias: { + '@web': path.resolve(__dirname, '../web/src'), + '@playwright-core': path.resolve(__dirname, '../playwright-core/src'), + }, + }, + build: { + outDir: path.resolve(__dirname, '../playwright-core/lib/webpack/recorder'), + emptyOutDir: true, + rollupOptions: { + output: { + manualChunks: undefined, + }, + }, + } +}); diff --git a/packages/trace-viewer/.gitignore b/packages/trace-viewer/.gitignore new file mode 100644 index 0000000000..a547bf36d8 --- /dev/null +++ b/packages/trace-viewer/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/packages/playwright-core/src/web/traceViewer/index.html b/packages/trace-viewer/index.html similarity index 72% rename from packages/playwright-core/src/web/traceViewer/index.html rename to packages/trace-viewer/index.html index 432ec31238..85ff705578 100644 --- a/packages/playwright-core/src/web/traceViewer/index.html +++ b/packages/trace-viewer/index.html @@ -13,18 +13,18 @@ See the License for the specific language governing permissions and limitations under the License. --> - - + - - - + + + Playwright Trace Viewer -
+
+ diff --git a/packages/trace-viewer/package.json b/packages/trace-viewer/package.json new file mode 100644 index 0000000000..eae4f1835c --- /dev/null +++ b/packages/trace-viewer/package.json @@ -0,0 +1,10 @@ +{ + "name": "trace-viewer", + "private": true, + "version": "0.0.0", + "scripts": { + "dev": "vite", + "build": "vite build && tsc", + "preview": "vite preview" + } +} diff --git a/packages/trace-viewer/public/icon-16x16.png b/packages/trace-viewer/public/icon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..1f6c4d6c1ead36390e1eee792c099f775d6ae63a GIT binary patch literal 593 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