From 5440d3d6ea81085efb159ace057982ec686ffa66 Mon Sep 17 00:00:00 2001 From: mertsincan Date: Tue, 24 Oct 2023 11:09:12 +0100 Subject: [PATCH] Move nuxt-primevue to showcase and change plugin names --- modules/nuxt-primevue/module.js | 103 ++++ modules/nuxt-primevue/register.js | 157 ++++++ .../runtime/core/components/index.js | 48 ++ .../runtime/core/composables/index.js | 1 + .../runtime/core/directives/index.js | 8 + .../nuxt-primevue/runtime/plugin.client.js | 3 + .../nuxt-primevue/runtime/plugin.server.js | 11 + modules/nuxt-primevue/utils.js | 34 ++ nuxt.config.js | 7 +- package-lock.json | 493 ++++++++---------- package.json | 5 +- plugins/{appState.js => app-state.js} | 0 plugins/app.js | 5 + plugins/primeVue.js | 11 - 14 files changed, 583 insertions(+), 303 deletions(-) create mode 100644 modules/nuxt-primevue/module.js create mode 100644 modules/nuxt-primevue/register.js create mode 100644 modules/nuxt-primevue/runtime/core/components/index.js create mode 100644 modules/nuxt-primevue/runtime/core/composables/index.js create mode 100644 modules/nuxt-primevue/runtime/core/directives/index.js create mode 100644 modules/nuxt-primevue/runtime/plugin.client.js create mode 100644 modules/nuxt-primevue/runtime/plugin.server.js create mode 100644 modules/nuxt-primevue/utils.js rename plugins/{appState.js => app-state.js} (100%) create mode 100644 plugins/app.js delete mode 100644 plugins/primeVue.js diff --git a/modules/nuxt-primevue/module.js b/modules/nuxt-primevue/module.js new file mode 100644 index 000000000..806a8eeb6 --- /dev/null +++ b/modules/nuxt-primevue/module.js @@ -0,0 +1,103 @@ +import { addPlugin, addPluginTemplate, addTemplate, createResolver, defineNuxtModule } from '@nuxt/kit'; +import { register } from './register'; + +export default defineNuxtModule({ + meta: { + name: 'nuxt-primevue', + configKey: 'primevue', + compatibility: { + nuxt: '^3.0.0' + } + }, + defaults: { + usePrimeVue: true, + resolvePath: undefined, + layerOrder: 'tailwind-base, primevue, tailwind-utilities', + importPT: undefined, + options: {}, + components: { + prefix: '', + name: undefined, + include: undefined, + exclude: undefined + }, + directives: { + prefix: '', + name: undefined, + include: undefined, + exclude: undefined + }, + composables: { + prefix: '', + name: undefined, + include: undefined, + exclude: undefined + } + }, + hooks: {}, + setup(moduleOptions, nuxt) { + const resolver = createResolver(import.meta.url); + const registered = register(moduleOptions); + const { importPT } = moduleOptions; + + nuxt.options.runtimeConfig.public.primevue = { + ...moduleOptions, + ...registered + }; + + //nuxt.options.build.transpile.push('nuxt'); + nuxt.options.build.transpile.push('primevue'); + + const styleContent = () => ` +${registered.styles.map((style) => `import ${style.as} from '${style.from}';`).join('\n')} + +const styles = [ + ${registered.injectStylesAsString.join('')}, + ${registered.styles.map((item) => `${item.as} && ${item.as}.getStyleSheet ? ${item.as}.getStyleSheet() : ''`).join(',')} +].join(''); + +export { styles }; +`; + + nuxt.options.alias['#primevue-style'] = addTemplate({ + filename: 'primevue-style.mjs', + getContents: styleContent + }).dst; + + addPlugin(resolver.resolve('./runtime/plugin.client')); + + addPluginTemplate({ + filename: 'primevue-plugin.mjs', + getContents() { + return ` +import { defineNuxtPlugin, useRuntimeConfig } from '#imports'; +${registered.config.map((config) => `import ${config.as} from '${config.from}';`).join('\n')} +${registered.services.map((service) => `import ${service.as} from '${service.from}';`).join('\n')} +${registered.directives.map((directive) => `import ${directive.as} from '${directive.from}';`).join('\n')} +${importPT ? `import ${importPT.as} from '${importPT.from}';\n` : ''} + +export default defineNuxtPlugin(({ vueApp }) => { + const runtimeConfig = useRuntimeConfig(); + const config = runtimeConfig?.public?.primevue ?? {}; + const { usePrimeVue = true, options = {} } = config; + const pt = ${importPT ? `{ pt: ${importPT.as} }` : `{}`}; + + usePrimeVue && vueApp.use(PrimeVue, { ...options, ...pt }); + ${registered.services.map((service) => `vueApp.use(${service.as});`).join('\n')} + ${registered.directives.map((directive) => `vueApp.directive('${directive.name}', ${directive.as});`).join('\n')} +}); + `; + } + }); + + nuxt.hook('nitro:config', async (config) => { + config.externals = config.externals || {}; + config.externals.inline = config.externals.inline || []; + config.externals.inline.push(resolver.resolve('./runtime/plugin.server')); + config.virtual = config.virtual || {}; + config.virtual['#primevue-style'] = styleContent; + config.plugins = config.plugins || []; + config.plugins.push(resolver.resolve('./runtime/plugin.server')); + }); + } +}); diff --git a/modules/nuxt-primevue/register.js b/modules/nuxt-primevue/register.js new file mode 100644 index 000000000..5dc094a46 --- /dev/null +++ b/modules/nuxt-primevue/register.js @@ -0,0 +1,157 @@ +import { addComponent, addImports } from '@nuxt/kit'; +import { components } from './runtime/core/components'; +import { composables } from './runtime/core/composables'; +import { directives } from './runtime/core/directives'; +import { Utils } from './utils'; + +function registerItems(items = [], options = {}, params) { + const included = Utils.object.getValue(options.include, params); + const excluded = Utils.object.getValue(options.exclude, params); + + return items.filter((item) => { + const name = item?.name; + const matchedIn = included === '*' || included === undefined ? true : Utils.object.isNotEmpty(included) ? included.some((inc) => name?.toLowerCase() === inc.toLowerCase()) : false; + const matchedEx = excluded === '*' ? true : Utils.object.isNotEmpty(excluded) ? excluded.some((exc) => name?.toLowerCase() === exc.toLowerCase()) : false; + + return matchedIn && !matchedEx; + }); +} + +function registerConfig(resolvePath) { + return [ + { + name: 'PrimeVue', + as: 'PrimeVue', + from: resolvePath({ name: 'PrimeVue', as: 'PrimeVue', from: `primevue/config`, type: 'config' }) + } + ]; +} + +function registerComponents(resolvePath, options = {}) { + const items = registerItems(components, options, { components }); + + return items.map((item) => { + const _item = { ...item, name: item.name, as: item.name, from: `primevue/${item.name.toLowerCase()}` }; + const name = Utils.object.getName(_item, options); + const from = resolvePath({ name, as: _item.as, from: _item.from, type: 'component' }); + const opt = { + export: 'default', + name, + filePath: from, + global: true + }; + + addComponent(opt); + + return { + ..._item, + ...opt + }; + }); +} + +function registerDirectives(resolvePath, options = {}) { + const items = registerItems(directives, options, { directives }); + + return items.map((item) => { + const name = Utils.object.getName(item, options); + const opt = { + ...item, + name, + from: resolvePath({ name, as: item.as, from: item.from, type: 'directive' }) + }; + + return opt; + }); +} + +function registerComposables(resolvePath, options = {}) { + const items = registerItems(composables, options, { composables }); + + return items.map((item) => { + const name = Utils.object.getName(item, options); + const opt = { + ...item, + name, + from: resolvePath({ name, as: item.as, from: item.from, type: 'composable' }) + }; + + addImports(opt); + + return opt; + }); +} + +function registerServices(resolvePath, registered) { + const services = new Set(); + + registered?.components?.forEach((component) => component?.use && services.add(component.use.as)); + + return [...services].map((service) => ({ + name: service, + as: service, + from: resolvePath({ name: service, as: service, from: `primevue/${service.toLowerCase()}`, type: 'service' }) + })); +} + +function registerStyles(resolvePath, registered, options) { + const styles = [ + { + name: 'BaseStyle', + as: 'BaseStyle', + from: resolvePath({ name: 'BaseStyle', as: 'BaseStyle', from: 'primevue/base/style', type: 'style' }) + } + ]; + + if (!options?.unstyled) { + if (Utils.object.isNotEmpty(registered?.components)) { + styles.push({ + name: 'BaseComponentStyle', + as: 'BaseComponentStyle', + from: resolvePath({ name: 'BaseComponentStyle', as: 'BaseComponentStyle', from: 'primevue/basecomponent/style', type: 'style' }) + }); + } + + [registered.components, registered.directives] + .flat() + .reduce((acc, citem) => (acc.some((item) => item.as.toLowerCase() === citem.as.toLowerCase()) ? acc : [...acc, citem]), []) + .forEach((item) => + styles.push({ + name: `${item.as}Style`, + as: `${item.as}Style`, + from: resolvePath({ name: `${item.as}Style`, as: `${item.as}Style`, from: `primevue/${item.as.toLowerCase()}/style`, type: 'style' }) + }) + ); + } + + return styles; +} + +function registerInjectStylesAsString(options) { + return [Utils.object.createStyleAsString(options.layerOrder ? `@layer ${options.layerOrder}` : undefined, { name: 'layer-order' })]; +} + +export function register(moduleOptions) { + const resolvePath = (resolveOptions) => Utils.object.getPath(moduleOptions.resolvePath, resolveOptions); + + const config = registerConfig(resolvePath); + const components = registerComponents(resolvePath, moduleOptions.components); + const directives = registerDirectives(resolvePath, moduleOptions.directives); + const composables = registerComposables(resolvePath, moduleOptions.composables); + const registered = { + components, + directives, + composables + }; + const services = registerServices(resolvePath, registered); + const styles = registerStyles(resolvePath, registered, moduleOptions.options); + const injectStylesAsString = registerInjectStylesAsString(moduleOptions); + + return { + config, + ...registered, + services, + styles, + injectStylesAsString + }; +} diff --git a/modules/nuxt-primevue/runtime/core/components/index.js b/modules/nuxt-primevue/runtime/core/components/index.js new file mode 100644 index 000000000..1e491aa79 --- /dev/null +++ b/modules/nuxt-primevue/runtime/core/components/index.js @@ -0,0 +1,48 @@ +const form = [ + 'AutoComplete', + 'Calendar', + 'CascadeSelect', + 'Checkbox', + 'Chips', + 'ColorPicker', + 'Dropdown', + 'Editor', + 'InputMask', + 'InputNumber', + 'InputSwitch', + 'InputText', + 'Knob', + 'Listbox', + 'MultiSelect', + 'Password', + 'RadioButton', + 'Rating', + 'SelectButton', + 'Slider', + 'Textarea', + 'ToggleButton', + 'TreeSelect', + 'TriStateCheckbox' +]; + +const button = ['Button', 'SpeedDial', 'SplitButton']; + +const data = ['Column', 'Row', 'ColumnGroup', 'DataTable', 'DataView', 'DataViewLayoutOptions', 'OrderList', 'OrganizationChart', 'Paginator', 'PickList', 'Tree', 'TreeTable', 'Timeline', 'VirtualScroller']; + +const panel = ['Accordion', 'AccordionTab', 'Card', 'DeferredContent', 'Divider', 'Fieldset', 'Panel', 'ScrollPanel', 'Splitter', 'SplitterPanel', 'TabView', 'TabPanel', 'Toolbar']; + +const overlay = [{ name: 'ConfirmDialog', use: { as: 'ConfirmationService' } }, { name: 'ConfirmPopup', use: { as: 'ConfirmationService' } }, 'Dialog', { name: 'DynamicDialog', use: { as: 'DialogService' } }, 'OverlayPanel', 'Sidebar']; + +const file = ['FileUpload']; + +const menu = ['Breadcrumb', 'ContextMenu', 'Dock', 'Menu', 'Menubar', 'MegaMenu', 'PanelMenu', 'Steps', 'TabMenu', 'TieredMenu']; + +const chart = ['Chart']; + +const messages = ['Message', 'InlineMessage', { name: 'Toast', use: { as: 'ToastService' } }]; + +const media = ['Carousel', 'Galleria', 'Image']; + +const misc = ['Avatar', 'AvatarGroup', 'Badge', 'BlockUI', 'Chip', 'Inplace', 'ScrollTop', 'Skeleton', 'ProgressBar', 'ProgressSpinner', 'Tag', 'Terminal']; + +export const components = [...form, ...button, ...data, ...panel, ...overlay, ...file, ...menu, ...chart, ...messages, ...media, ...misc].map((c) => (typeof c === 'string' ? { name: c } : c)); diff --git a/modules/nuxt-primevue/runtime/core/composables/index.js b/modules/nuxt-primevue/runtime/core/composables/index.js new file mode 100644 index 000000000..11da322dd --- /dev/null +++ b/modules/nuxt-primevue/runtime/core/composables/index.js @@ -0,0 +1 @@ +export const composables = [{ name: 'useStyle', as: 'useStyle', from: 'primevue/usestyle' }]; diff --git a/modules/nuxt-primevue/runtime/core/directives/index.js b/modules/nuxt-primevue/runtime/core/directives/index.js new file mode 100644 index 000000000..49acbb92c --- /dev/null +++ b/modules/nuxt-primevue/runtime/core/directives/index.js @@ -0,0 +1,8 @@ +export const directives = [ + { name: 'badge', as: 'BadgeDirective', from: 'primevue/badgedirective' }, + { name: 'tooltip', as: 'Tooltip', from: 'primevue/tooltip' }, + { name: 'ripple', as: 'Ripple', from: 'primevue/ripple' }, + { name: 'styleclass', as: 'StyleClass', from: 'primevue/styleclass' }, + { name: 'focustrap', as: 'FocusTrap', from: 'primevue/focustrap' }, + { name: 'animate', as: 'Animate', from: 'primevue/animate' } +]; diff --git a/modules/nuxt-primevue/runtime/plugin.client.js b/modules/nuxt-primevue/runtime/plugin.client.js new file mode 100644 index 000000000..b7e314bf1 --- /dev/null +++ b/modules/nuxt-primevue/runtime/plugin.client.js @@ -0,0 +1,3 @@ +import { defineNuxtPlugin } from 'nuxt/app'; + +export default defineNuxtPlugin(({ vueApp }) => {}); diff --git a/modules/nuxt-primevue/runtime/plugin.server.js b/modules/nuxt-primevue/runtime/plugin.server.js new file mode 100644 index 000000000..62119d8f3 --- /dev/null +++ b/modules/nuxt-primevue/runtime/plugin.server.js @@ -0,0 +1,11 @@ +// @ts-expect-error +import { styles } from '#primevue-style'; +//import { useRuntimeConfig } from '#imports'; + +const defineNitroPlugin = (def) => def; + +export default defineNitroPlugin(async (nitroApp) => { + nitroApp.hooks.hook('render:html', (html) => { + html.head.push(styles); + }); +}); diff --git a/modules/nuxt-primevue/utils.js b/modules/nuxt-primevue/utils.js new file mode 100644 index 000000000..591916a91 --- /dev/null +++ b/modules/nuxt-primevue/utils.js @@ -0,0 +1,34 @@ +export const Utils = { + object: { + isEmpty(value) { + return value === null || value === undefined || value === '' || (Array.isArray(value) && value.length === 0) || (!(value instanceof Date) && typeof value === 'object' && Object.keys(value).length === 0); + }, + isNotEmpty(value) { + return !this.isEmpty(value); + }, + isFunction(value) { + return !!(value && value.constructor && value.call && value.apply); + }, + isString(value, empty = true) { + return typeof value === 'string' && (empty || value !== ''); + }, + getValue(obj, ...params) { + return this.isFunction(obj) ? obj(...params) : obj; + }, + getName(item, options) { + return this.isFunction(options?.name) ? options.name(item) : `${options.prefix}${item.name}`; + }, + getPath(fn, options) { + return this.isFunction(fn) ? fn(options) : options.from; + }, + createStyleAsString(css, options = { name: '' }) { + if (css) { + const { name, ...rest } = options; + + return `''`; + } + + return ''; + } + } +}; diff --git a/nuxt.config.js b/nuxt.config.js index e292db328..8405881e7 100644 --- a/nuxt.config.js +++ b/nuxt.config.js @@ -5,7 +5,7 @@ const baseUrl = '/'; // https://nuxt.com/docs/api/configuration/nuxt-config export default defineNuxtConfig({ typescript: false, - modules: ['nuxt-gtag', 'nuxt-primevue'], + modules: ['nuxt-gtag', '~/modules/nuxt-primevue/module'], components: [ '~/components', { @@ -17,7 +17,10 @@ export default defineNuxtConfig({ alias: viteConfig.resolve.alias }, primevue: { - usePrimeVue: false, + options: { + ripple: true + }, + layerOrder: 'primevue', resolvePath: function ({ as, from, type }) { const resolvedPath = from.replace('primevue', '@/components/lib'); diff --git a/package-lock.json b/package-lock.json index 013422bfe..84e8884c2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -36,7 +36,6 @@ "gulp-uglifycss": "^1.0.6", "jsdom": "^19.0.0", "nuxt": "3.3.2", - "nuxt-primevue": "^0.0.3", "prettier": "2.7.1", "primeflex": "^3.3.1", "primeicons": "^6.0.1", @@ -2412,21 +2411,21 @@ } }, "node_modules/@eslint/js": { - "version": "8.51.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.51.0.tgz", - "integrity": "sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg==", + "version": "8.52.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.52.0.tgz", + "integrity": "sha512-mjZVbpaeMZludF2fsWLD0Z9gCref1Tk4i9+wddjRvpUNqqcndPkBD09N/Mapey0b3jaXbLm2kICwFv2E64QinA==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.11", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", - "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", + "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", + "@humanwhocodes/object-schema": "^2.0.1", "debug": "^4.1.1", "minimatch": "^3.0.5" }, @@ -2448,9 +2447,9 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", + "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", "dev": true }, "node_modules/@ioredis/commands": { @@ -2787,13 +2786,13 @@ } }, "node_modules/@nuxt/telemetry/node_modules/@nuxt/kit": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@nuxt/kit/-/kit-3.7.4.tgz", - "integrity": "sha512-/S5abZL62BITCvC/TY3KWA6N721U1Osln3cQdBb56XHIeafZCBVqTi92Xb0o7ovl72mMRhrKwRu7elzvz9oT/g==", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/@nuxt/kit/-/kit-3.8.0.tgz", + "integrity": "sha512-oIthQxeMIVs4ESVP5FqLYn8tj0S1sLd+eYreh+dNYgnJ2pTi7+THR12ONBNHjk668jqEe7ErUJ8UlGwqBzgezg==", "dev": true, "dependencies": { - "@nuxt/schema": "3.7.4", - "c12": "^1.4.2", + "@nuxt/schema": "3.8.0", + "c12": "^1.5.1", "consola": "^3.2.3", "defu": "^6.1.2", "globby": "^13.2.2", @@ -2806,9 +2805,9 @@ "pkg-types": "^1.0.3", "scule": "^1.0.0", "semver": "^7.5.4", - "ufo": "^1.3.0", + "ufo": "^1.3.1", "unctx": "^2.3.1", - "unimport": "^3.3.0", + "unimport": "^3.4.0", "untyped": "^1.4.0" }, "engines": { @@ -2816,9 +2815,9 @@ } }, "node_modules/@nuxt/telemetry/node_modules/@nuxt/schema": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@nuxt/schema/-/schema-3.7.4.tgz", - "integrity": "sha512-q6js+97vDha4Fa2x2kDVEuokJr+CGIh1TY2wZp2PLZ7NhG3XEeib7x9Hq8XE8B6pD0GKBRy3eRPPOY69gekBCw==", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/@nuxt/schema/-/schema-3.8.0.tgz", + "integrity": "sha512-VEDVeCjdVowhoY5vIBSz94+SSwmM204jN6TNe/ShBJ2d/vZiy9EtLbhOwqaPNFHwnN1fl/XFHThwJiexdB9D1w==", "dev": true, "dependencies": { "@nuxt/ui-templates": "^1.3.1", @@ -2829,8 +2828,8 @@ "pkg-types": "^1.0.3", "postcss-import-resolver": "^2.0.0", "std-env": "^3.4.3", - "ufo": "^1.3.0", - "unimport": "^3.3.0", + "ufo": "^1.3.1", + "unimport": "^3.4.0", "untyped": "^1.4.0" }, "engines": { @@ -3879,9 +3878,9 @@ } }, "node_modules/@types/eslint": { - "version": "8.44.5", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.5.tgz", - "integrity": "sha512-Ol2eio8LtD/tGM4Ga7Jb83NuFwEv3NqvssSlifXL9xuFpSyQZw0ecmm2Kux6iU0KxQmp95hlPmGCzGJ0TCFeRA==", + "version": "8.44.6", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.6.tgz", + "integrity": "sha512-P6bY56TVmX8y9J87jHNgQh43h6VVU+6H7oN7hgvivV81K2XY8qJZ5vqPy/HdUoVIelii2kChYVzQanlswPWVFw==", "dev": true, "peer": true, "dependencies": { @@ -3912,9 +3911,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.8.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.7.tgz", - "integrity": "sha512-21TKHHh3eUHIi2MloeptJWALuCu5H7HQTdTrWIFReA8ad+aggoX+lRes3ex7/FtpC+sVUpFMQ+QTfYr74mruiQ==", + "version": "20.8.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.8.tgz", + "integrity": "sha512-YRsdVxq6OaLfmR9Hy816IMp33xOBjfyOgUd77ehqg96CFywxAPbDbXvAsuN2KVg2HOT8Eh6uAfU+l4WffwPVrQ==", "dev": true, "dependencies": { "undici-types": "~5.25.1" @@ -3926,6 +3925,12 @@ "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", "dev": true }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, "node_modules/@unhead/dom": { "version": "1.7.4", "resolved": "https://registry.npmjs.org/@unhead/dom/-/dom-1.7.4.tgz", @@ -4268,49 +4273,49 @@ } }, "node_modules/@vue/compiler-core": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.4.tgz", - "integrity": "sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==", + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.6.tgz", + "integrity": "sha512-2JNjemwaNwf+MkkatATVZi7oAH1Hx0B04DdPH3ZoZ8vKC1xZVP7nl4HIsk8XYd3r+/52sqqoz9TWzYc3yE9dqA==", "dependencies": { - "@babel/parser": "^7.21.3", - "@vue/shared": "3.3.4", + "@babel/parser": "^7.23.0", + "@vue/shared": "3.3.6", "estree-walker": "^2.0.2", "source-map-js": "^1.0.2" } }, "node_modules/@vue/compiler-dom": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz", - "integrity": "sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==", + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.6.tgz", + "integrity": "sha512-1MxXcJYMHiTPexjLAJUkNs/Tw2eDf2tY3a0rL+LfuWyiKN2s6jvSwywH3PWD8bKICjfebX3GWx2Os8jkRDq3Ng==", "dependencies": { - "@vue/compiler-core": "3.3.4", - "@vue/shared": "3.3.4" + "@vue/compiler-core": "3.3.6", + "@vue/shared": "3.3.6" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz", - "integrity": "sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==", + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.6.tgz", + "integrity": "sha512-/Kms6du2h1VrXFreuZmlvQej8B1zenBqIohP0690IUBkJjsFvJxY0crcvVRJ0UhMgSR9dewB+khdR1DfbpArJA==", "dependencies": { - "@babel/parser": "^7.20.15", - "@vue/compiler-core": "3.3.4", - "@vue/compiler-dom": "3.3.4", - "@vue/compiler-ssr": "3.3.4", - "@vue/reactivity-transform": "3.3.4", - "@vue/shared": "3.3.4", + "@babel/parser": "^7.23.0", + "@vue/compiler-core": "3.3.6", + "@vue/compiler-dom": "3.3.6", + "@vue/compiler-ssr": "3.3.6", + "@vue/reactivity-transform": "3.3.6", + "@vue/shared": "3.3.6", "estree-walker": "^2.0.2", - "magic-string": "^0.30.0", - "postcss": "^8.1.10", + "magic-string": "^0.30.5", + "postcss": "^8.4.31", "source-map-js": "^1.0.2" } }, "node_modules/@vue/compiler-ssr": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz", - "integrity": "sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==", + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.6.tgz", + "integrity": "sha512-QTIHAfDCHhjXlYGkUg5KH7YwYtdUM1vcFl/FxFDlD6d0nXAmnjizka3HITp8DGudzHndv2PjKVS44vqqy0vP4w==", "dependencies": { - "@vue/compiler-dom": "3.3.4", - "@vue/shared": "3.3.4" + "@vue/compiler-dom": "3.3.6", + "@vue/shared": "3.3.6" } }, "node_modules/@vue/devtools-api": { @@ -4319,60 +4324,60 @@ "integrity": "sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==" }, "node_modules/@vue/reactivity": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.4.tgz", - "integrity": "sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==", + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.6.tgz", + "integrity": "sha512-gtChAumfQz5lSy5jZXfyXbKrIYPf9XEOrIr6rxwVyeWVjFhJwmwPLtV6Yis+M9onzX++I5AVE9j+iPH60U+B8Q==", "dependencies": { - "@vue/shared": "3.3.4" + "@vue/shared": "3.3.6" } }, "node_modules/@vue/reactivity-transform": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.4.tgz", - "integrity": "sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==", + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.6.tgz", + "integrity": "sha512-RlJl4dHfeO7EuzU1iJOsrlqWyJfHTkJbvYz/IOJWqu8dlCNWtxWX377WI0VsbAgBizjwD+3ZjdnvSyyFW1YVng==", "dependencies": { - "@babel/parser": "^7.20.15", - "@vue/compiler-core": "3.3.4", - "@vue/shared": "3.3.4", + "@babel/parser": "^7.23.0", + "@vue/compiler-core": "3.3.6", + "@vue/shared": "3.3.6", "estree-walker": "^2.0.2", - "magic-string": "^0.30.0" + "magic-string": "^0.30.5" } }, "node_modules/@vue/runtime-core": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.4.tgz", - "integrity": "sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==", + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.6.tgz", + "integrity": "sha512-qp7HTP1iw1UW2ZGJ8L3zpqlngrBKvLsDAcq5lA6JvEXHmpoEmjKju7ahM9W2p/h51h0OT5F2fGlP/gMhHOmbUA==", "dependencies": { - "@vue/reactivity": "3.3.4", - "@vue/shared": "3.3.4" + "@vue/reactivity": "3.3.6", + "@vue/shared": "3.3.6" } }, "node_modules/@vue/runtime-dom": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz", - "integrity": "sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==", + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.6.tgz", + "integrity": "sha512-AoX3Cp8NqMXjLbIG9YR6n/pPLWE9TiDdk6wTJHFnl2GpHzDFH1HLBC9wlqqQ7RlnvN3bVLpzPGAAH00SAtOxHg==", "dependencies": { - "@vue/runtime-core": "3.3.4", - "@vue/shared": "3.3.4", - "csstype": "^3.1.1" + "@vue/runtime-core": "3.3.6", + "@vue/shared": "3.3.6", + "csstype": "^3.1.2" } }, "node_modules/@vue/server-renderer": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.4.tgz", - "integrity": "sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==", + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.6.tgz", + "integrity": "sha512-kgLoN43W4ERdZ6dpyy+gnk2ZHtcOaIr5Uc/WUP5DRwutgvluzu2pudsZGoD2b7AEJHByUVMa9k6Sho5lLRCykw==", "dependencies": { - "@vue/compiler-ssr": "3.3.4", - "@vue/shared": "3.3.4" + "@vue/compiler-ssr": "3.3.6", + "@vue/shared": "3.3.6" }, "peerDependencies": { - "vue": "3.3.4" + "vue": "3.3.6" } }, "node_modules/@vue/shared": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.4.tgz", - "integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==" + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.6.tgz", + "integrity": "sha512-Xno5pEqg8SVhomD0kTSmfh30ZEmV/+jZtyh39q6QflrjdJCXah5lrnOLi9KB6a5k5aAHXMXjoMnxlzUkCNfWLQ==" }, "node_modules/@vue/test-utils": { "version": "2.4.1", @@ -5249,13 +5254,13 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.5.tgz", - "integrity": "sha512-Q6CdATeAvbScWPNLB8lzSO7fgUVBkQt6zLgNlfyeCr/EQaEQR+bWiBYYPYAFyE528BMjRhL+1QBMOI4jc/c5TA==", + "version": "0.8.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.6.tgz", + "integrity": "sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ==", "dev": true, "dependencies": { "@babel/helper-define-polyfill-provider": "^0.4.3", - "core-js-compat": "^3.32.2" + "core-js-compat": "^3.33.1" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -5539,17 +5544,17 @@ } }, "node_modules/c12": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/c12/-/c12-1.4.2.tgz", - "integrity": "sha512-3IP/MuamSVRVw8W8+CHWAz9gKN4gd+voF2zm/Ln6D25C2RhytEZ1ABbC8MjKr4BR9rhoV1JQ7jJA158LDiTkLg==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/c12/-/c12-1.5.1.tgz", + "integrity": "sha512-BWZRJgDEveT8uI+cliCwvYSSSSvb4xKoiiu5S0jaDbKBopQLQF7E+bq9xKk1pTcG+mUa3yXuFO7bD9d8Lr9Xxg==", "dependencies": { "chokidar": "^3.5.3", "defu": "^6.1.2", "dotenv": "^16.3.1", - "giget": "^1.1.2", - "jiti": "^1.18.2", - "mlly": "^1.4.0", - "ohash": "^1.1.2", + "giget": "^1.1.3", + "jiti": "^1.20.0", + "mlly": "^1.4.2", + "ohash": "^1.1.3", "pathe": "^1.1.1", "perfect-debounce": "^1.0.0", "pkg-types": "^1.0.3", @@ -5724,13 +5729,14 @@ } }, "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -5770,9 +5776,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001550", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001550.tgz", - "integrity": "sha512-p82WjBYIypO0ukTsd/FG3Xxs+4tFeaY9pfT4amQL8KWtYH7H9nYwReGAbMTJ0hsmRO8IfDtsS6p3ZWj8+1c2RQ==", + "version": "1.0.30001553", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001553.tgz", + "integrity": "sha512-N0ttd6TrFfuqKNi+pMgWJTb9qrdJu4JSpgPFLe/lrD19ugC6fZgF0pUewRowDwzdDnb9V41mFcdlYgl/PyKf4A==", "funding": [ { "type": "opencollective", @@ -6474,9 +6480,9 @@ } }, "node_modules/core-js-compat": { - "version": "3.33.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.0.tgz", - "integrity": "sha512-0w4LcLXsVEuNkIqwjjf9rjCoPhK8uqA4tMRh4Ge26vfLtUutshn+aRJU21I9LCJlh2QQHfisNToLjw1XEJLTWw==", + "version": "3.33.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.1.tgz", + "integrity": "sha512-6pYKNOgD/j/bkC5xS5IIg6bncid3rfrI42oBH1SQJbsmYPKF7rhzcFzYCcxYMmNQQ0rCEB8WqpW7QHndOggaeQ==", "dev": true, "dependencies": { "browserslist": "^4.22.1" @@ -7258,9 +7264,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.557", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.557.tgz", - "integrity": "sha512-6x0zsxyMXpnMJnHrondrD3SuAeKcwij9S+83j2qHAQPXbGTDDfgImzzwgGlzrIcXbHQ42tkG4qA6U860cImNhw==" + "version": "1.4.565", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.565.tgz", + "integrity": "sha512-XbMoT6yIvg2xzcbs5hCADi0dXBh4//En3oFXmtPX+jiyyiCTiM9DGFT2SLottjpEs9Z8Mh8SqahbR96MaHfuSg==" }, "node_modules/emoji-regex": { "version": "8.0.0", @@ -7482,18 +7488,19 @@ } }, "node_modules/eslint": { - "version": "8.51.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.51.0.tgz", - "integrity": "sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA==", + "version": "8.52.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.52.0.tgz", + "integrity": "sha512-zh/JHnaixqHZsolRB/w9/02akBk9EPrOs9JwcTP2ek7yL5bVvXuRariiaAjjoJ5DvuwQ1WAE/HsMz+w17YgBCg==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", "@eslint/eslintrc": "^2.1.2", - "@eslint/js": "8.51.0", - "@humanwhocodes/config-array": "^0.11.11", + "@eslint/js": "8.52.0", + "@humanwhocodes/config-array": "^0.11.13", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -7613,9 +7620,9 @@ } }, "node_modules/eslint-plugin-vue": { - "version": "9.17.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.17.0.tgz", - "integrity": "sha512-r7Bp79pxQk9I5XDP0k2dpUC7Ots3OSWgvGZNu3BxmKK6Zg7NgVtcOB6OCna5Kb9oQwJPl5hq183WD0SY5tZtIQ==", + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.18.0.tgz", + "integrity": "sha512-yUM8a2OD/7Qs0PiugkRaxgz5KBRvzMvWShity2UvVFAN0yk8029mGpTdg/TNARPiYzp335mEwDHwcAR8tQNe4g==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", @@ -8694,15 +8701,15 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -8795,9 +8802,9 @@ } }, "node_modules/git-url-parse": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-13.1.0.tgz", - "integrity": "sha512-5FvPJP/70WkIprlUZ33bm4UAaFdjcLkJLpWft1BeZKqwR0uhhNGoKwlUaPtVb4LxCSQ++erHapRak9kWGj+FCA==", + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-13.1.1.tgz", + "integrity": "sha512-PCFJyeSSdtnbfhSNRw9Wk96dDCNx+sogTe4YNXeXSJxt7xz5hvXekuRn9JX7m+Mf4OscCu8h+mtAl3+h5Fo8lQ==", "dev": true, "dependencies": { "git-up": "^7.0.0" @@ -9315,15 +9322,6 @@ "integrity": "sha512-M1Ob1zPSIvlARiJUkKqvAZ3VAqQY6Jcuth/pBKQ2b1dX/Qx0OnJ8Vux6J2H5PTMQeRzWrrbTu70VxBfv/OPDJA==", "dev": true }, - "node_modules/has": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", - "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", - "dev": true, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -9345,12 +9343,12 @@ } }, "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.1" + "get-intrinsic": "^1.2.2" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -9445,6 +9443,18 @@ "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz", "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==" }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/homedir-polyfill": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", @@ -9858,12 +9868,12 @@ } }, "node_modules/is-core-module": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", - "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dev": true, "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -12001,12 +12011,12 @@ } }, "node_modules/nuxt-gtag/node_modules/@nuxt/kit": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@nuxt/kit/-/kit-3.7.4.tgz", - "integrity": "sha512-/S5abZL62BITCvC/TY3KWA6N721U1Osln3cQdBb56XHIeafZCBVqTi92Xb0o7ovl72mMRhrKwRu7elzvz9oT/g==", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/@nuxt/kit/-/kit-3.8.0.tgz", + "integrity": "sha512-oIthQxeMIVs4ESVP5FqLYn8tj0S1sLd+eYreh+dNYgnJ2pTi7+THR12ONBNHjk668jqEe7ErUJ8UlGwqBzgezg==", "dependencies": { - "@nuxt/schema": "3.7.4", - "c12": "^1.4.2", + "@nuxt/schema": "3.8.0", + "c12": "^1.5.1", "consola": "^3.2.3", "defu": "^6.1.2", "globby": "^13.2.2", @@ -12019,9 +12029,9 @@ "pkg-types": "^1.0.3", "scule": "^1.0.0", "semver": "^7.5.4", - "ufo": "^1.3.0", + "ufo": "^1.3.1", "unctx": "^2.3.1", - "unimport": "^3.3.0", + "unimport": "^3.4.0", "untyped": "^1.4.0" }, "engines": { @@ -12029,9 +12039,9 @@ } }, "node_modules/nuxt-gtag/node_modules/@nuxt/schema": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@nuxt/schema/-/schema-3.7.4.tgz", - "integrity": "sha512-q6js+97vDha4Fa2x2kDVEuokJr+CGIh1TY2wZp2PLZ7NhG3XEeib7x9Hq8XE8B6pD0GKBRy3eRPPOY69gekBCw==", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/@nuxt/schema/-/schema-3.8.0.tgz", + "integrity": "sha512-VEDVeCjdVowhoY5vIBSz94+SSwmM204jN6TNe/ShBJ2d/vZiy9EtLbhOwqaPNFHwnN1fl/XFHThwJiexdB9D1w==", "dependencies": { "@nuxt/ui-templates": "^1.3.1", "consola": "^3.2.3", @@ -12041,8 +12051,8 @@ "pkg-types": "^1.0.3", "postcss-import-resolver": "^2.0.0", "std-env": "^3.4.3", - "ufo": "^1.3.0", - "unimport": "^3.3.0", + "ufo": "^1.3.1", + "unimport": "^3.4.0", "untyped": "^1.4.0" }, "engines": { @@ -12087,111 +12097,6 @@ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, - "node_modules/nuxt-primevue": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/nuxt-primevue/-/nuxt-primevue-0.0.3.tgz", - "integrity": "sha512-0k9i+whs+gNNua6WOc75QTfgRaG0MUP4WHX8QjUaWHFxjUzEUiuzQlbeCmiPRnf/LG2YnxsqyPzz+mNCrOa7/A==", - "dev": true, - "dependencies": { - "@nuxt/kit": "^3.7.3" - }, - "peerDependencies": { - "primevue": "^3.36.0" - } - }, - "node_modules/nuxt-primevue/node_modules/@nuxt/kit": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@nuxt/kit/-/kit-3.7.4.tgz", - "integrity": "sha512-/S5abZL62BITCvC/TY3KWA6N721U1Osln3cQdBb56XHIeafZCBVqTi92Xb0o7ovl72mMRhrKwRu7elzvz9oT/g==", - "dev": true, - "dependencies": { - "@nuxt/schema": "3.7.4", - "c12": "^1.4.2", - "consola": "^3.2.3", - "defu": "^6.1.2", - "globby": "^13.2.2", - "hash-sum": "^2.0.0", - "ignore": "^5.2.4", - "jiti": "^1.20.0", - "knitwork": "^1.0.0", - "mlly": "^1.4.2", - "pathe": "^1.1.1", - "pkg-types": "^1.0.3", - "scule": "^1.0.0", - "semver": "^7.5.4", - "ufo": "^1.3.0", - "unctx": "^2.3.1", - "unimport": "^3.3.0", - "untyped": "^1.4.0" - }, - "engines": { - "node": "^14.18.0 || >=16.10.0" - } - }, - "node_modules/nuxt-primevue/node_modules/@nuxt/schema": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@nuxt/schema/-/schema-3.7.4.tgz", - "integrity": "sha512-q6js+97vDha4Fa2x2kDVEuokJr+CGIh1TY2wZp2PLZ7NhG3XEeib7x9Hq8XE8B6pD0GKBRy3eRPPOY69gekBCw==", - "dev": true, - "dependencies": { - "@nuxt/ui-templates": "^1.3.1", - "consola": "^3.2.3", - "defu": "^6.1.2", - "hookable": "^5.5.3", - "pathe": "^1.1.1", - "pkg-types": "^1.0.3", - "postcss-import-resolver": "^2.0.0", - "std-env": "^3.4.3", - "ufo": "^1.3.0", - "unimport": "^3.3.0", - "untyped": "^1.4.0" - }, - "engines": { - "node": "^14.18.0 || >=16.10.0" - } - }, - "node_modules/nuxt-primevue/node_modules/consola": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/consola/-/consola-3.2.3.tgz", - "integrity": "sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==", - "dev": true, - "engines": { - "node": "^14.18.0 || >=16.10.0" - } - }, - "node_modules/nuxt-primevue/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/nuxt-primevue/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/nuxt-primevue/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/nuxt/node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -13871,16 +13776,6 @@ "integrity": "sha512-KDeO94CbWI4pKsPnYpA1FPjo79EsY9I+M8ywoPBSf9XMXoe/0crjbUK7jcQEDHuc0ZMRIZsxH3TYLv4TUtHmAA==", "dev": true }, - "node_modules/primevue": { - "version": "3.36.0", - "resolved": "https://registry.npmjs.org/primevue/-/primevue-3.36.0.tgz", - "integrity": "sha512-si+pcbh+Y2by8cn4UrPFkC+ncS5fcv3ShKbTGINOsloKParRbSiqgBsqI8QmVkmutSLyABe6v5Kutjdenw2JFw==", - "dev": true, - "peer": true, - "peerDependencies": { - "vue": "^3.0.0" - } - }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -14900,6 +14795,7 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, "hasInstallScript": true, "optional": true, "os": [ @@ -15354,6 +15250,21 @@ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", "dev": true }, + "node_modules/set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/set-function-name": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", @@ -16691,7 +16602,7 @@ "version": "4.9.5", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "dev": true, + "devOptional": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -17538,9 +17449,9 @@ } }, "node_modules/vee-validate/node_modules/type-fest": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.4.0.tgz", - "integrity": "sha512-HT3RRs7sTfY22KuPQJkD/XjbTbxgP2Je5HPt6H6JEGvcjHd5Lqru75EbrP3tb4FYjNJ+DjLp+MNQTFQU0mhXNw==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.5.0.tgz", + "integrity": "sha512-diLQivFzddJl4ylL3jxSkEc39Tpw7o1QeEHIPxVwryDK2lpB7Nqhzhuo6v5/Ls08Z0yPSAhsyAWlv1/H0ciNmw==", "engines": { "node": ">=16" }, @@ -18626,15 +18537,23 @@ "dev": true }, "node_modules/vue": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.4.tgz", - "integrity": "sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==", + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.6.tgz", + "integrity": "sha512-jJIDETeWJnoY+gfn4ZtMPMS5KtbP4ax+CT4dcQFhTnWEk8xMupFyQ0JxL28nvT/M4+p4a0ptxaV2WY0LiIxvRg==", "dependencies": { - "@vue/compiler-dom": "3.3.4", - "@vue/compiler-sfc": "3.3.4", - "@vue/runtime-dom": "3.3.4", - "@vue/server-renderer": "3.3.4", - "@vue/shared": "3.3.4" + "@vue/compiler-dom": "3.3.6", + "@vue/compiler-sfc": "3.3.6", + "@vue/runtime-dom": "3.3.6", + "@vue/server-renderer": "3.3.6", + "@vue/shared": "3.3.6" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/vue-bundle-renderer": { @@ -19221,9 +19140,9 @@ } }, "node_modules/zhead": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/zhead/-/zhead-2.1.3.tgz", - "integrity": "sha512-T6kZx8TYdLhuy2vURjPUj9EK9Dobnctu12CYw9ibu6Xj/UAqh2q2bQaA3vFrL4Rna5+CXYHYN3uJrUu6VulYzw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/zhead/-/zhead-2.2.0.tgz", + "integrity": "sha512-NzynJDdbRD5CIMZEoWd6esLlUwm4PzjbHVEu7qpLNpi32DY0wd1a83XZP86hkW8HPqjjaYBuMfapx1iahMF46g==", "dev": true, "funding": { "url": "https://github.com/sponsors/harlan-zw" diff --git a/package.json b/package.json index 405e4e78d..8a6feba3a 100644 --- a/package.json +++ b/package.json @@ -75,12 +75,11 @@ "sass-loader": "^8.0.2", "typedoc": "0.23.23", "typescript": "^4.9.4", - "vitest": "^0.29.8", - "nuxt-primevue": "^0.0.3" + "vitest": "^0.29.8" }, "dependencies": { "@docsearch/js": "^3.3.3", "nuxt-gtag": "^0.6.2", "vee-validate": "^4.8.2" } -} \ No newline at end of file +} diff --git a/plugins/appState.js b/plugins/app-state.js similarity index 100% rename from plugins/appState.js rename to plugins/app-state.js diff --git a/plugins/app.js b/plugins/app.js new file mode 100644 index 000000000..11cf8d2ca --- /dev/null +++ b/plugins/app.js @@ -0,0 +1,5 @@ +import CodeHighlight from '@/directives/CodeHighlight'; + +export default defineNuxtPlugin((nuxtApp) => { + nuxtApp.vueApp.directive('code', CodeHighlight); +}); diff --git a/plugins/primeVue.js b/plugins/primeVue.js deleted file mode 100644 index ee048d5bf..000000000 --- a/plugins/primeVue.js +++ /dev/null @@ -1,11 +0,0 @@ -import PrimeVue from '@/components/lib/config/PrimeVue'; - -import Animate from '@/components/lib/animate/Animate'; -import CodeHighlight from '@/directives/CodeHighlight'; - -export default defineNuxtPlugin((nuxtApp) => { - nuxtApp.vueApp.use(PrimeVue, { ripple: true }); - - nuxtApp.vueApp.directive('animate', Animate); - nuxtApp.vueApp.directive('code', CodeHighlight); -});