diff --git a/.eslintignore b/.eslintignore
deleted file mode 100644
index a786b23..0000000
--- a/.eslintignore
+++ /dev/null
@@ -1,3 +0,0 @@
-dist
-node_modules
-client
diff --git a/.eslintrc b/.eslintrc
deleted file mode 100644
index 9e17846..0000000
--- a/.eslintrc
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "root": true,
- "extends": ["@nuxt/eslint-config"]
-}
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 983b400..ea07a6b 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -48,7 +48,6 @@ jobs:
run: nr build
- name: Relase Edge
- if: github.event_name == 'push' || github.actor == 'flowko'
run: |
chmod +x ./scripts/release-edge.sh
./scripts/release-edge.sh
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000..eae23ff
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,43 @@
+{
+ // Enable the ESlint flat config support
+ "eslint.experimental.useFlatConfig": true,
+
+ // Disable the default formatter, use eslint instead
+ "prettier.enable": false,
+ "editor.formatOnSave": false,
+
+ // Auto fix
+ "editor.codeActionsOnSave": {
+ "source.fixAll.eslint": "explicit",
+ "source.organizeImports": "never"
+ },
+
+ // Silent the stylistic rules in you IDE, but still auto fix them
+ "eslint.rules.customizations": [
+ { "rule": "style/*", "severity": "off" },
+ { "rule": "format/*", "severity": "off" },
+ { "rule": "*-indent", "severity": "off" },
+ { "rule": "*-spacing", "severity": "off" },
+ { "rule": "*-spaces", "severity": "off" },
+ { "rule": "*-order", "severity": "off" },
+ { "rule": "*-dangle", "severity": "off" },
+ { "rule": "*-newline", "severity": "off" },
+ { "rule": "*quotes", "severity": "off" },
+ { "rule": "*semi", "severity": "off" }
+ ],
+
+ // Enable eslint for all supported languages
+ "eslint.validate": [
+ "javascript",
+ "javascriptreact",
+ "typescript",
+ "typescriptreact",
+ "vue",
+ "html",
+ "markdown",
+ "json",
+ "jsonc",
+ "yaml",
+ "toml"
+ ]
+}
diff --git a/README.md b/README.md
index 46b9629..3fbca01 100644
--- a/README.md
+++ b/README.md
@@ -1,105 +1,3 @@
-[](https://vuemail.net)
+we just merged a new project rewrite, please do check the docs and the updated logic https://vuemail.net/
-
-
-
-[![npm version][npm-version-src]][npm-version-href]
-[![npm downloads][npm-downloads-src]][npm-downloads-href]
-[![JSDocs][jsdocs-src]][jsdocs-href]
-[![License][license-src]][license-href]
-
-
-
-# @vue-email/nuxt
-
-Official Nuxt module for Vue Email. Build email templates with Vue components.
-
-- [✨ Release Notes](https://github.com/vue-email/nuxt/releases)
-- [📖 Documentation](https://vuemail.net/ssr/nuxt)
-
-## Features
-
-- Auto-import Vue Email components and composables
-- `useCompiler` utility to render emails on the server
-- All the DX Magic that comes with Nuxt ✨
-- Vue Email DevTools integration
-
-## Ecosystem
-
-| Package | Version |
-| --------------------------- | :------------------------------------------------------------------------------------------------- |
-| [Vue-Email](https://github.com/vue-email/vue-email) |  |
-| [Nuxt](https://github.com/vue-email/nuxt) |  |
-[SSR Compiler](https://github.com/vue-email/compiler) |  |
-| [CLI](https://github.com/vue-email/cli) |  |
-
-## Quick Setup
-
-1. Add `@vue-email/nuxt` dependency to your project
-
-```bash
-# Using pnpm
-pnpm add -D @vue-email/nuxt
-
-# Using yarn
-yarn add --dev @vue-email/nuxt
-
-# Using npm
-npm install --save-dev @vue-email/nuxt
-```
-
-2. Add `@vue-email/nuxt` to the `modules` section of `nuxt.config.ts`
-
-```js
-export default defineNuxtConfig({
- modules: [
- '@vue-email/nuxt'
- ]
-})
-```
-
-That's it! You can now use My Module in your Nuxt app ✨
-
-## Development
-
-```bash
-# Install dependencies
-npm install
-
-# Generate type stubs
-npm run dev:prepare
-
-# Develop with the playground
-npm run dev
-
-# Build the playground
-npm run dev:build
-
-# Run ESLint
-npm run lint
-
-# Run Vitest
-npm run test
-npm run test:watch
-
-# Release new version
-npm run release
-```
-
-## License
-
-[MIT](./LICENSE) License © 2023-PRESENT [Vue Email](https://vuemail.net/)
-
-
-
-[npm-version-src]: https://img.shields.io/npm/v/@vue-email/nuxt/latest.svg?style=flat&colorA=18181B&colorB=28CF8D
-[npm-version-href]: https://npmjs.com/package/@vue-email/nuxt
-
-[npm-downloads-src]: https://img.shields.io/npm/dm/@vue-email/nuxt.svg?style=flat&colorA=18181B&colorB=28CF8D
-[npm-downloads-href]: https://npmjs.com/package/@vue-email/nuxt
-
-[license-src]: https://img.shields.io/npm/l/@vue-email/nuxt.svg?style=flat&colorA=18181B&colorB=28CF8D
-[license-href]: https://npmjs.com/package/@vue-email/nuxt
-
-[jsdocs-src]: https://img.shields.io/badge/jsdocs-reference-080f12?style=flat&colorA=080f12&colorB=1fa669
-[jsdocs-href]: https://www.jsdocs.io/package/@vue-email/nuxt
+Currently there's no need for a nuxt module, as we are not adding anything specific to nuxt.
diff --git a/client/components/CodeContainer.vue b/client/components/CodeContainer.vue
index cf8145f..97e5d26 100644
--- a/client/components/CodeContainer.vue
+++ b/client/components/CodeContainer.vue
@@ -1,12 +1,16 @@
-
+
{{ item.label }}
-
+
@@ -106,12 +127,49 @@ const tab = ref(0)
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -129,4 +187,25 @@ const tab = ref(0)
overflow: auto;
white-space: break-spaces;
}
+
+.dark,
+.jse-theme-dark {
+ --jse-panel-background: #111 !important;
+ --jse-theme-color: #111 !important;
+ --jse-text-color-inverse: #fff !important;
+ --jse-main-border: none !important;
+}
+
+.json-editor-vue .no-main-menu {
+ border: none !important;
+}
+
+.json-editor-vue .jse-main {
+ min-height: 1em !important;
+}
+
+.json-editor-vue .jse-contents {
+ border-width: 0 !important;
+ border-radius: 5px !important;
+}
diff --git a/client/components/CommandPalette.vue b/client/components/CommandPalette.vue
index 0df3e4f..817ea83 100644
--- a/client/components/CommandPalette.vue
+++ b/client/components/CommandPalette.vue
@@ -53,8 +53,10 @@ function onSelect(option: Email) {
>
-
-
We couldn't find any email template.
+
+
+ We couldn't find any email template.
+
You can create a
diff --git a/client/components/EmailPreview.vue b/client/components/EmailPreview.vue
index 1ff9eba..e2431f6 100644
--- a/client/components/EmailPreview.vue
+++ b/client/components/EmailPreview.vue
@@ -33,14 +33,16 @@ const emailSubject = ref('Testing Vue Email')
function handleView(view: ActiveView) {
activeView.value = view
router.push(`${route.path}?view=${view}`)
- if (iframeUpdate.value >= 100) iframeUpdate.value = 0
+ if (iframeUpdate.value >= 100)
+ iframeUpdate.value = 0
iframeUpdate.value++
}
async function updateIframe() {
refresh.value = !refresh.value
- if (iframeUpdate.value >= 100) iframeUpdate.value = 0
+ if (iframeUpdate.value >= 100)
+ iframeUpdate.value = 0
iframeUpdate.value++
}
@@ -50,10 +52,12 @@ function setlang(lang: ActiveLang) {
}
watchEffect(() => {
- if (query.view === 'source' || query.view === 'desktop' || query.view === 'mobile') activeView.value = query.view
+ if (query.view === 'source' || query.view === 'desktop' || query.view === 'mobile')
+ activeView.value = query.view
if (query.lang) {
- if (['html'].includes(query.lang)) activeLang.value = query.lang
+ if (['html'].includes(query.lang))
+ activeLang.value = query.lang
}
})
@@ -99,9 +103,7 @@ watchEffect(() => {
-
Powered by Resend
+
Powered by Resend
-
Welcome to the Vue Email Dev Tools!
+
+ Welcome to the Vue Email Dev Tools!
+
To start developing your next email template, you can create a
.vue file under the emails folder.
@@ -69,7 +71,9 @@ const items = [
{{ item.title }}
→
-
{{ item.description }}
+
+ {{ item.description }}
+
diff --git a/client/components/SendEmail.vue b/client/components/SendEmail.vue
index 6247e9f..6656c41 100644
--- a/client/components/SendEmail.vue
+++ b/client/components/SendEmail.vue
@@ -34,12 +34,8 @@ defineShortcuts({
-
Powered by
- Resend
+
Powered by
+ Resend
-
Horizontal Split
-
Split the email preview and code editor horizontally
+
+ Horizontal Split
+
+
+ Split the email preview and code editor horizontally
+
-
Preview Mode
-
Choose between the preview modes
+
+ Preview Mode
+
+
+ Choose between the preview modes
+
@@ -26,8 +34,12 @@ const { isSettingsOpen, email, horizontalSplit, previewMode, previewModes, edito
-
Editor Language
-
Choose which code language to display in the editor
+
+ Editor Language
+
+
+ Choose which code language to display in the editor
+
@@ -36,10 +48,10 @@ const { isSettingsOpen, email, horizontalSplit, previewMode, previewModes, edito
-
+
-
+
+
diff --git a/client/components/TopNav.vue b/client/components/TopNav.vue
index edf8de5..a43cf20 100644
--- a/client/components/TopNav.vue
+++ b/client/components/TopNav.vue
@@ -8,10 +8,14 @@ import { version } from '../../package.json'
- Vue Email
+
+ Vue Email
+
- v{{ version }}
+
+ v{{ version }}
+
diff --git a/client/composables/shiki.ts b/client/composables/shiki.ts
index fe84247..0d62c40 100644
--- a/client/composables/shiki.ts
+++ b/client/composables/shiki.ts
@@ -1,5 +1,5 @@
-import type { Highlighter } from 'shikiji'
-import { getHighlighter } from 'shikiji'
+import type { Highlighter } from 'shiki'
+import { getHighlighter } from 'shiki'
import { ref } from 'vue'
export const shiki = ref()
@@ -13,7 +13,8 @@ getHighlighter({
})
export function highlight(code: string, lang: string) {
- if (!shiki.value) return code
+ if (!shiki.value)
+ return code
return shiki.value.codeToHtml(code, {
lang,
theme: 'vitesse-dark',
diff --git a/client/composables/useEmail.ts b/client/composables/useEmail.ts
index 72ffd53..da5d504 100644
--- a/client/composables/useEmail.ts
+++ b/client/composables/useEmail.ts
@@ -1,17 +1,13 @@
import pretty from 'pretty'
-import type { Email } from '@/types/email'
import type { Result } from '@vue-email/compiler'
+import type { Email, Template } from '@/types/email'
export function useEmail() {
const emails = useState('emails')
const email = useState('email')
const sending = useState('sending', () => false)
const refresh = useState('refresh', () => false)
- const template = useState<{
- vue: string
- html: string
- txt: string
- }>('template')
+ const template = useState('template')
const { host } = useWindow()
@@ -25,45 +21,47 @@ export function useEmail() {
return
}
- if (data && data.value) {
+ if (data && data.value)
emails.value = data.value
- }
}
- const renderEmail = async () => {
- if (!email.value) return null
+ const renderEmail = async (props?: Email['props']) => {
+ if (!email.value)
+ return null
const { data } = await useFetch(`/api/render/${email.value.filename}`, {
+ method: 'POST',
baseURL: host.value,
+ body: {
+ props,
+ },
})
- if (data.value)
- return {
+ if (data.value) {
+ template.value = {
vue: email.value.content,
html: pretty(data.value.html),
txt: data.value.text,
- }
-
- return null
+ } as Template
+ }
}
const getEmail = async (filename: string) => {
if (filename && emails.value && emails.value.length) {
- const found = emails.value.find((email) => email.filename === filename)
+ const found = emails.value.find(email => email.filename === filename)
if (found) {
email.value = found
- await renderEmail().then((value) => {
- if (value) template.value = value
- })
+ await renderEmail()
}
}
}
const sendTestEmail = async (to: string, subject: string, markup: string) => {
try {
- if (!email || !subject) return
+ if (!email || !subject)
+ return
sending.value = true
@@ -96,14 +94,16 @@ export function useEmail() {
icon: 'i-ph-bell-bold',
})
}
- } catch (error) {
+ }
+ catch (error) {
useToast().add({
title: 'Error',
description: 'Something went wrong. Please try again.',
color: 'red',
icon: 'i-ph-bell-bold',
})
- } finally {
+ }
+ finally {
sending.value = false
}
}
diff --git a/client/composables/useTool.ts b/client/composables/useTool.ts
index 03aed5e..2f81cd2 100644
--- a/client/composables/useTool.ts
+++ b/client/composables/useTool.ts
@@ -58,13 +58,11 @@ export function useTool(params?: UseToolParams) {
const editorCode = useStorage('editorCodes', editorCodes[0])
watch(reloadTemplate, async () => {
- if (typeof params?.onReload == 'undefined' && typeof params?.onReload !== 'function' && !reloadTemplate.value) {
+ if (typeof params?.onReload == 'undefined' && typeof params?.onReload !== 'function' && !reloadTemplate.value)
return
- }
- if (typeof params?.onReload === 'function') {
+ if (typeof params?.onReload === 'function')
await params.onReload()
- }
setTimeout(() => {
reloadTemplate.value = false
diff --git a/client/emails/code-components.vue b/client/emails/code-components.vue
index bad6cd4..f077cfe 100644
--- a/client/emails/code-components.vue
+++ b/client/emails/code-components.vue
@@ -15,8 +15,7 @@ const box = {
padding: '0 48px',
}
-
-const code = `import { codeToThemedTokens } from 'shikiji'
+const code = `import { codeToThemedTokens } from 'shiki'
const tokens = await codeToThemedTokens('bar
', {
lang: 'html',
diff --git a/client/emails/github-access-token.vue b/client/emails/github-access-token.vue
index 61beb9b..f8ebc97 100644
--- a/client/emails/github-access-token.vue
+++ b/client/emails/github-access-token.vue
@@ -6,6 +6,31 @@ defineProps({
type: String,
default: 'John Doe',
},
+ string: {
+ type: String,
+ },
+ number: {
+ type: Number,
+ default: 0,
+ },
+ boolean: {
+ type: Boolean,
+ default: true,
+ },
+ array: {
+ type: Array,
+ default: () => [
+ {
+ key: 'value',
+ },
+ ],
+ },
+ object: {
+ type: Object,
+ default: () => ({
+ key: 'value',
+ }),
+ },
})
const main = {
@@ -71,26 +96,44 @@ const footer = {
- @{{ username }}, a personal access was created on your account.
+ @{{ username }}, a personal access was created on your account.
+
+ {{ string }}
+ {{ number }}
+ {{ boolean }}
+ {{ array }}
+ {{ object }}
+
+
- Hey {{ username }}!
+ Hey {{ username }}!
+
+
+ A fine-grained personal access token (
+ resend
+ ) was recently added to your account.
- A fine-grained personal access token ( resend ) was recently added to your account.
- View your token
+
+ View your token
+
- Your security audit log
+
+ Your security audit log
+
・
- Contact support
+
+ Contact support
+
- GitHub, Inc. ・88 Colin P Kelly Jr Street ・San Francisco, CA 94107
+
+ GitHub, Inc. ・88 Colin P Kelly Jr Street ・San Francisco, CA 94107
+
diff --git a/client/emails/koala-welcome.vue b/client/emails/koala-welcome.vue
index 15ad73f..4c4ab3b 100644
--- a/client/emails/koala-welcome.vue
+++ b/client/emails/koala-welcome.vue
@@ -57,18 +57,26 @@ const footer = {
- Hi {{ userFirstname }},
- Welcome to Koala, the sales intelligence platform that helps you uncover qualified leads and close deals faster.
+
+ Hi {{ userFirstname }},
+
+
+ Welcome to Koala, the sales intelligence platform that helps you uncover qualified leads and close deals faster.
+
- Get started
+
+ Get started
+
Best,
-
+
The Koala team
- 408 Warren Rd - San Mateo, CA 94402
+
+ 408 Warren Rd - San Mateo, CA 94402
+
diff --git a/client/emails/stripe-welcome.vue b/client/emails/stripe-welcome.vue
index 6ccda36..2c023ea 100644
--- a/client/emails/stripe-welcome.vue
+++ b/client/emails/stripe-welcome.vue
@@ -60,36 +60,56 @@ const footer = {
- Thanks for submitting your account information. You're now ready to make live transactions with Stripe!
- You can view your payments and a variety of other information about your account right from your dashboard.
- View your Stripe Dashboard
+
+ Thanks for submitting your account information. You're now ready to make live transactions with Stripe!
+
+
+ You can view your payments and a variety of other information about your account right from your dashboard.
+
+
+ View your Stripe Dashboard
+
If you haven't finished your integration, you might find our
- docs
+
+ docs
+
handy.
Once you're ready to start accepting payments, you'll just need to use your live
- API keys
+
+ API keys
+
instead of your test API keys. Your account can simultaneously be used for both test and live requests, so you can continue testing while accepting live payments. Check
out our
- tutorial about account basics
+
+ tutorial about account basics
+
.
Finally, we've put together a
- quick checklist
+
+ quick checklist
+
to ensure your website conforms to card network standards.
We'll be here to help you with any step along the way. You can find answers to most questions and get in touch with us on our
- support site
+
+ support site
+
.
- — The Stripe team
+
+ — The Stripe team
+
- Stripe, 354 Oyster Point Blvd, South San Francisco, CA 94080
+
+ Stripe, 354 Oyster Point Blvd, South San Francisco, CA 94080
+
diff --git a/client/emails/twitch-reset-password.vue b/client/emails/twitch-reset-password.vue
index a023e56..c5223d0 100644
--- a/client/emails/twitch-reset-password.vue
+++ b/client/emails/twitch-reset-password.vue
@@ -92,27 +92,35 @@ const link = {
- Hi {{ username }},
+
+ Hi {{ username }},
+
You updated the password for your Twitch account on
{{ formattedDate }}. If this was you, then no further action is required.
However if you did NOT perform this password change, please
- reset your account password
+
+ reset your account password
+
immediately.
Remember to use a password that is both strong and unique to your Twitch account. To learn more about how to create a strong and unique password,
- click here.
+
+ click here.
+
Still have questions? Please contact
- Twitch Support
+
+ Twitch Support
+
Thanks,
-
+
Twitch Support Team
@@ -128,7 +136,7 @@ const link = {
- © 2023 Twitch, All Rights Reserved
+ © 2023 Twitch, All Rights Reserved
350 Bush Street, 2nd Floor, San Francisco, CA, 94104 - USA
diff --git a/client/emails/vercel-invite-user.vue b/client/emails/vercel-invite-user.vue
index f07fa4f..a31d345 100644
--- a/client/emails/vercel-invite-user.vue
+++ b/client/emails/vercel-invite-user.vue
@@ -34,7 +34,9 @@ const previewText = `Join ${props.invitedByUsername} on Vercel`
Join {{ teamName }} on Vercel
- Hello {{ username }},
+
+ Hello {{ username }},
+
bukinoshita (
@@ -56,7 +58,9 @@ const previewText = `Join ${props.invitedByUsername} on Vercel`
- Join the team
+
+ Join the team
+
or copy and paste this URL into your browser:
@@ -68,8 +72,7 @@ const previewText = `Join ${props.invitedByUsername} on Vercel`
This invitation was intended for
{{ username }} .This invite was sent from {{ inviteFromIp }} located in
- {{ inviteFromLocation }}. If you were not expecting this invitation, you can ignore this email. If you are concerned about your account's safety, please reply to this email to get in touch
+ {{ inviteFromLocation }}. If you were not expecting this invitation, you can ignore this email. If you are concerned about your account's safety, please reply to this email to get in touch
with us.
diff --git a/client/emails/yelp-recent-login.vue b/client/emails/yelp-recent-login.vue
index 761d245..405bf7e 100644
--- a/client/emails/yelp-recent-login.vue
+++ b/client/emails/yelp-recent-login.vue
@@ -91,7 +91,9 @@ const containerImageFooter = {
}"
>
- Hi {{ userFirstName }},
+
+ Hi {{ userFirstName }},
+
If this was you, there's nothing else you need to do.
- If this wasn't you or if you have additional questions, please see our support page.
+
+ If this was you, there's nothing else you need to do.
+
+
+ If this wasn't you or if you have additional questions, please see our support page.
+
- Learn More
+
+ Learn More
+
diff --git a/client/package.json b/client/package.json
index ec42d74..bef0932 100644
--- a/client/package.json
+++ b/client/package.json
@@ -22,11 +22,15 @@
"@types/splitpanes": "^2.2.6",
"@vueuse/core": "^10.7.2",
"@vueuse/nuxt": "^10.7.2",
+ "destr": "^2.0.2",
"html-to-text": "^9.0.5",
+ "json-editor-vue": "^0.12.0",
+ "json5": "^2.2.3",
"nuxt": "^3.9.3",
"pretty": "^2.0.0",
"scule": "^1.2.0",
- "shikiji": "^0.9.19",
- "splitpanes": "^3.1.5"
+ "shiki": "^1.0.0-beta.3",
+ "splitpanes": "^3.1.5",
+ "vue-component-meta": "^1.8.27"
}
}
diff --git a/client/pages/email/[file].vue b/client/pages/email/[file].vue
index 422290d..b627d71 100644
--- a/client/pages/email/[file].vue
+++ b/client/pages/email/[file].vue
@@ -4,12 +4,12 @@ const route = useRoute()
const { getEmail, template } = useEmail()
const { horizontalSplit, previewMode } = useTool({
async onReload() {
- await getEmail(`${route.params.file}`)
+ await getEmail(route.params.file as string)
},
})
onMounted(async () => {
- await getEmail(`${route.params.file}`)
+ await getEmail(route.params.file as string)
})
const showBoth = computed(() => previewMode.value.id === 'both')
diff --git a/client/server/api/emails.get.ts b/client/server/api/emails.get.ts
index 33fbe9f..181df9f 100644
--- a/client/server/api/emails.get.ts
+++ b/client/server/api/emails.get.ts
@@ -1,25 +1,173 @@
+import path from 'node:path'
import { kebabCase, pascalCase } from 'scule'
+import { createComponentMetaCheckerByJsonConfig } from 'vue-component-meta'
+import { destr } from 'destr'
+import JSON5 from 'json5'
import type { Email } from '~/types/email'
-import { createError, defineEventHandler, useStorage } from '#imports'
+
+function stripeTypeScriptInternalTypesSchema(type: any): any {
+ if (!type)
+ return type
+
+ if (type.declarations && type.declarations.find((d: any) => d.file.includes('node_modules/typescript')))
+ return false
+
+ if (Array.isArray(type))
+ return type.map((sch: any) => stripeTypeScriptInternalTypesSchema(sch)).filter(r => r !== false)
+
+ if (Array.isArray(type.schema)) {
+ return {
+ ...type,
+ schema: type.schema.map((sch: any) => stripeTypeScriptInternalTypesSchema(sch)).filter((r: any) => r !== false),
+ }
+ }
+ if (!type.schema || typeof type.schema !== 'object')
+ return type
+
+ const schema: any = {}
+ Object.keys(type.schema).forEach((sch) => {
+ const res = stripeTypeScriptInternalTypesSchema(type.schema[sch])
+ if (res !== false)
+ schema[sch] = res
+ })
+ return {
+ ...type,
+ schema,
+ }
+}
export default defineEventHandler(async () => {
try {
const nitroEmails = await useStorage('assets:emails').getKeys()
+ const rootDir = useRuntimeConfig().public.vueEmail.emailsDir || process.cwd()
+
+ const checker = createComponentMetaCheckerByJsonConfig(
+ rootDir,
+ {
+ extends: path.join(rootDir, '..', 'tsconfig.json'),
+ skipLibCheck: true,
+ include: ['**/*.vue'],
+ exclude: [],
+ },
+ {
+ forceUseTs: true,
+ printer: { newLine: 1 },
+ },
+ )
const emails: Email[] = await Promise.all(
nitroEmails.map(async (email) => {
- const data = JSON.stringify(await useStorage('assets:emails').getMeta(email))
+ const data = JSON.stringify(
+ await useStorage('assets:emails').getMeta(email),
+ )
const emailData = JSON.parse(data)
- const content = (await useStorage('assets:emails').getItem(email)) as string
+ const emailPath = path.join(
+ rootDir,
+ email.replaceAll(':', '/'),
+ )
+
+ let destructuredProps: any[] = []
+
+ try {
+ const { props } = checker.getComponentMeta(emailPath)
+ let emailProps = (props).filter(prop => !prop.global).sort((a, b) => {
+ if (!a.required && b.required)
+ return 1
+
+ if (a.required && !b.required)
+ return -1
+
+ if (a.type === 'boolean' && b.type !== 'boolean')
+ return 1
+
+ if (a.type !== 'boolean' && b.type === 'boolean')
+ return -1
+
+ return 0
+ })
+
+ emailProps = emailProps.map(stripeTypeScriptInternalTypesSchema)
+ destructuredProps = emailProps.map((prop) => {
+ const destructuredType = prop.type.split('|').map((type) => {
+ type = type.trim()
+ const value = prop.default
+
+ if (type === 'string') {
+ return {
+ type: 'string',
+ value: destr(value) ?? '',
+ }
+ }
+
+ if (type === 'number') {
+ return {
+ type: 'number',
+ value: destr(value) || 0,
+ }
+ }
+
+ if (type === 'boolean') {
+ return {
+ type: 'boolean',
+ value: destr(value) || false,
+ }
+ }
+
+ if (type === 'object' || type.includes('Record') || type.includes('Record<')) {
+ return {
+ type: 'object',
+ value: value ? JSON5.parse(value) : {},
+ }
+ }
+
+ if (type === 'array' || type.includes('[]') || type.includes('Array') || type.includes('Array<')) {
+ return {
+ type: 'array',
+ value: value ? JSON5.parse(value) : [],
+ }
+ }
+
+ if (type === 'Date') {
+ return {
+ type: 'date',
+ value: value ? eval(value) : new Date().toISOString(),
+ }
+ }
+
+ return {
+ type: 'string',
+ value: value ?? '',
+ }
+ })
+
+ return {
+ label: prop.name,
+ type: destructuredType[0].type,
+ value: destructuredType[0].value,
+ }
+ })
+ }
+ catch (error) {
+ console.warn('Error destructuring props', error)
+ }
+
+ const content = (await useStorage('assets:emails').getItem(
+ email,
+ )) as string
return {
- label: pascalCase(kebabCase(email.replace('.vue', '').replace(':', '_')).split('-').join(' ')),
+ label: pascalCase(
+ kebabCase(email.replace('.vue', '').replace(':', '_'))
+ .split('-')
+ .join(' '),
+ ),
filename: email,
content,
icon: 'i-heroicons-envelope',
size: emailData.size,
created: emailData.birthtime,
modified: emailData.mtime,
+ props: destructuredProps,
}
}),
)
@@ -32,7 +180,10 @@ export default defineEventHandler(async () => {
}
return emails
- } catch (error) {
+ }
+ catch (error) {
+ console.error(error)
+
throw createError({
statusCode: 500,
statusMessage: 'Internal Server Error',
diff --git a/client/server/api/render/[file].get.ts b/client/server/api/render/[file].get.ts
deleted file mode 100644
index 5d49e26..0000000
--- a/client/server/api/render/[file].get.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-import { useCompiler } from '#vue-email'
-import { createError, defineEventHandler } from '#imports'
-
-export default defineEventHandler(async (event: any) => {
- try {
- const file = event.context.params && event.context.params.file ? event.context.params.file : null
-
- // TODO: pass props to template
- const template = await useCompiler(file)
-
- if (!template) {
- throw createError({
- statusCode: 404,
- statusMessage: 'Not Found',
- })
- }
-
- return template
- } catch (error) {
- console.error(error)
-
- throw createError({
- statusCode: 500,
- statusMessage: 'Internal Server Error',
- })
- }
-})
diff --git a/client/server/api/render/[file].post.ts b/client/server/api/render/[file].post.ts
new file mode 100644
index 0000000..c708d23
--- /dev/null
+++ b/client/server/api/render/[file].post.ts
@@ -0,0 +1,57 @@
+import { destr } from 'destr'
+import { useCompiler } from '#vue-email'
+import { createError, defineEventHandler, readBody } from '#imports'
+
+export default defineEventHandler(async (event: any) => {
+ try {
+ const file = event.context.params && event.context.params.file ? event.context.params.file : null
+ const body = await readBody(event)
+
+ let props: any = null
+ if (body && body.props) {
+ props = body.props.reduce((acc: Record, prop: any) => {
+ if (prop.type === 'string')
+ acc[prop.label] = destr(prop.value) || ''
+
+ if (prop.type === 'number')
+ acc[prop.label] = destr(prop.value) || 0
+
+ if (prop.type === 'boolean')
+ acc[prop.label] = destr(prop.value) || false
+
+ if (prop.type === 'object')
+ acc[prop.label] = destr(prop.value) || {}
+
+ if (prop.type === 'array')
+ acc[prop.label] = destr(prop.value) || []
+
+ if (prop.type === 'date')
+ acc[prop.label] = new Date(prop.value) || new Date()
+
+ return acc
+ }, {})
+ }
+
+ // TODO: pass props to template
+ const template = await useCompiler(file, {
+ props,
+ })
+
+ if (!template) {
+ throw createError({
+ statusCode: 404,
+ statusMessage: 'Not Found',
+ })
+ }
+
+ return template
+ }
+ catch (error) {
+ console.error(error)
+
+ throw createError({
+ statusCode: 500,
+ statusMessage: 'Internal Server Error',
+ })
+ }
+})
diff --git a/client/tsconfig.json b/client/tsconfig.json
index eb97e3f..4b34df1 100644
--- a/client/tsconfig.json
+++ b/client/tsconfig.json
@@ -1,3 +1,3 @@
{
"extends": "./.nuxt/tsconfig.json"
-}
\ No newline at end of file
+}
diff --git a/client/types/email.ts b/client/types/email.ts
index d5da2fb..02a61c1 100644
--- a/client/types/email.ts
+++ b/client/types/email.ts
@@ -6,6 +6,12 @@ export interface Email {
size: number
created: Date
modified: Date
+ props: {
+ label: string
+ value: any
+ type: string
+ description?: string
+ }[]
}
export interface Directory {
diff --git a/client/util/copy-text-to-clipboard.ts b/client/util/copy-text-to-clipboard.ts
index 5b5a888..de338c3 100644
--- a/client/util/copy-text-to-clipboard.ts
+++ b/client/util/copy-text-to-clipboard.ts
@@ -1,7 +1,8 @@
export async function copyTextToClipboard(text: string) {
try {
await navigator.clipboard.writeText(text)
- } catch {
+ }
+ catch {
throw new Error('Not able to copy')
}
}
diff --git a/eslint.config.js b/eslint.config.js
new file mode 100644
index 0000000..9bf7726
--- /dev/null
+++ b/eslint.config.js
@@ -0,0 +1,8 @@
+import antfu from '@antfu/eslint-config'
+
+export default antfu({
+ rules: {
+ 'node/prefer-global/process': 'off',
+ 'no-eval': 'off',
+ },
+})
diff --git a/package.json b/package.json
index d433a88..054a8b8 100644
--- a/package.json
+++ b/package.json
@@ -1,9 +1,11 @@
{
"name": "@vue-email/nuxt",
- "version": "0.8.11",
+ "type": "module",
+ "version": "0.8.19",
"packageManager": "pnpm@8.11.0",
"description": "Nuxt package for vue-email",
"author": "David Arenas (https://github.com/Dave136/)",
+ "license": "MIT",
"homepage": "https://vuemail.net/",
"maintainers": [
{
@@ -17,8 +19,6 @@
"url": "https://github.com/Flowko"
}
],
- "license": "MIT",
- "type": "module",
"exports": {
".": {
"types": "./dist/types.d.ts",
@@ -43,28 +43,33 @@
"dev:client": "nuxi dev client",
"dev:prepare": "pnpm stub && nuxt-module-build prepare && nuxi prepare playground && nuxi prepare client",
"lint": "eslint .",
+ "lint:fix": "eslint . --fix",
"test": "vitest run",
"test:watch": "vitest watch",
"release": "bumpp"
},
"dependencies": {
- "@nuxt/kit": "^3.9.3",
+ "@nuxt/kit": "^3.10.0",
+ "@vue-email/compiler": "^0.8.14",
"defu": "^6.1.4",
- "vue-email": "^0.8.6",
- "@vue-email/compiler": "^0.8.8",
- "sirv": "^2.0.4"
+ "destr": "^2.0.2",
+ "json5": "^2.2.3",
+ "sirv": "^2.0.4",
+ "vue-component-meta": "^1.8.27",
+ "vue-email": "^0.8.10"
},
"devDependencies": {
+ "@antfu/eslint-config": "^2.6.3",
"@nuxt/devtools": "latest",
- "@nuxt/eslint-config": "^0.2.0",
"@nuxt/module-builder": "^0.5.5",
- "@nuxt/schema": "^3.9.3",
- "@nuxt/test-utils": "^3.10.0",
- "@types/node": "^20.11.5",
- "eslint": "^8.56.0",
+ "@nuxt/schema": "^3.10.0",
+ "@nuxt/test-utils": "^3.11.0",
+ "@types/node": "^20.11.10",
"bumpp": "^9.3.0",
+ "destr": "^2.0.2",
+ "eslint": "^8.56.0",
"jiti": "^1.21.0",
- "nuxt": "^3.9.3",
- "vitest": "^1.2.1"
+ "nuxt": "^3.10.0",
+ "vitest": "^1.2.2"
}
}
diff --git a/playground/app.vue b/playground/app.vue
index 58db5ce..a5f2c39 100644
--- a/playground/app.vue
+++ b/playground/app.vue
@@ -1,8 +1,8 @@
+
+
Nuxt module playground!
-
-
diff --git a/playground/nuxt-layer/.eslintrc.cjs b/playground/nuxt-layer/.eslintrc.cjs
index 774ebda..10db400 100644
--- a/playground/nuxt-layer/.eslintrc.cjs
+++ b/playground/nuxt-layer/.eslintrc.cjs
@@ -1,4 +1,4 @@
module.exports = {
root: true,
- extends: ["@nuxt/eslint-config"],
-};
+ extends: ['@nuxt/eslint-config'],
+}
diff --git a/playground/nuxt-layer/.playground/app.config.ts b/playground/nuxt-layer/.playground/app.config.ts
index 2e818ca..2822871 100644
--- a/playground/nuxt-layer/.playground/app.config.ts
+++ b/playground/nuxt-layer/.playground/app.config.ts
@@ -1,5 +1,5 @@
export default defineAppConfig({
myLayer: {
- name: 'My amazing Nuxt layer (overwritten)'
- }
+ name: 'My amazing Nuxt layer (overwritten)',
+ },
})
diff --git a/playground/nuxt-layer/.playground/nuxt.config.ts b/playground/nuxt-layer/.playground/nuxt.config.ts
index ce50adf..c8908aa 100644
--- a/playground/nuxt-layer/.playground/nuxt.config.ts
+++ b/playground/nuxt-layer/.playground/nuxt.config.ts
@@ -1,3 +1,3 @@
export default defineNuxtConfig({
- extends: ['..']
+ extends: ['..'],
})
diff --git a/playground/nuxt-layer/app.config.ts b/playground/nuxt-layer/app.config.ts
index e3276b7..b75e30f 100644
--- a/playground/nuxt-layer/app.config.ts
+++ b/playground/nuxt-layer/app.config.ts
@@ -1,7 +1,7 @@
export default defineAppConfig({
myLayer: {
- name: 'Hello from Nuxt layer'
- }
+ name: 'Hello from Nuxt layer',
+ },
})
declare module '@nuxt/schema' {
diff --git a/playground/nuxt-layer/emails/TestEmail.vue b/playground/nuxt-layer/emails/TestEmail.vue
index a87bce8..68a32e8 100644
--- a/playground/nuxt-layer/emails/TestEmail.vue
+++ b/playground/nuxt-layer/emails/TestEmail.vue
@@ -1,57 +1,26 @@
-
-
- You're now ready to make live transactions with Stripe!
-
-
-
-
-
-
- Thanks for submitting your account information. You're now ready to make live transactions with Stripe!
-
-
- You can view your payments and a variety of other information about your account right from your dashboard.
-
-
+
+
+
+ .pager {display: none;} @media only screen and (max-width: 480px) {
+ .pager {display: block;} }
+
+
+ {{ previewText }}
+
+
+
+
- View your Stripe Dashboard
-
-
-
- If you haven't finished your integration, you might find our
+ Join {{ teamName }} on Vercel
+
+
+ Hello {{ username }},
+
+
+
+ bukinoshita (
- docs
+ {{ invitedByEmail }}
- handy.
+ ) has invited you to the {{ teamName }} team on
+ Vercel.
-
- Once you're ready to start accepting payments, you'll just need to use your live
-
- API keys
-
- instead of your test API keys. Your account can simultaneously be used for both test and live requests, so you can continue testing while accepting live payments. Check
- out our
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
- tutorial about account basics
-
- .
-
-
- Finally, we've put together a
-
- quick checklist
-
- to ensure your website conforms to card network standards.
-
-
- We'll be here to help you with any step along the way. You can find answers to most questions and get in touch with us on our
+ Join the team
+
+
+
+ or copy and paste this URL into your browser:
- support site
+ {{ inviteLink }}
- .
-
- — The Stripe team
-
-
-
- Stripe, 354 Oyster Point Blvd, South San Francisco, CA 94080
+
+
+ This invitation was intended for
+ {{ username }} .This invite was sent
+ from {{ inviteFromIp }} located in
+ {{ inviteFromLocation }}. If you were not expecting this invitation, you can ignore this
+ email. If you are concerned about your account's safety, please
+ reply to this email to get in touch with us.
-
-
-
-
+
+
+
+
diff --git a/playground/nuxt-layer/nuxt.config.ts b/playground/nuxt-layer/nuxt.config.ts
index 8851e77..9d825c4 100644
--- a/playground/nuxt-layer/nuxt.config.ts
+++ b/playground/nuxt-layer/nuxt.config.ts
@@ -1,4 +1,4 @@
// https://nuxt.com/docs/api/configuration/nuxt-config
export default defineNuxtConfig({
- devtools: { enabled: true }
+ devtools: { enabled: true },
})
diff --git a/playground/nuxt.config.ts b/playground/nuxt.config.ts
index c149ca6..ae03563 100644
--- a/playground/nuxt.config.ts
+++ b/playground/nuxt.config.ts
@@ -1,8 +1,6 @@
export default defineNuxtConfig({
- modules: ['../src/module'],
- extends: [
- './nuxt-layer'
- ],
+ modules: ['../src/module', '@nuxtjs/tailwindcss'],
+ extends: ['./nuxt-layer'],
vueEmail: {
baseUrl: 'https://vue-email-demo.vercel.app/',
i18n: {
@@ -10,18 +8,29 @@ export default defineNuxtConfig({
translations: {
en: {
title: 'Welcome to Vue Email',
- subtitle: 'A Vue.js component for generating beautiful emails using MJML',
+ subtitle:
+ 'A Vue.js component for generating beautiful emails using MJML',
button: 'Get Started',
},
fr: {
title: 'Bienvenue sur Vue Email',
- subtitle: 'Un composant Vue.js pour générer de beaux emails en utilisant MJML',
+ subtitle:
+ 'Un composant Vue.js pour générer de beaux emails en utilisant MJML',
button: 'Commencer',
},
},
},
- autoImport: false
+ autoImport: false,
+ // tailwind: {
+ // theme: {
+ // extend: {
+ // colors: {
+ // primary: "#ea580c",
+ // secondary: "#ca8a04",
+ // },
+ // },
+ // },
+ // },
},
devtools: { enabled: true },
-
})
diff --git a/playground/package.json b/playground/package.json
index 5e00220..92606e3 100644
--- a/playground/package.json
+++ b/playground/package.json
@@ -1,7 +1,7 @@
{
- "private": true,
"name": "my-module-playground",
"type": "module",
+ "private": true,
"scripts": {
"dev": "nuxi dev",
"build": "nuxi build",
@@ -10,6 +10,7 @@
"analyze": "nuxt analyze"
},
"devDependencies": {
+ "@nuxtjs/tailwindcss": "^6.11.2",
"nuxt": "latest"
}
}
diff --git a/playground/server/api/test.get.ts b/playground/server/api/test.get.ts
index 41eb8d5..b81a37e 100644
--- a/playground/server/api/test.get.ts
+++ b/playground/server/api/test.get.ts
@@ -7,14 +7,15 @@ export default defineEventHandler(async () => {
username: 'Flowko',
},
}).catch((error) => {
- console.error(error);
+ console.error(error)
})
- if(!template) return null
+ if (!template)
+ return null
return template.html
- } catch (error) {
- console.error(error);
-
+ }
+ catch (error) {
+ console.error(error)
}
})
diff --git a/playground/tailwind.config.js b/playground/tailwind.config.js
new file mode 100644
index 0000000..a4b9944
--- /dev/null
+++ b/playground/tailwind.config.js
@@ -0,0 +1,13 @@
+/** @type {import('tailwindcss').Config} */
+export default {
+ content: [],
+ theme: {
+ extend: {
+ colors: {
+ primary: 'cyan',
+ secondary: '#ca8a04',
+ },
+ },
+ },
+ plugins: [],
+}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 7a0e8ce..507f631 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -9,39 +9,48 @@ importers:
.:
dependencies:
'@nuxt/kit':
- specifier: ^3.9.3
- version: 3.9.3(rollup@3.29.4)
+ specifier: ^3.10.0
+ version: 3.10.0(rollup@3.29.4)
'@vue-email/compiler':
- specifier: ^0.8.8
- version: 0.8.8(typescript@5.3.3)(vue@3.4.15)
+ specifier: ^0.8.14
+ version: 0.8.14(typescript@5.3.3)(vue@3.4.15)
defu:
specifier: ^6.1.4
version: 6.1.4
+ destr:
+ specifier: ^2.0.2
+ version: 2.0.2
+ json5:
+ specifier: ^2.2.3
+ version: 2.2.3
sirv:
specifier: ^2.0.4
version: 2.0.4
+ vue-component-meta:
+ specifier: ^1.8.27
+ version: 1.8.27(typescript@5.3.3)
vue-email:
- specifier: ^0.8.6
- version: 0.8.6(typescript@5.3.3)(vue@3.4.15)
+ specifier: ^0.8.10
+ version: 0.8.10(typescript@5.3.3)(vue@3.4.15)
devDependencies:
+ '@antfu/eslint-config':
+ specifier: ^2.6.3
+ version: 2.6.3(@vue/compiler-sfc@3.4.15)(eslint@8.56.0)(typescript@5.3.3)(vitest@1.2.2)
'@nuxt/devtools':
specifier: latest
- version: 1.0.8(nuxt@3.9.3)(rollup@3.29.4)(vite@5.0.12)
- '@nuxt/eslint-config':
- specifier: ^0.2.0
- version: 0.2.0(eslint@8.56.0)
+ version: 1.0.8(nuxt@3.10.0)(rollup@3.29.4)(vite@5.0.12)
'@nuxt/module-builder':
specifier: ^0.5.5
- version: 0.5.5(@nuxt/kit@3.9.3)(nuxi@3.10.0)(typescript@5.3.3)
+ version: 0.5.5(@nuxt/kit@3.10.0)(nuxi@3.10.0)(typescript@5.3.3)
'@nuxt/schema':
- specifier: ^3.9.3
- version: 3.9.3(rollup@3.29.4)
- '@nuxt/test-utils':
specifier: ^3.10.0
- version: 3.10.0(h3@1.10.0)(rollup@3.29.4)(vite@5.0.12)(vitest@1.2.1)(vue-router@4.2.5)(vue@3.4.15)
+ version: 3.10.0(rollup@3.29.4)
+ '@nuxt/test-utils':
+ specifier: ^3.11.0
+ version: 3.11.0(h3@1.10.1)(rollup@3.29.4)(vite@5.0.12)(vitest@1.2.2)(vue-router@4.2.5)(vue@3.4.15)
'@types/node':
- specifier: ^20.11.5
- version: 20.11.5
+ specifier: ^20.11.10
+ version: 20.11.10
bumpp:
specifier: ^9.3.0
version: 9.3.0
@@ -52,11 +61,11 @@ importers:
specifier: ^1.21.0
version: 1.21.0
nuxt:
- specifier: ^3.9.3
- version: 3.9.3(@types/node@20.11.5)(eslint@8.56.0)(rollup@3.29.4)(typescript@5.3.3)(vite@5.0.12)
+ specifier: ^3.10.0
+ version: 3.10.0(@types/node@20.11.10)(eslint@8.56.0)(rollup@3.29.4)(typescript@5.3.3)(vite@5.0.12)
vitest:
- specifier: ^1.2.1
- version: 1.2.1(@types/node@20.11.5)
+ specifier: ^1.2.2
+ version: 1.2.2(@types/node@20.11.10)
client:
devDependencies:
@@ -102,30 +111,45 @@ importers:
'@vueuse/nuxt':
specifier: ^10.7.2
version: 10.7.2(nuxt@3.9.3)(rollup@3.29.4)(vue@3.4.15)
+ destr:
+ specifier: ^2.0.2
+ version: 2.0.2
html-to-text:
specifier: ^9.0.5
version: 9.0.5
+ json-editor-vue:
+ specifier: ^0.12.0
+ version: 0.12.0(@lezer/common@1.2.1)(vue@3.4.15)
+ json5:
+ specifier: ^2.2.3
+ version: 2.2.3
nuxt:
specifier: ^3.9.3
- version: 3.9.3(@types/node@20.11.5)(eslint@8.56.0)(rollup@3.29.4)(typescript@5.3.3)(vite@5.0.12)
+ version: 3.9.3(@types/node@20.11.10)(eslint@8.56.0)(rollup@3.29.4)(typescript@5.3.3)(vite@5.0.12)
pretty:
specifier: ^2.0.0
version: 2.0.0
scule:
specifier: ^1.2.0
version: 1.2.0
- shikiji:
- specifier: ^0.9.19
- version: 0.9.19
+ shiki:
+ specifier: ^1.0.0-beta.3
+ version: 1.0.0-beta.3
splitpanes:
specifier: ^3.1.5
version: 3.1.5
+ vue-component-meta:
+ specifier: ^1.8.27
+ version: 1.8.27(typescript@5.3.3)
playground:
devDependencies:
+ '@nuxtjs/tailwindcss':
+ specifier: ^6.11.2
+ version: 6.11.2(rollup@3.29.4)
nuxt:
specifier: latest
- version: 3.9.3(@types/node@20.11.5)(eslint@8.56.0)(rollup@3.29.4)(typescript@5.3.3)(vite@5.0.12)
+ version: 3.9.3(@types/node@20.11.10)(eslint@8.56.0)(rollup@3.29.4)(typescript@5.3.3)(vite@5.0.12)
packages:
@@ -145,6 +169,87 @@ packages:
'@jridgewell/gen-mapping': 0.3.3
'@jridgewell/trace-mapping': 0.3.22
+ /@antfu/eslint-config@2.6.3(@vue/compiler-sfc@3.4.15)(eslint@8.56.0)(typescript@5.3.3)(vitest@1.2.2):
+ resolution: {integrity: sha512-sfkamrOatMwMZkp14mBerHKIw8FY0SD1iCb5UZ6Y5hgb+FeDpNQPlVA0i2PN95TQ8NSYyPC1QnoM+UA5NSl0Kg==}
+ hasBin: true
+ peerDependencies:
+ '@unocss/eslint-plugin': '>=0.50.0'
+ eslint: '>=8.40.0'
+ eslint-plugin-format: '>=0.1.0'
+ eslint-plugin-react: ^7.33.2
+ eslint-plugin-react-hooks: ^4.6.0
+ eslint-plugin-react-refresh: ^0.4.4
+ eslint-plugin-svelte: ^2.34.1
+ svelte-eslint-parser: ^0.33.1
+ peerDependenciesMeta:
+ '@unocss/eslint-plugin':
+ optional: true
+ eslint-plugin-format:
+ optional: true
+ eslint-plugin-react:
+ optional: true
+ eslint-plugin-react-hooks:
+ optional: true
+ eslint-plugin-react-refresh:
+ optional: true
+ eslint-plugin-svelte:
+ optional: true
+ svelte-eslint-parser:
+ optional: true
+ dependencies:
+ '@antfu/eslint-define-config': 1.23.0-2
+ '@antfu/install-pkg': 0.3.1
+ '@eslint-types/jsdoc': 46.8.2-1
+ '@eslint-types/typescript-eslint': 6.19.1
+ '@eslint-types/unicorn': 50.0.1
+ '@stylistic/eslint-plugin': 1.5.4(eslint@8.56.0)(typescript@5.3.3)
+ '@typescript-eslint/eslint-plugin': 6.19.0(@typescript-eslint/parser@6.19.0)(eslint@8.56.0)(typescript@5.3.3)
+ '@typescript-eslint/parser': 6.19.0(eslint@8.56.0)(typescript@5.3.3)
+ eslint: 8.56.0
+ eslint-config-flat-gitignore: 0.1.2
+ eslint-merge-processors: 0.1.0(eslint@8.56.0)
+ eslint-plugin-antfu: 2.1.2(eslint@8.56.0)
+ eslint-plugin-eslint-comments: 3.2.0(eslint@8.56.0)
+ eslint-plugin-i: 2.29.1(@typescript-eslint/parser@6.19.0)(eslint@8.56.0)
+ eslint-plugin-jsdoc: 48.0.4(eslint@8.56.0)
+ eslint-plugin-jsonc: 2.13.0(eslint@8.56.0)
+ eslint-plugin-markdown: 3.0.1(eslint@8.56.0)
+ eslint-plugin-n: 16.6.2(eslint@8.56.0)
+ eslint-plugin-no-only-tests: 3.1.0
+ eslint-plugin-perfectionist: 2.5.0(eslint@8.56.0)(typescript@5.3.3)(vue-eslint-parser@9.4.1)
+ eslint-plugin-toml: 0.9.2(eslint@8.56.0)
+ eslint-plugin-unicorn: 50.0.1(eslint@8.56.0)
+ eslint-plugin-unused-imports: 3.0.0(@typescript-eslint/eslint-plugin@6.19.0)(eslint@8.56.0)
+ eslint-plugin-vitest: 0.3.21(@typescript-eslint/eslint-plugin@6.19.0)(eslint@8.56.0)(typescript@5.3.3)(vitest@1.2.2)
+ eslint-plugin-vue: 9.20.1(eslint@8.56.0)
+ eslint-plugin-yml: 1.12.2(eslint@8.56.0)
+ eslint-processor-vue-blocks: 0.1.1(@vue/compiler-sfc@3.4.15)(eslint@8.56.0)
+ globals: 13.24.0
+ jsonc-eslint-parser: 2.4.0
+ local-pkg: 0.5.0
+ parse-gitignore: 2.0.0
+ picocolors: 1.0.0
+ prompts: 2.4.2
+ toml-eslint-parser: 0.9.3
+ vue-eslint-parser: 9.4.1(eslint@8.56.0)
+ yaml-eslint-parser: 1.2.2
+ yargs: 17.7.2
+ transitivePeerDependencies:
+ - '@vue/compiler-sfc'
+ - astro-eslint-parser
+ - eslint-import-resolver-typescript
+ - eslint-import-resolver-webpack
+ - supports-color
+ - svelte
+ - typescript
+ - vitest
+ dev: true
+
+ /@antfu/eslint-define-config@1.23.0-2:
+ resolution: {integrity: sha512-LvxY21+ZhpuBf/aHeBUtGQhSEfad4PkNKXKvDOSvukaM3XVTfBhwmHX2EKwAsdq5DlfjbT3qqYyMiueBIO5iDQ==}
+ engines: {node: '>=18.0.0', npm: '>=9.0.0', pnpm: '>= 8.6.0'}
+ dev: true
+
/@antfu/install-pkg@0.1.1:
resolution: {integrity: sha512-LyB/8+bSfa0DFGC06zpCEfs89/XoWZwws5ygEa5D+Xsm3OfI+aXQ86VgVG7Acyef+rSZ5HE7J8rrxzrQeM3PjQ==}
dependencies:
@@ -152,18 +257,16 @@ packages:
find-up: 5.0.0
dev: true
+ /@antfu/install-pkg@0.3.1:
+ resolution: {integrity: sha512-A3zWY9VeTPnxlMiZtsGHw2lSd3ghwvL8s9RiGOtqvDxhhFfZ781ynsGBa/iUnDJ5zBrmTFQrJDud3TGgRISaxw==}
+ dependencies:
+ execa: 8.0.1
+ dev: true
+
/@antfu/utils@0.7.7:
resolution: {integrity: sha512-gFPqTG7otEJ8uP6wrhDv6mqwGWYZKNvAcCq6u9hOj0c+IKCEsY4L1oC9trPq2SaWIzAfHvqfBDxF591JkMf+kg==}
dev: true
- /@asamuzakjp/dom-selector@2.0.2:
- resolution: {integrity: sha512-x1KXOatwofR6ZAYzXRBL5wrdV0vwNxlTCK9NCuLqAzQYARqGcvFwiJA6A1ERuh+dgeA4Dxm3JBYictIes+SqUQ==}
- dependencies:
- bidi-js: 1.0.3
- css-tree: 2.3.1
- is-potential-custom-element-name: 1.0.1
- dev: false
-
/@babel/code-frame@7.23.5:
resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==}
engines: {node: '>=6.9.0'}
@@ -502,6 +605,75 @@ packages:
mime: 3.0.0
dev: true
+ /@codemirror/autocomplete@6.12.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.0)(@codemirror/view@6.23.1)(@lezer/common@1.2.1):
+ resolution: {integrity: sha512-r4IjdYFthwbCQyvqnSlx0WBHRHi8nBvU+WjJxFUij81qsBfhNudf/XKKmmC2j3m0LaOYUQTf3qiEK1J8lO1sdg==}
+ peerDependencies:
+ '@codemirror/language': ^6.0.0
+ '@codemirror/state': ^6.0.0
+ '@codemirror/view': ^6.0.0
+ '@lezer/common': ^1.0.0
+ dependencies:
+ '@codemirror/language': 6.10.1
+ '@codemirror/state': 6.4.0
+ '@codemirror/view': 6.23.1
+ '@lezer/common': 1.2.1
+ dev: true
+
+ /@codemirror/commands@6.3.3:
+ resolution: {integrity: sha512-dO4hcF0fGT9tu1Pj1D2PvGvxjeGkbC6RGcZw6Qs74TH+Ed1gw98jmUgd2axWvIZEqTeTuFrg1lEB1KV6cK9h1A==}
+ dependencies:
+ '@codemirror/language': 6.10.1
+ '@codemirror/state': 6.4.0
+ '@codemirror/view': 6.23.1
+ '@lezer/common': 1.2.1
+ dev: true
+
+ /@codemirror/lang-json@6.0.1:
+ resolution: {integrity: sha512-+T1flHdgpqDDlJZ2Lkil/rLiRy684WMLc74xUnjJH48GQdfJo/pudlTRreZmKwzP8/tGdKf83wlbAdOCzlJOGQ==}
+ dependencies:
+ '@codemirror/language': 6.10.1
+ '@lezer/json': 1.0.2
+ dev: true
+
+ /@codemirror/language@6.10.1:
+ resolution: {integrity: sha512-5GrXzrhq6k+gL5fjkAwt90nYDmjlzTIJV8THnxNFtNKWotMIlzzN+CpqxqwXOECnUdOndmSeWntVrVcv5axWRQ==}
+ dependencies:
+ '@codemirror/state': 6.4.0
+ '@codemirror/view': 6.23.1
+ '@lezer/common': 1.2.1
+ '@lezer/highlight': 1.2.0
+ '@lezer/lr': 1.4.0
+ style-mod: 4.1.0
+ dev: true
+
+ /@codemirror/lint@6.5.0:
+ resolution: {integrity: sha512-+5YyicIaaAZKU8K43IQi8TBy6mF6giGeWAH7N96Z5LC30Wm5JMjqxOYIE9mxwMG1NbhT2mA3l9hA4uuKUM3E5g==}
+ dependencies:
+ '@codemirror/state': 6.4.0
+ '@codemirror/view': 6.23.1
+ crelt: 1.0.6
+ dev: true
+
+ /@codemirror/search@6.5.5:
+ resolution: {integrity: sha512-PIEN3Ke1buPod2EHbJsoQwlbpkz30qGZKcnmH1eihq9+bPQx8gelauUwLYaY4vBOuBAuEhmpDLii4rj/uO0yMA==}
+ dependencies:
+ '@codemirror/state': 6.4.0
+ '@codemirror/view': 6.23.1
+ crelt: 1.0.6
+ dev: true
+
+ /@codemirror/state@6.4.0:
+ resolution: {integrity: sha512-hm8XshYj5Fo30Bb922QX9hXB/bxOAVH+qaqHBzw5TKa72vOeslyGwd4X8M0c1dJ9JqxlaMceOQ8RsL9tC7gU0A==}
+ dev: true
+
+ /@codemirror/view@6.23.1:
+ resolution: {integrity: sha512-J2Xnn5lFYT1ZN/5ewEoMBCmLlL71lZ3mBdb7cUEuHhX2ESoSrNEucpsDXpX22EuTGm9LOgC9v4Z0wx+Ez8QmGA==}
+ dependencies:
+ '@codemirror/state': 6.4.0
+ style-mod: 4.1.0
+ w3c-keyname: 2.2.8
+ dev: true
+
/@csstools/cascade-layer-name-parser@1.0.7(@csstools/css-parser-algorithms@2.5.0)(@csstools/css-tokenizer@2.2.3):
resolution: {integrity: sha512-9J4aMRJ7A2WRjaRLvsMeWrL69FmEuijtiW1XlK/sG+V0UJiHVYUyvj9mY4WAXfU/hGIiGOgL8e0jJcRyaZTjDQ==}
engines: {node: ^14 || ^16 || >=18}
@@ -547,6 +719,15 @@ packages:
- supports-color
dev: true
+ /@es-joy/jsdoccomment@0.41.0:
+ resolution: {integrity: sha512-aKUhyn1QI5Ksbqcr3fFJj16p99QdjUxXAEuFst1Z47DRyoiMwivIH9MV/ARcJOCXVjPfjITciej8ZD2O/6qUmw==}
+ engines: {node: '>=16'}
+ dependencies:
+ comment-parser: 1.4.1
+ esquery: 1.5.0
+ jsdoc-type-pratt-parser: 4.0.0
+ dev: true
+
/@esbuild/aix-ppc64@0.19.11:
resolution: {integrity: sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==}
engines: {node: '>=12'}
@@ -556,6 +737,15 @@ packages:
dev: true
optional: true
+ /@esbuild/aix-ppc64@0.20.0:
+ resolution: {integrity: sha512-fGFDEctNh0CcSwsiRPxiaqX0P5rq+AqE0SRhYGZ4PX46Lg1FNR6oCxJghf8YgY0WQEgQuh3lErUFE4KxLeRmmw==}
+ engines: {node: '>=12'}
+ cpu: [ppc64]
+ os: [aix]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/android-arm64@0.19.11:
resolution: {integrity: sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==}
engines: {node: '>=12'}
@@ -565,6 +755,15 @@ packages:
dev: true
optional: true
+ /@esbuild/android-arm64@0.20.0:
+ resolution: {integrity: sha512-aVpnM4lURNkp0D3qPoAzSG92VXStYmoVPOgXveAUoQBWRSuQzt51yvSju29J6AHPmwY1BjH49uR29oyfH1ra8Q==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/android-arm@0.15.18:
resolution: {integrity: sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==}
engines: {node: '>=12'}
@@ -583,6 +782,15 @@ packages:
dev: true
optional: true
+ /@esbuild/android-arm@0.20.0:
+ resolution: {integrity: sha512-3bMAfInvByLHfJwYPJRlpTeaQA75n8C/QKpEaiS4HrFWFiJlNI0vzq/zCjBrhAYcPyVPG7Eo9dMrcQXuqmNk5g==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/android-x64@0.19.11:
resolution: {integrity: sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==}
engines: {node: '>=12'}
@@ -592,6 +800,15 @@ packages:
dev: true
optional: true
+ /@esbuild/android-x64@0.20.0:
+ resolution: {integrity: sha512-uK7wAnlRvjkCPzh8jJ+QejFyrP8ObKuR5cBIsQZ+qbMunwR8sbd8krmMbxTLSrDhiPZaJYKQAU5Y3iMDcZPhyQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/darwin-arm64@0.19.11:
resolution: {integrity: sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==}
engines: {node: '>=12'}
@@ -601,6 +818,15 @@ packages:
dev: true
optional: true
+ /@esbuild/darwin-arm64@0.20.0:
+ resolution: {integrity: sha512-AjEcivGAlPs3UAcJedMa9qYg9eSfU6FnGHJjT8s346HSKkrcWlYezGE8VaO2xKfvvlZkgAhyvl06OJOxiMgOYQ==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/darwin-x64@0.19.11:
resolution: {integrity: sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==}
engines: {node: '>=12'}
@@ -610,6 +836,15 @@ packages:
dev: true
optional: true
+ /@esbuild/darwin-x64@0.20.0:
+ resolution: {integrity: sha512-bsgTPoyYDnPv8ER0HqnJggXK6RyFy4PH4rtsId0V7Efa90u2+EifxytE9pZnsDgExgkARy24WUQGv9irVbTvIw==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/freebsd-arm64@0.19.11:
resolution: {integrity: sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==}
engines: {node: '>=12'}
@@ -619,6 +854,15 @@ packages:
dev: true
optional: true
+ /@esbuild/freebsd-arm64@0.20.0:
+ resolution: {integrity: sha512-kQ7jYdlKS335mpGbMW5tEe3IrQFIok9r84EM3PXB8qBFJPSc6dpWfrtsC/y1pyrz82xfUIn5ZrnSHQQsd6jebQ==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [freebsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/freebsd-x64@0.19.11:
resolution: {integrity: sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==}
engines: {node: '>=12'}
@@ -628,6 +872,15 @@ packages:
dev: true
optional: true
+ /@esbuild/freebsd-x64@0.20.0:
+ resolution: {integrity: sha512-uG8B0WSepMRsBNVXAQcHf9+Ko/Tr+XqmK7Ptel9HVmnykupXdS4J7ovSQUIi0tQGIndhbqWLaIL/qO/cWhXKyQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [freebsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/linux-arm64@0.19.11:
resolution: {integrity: sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==}
engines: {node: '>=12'}
@@ -637,6 +890,15 @@ packages:
dev: true
optional: true
+ /@esbuild/linux-arm64@0.20.0:
+ resolution: {integrity: sha512-uTtyYAP5veqi2z9b6Gr0NUoNv9F/rOzI8tOD5jKcCvRUn7T60Bb+42NDBCWNhMjkQzI0qqwXkQGo1SY41G52nw==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/linux-arm@0.19.11:
resolution: {integrity: sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==}
engines: {node: '>=12'}
@@ -646,6 +908,15 @@ packages:
dev: true
optional: true
+ /@esbuild/linux-arm@0.20.0:
+ resolution: {integrity: sha512-2ezuhdiZw8vuHf1HKSf4TIk80naTbP9At7sOqZmdVwvvMyuoDiZB49YZKLsLOfKIr77+I40dWpHVeY5JHpIEIg==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/linux-ia32@0.19.11:
resolution: {integrity: sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==}
engines: {node: '>=12'}
@@ -655,6 +926,15 @@ packages:
dev: true
optional: true
+ /@esbuild/linux-ia32@0.20.0:
+ resolution: {integrity: sha512-c88wwtfs8tTffPaoJ+SQn3y+lKtgTzyjkD8NgsyCtCmtoIC8RDL7PrJU05an/e9VuAke6eJqGkoMhJK1RY6z4w==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/linux-loong64@0.15.18:
resolution: {integrity: sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==}
engines: {node: '>=12'}
@@ -673,6 +953,15 @@ packages:
dev: true
optional: true
+ /@esbuild/linux-loong64@0.20.0:
+ resolution: {integrity: sha512-lR2rr/128/6svngnVta6JN4gxSXle/yZEZL3o4XZ6esOqhyR4wsKyfu6qXAL04S4S5CgGfG+GYZnjFd4YiG3Aw==}
+ engines: {node: '>=12'}
+ cpu: [loong64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/linux-mips64el@0.19.11:
resolution: {integrity: sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==}
engines: {node: '>=12'}
@@ -682,6 +971,15 @@ packages:
dev: true
optional: true
+ /@esbuild/linux-mips64el@0.20.0:
+ resolution: {integrity: sha512-9Sycc+1uUsDnJCelDf6ZNqgZQoK1mJvFtqf2MUz4ujTxGhvCWw+4chYfDLPepMEvVL9PDwn6HrXad5yOrNzIsQ==}
+ engines: {node: '>=12'}
+ cpu: [mips64el]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/linux-ppc64@0.19.11:
resolution: {integrity: sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==}
engines: {node: '>=12'}
@@ -691,6 +989,15 @@ packages:
dev: true
optional: true
+ /@esbuild/linux-ppc64@0.20.0:
+ resolution: {integrity: sha512-CoWSaaAXOZd+CjbUTdXIJE/t7Oz+4g90A3VBCHLbfuc5yUQU/nFDLOzQsN0cdxgXd97lYW/psIIBdjzQIwTBGw==}
+ engines: {node: '>=12'}
+ cpu: [ppc64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/linux-riscv64@0.19.11:
resolution: {integrity: sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==}
engines: {node: '>=12'}
@@ -700,6 +1007,15 @@ packages:
dev: true
optional: true
+ /@esbuild/linux-riscv64@0.20.0:
+ resolution: {integrity: sha512-mlb1hg/eYRJUpv8h/x+4ShgoNLL8wgZ64SUr26KwglTYnwAWjkhR2GpoKftDbPOCnodA9t4Y/b68H4J9XmmPzA==}
+ engines: {node: '>=12'}
+ cpu: [riscv64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/linux-s390x@0.19.11:
resolution: {integrity: sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==}
engines: {node: '>=12'}
@@ -709,6 +1025,15 @@ packages:
dev: true
optional: true
+ /@esbuild/linux-s390x@0.20.0:
+ resolution: {integrity: sha512-fgf9ubb53xSnOBqyvWEY6ukBNRl1mVX1srPNu06B6mNsNK20JfH6xV6jECzrQ69/VMiTLvHMicQR/PgTOgqJUQ==}
+ engines: {node: '>=12'}
+ cpu: [s390x]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/linux-x64@0.19.11:
resolution: {integrity: sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==}
engines: {node: '>=12'}
@@ -718,6 +1043,15 @@ packages:
dev: true
optional: true
+ /@esbuild/linux-x64@0.20.0:
+ resolution: {integrity: sha512-H9Eu6MGse++204XZcYsse1yFHmRXEWgadk2N58O/xd50P9EvFMLJTQLg+lB4E1cF2xhLZU5luSWtGTb0l9UeSg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/netbsd-x64@0.19.11:
resolution: {integrity: sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==}
engines: {node: '>=12'}
@@ -727,6 +1061,15 @@ packages:
dev: true
optional: true
+ /@esbuild/netbsd-x64@0.20.0:
+ resolution: {integrity: sha512-lCT675rTN1v8Fo+RGrE5KjSnfY0x9Og4RN7t7lVrN3vMSjy34/+3na0q7RIfWDAj0e0rCh0OL+P88lu3Rt21MQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [netbsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/openbsd-x64@0.19.11:
resolution: {integrity: sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==}
engines: {node: '>=12'}
@@ -736,6 +1079,15 @@ packages:
dev: true
optional: true
+ /@esbuild/openbsd-x64@0.20.0:
+ resolution: {integrity: sha512-HKoUGXz/TOVXKQ+67NhxyHv+aDSZf44QpWLa3I1lLvAwGq8x1k0T+e2HHSRvxWhfJrFxaaqre1+YyzQ99KixoA==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [openbsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/sunos-x64@0.19.11:
resolution: {integrity: sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==}
engines: {node: '>=12'}
@@ -745,6 +1097,15 @@ packages:
dev: true
optional: true
+ /@esbuild/sunos-x64@0.20.0:
+ resolution: {integrity: sha512-GDwAqgHQm1mVoPppGsoq4WJwT3vhnz/2N62CzhvApFD1eJyTroob30FPpOZabN+FgCjhG+AgcZyOPIkR8dfD7g==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [sunos]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/win32-arm64@0.19.11:
resolution: {integrity: sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==}
engines: {node: '>=12'}
@@ -754,6 +1115,15 @@ packages:
dev: true
optional: true
+ /@esbuild/win32-arm64@0.20.0:
+ resolution: {integrity: sha512-0vYsP8aC4TvMlOQYozoksiaxjlvUcQrac+muDqj1Fxy6jh9l9CZJzj7zmh8JGfiV49cYLTorFLxg7593pGldwQ==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/win32-ia32@0.19.11:
resolution: {integrity: sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==}
engines: {node: '>=12'}
@@ -763,6 +1133,15 @@ packages:
dev: true
optional: true
+ /@esbuild/win32-ia32@0.20.0:
+ resolution: {integrity: sha512-p98u4rIgfh4gdpV00IqknBD5pC84LCub+4a3MO+zjqvU5MVXOc3hqR2UgT2jI2nh3h8s9EQxmOsVI3tyzv1iFg==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/win32-x64@0.19.11:
resolution: {integrity: sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==}
engines: {node: '>=12'}
@@ -772,6 +1151,15 @@ packages:
dev: true
optional: true
+ /@esbuild/win32-x64@0.20.0:
+ resolution: {integrity: sha512-NgJnesu1RtWihtTtXGFMU5YSE6JyyHPMxCwBZK7a6/8d31GuSo9l0Ss7w1Jw5QnKUawG6UEehs883kcXf5fYwg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@eslint-community/eslint-utils@4.4.0(eslint@8.56.0):
resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -787,6 +1175,18 @@ packages:
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
dev: true
+ /@eslint-types/jsdoc@46.8.2-1:
+ resolution: {integrity: sha512-FwD7V0xX0jyaqj8Ul5ZY+TAAPohDfVqtbuXJNHb+OIv1aTIqZi5+Zn3F2UwQ5O3BnQd2mTduyK0+HjGx3/AMFg==}
+ dev: true
+
+ /@eslint-types/typescript-eslint@6.19.1:
+ resolution: {integrity: sha512-X0farz1+psE6Qfx6+ISQQ/J3ZetKlUeuTIN9Zt/agx4UXrgK6daH/n9ba776JxysK6YJCRaEHng/bcQQUm+BsA==}
+ dev: true
+
+ /@eslint-types/unicorn@50.0.1:
+ resolution: {integrity: sha512-nuJuipTNcg9f+oxZ+3QZw4tuDLmir4RJOPfM/oujgToiy1s+tePDZhwg5jUGc3q8OzTtPbVpsFSYX7QApjO3EA==}
+ dev: true
+
/@eslint/eslintrc@2.1.4:
resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -814,6 +1214,28 @@ packages:
engines: {node: '>=14'}
dev: true
+ /@fortawesome/fontawesome-common-types@6.5.1:
+ resolution: {integrity: sha512-GkWzv+L6d2bI5f/Vk6ikJ9xtl7dfXtoRu3YGE6nq0p/FFqA1ebMOAWg3XgRyb0I6LYyYkiAo+3/KrwuBp8xG7A==}
+ engines: {node: '>=6'}
+ requiresBuild: true
+ dev: true
+
+ /@fortawesome/free-regular-svg-icons@6.5.1:
+ resolution: {integrity: sha512-m6ShXn+wvqEU69wSP84coxLbNl7sGVZb+Ca+XZq6k30SzuP3X4TfPqtycgUh9ASwlNh5OfQCd8pDIWxl+O+LlQ==}
+ engines: {node: '>=6'}
+ requiresBuild: true
+ dependencies:
+ '@fortawesome/fontawesome-common-types': 6.5.1
+ dev: true
+
+ /@fortawesome/free-solid-svg-icons@6.5.1:
+ resolution: {integrity: sha512-S1PPfU3mIJa59biTtXJz1oI0+KAXW6bkAb31XKhxdxtuXDiUIFsih4JR1v5BbxY7hVHsD1RKq+jRkVRaf773NQ==}
+ engines: {node: '>=6'}
+ requiresBuild: true
+ dependencies:
+ '@fortawesome/fontawesome-common-types': 6.5.1
+ dev: true
+
/@headlessui/tailwindcss@0.2.0(tailwindcss@3.4.1):
resolution: {integrity: sha512-fpL830Fln1SykOCboExsWr3JIVeQKieLJ3XytLe/tt1A0XzqUthOftDmjcCYLW62w7mQI7wXcoPXr3tZ9QfGxw==}
engines: {node: '>=10'}
@@ -914,24 +1336,24 @@ packages:
vue: 3.4.15(typescript@5.3.3)
dev: true
- /@intlify/core-base@9.9.0:
- resolution: {integrity: sha512-C7UXPymDIOlMGSNjAhNLtKgzITc/8BjINK5gNKXg8GiWCTwL6n3MWr55czksxn8RM5wTMz0qcLOFT+adtaVQaA==}
+ /@intlify/core-base@9.9.1:
+ resolution: {integrity: sha512-qsV15dg7jNX2faBRyKMgZS8UcFJViWEUPLdzZ9UR0kQZpFVeIpc0AG7ZOfeP7pX2T9SQ5jSiorq/tii9nkkafA==}
engines: {node: '>= 16'}
dependencies:
- '@intlify/message-compiler': 9.9.0
- '@intlify/shared': 9.9.0
+ '@intlify/message-compiler': 9.9.1
+ '@intlify/shared': 9.9.1
dev: false
- /@intlify/message-compiler@9.9.0:
- resolution: {integrity: sha512-yDU/jdUm9KuhEzYfS+wuyja209yXgdl1XFhMlKtXEgSFTxz4COZQCRXXbbH8JrAjMsaJ7bdoPSLsKlY6mXG2iA==}
+ /@intlify/message-compiler@9.9.1:
+ resolution: {integrity: sha512-zTvP6X6HeumHOXuAE1CMMsV6tTX+opKMOxO1OHTCg5N5Sm/F7d8o2jdT6W6L5oHUsJ/vvkGefHIs7Q3hfowmsA==}
engines: {node: '>= 16'}
dependencies:
- '@intlify/shared': 9.9.0
+ '@intlify/shared': 9.9.1
source-map-js: 1.0.2
dev: false
- /@intlify/shared@9.9.0:
- resolution: {integrity: sha512-1ECUyAHRrzOJbOizyGufYP2yukqGrWXtkmTu4PcswVnWbkcjzk3YQGmJ0bLkM7JZ0ZYAaohLGdYvBYnTOGYJ9g==}
+ /@intlify/shared@9.9.1:
+ resolution: {integrity: sha512-b3Pta1nwkz5rGq434v0psHwEwHGy1pYCttfcM22IE//K9owbpkEvFptx9VcuRAxjQdrO2If249cmDDjBu5wMDA==}
engines: {node: '>= 16'}
dev: false
@@ -1024,6 +1446,30 @@ packages:
resolution: {integrity: sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==}
dev: true
+ /@lezer/common@1.2.1:
+ resolution: {integrity: sha512-yemX0ZD2xS/73llMZIK6KplkjIjf2EvAHcinDi/TfJ9hS25G0388+ClHt6/3but0oOxinTcQHJLDXh6w1crzFQ==}
+ dev: true
+
+ /@lezer/highlight@1.2.0:
+ resolution: {integrity: sha512-WrS5Mw51sGrpqjlh3d4/fOwpEV2Hd3YOkp9DBt4k8XZQcoTHZFB7sx030A6OcahF4J1nDQAa3jXlTVVYH50IFA==}
+ dependencies:
+ '@lezer/common': 1.2.1
+ dev: true
+
+ /@lezer/json@1.0.2:
+ resolution: {integrity: sha512-xHT2P4S5eeCYECyKNPhr4cbEL9tc8w83SPwRC373o9uEdrvGKTZoJVAGxpOsZckMlEh9W23Pc72ew918RWQOBQ==}
+ dependencies:
+ '@lezer/common': 1.2.1
+ '@lezer/highlight': 1.2.0
+ '@lezer/lr': 1.4.0
+ dev: true
+
+ /@lezer/lr@1.4.0:
+ resolution: {integrity: sha512-Wst46p51km8gH0ZUmeNrtpRYmdlRHUpN1DQd3GFAyKANi8WVz8c2jHYTf1CVScFaCjQw1iO3ZZdqGDxQPRErTg==}
+ dependencies:
+ '@lezer/common': 1.2.1
+ dev: true
+
/@mapbox/node-pre-gyp@1.0.11:
resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==}
hasBin: true
@@ -1155,17 +1601,33 @@ packages:
resolution: {integrity: sha512-GBzP8zOc7CGWyFQS6dv1lQz8VVpz5C2yRszbXufwG/9zhStTIH50EtD87NmWbTMwXDvZLNg8GIpb1UFdH93JCA==}
dev: true
+ /@nuxt/devtools-kit@1.0.8(nuxt@3.10.0)(rollup@3.29.4)(vite@5.0.12):
+ resolution: {integrity: sha512-j7bNZmoAXQ1a8qv6j6zk4c/aekrxYqYVQM21o/Hy4XHCUq4fajSgpoc8mjyWJSTfpkOmuLyEzMexpDWiIVSr6A==}
+ peerDependencies:
+ nuxt: ^3.9.0
+ vite: '*'
+ dependencies:
+ '@nuxt/kit': 3.10.0(rollup@3.29.4)
+ '@nuxt/schema': 3.10.0(rollup@3.29.4)
+ execa: 7.2.0
+ nuxt: 3.10.0(@types/node@20.11.10)(eslint@8.56.0)(rollup@3.29.4)(typescript@5.3.3)(vite@5.0.12)
+ vite: 5.0.12(@types/node@20.11.10)
+ transitivePeerDependencies:
+ - rollup
+ - supports-color
+ dev: true
+
/@nuxt/devtools-kit@1.0.8(nuxt@3.9.3)(rollup@3.29.4)(vite@5.0.12):
resolution: {integrity: sha512-j7bNZmoAXQ1a8qv6j6zk4c/aekrxYqYVQM21o/Hy4XHCUq4fajSgpoc8mjyWJSTfpkOmuLyEzMexpDWiIVSr6A==}
peerDependencies:
nuxt: ^3.9.0
vite: '*'
dependencies:
- '@nuxt/kit': 3.9.3(rollup@3.29.4)
- '@nuxt/schema': 3.9.3(rollup@3.29.4)
+ '@nuxt/kit': 3.10.0(rollup@3.29.4)
+ '@nuxt/schema': 3.10.0(rollup@3.29.4)
execa: 7.2.0
- nuxt: 3.9.3(@types/node@20.11.5)(eslint@8.56.0)(rollup@3.29.4)(typescript@5.3.3)(vite@5.0.12)
- vite: 5.0.12(@types/node@20.11.5)
+ nuxt: 3.9.3(@types/node@20.11.10)(eslint@8.56.0)(rollup@3.29.4)(typescript@5.3.3)(vite@5.0.12)
+ vite: 5.0.12(@types/node@20.11.10)
transitivePeerDependencies:
- rollup
- supports-color
@@ -1187,6 +1649,57 @@ packages:
semver: 7.5.4
dev: true
+ /@nuxt/devtools@1.0.8(nuxt@3.10.0)(rollup@3.29.4)(vite@5.0.12):
+ resolution: {integrity: sha512-o6aBFEBxc8OgVHV4OPe2g0q9tFIe9HiTxRiJnlTJ+jHvOQsBLS651ArdVtwLChf9UdMouFlpLLJ1HteZqTbtsQ==}
+ hasBin: true
+ peerDependencies:
+ nuxt: ^3.9.0
+ vite: '*'
+ dependencies:
+ '@antfu/utils': 0.7.7
+ '@nuxt/devtools-kit': 1.0.8(nuxt@3.10.0)(rollup@3.29.4)(vite@5.0.12)
+ '@nuxt/devtools-wizard': 1.0.8
+ '@nuxt/kit': 3.9.3(rollup@3.29.4)
+ birpc: 0.2.14
+ consola: 3.2.3
+ destr: 2.0.2
+ error-stack-parser-es: 0.1.1
+ execa: 7.2.0
+ fast-glob: 3.3.2
+ flatted: 3.2.9
+ get-port-please: 3.1.2
+ hookable: 5.5.3
+ image-meta: 0.2.0
+ is-installed-globally: 1.0.0
+ launch-editor: 2.6.1
+ local-pkg: 0.5.0
+ magicast: 0.3.3
+ nuxt: 3.10.0(@types/node@20.11.10)(eslint@8.56.0)(rollup@3.29.4)(typescript@5.3.3)(vite@5.0.12)
+ nypm: 0.3.4
+ ohash: 1.1.3
+ pacote: 17.0.6
+ pathe: 1.1.2
+ perfect-debounce: 1.0.0
+ pkg-types: 1.0.3
+ rc9: 2.1.1
+ scule: 1.2.0
+ semver: 7.5.4
+ simple-git: 3.22.0
+ sirv: 2.0.4
+ unimport: 3.7.1(rollup@3.29.4)
+ vite: 5.0.12(@types/node@20.11.10)
+ vite-plugin-inspect: 0.8.1(@nuxt/kit@3.9.3)(rollup@3.29.4)(vite@5.0.12)
+ vite-plugin-vue-inspector: 4.0.2(vite@5.0.12)
+ which: 3.0.1
+ ws: 8.16.0
+ transitivePeerDependencies:
+ - bluebird
+ - bufferutil
+ - rollup
+ - supports-color
+ - utf-8-validate
+ dev: true
+
/@nuxt/devtools@1.0.8(nuxt@3.9.3)(rollup@3.29.4)(vite@5.0.12):
resolution: {integrity: sha512-o6aBFEBxc8OgVHV4OPe2g0q9tFIe9HiTxRiJnlTJ+jHvOQsBLS651ArdVtwLChf9UdMouFlpLLJ1HteZqTbtsQ==}
hasBin: true
@@ -1212,7 +1725,7 @@ packages:
launch-editor: 2.6.1
local-pkg: 0.5.0
magicast: 0.3.3
- nuxt: 3.9.3(@types/node@20.11.5)(eslint@8.56.0)(rollup@3.29.4)(typescript@5.3.3)(vite@5.0.12)
+ nuxt: 3.9.3(@types/node@20.11.10)(eslint@8.56.0)(rollup@3.29.4)(typescript@5.3.3)(vite@5.0.12)
nypm: 0.3.4
ohash: 1.1.3
pacote: 17.0.6
@@ -1225,33 +1738,44 @@ packages:
simple-git: 3.22.0
sirv: 2.0.4
unimport: 3.7.1(rollup@3.29.4)
- vite: 5.0.12(@types/node@20.11.5)
+ vite: 5.0.12(@types/node@20.11.10)
vite-plugin-inspect: 0.8.1(@nuxt/kit@3.9.3)(rollup@3.29.4)(vite@5.0.12)
vite-plugin-vue-inspector: 4.0.2(vite@5.0.12)
which: 3.0.1
ws: 8.16.0
transitivePeerDependencies:
- - bluebird
- - bufferutil
+ - bluebird
+ - bufferutil
+ - rollup
+ - supports-color
+ - utf-8-validate
+ dev: true
+
+ /@nuxt/kit@3.10.0(rollup@3.29.4):
+ resolution: {integrity: sha512-SNyZqk57kyEvTdFSYhQCYFCwT/EQO13O9SWtY2ULscdhXd2C5D0SQW9E7OM7O/31Fa+KQ9RnSTA8DnwaOFne2g==}
+ engines: {node: ^14.18.0 || >=16.10.0}
+ dependencies:
+ '@nuxt/schema': 3.10.0(rollup@3.29.4)
+ c12: 1.6.1
+ consola: 3.2.3
+ defu: 6.1.4
+ globby: 14.0.0
+ hash-sum: 2.0.0
+ ignore: 5.3.0
+ jiti: 1.21.0
+ knitwork: 1.0.0
+ mlly: 1.5.0
+ pathe: 1.1.2
+ pkg-types: 1.0.3
+ scule: 1.2.0
+ semver: 7.5.4
+ ufo: 1.3.2
+ unctx: 2.3.1
+ unimport: 3.7.1(rollup@3.29.4)
+ untyped: 1.4.2
+ transitivePeerDependencies:
- rollup
- supports-color
- - utf-8-validate
- dev: true
-
- /@nuxt/eslint-config@0.2.0(eslint@8.56.0):
- resolution: {integrity: sha512-NeJX8TLcnNAjQFiDs3XhP+9CHKK8jaKsP7eUyCSrQdgY7nqWe7VJx64lwzx5FTT4cW3RHMEyH+Y0qzLGYYoa/A==}
- peerDependencies:
- eslint: ^8.48.0
- dependencies:
- '@rushstack/eslint-patch': 1.7.0
- '@typescript-eslint/eslint-plugin': 6.19.0(@typescript-eslint/parser@6.19.0)(eslint@8.56.0)(typescript@5.3.3)
- '@typescript-eslint/parser': 6.19.0(eslint@8.56.0)(typescript@5.3.3)
- eslint: 8.56.0
- eslint-plugin-vue: 9.20.1(eslint@8.56.0)
- typescript: 5.3.3
- transitivePeerDependencies:
- - supports-color
- dev: true
/@nuxt/kit@3.9.3(rollup@3.29.4):
resolution: {integrity: sha512-bHGXpTB6E+YJCC1L9tTwrP7txgLZzyuFes/tgy1ZM4dlfrCsGqLK/K4mddROMdC3D81scnH84u7yQsN0JRgoTg==}
@@ -1278,15 +1802,16 @@ packages:
transitivePeerDependencies:
- rollup
- supports-color
+ dev: true
- /@nuxt/module-builder@0.5.5(@nuxt/kit@3.9.3)(nuxi@3.10.0)(typescript@5.3.3):
+ /@nuxt/module-builder@0.5.5(@nuxt/kit@3.10.0)(nuxi@3.10.0)(typescript@5.3.3):
resolution: {integrity: sha512-ifFfwA1rbSXSae25RmqA2kAbV3xoShZNrq1yK8VXB/EnIcDn4WiaYR1PytaSxIt5zsvWPn92BJXiIUBiMQZ0hw==}
hasBin: true
peerDependencies:
'@nuxt/kit': ^3.8.2
nuxi: ^3.10.0
dependencies:
- '@nuxt/kit': 3.9.3(rollup@3.29.4)
+ '@nuxt/kit': 3.10.0(rollup@3.29.4)
citty: 0.1.5
consola: 3.2.3
mlly: 1.5.0
@@ -1299,6 +1824,25 @@ packages:
- typescript
dev: true
+ /@nuxt/schema@3.10.0(rollup@3.29.4):
+ resolution: {integrity: sha512-XwxyoW1DFMpHsoF3LHvwd2e2JFy9bTBfTo2/gH2RH9tU2W3I56A9uPRBftFXTNEDBrO2whYOFsRgjVOmM0ZZHg==}
+ engines: {node: ^14.18.0 || >=16.10.0}
+ dependencies:
+ '@nuxt/ui-templates': 1.3.1
+ consola: 3.2.3
+ defu: 6.1.4
+ hookable: 5.5.3
+ pathe: 1.1.2
+ pkg-types: 1.0.3
+ scule: 1.2.0
+ std-env: 3.7.0
+ ufo: 1.3.2
+ unimport: 3.7.1(rollup@3.29.4)
+ untyped: 1.4.2
+ transitivePeerDependencies:
+ - rollup
+ - supports-color
+
/@nuxt/schema@3.9.3(rollup@3.29.4):
resolution: {integrity: sha512-pchkGBYdEJ9TAOoC5DKnLuAaFPjzgn2k0OUTr31QwbtHdTR3Q2Ua/oKsS1g9CPU7KRzSE5Vkf7ECE8zVydqF5A==}
engines: {node: ^14.18.0 || >=16.10.0}
@@ -1317,12 +1861,13 @@ packages:
transitivePeerDependencies:
- rollup
- supports-color
+ dev: true
/@nuxt/telemetry@2.5.3(rollup@3.29.4):
resolution: {integrity: sha512-Ghv2MgWbJcUM9G5Dy3oQP0cJkUwEgaiuQxEF61FXJdn0a69Q4StZEP/hLF0MWPM9m6EvAwI7orxkJHM7MrmtVg==}
hasBin: true
dependencies:
- '@nuxt/kit': 3.9.3(rollup@3.29.4)
+ '@nuxt/kit': 3.10.0(rollup@3.29.4)
ci-info: 4.0.0
consola: 3.2.3
create-require: 1.1.1
@@ -1344,8 +1889,8 @@ packages:
- supports-color
dev: true
- /@nuxt/test-utils@3.10.0(h3@1.10.0)(rollup@3.29.4)(vite@5.0.12)(vitest@1.2.1)(vue-router@4.2.5)(vue@3.4.15):
- resolution: {integrity: sha512-9ZKKrccCUyZP0P9/BdTNHWwTRvIbBnrmDvqvO0dQpTiUhgDVeO1vdG40o4e4olw7sbzUP51C8uA0OkRur/zBvQ==}
+ /@nuxt/test-utils@3.11.0(h3@1.10.1)(rollup@3.29.4)(vite@5.0.12)(vitest@1.2.2)(vue-router@4.2.5)(vue@3.4.15):
+ resolution: {integrity: sha512-9ovgpQZkZpVg/MhYVVn2169WjH/IL0XUqwGryTa/lkx0/BCi1LMVEp3HTPkmt4qbRcxitO+kL4vFqqrFGVaSVg==}
engines: {node: ^14.18.0 || >=16.10.0}
peerDependencies:
'@cucumber/cucumber': ^10.3.1
@@ -1355,7 +1900,7 @@ packages:
'@vue/test-utils': ^2.4.2
h3: '*'
happy-dom: ^9.10.9 || ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0
- jsdom: ^22.0.0 || ^23.0.0
+ jsdom: ^22.0.0 || ^23.0.0 || ^24.0.0
playwright-core: ^1.34.3
vite: '*'
vitest: ^0.34.6 || ^1.0.0
@@ -1381,8 +1926,8 @@ packages:
vitest:
optional: true
dependencies:
- '@nuxt/kit': 3.9.3(rollup@3.29.4)
- '@nuxt/schema': 3.9.3(rollup@3.29.4)
+ '@nuxt/kit': 3.10.0(rollup@3.29.4)
+ '@nuxt/schema': 3.10.0(rollup@3.29.4)
c12: 1.6.1
consola: 3.2.3
defu: 6.1.4
@@ -1391,7 +1936,7 @@ packages:
execa: 8.0.1
fake-indexeddb: 5.0.2
get-port-please: 3.1.2
- h3: 1.10.0
+ h3: 1.10.1
local-pkg: 0.5.0
magic-string: 0.30.5
node-fetch-native: 1.6.1
@@ -1404,9 +1949,9 @@ packages:
ufo: 1.3.2
unenv: 1.9.0
unplugin: 1.6.0
- vite: 5.0.12(@types/node@20.11.5)
- vitest: 1.2.1(@types/node@20.11.5)
- vitest-environment-nuxt: 1.0.0(h3@1.10.0)(rollup@3.29.4)(vite@5.0.12)(vitest@1.2.1)(vue-router@4.2.5)(vue@3.4.15)
+ vite: 5.0.12(@types/node@20.11.10)
+ vitest: 1.2.2(@types/node@20.11.10)
+ vitest-environment-nuxt: 1.0.0(h3@1.10.1)(rollup@3.29.4)(vite@5.0.12)(vitest@1.2.2)(vue-router@4.2.5)(vue@3.4.15)
vue: 3.4.15(typescript@5.3.3)
vue-router: 4.2.5(vue@3.4.15)
transitivePeerDependencies:
@@ -1465,7 +2010,68 @@ packages:
- vue
dev: true
- /@nuxt/vite-builder@3.9.3(@types/node@20.11.5)(eslint@8.56.0)(rollup@3.29.4)(typescript@5.3.3)(vue@3.4.15):
+ /@nuxt/vite-builder@3.10.0(@types/node@20.11.10)(eslint@8.56.0)(rollup@3.29.4)(typescript@5.3.3)(vue@3.4.15):
+ resolution: {integrity: sha512-PpdcPkvfBzSZVHqxZ/uneTUZq6ufZDzgP36yXxZ/ygRi90szOs5QHWzGFXJ6cCW4D34iqePKjeTXJall3C74LA==}
+ engines: {node: ^14.18.0 || >=16.10.0}
+ peerDependencies:
+ vue: ^3.3.4
+ dependencies:
+ '@nuxt/kit': 3.10.0(rollup@3.29.4)
+ '@rollup/plugin-replace': 5.0.5(rollup@3.29.4)
+ '@vitejs/plugin-vue': 5.0.3(vite@5.0.12)(vue@3.4.15)
+ '@vitejs/plugin-vue-jsx': 3.1.0(vite@5.0.12)(vue@3.4.15)
+ autoprefixer: 10.4.17(postcss@8.4.33)
+ clear: 0.1.0
+ consola: 3.2.3
+ cssnano: 6.0.3(postcss@8.4.33)
+ defu: 6.1.4
+ esbuild: 0.20.0
+ escape-string-regexp: 5.0.0
+ estree-walker: 3.0.3
+ externality: 1.0.2
+ fs-extra: 11.2.0
+ get-port-please: 3.1.2
+ h3: 1.10.1
+ knitwork: 1.0.0
+ magic-string: 0.30.5
+ mlly: 1.5.0
+ ohash: 1.1.3
+ pathe: 1.1.2
+ perfect-debounce: 1.0.0
+ pkg-types: 1.0.3
+ postcss: 8.4.33
+ rollup-plugin-visualizer: 5.12.0(rollup@3.29.4)
+ std-env: 3.7.0
+ strip-literal: 2.0.0
+ ufo: 1.3.2
+ unenv: 1.9.0
+ unplugin: 1.6.0
+ vite: 5.0.12(@types/node@20.11.10)
+ vite-node: 1.2.2(@types/node@20.11.10)
+ vite-plugin-checker: 0.6.2(eslint@8.56.0)(typescript@5.3.3)(vite@5.0.12)
+ vue: 3.4.15(typescript@5.3.3)
+ vue-bundle-renderer: 2.0.0
+ transitivePeerDependencies:
+ - '@types/node'
+ - eslint
+ - less
+ - lightningcss
+ - meow
+ - optionator
+ - rollup
+ - sass
+ - stylelint
+ - stylus
+ - sugarss
+ - supports-color
+ - terser
+ - typescript
+ - vls
+ - vti
+ - vue-tsc
+ dev: true
+
+ /@nuxt/vite-builder@3.9.3(@types/node@20.11.10)(eslint@8.56.0)(rollup@3.29.4)(typescript@5.3.3)(vue@3.4.15):
resolution: {integrity: sha512-HruOrxn0g6TS31j3jycJvGZ7pt3JNEbcXNByVh7YJwQx6ToFX8kPWRu4LPeMhrLYvZzeUr2w3iELBECFxbDmvw==}
engines: {node: ^14.18.0 || >=16.10.0}
peerDependencies:
@@ -1500,8 +2106,8 @@ packages:
strip-literal: 2.0.0
ufo: 1.3.2
unplugin: 1.6.0
- vite: 5.0.11(@types/node@20.11.5)
- vite-node: 1.2.1(@types/node@20.11.5)
+ vite: 5.0.11(@types/node@20.11.10)
+ vite-node: 1.2.1(@types/node@20.11.10)
vite-plugin-checker: 0.6.2(eslint@8.56.0)(typescript@5.3.3)(vite@5.0.11)
vue: 3.4.15(typescript@5.3.3)
vue-bundle-renderer: 2.0.0
@@ -1528,7 +2134,7 @@ packages:
/@nuxtjs/color-mode@3.3.2(rollup@3.29.4):
resolution: {integrity: sha512-BLpBfrYZngV2QWFQ4HNEFwAXa3Pno43Ge+2XHcZJTTa1Z4KzRLvOwku8yiyV3ovIaaXKGwduBdv3Z5Ocdp0/+g==}
dependencies:
- '@nuxt/kit': 3.9.3(rollup@3.29.4)
+ '@nuxt/kit': 3.10.0(rollup@3.29.4)
lodash.template: 4.5.0
pathe: 1.1.2
transitivePeerDependencies:
@@ -1564,7 +2170,7 @@ packages:
/@nuxtjs/tailwindcss@6.11.0(rollup@3.29.4):
resolution: {integrity: sha512-uZkhV+O4oiAuOsy7VR1P5FMg1kMFOKPrxA9cYtwqpXSy6T4YAmGP0y4ekfvvuWW9903lVsd9cPvCC39ZJhnldw==}
dependencies:
- '@nuxt/kit': 3.9.3(rollup@3.29.4)
+ '@nuxt/kit': 3.10.0(rollup@3.29.4)
autoprefixer: 10.4.17(postcss@8.4.33)
chokidar: 3.5.3
clear-module: 4.1.2
@@ -1586,6 +2192,31 @@ packages:
- ts-node
dev: true
+ /@nuxtjs/tailwindcss@6.11.2(rollup@3.29.4):
+ resolution: {integrity: sha512-06e8t9ia6Ru/RPMATuhGwi16rMYeZPseXiI4QmRDk/IkvluU60GxhLZOjdUIa+U7DVCECgDsRNEo/rD8/1sMKQ==}
+ dependencies:
+ '@nuxt/kit': 3.10.0(rollup@3.29.4)
+ autoprefixer: 10.4.17(postcss@8.4.33)
+ chokidar: 3.5.3
+ clear-module: 4.1.2
+ colorette: 2.0.20
+ consola: 3.2.3
+ defu: 6.1.4
+ h3: 1.10.1
+ micromatch: 4.0.5
+ pathe: 1.1.2
+ postcss: 8.4.33
+ postcss-custom-properties: 13.3.4(postcss@8.4.33)
+ postcss-nesting: 12.0.2(postcss@8.4.33)
+ tailwind-config-viewer: 1.7.3(tailwindcss@3.4.1)
+ tailwindcss: 3.4.1
+ ufo: 1.3.2
+ transitivePeerDependencies:
+ - rollup
+ - supports-color
+ - ts-node
+ dev: true
+
/@one-ini/wasm@0.1.1:
resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==}
dev: true
@@ -1677,6 +2308,7 @@ packages:
dependencies:
is-glob: 4.0.3
micromatch: 4.0.5
+ napi-wasm: 1.1.0
dev: true
bundledDependencies:
- napi-wasm
@@ -1744,6 +2376,18 @@ packages:
resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==}
dev: true
+ /@replit/codemirror-indentation-markers@6.5.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.0)(@codemirror/view@6.23.1):
+ resolution: {integrity: sha512-5RgeuQ6erfROi1EVI2X7G4UR+KByjb07jhYMynvpvlrV22JlnARifmKMGEUKy0pKcxBNfwbFqoUlTYHPgyZNlg==}
+ peerDependencies:
+ '@codemirror/language': ^6.0.0
+ '@codemirror/state': ^6.0.0
+ '@codemirror/view': ^6.0.0
+ dependencies:
+ '@codemirror/language': 6.10.1
+ '@codemirror/state': 6.4.0
+ '@codemirror/view': 6.23.1
+ dev: true
+
/@rollup/plugin-alias@5.1.0(rollup@3.29.4):
resolution: {integrity: sha512-lpA3RZ9PdIG7qqhEfv79tBffNaoDuukFDrmhLqg9ifv99u/ehn+lOg30x2zmhf8AQqQUZaMk/B9fZraQ6/acDQ==}
engines: {node: '>=14.0.0'}
@@ -2080,10 +2724,6 @@ packages:
dev: true
optional: true
- /@rushstack/eslint-patch@1.7.0:
- resolution: {integrity: sha512-Jh4t/593gxs0lJZ/z3NnasKlplXT2f+4y/LZYuaKZW5KAaiVFL/fThhs+17EbUd53jUVJ0QudYCBGbN/psvaqg==}
- dev: true
-
/@selderee/plugin-htmlparser2@0.11.0:
resolution: {integrity: sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==}
dependencies:
@@ -2091,6 +2731,14 @@ packages:
selderee: 0.11.0
dev: true
+ /@shikijs/core@1.0.0:
+ resolution: {integrity: sha512-UMKGMZ+8b88N0/n6DWwWth1PHsOaxjW+R2u+hzSiargZWTv+l3s1l8dhuIxUSsEUPlBDKLs2CSMiFZeviKQM1w==}
+ dev: false
+
+ /@shikijs/core@1.0.0-beta.3:
+ resolution: {integrity: sha512-SCwPom2Wn8XxNlEeqdzycU93SKgzYeVsedjqDsgZaz4XiiPpZUzlHt2NAEQTwTnPcHNZapZ6vbkwJ8P11ggL3Q==}
+ dev: true
+
/@sigstore/bundle@2.1.1:
resolution: {integrity: sha512-v3/iS+1nufZdKQ5iAlQKcCsoh0jffQyABvYIxKsZQFWc4ubuGjwZklFHpDgV6O6T7vvV78SW5NHI91HFKEcxKg==}
engines: {node: ^16.14.0 || >=18.0.0}
@@ -2147,6 +2795,76 @@ packages:
resolution: {integrity: sha512-rUV5WyJrJLoloD4NDN1V1+LDMDWOa4OTsT4yYJwQNpTU6FWxkxHpL7eu4w+DmiH8x/EAM1otkPE1+LaspIbplw==}
engines: {node: '>=18'}
+ /@sphinxxxx/color-conversion@2.2.2:
+ resolution: {integrity: sha512-XExJS3cLqgrmNBIP3bBw6+1oQ1ksGjFh0+oClDKFYpCCqx/hlqwWO5KO/S63fzUo67SxI9dMrF0y5T/Ey7h8Zw==}
+ dev: true
+
+ /@stylistic/eslint-plugin-js@1.5.4(eslint@8.56.0):
+ resolution: {integrity: sha512-3ctWb3NvJNV1MsrZN91cYp2EGInLPSoZKphXIbIRx/zjZxKwLDr9z4LMOWtqjq14li/OgqUUcMq5pj8fgbLoTw==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+ peerDependencies:
+ eslint: '>=8.40.0'
+ dependencies:
+ acorn: 8.11.3
+ escape-string-regexp: 4.0.0
+ eslint: 8.56.0
+ eslint-visitor-keys: 3.4.3
+ espree: 9.6.1
+ dev: true
+
+ /@stylistic/eslint-plugin-jsx@1.5.4(eslint@8.56.0):
+ resolution: {integrity: sha512-JUfrpCkeBCqt1IZ4QsP4WgxGza4PhK4LPbc0VnCjHKygl+rgqoDAovqOuzFJ49wJ4Ix3r6OIHFuwiBGswZEVvg==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+ peerDependencies:
+ eslint: '>=8.40.0'
+ dependencies:
+ '@stylistic/eslint-plugin-js': 1.5.4(eslint@8.56.0)
+ eslint: 8.56.0
+ estraverse: 5.3.0
+ dev: true
+
+ /@stylistic/eslint-plugin-plus@1.5.4(eslint@8.56.0)(typescript@5.3.3):
+ resolution: {integrity: sha512-dI0Cs5vYX/0uMhQDY+NK0cKQ0Pe9B6jWYxd0Ndud+mNloDaVLrsmJocK4zn+YfhGEDs1E4Nk5uAPZEumIpDuSg==}
+ peerDependencies:
+ eslint: '*'
+ dependencies:
+ '@typescript-eslint/utils': 6.19.0(eslint@8.56.0)(typescript@5.3.3)
+ eslint: 8.56.0
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+ dev: true
+
+ /@stylistic/eslint-plugin-ts@1.5.4(eslint@8.56.0)(typescript@5.3.3):
+ resolution: {integrity: sha512-NZDFVIlVNjuPvhT+0Cidm5IS3emtx338xbJTqs2xfOVRDGTpYwRHhNVEGa1rFOpYHmv0sAj6+OXbMDn7ul0K/g==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+ peerDependencies:
+ eslint: '>=8.40.0'
+ dependencies:
+ '@stylistic/eslint-plugin-js': 1.5.4(eslint@8.56.0)
+ '@typescript-eslint/utils': 6.19.0(eslint@8.56.0)(typescript@5.3.3)
+ eslint: 8.56.0
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+ dev: true
+
+ /@stylistic/eslint-plugin@1.5.4(eslint@8.56.0)(typescript@5.3.3):
+ resolution: {integrity: sha512-zWPXr+O67GC9KDAFkbL1U9UVqE6Iv69YMKhkIECCmE0GvClUJwdfsimm4XebEDondV7kfjMrTDZaYfrI5aS0Jg==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+ peerDependencies:
+ eslint: '>=8.40.0'
+ dependencies:
+ '@stylistic/eslint-plugin-js': 1.5.4(eslint@8.56.0)
+ '@stylistic/eslint-plugin-jsx': 1.5.4(eslint@8.56.0)
+ '@stylistic/eslint-plugin-plus': 1.5.4(eslint@8.56.0)(typescript@5.3.3)
+ '@stylistic/eslint-plugin-ts': 1.5.4(eslint@8.56.0)(typescript@5.3.3)
+ eslint: 8.56.0
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+ dev: true
+
/@swc/helpers@0.4.14:
resolution: {integrity: sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==}
dependencies:
@@ -2235,19 +2953,29 @@ packages:
/@types/http-proxy@1.17.14:
resolution: {integrity: sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==}
dependencies:
- '@types/node': 20.11.5
+ '@types/node': 20.11.10
dev: true
/@types/json-schema@7.0.15:
resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
dev: true
- /@types/node@20.11.5:
- resolution: {integrity: sha512-g557vgQjUUfN76MZAN/dt1z3dzcUsimuysco0KeluHgrPdJXkP/XdAURgyO2W9fZWHRtRBiVKzKn8vyOAwlG+w==}
+ /@types/mdast@3.0.15:
+ resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==}
+ dependencies:
+ '@types/unist': 2.0.10
+ dev: true
+
+ /@types/node@20.11.10:
+ resolution: {integrity: sha512-rZEfe/hJSGYmdfX9tvcPMYeYPW2sNl50nsw4jZmRcaG0HIAb0WYEpsB05GOb53vjqpyE9GUhlDQ4jLSoB5q9kg==}
dependencies:
undici-types: 5.26.5
dev: true
+ /@types/normalize-package-data@2.4.4:
+ resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==}
+ dev: true
+
/@types/pretty@2.0.3:
resolution: {integrity: sha512-xR96pShNlrxLd3gZqzCnbaAmbYhiRYjW51CDFjektZemqpBZBAAkMwxm4gBraJP/xSgKcsQhLXdlXOwDNWo4VQ==}
dev: true
@@ -2270,6 +2998,10 @@ packages:
resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==}
dev: false
+ /@types/unist@2.0.10:
+ resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==}
+ dev: true
+
/@types/web-bluetooth@0.0.20:
resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==}
dev: true
@@ -2332,6 +3064,14 @@ packages:
'@typescript-eslint/visitor-keys': 6.19.0
dev: true
+ /@typescript-eslint/scope-manager@6.20.0:
+ resolution: {integrity: sha512-p4rvHQRDTI1tGGMDFQm+GtxP1ZHyAh64WANVoyEcNMpaTFn3ox/3CcgtIlELnRfKzSs/DwYlDccJEtr3O6qBvA==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+ dependencies:
+ '@typescript-eslint/types': 6.20.0
+ '@typescript-eslint/visitor-keys': 6.20.0
+ dev: true
+
/@typescript-eslint/type-utils@6.19.0(eslint@8.56.0)(typescript@5.3.3):
resolution: {integrity: sha512-mcvS6WSWbjiSxKCwBcXtOM5pRkPQ6kcDds/juxcy/727IQr3xMEcwr/YLHW2A2+Fp5ql6khjbKBzOyjuPqGi/w==}
engines: {node: ^16.0.0 || >=18.0.0}
@@ -2357,6 +3097,11 @@ packages:
engines: {node: ^16.0.0 || >=18.0.0}
dev: true
+ /@typescript-eslint/types@6.20.0:
+ resolution: {integrity: sha512-MM9mfZMAhiN4cOEcUOEx+0HmuaW3WBfukBZPCfwSqFnQy0grXYtngKCqpQN339X3RrwtzspWJrpbrupKYUSBXQ==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+ dev: true
+
/@typescript-eslint/typescript-estree@6.19.0(typescript@5.3.3):
resolution: {integrity: sha512-o/zefXIbbLBZ8YJ51NlkSAt2BamrK6XOmuxSR3hynMIzzyMY33KuJ9vuMdFSXW+H0tVvdF9qBPTHA91HDb4BIQ==}
engines: {node: ^16.0.0 || >=18.0.0}
@@ -2379,6 +3124,28 @@ packages:
- supports-color
dev: true
+ /@typescript-eslint/typescript-estree@6.20.0(typescript@5.3.3):
+ resolution: {integrity: sha512-RnRya9q5m6YYSpBN7IzKu9FmLcYtErkDkc8/dKv81I9QiLLtVBHrjz+Ev/crAqgMNW2FCsoZF4g2QUylMnJz+g==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+ peerDependencies:
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@typescript-eslint/types': 6.20.0
+ '@typescript-eslint/visitor-keys': 6.20.0
+ debug: 4.3.4
+ globby: 11.1.0
+ is-glob: 4.0.3
+ minimatch: 9.0.3
+ semver: 7.5.4
+ ts-api-utils: 1.0.3(typescript@5.3.3)
+ typescript: 5.3.3
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/@typescript-eslint/utils@6.19.0(eslint@8.56.0)(typescript@5.3.3):
resolution: {integrity: sha512-QR41YXySiuN++/dC9UArYOg4X86OAYP83OWTewpVx5ct1IZhjjgTLocj7QNxGhWoTqknsgpl7L+hGygCO+sdYw==}
engines: {node: ^16.0.0 || >=18.0.0}
@@ -2398,6 +3165,25 @@ packages:
- typescript
dev: true
+ /@typescript-eslint/utils@6.20.0(eslint@8.56.0)(typescript@5.3.3):
+ resolution: {integrity: sha512-/EKuw+kRu2vAqCoDwDCBtDRU6CTKbUmwwI7SH7AashZ+W+7o8eiyy6V2cdOqN49KsTcASWsC5QeghYuRDTyOOg==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+ peerDependencies:
+ eslint: ^7.0.0 || ^8.0.0
+ dependencies:
+ '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0)
+ '@types/json-schema': 7.0.15
+ '@types/semver': 7.5.6
+ '@typescript-eslint/scope-manager': 6.20.0
+ '@typescript-eslint/types': 6.20.0
+ '@typescript-eslint/typescript-estree': 6.20.0(typescript@5.3.3)
+ eslint: 8.56.0
+ semver: 7.5.4
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+ dev: true
+
/@typescript-eslint/visitor-keys@6.19.0:
resolution: {integrity: sha512-hZaUCORLgubBvtGpp1JEFEazcuEdfxta9j4iUwdSAr7mEsYYAp3EAUyCZk3VEEqGj6W+AV4uWyrDGtrlawAsgQ==}
engines: {node: ^16.0.0 || >=18.0.0}
@@ -2406,6 +3192,14 @@ packages:
eslint-visitor-keys: 3.4.3
dev: true
+ /@typescript-eslint/visitor-keys@6.20.0:
+ resolution: {integrity: sha512-E8Cp98kRe4gKHjJD4NExXKz/zOJ1A2hhZc+IMVD6i7w4yjIvh6VyuRI0gRtxAsXtoC35uGMaQ9rjI2zJaXDEAw==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+ dependencies:
+ '@typescript-eslint/types': 6.20.0
+ eslint-visitor-keys: 3.4.3
+ dev: true
+
/@ungap/structured-clone@1.2.0:
resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
dev: true
@@ -2480,7 +3274,23 @@ packages:
'@babel/core': 7.23.7
'@babel/plugin-transform-typescript': 7.23.6(@babel/core@7.23.7)
'@vue/babel-plugin-jsx': 1.2.0(@babel/core@7.23.7)
- vite: 5.0.11(@types/node@20.11.5)
+ vite: 5.0.11(@types/node@20.11.10)
+ vue: 3.4.15(typescript@5.3.3)
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@vitejs/plugin-vue-jsx@3.1.0(vite@5.0.12)(vue@3.4.15):
+ resolution: {integrity: sha512-w9M6F3LSEU5kszVb9An2/MmXNxocAnUb3WhRr8bHlimhDrXNt6n6D2nJQR3UXpGlZHh/EsgouOHCsM8V3Ln+WA==}
+ engines: {node: ^14.18.0 || >=16.0.0}
+ peerDependencies:
+ vite: ^4.0.0 || ^5.0.0
+ vue: ^3.0.0
+ dependencies:
+ '@babel/core': 7.23.7
+ '@babel/plugin-transform-typescript': 7.23.6(@babel/core@7.23.7)
+ '@vue/babel-plugin-jsx': 1.2.0(@babel/core@7.23.7)
+ vite: 5.0.12(@types/node@20.11.10)
vue: 3.4.15(typescript@5.3.3)
transitivePeerDependencies:
- supports-color
@@ -2493,42 +3303,53 @@ packages:
vite: ^5.0.0
vue: ^3.2.25
dependencies:
- vite: 5.0.11(@types/node@20.11.5)
+ vite: 5.0.11(@types/node@20.11.10)
+ vue: 3.4.15(typescript@5.3.3)
+ dev: true
+
+ /@vitejs/plugin-vue@5.0.3(vite@5.0.12)(vue@3.4.15):
+ resolution: {integrity: sha512-b8S5dVS40rgHdDrw+DQi/xOM9ed+kSRZzfm1T74bMmBDCd8XO87NKlFYInzCtwvtWwXZvo1QxE2OSspTATWrbA==}
+ engines: {node: ^18.0.0 || >=20.0.0}
+ peerDependencies:
+ vite: ^5.0.0
+ vue: ^3.2.25
+ dependencies:
+ vite: 5.0.12(@types/node@20.11.10)
vue: 3.4.15(typescript@5.3.3)
dev: true
- /@vitest/expect@1.2.1:
- resolution: {integrity: sha512-/bqGXcHfyKgFWYwIgFr1QYDaR9e64pRKxgBNWNXPefPFRhgm+K3+a/dS0cUGEreWngets3dlr8w8SBRw2fCfFQ==}
+ /@vitest/expect@1.2.2:
+ resolution: {integrity: sha512-3jpcdPAD7LwHUUiT2pZTj2U82I2Tcgg2oVPvKxhn6mDI2On6tfvPQTjAI4628GUGDZrCm4Zna9iQHm5cEexOAg==}
dependencies:
- '@vitest/spy': 1.2.1
- '@vitest/utils': 1.2.1
+ '@vitest/spy': 1.2.2
+ '@vitest/utils': 1.2.2
chai: 4.4.1
dev: true
- /@vitest/runner@1.2.1:
- resolution: {integrity: sha512-zc2dP5LQpzNzbpaBt7OeYAvmIsRS1KpZQw4G3WM/yqSV1cQKNKwLGmnm79GyZZjMhQGlRcSFMImLjZaUQvNVZQ==}
+ /@vitest/runner@1.2.2:
+ resolution: {integrity: sha512-JctG7QZ4LSDXr5CsUweFgcpEvrcxOV1Gft7uHrvkQ+fsAVylmWQvnaAr/HDp3LAH1fztGMQZugIheTWjaGzYIg==}
dependencies:
- '@vitest/utils': 1.2.1
+ '@vitest/utils': 1.2.2
p-limit: 5.0.0
pathe: 1.1.2
dev: true
- /@vitest/snapshot@1.2.1:
- resolution: {integrity: sha512-Tmp/IcYEemKaqAYCS08sh0vORLJkMr0NRV76Gl8sHGxXT5151cITJCET20063wk0Yr/1koQ6dnmP6eEqezmd/Q==}
+ /@vitest/snapshot@1.2.2:
+ resolution: {integrity: sha512-SmGY4saEw1+bwE1th6S/cZmPxz/Q4JWsl7LvbQIky2tKE35US4gd0Mjzqfr84/4OD0tikGWaWdMja/nWL5NIPA==}
dependencies:
magic-string: 0.30.5
pathe: 1.1.2
pretty-format: 29.7.0
dev: true
- /@vitest/spy@1.2.1:
- resolution: {integrity: sha512-vG3a/b7INKH7L49Lbp0IWrG6sw9j4waWAucwnksPB1r1FTJgV7nkBByd9ufzu6VWya/QTvQW4V9FShZbZIB2UQ==}
+ /@vitest/spy@1.2.2:
+ resolution: {integrity: sha512-k9Gcahssw8d7X3pSLq3e3XEu/0L78mUkCjivUqCQeXJm9clfXR/Td8+AP+VC1O6fKPIDLcHDTAmBOINVuv6+7g==}
dependencies:
tinyspy: 2.2.0
dev: true
- /@vitest/utils@1.2.1:
- resolution: {integrity: sha512-bsH6WVZYe/J2v3+81M5LDU8kW76xWObKIURpPrOXm2pjBniBu2MERI/XP60GpS4PHU3jyK50LUutOwrx4CyHUg==}
+ /@vitest/utils@1.2.2:
+ resolution: {integrity: sha512-WKITBHLsBHlpjnDQahr+XK6RE7MiAsgrIkr0pGhQ9ygoxBfUeG0lUG5iLlzqjmKSlBv3+j5EGsriBzh+C3Tq9g==}
dependencies:
diff-sequences: 29.6.3
estree-walker: 3.0.3
@@ -2536,31 +3357,42 @@ packages:
pretty-format: 29.7.0
dev: true
- /@vue-email/cli@0.0.10(typescript@5.3.3)(vue@3.4.15):
- resolution: {integrity: sha512-F99FOPQ8++SGJ8toAqboiW78o2d9ZDMmh7B9x8OZBvHyq/cH4KZca3VCQ9JaaOX4Rrovu6R3mwdPgJhtfK+l8A==}
- hasBin: true
+ /@volar/language-core@1.11.1:
+ resolution: {integrity: sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==}
dependencies:
- '@vue-email/compiler': 0.8.8(typescript@5.3.3)(vue@3.4.15)
- transitivePeerDependencies:
- - bufferutil
- - canvas
- - supports-color
- - ts-node
+ '@volar/source-map': 1.11.1
+
+ /@volar/source-map@1.11.1:
+ resolution: {integrity: sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg==}
+ dependencies:
+ muggle-string: 0.3.1
+
+ /@volar/typescript@1.11.1:
+ resolution: {integrity: sha512-iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ==}
+ dependencies:
+ '@volar/language-core': 1.11.1
+ path-browserify: 1.0.1
+
+ /@vue-email/cli@0.0.13(typescript@5.3.3)(vue@3.4.15):
+ resolution: {integrity: sha512-O/zG7lVh095IjxUEm7hkWlQmFANUMOvxiawGAQgxYCXwzRXOb467QqoPMz9fCbyZq+StWgGnRjxVTpYfr2cSiQ==}
+ hasBin: true
+ dependencies:
+ '@vue-email/compiler': 0.8.14(typescript@5.3.3)(vue@3.4.15)
+ transitivePeerDependencies:
- typescript
- - utf-8-validate
- vue
dev: false
- /@vue-email/compiler@0.8.8(typescript@5.3.3)(vue@3.4.15):
- resolution: {integrity: sha512-oYYFxps8c7KJ1/pg72JfoBAhzq0PJCRx+YsUhv++t062G281vrPcMn36MfDtPPejn3cafBWU5H2P6d2HvrBY1g==}
+ /@vue-email/compiler@0.8.14(typescript@5.3.3)(vue@3.4.15):
+ resolution: {integrity: sha512-Z9zHYk7vY9S9WYz8xGf53oMDDQ5Di9Gn0/N0r/ifxEXwLgCcS/5EI3zqquiifXSnqWQJBD7pI18jQFwMgEq0Gw==}
peerDependencies:
vue: ^3.3.8
dependencies:
import-string: 0.1.2(typescript@5.3.3)
kolorist: 1.8.0
- scule: 1.2.0
+ scule: 1.3.0
vue: 3.4.15(typescript@5.3.3)
- vue-email: 0.8.6(typescript@5.3.3)(vue@3.4.15)
+ vue-email: 0.8.10(typescript@5.3.3)(vue@3.4.15)
transitivePeerDependencies:
- bufferutil
- canvas
@@ -2689,6 +3521,25 @@ packages:
/@vue/devtools-api@6.5.1:
resolution: {integrity: sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==}
+ /@vue/language-core@1.8.27(typescript@5.3.3):
+ resolution: {integrity: sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==}
+ peerDependencies:
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@volar/language-core': 1.11.1
+ '@volar/source-map': 1.11.1
+ '@vue/compiler-dom': 3.4.15
+ '@vue/shared': 3.4.15
+ computeds: 0.0.1
+ minimatch: 9.0.3
+ muggle-string: 0.3.1
+ path-browserify: 1.0.1
+ typescript: 5.3.3
+ vue-template-compiler: 2.7.16
+
/@vue/reactivity@3.4.15:
resolution: {integrity: sha512-55yJh2bsff20K5O84MxSvXKPHHt17I2EomHznvFiJCAZpJTNW8IuLj1xZWMLELRhBK3kkFV/1ErZGHJfah7i7w==}
dependencies:
@@ -2804,7 +3655,7 @@ packages:
'@vueuse/core': 10.7.2(vue@3.4.15)
'@vueuse/metadata': 10.7.2
local-pkg: 0.5.0
- nuxt: 3.9.3(@types/node@20.11.5)(eslint@8.56.0)(rollup@3.29.4)(typescript@5.3.3)(vite@5.0.12)
+ nuxt: 3.9.3(@types/node@20.11.10)(eslint@8.56.0)(rollup@3.29.4)(typescript@5.3.3)(vite@5.0.12)
vue-demi: 0.14.6(vue@3.4.15)
transitivePeerDependencies:
- '@vue/composition-api'
@@ -2891,6 +3742,15 @@ packages:
uri-js: 4.4.1
dev: true
+ /ajv@8.12.0:
+ resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==}
+ dependencies:
+ fast-deep-equal: 3.1.3
+ json-schema-traverse: 1.0.0
+ require-from-string: 2.0.2
+ uri-js: 4.4.1
+ dev: true
+
/ansi-colors@4.1.3:
resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==}
engines: {node: '>=6'}
@@ -2971,6 +3831,11 @@ packages:
zip-stream: 5.0.1
dev: true
+ /are-docs-informative@0.0.2:
+ resolution: {integrity: sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==}
+ engines: {node: '>=14'}
+ dev: true
+
/are-we-there-yet@2.0.0:
resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==}
engines: {node: '>=10'}
@@ -2986,6 +3851,12 @@ packages:
resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
dev: true
+ /aria-query@5.3.0:
+ resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==}
+ dependencies:
+ dequal: 2.0.3
+ dev: true
+
/array-union@2.1.0:
resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
engines: {node: '>=8'}
@@ -3066,6 +3937,12 @@ packages:
postcss-value-parser: 4.2.0
dev: true
+ /axobject-query@4.0.0:
+ resolution: {integrity: sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==}
+ dependencies:
+ dequal: 2.0.3
+ dev: true
+
/b4a@1.6.4:
resolution: {integrity: sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==}
dev: true
@@ -3077,12 +3954,6 @@ packages:
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
dev: true
- /bidi-js@1.0.3:
- resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==}
- dependencies:
- require-from-string: 2.0.2
- dev: false
-
/big-integer@1.6.52:
resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==}
engines: {node: '>=0.6'}
@@ -3301,6 +4172,18 @@ packages:
engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
dev: true
+ /character-entities-legacy@1.1.4:
+ resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==}
+ dev: true
+
+ /character-entities@1.2.4:
+ resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==}
+ dev: true
+
+ /character-reference-invalid@1.1.4:
+ resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==}
+ dev: true
+
/check-error@1.0.3:
resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==}
dependencies:
@@ -3335,6 +4218,13 @@ packages:
dependencies:
consola: 3.2.3
+ /clean-regexp@1.0.0:
+ resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==}
+ engines: {node: '>=4'}
+ dependencies:
+ escape-string-regexp: 1.0.5
+ dev: true
+
/clean-stack@2.2.0:
resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==}
engines: {node: '>=6'}
@@ -3385,6 +4275,28 @@ packages:
engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'}
dev: true
+ /code-red@1.0.4:
+ resolution: {integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==}
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.4.15
+ '@types/estree': 1.0.5
+ acorn: 8.11.3
+ estree-walker: 3.0.3
+ periscopic: 3.1.0
+ dev: true
+
+ /codemirror-wrapped-line-indent@1.0.3(@codemirror/language@6.10.1)(@codemirror/state@6.4.0)(@codemirror/view@6.23.1):
+ resolution: {integrity: sha512-1MWPgyxcDcpGpqmBlraoQyIgbZMAmppj/e/9+gpqug68Gli+BtSLE3GLxGoRoRK5n5sFp8RH0xAQL5i7jOo2qQ==}
+ peerDependencies:
+ '@codemirror/language': ^6.9.0
+ '@codemirror/state': ^6.2.1
+ '@codemirror/view': ^6.17.1
+ dependencies:
+ '@codemirror/language': 6.10.1
+ '@codemirror/state': 6.4.0
+ '@codemirror/view': 6.23.1
+ dev: true
+
/color-convert@1.9.3:
resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
dependencies:
@@ -3450,6 +4362,11 @@ packages:
engines: {node: '>= 12'}
dev: true
+ /comment-parser@1.4.1:
+ resolution: {integrity: sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==}
+ engines: {node: '>= 12.0.0'}
+ dev: true
+
/commondir@1.0.1:
resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==}
dev: true
@@ -3464,6 +4381,9 @@ packages:
readable-stream: 3.6.2
dev: true
+ /computeds@0.0.1:
+ resolution: {integrity: sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==}
+
/concat-map@0.0.1:
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
dev: true
@@ -3519,6 +4439,12 @@ packages:
keygrip: 1.1.0
dev: true
+ /core-js-compat@3.35.1:
+ resolution: {integrity: sha512-sftHa5qUJY3rs9Zht1WEnmkvXputCyDBczPnr7QDgL8n3qrF3CMXY4VPSYtOLLiOUJcah2WNXREd48iOl6mQIw==}
+ dependencies:
+ browserslist: 4.22.2
+ dev: true
+
/core-util-is@1.0.3:
resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
dev: true
@@ -3541,6 +4467,10 @@ packages:
resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==}
dev: true
+ /crelt@1.0.6:
+ resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==}
+ dev: true
+
/cross-fetch@3.1.8:
resolution: {integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==}
dependencies:
@@ -3590,6 +4520,7 @@ packages:
dependencies:
mdn-data: 2.0.30
source-map-js: 1.0.2
+ dev: true
/css-what@6.1.0:
resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==}
@@ -3684,6 +4615,9 @@ packages:
whatwg-url: 14.0.0
dev: false
+ /de-indent@1.0.2:
+ resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==}
+
/debug@2.6.9:
resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
peerDependencies:
@@ -3796,6 +4730,11 @@ packages:
engines: {node: '>= 0.8'}
dev: true
+ /dequal@2.0.3:
+ resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
+ engines: {node: '>=6'}
+ dev: true
+
/destr@2.0.2:
resolution: {integrity: sha512-65AlobnZMiCET00KaFFjUefxDX0khFA/E4myqZ7a6Sq1yZtR8+FVIvilVX66vF2uobSumxooYZChiRPCKNqhmg==}
@@ -3960,6 +4899,12 @@ packages:
resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==}
dev: true
+ /error-ex@1.3.2:
+ resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
+ dependencies:
+ is-arrayish: 0.2.1
+ dev: true
+
/error-stack-parser-es@0.1.1:
resolution: {integrity: sha512-g/9rfnvnagiNf+DRMHEVGuGuIBlCIMDFoTA616HaP2l9PlCjGjVhD98PNbVSJvmK4TttqT5mV5tInMhoFgi+aA==}
dev: true
@@ -4205,26 +5150,362 @@ packages:
'@esbuild/win32-x64': 0.19.11
dev: true
- /escalade@3.1.1:
- resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
- engines: {node: '>=6'}
-
- /escape-html@1.0.3:
- resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
+ /esbuild@0.20.0:
+ resolution: {integrity: sha512-6iwE3Y2RVYCME1jLpBqq7LQWK3MW6vjV2bZy6gt/WrqkY+WE74Spyc0ThAOYpMtITvnjX09CrC6ym7A/m9mebA==}
+ engines: {node: '>=12'}
+ hasBin: true
+ requiresBuild: true
+ optionalDependencies:
+ '@esbuild/aix-ppc64': 0.20.0
+ '@esbuild/android-arm': 0.20.0
+ '@esbuild/android-arm64': 0.20.0
+ '@esbuild/android-x64': 0.20.0
+ '@esbuild/darwin-arm64': 0.20.0
+ '@esbuild/darwin-x64': 0.20.0
+ '@esbuild/freebsd-arm64': 0.20.0
+ '@esbuild/freebsd-x64': 0.20.0
+ '@esbuild/linux-arm': 0.20.0
+ '@esbuild/linux-arm64': 0.20.0
+ '@esbuild/linux-ia32': 0.20.0
+ '@esbuild/linux-loong64': 0.20.0
+ '@esbuild/linux-mips64el': 0.20.0
+ '@esbuild/linux-ppc64': 0.20.0
+ '@esbuild/linux-riscv64': 0.20.0
+ '@esbuild/linux-s390x': 0.20.0
+ '@esbuild/linux-x64': 0.20.0
+ '@esbuild/netbsd-x64': 0.20.0
+ '@esbuild/openbsd-x64': 0.20.0
+ '@esbuild/sunos-x64': 0.20.0
+ '@esbuild/win32-arm64': 0.20.0
+ '@esbuild/win32-ia32': 0.20.0
+ '@esbuild/win32-x64': 0.20.0
+ dev: true
+
+ /escalade@3.1.1:
+ resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
+ engines: {node: '>=6'}
+
+ /escape-html@1.0.3:
+ resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
+ dev: true
+
+ /escape-string-regexp@1.0.5:
+ resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
+ engines: {node: '>=0.8.0'}
+
+ /escape-string-regexp@4.0.0:
+ resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /escape-string-regexp@5.0.0:
+ resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
+ engines: {node: '>=12'}
+
+ /eslint-compat-utils@0.1.2(eslint@8.56.0):
+ resolution: {integrity: sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==}
+ engines: {node: '>=12'}
+ peerDependencies:
+ eslint: '>=6.0.0'
+ dependencies:
+ eslint: 8.56.0
+ dev: true
+
+ /eslint-compat-utils@0.4.1(eslint@8.56.0):
+ resolution: {integrity: sha512-5N7ZaJG5pZxUeNNJfUchurLVrunD1xJvyg5kYOIVF8kg1f3ajTikmAu/5fZ9w100omNPOoMjngRszh/Q/uFGMg==}
+ engines: {node: '>=12'}
+ peerDependencies:
+ eslint: '>=6.0.0'
+ dependencies:
+ eslint: 8.56.0
+ semver: 7.5.4
+ dev: true
+
+ /eslint-config-flat-gitignore@0.1.2:
+ resolution: {integrity: sha512-PcBsqtd5QHEZH4ROvpnRN4EP0qcHh9voCCHgtyHxnJZHGspJREcZn7oPqRG/GfWt9m3C0fkC2l5CuBtMig2wXQ==}
+ dependencies:
+ parse-gitignore: 2.0.0
+ dev: true
+
+ /eslint-import-resolver-node@0.3.9:
+ resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==}
+ dependencies:
+ debug: 3.2.7
+ is-core-module: 2.13.1
+ resolve: 1.22.8
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /eslint-merge-processors@0.1.0(eslint@8.56.0):
+ resolution: {integrity: sha512-IvRXXtEajLeyssvW4wJcZ2etxkR9mUf4zpNwgI+m/Uac9RfXHskuJefkHUcawVzePnd6xp24enp5jfgdHzjRdQ==}
+ peerDependencies:
+ eslint: '*'
+ dependencies:
+ eslint: 8.56.0
+ dev: true
+
+ /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.19.0)(eslint-import-resolver-node@0.3.9)(eslint@8.56.0):
+ resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==}
+ engines: {node: '>=4'}
+ peerDependencies:
+ '@typescript-eslint/parser': '*'
+ eslint: '*'
+ eslint-import-resolver-node: '*'
+ eslint-import-resolver-typescript: '*'
+ eslint-import-resolver-webpack: '*'
+ peerDependenciesMeta:
+ '@typescript-eslint/parser':
+ optional: true
+ eslint:
+ optional: true
+ eslint-import-resolver-node:
+ optional: true
+ eslint-import-resolver-typescript:
+ optional: true
+ eslint-import-resolver-webpack:
+ optional: true
+ dependencies:
+ '@typescript-eslint/parser': 6.19.0(eslint@8.56.0)(typescript@5.3.3)
+ debug: 3.2.7
+ eslint: 8.56.0
+ eslint-import-resolver-node: 0.3.9
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /eslint-plugin-antfu@2.1.2(eslint@8.56.0):
+ resolution: {integrity: sha512-s7ZTOM3uq0iqpp6gF0UEotnvup7f2PHBUftCytLZX0+6C9j9KadKZQh6bVVngAyFgsmeD9+gcBopOYLClb2oDg==}
+ peerDependencies:
+ eslint: '*'
+ dependencies:
+ eslint: 8.56.0
+ dev: true
+
+ /eslint-plugin-es-x@7.5.0(eslint@8.56.0):
+ resolution: {integrity: sha512-ODswlDSO0HJDzXU0XvgZ3lF3lS3XAZEossh15Q2UHjwrJggWeBoKqqEsLTZLXl+dh5eOAozG0zRcYtuE35oTuQ==}
+ engines: {node: ^14.18.0 || >=16.0.0}
+ peerDependencies:
+ eslint: '>=8'
+ dependencies:
+ '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0)
+ '@eslint-community/regexpp': 4.10.0
+ eslint: 8.56.0
+ eslint-compat-utils: 0.1.2(eslint@8.56.0)
+ dev: true
+
+ /eslint-plugin-eslint-comments@3.2.0(eslint@8.56.0):
+ resolution: {integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==}
+ engines: {node: '>=6.5.0'}
+ peerDependencies:
+ eslint: '>=4.19.1'
+ dependencies:
+ escape-string-regexp: 1.0.5
+ eslint: 8.56.0
+ ignore: 5.3.0
+ dev: true
+
+ /eslint-plugin-i@2.29.1(@typescript-eslint/parser@6.19.0)(eslint@8.56.0):
+ resolution: {integrity: sha512-ORizX37MelIWLbMyqI7hi8VJMf7A0CskMmYkB+lkCX3aF4pkGV7kwx5bSEb4qx7Yce2rAf9s34HqDRPjGRZPNQ==}
+ engines: {node: '>=12'}
+ peerDependencies:
+ eslint: ^7.2.0 || ^8
+ dependencies:
+ debug: 4.3.4
+ doctrine: 3.0.0
+ eslint: 8.56.0
+ eslint-import-resolver-node: 0.3.9
+ eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.19.0)(eslint-import-resolver-node@0.3.9)(eslint@8.56.0)
+ get-tsconfig: 4.7.2
+ is-glob: 4.0.3
+ minimatch: 3.1.2
+ semver: 7.5.4
+ transitivePeerDependencies:
+ - '@typescript-eslint/parser'
+ - eslint-import-resolver-typescript
+ - eslint-import-resolver-webpack
+ - supports-color
+ dev: true
+
+ /eslint-plugin-jsdoc@48.0.4(eslint@8.56.0):
+ resolution: {integrity: sha512-A0cH+5svWPXzGZszBjXA1t0aAqVGS+/x3i02KFmb73rU0iMLnadEcVWcD/dGBZHIfAMKr3YpWh58f6wn4N909w==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ eslint: ^7.0.0 || ^8.0.0 || ^9.0.0
+ dependencies:
+ '@es-joy/jsdoccomment': 0.41.0
+ are-docs-informative: 0.0.2
+ comment-parser: 1.4.1
+ debug: 4.3.4
+ escape-string-regexp: 4.0.0
+ eslint: 8.56.0
+ esquery: 1.5.0
+ is-builtin-module: 3.2.1
+ semver: 7.5.4
+ spdx-expression-parse: 4.0.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /eslint-plugin-jsonc@2.13.0(eslint@8.56.0):
+ resolution: {integrity: sha512-2wWdJfpO/UbZzPDABuUVvlUQjfMJa2p2iQfYt/oWxOMpXCcjuiMUSaA02gtY/Dbu82vpaSqc+O7Xq6ECHwtIxA==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: '>=6.0.0'
+ dependencies:
+ '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0)
+ eslint: 8.56.0
+ eslint-compat-utils: 0.4.1(eslint@8.56.0)
+ espree: 9.6.1
+ graphemer: 1.4.0
+ jsonc-eslint-parser: 2.4.0
+ natural-compare: 1.4.0
+ synckit: 0.6.2
+ dev: true
+
+ /eslint-plugin-markdown@3.0.1(eslint@8.56.0):
+ resolution: {integrity: sha512-8rqoc148DWdGdmYF6WSQFT3uQ6PO7zXYgeBpHAOAakX/zpq+NvFYbDA/H7PYzHajwtmaOzAwfxyl++x0g1/N9A==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
+ dependencies:
+ eslint: 8.56.0
+ mdast-util-from-markdown: 0.8.5
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /eslint-plugin-n@16.6.2(eslint@8.56.0):
+ resolution: {integrity: sha512-6TyDmZ1HXoFQXnhCTUjVFULReoBPOAjpuiKELMkeP40yffI/1ZRO+d9ug/VC6fqISo2WkuIBk3cvuRPALaWlOQ==}
+ engines: {node: '>=16.0.0'}
+ peerDependencies:
+ eslint: '>=7.0.0'
+ dependencies:
+ '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0)
+ builtins: 5.0.1
+ eslint: 8.56.0
+ eslint-plugin-es-x: 7.5.0(eslint@8.56.0)
+ get-tsconfig: 4.7.2
+ globals: 13.24.0
+ ignore: 5.3.0
+ is-builtin-module: 3.2.1
+ is-core-module: 2.13.1
+ minimatch: 3.1.2
+ resolve: 1.22.8
+ semver: 7.5.4
+ dev: true
+
+ /eslint-plugin-no-only-tests@3.1.0:
+ resolution: {integrity: sha512-Lf4YW/bL6Un1R6A76pRZyE1dl1vr31G/ev8UzIc/geCgFWyrKil8hVjYqWVKGB/UIGmb6Slzs9T0wNezdSVegw==}
+ engines: {node: '>=5.0.0'}
+ dev: true
+
+ /eslint-plugin-perfectionist@2.5.0(eslint@8.56.0)(typescript@5.3.3)(vue-eslint-parser@9.4.1):
+ resolution: {integrity: sha512-F6XXcq4mKKUe/SREoMGQqzgw6cgCgf3pFzkFfQVIGtqD1yXVpQjnhTepzhBeZfxZwgMzR9HO4yH4CUhIQ2WBcQ==}
+ peerDependencies:
+ astro-eslint-parser: ^0.16.0
+ eslint: '>=8.0.0'
+ svelte: '>=3.0.0'
+ svelte-eslint-parser: ^0.33.0
+ vue-eslint-parser: '>=9.0.0'
+ peerDependenciesMeta:
+ astro-eslint-parser:
+ optional: true
+ svelte:
+ optional: true
+ svelte-eslint-parser:
+ optional: true
+ vue-eslint-parser:
+ optional: true
+ dependencies:
+ '@typescript-eslint/utils': 6.19.0(eslint@8.56.0)(typescript@5.3.3)
+ eslint: 8.56.0
+ minimatch: 9.0.3
+ natural-compare-lite: 1.4.0
+ vue-eslint-parser: 9.4.1(eslint@8.56.0)
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+ dev: true
+
+ /eslint-plugin-toml@0.9.2(eslint@8.56.0):
+ resolution: {integrity: sha512-ri0xf63PYf3pIq/WY9BIwrqxZmGTIwSkAO0bHddI0ajUwN4KGz6W8vOvdXFHOpRdRfzxlmXze/vfsY/aTEXESg==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: '>=6.0.0'
+ dependencies:
+ debug: 4.3.4
+ eslint: 8.56.0
+ eslint-compat-utils: 0.4.1(eslint@8.56.0)
+ lodash: 4.17.21
+ toml-eslint-parser: 0.9.3
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /eslint-plugin-unicorn@50.0.1(eslint@8.56.0):
+ resolution: {integrity: sha512-KxenCZxqSYW0GWHH18okDlOQcpezcitm5aOSz6EnobyJ6BIByiPDviQRjJIUAjG/tMN11958MxaQ+qCoU6lfDA==}
+ engines: {node: '>=16'}
+ peerDependencies:
+ eslint: '>=8.56.0'
+ dependencies:
+ '@babel/helper-validator-identifier': 7.22.20
+ '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0)
+ '@eslint/eslintrc': 2.1.4
+ ci-info: 4.0.0
+ clean-regexp: 1.0.0
+ core-js-compat: 3.35.1
+ eslint: 8.56.0
+ esquery: 1.5.0
+ indent-string: 4.0.0
+ is-builtin-module: 3.2.1
+ jsesc: 3.0.2
+ pluralize: 8.0.0
+ read-pkg-up: 7.0.1
+ regexp-tree: 0.1.27
+ regjsparser: 0.10.0
+ semver: 7.5.4
+ strip-indent: 3.0.0
+ transitivePeerDependencies:
+ - supports-color
dev: true
- /escape-string-regexp@1.0.5:
- resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
- engines: {node: '>=0.8.0'}
-
- /escape-string-regexp@4.0.0:
- resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
- engines: {node: '>=10'}
+ /eslint-plugin-unused-imports@3.0.0(@typescript-eslint/eslint-plugin@6.19.0)(eslint@8.56.0):
+ resolution: {integrity: sha512-sduiswLJfZHeeBJ+MQaG+xYzSWdRXoSw61DpU13mzWumCkR0ufD0HmO4kdNokjrkluMHpj/7PJeN35pgbhW3kw==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ '@typescript-eslint/eslint-plugin': ^6.0.0
+ eslint: ^8.0.0
+ peerDependenciesMeta:
+ '@typescript-eslint/eslint-plugin':
+ optional: true
+ dependencies:
+ '@typescript-eslint/eslint-plugin': 6.19.0(@typescript-eslint/parser@6.19.0)(eslint@8.56.0)(typescript@5.3.3)
+ eslint: 8.56.0
+ eslint-rule-composer: 0.3.0
dev: true
- /escape-string-regexp@5.0.0:
- resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
- engines: {node: '>=12'}
+ /eslint-plugin-vitest@0.3.21(@typescript-eslint/eslint-plugin@6.19.0)(eslint@8.56.0)(typescript@5.3.3)(vitest@1.2.2):
+ resolution: {integrity: sha512-oYwR1MrwaBw/OG6CKU+SJYleAc442w6CWL1RTQl5WLwy8X3sh0bgHIQk5iEtmTak3Q+XAvZglr0bIoDOjFdkcw==}
+ engines: {node: ^18.0.0 || >= 20.0.0}
+ peerDependencies:
+ '@typescript-eslint/eslint-plugin': '*'
+ eslint: '>=8.0.0'
+ vitest: '*'
+ peerDependenciesMeta:
+ '@typescript-eslint/eslint-plugin':
+ optional: true
+ vitest:
+ optional: true
+ dependencies:
+ '@typescript-eslint/eslint-plugin': 6.19.0(@typescript-eslint/parser@6.19.0)(eslint@8.56.0)(typescript@5.3.3)
+ '@typescript-eslint/utils': 6.20.0(eslint@8.56.0)(typescript@5.3.3)
+ eslint: 8.56.0
+ vitest: 1.2.2(@types/node@20.11.10)
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+ dev: true
/eslint-plugin-vue@9.20.1(eslint@8.56.0):
resolution: {integrity: sha512-GyCs8K3lkEvoyC1VV97GJhP1SvqsKCiWGHnbn0gVUYiUhaH2+nB+Dv1uekv1THFMPbBfYxukrzQdltw950k+LQ==}
@@ -4244,6 +5525,37 @@ packages:
- supports-color
dev: true
+ /eslint-plugin-yml@1.12.2(eslint@8.56.0):
+ resolution: {integrity: sha512-hvS9p08FhPT7i/ynwl7/Wt7ke7Rf4P2D6fT8lZlL43peZDTsHtH2A0SIFQ7Kt7+mJ6if6P+FX3iJhMkdnxQwpg==}
+ engines: {node: ^14.17.0 || >=16.0.0}
+ peerDependencies:
+ eslint: '>=6.0.0'
+ dependencies:
+ debug: 4.3.4
+ eslint: 8.56.0
+ eslint-compat-utils: 0.4.1(eslint@8.56.0)
+ lodash: 4.17.21
+ natural-compare: 1.4.0
+ yaml-eslint-parser: 1.2.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /eslint-processor-vue-blocks@0.1.1(@vue/compiler-sfc@3.4.15)(eslint@8.56.0):
+ resolution: {integrity: sha512-9+dU5lU881log570oBwpelaJmOfOzSniben7IWEDRYQPPWwlvaV7NhOtsTuUWDqpYT+dtKKWPsgz4OkOi+aZnA==}
+ peerDependencies:
+ '@vue/compiler-sfc': ^3.3.0
+ eslint: ^8.50.0
+ dependencies:
+ '@vue/compiler-sfc': 3.4.15
+ eslint: 8.56.0
+ dev: true
+
+ /eslint-rule-composer@0.3.0:
+ resolution: {integrity: sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==}
+ engines: {node: '>=4.0.0'}
+ dev: true
+
/eslint-scope@7.2.2:
resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -4471,6 +5783,14 @@ packages:
dependencies:
to-regex-range: 5.0.1
+ /find-up@4.1.0:
+ resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==}
+ engines: {node: '>=8'}
+ dependencies:
+ locate-path: 5.0.0
+ path-exists: 4.0.0
+ dev: true
+
/find-up@5.0.0:
resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
engines: {node: '>=10'}
@@ -4641,6 +5961,12 @@ packages:
resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==}
engines: {node: '>=16'}
+ /get-tsconfig@4.7.2:
+ resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==}
+ dependencies:
+ resolve-pkg-maps: 1.0.0
+ dev: true
+
/giget@1.2.1:
resolution: {integrity: sha512-4VG22mopWtIeHwogGSy1FViXVo0YT+m6BrqZfz0JJFwbSsePsCdOzdLIIli5BtMp7Xe8f/o2OmBpQX2NBOC24g==}
hasBin: true
@@ -4806,6 +6132,20 @@ packages:
unenv: 1.9.0
dev: true
+ /h3@1.10.1:
+ resolution: {integrity: sha512-UBAUp47hmm4BB5/njB4LrEa9gpuvZj4/Qf/ynSMzO6Ku2RXaouxEfiG2E2IFnv6fxbhAkzjasDxmo6DFdEeXRg==}
+ dependencies:
+ cookie-es: 1.0.0
+ defu: 6.1.4
+ destr: 2.0.2
+ iron-webcrypto: 1.0.0
+ ohash: 1.1.3
+ radix3: 1.1.0
+ ufo: 1.3.2
+ uncrypto: 0.1.3
+ unenv: 1.9.0
+ dev: true
+
/has-flag@3.0.0:
resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
engines: {node: '>=4'}
@@ -4840,9 +6180,17 @@ packages:
dependencies:
function-bind: 1.1.2
+ /he@1.2.0:
+ resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
+ hasBin: true
+
/hookable@5.5.3:
resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==}
+ /hosted-git-info@2.8.9:
+ resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==}
+ dev: true
+
/hosted-git-info@7.0.1:
resolution: {integrity: sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==}
engines: {node: ^16.14.0 || >=18.0.0}
@@ -4998,6 +6346,14 @@ packages:
resolution: {integrity: sha512-ZBGjl0ZMEMeOC3Ns0wUF/5UdUmr3qQhBSCniT0LxOgGGIRHiNFOkMtIHB7EOznRU47V2AxPgiVP+s+0/UCU0Hg==}
dev: true
+ /immutable-json-patch@6.0.1:
+ resolution: {integrity: sha512-BHL/cXMjwFZlTOffiWNdY8ZTvNyYLrutCnWxrcKPHr5FqpAb6vsO6WWSPnVSys3+DruFN6lhHJJPHi8uELQL5g==}
+ dev: true
+
+ /immutable@4.3.5:
+ resolution: {integrity: sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==}
+ dev: true
+
/import-fresh@3.3.0:
resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
engines: {node: '>=6'}
@@ -5075,6 +6431,21 @@ packages:
resolution: {integrity: sha512-anOK1Mktt8U1Xi7fCM3RELTuYbnFikQY5VtrDj7kPgpejV7d43tWKhzgioO0zpkazLEL/j/iayRqnJhrGfqUsg==}
dev: true
+ /is-alphabetical@1.0.4:
+ resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==}
+ dev: true
+
+ /is-alphanumerical@1.0.4:
+ resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==}
+ dependencies:
+ is-alphabetical: 1.0.4
+ is-decimal: 1.0.4
+ dev: true
+
+ /is-arrayish@0.2.1:
+ resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
+ dev: true
+
/is-binary-path@2.1.0:
resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
engines: {node: '>=8'}
@@ -5097,6 +6468,10 @@ packages:
dependencies:
hasown: 2.0.0
+ /is-decimal@1.0.4:
+ resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==}
+ dev: true
+
/is-docker@2.2.1:
resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==}
engines: {node: '>=8'}
@@ -5135,6 +6510,10 @@ packages:
dependencies:
is-extglob: 2.1.1
+ /is-hexadecimal@1.0.4:
+ resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==}
+ dev: true
+
/is-inside-container@1.0.0:
resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==}
engines: {node: '>=14.16'}
@@ -5192,6 +6571,12 @@ packages:
'@types/estree': 1.0.5
dev: true
+ /is-reference@3.0.2:
+ resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==}
+ dependencies:
+ '@types/estree': 1.0.5
+ dev: true
+
/is-ssh@1.4.0:
resolution: {integrity: sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==}
dependencies:
@@ -5245,13 +6630,13 @@ packages:
engines: {node: '>=16'}
dev: true
- /isomorphic-dompurify@2.2.0:
- resolution: {integrity: sha512-r+pTGOcmnWm1qGdB6OzAk6zM4kfb7jVHXFliJOTlnRw5G3+LOR2mSWllE2Um1V23njAluToqOeRqp1jMsMFT0A==}
+ /isomorphic-dompurify@2.3.0:
+ resolution: {integrity: sha512-FCoKY4/mW/jnn/+VgE7wXGC2D/RXzVCAmGYuGWEuZXtyWnwmE2100caciIv+RbHk90q9LA0OW5IBn2f+ywHtww==}
engines: {node: '>=18'}
dependencies:
'@types/dompurify': 3.0.5
dompurify: 3.0.8
- jsdom: 23.2.0
+ jsdom: 24.0.0
transitivePeerDependencies:
- bufferutil
- canvas
@@ -5271,6 +6656,11 @@ packages:
resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==}
hasBin: true
+ /jmespath@0.16.0:
+ resolution: {integrity: sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==}
+ engines: {node: '>= 0.6.0'}
+ dev: true
+
/js-beautify@1.14.11:
resolution: {integrity: sha512-rPogWqAfoYh1Ryqqh2agUpVfbxAhbjuN1SmU86dskQUKouRiggUTCO4+2ym9UPXllc2WAp0J+T5qxn7Um3lCdw==}
engines: {node: '>=14'}
@@ -5296,8 +6686,13 @@ packages:
argparse: 2.0.1
dev: true
- /jsdom@23.2.0:
- resolution: {integrity: sha512-L88oL7D/8ufIES+Zjz7v0aes+oBMh2Xnh3ygWvL0OaICOomKEPKuPnIfBJekiXr+BHbbMjrWn/xqrDQuxFTeyA==}
+ /jsdoc-type-pratt-parser@4.0.0:
+ resolution: {integrity: sha512-YtOli5Cmzy3q4dP26GraSOeAhqecewG04hoO8DY56CH4KJ9Fvv5qKWUCCo3HZob7esJQHCv6/+bnTy72xZZaVQ==}
+ engines: {node: '>=12.0.0'}
+ dev: true
+
+ /jsdom@24.0.0:
+ resolution: {integrity: sha512-UDS2NayCvmXSXVP6mpTj+73JnNQadZlr9N68189xib2tx5Mls7swlTNao26IoHv46BZJFvXygyRtyXd1feAk1A==}
engines: {node: '>=18'}
peerDependencies:
canvas: ^2.11.2
@@ -5305,7 +6700,6 @@ packages:
canvas:
optional: true
dependencies:
- '@asamuzakjp/dom-selector': 2.0.2
cssstyle: 4.0.1
data-urls: 5.0.0
decimal.js: 10.4.3
@@ -5314,6 +6708,7 @@ packages:
http-proxy-agent: 7.0.0
https-proxy-agent: 7.0.2
is-potential-custom-element-name: 1.0.1
+ nwsapi: 2.2.7
parse5: 7.1.2
rrweb-cssom: 0.6.0
saxes: 6.0.0
@@ -5332,15 +6727,47 @@ packages:
- utf-8-validate
dev: false
+ /jsesc@0.5.0:
+ resolution: {integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==}
+ hasBin: true
+ dev: true
+
/jsesc@2.5.2:
resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
engines: {node: '>=4'}
hasBin: true
+ /jsesc@3.0.2:
+ resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==}
+ engines: {node: '>=6'}
+ hasBin: true
+ dev: true
+
/json-buffer@3.0.1:
resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
dev: true
+ /json-editor-vue@0.12.0(@lezer/common@1.2.1)(vue@3.4.15):
+ resolution: {integrity: sha512-VOsWy2EiAUY+iD5zdKssG/lBVVTNbDEgkUWnq4FJbOVNuVXwdRdX76zWvtbhh6MSjlFVCxZc/7V0VEayZbcGeQ==}
+ requiresBuild: true
+ peerDependencies:
+ '@vue/composition-api': '>=1'
+ vue: 2||3
+ peerDependenciesMeta:
+ '@vue/composition-api':
+ optional: true
+ dependencies:
+ vanilla-jsoneditor: 0.21.4(@lezer/common@1.2.1)
+ vue: 3.4.15(typescript@5.3.3)
+ vue-demi: 0.14.6(vue@3.4.15)
+ transitivePeerDependencies:
+ - '@lezer/common'
+ dev: true
+
+ /json-parse-even-better-errors@2.3.1:
+ resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
+ dev: true
+
/json-parse-even-better-errors@3.0.1:
resolution: {integrity: sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==}
engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
@@ -5350,6 +6777,14 @@ packages:
resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
dev: true
+ /json-schema-traverse@1.0.0:
+ resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==}
+ dev: true
+
+ /json-source-map@0.6.1:
+ resolution: {integrity: sha512-1QoztHPsMQqhDq0hlXY5ZqcEdUzxQEIxgFkKl4WUp2pgShObl+9ovi4kRh2TfvAfxAoHOJ9vIMEqk3k4iex7tg==}
+ dev: true
+
/json-stable-stringify-without-jsonify@1.0.1:
resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
dev: true
@@ -5359,6 +6794,16 @@ packages:
engines: {node: '>=6'}
hasBin: true
+ /jsonc-eslint-parser@2.4.0:
+ resolution: {integrity: sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ dependencies:
+ acorn: 8.11.3
+ eslint-visitor-keys: 3.4.3
+ espree: 9.6.1
+ semver: 7.5.4
+ dev: true
+
/jsonc-parser@3.2.0:
resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==}
@@ -5375,6 +6820,11 @@ packages:
engines: {'0': node >= 0.2.0}
dev: true
+ /jsonrepair@3.5.1:
+ resolution: {integrity: sha512-F0VxiEj1j7m1OAVUVy6fFYk5s8tthF61J7tjYtEACw1DeNQqKmZF6dPddduxc7Tc5IrLqKTdLAwUNTmrqqg+hw==}
+ hasBin: true
+ dev: true
+
/keygrip@1.1.0:
resolution: {integrity: sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==}
engines: {node: '>= 0.6'}
@@ -5547,6 +6997,17 @@ packages:
mlly: 1.5.0
pkg-types: 1.0.3
+ /locate-character@3.0.0:
+ resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==}
+ dev: true
+
+ /locate-path@5.0.0:
+ resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
+ engines: {node: '>=8'}
+ dependencies:
+ p-locate: 4.1.0
+ dev: true
+
/locate-path@6.0.0:
resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
engines: {node: '>=10'}
@@ -5554,6 +7015,10 @@ packages:
p-locate: 5.0.0
dev: true
+ /lodash-es@4.17.21:
+ resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==}
+ dev: true
+
/lodash._reinterpolate@3.0.0:
resolution: {integrity: sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==}
dev: true
@@ -5639,7 +7104,7 @@ packages:
magic-string: 0.30.5
mlly: 1.5.0
type-level-regexp: 0.1.17
- ufo: 1.3.2
+ ufo: 1.4.0
unplugin: 1.6.0
dev: true
@@ -5690,18 +7155,39 @@ packages:
- supports-color
dev: true
+ /mdast-util-from-markdown@0.8.5:
+ resolution: {integrity: sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==}
+ dependencies:
+ '@types/mdast': 3.0.15
+ mdast-util-to-string: 2.0.0
+ micromark: 2.11.4
+ parse-entities: 2.0.0
+ unist-util-stringify-position: 2.0.3
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /mdast-util-to-string@2.0.0:
+ resolution: {integrity: sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==}
+ dev: true
+
/mdn-data@2.0.28:
resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==}
dev: true
/mdn-data@2.0.30:
resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==}
+ dev: true
/media-typer@0.3.0:
resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==}
engines: {node: '>= 0.6'}
dev: true
+ /memoize-one@6.0.0:
+ resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==}
+ dev: true
+
/merge-stream@2.0.0:
resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
@@ -5714,6 +7200,15 @@ packages:
engines: {node: '>= 0.6'}
dev: true
+ /micromark@2.11.4:
+ resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==}
+ dependencies:
+ debug: 4.3.4
+ parse-entities: 2.0.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/micromatch@4.0.5:
resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
engines: {node: '>=8.6'}
@@ -5752,6 +7247,11 @@ packages:
resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==}
engines: {node: '>=12'}
+ /min-indent@1.0.1:
+ resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==}
+ engines: {node: '>=4'}
+ dev: true
+
/mini-svg-data-uri@1.4.4:
resolution: {integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==}
hasBin: true
@@ -5929,6 +7429,9 @@ packages:
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
dev: true
+ /muggle-string@0.3.1:
+ resolution: {integrity: sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==}
+
/mz@2.7.0:
resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
dependencies:
@@ -5947,6 +7450,14 @@ packages:
hasBin: true
dev: true
+ /napi-wasm@1.1.0:
+ resolution: {integrity: sha512-lHwIAJbmLSjF9VDRm9GoVOy9AGp3aIvkjv+Kvz9h16QR3uSVYH78PNQUnT2U4X53mhlnV2M7wrhibQ3GHicDmg==}
+ dev: true
+
+ /natural-compare-lite@1.4.0:
+ resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==}
+ dev: true
+
/natural-compare@1.4.0:
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
dev: true
@@ -6115,6 +7626,15 @@ packages:
abbrev: 2.0.0
dev: true
+ /normalize-package-data@2.5.0:
+ resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==}
+ dependencies:
+ hosted-git-info: 2.8.9
+ resolve: 1.22.8
+ semver: 5.7.2
+ validate-npm-package-license: 3.0.4
+ dev: true
+
/normalize-package-data@6.0.0:
resolution: {integrity: sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==}
engines: {node: ^16.14.0 || >=18.0.0}
@@ -6237,16 +7757,122 @@ packages:
'@iconify/collections': 1.0.384
'@iconify/vue': 4.1.1(vue@3.4.15)
'@nuxt/devtools-kit': 1.0.8(nuxt@3.9.3)(rollup@3.29.4)(vite@5.0.12)
- '@nuxt/kit': 3.9.3(rollup@3.29.4)
+ '@nuxt/kit': 3.10.0(rollup@3.29.4)
+ transitivePeerDependencies:
+ - nuxt
+ - rollup
+ - supports-color
+ - vite
+ - vue
+ dev: true
+
+ /nuxt@3.10.0(@types/node@20.11.10)(eslint@8.56.0)(rollup@3.29.4)(typescript@5.3.3)(vite@5.0.12):
+ resolution: {integrity: sha512-E9GWyrzTvkoHoJOT847EASEl8KcGDF1twcBgUzDMuNIx+llZ14F+q+XbTjHzYM/o2hqHTer0lLt2RUn5wsBLQQ==}
+ engines: {node: ^14.18.0 || >=16.10.0}
+ hasBin: true
+ peerDependencies:
+ '@parcel/watcher': ^2.1.0
+ '@types/node': ^14.18.0 || >=16.10.0
+ peerDependenciesMeta:
+ '@parcel/watcher':
+ optional: true
+ '@types/node':
+ optional: true
+ dependencies:
+ '@nuxt/devalue': 2.0.2
+ '@nuxt/devtools': 1.0.8(nuxt@3.10.0)(rollup@3.29.4)(vite@5.0.12)
+ '@nuxt/kit': 3.10.0(rollup@3.29.4)
+ '@nuxt/schema': 3.10.0(rollup@3.29.4)
+ '@nuxt/telemetry': 2.5.3(rollup@3.29.4)
+ '@nuxt/ui-templates': 1.3.1
+ '@nuxt/vite-builder': 3.10.0(@types/node@20.11.10)(eslint@8.56.0)(rollup@3.29.4)(typescript@5.3.3)(vue@3.4.15)
+ '@types/node': 20.11.10
+ '@unhead/dom': 1.8.10
+ '@unhead/ssr': 1.8.10
+ '@unhead/vue': 1.8.10(vue@3.4.15)
+ '@vue/shared': 3.4.15
+ acorn: 8.11.3
+ c12: 1.6.1
+ chokidar: 3.5.3
+ cookie-es: 1.0.0
+ defu: 6.1.4
+ destr: 2.0.2
+ devalue: 4.3.2
+ esbuild: 0.20.0
+ escape-string-regexp: 5.0.0
+ estree-walker: 3.0.3
+ fs-extra: 11.2.0
+ globby: 14.0.0
+ h3: 1.10.1
+ hookable: 5.5.3
+ jiti: 1.21.0
+ klona: 2.0.6
+ knitwork: 1.0.0
+ magic-string: 0.30.5
+ mlly: 1.5.0
+ nitropack: 2.8.1
+ nuxi: 3.10.0
+ nypm: 0.3.6
+ ofetch: 1.3.3
+ ohash: 1.1.3
+ pathe: 1.1.2
+ perfect-debounce: 1.0.0
+ pkg-types: 1.0.3
+ radix3: 1.1.0
+ scule: 1.2.0
+ std-env: 3.7.0
+ strip-literal: 2.0.0
+ ufo: 1.3.2
+ ultrahtml: 1.5.2
+ uncrypto: 0.1.3
+ unctx: 2.3.1
+ unenv: 1.9.0
+ unimport: 3.7.1(rollup@3.29.4)
+ unplugin: 1.6.0
+ unplugin-vue-router: 0.7.0(rollup@3.29.4)(vue-router@4.2.5)(vue@3.4.15)
+ untyped: 1.4.2
+ vue: 3.4.15(typescript@5.3.3)
+ vue-bundle-renderer: 2.0.0
+ vue-devtools-stub: 0.1.0
+ vue-router: 4.2.5(vue@3.4.15)
transitivePeerDependencies:
- - nuxt
+ - '@azure/app-configuration'
+ - '@azure/cosmos'
+ - '@azure/data-tables'
+ - '@azure/identity'
+ - '@azure/keyvault-secrets'
+ - '@azure/storage-blob'
+ - '@capacitor/preferences'
+ - '@netlify/blobs'
+ - '@planetscale/database'
+ - '@upstash/redis'
+ - '@vercel/kv'
+ - bluebird
+ - bufferutil
+ - encoding
+ - eslint
+ - idb-keyval
+ - less
+ - lightningcss
+ - meow
+ - optionator
- rollup
+ - sass
+ - stylelint
+ - stylus
+ - sugarss
- supports-color
+ - terser
+ - typescript
+ - utf-8-validate
- vite
- - vue
+ - vls
+ - vti
+ - vue-tsc
+ - xml2js
dev: true
- /nuxt@3.9.3(@types/node@20.11.5)(eslint@8.56.0)(rollup@3.29.4)(typescript@5.3.3)(vite@5.0.12):
+ /nuxt@3.9.3(@types/node@20.11.10)(eslint@8.56.0)(rollup@3.29.4)(typescript@5.3.3)(vite@5.0.12):
resolution: {integrity: sha512-IzBJAJImqCGfspVZzvznrALnFIJ5rPe+VJvY8OiccwRzWT8sEygVRjh3Mc64yWV6P59rz497wp9RBBBhuV2MVA==}
engines: {node: ^14.18.0 || >=16.10.0}
hasBin: true
@@ -6265,8 +7891,8 @@ packages:
'@nuxt/schema': 3.9.3(rollup@3.29.4)
'@nuxt/telemetry': 2.5.3(rollup@3.29.4)
'@nuxt/ui-templates': 1.3.1
- '@nuxt/vite-builder': 3.9.3(@types/node@20.11.5)(eslint@8.56.0)(rollup@3.29.4)(typescript@5.3.3)(vue@3.4.15)
- '@types/node': 20.11.5
+ '@nuxt/vite-builder': 3.9.3(@types/node@20.11.10)(eslint@8.56.0)(rollup@3.29.4)(typescript@5.3.3)(vue@3.4.15)
+ '@types/node': 20.11.10
'@unhead/dom': 1.8.10
'@unhead/ssr': 1.8.10
'@unhead/vue': 1.8.10(vue@3.4.15)
@@ -6352,6 +7978,10 @@ packages:
- xml2js
dev: true
+ /nwsapi@2.2.7:
+ resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==}
+ dev: false
+
/nypm@0.3.4:
resolution: {integrity: sha512-1JLkp/zHBrkS3pZ692IqOaIKSYHmQXgqfELk6YTOfVBnwealAmPA1q2kKK7PHJAHSMBozerThEFZXP3G6o7Ukg==}
engines: {node: ^14.16.0 || >=16.10.0}
@@ -6362,6 +7992,17 @@ packages:
pathe: 1.1.2
ufo: 1.3.2
+ /nypm@0.3.6:
+ resolution: {integrity: sha512-2CATJh3pd6CyNfU5VZM7qSwFu0ieyabkEdnogE30Obn1czrmOYiZ8DOZLe1yBdLKWoyD3Mcy2maUs+0MR3yVjQ==}
+ engines: {node: ^14.16.0 || >=16.10.0}
+ hasBin: true
+ dependencies:
+ citty: 0.1.5
+ execa: 8.0.1
+ pathe: 1.1.2
+ ufo: 1.3.2
+ dev: true
+
/object-assign@4.1.1:
resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
engines: {node: '>=0.10.0'}
@@ -6462,6 +8103,13 @@ packages:
type-check: 0.4.0
dev: true
+ /p-limit@2.3.0:
+ resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
+ engines: {node: '>=6'}
+ dependencies:
+ p-try: 2.2.0
+ dev: true
+
/p-limit@3.1.0:
resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
engines: {node: '>=10'}
@@ -6476,6 +8124,13 @@ packages:
yocto-queue: 1.0.0
dev: true
+ /p-locate@4.1.0:
+ resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==}
+ engines: {node: '>=8'}
+ dependencies:
+ p-limit: 2.3.0
+ dev: true
+
/p-locate@5.0.0:
resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
engines: {node: '>=10'}
@@ -6490,6 +8145,11 @@ packages:
aggregate-error: 3.1.0
dev: true
+ /p-try@2.2.0:
+ resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
+ engines: {node: '>=6'}
+ dev: true
+
/pacote@17.0.6:
resolution: {integrity: sha512-cJKrW21VRE8vVTRskJo78c/RCvwJCn1f4qgfxL4w77SOWrTCRcmfkYHlHtS0gqpgjv3zhXflRtgsrUCX5xwNnQ==}
engines: {node: ^16.14.0 || >=18.0.0}
@@ -6536,6 +8196,17 @@ packages:
callsites: 3.1.0
dev: true
+ /parse-entities@2.0.0:
+ resolution: {integrity: sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==}
+ dependencies:
+ character-entities: 1.2.4
+ character-entities-legacy: 1.1.4
+ character-reference-invalid: 1.1.4
+ is-alphanumerical: 1.0.4
+ is-decimal: 1.0.4
+ is-hexadecimal: 1.0.4
+ dev: true
+
/parse-git-config@3.0.0:
resolution: {integrity: sha512-wXoQGL1D+2COYWCD35/xbiKma1Z15xvZL8cI25wvxzled58V51SJM04Urt/uznS900iQor7QO04SgdfT/XlbuA==}
engines: {node: '>=8'}
@@ -6544,6 +8215,21 @@ packages:
ini: 1.3.8
dev: true
+ /parse-gitignore@2.0.0:
+ resolution: {integrity: sha512-RmVuCHWsfu0QPNW+mraxh/xjQVw/lhUCUru8Zni3Ctq3AoMhpDTq0OVdKS6iesd6Kqb7viCV3isAL43dciOSog==}
+ engines: {node: '>=14'}
+ dev: true
+
+ /parse-json@5.2.0:
+ resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
+ engines: {node: '>=8'}
+ dependencies:
+ '@babel/code-frame': 7.23.5
+ error-ex: 1.3.2
+ json-parse-even-better-errors: 2.3.1
+ lines-and-columns: 1.2.4
+ dev: true
+
/parse-path@7.0.0:
resolution: {integrity: sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog==}
dependencies:
@@ -6574,6 +8260,9 @@ packages:
engines: {node: '>= 0.8'}
dev: true
+ /path-browserify@1.0.1:
+ resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==}
+
/path-exists@4.0.0:
resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
engines: {node: '>=8'}
@@ -6629,6 +8318,14 @@ packages:
/perfect-debounce@1.0.0:
resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==}
+ /periscopic@3.1.0:
+ resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==}
+ dependencies:
+ '@types/estree': 1.0.5
+ estree-walker: 3.0.3
+ is-reference: 3.0.2
+ dev: true
+
/picocolors@1.0.0:
resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
@@ -6651,6 +8348,11 @@ packages:
mlly: 1.5.0
pathe: 1.1.2
+ /pluralize@8.0.0:
+ resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==}
+ engines: {node: '>=4'}
+ dev: true
+
/portfinder@1.0.32:
resolution: {integrity: sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==}
engines: {node: '>= 0.12.0'}
@@ -7196,6 +8898,25 @@ packages:
npm-normalize-package-bin: 3.0.1
dev: true
+ /read-pkg-up@7.0.1:
+ resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==}
+ engines: {node: '>=8'}
+ dependencies:
+ find-up: 4.1.0
+ read-pkg: 5.2.0
+ type-fest: 0.8.1
+ dev: true
+
+ /read-pkg@5.2.0:
+ resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==}
+ engines: {node: '>=8'}
+ dependencies:
+ '@types/normalize-package-data': 2.4.4
+ normalize-package-data: 2.5.0
+ parse-json: 5.2.0
+ type-fest: 0.6.0
+ dev: true
+
/readable-stream@2.3.8:
resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==}
dependencies:
@@ -7245,6 +8966,18 @@ packages:
resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==}
dev: true
+ /regexp-tree@0.1.27:
+ resolution: {integrity: sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==}
+ hasBin: true
+ dev: true
+
+ /regjsparser@0.10.0:
+ resolution: {integrity: sha512-qx+xQGZVsy55CH0a1hiVwHmqjLryfh7wQyF5HO07XJ9f7dQMY/gPQHhlyDkIzJKC+x2fUCpCcUODUUUFrm7SHA==}
+ hasBin: true
+ dependencies:
+ jsesc: 0.5.0
+ dev: true
+
/replace-in-file@6.3.5:
resolution: {integrity: sha512-arB9d3ENdKva2fxRnSjwBEXfK1npgyci7ZZuwysgAp7ORjHSyxz6oqIjTEv8R0Ydl4Ll7uOAZXL4vbkhGIizCg==}
engines: {node: '>=10'}
@@ -7263,7 +8996,7 @@ packages:
/require-from-string@2.0.2:
resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
engines: {node: '>=0.10.0'}
- dev: false
+ dev: true
/requires-port@1.0.0:
resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==}
@@ -7287,6 +9020,10 @@ packages:
path-is-absolute: 1.0.1
dev: true
+ /resolve-pkg-maps@1.0.0:
+ resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
+ dev: true
+
/resolve@1.22.8:
resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
hasBin: true
@@ -7419,6 +9156,17 @@ packages:
/safer-buffer@2.1.2:
resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
+ requiresBuild: true
+
+ /sass@1.70.0:
+ resolution: {integrity: sha512-uUxNQ3zAHeAx5nRFskBnrWzDUJrrvpCPD5FNAoRvTi0WwremlheES3tg+56PaVtCs5QDRX5CBLxxKMDJMEa1WQ==}
+ engines: {node: '>=14.0.0'}
+ hasBin: true
+ dependencies:
+ chokidar: 3.5.3
+ immutable: 4.3.5
+ source-map-js: 1.0.2
+ dev: true
/saxes@6.0.0:
resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==}
@@ -7430,12 +9178,21 @@ packages:
/scule@1.2.0:
resolution: {integrity: sha512-CRCmi5zHQnSoeCik9565PONMg0kfkvYmcSqrbOJY4txFfy1wvVULV4FDaiXhUblUgahdqz3F2NwHZ8i4eBTwUw==}
+ /scule@1.3.0:
+ resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==}
+ dev: false
+
/selderee@0.11.0:
resolution: {integrity: sha512-5TF+l7p4+OsnP8BCCvSyZiSPc4x4//p5uPwK8TCnVPJYRmU2aYKMpOXvw8zM5a5JvuuCGN1jmsMwuU2W02ukfA==}
dependencies:
parseley: 0.12.1
dev: true
+ /semver@5.7.2:
+ resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==}
+ hasBin: true
+ dev: true
+
/semver@6.3.1:
resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
hasBin: true
@@ -7518,24 +9275,16 @@ packages:
resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==}
dev: true
- /shikiji-core@0.10.0-beta.9:
- resolution: {integrity: sha512-7dgwTyN9PeKyc4KJeyKo/qW8gi8XbR//c1CO+0B5GaeozWexNTpEL/tSohyIKkj0Z+7spfm2REmAaS39NlC4Lw==}
- dev: false
-
- /shikiji-core@0.9.19:
- resolution: {integrity: sha512-AFJu/vcNT21t0e6YrfadZ+9q86gvPum6iywRyt1OtIPjPFe25RQnYJyxHQPMLKCCWA992TPxmEmbNcOZCAJclw==}
- dev: true
-
- /shikiji@0.10.0-beta.9:
- resolution: {integrity: sha512-I+sv642n9M7/FK/dVcXp9vMv7v5Wa8gU2UuKwkIWKQFvyo+qKB8eV1zNNtRYas+jC7BLwdAaflc5BFUozAonFQ==}
+ /shiki@1.0.0:
+ resolution: {integrity: sha512-rOUGJa3yFGgOrEoiELYxraoBbag3ZWf9bpodlr05Wjm85Scx8OIX+otdSefq9Pk7L47TKEzGodSQb4L38jka6A==}
dependencies:
- shikiji-core: 0.10.0-beta.9
+ '@shikijs/core': 1.0.0
dev: false
- /shikiji@0.9.19:
- resolution: {integrity: sha512-Kw2NHWktdcdypCj1GkKpXH4o6Vxz8B8TykPlPuLHOGSV8VkhoCLcFOH4k19K4LXAQYRQmxg+0X/eM+m2sLhAkg==}
+ /shiki@1.0.0-beta.3:
+ resolution: {integrity: sha512-z7cHTNSSvwGx2DfeLwjSNLo+HcVxifgNIzLm6Ye52eXcIwNHXT0wHbhy7FDOKSKveuEHBwt9opfj3Hoc8LE1Yg==}
dependencies:
- shikiji-core: 0.9.19
+ '@shikijs/core': 1.0.0-beta.3
dev: true
/siginfo@2.0.0:
@@ -7667,6 +9416,13 @@ packages:
spdx-license-ids: 3.0.16
dev: true
+ /spdx-expression-parse@4.0.0:
+ resolution: {integrity: sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==}
+ dependencies:
+ spdx-exceptions: 2.3.0
+ spdx-license-ids: 3.0.16
+ dev: true
+
/spdx-license-ids@3.0.16:
resolution: {integrity: sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==}
dev: true
@@ -7764,6 +9520,13 @@ packages:
resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==}
engines: {node: '>=12'}
+ /strip-indent@3.0.0:
+ resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ min-indent: 1.0.1
+ dev: true
+
/strip-json-comments@3.1.1:
resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
engines: {node: '>=8'}
@@ -7780,6 +9543,10 @@ packages:
js-tokens: 8.0.2
dev: true
+ /style-mod@4.1.0:
+ resolution: {integrity: sha512-Ca5ib8HrFn+f+0n4N4ScTIA9iTOQ7MaGS1ylHcoVqW9J7w2w8PzN6g9gKmTYgGEBH8e120+RCmhpje6jC5uGWA==}
+ dev: true
+
/stylehacks@6.0.2(postcss@8.4.33):
resolution: {integrity: sha512-00zvJGnCu64EpMjX8b5iCZ3us2Ptyw8+toEkb92VdmkEaRaSGBNKAoK6aWZckhXxmQP8zWiTaFaiMGIU8Ve8sg==}
engines: {node: ^14 || ^16 || >=18.0}
@@ -7826,6 +9593,26 @@ packages:
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
engines: {node: '>= 0.4'}
+ /svelte@4.2.9:
+ resolution: {integrity: sha512-hsoB/WZGEPFXeRRLPhPrbRz67PhP6sqYgvwcAs+gWdSQSvNDw+/lTeUJSWe5h2xC97Fz/8QxAOqItwBzNJPU8w==}
+ engines: {node: '>=16'}
+ dependencies:
+ '@ampproject/remapping': 2.2.1
+ '@jridgewell/sourcemap-codec': 1.4.15
+ '@jridgewell/trace-mapping': 0.3.22
+ '@types/estree': 1.0.5
+ acorn: 8.11.3
+ aria-query: 5.3.0
+ axobject-query: 4.0.0
+ code-red: 1.0.4
+ css-tree: 2.3.1
+ estree-walker: 3.0.3
+ is-reference: 3.0.2
+ locate-character: 3.0.0
+ magic-string: 0.30.5
+ periscopic: 3.1.0
+ dev: true
+
/svg-tags@1.0.0:
resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==}
dev: true
@@ -7848,6 +9635,13 @@ packages:
resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==}
dev: false
+ /synckit@0.6.2:
+ resolution: {integrity: sha512-Vhf+bUa//YSTYKseDiiEuQmhGCoIF3CVBhunm3r/DQnYiGT4JssmnKQc44BIyOZRK2pKjXXAgbhfmbeoC9CJpA==}
+ engines: {node: '>=12.20'}
+ dependencies:
+ tslib: 2.6.2
+ dev: true
+
/system-architecture@0.1.0:
resolution: {integrity: sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==}
engines: {node: '>=18'}
@@ -8001,6 +9795,13 @@ packages:
engines: {node: '>=0.6'}
dev: true
+ /toml-eslint-parser@0.9.3:
+ resolution: {integrity: sha512-moYoCvkNUAPCxSW9jmHmRElhm4tVJpHL8ItC/+uYD0EpPSFXbck7yREz9tNdJVTSpHVod8+HoipcpbQ0oE6gsw==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ dependencies:
+ eslint-visitor-keys: 3.4.3
+ dev: true
+
/totalist@3.0.1:
resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==}
engines: {node: '>=6'}
@@ -8080,6 +9881,16 @@ packages:
engines: {node: '>=10'}
dev: true
+ /type-fest@0.6.0:
+ resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /type-fest@0.8.1:
+ resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==}
+ engines: {node: '>=8'}
+ dev: true
+
/type-fest@3.13.1:
resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==}
engines: {node: '>=14.16'}
@@ -8105,6 +9916,9 @@ packages:
/ufo@1.3.2:
resolution: {integrity: sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==}
+ /ufo@1.4.0:
+ resolution: {integrity: sha512-Hhy+BhRBleFjpJ2vchUNN40qgkh0366FWJGqVLYBHev0vpHTrXSA0ryT+74UiW6KWsldNurQMKGqCm1M2zBciQ==}
+
/ultrahtml@1.5.2:
resolution: {integrity: sha512-qh4mBffhlkiXwDAOxvSGxhL0QEQsTbnP9BozOK3OYPEGvPvdWzvAUaXNtUSMdNsKDtuyjEbyVUPFZ52SSLhLqw==}
dev: true
@@ -8261,6 +10075,12 @@ packages:
imurmurhash: 0.1.4
dev: true
+ /unist-util-stringify-position@2.0.3:
+ resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==}
+ dependencies:
+ '@types/unist': 2.0.10
+ dev: true
+
/universalify@0.2.0:
resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==}
engines: {node: '>= 4.0.0'}
@@ -8438,12 +10258,50 @@ packages:
builtins: 5.0.1
dev: true
+ /vanilla-jsoneditor@0.21.4(@lezer/common@1.2.1):
+ resolution: {integrity: sha512-uhvF7IZbd/QM6yPznZ4IxF/FbOj3T85euc0jerjD65uExVV9qDihEpNg7hjaazj1njtRkao83aBRJZdaGCA/Sw==}
+ dependencies:
+ '@codemirror/autocomplete': 6.12.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.0)(@codemirror/view@6.23.1)(@lezer/common@1.2.1)
+ '@codemirror/commands': 6.3.3
+ '@codemirror/lang-json': 6.0.1
+ '@codemirror/language': 6.10.1
+ '@codemirror/lint': 6.5.0
+ '@codemirror/search': 6.5.5
+ '@codemirror/state': 6.4.0
+ '@codemirror/view': 6.23.1
+ '@fortawesome/free-regular-svg-icons': 6.5.1
+ '@fortawesome/free-solid-svg-icons': 6.5.1
+ '@lezer/highlight': 1.2.0
+ '@replit/codemirror-indentation-markers': 6.5.0(@codemirror/language@6.10.1)(@codemirror/state@6.4.0)(@codemirror/view@6.23.1)
+ ajv: 8.12.0
+ codemirror-wrapped-line-indent: 1.0.3(@codemirror/language@6.10.1)(@codemirror/state@6.4.0)(@codemirror/view@6.23.1)
+ diff-sequences: 29.6.3
+ immutable-json-patch: 6.0.1
+ jmespath: 0.16.0
+ json-source-map: 0.6.1
+ jsonrepair: 3.5.1
+ lodash-es: 4.17.21
+ memoize-one: 6.0.0
+ natural-compare-lite: 1.4.0
+ sass: 1.70.0
+ svelte: 4.2.9
+ vanilla-picker: 2.12.2
+ transitivePeerDependencies:
+ - '@lezer/common'
+ dev: true
+
+ /vanilla-picker@2.12.2:
+ resolution: {integrity: sha512-dk0gNeNL9fQFGd1VEhNDQfFlbCqAiksRh1H2tVPlavkH88n/a/y30rXi9PPKrYPTK5kEfPO4xcldt4ts/1wIAg==}
+ dependencies:
+ '@sphinxxxx/color-conversion': 2.2.2
+ dev: true
+
/vary@1.1.2:
resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
engines: {node: '>= 0.8'}
dev: true
- /vite-node@1.2.1(@types/node@20.11.5):
+ /vite-node@1.2.1(@types/node@20.11.10):
resolution: {integrity: sha512-fNzHmQUSOY+y30naohBvSW7pPn/xn3Ib/uqm+5wAJQJiqQsU0NBR78XdRJb04l4bOFKjpTWld0XAfkKlrDbySg==}
engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true
@@ -8452,7 +10310,28 @@ packages:
debug: 4.3.4
pathe: 1.1.2
picocolors: 1.0.0
- vite: 5.0.11(@types/node@20.11.5)
+ vite: 5.0.11(@types/node@20.11.10)
+ transitivePeerDependencies:
+ - '@types/node'
+ - less
+ - lightningcss
+ - sass
+ - stylus
+ - sugarss
+ - supports-color
+ - terser
+ dev: true
+
+ /vite-node@1.2.2(@types/node@20.11.10):
+ resolution: {integrity: sha512-1as4rDTgVWJO3n1uHmUYqq7nsFgINQ9u+mRcXpjeOMJUmviqNKjcZB7UfRZrlM7MjYXMKpuWp5oGkjaFLnjawg==}
+ engines: {node: ^18.0.0 || >=20.0.0}
+ hasBin: true
+ dependencies:
+ cac: 6.7.14
+ debug: 4.3.4
+ pathe: 1.1.2
+ picocolors: 1.0.0
+ vite: 5.0.12(@types/node@20.11.10)
transitivePeerDependencies:
- '@types/node'
- less
@@ -8510,7 +10389,60 @@ packages:
strip-ansi: 6.0.1
tiny-invariant: 1.3.1
typescript: 5.3.3
- vite: 5.0.11(@types/node@20.11.5)
+ vite: 5.0.11(@types/node@20.11.10)
+ vscode-languageclient: 7.0.0
+ vscode-languageserver: 7.0.0
+ vscode-languageserver-textdocument: 1.0.11
+ vscode-uri: 3.0.8
+ dev: true
+
+ /vite-plugin-checker@0.6.2(eslint@8.56.0)(typescript@5.3.3)(vite@5.0.12):
+ resolution: {integrity: sha512-YvvvQ+IjY09BX7Ab+1pjxkELQsBd4rPhWNw8WLBeFVxu/E7O+n6VYAqNsKdK/a2luFlX/sMpoWdGFfg4HvwdJQ==}
+ engines: {node: '>=14.16'}
+ peerDependencies:
+ eslint: '>=7'
+ meow: ^9.0.0
+ optionator: ^0.9.1
+ stylelint: '>=13'
+ typescript: '*'
+ vite: '>=2.0.0'
+ vls: '*'
+ vti: '*'
+ vue-tsc: '>=1.3.9'
+ peerDependenciesMeta:
+ eslint:
+ optional: true
+ meow:
+ optional: true
+ optionator:
+ optional: true
+ stylelint:
+ optional: true
+ typescript:
+ optional: true
+ vls:
+ optional: true
+ vti:
+ optional: true
+ vue-tsc:
+ optional: true
+ dependencies:
+ '@babel/code-frame': 7.23.5
+ ansi-escapes: 4.3.2
+ chalk: 4.1.2
+ chokidar: 3.5.3
+ commander: 8.3.0
+ eslint: 8.56.0
+ fast-glob: 3.3.2
+ fs-extra: 11.2.0
+ lodash.debounce: 4.0.8
+ lodash.pick: 4.4.0
+ npm-run-path: 4.0.1
+ semver: 7.5.4
+ strip-ansi: 6.0.1
+ tiny-invariant: 1.3.1
+ typescript: 5.3.3
+ vite: 5.0.12(@types/node@20.11.10)
vscode-languageclient: 7.0.0
vscode-languageserver: 7.0.0
vscode-languageserver-textdocument: 1.0.11
@@ -8536,7 +10468,7 @@ packages:
open: 9.1.0
picocolors: 1.0.0
sirv: 2.0.4
- vite: 5.0.12(@types/node@20.11.5)
+ vite: 5.0.12(@types/node@20.11.10)
transitivePeerDependencies:
- rollup
- supports-color
@@ -8556,12 +10488,12 @@ packages:
'@vue/compiler-dom': 3.4.15
kolorist: 1.8.0
magic-string: 0.30.5
- vite: 5.0.12(@types/node@20.11.5)
+ vite: 5.0.12(@types/node@20.11.10)
transitivePeerDependencies:
- supports-color
dev: true
- /vite@5.0.11(@types/node@20.11.5):
+ /vite@5.0.11(@types/node@20.11.10):
resolution: {integrity: sha512-XBMnDjZcNAw/G1gEiskiM1v6yzM4GE5aMGvhWTlHAYYhxb7S3/V1s3m2LDHa8Vh6yIWYYB0iJwsEaS523c4oYA==}
engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true
@@ -8589,7 +10521,7 @@ packages:
terser:
optional: true
dependencies:
- '@types/node': 20.11.5
+ '@types/node': 20.11.10
esbuild: 0.19.11
postcss: 8.4.33
rollup: 4.9.6
@@ -8597,7 +10529,7 @@ packages:
fsevents: 2.3.3
dev: true
- /vite@5.0.12(@types/node@20.11.5):
+ /vite@5.0.12(@types/node@20.11.10):
resolution: {integrity: sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w==}
engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true
@@ -8625,7 +10557,7 @@ packages:
terser:
optional: true
dependencies:
- '@types/node': 20.11.5
+ '@types/node': 20.11.10
esbuild: 0.19.11
postcss: 8.4.33
rollup: 4.9.6
@@ -8633,10 +10565,10 @@ packages:
fsevents: 2.3.3
dev: true
- /vitest-environment-nuxt@1.0.0(h3@1.10.0)(rollup@3.29.4)(vite@5.0.12)(vitest@1.2.1)(vue-router@4.2.5)(vue@3.4.15):
+ /vitest-environment-nuxt@1.0.0(h3@1.10.1)(rollup@3.29.4)(vite@5.0.12)(vitest@1.2.2)(vue-router@4.2.5)(vue@3.4.15):
resolution: {integrity: sha512-AWMO9h4HdbaFdPWZw34gALFI8gbBiOpvfbyeZwHIPfh4kWg/TwElYHvYMQ61WPUlCGaS5LebfHkaI0WPyb//Iw==}
dependencies:
- '@nuxt/test-utils': 3.10.0(h3@1.10.0)(rollup@3.29.4)(vite@5.0.12)(vitest@1.2.1)(vue-router@4.2.5)(vue@3.4.15)
+ '@nuxt/test-utils': 3.11.0(h3@1.10.1)(rollup@3.29.4)(vite@5.0.12)(vitest@1.2.2)(vue-router@4.2.5)(vue@3.4.15)
transitivePeerDependencies:
- '@cucumber/cucumber'
- '@jest/globals'
@@ -8655,8 +10587,8 @@ packages:
- vue-router
dev: true
- /vitest@1.2.1(@types/node@20.11.5):
- resolution: {integrity: sha512-TRph8N8rnSDa5M2wKWJCMnztCZS9cDcgVTQ6tsTFTG/odHJ4l5yNVqvbeDJYJRZ6is3uxaEpFs8LL6QM+YFSdA==}
+ /vitest@1.2.2(@types/node@20.11.10):
+ resolution: {integrity: sha512-d5Ouvrnms3GD9USIK36KG8OZ5bEvKEkITFtnGv56HFaSlbItJuYr7hv2Lkn903+AvRAgSixiamozUVfORUekjw==}
engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true
peerDependencies:
@@ -8680,12 +10612,12 @@ packages:
jsdom:
optional: true
dependencies:
- '@types/node': 20.11.5
- '@vitest/expect': 1.2.1
- '@vitest/runner': 1.2.1
- '@vitest/snapshot': 1.2.1
- '@vitest/spy': 1.2.1
- '@vitest/utils': 1.2.1
+ '@types/node': 20.11.10
+ '@vitest/expect': 1.2.2
+ '@vitest/runner': 1.2.2
+ '@vitest/snapshot': 1.2.2
+ '@vitest/spy': 1.2.2
+ '@vitest/utils': 1.2.2
acorn-walk: 8.3.2
cac: 6.7.14
chai: 4.4.1
@@ -8699,8 +10631,8 @@ packages:
strip-literal: 1.3.0
tinybench: 2.6.0
tinypool: 0.8.2
- vite: 5.0.12(@types/node@20.11.5)
- vite-node: 1.2.1(@types/node@20.11.5)
+ vite: 5.0.12(@types/node@20.11.10)
+ vite-node: 1.2.2(@types/node@20.11.10)
why-is-node-running: 2.2.2
transitivePeerDependencies:
- less
@@ -8758,6 +10690,23 @@ packages:
ufo: 1.3.2
dev: true
+ /vue-component-meta@1.8.27(typescript@5.3.3):
+ resolution: {integrity: sha512-j3WJsyQHP4TDlvnjHc/eseo0/eVkf0FaCpkqGwez5zD+Tj31onBzWZEXTnWKs8xRj0n3dMNYdy3SpiS6NubSvg==}
+ peerDependencies:
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@volar/typescript': 1.11.1
+ '@vue/language-core': 1.8.27(typescript@5.3.3)
+ path-browserify: 1.0.1
+ typescript: 5.3.3
+ vue-component-type-helpers: 1.8.27
+
+ /vue-component-type-helpers@1.8.27:
+ resolution: {integrity: sha512-0vOfAtI67UjeO1G6UiX5Kd76CqaQ67wrRZiOe7UAb9Jm6GzlUr/fC7CV90XfwapJRjpCMaZFhv1V0ajWRmE9Dg==}
+
/vue-demi@0.14.6(vue@3.4.15):
resolution: {integrity: sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==}
engines: {node: '>=12'}
@@ -8777,19 +10726,19 @@ packages:
resolution: {integrity: sha512-RutnB7X8c5hjq39NceArgXg28WZtZpGc3+J16ljMiYnFhKvd8hITxSWQSQ5bvldxMDU6gG5mkxl1MTQLXckVSQ==}
dev: true
- /vue-email@0.8.6(typescript@5.3.3)(vue@3.4.15):
- resolution: {integrity: sha512-1U7xUdBcBn0ava2hz5gXPe7/6vL3Zts/8XBIVzhjfG9nuNYMKOvfRacLSeQ5lIfUvNhXvdv6NSQNOELLkdoMAQ==}
+ /vue-email@0.8.10(typescript@5.3.3)(vue@3.4.15):
+ resolution: {integrity: sha512-JnBbDihdkz1NaNnUSQhXL2hQ9yfLnzVJHJ+DrskYlSALT5bmsxkQJSb7tyGUoSbJ4sEXA3AqpN6oYKKglnekrQ==}
hasBin: true
peerDependencies:
- vue: ^3.3.8
+ vue: ^3.4.15
dependencies:
- '@vue-email/cli': 0.0.10(typescript@5.3.3)(vue@3.4.15)
+ '@vue-email/cli': 0.0.13(typescript@5.3.3)(vue@3.4.15)
'@vue-email/tailwind': 0.0.6
- isomorphic-dompurify: 2.2.0
- shikiji: 0.10.0-beta.9
- ufo: 1.3.2
+ isomorphic-dompurify: 2.3.0
+ shiki: 1.0.0
+ ufo: 1.4.0
vue: 3.4.15(typescript@5.3.3)
- vue-i18n: 9.9.0(vue@3.4.15)
+ vue-i18n: 9.9.1(vue@3.4.15)
transitivePeerDependencies:
- bufferutil
- canvas
@@ -8817,14 +10766,14 @@ packages:
- supports-color
dev: true
- /vue-i18n@9.9.0(vue@3.4.15):
- resolution: {integrity: sha512-xQ5SxszUAqK5n84N+uUyHH/PiQl9xZ24FOxyAaNonmOQgXeN+rD9z/6DStOpOxNFQn4Cgcquot05gZc+CdOujA==}
+ /vue-i18n@9.9.1(vue@3.4.15):
+ resolution: {integrity: sha512-xyQ4VspLdNSPTKBFBPWa1tvtj+9HuockZwgFeD2OhxxXuC2CWeNvV4seu2o9+vbQOyQbhAM5Ez56oxUrrnTWdw==}
engines: {node: '>= 16'}
peerDependencies:
vue: ^3.0.0
dependencies:
- '@intlify/core-base': 9.9.0
- '@intlify/shared': 9.9.0
+ '@intlify/core-base': 9.9.1
+ '@intlify/shared': 9.9.1
'@vue/devtools-api': 6.5.1
vue: 3.4.15(typescript@5.3.3)
dev: false
@@ -8838,6 +10787,12 @@ packages:
vue: 3.4.15(typescript@5.3.3)
dev: true
+ /vue-template-compiler@2.7.16:
+ resolution: {integrity: sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==}
+ dependencies:
+ de-indent: 1.0.2
+ he: 1.2.0
+
/vue@2.7.16:
resolution: {integrity: sha512-4gCtFXaAA3zYZdTp5s4Hl2sozuySsgz4jy1EnpBHNfpMa9dK1ZCG7viqBPCwXtmgc8nHqUsAu3G4gtmXkkY3Sw==}
deprecated: Vue 2 has reached EOL and is no longer actively maintained. See https://v2.vuejs.org/eol/ for more details.
@@ -8861,6 +10816,10 @@ packages:
'@vue/shared': 3.4.15
typescript: 5.3.3
+ /w3c-keyname@2.2.8:
+ resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==}
+ dev: true
+
/w3c-xmlserializer@5.0.0:
resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==}
engines: {node: '>=18'}
@@ -9006,6 +10965,15 @@ packages:
/yallist@4.0.0:
resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
+ /yaml-eslint-parser@1.2.2:
+ resolution: {integrity: sha512-pEwzfsKbTrB8G3xc/sN7aw1v6A6c/pKxLAkjclnAyo5g5qOh6eL9WGu0o3cSDQZKrTNk4KL4lQSwZW+nBkANEg==}
+ engines: {node: ^14.17.0 || >=16.0.0}
+ dependencies:
+ eslint-visitor-keys: 3.4.3
+ lodash: 4.17.21
+ yaml: 2.3.4
+ dev: true
+
/yaml@2.3.4:
resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==}
engines: {node: '>= 14'}
diff --git a/src/module.ts b/src/module.ts
index e0f8d04..fb1a6e6 100644
--- a/src/module.ts
+++ b/src/module.ts
@@ -1,13 +1,24 @@
import { join } from 'node:path'
import { existsSync } from 'node:fs'
-import { addComponent, addComponentsDir, addImportsSources, addServerHandler, addTemplate, createResolver, defineNuxtModule } from '@nuxt/kit'
+import {
+ addComponent,
+ addComponentsDir,
+ addImportsSources,
+ addServerHandler,
+ addTemplate,
+ createResolver,
+ defineNuxtModule,
+ hasNuxtModule,
+} from '@nuxt/kit'
import { defu } from 'defu'
import sirv from 'sirv'
-import type { I18n } from 'vue-email'
+import type { I18n, VueEmailPluginOptions } from 'vue-email'
const components = [
'EBody',
'EButton',
+ 'ECodeBlock',
+ 'ECodeInline',
'EColumn',
'EContainer',
'EFont',
@@ -30,10 +41,13 @@ const PATH_PLAYGROUND = `${PATH}/client`
// Module options TypeScript interface definition
export interface ModuleOptions {
- baseUrl?: string | null;
- i18n?: I18n;
- playground?: boolean;
- autoImport?: boolean;
+ baseUrl?: string | null
+ i18n?: I18n
+ playground?: boolean
+ autoImport?: boolean
+ useNuxtTailwind?: boolean
+ tailwind?: VueEmailPluginOptions['tailwind']
+ emailsDir?: string
}
export default defineNuxtModule({
@@ -45,7 +59,6 @@ export default defineNuxtModule({
bridge: false,
},
},
- // Default configuration options of the Nuxt module
defaults(nuxt) {
const isDev = process.env.NODE_ENV === 'development' || nuxt.options.dev
@@ -53,31 +66,54 @@ export default defineNuxtModule({
baseUrl: null,
playground: isDev,
autoImport: false,
+ useNuxtTailwind: true,
+ tailwind: undefined,
+ emailsDir: '/emails',
}
},
- async setup (options, nuxt) {
+ async setup(options, nuxt) {
const { resolve } = createResolver(import.meta.url)
const playgroundDir = resolve('../dist/client')
+ nuxt.options.runtimeConfig.public.vueEmail = defu(
+ nuxt.options.runtimeConfig.public.vueEmail,
+ options,
+ )
- nuxt.options.runtimeConfig.public.vueEmail = defu(nuxt.options.runtimeConfig.public.vueEmail, options)
-
- let tempaltesDir = '/emails';
-
- for(const layer of nuxt.options._layers) {
+ let tempaltesDir = resolve(options.emailsDir) || resolve('/emails')
+ for (const layer of nuxt.options._layers) {
const templatePath = join(layer.cwd, '/emails')
const pathFound = existsSync(templatePath)
- if(!pathFound) continue;
- tempaltesDir = templatePath;
- break;
+ if (!pathFound)
+ continue
+ tempaltesDir = templatePath
+ break
+ }
+
+ nuxt.options.runtimeConfig.public.vueEmail.emailsDir = tempaltesDir
+
+ if (hasNuxtModule('@nuxtjs/tailwindcss') && options.useNuxtTailwind) {
+ // @ts-expect-error runtime type
+ nuxt.hook('tailwindcss:resolvedConfig', (resolvedConfig) => {
+ options.tailwind = resolvedConfig
+ nuxt.options.runtimeConfig.public.vueEmail = defu(
+ nuxt.options.runtimeConfig.public.vueEmail,
+ options,
+ )
+ })
}
nuxt.options.nitro.alias = nuxt.options.nitro.alias || {}
- nuxt.options.nitro.externals = defu(typeof nuxt.options.nitro.externals === 'object' ? nuxt.options.nitro.externals : {}, {
- inline: [resolve('./runtime')],
- })
+ nuxt.options.nitro.externals = defu(
+ typeof nuxt.options.nitro.externals === 'object'
+ ? nuxt.options.nitro.externals
+ : {},
+ {
+ inline: [resolve('./runtime')],
+ },
+ )
nuxt.options.nitro.alias = defu(nuxt.options.nitro.alias, {
'#vue-email': resolve('./runtime/server/nitro'),
@@ -89,8 +125,6 @@ export default defineNuxtModule({
dir: tempaltesDir,
})
- // Setup playground. Only available in development
-
if (options.playground) {
addServerHandler({
handler: resolve('./runtime/server/api/emails.get'),
@@ -99,18 +133,19 @@ export default defineNuxtModule({
lazy: true,
})
addServerHandler({
- handler: resolve('./runtime/server/api/render/[file].get'),
+ handler: resolve('./runtime/server/api/render/[file].post'),
route: '/api/render/:file',
- method: 'get',
+ method: 'post',
lazy: true,
})
nuxt.hook('vite:serverCreated', async (server) => {
- server.middlewares.use(PATH_PLAYGROUND, sirv(playgroundDir, { single: true, dev: true }))
+ server.middlewares.use(
+ PATH_PLAYGROUND,
+ sirv(playgroundDir, { single: true, dev: true }),
+ )
})
- // eslint-disable-next-line @typescript-eslint/prefer-ts-expect-error
- // @ts-ignore runtime type
nuxt.hook('devtools:customTabs', (iframeTabs) => {
iframeTabs.push({
name: 'vueemail',
@@ -126,7 +161,14 @@ export default defineNuxtModule({
addTemplate({
filename: 'types/vue-email.d.ts',
- getContents: () => ["declare module '#vue-email' {", ` const useCompiler: typeof import('${resolve('./runtime/server/nitro')}').useCompiler`, '}'].join('\n'),
+ getContents: () =>
+ [
+ 'declare module \'#vue-email\' {',
+ ` const useCompiler: typeof import('${resolve(
+ './runtime/server/nitro',
+ )}').useCompiler`,
+ '}',
+ ].join('\n'),
})
nuxt.hook('prepare:types', (options) => {
@@ -135,9 +177,7 @@ export default defineNuxtModule({
})
})
- // addPlugin(resolve('./runtime/plugins/vue-email'))
-
- if(options.autoImport) {
+ if (options.autoImport) {
components.forEach((component) => {
addComponent({
name: component,
@@ -146,23 +186,22 @@ export default defineNuxtModule({
})
})
- await addComponentsDir({
- // TODO: add options to add a custom path and indicate if is absolute or relative
- // for example (absolute o relative):
- // path: options?.absolutePath ? resolve('emails') : tempaltesDir ,
- //
- // custom:
- // path: options?.emailsDir || tempaltesDir,
- path: tempaltesDir,
- extensions: ['vue'],
- global: true,
- })
-
addImportsSources({
from: 'vue-email',
imports: ['useRender'],
})
}
- }
+ await addComponentsDir({
+ // TODO: add options to add a custom path and indicate if is absolute or relative
+ // for example (absolute o relative):
+ // path: options?.absolutePath ? resolve('emails') : tempaltesDir ,
+ //
+ // custom:
+ // path: options?.emailsDir || tempaltesDir,
+ path: tempaltesDir,
+ extensions: ['vue'],
+ global: true,
+ })
+ },
})
diff --git a/src/runtime/server/api/emails.get.ts b/src/runtime/server/api/emails.get.ts
index ce761b4..5ea631f 100644
--- a/src/runtime/server/api/emails.get.ts
+++ b/src/runtime/server/api/emails.get.ts
@@ -1,25 +1,174 @@
+import path from 'node:path'
import { kebabCase, pascalCase } from 'scule'
+import { createComponentMetaCheckerByJsonConfig } from 'vue-component-meta'
+import { destr } from 'destr'
+import JSON5 from 'json5'
import type { Email } from '../../types/email'
-import { createError, defineEventHandler, useStorage } from '#imports'
+import { createError, defineEventHandler, useRuntimeConfig, useStorage } from '#imports'
+
+function stripeTypeScriptInternalTypesSchema(type: any): any {
+ if (!type)
+ return type
+
+ if (type.declarations && type.declarations.find((d: any) => d.file.includes('node_modules/typescript')))
+ return false
+
+ if (Array.isArray(type))
+ return type.map((sch: any) => stripeTypeScriptInternalTypesSchema(sch)).filter(r => r !== false)
+
+ if (Array.isArray(type.schema)) {
+ return {
+ ...type,
+ schema: type.schema.map((sch: any) => stripeTypeScriptInternalTypesSchema(sch)).filter((r: any) => r !== false),
+ }
+ }
+ if (!type.schema || typeof type.schema !== 'object')
+ return type
+
+ const schema: any = {}
+ Object.keys(type.schema).forEach((sch) => {
+ const res = stripeTypeScriptInternalTypesSchema(type.schema[sch])
+ if (res !== false)
+ schema[sch] = res
+ })
+ return {
+ ...type,
+ schema,
+ }
+}
export default defineEventHandler(async () => {
try {
const nitroEmails = await useStorage('assets:emails').getKeys()
+ const rootDir = useRuntimeConfig().public.vueEmail.emailsDir || process.cwd()
+
+ const checker = createComponentMetaCheckerByJsonConfig(
+ rootDir,
+ {
+ extends: path.join(rootDir, '..', 'tsconfig.json'),
+ skipLibCheck: true,
+ include: ['**/*.vue'],
+ exclude: [],
+ },
+ {
+ forceUseTs: true,
+ printer: { newLine: 1 },
+ },
+ )
const emails: Email[] = await Promise.all(
- nitroEmails.map(async (email: string) => {
- const data = JSON.stringify(await useStorage('assets:emails').getMeta(email))
+ nitroEmails.map(async (email) => {
+ const data = JSON.stringify(
+ await useStorage('assets:emails').getMeta(email),
+ )
const emailData = JSON.parse(data)
- const content = (await useStorage('assets:emails').getItem(email)) as string
+ const emailPath = path.join(
+ rootDir,
+ email.replaceAll(':', '/'),
+ )
+
+ let destructuredProps = []
+
+ try {
+ const { props } = checker.getComponentMeta(emailPath)
+ let emailProps = (props).filter(prop => !prop.global).sort((a, b) => {
+ if (!a.required && b.required)
+ return 1
+
+ if (a.required && !b.required)
+ return -1
+
+ if (a.type === 'boolean' && b.type !== 'boolean')
+ return 1
+
+ if (a.type !== 'boolean' && b.type === 'boolean')
+ return -1
+
+ return 0
+ })
+
+ emailProps = emailProps.map(stripeTypeScriptInternalTypesSchema)
+ destructuredProps = emailProps.map((prop) => {
+ const destructuredType = prop.type.split('|').map((type) => {
+ type = type.trim()
+ const value = prop.default
+
+ if (type === 'string') {
+ return {
+ type: 'string',
+ value: destr(value) ?? '',
+ }
+ }
+
+ if (type === 'number') {
+ return {
+ type: 'number',
+ value: destr(value) || 0,
+ }
+ }
+
+ if (type === 'boolean') {
+ return {
+ type: 'boolean',
+ value: destr(value) || false,
+ }
+ }
+
+ if (type === 'object' || type.includes('Record') || type.includes('Record<')) {
+ return {
+ type: 'object',
+ value: value ? JSON5.parse(value) : {},
+ }
+ }
+
+ if (type === 'array' || type.includes('[]') || type.includes('Array') || type.includes('Array<')) {
+ return {
+ type: 'array',
+ value: value ? JSON5.parse(value) : [],
+ }
+ }
+
+ if (type === 'Date') {
+ return {
+ type: 'date',
+ value: value ? eval(value) : new Date().toISOString(),
+ }
+ }
+
+ return {
+ type: 'string',
+ value: value ?? '',
+ }
+ })
+
+ return {
+ label: prop.name,
+ type: destructuredType[0].type,
+ value: destructuredType[0].value,
+ }
+ })
+ }
+ catch (error) {
+ console.warn('Error destructuring props', error)
+ }
+
+ const content = (await useStorage('assets:emails').getItem(
+ email,
+ )) as string
return {
- label: pascalCase(kebabCase(email.replace('.vue', '').replace(':', '_')).split('-').join(' ')),
+ label: pascalCase(
+ kebabCase(email.replace('.vue', '').replace(':', '_'))
+ .split('-')
+ .join(' '),
+ ),
filename: email,
content,
icon: 'i-heroicons-envelope',
size: emailData.size,
created: emailData.birthtime,
modified: emailData.mtime,
+ props: destructuredProps,
}
}),
)
@@ -32,7 +181,10 @@ export default defineEventHandler(async () => {
}
return emails
- } catch (error) {
+ }
+ catch (error) {
+ console.error(error)
+
throw createError({
statusCode: 500,
statusMessage: 'Internal Server Error',
diff --git a/src/runtime/server/api/render/[file].get.ts b/src/runtime/server/api/render/[file].get.ts
deleted file mode 100644
index 5d49e26..0000000
--- a/src/runtime/server/api/render/[file].get.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-import { useCompiler } from '#vue-email'
-import { createError, defineEventHandler } from '#imports'
-
-export default defineEventHandler(async (event: any) => {
- try {
- const file = event.context.params && event.context.params.file ? event.context.params.file : null
-
- // TODO: pass props to template
- const template = await useCompiler(file)
-
- if (!template) {
- throw createError({
- statusCode: 404,
- statusMessage: 'Not Found',
- })
- }
-
- return template
- } catch (error) {
- console.error(error)
-
- throw createError({
- statusCode: 500,
- statusMessage: 'Internal Server Error',
- })
- }
-})
diff --git a/src/runtime/server/api/render/[file].post.ts b/src/runtime/server/api/render/[file].post.ts
new file mode 100644
index 0000000..c708d23
--- /dev/null
+++ b/src/runtime/server/api/render/[file].post.ts
@@ -0,0 +1,57 @@
+import { destr } from 'destr'
+import { useCompiler } from '#vue-email'
+import { createError, defineEventHandler, readBody } from '#imports'
+
+export default defineEventHandler(async (event: any) => {
+ try {
+ const file = event.context.params && event.context.params.file ? event.context.params.file : null
+ const body = await readBody(event)
+
+ let props: any = null
+ if (body && body.props) {
+ props = body.props.reduce((acc: Record, prop: any) => {
+ if (prop.type === 'string')
+ acc[prop.label] = destr(prop.value) || ''
+
+ if (prop.type === 'number')
+ acc[prop.label] = destr(prop.value) || 0
+
+ if (prop.type === 'boolean')
+ acc[prop.label] = destr(prop.value) || false
+
+ if (prop.type === 'object')
+ acc[prop.label] = destr(prop.value) || {}
+
+ if (prop.type === 'array')
+ acc[prop.label] = destr(prop.value) || []
+
+ if (prop.type === 'date')
+ acc[prop.label] = new Date(prop.value) || new Date()
+
+ return acc
+ }, {})
+ }
+
+ // TODO: pass props to template
+ const template = await useCompiler(file, {
+ props,
+ })
+
+ if (!template) {
+ throw createError({
+ statusCode: 404,
+ statusMessage: 'Not Found',
+ })
+ }
+
+ return template
+ }
+ catch (error) {
+ console.error(error)
+
+ throw createError({
+ statusCode: 500,
+ statusMessage: 'Internal Server Error',
+ })
+ }
+})
diff --git a/src/runtime/server/nitro/useCompiler.ts b/src/runtime/server/nitro/useCompiler.ts
index 7c8c035..f4a200b 100644
--- a/src/runtime/server/nitro/useCompiler.ts
+++ b/src/runtime/server/nitro/useCompiler.ts
@@ -5,33 +5,24 @@ import { useRuntimeConfig, useStorage } from '#imports'
const storageKey = 'assets:emails'
-/**
- * Compile a email template
- * @param {string} filename
- * @param {object} options
- * @returns {string}
- *
- * @example
- * ```ts
- * useCompiler('template.vue', {
- * props: {
- * name: 'foo',
- * },
- * locale: 'en',
- * translations: {},
- * })
- * ```
- */
-export async function useCompiler(filename: string, data?: RenderOptions, verbose = false) {
+export async function useCompiler(
+ filename: string,
+ data?: RenderOptions,
+ verbose = false,
+) {
const vueEmailOptions = useRuntimeConfig().public.vueEmail as ModuleOptions
- const source = await useStorage(storageKey).getItem(filename)
+ let source = await useStorage(storageKey).getItem(filename)
+ if (source instanceof Uint8Array)
+ source = new TextDecoder().decode(source)
const keys = await useStorage(storageKey).getKeys()
const components: {
name: string
source: string
}[] = []
for (const key of keys) {
- const value = await useStorage(storageKey).getItem(key)
+ let value = await useStorage(storageKey).getItem(key)
+ if (value instanceof Uint8Array)
+ value = new TextDecoder().decode(value)
if (value && key.endsWith('.vue')) {
components.push({
@@ -41,15 +32,22 @@ export async function useCompiler(filename: string, data?: RenderOptions, verbos
}
}
- if(!source) throw new Error(`Template ${filename} not found`)
+ if (!source)
+ throw new Error(`Template ${filename} not found`)
- const template = await templateRender(filename, { source: source as string, components }, data, {
- verbose,
- options: {
- baseUrl: vueEmailOptions?.baseUrl,
- i18n: vueEmailOptions?.i18n,
+ const template = await templateRender(
+ filename,
+ { source: source as string, components },
+ data,
+ {
+ verbose,
+ options: {
+ baseUrl: vueEmailOptions?.baseUrl,
+ i18n: vueEmailOptions?.i18n,
+ tailwind: vueEmailOptions?.tailwind,
+ },
},
- })
+ )
return template
}
diff --git a/src/runtime/types/email.ts b/src/runtime/types/email.ts
index d5da2fb..02a61c1 100644
--- a/src/runtime/types/email.ts
+++ b/src/runtime/types/email.ts
@@ -6,6 +6,12 @@ export interface Email {
size: number
created: Date
modified: Date
+ props: {
+ label: string
+ value: any
+ type: string
+ description?: string
+ }[]
}
export interface Directory {
diff --git a/tsconfig.json b/tsconfig.json
index 3ffb9a6..d6ce489 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -1,8 +1,8 @@
{
"extends": "./.nuxt/tsconfig.json",
- "exclude": ["client", "dist"],
"compilerOptions": {
- "noImplicitAny": false,
- "strictNullChecks": false
- }
+ "strictNullChecks": false,
+ "noImplicitAny": false
+ },
+ "exclude": ["client", "dist"]
}
pFad - Phonifier reborn
Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies:
Alternative Proxy
pFad Proxy
pFad v3 Proxy
pFad v4 Proxy