From 18e568c669f6ff489884009513df65084b956b53 Mon Sep 17 00:00:00 2001 From: Alan Greene Date: Sat, 12 Aug 2023 16:39:32 +0100 Subject: [PATCH] Lazy-load the YAML editor Use dynamic import with React.lazy to delay loading of the YAML editor and CodeMirror dependencies until the user switches the Create page to YAML mode. This significantly reduces the initial bundle, improving load times and reducing processing overhead for the majority of users who do not use this functionality, including all users running the Dashboard in read-only mode. Remove the core-js polyfill as it's no longer required, and vite will warn us if we're using features not supported by the specified build target (currently es2021). Enable vendor chunk splitting plugin. The end-result is that the build now produces 3 chunks: - one with the bulk of the Dashboard's own code - one with the YAMLEditor component and its dependenceis (CodeMirror etc.) - vendor chunk with the remaining 3rd party deps from node_modules The main chunk and vendor chunk are loaded in parallel so there's no additional delay introduced by splitting these. --- index.jsx | 1 - package-lock.json | 938 +----------------- package.json | 5 +- .../CreatePipelineRun/CreatePipelineRun.jsx | 42 +- .../CreatePipelineRun.test.jsx | 32 +- .../CreateTaskRun/CreateTaskRun.jsx | 42 +- src/containers/YAMLEditor/YAMLEditor.jsx | 18 +- src/containers/YAMLEditor/YAMLEditor.test.jsx | 2 +- src/containers/index.js | 1 - src/utils/polyfills.js | 15 - vite.config.analyze.js | 21 +- vite.config.js | 13 +- 12 files changed, 116 insertions(+), 1014 deletions(-) delete mode 100644 src/utils/polyfills.js diff --git a/index.jsx b/index.jsx index a611167ed..a691459a0 100644 --- a/index.jsx +++ b/index.jsx @@ -17,7 +17,6 @@ import ReactDOM from 'react-dom'; import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; import { ReactQueryDevtools } from '@tanstack/react-query-devtools'; -import './src/utils/polyfills'; import { getLocale, setTheme } from './src/utils'; import App from './src/containers/App'; diff --git a/package-lock.json b/package-lock.json index cba6932c2..867127672 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,16 +16,15 @@ "dependencies": { "@carbon/icons-react": "^10.49.0", "@carbon/themes": "^10.55.1", + "@codemirror/legacy-modes": "^6.3.3", "@tanstack/react-query": "^4.29.3", "@tanstack/react-query-devtools": "^4.32.0", "@tektoncd/dashboard-components": "*", "@tektoncd/dashboard-utils": "*", - "@uiw/codemirror-extensions-langs": "^4.21.9", "@uiw/react-codemirror": "^4.21.9", "carbon-components": "^10.58.6", "carbon-components-react": "^7.59.10", "carbon-icons": "^7.0.7", - "core-js": "^3.30.2", "git-url-parse": "^13.1.0", "js-yaml": "^4.1.0", "lodash.clonedeep": "^4.5.0", @@ -75,7 +74,7 @@ "msw": "^1.2.1", "prettier": "^3.0.0", "rollup-plugin-visualizer": "^5.9.2", - "sass": "^1.64.1", + "sass": "^1.64.2", "storybook": "^7.2.2", "vite": "^4.4.9", "vite-plugin-html": "^3.2.0", @@ -2311,214 +2310,6 @@ "@lezer/common": "^1.0.0" } }, - "node_modules/@codemirror/lang-angular": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@codemirror/lang-angular/-/lang-angular-0.1.2.tgz", - "integrity": "sha512-Nq7lmx9SU+JyoaRcs6SaJs7uAmW2W06HpgJVQYeZptVGNWDzDvzhjwVb/ZuG1rwTlOocY4Y9GwNOBuKCeJbKtw==", - "dependencies": { - "@codemirror/lang-html": "^6.0.0", - "@codemirror/lang-javascript": "^6.1.2", - "@codemirror/language": "^6.0.0", - "@lezer/common": "^1.0.0", - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.3.3" - } - }, - "node_modules/@codemirror/lang-cpp": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@codemirror/lang-cpp/-/lang-cpp-6.0.2.tgz", - "integrity": "sha512-6oYEYUKHvrnacXxWxYa6t4puTlbN3dgV662BDfSH8+MfjQjVmP697/KYTDOqpxgerkvoNm7q5wlFMBeX8ZMocg==", - "dependencies": { - "@codemirror/language": "^6.0.0", - "@lezer/cpp": "^1.0.0" - } - }, - "node_modules/@codemirror/lang-css": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@codemirror/lang-css/-/lang-css-6.2.1.tgz", - "integrity": "sha512-/UNWDNV5Viwi/1lpr/dIXJNWiwDxpw13I4pTUAsNxZdg6E0mI2kTQb0P2iHczg1Tu+H4EBgJR+hYhKiHKko7qg==", - "dependencies": { - "@codemirror/autocomplete": "^6.0.0", - "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.0.0", - "@lezer/common": "^1.0.2", - "@lezer/css": "^1.0.0" - } - }, - "node_modules/@codemirror/lang-html": { - "version": "6.4.5", - "resolved": "https://registry.npmjs.org/@codemirror/lang-html/-/lang-html-6.4.5.tgz", - "integrity": "sha512-dUCSxkIw2G+chaUfw3Gfu5kkN83vJQN8gfQDp9iEHsIZluMJA0YJveT12zg/28BJx+uPsbQ6VimKCgx3oJrZxA==", - "dependencies": { - "@codemirror/autocomplete": "^6.0.0", - "@codemirror/lang-css": "^6.0.0", - "@codemirror/lang-javascript": "^6.0.0", - "@codemirror/language": "^6.4.0", - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.2.2", - "@lezer/common": "^1.0.0", - "@lezer/css": "^1.1.0", - "@lezer/html": "^1.3.0" - } - }, - "node_modules/@codemirror/lang-java": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@codemirror/lang-java/-/lang-java-6.0.1.tgz", - "integrity": "sha512-OOnmhH67h97jHzCuFaIEspbmsT98fNdhVhmA3zCxW0cn7l8rChDhZtwiwJ/JOKXgfm4J+ELxQihxaI7bj7mJRg==", - "dependencies": { - "@codemirror/language": "^6.0.0", - "@lezer/java": "^1.0.0" - } - }, - "node_modules/@codemirror/lang-javascript": { - "version": "6.1.9", - "resolved": "https://registry.npmjs.org/@codemirror/lang-javascript/-/lang-javascript-6.1.9.tgz", - "integrity": "sha512-z3jdkcqOEBT2txn2a87A0jSy6Te3679wg/U8QzMeftFt+4KA6QooMwfdFzJiuC3L6fXKfTXZcDocoaxMYfGz0w==", - "dependencies": { - "@codemirror/autocomplete": "^6.0.0", - "@codemirror/language": "^6.6.0", - "@codemirror/lint": "^6.0.0", - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.0.0", - "@lezer/common": "^1.0.0", - "@lezer/javascript": "^1.0.0" - } - }, - "node_modules/@codemirror/lang-json": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@codemirror/lang-json/-/lang-json-6.0.1.tgz", - "integrity": "sha512-+T1flHdgpqDDlJZ2Lkil/rLiRy684WMLc74xUnjJH48GQdfJo/pudlTRreZmKwzP8/tGdKf83wlbAdOCzlJOGQ==", - "dependencies": { - "@codemirror/language": "^6.0.0", - "@lezer/json": "^1.0.0" - } - }, - "node_modules/@codemirror/lang-less": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@codemirror/lang-less/-/lang-less-6.0.1.tgz", - "integrity": "sha512-ABcsKBjLbyPZwPR5gePpc8jEKCQrFF4pby2WlMVdmJOOr7OWwwyz8DZonPx/cKDE00hfoSLc8F7yAcn/d6+rTQ==", - "dependencies": { - "@codemirror/lang-css": "^6.2.0", - "@codemirror/language": "^6.0.0", - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0" - } - }, - "node_modules/@codemirror/lang-lezer": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@codemirror/lang-lezer/-/lang-lezer-6.0.1.tgz", - "integrity": "sha512-WHwjI7OqKFBEfkunohweqA5B/jIlxaZso6Nl3weVckz8EafYbPZldQEKSDb4QQ9H9BUkle4PVELP4sftKoA0uQ==", - "dependencies": { - "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.0.0", - "@lezer/common": "^1.0.0", - "@lezer/lezer": "^1.0.0" - } - }, - "node_modules/@codemirror/lang-markdown": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@codemirror/lang-markdown/-/lang-markdown-6.2.0.tgz", - "integrity": "sha512-deKegEQVzfBAcLPqsJEa+IxotqPVwWZi90UOEvQbfa01NTAw8jNinrykuYPTULGUj+gha0ZG2HBsn4s5d64Qrg==", - "dependencies": { - "@codemirror/autocomplete": "^6.7.1", - "@codemirror/lang-html": "^6.0.0", - "@codemirror/language": "^6.3.0", - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.0.0", - "@lezer/common": "^1.0.0", - "@lezer/markdown": "^1.0.0" - } - }, - "node_modules/@codemirror/lang-php": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@codemirror/lang-php/-/lang-php-6.0.1.tgz", - "integrity": "sha512-ublojMdw/PNWa7qdN5TMsjmqkNuTBD3k6ndZ4Z0S25SBAiweFGyY68AS3xNcIOlb6DDFDvKlinLQ40vSLqf8xA==", - "dependencies": { - "@codemirror/lang-html": "^6.0.0", - "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.0.0", - "@lezer/common": "^1.0.0", - "@lezer/php": "^1.0.0" - } - }, - "node_modules/@codemirror/lang-python": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/@codemirror/lang-python/-/lang-python-6.1.3.tgz", - "integrity": "sha512-S9w2Jl74hFlD5nqtUMIaXAq9t5WlM0acCkyuQWUUSvZclk1sV+UfnpFiZzuZSG+hfEaOmxKR5UxY/Uxswn7EhQ==", - "dependencies": { - "@codemirror/autocomplete": "^6.3.2", - "@codemirror/language": "^6.8.0", - "@lezer/python": "^1.1.4" - } - }, - "node_modules/@codemirror/lang-rust": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@codemirror/lang-rust/-/lang-rust-6.0.1.tgz", - "integrity": "sha512-344EMWFBzWArHWdZn/NcgkwMvZIWUR1GEBdwG8FEp++6o6vT6KL9V7vGs2ONsKxxFUPXKI0SPcWhyYyl2zPYxQ==", - "dependencies": { - "@codemirror/language": "^6.0.0", - "@lezer/rust": "^1.0.0" - } - }, - "node_modules/@codemirror/lang-sass": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@codemirror/lang-sass/-/lang-sass-6.0.2.tgz", - "integrity": "sha512-l/bdzIABvnTo1nzdY6U+kPAC51czYQcOErfzQ9zSm9D8GmNPD0WTW8st/CJwBTPLO8jlrbyvlSEcN20dc4iL0Q==", - "dependencies": { - "@codemirror/lang-css": "^6.2.0", - "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.0.0", - "@lezer/common": "^1.0.2", - "@lezer/sass": "^1.0.0" - } - }, - "node_modules/@codemirror/lang-sql": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/@codemirror/lang-sql/-/lang-sql-6.5.4.tgz", - "integrity": "sha512-5Gq7fYtT/5HbNyIG7a8vYaqOYQU3JbgtBe3+derkrFUXRVcjkf8WVgz++PIbMFAQsOFMDdDR+uiNM8ZRRuXH+w==", - "dependencies": { - "@codemirror/autocomplete": "^6.0.0", - "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.0.0", - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0" - } - }, - "node_modules/@codemirror/lang-vue": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@codemirror/lang-vue/-/lang-vue-0.1.2.tgz", - "integrity": "sha512-D4YrefiRBAr+CfEIM4S3yvGSbYW+N69mttIfGMEf7diHpRbmygDxS+R/5xSqjgtkY6VO6qmUrre1GkRcWeZa9A==", - "dependencies": { - "@codemirror/lang-html": "^6.0.0", - "@codemirror/lang-javascript": "^6.1.2", - "@codemirror/language": "^6.0.0", - "@lezer/common": "^1.0.0", - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.3.1" - } - }, - "node_modules/@codemirror/lang-wast": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@codemirror/lang-wast/-/lang-wast-6.0.1.tgz", - "integrity": "sha512-sQLsqhRjl2MWG3rxZysX+2XAyed48KhLBHLgq9xcKxIJu3npH/G+BIXW5NM5mHeDUjG0jcGh9BcjP0NfMStuzA==", - "dependencies": { - "@codemirror/language": "^6.0.0", - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0" - } - }, - "node_modules/@codemirror/lang-xml": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@codemirror/lang-xml/-/lang-xml-6.0.2.tgz", - "integrity": "sha512-JQYZjHL2LAfpiZI2/qZ/qzDuSqmGKMwyApYmEUUCTxLM4MWS7sATUEfIguZQr9Zjx/7gcdnewb039smF6nC2zw==", - "dependencies": { - "@codemirror/autocomplete": "^6.0.0", - "@codemirror/language": "^6.4.0", - "@codemirror/state": "^6.0.0", - "@lezer/common": "^1.0.0", - "@lezer/xml": "^1.0.0" - } - }, "node_modules/@codemirror/language": { "version": "6.8.0", "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.8.0.tgz", @@ -2532,32 +2323,6 @@ "style-mod": "^4.0.0" } }, - "node_modules/@codemirror/language-data": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@codemirror/language-data/-/language-data-6.3.1.tgz", - "integrity": "sha512-p6jhJmvhGe1TG1EGNhwH7nFWWFSTJ8NDKnB2fVx5g3t+PpO0+63R7GJNxjS0TmmH3cdMxZbzejsik+rlEh1EyQ==", - "dependencies": { - "@codemirror/lang-angular": "^0.1.0", - "@codemirror/lang-cpp": "^6.0.0", - "@codemirror/lang-css": "^6.0.0", - "@codemirror/lang-html": "^6.0.0", - "@codemirror/lang-java": "^6.0.0", - "@codemirror/lang-javascript": "^6.0.0", - "@codemirror/lang-json": "^6.0.0", - "@codemirror/lang-less": "^6.0.0", - "@codemirror/lang-markdown": "^6.0.0", - "@codemirror/lang-php": "^6.0.0", - "@codemirror/lang-python": "^6.0.0", - "@codemirror/lang-rust": "^6.0.0", - "@codemirror/lang-sass": "^6.0.0", - "@codemirror/lang-sql": "^6.0.0", - "@codemirror/lang-vue": "^0.1.1", - "@codemirror/lang-wast": "^6.0.0", - "@codemirror/lang-xml": "^6.0.0", - "@codemirror/language": "^6.0.0", - "@codemirror/legacy-modes": "^6.1.0" - } - }, "node_modules/@codemirror/legacy-modes": { "version": "6.3.3", "resolved": "https://registry.npmjs.org/@codemirror/legacy-modes/-/legacy-modes-6.3.3.tgz", @@ -3883,24 +3648,6 @@ "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.0.3.tgz", "integrity": "sha512-JH4wAXCgUOcCGNekQPLhVeUtIqjH0yPBs7vvUdSjyQama9618IOKFJwkv2kcqdhF0my8hQEgCTEJU0GIgnahvA==" }, - "node_modules/@lezer/cpp": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@lezer/cpp/-/cpp-1.1.1.tgz", - "integrity": "sha512-eS1M3L3U2mDowoFVPG7tEp01SWu9/68Nx3HEBgLJVn3N9ku7g5S7WdFv0jzmcTipAyONYfZJ+7x4WRkfdB2Ung==", - "dependencies": { - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0" - } - }, - "node_modules/@lezer/css": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@lezer/css/-/css-1.1.3.tgz", - "integrity": "sha512-SjSM4pkQnQdJDVc80LYzEaMiNy9txsFbI7HsMgeVF28NdLaAdHNtQ+kB/QqDUzRBV/75NTXjJ/R5IdC8QQGxMg==", - "dependencies": { - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0" - } - }, "node_modules/@lezer/highlight": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.1.6.tgz", @@ -3909,52 +3656,6 @@ "@lezer/common": "^1.0.0" } }, - "node_modules/@lezer/html": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@lezer/html/-/html-1.3.6.tgz", - "integrity": "sha512-Kk9HJARZTc0bAnMQUqbtuhFVsB4AnteR2BFUWfZV7L/x1H0aAKz6YabrfJ2gk/BEgjh9L3hg5O4y2IDZRBdzuQ==", - "dependencies": { - "@lezer/common": "^1.0.0", - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0" - } - }, - "node_modules/@lezer/java": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@lezer/java/-/java-1.0.4.tgz", - "integrity": "sha512-POc53LHf2AuNeRXjqZbXNu88GKj0KZTjjSx0L7tYeXlrEHF+3NAQx+dEwKVuCbkl0ZMtpRy2VsDYOV7KKV0oyg==", - "dependencies": { - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0" - } - }, - "node_modules/@lezer/javascript": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/@lezer/javascript/-/javascript-1.4.5.tgz", - "integrity": "sha512-FmBUHz8K1V22DgjTd6SrIG9owbzOYZ1t3rY6vGEmw+e2RVBd7sqjM8uXEVRFmfxKFn1Mx2ABJehHjrN3G2ZpmA==", - "dependencies": { - "@lezer/highlight": "^1.1.3", - "@lezer/lr": "^1.3.0" - } - }, - "node_modules/@lezer/json": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@lezer/json/-/json-1.0.1.tgz", - "integrity": "sha512-nkVC27qiEZEjySbi6gQRuMwa2sDu2PtfjSgz0A4QF81QyRGm3kb2YRzLcOPcTEtmcwvrX/cej7mlhbwViA4WJw==", - "dependencies": { - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0" - } - }, - "node_modules/@lezer/lezer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@lezer/lezer/-/lezer-1.1.2.tgz", - "integrity": "sha512-O8yw3CxPhzYHB1hvwbdozjnAslhhR8A5BH7vfEMof0xk3p+/DFDfZkA9Tde6J+88WgtwaHy4Sy6ThZSkaI0Evw==", - "dependencies": { - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0" - } - }, "node_modules/@lezer/lr": { "version": "1.3.9", "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.3.9.tgz", @@ -3963,60 +3664,6 @@ "@lezer/common": "^1.0.0" } }, - "node_modules/@lezer/markdown": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@lezer/markdown/-/markdown-1.1.0.tgz", - "integrity": "sha512-JYOI6Lkqbl83semCANkO3CKbKc0pONwinyagBufWBm+k4yhIcqfCF8B8fpEpvJLmIy7CAfwiq7dQ/PzUZA340g==", - "dependencies": { - "@lezer/common": "^1.0.0", - "@lezer/highlight": "^1.0.0" - } - }, - "node_modules/@lezer/php": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@lezer/php/-/php-1.0.1.tgz", - "integrity": "sha512-aqdCQJOXJ66De22vzdwnuC502hIaG9EnPK2rSi+ebXyUd+j7GAX1mRjWZOVOmf3GST1YUfUCu6WXDiEgDGOVwA==", - "dependencies": { - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.1.0" - } - }, - "node_modules/@lezer/python": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/@lezer/python/-/python-1.1.8.tgz", - "integrity": "sha512-1T/XsmeF57ijrjpC0Zmrf9YeO5mn2zC1XeSNrOnc0KB+6PgxJ5m7kWKt0CnwyS74oHQXbJxUUL+QDQJR26c1Gw==", - "dependencies": { - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0" - } - }, - "node_modules/@lezer/rust": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@lezer/rust/-/rust-1.0.1.tgz", - "integrity": "sha512-j+ToFKM6Wpglv3OQ4ebHYdYIMT2dh0ziCCV0rTf47AWiHOVhR0WjaKrBq+yuvDQNEhr5sxPxVI7+naJIgpqcsQ==", - "dependencies": { - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0" - } - }, - "node_modules/@lezer/sass": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@lezer/sass/-/sass-1.0.3.tgz", - "integrity": "sha512-n4l2nVOB7gWiGU/Cg2IVxpt2Ic9Hgfgy/7gk+p/XJibAsPXs0lSbsfGwQgwsAw9B/euYo3oS6lEFr9WytoqcZg==", - "dependencies": { - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0" - } - }, - "node_modules/@lezer/xml": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@lezer/xml/-/xml-1.0.2.tgz", - "integrity": "sha512-dlngsWceOtQBMuBPw5wtHpaxdPJ71aVntqjbpGkFtWsp4WtQmCnuTjQGocviymydN6M18fhj6UQX3oiEtSuY7w==", - "dependencies": { - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0" - } - }, "node_modules/@mdx-js/react": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-2.3.0.tgz", @@ -4100,23 +3747,6 @@ "tar-fs": "^2.1.1" } }, - "node_modules/@nextjournal/lang-clojure": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@nextjournal/lang-clojure/-/lang-clojure-1.0.0.tgz", - "integrity": "sha512-gOCV71XrYD0DhwGoPMWZmZ0r92/lIHsqQu9QWdpZYYBwiChNwMO4sbVMP7eTuAqffFB2BTtCSC+1skSH9d3bNg==", - "dependencies": { - "@codemirror/language": "^6.0.0", - "@nextjournal/lezer-clojure": "1.0.0" - } - }, - "node_modules/@nextjournal/lezer-clojure": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@nextjournal/lezer-clojure/-/lezer-clojure-1.0.0.tgz", - "integrity": "sha512-VZyuGu4zw5mkTOwQBTaGVNWmsOZAPw5ZRxu1/Knk/Xfs7EDBIogwIs5UXTYkuECX5ZQB8eOB+wKA2pc7VyqaZQ==", - "dependencies": { - "@lezer/lr": "^1.0.0" - } - }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -4747,60 +4377,6 @@ "node": ">=14" } }, - "node_modules/@replit/codemirror-lang-csharp": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@replit/codemirror-lang-csharp/-/codemirror-lang-csharp-6.1.0.tgz", - "integrity": "sha512-Dtyk9WVrdPPgkgTp8MUX9HyXd87O7UZnFrE647gjHUZY8p0UN+z0m6dPfk6rJMsTTvMcl7YbDUykxfeqB6EQOQ==", - "peerDependencies": { - "@codemirror/autocomplete": "^6.0.0", - "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.0.0", - "@lezer/common": "^1.0.0", - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0" - } - }, - "node_modules/@replit/codemirror-lang-nix": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@replit/codemirror-lang-nix/-/codemirror-lang-nix-6.0.1.tgz", - "integrity": "sha512-lvzjoYn9nfJzBD5qdm3Ut6G3+Or2wEacYIDJ49h9+19WSChVnxv4ojf+rNmQ78ncuxIt/bfbMvDLMeMP0xze6g==", - "peerDependencies": { - "@codemirror/autocomplete": "^6.0.0", - "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.0.0", - "@lezer/common": "^1.0.0", - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0" - } - }, - "node_modules/@replit/codemirror-lang-solidity": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@replit/codemirror-lang-solidity/-/codemirror-lang-solidity-6.0.1.tgz", - "integrity": "sha512-kDnak0xZelGmvzJwKTpMTl6gYSfFq9hnxrkbLaMV0CARq/MFvDQJmcmYon/k8uZqXy6DfzewKDV8tx9kY2WUZg==", - "peerDependencies": { - "@codemirror/language": "^6.0.0" - } - }, - "node_modules/@replit/codemirror-lang-svelte": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@replit/codemirror-lang-svelte/-/codemirror-lang-svelte-6.0.0.tgz", - "integrity": "sha512-U2OqqgMM6jKelL0GNWbAmqlu1S078zZNoBqlJBW+retTc5M4Mha6/Y2cf4SVg6ddgloJvmcSpt4hHrVoM4ePRA==", - "peerDependencies": { - "@codemirror/autocomplete": "^6.0.0", - "@codemirror/lang-css": "^6.0.1", - "@codemirror/lang-html": "^6.2.0", - "@codemirror/lang-javascript": "^6.1.1", - "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.0.0", - "@lezer/common": "^1.0.0", - "@lezer/highlight": "^1.0.0", - "@lezer/javascript": "^1.2.0", - "@lezer/lr": "^1.0.0" - } - }, "node_modules/@rollup/pluginutils": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", @@ -7480,43 +7056,6 @@ "@codemirror/view": ">=6.0.0" } }, - "node_modules/@uiw/codemirror-extensions-langs": { - "version": "4.21.9", - "resolved": "https://registry.npmjs.org/@uiw/codemirror-extensions-langs/-/codemirror-extensions-langs-4.21.9.tgz", - "integrity": "sha512-s1VT1rss0iyvrtRl7BZtC5H7U5uQtCKTaD8wxjQrgZz5un9wHVvy9twU97aJGQR0FwbKWqK8/1iiICRJTRCoZA==", - "dependencies": { - "@codemirror/lang-angular": "^0.1.0", - "@codemirror/lang-cpp": "^6.0.0", - "@codemirror/lang-css": "^6.2.0", - "@codemirror/lang-html": "^6.4.0", - "@codemirror/lang-java": "^6.0.0", - "@codemirror/lang-javascript": "^6.1.0", - "@codemirror/lang-json": "^6.0.0", - "@codemirror/lang-less": "^6.0.1", - "@codemirror/lang-lezer": "^6.0.0", - "@codemirror/lang-markdown": "^6.1.0", - "@codemirror/lang-php": "^6.0.0", - "@codemirror/lang-python": "^6.1.0", - "@codemirror/lang-rust": "^6.0.0", - "@codemirror/lang-sass": "^6.0.1", - "@codemirror/lang-sql": "^6.4.0", - "@codemirror/lang-vue": "^0.1.1", - "@codemirror/lang-wast": "^6.0.0", - "@codemirror/lang-xml": "^6.0.0", - "@codemirror/language-data": "^6.0.0", - "@codemirror/legacy-modes": "^6.0.0", - "@nextjournal/lang-clojure": "^1.0.0", - "@replit/codemirror-lang-csharp": "^6.1.0", - "@replit/codemirror-lang-nix": "^6.0.1", - "@replit/codemirror-lang-solidity": "^6.0.1", - "@replit/codemirror-lang-svelte": "^6.0.0", - "codemirror-lang-mermaid": "^0.2.1" - }, - "peerDependencies": { - "@codemirror/language-data": ">=6.0.0", - "@codemirror/legacy-modes": ">=6.0.0" - } - }, "node_modules/@uiw/react-codemirror": { "version": "4.21.9", "resolved": "https://registry.npmjs.org/@uiw/react-codemirror/-/react-codemirror-4.21.9.tgz", @@ -9238,16 +8777,6 @@ "@codemirror/view": "^6.0.0" } }, - "node_modules/codemirror-lang-mermaid": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/codemirror-lang-mermaid/-/codemirror-lang-mermaid-0.2.2.tgz", - "integrity": "sha512-AqSzkQgfWsjBbifio3dy/zDj6WXEw4g52Mq6bltIWLMWryWWRMpFwjQSlHtCGOol1FENYObUF5KI4ofiv8bjXA==", - "dependencies": { - "@codemirror/language": "^6.0.0", - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0" - } - }, "node_modules/color": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", @@ -9536,16 +9065,6 @@ "toggle-selection": "^1.0.6" } }, - "node_modules/core-js": { - "version": "3.30.2", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.30.2.tgz", - "integrity": "sha512-uBJiDmwqsbJCWHAwjrx3cvjbMXP7xD72Dmsn5LOJpiRmE3WbBbN5rCqQ2Qh6Ek6/eOrjlWngEynBWo4VxerQhg==", - "hasInstallScript": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, "node_modules/core-js-compat": { "version": "3.32.0", "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.32.0.tgz", @@ -18469,9 +17988,9 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/sass": { - "version": "1.64.1", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.64.1.tgz", - "integrity": "sha512-16rRACSOFEE8VN7SCgBu1MpYCyN7urj9At898tyzdXFhC+a+yOX5dXwAR7L8/IdPJ1NB8OYoXmD55DM30B2kEQ==", + "version": "1.64.2", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.64.2.tgz", + "integrity": "sha512-TnDlfc+CRnUAgLO9D8cQLFu/GIjJIzJCGkE7o4ekIGQOH7T3GetiRR/PsTWJUHhkzcSPrARkPI+gNWn5alCzDg==", "dev": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", @@ -22687,214 +22206,6 @@ "@lezer/common": "^1.0.0" } }, - "@codemirror/lang-angular": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@codemirror/lang-angular/-/lang-angular-0.1.2.tgz", - "integrity": "sha512-Nq7lmx9SU+JyoaRcs6SaJs7uAmW2W06HpgJVQYeZptVGNWDzDvzhjwVb/ZuG1rwTlOocY4Y9GwNOBuKCeJbKtw==", - "requires": { - "@codemirror/lang-html": "^6.0.0", - "@codemirror/lang-javascript": "^6.1.2", - "@codemirror/language": "^6.0.0", - "@lezer/common": "^1.0.0", - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.3.3" - } - }, - "@codemirror/lang-cpp": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@codemirror/lang-cpp/-/lang-cpp-6.0.2.tgz", - "integrity": "sha512-6oYEYUKHvrnacXxWxYa6t4puTlbN3dgV662BDfSH8+MfjQjVmP697/KYTDOqpxgerkvoNm7q5wlFMBeX8ZMocg==", - "requires": { - "@codemirror/language": "^6.0.0", - "@lezer/cpp": "^1.0.0" - } - }, - "@codemirror/lang-css": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@codemirror/lang-css/-/lang-css-6.2.1.tgz", - "integrity": "sha512-/UNWDNV5Viwi/1lpr/dIXJNWiwDxpw13I4pTUAsNxZdg6E0mI2kTQb0P2iHczg1Tu+H4EBgJR+hYhKiHKko7qg==", - "requires": { - "@codemirror/autocomplete": "^6.0.0", - "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.0.0", - "@lezer/common": "^1.0.2", - "@lezer/css": "^1.0.0" - } - }, - "@codemirror/lang-html": { - "version": "6.4.5", - "resolved": "https://registry.npmjs.org/@codemirror/lang-html/-/lang-html-6.4.5.tgz", - "integrity": "sha512-dUCSxkIw2G+chaUfw3Gfu5kkN83vJQN8gfQDp9iEHsIZluMJA0YJveT12zg/28BJx+uPsbQ6VimKCgx3oJrZxA==", - "requires": { - "@codemirror/autocomplete": "^6.0.0", - "@codemirror/lang-css": "^6.0.0", - "@codemirror/lang-javascript": "^6.0.0", - "@codemirror/language": "^6.4.0", - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.2.2", - "@lezer/common": "^1.0.0", - "@lezer/css": "^1.1.0", - "@lezer/html": "^1.3.0" - } - }, - "@codemirror/lang-java": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@codemirror/lang-java/-/lang-java-6.0.1.tgz", - "integrity": "sha512-OOnmhH67h97jHzCuFaIEspbmsT98fNdhVhmA3zCxW0cn7l8rChDhZtwiwJ/JOKXgfm4J+ELxQihxaI7bj7mJRg==", - "requires": { - "@codemirror/language": "^6.0.0", - "@lezer/java": "^1.0.0" - } - }, - "@codemirror/lang-javascript": { - "version": "6.1.9", - "resolved": "https://registry.npmjs.org/@codemirror/lang-javascript/-/lang-javascript-6.1.9.tgz", - "integrity": "sha512-z3jdkcqOEBT2txn2a87A0jSy6Te3679wg/U8QzMeftFt+4KA6QooMwfdFzJiuC3L6fXKfTXZcDocoaxMYfGz0w==", - "requires": { - "@codemirror/autocomplete": "^6.0.0", - "@codemirror/language": "^6.6.0", - "@codemirror/lint": "^6.0.0", - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.0.0", - "@lezer/common": "^1.0.0", - "@lezer/javascript": "^1.0.0" - } - }, - "@codemirror/lang-json": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@codemirror/lang-json/-/lang-json-6.0.1.tgz", - "integrity": "sha512-+T1flHdgpqDDlJZ2Lkil/rLiRy684WMLc74xUnjJH48GQdfJo/pudlTRreZmKwzP8/tGdKf83wlbAdOCzlJOGQ==", - "requires": { - "@codemirror/language": "^6.0.0", - "@lezer/json": "^1.0.0" - } - }, - "@codemirror/lang-less": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@codemirror/lang-less/-/lang-less-6.0.1.tgz", - "integrity": "sha512-ABcsKBjLbyPZwPR5gePpc8jEKCQrFF4pby2WlMVdmJOOr7OWwwyz8DZonPx/cKDE00hfoSLc8F7yAcn/d6+rTQ==", - "requires": { - "@codemirror/lang-css": "^6.2.0", - "@codemirror/language": "^6.0.0", - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0" - } - }, - "@codemirror/lang-lezer": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@codemirror/lang-lezer/-/lang-lezer-6.0.1.tgz", - "integrity": "sha512-WHwjI7OqKFBEfkunohweqA5B/jIlxaZso6Nl3weVckz8EafYbPZldQEKSDb4QQ9H9BUkle4PVELP4sftKoA0uQ==", - "requires": { - "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.0.0", - "@lezer/common": "^1.0.0", - "@lezer/lezer": "^1.0.0" - } - }, - "@codemirror/lang-markdown": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@codemirror/lang-markdown/-/lang-markdown-6.2.0.tgz", - "integrity": "sha512-deKegEQVzfBAcLPqsJEa+IxotqPVwWZi90UOEvQbfa01NTAw8jNinrykuYPTULGUj+gha0ZG2HBsn4s5d64Qrg==", - "requires": { - "@codemirror/autocomplete": "^6.7.1", - "@codemirror/lang-html": "^6.0.0", - "@codemirror/language": "^6.3.0", - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.0.0", - "@lezer/common": "^1.0.0", - "@lezer/markdown": "^1.0.0" - } - }, - "@codemirror/lang-php": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@codemirror/lang-php/-/lang-php-6.0.1.tgz", - "integrity": "sha512-ublojMdw/PNWa7qdN5TMsjmqkNuTBD3k6ndZ4Z0S25SBAiweFGyY68AS3xNcIOlb6DDFDvKlinLQ40vSLqf8xA==", - "requires": { - "@codemirror/lang-html": "^6.0.0", - "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.0.0", - "@lezer/common": "^1.0.0", - "@lezer/php": "^1.0.0" - } - }, - "@codemirror/lang-python": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/@codemirror/lang-python/-/lang-python-6.1.3.tgz", - "integrity": "sha512-S9w2Jl74hFlD5nqtUMIaXAq9t5WlM0acCkyuQWUUSvZclk1sV+UfnpFiZzuZSG+hfEaOmxKR5UxY/Uxswn7EhQ==", - "requires": { - "@codemirror/autocomplete": "^6.3.2", - "@codemirror/language": "^6.8.0", - "@lezer/python": "^1.1.4" - } - }, - "@codemirror/lang-rust": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@codemirror/lang-rust/-/lang-rust-6.0.1.tgz", - "integrity": "sha512-344EMWFBzWArHWdZn/NcgkwMvZIWUR1GEBdwG8FEp++6o6vT6KL9V7vGs2ONsKxxFUPXKI0SPcWhyYyl2zPYxQ==", - "requires": { - "@codemirror/language": "^6.0.0", - "@lezer/rust": "^1.0.0" - } - }, - "@codemirror/lang-sass": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@codemirror/lang-sass/-/lang-sass-6.0.2.tgz", - "integrity": "sha512-l/bdzIABvnTo1nzdY6U+kPAC51czYQcOErfzQ9zSm9D8GmNPD0WTW8st/CJwBTPLO8jlrbyvlSEcN20dc4iL0Q==", - "requires": { - "@codemirror/lang-css": "^6.2.0", - "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.0.0", - "@lezer/common": "^1.0.2", - "@lezer/sass": "^1.0.0" - } - }, - "@codemirror/lang-sql": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/@codemirror/lang-sql/-/lang-sql-6.5.4.tgz", - "integrity": "sha512-5Gq7fYtT/5HbNyIG7a8vYaqOYQU3JbgtBe3+derkrFUXRVcjkf8WVgz++PIbMFAQsOFMDdDR+uiNM8ZRRuXH+w==", - "requires": { - "@codemirror/autocomplete": "^6.0.0", - "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.0.0", - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0" - } - }, - "@codemirror/lang-vue": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@codemirror/lang-vue/-/lang-vue-0.1.2.tgz", - "integrity": "sha512-D4YrefiRBAr+CfEIM4S3yvGSbYW+N69mttIfGMEf7diHpRbmygDxS+R/5xSqjgtkY6VO6qmUrre1GkRcWeZa9A==", - "requires": { - "@codemirror/lang-html": "^6.0.0", - "@codemirror/lang-javascript": "^6.1.2", - "@codemirror/language": "^6.0.0", - "@lezer/common": "^1.0.0", - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.3.1" - } - }, - "@codemirror/lang-wast": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@codemirror/lang-wast/-/lang-wast-6.0.1.tgz", - "integrity": "sha512-sQLsqhRjl2MWG3rxZysX+2XAyed48KhLBHLgq9xcKxIJu3npH/G+BIXW5NM5mHeDUjG0jcGh9BcjP0NfMStuzA==", - "requires": { - "@codemirror/language": "^6.0.0", - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0" - } - }, - "@codemirror/lang-xml": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@codemirror/lang-xml/-/lang-xml-6.0.2.tgz", - "integrity": "sha512-JQYZjHL2LAfpiZI2/qZ/qzDuSqmGKMwyApYmEUUCTxLM4MWS7sATUEfIguZQr9Zjx/7gcdnewb039smF6nC2zw==", - "requires": { - "@codemirror/autocomplete": "^6.0.0", - "@codemirror/language": "^6.4.0", - "@codemirror/state": "^6.0.0", - "@lezer/common": "^1.0.0", - "@lezer/xml": "^1.0.0" - } - }, "@codemirror/language": { "version": "6.8.0", "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.8.0.tgz", @@ -22908,32 +22219,6 @@ "style-mod": "^4.0.0" } }, - "@codemirror/language-data": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@codemirror/language-data/-/language-data-6.3.1.tgz", - "integrity": "sha512-p6jhJmvhGe1TG1EGNhwH7nFWWFSTJ8NDKnB2fVx5g3t+PpO0+63R7GJNxjS0TmmH3cdMxZbzejsik+rlEh1EyQ==", - "requires": { - "@codemirror/lang-angular": "^0.1.0", - "@codemirror/lang-cpp": "^6.0.0", - "@codemirror/lang-css": "^6.0.0", - "@codemirror/lang-html": "^6.0.0", - "@codemirror/lang-java": "^6.0.0", - "@codemirror/lang-javascript": "^6.0.0", - "@codemirror/lang-json": "^6.0.0", - "@codemirror/lang-less": "^6.0.0", - "@codemirror/lang-markdown": "^6.0.0", - "@codemirror/lang-php": "^6.0.0", - "@codemirror/lang-python": "^6.0.0", - "@codemirror/lang-rust": "^6.0.0", - "@codemirror/lang-sass": "^6.0.0", - "@codemirror/lang-sql": "^6.0.0", - "@codemirror/lang-vue": "^0.1.1", - "@codemirror/lang-wast": "^6.0.0", - "@codemirror/lang-xml": "^6.0.0", - "@codemirror/language": "^6.0.0", - "@codemirror/legacy-modes": "^6.1.0" - } - }, "@codemirror/legacy-modes": { "version": "6.3.3", "resolved": "https://registry.npmjs.org/@codemirror/legacy-modes/-/legacy-modes-6.3.3.tgz", @@ -23871,24 +23156,6 @@ "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.0.3.tgz", "integrity": "sha512-JH4wAXCgUOcCGNekQPLhVeUtIqjH0yPBs7vvUdSjyQama9618IOKFJwkv2kcqdhF0my8hQEgCTEJU0GIgnahvA==" }, - "@lezer/cpp": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@lezer/cpp/-/cpp-1.1.1.tgz", - "integrity": "sha512-eS1M3L3U2mDowoFVPG7tEp01SWu9/68Nx3HEBgLJVn3N9ku7g5S7WdFv0jzmcTipAyONYfZJ+7x4WRkfdB2Ung==", - "requires": { - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0" - } - }, - "@lezer/css": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@lezer/css/-/css-1.1.3.tgz", - "integrity": "sha512-SjSM4pkQnQdJDVc80LYzEaMiNy9txsFbI7HsMgeVF28NdLaAdHNtQ+kB/QqDUzRBV/75NTXjJ/R5IdC8QQGxMg==", - "requires": { - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0" - } - }, "@lezer/highlight": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.1.6.tgz", @@ -23897,52 +23164,6 @@ "@lezer/common": "^1.0.0" } }, - "@lezer/html": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@lezer/html/-/html-1.3.6.tgz", - "integrity": "sha512-Kk9HJARZTc0bAnMQUqbtuhFVsB4AnteR2BFUWfZV7L/x1H0aAKz6YabrfJ2gk/BEgjh9L3hg5O4y2IDZRBdzuQ==", - "requires": { - "@lezer/common": "^1.0.0", - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0" - } - }, - "@lezer/java": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@lezer/java/-/java-1.0.4.tgz", - "integrity": "sha512-POc53LHf2AuNeRXjqZbXNu88GKj0KZTjjSx0L7tYeXlrEHF+3NAQx+dEwKVuCbkl0ZMtpRy2VsDYOV7KKV0oyg==", - "requires": { - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0" - } - }, - "@lezer/javascript": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/@lezer/javascript/-/javascript-1.4.5.tgz", - "integrity": "sha512-FmBUHz8K1V22DgjTd6SrIG9owbzOYZ1t3rY6vGEmw+e2RVBd7sqjM8uXEVRFmfxKFn1Mx2ABJehHjrN3G2ZpmA==", - "requires": { - "@lezer/highlight": "^1.1.3", - "@lezer/lr": "^1.3.0" - } - }, - "@lezer/json": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@lezer/json/-/json-1.0.1.tgz", - "integrity": "sha512-nkVC27qiEZEjySbi6gQRuMwa2sDu2PtfjSgz0A4QF81QyRGm3kb2YRzLcOPcTEtmcwvrX/cej7mlhbwViA4WJw==", - "requires": { - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0" - } - }, - "@lezer/lezer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@lezer/lezer/-/lezer-1.1.2.tgz", - "integrity": "sha512-O8yw3CxPhzYHB1hvwbdozjnAslhhR8A5BH7vfEMof0xk3p+/DFDfZkA9Tde6J+88WgtwaHy4Sy6ThZSkaI0Evw==", - "requires": { - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0" - } - }, "@lezer/lr": { "version": "1.3.9", "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.3.9.tgz", @@ -23951,60 +23172,6 @@ "@lezer/common": "^1.0.0" } }, - "@lezer/markdown": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@lezer/markdown/-/markdown-1.1.0.tgz", - "integrity": "sha512-JYOI6Lkqbl83semCANkO3CKbKc0pONwinyagBufWBm+k4yhIcqfCF8B8fpEpvJLmIy7CAfwiq7dQ/PzUZA340g==", - "requires": { - "@lezer/common": "^1.0.0", - "@lezer/highlight": "^1.0.0" - } - }, - "@lezer/php": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@lezer/php/-/php-1.0.1.tgz", - "integrity": "sha512-aqdCQJOXJ66De22vzdwnuC502hIaG9EnPK2rSi+ebXyUd+j7GAX1mRjWZOVOmf3GST1YUfUCu6WXDiEgDGOVwA==", - "requires": { - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.1.0" - } - }, - "@lezer/python": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/@lezer/python/-/python-1.1.8.tgz", - "integrity": "sha512-1T/XsmeF57ijrjpC0Zmrf9YeO5mn2zC1XeSNrOnc0KB+6PgxJ5m7kWKt0CnwyS74oHQXbJxUUL+QDQJR26c1Gw==", - "requires": { - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0" - } - }, - "@lezer/rust": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@lezer/rust/-/rust-1.0.1.tgz", - "integrity": "sha512-j+ToFKM6Wpglv3OQ4ebHYdYIMT2dh0ziCCV0rTf47AWiHOVhR0WjaKrBq+yuvDQNEhr5sxPxVI7+naJIgpqcsQ==", - "requires": { - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0" - } - }, - "@lezer/sass": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@lezer/sass/-/sass-1.0.3.tgz", - "integrity": "sha512-n4l2nVOB7gWiGU/Cg2IVxpt2Ic9Hgfgy/7gk+p/XJibAsPXs0lSbsfGwQgwsAw9B/euYo3oS6lEFr9WytoqcZg==", - "requires": { - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0" - } - }, - "@lezer/xml": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@lezer/xml/-/xml-1.0.2.tgz", - "integrity": "sha512-dlngsWceOtQBMuBPw5wtHpaxdPJ71aVntqjbpGkFtWsp4WtQmCnuTjQGocviymydN6M18fhj6UQX3oiEtSuY7w==", - "requires": { - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0" - } - }, "@mdx-js/react": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-2.3.0.tgz", @@ -24074,23 +23241,6 @@ "tar-fs": "^2.1.1" } }, - "@nextjournal/lang-clojure": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@nextjournal/lang-clojure/-/lang-clojure-1.0.0.tgz", - "integrity": "sha512-gOCV71XrYD0DhwGoPMWZmZ0r92/lIHsqQu9QWdpZYYBwiChNwMO4sbVMP7eTuAqffFB2BTtCSC+1skSH9d3bNg==", - "requires": { - "@codemirror/language": "^6.0.0", - "@nextjournal/lezer-clojure": "1.0.0" - } - }, - "@nextjournal/lezer-clojure": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@nextjournal/lezer-clojure/-/lezer-clojure-1.0.0.tgz", - "integrity": "sha512-VZyuGu4zw5mkTOwQBTaGVNWmsOZAPw5ZRxu1/Knk/Xfs7EDBIogwIs5UXTYkuECX5ZQB8eOB+wKA2pc7VyqaZQ==", - "requires": { - "@lezer/lr": "^1.0.0" - } - }, "@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -24447,30 +23597,6 @@ "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.0.5.tgz", "integrity": "sha512-my0Mycd+jruq/1lQuO5LBB6WTlL/e8DTCYWp44DfMTDcXz8DcTlgF0ISaLsGewt+ctHN+yA8xMq3q/N7uWJPug==" }, - "@replit/codemirror-lang-csharp": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@replit/codemirror-lang-csharp/-/codemirror-lang-csharp-6.1.0.tgz", - "integrity": "sha512-Dtyk9WVrdPPgkgTp8MUX9HyXd87O7UZnFrE647gjHUZY8p0UN+z0m6dPfk6rJMsTTvMcl7YbDUykxfeqB6EQOQ==", - "requires": {} - }, - "@replit/codemirror-lang-nix": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@replit/codemirror-lang-nix/-/codemirror-lang-nix-6.0.1.tgz", - "integrity": "sha512-lvzjoYn9nfJzBD5qdm3Ut6G3+Or2wEacYIDJ49h9+19WSChVnxv4ojf+rNmQ78ncuxIt/bfbMvDLMeMP0xze6g==", - "requires": {} - }, - "@replit/codemirror-lang-solidity": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@replit/codemirror-lang-solidity/-/codemirror-lang-solidity-6.0.1.tgz", - "integrity": "sha512-kDnak0xZelGmvzJwKTpMTl6gYSfFq9hnxrkbLaMV0CARq/MFvDQJmcmYon/k8uZqXy6DfzewKDV8tx9kY2WUZg==", - "requires": {} - }, - "@replit/codemirror-lang-svelte": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@replit/codemirror-lang-svelte/-/codemirror-lang-svelte-6.0.0.tgz", - "integrity": "sha512-U2OqqgMM6jKelL0GNWbAmqlu1S078zZNoBqlJBW+retTc5M4Mha6/Y2cf4SVg6ddgloJvmcSpt4hHrVoM4ePRA==", - "requires": {} - }, "@rollup/pluginutils": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", @@ -26413,39 +25539,6 @@ "@codemirror/view": "^6.0.0" } }, - "@uiw/codemirror-extensions-langs": { - "version": "4.21.9", - "resolved": "https://registry.npmjs.org/@uiw/codemirror-extensions-langs/-/codemirror-extensions-langs-4.21.9.tgz", - "integrity": "sha512-s1VT1rss0iyvrtRl7BZtC5H7U5uQtCKTaD8wxjQrgZz5un9wHVvy9twU97aJGQR0FwbKWqK8/1iiICRJTRCoZA==", - "requires": { - "@codemirror/lang-angular": "^0.1.0", - "@codemirror/lang-cpp": "^6.0.0", - "@codemirror/lang-css": "^6.2.0", - "@codemirror/lang-html": "^6.4.0", - "@codemirror/lang-java": "^6.0.0", - "@codemirror/lang-javascript": "^6.1.0", - "@codemirror/lang-json": "^6.0.0", - "@codemirror/lang-less": "^6.0.1", - "@codemirror/lang-lezer": "^6.0.0", - "@codemirror/lang-markdown": "^6.1.0", - "@codemirror/lang-php": "^6.0.0", - "@codemirror/lang-python": "^6.1.0", - "@codemirror/lang-rust": "^6.0.0", - "@codemirror/lang-sass": "^6.0.1", - "@codemirror/lang-sql": "^6.4.0", - "@codemirror/lang-vue": "^0.1.1", - "@codemirror/lang-wast": "^6.0.0", - "@codemirror/lang-xml": "^6.0.0", - "@codemirror/language-data": "^6.0.0", - "@codemirror/legacy-modes": "^6.0.0", - "@nextjournal/lang-clojure": "^1.0.0", - "@replit/codemirror-lang-csharp": "^6.1.0", - "@replit/codemirror-lang-nix": "^6.0.1", - "@replit/codemirror-lang-solidity": "^6.0.1", - "@replit/codemirror-lang-svelte": "^6.0.0", - "codemirror-lang-mermaid": "^0.2.1" - } - }, "@uiw/react-codemirror": { "version": "4.21.9", "resolved": "https://registry.npmjs.org/@uiw/react-codemirror/-/react-codemirror-4.21.9.tgz", @@ -27735,16 +26828,6 @@ "@codemirror/view": "^6.0.0" } }, - "codemirror-lang-mermaid": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/codemirror-lang-mermaid/-/codemirror-lang-mermaid-0.2.2.tgz", - "integrity": "sha512-AqSzkQgfWsjBbifio3dy/zDj6WXEw4g52Mq6bltIWLMWryWWRMpFwjQSlHtCGOol1FENYObUF5KI4ofiv8bjXA==", - "requires": { - "@codemirror/language": "^6.0.0", - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0" - } - }, "color": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", @@ -27990,11 +27073,6 @@ "toggle-selection": "^1.0.6" } }, - "core-js": { - "version": "3.30.2", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.30.2.tgz", - "integrity": "sha512-uBJiDmwqsbJCWHAwjrx3cvjbMXP7xD72Dmsn5LOJpiRmE3WbBbN5rCqQ2Qh6Ek6/eOrjlWngEynBWo4VxerQhg==" - }, "core-js-compat": { "version": "3.32.0", "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.32.0.tgz", @@ -34664,9 +33742,9 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "sass": { - "version": "1.64.1", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.64.1.tgz", - "integrity": "sha512-16rRACSOFEE8VN7SCgBu1MpYCyN7urj9At898tyzdXFhC+a+yOX5dXwAR7L8/IdPJ1NB8OYoXmD55DM30B2kEQ==", + "version": "1.64.2", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.64.2.tgz", + "integrity": "sha512-TnDlfc+CRnUAgLO9D8cQLFu/GIjJIzJCGkE7o4ekIGQOH7T3GetiRR/PsTWJUHhkzcSPrARkPI+gNWn5alCzDg==", "dev": true, "requires": { "chokidar": ">=3.0.0 <4.0.0", diff --git a/package.json b/package.json index e2d3f89ab..0235158fa 100644 --- a/package.json +++ b/package.json @@ -25,16 +25,15 @@ "dependencies": { "@carbon/icons-react": "^10.49.0", "@carbon/themes": "^10.55.1", + "@codemirror/legacy-modes": "^6.3.3", "@tanstack/react-query": "^4.29.3", "@tanstack/react-query-devtools": "^4.32.0", "@tektoncd/dashboard-components": "*", "@tektoncd/dashboard-utils": "*", - "@uiw/codemirror-extensions-langs": "^4.21.9", "@uiw/react-codemirror": "^4.21.9", "carbon-components": "^10.58.6", "carbon-components-react": "^7.59.10", "carbon-icons": "^7.0.7", - "core-js": "^3.30.2", "git-url-parse": "^13.1.0", "js-yaml": "^4.1.0", "lodash.clonedeep": "^4.5.0", @@ -84,7 +83,7 @@ "msw": "^1.2.1", "prettier": "^3.0.0", "rollup-plugin-visualizer": "^5.9.2", - "sass": "^1.64.1", + "sass": "^1.64.2", "storybook": "^7.2.2", "vite": "^4.4.9", "vite-plugin-html": "^3.2.0", diff --git a/src/containers/CreatePipelineRun/CreatePipelineRun.jsx b/src/containers/CreatePipelineRun/CreatePipelineRun.jsx index f40395570..2c710a194 100644 --- a/src/containers/CreatePipelineRun/CreatePipelineRun.jsx +++ b/src/containers/CreatePipelineRun/CreatePipelineRun.jsx @@ -12,7 +12,7 @@ limitations under the License. */ /* istanbul ignore file */ -import React, { useState } from 'react'; +import React, { Suspense, useState } from 'react'; import { useLocation, useNavigate } from 'react-router-dom-v5-compat'; import keyBy from 'lodash.keyby'; import yaml from 'js-yaml'; @@ -31,13 +31,13 @@ import { urls, useTitleSync } from '@tektoncd/dashboard-utils'; -import { KeyValueList } from '@tektoncd/dashboard-components'; +import { KeyValueList, Loading } from '@tektoncd/dashboard-components'; import { useIntl } from 'react-intl'; + import { NamespacesDropdown, PipelinesDropdown, - ServiceAccountsDropdown, - YAMLEditor + ServiceAccountsDropdown } from '..'; import { createPipelineRun, @@ -50,6 +50,8 @@ import { } from '../../api'; import { isValidLabel } from '../../utils'; +const YAMLEditor = React.lazy(() => import('../YAMLEditor')); + const initialState = { creating: false, invalidLabels: {}, @@ -478,14 +480,16 @@ function CreatePipelineRun() { ); return ( - + }> + + ); } const pipelineRun = getPipelineRunPayload({ @@ -511,12 +515,14 @@ function CreatePipelineRun() { }); return ( - + }> + + ); } diff --git a/src/containers/CreatePipelineRun/CreatePipelineRun.test.jsx b/src/containers/CreatePipelineRun/CreatePipelineRun.test.jsx index 5bcb6418a..67b0875d7 100644 --- a/src/containers/CreatePipelineRun/CreatePipelineRun.test.jsx +++ b/src/containers/CreatePipelineRun/CreatePipelineRun.test.jsx @@ -168,6 +168,22 @@ describe('CreatePipelineRun yaml mode', () => { beforeEach(() => { vi.clearAllMocks(); vi.spyOn(window.history, 'pushState'); + + // Workaround for codemirror vs jsdom https://github.com/jsdom/jsdom/issues/3002#issuecomment-1118039915 + // for textRange(...).getClientRects is not a function + Range.prototype.getBoundingClientRect = () => ({ + bottom: 0, + height: 0, + left: 0, + right: 0, + top: 0, + width: 0 + }); + Range.prototype.getClientRects = () => ({ + item: () => null, + length: 0, + [Symbol.iterator]: vi.fn() + }); }); it('renders with namespace', async () => { @@ -176,11 +192,14 @@ describe('CreatePipelineRun yaml mode', () => { vi.spyOn(PipelineRunsAPI, 'usePipelineRun') .mockImplementation(() => ({ data: pipelineRunRawGenerateName })); - const { getByRole } = renderWithRouter(, { - path: '/create', - route: '/create?mode=yaml&namespace=test-namespace' + const { getByRole, queryAllByText } = renderWithRouter(, { + path: '/pipelineruns/create', + route: '/pipelineruns/create?mode=yaml&namespace=test-namespace' }); + await waitFor(() => { + expect(queryAllByText(/Loading/).length).toBe(0); + }); await waitFor(() => { expect(getByRole(/textbox/)).toBeTruthy(); }); @@ -196,11 +215,14 @@ describe('CreatePipelineRun yaml mode', () => { .mockImplementation(() => ({ data: pipelineRunRawGenerateName })); const { queryAllByText } = renderWithRouter(, { - path: '/create', + path: '/pipelineruns/create', route: - '/create?mode=yaml&pipelineRunName=test-pipeline-run-name&namespace=test-namespace' + '/pipelineruns/create?mode=yaml&pipelineRunName=test-pipeline-run-name&namespace=test-namespace' }); + await waitFor(() => { + expect(queryAllByText(/Loading/).length).toBe(0); + }); expect(submitButton(queryAllByText)).toBeTruthy(); fireEvent.click(submitButton(queryAllByText)); diff --git a/src/containers/CreateTaskRun/CreateTaskRun.jsx b/src/containers/CreateTaskRun/CreateTaskRun.jsx index 65040d089..94e5a01f5 100644 --- a/src/containers/CreateTaskRun/CreateTaskRun.jsx +++ b/src/containers/CreateTaskRun/CreateTaskRun.jsx @@ -12,7 +12,7 @@ limitations under the License. */ /* istanbul ignore file */ -import React, { useState } from 'react'; +import React, { Suspense, useState } from 'react'; import { useLocation, useNavigate } from 'react-router-dom-v5-compat'; import keyBy from 'lodash.keyby'; import yaml from 'js-yaml'; @@ -32,14 +32,14 @@ import { urls, useTitleSync } from '@tektoncd/dashboard-utils'; -import { KeyValueList } from '@tektoncd/dashboard-components'; +import { KeyValueList, Loading } from '@tektoncd/dashboard-components'; import { useIntl } from 'react-intl'; + import { ClusterTasksDropdown, NamespacesDropdown, ServiceAccountsDropdown, - TasksDropdown, - YAMLEditor + TasksDropdown } from '..'; import { createTaskRun, @@ -52,6 +52,8 @@ import { } from '../../api'; import { isValidLabel } from '../../utils'; +const YAMLEditor = React.lazy(() => import('../YAMLEditor')); + const clusterTaskItem = { id: 'clustertask', text: 'ClusterTask' }; const taskItem = { id: 'task', text: 'Task' }; @@ -477,14 +479,16 @@ function CreateTaskRun() { ); return ( - + }> + + ); } @@ -509,12 +513,14 @@ function CreateTaskRun() { }); return ( - + }> + + ); } diff --git a/src/containers/YAMLEditor/YAMLEditor.jsx b/src/containers/YAMLEditor/YAMLEditor.jsx index 9945aa22b..6a385a798 100644 --- a/src/containers/YAMLEditor/YAMLEditor.jsx +++ b/src/containers/YAMLEditor/YAMLEditor.jsx @@ -15,13 +15,14 @@ import { Button, Form, FormGroup, - InlineNotification, - Loading + InlineNotification } from 'carbon-components-react'; import yaml from 'js-yaml'; import React, { useEffect, useState } from 'react'; import CodeMirror from '@uiw/react-codemirror'; -import { langs } from '@uiw/codemirror-extensions-langs'; +import { StreamLanguage } from '@codemirror/language'; +import { yaml as yamlMode } from '@codemirror/legacy-modes/mode/yaml'; +import { Loading } from '@tektoncd/dashboard-components'; export default function YAMLEditor({ code: initialCode, @@ -156,17 +157,14 @@ export default function YAMLEditor({ /> )} - {loading ? ( -
- - {loadingMessage} -
- ) : ( + {loading ? : ( diff --git a/src/containers/YAMLEditor/YAMLEditor.test.jsx b/src/containers/YAMLEditor/YAMLEditor.test.jsx index 2efb1a796..2614f456a 100644 --- a/src/containers/YAMLEditor/YAMLEditor.test.jsx +++ b/src/containers/YAMLEditor/YAMLEditor.test.jsx @@ -12,8 +12,8 @@ limitations under the License. */ import React from 'react'; - import { fireEvent, waitFor } from '@testing-library/react'; + import { renderWithRouter } from '../../utils/test'; import YAMLEditor from './YAMLEditor'; diff --git a/src/containers/index.js b/src/containers/index.js index b6be17b11..98a037ba1 100644 --- a/src/containers/index.js +++ b/src/containers/index.js @@ -53,4 +53,3 @@ export { default as Trigger } from './Trigger'; export { default as Triggers } from './Triggers'; export { default as TriggerTemplate } from './TriggerTemplate'; export { default as TriggerTemplates } from './TriggerTemplates'; -export { default as YAMLEditor } from './YAMLEditor'; diff --git a/src/utils/polyfills.js b/src/utils/polyfills.js deleted file mode 100644 index 88efe819e..000000000 --- a/src/utils/polyfills.js +++ /dev/null @@ -1,15 +0,0 @@ -/* -Copyright 2019-2022 The Tekton Authors -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. -*/ -/* istanbul ignore file */ - -import 'core-js/stable'; diff --git a/vite.config.analyze.js b/vite.config.analyze.js index 451bd3cd5..a8decd041 100644 --- a/vite.config.analyze.js +++ b/vite.config.analyze.js @@ -11,16 +11,19 @@ See the License for the specific language governing permissions and limitations under the License. */ -import { mergeConfig } from 'vite'; +import { defineConfig, mergeConfig } from 'vite'; import { visualizer } from 'rollup-plugin-visualizer'; import baseConfig from './vite.config'; -export default mergeConfig(baseConfig({}), { - plugins: [ - visualizer({ - open: true, - template: 'treemap' - }) - ] -}); +export default mergeConfig( + baseConfig({}), + defineConfig({ + plugins: [ + visualizer({ + open: true, + template: 'treemap' + }) + ] + }) +); diff --git a/vite.config.js b/vite.config.js index 98ad72092..4e5e81e55 100644 --- a/vite.config.js +++ b/vite.config.js @@ -11,7 +11,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -import { defineConfig } from 'vite'; +import { defineConfig, splitVendorChunkPlugin } from 'vite'; import { createHtmlPlugin } from 'vite-plugin-html'; import react from '@vitejs/plugin-react-swc'; import svgr from 'vite-plugin-svgr'; @@ -31,7 +31,8 @@ export default defineConfig(({ _mode }) => ({ // Relative to outDir assetsDir: '.', // Relative to the root - outDir: 'cmd/dashboard/kodata' + outDir: 'cmd/dashboard/kodata', + target: 'es2021' }, css: { devSourcemap: true @@ -39,7 +40,13 @@ export default defineConfig(({ _mode }) => ({ esbuild: { target: 'es2021' }, - plugins: [createHtmlPlugin({}), react(), svgr(), yaml()], + plugins: [ + createHtmlPlugin({}), + react(), + svgr(), + yaml(), + splitVendorChunkPlugin() + ], server: { headers: { // https://github.com/codemirror/codemirror5/issues/6707