diff --git a/src/Umbraco.Web.UI.Client/devops/build/copy-to-cms.js b/src/Umbraco.Web.UI.Client/devops/build/copy-to-cms.js index 7c2902296f79..49d908e16965 100644 --- a/src/Umbraco.Web.UI.Client/devops/build/copy-to-cms.js +++ b/src/Umbraco.Web.UI.Client/devops/build/copy-to-cms.js @@ -1,8 +1,24 @@ import { cpSync, rmSync } from 'fs'; +import { execSync } from 'child_process'; const srcDir = './dist-cms'; const outputDir = '../Umbraco.Cms.StaticAssets/wwwroot/umbraco/backoffice'; +// Copy assets +console.log('--- Copying assets ---'); +cpSync('./src/assets', `${srcDir}/assets`, { recursive: true }); +console.log('--- Copying assets done ---'); + +// Copy SRC CSS +console.log('--- Copying src CSS ---'); +cpSync('./src/css', `${srcDir}/css`, { recursive: true }); +console.log('--- Copying src CSS done ---'); + +// Minify CSS +console.log('--- Minifying CSS ---'); +execSync('npx postcss dist-cms/css/**/*.css --replace --use cssnano --verbose', { stdio: 'inherit' }); +console.log('--- Minifying CSS done ---'); + rmSync(outputDir, { recursive: true, force: true }); cpSync(srcDir, outputDir, { recursive: true }); diff --git a/src/Umbraco.Web.UI.Client/devops/package/validate-exports.js b/src/Umbraco.Web.UI.Client/devops/package/validate-exports.js index 0935771ee7fc..a87feadce458 100644 --- a/src/Umbraco.Web.UI.Client/devops/package/validate-exports.js +++ b/src/Umbraco.Web.UI.Client/devops/package/validate-exports.js @@ -1,4 +1,4 @@ -import { globSync } from 'glob'; +import glob from 'tiny-glob'; import { packageJsonExports } from './meta.js'; const validateExports = async () => { @@ -7,7 +7,7 @@ const validateExports = async () => { // Iterate over the exports in package.json for (const [key, value] of Object.entries(packageJsonExports || {})) { if (value) { - const jsFiles = await globSync(value); + const jsFiles = await glob(value, { filesOnly: true }); // Log an error if the export from the package.json does not exist in the build output if (jsFiles.length === 0) { diff --git a/src/Umbraco.Web.UI.Client/package-lock.json b/src/Umbraco.Web.UI.Client/package-lock.json index c3aaac1397cc..4bb032625a2c 100644 --- a/src/Umbraco.Web.UI.Client/package-lock.json +++ b/src/Umbraco.Web.UI.Client/package-lock.json @@ -9,42 +9,17 @@ "version": "16.1.0-rc", "license": "MIT", "workspaces": [ - "./src/packages/*" + "./src/packages/*", + "./src/external/*" ], "dependencies": { - "@heximal/expressions": "^0.1.5", - "@tiptap/core": "2.11.7", - "@tiptap/extension-character-count": "2.11.7", - "@tiptap/extension-image": "2.11.7", - "@tiptap/extension-link": "2.11.7", - "@tiptap/extension-placeholder": "2.11.7", - "@tiptap/extension-subscript": "2.11.7", - "@tiptap/extension-superscript": "2.11.7", - "@tiptap/extension-table": "2.11.7", - "@tiptap/extension-table-cell": "2.11.7", - "@tiptap/extension-table-header": "2.11.7", - "@tiptap/extension-table-row": "2.11.7", - "@tiptap/extension-text-align": "2.11.7", - "@tiptap/extension-underline": "2.11.7", - "@tiptap/pm": "2.11.7", - "@tiptap/starter-kit": "2.11.7", - "@umbraco-ui/uui": "1.14.2", - "@umbraco-ui/uui-css": "1.14.1", - "dompurify": "^3.2.5", - "element-internals-polyfill": "^3.0.2", - "lit": "^3.3.0", - "marked": "^15.0.9", - "monaco-editor": "^0.52.2", - "rxjs": "^7.8.2" + "element-internals-polyfill": "^3.0.2" }, "devDependencies": { "@babel/core": "^7.26.10", "@eslint/js": "^9.25.1", "@open-wc/testing": "^4.0.0", "@playwright/test": "^1.52.0", - "@rollup/plugin-json": "^6.1.0", - "@rollup/plugin-node-resolve": "^16.0.1", - "@rollup/plugin-replace": "^6.0.2", "@storybook/addon-a11y": "^9.0.14", "@storybook/addon-docs": "^9.0.14", "@storybook/addon-links": "^9.0.14", @@ -58,6 +33,7 @@ "@web/test-runner-playwright": "^0.11.0", "babel-loader": "^10.0.0", "cross-env": "7.0.3", + "cssnano": "^7.0.7", "eslint": "^9.25.1", "eslint-config-prettier": "^10.1.2", "eslint-plugin-import": "^2.31.0", @@ -67,17 +43,15 @@ "eslint-plugin-prettier": "^5.2.6", "eslint-plugin-storybook": "9.0.14", "eslint-plugin-wc": "^2.2.0", - "glob": "^11.0.1", "globals": "^16.0.0", "lucide-static": "^0.503.0", "madge": "^8.0.0", "msw": "^1.3.2", "playwright-msw": "^3.0.1", + "postcss": "^8.5.6", + "postcss-cli": "^11.0.1", "prettier": "3.5.3", "remark-gfm": "^4.0.1", - "rollup": "^4.40.0", - "rollup-plugin-esbuild": "^6.2.1", - "rollup-plugin-import-css": "^3.5.8", "simple-icons": "^14.12.3", "storybook": "^9.0.14", "svgo": "^3.3.2", @@ -1163,132 +1137,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@isaacs/balanced-match": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", - "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/@isaacs/brace-expansion": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", - "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@isaacs/balanced-match": "^4.0.1" - }, - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", @@ -1611,74 +1459,6 @@ "integrity": "sha512-42aWfPrimMfDKDi4YegyS7x+/0tlzaqwPQCULLanv3DMIlu96KTJR0fM5isWX2UViOqlGnX6YFgqWepcX+XMNg==", "license": "MIT" }, - "node_modules/@rollup/plugin-json": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-6.1.0.tgz", - "integrity": "sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@rollup/pluginutils": "^5.1.0" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/plugin-node-resolve": { - "version": "16.0.1", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-16.0.1.tgz", - "integrity": "sha512-tk5YCxJWIG81umIvNkSod2qK5KyQW19qcBF/B78n1bjtOON6gzKoVeSzAE8yHCZEDmqkHKkxplExA8KzdJLJpA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@rollup/pluginutils": "^5.0.1", - "@types/resolve": "1.20.2", - "deepmerge": "^4.2.2", - "is-module": "^1.0.0", - "resolve": "^1.22.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^2.78.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/plugin-replace": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-6.0.2.tgz", - "integrity": "sha512-7QaYCf8bqF04dOy7w/eHmJeNExxTYwvKAmlSAH/EaWWUzbT0h5sbF6bktFoX/0F/0qwng5/dWFMyf3gzaM8DsQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@rollup/pluginutils": "^5.0.1", - "magic-string": "^0.30.3" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, "node_modules/@rollup/pluginutils": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.3.tgz", @@ -4063,6 +3843,10 @@ "resolved": "src/packages/documents", "link": true }, + "node_modules/@umbraco-backoffice/dompurify": { + "resolved": "src/external/dompurify", + "link": true + }, "node_modules/@umbraco-backoffice/embedded-media": { "resolved": "src/packages/embedded-media", "link": true @@ -4071,6 +3855,10 @@ "resolved": "src/packages/extension-insights", "link": true }, + "node_modules/@umbraco-backoffice/external-tiptap": { + "resolved": "src/external/tiptap", + "link": true + }, "node_modules/@umbraco-backoffice/health-check": { "resolved": "src/packages/health-check", "link": true @@ -4079,10 +3867,18 @@ "resolved": "src/packages/help", "link": true }, + "node_modules/@umbraco-backoffice/heximal-expressions": { + "resolved": "src/external/heximal-expressions", + "link": true + }, "node_modules/@umbraco-backoffice/language": { "resolved": "src/packages/language", "link": true }, + "node_modules/@umbraco-backoffice/lit": { + "resolved": "src/external/lit", + "link": true + }, "node_modules/@umbraco-backoffice/log-viewer": { "resolved": "src/packages/log-viewer", "link": true @@ -4091,6 +3887,10 @@ "resolved": "src/packages/markdown-editor", "link": true }, + "node_modules/@umbraco-backoffice/marked": { + "resolved": "src/external/marked", + "link": true + }, "node_modules/@umbraco-backoffice/media": { "resolved": "src/packages/media", "link": true @@ -4103,10 +3903,18 @@ "resolved": "src/packages/models-builder", "link": true }, + "node_modules/@umbraco-backoffice/monaco-editor": { + "resolved": "src/external/monaco-editor", + "link": true + }, "node_modules/@umbraco-backoffice/multi-url-picker": { "resolved": "src/packages/multi-url-picker", "link": true }, + "node_modules/@umbraco-backoffice/openid": { + "resolved": "src/external/openid", + "link": true + }, "node_modules/@umbraco-backoffice/package": { "resolved": "src/packages/packages", "link": true @@ -4131,6 +3939,10 @@ "resolved": "src/packages/rte", "link": true }, + "node_modules/@umbraco-backoffice/rxjs": { + "resolved": "src/external/rxjs", + "link": true + }, "node_modules/@umbraco-backoffice/search": { "resolved": "src/packages/search", "link": true @@ -4183,6 +3995,10 @@ "resolved": "src/packages/user", "link": true }, + "node_modules/@umbraco-backoffice/uui": { + "resolved": "src/external/uui", + "link": true + }, "node_modules/@umbraco-backoffice/webhook": { "resolved": "src/packages/webhook", "link": true @@ -6286,9 +6102,9 @@ } }, "node_modules/browserslist": { - "version": "4.24.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", - "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", + "version": "4.25.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.1.tgz", + "integrity": "sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==", "dev": true, "funding": [ { @@ -6306,10 +6122,10 @@ ], "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001688", - "electron-to-chromium": "^1.5.73", + "caniuse-lite": "^1.0.30001726", + "electron-to-chromium": "^1.5.173", "node-releases": "^2.0.19", - "update-browserslist-db": "^1.1.1" + "update-browserslist-db": "^1.1.3" }, "bin": { "browserslist": "cli.js" @@ -6480,10 +6296,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, "node_modules/caniuse-lite": { - "version": "1.0.30001700", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001700.tgz", - "integrity": "sha512-2S6XIXwaE7K7erT8dY+kLQcpa5ms63XlRkMkReXjle+kf6c5g38vyMl+Z5y8dSxOFDhcFe+nxnn261PLxBSQsQ==", + "version": "1.0.30001727", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001727.tgz", + "integrity": "sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==", "dev": true, "funding": [ { @@ -6998,6 +6827,19 @@ "node": ">= 8" } }, + "node_modules/css-declaration-sorter": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.2.0.tgz", + "integrity": "sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, "node_modules/css-select": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", @@ -7049,6 +6891,98 @@ "dev": true, "license": "MIT" }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-7.0.7.tgz", + "integrity": "sha512-evKu7yiDIF7oS+EIpwFlMF730ijRyLFaM2o5cTxRGJR9OKHKkc+qP443ZEVR9kZG0syaAJJCPJyfv5pbrxlSng==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssnano-preset-default": "^7.0.7", + "lilconfig": "^3.1.3" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/cssnano" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/cssnano-preset-default": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-7.0.7.tgz", + "integrity": "sha512-jW6CG/7PNB6MufOrlovs1TvBTEVmhY45yz+bd0h6nw3h6d+1e+/TX+0fflZ+LzvZombbT5f+KC063w9VoHeHow==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.24.5", + "css-declaration-sorter": "^7.2.0", + "cssnano-utils": "^5.0.1", + "postcss-calc": "^10.1.1", + "postcss-colormin": "^7.0.3", + "postcss-convert-values": "^7.0.5", + "postcss-discard-comments": "^7.0.4", + "postcss-discard-duplicates": "^7.0.2", + "postcss-discard-empty": "^7.0.1", + "postcss-discard-overridden": "^7.0.1", + "postcss-merge-longhand": "^7.0.5", + "postcss-merge-rules": "^7.0.5", + "postcss-minify-font-values": "^7.0.1", + "postcss-minify-gradients": "^7.0.1", + "postcss-minify-params": "^7.0.3", + "postcss-minify-selectors": "^7.0.5", + "postcss-normalize-charset": "^7.0.1", + "postcss-normalize-display-values": "^7.0.1", + "postcss-normalize-positions": "^7.0.1", + "postcss-normalize-repeat-style": "^7.0.1", + "postcss-normalize-string": "^7.0.1", + "postcss-normalize-timing-functions": "^7.0.1", + "postcss-normalize-unicode": "^7.0.3", + "postcss-normalize-url": "^7.0.1", + "postcss-normalize-whitespace": "^7.0.1", + "postcss-ordered-values": "^7.0.2", + "postcss-reduce-initial": "^7.0.3", + "postcss-reduce-transforms": "^7.0.1", + "postcss-svgo": "^7.0.2", + "postcss-unique-selectors": "^7.0.4" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/cssnano-utils": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-5.0.1.tgz", + "integrity": "sha512-ZIP71eQgG9JwjVZsTPSqhc6GHgEr53uJ7tK5///VfyWj6Xp2DBmixWHqJgPno+PqATzn48pL42ww9x5SSGmhZg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, "node_modules/csso": { "version": "5.0.5", "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", @@ -7710,13 +7644,6 @@ "node": ">= 0.4" } }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true, - "license": "MIT" - }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -7725,9 +7652,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.102", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.102.tgz", - "integrity": "sha512-eHhqaja8tE/FNpIiBrvBjFV/SSKpyWHLvxuR9dPTdo+3V9ppdLmFB7ZZQ98qNovcngPLYIz0oOBF9P0FfZef5Q==", + "version": "1.5.182", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.182.tgz", + "integrity": "sha512-Lv65Btwv9W4J9pyODI6EWpdnhfvrve/us5h1WspW8B2Fb0366REPtY3hX7ounk1CkV/TBjWCEvCBBbYbmV0qCA==", "dev": true, "license": "ISC" }, @@ -8828,23 +8755,6 @@ "is-callable": "^1.1.3" } }, - "node_modules/foreground-child": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", - "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", - "dev": true, - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.6", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", @@ -9123,30 +9033,6 @@ "giget": "dist/cli.mjs" } }, - "node_modules/glob": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.3.tgz", - "integrity": "sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.3.1", - "jackspeak": "^4.1.1", - "minimatch": "^10.0.3", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^2.0.0" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/glob-parent": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", @@ -9160,22 +9046,6 @@ "node": ">=10.13.0" } }, - "node_modules/glob/node_modules/minimatch": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.3.tgz", - "integrity": "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==", - "dev": true, - "license": "ISC", - "dependencies": { - "@isaacs/brace-expansion": "^5.0.0" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/globals": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/globals/-/globals-16.2.0.tgz", @@ -10377,22 +10247,6 @@ "node": ">=8" } }, - "node_modules/jackspeak": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.1.tgz", - "integrity": "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/jiti": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.1.tgz", @@ -10687,6 +10541,19 @@ "dev": true, "license": "MIT" }, + "node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, "node_modules/linkify-it": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", @@ -10763,6 +10630,13 @@ "dev": true, "license": "MIT" }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true, + "license": "MIT" + }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -10770,6 +10644,13 @@ "dev": true, "license": "MIT" }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "dev": true, + "license": "MIT" + }, "node_modules/log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", @@ -11952,16 +11833,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, "node_modules/minizlib": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", @@ -12247,9 +12118,9 @@ "license": "MIT" }, "node_modules/nanoid": { - "version": "3.3.8", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", - "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", "dev": true, "funding": [ { @@ -12907,13 +12778,6 @@ "node": ">= 14" } }, - "node_modules/package-json-from-dist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", - "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", - "dev": true, - "license": "BlueOak-1.0.0" - }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -13025,33 +12889,6 @@ "dev": true, "license": "MIT" }, - "node_modules/path-scurry": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", - "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^11.0.0", - "minipass": "^7.1.2" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/path-scurry/node_modules/lru-cache": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.1.0.tgz", - "integrity": "sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==", - "dev": true, - "license": "ISC", - "engines": { - "node": "20 || >=22" - } - }, "node_modules/path-to-regexp": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", @@ -13120,6 +12957,16 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/pkg-types": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.2.1.tgz", @@ -13192,91 +13039,677 @@ "node": ">=18" } }, - "node_modules/plimit-lit": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/plimit-lit/-/plimit-lit-1.6.1.tgz", - "integrity": "sha512-B7+VDyb8Tl6oMJT9oSO2CW8XC/T4UcJGrwOVoNGwOQsQYhlpfajmrMj5xeejqaASq3V/EqThyOeATEOMuSEXiA==", + "node_modules/plimit-lit": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/plimit-lit/-/plimit-lit-1.6.1.tgz", + "integrity": "sha512-B7+VDyb8Tl6oMJT9oSO2CW8XC/T4UcJGrwOVoNGwOQsQYhlpfajmrMj5xeejqaASq3V/EqThyOeATEOMuSEXiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "queue-lit": "^1.5.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/portfinder": { + "version": "1.0.32", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", + "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "async": "^2.6.4", + "debug": "^3.2.7", + "mkdirp": "^0.5.6" + }, + "engines": { + "node": ">= 0.12.0" + } + }, + "node_modules/portfinder/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/portfinder/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-calc": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-10.1.1.tgz", + "integrity": "sha512-NYEsLHh8DgG/PRH2+G9BTuUdtf9ViS+vdoQ0YA5OQdGsfN4ztiwtDWNtBl9EKeqNMFnIu8IKZ0cLxEQ5r5KVMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^7.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12 || ^20.9 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.38" + } + }, + "node_modules/postcss-cli": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/postcss-cli/-/postcss-cli-11.0.1.tgz", + "integrity": "sha512-0UnkNPSayHKRe/tc2YGW6XnSqqOA9eqpiRMgRlV1S6HdGi16vwJBx7lviARzbV1HpQHqLLRH3o8vTcB0cLc+5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": "^3.3.0", + "dependency-graph": "^1.0.0", + "fs-extra": "^11.0.0", + "picocolors": "^1.0.0", + "postcss-load-config": "^5.0.0", + "postcss-reporter": "^7.0.0", + "pretty-hrtime": "^1.0.3", + "read-cache": "^1.0.0", + "slash": "^5.0.0", + "tinyglobby": "^0.2.12", + "yargs": "^17.0.0" + }, + "bin": { + "postcss": "index.js" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-cli/node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/postcss-cli/node_modules/dependency-graph": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-1.0.0.tgz", + "integrity": "sha512-cW3gggJ28HZ/LExwxP2B++aiKxhJXMSIt9K48FOXQkm+vuG5gyatXnLsONRJdzO/7VfjDIiaOOa/bs4l464Lwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-cli/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/postcss-cli/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss-cli/node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/postcss-cli/node_modules/slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/postcss-colormin": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-7.0.3.tgz", + "integrity": "sha512-xZxQcSyIVZbSsl1vjoqZAcMYYdnJsIyG8OvqShuuqf12S88qQboxxEy0ohNCOLwVPXTU+hFHvJPACRL2B5ohTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.24.5", + "caniuse-api": "^3.0.0", + "colord": "^2.9.3", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/postcss-convert-values": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-7.0.5.tgz", + "integrity": "sha512-0VFhH8nElpIs3uXKnVtotDJJNX0OGYSZmdt4XfSfvOMrFw1jKfpwpZxfC4iN73CTM/MWakDEmsHQXkISYj4BXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.24.5", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/postcss-discard-comments": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-7.0.4.tgz", + "integrity": "sha512-6tCUoql/ipWwKtVP/xYiFf1U9QgJ0PUvxN7pTcsQ8Ns3Fnwq1pU5D5s1MhT/XySeLq6GXNvn37U46Ded0TckWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^7.1.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-7.0.2.tgz", + "integrity": "sha512-eTonaQvPZ/3i1ASDHOKkYwAybiM45zFIc7KXils4mQmHLqIswXD9XNOKEVxtTFnsmwYzF66u4LMgSr0abDlh5w==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/postcss-discard-empty": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-7.0.1.tgz", + "integrity": "sha512-cFrJKZvcg/uxB6Ijr4l6qmn3pXQBna9zyrPC+sK0zjbkDUZew+6xDltSF7OeB7rAtzaaMVYSdbod+sZOCWnMOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-7.0.1.tgz", + "integrity": "sha512-7c3MMjjSZ/qYrx3uc1940GSOzN1Iqjtlqe8uoSg+qdVPYyRb0TILSqqmtlSFuE4mTDECwsm397Ya7iXGzfF7lg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/postcss-load-config": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-5.1.0.tgz", + "integrity": "sha512-G5AJ+IX0aD0dygOE0yFZQ/huFFMSNneyfp0e3/bT05a8OfPC5FUoZRPfGijUdGOJNMewJiwzcHJXFafFzeKFVA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "lilconfig": "^3.1.1", + "yaml": "^2.4.2" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "jiti": ">=1.21.0", + "postcss": ">=8.0.9", + "tsx": "^4.8.1" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + }, + "postcss": { + "optional": true + }, + "tsx": { + "optional": true + } + } + }, + "node_modules/postcss-merge-longhand": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-7.0.5.tgz", + "integrity": "sha512-Kpu5v4Ys6QI59FxmxtNB/iHUVDn9Y9sYw66D6+SZoIk4QTz1prC4aYkhIESu+ieG1iylod1f8MILMs1Em3mmIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^7.0.5" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/postcss-merge-rules": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-7.0.5.tgz", + "integrity": "sha512-ZonhuSwEaWA3+xYbOdJoEReKIBs5eDiBVLAGpYZpNFPzXZcEE5VKR7/qBEQvTZpiwjqhhqEQ+ax5O3VShBj9Wg==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.24.5", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^5.0.1", + "postcss-selector-parser": "^7.1.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-7.0.1.tgz", + "integrity": "sha512-2m1uiuJeTplll+tq4ENOQSzB8LRnSUChBv7oSyFLsJRtUgAAJGP6LLz0/8lkinTgxrmJSPOEhgY1bMXOQ4ZXhQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/postcss-minify-gradients": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-7.0.1.tgz", + "integrity": "sha512-X9JjaysZJwlqNkJbUDgOclyG3jZEpAMOfof6PUZjPnPrePnPG62pS17CjdM32uT1Uq1jFvNSff9l7kNbmMSL2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "colord": "^2.9.3", + "cssnano-utils": "^5.0.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/postcss-minify-params": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-7.0.3.tgz", + "integrity": "sha512-vUKV2+f5mtjewYieanLX0xemxIp1t0W0H/D11u+kQV/MWdygOO7xPMkbK+r9P6Lhms8MgzKARF/g5OPXhb8tgg==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.24.5", + "cssnano-utils": "^5.0.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-7.0.5.tgz", + "integrity": "sha512-x2/IvofHcdIrAm9Q+p06ZD1h6FPcQ32WtCRVodJLDR+WMn8EVHI1kvLxZuGKz/9EY5nAmI6lIQIrpo4tBy5+ug==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "postcss-selector-parser": "^7.1.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-7.0.1.tgz", + "integrity": "sha512-sn413ofhSQHlZFae//m9FTOfkmiZ+YQXsbosqOWRiVQncU2BA3daX3n0VF3cG6rGLSFVc5Di/yns0dFfh8NFgQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-7.0.1.tgz", + "integrity": "sha512-E5nnB26XjSYz/mGITm6JgiDpAbVuAkzXwLzRZtts19jHDUBFxZ0BkXAehy0uimrOjYJbocby4FVswA/5noOxrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/postcss-normalize-positions": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-7.0.1.tgz", + "integrity": "sha512-pB/SzrIP2l50ZIYu+yQZyMNmnAcwyYb9R1fVWPRxm4zcUFCY2ign7rcntGFuMXDdd9L2pPNUgoODDk91PzRZuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-7.0.1.tgz", + "integrity": "sha512-NsSQJ8zj8TIDiF0ig44Byo3Jk9e4gNt9x2VIlJudnQQ5DhWAHJPF4Tr1ITwyHio2BUi/I6Iv0HRO7beHYOloYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/postcss-normalize-string": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-7.0.1.tgz", + "integrity": "sha512-QByrI7hAhsoze992kpbMlJSbZ8FuCEc1OT9EFbZ6HldXNpsdpZr+YXC5di3UEv0+jeZlHbZcoCADgb7a+lPmmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-7.0.1.tgz", + "integrity": "sha512-bHifyuuSNdKKsnNJ0s8fmfLMlvsQwYVxIoUBnowIVl2ZAdrkYQNGVB4RxjfpvkMjipqvbz0u7feBZybkl/6NJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/postcss-normalize-unicode": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-7.0.3.tgz", + "integrity": "sha512-EcoA29LvG3F+EpOh03iqu+tJY3uYYKzArqKJHxDhUYLa2u58aqGq16K6/AOsXD9yqLN8O6y9mmePKN5cx6krOw==", "dev": true, "license": "MIT", "dependencies": { - "queue-lit": "^1.5.1" + "browserslist": "^4.24.5", + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">=12" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" } }, - "node_modules/pluralize": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", - "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "node_modules/postcss-normalize-url": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-7.0.1.tgz", + "integrity": "sha512-sUcD2cWtyK1AOL/82Fwy1aIVm/wwj5SdZkgZ3QiUzSzQQofrbq15jWJ3BA7Z+yVRwamCjJgZJN0I9IS7c6tgeQ==", "dev": true, "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, "engines": { - "node": ">=4" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" } }, - "node_modules/portfinder": { - "version": "1.0.32", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", - "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", + "node_modules/postcss-normalize-whitespace": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-7.0.1.tgz", + "integrity": "sha512-vsbgFHMFQrJBJKrUFJNZ2pgBeBkC2IvvoHjz1to0/0Xk7sII24T0qFOiJzG6Fu3zJoq/0yI4rKWi7WhApW+EFA==", "dev": true, "license": "MIT", "dependencies": { - "async": "^2.6.4", - "debug": "^3.2.7", - "mkdirp": "^0.5.6" + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">= 0.12.0" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" } }, - "node_modules/portfinder/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/postcss-ordered-values": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-7.0.2.tgz", + "integrity": "sha512-AMJjt1ECBffF7CEON/Y0rekRLS6KsePU6PRP08UqYW4UGFRnTXNrByUzYK1h8AC7UWTZdQ9O3Oq9kFIhm0SFEw==", "dev": true, "license": "MIT", "dependencies": { - "ms": "^2.1.1" + "cssnano-utils": "^5.0.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" } }, - "node_modules/portfinder/node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "node_modules/postcss-reduce-initial": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-7.0.3.tgz", + "integrity": "sha512-RFvkZaqiWtGMlVjlUHpaxGqEL27lgt+Q2Ixjf83CRAzqdo+TsDyGPtJUbPx2MuYIJ+sCQc2TrOvRnhcXQfgIVA==", "dev": true, "license": "MIT", "dependencies": { - "minimist": "^1.2.6" + "browserslist": "^4.24.5", + "caniuse-api": "^3.0.0" }, - "bin": { - "mkdirp": "bin/cmd.js" + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" } }, - "node_modules/possible-typed-array-names": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", - "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "node_modules/postcss-reduce-transforms": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-7.0.1.tgz", + "integrity": "sha512-MhyEbfrm+Mlp/36hvZ9mT9DaO7dbncU0CvWI8V93LRkY6IYlu38OPg3FObnuKTUxJ4qA8HpurdQOo5CyqqO76g==", "dev": true, "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, "engines": { - "node": ">= 0.4" + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" } }, - "node_modules/postcss": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", - "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", + "node_modules/postcss-reporter": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-7.1.0.tgz", + "integrity": "sha512-/eoEylGWyy6/DOiMP5lmFRdmDKThqgn7D6hP2dXKJI/0rJSO1ADFNngZfDzxL0YAxFvws+Rtpuji1YIHj4mySA==", "dev": true, "funding": [ { "type": "opencollective", "url": "https://opencollective.com/postcss/" }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, { "type": "github", "url": "https://github.com/sponsors/ai" @@ -13284,14 +13717,70 @@ ], "license": "MIT", "dependencies": { - "nanoid": "^3.3.8", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" + "picocolors": "^1.0.0", + "thenby": "^1.3.4" }, "engines": { - "node": "^10 || ^12 || >=14" + "node": ">=10" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-selector-parser": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", + "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-svgo": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-7.0.2.tgz", + "integrity": "sha512-5Dzy66JlnRM6pkdOTF8+cGsB1fnERTE8Nc+Eed++fOWo1hdsBptCsbG8UuJkgtZt75bRtMJIrPeZmtfANixdFA==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "svgo": "^3.3.2" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >= 18" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, + "node_modules/postcss-unique-selectors": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-7.0.4.tgz", + "integrity": "sha512-pmlZjsmEAG7cHd7uK3ZiNSW6otSZ13RHuZ/4cDN/bVglS5EpF2r2oxY99SuOHa8m7AWoBCelTS3JPpzsIs8skQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^7.1.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" } }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true, + "license": "MIT" + }, "node_modules/postcss-values-parser": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-6.0.2.tgz", @@ -13379,6 +13868,16 @@ "node": ">=6.0.0" } }, + "node_modules/pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/pretty-ms": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-7.0.1.tgz", @@ -13864,6 +14363,16 @@ "react": "^19.1.0" } }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^2.3.0" + } + }, "node_modules/readable-stream": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", @@ -14252,42 +14761,6 @@ "fsevents": "~2.3.2" } }, - "node_modules/rollup-plugin-esbuild": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/rollup-plugin-esbuild/-/rollup-plugin-esbuild-6.2.1.tgz", - "integrity": "sha512-jTNOMGoMRhs0JuueJrJqbW8tOwxumaWYq+V5i+PD+8ecSCVkuX27tGW7BXqDgoULQ55rO7IdNxPcnsWtshz3AA==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.4.0", - "es-module-lexer": "^1.6.0", - "get-tsconfig": "^4.10.0", - "unplugin-utils": "^0.2.4" - }, - "engines": { - "node": ">=14.18.0" - }, - "peerDependencies": { - "esbuild": ">=0.18.0", - "rollup": "^1.20.0 || ^2.0.0 || ^3.0.0 || ^4.0.0" - } - }, - "node_modules/rollup-plugin-import-css": { - "version": "3.5.8", - "resolved": "https://registry.npmjs.org/rollup-plugin-import-css/-/rollup-plugin-import-css-3.5.8.tgz", - "integrity": "sha512-a3YsZnwHz66mRHCKHjaPCSfWczczvS/HTkgDc+Eogn0mt/0JZXz0WjK0fzM5WwBpVtOqHB4/gHdmEY40ILsaVg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@rollup/pluginutils": "^5.1.3" - }, - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "rollup": "^2.x.x || ^3.x.x || ^4.x.x" - } - }, "node_modules/rope-sequence": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/rope-sequence/-/rope-sequence-1.3.4.tgz", @@ -14819,22 +15292,6 @@ "node": ">=8" } }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/string.prototype.trim": { "version": "1.2.9", "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", @@ -14915,20 +15372,6 @@ "node": ">=8" } }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", @@ -14975,6 +15418,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/stylehacks": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-7.0.5.tgz", + "integrity": "sha512-5kNb7V37BNf0Q3w+1pxfa+oiNPS++/b4Jil9e/kPDgrk1zjEd6uR7SZeJiYaLYH6RRSC1XX2/37OTeU/4FvuIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.24.5", + "postcss-selector-parser": "^7.1.0" + }, + "engines": { + "node": "^18.12.0 || ^20.9.0 || >=22.0" + }, + "peerDependencies": { + "postcss": "^8.4.32" + } + }, "node_modules/stylus-lookup": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/stylus-lookup/-/stylus-lookup-6.0.0.tgz", @@ -15176,6 +15636,13 @@ "b4a": "^1.6.4" } }, + "node_modules/thenby": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/thenby/-/thenby-1.3.4.tgz", + "integrity": "sha512-89Gi5raiWA3QZ4b2ePcEwswC3me9JIg+ToSgtE0JWeCynLnLxNr/f9G+xfo9K+Oj4AFdom8YNJjibIARTJmapQ==", + "dev": true, + "license": "Apache-2.0" + }, "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -16035,34 +16502,10 @@ "node": ">=14.0.0" } }, - "node_modules/unplugin-utils": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/unplugin-utils/-/unplugin-utils-0.2.4.tgz", - "integrity": "sha512-8U/MtpkPkkk3Atewj1+RcKIjb5WBimZ/WSLhhR3w6SsIj8XJuKTacSP8g+2JhfSGw0Cb125Y+2zA/IzJZDVbhA==", - "dev": true, - "license": "MIT", - "dependencies": { - "pathe": "^2.0.2", - "picomatch": "^4.0.2" - }, - "engines": { - "node": ">=18.12.0" - }, - "funding": { - "url": "https://github.com/sponsors/sxzz" - } - }, - "node_modules/unplugin-utils/node_modules/pathe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", - "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", - "dev": true, - "license": "MIT" - }, "node_modules/update-browserslist-db": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz", - "integrity": "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", "dev": true, "funding": [ { @@ -16636,25 +17079,6 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -16808,6 +17232,75 @@ "url": "https://github.com/sponsors/wooorm" } }, + "src/external": { + "name": "@umbraco-backoffice/external" + }, + "src/external/dompurify": { + "name": "@umbraco-backoffice/dompurify", + "dependencies": { + "dompurify": "^3.2.5" + } + }, + "src/external/heximal-expressions": { + "name": "@umbraco-backoffice/heximal-expressions", + "dependencies": { + "@heximal/expressions": "^0.1.5" + } + }, + "src/external/lit": { + "name": "@umbraco-backoffice/lit", + "dependencies": { + "lit": "^3.3.0" + } + }, + "src/external/marked": { + "name": "@umbraco-backoffice/marked", + "dependencies": { + "marked": "^15.0.9" + } + }, + "src/external/monaco-editor": { + "name": "@umbraco-backoffice/monaco-editor", + "dependencies": { + "monaco-editor": "^0.52.2" + } + }, + "src/external/openid": { + "name": "@umbraco-backoffice/openid" + }, + "src/external/rxjs": { + "name": "@umbraco-backoffice/rxjs", + "dependencies": { + "rxjs": "^7.8.2" + } + }, + "src/external/tiptap": { + "name": "@umbraco-backoffice/external-tiptap", + "dependencies": { + "@tiptap/core": "2.11.7", + "@tiptap/extension-character-count": "2.11.7", + "@tiptap/extension-image": "2.11.7", + "@tiptap/extension-link": "2.11.7", + "@tiptap/extension-placeholder": "2.11.7", + "@tiptap/extension-subscript": "2.11.7", + "@tiptap/extension-superscript": "2.11.7", + "@tiptap/extension-table": "2.11.7", + "@tiptap/extension-table-cell": "2.11.7", + "@tiptap/extension-table-header": "2.11.7", + "@tiptap/extension-table-row": "2.11.7", + "@tiptap/extension-text-align": "2.11.7", + "@tiptap/extension-underline": "2.11.7", + "@tiptap/pm": "2.11.7", + "@tiptap/starter-kit": "2.11.7" + } + }, + "src/external/uui": { + "name": "@umbraco-backoffice/uui", + "dependencies": { + "@umbraco-ui/uui": "^1.14.2", + "@umbraco-ui/uui-css": "^1.14.1" + } + }, "src/packages/block": { "name": "@umbraco-backoffice/block" }, diff --git a/src/Umbraco.Web.UI.Client/package.json b/src/Umbraco.Web.UI.Client/package.json index 559a9565a18e..e52c53f05864 100644 --- a/src/Umbraco.Web.UI.Client/package.json +++ b/src/Umbraco.Web.UI.Client/package.json @@ -147,7 +147,8 @@ "url": "https://umbraco.com" }, "workspaces": [ - "./src/packages/*" + "./src/packages/*", + "./src/external/*" ], "scripts": { "backoffice:test:e2e": "npx playwright test", @@ -158,7 +159,7 @@ "build:vite": "tsc && vite build --mode staging", "build:workspaces": "npm run build -ws --if-present", "build": "tsc --project ./src/tsconfig.build.json", - "postbuild": "rollup -c ./src/rollup.config.js && node ./devops/build/global-types.js", + "postbuild": "node ./devops/build/global-types.js", "check": "npm run lint:errors && npm run compile && npm run build-storybook && npm run generate:jsonschema:dist", "check:paths": "node ./devops/build/check-path-length.js dist-cms 120", "check:circular": "node ./devops/circular/index.js src", @@ -202,39 +203,13 @@ "npm": ">=10.9" }, "dependencies": { - "@heximal/expressions": "^0.1.5", - "@tiptap/core": "2.11.7", - "@tiptap/extension-character-count": "2.11.7", - "@tiptap/extension-image": "2.11.7", - "@tiptap/extension-link": "2.11.7", - "@tiptap/extension-placeholder": "2.11.7", - "@tiptap/extension-subscript": "2.11.7", - "@tiptap/extension-superscript": "2.11.7", - "@tiptap/extension-table": "2.11.7", - "@tiptap/extension-table-cell": "2.11.7", - "@tiptap/extension-table-header": "2.11.7", - "@tiptap/extension-table-row": "2.11.7", - "@tiptap/extension-text-align": "2.11.7", - "@tiptap/extension-underline": "2.11.7", - "@tiptap/pm": "2.11.7", - "@tiptap/starter-kit": "2.11.7", - "@umbraco-ui/uui": "1.14.2", - "@umbraco-ui/uui-css": "1.14.1", - "dompurify": "^3.2.5", - "element-internals-polyfill": "^3.0.2", - "lit": "^3.3.0", - "marked": "^15.0.9", - "monaco-editor": "^0.52.2", - "rxjs": "^7.8.2" + "element-internals-polyfill": "^3.0.2" }, "devDependencies": { "@babel/core": "^7.26.10", "@eslint/js": "^9.25.1", "@open-wc/testing": "^4.0.0", "@playwright/test": "^1.52.0", - "@rollup/plugin-json": "^6.1.0", - "@rollup/plugin-node-resolve": "^16.0.1", - "@rollup/plugin-replace": "^6.0.2", "@storybook/addon-a11y": "^9.0.14", "@storybook/addon-docs": "^9.0.14", "@storybook/addon-links": "^9.0.14", @@ -248,6 +223,7 @@ "@web/test-runner-playwright": "^0.11.0", "babel-loader": "^10.0.0", "cross-env": "7.0.3", + "cssnano": "^7.0.7", "eslint": "^9.25.1", "eslint-config-prettier": "^10.1.2", "eslint-plugin-import": "^2.31.0", @@ -257,17 +233,15 @@ "eslint-plugin-prettier": "^5.2.6", "eslint-plugin-storybook": "9.0.14", "eslint-plugin-wc": "^2.2.0", - "glob": "^11.0.1", "globals": "^16.0.0", "lucide-static": "^0.503.0", "madge": "^8.0.0", "msw": "^1.3.2", "playwright-msw": "^3.0.1", + "postcss": "^8.5.6", + "postcss-cli": "^11.0.1", "prettier": "3.5.3", "remark-gfm": "^4.0.1", - "rollup": "^4.40.0", - "rollup-plugin-esbuild": "^6.2.1", - "rollup-plugin-import-css": "^3.5.8", "simple-icons": "^14.12.3", "storybook": "^9.0.14", "svgo": "^3.3.2", diff --git a/src/Umbraco.Web.UI.Client/src/external/dompurify/package.json b/src/Umbraco.Web.UI.Client/src/external/dompurify/package.json new file mode 100644 index 000000000000..39f9fb9bcb71 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/dompurify/package.json @@ -0,0 +1,11 @@ +{ + "name": "@umbraco-backoffice/dompurify", + "private": true, + "type": "module", + "scripts": { + "build": "vite build" + }, + "dependencies": { + "dompurify": "^3.2.5" + } +} diff --git a/src/Umbraco.Web.UI.Client/src/external/dompurify/vite.config.ts b/src/Umbraco.Web.UI.Client/src/external/dompurify/vite.config.ts new file mode 100644 index 000000000000..bffc0e24d165 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/dompurify/vite.config.ts @@ -0,0 +1,18 @@ +import { defineConfig } from 'vite'; +import { rmSync } from 'fs'; +import { getDefaultConfig } from '../../vite-config-base'; + +const dist = '../../../dist-cms/external/dompurify'; + +// delete the unbundled dist folder +rmSync(dist, { recursive: true, force: true }); + +export default defineConfig({ + ...getDefaultConfig({ + dist, + base: '/umbraco/backoffice/external/dompurify', + entry: { + index: './index.ts', + }, + }), +}); diff --git a/src/Umbraco.Web.UI.Client/src/external/heximal-expressions/package.json b/src/Umbraco.Web.UI.Client/src/external/heximal-expressions/package.json new file mode 100644 index 000000000000..628e406a2e32 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/heximal-expressions/package.json @@ -0,0 +1,11 @@ +{ + "name": "@umbraco-backoffice/heximal-expressions", + "private": true, + "type": "module", + "scripts": { + "build": "vite build" + }, + "dependencies": { + "@heximal/expressions": "^0.1.5" + } +} diff --git a/src/Umbraco.Web.UI.Client/src/external/heximal-expressions/vite.config.ts b/src/Umbraco.Web.UI.Client/src/external/heximal-expressions/vite.config.ts new file mode 100644 index 000000000000..3d1295c9d2df --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/heximal-expressions/vite.config.ts @@ -0,0 +1,18 @@ +import { defineConfig } from 'vite'; +import { rmSync } from 'fs'; +import { getDefaultConfig } from '../../vite-config-base'; + +const dist = '../../../dist-cms/external/heximal-expressions'; + +// delete the unbundled dist folder +rmSync(dist, { recursive: true, force: true }); + +export default defineConfig({ + ...getDefaultConfig({ + dist, + base: '/umbraco/backoffice/external/heximal-expressions', + entry: { + index: './index.ts', + }, + }), +}); diff --git a/src/Umbraco.Web.UI.Client/src/external/lit/package.json b/src/Umbraco.Web.UI.Client/src/external/lit/package.json new file mode 100644 index 000000000000..ef78e45ffcd6 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/lit/package.json @@ -0,0 +1,11 @@ +{ + "name": "@umbraco-backoffice/lit", + "private": true, + "type": "module", + "scripts": { + "build": "vite build" + }, + "dependencies": { + "lit": "^3.3.0" + } +} diff --git a/src/Umbraco.Web.UI.Client/src/external/lit/vite.config.ts b/src/Umbraco.Web.UI.Client/src/external/lit/vite.config.ts new file mode 100644 index 000000000000..ee1b5f7a4b3e --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/lit/vite.config.ts @@ -0,0 +1,18 @@ +import { defineConfig } from 'vite'; +import { rmSync } from 'fs'; +import { getDefaultConfig } from '../../vite-config-base'; + +const dist = '../../../dist-cms/external/lit'; + +// delete the unbundled dist folder +rmSync(dist, { recursive: true, force: true }); + +export default defineConfig({ + ...getDefaultConfig({ + dist, + base: '/umbraco/backoffice/external/lit', + entry: { + index: './index.ts', + }, + }), +}); diff --git a/src/Umbraco.Web.UI.Client/src/external/marked/package.json b/src/Umbraco.Web.UI.Client/src/external/marked/package.json new file mode 100644 index 000000000000..4f78fa897c09 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/marked/package.json @@ -0,0 +1,11 @@ +{ + "name": "@umbraco-backoffice/marked", + "private": true, + "type": "module", + "scripts": { + "build": "vite build" + }, + "dependencies": { + "marked": "^15.0.9" + } +} diff --git a/src/Umbraco.Web.UI.Client/src/external/marked/vite.config.ts b/src/Umbraco.Web.UI.Client/src/external/marked/vite.config.ts new file mode 100644 index 000000000000..f37c8e6f36bd --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/marked/vite.config.ts @@ -0,0 +1,18 @@ +import { defineConfig } from 'vite'; +import { rmSync } from 'fs'; +import { getDefaultConfig } from '../../vite-config-base'; + +const dist = '../../../dist-cms/external/marked'; + +// delete the unbundled dist folder +rmSync(dist, { recursive: true, force: true }); + +export default defineConfig({ + ...getDefaultConfig({ + dist, + base: '/umbraco/backoffice/external/marked', + entry: { + index: './index.ts', + }, + }), +}); diff --git a/src/Umbraco.Web.UI.Client/src/external/monaco-editor/index.ts b/src/Umbraco.Web.UI.Client/src/external/monaco-editor/index.ts index c4dbacf95f1b..6cf3ee5599a0 100644 --- a/src/Umbraco.Web.UI.Client/src/external/monaco-editor/index.ts +++ b/src/Umbraco.Web.UI.Client/src/external/monaco-editor/index.ts @@ -1,30 +1,30 @@ /* eslint-disable */ // @ts-ignore import styles from 'monaco-editor/min/vs/editor/editor.main.css?inline'; +import editorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker'; +import jsonWorker from 'monaco-editor/esm/vs/language/json/json.worker?worker'; +import cssWorker from 'monaco-editor/esm/vs/language/css/css.worker?worker'; +import htmlWorker from 'monaco-editor/esm/vs/language/html/html.worker?worker'; +import tsWorker from 'monaco-editor/esm/vs/language/typescript/ts.worker?worker'; /* eslint-enable */ -const initializeWorkers = () => { - self.MonacoEnvironment = { - getWorker(workerId: string, label: string): Promise | Worker { - let url = '/umbraco/backoffice/monaco-editor/vs/editor/editor.worker.js'; - if (label === 'json') { - url = '/umbraco/backoffice/monaco-editor/vs/language/json/json.worker.js'; - } - if (label === 'css' || label === 'scss' || label === 'less') { - url = '/umbraco/backoffice/monaco-editor/vs/language/css/css.worker.js'; - } - if (label === 'html' || label === 'handlebars' || label === 'razor') { - url = '/umbraco/backoffice/monaco-editor/vs/language/html/html.worker.js'; - } - if (label === 'typescript' || label === 'javascript') { - url = '/umbraco/backoffice/monaco-editor/vs/language/typescript/ts.worker.js'; - } - return new Worker(url, { name: workerId, type: 'module' }); - }, - }; +self.MonacoEnvironment = { + getWorker(_, label) { + if (label === 'json') { + return new jsonWorker(); + } + if (label === 'css' || label === 'scss' || label === 'less') { + return new cssWorker(); + } + if (label === 'html' || label === 'handlebars' || label === 'razor') { + return new htmlWorker(); + } + if (label === 'typescript' || label === 'javascript') { + return new tsWorker(); + } + return new editorWorker(); + }, }; -initializeWorkers(); - export * as monaco from 'monaco-editor'; export { styles }; diff --git a/src/Umbraco.Web.UI.Client/src/external/monaco-editor/package.json b/src/Umbraco.Web.UI.Client/src/external/monaco-editor/package.json new file mode 100644 index 000000000000..d21a782eeac7 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/monaco-editor/package.json @@ -0,0 +1,11 @@ +{ + "name": "@umbraco-backoffice/monaco-editor", + "private": true, + "type": "module", + "scripts": { + "build": "vite build" + }, + "dependencies": { + "monaco-editor": "^0.52.2" + } +} diff --git a/src/Umbraco.Web.UI.Client/src/external/monaco-editor/vite.config.ts b/src/Umbraco.Web.UI.Client/src/external/monaco-editor/vite.config.ts new file mode 100644 index 000000000000..75e9c0c0fa6a --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/monaco-editor/vite.config.ts @@ -0,0 +1,24 @@ +import { defineConfig } from 'vite'; +import { cpSync, rmSync } from 'fs'; +import { getDefaultConfig } from '../../vite-config-base'; + +const dist = '../../../dist-cms/external/monaco-editor'; +const distAssets = '../../../dist-cms'; + +// delete the unbundled dist folder +rmSync(dist, { recursive: true, force: true }); + +// copy fonts +cpSync('../../../node_modules/monaco-editor/min/vs/base/browser/ui/codicons', `${distAssets}/assets/fonts`, { + recursive: true, +}); + +export default defineConfig({ + ...getDefaultConfig({ + dist, + base: '/umbraco/backoffice/external/monaco-editor', + entry: { + index: './index.ts', + }, + }), +}); diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/index.ts b/src/Umbraco.Web.UI.Client/src/external/openid/index.ts index 108f5e51348c..4df73b330ffd 100644 --- a/src/Umbraco.Web.UI.Client/src/external/openid/index.ts +++ b/src/Umbraco.Web.UI.Client/src/external/openid/index.ts @@ -1,17 +1 @@ -export * from './authorization_request.js'; -export * from './authorization_request_handler.js'; -export * from './authorization_response.js'; -export * from './authorization_service_configuration.js'; -export * from './crypto_utils.js'; -export * from './errors.js'; -export * from './flags.js'; -export * from './logger.js'; -export * from './query_string_utils.js'; -export * from './redirect_based_handler.js'; -export * from './revoke_token_request.js'; -export * from './storage.js'; -export * from './token_request.js'; -export * from './token_request_handler.js'; -export * from './token_response.js'; -export type * from './types.js'; -export * from './xhr.js'; +export * from './src/index.js'; diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/package.json b/src/Umbraco.Web.UI.Client/src/external/openid/package.json new file mode 100644 index 000000000000..c3e3f8c6800d --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/openid/package.json @@ -0,0 +1,8 @@ +{ + "name": "@umbraco-backoffice/openid", + "private": true, + "type": "module", + "scripts": { + "build": "vite build" + } +} diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/LICENSE b/src/Umbraco.Web.UI.Client/src/external/openid/src/LICENSE similarity index 100% rename from src/Umbraco.Web.UI.Client/src/external/openid/LICENSE rename to src/Umbraco.Web.UI.Client/src/external/openid/src/LICENSE diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/authorization_request.ts b/src/Umbraco.Web.UI.Client/src/external/openid/src/authorization_request.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/external/openid/authorization_request.ts rename to src/Umbraco.Web.UI.Client/src/external/openid/src/authorization_request.ts diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/authorization_request_handler.ts b/src/Umbraco.Web.UI.Client/src/external/openid/src/authorization_request_handler.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/external/openid/authorization_request_handler.ts rename to src/Umbraco.Web.UI.Client/src/external/openid/src/authorization_request_handler.ts diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/authorization_response.ts b/src/Umbraco.Web.UI.Client/src/external/openid/src/authorization_response.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/external/openid/authorization_response.ts rename to src/Umbraco.Web.UI.Client/src/external/openid/src/authorization_response.ts diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/authorization_service_configuration.ts b/src/Umbraco.Web.UI.Client/src/external/openid/src/authorization_service_configuration.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/external/openid/authorization_service_configuration.ts rename to src/Umbraco.Web.UI.Client/src/external/openid/src/authorization_service_configuration.ts diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/base64-js/index.ts b/src/Umbraco.Web.UI.Client/src/external/openid/src/base64-js/index.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/external/openid/base64-js/index.ts rename to src/Umbraco.Web.UI.Client/src/external/openid/src/base64-js/index.ts diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/crypto_utils.ts b/src/Umbraco.Web.UI.Client/src/external/openid/src/crypto_utils.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/external/openid/crypto_utils.ts rename to src/Umbraco.Web.UI.Client/src/external/openid/src/crypto_utils.ts diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/errors.ts b/src/Umbraco.Web.UI.Client/src/external/openid/src/errors.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/external/openid/errors.ts rename to src/Umbraco.Web.UI.Client/src/external/openid/src/errors.ts diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/flags.ts b/src/Umbraco.Web.UI.Client/src/external/openid/src/flags.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/external/openid/flags.ts rename to src/Umbraco.Web.UI.Client/src/external/openid/src/flags.ts diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/src/index.ts b/src/Umbraco.Web.UI.Client/src/external/openid/src/index.ts new file mode 100644 index 000000000000..108f5e51348c --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/openid/src/index.ts @@ -0,0 +1,17 @@ +export * from './authorization_request.js'; +export * from './authorization_request_handler.js'; +export * from './authorization_response.js'; +export * from './authorization_service_configuration.js'; +export * from './crypto_utils.js'; +export * from './errors.js'; +export * from './flags.js'; +export * from './logger.js'; +export * from './query_string_utils.js'; +export * from './redirect_based_handler.js'; +export * from './revoke_token_request.js'; +export * from './storage.js'; +export * from './token_request.js'; +export * from './token_request_handler.js'; +export * from './token_response.js'; +export type * from './types.js'; +export * from './xhr.js'; diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/logger.ts b/src/Umbraco.Web.UI.Client/src/external/openid/src/logger.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/external/openid/logger.ts rename to src/Umbraco.Web.UI.Client/src/external/openid/src/logger.ts diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/query_string_utils.ts b/src/Umbraco.Web.UI.Client/src/external/openid/src/query_string_utils.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/external/openid/query_string_utils.ts rename to src/Umbraco.Web.UI.Client/src/external/openid/src/query_string_utils.ts diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/redirect_based_handler.ts b/src/Umbraco.Web.UI.Client/src/external/openid/src/redirect_based_handler.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/external/openid/redirect_based_handler.ts rename to src/Umbraco.Web.UI.Client/src/external/openid/src/redirect_based_handler.ts diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/revoke_token_request.ts b/src/Umbraco.Web.UI.Client/src/external/openid/src/revoke_token_request.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/external/openid/revoke_token_request.ts rename to src/Umbraco.Web.UI.Client/src/external/openid/src/revoke_token_request.ts diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/storage.ts b/src/Umbraco.Web.UI.Client/src/external/openid/src/storage.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/external/openid/storage.ts rename to src/Umbraco.Web.UI.Client/src/external/openid/src/storage.ts diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/token_request.ts b/src/Umbraco.Web.UI.Client/src/external/openid/src/token_request.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/external/openid/token_request.ts rename to src/Umbraco.Web.UI.Client/src/external/openid/src/token_request.ts diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/token_request_handler.ts b/src/Umbraco.Web.UI.Client/src/external/openid/src/token_request_handler.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/external/openid/token_request_handler.ts rename to src/Umbraco.Web.UI.Client/src/external/openid/src/token_request_handler.ts diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/token_response.ts b/src/Umbraco.Web.UI.Client/src/external/openid/src/token_response.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/external/openid/token_response.ts rename to src/Umbraco.Web.UI.Client/src/external/openid/src/token_response.ts diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/types.ts b/src/Umbraco.Web.UI.Client/src/external/openid/src/types.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/external/openid/types.ts rename to src/Umbraco.Web.UI.Client/src/external/openid/src/types.ts diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/xhr.ts b/src/Umbraco.Web.UI.Client/src/external/openid/src/xhr.ts similarity index 100% rename from src/Umbraco.Web.UI.Client/src/external/openid/xhr.ts rename to src/Umbraco.Web.UI.Client/src/external/openid/src/xhr.ts diff --git a/src/Umbraco.Web.UI.Client/src/external/openid/vite.config.ts b/src/Umbraco.Web.UI.Client/src/external/openid/vite.config.ts new file mode 100644 index 000000000000..9eed8853efd9 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/openid/vite.config.ts @@ -0,0 +1,18 @@ +import { defineConfig } from 'vite'; +import { rmSync } from 'fs'; +import { getDefaultConfig } from '../../vite-config-base'; + +const dist = '../../../dist-cms/external/openid'; + +// delete the unbundled dist folder +rmSync(dist, { recursive: true, force: true }); + +export default defineConfig({ + ...getDefaultConfig({ + dist, + base: '/umbraco/backoffice/external/openid', + entry: { + index: './index.ts', + }, + }), +}); diff --git a/src/Umbraco.Web.UI.Client/src/external/rxjs/package.json b/src/Umbraco.Web.UI.Client/src/external/rxjs/package.json new file mode 100644 index 000000000000..fe9a0f6252b2 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/rxjs/package.json @@ -0,0 +1,11 @@ +{ + "name": "@umbraco-backoffice/rxjs", + "private": true, + "type": "module", + "scripts": { + "build": "vite build" + }, + "dependencies": { + "rxjs": "^7.8.2" + } +} diff --git a/src/Umbraco.Web.UI.Client/src/external/rxjs/vite.config.ts b/src/Umbraco.Web.UI.Client/src/external/rxjs/vite.config.ts new file mode 100644 index 000000000000..ad4d1b168e68 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/rxjs/vite.config.ts @@ -0,0 +1,18 @@ +import { defineConfig } from 'vite'; +import { rmSync } from 'fs'; +import { getDefaultConfig } from '../../vite-config-base'; + +const dist = '../../../dist-cms/external/rxjs'; + +// delete the unbundled dist folder +rmSync(dist, { recursive: true, force: true }); + +export default defineConfig({ + ...getDefaultConfig({ + dist, + base: '/umbraco/backoffice/external/rxjs', + entry: { + index: './index.ts', + }, + }), +}); diff --git a/src/Umbraco.Web.UI.Client/src/external/tiptap/package.json b/src/Umbraco.Web.UI.Client/src/external/tiptap/package.json new file mode 100644 index 000000000000..1dd57cee1e55 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/tiptap/package.json @@ -0,0 +1,25 @@ +{ + "name": "@umbraco-backoffice/external-tiptap", + "private": true, + "type": "module", + "scripts": { + "build": "vite build" + }, + "dependencies": { + "@tiptap/core": "2.11.7", + "@tiptap/extension-character-count": "2.11.7", + "@tiptap/extension-image": "2.11.7", + "@tiptap/extension-link": "2.11.7", + "@tiptap/extension-placeholder": "2.11.7", + "@tiptap/extension-subscript": "2.11.7", + "@tiptap/extension-superscript": "2.11.7", + "@tiptap/extension-table": "2.11.7", + "@tiptap/extension-table-cell": "2.11.7", + "@tiptap/extension-table-header": "2.11.7", + "@tiptap/extension-table-row": "2.11.7", + "@tiptap/extension-text-align": "2.11.7", + "@tiptap/extension-underline": "2.11.7", + "@tiptap/pm": "2.11.7", + "@tiptap/starter-kit": "2.11.7" + } +} diff --git a/src/Umbraco.Web.UI.Client/src/external/tiptap/vite.config.ts b/src/Umbraco.Web.UI.Client/src/external/tiptap/vite.config.ts new file mode 100644 index 000000000000..a2f3625dce24 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/tiptap/vite.config.ts @@ -0,0 +1,18 @@ +import { defineConfig } from 'vite'; +import { rmSync } from 'fs'; +import { getDefaultConfig } from '../../vite-config-base'; + +const dist = '../../../dist-cms/external/tiptap'; + +// delete the unbundled dist folder +rmSync(dist, { recursive: true, force: true }); + +export default defineConfig({ + ...getDefaultConfig({ + dist, + base: '/umbraco/backoffice/external/tiptap', + entry: { + index: './index.ts', + }, + }), +}); diff --git a/src/Umbraco.Web.UI.Client/src/external/uui/package.json b/src/Umbraco.Web.UI.Client/src/external/uui/package.json new file mode 100644 index 000000000000..e30acfe5950f --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/uui/package.json @@ -0,0 +1,12 @@ +{ + "name": "@umbraco-backoffice/uui", + "private": true, + "type": "module", + "scripts": { + "build": "vite build" + }, + "dependencies": { + "@umbraco-ui/uui": "^1.14.2", + "@umbraco-ui/uui-css": "^1.14.1" + } +} diff --git a/src/Umbraco.Web.UI.Client/src/external/uui/vite.config.ts b/src/Umbraco.Web.UI.Client/src/external/uui/vite.config.ts new file mode 100644 index 000000000000..67f1d1d6d283 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/uui/vite.config.ts @@ -0,0 +1,29 @@ +import { defineConfig } from 'vite'; +import { cpSync, rmSync } from 'fs'; +import { getDefaultConfig } from '../../vite-config-base'; + +const dist = '../../../dist-cms/external/uui'; +const distAssets = '../../../dist-cms'; + +// delete the unbundled dist folder +rmSync(dist, { recursive: true, force: true }); + +// copy css +cpSync('../../../node_modules/@umbraco-ui/uui-css/dist/uui-css.css', `${distAssets}/css/uui-css.css`, { + recursive: true, +}); + +// copy fonts +cpSync('../../../node_modules/@umbraco-ui/uui-css/assets/fonts', `${distAssets}/assets/fonts`, { + recursive: true, +}); + +export default defineConfig({ + ...getDefaultConfig({ + dist, + base: '/umbraco/backoffice/external/uui', + entry: { + index: './index.ts', + }, + }), +}); diff --git a/src/Umbraco.Web.UI.Client/src/rollup.config.js b/src/Umbraco.Web.UI.Client/src/rollup.config.js deleted file mode 100644 index ece64bc41115..000000000000 --- a/src/Umbraco.Web.UI.Client/src/rollup.config.js +++ /dev/null @@ -1,93 +0,0 @@ -import esbuild from 'rollup-plugin-esbuild'; -import { nodeResolve } from '@rollup/plugin-node-resolve'; -import css from 'rollup-plugin-import-css'; -import replace from '@rollup/plugin-replace'; -import { readdirSync, lstatSync, cpSync, copyFileSync, existsSync, unlinkSync } from 'fs'; -import * as globModule from 'tiny-glob'; - -const glob = globModule.default; - -// TODO: could we rename this to just dist? -const DIST_DIRECTORY = './dist-cms'; - -/* TODO: temp solution. Not every external library can run in the browser so we need rollup to bundle them and make them Browser friendly. -For each external library we want to bundle all its files into one js bundle. First we run the -Typescript compiler to create the external folder with d.ts files in the correct places. Then we delete all the js modules that are created, but -might not work in the browser. Then we run rollup to bundle the external libraries. */ -console.log('--- Deleting temp external JS modules ---'); -const tempJsFiles = await glob(`${DIST_DIRECTORY}/external/**/*.js`); -tempJsFiles.forEach((path) => existsSync(path) && unlinkSync(path)); -console.log('--- Deleting temp external JS modules done ---'); - -// Copy assets -console.log('--- Copying assets ---'); -cpSync('./src/assets', `${DIST_DIRECTORY}/assets`, { recursive: true }); -console.log('--- Copying assets done ---'); - -// Copy SRC CSS -console.log('--- Copying src CSS ---'); -cpSync('./src/css', `${DIST_DIRECTORY}/css`, { recursive: true }); -console.log('--- Copying src CSS done ---'); - -// Copy UUI CSS -console.log('--- Copying UUI CSS ---'); -copyFileSync('./node_modules/@umbraco-ui/uui-css/dist/uui-css.css', `${DIST_DIRECTORY}/css/uui-css.css`); -console.log('--- Copying src UUI CSS done ---'); - -// Copy UUI FONTS -console.log('--- Copying UUI Fonts ---'); -cpSync('./node_modules/@umbraco-ui/uui-css/assets/fonts', `${DIST_DIRECTORY}/assets/fonts`, { recursive: true }); -console.log('--- Copying src UUI Fonts done ---'); - -// Copy monaco-editor -console.log('--- Copying monaco-editor ---'); -cpSync('./node_modules/monaco-editor/esm/vs/editor/editor.worker.js', `${DIST_DIRECTORY}/monaco-editor/vs/editor/editor.worker.js`); -cpSync('./node_modules/monaco-editor/esm/vs/base', `${DIST_DIRECTORY}/monaco-editor/vs/base`, { recursive: true }); -cpSync('./node_modules/monaco-editor/esm/vs/nls.js', `${DIST_DIRECTORY}/monaco-editor/vs/nls.js`, { recursive: true }); -cpSync('./node_modules/monaco-editor/esm/vs/nls.messages.js', `${DIST_DIRECTORY}/monaco-editor/vs/nls.messages.js`, { recursive: true }); -cpSync('./node_modules/monaco-editor/esm/vs/editor/common', `${DIST_DIRECTORY}/monaco-editor/vs/editor/common`, { recursive: true }); -cpSync('./node_modules/monaco-editor/esm/vs/language', `${DIST_DIRECTORY}/monaco-editor/vs/language`, { recursive: true }); -cpSync('./node_modules/monaco-editor/min/vs/base/browser/ui/codicons', `${DIST_DIRECTORY}/assets/fonts`, { recursive: true }); -console.log('--- Copying monaco-editor done ---'); - -const readFolders = (path) => readdirSync(path).filter((folder) => lstatSync(`${path}/${folder}`).isDirectory()); -const createModuleDescriptors = (folderName) => - readFolders(`./src/${folderName}`).map((moduleName) => { - return { - name: moduleName, - file: `index.ts`, - root: `./src/${folderName}/${moduleName}`, - dist: `${DIST_DIRECTORY}/${folderName}/${moduleName}`, - }; - }); - -const externals = createModuleDescriptors('external'); -const exclude = []; -const allowed = externals.filter((module) => !exclude.includes(module.name)); - -// TODO: Minify code -const libraries = allowed.map((module) => { - /** @type {import('rollup').RollupOptions} */ - return { - input: `./src/external/${module.name}/index.ts`, - output: { - dir: `${DIST_DIRECTORY}/external/${module.name}`, - format: 'es', - }, - plugins: [ - nodeResolve({ preferBuiltins: false, browser: true }), - // Replace the vite specific inline query with nothing so that the import is valid - replace({ - preventAssignment: true, - values: { - '?inline': '', - }, - }), - css({ minify: true }), - esbuild({ minify: true, sourceMap: true }), - ], - }; -}); - -/** @type {import('rollup').RollupOptions[]} */ -export default [...libraries]; diff --git a/src/Umbraco.Web.UI.Client/src/vite-config-base.ts b/src/Umbraco.Web.UI.Client/src/vite-config-base.ts index 83ae8cb38641..46f401a182a5 100644 --- a/src/Umbraco.Web.UI.Client/src/vite-config-base.ts +++ b/src/Umbraco.Web.UI.Client/src/vite-config-base.ts @@ -3,6 +3,7 @@ import type { BuildOptions, UserConfig, LibraryOptions } from 'vite'; interface UmbViteDefaultConfigArgs { base?: string; dist: BuildOptions['outDir']; + external?: string | string[] | RegExp | RegExp[]; entry?: LibraryOptions['entry']; plugins?: UserConfig['plugins']; } @@ -19,7 +20,7 @@ export const getDefaultConfig = (args: UmbViteDefaultConfigArgs): UserConfig => emptyOutDir: true, sourcemap: true, rollupOptions: { - external: [/^@umbraco/], + external: args.external || [/^@umbraco-cms/], }, }, plugins: args.plugins, diff --git a/src/Umbraco.Web.UI.Client/vite.config.ts b/src/Umbraco.Web.UI.Client/vite.config.ts index 0b7fe072d672..cc746ba6a70c 100644 --- a/src/Umbraco.Web.UI.Client/vite.config.ts +++ b/src/Umbraco.Web.UI.Client/vite.config.ts @@ -37,10 +37,6 @@ export const plugins: PluginOption[] = [ src: 'node_modules/msw/lib/iife/**/*', dest: 'umbraco/backoffice/msw', }, - { - src: 'node_modules/monaco-editor/esm/**/*', - dest: 'umbraco/backoffice/monaco-editor/vs', - }, ], }), viteTSConfigPaths(),