From 073491d7b16b3a7a6285dafd5fa3379a310d33af Mon Sep 17 00:00:00 2001 From: Ferdinand Thiessen Date: Sun, 27 Nov 2022 23:58:49 +0100 Subject: [PATCH 01/21] Use vite instead of webpack for building the library Signed-off-by: Ferdinand Thiessen --- build/extract-l10n.js | 42 +++--- build/usernameToColor-export.js | 7 - package.json | 88 ++++--------- .../{translations.js => translations.mjs} | 24 ++-- src/components/NcDatetimePicker/index.scss | 2 +- .../NcEmojiPicker/NcEmojiPicker.vue | 2 +- .../NcMultiselect/NcMultiselect.vue | 4 +- src/l10n.js | 44 ++++--- src/utils/ScopeComponent.js | 2 +- src/utils/focusTrap.js | 3 +- vite.config.mjs | 122 ++++++++++++++++++ 11 files changed, 207 insertions(+), 133 deletions(-) delete mode 100644 build/usernameToColor-export.js rename resources/{translations.js => translations.mjs} (79%) create mode 100644 vite.config.mjs diff --git a/build/extract-l10n.js b/build/extract-l10n.js index 401e106300..98911490ef 100644 --- a/build/extract-l10n.js +++ b/build/extract-l10n.js @@ -1,28 +1,28 @@ -const { GettextExtractor, JsExtractors } = require('gettext-extractor'); +const { GettextExtractor, JsExtractors } = require('gettext-extractor') -let extractor = new GettextExtractor(); +const extractor = new GettextExtractor() extractor - .createJsParser([ - JsExtractors.callExpression('t', { - arguments: { - text: 0, - } - }), - JsExtractors.callExpression('n', { - arguments: { - text: 0, - textPlural: 1, - } - }), - ]) - .parseFilesGlob('./src/**/*.@(ts|js|vue)'); + .createJsParser([ + JsExtractors.callExpression('t', { + arguments: { + text: 0, + }, + }), + JsExtractors.callExpression('n', { + arguments: { + text: 0, + textPlural: 1, + }, + }), + ]) + .parseFilesGlob('./src/**/*.@(ts|js|vue)') // remove references to avoid conflicts extractor.getMessages().forEach((msg) => { - msg.references = []; -}); - -extractor.savePotFile('./l10n/messages.pot'); + msg.references = [] +}) -extractor.printStats(); +extractor.savePotFile('./l10n/messages.pot') + +extractor.printStats() diff --git a/build/usernameToColor-export.js b/build/usernameToColor-export.js deleted file mode 100644 index 7ed3cf6358..0000000000 --- a/build/usernameToColor-export.js +++ /dev/null @@ -1,7 +0,0 @@ -const snapshot = require('./../src/functions/usernameToColor/__snapshots__/usernameToColor.spec.js.snap') -const result = {} -Object.keys(snapshot).map((key) => { - const uid = key.replace('usernameToColor ', '').replace(' has the proper color 1', '') - result[uid] = JSON.parse(snapshot[key]) -}) -console.log(JSON.stringify(result)) diff --git a/package.json b/package.json index 621e8e817a..734318439a 100644 --- a/package.json +++ b/package.json @@ -13,11 +13,9 @@ "author": "John Molakvoæ (skjnldsv) ", "license": "AGPL-3.0", "scripts": { - "dev": "webpack --node-env development --progress", - "watch": "webpack --node-env development --progress --watch", - "watch:module": "LIBRARY_TARGET=module webpack --node-env development --progress --watch", - "build": "webpack --node-env production --progress && npm run build:module", - "build:module": "LIBRARY_TARGET=module webpack --node-env production --progress", + "build": "vite build --mode production", + "dev": "vite build --mode development", + "watch": "vite build --watch --mode development", "l10n:extract": "node build/extract-l10n.js", "lint": "eslint --ext .js,.vue src", "lint:fix": "eslint --ext .js,.vue src --fix", @@ -31,18 +29,25 @@ "cypress:gui": "cypress open --component", "cypress:update-snapshots": "cypress run --component --spec cypress/visual/**/*.cy.js --env type=base --config screenshotsFolder=cypress/snapshots/base" }, - "main": "dist/ncvuecomponents.js", - "module": "dist/index.module.js", + "main": "dist/index.cjs", + "module": "dist/index.mjs", + "exports": { + "import": "./dist/index.mjs", + "require": "./dist/index.cjs" + }, "files": [ "CHANGELOG.md", "LICENSE", "README.md", "dist" ], + "peerDependencies": { + "vue": "^2.7.14" + }, "dependencies": { "@floating-ui/dom": "^1.1.0", "@nextcloud/auth": "^2.0.0", - "@nextcloud/axios": "^2.0.0", + "@nextcloud/axios": "^2.2.0", "@nextcloud/browser-storage": "^0.2.0", "@nextcloud/calendar-js": "^5.0.3", "@nextcloud/capabilities": "^1.0.4", @@ -66,7 +71,6 @@ "striptags": "^3.2.0", "tributejs": "^5.1.3", "v-click-outside": "^3.2.0", - "vue": "^2.7.14", "vue-color": "^2.8.1", "vue-material-design-icons": "^5.1.2", "vue-multiselect": "^2.1.6", @@ -78,71 +82,33 @@ "npm": "^7.0.0 || ^8.0.0" }, "devDependencies": { - "@cypress/vue2": "^2.0.1", + "@cypress/vite-dev-server": "^4.0.1", + "@cypress/vue": "^2.2.4", "@fontsource/roboto": "^4.5.8", "@mdi/svg": "^7.0.96", "@nextcloud/babel-config": "^1.0.0", "@nextcloud/browserslist-config": "^2.3.0", "@nextcloud/eslint-config": "^8.1.3", "@nextcloud/stylelint-config": "^2.3.0", - "@nextcloud/webpack-vue-config": "github:nextcloud/webpack-vue-config#master", - "@vue/test-utils": "^1.3.0", + "@vitejs/plugin-vue2": "^2.0.1", + "@vitest/coverage-c8": "^0.25.3", + "@vue/compiler-sfc": "^2.7.14", "@vue/tsconfig": "^0.1.3", - "@vue/vue2-jest": "^29.0.0", - "babel-jest": "^29.0.1", - "babel-loader-exclude-node-modules-except": "^1.2.1", + "babel-loader": "^8.2.5", + "browserslist-to-esbuild": "^1.2.0", + "css-loader": "~6.7.1", "cypress": "^12.3.0", "cypress-visual-regression": "^1.5.0", "eslint-plugin-cypress": "^2.11.1", - "file-loader": "^6.2.0", - "gettext-extractor": "^3.5.4", + "gettext-extractor": "^3.6.0", "gettext-parser": "^6.0.0", "glob": "^8.0.3", - "jest": "^29.0.1", - "jest-environment-jsdom": "29.4.1", - "jest-serializer-vue": "^3.1.0", - "jest-transform-stub": "^2.0.0", - "resolve-url-loader": "^5.0.0", + "rollup-plugin-inject-process-env": "^1.3.1", + "rollup-plugin-node-externals": "^5.0.2", "sanitize-filename": "^1.6.3", - "url-loader": "^4.1.1", - "vue-eslint-parser": "^9.0.3", - "vue-styleguidist": "~4.56.2", - "vue-template-compiler": "^2.7.14", - "webpack-node-externals": "^3.0.0" - }, - "jest": { - "moduleFileExtensions": [ - "js", - "vue" - ], - "testEnvironment": "jsdom", - "transform": { - "^.+\\.js$": "babel-jest", - "^.+\\.vue$": "@vue/vue2-jest", - ".+\\.(css|styl|less|sass|scss|png|jpg|ttf|woff|woff2)$": "jest-transform-stub" - }, - "transformIgnorePatterns": [ - "/node_modules/(?!vue-material-design-icons)" - ], - "snapshotSerializers": [ - "/node_modules/jest-serializer-vue" - ], - "setupFilesAfterEnv": [ - "./tests/setup.js" - ], - "coverageDirectory": "./coverage/", - "collectCoverage": false, - "collectCoverageFrom": [ - "/src/**/*.{js,vue}", - "!**/node_modules/**" - ], - "coverageReporters": [ - "json", - "text", - "html", - "lcov", - "clover" - ] + "sass": "^1.56.2", + "vite": "^3.2.4", + "vue-eslint-parser": "^9.1.0" }, "browserslist": [ "extends @nextcloud/browserslist-config" diff --git a/resources/translations.js b/resources/translations.mjs similarity index 79% rename from resources/translations.js rename to resources/translations.mjs index 80edbe91bf..31e4f58787 100644 --- a/resources/translations.js +++ b/resources/translations.mjs @@ -19,17 +19,16 @@ * along with this program. If not, see . * */ -const { join, basename } = require('path') -const fs = require('fs/promises') -const gettextParser = require('gettext-parser') +import { join, basename } from 'path' +import { po } from 'gettext-parser' +import fs from 'fs' // https://github.com/alexanderwallin/node-gettext#usage // https://github.com/alexanderwallin/node-gettext#load-and-add-translations-from-mo-or-po-files -const parseFile = async (fileName) => { +const parseFile = (fileName) => { const locale = basename(fileName).slice(0, -'.pot'.length) - const po = await fs.readFile(fileName) - const json = gettextParser.po.parse(po) + const json = po.parse(fs.readFileSync(fileName)) // Compress translations Content const translations = {} @@ -55,17 +54,10 @@ const parseFile = async (fileName) => { } } -const loadTranslations = async (baseDir) => { - const files = await fs.readdir(baseDir) - - const promises = files +export const loadTranslations = (baseDir) => { + return fs + .readdirSync(baseDir) .filter(name => name !== 'messages.pot' && name.endsWith('.pot')) .map(file => join(baseDir, file)) .map(parseFile) - - return Promise.all(promises) -} - -module.exports = { - loadTranslations, } diff --git a/src/components/NcDatetimePicker/index.scss b/src/components/NcDatetimePicker/index.scss index 849c419d34..052b8d7877 100644 --- a/src/components/NcDatetimePicker/index.scss +++ b/src/components/NcDatetimePicker/index.scss @@ -1,6 +1,6 @@ $cell_height: 32px; -@import '~vue2-datepicker/scss/index'; +@import '~/vue2-datepicker/scss/index'; .mx-datepicker[data-v-#{$scope_version}] { user-select: none; diff --git a/src/components/NcEmojiPicker/NcEmojiPicker.vue b/src/components/NcEmojiPicker/NcEmojiPicker.vue index 3be0ba1748..577f81fe4e 100644 --- a/src/components/NcEmojiPicker/NcEmojiPicker.vue +++ b/src/components/NcEmojiPicker/NcEmojiPicker.vue @@ -268,7 +268,7 @@ export default { diff --git a/docs/.vitepress/theme/components/vue-live-with-layout.js b/docs/.vitepress/theme/components/vue-live-with-layout.js new file mode 100644 index 0000000000..67784b7b7d --- /dev/null +++ b/docs/.vitepress/theme/components/vue-live-with-layout.js @@ -0,0 +1,24 @@ +import { h, onMounted, ref, defineComponent } from "vue" +import { VueLive } from "vue-live"; +import layout from "./vue-live-layout.vue"; + +// https://github.com/vue-styleguidist/vue-live/issues/96 +export default defineComponent({ + setup(_, { attrs }) { + const ready = ref(false) + const props = {...attrs} + onMounted(async () => { + const NcComponents = (await import('../../../../dist/index.esm.js')).NcComponents + if ("requires" in props) { + props.requires = {} + await Promise.allSettled(Object.keys(attrs.requires).map(async (key) => { + props.requires[key] = (await attrs.requires[key]).default + })) + } + props.components = {...NcComponents} + ready.value = true + }) + // return the render function + return () => ready.value ? h(VueLive, { ...props, layout }) : h('div', 'loading...') + } +}) \ No newline at end of file diff --git a/styleguide/.vitepress/theme/global.requires.js b/docs/.vitepress/theme/global.requires.js similarity index 100% rename from styleguide/.vitepress/theme/global.requires.js rename to docs/.vitepress/theme/global.requires.js diff --git a/docs/.vitepress/theme/index.js b/docs/.vitepress/theme/index.js new file mode 100644 index 0000000000..8586393c93 --- /dev/null +++ b/docs/.vitepress/theme/index.js @@ -0,0 +1,14 @@ +import DefaultTheme from 'vitepress/theme' +import VueLiveWithLayout from './components/vue-live-with-layout' + +import './assets/default.css'; +import './assets/icons.css'; +import '../../../dist/style.css'; + +export default { + ...DefaultTheme, + enhanceApp(ctx) { + DefaultTheme.enhanceApp(ctx) + ctx.app.component('VueLive', VueLiveWithLayout) + } +} \ No newline at end of file diff --git a/docs/.vitepress/vue-live-md-it.mjs b/docs/.vitepress/vue-live-md-it.mjs new file mode 100644 index 0000000000..c95607aa5d --- /dev/null +++ b/docs/.vitepress/vue-live-md-it.mjs @@ -0,0 +1,44 @@ +/// @ts-check +import { parse, compileScript } from '@vue/compiler-sfc' + +function addVueLive(md, opts) { + const fence = md.renderer.rules.fence + md.renderer.rules.fence = (...args) => { + const [tokens, idx] = args + const token = tokens[idx] + const lang = token.info.trim() + + // Only handle `vue`, `vue live`, or code without type + if (lang && lang !== 'vue' && lang !== 'vue live') { + return fence(...args) + } + + const getImports = code => { + // script is at the beginning of a line after a return + // In case we are loading a vue component as an example, extract script tag + return [...code.matchAll(/\s*import\s+([^\s]+)\s+from +["']([^'"]+)["'][\s;]*\n/g)].map(match => [match[1], match[2]]) + } + + const code = token.content + + // analyze code to find requires + // put all requires into a "requires" object + // add this as a prop + const imports = getImports(code) + const requires = imports.map(mod => `'${mod[1]}': import('../../node_modules/${mod[1]}${mod[1].startsWith('vue-material-design') ? '.vue' : ''}')`) + const langArray = lang.split(' ') + const langClean = langArray[0] + const codeClean = md.utils.escapeHtml(code).replace(/\`/g, '\\`').replace(/\$/g, '\\$') + const editorProps = langArray.find(l => /^\{.+\}$/.test(l)) + const jsx = langArray.length > 2 && langArray[1] === 'jsx' ? 'jsx ' : '' // to enable jsx, we want ```vue jsx live or ```jsx jsx live + const markdownGenerated = `` + return markdownGenerated + } +} + +export default addVueLive diff --git a/package-lock.json b/package-lock.json index a55ae6eeb7..1dd9b3724f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -73,7 +73,8 @@ "vitepress": "^1.0.0-alpha.31", "vitest": "^0.25.7", "vue-docgen-cli": "^4.56.1", - "vue-eslint-parser": "^9.1.0" + "vue-eslint-parser": "^9.1.0", + "vue-live": "^2.3.2" }, "engines": { "node": "^16.0.0", @@ -2163,246 +2164,6 @@ "node": "^12 || ^14 || ^16 || ^17" } }, - "node_modules/@esbuild/android-arm": { - "version": "0.16.14", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.14.tgz", - "integrity": "sha512-u0rITLxFIeYAvtJXBQNhNuV4YZe+MD1YvIWT7Nicj8hZAtRVZk2PgNH6KclcKDVHz1ChLKXRfX7d7tkbQBUfrg==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.16.14", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.14.tgz", - "integrity": "sha512-hTqB6Iq13pW4xaydeqQrs8vPntUnMjbkq+PgGiBMi69eYk74naG2ftHWqKnxn874kNrt5Or3rQ0PJutx2doJuQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.16.14", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.14.tgz", - "integrity": "sha512-jir51K4J0K5Rt0KOcippjSNdOl7akKDVz5I6yrqdk4/m9y+rldGptQUF7qU4YpX8U61LtR+w2Tu2Ph+K/UaJOw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.16.14", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.14.tgz", - "integrity": "sha512-vrlaP81IuwPaw1fyX8fHCmivP3Gr73ojVEZy+oWJLAiZVcG8o8Phwun/XDnYIFUHxIoUnMFEpg9o38MIvlw8zw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.16.14", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.14.tgz", - "integrity": "sha512-KV1E01eC2hGYA2qzFDRCK4wdZCRUvMwCNcobgpiiOzp5QXpJBqFPdxI69j8vvzuU7oxFXDgANwEkXvpeQqyOyg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.16.14", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.14.tgz", - "integrity": "sha512-xRM1RQsazSvL42BNa5XC7ytD4ZDp0ZyJcH7aB0SlYUcHexJUKiDNKR7dlRVlpt6W0DvoRPU2nWK/9/QWS4u2fw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.16.14", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.14.tgz", - "integrity": "sha512-7ALTAn6YRRf1O6fw9jmn0rWmOx3XfwDo7njGtjy1LXhDGUjTY/vohEPM3ii5MQ411vJv1r498EEx2aBQTJcrEw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.16.14", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.14.tgz", - "integrity": "sha512-X6xULug66ulrr4IzrW7qq+eq9n4MtEyagdWvj4o4cmWr+JXOT47atjpDF9j5M2zHY0UQBmqnHhwl+tXpkpIb2w==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.16.14", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.14.tgz", - "integrity": "sha512-TLh2OcbBUQcMYRH4GbiDkDZfZ4t1A3GgmeXY27dHSI6xrU7IkO00MGBiJySmEV6sH3Wa6pAN6UtaVL0DwkGW4Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.16.14", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.14.tgz", - "integrity": "sha512-oBZkcZ56UZDFCAfE3Fd/Jgy10EoS7Td77NzNGenM+HSY8BkdQAcI9VF9qgwdOLZ+tuftWD7UqZ26SAhtvA3XhA==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.16.14", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.14.tgz", - "integrity": "sha512-udz/aEHTcuHP+xdWOJmZ5C9RQXHfZd/EhCnTi1Hfay37zH3lBxn/fNs85LA9HlsniFw2zccgcbrrTMKk7Cn1Qg==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.16.14", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.14.tgz", - "integrity": "sha512-kJ2iEnikUOdC1SiTGbH0fJUgpZwa0ITDTvj9EHf9lm3I0hZ4Yugsb3M6XSl696jVxrEocLe519/8CbSpQWFSrg==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.16.14", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.14.tgz", - "integrity": "sha512-kclKxvZvX5YhykwlJ/K9ljiY4THe5vXubXpWmr7q3Zu3WxKnUe1VOZmhkEZlqtnJx31GHPEV4SIG95IqTdfgfg==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.16.14", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.14.tgz", - "integrity": "sha512-fdwP9Dc+Kx/cZwp9T9kNqjAE/PQjfrxbio4rZ3XnC3cVvZBjuxpkiyu/tuCwt6SbAK5th6AYNjFdEV9kGC020A==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.16.14", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.14.tgz", - "integrity": "sha512-++fw3P4fQk9nqvdzbANRqimKspL8pDCnSpXomyhV7V/ISha/BZIYvZwLBWVKp9CVWKwWPJ4ktsezuLIvlJRHqA==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, "node_modules/@esbuild/linux-x64": { "version": "0.16.14", "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.14.tgz", @@ -2419,102 +2180,6 @@ "node": ">=12" } }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.16.14", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.14.tgz", - "integrity": "sha512-U06pfx8P5CqyoPNfqIJmnf+5/r4mJ1S62G4zE6eOjS59naQcxi6GnscUCPH3b+hRG0qdKoGX49RAyiqW+M9aSw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.16.14", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.14.tgz", - "integrity": "sha512-/Jl8XVaWEZNu9rZw+n792GIBupQwHo6GDoapHSb/2xp/Ku28eK6QpR2O9cPBkzHH4OOoMH0LB6zg/qczJ5TTGg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.16.14", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.14.tgz", - "integrity": "sha512-2iI7D34uTbDn/TaSiUbEHz+fUa8KbN90vX5yYqo12QGpu6T8Jl+kxODsWuMCwoTVlqUpwfPV22nBbFPME9OPtw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.16.14", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.14.tgz", - "integrity": "sha512-SjlM7AHmQVTiGBJE/nqauY1aDh80UBsXZ94g4g60CDkrDMseatiqALVcIuElg4ZSYzJs8hsg5W6zS2zLpZTVgg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.16.14", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.14.tgz", - "integrity": "sha512-z06t5zqk8ak0Xom5HG81z2iOQ1hNWYsFQp3sczVLVx+dctWdgl80tNRyTbwjaFfui2vFO12dfE3trCTvA+HO4g==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.16.14", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.14.tgz", - "integrity": "sha512-ED1UpWcM6lAbalbbQ9TrGqJh4Y9TaASUvu8bI/0mgJcxhSByJ6rbpgqRhxYMaQ682WfA71nxUreaTO7L275zrw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, "node_modules/@eslint/eslintrc": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", @@ -3795,6 +3460,12 @@ "node": ">=4" } }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -4455,7 +4126,6 @@ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, - "peer": true, "engines": { "node": ">=6" } @@ -5486,6 +5156,12 @@ "node": ">=0.4.0" } }, + "node_modules/detect-browser": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/detect-browser/-/detect-browser-5.3.0.tgz", + "integrity": "sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==", + "dev": true + }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -7315,20 +6991,6 @@ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -9030,8 +8692,7 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true, - "peer": true + "dev": true }, "node_modules/linkify-string": { "version": "4.1.0", @@ -9569,6 +9230,17 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, "node_modules/nanoid": { "version": "3.3.4", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", @@ -10034,6 +9706,15 @@ "node": ">=0.10.0" } }, + "node_modules/pirates": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, "node_modules/pixelmatch": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-5.3.0.tgz", @@ -10226,6 +9907,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/prismjs": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", + "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -11729,7 +11419,57 @@ "dev": true, "peer": true, "engines": { - "node": ">=8" + "node": ">=8" + } + }, + "node_modules/sucrase": { + "version": "3.28.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.28.0.tgz", + "integrity": "sha512-TK9600YInjuiIhVM3729rH4ZKPOsGeyXUwY+Ugu9eilNbdTFyHr6XcAGYbRVZPDgWj6tgI7bx95aaJjHnbffag==", + "dev": true, + "dependencies": { + "commander": "^4.0.0", + "glob": "7.1.6", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/sucrase/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/sucrase/node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/supports-color": { @@ -11999,6 +11739,27 @@ "dev": true, "peer": true }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, "node_modules/throttleit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", @@ -12142,6 +11903,12 @@ "utf8-byte-length": "^1.0.1" } }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true + }, "node_modules/ts-map": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/ts-map/-/ts-map-1.0.3.tgz", @@ -12803,6 +12570,26 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, + "node_modules/vue-inbrowser-compiler-demi": { + "version": "4.55.0", + "resolved": "https://registry.npmjs.org/vue-inbrowser-compiler-demi/-/vue-inbrowser-compiler-demi-4.55.0.tgz", + "integrity": "sha512-Ehgo+x78WjCVLMZRcPvcLdAT2FnIbFrqAeh9yJnPdxjk+c2gXwcQNpho+i030CVi/QP398PrtI8bqcdmNulzkg==", + "dev": true, + "hasInstallScript": true, + "peerDependencies": { + "@vue/compiler-sfc": ">=3", + "vue": ">=2", + "vue-template-compiler": ">=2" + }, + "peerDependenciesMeta": { + "@vue/compiler-sfc": { + "optional": true + }, + "vue-template-compiler": { + "optional": true + } + } + }, "node_modules/vue-inbrowser-compiler-independent-utils": { "version": "4.56.2", "resolved": "https://registry.npmjs.org/vue-inbrowser-compiler-independent-utils/-/vue-inbrowser-compiler-independent-utils-4.56.2.tgz", @@ -12812,6 +12599,75 @@ "vue": ">=2" } }, + "node_modules/vue-inbrowser-compiler-sucrase": { + "version": "4.55.0", + "resolved": "https://registry.npmjs.org/vue-inbrowser-compiler-sucrase/-/vue-inbrowser-compiler-sucrase-4.55.0.tgz", + "integrity": "sha512-P7FoJjt0RG0dIJ/SFY1q3+CTxQ/SbH9NO8zo1a1C3Y7eFmAl9hLGuDjfRkS81C95uERyVet8uu44w246JAnYkA==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.13.12", + "camelcase": "^5.3.1", + "detect-browser": "^5.2.0", + "sucrase": "3.28.0", + "vue-inbrowser-compiler-utils": "^4.55.0", + "walkes": "^0.2.1" + }, + "peerDependencies": { + "vue": ">=2" + } + }, + "node_modules/vue-inbrowser-compiler-utils": { + "version": "4.55.0", + "resolved": "https://registry.npmjs.org/vue-inbrowser-compiler-utils/-/vue-inbrowser-compiler-utils-4.55.0.tgz", + "integrity": "sha512-3Qws8l41m7LJJ53ePRl9ScZenL1zFAw4Hz6uDlutq4PiV8qyMZ4dkzYIzqAUMx7cJKBmJ/gNkC+WJ7pYGGiW2g==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "vue-inbrowser-compiler-demi": "^4.55.0", + "vue-inbrowser-compiler-independent-utils": "^4.55.0" + }, + "peerDependencies": { + "vue": ">=2" + } + }, + "node_modules/vue-live": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/vue-live/-/vue-live-2.3.2.tgz", + "integrity": "sha512-v4eQXzknyIx4TslUbiOucmpSArLitRQ+3H9rfYazUOxD4YM+XZsb33+KaxLloWx0imNan8jqkKHa6yWsKGiaug==", + "dev": true, + "dependencies": { + "@vue/compiler-core": "^3.2.45", + "@vue/compiler-sfc": "^3.2.45", + "acorn": "^8.8.1", + "acorn-walk": "^8.2.0", + "core-js": "^3.26.1", + "debounce": "^1.2.1", + "hash-sum": "^2.0.0", + "prismjs": "^1.29.0", + "vue-inbrowser-compiler-sucrase": "^4.54.1", + "vue-prism-editor": "^2.0.0-alpha.2" + }, + "peerDependencies": { + "vue": ">= 3.0.8" + } + }, + "node_modules/vue-live/node_modules/core-js": { + "version": "3.27.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.27.1.tgz", + "integrity": "sha512-GutwJLBChfGCpwwhbYoqfv03LAfmiz7e7D/BNxzeMxwQf10GRSzqiOjx7AmtEk+heiD/JWmBuyBPgFtx0Sg1ww==", + "dev": true, + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/vue-live/node_modules/hash-sum": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz", + "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==", + "dev": true + }, "node_modules/vue-material-design-icons": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/vue-material-design-icons/-/vue-material-design-icons-5.1.2.tgz", @@ -12826,6 +12682,18 @@ "npm": ">= 3.0.0" } }, + "node_modules/vue-prism-editor": { + "version": "2.0.0-alpha.2", + "resolved": "https://registry.npmjs.org/vue-prism-editor/-/vue-prism-editor-2.0.0-alpha.2.tgz", + "integrity": "sha512-Gu42ba9nosrE+gJpnAEuEkDMqG9zSUysIR8SdXUw8MQKDjBnnNR9lHC18uOr/ICz7yrA/5c7jHJr9lpElODC7w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "vue": "^3.0.0" + } + }, "node_modules/vue-resize": { "version": "2.0.0-alpha.1", "resolved": "https://registry.npmjs.org/vue-resize/-/vue-resize-2.0.0-alpha.1.tgz", @@ -12854,6 +12722,12 @@ "node": ">=14" } }, + "node_modules/walkes": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/walkes/-/walkes-0.2.1.tgz", + "integrity": "sha512-mbCCLh/TineJ2hxHpV6E0OmXht0P8R695BKHbhjrh56GwTHlPVbOTftetdih9XLQZgkFkrJXhGz1j9cxq03tWQ==", + "dev": true + }, "node_modules/watchpack": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", @@ -14754,111 +14628,6 @@ "jsdoc-type-pratt-parser": "~2.2.5" } }, - "@esbuild/android-arm": { - "version": "0.16.14", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.14.tgz", - "integrity": "sha512-u0rITLxFIeYAvtJXBQNhNuV4YZe+MD1YvIWT7Nicj8hZAtRVZk2PgNH6KclcKDVHz1ChLKXRfX7d7tkbQBUfrg==", - "dev": true, - "optional": true - }, - "@esbuild/android-arm64": { - "version": "0.16.14", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.14.tgz", - "integrity": "sha512-hTqB6Iq13pW4xaydeqQrs8vPntUnMjbkq+PgGiBMi69eYk74naG2ftHWqKnxn874kNrt5Or3rQ0PJutx2doJuQ==", - "dev": true, - "optional": true - }, - "@esbuild/android-x64": { - "version": "0.16.14", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.14.tgz", - "integrity": "sha512-jir51K4J0K5Rt0KOcippjSNdOl7akKDVz5I6yrqdk4/m9y+rldGptQUF7qU4YpX8U61LtR+w2Tu2Ph+K/UaJOw==", - "dev": true, - "optional": true - }, - "@esbuild/darwin-arm64": { - "version": "0.16.14", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.14.tgz", - "integrity": "sha512-vrlaP81IuwPaw1fyX8fHCmivP3Gr73ojVEZy+oWJLAiZVcG8o8Phwun/XDnYIFUHxIoUnMFEpg9o38MIvlw8zw==", - "dev": true, - "optional": true - }, - "@esbuild/darwin-x64": { - "version": "0.16.14", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.14.tgz", - "integrity": "sha512-KV1E01eC2hGYA2qzFDRCK4wdZCRUvMwCNcobgpiiOzp5QXpJBqFPdxI69j8vvzuU7oxFXDgANwEkXvpeQqyOyg==", - "dev": true, - "optional": true - }, - "@esbuild/freebsd-arm64": { - "version": "0.16.14", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.14.tgz", - "integrity": "sha512-xRM1RQsazSvL42BNa5XC7ytD4ZDp0ZyJcH7aB0SlYUcHexJUKiDNKR7dlRVlpt6W0DvoRPU2nWK/9/QWS4u2fw==", - "dev": true, - "optional": true - }, - "@esbuild/freebsd-x64": { - "version": "0.16.14", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.14.tgz", - "integrity": "sha512-7ALTAn6YRRf1O6fw9jmn0rWmOx3XfwDo7njGtjy1LXhDGUjTY/vohEPM3ii5MQ411vJv1r498EEx2aBQTJcrEw==", - "dev": true, - "optional": true - }, - "@esbuild/linux-arm": { - "version": "0.16.14", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.14.tgz", - "integrity": "sha512-X6xULug66ulrr4IzrW7qq+eq9n4MtEyagdWvj4o4cmWr+JXOT47atjpDF9j5M2zHY0UQBmqnHhwl+tXpkpIb2w==", - "dev": true, - "optional": true - }, - "@esbuild/linux-arm64": { - "version": "0.16.14", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.14.tgz", - "integrity": "sha512-TLh2OcbBUQcMYRH4GbiDkDZfZ4t1A3GgmeXY27dHSI6xrU7IkO00MGBiJySmEV6sH3Wa6pAN6UtaVL0DwkGW4Q==", - "dev": true, - "optional": true - }, - "@esbuild/linux-ia32": { - "version": "0.16.14", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.14.tgz", - "integrity": "sha512-oBZkcZ56UZDFCAfE3Fd/Jgy10EoS7Td77NzNGenM+HSY8BkdQAcI9VF9qgwdOLZ+tuftWD7UqZ26SAhtvA3XhA==", - "dev": true, - "optional": true - }, - "@esbuild/linux-loong64": { - "version": "0.16.14", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.14.tgz", - "integrity": "sha512-udz/aEHTcuHP+xdWOJmZ5C9RQXHfZd/EhCnTi1Hfay37zH3lBxn/fNs85LA9HlsniFw2zccgcbrrTMKk7Cn1Qg==", - "dev": true, - "optional": true - }, - "@esbuild/linux-mips64el": { - "version": "0.16.14", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.14.tgz", - "integrity": "sha512-kJ2iEnikUOdC1SiTGbH0fJUgpZwa0ITDTvj9EHf9lm3I0hZ4Yugsb3M6XSl696jVxrEocLe519/8CbSpQWFSrg==", - "dev": true, - "optional": true - }, - "@esbuild/linux-ppc64": { - "version": "0.16.14", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.14.tgz", - "integrity": "sha512-kclKxvZvX5YhykwlJ/K9ljiY4THe5vXubXpWmr7q3Zu3WxKnUe1VOZmhkEZlqtnJx31GHPEV4SIG95IqTdfgfg==", - "dev": true, - "optional": true - }, - "@esbuild/linux-riscv64": { - "version": "0.16.14", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.14.tgz", - "integrity": "sha512-fdwP9Dc+Kx/cZwp9T9kNqjAE/PQjfrxbio4rZ3XnC3cVvZBjuxpkiyu/tuCwt6SbAK5th6AYNjFdEV9kGC020A==", - "dev": true, - "optional": true - }, - "@esbuild/linux-s390x": { - "version": "0.16.14", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.14.tgz", - "integrity": "sha512-++fw3P4fQk9nqvdzbANRqimKspL8pDCnSpXomyhV7V/ISha/BZIYvZwLBWVKp9CVWKwWPJ4ktsezuLIvlJRHqA==", - "dev": true, - "optional": true - }, "@esbuild/linux-x64": { "version": "0.16.14", "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.14.tgz", @@ -14866,48 +14635,6 @@ "dev": true, "optional": true }, - "@esbuild/netbsd-x64": { - "version": "0.16.14", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.14.tgz", - "integrity": "sha512-U06pfx8P5CqyoPNfqIJmnf+5/r4mJ1S62G4zE6eOjS59naQcxi6GnscUCPH3b+hRG0qdKoGX49RAyiqW+M9aSw==", - "dev": true, - "optional": true - }, - "@esbuild/openbsd-x64": { - "version": "0.16.14", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.14.tgz", - "integrity": "sha512-/Jl8XVaWEZNu9rZw+n792GIBupQwHo6GDoapHSb/2xp/Ku28eK6QpR2O9cPBkzHH4OOoMH0LB6zg/qczJ5TTGg==", - "dev": true, - "optional": true - }, - "@esbuild/sunos-x64": { - "version": "0.16.14", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.14.tgz", - "integrity": "sha512-2iI7D34uTbDn/TaSiUbEHz+fUa8KbN90vX5yYqo12QGpu6T8Jl+kxODsWuMCwoTVlqUpwfPV22nBbFPME9OPtw==", - "dev": true, - "optional": true - }, - "@esbuild/win32-arm64": { - "version": "0.16.14", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.14.tgz", - "integrity": "sha512-SjlM7AHmQVTiGBJE/nqauY1aDh80UBsXZ94g4g60CDkrDMseatiqALVcIuElg4ZSYzJs8hsg5W6zS2zLpZTVgg==", - "dev": true, - "optional": true - }, - "@esbuild/win32-ia32": { - "version": "0.16.14", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.14.tgz", - "integrity": "sha512-z06t5zqk8ak0Xom5HG81z2iOQ1hNWYsFQp3sczVLVx+dctWdgl80tNRyTbwjaFfui2vFO12dfE3trCTvA+HO4g==", - "dev": true, - "optional": true - }, - "@esbuild/win32-x64": { - "version": "0.16.14", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.14.tgz", - "integrity": "sha512-ED1UpWcM6lAbalbbQ9TrGqJh4Y9TaASUvu8bI/0mgJcxhSByJ6rbpgqRhxYMaQ682WfA71nxUreaTO7L275zrw==", - "dev": true, - "optional": true - }, "@eslint/eslintrc": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", @@ -15942,6 +15669,12 @@ "color-convert": "^1.9.0" } }, + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, "anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -16415,8 +16148,7 @@ "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "peer": true + "dev": true }, "camelcase-keys": { "version": "6.2.2", @@ -17189,6 +16921,12 @@ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" }, + "detect-browser": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/detect-browser/-/detect-browser-5.3.0.tgz", + "integrity": "sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==", + "dev": true + }, "dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -18564,13 +18302,6 @@ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -19828,8 +19559,7 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true, - "peer": true + "dev": true }, "linkify-string": { "version": "4.1.0", @@ -20236,6 +19966,17 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "requires": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, "nanoid": { "version": "3.3.4", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", @@ -20580,6 +20321,12 @@ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true }, + "pirates": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "dev": true + }, "pixelmatch": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-5.3.0.tgz", @@ -20706,6 +20453,12 @@ "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", "dev": true }, + "prismjs": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", + "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", + "dev": true + }, "process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -21874,6 +21627,42 @@ "postcss-value-parser": "^4.1.0" } }, + "sucrase": { + "version": "3.28.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.28.0.tgz", + "integrity": "sha512-TK9600YInjuiIhVM3729rH4ZKPOsGeyXUwY+Ugu9eilNbdTFyHr6XcAGYbRVZPDgWj6tgI7bx95aaJjHnbffag==", + "dev": true, + "requires": { + "commander": "^4.0.0", + "glob": "7.1.6", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "dependencies": { + "commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -22074,6 +21863,24 @@ "dev": true, "peer": true }, + "thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "requires": { + "any-promise": "^1.0.0" + } + }, + "thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "requires": { + "thenify": ">= 3.1.0 < 4" + } + }, "throttleit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", @@ -22190,6 +21997,12 @@ "utf8-byte-length": "^1.0.1" } }, + "ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true + }, "ts-map": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/ts-map/-/ts-map-1.0.3.tgz", @@ -22674,6 +22487,13 @@ } } }, + "vue-inbrowser-compiler-demi": { + "version": "4.55.0", + "resolved": "https://registry.npmjs.org/vue-inbrowser-compiler-demi/-/vue-inbrowser-compiler-demi-4.55.0.tgz", + "integrity": "sha512-Ehgo+x78WjCVLMZRcPvcLdAT2FnIbFrqAeh9yJnPdxjk+c2gXwcQNpho+i030CVi/QP398PrtI8bqcdmNulzkg==", + "dev": true, + "requires": {} + }, "vue-inbrowser-compiler-independent-utils": { "version": "4.56.2", "resolved": "https://registry.npmjs.org/vue-inbrowser-compiler-independent-utils/-/vue-inbrowser-compiler-independent-utils-4.56.2.tgz", @@ -22681,6 +22501,63 @@ "dev": true, "requires": {} }, + "vue-inbrowser-compiler-sucrase": { + "version": "4.55.0", + "resolved": "https://registry.npmjs.org/vue-inbrowser-compiler-sucrase/-/vue-inbrowser-compiler-sucrase-4.55.0.tgz", + "integrity": "sha512-P7FoJjt0RG0dIJ/SFY1q3+CTxQ/SbH9NO8zo1a1C3Y7eFmAl9hLGuDjfRkS81C95uERyVet8uu44w246JAnYkA==", + "dev": true, + "requires": { + "@babel/parser": "^7.13.12", + "camelcase": "^5.3.1", + "detect-browser": "^5.2.0", + "sucrase": "3.28.0", + "vue-inbrowser-compiler-utils": "^4.55.0", + "walkes": "^0.2.1" + } + }, + "vue-inbrowser-compiler-utils": { + "version": "4.55.0", + "resolved": "https://registry.npmjs.org/vue-inbrowser-compiler-utils/-/vue-inbrowser-compiler-utils-4.55.0.tgz", + "integrity": "sha512-3Qws8l41m7LJJ53ePRl9ScZenL1zFAw4Hz6uDlutq4PiV8qyMZ4dkzYIzqAUMx7cJKBmJ/gNkC+WJ7pYGGiW2g==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "vue-inbrowser-compiler-demi": "^4.55.0", + "vue-inbrowser-compiler-independent-utils": "^4.55.0" + } + }, + "vue-live": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/vue-live/-/vue-live-2.3.2.tgz", + "integrity": "sha512-v4eQXzknyIx4TslUbiOucmpSArLitRQ+3H9rfYazUOxD4YM+XZsb33+KaxLloWx0imNan8jqkKHa6yWsKGiaug==", + "dev": true, + "requires": { + "@vue/compiler-core": "^3.2.45", + "@vue/compiler-sfc": "^3.2.45", + "acorn": "^8.8.1", + "acorn-walk": "^8.2.0", + "core-js": "^3.26.1", + "debounce": "^1.2.1", + "hash-sum": "^2.0.0", + "prismjs": "^1.29.0", + "vue-inbrowser-compiler-sucrase": "^4.54.1", + "vue-prism-editor": "^2.0.0-alpha.2" + }, + "dependencies": { + "core-js": { + "version": "3.27.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.27.1.tgz", + "integrity": "sha512-GutwJLBChfGCpwwhbYoqfv03LAfmiz7e7D/BNxzeMxwQf10GRSzqiOjx7AmtEk+heiD/JWmBuyBPgFtx0Sg1ww==", + "dev": true + }, + "hash-sum": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz", + "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==", + "dev": true + } + } + }, "vue-material-design-icons": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/vue-material-design-icons/-/vue-material-design-icons-5.1.2.tgz", @@ -22691,6 +22568,13 @@ "resolved": "https://registry.npmjs.org/vue-multiselect/-/vue-multiselect-3.0.0-alpha.2.tgz", "integrity": "sha512-Xp9fGJECns45v+v8jXbCIsAkCybYkEg0lNwr7Z6HDUSMyx2TEIK2giipPE+qXiShEc1Ipn+ZtttH2iq9hwXP4Q==" }, + "vue-prism-editor": { + "version": "2.0.0-alpha.2", + "resolved": "https://registry.npmjs.org/vue-prism-editor/-/vue-prism-editor-2.0.0-alpha.2.tgz", + "integrity": "sha512-Gu42ba9nosrE+gJpnAEuEkDMqG9zSUysIR8SdXUw8MQKDjBnnNR9lHC18uOr/ICz7yrA/5c7jHJr9lpElODC7w==", + "dev": true, + "requires": {} + }, "vue-resize": { "version": "2.0.0-alpha.1", "resolved": "https://registry.npmjs.org/vue-resize/-/vue-resize-2.0.0-alpha.1.tgz", @@ -22712,6 +22596,12 @@ "xml-name-validator": "^4.0.0" } }, + "walkes": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/walkes/-/walkes-0.2.1.tgz", + "integrity": "sha512-mbCCLh/TineJ2hxHpV6E0OmXht0P8R695BKHbhjrh56GwTHlPVbOTftetdih9XLQZgkFkrJXhGz1j9cxq03tWQ==", + "dev": true + }, "watchpack": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", diff --git a/package.json b/package.json index c2254e9529..ccfef1d065 100644 --- a/package.json +++ b/package.json @@ -23,8 +23,8 @@ "test:coverage": "vitest run --coverage", "stylelint": "stylelint src/**/*.vue src/**/*.scss src/**/*.css", "stylelint:fix": "stylelint src/**/*.vue src/**/*.scss src/**/*.css --fix", - "styleguide": "concurrently \"vue-docgen --watch\" \"cd styleguide && npm ci && npx vitepress dev\"", - "styleguide:build": "vue-docgen && cd styleguide && npm ci && npx vitepress build", + "styleguide": "npm run build && concurrently \"vue-docgen --watch\" \"vitepress dev docs\"", + "styleguide:build": "npm run build && vue-docgen && vitepress build docs", "cypress": "cypress run --component", "cypress:gui": "cypress open --component", "cypress:update-snapshots": "cypress run --component --spec cypress/visual/**/*.cy.js --env type=base --config screenshotsFolder=cypress/snapshots/base" @@ -113,7 +113,8 @@ "vitest": "^0.25.7", "vitepress": "^1.0.0-alpha.31", "vue-docgen-cli": "^4.56.1", - "vue-eslint-parser": "^9.1.0" + "vue-eslint-parser": "^9.1.0", + "vue-live": "^2.3.2" }, "browserslist": [ "extends @nextcloud/browserslist-config" diff --git a/src/components/NcActions/NcActions.vue b/src/components/NcActions/NcActions.vue index 8a817d6197..6ecb5b25d9 100644 --- a/src/components/NcActions/NcActions.vue +++ b/src/components/NcActions/NcActions.vue @@ -421,14 +421,14 @@ export default { - + Remove - +