commit b124ff80920c5a0aad66649c18ff96d908c07980 Author: Haqeem Solehan <93633646+julap99@users.noreply.github.com> Date: Thu Oct 16 16:05:39 2025 +0800 Update various configuration files, components, and assets; enhance notification system and API endpoints; improve documentation and styles across the application. diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..b1a2216 --- /dev/null +++ b/.env.example @@ -0,0 +1,16 @@ +# Email Configuration for Nodemailer (Mailtrap SMTP) +# For Mailtrap: Use live.smtp.mailtrap.io for production sending +# Ports: 587 (recommended), 465, 2525, or 25 +# Auth: PLAIN or LOGIN +# TLS: Required (STARTTLS on 587, 2525, 25; Forced TLS on 465) +SMTP_HOST=live.smtp.mailtrap.io +SMTP_PORT=587 +SMTP_SECURE=false +SMTP_USER=apismtp@mailtrap.io +SMTP_PASS=your-mailtrap-api-token +SMTP_FROM=noreply@yourcompany.com + +# Database Configuration +DATABASE_URL="your-database-url" + +# Other configuration... \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..00a350d --- /dev/null +++ b/.gitignore @@ -0,0 +1,30 @@ +# Nuxt dev/build outputs +.output +.nuxt +.nitro +.cache +dist + +# Node dependencies +node_modules + +# Logs +*.log + +# Misc +.DS_Store +.fleet +.idea + +# Local env files +.env +.env.* +!.env.example + +# Uploads directory +public/ +public/uploads/ + +assets/img/ + + diff --git a/.nuxtignore b/.nuxtignore new file mode 100644 index 0000000..e69de29 diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..c1c99bb --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "vue3snippets.enable-compile-vue-file-on-did-save-code": true +} \ No newline at end of file diff --git a/NOTIFICATION_TEMPLATES_DEBUG.md b/NOTIFICATION_TEMPLATES_DEBUG.md new file mode 100644 index 0000000..e879218 --- /dev/null +++ b/NOTIFICATION_TEMPLATES_DEBUG.md @@ -0,0 +1,161 @@ +# Notification Templates Error Debugging Guide + +## Issue Description + +**Error:** `Cannot read properties of undefined (reading 'map')` +**Location:** `pages/notification/templates/index.vue` line 399 +**Cause:** The frontend is trying to call `.map()` on `response.data.templates` but this property is undefined. + +## Root Cause Analysis + +The error occurs because the API response doesn't have the expected structure. The frontend expects: +```javascript +{ + success: true, + data: { + templates: [...], // Array of templates + pagination: {...} + } +} +``` + +But the API might be returning: +- An error response +- A response with missing `data` property +- A response with missing `data.templates` property +- An empty or malformed response + +## Potential Causes + +1. **Database Issues:** + - Database connection failure + - Missing `notification_templates` table + - Table exists but has no data + +2. **Authentication Issues:** + - User not authenticated + - Authentication middleware failing + - Missing user context in API + +3. **API Implementation Issues:** + - Error in API endpoint logic + - Prisma query failure + - Unhandled exceptions + +## Debugging Steps + +### Step 1: Test Database Connection and Data + +Run the database test script: +```bash +npm run test-api +``` + +This will: +- Test database connection +- Check if `notification_templates` table exists +- Show current data count +- Simulate the API logic +- Display the expected response structure + +### Step 2: Add Sample Data + +If the table is empty, seed it with sample data: +```bash +npm run seed-templates +``` + +This will add 4 sample notification templates for testing. + +### Step 3: Run Both Tests + +Run the combined debugging command: +```bash +npm run debug-templates +``` + +This runs both the test and seeding scripts. + +### Step 4: Check Authentication + +Ensure you are logged in when testing the frontend. The API requires authentication. + +## Frontend Fixes Applied + +The frontend code has been updated with better error handling: + +1. **Defensive Programming:** Check if response structure exists before accessing +2. **Better Error Messages:** More specific error messages based on response type +3. **Empty State Handling:** Properly handle empty arrays +4. **Loading State Management:** Consistent loading state management + +## API Response Structure + +The API should return: +```javascript +{ + success: true, + data: { + templates: [ + { + id: "uuid", + title: "Template Name", + value: "template_value", + description: "Description", + subject: "Email Subject", + category: "category", + channels: ["email", "push"], + status: "Active", + version: "1.0", + // ... other fields + } + ], + pagination: { + page: 1, + limit: 10, + totalCount: 5, + totalPages: 1, + hasNextPage: false, + hasPrevPage: false + } + } +} +``` + +## Quick Fix Summary + +1. **Frontend:** Added robust error handling to prevent crashes +2. **Testing:** Created scripts to test database and API logic +3. **Sample Data:** Created seeding script for testing +4. **Debugging:** Added comprehensive logging and error reporting + +## Next Steps + +1. Run `npm run debug-templates` to diagnose the issue +2. Check the console output for specific errors +3. If database connection fails, check your `DATABASE_URL` environment variable +4. If authentication fails, ensure you're logged in +5. If the API works in testing but fails in the browser, check browser console for network errors + +## Files Modified + +- `pages/notification/templates/index.vue` - Added error handling +- `scripts/seed-templates.js` - Sample data seeding +- `scripts/test-api.js` - Database and API testing +- `package.json` - Added debugging scripts + +## Environment Requirements + +- Database server running +- Valid `DATABASE_URL` in environment +- Prisma client generated (`npx prisma generate`) +- Database migrations applied + +## Support + +If the issue persists after following these steps, check: +1. Database server status +2. Environment variables +3. Prisma schema sync with database +4. Network connectivity +5. Authentication middleware configuration \ No newline at end of file diff --git a/QUEUE_SCHEDULER_IMPLEMENTATION.md b/QUEUE_SCHEDULER_IMPLEMENTATION.md new file mode 100644 index 0000000..0519ecb --- /dev/null +++ b/QUEUE_SCHEDULER_IMPLEMENTATION.md @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..7f452fe --- /dev/null +++ b/README.md @@ -0,0 +1,45 @@ +# Nuxt 3 Minimal Starter + +Look at the [nuxt 3 documentation](https://v3.nuxtjs.org) to learn more. + +## Setup + +Make sure to install the dependencies: + +```bash +# yarn +yarn install + +# npm +npm install + +# pnpm +pnpm install --shamefully-hoist +``` + +## Development Server + +Start the development server on http://localhost:3000 + +```bash +npm run dev +``` + +## Production + +Build the application for production: + +```bash +npm run build +``` + +Locally preview production build: + +```bash +npm run preview +``` + +Checkout the [deployment documentation](https://v3.nuxtjs.org/guide/deploy/presets) for more information. +# corradAF + +This is the base project for corradAF. diff --git a/app.config.js b/app.config.js new file mode 100644 index 0000000..6a71328 --- /dev/null +++ b/app.config.js @@ -0,0 +1,9 @@ +// app.config.ts +export default defineAppConfig({ + nuxtIcon: { + size: "24px", // default size applied + aliases: { + nuxt: "logos:nuxt-icon", + }, + }, +}); diff --git a/app.vue b/app.vue new file mode 100644 index 0000000..f27c589 --- /dev/null +++ b/app.vue @@ -0,0 +1,50 @@ + + + diff --git a/assets/css/menu-levels.css b/assets/css/menu-levels.css new file mode 100644 index 0000000..6b324be --- /dev/null +++ b/assets/css/menu-levels.css @@ -0,0 +1,119 @@ +/* Multi-level menu styling */ +.multi-level-menu { + border-left: 2px solid rgba(var(--color-primary), 0.3); +} + +/* Common styles for all menu levels */ +.navigation-item-wrapper a { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + display: flex; + align-items: center; +} + +/* Long menu text handling */ +.navigation-item-wrapper span { + text-overflow: ellipsis; + overflow: hidden; +} + +/* Show full text on hover */ +.navigation-item-wrapper a:hover span { + white-space: normal; + overflow: visible; + position: relative; + z-index: 10; +} + +/* Enhanced tooltip effect for very long menu items */ +.deepest-menu-item a:hover span { + background-color: rgba(var(--sidebar-menu), 0.95); + border-radius: 4px; + padding: 4px 8px; + box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2); + max-width: 300px; +} + +/* Level-specific styles */ +.second-level-menu { + font-weight: 500; + padding-left: 0.25rem; +} + +.second-level-menu .mx-3, +.second-level-menu .mx-4 { + color: rgba(255, 255, 255, 0.95); + max-width: 200px; +} + +.third-level-menu { + font-style: italic; + padding-left: 0.5rem; +} + +.third-level-menu .mx-3, +.third-level-menu .mx-4 { + color: rgba(255, 255, 255, 0.9); + font-size: 0.95rem; + max-width: 180px; +} + +.deepest-menu-item { + padding-left: 0.75rem; + border-left: 2px solid rgba(var(--color-primary), 0.6); +} + +.deepest-menu-item .mx-3, +.deepest-menu-item .mx-4 { + color: rgba(255, 255, 255, 0.85); + font-size: 0.9rem; + max-width: 160px; +} + +/* Add visual indicators for each level */ +.second-level-menu a::before, +.third-level-menu a::before, +.deepest-menu-item a::before { + content: ''; + display: inline-block; + width: 6px; + height: 6px; + margin-right: 8px; + border-radius: 50%; + flex-shrink: 0; +} + +.second-level-menu a::before { + background-color: rgba(var(--color-primary), 0.8); +} + +.third-level-menu a::before { + background-color: rgba(var(--color-accent), 0.8); + width: 5px; + height: 5px; +} + +.deepest-menu-item a::before { + background-color: rgba(var(--color-secondary), 0.8); + width: 4px; + height: 4px; +} + +/* Resonsive adjustments for different screen sizes */ +@media (max-width: 1200px) { + .second-level-menu .mx-3, + .second-level-menu .mx-4, + .third-level-menu .mx-3, + .third-level-menu .mx-4, + .deepest-menu-item .mx-3, + .deepest-menu-item .mx-4 { + max-width: 140px; + } +} + +@media (max-width: 992px) { + .navigation-item-wrapper span { + max-width: 120px; + } +} \ No newline at end of file diff --git a/assets/js/formkit-custom.js b/assets/js/formkit-custom.js new file mode 100644 index 0000000..ea02554 --- /dev/null +++ b/assets/js/formkit-custom.js @@ -0,0 +1,20 @@ +import { createInput } from "@formkit/vue"; +import OneTimePassword from "~/components/formkit/OneTimePassword.vue"; +import MaskText from "~/components/formkit/TextMask.vue"; +import FileDropzone from "~/components/formkit/FileDropzone.vue"; +import Toggle from "~/components/formkit/Toggle.vue"; + +export default { + otp: createInput(OneTimePassword, { + props: ["digits"], + }), + mask: createInput(MaskText, { + props: ["mask"], + }), + dropzone: createInput(FileDropzone, { + props: ["accept", "multiple", "maxSize", "minSize", "maxFiles", "disabled"], + }), + toggle: createInput(Toggle, { + props: ["onLabel", "offLabel"], + }), +}; diff --git a/assets/js/formkit-theme.js b/assets/js/formkit-theme.js new file mode 100644 index 0000000..dd57e22 --- /dev/null +++ b/assets/js/formkit-theme.js @@ -0,0 +1,94 @@ +// Create some re-useable definitions because +// many input types are identical in how +// we want to style them. +const textClassification = { + label: "formkit-outer-text", + inner: "formkit-inner-text", + input: "formkit-input-text", + prefix: "formkit-prefix-text", + message: "formkit-message-text", +}; +const boxClassification = { + inner: "formkit-inner-box", + fieldset: "formkit-fieldset-box", + legend: "formkit-legend-box", + wrapper: "formkit-wrapper-box", + help: "formkit-help-box", + input: "formkit-input-box", + label: "formkit-label-box", + message: "formkit-message-box", +}; +const buttonClassification = { + wrapper: "formkit-wrapper-button", + input: "formkit-input-button", +}; +const OtpClassification = { + label: "formkit-label-otp", + inner: "formkit-inner-otp", + digit: "formkit-digit-otp", + message: "formkit-message-otp", +}; + +const colorClassification = { + label: "formkit-label-color", + input: "formkit-input-color", +}; + +const fileClassification = { + label: "formkit-label-file", + inner: "formkit-inner-file", + input: "formkit-input-file", +}; + +const rangeClassification = { + input: "formkit-input-range", +}; + +// export our definitions using our above +// templates and declare one-offs and +// overrides as needed. +export default { + // the global key will apply to all inputs + global: { + label: "formkit-label-global", + outer: "formkit-outer-global", + help: "formkit-help-global", + messages: "formkit-messages-global", + message: "formkit-message-global", + wrapper: "formkit-wrapper-global", + }, + button: buttonClassification, + color: colorClassification, + date: textClassification, + "datetime-local": textClassification, + checkbox: boxClassification, + email: textClassification, + file: fileClassification, + month: textClassification, + number: textClassification, + password: textClassification, + radio: { + ...boxClassification, + input: "formkit-input-radio", + }, + range: rangeClassification, + search: textClassification, + select: { ...textClassification, option: "p-2" }, + submit: buttonClassification, + tel: textClassification, + text: textClassification, + textarea: { + ...textClassification, + input: "formkit-input-textarea", + }, + time: textClassification, + url: textClassification, + week: textClassification, + otp: OtpClassification, + mask: textClassification, + dropzone: { + ...textClassification, + inner: "formkit-inner-dropzone", + dropzone: "formkit-dropzone", + }, +}; diff --git a/assets/json/data.json b/assets/json/data.json new file mode 100644 index 0000000..a6b2942 --- /dev/null +++ b/assets/json/data.json @@ -0,0 +1,92 @@ +[ + { + "id": "#001", + "firstName": "John", + "lastName": "Doe", + "email": "johndoe@example.com", + "gender": "Male", + "status": "Active", + "age": 34 + }, + { + "id": "#002", + "firstName": "Jane", + "lastName": "Smith", + "email": "janesmith@example.com", + "gender": "Female", + "status": "Inactive", + "age": 28 + }, + { + "id": "#003", + "firstName": "Robert", + "lastName": "Brown", + "email": "robertbrown@example.com", + "gender": "Male", + "status": "Banned", + "age": 45 + }, + { + "id": "#004", + "firstName": "Emily", + "lastName": "White", + "email": "emilywhite@example.com", + "gender": "Female", + "status": "Active", + "age": 37 + }, + { + "id": "#005", + "firstName": "Michael", + "lastName": "Johnson", + "email": "michaeljohnson@example.com", + "gender": "Male", + "status": "Inactive", + "age": 50 + }, + { + "id": "#006", + "firstName": "Linda", + "lastName": "Williams", + "email": "lindawilliams@example.com", + "gender": "Female", + "status": "Active", + "age": 32 + }, + { + "id": "#007", + "firstName": "James", + "lastName": "Taylor", + "email": "jamestaylor@example.com", + "gender": "Male", + "status": "Banned", + "age": 40 + }, + { + "id": "#008", + "firstName": "Patricia", + "lastName": "Brown", + "email": "patriciabrown@example.com", + "gender": "Female", + "status": "Inactive", + "age": 29 + }, + { + "id": "#009", + "firstName": "David", + "lastName": "Wilson", + "email": "davidwilson@example.com", + "gender": "Male", + "status": "Active", + "age": 38 + }, + { + "id": "#010", + "firstName": "Elizabeth", + "lastName": "Garcia", + "email": "elizabethgarcia@example.com", + "gender": "Female", + "status": "Banned", + "age": 42 + } +] diff --git a/assets/json/iconamoon.json b/assets/json/iconamoon.json new file mode 100644 index 0000000..2fe9c49 --- /dev/null +++ b/assets/json/iconamoon.json @@ -0,0 +1,7126 @@ +[ + { + "name": "iconamoon:3d", + "svg": "" + }, + { + "name": "iconamoon:3d-bold", + "svg": "" + }, + { + "name": "iconamoon:3d-duotone", + "svg": "" + }, + { + "name": "iconamoon:3d-fill", + "svg": "" + }, + { + "name": "iconamoon:3d-light", + "svg": "" + }, + { + "name": "iconamoon:3d-thin", + "svg": "" + }, + { + "name": "iconamoon:apps", + "svg": "" + }, + { + "name": "iconamoon:apps-bold", + "svg": "" + }, + { + "name": "iconamoon:apps-fill", + "svg": "" + }, + { + "name": "iconamoon:apps-light", + "svg": "" + }, + { + "name": "iconamoon:apps-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-1", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-1-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-1-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-1-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-1-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-2", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-2-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-2-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-2-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-2-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-3-square", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-3-square-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-3-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-3-square-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-3-square-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-3-square-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-4-square", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-4-square-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-4-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-4-square-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-4-square-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-4-square-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-5-circle", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-5-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-5-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-5-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-5-circle-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-5-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-6-circle", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-6-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-6-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-6-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-6-circle-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-left-6-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-1", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-1-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-1-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-1-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-1-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-3-square", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-3-square-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-3-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-3-square-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-3-square-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-3-square-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-4-square", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-4-square-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-4-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-4-square-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-4-square-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-4-square-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-5-circle", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-5-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-5-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-5-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-5-circle-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-5-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-6-circle", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-6-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-6-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-6-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-6-circle-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-right-6-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-up-4-square", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-up-4-square-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-up-4-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-up-4-square-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-up-4-square-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-bottom-up-4-square-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-1", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-1-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-1-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-1-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-1-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-1-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-2", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-2-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-2-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-2-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-2-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-2-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-3-square", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-3-square-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-3-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-3-square-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-3-square-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-3-square-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-4-square", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-4-square-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-4-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-4-square-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-4-square-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-4-square-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-5-circle", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-5-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-5-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-5-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-5-circle-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-5-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-6-circle", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-6-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-6-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-6-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-6-circle-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-down-6-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-1", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-1-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-1-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-1-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-1-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-1-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-2", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-2-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-2-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-2-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-2-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-2-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-3-square", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-3-square-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-3-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-3-square-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-3-square-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-3-square-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-4-square", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-4-square-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-4-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-4-square-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-4-square-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-4-square-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-5-circle", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-5-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-5-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-5-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-5-circle-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-5-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-6-circle", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-6-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-6-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-6-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-6-circle-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-left-6-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-1", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-1-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-1-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-1-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-1-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-1-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-2", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-2-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-2-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-2-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-2-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-2-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-3-square", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-3-square-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-3-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-3-square-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-3-square-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-3-square-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-4-square", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-4-square-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-4-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-4-square-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-4-square-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-4-square-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-5-circle", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-5-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-5-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-5-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-5-circle-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-5-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-6-circle", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-6-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-6-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-6-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-6-circle-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-right-6-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-1", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-1-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-1-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-1-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-1-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-2", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-2-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-2-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-2-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-2-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-3-square", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-3-square-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-3-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-3-square-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-3-square-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-3-square-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-4-square", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-4-square-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-4-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-4-square-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-4-square-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-4-square-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-5-circle", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-5-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-5-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-5-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-5-circle-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-5-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-6-circle", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-6-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-6-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-6-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-6-circle-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-left-6-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-right-1", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-right-1-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-right-1-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-right-1-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-right-1-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-right-2", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-right-2-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-right-2-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-right-2-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-right-2-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-right-3-square", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-right-3-square-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-right-3-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-right-3-square-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-right-3-square-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-right-3-square-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-right-5-circle", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-right-5-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-right-5-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-right-5-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-right-5-circle-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-right-5-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-right-6-circle", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-right-6-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-right-6-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-right-6-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-right-6-circle-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-top-right-6-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-1", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-1-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-1-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-1-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-1-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-1-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-2", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-2-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-2-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-2-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-2-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-2-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-3-square", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-3-square-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-3-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-3-square-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-3-square-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-3-square-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-4-square", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-4-square-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-4-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-4-square-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-4-square-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-4-square-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-5-circle", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-5-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-5-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-5-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-5-circle-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-5-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-6-circle", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-6-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-6-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-6-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-6-circle-light", + "svg": "" + }, + { + "name": "iconamoon:arrow-up-6-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:attachment", + "svg": "" + }, + { + "name": "iconamoon:attachment-bold", + "svg": "" + }, + { + "name": "iconamoon:attachment-duotone", + "svg": "" + }, + { + "name": "iconamoon:attachment-fill", + "svg": "" + }, + { + "name": "iconamoon:attachment-light", + "svg": "" + }, + { + "name": "iconamoon:attachment-thin", + "svg": "" + }, + { + "name": "iconamoon:attention-circle", + "svg": "" + }, + { + "name": "iconamoon:attention-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:attention-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:attention-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:attention-circle-light", + "svg": "" + }, + { + "name": "iconamoon:attention-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:attention-square", + "svg": "" + }, + { + "name": "iconamoon:attention-square-bold", + "svg": "" + }, + { + "name": "iconamoon:attention-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:attention-square-fill", + "svg": "" + }, + { + "name": "iconamoon:attention-square-light", + "svg": "" + }, + { + "name": "iconamoon:attention-square-thin", + "svg": "" + }, + { + "name": "iconamoon:backspace", + "svg": "" + }, + { + "name": "iconamoon:backspace-bold", + "svg": "" + }, + { + "name": "iconamoon:backspace-duotone", + "svg": "" + }, + { + "name": "iconamoon:backspace-fill", + "svg": "" + }, + { + "name": "iconamoon:backspace-light", + "svg": "" + }, + { + "name": "iconamoon:backspace-thin", + "svg": "" + }, + { + "name": "iconamoon:badge", + "svg": "" + }, + { + "name": "iconamoon:badge-bold", + "svg": "" + }, + { + "name": "iconamoon:badge-duotone", + "svg": "" + }, + { + "name": "iconamoon:badge-fill", + "svg": "" + }, + { + "name": "iconamoon:badge-light", + "svg": "" + }, + { + "name": "iconamoon:badge-thin", + "svg": "" + }, + { + "name": "iconamoon:bluetooth", + "svg": "" + }, + { + "name": "iconamoon:bluetooth-bold", + "svg": "" + }, + { + "name": "iconamoon:bluetooth-duotone", + "svg": "" + }, + { + "name": "iconamoon:bluetooth-fill", + "svg": "" + }, + { + "name": "iconamoon:bluetooth-light", + "svg": "" + }, + { + "name": "iconamoon:bluetooth-thin", + "svg": "" + }, + { + "name": "iconamoon:bookmark", + "svg": "" + }, + { + "name": "iconamoon:bookmark-bold", + "svg": "" + }, + { + "name": "iconamoon:bookmark-duotone", + "svg": "" + }, + { + "name": "iconamoon:bookmark-fill", + "svg": "" + }, + { + "name": "iconamoon:bookmark-light", + "svg": "" + }, + { + "name": "iconamoon:bookmark-off", + "svg": "" + }, + { + "name": "iconamoon:bookmark-off-bold", + "svg": "" + }, + { + "name": "iconamoon:bookmark-off-duotone", + "svg": "" + }, + { + "name": "iconamoon:bookmark-off-fill", + "svg": "" + }, + { + "name": "iconamoon:bookmark-off-light", + "svg": "" + }, + { + "name": "iconamoon:bookmark-off-thin", + "svg": "" + }, + { + "name": "iconamoon:bookmark-thin", + "svg": "" + }, + { + "name": "iconamoon:box", + "svg": "" + }, + { + "name": "iconamoon:box-bold", + "svg": "" + }, + { + "name": "iconamoon:box-duotone", + "svg": "" + }, + { + "name": "iconamoon:box-fill", + "svg": "" + }, + { + "name": "iconamoon:box-light", + "svg": "" + }, + { + "name": "iconamoon:box-thin", + "svg": "" + }, + { + "name": "iconamoon:briefcase", + "svg": "" + }, + { + "name": "iconamoon:briefcase-bold", + "svg": "" + }, + { + "name": "iconamoon:briefcase-duotone", + "svg": "" + }, + { + "name": "iconamoon:briefcase-fill", + "svg": "" + }, + { + "name": "iconamoon:briefcase-light", + "svg": "" + }, + { + "name": "iconamoon:briefcase-thin", + "svg": "" + }, + { + "name": "iconamoon:calculator", + "svg": "" + }, + { + "name": "iconamoon:calculator-bold", + "svg": "" + }, + { + "name": "iconamoon:calculator-duotone", + "svg": "" + }, + { + "name": "iconamoon:calculator-fill", + "svg": "" + }, + { + "name": "iconamoon:calculator-light", + "svg": "" + }, + { + "name": "iconamoon:calculator-thin", + "svg": "" + }, + { + "name": "iconamoon:calendar-1", + "svg": "" + }, + { + "name": "iconamoon:calendar-1-bold", + "svg": "" + }, + { + "name": "iconamoon:calendar-1-duotone", + "svg": "" + }, + { + "name": "iconamoon:calendar-1-fill", + "svg": "" + }, + { + "name": "iconamoon:calendar-1-light", + "svg": "" + }, + { + "name": "iconamoon:calendar-1-thin", + "svg": "" + }, + { + "name": "iconamoon:calendar-2", + "svg": "" + }, + { + "name": "iconamoon:calendar-2-bold", + "svg": "" + }, + { + "name": "iconamoon:calendar-2-duotone", + "svg": "" + }, + { + "name": "iconamoon:calendar-2-fill", + "svg": "" + }, + { + "name": "iconamoon:calendar-2-light", + "svg": "" + }, + { + "name": "iconamoon:calendar-2-thin", + "svg": "" + }, + { + "name": "iconamoon:calendar-add", + "svg": "" + }, + { + "name": "iconamoon:calendar-add-bold", + "svg": "" + }, + { + "name": "iconamoon:calendar-add-duotone", + "svg": "" + }, + { + "name": "iconamoon:calendar-add-fill", + "svg": "" + }, + { + "name": "iconamoon:calendar-add-light", + "svg": "" + }, + { + "name": "iconamoon:calendar-add-thin", + "svg": "" + }, + { + "name": "iconamoon:calendar-remove", + "svg": "" + }, + { + "name": "iconamoon:calendar-remove-bold", + "svg": "" + }, + { + "name": "iconamoon:calendar-remove-duotone", + "svg": "" + }, + { + "name": "iconamoon:calendar-remove-fill", + "svg": "" + }, + { + "name": "iconamoon:calendar-remove-light", + "svg": "" + }, + { + "name": "iconamoon:calendar-remove-thin", + "svg": "" + }, + { + "name": "iconamoon:camera-image", + "svg": "" + }, + { + "name": "iconamoon:camera-image-bold", + "svg": "" + }, + { + "name": "iconamoon:camera-image-duotone", + "svg": "" + }, + { + "name": "iconamoon:camera-image-fill", + "svg": "" + }, + { + "name": "iconamoon:camera-image-light", + "svg": "" + }, + { + "name": "iconamoon:camera-image-thin", + "svg": "" + }, + { + "name": "iconamoon:camera-video", + "svg": "" + }, + { + "name": "iconamoon:camera-video-bold", + "svg": "" + }, + { + "name": "iconamoon:camera-video-duotone", + "svg": "" + }, + { + "name": "iconamoon:camera-video-fill", + "svg": "" + }, + { + "name": "iconamoon:camera-video-light", + "svg": "" + }, + { + "name": "iconamoon:camera-video-thin", + "svg": "" + }, + { + "name": "iconamoon:category", + "svg": "" + }, + { + "name": "iconamoon:category-bold", + "svg": "" + }, + { + "name": "iconamoon:category-duotone", + "svg": "" + }, + { + "name": "iconamoon:category-fill", + "svg": "" + }, + { + "name": "iconamoon:category-light", + "svg": "" + }, + { + "name": "iconamoon:category-thin", + "svg": "" + }, + { + "name": "iconamoon:certificate-badge", + "svg": "" + }, + { + "name": "iconamoon:certificate-badge-bold", + "svg": "" + }, + { + "name": "iconamoon:certificate-badge-duotone", + "svg": "" + }, + { + "name": "iconamoon:certificate-badge-fill", + "svg": "" + }, + { + "name": "iconamoon:certificate-badge-light", + "svg": "" + }, + { + "name": "iconamoon:certificate-badge-thin", + "svg": "" + }, + { + "name": "iconamoon:check", + "svg": "" + }, + { + "name": "iconamoon:check-bold", + "svg": "" + }, + { + "name": "iconamoon:check-circle-1", + "svg": "" + }, + { + "name": "iconamoon:check-circle-1-bold", + "svg": "" + }, + { + "name": "iconamoon:check-circle-1-duotone", + "svg": "" + }, + { + "name": "iconamoon:check-circle-1-fill", + "svg": "" + }, + { + "name": "iconamoon:check-circle-1-light", + "svg": "" + }, + { + "name": "iconamoon:check-circle-1-thin", + "svg": "" + }, + { + "name": "iconamoon:check-circle-2", + "svg": "" + }, + { + "name": "iconamoon:check-circle-2-bold", + "svg": "" + }, + { + "name": "iconamoon:check-circle-2-duotone", + "svg": "" + }, + { + "name": "iconamoon:check-circle-2-fill", + "svg": "" + }, + { + "name": "iconamoon:check-circle-2-light", + "svg": "" + }, + { + "name": "iconamoon:check-circle-2-thin", + "svg": "" + }, + { + "name": "iconamoon:check-duotone", + "svg": "" + }, + { + "name": "iconamoon:check-fill", + "svg": "" + }, + { + "name": "iconamoon:check-light", + "svg": "" + }, + { + "name": "iconamoon:check-square", + "svg": "" + }, + { + "name": "iconamoon:check-square-bold", + "svg": "" + }, + { + "name": "iconamoon:check-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:check-square-fill", + "svg": "" + }, + { + "name": "iconamoon:check-square-light", + "svg": "" + }, + { + "name": "iconamoon:check-square-thin", + "svg": "" + }, + { + "name": "iconamoon:check-thin", + "svg": "" + }, + { + "name": "iconamoon:cheque", + "svg": "" + }, + { + "name": "iconamoon:cheque-bold", + "svg": "" + }, + { + "name": "iconamoon:cheque-duotone", + "svg": "" + }, + { + "name": "iconamoon:cheque-fill", + "svg": "" + }, + { + "name": "iconamoon:cheque-light", + "svg": "" + }, + { + "name": "iconamoon:cheque-thin", + "svg": "" + }, + { + "name": "iconamoon:clock", + "svg": "" + }, + { + "name": "iconamoon:clock-bold", + "svg": "" + }, + { + "name": "iconamoon:clock-duotone", + "svg": "" + }, + { + "name": "iconamoon:clock-fill", + "svg": "" + }, + { + "name": "iconamoon:clock-light", + "svg": "" + }, + { + "name": "iconamoon:clock-thin", + "svg": "" + }, + { + "name": "iconamoon:close", + "svg": "" + }, + { + "name": "iconamoon:close-bold", + "svg": "" + }, + { + "name": "iconamoon:close-circle-1", + "svg": "" + }, + { + "name": "iconamoon:close-circle-1-bold", + "svg": "" + }, + { + "name": "iconamoon:close-circle-1-duotone", + "svg": "" + }, + { + "name": "iconamoon:close-circle-1-fill", + "svg": "" + }, + { + "name": "iconamoon:close-circle-1-light", + "svg": "" + }, + { + "name": "iconamoon:close-circle-1-thin", + "svg": "" + }, + { + "name": "iconamoon:close-circle-2", + "svg": "" + }, + { + "name": "iconamoon:close-circle-2-bold", + "svg": "" + }, + { + "name": "iconamoon:close-circle-2-duotone", + "svg": "" + }, + { + "name": "iconamoon:close-circle-2-fill", + "svg": "" + }, + { + "name": "iconamoon:close-circle-2-light", + "svg": "" + }, + { + "name": "iconamoon:close-circle-2-thin", + "svg": "" + }, + { + "name": "iconamoon:close-duotone", + "svg": "" + }, + { + "name": "iconamoon:close-fill", + "svg": "" + }, + { + "name": "iconamoon:close-light", + "svg": "" + }, + { + "name": "iconamoon:close-square", + "svg": "" + }, + { + "name": "iconamoon:close-square-bold", + "svg": "" + }, + { + "name": "iconamoon:close-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:close-square-fill", + "svg": "" + }, + { + "name": "iconamoon:close-square-light", + "svg": "" + }, + { + "name": "iconamoon:close-square-thin", + "svg": "" + }, + { + "name": "iconamoon:close-thin", + "svg": "" + }, + { + "name": "iconamoon:cloud", + "svg": "" + }, + { + "name": "iconamoon:cloud-add", + "svg": "" + }, + { + "name": "iconamoon:cloud-add-bold", + "svg": "" + }, + { + "name": "iconamoon:cloud-add-duotone", + "svg": "" + }, + { + "name": "iconamoon:cloud-add-fill", + "svg": "" + }, + { + "name": "iconamoon:cloud-add-light", + "svg": "" + }, + { + "name": "iconamoon:cloud-add-thin", + "svg": "" + }, + { + "name": "iconamoon:cloud-bold", + "svg": "" + }, + { + "name": "iconamoon:cloud-clock", + "svg": "" + }, + { + "name": "iconamoon:cloud-clock-bold", + "svg": "" + }, + { + "name": "iconamoon:cloud-clock-duotone", + "svg": "" + }, + { + "name": "iconamoon:cloud-clock-fill", + "svg": "" + }, + { + "name": "iconamoon:cloud-clock-light", + "svg": "" + }, + { + "name": "iconamoon:cloud-clock-thin", + "svg": "" + }, + { + "name": "iconamoon:cloud-download", + "svg": "" + }, + { + "name": "iconamoon:cloud-download-bold", + "svg": "" + }, + { + "name": "iconamoon:cloud-download-duotone", + "svg": "" + }, + { + "name": "iconamoon:cloud-download-fill", + "svg": "" + }, + { + "name": "iconamoon:cloud-download-light", + "svg": "" + }, + { + "name": "iconamoon:cloud-download-thin", + "svg": "" + }, + { + "name": "iconamoon:cloud-duotone", + "svg": "" + }, + { + "name": "iconamoon:cloud-error", + "svg": "" + }, + { + "name": "iconamoon:cloud-error-bold", + "svg": "" + }, + { + "name": "iconamoon:cloud-error-duotone", + "svg": "" + }, + { + "name": "iconamoon:cloud-error-fill", + "svg": "" + }, + { + "name": "iconamoon:cloud-error-light", + "svg": "" + }, + { + "name": "iconamoon:cloud-error-thin", + "svg": "" + }, + { + "name": "iconamoon:cloud-fill", + "svg": "" + }, + { + "name": "iconamoon:cloud-light", + "svg": "" + }, + { + "name": "iconamoon:cloud-no", + "svg": "" + }, + { + "name": "iconamoon:cloud-no-bold", + "svg": "" + }, + { + "name": "iconamoon:cloud-no-duotone", + "svg": "" + }, + { + "name": "iconamoon:cloud-no-fill", + "svg": "" + }, + { + "name": "iconamoon:cloud-no-light", + "svg": "" + }, + { + "name": "iconamoon:cloud-no-thin", + "svg": "" + }, + { + "name": "iconamoon:cloud-off", + "svg": "" + }, + { + "name": "iconamoon:cloud-off-bold", + "svg": "" + }, + { + "name": "iconamoon:cloud-off-duotone", + "svg": "" + }, + { + "name": "iconamoon:cloud-off-fill", + "svg": "" + }, + { + "name": "iconamoon:cloud-off-light", + "svg": "" + }, + { + "name": "iconamoon:cloud-off-thin", + "svg": "" + }, + { + "name": "iconamoon:cloud-remove", + "svg": "" + }, + { + "name": "iconamoon:cloud-remove-bold", + "svg": "" + }, + { + "name": "iconamoon:cloud-remove-duotone", + "svg": "" + }, + { + "name": "iconamoon:cloud-remove-fill", + "svg": "" + }, + { + "name": "iconamoon:cloud-remove-light", + "svg": "" + }, + { + "name": "iconamoon:cloud-remove-thin", + "svg": "" + }, + { + "name": "iconamoon:cloud-thin", + "svg": "" + }, + { + "name": "iconamoon:cloud-upload", + "svg": "" + }, + { + "name": "iconamoon:cloud-upload-bold", + "svg": "" + }, + { + "name": "iconamoon:cloud-upload-duotone", + "svg": "" + }, + { + "name": "iconamoon:cloud-upload-fill", + "svg": "" + }, + { + "name": "iconamoon:cloud-upload-light", + "svg": "" + }, + { + "name": "iconamoon:cloud-upload-thin", + "svg": "" + }, + { + "name": "iconamoon:cloud-yes", + "svg": "" + }, + { + "name": "iconamoon:cloud-yes-bold", + "svg": "" + }, + { + "name": "iconamoon:cloud-yes-duotone", + "svg": "" + }, + { + "name": "iconamoon:cloud-yes-fill", + "svg": "" + }, + { + "name": "iconamoon:cloud-yes-light", + "svg": "" + }, + { + "name": "iconamoon:cloud-yes-thin", + "svg": "" + }, + { + "name": "iconamoon:comment", + "svg": "" + }, + { + "name": "iconamoon:comment-add", + "svg": "" + }, + { + "name": "iconamoon:comment-add-bold", + "svg": "" + }, + { + "name": "iconamoon:comment-add-duotone", + "svg": "" + }, + { + "name": "iconamoon:comment-add-fill", + "svg": "" + }, + { + "name": "iconamoon:comment-add-light", + "svg": "" + }, + { + "name": "iconamoon:comment-add-thin", + "svg": "" + }, + { + "name": "iconamoon:comment-bold", + "svg": "" + }, + { + "name": "iconamoon:comment-check", + "svg": "" + }, + { + "name": "iconamoon:comment-check-bold", + "svg": "" + }, + { + "name": "iconamoon:comment-check-duotone", + "svg": "" + }, + { + "name": "iconamoon:comment-check-fill", + "svg": "" + }, + { + "name": "iconamoon:comment-check-light", + "svg": "" + }, + { + "name": "iconamoon:comment-check-thin", + "svg": "" + }, + { + "name": "iconamoon:comment-close", + "svg": "" + }, + { + "name": "iconamoon:comment-close-bold", + "svg": "" + }, + { + "name": "iconamoon:comment-close-duotone", + "svg": "" + }, + { + "name": "iconamoon:comment-close-fill", + "svg": "" + }, + { + "name": "iconamoon:comment-close-light", + "svg": "" + }, + { + "name": "iconamoon:comment-close-thin", + "svg": "" + }, + { + "name": "iconamoon:comment-dots", + "svg": "" + }, + { + "name": "iconamoon:comment-dots-bold", + "svg": "" + }, + { + "name": "iconamoon:comment-dots-duotone", + "svg": "" + }, + { + "name": "iconamoon:comment-dots-fill", + "svg": "" + }, + { + "name": "iconamoon:comment-dots-light", + "svg": "" + }, + { + "name": "iconamoon:comment-dots-thin", + "svg": "" + }, + { + "name": "iconamoon:comment-duotone", + "svg": "" + }, + { + "name": "iconamoon:comment-fill", + "svg": "" + }, + { + "name": "iconamoon:comment-light", + "svg": "" + }, + { + "name": "iconamoon:comment-remove", + "svg": "" + }, + { + "name": "iconamoon:comment-remove-bold", + "svg": "" + }, + { + "name": "iconamoon:comment-remove-duotone", + "svg": "" + }, + { + "name": "iconamoon:comment-remove-fill", + "svg": "" + }, + { + "name": "iconamoon:comment-remove-light", + "svg": "" + }, + { + "name": "iconamoon:comment-remove-thin", + "svg": "" + }, + { + "name": "iconamoon:comment-thin", + "svg": "" + }, + { + "name": "iconamoon:compare", + "svg": "" + }, + { + "name": "iconamoon:compare-bold", + "svg": "" + }, + { + "name": "iconamoon:compare-duotone", + "svg": "" + }, + { + "name": "iconamoon:compare-fill", + "svg": "" + }, + { + "name": "iconamoon:compare-light", + "svg": "" + }, + { + "name": "iconamoon:compare-thin", + "svg": "" + }, + { + "name": "iconamoon:component", + "svg": "" + }, + { + "name": "iconamoon:component-bold", + "svg": "" + }, + { + "name": "iconamoon:component-duotone", + "svg": "" + }, + { + "name": "iconamoon:component-fill", + "svg": "" + }, + { + "name": "iconamoon:component-light", + "svg": "" + }, + { + "name": "iconamoon:component-thin", + "svg": "" + }, + { + "name": "iconamoon:confused-face", + "svg": "" + }, + { + "name": "iconamoon:confused-face-bold", + "svg": "" + }, + { + "name": "iconamoon:confused-face-duotone", + "svg": "" + }, + { + "name": "iconamoon:confused-face-fill", + "svg": "" + }, + { + "name": "iconamoon:confused-face-light", + "svg": "" + }, + { + "name": "iconamoon:confused-face-thin", + "svg": "" + }, + { + "name": "iconamoon:copy", + "svg": "" + }, + { + "name": "iconamoon:copy-bold", + "svg": "" + }, + { + "name": "iconamoon:copy-duotone", + "svg": "" + }, + { + "name": "iconamoon:copy-fill", + "svg": "" + }, + { + "name": "iconamoon:copy-light", + "svg": "" + }, + { + "name": "iconamoon:copy-thin", + "svg": "" + }, + { + "name": "iconamoon:credit-card", + "svg": "" + }, + { + "name": "iconamoon:credit-card-bold", + "svg": "" + }, + { + "name": "iconamoon:credit-card-duotone", + "svg": "" + }, + { + "name": "iconamoon:credit-card-fill", + "svg": "" + }, + { + "name": "iconamoon:credit-card-light", + "svg": "" + }, + { + "name": "iconamoon:credit-card-thin", + "svg": "" + }, + { + "name": "iconamoon:cursor", + "svg": "" + }, + { + "name": "iconamoon:cursor-bold", + "svg": "" + }, + { + "name": "iconamoon:cursor-duotone", + "svg": "" + }, + { + "name": "iconamoon:cursor-fill", + "svg": "" + }, + { + "name": "iconamoon:cursor-light", + "svg": "" + }, + { + "name": "iconamoon:cursor-thin", + "svg": "" + }, + { + "name": "iconamoon:delivery", + "svg": "" + }, + { + "name": "iconamoon:delivery-bold", + "svg": "" + }, + { + "name": "iconamoon:delivery-duotone", + "svg": "" + }, + { + "name": "iconamoon:delivery-fast", + "svg": "" + }, + { + "name": "iconamoon:delivery-fast-bold", + "svg": "" + }, + { + "name": "iconamoon:delivery-fast-duotone", + "svg": "" + }, + { + "name": "iconamoon:delivery-fast-fill", + "svg": "" + }, + { + "name": "iconamoon:delivery-fast-light", + "svg": "" + }, + { + "name": "iconamoon:delivery-fast-thin", + "svg": "" + }, + { + "name": "iconamoon:delivery-fill", + "svg": "" + }, + { + "name": "iconamoon:delivery-free", + "svg": "" + }, + { + "name": "iconamoon:delivery-free-bold", + "svg": "" + }, + { + "name": "iconamoon:delivery-free-duotone", + "svg": "" + }, + { + "name": "iconamoon:delivery-free-fill", + "svg": "" + }, + { + "name": "iconamoon:delivery-free-light", + "svg": "" + }, + { + "name": "iconamoon:delivery-free-thin", + "svg": "" + }, + { + "name": "iconamoon:delivery-light", + "svg": "" + }, + { + "name": "iconamoon:delivery-thin", + "svg": "" + }, + { + "name": "iconamoon:disappointed-face", + "svg": "" + }, + { + "name": "iconamoon:disappointed-face-bold", + "svg": "" + }, + { + "name": "iconamoon:disappointed-face-duotone", + "svg": "" + }, + { + "name": "iconamoon:disappointed-face-fill", + "svg": "" + }, + { + "name": "iconamoon:disappointed-face-light", + "svg": "" + }, + { + "name": "iconamoon:disappointed-face-thin", + "svg": "" + }, + { + "name": "iconamoon:discount", + "svg": "" + }, + { + "name": "iconamoon:discount-bold", + "svg": "" + }, + { + "name": "iconamoon:discount-duotone", + "svg": "" + }, + { + "name": "iconamoon:discount-fill", + "svg": "" + }, + { + "name": "iconamoon:discount-light", + "svg": "" + }, + { + "name": "iconamoon:discount-thin", + "svg": "" + }, + { + "name": "iconamoon:discover", + "svg": "" + }, + { + "name": "iconamoon:discover-bold", + "svg": "" + }, + { + "name": "iconamoon:discover-duotone", + "svg": "" + }, + { + "name": "iconamoon:discover-fill", + "svg": "" + }, + { + "name": "iconamoon:discover-light", + "svg": "" + }, + { + "name": "iconamoon:discover-thin", + "svg": "" + }, + { + "name": "iconamoon:dislike", + "svg": "" + }, + { + "name": "iconamoon:dislike-bold", + "svg": "" + }, + { + "name": "iconamoon:dislike-duotone", + "svg": "" + }, + { + "name": "iconamoon:dislike-fill", + "svg": "" + }, + { + "name": "iconamoon:dislike-light", + "svg": "" + }, + { + "name": "iconamoon:dislike-thin", + "svg": "" + }, + { + "name": "iconamoon:do-redo", + "svg": "" + }, + { + "name": "iconamoon:do-redo-bold", + "svg": "" + }, + { + "name": "iconamoon:do-redo-duotone", + "svg": "" + }, + { + "name": "iconamoon:do-redo-fill", + "svg": "" + }, + { + "name": "iconamoon:do-redo-light", + "svg": "" + }, + { + "name": "iconamoon:do-redo-thin", + "svg": "" + }, + { + "name": "iconamoon:do-undo", + "svg": "" + }, + { + "name": "iconamoon:do-undo-bold", + "svg": "" + }, + { + "name": "iconamoon:do-undo-duotone", + "svg": "" + }, + { + "name": "iconamoon:do-undo-fill", + "svg": "" + }, + { + "name": "iconamoon:do-undo-light", + "svg": "" + }, + { + "name": "iconamoon:do-undo-thin", + "svg": "" + }, + { + "name": "iconamoon:download", + "svg": "" + }, + { + "name": "iconamoon:download-bold", + "svg": "" + }, + { + "name": "iconamoon:download-fill", + "svg": "" + }, + { + "name": "iconamoon:download-light", + "svg": "" + }, + { + "name": "iconamoon:download-thin", + "svg": "" + }, + { + "name": "iconamoon:edit", + "svg": "" + }, + { + "name": "iconamoon:edit-bold", + "svg": "" + }, + { + "name": "iconamoon:edit-duotone", + "svg": "" + }, + { + "name": "iconamoon:edit-fill", + "svg": "" + }, + { + "name": "iconamoon:edit-light", + "svg": "" + }, + { + "name": "iconamoon:edit-thin", + "svg": "" + }, + { + "name": "iconamoon:email", + "svg": "" + }, + { + "name": "iconamoon:email-bold", + "svg": "" + }, + { + "name": "iconamoon:email-duotone", + "svg": "" + }, + { + "name": "iconamoon:email-fill", + "svg": "" + }, + { + "name": "iconamoon:email-light", + "svg": "" + }, + { + "name": "iconamoon:email-thin", + "svg": "" + }, + { + "name": "iconamoon:enter", + "svg": "" + }, + { + "name": "iconamoon:enter-bold", + "svg": "" + }, + { + "name": "iconamoon:enter-duotone", + "svg": "" + }, + { + "name": "iconamoon:enter-fill", + "svg": "" + }, + { + "name": "iconamoon:enter-light", + "svg": "" + }, + { + "name": "iconamoon:enter-thin", + "svg": "" + }, + { + "name": "iconamoon:exit", + "svg": "" + }, + { + "name": "iconamoon:exit-bold", + "svg": "" + }, + { + "name": "iconamoon:exit-fill", + "svg": "" + }, + { + "name": "iconamoon:exit-light", + "svg": "" + }, + { + "name": "iconamoon:exit-thin", + "svg": "" + }, + { + "name": "iconamoon:expressionless-face", + "svg": "" + }, + { + "name": "iconamoon:expressionless-face-bold", + "svg": "" + }, + { + "name": "iconamoon:expressionless-face-duotone", + "svg": "" + }, + { + "name": "iconamoon:expressionless-face-fill", + "svg": "" + }, + { + "name": "iconamoon:expressionless-face-light", + "svg": "" + }, + { + "name": "iconamoon:expressionless-face-thin", + "svg": "" + }, + { + "name": "iconamoon:eye", + "svg": "" + }, + { + "name": "iconamoon:eye-bold", + "svg": "" + }, + { + "name": "iconamoon:eye-duotone", + "svg": "" + }, + { + "name": "iconamoon:eye-fill", + "svg": "" + }, + { + "name": "iconamoon:eye-light", + "svg": "" + }, + { + "name": "iconamoon:eye-off", + "svg": "" + }, + { + "name": "iconamoon:eye-off-bold", + "svg": "" + }, + { + "name": "iconamoon:eye-off-duotone", + "svg": "" + }, + { + "name": "iconamoon:eye-off-fill", + "svg": "" + }, + { + "name": "iconamoon:eye-off-light", + "svg": "" + }, + { + "name": "iconamoon:eye-off-thin", + "svg": "" + }, + { + "name": "iconamoon:eye-thin", + "svg": "" + }, + { + "name": "iconamoon:face-with-open-mouth", + "svg": "" + }, + { + "name": "iconamoon:face-with-open-mouth-bold", + "svg": "" + }, + { + "name": "iconamoon:face-with-open-mouth-duotone", + "svg": "" + }, + { + "name": "iconamoon:face-with-open-mouth-fill", + "svg": "" + }, + { + "name": "iconamoon:face-with-open-mouth-light", + "svg": "" + }, + { + "name": "iconamoon:face-with-open-mouth-thin", + "svg": "" + }, + { + "name": "iconamoon:face-without-mouth", + "svg": "" + }, + { + "name": "iconamoon:face-without-mouth-bold", + "svg": "" + }, + { + "name": "iconamoon:face-without-mouth-duotone", + "svg": "" + }, + { + "name": "iconamoon:face-without-mouth-fill", + "svg": "" + }, + { + "name": "iconamoon:face-without-mouth-light", + "svg": "" + }, + { + "name": "iconamoon:face-without-mouth-thin", + "svg": "" + }, + { + "name": "iconamoon:file", + "svg": "" + }, + { + "name": "iconamoon:file-add", + "svg": "" + }, + { + "name": "iconamoon:file-add-bold", + "svg": "" + }, + { + "name": "iconamoon:file-add-duotone", + "svg": "" + }, + { + "name": "iconamoon:file-add-fill", + "svg": "" + }, + { + "name": "iconamoon:file-add-light", + "svg": "" + }, + { + "name": "iconamoon:file-add-thin", + "svg": "" + }, + { + "name": "iconamoon:file-audio", + "svg": "" + }, + { + "name": "iconamoon:file-audio-bold", + "svg": "" + }, + { + "name": "iconamoon:file-audio-duotone", + "svg": "" + }, + { + "name": "iconamoon:file-audio-fill", + "svg": "" + }, + { + "name": "iconamoon:file-audio-light", + "svg": "" + }, + { + "name": "iconamoon:file-audio-thin", + "svg": "" + }, + { + "name": "iconamoon:file-bold", + "svg": "" + }, + { + "name": "iconamoon:file-check", + "svg": "" + }, + { + "name": "iconamoon:file-check-bold", + "svg": "" + }, + { + "name": "iconamoon:file-check-duotone", + "svg": "" + }, + { + "name": "iconamoon:file-check-fill", + "svg": "" + }, + { + "name": "iconamoon:file-check-light", + "svg": "" + }, + { + "name": "iconamoon:file-check-thin", + "svg": "" + }, + { + "name": "iconamoon:file-close", + "svg": "" + }, + { + "name": "iconamoon:file-close-bold", + "svg": "" + }, + { + "name": "iconamoon:file-close-duotone", + "svg": "" + }, + { + "name": "iconamoon:file-close-fill", + "svg": "" + }, + { + "name": "iconamoon:file-close-light", + "svg": "" + }, + { + "name": "iconamoon:file-close-thin", + "svg": "" + }, + { + "name": "iconamoon:file-document", + "svg": "" + }, + { + "name": "iconamoon:file-document-bold", + "svg": "" + }, + { + "name": "iconamoon:file-document-duotone", + "svg": "" + }, + { + "name": "iconamoon:file-document-fill", + "svg": "" + }, + { + "name": "iconamoon:file-document-light", + "svg": "" + }, + { + "name": "iconamoon:file-document-thin", + "svg": "" + }, + { + "name": "iconamoon:file-duotone", + "svg": "" + }, + { + "name": "iconamoon:file-fill", + "svg": "" + }, + { + "name": "iconamoon:file-image", + "svg": "" + }, + { + "name": "iconamoon:file-image-bold", + "svg": "" + }, + { + "name": "iconamoon:file-image-duotone", + "svg": "" + }, + { + "name": "iconamoon:file-image-fill", + "svg": "" + }, + { + "name": "iconamoon:file-image-light", + "svg": "" + }, + { + "name": "iconamoon:file-image-thin", + "svg": "" + }, + { + "name": "iconamoon:file-light", + "svg": "" + }, + { + "name": "iconamoon:file-remove", + "svg": "" + }, + { + "name": "iconamoon:file-remove-bold", + "svg": "" + }, + { + "name": "iconamoon:file-remove-duotone", + "svg": "" + }, + { + "name": "iconamoon:file-remove-fill", + "svg": "" + }, + { + "name": "iconamoon:file-remove-light", + "svg": "" + }, + { + "name": "iconamoon:file-remove-thin", + "svg": "" + }, + { + "name": "iconamoon:file-thin", + "svg": "" + }, + { + "name": "iconamoon:file-video", + "svg": "" + }, + { + "name": "iconamoon:file-video-bold", + "svg": "" + }, + { + "name": "iconamoon:file-video-duotone", + "svg": "" + }, + { + "name": "iconamoon:file-video-fill", + "svg": "" + }, + { + "name": "iconamoon:file-video-light", + "svg": "" + }, + { + "name": "iconamoon:file-video-thin", + "svg": "" + }, + { + "name": "iconamoon:flag", + "svg": "" + }, + { + "name": "iconamoon:flag-bold", + "svg": "" + }, + { + "name": "iconamoon:flag-duotone", + "svg": "" + }, + { + "name": "iconamoon:flag-fill", + "svg": "" + }, + { + "name": "iconamoon:flag-light", + "svg": "" + }, + { + "name": "iconamoon:flag-thin", + "svg": "" + }, + { + "name": "iconamoon:folder", + "svg": "" + }, + { + "name": "iconamoon:folder-add", + "svg": "" + }, + { + "name": "iconamoon:folder-add-bold", + "svg": "" + }, + { + "name": "iconamoon:folder-add-duotone", + "svg": "" + }, + { + "name": "iconamoon:folder-add-fill", + "svg": "" + }, + { + "name": "iconamoon:folder-add-light", + "svg": "" + }, + { + "name": "iconamoon:folder-add-thin", + "svg": "" + }, + { + "name": "iconamoon:folder-bold", + "svg": "" + }, + { + "name": "iconamoon:folder-check", + "svg": "" + }, + { + "name": "iconamoon:folder-check-bold", + "svg": "" + }, + { + "name": "iconamoon:folder-check-duotone", + "svg": "" + }, + { + "name": "iconamoon:folder-check-fill", + "svg": "" + }, + { + "name": "iconamoon:folder-check-light", + "svg": "" + }, + { + "name": "iconamoon:folder-check-thin", + "svg": "" + }, + { + "name": "iconamoon:folder-close", + "svg": "" + }, + { + "name": "iconamoon:folder-close-bold", + "svg": "" + }, + { + "name": "iconamoon:folder-close-duotone", + "svg": "" + }, + { + "name": "iconamoon:folder-close-fill", + "svg": "" + }, + { + "name": "iconamoon:folder-close-light", + "svg": "" + }, + { + "name": "iconamoon:folder-close-thin", + "svg": "" + }, + { + "name": "iconamoon:folder-document", + "svg": "" + }, + { + "name": "iconamoon:folder-document-bold", + "svg": "" + }, + { + "name": "iconamoon:folder-document-duotone", + "svg": "" + }, + { + "name": "iconamoon:folder-document-fill", + "svg": "" + }, + { + "name": "iconamoon:folder-document-light", + "svg": "" + }, + { + "name": "iconamoon:folder-document-thin", + "svg": "" + }, + { + "name": "iconamoon:folder-duotone", + "svg": "" + }, + { + "name": "iconamoon:folder-fill", + "svg": "" + }, + { + "name": "iconamoon:folder-image", + "svg": "" + }, + { + "name": "iconamoon:folder-image-bold", + "svg": "" + }, + { + "name": "iconamoon:folder-image-duotone", + "svg": "" + }, + { + "name": "iconamoon:folder-image-fill", + "svg": "" + }, + { + "name": "iconamoon:folder-image-light", + "svg": "" + }, + { + "name": "iconamoon:folder-image-thin", + "svg": "" + }, + { + "name": "iconamoon:folder-light", + "svg": "" + }, + { + "name": "iconamoon:folder-music", + "svg": "" + }, + { + "name": "iconamoon:folder-music-bold", + "svg": "" + }, + { + "name": "iconamoon:folder-music-duotone", + "svg": "" + }, + { + "name": "iconamoon:folder-music-fill", + "svg": "" + }, + { + "name": "iconamoon:folder-music-light", + "svg": "" + }, + { + "name": "iconamoon:folder-music-thin", + "svg": "" + }, + { + "name": "iconamoon:folder-remove", + "svg": "" + }, + { + "name": "iconamoon:folder-remove-bold", + "svg": "" + }, + { + "name": "iconamoon:folder-remove-duotone", + "svg": "" + }, + { + "name": "iconamoon:folder-remove-fill", + "svg": "" + }, + { + "name": "iconamoon:folder-remove-light", + "svg": "" + }, + { + "name": "iconamoon:folder-remove-thin", + "svg": "" + }, + { + "name": "iconamoon:folder-thin", + "svg": "" + }, + { + "name": "iconamoon:folder-video", + "svg": "" + }, + { + "name": "iconamoon:folder-video-bold", + "svg": "" + }, + { + "name": "iconamoon:folder-video-duotone", + "svg": "" + }, + { + "name": "iconamoon:folder-video-fill", + "svg": "" + }, + { + "name": "iconamoon:folder-video-light", + "svg": "" + }, + { + "name": "iconamoon:folder-video-thin", + "svg": "" + }, + { + "name": "iconamoon:frame", + "svg": "" + }, + { + "name": "iconamoon:frame-bold", + "svg": "" + }, + { + "name": "iconamoon:frame-duotone", + "svg": "" + }, + { + "name": "iconamoon:frame-fill", + "svg": "" + }, + { + "name": "iconamoon:frame-light", + "svg": "" + }, + { + "name": "iconamoon:frame-thin", + "svg": "" + }, + { + "name": "iconamoon:frowning-face", + "svg": "" + }, + { + "name": "iconamoon:frowning-face-bold", + "svg": "" + }, + { + "name": "iconamoon:frowning-face-duotone", + "svg": "" + }, + { + "name": "iconamoon:frowning-face-fill", + "svg": "" + }, + { + "name": "iconamoon:frowning-face-light", + "svg": "" + }, + { + "name": "iconamoon:frowning-face-thin", + "svg": "" + }, + { + "name": "iconamoon:funnel", + "svg": "" + }, + { + "name": "iconamoon:funnel-bold", + "svg": "" + }, + { + "name": "iconamoon:funnel-duotone", + "svg": "" + }, + { + "name": "iconamoon:funnel-fill", + "svg": "" + }, + { + "name": "iconamoon:funnel-light", + "svg": "" + }, + { + "name": "iconamoon:funnel-thin", + "svg": "" + }, + { + "name": "iconamoon:gift", + "svg": "" + }, + { + "name": "iconamoon:gift-bold", + "svg": "" + }, + { + "name": "iconamoon:gift-duotone", + "svg": "" + }, + { + "name": "iconamoon:gift-fill", + "svg": "" + }, + { + "name": "iconamoon:gift-light", + "svg": "" + }, + { + "name": "iconamoon:gift-thin", + "svg": "" + }, + { + "name": "iconamoon:headphone", + "svg": "" + }, + { + "name": "iconamoon:headphone-bold", + "svg": "" + }, + { + "name": "iconamoon:headphone-duotone", + "svg": "" + }, + { + "name": "iconamoon:headphone-fill", + "svg": "" + }, + { + "name": "iconamoon:headphone-light", + "svg": "" + }, + { + "name": "iconamoon:headphone-thin", + "svg": "" + }, + { + "name": "iconamoon:heart", + "svg": "" + }, + { + "name": "iconamoon:heart-bold", + "svg": "" + }, + { + "name": "iconamoon:heart-duotone", + "svg": "" + }, + { + "name": "iconamoon:heart-fill", + "svg": "" + }, + { + "name": "iconamoon:heart-light", + "svg": "" + }, + { + "name": "iconamoon:heart-off", + "svg": "" + }, + { + "name": "iconamoon:heart-off-bold", + "svg": "" + }, + { + "name": "iconamoon:heart-off-duotone", + "svg": "" + }, + { + "name": "iconamoon:heart-off-fill", + "svg": "" + }, + { + "name": "iconamoon:heart-off-light", + "svg": "" + }, + { + "name": "iconamoon:heart-off-thin", + "svg": "" + }, + { + "name": "iconamoon:heart-thin", + "svg": "" + }, + { + "name": "iconamoon:history", + "svg": "" + }, + { + "name": "iconamoon:history-bold", + "svg": "" + }, + { + "name": "iconamoon:history-duotone", + "svg": "" + }, + { + "name": "iconamoon:history-fill", + "svg": "" + }, + { + "name": "iconamoon:history-light", + "svg": "" + }, + { + "name": "iconamoon:history-thin", + "svg": "" + }, + { + "name": "iconamoon:home", + "svg": "" + }, + { + "name": "iconamoon:home-bold", + "svg": "" + }, + { + "name": "iconamoon:home-duotone", + "svg": "" + }, + { + "name": "iconamoon:home-fill", + "svg": "" + }, + { + "name": "iconamoon:home-light", + "svg": "" + }, + { + "name": "iconamoon:home-thin", + "svg": "" + }, + { + "name": "iconamoon:information-circle", + "svg": "" + }, + { + "name": "iconamoon:information-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:information-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:information-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:information-circle-light", + "svg": "" + }, + { + "name": "iconamoon:information-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:information-square", + "svg": "" + }, + { + "name": "iconamoon:information-square-bold", + "svg": "" + }, + { + "name": "iconamoon:information-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:information-square-fill", + "svg": "" + }, + { + "name": "iconamoon:information-square-light", + "svg": "" + }, + { + "name": "iconamoon:information-square-thin", + "svg": "" + }, + { + "name": "iconamoon:invoice", + "svg": "" + }, + { + "name": "iconamoon:invoice-bold", + "svg": "" + }, + { + "name": "iconamoon:invoice-duotone", + "svg": "" + }, + { + "name": "iconamoon:invoice-fill", + "svg": "" + }, + { + "name": "iconamoon:invoice-light", + "svg": "" + }, + { + "name": "iconamoon:invoice-thin", + "svg": "" + }, + { + "name": "iconamoon:kissing-face", + "svg": "" + }, + { + "name": "iconamoon:kissing-face-bold", + "svg": "" + }, + { + "name": "iconamoon:kissing-face-duotone", + "svg": "" + }, + { + "name": "iconamoon:kissing-face-fill", + "svg": "" + }, + { + "name": "iconamoon:kissing-face-light", + "svg": "" + }, + { + "name": "iconamoon:kissing-face-thin", + "svg": "" + }, + { + "name": "iconamoon:kissing-face-with-smiling-eyes", + "svg": "" + }, + { + "name": "iconamoon:kissing-face-with-smiling-eyes-bold", + "svg": "" + }, + { + "name": "iconamoon:kissing-face-with-smiling-eyes-duotone", + "svg": "" + }, + { + "name": "iconamoon:kissing-face-with-smiling-eyes-fill", + "svg": "" + }, + { + "name": "iconamoon:kissing-face-with-smiling-eyes-light", + "svg": "" + }, + { + "name": "iconamoon:kissing-face-with-smiling-eyes-thin", + "svg": "" + }, + { + "name": "iconamoon:lightning-1", + "svg": "" + }, + { + "name": "iconamoon:lightning-1-bold", + "svg": "" + }, + { + "name": "iconamoon:lightning-1-duotone", + "svg": "" + }, + { + "name": "iconamoon:lightning-1-fill", + "svg": "" + }, + { + "name": "iconamoon:lightning-1-light", + "svg": "" + }, + { + "name": "iconamoon:lightning-1-thin", + "svg": "" + }, + { + "name": "iconamoon:lightning-2", + "svg": "" + }, + { + "name": "iconamoon:lightning-2-bold", + "svg": "" + }, + { + "name": "iconamoon:lightning-2-duotone", + "svg": "" + }, + { + "name": "iconamoon:lightning-2-fill", + "svg": "" + }, + { + "name": "iconamoon:lightning-2-light", + "svg": "" + }, + { + "name": "iconamoon:lightning-2-thin", + "svg": "" + }, + { + "name": "iconamoon:like", + "svg": "" + }, + { + "name": "iconamoon:like-bold", + "svg": "" + }, + { + "name": "iconamoon:like-duotone", + "svg": "" + }, + { + "name": "iconamoon:like-fill", + "svg": "" + }, + { + "name": "iconamoon:like-light", + "svg": "" + }, + { + "name": "iconamoon:like-thin", + "svg": "" + }, + { + "name": "iconamoon:link", + "svg": "" + }, + { + "name": "iconamoon:link-bold", + "svg": "" + }, + { + "name": "iconamoon:link-duotone", + "svg": "" + }, + { + "name": "iconamoon:link-external", + "svg": "" + }, + { + "name": "iconamoon:link-external-bold", + "svg": "" + }, + { + "name": "iconamoon:link-external-duotone", + "svg": "" + }, + { + "name": "iconamoon:link-external-fill", + "svg": "" + }, + { + "name": "iconamoon:link-external-light", + "svg": "" + }, + { + "name": "iconamoon:link-external-thin", + "svg": "" + }, + { + "name": "iconamoon:link-fill", + "svg": "" + }, + { + "name": "iconamoon:link-light", + "svg": "" + }, + { + "name": "iconamoon:link-thin", + "svg": "" + }, + { + "name": "iconamoon:location", + "svg": "" + }, + { + "name": "iconamoon:location-bold", + "svg": "" + }, + { + "name": "iconamoon:location-duotone", + "svg": "" + }, + { + "name": "iconamoon:location-fill", + "svg": "" + }, + { + "name": "iconamoon:location-light", + "svg": "" + }, + { + "name": "iconamoon:location-pin", + "svg": "" + }, + { + "name": "iconamoon:location-pin-bold", + "svg": "" + }, + { + "name": "iconamoon:location-pin-duotone", + "svg": "" + }, + { + "name": "iconamoon:location-pin-fill", + "svg": "" + }, + { + "name": "iconamoon:location-pin-light", + "svg": "" + }, + { + "name": "iconamoon:location-pin-off", + "svg": "" + }, + { + "name": "iconamoon:location-pin-off-bold", + "svg": "" + }, + { + "name": "iconamoon:location-pin-off-duotone", + "svg": "" + }, + { + "name": "iconamoon:location-pin-off-fill", + "svg": "" + }, + { + "name": "iconamoon:location-pin-off-light", + "svg": "" + }, + { + "name": "iconamoon:location-pin-off-thin", + "svg": "" + }, + { + "name": "iconamoon:location-pin-thin", + "svg": "" + }, + { + "name": "iconamoon:location-thin", + "svg": "" + }, + { + "name": "iconamoon:lock", + "svg": "" + }, + { + "name": "iconamoon:lock-bold", + "svg": "" + }, + { + "name": "iconamoon:lock-duotone", + "svg": "" + }, + { + "name": "iconamoon:lock-fill", + "svg": "" + }, + { + "name": "iconamoon:lock-light", + "svg": "" + }, + { + "name": "iconamoon:lock-off", + "svg": "" + }, + { + "name": "iconamoon:lock-off-bold", + "svg": "" + }, + { + "name": "iconamoon:lock-off-duotone", + "svg": "" + }, + { + "name": "iconamoon:lock-off-fill", + "svg": "" + }, + { + "name": "iconamoon:lock-off-light", + "svg": "" + }, + { + "name": "iconamoon:lock-off-thin", + "svg": "" + }, + { + "name": "iconamoon:lock-thin", + "svg": "" + }, + { + "name": "iconamoon:menu-burger-horizontal", + "svg": "" + }, + { + "name": "iconamoon:menu-burger-horizontal-bold", + "svg": "" + }, + { + "name": "iconamoon:menu-burger-horizontal-duotone", + "svg": "" + }, + { + "name": "iconamoon:menu-burger-horizontal-fill", + "svg": "" + }, + { + "name": "iconamoon:menu-burger-horizontal-light", + "svg": "" + }, + { + "name": "iconamoon:menu-burger-horizontal-thin", + "svg": "" + }, + { + "name": "iconamoon:menu-burger-vertical", + "svg": "" + }, + { + "name": "iconamoon:menu-burger-vertical-bold", + "svg": "" + }, + { + "name": "iconamoon:menu-burger-vertical-duotone", + "svg": "" + }, + { + "name": "iconamoon:menu-burger-vertical-fill", + "svg": "" + }, + { + "name": "iconamoon:menu-burger-vertical-light", + "svg": "" + }, + { + "name": "iconamoon:menu-burger-vertical-thin", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-horizontal", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-horizontal-bold", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-horizontal-circle", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-horizontal-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-horizontal-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-horizontal-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-horizontal-circle-light", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-horizontal-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-horizontal-fill", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-horizontal-light", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-horizontal-square", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-horizontal-square-bold", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-horizontal-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-horizontal-square-fill", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-horizontal-square-light", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-horizontal-square-thin", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-horizontal-thin", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-vertical", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-vertical-bold", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-vertical-circle", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-vertical-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-vertical-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-vertical-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-vertical-circle-light", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-vertical-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-vertical-fill", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-vertical-light", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-vertical-square", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-vertical-square-bold", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-vertical-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-vertical-square-fill", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-vertical-square-light", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-vertical-square-thin", + "svg": "" + }, + { + "name": "iconamoon:menu-kebab-vertical-thin", + "svg": "" + }, + { + "name": "iconamoon:microphone", + "svg": "" + }, + { + "name": "iconamoon:microphone-bold", + "svg": "" + }, + { + "name": "iconamoon:microphone-duotone", + "svg": "" + }, + { + "name": "iconamoon:microphone-fill", + "svg": "" + }, + { + "name": "iconamoon:microphone-light", + "svg": "" + }, + { + "name": "iconamoon:microphone-off", + "svg": "" + }, + { + "name": "iconamoon:microphone-off-bold", + "svg": "" + }, + { + "name": "iconamoon:microphone-off-duotone", + "svg": "" + }, + { + "name": "iconamoon:microphone-off-fill", + "svg": "" + }, + { + "name": "iconamoon:microphone-off-light", + "svg": "" + }, + { + "name": "iconamoon:microphone-off-thin", + "svg": "" + }, + { + "name": "iconamoon:microphone-thin", + "svg": "" + }, + { + "name": "iconamoon:mode-dark", + "svg": "" + }, + { + "name": "iconamoon:mode-dark-bold", + "svg": "" + }, + { + "name": "iconamoon:mode-dark-duotone", + "svg": "" + }, + { + "name": "iconamoon:mode-dark-fill", + "svg": "" + }, + { + "name": "iconamoon:mode-dark-light", + "svg": "" + }, + { + "name": "iconamoon:mode-dark-thin", + "svg": "" + }, + { + "name": "iconamoon:mode-light", + "svg": "" + }, + { + "name": "iconamoon:mode-light-bold", + "svg": "" + }, + { + "name": "iconamoon:mode-light-duotone", + "svg": "" + }, + { + "name": "iconamoon:mode-light-fill", + "svg": "" + }, + { + "name": "iconamoon:mode-light-light", + "svg": "" + }, + { + "name": "iconamoon:mode-light-thin", + "svg": "" + }, + { + "name": "iconamoon:mouse", + "svg": "" + }, + { + "name": "iconamoon:mouse-bold", + "svg": "" + }, + { + "name": "iconamoon:mouse-duotone", + "svg": "" + }, + { + "name": "iconamoon:mouse-fill", + "svg": "" + }, + { + "name": "iconamoon:mouse-light", + "svg": "" + }, + { + "name": "iconamoon:mouse-thin", + "svg": "" + }, + { + "name": "iconamoon:move", + "svg": "" + }, + { + "name": "iconamoon:move-bold", + "svg": "" + }, + { + "name": "iconamoon:move-duotone", + "svg": "" + }, + { + "name": "iconamoon:move-fill", + "svg": "" + }, + { + "name": "iconamoon:move-light", + "svg": "" + }, + { + "name": "iconamoon:move-thin", + "svg": "" + }, + { + "name": "iconamoon:music-1", + "svg": "" + }, + { + "name": "iconamoon:music-1-bold", + "svg": "" + }, + { + "name": "iconamoon:music-1-duotone", + "svg": "" + }, + { + "name": "iconamoon:music-1-fill", + "svg": "" + }, + { + "name": "iconamoon:music-1-light", + "svg": "" + }, + { + "name": "iconamoon:music-1-thin", + "svg": "" + }, + { + "name": "iconamoon:music-2", + "svg": "" + }, + { + "name": "iconamoon:music-2-bold", + "svg": "" + }, + { + "name": "iconamoon:music-2-duotone", + "svg": "" + }, + { + "name": "iconamoon:music-2-fill", + "svg": "" + }, + { + "name": "iconamoon:music-2-light", + "svg": "" + }, + { + "name": "iconamoon:music-2-thin", + "svg": "" + }, + { + "name": "iconamoon:music-album", + "svg": "" + }, + { + "name": "iconamoon:music-album-bold", + "svg": "" + }, + { + "name": "iconamoon:music-album-duotone", + "svg": "" + }, + { + "name": "iconamoon:music-album-fill", + "svg": "" + }, + { + "name": "iconamoon:music-album-light", + "svg": "" + }, + { + "name": "iconamoon:music-album-thin", + "svg": "" + }, + { + "name": "iconamoon:music-artist", + "svg": "" + }, + { + "name": "iconamoon:music-artist-bold", + "svg": "" + }, + { + "name": "iconamoon:music-artist-duotone", + "svg": "" + }, + { + "name": "iconamoon:music-artist-fill", + "svg": "" + }, + { + "name": "iconamoon:music-artist-light", + "svg": "" + }, + { + "name": "iconamoon:music-artist-thin", + "svg": "" + }, + { + "name": "iconamoon:neutral-face", + "svg": "" + }, + { + "name": "iconamoon:neutral-face-bold", + "svg": "" + }, + { + "name": "iconamoon:neutral-face-duotone", + "svg": "" + }, + { + "name": "iconamoon:neutral-face-fill", + "svg": "" + }, + { + "name": "iconamoon:neutral-face-light", + "svg": "" + }, + { + "name": "iconamoon:neutral-face-thin", + "svg": "" + }, + { + "name": "iconamoon:news", + "svg": "" + }, + { + "name": "iconamoon:news-bold", + "svg": "" + }, + { + "name": "iconamoon:news-duotone", + "svg": "" + }, + { + "name": "iconamoon:news-fill", + "svg": "" + }, + { + "name": "iconamoon:news-light", + "svg": "" + }, + { + "name": "iconamoon:news-thin", + "svg": "" + }, + { + "name": "iconamoon:notification", + "svg": "" + }, + { + "name": "iconamoon:notification-bold", + "svg": "" + }, + { + "name": "iconamoon:notification-duotone", + "svg": "" + }, + { + "name": "iconamoon:notification-fill", + "svg": "" + }, + { + "name": "iconamoon:notification-light", + "svg": "" + }, + { + "name": "iconamoon:notification-off", + "svg": "" + }, + { + "name": "iconamoon:notification-off-bold", + "svg": "" + }, + { + "name": "iconamoon:notification-off-duotone", + "svg": "" + }, + { + "name": "iconamoon:notification-off-fill", + "svg": "" + }, + { + "name": "iconamoon:notification-off-light", + "svg": "" + }, + { + "name": "iconamoon:notification-off-thin", + "svg": "" + }, + { + "name": "iconamoon:notification-thin", + "svg": "" + }, + { + "name": "iconamoon:number-0", + "svg": "" + }, + { + "name": "iconamoon:number-0-bold", + "svg": "" + }, + { + "name": "iconamoon:number-0-circle", + "svg": "" + }, + { + "name": "iconamoon:number-0-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:number-0-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:number-0-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:number-0-circle-light", + "svg": "" + }, + { + "name": "iconamoon:number-0-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:number-0-duotone", + "svg": "" + }, + { + "name": "iconamoon:number-0-fill", + "svg": "" + }, + { + "name": "iconamoon:number-0-light", + "svg": "" + }, + { + "name": "iconamoon:number-0-square", + "svg": "" + }, + { + "name": "iconamoon:number-0-square-bold", + "svg": "" + }, + { + "name": "iconamoon:number-0-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:number-0-square-fill", + "svg": "" + }, + { + "name": "iconamoon:number-0-square-light", + "svg": "" + }, + { + "name": "iconamoon:number-0-square-thin", + "svg": "" + }, + { + "name": "iconamoon:number-0-thin", + "svg": "" + }, + { + "name": "iconamoon:number-1", + "svg": "" + }, + { + "name": "iconamoon:number-1-bold", + "svg": "" + }, + { + "name": "iconamoon:number-1-circle", + "svg": "" + }, + { + "name": "iconamoon:number-1-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:number-1-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:number-1-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:number-1-circle-light", + "svg": "" + }, + { + "name": "iconamoon:number-1-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:number-1-fill", + "svg": "" + }, + { + "name": "iconamoon:number-1-light", + "svg": "" + }, + { + "name": "iconamoon:number-1-square", + "svg": "" + }, + { + "name": "iconamoon:number-1-square-bold", + "svg": "" + }, + { + "name": "iconamoon:number-1-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:number-1-square-fill", + "svg": "" + }, + { + "name": "iconamoon:number-1-square-light", + "svg": "" + }, + { + "name": "iconamoon:number-1-square-thin", + "svg": "" + }, + { + "name": "iconamoon:number-1-thin", + "svg": "" + }, + { + "name": "iconamoon:number-2", + "svg": "" + }, + { + "name": "iconamoon:number-2-bold", + "svg": "" + }, + { + "name": "iconamoon:number-2-circle", + "svg": "" + }, + { + "name": "iconamoon:number-2-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:number-2-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:number-2-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:number-2-circle-light", + "svg": "" + }, + { + "name": "iconamoon:number-2-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:number-2-duotone", + "svg": "" + }, + { + "name": "iconamoon:number-2-fill", + "svg": "" + }, + { + "name": "iconamoon:number-2-light", + "svg": "" + }, + { + "name": "iconamoon:number-2-square", + "svg": "" + }, + { + "name": "iconamoon:number-2-square-bold", + "svg": "" + }, + { + "name": "iconamoon:number-2-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:number-2-square-fill", + "svg": "" + }, + { + "name": "iconamoon:number-2-square-light", + "svg": "" + }, + { + "name": "iconamoon:number-2-square-thin", + "svg": "" + }, + { + "name": "iconamoon:number-2-thin", + "svg": "" + }, + { + "name": "iconamoon:number-3", + "svg": "" + }, + { + "name": "iconamoon:number-3-bold", + "svg": "" + }, + { + "name": "iconamoon:number-3-circle", + "svg": "" + }, + { + "name": "iconamoon:number-3-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:number-3-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:number-3-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:number-3-circle-light", + "svg": "" + }, + { + "name": "iconamoon:number-3-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:number-3-fill", + "svg": "" + }, + { + "name": "iconamoon:number-3-light", + "svg": "" + }, + { + "name": "iconamoon:number-3-square", + "svg": "" + }, + { + "name": "iconamoon:number-3-square-bold", + "svg": "" + }, + { + "name": "iconamoon:number-3-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:number-3-square-fill", + "svg": "" + }, + { + "name": "iconamoon:number-3-square-light", + "svg": "" + }, + { + "name": "iconamoon:number-3-square-thin", + "svg": "" + }, + { + "name": "iconamoon:number-3-thin", + "svg": "" + }, + { + "name": "iconamoon:number-4", + "svg": "" + }, + { + "name": "iconamoon:number-4-bold", + "svg": "" + }, + { + "name": "iconamoon:number-4-circle", + "svg": "" + }, + { + "name": "iconamoon:number-4-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:number-4-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:number-4-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:number-4-circle-light", + "svg": "" + }, + { + "name": "iconamoon:number-4-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:number-4-fill", + "svg": "" + }, + { + "name": "iconamoon:number-4-light", + "svg": "" + }, + { + "name": "iconamoon:number-4-square", + "svg": "" + }, + { + "name": "iconamoon:number-4-square-bold", + "svg": "" + }, + { + "name": "iconamoon:number-4-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:number-4-square-fill", + "svg": "" + }, + { + "name": "iconamoon:number-4-square-light", + "svg": "" + }, + { + "name": "iconamoon:number-4-square-thin", + "svg": "" + }, + { + "name": "iconamoon:number-4-thin", + "svg": "" + }, + { + "name": "iconamoon:number-5", + "svg": "" + }, + { + "name": "iconamoon:number-5-bold", + "svg": "" + }, + { + "name": "iconamoon:number-5-circle", + "svg": "" + }, + { + "name": "iconamoon:number-5-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:number-5-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:number-5-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:number-5-circle-light", + "svg": "" + }, + { + "name": "iconamoon:number-5-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:number-5-fill", + "svg": "" + }, + { + "name": "iconamoon:number-5-light", + "svg": "" + }, + { + "name": "iconamoon:number-5-square", + "svg": "" + }, + { + "name": "iconamoon:number-5-square-bold", + "svg": "" + }, + { + "name": "iconamoon:number-5-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:number-5-square-fill", + "svg": "" + }, + { + "name": "iconamoon:number-5-square-light", + "svg": "" + }, + { + "name": "iconamoon:number-5-square-thin", + "svg": "" + }, + { + "name": "iconamoon:number-5-thin", + "svg": "" + }, + { + "name": "iconamoon:number-6", + "svg": "" + }, + { + "name": "iconamoon:number-6-bold", + "svg": "" + }, + { + "name": "iconamoon:number-6-circle", + "svg": "" + }, + { + "name": "iconamoon:number-6-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:number-6-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:number-6-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:number-6-circle-light", + "svg": "" + }, + { + "name": "iconamoon:number-6-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:number-6-duotone", + "svg": "" + }, + { + "name": "iconamoon:number-6-fill", + "svg": "" + }, + { + "name": "iconamoon:number-6-light", + "svg": "" + }, + { + "name": "iconamoon:number-6-square", + "svg": "" + }, + { + "name": "iconamoon:number-6-square-bold", + "svg": "" + }, + { + "name": "iconamoon:number-6-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:number-6-square-fill", + "svg": "" + }, + { + "name": "iconamoon:number-6-square-light", + "svg": "" + }, + { + "name": "iconamoon:number-6-square-thin", + "svg": "" + }, + { + "name": "iconamoon:number-6-thin", + "svg": "" + }, + { + "name": "iconamoon:number-7", + "svg": "" + }, + { + "name": "iconamoon:number-7-bold", + "svg": "" + }, + { + "name": "iconamoon:number-7-circle", + "svg": "" + }, + { + "name": "iconamoon:number-7-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:number-7-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:number-7-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:number-7-circle-light", + "svg": "" + }, + { + "name": "iconamoon:number-7-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:number-7-fill", + "svg": "" + }, + { + "name": "iconamoon:number-7-light", + "svg": "" + }, + { + "name": "iconamoon:number-7-square", + "svg": "" + }, + { + "name": "iconamoon:number-7-square-bold", + "svg": "" + }, + { + "name": "iconamoon:number-7-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:number-7-square-fill", + "svg": "" + }, + { + "name": "iconamoon:number-7-square-light", + "svg": "" + }, + { + "name": "iconamoon:number-7-square-thin", + "svg": "" + }, + { + "name": "iconamoon:number-7-thin", + "svg": "" + }, + { + "name": "iconamoon:number-8", + "svg": "" + }, + { + "name": "iconamoon:number-8-bold", + "svg": "" + }, + { + "name": "iconamoon:number-8-circle", + "svg": "" + }, + { + "name": "iconamoon:number-8-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:number-8-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:number-8-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:number-8-circle-light", + "svg": "" + }, + { + "name": "iconamoon:number-8-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:number-8-duotone", + "svg": "" + }, + { + "name": "iconamoon:number-8-fill", + "svg": "" + }, + { + "name": "iconamoon:number-8-light", + "svg": "" + }, + { + "name": "iconamoon:number-8-square", + "svg": "" + }, + { + "name": "iconamoon:number-8-square-bold", + "svg": "" + }, + { + "name": "iconamoon:number-8-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:number-8-square-fill", + "svg": "" + }, + { + "name": "iconamoon:number-8-square-light", + "svg": "" + }, + { + "name": "iconamoon:number-8-square-thin", + "svg": "" + }, + { + "name": "iconamoon:number-8-thin", + "svg": "" + }, + { + "name": "iconamoon:number-9", + "svg": "" + }, + { + "name": "iconamoon:number-9-bold", + "svg": "" + }, + { + "name": "iconamoon:number-9-circle", + "svg": "" + }, + { + "name": "iconamoon:number-9-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:number-9-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:number-9-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:number-9-circle-light", + "svg": "" + }, + { + "name": "iconamoon:number-9-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:number-9-duotone", + "svg": "" + }, + { + "name": "iconamoon:number-9-fill", + "svg": "" + }, + { + "name": "iconamoon:number-9-light", + "svg": "" + }, + { + "name": "iconamoon:number-9-square", + "svg": "" + }, + { + "name": "iconamoon:number-9-square-bold", + "svg": "" + }, + { + "name": "iconamoon:number-9-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:number-9-square-fill", + "svg": "" + }, + { + "name": "iconamoon:number-9-square-light", + "svg": "" + }, + { + "name": "iconamoon:number-9-square-thin", + "svg": "" + }, + { + "name": "iconamoon:number-9-thin", + "svg": "" + }, + { + "name": "iconamoon:options", + "svg": "" + }, + { + "name": "iconamoon:options-bold", + "svg": "" + }, + { + "name": "iconamoon:options-duotone", + "svg": "" + }, + { + "name": "iconamoon:options-fill", + "svg": "" + }, + { + "name": "iconamoon:options-light", + "svg": "" + }, + { + "name": "iconamoon:options-thin", + "svg": "" + }, + { + "name": "iconamoon:pen", + "svg": "" + }, + { + "name": "iconamoon:pen-bold", + "svg": "" + }, + { + "name": "iconamoon:pen-duotone", + "svg": "" + }, + { + "name": "iconamoon:pen-fill", + "svg": "" + }, + { + "name": "iconamoon:pen-light", + "svg": "" + }, + { + "name": "iconamoon:pen-thin", + "svg": "" + }, + { + "name": "iconamoon:pensive-face", + "svg": "" + }, + { + "name": "iconamoon:pensive-face-bold", + "svg": "" + }, + { + "name": "iconamoon:pensive-face-duotone", + "svg": "" + }, + { + "name": "iconamoon:pensive-face-fill", + "svg": "" + }, + { + "name": "iconamoon:pensive-face-light", + "svg": "" + }, + { + "name": "iconamoon:pensive-face-thin", + "svg": "" + }, + { + "name": "iconamoon:phone", + "svg": "" + }, + { + "name": "iconamoon:phone-bold", + "svg": "" + }, + { + "name": "iconamoon:phone-duotone", + "svg": "" + }, + { + "name": "iconamoon:phone-fill", + "svg": "" + }, + { + "name": "iconamoon:phone-light", + "svg": "" + }, + { + "name": "iconamoon:phone-off", + "svg": "" + }, + { + "name": "iconamoon:phone-off-bold", + "svg": "" + }, + { + "name": "iconamoon:phone-off-duotone", + "svg": "" + }, + { + "name": "iconamoon:phone-off-fill", + "svg": "" + }, + { + "name": "iconamoon:phone-off-light", + "svg": "" + }, + { + "name": "iconamoon:phone-off-thin", + "svg": "" + }, + { + "name": "iconamoon:phone-thin", + "svg": "" + }, + { + "name": "iconamoon:play-circle", + "svg": "" + }, + { + "name": "iconamoon:play-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:play-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:play-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:play-circle-light", + "svg": "" + }, + { + "name": "iconamoon:play-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:player-end", + "svg": "" + }, + { + "name": "iconamoon:player-end-bold", + "svg": "" + }, + { + "name": "iconamoon:player-end-duotone", + "svg": "" + }, + { + "name": "iconamoon:player-end-fill", + "svg": "" + }, + { + "name": "iconamoon:player-end-light", + "svg": "" + }, + { + "name": "iconamoon:player-end-thin", + "svg": "" + }, + { + "name": "iconamoon:player-next", + "svg": "" + }, + { + "name": "iconamoon:player-next-bold", + "svg": "" + }, + { + "name": "iconamoon:player-next-duotone", + "svg": "" + }, + { + "name": "iconamoon:player-next-fill", + "svg": "" + }, + { + "name": "iconamoon:player-next-light", + "svg": "" + }, + { + "name": "iconamoon:player-next-thin", + "svg": "" + }, + { + "name": "iconamoon:player-pause", + "svg": "" + }, + { + "name": "iconamoon:player-pause-bold", + "svg": "" + }, + { + "name": "iconamoon:player-pause-duotone", + "svg": "" + }, + { + "name": "iconamoon:player-pause-fill", + "svg": "" + }, + { + "name": "iconamoon:player-pause-light", + "svg": "" + }, + { + "name": "iconamoon:player-pause-thin", + "svg": "" + }, + { + "name": "iconamoon:player-play", + "svg": "" + }, + { + "name": "iconamoon:player-play-bold", + "svg": "" + }, + { + "name": "iconamoon:player-play-duotone", + "svg": "" + }, + { + "name": "iconamoon:player-play-fill", + "svg": "" + }, + { + "name": "iconamoon:player-play-light", + "svg": "" + }, + { + "name": "iconamoon:player-play-thin", + "svg": "" + }, + { + "name": "iconamoon:player-previous", + "svg": "" + }, + { + "name": "iconamoon:player-previous-bold", + "svg": "" + }, + { + "name": "iconamoon:player-previous-duotone", + "svg": "" + }, + { + "name": "iconamoon:player-previous-fill", + "svg": "" + }, + { + "name": "iconamoon:player-previous-light", + "svg": "" + }, + { + "name": "iconamoon:player-previous-thin", + "svg": "" + }, + { + "name": "iconamoon:player-start", + "svg": "" + }, + { + "name": "iconamoon:player-start-bold", + "svg": "" + }, + { + "name": "iconamoon:player-start-duotone", + "svg": "" + }, + { + "name": "iconamoon:player-start-fill", + "svg": "" + }, + { + "name": "iconamoon:player-start-light", + "svg": "" + }, + { + "name": "iconamoon:player-start-thin", + "svg": "" + }, + { + "name": "iconamoon:player-stop", + "svg": "" + }, + { + "name": "iconamoon:player-stop-bold", + "svg": "" + }, + { + "name": "iconamoon:player-stop-duotone", + "svg": "" + }, + { + "name": "iconamoon:player-stop-fill", + "svg": "" + }, + { + "name": "iconamoon:player-stop-light", + "svg": "" + }, + { + "name": "iconamoon:player-stop-thin", + "svg": "" + }, + { + "name": "iconamoon:playlist", + "svg": "" + }, + { + "name": "iconamoon:playlist-bold", + "svg": "" + }, + { + "name": "iconamoon:playlist-fill", + "svg": "" + }, + { + "name": "iconamoon:playlist-light", + "svg": "" + }, + { + "name": "iconamoon:playlist-repeat-list", + "svg": "" + }, + { + "name": "iconamoon:playlist-repeat-list-bold", + "svg": "" + }, + { + "name": "iconamoon:playlist-repeat-list-fill", + "svg": "" + }, + { + "name": "iconamoon:playlist-repeat-list-light", + "svg": "" + }, + { + "name": "iconamoon:playlist-repeat-list-thin", + "svg": "" + }, + { + "name": "iconamoon:playlist-repeat-song", + "svg": "" + }, + { + "name": "iconamoon:playlist-repeat-song-bold", + "svg": "" + }, + { + "name": "iconamoon:playlist-repeat-song-fill", + "svg": "" + }, + { + "name": "iconamoon:playlist-repeat-song-light", + "svg": "" + }, + { + "name": "iconamoon:playlist-repeat-song-thin", + "svg": "" + }, + { + "name": "iconamoon:playlist-shuffle", + "svg": "" + }, + { + "name": "iconamoon:playlist-shuffle-bold", + "svg": "" + }, + { + "name": "iconamoon:playlist-shuffle-duotone", + "svg": "" + }, + { + "name": "iconamoon:playlist-shuffle-fill", + "svg": "" + }, + { + "name": "iconamoon:playlist-shuffle-light", + "svg": "" + }, + { + "name": "iconamoon:playlist-shuffle-thin", + "svg": "" + }, + { + "name": "iconamoon:playlist-thin", + "svg": "" + }, + { + "name": "iconamoon:printer", + "svg": "" + }, + { + "name": "iconamoon:printer-bold", + "svg": "" + }, + { + "name": "iconamoon:printer-duotone", + "svg": "" + }, + { + "name": "iconamoon:printer-fill", + "svg": "" + }, + { + "name": "iconamoon:printer-light", + "svg": "" + }, + { + "name": "iconamoon:printer-thin", + "svg": "" + }, + { + "name": "iconamoon:profile", + "svg": "" + }, + { + "name": "iconamoon:profile-bold", + "svg": "" + }, + { + "name": "iconamoon:profile-circle", + "svg": "" + }, + { + "name": "iconamoon:profile-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:profile-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:profile-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:profile-circle-light", + "svg": "" + }, + { + "name": "iconamoon:profile-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:profile-duotone", + "svg": "" + }, + { + "name": "iconamoon:profile-fill", + "svg": "" + }, + { + "name": "iconamoon:profile-light", + "svg": "" + }, + { + "name": "iconamoon:profile-thin", + "svg": "" + }, + { + "name": "iconamoon:question-mark-circle", + "svg": "" + }, + { + "name": "iconamoon:question-mark-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:question-mark-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:question-mark-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:question-mark-circle-light", + "svg": "" + }, + { + "name": "iconamoon:question-mark-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:question-mark-square", + "svg": "" + }, + { + "name": "iconamoon:question-mark-square-bold", + "svg": "" + }, + { + "name": "iconamoon:question-mark-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:question-mark-square-fill", + "svg": "" + }, + { + "name": "iconamoon:question-mark-square-light", + "svg": "" + }, + { + "name": "iconamoon:question-mark-square-thin", + "svg": "" + }, + { + "name": "iconamoon:relieved-face", + "svg": "" + }, + { + "name": "iconamoon:relieved-face-bold", + "svg": "" + }, + { + "name": "iconamoon:relieved-face-duotone", + "svg": "" + }, + { + "name": "iconamoon:relieved-face-fill", + "svg": "" + }, + { + "name": "iconamoon:relieved-face-light", + "svg": "" + }, + { + "name": "iconamoon:relieved-face-thin", + "svg": "" + }, + { + "name": "iconamoon:restart", + "svg": "" + }, + { + "name": "iconamoon:restart-bold", + "svg": "" + }, + { + "name": "iconamoon:restart-duotone", + "svg": "" + }, + { + "name": "iconamoon:restart-fill", + "svg": "" + }, + { + "name": "iconamoon:restart-light", + "svg": "" + }, + { + "name": "iconamoon:restart-thin", + "svg": "" + }, + { + "name": "iconamoon:scanner", + "svg": "" + }, + { + "name": "iconamoon:scanner-bold", + "svg": "" + }, + { + "name": "iconamoon:scanner-fill", + "svg": "" + }, + { + "name": "iconamoon:scanner-light", + "svg": "" + }, + { + "name": "iconamoon:scanner-thin", + "svg": "" + }, + { + "name": "iconamoon:screen-full", + "svg": "" + }, + { + "name": "iconamoon:screen-full-bold", + "svg": "" + }, + { + "name": "iconamoon:screen-full-duotone", + "svg": "" + }, + { + "name": "iconamoon:screen-full-fill", + "svg": "" + }, + { + "name": "iconamoon:screen-full-light", + "svg": "" + }, + { + "name": "iconamoon:screen-full-thin", + "svg": "" + }, + { + "name": "iconamoon:screen-normal", + "svg": "" + }, + { + "name": "iconamoon:screen-normal-bold", + "svg": "" + }, + { + "name": "iconamoon:screen-normal-duotone", + "svg": "" + }, + { + "name": "iconamoon:screen-normal-fill", + "svg": "" + }, + { + "name": "iconamoon:screen-normal-light", + "svg": "" + }, + { + "name": "iconamoon:screen-normal-thin", + "svg": "" + }, + { + "name": "iconamoon:search", + "svg": "" + }, + { + "name": "iconamoon:search-bold", + "svg": "" + }, + { + "name": "iconamoon:search-duotone", + "svg": "" + }, + { + "name": "iconamoon:search-fill", + "svg": "" + }, + { + "name": "iconamoon:search-light", + "svg": "" + }, + { + "name": "iconamoon:search-thin", + "svg": "" + }, + { + "name": "iconamoon:send", + "svg": "" + }, + { + "name": "iconamoon:send-bold", + "svg": "" + }, + { + "name": "iconamoon:send-duotone", + "svg": "" + }, + { + "name": "iconamoon:send-fill", + "svg": "" + }, + { + "name": "iconamoon:send-light", + "svg": "" + }, + { + "name": "iconamoon:send-thin", + "svg": "" + }, + { + "name": "iconamoon:settings", + "svg": "" + }, + { + "name": "iconamoon:settings-bold", + "svg": "" + }, + { + "name": "iconamoon:settings-duotone", + "svg": "" + }, + { + "name": "iconamoon:settings-fill", + "svg": "" + }, + { + "name": "iconamoon:settings-light", + "svg": "" + }, + { + "name": "iconamoon:settings-thin", + "svg": "" + }, + { + "name": "iconamoon:share-1", + "svg": "" + }, + { + "name": "iconamoon:share-1-bold", + "svg": "" + }, + { + "name": "iconamoon:share-1-duotone", + "svg": "" + }, + { + "name": "iconamoon:share-1-fill", + "svg": "" + }, + { + "name": "iconamoon:share-1-light", + "svg": "" + }, + { + "name": "iconamoon:share-1-thin", + "svg": "" + }, + { + "name": "iconamoon:share-2", + "svg": "" + }, + { + "name": "iconamoon:share-2-bold", + "svg": "" + }, + { + "name": "iconamoon:share-2-duotone", + "svg": "" + }, + { + "name": "iconamoon:share-2-fill", + "svg": "" + }, + { + "name": "iconamoon:share-2-light", + "svg": "" + }, + { + "name": "iconamoon:share-2-thin", + "svg": "" + }, + { + "name": "iconamoon:shield", + "svg": "" + }, + { + "name": "iconamoon:shield-bold", + "svg": "" + }, + { + "name": "iconamoon:shield-duotone", + "svg": "" + }, + { + "name": "iconamoon:shield-fill", + "svg": "" + }, + { + "name": "iconamoon:shield-light", + "svg": "" + }, + { + "name": "iconamoon:shield-no", + "svg": "" + }, + { + "name": "iconamoon:shield-no-bold", + "svg": "" + }, + { + "name": "iconamoon:shield-no-duotone", + "svg": "" + }, + { + "name": "iconamoon:shield-no-fill", + "svg": "" + }, + { + "name": "iconamoon:shield-no-light", + "svg": "" + }, + { + "name": "iconamoon:shield-no-thin", + "svg": "" + }, + { + "name": "iconamoon:shield-off", + "svg": "" + }, + { + "name": "iconamoon:shield-off-bold", + "svg": "" + }, + { + "name": "iconamoon:shield-off-duotone", + "svg": "" + }, + { + "name": "iconamoon:shield-off-fill", + "svg": "" + }, + { + "name": "iconamoon:shield-off-light", + "svg": "" + }, + { + "name": "iconamoon:shield-off-thin", + "svg": "" + }, + { + "name": "iconamoon:shield-thin", + "svg": "" + }, + { + "name": "iconamoon:shield-yes", + "svg": "" + }, + { + "name": "iconamoon:shield-yes-bold", + "svg": "" + }, + { + "name": "iconamoon:shield-yes-duotone", + "svg": "" + }, + { + "name": "iconamoon:shield-yes-fill", + "svg": "" + }, + { + "name": "iconamoon:shield-yes-light", + "svg": "" + }, + { + "name": "iconamoon:shield-yes-thin", + "svg": "" + }, + { + "name": "iconamoon:shopping-bag", + "svg": "" + }, + { + "name": "iconamoon:shopping-bag-bold", + "svg": "" + }, + { + "name": "iconamoon:shopping-bag-duotone", + "svg": "" + }, + { + "name": "iconamoon:shopping-bag-fill", + "svg": "" + }, + { + "name": "iconamoon:shopping-bag-light", + "svg": "" + }, + { + "name": "iconamoon:shopping-bag-thin", + "svg": "" + }, + { + "name": "iconamoon:shopping-card", + "svg": "" + }, + { + "name": "iconamoon:shopping-card-add", + "svg": "" + }, + { + "name": "iconamoon:shopping-card-add-bold", + "svg": "" + }, + { + "name": "iconamoon:shopping-card-add-duotone", + "svg": "" + }, + { + "name": "iconamoon:shopping-card-add-fill", + "svg": "" + }, + { + "name": "iconamoon:shopping-card-add-light", + "svg": "" + }, + { + "name": "iconamoon:shopping-card-add-thin", + "svg": "" + }, + { + "name": "iconamoon:shopping-card-bold", + "svg": "" + }, + { + "name": "iconamoon:shopping-card-duotone", + "svg": "" + }, + { + "name": "iconamoon:shopping-card-fill", + "svg": "" + }, + { + "name": "iconamoon:shopping-card-light", + "svg": "" + }, + { + "name": "iconamoon:shopping-card-remove", + "svg": "" + }, + { + "name": "iconamoon:shopping-card-remove-bold", + "svg": "" + }, + { + "name": "iconamoon:shopping-card-remove-duotone", + "svg": "" + }, + { + "name": "iconamoon:shopping-card-remove-fill", + "svg": "" + }, + { + "name": "iconamoon:shopping-card-remove-light", + "svg": "" + }, + { + "name": "iconamoon:shopping-card-remove-thin", + "svg": "" + }, + { + "name": "iconamoon:shopping-card-thin", + "svg": "" + }, + { + "name": "iconamoon:sign-division", + "svg": "" + }, + { + "name": "iconamoon:sign-division-bold", + "svg": "" + }, + { + "name": "iconamoon:sign-division-circle", + "svg": "" + }, + { + "name": "iconamoon:sign-division-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:sign-division-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:sign-division-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:sign-division-circle-light", + "svg": "" + }, + { + "name": "iconamoon:sign-division-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:sign-division-duotone", + "svg": "" + }, + { + "name": "iconamoon:sign-division-fill", + "svg": "" + }, + { + "name": "iconamoon:sign-division-light", + "svg": "" + }, + { + "name": "iconamoon:sign-division-slash", + "svg": "" + }, + { + "name": "iconamoon:sign-division-slash-bold", + "svg": "" + }, + { + "name": "iconamoon:sign-division-slash-fill", + "svg": "" + }, + { + "name": "iconamoon:sign-division-slash-light", + "svg": "" + }, + { + "name": "iconamoon:sign-division-slash-thin", + "svg": "" + }, + { + "name": "iconamoon:sign-division-square", + "svg": "" + }, + { + "name": "iconamoon:sign-division-square-bold", + "svg": "" + }, + { + "name": "iconamoon:sign-division-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:sign-division-square-fill", + "svg": "" + }, + { + "name": "iconamoon:sign-division-square-light", + "svg": "" + }, + { + "name": "iconamoon:sign-division-square-thin", + "svg": "" + }, + { + "name": "iconamoon:sign-division-thin", + "svg": "" + }, + { + "name": "iconamoon:sign-equal", + "svg": "" + }, + { + "name": "iconamoon:sign-equal-bold", + "svg": "" + }, + { + "name": "iconamoon:sign-equal-fill", + "svg": "" + }, + { + "name": "iconamoon:sign-equal-light", + "svg": "" + }, + { + "name": "iconamoon:sign-equal-thin", + "svg": "" + }, + { + "name": "iconamoon:sign-f", + "svg": "" + }, + { + "name": "iconamoon:sign-f-bold", + "svg": "" + }, + { + "name": "iconamoon:sign-f-fill", + "svg": "" + }, + { + "name": "iconamoon:sign-f-light", + "svg": "" + }, + { + "name": "iconamoon:sign-f-thin", + "svg": "" + }, + { + "name": "iconamoon:sign-factorial", + "svg": "" + }, + { + "name": "iconamoon:sign-factorial-bold", + "svg": "" + }, + { + "name": "iconamoon:sign-factorial-fill", + "svg": "" + }, + { + "name": "iconamoon:sign-factorial-light", + "svg": "" + }, + { + "name": "iconamoon:sign-factorial-thin", + "svg": "" + }, + { + "name": "iconamoon:sign-lemniscate", + "svg": "" + }, + { + "name": "iconamoon:sign-lemniscate-bold", + "svg": "" + }, + { + "name": "iconamoon:sign-lemniscate-duotone", + "svg": "" + }, + { + "name": "iconamoon:sign-lemniscate-fill", + "svg": "" + }, + { + "name": "iconamoon:sign-lemniscate-light", + "svg": "" + }, + { + "name": "iconamoon:sign-lemniscate-thin", + "svg": "" + }, + { + "name": "iconamoon:sign-minus", + "svg": "" + }, + { + "name": "iconamoon:sign-minus-bold", + "svg": "" + }, + { + "name": "iconamoon:sign-minus-circle", + "svg": "" + }, + { + "name": "iconamoon:sign-minus-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:sign-minus-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:sign-minus-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:sign-minus-circle-light", + "svg": "" + }, + { + "name": "iconamoon:sign-minus-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:sign-minus-fill", + "svg": "" + }, + { + "name": "iconamoon:sign-minus-light", + "svg": "" + }, + { + "name": "iconamoon:sign-minus-square", + "svg": "" + }, + { + "name": "iconamoon:sign-minus-square-bold", + "svg": "" + }, + { + "name": "iconamoon:sign-minus-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:sign-minus-square-fill", + "svg": "" + }, + { + "name": "iconamoon:sign-minus-square-light", + "svg": "" + }, + { + "name": "iconamoon:sign-minus-square-thin", + "svg": "" + }, + { + "name": "iconamoon:sign-minus-thin", + "svg": "" + }, + { + "name": "iconamoon:sign-percent", + "svg": "" + }, + { + "name": "iconamoon:sign-percent-bold", + "svg": "" + }, + { + "name": "iconamoon:sign-percent-fill", + "svg": "" + }, + { + "name": "iconamoon:sign-percent-light", + "svg": "" + }, + { + "name": "iconamoon:sign-percent-thin", + "svg": "" + }, + { + "name": "iconamoon:sign-pi", + "svg": "" + }, + { + "name": "iconamoon:sign-pi-bold", + "svg": "" + }, + { + "name": "iconamoon:sign-pi-fill", + "svg": "" + }, + { + "name": "iconamoon:sign-pi-light", + "svg": "" + }, + { + "name": "iconamoon:sign-pi-thin", + "svg": "" + }, + { + "name": "iconamoon:sign-plus", + "svg": "" + }, + { + "name": "iconamoon:sign-plus-bold", + "svg": "" + }, + { + "name": "iconamoon:sign-plus-circle", + "svg": "" + }, + { + "name": "iconamoon:sign-plus-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:sign-plus-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:sign-plus-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:sign-plus-circle-light", + "svg": "" + }, + { + "name": "iconamoon:sign-plus-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:sign-plus-fill", + "svg": "" + }, + { + "name": "iconamoon:sign-plus-light", + "svg": "" + }, + { + "name": "iconamoon:sign-plus-minus", + "svg": "" + }, + { + "name": "iconamoon:sign-plus-minus-bold", + "svg": "" + }, + { + "name": "iconamoon:sign-plus-minus-fill", + "svg": "" + }, + { + "name": "iconamoon:sign-plus-minus-light", + "svg": "" + }, + { + "name": "iconamoon:sign-plus-minus-thin", + "svg": "" + }, + { + "name": "iconamoon:sign-plus-square", + "svg": "" + }, + { + "name": "iconamoon:sign-plus-square-bold", + "svg": "" + }, + { + "name": "iconamoon:sign-plus-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:sign-plus-square-fill", + "svg": "" + }, + { + "name": "iconamoon:sign-plus-square-light", + "svg": "" + }, + { + "name": "iconamoon:sign-plus-square-thin", + "svg": "" + }, + { + "name": "iconamoon:sign-plus-thin", + "svg": "" + }, + { + "name": "iconamoon:sign-radical", + "svg": "" + }, + { + "name": "iconamoon:sign-radical-bold", + "svg": "" + }, + { + "name": "iconamoon:sign-radical-fill", + "svg": "" + }, + { + "name": "iconamoon:sign-radical-light", + "svg": "" + }, + { + "name": "iconamoon:sign-radical-thin", + "svg": "" + }, + { + "name": "iconamoon:sign-times", + "svg": "" + }, + { + "name": "iconamoon:sign-times-bold", + "svg": "" + }, + { + "name": "iconamoon:sign-times-circle", + "svg": "" + }, + { + "name": "iconamoon:sign-times-circle-bold", + "svg": "" + }, + { + "name": "iconamoon:sign-times-circle-duotone", + "svg": "" + }, + { + "name": "iconamoon:sign-times-circle-fill", + "svg": "" + }, + { + "name": "iconamoon:sign-times-circle-light", + "svg": "" + }, + { + "name": "iconamoon:sign-times-circle-thin", + "svg": "" + }, + { + "name": "iconamoon:sign-times-duotone", + "svg": "" + }, + { + "name": "iconamoon:sign-times-fill", + "svg": "" + }, + { + "name": "iconamoon:sign-times-light", + "svg": "" + }, + { + "name": "iconamoon:sign-times-square", + "svg": "" + }, + { + "name": "iconamoon:sign-times-square-bold", + "svg": "" + }, + { + "name": "iconamoon:sign-times-square-duotone", + "svg": "" + }, + { + "name": "iconamoon:sign-times-square-fill", + "svg": "" + }, + { + "name": "iconamoon:sign-times-square-light", + "svg": "" + }, + { + "name": "iconamoon:sign-times-square-thin", + "svg": "" + }, + { + "name": "iconamoon:sign-times-thin", + "svg": "" + }, + { + "name": "iconamoon:sign-x", + "svg": "" + }, + { + "name": "iconamoon:sign-x-bold", + "svg": "" + }, + { + "name": "iconamoon:sign-x-fill", + "svg": "" + }, + { + "name": "iconamoon:sign-x-light", + "svg": "" + }, + { + "name": "iconamoon:sign-x-thin", + "svg": "" + }, + { + "name": "iconamoon:sign-y", + "svg": "" + }, + { + "name": "iconamoon:sign-y-bold", + "svg": "" + }, + { + "name": "iconamoon:sign-y-fill", + "svg": "" + }, + { + "name": "iconamoon:sign-y-light", + "svg": "" + }, + { + "name": "iconamoon:sign-y-thin", + "svg": "" + }, + { + "name": "iconamoon:slightly-smiling-face", + "svg": "" + }, + { + "name": "iconamoon:slightly-smiling-face-bold", + "svg": "" + }, + { + "name": "iconamoon:slightly-smiling-face-duotone", + "svg": "" + }, + { + "name": "iconamoon:slightly-smiling-face-fill", + "svg": "" + }, + { + "name": "iconamoon:slightly-smiling-face-light", + "svg": "" + }, + { + "name": "iconamoon:slightly-smiling-face-thin", + "svg": "" + }, + { + "name": "iconamoon:smiling-face", + "svg": "" + }, + { + "name": "iconamoon:smiling-face-bold", + "svg": "" + }, + { + "name": "iconamoon:smiling-face-duotone", + "svg": "" + }, + { + "name": "iconamoon:smiling-face-fill", + "svg": "" + }, + { + "name": "iconamoon:smiling-face-light", + "svg": "" + }, + { + "name": "iconamoon:smiling-face-thin", + "svg": "" + }, + { + "name": "iconamoon:sorting-center", + "svg": "" + }, + { + "name": "iconamoon:sorting-center-bold", + "svg": "" + }, + { + "name": "iconamoon:sorting-center-duotone", + "svg": "" + }, + { + "name": "iconamoon:sorting-center-fill", + "svg": "" + }, + { + "name": "iconamoon:sorting-center-light", + "svg": "" + }, + { + "name": "iconamoon:sorting-center-thin", + "svg": "" + }, + { + "name": "iconamoon:sorting-left", + "svg": "" + }, + { + "name": "iconamoon:sorting-left-bold", + "svg": "" + }, + { + "name": "iconamoon:sorting-left-duotone", + "svg": "" + }, + { + "name": "iconamoon:sorting-left-fill", + "svg": "" + }, + { + "name": "iconamoon:sorting-left-light", + "svg": "" + }, + { + "name": "iconamoon:sorting-left-thin", + "svg": "" + }, + { + "name": "iconamoon:sorting-right", + "svg": "" + }, + { + "name": "iconamoon:sorting-right-bold", + "svg": "" + }, + { + "name": "iconamoon:sorting-right-duotone", + "svg": "" + }, + { + "name": "iconamoon:sorting-right-fill", + "svg": "" + }, + { + "name": "iconamoon:sorting-right-light", + "svg": "" + }, + { + "name": "iconamoon:sorting-right-thin", + "svg": "" + }, + { + "name": "iconamoon:squinting-face", + "svg": "" + }, + { + "name": "iconamoon:squinting-face-bold", + "svg": "" + }, + { + "name": "iconamoon:squinting-face-duotone", + "svg": "" + }, + { + "name": "iconamoon:squinting-face-fill", + "svg": "" + }, + { + "name": "iconamoon:squinting-face-light", + "svg": "" + }, + { + "name": "iconamoon:squinting-face-thin", + "svg": "" + }, + { + "name": "iconamoon:star", + "svg": "" + }, + { + "name": "iconamoon:star-bold", + "svg": "" + }, + { + "name": "iconamoon:star-duotone", + "svg": "" + }, + { + "name": "iconamoon:star-fill", + "svg": "" + }, + { + "name": "iconamoon:star-light", + "svg": "" + }, + { + "name": "iconamoon:star-off", + "svg": "" + }, + { + "name": "iconamoon:star-off-bold", + "svg": "" + }, + { + "name": "iconamoon:star-off-duotone", + "svg": "" + }, + { + "name": "iconamoon:star-off-fill", + "svg": "" + }, + { + "name": "iconamoon:star-off-light", + "svg": "" + }, + { + "name": "iconamoon:star-off-thin", + "svg": "" + }, + { + "name": "iconamoon:star-thin", + "svg": "" + }, + { + "name": "iconamoon:store", + "svg": "" + }, + { + "name": "iconamoon:store-bold", + "svg": "" + }, + { + "name": "iconamoon:store-duotone", + "svg": "" + }, + { + "name": "iconamoon:store-fill", + "svg": "" + }, + { + "name": "iconamoon:store-light", + "svg": "" + }, + { + "name": "iconamoon:store-thin", + "svg": "" + }, + { + "name": "iconamoon:swap", + "svg": "" + }, + { + "name": "iconamoon:swap-bold", + "svg": "" + }, + { + "name": "iconamoon:swap-fill", + "svg": "" + }, + { + "name": "iconamoon:swap-light", + "svg": "" + }, + { + "name": "iconamoon:swap-thin", + "svg": "" + }, + { + "name": "iconamoon:synchronize", + "svg": "" + }, + { + "name": "iconamoon:synchronize-bold", + "svg": "" + }, + { + "name": "iconamoon:synchronize-duotone", + "svg": "" + }, + { + "name": "iconamoon:synchronize-fill", + "svg": "" + }, + { + "name": "iconamoon:synchronize-light", + "svg": "" + }, + { + "name": "iconamoon:synchronize-thin", + "svg": "" + }, + { + "name": "iconamoon:ticket", + "svg": "" + }, + { + "name": "iconamoon:ticket-bold", + "svg": "" + }, + { + "name": "iconamoon:ticket-duotone", + "svg": "" + }, + { + "name": "iconamoon:ticket-fill", + "svg": "" + }, + { + "name": "iconamoon:ticket-light", + "svg": "" + }, + { + "name": "iconamoon:ticket-thin", + "svg": "" + }, + { + "name": "iconamoon:trash", + "svg": "" + }, + { + "name": "iconamoon:trash-bold", + "svg": "" + }, + { + "name": "iconamoon:trash-duotone", + "svg": "" + }, + { + "name": "iconamoon:trash-fill", + "svg": "" + }, + { + "name": "iconamoon:trash-light", + "svg": "" + }, + { + "name": "iconamoon:trash-simple", + "svg": "" + }, + { + "name": "iconamoon:trash-simple-bold", + "svg": "" + }, + { + "name": "iconamoon:trash-simple-duotone", + "svg": "" + }, + { + "name": "iconamoon:trash-simple-fill", + "svg": "" + }, + { + "name": "iconamoon:trash-simple-light", + "svg": "" + }, + { + "name": "iconamoon:trash-simple-thin", + "svg": "" + }, + { + "name": "iconamoon:trash-thin", + "svg": "" + }, + { + "name": "iconamoon:trend-down", + "svg": "" + }, + { + "name": "iconamoon:trend-down-bold", + "svg": "" + }, + { + "name": "iconamoon:trend-down-fill", + "svg": "" + }, + { + "name": "iconamoon:trend-down-light", + "svg": "" + }, + { + "name": "iconamoon:trend-down-thin", + "svg": "" + }, + { + "name": "iconamoon:trend-up", + "svg": "" + }, + { + "name": "iconamoon:trend-up-bold", + "svg": "" + }, + { + "name": "iconamoon:trend-up-fill", + "svg": "" + }, + { + "name": "iconamoon:trend-up-light", + "svg": "" + }, + { + "name": "iconamoon:trend-up-thin", + "svg": "" + }, + { + "name": "iconamoon:type", + "svg": "" + }, + { + "name": "iconamoon:type-bold", + "svg": "" + }, + { + "name": "iconamoon:type-duotone", + "svg": "" + }, + { + "name": "iconamoon:type-fill", + "svg": "" + }, + { + "name": "iconamoon:type-light", + "svg": "" + }, + { + "name": "iconamoon:type-thin", + "svg": "" + }, + { + "name": "iconamoon:unavailable", + "svg": "" + }, + { + "name": "iconamoon:unavailable-bold", + "svg": "" + }, + { + "name": "iconamoon:unavailable-duotone", + "svg": "" + }, + { + "name": "iconamoon:unavailable-fill", + "svg": "" + }, + { + "name": "iconamoon:unavailable-light", + "svg": "" + }, + { + "name": "iconamoon:unavailable-thin", + "svg": "" + }, + { + "name": "iconamoon:upload", + "svg": "" + }, + { + "name": "iconamoon:upload-bold", + "svg": "" + }, + { + "name": "iconamoon:upload-fill", + "svg": "" + }, + { + "name": "iconamoon:upload-light", + "svg": "" + }, + { + "name": "iconamoon:upload-thin", + "svg": "" + }, + { + "name": "iconamoon:upside-down-face", + "svg": "" + }, + { + "name": "iconamoon:upside-down-face-bold", + "svg": "" + }, + { + "name": "iconamoon:upside-down-face-duotone", + "svg": "" + }, + { + "name": "iconamoon:upside-down-face-fill", + "svg": "" + }, + { + "name": "iconamoon:upside-down-face-light", + "svg": "" + }, + { + "name": "iconamoon:upside-down-face-thin", + "svg": "" + }, + { + "name": "iconamoon:volume-down", + "svg": "" + }, + { + "name": "iconamoon:volume-down-bold", + "svg": "" + }, + { + "name": "iconamoon:volume-down-duotone", + "svg": "" + }, + { + "name": "iconamoon:volume-down-fill", + "svg": "" + }, + { + "name": "iconamoon:volume-down-light", + "svg": "" + }, + { + "name": "iconamoon:volume-down-thin", + "svg": "" + }, + { + "name": "iconamoon:volume-off", + "svg": "" + }, + { + "name": "iconamoon:volume-off-bold", + "svg": "" + }, + { + "name": "iconamoon:volume-off-duotone", + "svg": "" + }, + { + "name": "iconamoon:volume-off-fill", + "svg": "" + }, + { + "name": "iconamoon:volume-off-light", + "svg": "" + }, + { + "name": "iconamoon:volume-off-thin", + "svg": "" + }, + { + "name": "iconamoon:volume-up", + "svg": "" + }, + { + "name": "iconamoon:volume-up-bold", + "svg": "" + }, + { + "name": "iconamoon:volume-up-duotone", + "svg": "" + }, + { + "name": "iconamoon:volume-up-fill", + "svg": "" + }, + { + "name": "iconamoon:volume-up-light", + "svg": "" + }, + { + "name": "iconamoon:volume-up-thin", + "svg": "" + }, + { + "name": "iconamoon:winking-face", + "svg": "" + }, + { + "name": "iconamoon:winking-face-bold", + "svg": "" + }, + { + "name": "iconamoon:winking-face-duotone", + "svg": "" + }, + { + "name": "iconamoon:winking-face-fill", + "svg": "" + }, + { + "name": "iconamoon:winking-face-light", + "svg": "" + }, + { + "name": "iconamoon:winking-face-thin", + "svg": "" + }, + { + "name": "iconamoon:zoom-in", + "svg": "" + }, + { + "name": "iconamoon:zoom-in-bold", + "svg": "" + }, + { + "name": "iconamoon:zoom-in-duotone", + "svg": "" + }, + { + "name": "iconamoon:zoom-in-fill", + "svg": "" + }, + { + "name": "iconamoon:zoom-in-light", + "svg": "" + }, + { + "name": "iconamoon:zoom-in-thin", + "svg": "" + }, + { + "name": "iconamoon:zoom-out", + "svg": "" + }, + { + "name": "iconamoon:zoom-out-bold", + "svg": "" + }, + { + "name": "iconamoon:zoom-out-duotone", + "svg": "" + }, + { + "name": "iconamoon:zoom-out-fill", + "svg": "" + }, + { + "name": "iconamoon:zoom-out-light", + "svg": "" + }, + { + "name": "iconamoon:zoom-out-thin", + "svg": "" + } +] \ No newline at end of file diff --git a/assets/style/css/base/theme.css b/assets/style/css/base/theme.css new file mode 100644 index 0000000..a6c095c --- /dev/null +++ b/assets/style/css/base/theme.css @@ -0,0 +1,268 @@ +html[data-theme="biasa"] { + --color-primary: 0, 165, 154; + --color-secondary: 97, 176, 183; + --color-accent: 243, 244, 246; + --color-success: 79, 192, 103; + --color-info: 65, 133, 242; + --color-warning: 246, 141, 32; + --color-danger: 229, 83, 69; + --text-color: 9, 9, 11; + --border-color: 228, 228, 231; + --bg-1: 243, 244, 246; + --bg-2: 255, 255, 255; + --sidebar: 38, 50, 55; + --sidebar-menu: 26, 35, 38; + --sidebar-text: 255, 255, 255; + --header: 49, 65, 71; + --header-text: 255, 255, 255; + --scroll-color: 170, 170, 170; + --scroll-hover-color: 155, 155, 155; + --fk-border-color: 228, 228, 231; + --fk-placeholder-color: 146, 146, 153; + --box-shadow: rgba(36, 35, 71, 0.05) 0px 1px 1px, + rgba(36, 35, 71, 0.05) 0px 0px 1px 1px; + --cp-bg: 255, 255, 255; + --rounded-box: 0.2rem; + --rounded-btn: 0.2rem; + --rounded-badge: 1.9rem; + --animation-btn: 0.25s; + --animation-input: 0.2s; + --btn-text-case: uppercase; + --btn-focus-scale: 0.95; + --padding-btn: 0.5rem; + --border-btn: 1px; + --tab-border: 1px; + --tab-radius: 0.5rem; + --tw-shadow: #e5eaf2; +} + +html[data-theme="gelap"] { + --color-primary: 97, 176, 183; + --color-secondary: 13, 27, 42; + --color-accent: 15, 23, 42; + --color-success: 79, 192, 103; + --color-info: 65, 133, 242; + --color-warning: 246, 141, 32; + --color-danger: 229, 83, 69; + --text-color: 209, 213, 219; + --border-color: 30, 41, 59; + --bg-1: 15, 23, 42; + --bg-2: 30, 41, 59; + --sidebar: 38, 50, 55; + --sidebar-menu: 26, 35, 38; + --sidebar-text: 255, 255, 255; + --header: 49, 65, 71; + --header-text: 255, 255, 255; + --scroll-color: 170, 170, 170; + --scroll-hover-color: 155, 155, 155; + --fk-border-color: 71, 85, 105; + --fk-placeholder-color: 71, 85, 105; + --box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); + --cp-bg: 255, 255, 255; + --rounded-box: 0.5rem; + --rounded-btn: 0.5rem; + --rounded-badge: 1.9rem; + --animation-btn: 0.25s; + --animation-input: 0.2s; + --btn-text-case: uppercase; + --btn-focus-scale: 0.95; + --padding-btn: 0.625rem 1.5rem; + --border-btn: 1px; + --tab-border: 1px; + --tab-radius: 0.5rem; + --tw-shadow: #e5eaf2; +} + +html[data-theme="biru"] { + --color-primary: 0, 102, 204; + --color-secondary: 51, 153, 255; + --color-accent: 255, 204, 0; + --color-success: 46, 204, 113; + --color-info: 52, 152, 219; + --color-warning: 246, 141, 32; + --color-danger: 231, 76, 60; + --text-color: 0, 0, 0; + --border-color: 200, 200, 200; + --bg-1: 240, 248, 255; + --bg-2: 230, 240, 250; + --sidebar: 38, 50, 55; + --sidebar-menu: 26, 35, 38; + --sidebar-text: 255, 255, 255; + --header: 49, 65, 71; + --header-text: 255, 255, 255; + --scroll-color: 180, 180, 180; + --scroll-hover-color: 150, 150, 150; + --fk-border-color: 200, 200, 200; + --fk-placeholder-color: 150, 150, 150; + --box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), + 0 2px 4px -2px rgba(0, 0, 0, 0.1); + --cp-bg: 255, 255, 255; + --rounded-box: 0.5rem; + --rounded-btn: 0.5rem; + --rounded-badge: 1.9rem; + --animation-btn: 0.25s; + --animation-input: 0.2s; + --btn-text-case: uppercase; + --btn-focus-scale: 0.95; + --padding-btn: 0.625rem 1.5rem; + --border-btn: 1px; + --tab-border: 1px; + --tab-radius: 0.5rem; + --tw-shadow: #e5eaf2; +} + +html[data-theme="merah"] { + --color-primary: 204, 0, 0; + --color-secondary: 255, 102, 102; + --color-accent: 255, 255, 153; + --color-success: 46, 204, 113; + --color-info: 52, 152, 219; + --color-warning: 246, 141, 32; + --color-danger: 231, 76, 60; + --text-color: 0, 0, 0; + --border-color: 200, 200, 200; + --bg-1: 255, 240, 240; + --bg-2: 255, 230, 230; + --sidebar: 38, 50, 55; + --sidebar-menu: 26, 35, 38; + --sidebar-text: 255, 255, 255; + --header: 49, 65, 71; + --header-text: 255, 255, 255; + --scroll-color: 180, 180, 180; + --scroll-hover-color: 150, 150, 150; + --fk-border-color: 200, 200, 200; + --fk-placeholder-color: 150, 150, 150; + --box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), + 0 2px 4px -2px rgba(0, 0, 0, 0.1); + --cp-bg: 255, 255, 255; + --rounded-box: 0.5rem; + --rounded-btn: 0.5rem; + --rounded-badge: 1.9rem; + --animation-btn: 0.25s; + --animation-input: 0.2s; + --btn-text-case: uppercase; + --btn-focus-scale: 0.95; + --padding-btn: 0.625rem 1.5rem; + --border-btn: 1px; + --tab-border: 1px; + --tab-radius: 0.5rem; + --tw-shadow: #e5eaf2; +} + +html[data-theme="ungu"] { + --color-primary: 75, 0, 130; + --color-secondary: 138, 43, 226; + --color-accent: 255, 215, 0; + --color-success: 46, 204, 113; + --color-info: 52, 152, 219; + --color-warning: 246, 141, 32; + --color-danger: 231, 76, 60; + --text-color: 0, 0, 0; + --border-color: 200, 200, 200; + --bg-1: 240, 248, 255; + --bg-2: 230, 240, 250; + --sidebar: 38, 50, 55; + --sidebar-menu: 26, 35, 38; + --sidebar-text: 255, 255, 255; + --header: 49, 65, 71; + --header-text: 255, 255, 255; + --scroll-color: 180, 180, 180; + --scroll-hover-color: 150, 150, 150; + --fk-border-color: 200, 200, 200; + --fk-placeholder-color: 150, 150, 150; + --box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), + 0 2px 4px -2px rgba(0, 0, 0, 0.1); + --cp-bg: 255, 255, 255; + --rounded-box: 0.5rem; + --rounded-btn: 0.5rem; + --rounded-badge: 1.9rem; + --animation-btn: 0.25s; + --animation-input: 0.2s; + --btn-text-case: uppercase; + --btn-focus-scale: 0.95; + --padding-btn: 0.625rem 1.5rem; + --border-btn: 1px; + --tab-border: 1px; + --tab-radius: 0.5rem; + --tw-shadow: #e5eaf2; +} + +html[data-theme="oren"] { + --color-primary: 255, 103, 0; + --color-secondary: 255, 159, 64; + --color-accent: 0, 128, 128; + --color-success: 46, 204, 113; + --color-info: 52, 152, 219; + --color-warning: 246, 141, 32; + --color-danger: 231, 76, 60; + --text-color: 0, 0, 0; + --border-color: 200, 200, 200; + --bg-1: 255, 250, 240; + --bg-2: 255, 245, 230; + --sidebar: 38, 50, 55; + --sidebar-menu: 26, 35, 38; + --sidebar-text: 255, 255, 255; + --header: 49, 65, 71; + --header-text: 255, 255, 255; + --scroll-color: 180, 180, 180; + --scroll-hover-color: 150, 150, 150; + --fk-border-color: 200, 200, 200; + --fk-placeholder-color: 150, 150, 150; + --box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), + 0 2px 4px -2px rgba(0, 0, 0, 0.1); + --cp-bg: 255, 255, 255; + --rounded-box: 0.5rem; + --rounded-btn: 0.5rem; + --rounded-badge: 1.9rem; + --animation-btn: 0.25s; + --animation-input: 0.2s; + --btn-text-case: uppercase; + --btn-focus-scale: 0.95; + --padding-btn: 0.625rem 1.5rem; + --border-btn: 1px; + --tab-border: 1px; + --tab-radius: 0.5rem; + --tw-shadow: #e5eaf2; +} + +html[data-theme="LZS"] { + --color-primary: 0, 90, 173; /* #005AAD - Blue */ + --color-secondary: 141, 199, 61; /* #8DC73D - Green */ + --color-accent: 255, 242, 0; /* #FFF200 - Yellow */ + --color-success: 141, 199, 61; /* Using the green for success */ + --color-info: 0, 90, 173; /* Using the blue for info */ + --color-warning: 246, 141, 32; /* Using consistent orange for warning */ + --color-danger: 229, 83, 69; /* Keeping original red for danger */ + --text-color: 0, 0, 0; /* Black text */ + --border-color: 220, 220, 220; /* Light gray for borders */ + --bg-1: 245, 250, 255; /* Very light blue background */ + --bg-2: 255, 255, 255; /* White background */ + --sidebar: 0, 58, 112; /* Darker blue for sidebar - #003A70 */ + --sidebar-menu: 0, 40, 77; /* Even darker blue for sidebar menu - #00284D */ + --sidebar-text: 255, 255, 255; /* White text for sidebar */ + --header: 0, 90, 173; /* Blue header - #005AAD */ + --header-text: 255, 255, 255; /* White text for header */ + --scroll-color: 180, 180, 180; /* Gray scrollbar */ + --scroll-hover-color: 150, 150, 150; /* Darker gray on hover */ + --fk-border-color: 220, 220, 220; /* Light gray for form borders */ + --fk-placeholder-color: 150, 150, 150; /* Gray for placeholders */ + --box-shadow: rgba(0, 90, 173, 0.1) 0px 1px 2px, + rgba(0, 90, 173, 0.08) 0px 0px 2px; /* Blue-tinted shadow */ + --cp-bg: 255, 255, 255; /* White background */ + --rounded-box: 0.5rem; + --rounded-btn: 0.5rem; + --rounded-badge: 1.9rem; + --animation-btn: 0.25s; + --animation-input: 0.2s; + --btn-text-case: uppercase; + --btn-focus-scale: 0.95; + --padding-btn: 0.625rem 1.5rem; + --border-btn: 1px; + --tab-border: 1px; + --tab-radius: 0.5rem; + /* Yellow accents in specific UI elements */ + --active-menu-bg: 255, 242, 0, 0.1; /* Subtle yellow background for active menu items */ + --active-menu-border: 255, 242, 0; /* Yellow border for active menu items */ + --focus-ring: 255, 242, 0, 0.5; /* Yellow focus ring */ + --tw-shadow: #e5eaf2; +} diff --git a/assets/style/css/component/alert.css b/assets/style/css/component/alert.css new file mode 100644 index 0000000..5be607f --- /dev/null +++ b/assets/style/css/component/alert.css @@ -0,0 +1,28 @@ +/* RS Alert Component */ +.alert { + @apply visible flex items-center justify-between py-3 px-3 rounded-lg; +} + +.alert.alert-primary { + @apply bg-primary/20 text-primary; +} + +.alert.alert-secondary { + @apply bg-secondary/20 text-secondary; +} + +.alert.alert-success { + @apply bg-success/20 text-success; +} + +.alert.alert-info { + @apply bg-info/20 text-info; +} + +.alert.alert-warning { + @apply bg-warning/20 text-warning; +} + +.alert.alert-danger { + @apply bg-danger/20 text-danger; +} diff --git a/assets/style/css/component/badge.css b/assets/style/css/component/badge.css new file mode 100644 index 0000000..85fe604 --- /dev/null +++ b/assets/style/css/component/badge.css @@ -0,0 +1,32 @@ +/* RS Badge Component */ +.badge { + @apply inline-flex items-center justify-center px-2 py-1 rounded-full text-xs font-semibold leading-none; +} + +.badge.badge-primary { + @apply bg-primary text-white; +} + +.badge.badge-secondary { + @apply bg-secondary text-white; +} + +.badge.badge-success { + @apply bg-success text-white; +} + +.badge.badge-info { + @apply bg-info text-white; +} + +.badge.badge-warning { + @apply bg-warning text-white; +} + +.badge.badge-danger { + @apply bg-danger text-white; +} + +.badge.badge-disabled { + @apply bg-gray-300 text-gray-600; +} diff --git a/assets/style/css/component/button.css b/assets/style/css/component/button.css new file mode 100644 index 0000000..b783216 --- /dev/null +++ b/assets/style/css/component/button.css @@ -0,0 +1,323 @@ +/* RS Button */ +.button { + @apply w-fit rounded-lg flex justify-center items-center h-fit; + transition: all 0.2s ease; + position: relative; + overflow: hidden; +} + +/* Enhanced hover effect with slight 3D transition */ +.button[class*="button-"]:hover { + transform: translateY(-2px); + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15); +} + +.button[class*="button-"]:active { + transform: translateY(0px); + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); +} + +.button[class*="button-"]:disabled { + opacity: 0.3; + cursor: not-allowed; + transform: none; + box-shadow: none; +} + +/* Primary Button - Blue with yellow accent */ +.button.button-primary { + @apply bg-primary text-white; + box-shadow: 0 2px 4px rgba(var(--color-primary), 0.3), + inset 0 1px 0 rgba(255, 255, 255, 0.2); + border: 1px solid rgba(var(--color-primary), 0.8); +} + +.button.button-primary:hover::after { + content: ""; + position: absolute; + bottom: 0; + left: 0; + right: 0; + height: 3px; + background-color: rgb(var(--active-menu-border)); + animation: slide-in 0.3s ease forwards; +} + +@keyframes slide-in { + 0% { transform: scaleX(0); opacity: 0; } + 100% { transform: scaleX(1); opacity: 1; } +} + +.button.button-secondary { + @apply bg-secondary text-white; + box-shadow: 0 2px 4px rgba(var(--color-secondary), 0.3), + inset 0 1px 0 rgba(255, 255, 255, 0.2); + border: 1px solid rgba(var(--color-secondary), 0.8); +} + +.button.button-success { + @apply bg-success text-white; + box-shadow: 0 2px 4px rgba(var(--color-success), 0.3), + inset 0 1px 0 rgba(255, 255, 255, 0.2); + border: 1px solid rgba(var(--color-success), 0.8); +} + +.button.button-info { + @apply bg-info text-white; + box-shadow: 0 2px 4px rgba(var(--color-info), 0.3), + inset 0 1px 0 rgba(255, 255, 255, 0.2); + border: 1px solid rgba(var(--color-info), 0.8); +} + +.button.button-warning { + @apply bg-warning text-white; + box-shadow: 0 2px 4px rgba(var(--color-warning), 0.3), + inset 0 1px 0 rgba(255, 255, 255, 0.2); + border: 1px solid rgba(var(--color-warning), 0.8); +} + +.button.button-danger { + @apply bg-danger text-white; + box-shadow: 0 2px 4px rgba(var(--color-danger), 0.3), + inset 0 1px 0 rgba(255, 255, 255, 0.2); + border: 1px solid rgba(var(--color-danger), 0.8); +} + +/* Updated outline buttons */ +.button[class*="outline-"]:disabled { + opacity: 0.3; + cursor: not-allowed; +} + +.button.outline-primary { + @apply border border-primary text-primary; + box-shadow: 0 1px 3px rgba(var(--color-primary), 0.1); +} + +.button.outline-primary:hover { + @apply bg-primary/5; + box-shadow: 0 3px 6px rgba(var(--color-primary), 0.2); + transform: translateY(-1px); +} + +.button.outline-secondary { + @apply border border-secondary text-secondary; + box-shadow: 0 1px 3px rgba(var(--color-secondary), 0.1); +} + +.button.outline-secondary:hover { + @apply bg-secondary/5; + box-shadow: 0 3px 6px rgba(var(--color-secondary), 0.2); + transform: translateY(-1px); +} + +.button.outline-success { + @apply border border-success text-success; + box-shadow: 0 1px 3px rgba(var(--color-success), 0.1); +} + +.button.outline-success:hover { + @apply bg-success/5; + box-shadow: 0 3px 6px rgba(var(--color-success), 0.2); + transform: translateY(-1px); +} + +.button.outline-info { + @apply border border-info text-info; + box-shadow: 0 1px 3px rgba(var(--color-info), 0.1); +} + +.button.outline-info:hover { + @apply bg-info/5; + box-shadow: 0 3px 6px rgba(var(--color-info), 0.2); + transform: translateY(-1px); +} + +.button.outline-warning { + @apply border border-warning text-warning; + box-shadow: 0 1px 3px rgba(var(--color-warning), 0.1); +} + +.button.outline-warning:hover { + @apply bg-warning/5; + box-shadow: 0 3px 6px rgba(var(--color-warning), 0.2); + transform: translateY(-1px); +} + +.button.outline-danger { + @apply border border-danger text-danger; + box-shadow: 0 1px 3px rgba(var(--color-danger), 0.1); +} + +.button.outline-danger:hover { + @apply bg-danger/5; + box-shadow: 0 3px 6px rgba(var(--color-danger), 0.2); + transform: translateY(-1px); +} + +.button[class*="text-"]:disabled { + opacity: 0.3; + cursor: not-allowed; +} + +.button.texts-primary { + @apply text-primary; + position: relative; +} + +.button.texts-primary:hover { + @apply bg-primary/10; +} + +.button.texts-primary:after { + content: ''; + position: absolute; + width: 0; + height: 2px; + bottom: 0; + left: 0; + background-color: rgb(var(--color-primary)); + transition: width 0.3s ease; +} + +.button.texts-primary:hover:after { + width: 100%; +} + +.button.texts-secondary { + @apply text-secondary; + position: relative; +} + +.button.texts-secondary:hover { + @apply bg-secondary/10; +} + +.button.texts-secondary:after { + content: ''; + position: absolute; + width: 0; + height: 2px; + bottom: 0; + left: 0; + background-color: rgb(var(--color-secondary)); + transition: width 0.3s ease; +} + +.button.texts-secondary:hover:after { + width: 100%; +} + +.button.texts-success { + @apply text-success; + position: relative; +} + +.button.texts-success:hover { + @apply bg-success/10; +} + +.button.texts-success:after { + content: ''; + position: absolute; + width: 0; + height: 2px; + bottom: 0; + left: 0; + background-color: rgb(var(--color-success)); + transition: width 0.3s ease; +} + +.button.texts-success:hover:after { + width: 100%; +} + +.button.texts-info { + @apply text-info; + position: relative; +} + +.button.texts-info:hover { + @apply bg-info/10; +} + +.button.texts-info:after { + content: ''; + position: absolute; + width: 0; + height: 2px; + bottom: 0; + left: 0; + background-color: rgb(var(--color-info)); + transition: width 0.3s ease; +} + +.button.texts-info:hover:after { + width: 100%; +} + +.button.texts-warning { + @apply text-warning; + position: relative; +} + +.button.texts-warning:hover { + @apply bg-warning/10; +} + +.button.texts-warning:after { + content: ''; + position: absolute; + width: 0; + height: 2px; + bottom: 0; + left: 0; + background-color: rgb(var(--color-warning)); + transition: width 0.3s ease; +} + +.button.texts-warning:hover:after { + width: 100%; +} + +.button.texts-danger { + @apply text-danger; + position: relative; +} + +.button.texts-danger:hover { + @apply bg-danger/10; +} + +.button.texts-danger:after { + content: ''; + position: absolute; + width: 0; + height: 2px; + bottom: 0; + left: 0; + background-color: rgb(var(--color-danger)); + transition: width 0.3s ease; +} + +.button.texts-danger:hover:after { + width: 100%; +} + +.button-sm { + @apply text-xs; + padding: var(--padding-btn); + line-height: 1.4; +} + +.button-md { + @apply text-sm; + padding: var(--padding-btn); + line-height: 1.5; +} + +.button-lg { + @apply text-base; + padding: var(--padding-btn); + line-height: 1.6; +} diff --git a/assets/style/css/component/card.css b/assets/style/css/component/card.css new file mode 100644 index 0000000..398055e --- /dev/null +++ b/assets/style/css/component/card.css @@ -0,0 +1,24 @@ +/* RS Card Component */ +.card { + @apply mb-6; + background-color: rgb(var(--bg-2)); + border-radius: var(--rounded-box); + box-shadow: var(--box-shadow); +} + +.card .card-header { + @apply text-xl px-6 py-4 font-medium; + line-height: 1.5; + border-bottom: 1px solid rgb(var(--border-color)); +} + +.card .card-body { + @apply px-6 py-5; + line-height: 1.6; +} + +.card .card-footer { + @apply px-6 py-4; + line-height: 1.5; + border-top: 1px solid rgb(var(--border-color)); +} diff --git a/assets/style/css/component/collapse.css b/assets/style/css/component/collapse.css new file mode 100644 index 0000000..4f22bd9 --- /dev/null +++ b/assets/style/css/component/collapse.css @@ -0,0 +1,61 @@ +/* RS Collapse Component */ +.accordion { + @apply w-full mb-4 visible; + background-color: rgb(var(--bg-2)); +} + +.accordion.accordion-border { + @apply border-t border-x rounded-lg; + border-color: rgb(var(--border-color)); +} + +.accordion .accordion-group { + @apply overflow-hidden duration-300 dark:border-slate-700; + background-color: rgb(var(--bg-2)); +} + +.accordion .accordion-group.accordion-default { + @apply border-b; + border-color: rgb(var(--border-color)); +} + +.accordion .accordion-group.accordion-border { + @apply border-b last:rounded-b-lg; + border-color: rgb(var(--border-color)); +} + +.accordion .accordion-group.accordion-card { + @apply my-4; + box-shadow: var(--box-shadow); +} + +.accordion .accordion-group .accordion-header { + @apply text-lg font-medium px-5 pr-10 py-4 cursor-pointer; +} + +.accordion .accordion-group .accordion-body { + @apply px-5 pb-4 pt-2; +} + +.accordion-group .accordion-header { + position: relative; +} + +.accordion-group .accordion-header::after { + content: ""; + position: absolute; + width: 19px; + height: 19px; + top: 50%; + right: 0%; + transform: translate(-100%, -50%) rotate(0deg); + background: url("/assets/img/icon/chevron-right.svg"); + background-position: center center; + background-repeat: no-repeat; + background-size: cover; + transition: 0.25s ease-in-out; +} + +.accordion-group--open .accordion-header::after { + transform: translate(-100%, -50%) rotate(90deg); +} diff --git a/assets/style/css/component/common.css b/assets/style/css/component/common.css new file mode 100644 index 0000000..0ee9884 --- /dev/null +++ b/assets/style/css/component/common.css @@ -0,0 +1,40 @@ +body { + color: rgb(var(--text-color)); + background-color: rgb(var(--bg-1)); +} + +.w-header { + @apply z-20 fixed top-0 right-0 px-5 py-3 duration-300 shadow-md; + background-color: rgb(var(--header)); + color: rgb(var(--header-text)); + box-shadow: var(--box-shadow); +} + +.w-header-search { + @apply px-4 z-40 duration-300 shadow-md -top-20 focus-within:top-0 right-0; + background-color: rgb(var(--bg-2)); +} + +.vertical-menu { + @apply text-base h-screen fixed w-64 top-0 z-50 duration-300 border-l-0 shadow-md; + background-color: rgb(var(--sidebar)); + color: rgb(var(--sidebar-text)); + box-shadow: var(--box-shadow); +} + +.icon-btn { + @apply flex + items-center + justify-center + transition-colors + duration-300; + color: rgb(var(--header-text)); +} + +.icon-btn.profile { + color: rgb(var(--header-text)); +} + +.icon-btn:hover { + background-color: rgb(var(--sidebar)); +} diff --git a/assets/style/css/component/dropdown.css b/assets/style/css/component/dropdown.css new file mode 100644 index 0000000..fde209d --- /dev/null +++ b/assets/style/css/component/dropdown.css @@ -0,0 +1,53 @@ +/* RS Dropdown Component */ +.dropdown { + @apply relative inline-flex; +} + +.dropdown .dropdown-section { + @apply absolute z-10 shadow-md rounded-lg py-1 whitespace-nowrap; + background-color: rgb(var(--bg-2)); +} + +.dropdown-section.list-bottom-sm { + @apply top-10; +} + +.dropdown-section.list-bottom-md { + @apply top-12; +} + +.dropdown-section.list-bottom-lg { + @apply top-16; +} + +.dropdown-section.list-top-sm { + @apply bottom-10; +} + +.dropdown-section.list-top-md { + @apply bottom-12; +} + +.dropdown-section.list-top-lg { + @apply bottom-16; +} + +.dropdown-section.list-left { + @apply top-0 -left-[10.5rem]; +} + +.dropdown-section.list-right { + @apply top-0 -right-[10.5rem]; +} + +.dropdown-section.list-align-right { + @apply right-0; +} + +.dropdown-section .dropdown-item { + @apply flex items-center cursor-pointer px-4 py-2; +} + +.dropdown-section .dropdown-item:hover { + background-color: rgb(var(--bg-1)); +} diff --git a/assets/style/css/component/modal.css b/assets/style/css/component/modal.css new file mode 100644 index 0000000..4d5f300 --- /dev/null +++ b/assets/style/css/component/modal.css @@ -0,0 +1,50 @@ +/* RS Modal Component */ +.modal { + @apply fixed top-0 left-0 w-full h-full overflow-hidden z-[1000] duration-300; + background: rgba(15, 23, 42, 0.5); +} + +.modal.modal-top { + @apply flex items-start; +} + +.modal.modal-center { + @apply flex items-center; +} + +.modal.modal-end { + @apply flex items-end; +} + +.modal.modal-hide-overlay { + @apply !bg-transparent; +} + +.modal .modal-dialog { + @apply w-full md:w-auto relative z-[9999]; + margin: 1.75rem auto; +} + +.modal .modal-dialog .modal-content { + @apply border-none shadow-lg relative flex flex-col w-full pointer-events-auto bg-clip-padding rounded-md outline-none text-current; + background-color: rgb(var(--bg-2)); +} + +.modal .modal-dialog .modal-content .modal-header { + @apply flex flex-shrink-0 items-center justify-between p-4 border-b rounded-t-md; + border-color: rgb(var(--border-color)); +} + +.modal .modal-dialog .modal-content .modal-body { + @apply relative p-4; +} + +.modal .modal-dialog .modal-content .modal-footer { + @apply flex flex-shrink-0 flex-wrap items-center justify-end px-4 pb-4 rounded-b-md gap-x-3; +} + +@media screen and (max-width: 768px) { + .modal-dialog { + margin: 1.75rem 1rem; + } +} diff --git a/assets/style/css/component/progress.css b/assets/style/css/component/progress.css new file mode 100644 index 0000000..9c1c9b6 --- /dev/null +++ b/assets/style/css/component/progress.css @@ -0,0 +1,80 @@ +/* RS Progress Component */ +.progress-wrapper { + @apply w-full mb-4; +} + +.progress-wrapper .progress-label { + @apply text-sm mb-1; +} + +.progress-wrapper .progress { + @apply flex rounded-full; +} + +.progress-wrapper .progress.progress-sm { + @apply h-3; +} + +.progress-wrapper .progress.progress-md { + @apply h-4; +} + +.progress-wrapper .progress.progress-lg { + @apply h-5; +} + +.progress-wrapper .progress.progress-sm { + @apply h-3; +} + +.progress-wrapper .progress.progress-primary { + @apply bg-primary/20; +} + +.progress-wrapper .progress.progress-secondary { + @apply bg-secondary/20; +} + +.progress-wrapper .progress.progress-success { + @apply bg-success/20; +} + +.progress-wrapper .progress.progress-info { + @apply bg-info/20; +} + +.progress-wrapper .progress.progress-warning { + @apply bg-warning/20; +} + +.progress-wrapper .progress.progress-danger { + @apply bg-danger/20; +} + +.progress-wrapper .progress .progress-bar { + @apply flex items-center justify-center rounded-full text-white; +} + +.progress-wrapper .progress .progress-bar.primary { + @apply bg-primary; +} + +.progress-wrapper .progress .progress-bar.secondary { + @apply bg-secondary; +} + +.progress-wrapper .progress .progress-bar.success { + @apply bg-success; +} + +.progress-wrapper .progress .progress-bar.info { + @apply bg-info; +} + +.progress-wrapper .progress .progress-bar.warning { + @apply bg-warning; +} + +.progress-wrapper .progress .progress-bar.danger { + @apply bg-danger; +} diff --git a/assets/style/css/component/tab.css b/assets/style/css/component/tab.css new file mode 100644 index 0000000..b026c61 --- /dev/null +++ b/assets/style/css/component/tab.css @@ -0,0 +1,322 @@ +/* RS Tab Component */ +.tab { + @apply rounded-md; +} + +.tab.vertical { + @apply flex flex-col md:flex-row; +} + +.tab.tab-card { + @apply shadow-md pt-4; +} + +.tab.card-vertical { + @apply shadow-md; +} + +.tab.card-primary { + @apply bg-primary; +} + +.tab.card-secondary { + @apply bg-secondary; +} + +.tab.card-success { + @apply bg-success; +} + +.tab.card-info { + @apply bg-info; +} + +.tab.card-warning { + @apply bg-warning; +} + +.tab.card-danger { + @apply bg-danger; +} + +.tab .tab-nav { + @apply flex flex-wrap list-none pl-0; +} + +.tab .tab-nav.tab-nav-card { + @apply mx-4 mb-0; +} + +.tab .tab-nav.card-vertical { + @apply py-0 pt-4 md:py-4; +} + +.tab .tab-nav.vertical { + @apply flex-row md:flex-col gap-2; +} + +.tab .tab-nav.vertical-fill { + @apply flex-1; +} + +.tab .tab-nav .tab-item { + @apply cursor-pointer; +} + +.tab .tab-nav .tab-item.fill { + @apply flex-1 w-full; +} + +.tab .tab-nav .tab-item.border-horizontal { + @apply border-0 hover:border hover:border-b-0 rounded-t-md px-6; +} + +.tab .tab-nav .tab-item.border-horizontal-active { + @apply border rounded-t-md border-b-0; +} + +.tab .tab-nav .tab-item.border-vertical { + @apply border-0 hover:border hover:border-r-0 rounded-l-md px-6; +} + +.tab .tab-nav .tab-item.border-vertical-active { + @apply border rounded-t-md rounded-bl-none md:rounded-r-none md:rounded-l-md border-r border-b-0 md:border-b md:border-r-0; +} + +.tab .tab-nav .tab-item.border-hover-primary { + @apply hover:border-primary; +} + +.tab .tab-nav .tab-item.border-hover-secondary { + @apply hover:border-secondary; +} + +.tab .tab-nav .tab-item.border-hover-success { + @apply hover:border-success; +} + +.tab .tab-nav .tab-item.border-hover-info { + @apply hover:border-info; +} + +.tab .tab-nav .tab-item.border-hover-warning { + @apply hover:border-warning; +} + +.tab .tab-nav .tab-item.border-hover-danger { + @apply hover:border-danger; +} + +.tab .tab-nav .tab-item.border-active-primary { + @apply border-primary text-primary; +} + +.tab .tab-nav .tab-item.border-active-secondary { + @apply border-secondary text-secondary; +} + +.tab .tab-nav .tab-item.border-active-success { + @apply border-success text-success; +} + +.tab .tab-nav .tab-item.border-active-info { + @apply border-info text-info; +} + +.tab .tab-nav .tab-item.border-active-warning { + @apply border-warning text-warning; +} + +.tab .tab-nav .tab-item.border-active-danger { + @apply border-danger text-danger; +} + +.tab .tab-nav .tab-item .tab-item-link { + @apply block font-medium text-base leading-tight capitalize border-x-0 border-t-0 py-3; +} + +.tab .tab-nav .tab-item .tab-item-link.default { + @apply hover:border-b-2 mx-2 px-4; +} + +.tab .tab-nav .tab-item .tab-item-link.default-vertical { + @apply hover:border-l-2 mx-2 px-4; +} + +.tab .tab-nav .tab-item .tab-item-link.default-active { + @apply border-b-2; +} + +.tab .tab-nav .tab-item .tab-item-link.default-vertical-active { + @apply border-l-2; +} + +.tab .tab-nav .tab-item .tab-item-link.default-hover-primary { + @apply hover:border-primary hover:text-primary; +} + +.tab .tab-nav .tab-item .tab-item-link.default-hover-secondary { + @apply hover:border-secondary hover:text-secondary; +} + +.tab .tab-nav .tab-item .tab-item-link.default-hover-success { + @apply hover:border-success hover:text-success; +} + +.tab .tab-nav .tab-item .tab-item-link.default-hover-info { + @apply hover:border-info hover:text-info; +} + +.tab .tab-nav .tab-item .tab-item-link.default-hover-warning { + @apply hover:border-warning hover:text-warning; +} + +.tab .tab-nav .tab-item .tab-item-link.default-hover-danger { + @apply hover:border-danger hover:text-danger; +} + +.tab .tab-nav .tab-item .tab-item-link.default-primary { + @apply text-primary border-primary; +} + +.tab .tab-nav .tab-item .tab-item-link.default-secondary { + @apply text-secondary border-secondary; +} + +.tab .tab-nav .tab-item .tab-item-link.default-success { + @apply text-success border-success; +} + +.tab .tab-nav .tab-item .tab-item-link.default-info { + @apply text-info border-info; +} + +.tab .tab-nav .tab-item .tab-item-link.default-warning { + @apply text-warning border-warning; +} + +.tab .tab-nav .tab-item .tab-item-link.default-danger { + @apply text-danger border-danger; +} + +.tab .tab-nav .tab-item .tab-item-link.link-card { + @apply px-5 mx-1 text-white rounded-t-md; +} + +.tab .tab-nav .tab-item .tab-item-link.link-card-vertical { + @apply px-5 my-0 text-white rounded-bl-none rounded-t-md md:rounded-tr-none md:rounded-l-md; +} + +.tab .tab-nav .tab-item .tab-item-link.link-card-primary { + @apply bg-primary/90; +} + +.tab .tab-nav .tab-item .tab-item-link.link-card-secondary { + @apply bg-secondary/90; +} + +.tab .tab-nav .tab-item .tab-item-link.link-card-success { + @apply bg-success/90; +} + +.tab .tab-nav .tab-item .tab-item-link.link-card-info { + @apply bg-info/90; +} + +.tab .tab-nav .tab-item .tab-item-link.link-card-warning { + @apply bg-warning/90; +} + +.tab .tab-nav .tab-item .tab-item-link.link-card-danger { + @apply bg-danger/90; +} + +.tab .tab-nav .tab-item .tab-item-link.link-card-primary-active { + @apply text-primary/90; + background-color: rgb(var(--bg-2)); +} + +.tab .tab-nav .tab-item .tab-item-link.link-card-secondary-active { + @apply text-secondary/90; + background-color: rgb(var(--bg-2)); +} + +.tab .tab-nav .tab-item .tab-item-link.link-card-success-active { + @apply text-success/90; + background-color: rgb(var(--bg-2)); +} + +.tab .tab-nav .tab-item .tab-item-link.link-card-info-active { + @apply text-info/90; + background-color: rgb(var(--bg-2)); +} + +.tab .tab-nav .tab-item .tab-item-link.link-card-warning-active { + @apply text-warning/90; + background-color: rgb(var(--bg-2)); +} + +.tab .tab-nav .tab-item .tab-item-link.link-card-danger-active { + @apply text-danger/90; + background-color: rgb(var(--bg-2)); +} + +.tab .tab-nav .tab-item .tab-item-link.link-justify-left { + @apply flex flex-wrap justify-start; +} + +.tab .tab-nav .tab-item .tab-item-link.link-justify-center { + @apply flex flex-wrap justify-center; +} + +.tab .tab-nav .tab-item .tab-item-link.link-justify-right { + @apply flex flex-wrap justify-end; +} + +.tab .tab-content { + background-color: rgb(var(--bg-2)); +} + +.tab .tab-content.content-vertical { + @apply flex-grow; +} + +.tab .tab-content.content-vertical-fill { + @apply flex-1; +} + +.tab .tab-content.content-border { + @apply border rounded-b-md; +} + +.tab .tab-content.content-border-vertical { + @apply border rounded-md rounded-l-none; +} + +.tab .tab-content.content-border-primary { + @apply border-primary; +} + +.tab .tab-content.content-border-secondary { + @apply border-secondary; +} + +.tab .tab-content.content-border-success { + @apply border-success; +} + +.tab .tab-content.content-border-info { + @apply border-info; +} + +.tab .tab-content.content-border-warning { + @apply border-warning; +} + +.tab .tab-content.content-border-danger { + @apply border-danger; +} + +.tab .tab-content .tab-pane { + @apply py-4 px-4; +} diff --git a/assets/style/css/component/table.css b/assets/style/css/component/table.css new file mode 100644 index 0000000..3582637 --- /dev/null +++ b/assets/style/css/component/table.css @@ -0,0 +1,32 @@ +/* Table Component */ +.table-wrapper { + @apply w-full border-0 rounded-md border-gray-200 dark:border-slate-700; +} + +.table-header { + @apply m-4 overflow-hidden; + transition: max-height 0.25s cubic-bezier(0, 1, 0, 1); + max-height: 42px; +} + +.table-header.open { + @apply overflow-visible; + transition: max-height 0.5s ease-in-out; + max-height: 9999px; +} + +.table-header-filter { + @apply flex flex-col md:flex-row justify-start md:justify-between items-start md:items-center gap-4; +} + +.table-content { + @apply w-full; +} + +.table-footer { + @apply flex justify-center md:justify-between items-center m-4; +} + +.table-footer-page { + @apply flex justify-center gap-x-2; +} diff --git a/assets/style/css/example-theme.css b/assets/style/css/example-theme.css new file mode 100644 index 0000000..5fb0932 --- /dev/null +++ b/assets/style/css/example-theme.css @@ -0,0 +1,65 @@ +/* Example Custom Theme for corradAF Base Project */ +/* This file demonstrates how custom themes should be structured */ +/* Define your custom theme variables here */ +/* For example: +:root { + --primary-color: #yourColor; +} +*/ + +:root { + /* Custom color variables */ + --color-primary: 46, 125, 50; /* Green theme */ + --color-secondary: 117, 117, 117; + --color-success: 76, 175, 80; + --color-info: 33, 150, 243; + --color-warning: 255, 152, 0; + --color-danger: 244, 67, 54; + + /* Custom background colors */ + --bg-primary: 245, 245, 245; + --bg-secondary: 255, 255, 255; +} + +/* Dark theme overrides */ +.dark { + --bg-primary: 18, 18, 18; + --bg-secondary: 30, 30, 30; +} + +/* Custom component styles */ +.btn-primary { + background-color: rgb(var(--color-primary)); + border-color: rgb(var(--color-primary)); +} + +.btn-primary:hover { + background-color: rgba(var(--color-primary), 0.8); + border-color: rgba(var(--color-primary), 0.8); +} + +/* Header customizations */ +.w-header { + background: linear-gradient(135deg, rgb(var(--color-primary)), rgba(var(--color-primary), 0.8)); + color: white; +} + +/* Sidebar customizations */ +.vertical-menu { + background-color: rgb(var(--bg-secondary)); + border-right: 1px solid rgba(var(--color-primary), 0.1); +} + +/* Card customizations */ +.card { + background-color: rgb(var(--bg-secondary)); + border: 1px solid rgba(var(--color-primary), 0.1); + box-shadow: 0 2px 4px rgba(var(--color-primary), 0.1); +} + +/* Example of responsive design */ +@media (max-width: 768px) { + .w-header { + background: rgb(var(--color-primary)); + } +} \ No newline at end of file diff --git a/assets/style/css/form/box.css b/assets/style/css/form/box.css new file mode 100644 index 0000000..e19092f --- /dev/null +++ b/assets/style/css/form/box.css @@ -0,0 +1,63 @@ +.formkit-inner-box { + @apply relative; +} + +.formkit-label { + @apply block mb-2 font-semibold text-sm formkit-invalid:text-red-500 dark:formkit-invalid:text-danger; +} + +.formkit-fieldset-box { + @apply max-w-md border border-[rgb(var(--fk-border-color))] rounded-lg px-4 py-2; +} + +.formkit-legend-box { + @apply font-bold text-sm; +} + +.formkit-wrapper-box { + @apply flex items-center mb-3 cursor-pointer; +} + +.formkit-help-box { + @apply mb-3; +} + +.formkit-input-box { + @apply flex + items-center + hover:cursor-pointer + appearance-none + h-5 w-5 mr-2 + border-2 + border-[rgb(var(--fk-border-color))] + checked:bg-primary + checked:border-transparent + bg-[rgb(var(--bg-2))] + rounded-md + checked:shadow-sm checked:shadow-primary/40 + focus:outline-none focus:ring-0 transition duration-200; +} + +.formkit-input-radio { + @apply flex + items-center + hover:cursor-pointer + appearance-none + h-5 w-5 mr-2 + border-2 + border-[rgb(var(--fk-border-color))] + checked:bg-primary + checked:border-transparent + bg-[rgb(var(--bg-2))] + rounded-full + checked:shadow-sm checked:shadow-primary/40 + focus:outline-none focus:ring-0 transition duration-200; +} + +.formkit-label-box { + @apply text-sm formkit-disabled:text-gray-300; +} + +.formkit-message-box { + @apply formkit-invalid:text-red-500; +} diff --git a/assets/style/css/form/button.css b/assets/style/css/form/button.css new file mode 100644 index 0000000..441bc79 --- /dev/null +++ b/assets/style/css/form/button.css @@ -0,0 +1,7 @@ +.formkit-wrapper-button { + @apply mb-1; +} + +.formkit-input-button { + @apply bg-primary hover:bg-primary/90 text-white text-sm font-normal py-2 px-5 rounded-lg; +} diff --git a/assets/style/css/form/color.css b/assets/style/css/form/color.css new file mode 100644 index 0000000..7834abd --- /dev/null +++ b/assets/style/css/form/color.css @@ -0,0 +1,18 @@ +.formkit-label-color { + @apply block mb-1 font-bold text-sm; +} + +.formkit-input-color { + @apply w-16 h-10 cursor-pointer rounded-lg mb-2 border-none appearance-none bg-transparent; +} + +.formkit-input-color::-webkit-color-swatch { + border-radius: 5px; + border: none; + box-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1); +} +.formkit-input-color::-moz-color-swatch { + border-radius: 5px; + border: none; + box-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1); +} diff --git a/assets/style/css/form/dropzone.css b/assets/style/css/form/dropzone.css new file mode 100644 index 0000000..e64f29c --- /dev/null +++ b/assets/style/css/form/dropzone.css @@ -0,0 +1,7 @@ +.formkit-inner-dropzone { + @apply w-full; +} + +.formkit-dropzone { + @apply border-2 border-[rgb(var(--fk-border-color))] border-dashed p-6 active:bg-[rgb(var(--bg-1))]; +} diff --git a/assets/style/css/form/file.css b/assets/style/css/form/file.css new file mode 100644 index 0000000..523e8f7 --- /dev/null +++ b/assets/style/css/form/file.css @@ -0,0 +1,32 @@ +.formkit-label-file { + @apply block mb-1 font-bold text-sm; +} + +.formkit-inner-file { + @apply w-full cursor-pointer; +} + +.formkit-input-file { + @apply w-full cursor-pointer border rounded-lg text-gray-600 text-sm mb-1 file:cursor-pointer file:mr-4 file:py-2 file:px-4 file:rounded-l-lg file:border-0 file:text-sm file:bg-primary file:text-white hover:file:bg-primary/90; + border-color: rgb(var(--fk-border-color)); +} + +.formkit-file-list { + @apply flex flex-col; +} + +.formkit-file-item { + @apply flex items-center py-2 px-4 rounded-lg border border-gray-200 mb-1 mt-1; +} + +.formkit-file-name { + @apply text-[rgb(var(--text-color))] text-sm; +} + +.formkit-file-remove { + @apply ml-auto text-primary text-sm; +} + +.formkit-no-files { + @apply text-[rgb(var(--text-color))] text-sm; +} diff --git a/assets/style/css/form/global.css b/assets/style/css/form/global.css new file mode 100644 index 0000000..73416b1 --- /dev/null +++ b/assets/style/css/form/global.css @@ -0,0 +1,23 @@ +.formkit-label-global { + @apply text-[rgb(var(--text-color))]; +} + +.formkit-outer-global { + @apply mb-4 text-[rgb(var(--text-color))] formkit-disabled:opacity-50; +} + +.formkit-help-global { + @apply text-xs mt-1; +} + +.formkit-messages-global { + @apply list-none p-0 mt-1 mb-0; +} + +.formkit-message-global { + @apply text-red-500 mb-1 text-xs; +} + +.formkit-wrapper-global { + @apply relative; +} diff --git a/assets/style/css/form/otp.css b/assets/style/css/form/otp.css new file mode 100644 index 0000000..31656eb --- /dev/null +++ b/assets/style/css/form/otp.css @@ -0,0 +1,29 @@ +.formkit-label-otp { + @apply block mb-2 font-semibold text-sm formkit-invalid:text-red-500 dark:formkit-invalid:text-danger; +} + +.formkit-inner-otp { + @apply flex + items-center + justify-start + align-middle + rounded-lg mb-1 + overflow-hidden; +} + +.formkit-digit-otp { + @apply w-10 h-10 mr-2 + text-center + rounded-lg + border + border-[rgb(var(--fk-border-color))] + text-sm + bg-[rgb(var(--bg-2))] + placeholder-secondary + focus-within:border-primary + focus:outline-none; +} + +.formkit-message-otp { + @apply formkit-invalid:text-red-500 dark:formkit-invalid:text-danger; +} diff --git a/assets/style/css/form/range.css b/assets/style/css/form/range.css new file mode 100644 index 0000000..6ea37d1 --- /dev/null +++ b/assets/style/css/form/range.css @@ -0,0 +1,3 @@ +.formkit-input-range { + @apply appearance-none w-full h-2 p-0 bg-[rgb(var(--bg-1))] rounded-full focus:outline-none focus:ring-0 focus:shadow-none; +} diff --git a/assets/style/css/form/text.css b/assets/style/css/form/text.css new file mode 100644 index 0000000..82ee8c7 --- /dev/null +++ b/assets/style/css/form/text.css @@ -0,0 +1,39 @@ +.formkit-inner-text { + @apply flex + items-center + justify-center + align-middle + w-full + border + border-[rgb(var(--fk-border-color))] + formkit-invalid:border-red-500 + rounded-lg + overflow-hidden + focus-within:border-primary + mb-0; +} + +.formkit-input-text { + @apply w-full + h-10 + px-3 + border-none + text-sm + bg-[rgb(var(--bg-2))] + placeholder-[rgb(var(--fk-placeholder-color))] + focus:outline-none + disabled:bg-[rgb(var(--bg-1))] + disabled:border-[rgb(var(--bg-1))] + disabled:placeholder-[rgb(var(--bg-1))] + read-only:bg-[rgb(var(--bg-1))] + read-only:border-[rgb(var(--bg-1))] + read-only:placeholder-[rgb(var(--bg-1))]; +} + +.formkit-prefix-text { + @apply ml-2; +} + +.formkit-message-text { + @apply formkit-invalid:text-red-500; +} diff --git a/assets/style/css/form/textarea.css b/assets/style/css/form/textarea.css new file mode 100644 index 0000000..edc4481 --- /dev/null +++ b/assets/style/css/form/textarea.css @@ -0,0 +1,8 @@ +.formkit-input-textarea { + @apply block + w-full + px-3 py-2 + placeholder-[rgb(var(--fk-placeholder-color))] + bg-[rgb(var(--bg-2))] + focus:outline-none; +} diff --git a/assets/style/css/tailwind.css b/assets/style/css/tailwind.css new file mode 100644 index 0000000..9005b22 --- /dev/null +++ b/assets/style/css/tailwind.css @@ -0,0 +1,33 @@ +/* Base Import Tailwind CSS */ +@import "tailwindcss/base"; +@import "./base/theme"; + +/* Components Import Tailwind CSS */ +@import "tailwindcss/components"; +@import "./component/common"; +@import "./component/alert"; +@import "./component/badge"; +@import "./component/button"; +@import "./component/card"; +@import "./component/collapse"; +@import "./component/dropdown"; +@import "./component/modal"; +@import "./component/progress"; +@import "./component/tab"; +@import "./component/table"; + +/* Form Import Tailwind CSS */ +@import "./form/global"; +@import "./form/text"; +@import "./form/textarea"; +@import "./form/box"; +@import "./form/button"; +@import "./form/otp"; +@import "./form/color"; +@import "./form/file"; +@import "./form/range"; +@import "./form/dropzone"; + +/* Utilities Import Tailwind CSS */ +@import "tailwindcss/utilities"; +@import "./utility/typography"; diff --git a/assets/style/css/utility/typography.css b/assets/style/css/utility/typography.css new file mode 100644 index 0000000..7c43e9d --- /dev/null +++ b/assets/style/css/utility/typography.css @@ -0,0 +1,29 @@ +h1 { + @apply text-4xl + font-bold; +} + +h2 { + @apply text-3xl + font-bold; +} + +h3 { + @apply text-2xl + font-bold; +} + +h4 { + @apply text-xl + font-bold; +} + +h5 { + @apply text-lg + font-bold; +} + +h6 { + @apply text-base + font-bold; +} diff --git a/assets/style/scss/custom/apps/products.scss b/assets/style/scss/custom/apps/products.scss new file mode 100644 index 0000000..6260088 --- /dev/null +++ b/assets/style/scss/custom/apps/products.scss @@ -0,0 +1,49 @@ +$small: 640px; +$medium: 768px; +$large: 1024px; +$xlarge: 1280px; + +.filter-wrapper { + &.filter-wrapper-show { + display: block; + } + + &.filter-wrapper-hide { + display: none; + } +} + +@media screen and (max-width: $medium) { + .filter-wrapper { + transition: right 0.25s ease; + &.filter-wrapper-show { + display: block; + right: 0px; + } + + &.filter-wrapper-hide { + display: block; + right: -260px; + } + } + + .filter-overlay { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.5); + z-index: -50; + + &.show { + visibility: visible; + opacity: 1; + } + + &.hide { + visibility: hidden; + opacity: 0; + } + } +} diff --git a/assets/style/scss/custom/layout/horizontal.scss b/assets/style/scss/custom/layout/horizontal.scss new file mode 100644 index 0000000..1e44438 --- /dev/null +++ b/assets/style/scss/custom/layout/horizontal.scss @@ -0,0 +1,18 @@ +.h-layout { + .content-page { + padding: 10.5rem 2rem 0 2rem; + height: 100vh; + } + + .w-header, + .w-header-search { + width: 100%; + } + + .w-header-search { + position: fixed; + display: flex; + align-items: center; + height: 64px; + } +} diff --git a/assets/style/scss/custom/layout/vertical.scss b/assets/style/scss/custom/layout/vertical.scss new file mode 100644 index 0000000..cedeba6 --- /dev/null +++ b/assets/style/scss/custom/layout/vertical.scss @@ -0,0 +1,166 @@ +$small: 640px; +$medium: 768px; +$large: 1024px; +$xlarge: 1280px; + +@media screen and (max-width: $medium) { + body:has(.menu-overlay:not(.hide)) { + overflow: hidden; + } + + .menu-overlay { + position: fixed; + top: 0; + height: 120vh; + z-index: 45; + display: block; + visibility: visible; + opacity: 1; + transition: all 0.5s ease; + background-color: rgba(34, 41, 47, 0.5); + left: 0; + right: 0; + } + + .menu-overlay { + &.hide { + visibility: hidden; + opacity: 0; + } + } +} + +// Layout Vertical CSS +.v-layout { + .content-page { + height: 100%; + } + + .w-header-search { + position: fixed; + display: flex; + align-items: center; + height: 64px; + } + + .w-header, + .w-header-search { + width: calc(100% - 256px); + + @media screen and (max-width: $medium) { + width: 100%; + } + } + + .vertical-menu { + left: 0; + } + + .content-page { + margin-left: 256px; + padding: 6rem 2rem 10px 2rem; + + @media screen and (max-width: $medium) { + margin-left: 0px; + padding: 6rem 1.25rem 0 1.25rem; + } + } + + &.menu-hide { + .w-header { + width: calc(100% - 0px); + } + + .vertical-menu { + left: -260px; + } + + .content-page { + margin-left: 0; + } + } + + .menu-content, + .menu-content-child { + max-height: 1000px; + overflow: hidden; + + &.hide { + max-height: 0px; + } + } + + .menu-content-max, + .menu-content-child-max { + max-height: 100vh; + } + + svg.side-menu-arrow { + transition: 0.25s ease-in-out; + } + + .nav-open { + svg.side-menu-arrow { + transform: rotate(90deg); + } + } +} + +// Custom styles for LZS theme +html[data-theme="LZS"] { + .v-layout { + .active-menu { + position: relative; + transition: all 0.2s ease; + + // Yellow glow on active menu items + &:after { + content: ""; + position: absolute; + left: 0; + top: 0; + height: 100%; + width: 4px; + background-color: rgb(var(--active-menu-border)); + } + + // Icon color for active menu + svg { + color: rgb(var(--active-menu-border)); + } + } + + // Form focus states with yellow accent + input:focus, textarea:focus, select:focus { + outline: 2px solid rgba(var(--focus-ring)); + outline-offset: 2px; + } + + // Button hover with yellow accent + .btn-primary:hover, button.bg-primary:hover { + box-shadow: 0 0 0 2px rgba(var(--active-menu-border), 0.3); + } + + // Card headers with subtle yellow accent + .rs-card { + .card-header { + border-bottom: 1px solid rgba(var(--border-color)); + + h2, h3, h4 { + position: relative; + + &:before { + content: ""; + position: absolute; + left: -10px; + top: 50%; + transform: translateY(-50%); + height: 60%; + width: 3px; + background-color: rgb(var(--active-menu-border)); + } + } + } + } + } +} diff --git a/assets/style/scss/custom/library/_dropdown.scss b/assets/style/scss/custom/library/_dropdown.scss new file mode 100644 index 0000000..3458997 --- /dev/null +++ b/assets/style/scss/custom/library/_dropdown.scss @@ -0,0 +1,27 @@ +$small: 640px; +$medium: 768px; +$large: 1024px; +$xlarge: 1280px; + +.s-dropdown { + background-color: white; + padding: 10px 0; + border-radius: 5px; + top: 65px !important; + border: 1px solid rgb(229, 231, 235); + box-shadow: 0px 0px 10px rgba(226, 232, 240, 0.2); + + @media screen and (max-width: $medium) { + left: 0px !important; + width: 100% !important; + margin: 0px 2px !important; + } +} + +.dark { + .s-dropdown { + background-color: #1e293b; + box-shadow: 0px 0px 10px rgba(15, 23, 42, 0.2); + border: 1px solid #182130; + } +} diff --git a/assets/style/scss/custom/library/_floatingvue.scss b/assets/style/scss/custom/library/_floatingvue.scss new file mode 100644 index 0000000..74f6ed4 --- /dev/null +++ b/assets/style/scss/custom/library/_floatingvue.scss @@ -0,0 +1,19 @@ +.v-popper--theme-dropdown .v-popper__inner { + background: rgb(var(--bg-2)) !important; + border: 0px !important; + color: rgb(var(--text-color)) !important; +} + +// Disable arrow +.v-popper__arrow-container { + display: none; +} + +// .v-popper--theme-my-theme .v-popper__inner { +// background: #fff000; +// color: black; +// padding: 24px; +// border-radius: 6px; +// border: 1px solid #ddd; +// box-shadow: 0 6px 30px rgba(0, 0, 0, 0.1); +// } diff --git a/assets/style/scss/custom/library/_formkit.scss b/assets/style/scss/custom/library/_formkit.scss new file mode 100644 index 0000000..3c71f40 --- /dev/null +++ b/assets/style/scss/custom/library/_formkit.scss @@ -0,0 +1,237 @@ +$small: 640px; +$medium: 768px; +$large: 1024px; +$xlarge: 1280px; + +.formkit-form { + .form-wizard { + border-radius: 0.5rem; + } + + &.top-form { + .formkit-actions { + button[type="submit"] { + display: block; + margin-right: 0; + margin-left: auto; + } + } + ul.top-steps { + display: flex; + justify-content: space-evenly; + margin-bottom: 1rem; + gap: 1rem; + + @media screen and (max-width: $medium) { + flex-direction: column; + justify-content: start; + } + + li { + flex-grow: 1; + display: inline-block; + + .progress { + position: relative; + bottom: -8px; + width: 0%; + height: 8px; + border-radius: 10px; + background-color: rgb(var(--color-primary)); + transition: width 0.25s ease-in; + } + + .step--errors { + display: inline-flex; + justify-content: center; + align-items: center; + float: right; + width: 20px; + height: 20px; + border-radius: 50%; + background-color: #f23131; + color: #fff; + font-size: 12px; + } + + .counter { + display: inline-block; + } + + &:after { + content: ""; + display: block; + width: 100%; + height: 8px; + border-radius: 10px; + background-color: rgb(var(--bg-1)); + } + + &[data-step-active="true"] { + color: rgb(var(--color-primary)); + font-weight: 600; + + .progress { + width: 100%; + } + } + + &[data-step-active="false"] { + color: rgb(var(--bg-1)); + .progress { + width: 0%; + } + } + + &[data-step-completed="true"] { + color: rgb(var(--color-primary)); + font-weight: 600; + .progress { + width: 100%; + } + } + } + } + } + + &.left-form { + display: grid; + gap: 1rem; + grid-template-columns: 230px auto; + + @media screen and (max-width: $medium) { + grid-template-columns: repeat(1, minmax(0, 1fr)); + gap: 0rem; + } + + .formkit-actions { + grid-column: span 2 / span 2; + + @media screen and (max-width: $medium) { + grid-column: span 1 / span 1; + } + + button[type="submit"] { + float: right; + } + } + + ul.left-steps { + display: block; + li { + margin-bottom: 1rem; + .progress { + position: relative; + bottom: -8px; + width: 0%; + height: 8px; + border-radius: 10px; + background-color: rgb(var(--color-primary)); + transition: width 0.25s ease-in; + } + + .step--errors { + display: inline-flex; + justify-content: center; + align-items: center; + float: right; + width: 20px; + height: 20px; + border-radius: 50%; + background-color: #f23131; + color: #fff; + font-size: 12px; + } + + .counter { + display: inline-block; + } + + &:after { + content: ""; + display: block; + width: 100%; + height: 8px; + border-radius: 10px; + background-color: rgb(var(--bg-1)); + } + + &[data-step-active="true"] { + color: rgb(var(--color-primary)); + font-weight: 600; + + .progress { + width: 100%; + } + } + + &[data-step-active="false"] { + color: rgb(var(--bg-1)); + .progress { + width: 0%; + } + } + + &[data-step-completed="true"] { + color: rgb(var(--color-primary)); + font-weight: 600; + .progress { + width: 100%; + } + } + } + } + } +} + +// Custom Formkit Input for VSelect +.formkit-vselect { + margin-bottom: 1rem; + + .vs__dropdown-menu { + background: rgb(var(--bg-2)); + } + + .vs__dropdown-menu li { + background: rgb(var(--bg-1)); + color: rgb(var(--text-color)); + } + + .vs__dropdown-toggle { + min-height: 2.5rem; + padding-left: 0.75rem; + padding-right: 0.75rem; + font-size: 0.875rem; + line-height: 1.25rem; + color: rgb(var(--color-primary)); + + border-width: 1px; + border-radius: 0.5rem; + margin-bottom: 0px; + border-color: rgb(var(--fk-border-color)); + + .vs__selected { + padding-left: 1rem; + padding-right: 1rem; + padding-top: 0.25rem; + padding-bottom: 0.25rem; + + background-color: rgb(var(--color-primary)); + color: white; + + border: 0; + border-radius: 0.5rem; + + gap: 0.25rem; + margin-right: 0.35rem; + margin-left: 0; + } + } +} + +// Custom Decorator +input[type="checkbox"]:checked.icon-check + .formkit-decorator::before { + content: url('data:image/svg+xml;charset=UTF-8,'); + position: absolute; + top: -1px; +} diff --git a/assets/style/scss/custom/library/_fullcalendar.scss b/assets/style/scss/custom/library/_fullcalendar.scss new file mode 100644 index 0000000..ae7af69 --- /dev/null +++ b/assets/style/scss/custom/library/_fullcalendar.scss @@ -0,0 +1,114 @@ +$small: 640px; +$medium: 768px; +$large: 1024px; +$xlarge: 1280px; + +.fc-theme-standard td, +.fc-theme-standard th { + border-color: rgb(var(--bg-1)) !important; +} + +// Overwrite fullcalendar styles light +.fc { + .fc-scrollgrid { + border: 1px solid rgb(var(--bg-1)) !important; + } + + .fc-toolbar { + @media screen and (max-width: $medium) { + flex-direction: column; + align-items: flex-start !important; + gap: 10px; + } + + .fc-toolbar-chunk { + display: flex; + align-items: center; + } + } + + .fc-button { + padding: 0.75rem 1rem !important; + + &.fc-button-primary { + background-color: transparent !important; + color: rgb(var(--color-primary)); + border-color: rgb(var(--color-primary)) !important; + } + + &.fc-button-active { + background-color: rgb(var(--color-primary)) !important; + } + + &:hover { + background-color: rgb(var(--color-primary)) !important; + color: white !important; + } + + &:focus { + box-shadow: 0 0 0 0.05rem rgba(255, 113, 133, 0.5) !important; + background-color: rgb(var(--color-primary)) !important; + color: white !important; + } + } + + .fc-view-harness { + table { + &.fc-col-header { + td, + th { + border-color: rgb(var(--bg-1)) !important; + } + + .fc-col-header-cell { + padding: 0.5rem; + } + } + } + + .fc-daygrid-day { + &.fc-day-today { + background-color: rgb(var(--bg-1)); + background: rgb(var(--bg-1)); + } + } + + .fc-daygrid-day-top { + color: #6b727f !important; + } + + .fc-more-link { + color: rgb(var(--color-primary)); + } + } + + .fc-daygrid-event-harness { + .fc-daygrid-event { + padding: 0.5rem 1rem; + } + + .fc-h-event { + &.fc-event-start { + border-color: rgb(var(--color-primary)); + background-color: rgb(var(--color-primary)); + } + } + } + .fc-list { + .fc-list-event-dot { + background-color: rgb(var(--color-primary)); + border: 5px solid #f3f4f6; + border-color: rgb(var(--color-primary)) !important; + } + + .fc-list-day-cushion { + background-color: #f3f4f6; + padding: 0.5rem 1rem; + } + } + + .fc-popover-header { + padding: 0.5rem !important; + background: #f3f4f6; + } +} diff --git a/assets/style/scss/custom/library/_nprogress.scss b/assets/style/scss/custom/library/_nprogress.scss new file mode 100644 index 0000000..3a8cd29 --- /dev/null +++ b/assets/style/scss/custom/library/_nprogress.scss @@ -0,0 +1,81 @@ +/* Make clicks pass-through */ +#nprogress { + pointer-events: none; +} + +#nprogress .bar { + background: #fb7185; + + position: fixed; + z-index: 1031; + top: 0; + left: 0; + + width: 100%; + height: 3px; +} + +/* Fancy blur effect */ +#nprogress .peg { + display: block; + position: absolute; + right: 0px; + width: 100px; + height: 100%; + box-shadow: 0 0 10px #fb7185, 0 0 5px #fb7185; + opacity: 1; + + -webkit-transform: rotate(3deg) translate(0px, -4px); + -ms-transform: rotate(3deg) translate(0px, -4px); + transform: rotate(3deg) translate(0px, -4px); +} + +/* Remove these to get rid of the spinner */ +#nprogress .spinner { + display: block; + position: fixed; + z-index: 1031; + top: 15px; + right: 15px; +} + +#nprogress .spinner-icon { + width: 18px; + height: 18px; + box-sizing: border-box; + + border: solid 2px transparent; + border-top-color: #fb7185; + border-left-color: #fb7185; + border-radius: 50%; + + -webkit-animation: nprogress-spinner 400ms linear infinite; + animation: nprogress-spinner 400ms linear infinite; +} + +.nprogress-custom-parent { + overflow: hidden; + position: relative; +} + +.nprogress-custom-parent #nprogress .spinner, +.nprogress-custom-parent #nprogress .bar { + position: absolute; +} + +@-webkit-keyframes nprogress-spinner { + 0% { + -webkit-transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(360deg); + } +} +@keyframes nprogress-spinner { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} diff --git a/assets/style/scss/custom/library/_swiper.scss b/assets/style/scss/custom/library/_swiper.scss new file mode 100644 index 0000000..2c94c55 --- /dev/null +++ b/assets/style/scss/custom/library/_swiper.scss @@ -0,0 +1,18 @@ +.swiper-button-next, +.swiper-button-prev { + color: #4B5563 !important; + padding: 1.5rem; +} + +.swiper-button-next:after, +.swiper-button-prev:after { + font-size: 1.5rem !important; +} + +.swiper-pagination-bullet { + background-color: #8b98a9 !important; +} + +.swiper-pagination-bullet-active { + background: #4B5563 !important; +} diff --git a/assets/style/scss/custom/library/_vuecountryflag.scss b/assets/style/scss/custom/library/_vuecountryflag.scss new file mode 100644 index 0000000..e396551 --- /dev/null +++ b/assets/style/scss/custom/library/_vuecountryflag.scss @@ -0,0 +1,7 @@ +.flag.normal-flag { + margin: 0em -1em -0em -1em !important; + transform: scale(0.38) !important; + -ms-transform: scale(0.38) !important; + -webkit-transform: scale(0.38) !important; + -moz-transform: scale(0.38) !important; +} diff --git a/assets/style/scss/custom/library/_vuetoastification.scss b/assets/style/scss/custom/library/_vuetoastification.scss new file mode 100644 index 0000000..8a40068 --- /dev/null +++ b/assets/style/scss/custom/library/_vuetoastification.scss @@ -0,0 +1,3 @@ +.Vue-Toastification__toast { + padding: 18px 21px; +} diff --git a/assets/style/scss/custom/scrollbar/scrollbar.scss b/assets/style/scss/custom/scrollbar/scrollbar.scss new file mode 100644 index 0000000..664be81 --- /dev/null +++ b/assets/style/scss/custom/scrollbar/scrollbar.scss @@ -0,0 +1,21 @@ +/* width */ +::-webkit-scrollbar { + width: 8px; + height: 8px; +} + +/* Track */ +::-webkit-scrollbar-track { + background-color: transparent; +} + +/* Handle */ +::-webkit-scrollbar-thumb { + background-color: rgb(var(--scroll-color)); + border-radius: 6px; +} + +/* Handle on hover */ +::-webkit-scrollbar-thumb:hover { + background: rgb(var(--scroll-hover-color)); +} diff --git a/assets/style/scss/custom/transition/fade-up.scss b/assets/style/scss/custom/transition/fade-up.scss new file mode 100644 index 0000000..89342c2 --- /dev/null +++ b/assets/style/scss/custom/transition/fade-up.scss @@ -0,0 +1,12 @@ +// Animation for transition fade +.fade-up-enter-active, +.fade-up-leave-active { + transition: transform 0.4s cubic-bezier(0.17, 0.67, 0.84, 0.79), + opacity 0.3s linear; +} + +.fade-up-enter-from, +.fade-up-leave-to { + opacity: 0; + transform: translateY(-10%); +} diff --git a/assets/style/scss/custom/transition/fade.scss b/assets/style/scss/custom/transition/fade.scss new file mode 100644 index 0000000..0f3ba9b --- /dev/null +++ b/assets/style/scss/custom/transition/fade.scss @@ -0,0 +1,10 @@ +// Animation for transition fade +.fade-enter-active, +.fade-leave-active { + transition: opacity 0.3s ease; +} + +.fade-enter-from, +.fade-leave-to { + opacity: 0; +} diff --git a/assets/style/scss/custom/transition/page.scss b/assets/style/scss/custom/transition/page.scss new file mode 100644 index 0000000..904190a --- /dev/null +++ b/assets/style/scss/custom/transition/page.scss @@ -0,0 +1,11 @@ +// Animation for transition fade +.page-enter-active, +.page-leave-active { + transition: transform 0.3s ease, opacity 0.4s ease; +} + +.page-enter-from, +.page-leave-to { + transform: scale(1.02); + opacity: 0; +} diff --git a/assets/style/scss/custom/transition/slide-fade.scss b/assets/style/scss/custom/transition/slide-fade.scss new file mode 100644 index 0000000..70b6742 --- /dev/null +++ b/assets/style/scss/custom/transition/slide-fade.scss @@ -0,0 +1,17 @@ +/* + Enter and leave animations can use different + durations and timing functions. +*/ +.slide-fade-enter-active { + transition: all 0.3s ease-out; +} + +.slide-fade-leave-active { + transition: all 0.8s cubic-bezier(1, 0.5, 0.8, 1); +} + +.slide-fade-enter-from, +.slide-fade-leave-to { + transform: translateX(20px); + opacity: 0; +} diff --git a/assets/style/scss/custom/transition/slide.scss b/assets/style/scss/custom/transition/slide.scss new file mode 100644 index 0000000..6b6bca5 --- /dev/null +++ b/assets/style/scss/custom/transition/slide.scss @@ -0,0 +1,10 @@ +.slide-enter-active, +.slide-leave-active { + transition: translateY, opacity 0.2s ease; +} + +.slide-enter-from, +.slide-leave-to { + transform: translateY(0px); + opacity: 0; +} diff --git a/assets/style/scss/main.scss b/assets/style/scss/main.scss new file mode 100644 index 0000000..39d59d8 --- /dev/null +++ b/assets/style/scss/main.scss @@ -0,0 +1,57 @@ +/*================================================================================ + Notes: This file is the main entry point for the SCSS stylesheet. + ================================================================================*/ + +/* Import DM Sans font from Google Fonts */ +@import url("https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&display=swap"); + +html, +body { + height: 100%; +} + +#__nuxt { + font-family: "DM Sans", sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-weight: 400; + letter-spacing: -0.5px; /* Changed from -2px to -0.5px for better readability */ + font-size: 14px; +} + +// svg.icon{ +// width: 1.3rem; +// height: 1.3rem; +// vertical-align: middle; +// fill: currentColor; +// overflow: hidden; +// } + +code { + color: rgb(233, 74, 74); + background-color: rgba(146, 146, 146, 0.1); +} + +// Custom Layout SCSS +@import "./custom/layout/vertical"; +@import "./custom/layout/horizontal"; + +// Transition SCSS +@import "./custom/transition/page"; +@import "./custom/transition/fade"; +@import "./custom/transition/fade-up"; +@import "./custom/transition/slide"; +@import "./custom/transition/slide-fade"; + +// Scrollbar SCSS +@import "./custom/scrollbar/scrollbar"; + +// Custom SCSS library +@import "./custom/library/dropdown"; +@import "./custom/library/nprogress"; +@import "./custom/library/formkit"; +@import "./custom/library/vuetoastification"; +@import "./custom/library/swiper"; +@import "./custom/library/fullcalendar"; +@import "./custom/library/floatingvue"; +@import "./custom/library/vuecountryflag"; diff --git a/components/FontSizeStepper.vue b/components/FontSizeStepper.vue new file mode 100644 index 0000000..86146a0 --- /dev/null +++ b/components/FontSizeStepper.vue @@ -0,0 +1,78 @@ + + + \ No newline at end of file diff --git a/components/Loading.vue b/components/Loading.vue new file mode 100644 index 0000000..237974d --- /dev/null +++ b/components/Loading.vue @@ -0,0 +1,105 @@ + + + diff --git a/components/RSCalendar.vue b/components/RSCalendar.vue new file mode 100644 index 0000000..3bf6d40 --- /dev/null +++ b/components/RSCalendar.vue @@ -0,0 +1,243 @@ + + + diff --git a/components/RsAlert.vue b/components/RsAlert.vue new file mode 100644 index 0000000..4cc0dba --- /dev/null +++ b/components/RsAlert.vue @@ -0,0 +1,67 @@ + + + diff --git a/components/RsApiTester.vue b/components/RsApiTester.vue new file mode 100644 index 0000000..4ee9d3b --- /dev/null +++ b/components/RsApiTester.vue @@ -0,0 +1,145 @@ + + + + + diff --git a/components/RsBadge.vue b/components/RsBadge.vue new file mode 100644 index 0000000..e94fff3 --- /dev/null +++ b/components/RsBadge.vue @@ -0,0 +1,34 @@ + + + diff --git a/components/RsButton.vue b/components/RsButton.vue new file mode 100644 index 0000000..19beb81 --- /dev/null +++ b/components/RsButton.vue @@ -0,0 +1,58 @@ + + + diff --git a/components/RsCard.vue b/components/RsCard.vue new file mode 100644 index 0000000..d811bbe --- /dev/null +++ b/components/RsCard.vue @@ -0,0 +1,16 @@ + + + diff --git a/components/RsCodeMirror.vue b/components/RsCodeMirror.vue new file mode 100644 index 0000000..70b1516 --- /dev/null +++ b/components/RsCodeMirror.vue @@ -0,0 +1,223 @@ + + + + + diff --git a/components/RsCollapse.vue b/components/RsCollapse.vue new file mode 100644 index 0000000..dd60650 --- /dev/null +++ b/components/RsCollapse.vue @@ -0,0 +1,24 @@ + + + diff --git a/components/RsCollapseItem.vue b/components/RsCollapseItem.vue new file mode 100644 index 0000000..54d24ca --- /dev/null +++ b/components/RsCollapseItem.vue @@ -0,0 +1,94 @@ + + + diff --git a/components/RsDropdown.vue b/components/RsDropdown.vue new file mode 100644 index 0000000..a6d223d --- /dev/null +++ b/components/RsDropdown.vue @@ -0,0 +1,222 @@ + + + diff --git a/components/RsDropdownItem.vue b/components/RsDropdownItem.vue new file mode 100644 index 0000000..6d715ee --- /dev/null +++ b/components/RsDropdownItem.vue @@ -0,0 +1,21 @@ + + + diff --git a/components/RsFieldset.vue b/components/RsFieldset.vue new file mode 100644 index 0000000..dba5bd9 --- /dev/null +++ b/components/RsFieldset.vue @@ -0,0 +1,45 @@ + + + diff --git a/components/RsModal.vue b/components/RsModal.vue new file mode 100644 index 0000000..c3d8471 --- /dev/null +++ b/components/RsModal.vue @@ -0,0 +1,149 @@ + + + diff --git a/components/RsProgressBar.vue b/components/RsProgressBar.vue new file mode 100644 index 0000000..3d7053a --- /dev/null +++ b/components/RsProgressBar.vue @@ -0,0 +1,63 @@ + + + diff --git a/components/RsTab.vue b/components/RsTab.vue new file mode 100644 index 0000000..8990aa3 --- /dev/null +++ b/components/RsTab.vue @@ -0,0 +1,230 @@ + + + diff --git a/components/RsTabItem.vue b/components/RsTabItem.vue new file mode 100644 index 0000000..a0eec26 --- /dev/null +++ b/components/RsTabItem.vue @@ -0,0 +1,20 @@ + + + diff --git a/components/RsTable.vue b/components/RsTable.vue new file mode 100644 index 0000000..057ba28 --- /dev/null +++ b/components/RsTable.vue @@ -0,0 +1,808 @@ + + + diff --git a/components/RsWizard.vue b/components/RsWizard.vue new file mode 100644 index 0000000..86ffb1b --- /dev/null +++ b/components/RsWizard.vue @@ -0,0 +1,228 @@ + + + diff --git a/components/VoiceReader.vue b/components/VoiceReader.vue new file mode 100644 index 0000000..8fe3d04 --- /dev/null +++ b/components/VoiceReader.vue @@ -0,0 +1,35 @@ + + + + + diff --git a/components/draggable/nested.vue b/components/draggable/nested.vue new file mode 100644 index 0000000..1d0239e --- /dev/null +++ b/components/draggable/nested.vue @@ -0,0 +1,33 @@ + + + + + diff --git a/components/draggable/sideMenuNested.vue b/components/draggable/sideMenuNested.vue new file mode 100644 index 0000000..0596c5b --- /dev/null +++ b/components/draggable/sideMenuNested.vue @@ -0,0 +1,533 @@ + + + diff --git a/components/formkit/DateTimePicker.vue b/components/formkit/DateTimePicker.vue new file mode 100644 index 0000000..6737d41 --- /dev/null +++ b/components/formkit/DateTimePicker.vue @@ -0,0 +1,13 @@ + + + diff --git a/components/formkit/FileDropzone.vue b/components/formkit/FileDropzone.vue new file mode 100644 index 0000000..57743b7 --- /dev/null +++ b/components/formkit/FileDropzone.vue @@ -0,0 +1,139 @@ + + + diff --git a/components/formkit/OneTimePassword.vue b/components/formkit/OneTimePassword.vue new file mode 100644 index 0000000..f141fde --- /dev/null +++ b/components/formkit/OneTimePassword.vue @@ -0,0 +1,83 @@ + + + diff --git a/components/formkit/TextMask.vue b/components/formkit/TextMask.vue new file mode 100644 index 0000000..55a1be8 --- /dev/null +++ b/components/formkit/TextMask.vue @@ -0,0 +1,23 @@ + + + diff --git a/components/formkit/Toggle.vue b/components/formkit/Toggle.vue new file mode 100644 index 0000000..3faee73 --- /dev/null +++ b/components/formkit/Toggle.vue @@ -0,0 +1,36 @@ + + + diff --git a/components/layouts/Breadcrumb.vue b/components/layouts/Breadcrumb.vue new file mode 100644 index 0000000..76fc646 --- /dev/null +++ b/components/layouts/Breadcrumb.vue @@ -0,0 +1,88 @@ + + + diff --git a/components/layouts/BreadcrumbV2.vue b/components/layouts/BreadcrumbV2.vue new file mode 100644 index 0000000..268a040 --- /dev/null +++ b/components/layouts/BreadcrumbV2.vue @@ -0,0 +1,98 @@ + + + diff --git a/components/layouts/FormHeader.vue b/components/layouts/FormHeader.vue new file mode 100644 index 0000000..9f11cbf --- /dev/null +++ b/components/layouts/FormHeader.vue @@ -0,0 +1,20 @@ + + + diff --git a/components/layouts/Header.vue b/components/layouts/Header.vue new file mode 100644 index 0000000..02f3678 --- /dev/null +++ b/components/layouts/Header.vue @@ -0,0 +1,327 @@ + + + + + diff --git a/components/layouts/configmenu/index.vue b/components/layouts/configmenu/index.vue new file mode 100644 index 0000000..acc60ec --- /dev/null +++ b/components/layouts/configmenu/index.vue @@ -0,0 +1,241 @@ + + + diff --git a/components/layouts/horizontal/index.vue b/components/layouts/horizontal/index.vue new file mode 100644 index 0000000..4322d41 --- /dev/null +++ b/components/layouts/horizontal/index.vue @@ -0,0 +1,7 @@ + + + + diff --git a/components/layouts/index.vue b/components/layouts/index.vue new file mode 100644 index 0000000..c6e9aa9 --- /dev/null +++ b/components/layouts/index.vue @@ -0,0 +1,25 @@ + + + diff --git a/components/layouts/sidemenu/Item.vue b/components/layouts/sidemenu/Item.vue new file mode 100644 index 0000000..f155f84 --- /dev/null +++ b/components/layouts/sidemenu/Item.vue @@ -0,0 +1,166 @@ + + + diff --git a/components/layouts/sidemenu/ItemChild.vue b/components/layouts/sidemenu/ItemChild.vue new file mode 100644 index 0000000..a642f36 --- /dev/null +++ b/components/layouts/sidemenu/ItemChild.vue @@ -0,0 +1,145 @@ + + + diff --git a/components/layouts/sidemenu/index.vue b/components/layouts/sidemenu/index.vue new file mode 100644 index 0000000..e9e7d2a --- /dev/null +++ b/components/layouts/sidemenu/index.vue @@ -0,0 +1,72 @@ + + + diff --git a/components/layouts/vertical/index.vue b/components/layouts/vertical/index.vue new file mode 100644 index 0000000..8983836 --- /dev/null +++ b/components/layouts/vertical/index.vue @@ -0,0 +1,41 @@ + + + diff --git a/composables/codemirrorThemes.js b/composables/codemirrorThemes.js new file mode 100644 index 0000000..3cb5ef5 --- /dev/null +++ b/composables/codemirrorThemes.js @@ -0,0 +1,284 @@ +export default function () { + return [ + { + name: "3024-day", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/3024-day.png", + }, + { + name: "3024-night", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/3024-night.png", + }, + { + name: "abcdef", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/abcdef.png", + }, + { + name: "ambiance-mobile", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/ambiance-mobile.png", + }, + { + name: "ambiance", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/ambiance.png", + }, + { + name: "ayu-dark", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/ayu-dark.png", + }, + { + name: "ayu-mirage", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/ayu-mirage.png", + }, + { + name: "base16-dark", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/base16-dark.png", + }, + { + name: "base16-light", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/base16-light.png", + }, + { + name: "bespin", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/bespin.png", + }, + { + name: "blackboard", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/blackboard.png", + }, + { + name: "cobalt", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/cobalt.png", + }, + { + name: "colorforth", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/colorforth.png", + }, + { + name: "dracula", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/dracula.png", + }, + { + name: "duotone-dark", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/duotone-dark.png", + }, + { + name: "duotone-light", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/duotone-light.png", + }, + { + name: "eclipse", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/eclipse.png", + }, + { + name: "elegant", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/elegant.png", + }, + { + name: "erlang-dark", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/erlang-dark.png", + }, + { + name: "gruvbox-dark", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/gruvbox-dark.png", + }, + { + name: "hopscotch", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/hopscotch.png", + }, + { + name: "icecoder", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/icecoder.png", + }, + { + name: "idea", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/idea.png", + }, + { + name: "isotope", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/isotope.png", + }, + { + name: "lesser-dark", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/lesser-dark.png", + }, + { + name: "liquibyte", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/liquibyte.png", + }, + { + name: "lucario", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/lucario.png", + }, + { + name: "material", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/material.png", + }, + { + name: "mbo", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/mbo.png", + }, + { + name: "mdn-like", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/mdn-like.png", + }, + { + name: "midnight", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/midnight.png", + }, + { + name: "monokai", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/monokai.png", + }, + { + name: "neat", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/neat.png", + }, + { + name: "neo", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/neo.png", + }, + { + name: "night", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/night.png", + }, + { + name: "oceanic-next", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/oceanic-next.png", + }, + { + name: "panda-syntax", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/panda-syntax.png", + }, + { + name: "paraiso-dark", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/paraiso-dark.png", + }, + { + name: "paraiso-light", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/paraiso-light.png", + }, + { + name: "pastel-on-dark", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/pastel-on-dark.png", + }, + { + name: "railscasts", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/railscasts.png", + }, + { + name: "rubyblue", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/rubyblue.png", + }, + { + name: "seti", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/seti.png", + }, + { + name: "shadowfox", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/shadowfox.png", + }, + { + name: "solarized", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/solarized.png", + }, + { + name: "the-matrix", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/the-matrix.png", + }, + { + name: "tomorrow-night-bright", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/tomorrow-night-bright.png", + }, + { + name: "tomorrow-night-eighties", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/tomorrow-night-eighties.png", + }, + { + name: "ttcn", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/ttcn.png", + }, + { + name: "twilight", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/twilight.png", + }, + { + name: "vibrant-ink", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/vibrant-ink.png", + }, + { + name: "xq-dark", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/xq-dark.png", + }, + { + name: "xq-light", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/xq-light.png", + }, + { + name: "yeti", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/yeti.png", + }, + { + name: "yonce", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/yonce.png", + }, + { + name: "zenburn", + image: + "https://raw.githubusercontent.com/codemirror/CodeMirror/master/theme/zenburn.png", + }, + ]; +} diff --git a/composables/languageList.js b/composables/languageList.js new file mode 100644 index 0000000..3c14fa7 --- /dev/null +++ b/composables/languageList.js @@ -0,0 +1,20 @@ +export default function () { + return [ + { + name: "English", + value: "en", + flagCode: "GB", + default: true, + }, + { + name: "Malay", + value: "ms", + flagCode: "MY", + }, + { + name: "Chinese", + value: "cn", + flagCode: "CN", + } + ]; +} diff --git a/composables/themeList.js b/composables/themeList.js new file mode 100644 index 0000000..3779de1 --- /dev/null +++ b/composables/themeList.js @@ -0,0 +1,55 @@ +export default function () { + return [ + { + theme: "biasa", + colors: [ + { + name: "primary", + value: "243, 88, 106", + }, + { + name: "secondary", + value: "240, 122, 37", + }, + { + name: "accent", + value: "243, 244, 246", + }, + ], + }, + { + theme: "gelap", + colors: [ + { + name: "primary", + value: "243, 88, 106", + }, + { + name: "secondary", + value: "240, 122, 37", + }, + { + name: "accent", + value: "15, 23, 42", + }, + ], + }, + { + theme: "LZS", + colors: [ + { + name: "primary", + value: "0, 90, 173", // #005AAD - Blue + }, + { + name: "secondary", + value: "141, 199, 61", // #8DC73D - Green + }, + { + name: "accent", + value: "255, 242, 0", // #FFF200 - Yellow + }, + ], + }, + ]; +} diff --git a/composables/themeList2.js b/composables/themeList2.js new file mode 100644 index 0000000..26230d5 --- /dev/null +++ b/composables/themeList2.js @@ -0,0 +1,129 @@ +export default function () { + return [ + { + theme: "biru", + colors: [ + { + name: "primary", + value: "0, 102, 204", // Strong blue + }, + { + name: "secondary", + value: "51, 153, 255", // Lighter blue + }, + { + name: "accent", + value: "255, 204, 0", // Gold + }, + { + name: "background", + value: "240, 248, 255", // Alice blue + }, + { + name: "text", + value: "0, 0, 0", // Black + }, + ], + }, + { + theme: "merah", + colors: [ + { + name: "primary", + value: "204, 0, 0", // Strong red + }, + { + name: "secondary", + value: "255, 102, 102", // Lighter red + }, + { + name: "accent", + value: "255, 255, 153", // Light yellow + }, + { + name: "background", + value: "255, 240, 240", // Very light pink + }, + { + name: "text", + value: "0, 0, 0", // Black + }, + ], + }, + { + theme: "ungu", + colors: [ + { + name: "primary", + value: "75, 0, 130", // Indigo + }, + { + name: "secondary", + value: "138, 43, 226", // Blue violet + }, + { + name: "accent", + value: "255, 215, 0", // Gold + }, + { + name: "background", + value: "240, 248, 255", // Alice blue + }, + { + name: "text", + value: "0, 0, 0", // Black + }, + ], + }, + { + theme: "oren", + colors: [ + { + name: "primary", + value: "255, 103, 0", // Dark orange + }, + { + name: "secondary", + value: "255, 159, 64", // Lighter orange + }, + { + name: "accent", + value: "0, 128, 128", // Teal + }, + { + name: "background", + value: "255, 250, 240", // Floral white + }, + { + name: "text", + value: "0, 0, 0", // Black + }, + ], + }, + { + theme: "LZS", + colors: [ + { + name: "primary", + value: "0, 90, 173", // #005AAD - Blue + }, + { + name: "secondary", + value: "141, 199, 61", // #8DC73D - Green + }, + { + name: "accent", + value: "255, 242, 0", // #FFF200 - Yellow + }, + { + name: "background", + value: "245, 250, 255", // Very light blue background + }, + { + name: "text", + value: "0, 0, 0", // Black + }, + ], + }, + ]; +} diff --git a/composables/useDebounceFn.js b/composables/useDebounceFn.js new file mode 100644 index 0000000..b26c57b --- /dev/null +++ b/composables/useDebounceFn.js @@ -0,0 +1,87 @@ +import { ref, onUnmounted } from 'vue'; + +/** + * Creates a debounced version of a function + * @param {Function} fn - The function to debounce + * @param {number} delay - The delay in milliseconds + * @returns {Function} - The debounced function + */ +export const useDebounceFn = (fn, delay = 300) => { + if (typeof fn !== 'function') { + throw new Error('First argument must be a function'); + } + + // Store the timeout ID for cleanup + const timeoutId = ref(null); + + // Clean up any pending timeouts when the component is unmounted + onUnmounted(() => { + if (timeoutId.value) { + clearTimeout(timeoutId.value); + } + }); + + // Return the debounced function + return (...args) => { + // Clear previous timeout if exists + if (timeoutId.value) { + clearTimeout(timeoutId.value); + } + + // Set a new timeout + timeoutId.value = setTimeout(() => { + fn(...args); + timeoutId.value = null; + }, delay); + }; +}; + +/** + * Creates a throttled version of a function + * @param {Function} fn - The function to throttle + * @param {number} delay - The delay in milliseconds + * @returns {Function} - The throttled function + */ +export const useThrottleFn = (fn, delay = 300) => { + if (typeof fn !== 'function') { + throw new Error('First argument must be a function'); + } + + // Store the last execution time + const lastExecution = ref(0); + // Store the timeout ID for cleanup + const timeoutId = ref(null); + + // Clean up any pending timeouts when the component is unmounted + onUnmounted(() => { + if (timeoutId.value) { + clearTimeout(timeoutId.value); + } + }); + + // Return the throttled function + return (...args) => { + const now = Date.now(); + const elapsed = now - lastExecution.value; + + // Clear any existing timeout + if (timeoutId.value) { + clearTimeout(timeoutId.value); + } + + // If enough time has passed, execute immediately + if (elapsed >= delay) { + lastExecution.value = now; + fn(...args); + } else { + // Otherwise, schedule execution for when the delay has passed + timeoutId.value = setTimeout(() => { + lastExecution.value = Date.now(); + fn(...args); + timeoutId.value = null; + }, delay - elapsed); + } + }; +}; + +export default useDebounceFn; \ No newline at end of file diff --git a/composables/useNotificationDelivery.js b/composables/useNotificationDelivery.js new file mode 100644 index 0000000..e5f1b8c --- /dev/null +++ b/composables/useNotificationDelivery.js @@ -0,0 +1,411 @@ +import { ref } from "vue"; + +export const useNotificationDelivery = () => { + const isLoading = ref(false); + const error = ref(null); + const deliveryStats = ref(null); + const emailConfig = ref(null); + const pushConfig = ref(null); + const smsConfig = ref(null); + const deliverySettings = ref(null); + const deliveryProviders = ref([]); + const deliveryMetrics = ref({ + sent: 0, + delivered: 0, + failed: 0, + pending: 0 + }); + + // Reset error state + const resetError = () => { + error.value = null; + }; + + // Fetch delivery statistics + const fetchDeliveryStats = async () => { + isLoading.value = true; + error.value = null; + + try { + const response = await $fetch("/api/notifications/delivery/stats"); + + if (response.success) { + deliveryStats.value = response.data; + + // Update metrics from stats + deliveryMetrics.value = { + sent: response.data.totalSent || 0, + delivered: response.data.totalDelivered || 0, + failed: response.data.totalFailed || 0, + pending: response.data.totalPending || 0 + }; + + return response.data; + } else { + throw new Error(response.message || "Failed to fetch delivery stats"); + } + } catch (err) { + error.value = err.data?.message || err.message || "Failed to fetch delivery stats"; + throw error.value; + } finally { + isLoading.value = false; + } + }; + + // Fetch email configuration + const fetchEmailConfig = async () => { + isLoading.value = true; + error.value = null; + + try { + const response = await $fetch("/api/notifications/delivery/email-config"); + + if (response.success) { + emailConfig.value = response.data; + return response.data; + } else { + throw new Error(response.message || "Failed to fetch email configuration"); + } + } catch (err) { + error.value = err.data?.message || err.message || "Failed to fetch email configuration"; + throw error.value; + } finally { + isLoading.value = false; + } + }; + + // Fetch push notification configuration + const fetchPushConfig = async () => { + isLoading.value = true; + error.value = null; + + try { + const response = await $fetch("/api/notifications/delivery/push-config"); + + if (response.success) { + pushConfig.value = response.data; + return response.data; + } else { + throw new Error(response.message || "Failed to fetch push configuration"); + } + } catch (err) { + error.value = err.data?.message || err.message || "Failed to fetch push configuration"; + throw error.value; + } finally { + isLoading.value = false; + } + }; + + // Fetch SMS configuration + const fetchSmsConfig = async () => { + isLoading.value = true; + error.value = null; + + try { + const response = await $fetch("/api/notifications/delivery/sms-config"); + + if (response.success) { + smsConfig.value = response.data; + return response.data; + } else { + throw new Error(response.message || "Failed to fetch SMS configuration"); + } + } catch (err) { + error.value = err.data?.message || err.message || "Failed to fetch SMS configuration"; + throw error.value; + } finally { + isLoading.value = false; + } + }; + + // Fetch delivery settings + const fetchDeliverySettings = async () => { + isLoading.value = true; + error.value = null; + + try { + const response = await $fetch("/api/notifications/delivery/settings"); + + if (response.success) { + deliverySettings.value = response.data; + return response.data; + } else { + throw new Error(response.message || "Failed to fetch delivery settings"); + } + } catch (err) { + error.value = err.data?.message || err.message || "Failed to fetch delivery settings"; + throw error.value; + } finally { + isLoading.value = false; + } + }; + + // Fetch all delivery providers + const fetchDeliveryProviders = async () => { + isLoading.value = true; + error.value = null; + + try { + const response = await $fetch("/api/notifications/delivery/providers"); + + if (response.success) { + deliveryProviders.value = response.data; + return response.data; + } else { + throw new Error(response.message || "Failed to fetch delivery providers"); + } + } catch (err) { + error.value = err.data?.message || err.message || "Failed to fetch delivery providers"; + throw error.value; + } finally { + isLoading.value = false; + } + }; + + // Fetch delivery performance metrics + const fetchDeliveryPerformance = async (period = 'last_30_days') => { + isLoading.value = true; + error.value = null; + + try { + const response = await $fetch(`/api/notifications/delivery/performance?period=${period}`); + + if (response.success) { + return response.data; + } else { + throw new Error(response.message || "Failed to fetch delivery performance"); + } + } catch (err) { + error.value = err.data?.message || err.message || "Failed to fetch delivery performance"; + throw error.value; + } finally { + isLoading.value = false; + } + }; + + // Test delivery configuration + const testDeliveryConfig = async (channel, config) => { + isLoading.value = true; + error.value = null; + + try { + const response = await $fetch("/api/notifications/delivery/test", { + method: "POST", + body: { + channel, + config + } + }); + + if (response.success) { + return { + success: true, + message: response.message || "Test successful" + }; + } else { + throw new Error(response.message || `Failed to test ${channel} configuration`); + } + } catch (err) { + error.value = err.data?.message || err.message || `Failed to test ${channel} configuration`; + throw error.value; + } finally { + isLoading.value = false; + } + }; + + // Update email configuration + const updateEmailConfig = async (config) => { + isLoading.value = true; + error.value = null; + + try { + const response = await $fetch("/api/notifications/delivery/email-config", { + method: "PUT", + body: config, + }); + + if (response.success) { + // Update local state + emailConfig.value = response.data; + return response.data; + } else { + throw new Error(response.message || "Failed to update email configuration"); + } + } catch (err) { + error.value = err.data?.message || err.message || "Failed to update email configuration"; + throw error.value; + } finally { + isLoading.value = false; + } + }; + + // Update push notification configuration + const updatePushConfig = async (config) => { + isLoading.value = true; + error.value = null; + + try { + const response = await $fetch("/api/notifications/delivery/push-config", { + method: "PUT", + body: config, + }); + + if (response.success) { + // Update local state + pushConfig.value = response.data; + return response.data; + } else { + throw new Error(response.message || "Failed to update push configuration"); + } + } catch (err) { + error.value = err.data?.message || err.message || "Failed to update push configuration"; + throw error.value; + } finally { + isLoading.value = false; + } + }; + + // Update SMS configuration + const updateSmsConfig = async (config) => { + isLoading.value = true; + error.value = null; + + try { + const response = await $fetch("/api/notifications/delivery/sms-config", { + method: "PUT", + body: config, + }); + + if (response.success) { + // Update local state + smsConfig.value = response.data; + return response.data; + } else { + throw new Error(response.message || "Failed to update SMS configuration"); + } + } catch (err) { + error.value = err.data?.message || err.message || "Failed to update SMS configuration"; + throw error.value; + } finally { + isLoading.value = false; + } + }; + + // Update delivery settings + const updateDeliverySettings = async (settings) => { + isLoading.value = true; + error.value = null; + + try { + const response = await $fetch("/api/notifications/delivery/settings", { + method: "PUT", + body: settings, + }); + + if (response.success) { + // Update local state + deliverySettings.value = response.data; + return response.data; + } else { + throw new Error(response.message || "Failed to update delivery settings"); + } + } catch (err) { + error.value = err.data?.message || err.message || "Failed to update delivery settings"; + throw error.value; + } finally { + isLoading.value = false; + } + }; + + // Retry failed deliveries + const retryFailedDeliveries = async (notificationId = null) => { + isLoading.value = true; + error.value = null; + + try { + const endpoint = notificationId + ? `/api/notifications/delivery/retry/${notificationId}` + : "/api/notifications/delivery/retry"; + + const response = await $fetch(endpoint, { + method: "POST" + }); + + if (response.success) { + return { + success: true, + message: response.message || "Retry initiated successfully", + data: response.data + }; + } else { + throw new Error(response.message || "Failed to retry deliveries"); + } + } catch (err) { + error.value = err.data?.message || err.message || "Failed to retry deliveries"; + throw error.value; + } finally { + isLoading.value = false; + } + }; + + // Fetch delivery logs + const fetchDeliveryLogs = async (params = {}) => { + isLoading.value = true; + error.value = null; + + try { + const queryString = new URLSearchParams(); + + if (params.page) queryString.append("page", params.page); + if (params.limit) queryString.append("limit", params.limit); + if (params.status) queryString.append("status", params.status); + if (params.channel) queryString.append("channel", params.channel); + if (params.notificationId) queryString.append("notificationId", params.notificationId); + if (params.startDate) queryString.append("startDate", params.startDate); + if (params.endDate) queryString.append("endDate", params.endDate); + + const response = await $fetch(`/api/notifications/delivery/logs?${queryString.toString()}`); + + if (response.success) { + return response.data; + } else { + throw new Error(response.message || "Failed to fetch delivery logs"); + } + } catch (err) { + error.value = err.data?.message || err.message || "Failed to fetch delivery logs"; + throw error.value; + } finally { + isLoading.value = false; + } + }; + + return { + // State + isLoading, + error, + deliveryStats, + emailConfig, + pushConfig, + smsConfig, + deliverySettings, + deliveryProviders, + deliveryMetrics, + + // Methods + resetError, + fetchDeliveryStats, + fetchEmailConfig, + fetchPushConfig, + fetchSmsConfig, + fetchDeliverySettings, + fetchDeliveryProviders, + fetchDeliveryPerformance, + fetchDeliveryLogs, + testDeliveryConfig, + updateEmailConfig, + updatePushConfig, + updateSmsConfig, + updateDeliverySettings, + retryFailedDeliveries + }; +}; \ No newline at end of file diff --git a/composables/useNotificationLogs.js b/composables/useNotificationLogs.js new file mode 100644 index 0000000..af79dc8 --- /dev/null +++ b/composables/useNotificationLogs.js @@ -0,0 +1,301 @@ +import { ref } from 'vue' + +export const useNotificationLogs = () => { + // Use Nuxt's useFetch instead of $fetch + const config = useRuntimeConfig() + + // Logs data state + const logs = ref([]) + const loading = ref(false) + const error = ref(null) + const pagination = ref({ + page: 1, + limit: 10, + total: 0, + pages: 1 + }) + const summaryStats = ref({ + totalLogs: 0, + failedDeliveries: 0, + successfulDeliveries: 0, + successRate: 0 + }) + + // Filters state + const filters = ref({ + startDate: null, + endDate: null, + action: null, + channel: null, + status: null, + actor: '', + keyword: '' + }) + + // Analytics state + const analyticsData = ref(null) + const analyticsLoading = ref(false) + const analyticsError = ref(null) + + // Monitoring state + const monitoringData = ref(null) + const monitoringLoading = ref(false) + const monitoringError = ref(null) + + // Fetch logs with filters and pagination + const fetchLogs = async () => { + try { + loading.value = true + error.value = null + + // Build query parameters + const queryParams = new URLSearchParams() + queryParams.append('page', pagination.value.page) + queryParams.append('limit', pagination.value.limit) + + // Add filters if they exist + if (filters.value.startDate) queryParams.append('startDate', filters.value.startDate) + if (filters.value.endDate) queryParams.append('endDate', filters.value.endDate) + if (filters.value.action) queryParams.append('action', filters.value.action) + if (filters.value.channel) queryParams.append('channel', filters.value.channel) + if (filters.value.status) queryParams.append('status', filters.value.status) + if (filters.value.actor) queryParams.append('actor', filters.value.actor) + if (filters.value.keyword) queryParams.append('keyword', filters.value.keyword) + + // Make API call with useFetch + const { data, error: fetchError } = await useFetch(`/api/notifications/logs`, { + method: 'GET', + params: { + page: pagination.value.page, + limit: pagination.value.limit, + ...filters.value + } + }) + + if (fetchError.value) { + throw new Error(fetchError.value.message || 'Failed to fetch logs'); + } + + if (data.value && data.value.body && data.value.body.success) { + logs.value = data.value.body.data.logs || []; + pagination.value = data.value.body.data.pagination || pagination.value; + + // Ensure summary stats are properly assigned + if (data.value.body.data.summary) { + summaryStats.value = { + totalLogs: data.value.body.data.summary.totalLogs || 0, + failedDeliveries: data.value.body.data.summary.failedDeliveries || 0, + successfulDeliveries: data.value.body.data.summary.successfulDeliveries || 0, + successRate: data.value.body.data.summary.successRate || 0 + }; + } + + console.log('Logs fetched successfully:', { + logsCount: logs.value.length, + pagination: pagination.value, + summaryStats: summaryStats.value + }); + } else { + throw new Error('Failed to fetch logs: ' + (data.value?.body?.message || 'Unknown error')) + } + } catch (err) { + error.value = err.message || 'An error occurred' + console.error('Error fetching logs:', err) + } finally { + loading.value = false + } + } + + // Get a specific log by ID + const getLogById = async (id) => { + try { + loading.value = true + error.value = null + + // Make API call + const { data } = await useFetch(`/api/notifications/logs/${id}`, { + method: 'GET' + }) + + if (data.value && data.value.body && data.value.body.success) { + return data.value.body.data + } else { + throw new Error('Failed to fetch log details') + } + } catch (err) { + error.value = err.message || 'An error occurred' + console.error('Error fetching log details:', err) + return null + } finally { + loading.value = false + } + } + + // Update filters and fetch logs + const applyFilters = async (newFilters) => { + filters.value = { ...filters.value, ...newFilters } + pagination.value.page = 1 // Reset to first page when filters change + await fetchLogs() + } + + // Clear all filters + const clearFilters = async () => { + filters.value = { + startDate: null, + endDate: null, + action: null, + channel: null, + status: null, + actor: '', + keyword: '' + } + pagination.value.page = 1 + await fetchLogs() + } + + // Change page + const changePage = async (page) => { + pagination.value.page = page + await fetchLogs() + } + + // Fetch analytics data + const fetchAnalytics = async (period = '7d', channel = 'all') => { + try { + analyticsLoading.value = true + analyticsError.value = null + + // Make API call + const { data } = await useFetch(`/api/notifications/logs/analytics`, { + method: 'GET', + params: { + period, + channel + } + }) + + if (data.value && data.value.body && data.value.body.success) { + analyticsData.value = data.value.body.data + } else { + throw new Error('Failed to fetch analytics data') + } + } catch (err) { + analyticsError.value = err.message || 'An error occurred' + console.error('Error fetching analytics data:', err) + } finally { + analyticsLoading.value = false + } + } + + // Fetch monitoring data + const fetchMonitoringData = async () => { + try { + monitoringLoading.value = true + monitoringError.value = null + + // Make API call + const { data } = await useFetch('/api/notifications/logs/monitoring', { + method: 'GET' + }) + + if (data.value && data.value.body && data.value.body.success) { + monitoringData.value = data.value.body.data + } else { + throw new Error('Failed to fetch monitoring data') + } + } catch (err) { + monitoringError.value = err.message || 'An error occurred' + console.error('Error fetching monitoring data:', err) + } finally { + monitoringLoading.value = false + } + } + + // Format date for display + const formatDate = (date, includeTime = false) => { + if (!date) return '' + const options = { year: 'numeric', month: 'short', day: 'numeric' } + if (includeTime) { + options.hour = '2-digit' + options.minute = '2-digit' + } + return new Date(date).toLocaleDateString(undefined, options) + } + + // Format time ago (e.g., "2 minutes ago") + const formatTimeAgo = (timestamp) => { + const now = new Date() + const time = new Date(timestamp) + const diffInMinutes = Math.floor((now - time) / (1000 * 60)) + + if (diffInMinutes < 1) return "Just now" + if (diffInMinutes < 60) return `${diffInMinutes} minutes ago` + if (diffInMinutes < 1440) return `${Math.floor(diffInMinutes / 60)} hours ago` + return `${Math.floor(diffInMinutes / 1440)} days ago` + } + + // Get available actions for filters + const availableActions = [ + { label: 'All Actions', value: null }, + { label: 'Notification Created', value: 'Notification Created' }, + { label: 'Notification Sent', value: 'Notification Sent' }, + { label: 'Delivery Attempted', value: 'Delivery Attempted' }, + { label: 'Delivery Failed', value: 'Delivery Failed' }, + { label: 'Notification Opened', value: 'Notification Opened' }, + { label: 'Template Updated', value: 'Template Updated' }, + { label: 'Notification Queued', value: 'Notification Queued' }, + ] + + // Get available channels for filters + const availableChannels = [ + { label: 'All Channels', value: null }, + { label: 'Email', value: 'Email' }, + { label: 'SMS', value: 'SMS' }, + { label: 'Push Notification', value: 'Push Notification' }, + { label: 'Webhook', value: 'Webhook' } + ] + + // Get available statuses for filters + const availableStatuses = [ + { label: 'All Statuses', value: null }, + { label: 'Sent', value: 'Sent' }, + { label: 'Failed', value: 'Failed' }, + { label: 'Bounced', value: 'Bounced' }, + { label: 'Opened', value: 'Opened' }, + { label: 'Queued', value: 'Queued' }, + { label: 'Created', value: 'Created' }, + { label: 'Updated', value: 'Updated' } + ] + + return { + // State + logs, + loading, + error, + pagination, + summaryStats, + filters, + analyticsData, + analyticsLoading, + analyticsError, + monitoringData, + monitoringLoading, + monitoringError, + + // Methods + fetchLogs, + getLogById, + applyFilters, + clearFilters, + changePage, + fetchAnalytics, + fetchMonitoringData, + formatDate, + formatTimeAgo, + + // Filter options + availableActions, + availableChannels, + availableStatuses + } +} \ No newline at end of file diff --git a/composables/useNotifications.js b/composables/useNotifications.js new file mode 100644 index 0000000..899ccee --- /dev/null +++ b/composables/useNotifications.js @@ -0,0 +1,200 @@ +import { ref } from "vue"; + +export const useNotifications = () => { + const isLoading = ref(false); + const notifications = ref([]); + const pagination = ref(null); + const error = ref(null); + + // Fetch notifications list + const fetchNotifications = async (options = {}) => { + isLoading.value = true; + error.value = null; + + try { + const queryParams = new URLSearchParams(); + + console.log("Query Params:", queryParams); + + // Add query parameters + if (options.page) queryParams.append("page", options.page); + if (options.limit) queryParams.append("limit", options.limit); + if (options.status) queryParams.append("status", options.status); + if (options.priority) queryParams.append("priority", options.priority); + if (options.category) queryParams.append("category", options.category); + if (options.search) queryParams.append("search", options.search); + + // Convert camelCase to snake_case for sort fields + if (options.sortBy) { + // Convert camelCase to snake_case (e.g., createdAt -> created_at) + const snakeCaseField = options.sortBy.replace(/([A-Z])/g, "_$1").toLowerCase(); + queryParams.append("sortBy", snakeCaseField); + } + + if (options.sortOrder) queryParams.append("sortOrder", options.sortOrder); + + const url = `/api/notifications/list${ + queryParams.toString() ? "?" + queryParams.toString() : "" + }`; + + const { data } = await $fetch(url); + + notifications.value = data.notifications; + pagination.value = data.pagination; + + return data; + } catch (err) { + error.value = + err.data?.message || err.message || "Failed to fetch notifications"; + throw err; + } finally { + isLoading.value = false; + } + }; + + // Delete notification + const deleteNotification = async (notificationId) => { + try { + const response = await $fetch(`/api/notifications/${notificationId}`, { + method: "DELETE", + }); + + // Remove from local state + notifications.value = notifications.value.filter( + (n) => n.id !== notificationId + ); + + return response; + } catch (err) { + error.value = + err.data?.message || err.message || "Failed to delete notification"; + throw err; + } + }; + + // Get notification by ID + const getNotificationById = async (notificationId) => { + isLoading.value = true; + error.value = null; + + console.log("Notification ID:", notificationId); + + try { + const response = await $fetch(`/api/notifications/${notificationId}`); + return response.data; + } catch (err) { + error.value = + err.data?.message || err.message || "Failed to fetch notification"; + throw err; + } finally { + isLoading.value = false; + } + }; + + // Create notification + const createNotification = async (notificationData) => { + isLoading.value = true; + error.value = null; + + try { + const response = await $fetch("/api/notifications", { + method: "POST", + body: notificationData, + }); + + return response; + } catch (err) { + error.value = + err.data?.message || err.message || "Failed to create notification"; + throw err; + } finally { + isLoading.value = false; + } + }; + + // Update notification + const updateNotification = async (notificationId, notificationData) => { + isLoading.value = true; + error.value = null; + + try { + const response = await $fetch(`/api/notifications/${notificationId}`, { + method: "PUT", + body: notificationData, + }); + + return response; + } catch (err) { + error.value = + err.data?.message || err.message || "Failed to update notification"; + throw err; + } finally { + isLoading.value = false; + } + }; + + // Save draft + const saveDraft = async (draftData) => { + try { + const response = await $fetch("/api/notifications/draft", { + method: "POST", + body: draftData, + }); + + return response; + } catch (err) { + error.value = err.data?.message || err.message || "Failed to save draft"; + throw err; + } + }; + + // Test send notification + const testSendNotification = async (testData) => { + try { + const response = await $fetch("/api/notifications/test-send", { + method: "POST", + body: testData, + }); + + return response; + } catch (err) { + error.value = + err.data?.message || err.message || "Failed to send test notification"; + throw err; + } + }; + + // Get audience preview + const getAudiencePreview = async (audienceData) => { + try { + const response = await $fetch("/api/notifications/audience-preview", { + method: "POST", + body: audienceData, + }); + + return response; + } catch (err) { + error.value = + err.data?.message || err.message || "Failed to get audience preview"; + throw err; + } + }; + + return { + // State + isLoading, + notifications, + pagination, + error, + + // Actions + fetchNotifications, + deleteNotification, + getNotificationById, + createNotification, + updateNotification, + saveDraft, + testSendNotification, + getAudiencePreview, + }; +}; diff --git a/composables/useSiteSettings.js b/composables/useSiteSettings.js new file mode 100644 index 0000000..f9fef1e --- /dev/null +++ b/composables/useSiteSettings.js @@ -0,0 +1,363 @@ +export const useSiteSettings = () => { + // Global site settings state + const siteSettings = useState('siteSettings', () => ({ + siteName: 'corradAF', + siteDescription: 'corradAF Base Project', + siteLogo: '', + siteLoginLogo: '', + siteLoadingLogo: '', + siteFavicon: '', + showSiteNameInHeader: true, + siteNameFontSize: 18, + customCSS: '', + selectedTheme: 'biasa', // Use existing theme system + customThemeFile: '', + currentFont: '', + fontSource: '', + // SEO fields + seoTitle: '', + seoDescription: '', + seoKeywords: '', + seoAuthor: '', + seoOgImage: '', + seoTwitterCard: 'summary_large_image', + seoCanonicalUrl: '', + seoRobots: 'index, follow', + seoGoogleAnalytics: '', + seoGoogleTagManager: '', + seoFacebookPixel: '' + })); + + // Loading state + const loading = useState('siteSettingsLoading', () => false); + + // Load site settings from API + const loadSiteSettings = async () => { + loading.value = true; + try { + const response = await $fetch("/api/devtool/config/site-settings", { + method: "GET", + }); + + if (response && response.data) { + siteSettings.value = { ...siteSettings.value, ...response.data }; + applyThemeSettings(); + updateGlobalMeta(); + } + } catch (error) { + console.error("Error loading site settings:", error); + } finally { + loading.value = false; + } + }; + + // Update global meta tags and SEO + const updateGlobalMeta = () => { + if (process.client) { + // Update page title - use SEO title if available + const title = siteSettings.value.seoTitle || siteSettings.value.siteName; + if (title) { + document.title = title; + + // Update meta description - use SEO description if available + let metaDescription = document.querySelector('meta[name="description"]'); + if (!metaDescription) { + metaDescription = document.createElement('meta'); + metaDescription.name = 'description'; + document.head.appendChild(metaDescription); + } + metaDescription.content = siteSettings.value.seoDescription || siteSettings.value.siteDescription || title; + + // Update keywords meta tag + if (siteSettings.value.seoKeywords) { + let keywordsMeta = document.querySelector('meta[name="keywords"]'); + if (!keywordsMeta) { + keywordsMeta = document.createElement('meta'); + keywordsMeta.name = 'keywords'; + document.head.appendChild(keywordsMeta); + } + keywordsMeta.content = siteSettings.value.seoKeywords; + } + + // Update author meta tag + if (siteSettings.value.seoAuthor) { + let authorMeta = document.querySelector('meta[name="author"]'); + if (!authorMeta) { + authorMeta = document.createElement('meta'); + authorMeta.name = 'author'; + document.head.appendChild(authorMeta); + } + authorMeta.content = siteSettings.value.seoAuthor; + } + + // Update robots meta tag + let robotsMeta = document.querySelector('meta[name="robots"]'); + if (!robotsMeta) { + robotsMeta = document.createElement('meta'); + robotsMeta.name = 'robots'; + document.head.appendChild(robotsMeta); + } + robotsMeta.content = siteSettings.value.seoRobots; + + // Update Open Graph tags + let ogTitle = document.querySelector('meta[property="og:title"]'); + if (!ogTitle) { + ogTitle = document.createElement('meta'); + ogTitle.setAttribute('property', 'og:title'); + document.head.appendChild(ogTitle); + } + ogTitle.content = title; + + let ogDescription = document.querySelector('meta[property="og:description"]'); + if (!ogDescription) { + ogDescription = document.createElement('meta'); + ogDescription.setAttribute('property', 'og:description'); + document.head.appendChild(ogDescription); + } + ogDescription.content = siteSettings.value.seoDescription || siteSettings.value.siteDescription || title; + + // Update OG image + if (siteSettings.value.seoOgImage) { + let ogImage = document.querySelector('meta[property="og:image"]'); + if (!ogImage) { + ogImage = document.createElement('meta'); + ogImage.setAttribute('property', 'og:image'); + document.head.appendChild(ogImage); + } + ogImage.content = siteSettings.value.seoOgImage; + } + + // Update Twitter Card tags + let twitterCard = document.querySelector('meta[name="twitter:card"]'); + if (!twitterCard) { + twitterCard = document.createElement('meta'); + twitterCard.name = 'twitter:card'; + document.head.appendChild(twitterCard); + } + twitterCard.content = siteSettings.value.seoTwitterCard; + + let twitterTitle = document.querySelector('meta[name="twitter:title"]'); + if (!twitterTitle) { + twitterTitle = document.createElement('meta'); + twitterTitle.name = 'twitter:title'; + document.head.appendChild(twitterTitle); + } + twitterTitle.content = title; + + let twitterDescription = document.querySelector('meta[name="twitter:description"]'); + if (!twitterDescription) { + twitterDescription = document.createElement('meta'); + twitterDescription.name = 'twitter:description'; + document.head.appendChild(twitterDescription); + } + twitterDescription.content = siteSettings.value.seoDescription || siteSettings.value.siteDescription || title; + + // Update canonical URL + if (siteSettings.value.seoCanonicalUrl) { + let canonicalLink = document.querySelector('link[rel="canonical"]'); + if (!canonicalLink) { + canonicalLink = document.createElement('link'); + canonicalLink.rel = 'canonical'; + document.head.appendChild(canonicalLink); + } + canonicalLink.href = siteSettings.value.seoCanonicalUrl; + } + } + + // Update favicon + if (siteSettings.value.siteFavicon) { + let faviconLink = document.querySelector("link[rel*='icon']"); + if (!faviconLink) { + faviconLink = document.createElement('link'); + faviconLink.rel = 'icon'; + document.head.appendChild(faviconLink); + } + faviconLink.href = siteSettings.value.siteFavicon; + + // Update apple touch icon + let appleTouchIcon = document.querySelector("link[rel='apple-touch-icon']"); + if (!appleTouchIcon) { + appleTouchIcon = document.createElement('link'); + appleTouchIcon.rel = 'apple-touch-icon'; + document.head.appendChild(appleTouchIcon); + } + appleTouchIcon.href = siteSettings.value.siteFavicon; + } + + // Apply analytics scripts + if (siteSettings.value.seoGoogleAnalytics) { + // Add Google Analytics + const script = document.createElement('script'); + script.async = true; + script.src = `https://www.googletagmanager.com/gtag/js?id=${siteSettings.value.seoGoogleAnalytics}`; + document.head.appendChild(script); + + const gtag = document.createElement('script'); + gtag.textContent = ` + window.dataLayer = window.dataLayer || []; + function gtag(){dataLayer.push(arguments);} + gtag('js', new Date()); + gtag('config', '${siteSettings.value.seoGoogleAnalytics}'); + `; + document.head.appendChild(gtag); + } + + if (siteSettings.value.seoGoogleTagManager) { + // Add Google Tag Manager + const gtmScript = document.createElement('script'); + gtmScript.textContent = ` + (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': + new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], + j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= + 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); + })(window,document,'script','dataLayer','${siteSettings.value.seoGoogleTagManager}'); + `; + document.head.appendChild(gtmScript); + } + + if (siteSettings.value.seoFacebookPixel) { + // Add Facebook Pixel + const fbScript = document.createElement('script'); + fbScript.textContent = ` + !function(f,b,e,v,n,t,s) + {if(f.fbq)return;n=f.fbq=function(){n.callMethod? + n.callMethod.apply(n,arguments):n.queue.push(arguments)}; + if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0'; + n.queue=[];t=b.createElement(e);t.async=!0; + t.src=v;s=b.getElementsByTagName(e)[0]; + s.parentNode.insertBefore(t,s)}(window, document,'script', + 'https://connect.facebook.net/en_US/fbevents.js'); + fbq('init', '${siteSettings.value.seoFacebookPixel}'); + fbq('track', 'PageView'); + `; + document.head.appendChild(fbScript); + } + } + }; + + // Apply theme settings to the document + const applyThemeSettings = () => { + if (process.client) { + // Apply selected theme using existing theme system + if (siteSettings.value.selectedTheme) { + document.documentElement.setAttribute("data-theme", siteSettings.value.selectedTheme); + localStorage.setItem("theme", siteSettings.value.selectedTheme); + } + + // Apply custom theme file if exists (append to theme.css) + if (siteSettings.value.customThemeFile) { + let customThemeElement = document.getElementById('custom-theme-file'); + if (!customThemeElement) { + customThemeElement = document.createElement('link'); + customThemeElement.id = 'custom-theme-file'; + customThemeElement.rel = 'stylesheet'; + customThemeElement.type = 'text/css'; + document.head.appendChild(customThemeElement); + } + customThemeElement.href = siteSettings.value.customThemeFile; + } else { + // Remove custom theme file if it exists + const existingThemeElement = document.getElementById('custom-theme-file'); + if (existingThemeElement) { + existingThemeElement.remove(); + } + } + + // Apply custom CSS + let customStyleElement = document.getElementById('custom-site-styles'); + if (!customStyleElement) { + customStyleElement = document.createElement('style'); + customStyleElement.id = 'custom-site-styles'; + document.head.appendChild(customStyleElement); + } + customStyleElement.textContent = siteSettings.value.customCSS || ''; + } + }; + + // Set theme (integrate with existing theme system) + const setTheme = (theme) => { + siteSettings.value.selectedTheme = theme; + applyThemeSettings(); + // Optionally save to server + updateSiteSettings(siteSettings.value); + }; + + // Get current theme + const getCurrentTheme = () => { + return siteSettings.value.selectedTheme || 'biasa'; + }; + + // Update site settings + const updateSiteSettings = async (newSettings) => { + console.log("[useSiteSettings] updateSiteSettings called with:", JSON.parse(JSON.stringify(newSettings))); + try { + const response = await $fetch("/api/devtool/config/site-settings", { + method: "POST", + body: newSettings, + }); + console.log("[useSiteSettings] API response received:", JSON.parse(JSON.stringify(response))); + + if (response && response.data) { + siteSettings.value = { ...siteSettings.value, ...response.data }; + applyThemeSettings(); + updateGlobalMeta(); + console.log("[useSiteSettings] Returning success from updateSiteSettings."); + return { success: true, data: response.data }; + } + + let errorMessage = "Update operation failed: No data returned from server."; + if (response && typeof response === 'object' && response !== null && 'message' in response) { + errorMessage = response.message; + } else if (response) { + errorMessage = "Update operation failed: Unexpected server response format on success."; + } else if (response === undefined) { + errorMessage = "Update failed: Server returned no content (e.g. 204). Treating as failure as data is expected for settings."; + console.log("[useSiteSettings] Returning failure (204 or undefined response) from updateSiteSettings."); + return { success: false, error: { message: errorMessage, details: response } }; + } + + console.log("[useSiteSettings] Returning failure (general case) from updateSiteSettings:", errorMessage); + return { success: false, error: { message: errorMessage, details: response } }; + } catch (error) { + console.error("[useSiteSettings] Error in updateSiteSettings catch block:", error); + let detailedMessage = "An unexpected error occurred during update."; + if (error.data && error.data.message) { + detailedMessage = error.data.message; + } else if (error.message) { + detailedMessage = error.message; + } + console.log("[useSiteSettings] Returning failure (catch block) from updateSiteSettings:", detailedMessage); + return { success: false, error: { message: detailedMessage, details: error } }; + } + }; + + // Add custom theme to theme.css file + const addCustomThemeToFile = async (themeName, themeCSS) => { + try { + const response = await $fetch("/api/devtool/config/add-custom-theme", { + method: "POST", + body: { + themeName, + themeCSS + } + }); + + return response; + } catch (error) { + console.error("Error adding custom theme:", error); + return { success: false, error }; + } + }; + + return { + siteSettings, + loading: readonly(loading), + loadSiteSettings, + updateSiteSettings, + applyThemeSettings, + updateGlobalMeta, + getCurrentTheme, + setTheme, + addCustomThemeToFile + }; +}; \ No newline at end of file diff --git a/composables/useToast.js b/composables/useToast.js new file mode 100644 index 0000000..11ec2e1 --- /dev/null +++ b/composables/useToast.js @@ -0,0 +1,61 @@ +import { useNuxtApp } from "#app"; + +export const useToast = () => { + const { $swal } = useNuxtApp(); + + const toast = { + success(message) { + $swal.fire({ + icon: "success", + title: "Success", + text: message, + toast: true, + position: "top-end", + showConfirmButton: false, + timer: 3000, + timerProgressBar: true, + }); + }, + + error(message) { + $swal.fire({ + icon: "error", + title: "Error", + text: message, + toast: true, + position: "top-end", + showConfirmButton: false, + timer: 5000, + timerProgressBar: true, + }); + }, + + warning(message) { + $swal.fire({ + icon: "warning", + title: "Warning", + text: message, + toast: true, + position: "top-end", + showConfirmButton: false, + timer: 4000, + timerProgressBar: true, + }); + }, + + info(message) { + $swal.fire({ + icon: "info", + title: "Info", + text: message, + toast: true, + position: "top-end", + showConfirmButton: false, + timer: 3000, + timerProgressBar: true, + }); + }, + }; + + return toast; +}; \ No newline at end of file diff --git a/composables/useVoiceReader.js b/composables/useVoiceReader.js new file mode 100644 index 0000000..4778dd1 --- /dev/null +++ b/composables/useVoiceReader.js @@ -0,0 +1,55 @@ +export function useVoiceReader() { + const isReading = ref(false); + const announceElement = ref(null); + let speechSynthesis; + let speechUtterance; + + onMounted(() => { + speechSynthesis = window.speechSynthesis; + speechUtterance = new SpeechSynthesisUtterance(); + + window.addEventListener("keydown", handleKeydown); + }); + + onUnmounted(() => { + if (speechSynthesis) { + speechSynthesis.cancel(); + } + window.removeEventListener("keydown", handleKeydown); + }); + + const toggleReading = () => { + if (!speechSynthesis) return; + + if (isReading.value) { + speechSynthesis.pause(); + isReading.value = false; + announce("Reading paused"); + } else { + const textToRead = document.body.innerText; + speechUtterance.text = textToRead; + speechSynthesis.speak(speechUtterance); + isReading.value = true; + announce("Reading started"); + } + }; + + const handleKeydown = (event) => { + if (event.ctrlKey && event.key === "r") { + event.preventDefault(); + toggleReading(); + } + }; + + const announce = (message) => { + if (announceElement.value) { + announceElement.value.textContent = message; + } + }; + + return { + isReading, + toggleReading, + announceElement, + }; +} diff --git a/database/migrations/001_create_notification_tables.sql b/database/migrations/001_create_notification_tables.sql new file mode 100644 index 0000000..0f2f891 --- /dev/null +++ b/database/migrations/001_create_notification_tables.sql @@ -0,0 +1,222 @@ +-- Notification Categories +CREATE TABLE notification_categories ( + id VARCHAR(36) PRIMARY KEY DEFAULT (UUID()), + name VARCHAR(100) NOT NULL, + value VARCHAR(50) UNIQUE NOT NULL, + description TEXT, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP +); + +-- Notification Templates +CREATE TABLE notification_templates ( + id VARCHAR(36) PRIMARY KEY DEFAULT (UUID()), + name VARCHAR(100) NOT NULL, + value VARCHAR(50) UNIQUE NOT NULL, + subject VARCHAR(255), + email_content TEXT, + push_title VARCHAR(100), + push_body VARCHAR(300), + variables JSON DEFAULT ('[]'), + is_active BOOLEAN DEFAULT true, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP +); + +-- User Segments +CREATE TABLE user_segments ( + id VARCHAR(36) PRIMARY KEY DEFAULT (UUID()), + name VARCHAR(100) NOT NULL, + value VARCHAR(50) UNIQUE NOT NULL, + description TEXT, + criteria JSON NOT NULL, + is_active BOOLEAN DEFAULT true, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP +); + +-- Main Notifications Table +CREATE TABLE notifications ( + id VARCHAR(36) PRIMARY KEY DEFAULT (UUID()), + title VARCHAR(255) NOT NULL, + type VARCHAR(20) NOT NULL CHECK (type IN ('single', 'bulk')), + priority VARCHAR(20) NOT NULL CHECK (priority IN ('low', 'medium', 'high', 'critical')), + category_id VARCHAR(36), + status VARCHAR(20) DEFAULT 'draft' CHECK (status IN ('draft', 'scheduled', 'sending', 'sent', 'failed', 'cancelled')), + + -- Scheduling + delivery_type VARCHAR(20) NOT NULL CHECK (delivery_type IN ('immediate', 'scheduled')), + scheduled_at TIMESTAMP NULL, + timezone VARCHAR(50) DEFAULT 'UTC', + expires_at TIMESTAMP NULL, + + -- A/B Testing + enable_ab_testing BOOLEAN DEFAULT false, + ab_test_split INTEGER DEFAULT 50 CHECK (ab_test_split BETWEEN 10 AND 90), + ab_test_name VARCHAR(100), + + -- Tracking & Analytics + enable_tracking BOOLEAN DEFAULT true, + + -- Audience Settings + audience_type VARCHAR(20) NOT NULL CHECK (audience_type IN ('all', 'specific', 'segmented')), + specific_users TEXT, -- Comma-separated user IDs or emails + user_status VARCHAR(20), + registration_period VARCHAR(50), + exclude_unsubscribed BOOLEAN DEFAULT true, + respect_do_not_disturb BOOLEAN DEFAULT true, + + -- Content + content_type VARCHAR(20) NOT NULL CHECK (content_type IN ('new', 'template')), + template_id VARCHAR(36), + + -- Email Content + email_subject VARCHAR(255), + email_content TEXT, + call_to_action_text VARCHAR(100), + call_to_action_url TEXT, + + -- Push Content + push_title VARCHAR(100), + push_body VARCHAR(300), + push_image_url TEXT, + + -- Metadata + estimated_reach INTEGER DEFAULT 0, + actual_sent INTEGER DEFAULT 0, + created_by VARCHAR(36) NOT NULL, -- User ID who created this + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + sent_at TIMESTAMP NULL, + + FOREIGN KEY (category_id) REFERENCES notification_categories(id), + FOREIGN KEY (template_id) REFERENCES notification_templates(id) +); + +-- Notification Channels (Many-to-Many) +CREATE TABLE notification_channels ( + id VARCHAR(36) PRIMARY KEY DEFAULT (UUID()), + notification_id VARCHAR(36) NOT NULL, + channel_type VARCHAR(20) NOT NULL CHECK (channel_type IN ('email', 'push', 'sms', 'in_app')), + is_enabled BOOLEAN DEFAULT true, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + FOREIGN KEY (notification_id) REFERENCES notifications(id) ON DELETE CASCADE +); + +-- Notification User Segments (Many-to-Many) +CREATE TABLE notification_user_segments ( + id VARCHAR(36) PRIMARY KEY DEFAULT (UUID()), + notification_id VARCHAR(36) NOT NULL, + segment_id VARCHAR(36) NOT NULL, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + FOREIGN KEY (notification_id) REFERENCES notifications(id) ON DELETE CASCADE, + FOREIGN KEY (segment_id) REFERENCES user_segments(id) +); + +-- Notification Recipients (For tracking who received what) +CREATE TABLE notification_recipients ( + id VARCHAR(36) PRIMARY KEY DEFAULT (UUID()), + notification_id VARCHAR(36) NOT NULL, + user_id VARCHAR(36) NOT NULL, + email VARCHAR(255), + channel_type VARCHAR(20) NOT NULL, + status VARCHAR(20) DEFAULT 'pending' CHECK (status IN ('pending', 'sent', 'delivered', 'failed', 'bounced')), + sent_at TIMESTAMP NULL, + delivered_at TIMESTAMP NULL, + opened_at TIMESTAMP NULL, + clicked_at TIMESTAMP NULL, + error_message TEXT, + ab_test_variant VARCHAR(1) CHECK (ab_test_variant IN ('A', 'B')), + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + FOREIGN KEY (notification_id) REFERENCES notifications(id) ON DELETE CASCADE +); + +-- Notification Queue (For scheduled notifications) +CREATE TABLE notification_queue ( + id VARCHAR(36) PRIMARY KEY DEFAULT (UUID()), + notification_id VARCHAR(36) NOT NULL, + recipient_id VARCHAR(36) NOT NULL, + scheduled_for TIMESTAMP NOT NULL, + priority INTEGER DEFAULT 5, + attempts INTEGER DEFAULT 0, + max_attempts INTEGER DEFAULT 3, + status VARCHAR(20) DEFAULT 'queued' CHECK (status IN ('queued', 'processing', 'sent', 'failed', 'cancelled')), + last_attempt_at TIMESTAMP NULL, + error_message TEXT, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + FOREIGN KEY (notification_id) REFERENCES notifications(id) ON DELETE CASCADE, + FOREIGN KEY (recipient_id) REFERENCES notification_recipients(id) ON DELETE CASCADE +); + +-- Notification Analytics +CREATE TABLE notification_analytics ( + id VARCHAR(36) PRIMARY KEY DEFAULT (UUID()), + notification_id VARCHAR(36) NOT NULL, + channel_type VARCHAR(20) NOT NULL, + metric_type VARCHAR(30) NOT NULL CHECK (metric_type IN ('sent', 'delivered', 'opened', 'clicked', 'bounced', 'unsubscribed')), + metric_value INTEGER DEFAULT 0, + recorded_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + metadata JSON DEFAULT ('{}'), + FOREIGN KEY (notification_id) REFERENCES notifications(id) ON DELETE CASCADE +); + +-- User Notification Preferences +CREATE TABLE user_notification_preferences ( + id VARCHAR(36) PRIMARY KEY DEFAULT (UUID()), + user_id VARCHAR(36) NOT NULL, + channel_type VARCHAR(20) NOT NULL, + category_value VARCHAR(50), + is_enabled BOOLEAN DEFAULT true, + do_not_disturb_start TIME, + do_not_disturb_end TIME, + timezone VARCHAR(50) DEFAULT 'UTC', + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + UNIQUE(user_id, channel_type, category_value) +); + +-- Indexes for better performance +CREATE INDEX idx_notifications_status ON notifications(status); +CREATE INDEX idx_notifications_scheduled_at ON notifications(scheduled_at); +CREATE INDEX idx_notifications_created_by ON notifications(created_by); +CREATE INDEX idx_notification_recipients_user_id ON notification_recipients(user_id); +CREATE INDEX idx_notification_recipients_status ON notification_recipients(status); +CREATE INDEX idx_notification_queue_scheduled_for ON notification_queue(scheduled_for); +CREATE INDEX idx_notification_queue_status ON notification_queue(status); +CREATE INDEX idx_notification_analytics_notification_id ON notification_analytics(notification_id); +CREATE INDEX idx_user_notification_preferences_user_id ON user_notification_preferences(user_id); + +-- Insert default categories +INSERT INTO notification_categories (name, value, description) VALUES +('User Management', 'user_management', 'User registration, profile updates, account changes'), +('Orders & Transactions', 'orders', 'Order confirmations, payment notifications, transaction updates'), +('Security & Authentication', 'security', 'Login alerts, password changes, security notifications'), +('Marketing & Promotions', 'marketing', 'Promotional offers, newsletters, product announcements'), +('System Updates', 'system', 'System maintenance, feature updates, service announcements'), +('General Information', 'general', 'General notifications and information'); + +-- Insert default templates +INSERT INTO notification_templates (name, value, subject, email_content, push_title, push_body, variables) VALUES +('Welcome Message', 'welcome', 'Welcome to {{company_name}}!', + '

Welcome {{first_name}}!

Thank you for joining {{company_name}}. We''re excited to have you on board.

', + 'Welcome to {{company_name}}!', 'Hi {{first_name}}, welcome to our platform!', + '["first_name", "last_name", "company_name"]'), +('Password Reset', 'password_reset', 'Reset your password', + '

Password Reset Request

Hi {{first_name}}, click the link below to reset your password.

', + 'Password Reset', 'Tap to reset your password', + '["first_name"]'), +('Order Confirmation', 'order_confirmation', 'Order Confirmation #{{order_id}}', + '

Order Confirmed!

Thank you {{first_name}}, your order #{{order_id}} has been confirmed.

', + 'Order Confirmed!', 'Your order #{{order_id}} is confirmed', + '["first_name", "order_id", "order_total"]'); + +-- Insert default user segments +INSERT INTO user_segments (name, value, description, criteria) VALUES +('New Users', 'new_users', 'Users registered within last 30 days', '{"registration_days": 30}'), +('Active Users', 'active_users', 'Users active in last 7 days', '{"last_activity_days": 7}'), +('Premium Subscribers', 'premium_users', 'Users with premium subscription', '{"subscription_type": "premium"}'), +('Inactive Users', 'inactive_users', 'Users not active in 30+ days', '{"inactive_days": 30}'), +('High-Value Customers', 'high_value', 'Customers with high lifetime value', '{"min_order_value": 1000}'), +('Mobile App Users', 'mobile_users', 'Users who use mobile app', '{"platform": "mobile"}'); \ No newline at end of file diff --git a/database/migrations/002_update_notification_templates.sql b/database/migrations/002_update_notification_templates.sql new file mode 100644 index 0000000..a0df9d9 --- /dev/null +++ b/database/migrations/002_update_notification_templates.sql @@ -0,0 +1,41 @@ +-- Migration: Update notification_templates table with additional fields +-- Description: Add missing fields required by the template creation form + +-- Add new columns to notification_templates table +ALTER TABLE notification_templates +ADD COLUMN description TEXT, +ADD COLUMN preheader VARCHAR(255), +ADD COLUMN push_icon VARCHAR(500), +ADD COLUMN push_url TEXT, +ADD COLUMN sms_content TEXT, +ADD COLUMN category VARCHAR(50), +ADD COLUMN channels JSON, +ADD COLUMN status VARCHAR(20) DEFAULT 'Draft', +ADD COLUMN version VARCHAR(20) DEFAULT '1.0', +ADD COLUMN tags TEXT, +ADD COLUMN is_personal BOOLEAN DEFAULT false, +ADD COLUMN from_name VARCHAR(100), +ADD COLUMN reply_to VARCHAR(255), +ADD COLUMN track_opens BOOLEAN DEFAULT true, +ADD COLUMN created_by VARCHAR(36), +ADD COLUMN updated_by VARCHAR(36); + +-- Add check constraint for status +ALTER TABLE notification_templates +ADD CONSTRAINT chk_template_status +CHECK (status IN ('Draft', 'Active', 'Archived')); + +-- Update existing templates to have default values for new fields +UPDATE notification_templates +SET + status = 'Active', + version = '1.0', + is_personal = false, + track_opens = true, + channels = JSON_ARRAY('email') +WHERE status IS NULL; + +-- Create index for better performance on commonly queried fields +CREATE INDEX idx_notification_templates_status ON notification_templates(status); +CREATE INDEX idx_notification_templates_category ON notification_templates(category); +CREATE INDEX idx_notification_templates_created_by ON notification_templates(created_by); \ No newline at end of file diff --git a/database/migrations/003_create_template_version_history.sql b/database/migrations/003_create_template_version_history.sql new file mode 100644 index 0000000..d4cc220 --- /dev/null +++ b/database/migrations/003_create_template_version_history.sql @@ -0,0 +1,42 @@ +-- Migration: Create template version history table +-- Date: 2024-01-15 +-- Description: Create table to store version history of notification templates + +CREATE TABLE `notification_template_versions` ( + `id` varchar(36) NOT NULL DEFAULT (UUID()), + `template_id` varchar(36) NOT NULL, + `version` varchar(20) NOT NULL, + `name` varchar(100) NOT NULL, + `description` text, + `subject` varchar(255) DEFAULT NULL, + `preheader` varchar(255) DEFAULT NULL, + `email_content` text, + `push_title` varchar(100) DEFAULT NULL, + `push_body` varchar(300) DEFAULT NULL, + `push_icon` varchar(500) DEFAULT NULL, + `push_url` text, + `sms_content` text, + `category` varchar(50) DEFAULT NULL, + `channels` json DEFAULT NULL, + `status` varchar(20) DEFAULT 'Draft', + `tags` text, + `is_personal` tinyint(1) DEFAULT '0', + `from_name` varchar(100) DEFAULT NULL, + `reply_to` varchar(255) DEFAULT NULL, + `track_opens` tinyint(1) DEFAULT '1', + `variables` json DEFAULT NULL, + `is_active` tinyint(1) DEFAULT '1', + `change_description` text, + `is_current` tinyint(1) DEFAULT '0', + `created_by` varchar(36) DEFAULT NULL, + `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + KEY `idx_template_versions_template_id` (`template_id`), + KEY `idx_template_versions_version` (`version`), + KEY `idx_template_versions_created_at` (`created_at`), + CONSTRAINT `fk_template_versions_template_id` FOREIGN KEY (`template_id`) REFERENCES `notification_templates` (`id`) ON DELETE CASCADE ON UPDATE NO ACTION +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- Create index for better performance +CREATE INDEX `idx_template_versions_template_version` ON `notification_template_versions` (`template_id`, `version`); +CREATE INDEX `idx_template_versions_is_current` ON `notification_template_versions` (`is_current`); \ No newline at end of file diff --git a/database/migrations/004_create_notification_logs_table.sql b/database/migrations/004_create_notification_logs_table.sql new file mode 100644 index 0000000..f509f89 --- /dev/null +++ b/database/migrations/004_create_notification_logs_table.sql @@ -0,0 +1,22 @@ +-- Create notification logs table for audit trail +CREATE TABLE IF NOT EXISTS `notification_logs` ( + `id` VARCHAR(36) NOT NULL DEFAULT (UUID()), + `notification_id` VARCHAR(36) NULL, + `action` VARCHAR(50) NOT NULL, + `actor` VARCHAR(100) NULL, + `actor_id` VARCHAR(36) NULL, + `channel_type` VARCHAR(20) NULL, + `status` VARCHAR(30) NULL, + `details` TEXT NULL, + `source_ip` VARCHAR(50) NULL, + `error_code` VARCHAR(50) NULL, + `error_message` TEXT NULL, + `metadata` JSON NULL, + `created_at` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + INDEX `idx_notification_logs_notification_id` (`notification_id`), + INDEX `idx_notification_logs_action` (`action`), + INDEX `idx_notification_logs_created_at` (`created_at`), + INDEX `idx_notification_logs_status` (`status`), + INDEX `idx_notification_logs_channel_type` (`channel_type`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; \ No newline at end of file diff --git a/database/migrations/005_support_multiple_email_providers.sql b/database/migrations/005_support_multiple_email_providers.sql new file mode 100644 index 0000000..4842ba2 --- /dev/null +++ b/database/migrations/005_support_multiple_email_providers.sql @@ -0,0 +1,90 @@ +-- Migration: Support Multiple Email Providers +-- This migration allows storing multiple provider configurations per channel type +-- Previously: Only one config per channel_type (unique constraint) +-- Now: Multiple configs per channel_type, identified by provider + +-- Step 1: Drop the unique constraint on channel_type +ALTER TABLE notification_delivery_config +DROP INDEX channel_type; + +-- Step 2: Add unique constraint on (channel_type, provider) combination +ALTER TABLE notification_delivery_config +ADD UNIQUE KEY unique_channel_provider (channel_type, provider); + +-- Step 3: Add active_provider column to track which provider is currently active +ALTER TABLE notification_delivery_config +ADD COLUMN is_active BOOLEAN DEFAULT false AFTER is_enabled; + +-- Step 4: Set current email config as active (if exists) +UPDATE notification_delivery_config +SET is_active = true +WHERE channel_type = 'email' + AND is_enabled = true +LIMIT 1; + +-- Step 5: Insert Mailtrap configuration if not exists +INSERT IGNORE INTO notification_delivery_config +(channel_type, is_enabled, is_active, provider, provider_config, status, success_rate, created_by, updated_by, created_at, updated_at) +VALUES ( + 'email', + false, + false, + 'Mailtrap', + JSON_OBJECT( + 'host', 'live.smtp.mailtrap.io', + 'port', 587, + 'secure', false, + 'user', 'apismtp@mailtrap.io', + 'pass', '', + 'senderEmail', '', + 'senderName', '' + ), + 'Not Configured', + 0.0, + 1, + 1, + NOW(), + NOW() +); + +-- Step 6: Insert AWS SES configuration if not exists +INSERT IGNORE INTO notification_delivery_config +(channel_type, is_enabled, is_active, provider, provider_config, status, success_rate, created_by, updated_by, created_at, updated_at) +VALUES ( + 'email', + false, + false, + 'AWS SES', + JSON_OBJECT( + 'host', '', + 'port', 587, + 'secure', false, + 'user', '', + 'pass', '', + 'senderEmail', '', + 'senderName', '', + 'region', 'us-east-1', + 'configurationSet', '' + ), + 'Not Configured', + 0.0, + 1, + 1, + NOW(), + NOW() +); + +-- Verify the migration +SELECT + id, + channel_type, + provider, + is_enabled, + is_active, + status, + JSON_EXTRACT(provider_config, '$.host') as smtp_host, + created_at, + updated_at +FROM notification_delivery_config +WHERE channel_type = 'email' +ORDER BY provider; diff --git a/database/migrations/005_support_multiple_email_providers_safe.sql b/database/migrations/005_support_multiple_email_providers_safe.sql new file mode 100644 index 0000000..7031c45 --- /dev/null +++ b/database/migrations/005_support_multiple_email_providers_safe.sql @@ -0,0 +1,126 @@ +-- Migration: Support Multiple Email Providers (SAFE VERSION) +-- This migration allows storing multiple provider configurations per channel type + +-- STEP 0: First, check what indexes exist on the table +-- Run this query to see existing indexes: +SHOW INDEX FROM notification_delivery_config; + +-- You should see output showing index names. Look for a unique index on 'channel_type' +-- Common names: 'channel_type', 'notification_delivery_config_channel_type_key', or similar + +-- STEP 1: Drop the unique constraint on channel_type +-- Option A: If the index is named 'channel_type' +-- ALTER TABLE notification_delivery_config DROP INDEX channel_type; + +-- Option B: If you don't have a unique constraint yet, skip step 1 + +-- Check if constraint exists before dropping (MySQL 5.7+) +SET @exist := (SELECT COUNT(*) FROM information_schema.statistics + WHERE table_schema = DATABASE() + AND table_name = 'notification_delivery_config' + AND index_name = 'channel_type'); +SET @sqlstmt := IF(@exist > 0, + 'ALTER TABLE notification_delivery_config DROP INDEX channel_type', + 'SELECT "Index does not exist, skipping..."'); +PREPARE stmt FROM @sqlstmt; +EXECUTE stmt; +DEALLOCATE PREPARE stmt; + +-- STEP 2: Add unique constraint on (channel_type, provider) combination +-- First check if it already exists +SET @exist := (SELECT COUNT(*) FROM information_schema.statistics + WHERE table_schema = DATABASE() + AND table_name = 'notification_delivery_config' + AND index_name = 'unique_channel_provider'); +SET @sqlstmt := IF(@exist = 0, + 'ALTER TABLE notification_delivery_config ADD UNIQUE KEY unique_channel_provider (channel_type, provider)', + 'SELECT "Unique index already exists, skipping..."'); +PREPARE stmt FROM @sqlstmt; +EXECUTE stmt; +DEALLOCATE PREPARE stmt; + +-- STEP 3: Add is_active column if it doesn't exist +SET @exist := (SELECT COUNT(*) FROM information_schema.columns + WHERE table_schema = DATABASE() + AND table_name = 'notification_delivery_config' + AND column_name = 'is_active'); +SET @sqlstmt := IF(@exist = 0, + 'ALTER TABLE notification_delivery_config ADD COLUMN is_active BOOLEAN DEFAULT false AFTER is_enabled', + 'SELECT "Column is_active already exists, skipping..."'); +PREPARE stmt FROM @sqlstmt; +EXECUTE stmt; +DEALLOCATE PREPARE stmt; + +-- STEP 4: Set current email config as active (if exists) +UPDATE notification_delivery_config +SET is_active = true +WHERE channel_type = 'email' + AND is_enabled = true +LIMIT 1; + +-- STEP 5: Insert Mailtrap configuration if not exists +INSERT IGNORE INTO notification_delivery_config +(channel_type, is_enabled, is_active, provider, provider_config, status, success_rate, created_by, updated_by, created_at, updated_at) +VALUES ( + 'email', + false, + false, + 'Mailtrap', + JSON_OBJECT( + 'host', 'live.smtp.mailtrap.io', + 'port', 587, + 'secure', false, + 'user', 'apismtp@mailtrap.io', + 'pass', '', + 'senderEmail', '', + 'senderName', '' + ), + 'Not Configured', + 0.0, + 1, + 1, + NOW(), + NOW() +); + +-- STEP 6: Insert AWS SES configuration if not exists +INSERT IGNORE INTO notification_delivery_config +(channel_type, is_enabled, is_active, provider, provider_config, status, success_rate, created_by, updated_by, created_at, updated_at) +VALUES ( + 'email', + false, + false, + 'AWS SES', + JSON_OBJECT( + 'host', '', + 'port', 587, + 'secure', false, + 'user', '', + 'pass', '', + 'senderEmail', '', + 'senderName', '', + 'region', 'us-east-1', + 'configurationSet', '' + ), + 'Not Configured', + 0.0, + 1, + 1, + NOW(), + NOW() +); + +-- STEP 7: Verify the migration +SELECT + id, + channel_type, + provider, + is_enabled, + is_active, + status, + JSON_EXTRACT(provider_config, '$.host') as smtp_host, + created_at, + updated_at +FROM notification_delivery_config +WHERE channel_type = 'email' +ORDER BY provider; diff --git a/database/migrations/006_add_performance_indexes.sql b/database/migrations/006_add_performance_indexes.sql new file mode 100644 index 0000000..143914e --- /dev/null +++ b/database/migrations/006_add_performance_indexes.sql @@ -0,0 +1,128 @@ +-- Migration: Add performance indexes for notification system +-- Purpose: Optimize queue processing queries and recipient lookups +-- Date: 2025-10-16 + +-- ================================================================== +-- 1. Composite index for queue processing +-- ================================================================== +-- This index optimizes the main queue processing query that filters by: +-- - status (queued/processing) +-- - scheduled_for (less than or equal to current time) +-- - priority (for ordering) +-- - last_attempt_at (for timeout recovery) + +-- Check if index exists, drop if it does, then create +SET @exist := (SELECT COUNT(*) FROM information_schema.statistics + WHERE table_schema = DATABASE() + AND table_name = 'notification_queue' + AND index_name = 'idx_queue_processing_composite'); +SET @sqlstmt := IF(@exist > 0, + 'SELECT "Index idx_queue_processing_composite already exists"', + 'CREATE INDEX idx_queue_processing_composite ON notification_queue(status, scheduled_for, priority, last_attempt_at)'); +PREPARE stmt FROM @sqlstmt; +EXECUTE stmt; +DEALLOCATE PREPARE stmt; + +-- ================================================================== +-- 2. Index for stuck job recovery +-- ================================================================== +-- Note: WHERE clause not supported in MySQL, using regular index instead + +SET @exist := (SELECT COUNT(*) FROM information_schema.statistics + WHERE table_schema = DATABASE() + AND table_name = 'notification_queue' + AND index_name = 'idx_queue_stuck_recovery'); +SET @sqlstmt := IF(@exist > 0, + 'SELECT "Index idx_queue_stuck_recovery already exists"', + 'CREATE INDEX idx_queue_stuck_recovery ON notification_queue(status, last_attempt_at)'); +PREPARE stmt FROM @sqlstmt; +EXECUTE stmt; +DEALLOCATE PREPARE stmt; + +-- ================================================================== +-- 3. Composite index for recipient status tracking +-- ================================================================== + +SET @exist := (SELECT COUNT(*) FROM information_schema.statistics + WHERE table_schema = DATABASE() + AND table_name = 'notification_recipients' + AND index_name = 'idx_recipients_notification_status'); +SET @sqlstmt := IF(@exist > 0, + 'SELECT "Index idx_recipients_notification_status already exists"', + 'CREATE INDEX idx_recipients_notification_status ON notification_recipients(notification_id, status)'); +PREPARE stmt FROM @sqlstmt; +EXECUTE stmt; +DEALLOCATE PREPARE stmt; + +-- ================================================================== +-- 4. Index for notification logs by notification and date +-- ================================================================== + +SET @exist := (SELECT COUNT(*) FROM information_schema.statistics + WHERE table_schema = DATABASE() + AND table_name = 'notification_logs' + AND index_name = 'idx_logs_notification_created'); +SET @sqlstmt := IF(@exist > 0, + 'SELECT "Index idx_logs_notification_created already exists"', + 'CREATE INDEX idx_logs_notification_created ON notification_logs(notification_id, created_at)'); +PREPARE stmt FROM @sqlstmt; +EXECUTE stmt; +DEALLOCATE PREPARE stmt; + +-- ================================================================== +-- 5. Index for notification logs by status and date +-- ================================================================== + +SET @exist := (SELECT COUNT(*) FROM information_schema.statistics + WHERE table_schema = DATABASE() + AND table_name = 'notification_logs' + AND index_name = 'idx_logs_status_created'); +SET @sqlstmt := IF(@exist > 0, + 'SELECT "Index idx_logs_status_created already exists"', + 'CREATE INDEX idx_logs_status_created ON notification_logs(status, created_at)'); +PREPARE stmt FROM @sqlstmt; +EXECUTE stmt; +DEALLOCATE PREPARE stmt; + +-- ================================================================== +-- 6. Index for notification delivery config lookups +-- ================================================================== + +SET @exist := (SELECT COUNT(*) FROM information_schema.statistics + WHERE table_schema = DATABASE() + AND table_name = 'notification_delivery_config' + AND index_name = 'idx_delivery_config_channel_enabled'); +SET @sqlstmt := IF(@exist > 0, + 'SELECT "Index idx_delivery_config_channel_enabled already exists"', + 'CREATE INDEX idx_delivery_config_channel_enabled ON notification_delivery_config(channel_type, is_enabled)'); +PREPARE stmt FROM @sqlstmt; +EXECUTE stmt; +DEALLOCATE PREPARE stmt; + +-- ================================================================== +-- 7. Index for queue items by recipient +-- ================================================================== + +SET @exist := (SELECT COUNT(*) FROM information_schema.statistics + WHERE table_schema = DATABASE() + AND table_name = 'notification_queue' + AND index_name = 'idx_queue_recipient'); +SET @sqlstmt := IF(@exist > 0, + 'SELECT "Index idx_queue_recipient already exists"', + 'CREATE INDEX idx_queue_recipient ON notification_queue(recipient_id)'); +PREPARE stmt FROM @sqlstmt; +EXECUTE stmt; +DEALLOCATE PREPARE stmt; + +-- ================================================================== +-- Verify indexes were created +-- ================================================================== +SELECT + table_name, + index_name, + column_name +FROM information_schema.statistics +WHERE table_schema = DATABASE() + AND table_name IN ('notification_queue', 'notification_recipients', 'notification_logs', 'notification_delivery_config') + AND index_name LIKE 'idx_%' +ORDER BY table_name, index_name, seq_in_index; diff --git a/database/migrations/MIGRATION_GUIDE.md b/database/migrations/MIGRATION_GUIDE.md new file mode 100644 index 0000000..c8b75c3 --- /dev/null +++ b/database/migrations/MIGRATION_GUIDE.md @@ -0,0 +1,167 @@ +# Migration Guide: Multi-Provider Email Support + +## Step 1: Check Current Schema + +First, check what indexes exist on your table: + +```sql +SHOW INDEX FROM notification_delivery_config; +``` + +Look for a unique index on `channel_type`. It might be named: +- `channel_type` +- `notification_delivery_config_channel_type_key` +- Or something similar + +**If you see a unique index on `channel_type`, note the exact name.** + +## Step 2: Drop Old Unique Constraint (if exists) + +Replace `INDEX_NAME_HERE` with the actual name from Step 1: + +```sql +-- If the index name is 'channel_type': +ALTER TABLE notification_delivery_config DROP INDEX channel_type; + +-- OR if it has a different name: +ALTER TABLE notification_delivery_config DROP INDEX notification_delivery_config_channel_type_key; +``` + +**If you got error "Can't DROP"**, it means there's no unique constraint. **This is fine! Skip to Step 3.** + +## Step 3: Add New Unique Constraint + +```sql +ALTER TABLE notification_delivery_config +ADD UNIQUE KEY unique_channel_provider (channel_type, provider); +``` + +This allows multiple providers per channel. + +## Step 4: Add is_active Column + +```sql +ALTER TABLE notification_delivery_config +ADD COLUMN is_active BOOLEAN DEFAULT false AFTER is_enabled; +``` + +## Step 5: Mark Current Config as Active + +```sql +UPDATE notification_delivery_config +SET is_active = true +WHERE channel_type = 'email' + AND is_enabled = true +LIMIT 1; +``` + +## Step 6: Insert Mailtrap Config + +```sql +INSERT IGNORE INTO notification_delivery_config +(channel_type, is_enabled, is_active, provider, provider_config, status, success_rate, created_by, updated_by, created_at, updated_at) +VALUES ( + 'email', + false, + false, + 'Mailtrap', + JSON_OBJECT( + 'host', 'live.smtp.mailtrap.io', + 'port', 587, + 'secure', false, + 'user', 'apismtp@mailtrap.io', + 'pass', '', + 'senderEmail', '', + 'senderName', '' + ), + 'Not Configured', + 0.0, + 1, + 1, + NOW(), + NOW() +); +``` + +## Step 7: Insert AWS SES Config + +```sql +INSERT IGNORE INTO notification_delivery_config +(channel_type, is_enabled, is_active, provider, provider_config, status, success_rate, created_by, updated_by, created_at, updated_at) +VALUES ( + 'email', + false, + false, + 'AWS SES', + JSON_OBJECT( + 'host', '', + 'port', 587, + 'secure', false, + 'user', '', + 'pass', '', + 'senderEmail', '', + 'senderName', '', + 'region', 'us-east-1', + 'configurationSet', '' + ), + 'Not Configured', + 0.0, + 1, + 1, + NOW(), + NOW() +); +``` + +## Step 8: Verify Migration + +```sql +SELECT + id, + channel_type, + provider, + is_enabled, + is_active, + status, + JSON_EXTRACT(provider_config, '$.host') as smtp_host +FROM notification_delivery_config +WHERE channel_type = 'email' +ORDER BY provider; +``` + +You should see: +- At least 2 rows for email (Mailtrap and AWS SES) +- One might be `is_enabled = true` (your current config) +- Only one should have `is_active = true` + +## Step 9: Regenerate Prisma Client + +After database migration, update your Prisma client: + +```bash +npx prisma generate +``` + +## Troubleshooting + +### Error: "Can't DROP 'channel_type'" +**Solution:** Your table doesn't have a unique constraint on `channel_type`. This is fine! Skip Step 2 and continue with Step 3. + +### Error: "Duplicate entry for key 'unique_channel_provider'" +**Solution:** The unique constraint already exists. Skip Step 3. + +### Error: "Duplicate column name 'is_active'" +**Solution:** The column already exists. Skip Step 4. + +### Error: "Duplicate entry" on INSERT +**Solution:** The config already exists. This is normal with `INSERT IGNORE`. + +## Alternative: Use Safe Migration Script + +If you prefer, run the safe migration script that handles all checks automatically: + +```bash +mysql -h 18.138.137.105 -u admin -p corrad-notification < database/migrations/005_support_multiple_email_providers_safe.sql +``` + +This script checks for existing indexes/columns before making changes. diff --git a/docs/SITE_SETTINGS.md b/docs/SITE_SETTINGS.md new file mode 100644 index 0000000..eed0bcc --- /dev/null +++ b/docs/SITE_SETTINGS.md @@ -0,0 +1,161 @@ +# Site Settings Feature + +## Overview +The Site Settings feature allows administrators to customize the appearance and branding of the application through a user-friendly interface. All settings are globally applied across the entire application including SEO, meta tags, and visual elements. + +## Features + +### 1. Basic Information +- **Site Name**: Customize the application name displayed globally in: + - Header and sidebar + - Browser title and meta tags + - SEO and Open Graph tags + - Loading screen + - All pages and components +- **Site Description**: Set a description used for: + - SEO meta descriptions + - Open Graph descriptions + - Twitter Card descriptions +- **Theme Selection**: Choose from available themes: + - Standard themes (from themeList.js) + - Accessibility themes (from themeList2.js) + - Custom themes added to theme.css + +### 2. Branding +- **Site Logo**: Upload a custom logo displayed in: + - Header (horizontal layout) + - Sidebar (vertical layout) + - Loading screen + - Login page + - Any component using site settings +- **Favicon**: Upload a custom favicon displayed in: + - Browser tabs + - Bookmarks + - Mobile home screen icons + +### 3. Advanced Settings +- **Custom CSS**: Add custom CSS injected into document head +- **Custom Theme File**: Upload CSS files saved to `/assets/style/css/` +- **Add Custom Theme to theme.css**: Directly add themes to the main theme.css file + +## How to Access + +1. Navigate to **Pentadbiran** → **Konfigurasi** → **Site Settings** +2. Use the tabbed interface: + - **Basic Info**: Site name, description, and theme selection + - **Branding**: Logo and favicon uploads + - **Advanced**: Custom CSS and theme management +3. Use the **Live Preview** panel to see changes in real-time +4. Click **Save Changes** to apply your settings + +## Technical Implementation + +### Database Schema +The settings are stored in the `site_settings` table with the following fields: +- `siteName`, `siteDescription` +- `siteLogo`, `siteFavicon` +- `selectedTheme` - Selected theme name +- `customCSS`, `customThemeFile` +- Legacy fields maintained for backward compatibility + +### API Endpoints +- `GET /api/devtool/config/site-settings` - Retrieve current settings +- `POST /api/devtool/config/site-settings` - Update settings +- `POST /api/devtool/config/upload-file` - Upload files (logos, themes) +- `POST /api/devtool/config/add-custom-theme` - Add custom theme to theme.css + +### File Upload Locations +- **Logo and Favicon files**: Saved to `public/uploads/site-settings/` +- **Theme CSS files**: Saved to `assets/style/css/` directory +- **Custom themes**: Added directly to `assets/style/css/base/theme.css` + +### Composable +The `useSiteSettings()` composable provides: +- `siteSettings` - Reactive settings object +- `loadSiteSettings()` - Load settings from API +- `updateSiteSettings()` - Update settings +- `setTheme()` - Set theme using existing theme system +- `getCurrentTheme()` - Get current theme +- `applyThemeSettings()` - Apply theme changes to DOM +- `updateGlobalMeta()` - Update global meta tags and SEO +- `addCustomThemeToFile()` - Add custom theme to theme.css + +### Global Integration +The site settings are globally integrated across: + +#### Header Component +- Uses site settings for logo and name display +- Theme selection dropdown uses same system as site settings +- Synced with site settings theme selection + +#### Loading Component +- Uses site logo if available, fallback to default +- Displays site name in loading screen + +#### App.vue +- Global meta tags updated from site settings +- Title, description, and favicon managed globally +- Theme initialization from site settings + +#### SEO and Meta Tags +- Document title updated globally +- Meta descriptions for SEO +- Open Graph tags for social sharing +- Twitter Card tags +- Favicon and apple-touch-icon + +### Theme System Integration +- Integrates with existing theme system (themeList.js, themeList2.js) +- Theme selection in header dropdown synced with site settings +- Custom themes can be added directly to theme.css +- Backward compatibility with existing theme structure + +### Custom Theme Structure +Custom themes added to theme.css should follow this structure: +```css +html[data-theme="your-theme-name"] { + --color-primary: 255, 0, 0; + --color-secondary: 0, 255, 0; + --color-success: 0, 255, 0; + --color-info: 0, 0, 255; + --color-warning: 255, 255, 0; + --color-danger: 255, 0, 0; + /* Add your theme variables here */ +} +``` + +## Default Values +If no settings are configured, the system uses these defaults: +- Site Name: "corradAF" +- Site Description: "corradAF Base Project" +- Selected Theme: "biasa" +- Logo: Default corradAF logo +- Favicon: Default favicon + +## Migration Notes +- Legacy color fields (primaryColor, secondaryColor, etc.) are maintained for backward compatibility +- `themeMode` field is mapped to `selectedTheme` for compatibility +- Existing installations will automatically use default values +- Theme selection integrates with existing theme dropdown in header + +## Notes +- Changes are applied immediately in the preview +- Theme changes affect the entire application +- Custom CSS is injected into the document head +- Theme files are saved to `/assets/style/css/` for proper integration +- File uploads are validated for type and size +- Settings persist across browser sessions +- Site name and description updates are reflected globally and immediately +- All meta tags and SEO elements are automatically updated +- Logo changes are reflected in all components that use site settings + +### Important Notes +- Changes are applied immediately in the preview +- Theme changes affect the entire application +- Custom CSS is injected into the document head +- Theme files are saved to `/assets/style/css/` for proper integration +- File uploads are validated for type and size +- Settings persist across browser sessions +- Site name and description updates are reflected globally and immediately +- All meta tags and SEO elements are automatically updated +- Logo changes are reflected in all components that use site settings \ No newline at end of file diff --git a/docs/multi-provider-email-setup.md b/docs/multi-provider-email-setup.md new file mode 100644 index 0000000..75a5378 --- /dev/null +++ b/docs/multi-provider-email-setup.md @@ -0,0 +1,211 @@ +# Multi-Provider Email Configuration + +This document explains how to configure multiple email providers (Mailtrap and AWS SES) in the notification system. + +## Overview + +The system now supports storing **multiple email provider configurations** simultaneously. Each provider's configuration is saved independently, allowing you to: +- Switch between providers without losing configurations +- Keep backup provider credentials ready +- Test different providers easily + +## Database Changes + +### Migration Required + +Run this migration to enable multi-provider support: + +```bash +mysql -h -u -p < database/migrations/005_support_multiple_email_providers.sql +``` + +### What Changed + +1. **Removed** unique constraint on `channel_type` +2. **Added** unique constraint on `(channel_type, provider)` combination +3. **Added** `is_active` column to track active provider +4. Now supports multiple rows per channel_type with different providers + +**Before:** +``` +id | channel_type | provider | is_enabled +1 | email | Mailtrap | true +``` + +**After:** +``` +id | channel_type | provider | is_enabled | is_active +1 | email | Mailtrap | true | true +2 | email | AWS SES | false | false +``` + +## How It Works + +### 1. **API Behavior** + +**GET `/api/notifications/delivery/email-config`** +- Returns ALL provider configurations +- Indicates which provider is active +- Response format: +```json +{ + "success": true, + "data": { + "providers": { + "mailtrap": { + "enabled": true, + "provider": "Mailtrap", + "config": { "host": "...", ... }, + "status": "Connected", + "successRate": 99.5 + }, + "aws-ses": { + "enabled": false, + "provider": "AWS SES", + "config": { "host": "...", ... }, + "status": "Not Configured", + "successRate": 0 + } + }, + "activeProvider": "mailtrap" + } +} +``` + +**PUT `/api/notifications/delivery/email-config`** +- Saves configuration for specific provider +- If enabling a provider, **automatically disables others** +- Only ONE provider can be `is_enabled: true` at a time + +### 2. **UI Behavior** + +**Provider Dropdown:** +- Shows: Mailtrap, AWS SES +- Switching providers loads that provider's saved configuration +- If no config exists, loads default template + +**Saving Configuration:** +- Saves to database for the selected provider +- Does NOT overwrite other providers' configs +- Enabling saves current provider and disables others + +**Configuration Persistence:** +- Each provider's config is stored separately +- Switching between providers preserves both configurations +- Form fields update automatically when switching + +### 3. **Email Sending** + +The `emailService.js` looks for: +1. Any `is_enabled: true` config in database +2. Falls back to `.env` variables if no enabled config + +Both Mailtrap and AWS SES use **nodemailer SMTP**, so no backend code changes needed. + +## Setup Instructions + +### Step 1: Run Migration + +```bash +mysql -h -u -p < database/migrations/005_support_multiple_email_providers.sql +``` + +This will: +- ✅ Update schema to support multiple providers +- ✅ Create placeholder rows for Mailtrap and AWS SES +- ✅ Preserve existing configuration + +### Step 2: Update Prisma Schema + +```bash +npx prisma generate +``` + +This regenerates the Prisma client with the updated schema. + +### Step 3: Configure Providers via UI + +1. Go to `/notification/delivery` +2. Select **Mailtrap** from dropdown +3. Fill in Mailtrap credentials +4. Click **Save** +5. Switch to **AWS SES** from dropdown +6. Fill in AWS SES credentials +7. Click **Save** + +Both configurations are now saved! + +### Step 4: Switch Between Providers + +To change active provider: +1. Select desired provider from dropdown +2. Toggle **Enable Email Delivery** to ON +3. Click **Save** + +This automatically: +- ✅ Enables selected provider +- ✅ Disables other provider +- ✅ Updates email service to use new provider + +## Provider-Specific Configuration + +### Mailtrap + +**Required Fields:** +- SMTP Host: `live.smtp.mailtrap.io` +- SMTP Port: `587` +- SMTP Username: `apismtp@mailtrap.io` +- SMTP Password: Your Mailtrap API token +- Sender Email: Your verified sender email +- Sender Name: (Optional) + +### AWS SES + +**Required Fields:** +- SMTP Host: `email-smtp..amazonaws.com` (e.g., `email-smtp.us-east-1.amazonaws.com`) +- SMTP Port: `587` (STARTTLS) or `465` (TLS) +- SMTP Username: AWS SES SMTP username (NOT IAM user) +- SMTP Password: AWS SES SMTP password (NOT secret key) +- Sender Email: Must be verified in AWS SES +- Sender Name: (Optional) +- AWS Region: e.g., `us-east-1` +- Configuration Set: (Optional) For tracking + +**Note:** AWS SES requires: +1. Verified sender email/domain in SES console +2. SMTP credentials generated from SES (not IAM credentials) +3. Account moved out of sandbox for production sending + +## Troubleshooting + +### Configuration Not Saving +- Check database migration ran successfully +- Verify unique constraint exists: `SHOW INDEX FROM notification_delivery_config;` +- Should see `channel_type_provider` unique index + +### Wrong Provider Being Used +- Check `is_enabled` column in database +- Only ONE provider should have `is_enabled = true` +- Run: `SELECT * FROM notification_delivery_config WHERE channel_type = 'email';` + +### Form Fields Don't Update When Switching +- Clear browser cache +- Check browser console for errors +- Verify API returns all provider configs + +## Files Modified + +### Backend +- `server/api/notifications/delivery/email-config.get.js` - Returns all providers +- `server/api/notifications/delivery/email-config.put.js` - Saves per provider +- `prisma/schema.prisma` - Updated unique constraint + +### Frontend +- `pages/notification/delivery/index.vue` - Multi-provider UI +- `pages/notification/delivery/providers.vue` - Provider list + +### Database +- `database/migrations/005_support_multiple_email_providers.sql` - Schema migration + +### Documentation +- `docs/multi-provider-email-setup.md` - This file diff --git a/docs/notification-system-api.md b/docs/notification-system-api.md new file mode 100644 index 0000000..feac8c1 --- /dev/null +++ b/docs/notification-system-api.md @@ -0,0 +1,515 @@ +# Notification System API Documentation + +This document provides comprehensive information about the notification system's database schema and API endpoints based on the notification creation form requirements. + +## Table of Contents +1. [Database Schema](#database-schema) +2. [API Endpoints](#api-endpoints) +3. [Usage Examples](#usage-examples) +4. [Integration Guide](#integration-guide) + +## Database Schema + +### Core Tables + +#### `notification_categories` +Stores categorization options for notifications. +```sql +- id (UUID, Primary Key) +- name (VARCHAR) - Display name +- value (VARCHAR) - Unique identifier +- description (TEXT) - Optional description +- created_at, updated_at (TIMESTAMP) +``` + +#### `notification_templates` +Reusable templates for common notification types. +```sql +- id (UUID, Primary Key) +- name (VARCHAR) - Template name +- value (VARCHAR) - Unique identifier +- subject (VARCHAR) - Email subject template +- email_content (TEXT) - Email body template +- push_title (VARCHAR) - Push notification title +- push_body (VARCHAR) - Push notification body +- variables (JSONB) - Available variables +- is_active (BOOLEAN) +- created_at, updated_at (TIMESTAMP) +``` + +#### `notifications` (Main Table) +Central table storing all notification configurations. +```sql +- id (UUID, Primary Key) +- title (VARCHAR) - Internal notification title +- type (ENUM) - 'single' or 'bulk' +- priority (ENUM) - 'low', 'medium', 'high', 'critical' +- category_id (UUID) - FK to notification_categories +- status (ENUM) - 'draft', 'scheduled', 'sending', 'sent', 'failed', 'cancelled' +- delivery_type (ENUM) - 'immediate' or 'scheduled' +- scheduled_at (TIMESTAMP) - When to send (for scheduled) +- timezone (VARCHAR) - Timezone for scheduling +- expires_at (TIMESTAMP) - Optional expiration +- enable_ab_testing (BOOLEAN) +- ab_test_split (INTEGER) - Percentage split for A/B testing +- ab_test_name (VARCHAR) - A/B test identifier +- enable_tracking (BOOLEAN) +- audience_type (ENUM) - 'all', 'specific', 'segmented' +- specific_users (TEXT) - Comma-separated user identifiers +- user_status (VARCHAR) - Filter by user status +- registration_period (VARCHAR) - Filter by registration period +- exclude_unsubscribed (BOOLEAN) +- respect_do_not_disturb (BOOLEAN) +- content_type (ENUM) - 'new' or 'template' +- template_id (UUID) - FK to notification_templates +- email_subject (VARCHAR) +- email_content (TEXT) +- call_to_action_text (VARCHAR) +- call_to_action_url (TEXT) +- push_title (VARCHAR) +- push_body (VARCHAR) +- push_image_url (TEXT) +- estimated_reach (INTEGER) +- actual_sent (INTEGER) +- created_by (UUID) - User who created +- created_at, updated_at, sent_at (TIMESTAMP) +``` + +#### Supporting Tables + +- `notification_channels` - Many-to-many relationship for delivery channels +- `notification_user_segments` - Many-to-many for user segments +- `notification_recipients` - Tracks individual recipients and delivery status +- `notification_queue` - Queue for scheduled notifications +- `notification_analytics` - Tracks metrics and engagement +- `user_notification_preferences` - User preferences and DND settings + +## API Endpoints + +### 1. Create Notification +**POST** `/api/notifications` + +Creates a new notification or schedules it for delivery. + +**Request Body:** +```json +{ + "title": "Welcome New Users", + "type": "bulk", + "priority": "medium", + "category": "user_management", + "channels": ["email", "push"], + "emailSubject": "Welcome to our platform!", + "deliveryType": "immediate", + "timezone": "UTC", + "enableAbTesting": false, + "abTestSplit": 50, + "enableTracking": true, + "audienceType": "segmented", + "userSegments": ["new_users"], + "excludeUnsubscribed": true, + "respectDoNotDisturb": true, + "contentType": "new", + "emailContent": "

Welcome!

Thank you for joining us.

", + "pushTitle": "Welcome!", + "pushBody": "Thank you for joining our platform.", + "callToActionText": "Get Started", + "callToActionUrl": "https://example.com/onboarding" +} +``` + +**Response:** +```json +{ + "success": true, + "data": { + "id": "uuid-of-notification", + "message": "Notification is being sent", + "estimatedReach": 1500 + } +} +``` + +### 2. Get Categories +**GET** `/api/notifications/categories` + +Returns available notification categories. + +**Response:** +```json +{ + "success": true, + "data": [ + { + "label": "User Management", + "value": "user_management", + "description": "User registration, profile updates, account changes" + } + ] +} +``` + +### 3. Get Templates +**GET** `/api/notifications/templates` + +Returns available notification templates. + +**Response:** +```json +{ + "success": true, + "data": [ + { + "label": "Welcome Message", + "value": "welcome", + "subject": "Welcome to {{company_name}}!", + "content": "

Welcome {{first_name}}!

", + "pushTitle": "Welcome!", + "pushBody": "Hi {{first_name}}, welcome!", + "variables": ["first_name", "company_name"] + } + ] +} +``` + +### 4. Get User Segments +**GET** `/api/notifications/segments` + +Returns available user segments for targeting. + +**Response:** +```json +{ + "success": true, + "data": [ + { + "label": "New Users", + "value": "new_users", + "description": "Users registered within last 30 days", + "criteria": {"registration_days": 30} + } + ] +} +``` + +### 5. Preview Audience +**POST** `/api/notifications/audience-preview` + +Preview the target audience based on selected criteria. + +**Request Body:** +```json +{ + "audienceType": "segmented", + "userSegments": ["new_users", "active_users"], + "userStatus": "active", + "excludeUnsubscribed": true, + "channels": ["email"] +} +``` + +**Response:** +```json +{ + "success": true, + "data": { + "users": [ + { + "id": "user-uuid", + "name": "John Doe", + "email": "john@example.com", + "segment": "New Users", + "status": "active", + "registeredAt": "2024-01-01T00:00:00Z" + } + ], + "totalCount": 1500, + "previewCount": 100 + } +} +``` + +### 6. Send Test Notification +**POST** `/api/notifications/test-send` + +Send a test notification to validate setup. + +**Request Body:** +```json +{ + "email": "test@example.com", + "testData": { + "title": "Test Notification", + "channels": ["email", "push"], + "emailSubject": "Test Email", + "emailContent": "

This is a test email.

", + "pushTitle": "Test Push", + "pushBody": "This is a test push notification." + } +} +``` + +**Response:** +```json +{ + "success": true, + "data": { + "message": "Test notifications processed", + "results": [ + { + "channel": "email", + "status": "sent", + "message": "Test email sent successfully" + }, + { + "channel": "push", + "status": "sent", + "message": "Test push notification sent successfully" + } + ] + } +} +``` + +### 7. Save Draft +**POST** `/api/notifications/draft` + +Save notification as draft for later completion. + +**Request Body:** +```json +{ + "title": "Draft Notification", + "type": "single", + "category": "marketing", + "channels": ["email"], + "emailSubject": "Special Offer", + "contentType": "new", + "draftId": "existing-draft-uuid" // Optional, for updating +} +``` + +**Response:** +```json +{ + "success": true, + "data": { + "id": "draft-uuid", + "message": "Draft saved successfully" + } +} +``` + +## Usage Examples + +### Creating a Welcome Email Campaign + +```javascript +// 1. Create notification for new users +const response = await $fetch('/api/notifications', { + method: 'POST', + body: { + title: 'New User Welcome Campaign', + type: 'bulk', + priority: 'medium', + category: 'user_management', + channels: ['email'], + emailSubject: 'Welcome to {{company_name}}!', + deliveryType: 'immediate', + audienceType: 'segmented', + userSegments: ['new_users'], + contentType: 'template', + selectedTemplate: 'welcome', + enableTracking: true + } +}) + +console.log(`Notification created: ${response.data.id}`) +console.log(`Estimated reach: ${response.data.estimatedReach} users`) +``` + +### Scheduling a Marketing Campaign + +```javascript +// 2. Schedule a promotional campaign +const scheduledResponse = await $fetch('/api/notifications', { + method: 'POST', + body: { + title: 'Black Friday Sale', + type: 'bulk', + priority: 'high', + category: 'marketing', + channels: ['email', 'push'], + emailSubject: '🔥 Black Friday Sale - 50% Off Everything!', + deliveryType: 'scheduled', + scheduledAt: '2024-11-29T09:00:00Z', + timezone: 'America/New_York', + audienceType: 'segmented', + userSegments: ['active_users', 'high_value'], + contentType: 'new', + emailContent: '

Black Friday Sale!

Don\'t miss out on 50% off everything!

', + pushTitle: 'Black Friday Sale!', + pushBody: '50% off everything - today only!', + callToActionText: 'Shop Now', + callToActionUrl: 'https://example.com/sale', + enableAbTesting: true, + abTestSplit: 50, + abTestName: 'Subject Line Test' + } +}) +``` + +### Sending Test Notifications + +```javascript +// 3. Send test before going live +const testResponse = await $fetch('/api/notifications/test-send', { + method: 'POST', + body: { + email: 'marketing@company.com', + notificationId: scheduledResponse.data.id + } +}) + +console.log('Test results:', testResponse.data.results) +``` + +## Integration Guide + +### Frontend Integration + +Update your Vue.js notification creation form to use these APIs: + +```vue + +``` + +### Database Setup + +1. **Run the migration:** +```bash +psql -d your_database -f database/migrations/001_create_notification_tables.sql +``` + +2. **Set up database connection in Nuxt:** +```javascript +// nuxt.config.ts +export default defineNuxtConfig({ + runtimeConfig: { + databaseUrl: process.env.DATABASE_URL + } +}) + +// plugins/database.server.js +import { Pool } from 'pg' + +export default defineNitroPlugin(async (nitroApp) => { + const config = useRuntimeConfig() + + const pool = new Pool({ + connectionString: config.databaseUrl + }) + + nitroApp.hooks.hook('close', async () => { + await pool.end() + }) + + nitroApp.provide('db', pool) +}) +``` + +### Email/Push Service Integration + +Replace the mock functions in `test-send.post.js` with your actual service integrations: + +```javascript +// Email service example (SendGrid) +import sgMail from '@sendgrid/mail' + +async function sendTestEmail({ to, subject, content, callToActionText, callToActionUrl }) { + sgMail.setApiKey(process.env.SENDGRID_API_KEY) + + const msg = { + to, + from: 'noreply@yourcompany.com', + subject, + html: content + } + + await sgMail.send(msg) +} + +// Push service example (Firebase) +import admin from 'firebase-admin' + +async function sendTestPush({ email, title, body }) { + // Get user's device tokens from your database + const tokens = await getUserDeviceTokens(email) + + const message = { + notification: { title, body }, + tokens + } + + await admin.messaging().sendMulticast(message) +} +``` + +This comprehensive notification system provides: + +✅ **Complete database schema** with all necessary tables and relationships +✅ **Robust API endpoints** with proper validation and error handling +✅ **Transaction support** to ensure data consistency +✅ **A/B testing capabilities** for optimization +✅ **User preference handling** including DND settings +✅ **Queue system** for reliable delivery +✅ **Analytics tracking** for performance monitoring +✅ **Draft functionality** for iterative creation +✅ **Test sending** for validation before deployment + +The system is designed to handle both simple single notifications and complex bulk campaigns with advanced targeting and scheduling capabilities. \ No newline at end of file diff --git a/docs/queue-system-explained.md b/docs/queue-system-explained.md new file mode 100644 index 0000000..095c3a7 --- /dev/null +++ b/docs/queue-system-explained.md @@ -0,0 +1,239 @@ +# Notification Queue System + +## Overview + +The notification system now uses a **background queue processor** that runs automatically every 30 seconds to send queued emails. + +## How It Works + +### 1. **Queue Creation** +When you create a notification: +``` +POST /api/public/create-notification + ↓ +Creates notification → status: "sending" +Creates recipients → status: "pending" +Creates queue items → status: "queued" + ↓ +Returns immediately (non-blocking) ✅ +``` + +### 2. **Background Processing** +A background worker runs automatically: +``` +Server starts + ↓ +Queue Processor Plugin initializes + ↓ +Processes queue every 30 seconds + ↓ +Sends emails → Updates status → Repeats +``` + +### 3. **Status Updates** +``` +notification.status: "sending" → "sent" (when all recipients done) +recipients.status: "pending" → "sent" or "failed" +queue.status: "queued" → "processing" → "completed" or "failed" +``` + +## Components + +### 1. Queue Processor (`server/utils/queueProcessor.js`) +- **Runs every 30 seconds** +- Processes up to 50 jobs per batch +- Prevents concurrent processing (lock mechanism) +- Logs activity for monitoring + +### 2. Nitro Plugin (`server/plugins/queueProcessor.js`) +- **Auto-starts** when server starts +- Runs in background +- Gracefully shuts down with server + +### 3. Email Service (`server/utils/emailService.js`) +- `processEmailQueue()` - Processes queued emails +- `sendEmailNotification()` - Sends individual emails +- Updates all statuses (notification, recipient, queue) + +## Queue Flow + +``` +┌─────────────────────────────────────────┐ +│ Create Notification API │ +│ - Creates notification (sending) │ +│ - Creates recipients (pending) │ +│ - Creates queue items (queued) │ +│ - Returns immediately ✅ │ +└─────────────────────────────────────────┘ + ↓ +┌─────────────────────────────────────────┐ +│ Background Queue Processor │ +│ (Runs every 30 seconds) │ +│ │ +│ 1. Find queued items (scheduled_for <= now) +│ 2. For each item: │ +│ - Mark as "processing" │ +│ - Send email via SMTP │ +│ - Update recipient status │ +│ - Update queue status │ +│ - Update notification status │ +│ 3. Log results │ +└─────────────────────────────────────────┘ + ↓ +┌─────────────────────────────────────────┐ +│ Email Sent! │ +│ - notification.status → "sent" │ +│ - recipient.status → "sent" │ +│ - queue.status → "completed" │ +│ - notification.actual_sent = count │ +└─────────────────────────────────────────┘ +``` + +## Current Implementation + +### ✅ What We Have: +- **Non-blocking API** - Returns immediately after queuing +- **Background processor** - Runs every 30 seconds +- **Auto-start on server boot** - Via Nitro plugin +- **Concurrent processing prevention** - Lock mechanism +- **Status updates** - All tables updated correctly +- **Error handling** - Failed emails marked as failed +- **Logging** - Console logs for monitoring + +### ❌ What We Don't Have (Yet): +- **BullMQ** - Not using a production queue system +- **Redis** - No distributed queue +- **Worker pools** - Single-threaded processing +- **Job retries** - No automatic retry on failure +- **Priority queues** - All jobs equal priority +- **Rate limiting** - No per-provider rate limits + +## Manual Queue Processing + +You can manually trigger queue processing via API: + +```bash +POST /api/notifications/queue/process +``` + +This is useful for: +- Testing +- Debugging +- Force processing without waiting + +## Monitoring + +### Console Logs: +``` +🚀 Starting background queue processor... +✅ Queue processor started (runs every 30 seconds) +⚙️ Processing notification queue... +✅ Queue processed: 5 sent, 0 failed, 5 total +``` + +### Check Queue Status: +```sql +-- See queued items +SELECT * FROM notification_queue WHERE status = 'queued'; + +-- See processing status +SELECT + n.id, + n.title, + n.status, + COUNT(nr.id) as total_recipients, + SUM(CASE WHEN nr.status = 'sent' THEN 1 ELSE 0 END) as sent, + SUM(CASE WHEN nr.status = 'failed' THEN 1 ELSE 0 END) as failed, + SUM(CASE WHEN nr.status = 'pending' THEN 1 ELSE 0 END) as pending +FROM notifications n +LEFT JOIN notification_recipients nr ON n.id = nr.notification_id +GROUP BY n.id, n.title, n.status; +``` + +## Configuration + +### Queue Processing Interval: +Change in `server/utils/queueProcessor.js`: +```javascript +// Current: 30 seconds +processorInterval = setInterval(processQueue, 30000); + +// Faster: 10 seconds +processorInterval = setInterval(processQueue, 10000); + +// Slower: 1 minute +processorInterval = setInterval(processQueue, 60000); +``` + +### Batch Size: +Change in `server/utils/emailService.js`: +```javascript +// Current: 50 jobs per batch +take: 50 + +// Larger batch: 100 jobs +take: 100 + +// Smaller batch: 10 jobs +take: 10 +``` + +## Future: Upgrading to BullMQ + +If you want a production-grade queue system: + +### Install BullMQ: +```bash +npm install bullmq ioredis +``` + +### Benefits: +- ✅ Persistent queue (survives server restart) +- ✅ Automatic retries with exponential backoff +- ✅ Priority queues +- ✅ Concurrent workers +- ✅ Rate limiting per provider +- ✅ Job scheduling +- ✅ Web UI for monitoring +- ✅ Distributed processing + +### When to Upgrade: +- High volume (>1000 emails/day) +- Multiple servers +- Need guaranteed delivery +- Need advanced retry logic +- Need monitoring dashboard + +## Troubleshooting + +### Queue not processing? +1. Check server logs for errors +2. Check if plugin is loaded: `grep "queue processor" logs` +3. Manually trigger: `POST /api/notifications/queue/process` + +### Emails not sending? +1. Check SMTP credentials in delivery settings +2. Check notification_queue table for errors +3. Check notification_recipients for failed status +4. Review email service logs + +### Status stuck on "sending"? +1. Check if recipients are still "pending" +2. Manually trigger queue processing +3. Check for errors in notification_queue table + +## Summary + +**Current System:** +- Simple, lightweight queue using database + setInterval +- Runs every 30 seconds automatically +- Non-blocking API responses +- Suitable for low-medium volume + +**When to upgrade:** +- Need higher reliability +- Higher volume +- Multiple servers +- Advanced features + +The current system works well for most use cases and can handle thousands of notifications per day! diff --git a/docs/template-version-history.md b/docs/template-version-history.md new file mode 100644 index 0000000..48b5d96 --- /dev/null +++ b/docs/template-version-history.md @@ -0,0 +1,232 @@ +# Template Version History + +## Overview + +The Template Version History feature allows you to track, manage, and restore previous versions of your notification templates. This provides a complete audit trail and the ability to revert changes when needed. + +## Features + +### 1. Automatic Version Creation +- Every time you update a template, a new version is automatically created +- Version numbers follow a semantic versioning pattern (e.g., 1.0, 1.1, 1.2) +- Each version includes a complete snapshot of the template at that point in time + +### 2. Version History View +- Access version history by clicking the "Version History" icon in the template list +- View all versions of a template in chronological order +- See version numbers, change descriptions, and timestamps +- Current version is clearly highlighted + +### 3. Version Restoration +- Restore any previous version of a template +- Restoration creates a new version (doesn't overwrite history) +- Automatic backup of current state before restoration + +### 4. Version Deletion +- Delete old versions that are no longer needed +- Protection against deleting the current version +- Protection against deleting the only version + +## Database Schema + +### notification_template_versions Table + +| Field | Type | Description | +|-------|------|-------------| +| id | varchar(36) | Primary key (UUID) | +| template_id | varchar(36) | Reference to the main template | +| version | varchar(20) | Version number (e.g., "1.0", "1.1") | +| name | varchar(100) | Template name at this version | +| description | text | Template description | +| subject | varchar(255) | Email subject line | +| email_content | text | Email content/body | +| push_title | varchar(100) | Push notification title | +| push_body | varchar(300) | Push notification body | +| category | varchar(50) | Template category | +| channels | json | Supported channels array | +| status | varchar(20) | Template status (Draft, Active, Archived) | +| change_description | text | Description of what changed | +| is_current | boolean | Whether this is the current version | +| created_by | varchar(36) | User who created this version | +| created_at | timestamp | When this version was created | + +## API Endpoints + +### Get Version History +``` +GET /api/notifications/templates/{id}/versions +``` + +**Response:** +```json +{ + "success": true, + "data": { + "templateId": "template-uuid", + "templateName": "Template Name", + "versions": [ + { + "id": "version-uuid", + "version": "1.2", + "name": "Template Name", + "changeDescription": "Updated welcome message", + "isCurrent": false, + "status": "Active", + "formattedCreatedAt": "03/20/2024, 02:30 PM" + } + ], + "totalCount": 3 + } +} +``` + +### Restore Version +``` +POST /api/notifications/templates/{id}/versions/{versionId}/restore +``` + +**Response:** +```json +{ + "success": true, + "data": { + "message": "Version 1.1 has been restored successfully as version 1.3", + "templateId": "template-uuid", + "restoredVersion": "1.1", + "newVersion": "1.3" + } +} +``` + +### Delete Version +``` +DELETE /api/notifications/templates/{id}/versions/{versionId} +``` + +**Response:** +```json +{ + "success": true, + "data": { + "message": "Version 1.1 has been deleted successfully", + "templateId": "template-uuid", + "deletedVersion": "1.1" + } +} +``` + +## How to Use + +### 1. Setup Database +Run the migration to create the version history table: + +```bash +node scripts/run-migration.js +``` + +Or manually run the SQL migration file: +```bash +mysql -u your_username -p your_database < database/migrations/003_create_template_version_history.sql +``` + +### 2. Update Prisma Schema +After running the migration, update your Prisma client: + +```bash +npx prisma generate +``` + +### 3. Using the Frontend + +#### View Version History +1. Go to the notification templates page +2. Find the template you want to view history for +3. Click the "Version History" icon in the actions column +4. The version history modal will open showing all versions + +#### Restore a Version +1. Open the version history modal +2. Find the version you want to restore +3. Click the "Restore" button for that version +4. Confirm the restoration in the popup dialog +5. The version will be restored as a new version + +#### Delete a Version +1. Open the version history modal +2. Find the version you want to delete +3. Click the "Delete" button for that version +4. Confirm the deletion in the popup dialog +5. The version will be permanently deleted + +## Best Practices + +### 1. Version Naming +- Use semantic versioning (major.minor format) +- Increment minor version for small changes +- Increment major version for significant changes + +### 2. Change Descriptions +- Always provide meaningful change descriptions +- Include what was changed and why +- Be specific about the modifications made + +### 3. Version Management +- Regularly clean up old versions that are no longer needed +- Keep important milestone versions +- Don't delete versions that might be needed for compliance or audit + +### 4. Testing +- Test templates thoroughly before making them active +- Use draft status for work-in-progress templates +- Restore previous versions if issues are found + +## Security Considerations + +### 1. Access Control +- Only authenticated users can access version history +- Users can only manage versions of templates they have access to +- Audit logs track all version operations + +### 2. Data Protection +- All version data is stored securely in the database +- Sensitive information in templates is handled according to your data protection policies +- Regular backups include version history data + +### 3. Validation +- All version operations are validated before execution +- Protection against malicious version manipulation +- Proper error handling for failed operations + +## Troubleshooting + +### Common Issues + +1. **Version History Not Loading** + - Check database connection + - Verify the template exists + - Check API endpoint responses + +2. **Restore Failing** + - Ensure you have proper permissions + - Check if the version exists + - Verify template is not locked + +3. **Delete Failing** + - Cannot delete current version + - Cannot delete if it's the only version + - Check user permissions + +### Debug Steps +1. Check browser console for errors +2. Verify API responses +3. Check database logs +4. Confirm user authentication + +## Future Enhancements + +- Version comparison view +- Bulk version operations +- Version export/import +- Advanced filtering and search +- Version approval workflows +- Automated version cleanup policies \ No newline at end of file diff --git a/docx/overview.docx b/docx/overview.docx new file mode 100644 index 0000000..6a92b1d --- /dev/null +++ b/docx/overview.docx @@ -0,0 +1,133 @@ +Notification System User Requirements +1. Notification Templates +Functional Requirements +Template Creation: Users must be able to create reusable notification templates with customizable content, subject lines, and formatting +Multi-Channel Support: Templates must support different notification channels (email, SMS, push notifications, in-app notifications) +Dynamic Content: Templates must support placeholder variables and merge fields for personalized content (user name, dates, amounts, etc.) +Rich Content: Email templates must support HTML formatting, images, links, and attachments +Template Versioning: System must maintain version history of templates with ability to revert to previous versions +Template Categories: Users must be able to organize templates by categories or tags for easy management +Preview Functionality: Users must be able to preview templates before saving or sending +Localization Support: Templates must support multiple languages and localization +Non-Functional Requirements +Templates must load within 2 seconds +System must support at least 1000 active templates +Template editor must be responsive and work on mobile devices +Must support templates up to 100KB in size +2. Notification Triggers / Rules +Functional Requirements +Event-Based Triggers: System must trigger notifications based on specific events (user registration, purchase completion, password reset, etc.) +Condition-Based Rules: Users must be able to set complex conditional logic (if/then/else scenarios) +Time-Based Triggers: Support for scheduled notifications, recurring notifications, and time-delayed triggers +User Segmentation: Ability to target specific user groups based on demographics, behavior, or custom attributes +Trigger Prioritization: System must support priority levels for different trigger types +Rule Testing: Users must be able to test rules before activation +Rule Dependencies: Support for chained triggers and dependent rule execution +External API Triggers: Ability to trigger notifications via external API calls or webhooks +Non-Functional Requirements +Rules must be evaluated within 100 milliseconds +System must support at least 500 active rules simultaneously +Rules engine must be fault-tolerant and handle errors gracefully +Must support real-time trigger processing +3. Notification Queue & Scheduler +Functional Requirements +Queue Management: System must queue notifications and process them in order with different priority levels +Batch Processing: Ability to group and send notifications in batches to optimize delivery +Scheduling: Users must be able to schedule notifications for future delivery at specific dates and times +Retry Logic: Failed notifications must be automatically retried with configurable retry intervals +Rate Limiting: System must respect rate limits for different channels and recipients +Queue Monitoring: Real-time visibility into queue status, pending notifications, and processing rates +Dead Letter Queue: Failed notifications after maximum retries must be moved to a separate queue for manual review +Timezone Handling: Proper handling of different timezones for scheduled notifications +Non-Functional Requirements +Queue must process at least 10,000 notifications per minute +System must maintain 99.9% uptime for queue processing +Queue data must be persistent and survive system restarts +Must support horizontal scaling of queue workers +4. Notification Delivery Engine +Functional Requirements +Multi-Channel Delivery: Support for email, SMS, push notifications, and in-app notifications +Delivery Status Tracking: Real-time tracking of delivery status (sent, delivered, failed, bounced) +Fallback Mechanisms: Automatic fallback to alternative channels if primary delivery fails +Delivery Optimization: Intelligent routing and timing optimization for better delivery rates +Bounce Handling: Automatic handling of bounced emails and invalid phone numbers +Delivery Reporting: Comprehensive delivery reports with success rates and failure reasons +Third-Party Integration: Integration with popular email services (SendGrid, AWS SES) and SMS providers +Webhook Support: Delivery status callbacks via webhooks for external systems +Non-Functional Requirements +Delivery engine must process 99.5% of notifications successfully +Average delivery time must be under 30 seconds for high-priority notifications +System must handle peak loads of 50,000 notifications per hour +Must maintain delivery logs for at least 90 days +5. User Preferences & Subscription Settings +Functional Requirements +Preference Management: Users must be able to manage their notification preferences across all channels +Granular Controls: Fine-grained control over notification types, frequency, and timing +Subscription Categories: Ability to subscribe/unsubscribe from different notification categories +Quiet Hours: Users must be able to set "do not disturb" time periods +Channel Preferences: Option to choose preferred notification channels for different types of messages +Frequency Limits: Users can set maximum frequency limits for non-critical notifications +One-Click Unsubscribe: Easy unsubscribe mechanism with single-click options +Preference Import/Export: Ability to backup and restore notification preferences +Non-Functional Requirements +Preference changes must take effect within 5 minutes +Preference interface must load within 3 seconds +System must respect user preferences 100% of the time +Must support preferences for at least 1 million users +6. Notification Logs & Audit Trail +Functional Requirements +Comprehensive Logging: Complete audit trail of all notification activities including creation, modification, and delivery +Search and Filter: Advanced search capabilities with filters by date, user, channel, status, and content +Delivery Analytics: Detailed analytics on delivery rates, open rates, click-through rates, and engagement metrics +Error Logging: Detailed error logs with root cause analysis and troubleshooting information +Export Functionality: Ability to export logs and reports in various formats (CSV, PDF, Excel) +Retention Policies: Configurable data retention policies for different types of logs +Compliance Reporting: Generate compliance reports for regulatory requirements +Real-Time Monitoring: Live dashboard showing current notification activity and system health +Non-Functional Requirements +Log queries must return results within 5 seconds +System must retain logs for minimum 1 year +Logs must be searchable and indexable +Must support concurrent access by multiple administrators +7. Admin Panel / Management Interface +Functional Requirements +Dashboard Overview: Comprehensive dashboard showing key metrics, system health, and recent activity +User Management: Admin tools to manage user accounts, permissions, and notification preferences +System Configuration: Interface to configure system settings, rate limits, and integration parameters +Template Management: Centralized management of all notification templates with approval workflows +Rule Management: Interface to create, modify, and monitor notification rules and triggers +Reporting Tools: Built-in reporting tools with customizable charts and metrics +System Monitoring: Real-time monitoring of system performance, queue status, and delivery rates +Role-Based Access: Different access levels for administrators, managers, and operators +Bulk Operations: Ability to perform bulk operations on users, templates, and notifications +API Management: Interface to manage API keys, webhooks, and external integrations +Non-Functional Requirements +Admin interface must load within 3 seconds +Must support concurrent access by up to 50 administrators +Interface must be responsive and mobile-friendly +Must provide role-based security with audit logging +Dashboard must refresh data in real-time or near real-time +General System Requirements +Security Requirements +All user data must be encrypted at rest and in transit +API endpoints must be secured with authentication and authorization +System must support SSO integration (SAML, OAuth) +Regular security audits and vulnerability assessments +GDPR and privacy regulation compliance +Performance Requirements +System must support 1 million active users +99.9% system uptime requirement +Database queries must execute within 2 seconds +API response times must be under 500ms for 95% of requests +Integration Requirements +RESTful API for external system integration +Webhook support for real-time event notifications +Support for popular third-party services (CRM, marketing automation tools) +Standard data import/export capabilities +Scalability Requirements +System must be horizontally scalable +Support for cloud deployment (AWS, Azure, GCP) +Auto-scaling capabilities based on load +Database clustering and load balancing support + + diff --git a/ecosystem.config.js b/ecosystem.config.js new file mode 100644 index 0000000..5ec8516 --- /dev/null +++ b/ecosystem.config.js @@ -0,0 +1,13 @@ +// For running pm2 | ecosystem.config.js + +module.exports = { + apps: [ + { + name: "corradAF", + port: "3000", + exec_mode: "cluster", + instances: "max", + script: "./.output/server/index.mjs", + }, + ], +}; diff --git a/error.vue b/error.vue new file mode 100644 index 0000000..887d095 --- /dev/null +++ b/error.vue @@ -0,0 +1,70 @@ + + + diff --git a/fixes-summary.md b/fixes-summary.md new file mode 100644 index 0000000..57882b9 --- /dev/null +++ b/fixes-summary.md @@ -0,0 +1,122 @@ +# Fixes Implemented ✅ + +## 1. Header Title Not Showing Issue 🔧 + +**Problem**: Site name not appearing in header even when toggle is enabled + +**Root Cause**: Header component only showed site name in horizontal layout (`v-else` condition), but most of the time the layout is vertical + +**Fixes Applied**: +- ✅ Added site name display to both vertical AND horizontal header layouts +- ✅ Enhanced site settings loading in Header component's `onMounted` hook +- ✅ Added immediate watchers to sync toggle changes with global site settings +- ✅ Added debug info panel to troubleshoot site settings state + +**Files Modified**: +- `components/layouts/Header.vue` - Added site name to vertical layout +- `pages/devtool/config/site-settings/index.vue` - Enhanced watchers and debugging + +## 2. Button Styling Standardization 🎨 + +**Problem**: Inconsistent button styling across tabs + +**Standardization Applied**: +- ✅ All upload buttons: `variant="outline" size="sm"` +- ✅ Save Changes button: `variant="primary" size="sm"` +- ✅ Reset button: `variant="outline" size="sm"` +- ✅ Apply Font button: `variant="outline" size="sm"` (changed from primary) + +**Consistent Button Pattern**: +```vue + + + Action Text + +``` + +**Files Modified**: +- `pages/devtool/config/site-settings/index.vue` - Standardized Apply Font button + +## 3. Site Settings Description Padding 📝 + +**Problem**: "Configure your platform's branding, appearance, SEO, and functionality" text had improper padding for two lines + +**Fix Applied**: +- ✅ Added `leading-relaxed` class for better line height +- ✅ Improved text readability and spacing + +**Before**: +```vue +

Configure your platform's branding, appearance, SEO, and functionality.

+``` + +**After**: +```vue +

Configure your platform's branding, appearance, SEO, and functionality.

+``` + +**Files Modified**: +- `pages/devtool/config/site-settings/index.vue` - Enhanced info card description + +## Additional Improvements 🚀 + +### Enhanced Toggle Functionality +- ✅ Real-time toggle updates without requiring save +- ✅ Immediate sync between settings page and global state +- ✅ Both header and sidemenu respect the toggle setting + +### Debug Information +- ✅ Added debug panel in live preview showing: + - Current site name + - Toggle state (Yes/No) + - Font size in pixels +- ✅ Helps troubleshoot configuration issues + +### Header Logic Improvements +- ✅ Site name now shows in both vertical and horizontal layouts +- ✅ Proper font size scaling in sidemenu (65% of header size) +- ✅ Automatic site settings loading on component mount + +## Testing Verification ✅ + +**Header Display Test**: +1. ✅ Site name appears in vertical layout (default) +2. ✅ Site name appears in horizontal layout +3. ✅ Toggle OFF hides name in both layouts +4. ✅ Toggle ON shows name in both layouts +5. ✅ Font size applies correctly +6. ✅ Changes are immediate + +**Button Consistency Test**: +1. ✅ All upload buttons use outline variant +2. ✅ Save button uses primary variant +3. ✅ Reset button uses outline variant +4. ✅ All buttons have consistent size (sm) +5. ✅ Icons are properly positioned with mr-1 + +**Description Styling Test**: +1. ✅ Text has proper line height for readability +2. ✅ Padding appears natural for two-line content +3. ✅ Dark mode compatibility maintained + +## Files Changed Summary 📁 + +1. **components/layouts/Header.vue** + - Added site name to vertical layout + - Enhanced site settings loading + - Improved responsive layout handling + +2. **pages/devtool/config/site-settings/index.vue** + - Standardized button variants and sizes + - Added debug information panel + - Enhanced toggle watching and real-time updates + - Improved description line height + - Fixed immediate change application + +## Next Steps 🎯 + +1. Test the site settings page at `/devtool/config/site-settings` +2. Verify header displays site name when toggle is enabled +3. Check that all buttons follow consistent styling +4. Confirm description text has proper spacing +5. Use debug panel to troubleshoot any remaining issues \ No newline at end of file diff --git a/formkit.config.js b/formkit.config.js new file mode 100644 index 0000000..9d4b5a5 --- /dev/null +++ b/formkit.config.js @@ -0,0 +1,49 @@ +import { generateClasses } from "@formkit/themes"; +import defaultTheme from "@/assets/js/formkit-theme.js"; +import customInput from "@/assets/js/formkit-custom.js"; + +// ----------------- Addons --------------------------- // + +// https://formkit.com/plugins/auto-animate +import { createAutoAnimatePlugin } from "@formkit/addons"; + +// https://formkit.com/plugins/floating-labels +import { createFloatingLabelsPlugin } from "@formkit/addons"; +import "@formkit/addons/css/floatingLabels"; + +// https://formkit.com/plugins/multi-step +import { createMultiStepPlugin } from "@formkit/addons"; +import "@formkit/addons/css/multistep"; + +// https://formkit.com/plugins/auto-height-textarea +import { createAutoHeightTextareaPlugin } from "@formkit/addons"; + +// https://formkit.com/plugins/local-storage +import { createLocalStoragePlugin } from "@formkit/addons"; + +export default { + plugins: [ + createFloatingLabelsPlugin({ + useAsDefault: false, // defaults to false + }), + createAutoAnimatePlugin({ + // optional config + }), + createMultiStepPlugin(), + createAutoHeightTextareaPlugin(), + createLocalStoragePlugin({ + // plugin defaults: + prefix: "formkit", + key: undefined, + control: undefined, + maxAge: 3600000, // 1 hour + debounce: 200, + beforeSave: undefined, + beforeLoad: undefined, + }), + ], + config: { + classes: generateClasses(defaultTheme), + }, + inputs: customInput, +}; diff --git a/layouts/default.vue b/layouts/default.vue new file mode 100644 index 0000000..0f04a1d --- /dev/null +++ b/layouts/default.vue @@ -0,0 +1,11 @@ + + + diff --git a/layouts/empty.vue b/layouts/empty.vue new file mode 100644 index 0000000..8bc6805 --- /dev/null +++ b/layouts/empty.vue @@ -0,0 +1,7 @@ + + + diff --git a/middleware/auth.js b/middleware/auth.js new file mode 100644 index 0000000..4a124c6 --- /dev/null +++ b/middleware/auth.js @@ -0,0 +1,26 @@ +export default defineNuxtRouteMiddleware(async (to, from) => { + const { $swal } = useNuxtApp(); + + if (process.client) { + // Validate every request to every page + const { data: validateUser } = await useFetch("/api/auth/validate", { + method: "GET", + }); + + // If user is not logged in, redirect to logout page + if (validateUser.value.statusCode === 401) { + $swal + .fire({ + title: "Session Expired", + text: "Your session has expired. Please login again.", + icon: "warning", + confirmButtonText: "OK", + }) + .then(() => { + return window.location.replace("/logout"); + }); + } + + return true; + } +}); diff --git a/middleware/dashboard.js b/middleware/dashboard.js new file mode 100644 index 0000000..08091f2 --- /dev/null +++ b/middleware/dashboard.js @@ -0,0 +1,11 @@ +export default defineNuxtRouteMiddleware(async (to, from) => { + // Validate every request to every page + const { data: validateUser } = await useFetch("/api/auth/validate", { + method: "GET", + }); + + // If user is not logged in, redirect to logout page + if (validateUser.value.statusCode === 401) return true; + + return navigateTo("/dashboard"); +}); diff --git a/middleware/forbidden.js b/middleware/forbidden.js new file mode 100644 index 0000000..da4fe40 --- /dev/null +++ b/middleware/forbidden.js @@ -0,0 +1,4 @@ +export default defineNuxtRouteMiddleware(async (to, from) => { + // Throw error to page 404 not found + throw new Error("Forbidden"); +}); diff --git a/middleware/main.js b/middleware/main.js new file mode 100644 index 0000000..b70e2fa --- /dev/null +++ b/middleware/main.js @@ -0,0 +1,3 @@ +export default defineNuxtRouteMiddleware((to, from) => { + return navigateTo("/login"); +}); \ No newline at end of file diff --git a/navigation/index.js b/navigation/index.js new file mode 100644 index 0000000..6615b7d --- /dev/null +++ b/navigation/index.js @@ -0,0 +1,150 @@ +export default [ + { + header: "Utama", + description: "", + child: [ + { + title: "Dashboard", + path: "/dashboard", + icon: "ic:outline-dashboard", + child: [], + meta: {}, + }, + ], + meta: {}, + }, + { + header: "Notification", + description: "", + child: [ + { + title: "Dashboard", + path: "/notification/dashboard", + icon: "ic:outline-dashboard", + child: [], + meta: {}, + }, + { + title: "List", + path: "/notification/list", + icon: "ic:outline-list", + child: [], + meta: {}, + }, + { + title: "Templates", + path: "/notification/templates", + icon: "ic:outline-email", + child: [], + meta: {}, + }, + // { + // title: "Triggers & Rules", + // path: "/notification/triggers-rule", + // icon: "ic:outline-rule", + // child: [], + // meta: {}, + // }, + { + title: "Queue", + path: "/notification/queue", + icon: "ic:outline-queue", + child: [], + meta: {}, + }, + { + title: "Delivery Engine", + path: "/notification/delivery", + icon: "ic:outline-mail", + child: [], + meta: {}, + }, + + // { + // title: "User Preferences", + // path: "/notification/preferences", + // icon: "ic:outline-settings", + // child: [], + // meta: {}, + // }, + { + title: "Log & Audit Trail", + path: "/notification/log-audit", + icon: "ic:outline-history", + child: [], + meta: {}, + }, + ], + meta: {}, + }, + // { + // header: "Pentadbiran", + // description: "Urus aplikasi anda", + // child: [ + // { + // title: "Konfigurasi", + // icon: "ic:outline-settings", + // child: [ + // { + // title: "Persekitaran", + // path: "/devtool/config/environment", + // }, + // { + // title: "Site Settings", + // path: "/devtool/config/site-settings", + // }, + // ], + // }, + // { + // title: "Penyunting Menu", + // icon: "ci:menu-alt-03", + // path: "/devtool/menu-editor", + // child: [], + // }, + // { + // title: "Urus Pengguna", + // path: "/devtool/user-management", + // icon: "ph:user-circle-gear", + // child: [ + // { + // title: "Senarai Pengguna", + // path: "/devtool/user-management/user", + // icon: "", + // child: [], + // }, + // { + // title: "Senarai Peranan", + // path: "/devtool/user-management/role", + // icon: "", + // child: [], + // }, + // ], + // }, + // { + // title: "Kandungan", + // icon: "mdi:pencil-ruler", + // child: [ + // { + // title: "Penyunting", + // path: "/devtool/content-editor", + // }, + // { + // title: "Templat", + // path: "/devtool/content-editor/template", + // }, + // ], + // }, + // { + // title: "Penyunting API", + // path: "/devtool/api-editor", + // icon: "material-symbols:api-rounded", + // child: [], + // }, + // ], + // meta: { + // auth: { + // role: ["Developer"], + // }, + // }, + // }, +]; diff --git a/nuxt.config.js b/nuxt.config.js new file mode 100644 index 0000000..bd1e848 --- /dev/null +++ b/nuxt.config.js @@ -0,0 +1,558 @@ +// https://v3.nuxtjs.org/api/configuration/nuxt.config +export default defineNuxtConfig({ + runtimeConfig: { + auth: { + secretAccess: process.env.NUXT_ACCESS_TOKEN_SECRET, + secretRefresh: process.env.NUXT_REFRESH_TOKEN_SECRET, + }, + metabase: { + secretKey: process.env.NUXT_METABASE_SECRET_KEY, + siteUrl: process.env.NUXT_METABASE_SITE_URL || "http://mb.sena.my", + }, + // IMPORTANT: API keys should be in private runtime config, NOT public + notificationApiKey: process.env.NUXT_NOTIFICATION_API_KEY, + public: { + // Public runtime config - accessible to client-side code + // Do NOT put secrets here + } + }, + modules: [ + "@nuxtjs/tailwindcss", + "@formkit/nuxt", + "@vite-pwa/nuxt", + "@vueuse/nuxt", + "floating-vue/nuxt", + "@pinia/nuxt", + "@pinia-plugin-persistedstate/nuxt", + "nuxt-security", + "nuxt-typed-router", + "nuxt-icon", + "@davestewart/nuxt-scrollbar", + ], + app: { + pageTransition: { name: "page", mode: "out-in" }, + head: { + viewport: "width=device-width,initial-scale=1", + title: "corradAF", + titleTemplate: "%s", + meta: [ + { name: "viewport", content: "width=device-width, initial-scale=1" }, + { name: "description", content: "corradAF Admin Portal" }, + { name: "apple-mobile-web-app-title", content: "NAS" }, + ], + }, + }, + css: ["~/assets/style/scss/main.scss"], + tailwindcss: { + cssPath: "~/assets/style/css/tailwind.css", + configPath: "tailwind.config", + exposeConfig: false, + config: {}, + injectPosition: 0, + viewer: false, + }, + formkit: { + defaultConfig: true, + }, + pwa: { + registerType: "autoUpdate", + workbox: { + navigateFallback: "/", + globPatterns: [ + "**/*.{js,json,css,html,txt,svg,png,ico,webp,woff,woff2,ttf,eot,otf,wasm}", + ], + }, + devOptions: { + enabled: false, + type: "module", + }, + meta: { + name: "corradAF", + author: "Corrad Software", + description: "corradAF Admin Portal", + theme_color: "#f3586a", + lang: "en", + }, + manifest: { + name: "corradAF", + short_name: "corradAF", + description: "corradAF Admin Portal", + start_url: "/", + display: "standalone", + theme_color: "#00A59A", + background_color: "#FAFAFA", + scope: "./", + icons: [ + { + src: "icons/windows11/SmallTile.scale-100.png", + sizes: "71x71", + }, + { + src: "icons/windows11/SmallTile.scale-125.png", + sizes: "89x89", + }, + { + src: "icons/windows11/SmallTile.scale-150.png", + sizes: "107x107", + }, + { + src: "icons/windows11/SmallTile.scale-200.png", + sizes: "142x142", + }, + { + src: "icons/windows11/SmallTile.scale-400.png", + sizes: "284x284", + }, + { + src: "icons/windows11/Square150x150Logo.scale-100.png", + sizes: "150x150", + }, + { + src: "icons/windows11/Square150x150Logo.scale-125.png", + sizes: "188x188", + }, + { + src: "icons/windows11/Square150x150Logo.scale-150.png", + sizes: "225x225", + }, + { + src: "icons/windows11/Square150x150Logo.scale-200.png", + sizes: "300x300", + }, + { + src: "icons/windows11/Square150x150Logo.scale-400.png", + sizes: "600x600", + }, + { + src: "icons/windows11/Wide310x150Logo.scale-100.png", + sizes: "310x150", + }, + { + src: "icons/windows11/Wide310x150Logo.scale-125.png", + sizes: "388x188", + }, + { + src: "icons/windows11/Wide310x150Logo.scale-150.png", + sizes: "465x225", + }, + { + src: "icons/windows11/Wide310x150Logo.scale-200.png", + sizes: "620x300", + }, + { + src: "icons/windows11/Wide310x150Logo.scale-400.png", + sizes: "1240x600", + }, + { + src: "icons/windows11/LargeTile.scale-100.png", + sizes: "310x310", + }, + { + src: "icons/windows11/LargeTile.scale-125.png", + sizes: "388x388", + }, + { + src: "icons/windows11/LargeTile.scale-150.png", + sizes: "465x465", + }, + { + src: "icons/windows11/LargeTile.scale-200.png", + sizes: "620x620", + }, + { + src: "icons/windows11/LargeTile.scale-400.png", + sizes: "1240x1240", + }, + { + src: "icons/windows11/Square44x44Logo.scale-100.png", + sizes: "44x44", + }, + { + src: "icons/windows11/Square44x44Logo.scale-125.png", + sizes: "55x55", + }, + { + src: "icons/windows11/Square44x44Logo.scale-150.png", + sizes: "66x66", + }, + { + src: "icons/windows11/Square44x44Logo.scale-200.png", + sizes: "88x88", + }, + { + src: "icons/windows11/Square44x44Logo.scale-400.png", + sizes: "176x176", + }, + { + src: "icons/windows11/StoreLogo.scale-100.png", + sizes: "50x50", + }, + { + src: "icons/windows11/StoreLogo.scale-125.png", + sizes: "63x63", + }, + { + src: "icons/windows11/StoreLogo.scale-150.png", + sizes: "75x75", + }, + { + src: "icons/windows11/StoreLogo.scale-200.png", + sizes: "100x100", + }, + { + src: "icons/windows11/StoreLogo.scale-400.png", + sizes: "200x200", + }, + { + src: "icons/windows11/SplashScreen.scale-100.png", + sizes: "620x300", + }, + { + src: "icons/windows11/SplashScreen.scale-125.png", + sizes: "775x375", + }, + { + src: "icons/windows11/SplashScreen.scale-150.png", + sizes: "930x450", + }, + { + src: "icons/windows11/SplashScreen.scale-200.png", + sizes: "1240x600", + }, + { + src: "icons/windows11/SplashScreen.scale-400.png", + sizes: "2480x1200", + }, + { + src: "icons/windows11/Square44x44Logo.targetsize-16.png", + sizes: "16x16", + }, + { + src: "icons/windows11/Square44x44Logo.targetsize-20.png", + sizes: "20x20", + }, + { + src: "icons/windows11/Square44x44Logo.targetsize-24.png", + sizes: "24x24", + }, + { + src: "icons/windows11/Square44x44Logo.targetsize-30.png", + sizes: "30x30", + }, + { + src: "icons/windows11/Square44x44Logo.targetsize-32.png", + sizes: "32x32", + }, + { + src: "icons/windows11/Square44x44Logo.targetsize-36.png", + sizes: "36x36", + }, + { + src: "icons/windows11/Square44x44Logo.targetsize-40.png", + sizes: "40x40", + }, + { + src: "icons/windows11/Square44x44Logo.targetsize-44.png", + sizes: "44x44", + }, + { + src: "icons/windows11/Square44x44Logo.targetsize-48.png", + sizes: "48x48", + }, + { + src: "icons/windows11/Square44x44Logo.targetsize-60.png", + sizes: "60x60", + }, + { + src: "icons/windows11/Square44x44Logo.targetsize-64.png", + sizes: "64x64", + }, + { + src: "icons/windows11/Square44x44Logo.targetsize-72.png", + sizes: "72x72", + }, + { + src: "icons/windows11/Square44x44Logo.targetsize-80.png", + sizes: "80x80", + }, + { + src: "icons/windows11/Square44x44Logo.targetsize-96.png", + sizes: "96x96", + }, + { + src: "icons/windows11/Square44x44Logo.targetsize-256.png", + sizes: "256x256", + }, + { + src: "icons/windows11/Square44x44Logo.altform-unplated_targetsize-16.png", + sizes: "16x16", + }, + { + src: "icons/windows11/Square44x44Logo.altform-unplated_targetsize-20.png", + sizes: "20x20", + }, + { + src: "icons/windows11/Square44x44Logo.altform-unplated_targetsize-24.png", + sizes: "24x24", + }, + { + src: "icons/windows11/Square44x44Logo.altform-unplated_targetsize-30.png", + sizes: "30x30", + }, + { + src: "icons/windows11/Square44x44Logo.altform-unplated_targetsize-32.png", + sizes: "32x32", + }, + { + src: "icons/windows11/Square44x44Logo.altform-unplated_targetsize-36.png", + sizes: "36x36", + }, + { + src: "icons/windows11/Square44x44Logo.altform-unplated_targetsize-40.png", + sizes: "40x40", + }, + { + src: "icons/windows11/Square44x44Logo.altform-unplated_targetsize-44.png", + sizes: "44x44", + }, + { + src: "icons/windows11/Square44x44Logo.altform-unplated_targetsize-48.png", + sizes: "48x48", + }, + { + src: "icons/windows11/Square44x44Logo.altform-unplated_targetsize-60.png", + sizes: "60x60", + }, + { + src: "icons/windows11/Square44x44Logo.altform-unplated_targetsize-64.png", + sizes: "64x64", + }, + { + src: "icons/windows11/Square44x44Logo.altform-unplated_targetsize-72.png", + sizes: "72x72", + }, + { + src: "icons/windows11/Square44x44Logo.altform-unplated_targetsize-80.png", + sizes: "80x80", + }, + { + src: "icons/windows11/Square44x44Logo.altform-unplated_targetsize-96.png", + sizes: "96x96", + }, + { + src: "icons/windows11/Square44x44Logo.altform-unplated_targetsize-256.png", + sizes: "256x256", + }, + { + src: "icons/windows11/Square44x44Logo.altform-lightunplated_targetsize-16.png", + sizes: "16x16", + }, + { + src: "icons/windows11/Square44x44Logo.altform-lightunplated_targetsize-20.png", + sizes: "20x20", + }, + { + src: "icons/windows11/Square44x44Logo.altform-lightunplated_targetsize-24.png", + sizes: "24x24", + }, + { + src: "icons/windows11/Square44x44Logo.altform-lightunplated_targetsize-30.png", + sizes: "30x30", + }, + { + src: "icons/windows11/Square44x44Logo.altform-lightunplated_targetsize-32.png", + sizes: "32x32", + }, + { + src: "icons/windows11/Square44x44Logo.altform-lightunplated_targetsize-36.png", + sizes: "36x36", + }, + { + src: "icons/windows11/Square44x44Logo.altform-lightunplated_targetsize-40.png", + sizes: "40x40", + }, + { + src: "icons/windows11/Square44x44Logo.altform-lightunplated_targetsize-44.png", + sizes: "44x44", + }, + { + src: "icons/windows11/Square44x44Logo.altform-lightunplated_targetsize-48.png", + sizes: "48x48", + }, + { + src: "icons/windows11/Square44x44Logo.altform-lightunplated_targetsize-60.png", + sizes: "60x60", + }, + { + src: "icons/windows11/Square44x44Logo.altform-lightunplated_targetsize-64.png", + sizes: "64x64", + }, + { + src: "icons/windows11/Square44x44Logo.altform-lightunplated_targetsize-72.png", + sizes: "72x72", + }, + { + src: "icons/windows11/Square44x44Logo.altform-lightunplated_targetsize-80.png", + sizes: "80x80", + }, + { + src: "icons/windows11/Square44x44Logo.altform-lightunplated_targetsize-96.png", + sizes: "96x96", + }, + { + src: "icons/windows11/Square44x44Logo.altform-lightunplated_targetsize-256.png", + sizes: "256x256", + }, + { + src: "icons/android/android-launchericon-512-512.png", + sizes: "512x512", + }, + { + src: "icons/android/android-launchericon-192-192.png", + sizes: "192x192", + }, + { + src: "icons/android/android-launchericon-144-144.png", + sizes: "144x144", + }, + { + src: "icons/android/android-launchericon-96-96.png", + sizes: "96x96", + }, + { + src: "icons/android/android-launchericon-72-72.png", + sizes: "72x72", + }, + { + src: "icons/android/android-launchericon-48-48.png", + sizes: "48x48", + }, + { + src: "icons/ios/16.png", + sizes: "16x16", + }, + { + src: "icons/ios/20.png", + sizes: "20x20", + }, + { + src: "icons/ios/29.png", + sizes: "29x29", + }, + { + src: "icons/ios/32.png", + sizes: "32x32", + }, + { + src: "icons/ios/40.png", + sizes: "40x40", + }, + { + src: "icons/ios/50.png", + sizes: "50x50", + }, + { + src: "icons/ios/57.png", + sizes: "57x57", + }, + { + src: "icons/ios/58.png", + sizes: "58x58", + }, + { + src: "icons/ios/60.png", + sizes: "60x60", + }, + { + src: "icons/ios/64.png", + sizes: "64x64", + }, + { + src: "icons/ios/72.png", + sizes: "72x72", + }, + { + src: "icons/ios/76.png", + sizes: "76x76", + }, + { + src: "icons/ios/80.png", + sizes: "80x80", + }, + { + src: "icons/ios/87.png", + sizes: "87x87", + }, + { + src: "icons/ios/100.png", + sizes: "100x100", + }, + { + src: "icons/ios/114.png", + sizes: "114x114", + }, + { + src: "icons/ios/120.png", + sizes: "120x120", + }, + { + src: "icons/ios/128.png", + sizes: "128x128", + }, + { + src: "icons/ios/144.png", + sizes: "144x144", + }, + { + src: "icons/ios/152.png", + sizes: "152x152", + }, + { + src: "icons/ios/167.png", + sizes: "167x167", + }, + { + src: "icons/ios/180.png", + sizes: "180x180", + }, + { + src: "icons/ios/192.png", + sizes: "192x192", + }, + { + src: "icons/ios/256.png", + sizes: "256x256", + }, + { + src: "icons/ios/512.png", + sizes: "512x512", + }, + { + src: "icons/ios/1024.png", + sizes: "1024x1024", + }, + ], + }, + }, + security: { + // GLOBAL SECURITY OPTIONS + + // Allow 200 requests per hour (the Twitter search limit). Also understands + // 'second', 'minute', 'day', or a number of milliseconds + rateLimiter: { + tokensPerInterval: 200, + interval: "minute", + fireImmediately: false, + throwError: true, // optional + }, + headers: false, + }, + routeRules: { + "/api/devtool/**": { + security: { + xssValidator: false, + requestSizeLimiter: false, + }, + }, + }, +}); diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..3943a3b --- /dev/null +++ b/package-lock.json @@ -0,0 +1,19928 @@ +{ + "name": "Corrad AF 2024", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "hasInstallScript": true, + "dependencies": { + "@babel/eslint-parser": "^7.19.1", + "@codemirror/lang-html": "^6.4.3", + "@codemirror/lang-javascript": "^6.1.6", + "@codemirror/lang-vue": "^0.1.1", + "@codemirror/theme-one-dark": "^6.1.2", + "@davestewart/nuxt-scrollbar": "^1.0.0", + "@formkit/addons": "^1.0.0", + "@formkit/auto-animate": "^0.7.0", + "@formkit/nuxt": "^1.0.0", + "@formkit/pro": "^0.115.3", + "@formkit/themes": "^1.0.0", + "@fullcalendar/core": "^5.11.3", + "@fullcalendar/daygrid": "^5.11.3", + "@fullcalendar/interaction": "^5.11.3", + "@fullcalendar/list": "^5.11.3", + "@fullcalendar/luxon2": "^5.11.3", + "@fullcalendar/scrollgrid": "^5.11.3", + "@fullcalendar/timegrid": "^5.11.3", + "@fullcalendar/vue3": "^5.11.2", + "@kiwicom/eslint-config": "^12.7.3", + "@pinia/nuxt": "^0.4.11", + "@popperjs/core": "^2.11.8", + "@prisma/client": "^5.1.1", + "@shimyshack/uid": "^0.1.7", + "@sweetalert2/theme-dark": "^5.0.14", + "@tiptap/extension-underline": "^2.12.0", + "@tiptap/pm": "^2.12.0", + "@tiptap/starter-kit": "^2.12.0", + "@tiptap/vue-3": "^2.12.0", + "@vueup/vue-quill": "^1.0.0", + "@vueuse/core": "^9.5.0", + "@vueuse/nuxt": "^9.5.0", + "apexcharts": "^3.36.0", + "chart.js": "^3.9.1", + "codemirror": "^6.0.1", + "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", + "floating-vue": "^2.0.0-beta.24", + "isomorphic-dompurify": "^2.29.0", + "jsonwebtoken": "^8.5.1", + "jspdf": "^2.5.1", + "luxon": "^3.1.0", + "maska": "^1.5.0", + "nodemailer": "^7.0.6", + "pinia": "^2.1.6", + "prettier": "^2.8.1", + "prisma": "^5.1.1", + "sass": "^1.62.0", + "swiper": "^8.4.4", + "thememirror": "^2.0.1", + "uuid": "^10.0.0", + "v-calendar": "^3.0.3", + "vue-chart-3": "^3.1.8", + "vue-code-highlight": "^0.7.8", + "vue-codemirror": "^6.1.1", + "vue-country-flag-next": "^2.3.2", + "vue-fullscreen": "^3.1.1", + "vue-select": "^4.0.0-beta.5", + "vue-sweetalert2": "^5.0.5", + "vue-toastification": "^2.0.0-rc.5", + "vue-window-size": "^1.0.8", + "vue3-apexcharts": "^1.4.1", + "vue3-click-away": "^1.2.4", + "vue3-dropzone": "^2.0.1", + "vue3-recaptcha-v2": "^2.0.2", + "vuedraggable": "^4.1.0", + "zod": "^3.25.42" + }, + "devDependencies": { + "@nuxtjs/tailwindcss": "^6.8.0", + "@pinia-plugin-persistedstate/nuxt": "^1.1.1", + "@vite-pwa/nuxt": "^0.1.0", + "eslint": "^8.39.0", + "eslint-plugin-vue": "^9.16.1", + "nuxt": "^3.6.5", + "nuxt-icon": "^0.1.7", + "nuxt-security": "^0.13.0", + "nuxt-typed-router": "^3.2.5", + "postcss-import": "^15.1.0" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@apideck/better-ajv-errors": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz", + "integrity": "sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-schema": "^0.4.0", + "jsonpointer": "^5.0.0", + "leven": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "ajv": ">=8" + } + }, + "node_modules/@asamuzakjp/css-color": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-4.0.5.tgz", + "integrity": "sha512-lMrXidNhPGsDjytDy11Vwlb6OIGrT3CmLg3VWNFyWkLWtijKl7xjvForlh8vuj0SHGjgl4qZEQzUmYTeQA2JFQ==", + "license": "MIT", + "dependencies": { + "@csstools/css-calc": "^2.1.4", + "@csstools/css-color-parser": "^3.1.0", + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4", + "lru-cache": "^11.2.1" + } + }, + "node_modules/@asamuzakjp/css-color/node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz", + "integrity": "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^3.0.4" + } + }, + "node_modules/@asamuzakjp/css-color/node_modules/@csstools/css-tokenizer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz", + "integrity": "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@asamuzakjp/css-color/node_modules/lru-cache": { + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz", + "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==", + "license": "ISC", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@asamuzakjp/dom-selector": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/@asamuzakjp/dom-selector/-/dom-selector-6.6.2.tgz", + "integrity": "sha512-+AG0jN9HTwfDLBhjhX1FKi6zlIAc/YGgEHlN/OMaHD1pOPFsC5CpYQpLkPX0aFjyaVmoq9330cQDCU4qnSL1qA==", + "license": "MIT", + "dependencies": { + "@asamuzakjp/nwsapi": "^2.3.9", + "bidi-js": "^1.0.3", + "css-tree": "^3.1.0", + "is-potential-custom-element-name": "^1.0.1", + "lru-cache": "^11.2.2" + } + }, + "node_modules/@asamuzakjp/dom-selector/node_modules/css-tree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", + "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", + "license": "MIT", + "dependencies": { + "mdn-data": "2.12.2", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/@asamuzakjp/dom-selector/node_modules/lru-cache": { + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz", + "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==", + "license": "ISC", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@asamuzakjp/dom-selector/node_modules/mdn-data": { + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", + "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==", + "license": "CC0-1.0" + }, + "node_modules/@asamuzakjp/nwsapi": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/@asamuzakjp/nwsapi/-/nwsapi-2.3.9.tgz", + "integrity": "sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==", + "license": "MIT" + }, + "node_modules/@babel/code-frame": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz", + "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.10.tgz", + "integrity": "sha512-fTmqbbUBAwCcre6zPzNngvsI0aNrPZe77AeqvDxWM9Nm+04RrJ3CAmGHA9f7lJQY6ZMhRztNemy4uslDxTX4Qw==", + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.22.10", + "@babel/generator": "^7.22.10", + "@babel/helper-compilation-targets": "^7.22.10", + "@babel/helper-module-transforms": "^7.22.9", + "@babel/helpers": "^7.22.10", + "@babel/parser": "^7.22.10", + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.10", + "@babel/types": "^7.22.10", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.2", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/eslint-parser": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.22.10.tgz", + "integrity": "sha512-0J8DNPRXQRLeR9rPaUMM3fA+RbixjnVLe/MRMYCkp3hzgsSuxCHQ8NN8xQG1wIHKJ4a1DTROTvFJdW+B5/eOsg==", + "license": "MIT", + "dependencies": { + "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", + "eslint-visitor-keys": "^2.1.0", + "semver": "^6.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || >=14.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.11.0", + "eslint": "^7.5.0 || ^8.0.0" + } + }, + "node_modules/@babel/generator": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.3.tgz", + "integrity": "sha512-xnlJYj5zepml8NXtjkG0WquFUv8RskFqyFcVgTBp5k+NaA/8uw/K+OSVf8AMGw5e9HKP2ETd5xpK5MLZQD6b4Q==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.27.3", + "@babel/types": "^7.27.3", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", + "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.3" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.10.tgz", + "integrity": "sha512-Av0qubwDQxC56DoUReVDeLfMEjYYSN1nZrTUrWkXd7hpU73ymRANkbuDm3yni9npkn+RXy9nNbEJZEzXr7xrfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.10" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.10.tgz", + "integrity": "sha512-JMSwHD4J7SLod0idLq5PKgI+6g/hLD/iuWBq08ZX49xE14VpVEojJ5rHWptpirV2j020MvypRLAXAO50igCJ5Q==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-validator-option": "^7.22.5", + "browserslist": "^4.21.9", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.10.tgz", + "integrity": "sha512-5IBb77txKYQPpOEdUdIhBx8VrZyDCQ+H82H0+5dX1TmuscP5vJKEE3cKurjtIw/vFwzbVH48VweE78kVDBrqjA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.9.tgz", + "integrity": "sha512-+svjVa/tFwsNSG4NEy1h85+HQ5imbT92Q5/bgtS7P0GTQlP8WuFdqsiABmQouhiFGyV66oGxZFpeYHza1rNsKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz", + "integrity": "sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", + "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", + "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.22.5", + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.5.tgz", + "integrity": "sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz", + "integrity": "sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.9.tgz", + "integrity": "sha512-8WWC4oR4Px+tr+Fp0X3RHDVfINGpF3ad1HIbrc8A77epiR6eMMc6jsgozkzT2uDiOOdoS9cLIQ+XD2XvI2WSmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-wrap-function": "^7.22.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz", + "integrity": "sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", + "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.10.tgz", + "integrity": "sha512-OnMhjWjuGYtdoO3FmsEFWvBStBAe2QOgwOLsLNDjN+aaiMD8InJk1/O3HSD8lkqTjCgg5YI34Tz15KNNA3p+nQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-function-name": "^7.22.5", + "@babel/template": "^7.22.5", + "@babel/types": "^7.22.10" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.10.tgz", + "integrity": "sha512-a41J4NW8HyZa1I1vAndrraTlPZ/eZoga2ZgS7fEr0tZJGVU4xqdE80CEm0CcNjha5EZ8fTBYLKHF0kqDUuAwQw==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.10", + "@babel/types": "^7.22.10" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.3.tgz", + "integrity": "sha512-xyYxRj6+tLNDTWi0KCBcZ9V7yg3/lwL9DWh9Uwh/RIVlIfFidggcgxKX3GCXwCiswwcGRawBKbEg2LG/Y8eJhw==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.3" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.5.tgz", + "integrity": "sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.5.tgz", + "integrity": "sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz", + "integrity": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz", + "integrity": "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz", + "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", + "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz", + "integrity": "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.10.tgz", + "integrity": "sha512-eueE8lvKVzq5wIObKK/7dvoeKJ+xc6TvRn6aysIjS6pSCeLy7S/eVi7pEQknZqyqvzaNKdDtem8nUNTBgDVR2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.9", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz", + "integrity": "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz", + "integrity": "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.10.tgz", + "integrity": "sha512-1+kVpGAOOI1Albt6Vse7c8pHzcZQdQKW+wJH+g8mCaszOdDVwRXa/slHPqIw+oJAJANTKDMuM2cBdV0Dg618Vg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz", + "integrity": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.5.tgz", + "integrity": "sha512-SPToJ5eYZLxlnp1UzdARpOGeC2GbHvr9d/UV0EukuVx8atktg194oe+C5BqQ8jRTkgLRVOPYeXRSBg1IlMoVRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.6.tgz", + "integrity": "sha512-58EgM6nuPNG6Py4Z3zSuu0xWu2VfodiMi72Jt5Kj2FECmaYk1RrTXA45z6KBFsu9tRgwQDwIiY4FXTt+YsSFAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz", + "integrity": "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/template": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.10.tgz", + "integrity": "sha512-dPJrL0VOyxqLM9sritNbMSGx/teueHF/htMKrPT7DNxccXxRDPYqlgPFFdr8u+F+qUZOkZoXue/6rL5O5GduEw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz", + "integrity": "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz", + "integrity": "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.5.tgz", + "integrity": "sha512-0MC3ppTB1AMxd8fXjSrbPa7LT9hrImt+/fcj+Pg5YMD7UQyWp/02+JWpdnCymmsXwIx5Z+sYn1bwCn4ZJNvhqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz", + "integrity": "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.5.tgz", + "integrity": "sha512-X4hhm7FRnPgd4nDA4b/5V280xCx6oL7Oob5+9qVS5C13Zq4bh1qq7LU0GgRU6b5dBWBvhGaXYVB4AcN6+ol6vg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.5.tgz", + "integrity": "sha512-3kxQjX1dU9uudwSshyLeEipvrLjBCVthCgeTp6CzE/9JYrlAIaeekVxRpCWsDDfYTfRZRoCeZatCQvwo+wvK8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz", + "integrity": "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.5.tgz", + "integrity": "sha512-DuCRB7fu8MyTLbEQd1ew3R85nx/88yMoqo2uPSjevMj3yoN7CDM8jkgrY0wmVxfJZyJ/B9fE1iq7EQppWQmR5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz", + "integrity": "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.5.tgz", + "integrity": "sha512-MQQOUW1KL8X0cDWfbwYP+TbVbZm16QmQXJQ+vndPtH/BoO0lOKpVoEDMI7+PskYxH+IiE0tS8xZye0qr1lGzSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz", + "integrity": "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz", + "integrity": "sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.5.tgz", + "integrity": "sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.5.tgz", + "integrity": "sha512-emtEpoaTMsOs6Tzz+nbmcePl6AKVtS1yC4YNAeMun9U8YCsgadPNxnOPQ8GhHFB2qdx+LZu9LgoC0Lthuu05DQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz", + "integrity": "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", + "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz", + "integrity": "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.5.tgz", + "integrity": "sha512-6CF8g6z1dNYZ/VXok5uYkkBBICHZPiGEl7oDnAx2Mt1hlHVHOSIKWJaXHjQJA5VB43KZnXZDIexMchY4y2PGdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.5.tgz", + "integrity": "sha512-NbslED1/6M+sXiwwtcAB/nieypGw02Ejf4KtDeMkCEpP6gWFMX1wI9WKYua+4oBneCCEmulOkRpwywypVZzs/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.5.tgz", + "integrity": "sha512-Kk3lyDmEslH9DnvCDA1s1kkd3YWQITiBOHngOtDL9Pt6BZjzqb6hiOlb8VfjiiQJ2unmegBqZu0rx5RxJb5vmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz", + "integrity": "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.5.tgz", + "integrity": "sha512-pH8orJahy+hzZje5b8e2QIlBWQvGpelS76C63Z+jhZKsmzfNaPQ+LaW6dcJ9bxTpo1mtXbgHwy765Ro3jftmUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.10.tgz", + "integrity": "sha512-MMkQqZAZ+MGj+jGTG3OTuhKeBpNcO+0oCEbrGNEaOmiEn+1MzRyQlYsruGiU8RTK3zV6XwrVJTmwiDOyYK6J9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.5.tgz", + "integrity": "sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz", + "integrity": "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.5.tgz", + "integrity": "sha512-/9xnaTTJcVoBtSSmrVyhtSvO3kbqS2ODoh2juEU72c3aYonNF0OMGiaz2gjukyKM2wBBYJP38S4JiE0Wfb5VMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz", + "integrity": "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz", + "integrity": "sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "regenerator-transform": "^0.15.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz", + "integrity": "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz", + "integrity": "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz", + "integrity": "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz", + "integrity": "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz", + "integrity": "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz", + "integrity": "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.22.10.tgz", + "integrity": "sha512-7++c8I/ymsDo4QQBAgbraXLzIM6jmfao11KgIBEYZRReWzNWH9NtNgJcyrZiXsOPh523FQm6LfpLyy/U5fn46A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.10", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-typescript": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz", + "integrity": "sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz", + "integrity": "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz", + "integrity": "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz", + "integrity": "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.10.tgz", + "integrity": "sha512-riHpLb1drNkpLlocmSyEg4oYJIQFeXAK/d7rI6mbD0XsvoTOOweXDmQPG/ErxsEhWk3rl3Q/3F6RFQlVFS8m0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-compilation-targets": "^7.22.10", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.5", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.5", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.22.5", + "@babel/plugin-syntax-import-attributes": "^7.22.5", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.22.5", + "@babel/plugin-transform-async-generator-functions": "^7.22.10", + "@babel/plugin-transform-async-to-generator": "^7.22.5", + "@babel/plugin-transform-block-scoped-functions": "^7.22.5", + "@babel/plugin-transform-block-scoping": "^7.22.10", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-class-static-block": "^7.22.5", + "@babel/plugin-transform-classes": "^7.22.6", + "@babel/plugin-transform-computed-properties": "^7.22.5", + "@babel/plugin-transform-destructuring": "^7.22.10", + "@babel/plugin-transform-dotall-regex": "^7.22.5", + "@babel/plugin-transform-duplicate-keys": "^7.22.5", + "@babel/plugin-transform-dynamic-import": "^7.22.5", + "@babel/plugin-transform-exponentiation-operator": "^7.22.5", + "@babel/plugin-transform-export-namespace-from": "^7.22.5", + "@babel/plugin-transform-for-of": "^7.22.5", + "@babel/plugin-transform-function-name": "^7.22.5", + "@babel/plugin-transform-json-strings": "^7.22.5", + "@babel/plugin-transform-literals": "^7.22.5", + "@babel/plugin-transform-logical-assignment-operators": "^7.22.5", + "@babel/plugin-transform-member-expression-literals": "^7.22.5", + "@babel/plugin-transform-modules-amd": "^7.22.5", + "@babel/plugin-transform-modules-commonjs": "^7.22.5", + "@babel/plugin-transform-modules-systemjs": "^7.22.5", + "@babel/plugin-transform-modules-umd": "^7.22.5", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.22.5", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.5", + "@babel/plugin-transform-numeric-separator": "^7.22.5", + "@babel/plugin-transform-object-rest-spread": "^7.22.5", + "@babel/plugin-transform-object-super": "^7.22.5", + "@babel/plugin-transform-optional-catch-binding": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.22.10", + "@babel/plugin-transform-parameters": "^7.22.5", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/plugin-transform-private-property-in-object": "^7.22.5", + "@babel/plugin-transform-property-literals": "^7.22.5", + "@babel/plugin-transform-regenerator": "^7.22.10", + "@babel/plugin-transform-reserved-words": "^7.22.5", + "@babel/plugin-transform-shorthand-properties": "^7.22.5", + "@babel/plugin-transform-spread": "^7.22.5", + "@babel/plugin-transform-sticky-regex": "^7.22.5", + "@babel/plugin-transform-template-literals": "^7.22.5", + "@babel/plugin-transform-typeof-symbol": "^7.22.5", + "@babel/plugin-transform-unicode-escapes": "^7.22.10", + "@babel/plugin-transform-unicode-property-regex": "^7.22.5", + "@babel/plugin-transform-unicode-regex": "^7.22.5", + "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "@babel/types": "^7.22.10", + "babel-plugin-polyfill-corejs2": "^0.4.5", + "babel-plugin-polyfill-corejs3": "^0.8.3", + "babel-plugin-polyfill-regenerator": "^0.5.2", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@babel/runtime": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.10.tgz", + "integrity": "sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ==", + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/runtime-corejs3": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.22.10.tgz", + "integrity": "sha512-IcixfV2Jl3UrqZX4c81+7lVg5++2ufYJyAFW3Aux/ZTvY6LVYYhJ9rMgnbX0zGVq6eqfVpnoatTjZdVki/GmWA==", + "license": "MIT", + "dependencies": { + "core-js-pure": "^3.30.2", + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/standalone": { + "version": "7.22.10", + "resolved": "https://registry.npmjs.org/@babel/standalone/-/standalone-7.22.10.tgz", + "integrity": "sha512-VmK2sWxUTfDDh9mPfCtFJPIehZToteqK+Zpwq8oJUjJ+WeeKIFTTQIrDzH7jEdom+cAaaguU7FI/FBsBWFkIeQ==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.3.tgz", + "integrity": "sha512-lId/IfN/Ye1CIu8xG7oKBHXd2iNb2aW1ilPszzGcJug6M8RCKfVNcYhpI5+bMvFYjK7lXIM0R+a+6r8xhHp2FQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.27.3", + "@babel/parser": "^7.27.3", + "@babel/template": "^7.27.2", + "@babel/types": "^7.27.3", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/types": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.3.tgz", + "integrity": "sha512-Y1GkI4ktrtvmawoSq+4FCVHNryea6uR+qUQy0AGxLSsjCX0nVmkYQMBLHDkXZuo5hGx7eYdnIaslsdBFm7zbUw==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@cloudflare/kv-asset-handler": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@cloudflare/kv-asset-handler/-/kv-asset-handler-0.3.0.tgz", + "integrity": "sha512-9CB/MKf/wdvbfkUdfrj+OkEwZ5b7rws0eogJ4293h+7b6KX5toPwym+VQKmILafNB9YiehqY0DlNrDcDhdWHSQ==", + "dev": true, + "license": "MIT OR Apache-2.0", + "dependencies": { + "mime": "^3.0.0" + } + }, + "node_modules/@codemirror/autocomplete": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.9.0.tgz", + "integrity": "sha512-Fbwm0V/Wn3BkEJZRhr0hi5BhCo5a7eBL6LYaliPjOSwCyfOpnjXY59HruSxOUNV+1OYer0Tgx1zRNQttjXyDog==", + "license": "MIT", + "dependencies": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.6.0", + "@lezer/common": "^1.0.0" + }, + "peerDependencies": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "@lezer/common": "^1.0.0" + } + }, + "node_modules/@codemirror/commands": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.2.4.tgz", + "integrity": "sha512-42lmDqVH0ttfilLShReLXsDfASKLXzfyC36bzwcqzox9PlHulMcsUOfHXNo2X2aFMVNUoQ7j+d4q5bnfseYoOA==", + "license": "MIT", + "dependencies": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.2.0", + "@codemirror/view": "^6.0.0", + "@lezer/common": "^1.0.0" + } + }, + "node_modules/@codemirror/lang-css": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@codemirror/lang-css/-/lang-css-6.2.1.tgz", + "integrity": "sha512-/UNWDNV5Viwi/1lpr/dIXJNWiwDxpw13I4pTUAsNxZdg6E0mI2kTQb0P2iHczg1Tu+H4EBgJR+hYhKiHKko7qg==", + "license": "MIT", + "dependencies": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@lezer/common": "^1.0.2", + "@lezer/css": "^1.0.0" + } + }, + "node_modules/@codemirror/lang-html": { + "version": "6.4.5", + "resolved": "https://registry.npmjs.org/@codemirror/lang-html/-/lang-html-6.4.5.tgz", + "integrity": "sha512-dUCSxkIw2G+chaUfw3Gfu5kkN83vJQN8gfQDp9iEHsIZluMJA0YJveT12zg/28BJx+uPsbQ6VimKCgx3oJrZxA==", + "license": "MIT", + "dependencies": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/lang-css": "^6.0.0", + "@codemirror/lang-javascript": "^6.0.0", + "@codemirror/language": "^6.4.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.2.2", + "@lezer/common": "^1.0.0", + "@lezer/css": "^1.1.0", + "@lezer/html": "^1.3.0" + } + }, + "node_modules/@codemirror/lang-javascript": { + "version": "6.1.9", + "resolved": "https://registry.npmjs.org/@codemirror/lang-javascript/-/lang-javascript-6.1.9.tgz", + "integrity": "sha512-z3jdkcqOEBT2txn2a87A0jSy6Te3679wg/U8QzMeftFt+4KA6QooMwfdFzJiuC3L6fXKfTXZcDocoaxMYfGz0w==", + "license": "MIT", + "dependencies": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/language": "^6.6.0", + "@codemirror/lint": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "@lezer/common": "^1.0.0", + "@lezer/javascript": "^1.0.0" + } + }, + "node_modules/@codemirror/lang-vue": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@codemirror/lang-vue/-/lang-vue-0.1.2.tgz", + "integrity": "sha512-D4YrefiRBAr+CfEIM4S3yvGSbYW+N69mttIfGMEf7diHpRbmygDxS+R/5xSqjgtkY6VO6qmUrre1GkRcWeZa9A==", + "license": "MIT", + "dependencies": { + "@codemirror/lang-html": "^6.0.0", + "@codemirror/lang-javascript": "^6.1.2", + "@codemirror/language": "^6.0.0", + "@lezer/common": "^1.0.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.3.1" + } + }, + "node_modules/@codemirror/language": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.8.0.tgz", + "integrity": "sha512-r1paAyWOZkfY0RaYEZj3Kul+MiQTEbDvYqf8gPGaRvNneHXCmfSaAVFjwRUPlgxS8yflMxw2CTu6uCMp8R8A2g==", + "license": "MIT", + "dependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "@lezer/common": "^1.0.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0", + "style-mod": "^4.0.0" + } + }, + "node_modules/@codemirror/lint": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.4.0.tgz", + "integrity": "sha512-6VZ44Ysh/Zn07xrGkdtNfmHCbGSHZzFBdzWi0pbd7chAQ/iUcpLGX99NYRZTa7Ugqg4kEHCqiHhcZnH0gLIgSg==", + "license": "MIT", + "dependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "crelt": "^1.0.5" + } + }, + "node_modules/@codemirror/search": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@codemirror/search/-/search-6.5.1.tgz", + "integrity": "sha512-4jupk4JwkeVbrN2pStY74q6OJEYqwosB4koA66nyLeVedadtX9MHI38j2vbYmnfDGurDApP3OZO46MrWalcjiQ==", + "license": "MIT", + "dependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "crelt": "^1.0.5" + } + }, + "node_modules/@codemirror/state": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.2.1.tgz", + "integrity": "sha512-RupHSZ8+OjNT38zU9fKH2sv+Dnlr8Eb8sl4NOnnqz95mCFTZUaiRP8Xv5MeeaG0px2b8Bnfe7YGwCV3nsBhbuw==", + "license": "MIT" + }, + "node_modules/@codemirror/theme-one-dark": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@codemirror/theme-one-dark/-/theme-one-dark-6.1.2.tgz", + "integrity": "sha512-F+sH0X16j/qFLMAfbciKTxVOwkdAS336b7AXTKOZhy8BR3eH/RelsnLgLFINrpST63mmN2OuwUt0W2ndUgYwUA==", + "license": "MIT", + "dependencies": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "@lezer/highlight": "^1.0.0" + } + }, + "node_modules/@codemirror/view": { + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.16.0.tgz", + "integrity": "sha512-1Z2HkvkC3KR/oEZVuW9Ivmp8TWLzGEd8T8TA04TTwPvqogfkHBdYSlflytDOqmkUxM2d1ywTg7X2dU5mC+SXvg==", + "license": "MIT", + "dependencies": { + "@codemirror/state": "^6.1.4", + "style-mod": "^4.0.0", + "w3c-keyname": "^2.2.4" + } + }, + "node_modules/@csstools/cascade-layer-name-parser": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-1.0.4.tgz", + "integrity": "sha512-zXMGsJetbLoXe+gjEES07MEGjL0Uy3hMxmnGtVBrRpVKr5KV9OgCB09zr/vLrsEtoVQTgJFewxaU8IYSAE4tjg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^2.3.1", + "@csstools/css-tokenizer": "^2.2.0" + } + }, + "node_modules/@csstools/color-helpers": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.1.0.tgz", + "integrity": "sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + } + }, + "node_modules/@csstools/css-calc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.4.tgz", + "integrity": "sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + } + }, + "node_modules/@csstools/css-color-parser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.1.0.tgz", + "integrity": "sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/color-helpers": "^5.1.0", + "@csstools/css-calc": "^2.1.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.5", + "@csstools/css-tokenizer": "^3.0.4" + } + }, + "node_modules/@csstools/css-parser-algorithms": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.3.1.tgz", + "integrity": "sha512-xrvsmVUtefWMWQsGgFffqWSK03pZ1vfDki4IVIIUxxDKnGBzqNgv0A7SB1oXtVNEkcVO8xi1ZrTL29HhSu5kGA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^2.2.0" + } + }, + "node_modules/@csstools/css-syntax-patches-for-csstree": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.0.14.tgz", + "integrity": "sha512-zSlIxa20WvMojjpCSy8WrNpcZ61RqfTfX3XTaOeVlGJrt/8HF3YbzgFZa01yTbT4GWQLwfTcC3EB8i3XnB647Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/css-tokenizer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.2.0.tgz", + "integrity": "sha512-wErmsWCbsmig8sQKkM6pFhr/oPha1bHfvxsUY5CYSQxwyhA9Ulrs8EqCgClhg4Tgg2XapVstGqSVcz0xOYizZA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18" + } + }, + "node_modules/@csstools/selector-specificity": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz", + "integrity": "sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==", + "dev": true, + "license": "CC0-1.0", + "engines": { + "node": "^14 || ^16 || >=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss-selector-parser": "^6.0.10" + } + }, + "node_modules/@davestewart/nuxt-scrollbar": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@davestewart/nuxt-scrollbar/-/nuxt-scrollbar-1.0.0.tgz", + "integrity": "sha512-aX70k6ndjh3iYMMOijM9AAdB5pDVCAnkaakAj3S8xsoz3soGXtaA5AYpS7NUtN3tAuqLfetiGnWQxzSWWmXYew==", + "license": "MIT", + "dependencies": { + "@nuxt/kit": "^3.3.3", + "vue3-perfect-scrollbar": "^1.6.1" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.18.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.19.tgz", + "integrity": "sha512-1uOoDurJYh5MNqPqpj3l/TQCI1V25BXgChEldCB7D6iryBYqYKrbZIhYO5AI9fulf66sM8UJpc3UcCly2Tv28w==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.18.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.19.tgz", + "integrity": "sha512-4+jkUFQxZkQfQOOxfGVZB38YUWHMJX2ihZwF+2nh8m7bHdWXpixiurgGRN3c/KMSwlltbYI0/i929jwBRMFzbA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.18.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.19.tgz", + "integrity": "sha512-ae5sHYiP/Ogj2YNrLZbWkBmyHIDOhPgpkGvFnke7XFGQldBDWvc/AyYwSLpNuKw9UNkgnLlB/jPpnBmlF3G9Bg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.18.19", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.19.tgz", + "integrity": "sha512-HIpQvNQWFYROmWDANMRL+jZvvTQGOiTuwWBIuAsMaQrnStedM+nEKJBzKQ6bfT9RFKH2wZ+ej+DY7+9xHBTFPg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.18.19", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.19.tgz", + "integrity": "sha512-m6JdvXJQt0thNLIcWOeG079h2ivhYH4B5sVCgqb/B29zTcFd7EE8/J1nIUHhdtwGeItdUeqKaqqb4towwxvglQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.18.19", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.19.tgz", + "integrity": "sha512-G0p4EFMPZhGn/xVNspUyMQbORH3nlKTV0bFNHPIwLraBuAkTeMyxNviTe0ZXUbIXQrR1lrwniFjNFU4s+x7veQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.18.19", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.19.tgz", + "integrity": "sha512-hBxgRlG42+W+j/1/cvlnSa+3+OBKeDCyO7OG2ICya1YJaSCYfSpuG30KfOnQHI7Ytgu4bRqCgrYXxQEzy0zM5Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.18.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.19.tgz", + "integrity": "sha512-qtWyoQskfJlb9MD45mvzCEKeO4uCnDZ7lPFeNqbfaaJHqBiH9qA5Vu2EuckqYZuFMJWy1l4dxTf9NOulCVfUjg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.18.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.19.tgz", + "integrity": "sha512-X8g33tczY0GsJq3lhyBrjnFtaKjWVpp1gMq5IlF9BQJ3TUfSK74nQnz9mRIEejmcV+OIYn6bkOJeUaU1Knrljg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.18.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.19.tgz", + "integrity": "sha512-SAkRWJgb+KN+gOhmbiE6/wu23D6HRcGQi15cB13IVtBZZgXxygTV5GJlUAKLQ5Gcx0gtlmt+XIxEmSqA6sZTOw==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.18.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.19.tgz", + "integrity": "sha512-YLAslaO8NsB9UOxBchos82AOMRDbIAWChwDKfjlGrHSzS3v1kxce7dGlSTsrb0PJwo1KYccypN3VNjQVLtz7LA==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.18.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.19.tgz", + "integrity": "sha512-vSYFtlYds/oTI8aflEP65xo3MXChMwBOG1eWPGGKs/ev9zkTeXVvciU+nifq8J1JYMz+eQ4J9JDN0O2RKF8+1Q==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.18.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.19.tgz", + "integrity": "sha512-tgG41lRVwlzqO9tv9l7aXYVw35BxKXLtPam1qALScwSqPivI8hjkZLNH0deaaSCYCFT9cBIdB+hUjWFlFFLL9A==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.18.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.19.tgz", + "integrity": "sha512-EgBZFLoN1S5RuB4cCJI31pBPsjE1nZ+3+fHRjguq9Ibrzo29bOLSBcH1KZJvRNh5qtd+fcYIGiIUia8Jw5r1lQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.18.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.19.tgz", + "integrity": "sha512-q1V1rtHRojAzjSigZEqrcLkpfh5K09ShCoIsdTakozVBnM5rgV58PLFticqDp5UJ9uE0HScov9QNbbl8HBo6QQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.18.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.19.tgz", + "integrity": "sha512-D0IiYjpZRXxGZLQfsydeAD7ZWqdGyFLBj5f2UshJpy09WPs3qizDCsEr8zyzcym6Woj/UI9ZzMIXwvoXVtyt0A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.18.19", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.19.tgz", + "integrity": "sha512-3tt3SOS8L3D54R8oER41UdDshlBIAjYhdWRPiZCTZ1E41+shIZBpTjaW5UaN/jD1ENE/Ok5lkeqhoNMbxstyxw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.18.19", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.19.tgz", + "integrity": "sha512-MxbhcuAYQPlfln1EMc4T26OUoeg/YQc6wNoEV8xvktDKZhLtBxjkoeESSo9BbPaGKhAPzusXYj5n8n5A8iZSrA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.18.19", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.19.tgz", + "integrity": "sha512-m0/UOq1wj25JpWqOJxoWBRM9VWc3c32xiNzd+ERlYstUZ6uwx5SZsQUtkiFHaYmcaoj+f6+Tfcl7atuAz3idwQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.18.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.19.tgz", + "integrity": "sha512-L4vb6pcoB1cEcXUHU6EPnUhUc4+/tcz4OqlXTWPcSQWxegfmcOprhmIleKKwmMNQVc4wrx/+jB7tGkjjDmiupg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.18.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.19.tgz", + "integrity": "sha512-rQng7LXSKdrDlNDb7/v0fujob6X0GAazoK/IPd9C3oShr642ri8uIBkgM37/l8B3Rd5sBQcqUXoDdEy75XC/jg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.18.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.19.tgz", + "integrity": "sha512-z69jhyG20Gq4QL5JKPLqUT+eREuqnDAFItLbza4JCmpvUnIlY73YNjd5djlO7kBiiZnvTnJuAbOjIoZIOa1GjA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.2.tgz", + "integrity": "sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.6.2.tgz", + "integrity": "sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.1.tgz", + "integrity": "sha512-9t7ZA7NGGK8ckelF0PQCfcxIUzs1Md5rrO6U/c+FIQNanea5UZC0wqKXH4vHBccmu4ZJgZ2idtPeW7+Q2npOEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.46.0.tgz", + "integrity": "sha512-a8TLtmPi8xzPkCbp/OGFUo5yhRkHM2Ko9kOWP4znJr0WAhWyThaw3PnwX4vOTWOAMsV2uRt32PPDcEz63esSaA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.4.1.tgz", + "integrity": "sha512-jk3WqquEJRlcyu7997NtR5PibI+y5bi+LS3hPmguVClypenMsCY3CBa3LAQnozRCtCrYWSEtAdiskpamuJRFOQ==", + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.1.1" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.1.1.tgz", + "integrity": "sha512-TpIO93+DIujg3g7SykEAGZMDtbJRrmnYRCNYSjJlvIbGhBjRSNTLVbNeDQBrzy9qDgUbiWdc7KA0uZHZ2tJmiw==", + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.1.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.1.tgz", + "integrity": "sha512-m0G6wlnhm/AX0H12IOWtK8gASEMffnX08RtKkCgTdHb9JpHKGloI7icFfLg9ZmQeavcvR0PKmzxClyuFPSjKWw==", + "license": "MIT" + }, + "node_modules/@formkit/addons": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@formkit/addons/-/addons-1.0.0.tgz", + "integrity": "sha512-MYOjbhF115POxQVNPN6HTuNJSZp5Q6sA7awNx7F8TNgJpqNlaRxIWrv6gzlP7Dnh2lApZiB+JxiXKStoxhFVyg==", + "license": "MIT", + "dependencies": { + "@formkit/auto-animate": "latest", + "@formkit/core": "1.0.0", + "@formkit/inputs": "1.0.0", + "@formkit/utils": "1.0.0" + } + }, + "node_modules/@formkit/auto-animate": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@formkit/auto-animate/-/auto-animate-0.7.0.tgz", + "integrity": "sha512-RczHUr0AhRPssREoNdRjLfk2b/id9/DFnbIq18QM8L7E4zNV3XH+WO480EZ46BQHDEsv76YPJ0JbG2Y2i3GfXw==", + "license": "MIT" + }, + "node_modules/@formkit/core": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@formkit/core/-/core-1.0.0.tgz", + "integrity": "sha512-rDFVwNngLcakltasYzmyYDPAYoCoakK+7h4/5V1bE1FQDabhVvJIc5EDH8U80RAKNLGS9xiQ1JK4FHGcZ3K+oQ==", + "license": "MIT", + "dependencies": { + "@formkit/utils": "1.0.0" + } + }, + "node_modules/@formkit/dev": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@formkit/dev/-/dev-1.0.0.tgz", + "integrity": "sha512-ESX58BklYH1x9312xgyLTJ97wumOfPH98d2F3EL5M6erwHbBssBxBuKqsJkVoBo5Natgtm1VUDd9akA2Qc3dZQ==", + "license": "MIT", + "dependencies": { + "@formkit/core": "1.0.0", + "@formkit/utils": "1.0.0" + } + }, + "node_modules/@formkit/i18n": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@formkit/i18n/-/i18n-1.0.0.tgz", + "integrity": "sha512-Q2jvwy54NufxGplzyuykowTSuqSMZsCRPJqV+taa/2V8J7EJh3YKiyWP69eKKlHtX9rMmjrlFSTbG4a0AJxdRw==", + "license": "MIT", + "dependencies": { + "@formkit/core": "1.0.0", + "@formkit/utils": "1.0.0", + "@formkit/validation": "1.0.0" + } + }, + "node_modules/@formkit/inputs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@formkit/inputs/-/inputs-1.0.0.tgz", + "integrity": "sha512-fP8kBshH3SD19mei6nAqTq6LTHI4/C1eAP4BYMHBuLwKYMq4SrfPKTCrTNefz+DF3yRaUzUqRg5TgBGgt6wtTw==", + "license": "MIT", + "dependencies": { + "@formkit/core": "1.0.0", + "@formkit/utils": "1.0.0" + } + }, + "node_modules/@formkit/nuxt": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@formkit/nuxt/-/nuxt-1.0.0.tgz", + "integrity": "sha512-9HyKRk+aDoo9qsNquZNab4VH59YK+0lVMwiyk82ybC6zt2XjwXXat9ZmRYhS65E9LW0tIPaC/B7VdubYIpxWgw==", + "license": "MIT", + "dependencies": { + "@formkit/core": "1.0.0", + "@formkit/i18n": "1.0.0", + "@formkit/vue": "1.0.0", + "@nuxt/kit": "^3.5.3", + "chokidar": "^3.5.3", + "pathe": "^1.1.1" + } + }, + "node_modules/@formkit/observer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@formkit/observer/-/observer-1.0.0.tgz", + "integrity": "sha512-fKo2TX5MK6L4Nc0YWIcg2Qhp2Rz0pnQg4j541Pwd3tyQ+auHYKD8wnPkq46XHQUAWaq4HJ4WchpPiPSqXpcXAQ==", + "license": "MIT", + "dependencies": { + "@formkit/core": "1.0.0", + "@formkit/utils": "1.0.0" + } + }, + "node_modules/@formkit/pro": { + "version": "0.115.3", + "resolved": "https://registry.npmjs.org/@formkit/pro/-/pro-0.115.3.tgz", + "integrity": "sha512-qFCkgDTXkKzCP8ulkOPMwH4vXtFLd+VSvyJvG2DagxdMxpNux9XCX2mUiIPnyDAl87ShOxektACZ1BSuuwZ5mg==", + "license": "SEE LICENSE IN LICENSE.md", + "dependencies": { + "@formkit/core": "^1.0.0", + "@formkit/inputs": "^1.0.0" + } + }, + "node_modules/@formkit/rules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@formkit/rules/-/rules-1.0.0.tgz", + "integrity": "sha512-q9ENjQFEsku8v9M9jybtDh8TVgz4WFrm0wj6v8w8KXqDxdEU6HZ7+IWuF8/0Rh8SwVZLTYTv+dqtw8Xs5Z/b6g==", + "license": "MIT", + "dependencies": { + "@formkit/core": "1.0.0", + "@formkit/utils": "1.0.0", + "@formkit/validation": "1.0.0" + } + }, + "node_modules/@formkit/themes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@formkit/themes/-/themes-1.0.0.tgz", + "integrity": "sha512-A5fseWPLp2SWnLpl966vzIIpGDIpZ4FSa4HXaA1PwLg69JVHzoeuls8vd90z7a4VALlslnVUwSm26WWr1BxJgA==", + "license": "MIT", + "dependencies": { + "@formkit/core": "1.0.0" + }, + "peerDependencies": { + "tailwindcss": "^3.2.0", + "unocss": "^0.31.0", + "windicss": "^3.0.0" + }, + "peerDependenciesMeta": { + "tailwindcss": { + "optional": true + }, + "unocss": { + "optional": true + }, + "windicss": { + "optional": true + } + } + }, + "node_modules/@formkit/utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@formkit/utils/-/utils-1.0.0.tgz", + "integrity": "sha512-5T8PbHOajP/eJuoEeLgxA0g25nyVUZKfy2V2mW8idoph+9PT0nZUoIP+KA/PJ2mmexqtuykMT0A5knW8MiXqsw==", + "license": "MIT" + }, + "node_modules/@formkit/validation": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@formkit/validation/-/validation-1.0.0.tgz", + "integrity": "sha512-XRFbPw/YlOWqDyrZb6qtETFjohgOrBfhhsVM6B7qm4xyXx2pa53zf+RjDD4+aUXjZTif+qKZA8xuK3Z3shGuZQ==", + "license": "MIT", + "dependencies": { + "@formkit/core": "1.0.0", + "@formkit/observer": "1.0.0", + "@formkit/utils": "1.0.0" + } + }, + "node_modules/@formkit/vue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@formkit/vue/-/vue-1.0.0.tgz", + "integrity": "sha512-TJ4DIPEI7EgxZ/olXpnyHmezm75acllzbCIHgXB4ckd1AxC2pb0T2Z17B4VK/jYz7Xdkc6apAvYosgVbupbnfw==", + "license": "MIT", + "dependencies": { + "@formkit/core": "1.0.0", + "@formkit/dev": "1.0.0", + "@formkit/i18n": "1.0.0", + "@formkit/inputs": "1.0.0", + "@formkit/observer": "1.0.0", + "@formkit/rules": "1.0.0", + "@formkit/themes": "1.0.0", + "@formkit/utils": "1.0.0", + "@formkit/validation": "1.0.0", + "vue": "^3.3.4" + } + }, + "node_modules/@fullcalendar/common": { + "version": "5.11.5", + "resolved": "https://registry.npmjs.org/@fullcalendar/common/-/common-5.11.5.tgz", + "integrity": "sha512-3iAYiUbHXhjSVXnYWz27Od2cslztUPsOwiwKlfGvQxBixv2Kl6a8IPwaijKFYJHXdwYmfPoEgK7rvqAGVoIYwA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@fullcalendar/core": { + "version": "5.11.5", + "resolved": "https://registry.npmjs.org/@fullcalendar/core/-/core-5.11.5.tgz", + "integrity": "sha512-M/WQuq1+uUHxFDEIu2ib/aaPZ70VsRk2ITECo/WCLSLTVWcHPXwEg83reyP3G8JrMM4gRL4vScEHhX0U5aoNSw==", + "license": "MIT", + "dependencies": { + "@fullcalendar/common": "~5.11.5", + "preact": "~10.12.1", + "tslib": "^2.1.0" + } + }, + "node_modules/@fullcalendar/daygrid": { + "version": "5.11.5", + "resolved": "https://registry.npmjs.org/@fullcalendar/daygrid/-/daygrid-5.11.5.tgz", + "integrity": "sha512-hMpq0U3Nucys2jDD+crbkJCr+tVt3fDw04OE3fbpisuzqtrHxIzRmnUOdbWUjJQyToAAkt7UVUQ9E7hYdmvyGA==", + "license": "MIT", + "dependencies": { + "@fullcalendar/common": "~5.11.5", + "tslib": "^2.1.0" + } + }, + "node_modules/@fullcalendar/interaction": { + "version": "5.11.5", + "resolved": "https://registry.npmjs.org/@fullcalendar/interaction/-/interaction-5.11.5.tgz", + "integrity": "sha512-Vg9uw8zKXZc2RP7it88U8R/kxJIQsK4pyv+s+RhlvT5NBZ9KLOh5y2xGCS4A4hyY7qLrzugxnKYlu6NwNqJ/RQ==", + "license": "MIT", + "dependencies": { + "@fullcalendar/common": "~5.11.5", + "tslib": "^2.1.0" + } + }, + "node_modules/@fullcalendar/list": { + "version": "5.11.5", + "resolved": "https://registry.npmjs.org/@fullcalendar/list/-/list-5.11.5.tgz", + "integrity": "sha512-ZYMPT4CVt9tIYkVVNx7CKkB2xc+n9L56+vgXkurptgYgPsacXYkcpF/1Hy/B5LKlg0ROEF9Qfftjow8xjANqaA==", + "license": "MIT", + "dependencies": { + "@fullcalendar/common": "~5.11.5", + "tslib": "^2.1.0" + } + }, + "node_modules/@fullcalendar/luxon2": { + "version": "5.11.5", + "resolved": "https://registry.npmjs.org/@fullcalendar/luxon2/-/luxon2-5.11.5.tgz", + "integrity": "sha512-8SPPdDIWbHEX3pupqtSA9efNKkDVQNilBH88DGIriE5YrUqpLhCdnycK18LQo8y+UuKSP0qow1N3dp6tmfYiyg==", + "license": "MIT", + "dependencies": { + "@fullcalendar/common": "~5.11.5", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "luxon": "^2.0.0" + } + }, + "node_modules/@fullcalendar/premium-common": { + "version": "5.11.5", + "resolved": "https://registry.npmjs.org/@fullcalendar/premium-common/-/premium-common-5.11.5.tgz", + "integrity": "sha512-QMLOm+MKxvsbji4wt7YGqB73IqwHD+y2JD1DZ3t0LCq2Ul6QtQjNxRP7/7DklXPI8atXoJRRXzwqRq+8O9FFHw==", + "license": "SEE LICENSE IN LICENSE.md", + "dependencies": { + "@fullcalendar/common": "~5.11.5", + "tslib": "^2.1.0" + } + }, + "node_modules/@fullcalendar/scrollgrid": { + "version": "5.11.5", + "resolved": "https://registry.npmjs.org/@fullcalendar/scrollgrid/-/scrollgrid-5.11.5.tgz", + "integrity": "sha512-/6TaqW8DR+9KQ+hRKtFfT3S4DO2G9E6Yvlje+X2FkySjX+u4FxjqtUAZpSw1AYzPWvAaTcBJAPe+jMsRRifdUw==", + "license": "SEE LICENSE IN LICENSE.md", + "dependencies": { + "@fullcalendar/common": "~5.11.5", + "@fullcalendar/premium-common": "~5.11.5", + "tslib": "^2.1.0" + } + }, + "node_modules/@fullcalendar/timegrid": { + "version": "5.11.5", + "resolved": "https://registry.npmjs.org/@fullcalendar/timegrid/-/timegrid-5.11.5.tgz", + "integrity": "sha512-OEH5mrTclwxgUbb51N6qr7ifzNkR74ygUEFpiMLyyUjkp7a76N6BsAP5mBQnTOpTTUZBu9tAOmfcnvi7skUayQ==", + "license": "MIT", + "dependencies": { + "@fullcalendar/common": "~5.11.5", + "@fullcalendar/daygrid": "~5.11.5", + "tslib": "^2.1.0" + } + }, + "node_modules/@fullcalendar/vue3": { + "version": "5.11.5", + "resolved": "https://registry.npmjs.org/@fullcalendar/vue3/-/vue3-5.11.5.tgz", + "integrity": "sha512-813zzFAuW9/ysysLhjxFKIThUrT23qjf1EKymyj0tCnrFtfTrpbk1k/txRQ5dwITanHEU3iFxgE/d+PlswL/bg==", + "license": "MIT", + "dependencies": { + "@fullcalendar/core": "~5.11.5", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "vue": "^3.0.11" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz", + "integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==", + "deprecated": "Use @eslint/config-array instead", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "deprecated": "Use @eslint/object-schema instead", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@iconify/types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", + "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@iconify/vue": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@iconify/vue/-/vue-4.1.1.tgz", + "integrity": "sha512-RL85Bm/DAe8y6rT6pux7D2FJSiUEM/TPfyK7GrbAOfTSwrhvwJW+S5yijdGcmtXouA8MtuH9C7l4hiSE4mLMjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@iconify/types": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/cyberalien" + }, + "peerDependencies": { + "vue": ">=3" + } + }, + "node_modules/@ioredis/commands": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.2.0.tgz", + "integrity": "sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@kiwicom/eslint-config": { + "version": "12.7.3", + "resolved": "https://registry.npmjs.org/@kiwicom/eslint-config/-/eslint-config-12.7.3.tgz", + "integrity": "sha512-oa2DendqKI1gpUQwEaw8349XhSSpUtIzwi9vWWZZdXA0SJl9IejBnL+9LyyN1WO3S7/ceo7whk7b7KAqixP4Qw==", + "license": "MIT", + "dependencies": { + "@babel/eslint-parser": "~7.19.0", + "@typescript-eslint/eslint-plugin": "~5.37.0", + "@typescript-eslint/parser": "~5.37.0", + "eslint-config-prettier": "~8.5.0", + "eslint-import-resolver-babel-module": "~5.3.0", + "eslint-plugin-babel": "~5.3.1", + "eslint-plugin-eslint-comments": "~3.2.0", + "eslint-plugin-flowtype": "~8.0.3", + "eslint-plugin-fp": "~2.3.0", + "eslint-plugin-import": "~2.26.0", + "eslint-plugin-jest": "~26.9.0", + "eslint-plugin-jsx-a11y": "~6.6.0", + "eslint-plugin-monorepo": "~0.3.1", + "eslint-plugin-node": "~11.1.0", + "eslint-plugin-react": "~7.31.0", + "eslint-plugin-react-hooks": "~4.6.0", + "prettier": "~2.7.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.3", + "babel-plugin-module-resolver": "^4.0.0", + "eslint": "^8.3.0", + "typescript": "^4.0.5" + } + }, + "node_modules/@kiwicom/eslint-config/node_modules/@babel/eslint-parser": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.19.1.tgz", + "integrity": "sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ==", + "license": "MIT", + "dependencies": { + "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", + "eslint-visitor-keys": "^2.1.0", + "semver": "^6.3.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || >=14.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.11.0", + "eslint": "^7.5.0 || ^8.0.0" + } + }, + "node_modules/@kiwicom/eslint-config/node_modules/prettier": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", + "license": "MIT", + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/@koa/router": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/@koa/router/-/router-9.4.0.tgz", + "integrity": "sha512-dOOXgzqaDoHu5qqMEPLKEgLz5CeIA7q8+1W62mCvFVCOqeC71UoTGJ4u1xUSOpIl2J1x2pqrNULkFteUeZW3/A==", + "deprecated": "**IMPORTANT 10x+ PERFORMANCE UPGRADE**: Please upgrade to v12.0.1+ as we have fixed an issue with debuglog causing 10x slower router benchmark performance, see https://github.com/koajs/router/pull/173", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.1", + "http-errors": "^1.7.3", + "koa-compose": "^4.1.0", + "methods": "^1.1.2", + "path-to-regexp": "^6.1.0" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/@koa/router/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@koa/router/node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@koa/router/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@lezer/common": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.0.3.tgz", + "integrity": "sha512-JH4wAXCgUOcCGNekQPLhVeUtIqjH0yPBs7vvUdSjyQama9618IOKFJwkv2kcqdhF0my8hQEgCTEJU0GIgnahvA==", + "license": "MIT" + }, + "node_modules/@lezer/css": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@lezer/css/-/css-1.1.3.tgz", + "integrity": "sha512-SjSM4pkQnQdJDVc80LYzEaMiNy9txsFbI7HsMgeVF28NdLaAdHNtQ+kB/QqDUzRBV/75NTXjJ/R5IdC8QQGxMg==", + "license": "MIT", + "dependencies": { + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "node_modules/@lezer/highlight": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.1.6.tgz", + "integrity": "sha512-cmSJYa2us+r3SePpRCjN5ymCqCPv+zyXmDl0ciWtVaNiORT/MxM7ZgOMQZADD0o51qOaOg24qc/zBViOIwAjJg==", + "license": "MIT", + "dependencies": { + "@lezer/common": "^1.0.0" + } + }, + "node_modules/@lezer/html": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@lezer/html/-/html-1.3.6.tgz", + "integrity": "sha512-Kk9HJARZTc0bAnMQUqbtuhFVsB4AnteR2BFUWfZV7L/x1H0aAKz6YabrfJ2gk/BEgjh9L3hg5O4y2IDZRBdzuQ==", + "license": "MIT", + "dependencies": { + "@lezer/common": "^1.0.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "node_modules/@lezer/javascript": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/@lezer/javascript/-/javascript-1.4.5.tgz", + "integrity": "sha512-FmBUHz8K1V22DgjTd6SrIG9owbzOYZ1t3rY6vGEmw+e2RVBd7sqjM8uXEVRFmfxKFn1Mx2ABJehHjrN3G2ZpmA==", + "license": "MIT", + "dependencies": { + "@lezer/highlight": "^1.1.3", + "@lezer/lr": "^1.3.0" + } + }, + "node_modules/@lezer/lr": { + "version": "1.3.9", + "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.3.9.tgz", + "integrity": "sha512-XPz6dzuTHlnsbA5M2DZgjflNQ+9Hi5Swhic0RULdp3oOs3rh6bqGZolosVqN/fQIT8uNiepzINJDnS39oweTHQ==", + "license": "MIT", + "dependencies": { + "@lezer/common": "^1.0.0" + } + }, + "node_modules/@mapbox/node-pre-gyp": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", + "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "detect-libc": "^2.0.0", + "https-proxy-agent": "^5.0.0", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.7", + "nopt": "^5.0.0", + "npmlog": "^5.0.1", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.11" + }, + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/node-fetch": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz", + "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@mapbox/node-pre-gyp/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, + "node_modules/@netlify/functions": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@netlify/functions/-/functions-1.6.0.tgz", + "integrity": "sha512-6G92AlcpFrQG72XU8YH8pg94eDnq7+Q0YJhb8x4qNpdGsvuzvrfHWBmqFGp/Yshmv4wex9lpsTRZOocdrA2erQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-promise": "^4.0.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { + "version": "5.1.1-v1", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", + "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", + "license": "MIT", + "dependencies": { + "eslint-scope": "5.1.1" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nuxt/devalue": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@nuxt/devalue/-/devalue-2.0.2.tgz", + "integrity": "sha512-GBzP8zOc7CGWyFQS6dv1lQz8VVpz5C2yRszbXufwG/9zhStTIH50EtD87NmWbTMwXDvZLNg8GIpb1UFdH93JCA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@nuxt/kit": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/@nuxt/kit/-/kit-3.6.5.tgz", + "integrity": "sha512-uBI5I2Zx6sk+vRHU+nBmifwxg/nyXCGZ1g5hUKrUfgv1ZfiKB8JkN5T9iRoduDOaqbwM6XSnEl1ja73iloDcrw==", + "license": "MIT", + "dependencies": { + "@nuxt/schema": "3.6.5", + "c12": "^1.4.2", + "consola": "^3.2.3", + "defu": "^6.1.2", + "globby": "^13.2.2", + "hash-sum": "^2.0.0", + "ignore": "^5.2.4", + "jiti": "^1.19.1", + "knitwork": "^1.0.0", + "mlly": "^1.4.0", + "pathe": "^1.1.1", + "pkg-types": "^1.0.3", + "scule": "^1.0.0", + "semver": "^7.5.3", + "unctx": "^2.3.1", + "unimport": "^3.0.14", + "untyped": "^1.3.2" + }, + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, + "node_modules/@nuxt/kit/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@nuxt/kit/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@nuxt/kit/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" + }, + "node_modules/@nuxt/postcss8": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@nuxt/postcss8/-/postcss8-1.1.3.tgz", + "integrity": "sha512-CdHtErhvQwueNZPBOmlAAKrNCK7aIpZDYhtS7TzXlSgPHHox1g3cSlf+Ke9oB/8t4mNNjdB+prclme2ibuCOEA==", + "dev": true, + "license": "MIT", + "dependencies": { + "autoprefixer": "^10.2.5", + "css-loader": "^5.0.0", + "defu": "^3.2.2", + "postcss": "^8.1.10", + "postcss-import": "^13.0.0", + "postcss-loader": "^4.1.0", + "postcss-url": "^10.1.1", + "semver": "^7.3.4" + } + }, + "node_modules/@nuxt/postcss8/node_modules/defu": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/defu/-/defu-3.2.2.tgz", + "integrity": "sha512-8UWj5lNv7HD+kB0e9w77Z7TdQlbUYDVWqITLHNqFIn6khrNHv5WQo38Dcm1f6HeNyZf0U7UbPf6WeZDSdCzGDQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@nuxt/postcss8/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@nuxt/postcss8/node_modules/postcss-import": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-13.0.0.tgz", + "integrity": "sha512-LPUbm3ytpYopwQQjqgUH4S3EM/Gb9QsaSPP/5vnoi+oKVy3/mIk2sc0Paqw7RL57GpScm9MdIMUypw2znWiBpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/@nuxt/postcss8/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@nuxt/postcss8/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, + "node_modules/@nuxt/schema": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/@nuxt/schema/-/schema-3.6.5.tgz", + "integrity": "sha512-UPUnMB0W5TZ/Pi1fiF71EqIsPlj8LGZqzhSf8wOeh538KHwxbA9r7cuvEUU92eXRksOZaylbea3fJxZWhOITVw==", + "license": "MIT", + "dependencies": { + "defu": "^6.1.2", + "hookable": "^5.5.3", + "pathe": "^1.1.1", + "pkg-types": "^1.0.3", + "postcss-import-resolver": "^2.0.0", + "std-env": "^3.3.3", + "ufo": "^1.1.2", + "unimport": "^3.0.14", + "untyped": "^1.3.2" + }, + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, + "node_modules/@nuxt/telemetry": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@nuxt/telemetry/-/telemetry-2.3.2.tgz", + "integrity": "sha512-S2sF4hLQWS48lWPpRT8xqVUFuwFGTgeKvojp8vL/iP79fWxudua2DWXR15T8C2zpauYwNgEpEWJmy6vxY2ZQeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nuxt/kit": "^3.6.5", + "chalk": "^5.3.0", + "ci-info": "^3.8.0", + "consola": "^3.2.3", + "create-require": "^1.1.1", + "defu": "^6.1.2", + "destr": "^2.0.0", + "dotenv": "^16.3.1", + "fs-extra": "^11.1.1", + "git-url-parse": "^13.1.0", + "is-docker": "^3.0.0", + "jiti": "^1.19.1", + "mri": "^1.2.0", + "nanoid": "^4.0.2", + "node-fetch": "^3.3.1", + "ofetch": "^1.1.1", + "parse-git-config": "^3.0.0", + "rc9": "^2.1.1", + "std-env": "^3.3.3" + }, + "bin": { + "nuxt-telemetry": "bin/nuxt-telemetry.mjs" + } + }, + "node_modules/@nuxt/telemetry/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@nuxt/ui-templates": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@nuxt/ui-templates/-/ui-templates-1.3.1.tgz", + "integrity": "sha512-5gc02Pu1HycOVUWJ8aYsWeeXcSTPe8iX8+KIrhyEtEoOSkY0eMBuo0ssljB8wALuEmepv31DlYe5gpiRwkjESA==", + "dev": true, + "license": "CC-BY-ND-4.0" + }, + "node_modules/@nuxt/vite-builder": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/@nuxt/vite-builder/-/vite-builder-3.6.5.tgz", + "integrity": "sha512-pwSpt257ApCp3XWUs8vrC7X9QHeHUv5PbbIR3+5w0n5f95XPNOQWDJa2fTPX/H6oaRJCPYAsBPqiQhQ7qW/NZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nuxt/kit": "3.6.5", + "@rollup/plugin-replace": "^5.0.2", + "@vitejs/plugin-vue": "^4.2.3", + "@vitejs/plugin-vue-jsx": "^3.0.1", + "autoprefixer": "^10.4.14", + "clear": "^0.1.0", + "consola": "^3.2.3", + "cssnano": "^6.0.1", + "defu": "^6.1.2", + "esbuild": "^0.18.11", + "escape-string-regexp": "^5.0.0", + "estree-walker": "^3.0.3", + "externality": "^1.0.2", + "fs-extra": "^11.1.1", + "get-port-please": "^3.0.1", + "h3": "^1.7.1", + "knitwork": "^1.0.0", + "magic-string": "^0.30.1", + "mlly": "^1.4.0", + "ohash": "^1.1.2", + "pathe": "^1.1.1", + "perfect-debounce": "^1.0.0", + "pkg-types": "^1.0.3", + "postcss": "^8.4.24", + "postcss-import": "^15.1.0", + "postcss-url": "^10.1.3", + "rollup-plugin-visualizer": "^5.9.2", + "std-env": "^3.3.3", + "strip-literal": "^1.0.1", + "ufo": "^1.1.2", + "unplugin": "^1.3.2", + "vite": "~4.3.9", + "vite-node": "^0.33.0", + "vite-plugin-checker": "^0.6.1", + "vue-bundle-renderer": "^1.0.3" + }, + "engines": { + "node": "^14.18.0 || >=16.10.0" + }, + "peerDependencies": { + "vue": "^3.3.4" + } + }, + "node_modules/@nuxt/vite-builder/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@nuxtjs/tailwindcss": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@nuxtjs/tailwindcss/-/tailwindcss-6.8.0.tgz", + "integrity": "sha512-jzuvD1nfA2BPnSbHtKK0aiI51ndMa7lNGL1iDEFuEPsltzilZ9ED7zOP6niGTrImg0n5Yt4GEJpixi6yWwp9Hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nuxt/kit": "^3.5.3", + "@nuxt/postcss8": "^1.1.3", + "autoprefixer": "^10.4.14", + "chokidar": "^3.5.3", + "clear-module": "^4.1.2", + "colorette": "^2.0.20", + "cookie-es": "^1.0.0", + "defu": "^6.1.2", + "destr": "^2.0.0", + "h3": "^1.6.6", + "iron-webcrypto": "^0.7.0", + "micromatch": "^4.0.5", + "pathe": "^1.1.1", + "postcss": "^8.4.24", + "postcss-custom-properties": "^13.2.0", + "postcss-nesting": "^11.3.0", + "radix3": "^1.0.1", + "tailwind-config-viewer": "^1.7.2", + "tailwindcss": "~3.3.2", + "ufo": "^1.1.2", + "uncrypto": "^0.1.3" + } + }, + "node_modules/@parcel/watcher-wasm": { + "version": "2.3.0-alpha.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-wasm/-/watcher-wasm-2.3.0-alpha.1.tgz", + "integrity": "sha512-wo6065l1MQ6SJPPchYw/q8J+pFL40qBXLu4Td2CXeQ/+mUk8NenNqC75P/P1Cyvpam0kfk91iszd+XL+xKDQww==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "napi-wasm": "^1.1.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@pinia-plugin-persistedstate/nuxt": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@pinia-plugin-persistedstate/nuxt/-/nuxt-1.1.1.tgz", + "integrity": "sha512-b6ZNP3Re8COmfZEpj4KQmbp2TuDKrLggDFLZa8FiJF68xE/oCsPXIuXUvAt8E4ht/5sq4Z/grlA+iGXaI2aeKQ==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "dev": true, + "license": "MIT", + "dependencies": { + "@nuxt/kit": "^3.2.3", + "defu": "^6.1.2", + "pinia-plugin-persistedstate": ">=3.1.0" + }, + "peerDependencies": { + "@pinia/nuxt": "^0.4.4" + } + }, + "node_modules/@pinia/nuxt": { + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/@pinia/nuxt/-/nuxt-0.4.11.tgz", + "integrity": "sha512-bhuNFngJpmBCdAqWguezNJ/oJFR7wvKieqiZrmmdmPR07XjsidAw8RLXHMZE9kUm32M9E6T057OBbG/22jERTg==", + "license": "MIT", + "dependencies": { + "@nuxt/kit": "^3.5.0", + "pinia": ">=2.1.0" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + } + }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@prisma/client": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@prisma/client/-/client-5.1.1.tgz", + "integrity": "sha512-fxcCeK5pMQGcgCqCrWsi+I2rpIbk0rAhdrN+ke7f34tIrgPwA68ensrpin+9+fZvuV2OtzHmuipwduSY6HswdA==", + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@prisma/engines-version": "5.1.1-1.6a3747c37ff169c90047725a05a6ef02e32ac97e" + }, + "engines": { + "node": ">=16.13" + }, + "peerDependencies": { + "prisma": "*" + }, + "peerDependenciesMeta": { + "prisma": { + "optional": true + } + } + }, + "node_modules/@prisma/engines": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-5.1.1.tgz", + "integrity": "sha512-NV/4nVNWFZSJCCIA3HIFJbbDKO/NARc9ej0tX5S9k2EVbkrFJC4Xt9b0u4rNZWL4V+F5LAjvta8vzEUw0rw+HA==", + "hasInstallScript": true, + "license": "Apache-2.0" + }, + "node_modules/@prisma/engines-version": { + "version": "5.1.1-1.6a3747c37ff169c90047725a05a6ef02e32ac97e", + "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-5.1.1-1.6a3747c37ff169c90047725a05a6ef02e32ac97e.tgz", + "integrity": "sha512-owZqbY/wucbr65bXJ/ljrHPgQU5xXTSkmcE/JcbqE1kusuAXV/TLN3/exmz21SZ5rJ7WDkyk70J2G/n68iogbQ==", + "license": "Apache-2.0" + }, + "node_modules/@remirror/core-constants": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@remirror/core-constants/-/core-constants-3.0.0.tgz", + "integrity": "sha512-42aWfPrimMfDKDi4YegyS7x+/0tlzaqwPQCULLanv3DMIlu96KTJR0fM5isWX2UViOqlGnX6YFgqWepcX+XMNg==", + "license": "MIT" + }, + "node_modules/@rollup/plugin-alias": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-alias/-/plugin-alias-5.0.0.tgz", + "integrity": "sha512-l9hY5chSCjuFRPsnRm16twWBiSApl2uYFLsepQYwtBuAxNMQ/1dJqADld40P0Jkqm65GRTLy/AC6hnpVebtLsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "slash": "^4.0.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-babel": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", + "integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "@types/babel__core": "^7.1.9", + "rollup": "^1.20.0||^2.0.0" + }, + "peerDependenciesMeta": { + "@types/babel__core": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-babel/node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/plugin-babel/node_modules/@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/plugin-babel/node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/plugin-commonjs": { + "version": "25.0.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.3.tgz", + "integrity": "sha512-uBdtWr/H3BVcgm97MUdq2oJmqBR23ny1hOrWe2PKo9FTbjsGqg32jfasJUKYAI5ouqacjRnj65mBB/S79F+GQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "commondir": "^1.0.1", + "estree-walker": "^2.0.2", + "glob": "^8.0.3", + "is-reference": "1.2.1", + "magic-string": "^0.27.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.68.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-commonjs/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/plugin-commonjs/node_modules/magic-string": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", + "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.13" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@rollup/plugin-inject": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-inject/-/plugin-inject-5.0.3.tgz", + "integrity": "sha512-411QlbL+z2yXpRWFXSmw/teQRMkXcAAC8aYTemc15gwJRpvEVDQwoe+N/HTFD8RFG8+88Bme9DK2V9CVm7hJdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "estree-walker": "^2.0.2", + "magic-string": "^0.27.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-inject/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@rollup/plugin-inject/node_modules/magic-string": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", + "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.13" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@rollup/plugin-json": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-6.0.0.tgz", + "integrity": "sha512-i/4C5Jrdr1XUarRhVu27EEwjt4GObltD7c+MkCIpO2QIbojw8MUs+CCTqOphQi3Qtg1FLmYt+l+6YeoIf51J7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.0.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.1.0.tgz", + "integrity": "sha512-xeZHCgsiZ9pzYVgAo9580eCGqwh/XCEUM9q6iQfGNocjgkufHAqC3exA+45URvhiYV8sBF9RlBai650eNs7AsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "@types/resolve": "1.20.2", + "deepmerge": "^4.2.2", + "is-builtin-module": "^3.2.1", + "is-module": "^1.0.0", + "resolve": "^1.22.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.78.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-replace": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-5.0.2.tgz", + "integrity": "sha512-M9YXNekv/C/iHHK+cvORzfRYfPbq0RDD8r0G+bMiTXjNGKulPnCT9O3Ss46WfhI6ZOCgApOP7xAdmCQJ+U2LAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "magic-string": "^0.27.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-replace/node_modules/magic-string": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", + "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.13" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@rollup/plugin-terser": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-0.4.3.tgz", + "integrity": "sha512-EF0oejTMtkyhrkwCdg0HJ0IpkcaVg1MMSf2olHb2Jp+1mnLM04OhjpJWGma4HobiDTF0WCyViWuvadyE9ch2XA==", + "dev": true, + "license": "MIT", + "dependencies": { + "serialize-javascript": "^6.0.1", + "smob": "^1.0.0", + "terser": "^5.17.4" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.x || ^3.x" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-wasm": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-wasm/-/plugin-wasm-6.1.3.tgz", + "integrity": "sha512-7ItTTeyauE6lwdDtQWceEHZ9+txbi4RRy0mYPFn9BW7rD7YdgBDu7HTHsLtHrRzJc313RM/1m6GKgV3np/aEaw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", + "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT" + }, + "node_modules/@shimyshack/uid": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/@shimyshack/uid/-/uid-0.1.9.tgz", + "integrity": "sha512-J3sZ7mh/FjhsKWg8T8Pb5nxQkqoCiWvm7CQqG5pMhVN3asJbrkAeP/gqJujLZt4CPEpX1pWmkJihIt3/YFsQrg==", + "license": "MIT", + "dependencies": { + "vue": "^3.2.25" + } + }, + "node_modules/@surma/rollup-plugin-off-main-thread": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz", + "integrity": "sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "ejs": "^3.1.6", + "json5": "^2.2.0", + "magic-string": "^0.25.0", + "string.prototype.matchall": "^4.0.6" + } + }, + "node_modules/@surma/rollup-plugin-off-main-thread/node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, + "node_modules/@sweetalert2/theme-dark": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/@sweetalert2/theme-dark/-/theme-dark-5.0.15.tgz", + "integrity": "sha512-g1QCwQVOkiAz5hIEBOIvvu0580lubu4KuQlod+48QetYzGIEXNlHEH36QihCDnGVgE6vx48iO48w9q0WrZWyHQ==", + "deprecated": "Use Swal.fire({ theme: 'dark' }) instead", + "license": "MIT" + }, + "node_modules/@tiptap/core": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@tiptap/core/-/core-2.12.0.tgz", + "integrity": "sha512-3qX8oGVKFFZzQ0vit+ZolR6AJIATBzmEmjAA0llFhWk4vf3v64p1YcXcJsOBsr5scizJu5L6RYWEFatFwqckRg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/pm": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-blockquote": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-blockquote/-/extension-blockquote-2.12.0.tgz", + "integrity": "sha512-XUC2A77YAPMJS2SqZ2S62IGcUH8gZ7cdhoWlYQb1pR4ZzXFByeKDJPxfYeAePSiuI01YGrlzgY2c6Ncx/DtO0A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-bold": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-bold/-/extension-bold-2.12.0.tgz", + "integrity": "sha512-lAUtoLDLRc5ofD2I9MFY6MQ7d1qBLLqS1rvpwaPjOaoQb/GPVnaHj9qXYG0SY9K3erMtto48bMFpAcscjZHzZQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-bubble-menu": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-bubble-menu/-/extension-bubble-menu-2.12.0.tgz", + "integrity": "sha512-DYijoE0igV0Oi+ZppFsp2UrQsM/4HZtmmpD78BJM9zfCbd1YvAUIxmzmXr8uqU18OHd1uQy+/zvuNoUNYyw67g==", + "license": "MIT", + "dependencies": { + "tippy.js": "^6.3.7" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0", + "@tiptap/pm": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-bullet-list": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-bullet-list/-/extension-bullet-list-2.12.0.tgz", + "integrity": "sha512-YTCjztB8MaIpwyxFYr81H4+LdKCq1VlaSXQyrPdB44mVdhhRqc46BYQb8/B//XE3UIu3X2QWFjwrqRlUq6vUiw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-code": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-code/-/extension-code-2.12.0.tgz", + "integrity": "sha512-R7RaS+hJeHFim7alImQ9L9CSWSMjWXvz0Ote568x9ea5gdBGUYW8PcH+5a91lh8e1XGYWBM12a8oJZRyxg/tQA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-code-block": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-code-block/-/extension-code-block-2.12.0.tgz", + "integrity": "sha512-1D7cYAjgxEFHdfC/35Ooi4GqWKB5sszbW8iI7N16XILNln26xb0d5KflXqYrwr9CN/ZnZoCl2o6YsP7xEObcZA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0", + "@tiptap/pm": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-document": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-document/-/extension-document-2.12.0.tgz", + "integrity": "sha512-sA1Q+mxDIv0Y3qQTBkYGwknNbDcGFiJ/fyAFholXpqbrcRx3GavwR/o0chBdsJZlFht0x7AWGwUYWvIo7wYilA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-dropcursor": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-dropcursor/-/extension-dropcursor-2.12.0.tgz", + "integrity": "sha512-zcZSOXFj+7LVnmdPWTfKr5AoxYIzFPFlLJe35AdTQC5IhkljLn1Exct8I30ZREojX/00hKYsO7JJmePS6TEVlQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0", + "@tiptap/pm": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-floating-menu": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-floating-menu/-/extension-floating-menu-2.12.0.tgz", + "integrity": "sha512-BYpyZx/56KCDksWuJJbhki/uNgt9sACuSSZFH5AN1yS1ISD+EzIxqf6Pzzv8QCoNJ+KcRNVaZsOlOFaJGoyzag==", + "license": "MIT", + "dependencies": { + "tippy.js": "^6.3.7" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0", + "@tiptap/pm": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-gapcursor": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-gapcursor/-/extension-gapcursor-2.12.0.tgz", + "integrity": "sha512-k8ji5v9YKn7bNjo8UtI9hEfXfl4tKUp1hpJOEmUxGJQa3LIwrwSbReupUTnHszGQelzxikS/l1xO9P0TIGwRoA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0", + "@tiptap/pm": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-hard-break": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-hard-break/-/extension-hard-break-2.12.0.tgz", + "integrity": "sha512-08MNS2PK5DzdnAfqXn4krmJ/xebKmWpRpYqqN5EM8AvetYKlAJyTVSpo0ZUeGbZ3EZiPm9djgSnrLqpFUDjRCg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-heading": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-heading/-/extension-heading-2.12.0.tgz", + "integrity": "sha512-9DfES4Wd5TX1foI70N9sAL+35NN1UHrtzDYN2+dTHupnmKir9RaMXyZcbkUb4aDVzYrGxIqxJzHBVkquKIlTrw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-history": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-history/-/extension-history-2.12.0.tgz", + "integrity": "sha512-+B9CAf2BFURC6mQiM1OQtahVTzdEOEgT/UUNlRZkeeBc0K5of3dr6UdBqaoaMAefja3jx5PqiQ7mhUBAjSt6AA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0", + "@tiptap/pm": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-horizontal-rule": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-2.12.0.tgz", + "integrity": "sha512-Vi2+6RIehDSpoJn/7PDuOieUj7W7WrEb4wBxK9TG8PDscihR0mehhhzm/K2xhH4TN48iPJGRsjDFrFjTbXmcnw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0", + "@tiptap/pm": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-italic": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-italic/-/extension-italic-2.12.0.tgz", + "integrity": "sha512-JKcXK3LmEsmxNzEq5e06rPUGMRLUxmJ2mYtBY4NlJ6yLM9XMDljtgeTnWT0ySLYmfINSFTkX4S7WIRbpl9l4pw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-list-item": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-list-item/-/extension-list-item-2.12.0.tgz", + "integrity": "sha512-4YwZooC8HP+gPxs6YrkB1ayggyYbgVvJx/rWBT6lKSW2MVVg8QXi1zAcSI3MhIhHmqDysXXFPL8JURlbeGjaFA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-ordered-list": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-ordered-list/-/extension-ordered-list-2.12.0.tgz", + "integrity": "sha512-1ys0e/oqk09oXxrB1WzAx5EntK/QreObG/V1yhgihGm429fxHMsxzIYN6dKAYxx0YOPQG7qEZRrrPuWU70Ms7g==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-paragraph": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-paragraph/-/extension-paragraph-2.12.0.tgz", + "integrity": "sha512-QNK5cgewCunWFxpLlbvvoO1rrLgEtNKxiY79fctP9toV+e59R+1i1Q9lXC1O5mOfDgVxCb6uFDMsqmKhFjpPog==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-strike": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-strike/-/extension-strike-2.12.0.tgz", + "integrity": "sha512-nBaa5YtBsLJPZFfSs36sBz4Zgi/c8b3MsmS/Az8uXaHb0R9yPewOVUMDIQbxMct8SXUlIo9VtKlOL+mVJ3Nkpw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-text": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-text/-/extension-text-2.12.0.tgz", + "integrity": "sha512-0ytN9V1tZYTXdiYDQg4FB2SQ56JAJC9r/65snefb9ztl+gZzDrIvih7CflHs1ic9PgyjexfMLeH+VzuMccNyZw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-text-style": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-text-style/-/extension-text-style-2.12.0.tgz", + "integrity": "sha512-Pxwt23ZlvbQUahV0PvHy8Ej6IAuKR1FvHobUvwP3T8AiY7hob66fWRe7tQbESzSAzm5Vv2xkvyHeU8vekMTezA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-underline": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@tiptap/extension-underline/-/extension-underline-2.12.0.tgz", + "integrity": "sha512-u95lrUCesw1SN3BXY4xrgfSuxtoCYmJ9uaU7IVVOu0zVsDFtLlOa82kd63KVF+URL0kMdO+FBmvdS6d8Era70Q==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/pm": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@tiptap/pm/-/pm-2.12.0.tgz", + "integrity": "sha512-TNzVwpeNzFfHAcYTOKqX9iU4fRxliyoZrCnERR+RRzeg7gWrXrCLubQt1WEx0sojMAfznshSL3M5HGsYjEbYwA==", + "license": "MIT", + "dependencies": { + "prosemirror-changeset": "^2.3.0", + "prosemirror-collab": "^1.3.1", + "prosemirror-commands": "^1.6.2", + "prosemirror-dropcursor": "^1.8.1", + "prosemirror-gapcursor": "^1.3.2", + "prosemirror-history": "^1.4.1", + "prosemirror-inputrules": "^1.4.0", + "prosemirror-keymap": "^1.2.2", + "prosemirror-markdown": "^1.13.1", + "prosemirror-menu": "^1.2.4", + "prosemirror-model": "^1.23.0", + "prosemirror-schema-basic": "^1.2.3", + "prosemirror-schema-list": "^1.4.1", + "prosemirror-state": "^1.4.3", + "prosemirror-tables": "^1.6.4", + "prosemirror-trailing-node": "^3.0.0", + "prosemirror-transform": "^1.10.2", + "prosemirror-view": "^1.37.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + } + }, + "node_modules/@tiptap/starter-kit": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@tiptap/starter-kit/-/starter-kit-2.12.0.tgz", + "integrity": "sha512-wlcEEtexd6u0gbR311/OFZnbtRWU97DUsY6/GsSQzN4rqZ7Ra6YbfHEN5Lutu+I/anomK8vKy8k9NyvfY5Hllg==", + "license": "MIT", + "dependencies": { + "@tiptap/core": "^2.12.0", + "@tiptap/extension-blockquote": "^2.12.0", + "@tiptap/extension-bold": "^2.12.0", + "@tiptap/extension-bullet-list": "^2.12.0", + "@tiptap/extension-code": "^2.12.0", + "@tiptap/extension-code-block": "^2.12.0", + "@tiptap/extension-document": "^2.12.0", + "@tiptap/extension-dropcursor": "^2.12.0", + "@tiptap/extension-gapcursor": "^2.12.0", + "@tiptap/extension-hard-break": "^2.12.0", + "@tiptap/extension-heading": "^2.12.0", + "@tiptap/extension-history": "^2.12.0", + "@tiptap/extension-horizontal-rule": "^2.12.0", + "@tiptap/extension-italic": "^2.12.0", + "@tiptap/extension-list-item": "^2.12.0", + "@tiptap/extension-ordered-list": "^2.12.0", + "@tiptap/extension-paragraph": "^2.12.0", + "@tiptap/extension-strike": "^2.12.0", + "@tiptap/extension-text": "^2.12.0", + "@tiptap/extension-text-style": "^2.12.0", + "@tiptap/pm": "^2.12.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + } + }, + "node_modules/@tiptap/vue-3": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@tiptap/vue-3/-/vue-3-2.12.0.tgz", + "integrity": "sha512-NXvxIwBSYDhEiL6MwRnoUc5+KizAnokp4/BA3n4S5+hbmpuJCygebYdq8Tap0KU9caAh53qqiMlSonuLHny5vA==", + "license": "MIT", + "dependencies": { + "@tiptap/extension-bubble-menu": "^2.12.0", + "@tiptap/extension-floating-menu": "^2.12.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0", + "@tiptap/pm": "^2.7.0", + "vue": "^3.0.0" + } + }, + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "license": "ISC", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@types/estree": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", + "license": "MIT" + }, + "node_modules/@types/http-proxy": { + "version": "1.17.11", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.11.tgz", + "integrity": "sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "license": "MIT" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "license": "MIT" + }, + "node_modules/@types/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==", + "license": "MIT" + }, + "node_modules/@types/lodash": { + "version": "4.14.196", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.196.tgz", + "integrity": "sha512-22y3o88f4a94mKljsZcanlNWPzO0uBsBdzLAngf2tp533LzZcQzb6+eZPJ+vCTt+bqF2XnvT9gejTLsAcJAJyQ==", + "license": "MIT" + }, + "node_modules/@types/markdown-it": { + "version": "14.1.2", + "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.2.tgz", + "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==", + "license": "MIT", + "dependencies": { + "@types/linkify-it": "^5", + "@types/mdurl": "^2" + } + }, + "node_modules/@types/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "20.4.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.8.tgz", + "integrity": "sha512-0mHckf6D2DiIAzh8fM8f3HQCvMKDpK94YQ0DSVkfWTG9BZleYIWudw9cJxX8oCk9bM+vAkDyujDV6dmKHbvQpg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/raf": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/@types/raf/-/raf-3.4.3.tgz", + "integrity": "sha512-c4YAvMedbPZ5tEyxzQdMoOhhJ4RD3rngZIdwC2/qDN3d7JpEhB6fiBRKVY1lg5B7Wk+uPBjn5f39j1/2MY1oOw==", + "license": "MIT", + "optional": true + }, + "node_modules/@types/resize-observer-browser": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/@types/resize-observer-browser/-/resize-observer-browser-0.1.7.tgz", + "integrity": "sha512-G9eN0Sn0ii9PWQ3Vl72jDPgeJwRWhv2Qk/nQkJuWmRmOB4HX3/BhD5SE1dZs/hzPZL/WKnvF0RHdTSG54QJFyg==", + "license": "MIT" + }, + "node_modules/@types/resolve": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", + "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@types/web-bluetooth": { + "version": "0.0.16", + "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz", + "integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==", + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.37.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.37.0.tgz", + "integrity": "sha512-Fde6W0IafXktz1UlnhGkrrmnnGpAo1kyX7dnyHHVrmwJOn72Oqm3eYtddrpOwwel2W8PAK9F3pIL5S+lfoM0og==", + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "5.37.0", + "@typescript-eslint/type-utils": "5.37.0", + "@typescript-eslint/utils": "5.37.0", + "debug": "^4.3.4", + "functional-red-black-tree": "^1.0.1", + "ignore": "^5.2.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.37.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.37.0.tgz", + "integrity": "sha512-01VzI/ipYKuaG5PkE5+qyJ6m02fVALmMPY3Qq5BHflDx3y4VobbLdHQkSMg9VPRS4KdNt4oYTMaomFoHonBGAw==", + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/scope-manager": "5.37.0", + "@typescript-eslint/types": "5.37.0", + "@typescript-eslint/typescript-estree": "5.37.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.37.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.37.0.tgz", + "integrity": "sha512-F67MqrmSXGd/eZnujjtkPgBQzgespu/iCZ+54Ok9X5tALb9L2v3G+QBSoWkXG0p3lcTJsL+iXz5eLUEdSiJU9Q==", + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "5.37.0", + "@typescript-eslint/visitor-keys": "5.37.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.37.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.37.0.tgz", + "integrity": "sha512-BSx/O0Z0SXOF5tY0bNTBcDEKz2Ec20GVYvq/H/XNKiUorUFilH7NPbFUuiiyzWaSdN3PA8JV0OvYx0gH/5aFAQ==", + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "5.37.0", + "@typescript-eslint/utils": "5.37.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.37.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.37.0.tgz", + "integrity": "sha512-3frIJiTa5+tCb2iqR/bf7XwU20lnU05r/sgPJnRpwvfZaqCJBrl8Q/mw9vr3NrNdB/XtVyMA0eppRMMBqdJ1bA==", + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.37.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.37.0.tgz", + "integrity": "sha512-JkFoFIt/cx59iqEDSgIGnQpCTRv96MQnXCYvJi7QhBC24uyuzbD8wVbajMB1b9x4I0octYFJ3OwjAwNqk1AjDA==", + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "5.37.0", + "@typescript-eslint/visitor-keys": "5.37.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.37.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.37.0.tgz", + "integrity": "sha512-jUEJoQrWbZhmikbcWSMDuUSxEE7ID2W/QCV/uz10WtQqfOuKZUqFGjqLJ+qhDd17rjgp+QJPqTdPIBWwoob2NQ==", + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.37.0", + "@typescript-eslint/types": "5.37.0", + "@typescript-eslint/typescript-estree": "5.37.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.37.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.37.0.tgz", + "integrity": "sha512-Hp7rT4cENBPIzMwrlehLW/28EVCOcE9U1Z1BQTc8EA8v5qpr7GRGuG+U58V5tTY48zvUOA3KHvw3rA8tY9fbdA==", + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "5.37.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.2.tgz", + "integrity": "sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==", + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@unhead/dom": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@unhead/dom/-/dom-1.2.2.tgz", + "integrity": "sha512-ohganmg4i1Dd4wwQ2A9oLWEkJNpJRoERJNmFgzmScw9Vi3zMqoS4gPIofT20zUR5rhyyAsFojuDPojJ5vKcmqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@unhead/schema": "1.2.2", + "@unhead/shared": "1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/harlan-zw" + } + }, + "node_modules/@unhead/schema": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@unhead/schema/-/schema-1.2.2.tgz", + "integrity": "sha512-cGtNvadL76eGl7QxGjWHZxFqLv9a2VrmRpeEb1d7sm0cvnN0bWngdXDTdUyXzn7RVv/Um+/yae6eiT6A+pyQOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "hookable": "^5.5.3", + "zhead": "^2.0.10" + }, + "funding": { + "url": "https://github.com/sponsors/harlan-zw" + } + }, + "node_modules/@unhead/shared": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@unhead/shared/-/shared-1.2.2.tgz", + "integrity": "sha512-bWRjRyVzFsunih9GbHctvS8Aenj6KBe5ycql1JE4LawBL/NRYvCYUCPpdK5poVOqjYr0yDAf9m4JGaM2HwpVLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@unhead/schema": "1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/harlan-zw" + } + }, + "node_modules/@unhead/ssr": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@unhead/ssr/-/ssr-1.2.2.tgz", + "integrity": "sha512-mpWSNNbrQFJZolAfdVInPPiSGUva08bK9UbNV1zgDScUz+p+FnRg4cj77X+PpVeJ0+KPgjXfOsI8VQKYt+buYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@unhead/schema": "1.2.2", + "@unhead/shared": "1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/harlan-zw" + } + }, + "node_modules/@unhead/vue": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@unhead/vue/-/vue-1.2.2.tgz", + "integrity": "sha512-AxOmY5JPn4fS34ovaivPnqg2my+InIkZDNSxCKfRkmbBtstFre/Fyf0d92Qfx0u8PJiSRPOjthEHx5vKDgTEJQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@unhead/schema": "1.2.2", + "@unhead/shared": "1.2.2", + "hookable": "^5.5.3", + "unhead": "1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/harlan-zw" + }, + "peerDependencies": { + "vue": ">=2.7 || >=3" + } + }, + "node_modules/@vercel/nft": { + "version": "0.22.6", + "resolved": "https://registry.npmjs.org/@vercel/nft/-/nft-0.22.6.tgz", + "integrity": "sha512-gTsFnnT4mGxodr4AUlW3/urY+8JKKB452LwF3m477RFUJTAaDmcz2JqFuInzvdybYIeyIv1sSONEJxsxnbQ5JQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@mapbox/node-pre-gyp": "^1.0.5", + "@rollup/pluginutils": "^4.0.0", + "acorn": "^8.6.0", + "async-sema": "^3.1.1", + "bindings": "^1.4.0", + "estree-walker": "2.0.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.2", + "node-gyp-build": "^4.2.2", + "resolve-from": "^5.0.0" + }, + "bin": { + "nft": "out/cli.js" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@vercel/nft/node_modules/@rollup/pluginutils": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", + "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "estree-walker": "^2.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/@vercel/nft/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vercel/nft/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@vite-pwa/nuxt": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@vite-pwa/nuxt/-/nuxt-0.1.0.tgz", + "integrity": "sha512-w6wm/0Y9yIqo6UTj9LeQUMR+xuRTf2sRdUTffu03SbRyWBzF7SnQcTqTRkXQy+NK+XafZuIDDLC12VkhValg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nuxt/kit": "^3.5.3", + "vite-plugin-pwa": ">=0.16.3 <1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@nuxt/kit": "^3.5.3", + "vite-plugin-pwa": ">=0.16.3 <1" + } + }, + "node_modules/@vitejs/plugin-vue": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.2.3.tgz", + "integrity": "sha512-R6JDUfiZbJA9cMiguQ7jxALsgiprjBeHL5ikpXfJCH62pPHtI+JdJ5xWj6Ev73yXSlYl86+blXn1kZHQ7uElxw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@vitejs/plugin-vue-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue-jsx/-/plugin-vue-jsx-3.0.1.tgz", + "integrity": "sha512-+Jb7ggL48FSPS1uhPnJbJwWa9Sr90vQ+d0InW+AhBM22n+cfuYqJZDckBc+W3QSHe1WDvewMZfa4wZOtk5pRgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.20.7", + "@babel/plugin-transform-typescript": "^7.20.7", + "@vue/babel-plugin-jsx": "^1.1.1" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.0.0", + "vue": "^3.0.0" + } + }, + "node_modules/@vue-macros/common": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@vue-macros/common/-/common-1.7.0.tgz", + "integrity": "sha512-177tzAjvEiFxAsOM+zd8EWCfAdneePoZroGg6R5QhMcycC28r+2k4wyzrjupjkDBgx7KAZkJ/KzkSfuEi31U0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.22.5", + "@rollup/pluginutils": "^5.0.2", + "@vue/compiler-sfc": "^3.3.4", + "ast-kit": "^0.9.5", + "local-pkg": "^0.4.3", + "magic-string-ast": "^0.3.0" + }, + "engines": { + "node": ">=16.14.0" + }, + "peerDependencies": { + "vue": "^2.7.0 || ^3.2.25" + }, + "peerDependenciesMeta": { + "vue": { + "optional": true + } + } + }, + "node_modules/@vue/babel-helper-vue-transform-on": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.1.5.tgz", + "integrity": "sha512-SgUymFpMoAyWeYWLAY+MkCK3QEROsiUnfaw5zxOVD/M64KQs8D/4oK6Q5omVA2hnvEOE0SCkH2TZxs/jnnUj7w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vue/babel-plugin-jsx": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.1.5.tgz", + "integrity": "sha512-nKs1/Bg9U1n3qSWnsHhCVQtAzI6aQXqua8j/bZrau8ywT1ilXQbK4FwEJGmU8fV7tcpuFvWmmN7TMmV1OBma1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.22.5", + "@babel/plugin-syntax-jsx": "^7.22.5", + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.5", + "@babel/types": "^7.22.5", + "@vue/babel-helper-vue-transform-on": "^1.1.5", + "camelcase": "^6.3.0", + "html-tags": "^3.3.1", + "svg-tags": "^1.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.4.tgz", + "integrity": "sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.21.3", + "@vue/shared": "3.3.4", + "estree-walker": "^2.0.2", + "source-map-js": "^1.0.2" + } + }, + "node_modules/@vue/compiler-core/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT" + }, + "node_modules/@vue/compiler-dom": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz", + "integrity": "sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==", + "license": "MIT", + "dependencies": { + "@vue/compiler-core": "3.3.4", + "@vue/shared": "3.3.4" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz", + "integrity": "sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.15", + "@vue/compiler-core": "3.3.4", + "@vue/compiler-dom": "3.3.4", + "@vue/compiler-ssr": "3.3.4", + "@vue/reactivity-transform": "3.3.4", + "@vue/shared": "3.3.4", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.0", + "postcss": "^8.1.10", + "source-map-js": "^1.0.2" + } + }, + "node_modules/@vue/compiler-sfc/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT" + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz", + "integrity": "sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.3.4", + "@vue/shared": "3.3.4" + } + }, + "node_modules/@vue/devtools-api": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.0.tgz", + "integrity": "sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==", + "license": "MIT" + }, + "node_modules/@vue/reactivity": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.4.tgz", + "integrity": "sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==", + "license": "MIT", + "dependencies": { + "@vue/shared": "3.3.4" + } + }, + "node_modules/@vue/reactivity-transform": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.4.tgz", + "integrity": "sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.15", + "@vue/compiler-core": "3.3.4", + "@vue/shared": "3.3.4", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.0" + } + }, + "node_modules/@vue/reactivity-transform/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT" + }, + "node_modules/@vue/runtime-core": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.4.tgz", + "integrity": "sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==", + "license": "MIT", + "dependencies": { + "@vue/reactivity": "3.3.4", + "@vue/shared": "3.3.4" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz", + "integrity": "sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==", + "license": "MIT", + "dependencies": { + "@vue/runtime-core": "3.3.4", + "@vue/shared": "3.3.4", + "csstype": "^3.1.1" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.4.tgz", + "integrity": "sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==", + "license": "MIT", + "dependencies": { + "@vue/compiler-ssr": "3.3.4", + "@vue/shared": "3.3.4" + }, + "peerDependencies": { + "vue": "3.3.4" + } + }, + "node_modules/@vue/shared": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.4.tgz", + "integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==", + "license": "MIT" + }, + "node_modules/@vueup/vue-quill": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@vueup/vue-quill/-/vue-quill-1.2.0.tgz", + "integrity": "sha512-kd5QPSHMDpycklojPXno2Kw2JSiKMYduKYQckTm1RJoVDA557MnyUXgcuuDpry4HY/Rny9nGNcK+m3AHk94wag==", + "license": "MIT", + "dependencies": { + "quill": "^1.3.7", + "quill-delta": "^4.2.2" + }, + "peerDependencies": { + "vue": "^3.2.41" + } + }, + "node_modules/@vueuse/core": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-9.13.0.tgz", + "integrity": "sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==", + "license": "MIT", + "dependencies": { + "@types/web-bluetooth": "^0.0.16", + "@vueuse/metadata": "9.13.0", + "@vueuse/shared": "9.13.0", + "vue-demi": "*" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/metadata": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-9.13.0.tgz", + "integrity": "sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/nuxt": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/@vueuse/nuxt/-/nuxt-9.13.0.tgz", + "integrity": "sha512-JunH/w6nFIwCyaZ0s+pfrYFMfBzGfhkwmFPz7ogHFmb71Ty/5HINrYOAOZCXpN44X6QH6FiJq/wuLLdvYzqFUw==", + "license": "MIT", + "dependencies": { + "@nuxt/kit": "^3.2.0", + "@vueuse/core": "9.13.0", + "@vueuse/metadata": "9.13.0", + "local-pkg": "^0.4.3", + "vue-demi": "*" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "nuxt": "^3.0.0" + } + }, + "node_modules/@vueuse/shared": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-9.13.0.tgz", + "integrity": "sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==", + "license": "MIT", + "dependencies": { + "vue-demi": "*" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true, + "license": "ISC" + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true, + "license": "MIT" + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/apexcharts": { + "version": "3.41.1", + "resolved": "https://registry.npmjs.org/apexcharts/-/apexcharts-3.41.1.tgz", + "integrity": "sha512-kta8fhXrfZYqW7K9kF7FqZ6imQaC6moyRgcUZjwIky/oeHVVISSN/2rjUIvZXnwxWHiSdDHMqLy+TqJhB4DXFA==", + "license": "MIT", + "dependencies": { + "svg.draggable.js": "^2.2.2", + "svg.easing.js": "^2.0.0", + "svg.filter.js": "^2.0.2", + "svg.pathmorphing.js": "^0.1.3", + "svg.resize.js": "^1.4.3", + "svg.select.js": "^3.0.1" + } + }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/arch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/archiver": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.1.tgz", + "integrity": "sha512-8KyabkmbYrH+9ibcTScQ1xCJC/CGcugdVIwB+53f5sZziXgwUh3iXlAlANMxcZyDEfTHMe6+Z5FofV8nopXP7w==", + "dev": true, + "license": "MIT", + "dependencies": { + "archiver-utils": "^2.1.0", + "async": "^3.2.3", + "buffer-crc32": "^0.2.1", + "readable-stream": "^3.6.0", + "readdir-glob": "^1.0.0", + "tar-stream": "^2.2.0", + "zip-stream": "^4.1.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/archiver-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", + "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", + "dev": true, + "license": "MIT", + "dependencies": { + "glob": "^7.1.4", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^2.0.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/archiver-utils/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/archiver-utils/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/archiver-utils/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/archiver-utils/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/archiver-utils/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/are-we-there-yet": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "deprecated": "This package is no longer supported.", + "dev": true, + "license": "ISC", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true, + "license": "MIT" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/aria-query": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", + "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.10.2", + "@babel/runtime-corejs3": "^7.10.2" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", + "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", + "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", + "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz", + "integrity": "sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.1.3" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz", + "integrity": "sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==", + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ast-kit": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/ast-kit/-/ast-kit-0.9.5.tgz", + "integrity": "sha512-kbL7ERlqjXubdDd+szuwdlQ1xUxEz9mCz1+m07ftNVStgwRb2RWw+U6oKo08PAvOishMxiqz1mlJyLl8yQx2Qg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.22.7", + "@rollup/pluginutils": "^5.0.2", + "pathe": "^1.1.1" + }, + "engines": { + "node": ">=16.14.0" + } + }, + "node_modules/ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==", + "license": "ISC" + }, + "node_modules/ast-walker-scope": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/ast-walker-scope/-/ast-walker-scope-0.4.2.tgz", + "integrity": "sha512-vdCU9JvpsrxWxvJiRHAr8If8cu07LWJXDPhkqLiP4ErbN1fu/mK623QGmU4Qbn2Nq4Mx0vR/Q017B6+HcHg1aQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.22.4", + "@babel/types": "^7.22.4" + }, + "engines": { + "node": ">=16.14.0" + } + }, + "node_modules/async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/async-sema": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/async-sema/-/async-sema-3.1.1.tgz", + "integrity": "sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==", + "dev": true, + "license": "MIT" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "license": "(MIT OR Apache-2.0)", + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/attr-accept": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.2.tgz", + "integrity": "sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.14", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz", + "integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.5", + "caniuse-lite": "^1.0.30001464", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axe-core": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.2.tgz", + "integrity": "sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g==", + "license": "MPL-2.0", + "engines": { + "node": ">=4" + } + }, + "node_modules/axobject-query": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", + "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", + "license": "Apache-2.0" + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz", + "integrity": "sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.4.2", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz", + "integrity": "sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.4.2", + "core-js-compat": "^3.31.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz", + "integrity": "sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.4.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/base64-arraybuffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", + "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/basic-auth/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/bidi-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/bidi-js/-/bidi-js-1.0.3.tgz", + "integrity": "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==", + "license": "MIT", + "dependencies": { + "require-from-string": "^2.0.2" + } + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "license": "ISC" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.0.tgz", + "integrity": "sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001718", + "electron-to-chromium": "^1.5.160", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/btoa": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz", + "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==", + "license": "(MIT OR Apache-2.0)", + "bin": { + "btoa": "bin/btoa.js" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "license": "BSD-3-Clause" + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dev": true, + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/c12": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/c12/-/c12-1.4.2.tgz", + "integrity": "sha512-3IP/MuamSVRVw8W8+CHWAz9gKN4gd+voF2zm/Ln6D25C2RhytEZ1ABbC8MjKr4BR9rhoV1JQ7jJA158LDiTkLg==", + "license": "MIT", + "dependencies": { + "chokidar": "^3.5.3", + "defu": "^6.1.2", + "dotenv": "^16.3.1", + "giget": "^1.1.2", + "jiti": "^1.18.2", + "mlly": "^1.4.0", + "ohash": "^1.1.2", + "pathe": "^1.1.1", + "perfect-debounce": "^1.0.0", + "pkg-types": "^1.0.3", + "rc9": "^2.1.1" + } + }, + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cache-content-type": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-content-type/-/cache-content-type-1.0.1.tgz", + "integrity": "sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-types": "^2.1.18", + "ylru": "^1.2.0" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001720", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001720.tgz", + "integrity": "sha512-Ec/2yV2nNPwb4DnTANEV99ZWwm3ZWfdlfkQbWSDDt+PsXEVYwlhPH8tdMaPunYTKKmz7AnHi2oNEi1GcmKCD8g==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/canvg": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/canvg/-/canvg-3.0.10.tgz", + "integrity": "sha512-qwR2FRNO9NlzTeKIPIKpnTY6fqwuYSequ8Ru8c0YkYU7U0oW+hLUvWadLvAu1Rl72OMNiFhoLu4f8eUjQ7l/+Q==", + "license": "MIT", + "optional": true, + "dependencies": { + "@babel/runtime": "^7.12.5", + "@types/raf": "^3.4.0", + "core-js": "^3.8.3", + "raf": "^3.4.1", + "regenerator-runtime": "^0.13.7", + "rgbcolor": "^1.0.1", + "stackblur-canvas": "^2.0.0", + "svg-pathdata": "^6.0.3" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/canvg/node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "license": "MIT", + "optional": true + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chart.js": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-3.9.1.tgz", + "integrity": "sha512-Ro2JbLmvg83gXF5F4sniaQ+lTbSv18E+TIf2cOeiH1Iqd2PGFOtem+DUufMZsCJwFE7ywPOpfXFBwRTGq7dh6w==", + "license": "MIT" + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/ci-info": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/citty": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/citty/-/citty-0.1.2.tgz", + "integrity": "sha512-Me9nf0/BEmMOnuQzMOVXgpzkMUNbd0Am8lTl/13p0aRGAoLGk5T5sdet/42CrIGmWdG67BgHUhcKK1my1ujUEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "consola": "^3.2.3" + } + }, + "node_modules/clear": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/clear/-/clear-0.1.0.tgz", + "integrity": "sha512-qMjRnoL+JDPJHeLePZJuao6+8orzHMGP04A8CdwCNsKhRbOnKRjefxONR7bwILT3MHecxKBjHkKL/tkZ8r4Uzw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/clear-module": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/clear-module/-/clear-module-4.1.2.tgz", + "integrity": "sha512-LWAxzHqdHsAZlPlEyJ2Poz6AIs384mPeqLVCru2p0BrP9G/kVGuhNyZYClLO6cXlnuJjzC8xtsJIuMjKqLXoAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^2.0.0", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clipboardy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-3.0.0.tgz", + "integrity": "sha512-Su+uU5sr1jkUy1sGRpLKjKrvEOVXgSgiSInwa/qeID6aJ07yh+5NWc3h2QfjHjBnfX4LhtFcuAWKUsJ3r+fjbg==", + "dev": true, + "license": "MIT", + "dependencies": { + "arch": "^2.2.0", + "execa": "^5.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/cluster-key-slot": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", + "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/codemirror": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-6.0.1.tgz", + "integrity": "sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==", + "license": "MIT", + "dependencies": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/commands": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/lint": "^6.0.0", + "@codemirror/search": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true, + "license": "ISC", + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "license": "MIT" + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "license": "MIT" + }, + "node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true, + "license": "MIT" + }, + "node_modules/compress-commons": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.1.tgz", + "integrity": "sha512-QLdDLCKNV2dtoTorqgxngQCMA+gWXkM/Nwu7FpeBhk/RdkzimqC3jueb/FDmaZeXh+uby1jkBqE3xArsLBE5wQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-crc32": "^0.2.13", + "crc32-stream": "^4.0.2", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" + }, + "node_modules/consola": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.2.3.tgz", + "integrity": "sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==", + "license": "MIT", + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "license": "MIT" + }, + "node_modules/cookie-es": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cookie-es/-/cookie-es-1.0.0.tgz", + "integrity": "sha512-mWYvfOLrfEc996hlKcdABeIiPHUPC6DM2QYZdGGOvhOTbA3tjm2eBwqlJpoFdjC89NI4Qt6h0Pu06Mp+1Pj5OQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/cookies": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.8.0.tgz", + "integrity": "sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "keygrip": "~1.1.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/core-js": { + "version": "3.38.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.38.1.tgz", + "integrity": "sha512-OP35aUorbU3Zvlx7pjsFdu1rGNnD4pgw/CWoYzRY3t2EzoVT7shKHY1dlAy3f41cGIO7ZDPQimhGFTlEYkG/Hw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.32.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.32.0.tgz", + "integrity": "sha512-7a9a3D1k4UCVKnLhrgALyFcP7YCsLOQIxPd0dKjf/6GuPcgyiGP70ewWdCGrSK7evyhymi0qO4EqCmSJofDeYw==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.9" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-pure": { + "version": "3.32.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.32.0.tgz", + "integrity": "sha512-qsev1H+dTNYpDUEURRuOXMvpdtAnNEvQWS/FMJ2Vb5AY8ZP4rAPQldkE27joykZPJTe0+IVgHZYh1P5Xu1/i1g==", + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "license": "MIT" + }, + "node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cosmiconfig/node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/crc32-stream": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.2.tgz", + "integrity": "sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "crc-32": "^1.2.0", + "readable-stream": "^3.4.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/create-eslint-index": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/create-eslint-index/-/create-eslint-index-1.0.0.tgz", + "integrity": "sha512-nXvJjnfDytOOaPOonX0h0a1ggMoqrhdekGeZkD6hkcWYvlCWhU719tKFVh8eU04CnMwu3uwe1JjwuUF2C3k2qg==", + "license": "MIT", + "dependencies": { + "lodash.get": "^4.3.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/crelt": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz", + "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==", + "license": "MIT" + }, + "node_modules/cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" + }, + "engines": { + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-js": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", + "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==", + "license": "MIT" + }, + "node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/css-declaration-sorter": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz", + "integrity": "sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==", + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/css-line-break": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-2.1.0.tgz", + "integrity": "sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==", + "license": "MIT", + "optional": true, + "dependencies": { + "utrie": "^1.0.2" + } + }, + "node_modules/css-loader": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-5.2.7.tgz", + "integrity": "sha512-Q7mOvpBNBG7YrVGMxRxcBJZFL75o+cH2abNASdibkj/fffYD8qWbInZrD0S9ccI6vZclF3DsHE7njGlLtaHbhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "icss-utils": "^5.1.0", + "loader-utils": "^2.0.0", + "postcss": "^8.2.15", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.1.0", + "schema-utils": "^3.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.27.0 || ^5.0.0" + } + }, + "node_modules/css-loader/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/css-loader/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/css-loader/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssfilter": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz", + "integrity": "sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==", + "dev": true, + "license": "MIT" + }, + "node_modules/cssnano": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-6.0.1.tgz", + "integrity": "sha512-fVO1JdJ0LSdIGJq68eIxOqFpIJrZqXUsBt8fkrBcztCQqAjQD51OhZp7tc0ImcbwXD4k7ny84QTV90nZhmqbkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssnano-preset-default": "^6.0.1", + "lilconfig": "^2.1.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/cssnano" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-preset-default": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-6.0.1.tgz", + "integrity": "sha512-7VzyFZ5zEB1+l1nToKyrRkuaJIx0zi/1npjvZfbBwbtNTzhLtlvYraK/7/uqmX2Wb2aQtd983uuGw79jAjLSuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "css-declaration-sorter": "^6.3.1", + "cssnano-utils": "^4.0.0", + "postcss-calc": "^9.0.0", + "postcss-colormin": "^6.0.0", + "postcss-convert-values": "^6.0.0", + "postcss-discard-comments": "^6.0.0", + "postcss-discard-duplicates": "^6.0.0", + "postcss-discard-empty": "^6.0.0", + "postcss-discard-overridden": "^6.0.0", + "postcss-merge-longhand": "^6.0.0", + "postcss-merge-rules": "^6.0.1", + "postcss-minify-font-values": "^6.0.0", + "postcss-minify-gradients": "^6.0.0", + "postcss-minify-params": "^6.0.0", + "postcss-minify-selectors": "^6.0.0", + "postcss-normalize-charset": "^6.0.0", + "postcss-normalize-display-values": "^6.0.0", + "postcss-normalize-positions": "^6.0.0", + "postcss-normalize-repeat-style": "^6.0.0", + "postcss-normalize-string": "^6.0.0", + "postcss-normalize-timing-functions": "^6.0.0", + "postcss-normalize-unicode": "^6.0.0", + "postcss-normalize-url": "^6.0.0", + "postcss-normalize-whitespace": "^6.0.0", + "postcss-ordered-values": "^6.0.0", + "postcss-reduce-initial": "^6.0.0", + "postcss-reduce-transforms": "^6.0.0", + "postcss-svgo": "^6.0.0", + "postcss-unique-selectors": "^6.0.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-4.0.0.tgz", + "integrity": "sha512-Z39TLP+1E0KUcd7LGyF4qMfu8ZufI0rDzhdyAMsa/8UyNUU8wpS0fhdBxbQbv32r64ea00h4878gommRVg2BHw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/csso": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "css-tree": "~2.2.0" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/cssstyle": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-5.3.1.tgz", + "integrity": "sha512-g5PC9Aiph9eiczFpcgUhd9S4UUO3F+LHGRIi5NUMZ+4xtoIYbHNZwZnWA2JsFGe8OU8nl4WyaEFiZuGuxlutJQ==", + "license": "MIT", + "dependencies": { + "@asamuzakjp/css-color": "^4.0.3", + "@csstools/css-syntax-patches-for-csstree": "^1.0.14", + "css-tree": "^3.1.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/cssstyle/node_modules/css-tree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", + "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", + "license": "MIT", + "dependencies": { + "mdn-data": "2.12.2", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/cssstyle/node_modules/mdn-data": { + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", + "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==", + "license": "CC0-1.0" + }, + "node_modules/csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==", + "license": "MIT" + }, + "node_modules/cuint": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz", + "integrity": "sha512-d4ZVpCW31eWwCMe1YT3ur7mUDnTXbgwyzaL320DrcRT45rfjYxkt5QWLrmOJ+/UEAI2+fQgKe/fCjR8l4TpRgw==", + "dev": true, + "license": "MIT" + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "license": "BSD-2-Clause" + }, + "node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/data-urls": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-6.0.0.tgz", + "integrity": "sha512-BnBS08aLUM+DKamupXs3w2tJJoqU+AkaE/+6vQxi/G/DPmIZFJJp9Dkb1kM03AZx8ADehDUZgsNxju3mPXZYIA==", + "license": "MIT", + "dependencies": { + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^15.0.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/data-urls/node_modules/tr46": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-6.0.0.tgz", + "integrity": "sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==", + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/data-urls/node_modules/webidl-conversions": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-8.0.0.tgz", + "integrity": "sha512-n4W4YFyz5JzOfQeA8oN7dUYpR+MBP3PIUsn2jLjWXwK5ASUzt0Jc/A5sAUZoCYFJRGF0FBKJ+1JjN43rNdsQzA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=20" + } + }, + "node_modules/data-urls/node_modules/whatwg-url": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-15.1.0.tgz", + "integrity": "sha512-2ytDk0kiEj/yu90JOAp44PVPUkO9+jVhyf+SybKlRHSDlvOOZhdPIrr7xTH64l4WixO2cP+wQIcgujkGBPPz6g==", + "license": "MIT", + "dependencies": { + "tr46": "^6.0.0", + "webidl-conversions": "^8.0.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/date-fns": { + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", + "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.21.0" + }, + "engines": { + "node": ">=0.11" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/date-fns" + } + }, + "node_modules/date-fns-tz": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/date-fns-tz/-/date-fns-tz-1.3.8.tgz", + "integrity": "sha512-qwNXUFtMHTTU6CFSFjoJ80W8Fzzp24LntbjFFBgL/faqds4e5mo9mftoRLgr3Vi1trISsg4awSpYVsOQCRnapQ==", + "license": "MIT", + "peerDependencies": { + "date-fns": ">=2.0.0" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decimal.js": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz", + "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", + "license": "MIT" + }, + "node_modules/deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "license": "MIT", + "dependencies": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "license": "MIT", + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/defu": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.2.tgz", + "integrity": "sha512-+uO4+qr7msjNNWKYPHqN/3+Dx3NFkmIzayk2L1MyZQlvgZb/J1A0fo410dpKrN2SnqFjt8n4JL8fDJE0wIgjFQ==", + "license": "MIT" + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/denque": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", + "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destr": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.1.tgz", + "integrity": "sha512-M1Ob1zPSIvlARiJUkKqvAZ3VAqQY6Jcuth/pBKQ2b1dX/Qx0OnJ8Vux6J2H5PTMQeRzWrrbTu70VxBfv/OPDJA==", + "license": "MIT" + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-libc": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", + "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/devalue": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-4.3.2.tgz", + "integrity": "sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==", + "dev": true, + "license": "MIT" + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true, + "license": "MIT" + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/dom7": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/dom7/-/dom7-4.0.6.tgz", + "integrity": "sha512-emjdpPLhpNubapLFdjNL9tP06Sr+GZkrIHEXLWvOGsytACUrkbeIdjO5g77m00BrHTznnlcNqgmn7pCN192TBA==", + "license": "MIT", + "dependencies": { + "ssr-window": "^4.0.0" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/dompurify": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.5.6.tgz", + "integrity": "sha512-zUTaUBO8pY4+iJMPE1B9XlO2tXVYIcEA4SNGtvDELzTSCQO7RzH+j7S180BmhmJId78lqGU2z19vgVx2Sxs/PQ==", + "license": "(MPL-2.0 OR Apache-2.0)", + "optional": true + }, + "node_modules/domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot-prop": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-7.2.0.tgz", + "integrity": "sha512-Ol/IPXUARn9CSbkrdV4VJo7uCy1I3VuSiWCaFSg+8BdUOzF9n3jefIpcgAydvUZbTdEBZs2vEiTiS9m61ssiDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^2.11.2" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/dot-prop/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/dotenv": { + "version": "16.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", + "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/motdotla/dotenv?sponsor=1" + } + }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true, + "license": "MIT" + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true, + "license": "MIT" + }, + "node_modules/ejs": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", + "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.161", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.161.tgz", + "integrity": "sha512-hwtetwfKNZo/UlwHIVBlKZVdy7o8bIZxxKs0Mv/ROPiQQQmDgdm5a+KvKtBsxM8ZjFzTaCeLoodZ8jiBE3o9rA==", + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "license": "MIT" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "license": "MIT", + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.1.tgz", + "integrity": "sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==", + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.1", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.2.1", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.10", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.0", + "safe-array-concat": "^1.0.0", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.7", + "string.prototype.trimend": "^1.0.6", + "string.prototype.trimstart": "^1.0.6", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "license": "MIT", + "dependencies": { + "has": "^1.0.3" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/esbuild": { + "version": "0.18.19", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.19.tgz", + "integrity": "sha512-ra3CaIKCzJp5bU5BDfrCc0FRqKj71fQi+gbld0aj6lN0ifuX2fWJYPgLVLGwPfA+ruKna+OWwOvf/yHj6n+i0g==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.19", + "@esbuild/android-arm64": "0.18.19", + "@esbuild/android-x64": "0.18.19", + "@esbuild/darwin-arm64": "0.18.19", + "@esbuild/darwin-x64": "0.18.19", + "@esbuild/freebsd-arm64": "0.18.19", + "@esbuild/freebsd-x64": "0.18.19", + "@esbuild/linux-arm": "0.18.19", + "@esbuild/linux-arm64": "0.18.19", + "@esbuild/linux-ia32": "0.18.19", + "@esbuild/linux-loong64": "0.18.19", + "@esbuild/linux-mips64el": "0.18.19", + "@esbuild/linux-ppc64": "0.18.19", + "@esbuild/linux-riscv64": "0.18.19", + "@esbuild/linux-s390x": "0.18.19", + "@esbuild/linux-x64": "0.18.19", + "@esbuild/netbsd-x64": "0.18.19", + "@esbuild/openbsd-x64": "0.18.19", + "@esbuild/sunos-x64": "0.18.19", + "@esbuild/win32-arm64": "0.18.19", + "@esbuild/win32-ia32": "0.18.19", + "@esbuild/win32-x64": "0.18.19" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true, + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.46.0.tgz", + "integrity": "sha512-cIO74PvbW0qU8e0mIvk5IV3ToWdCq5FYG6gWPHHkx6gNdjlbAYvtfHmlCMXxjcoVaIdwy/IAt3+mDkZkfvb2Dg==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.1", + "@eslint/js": "^8.46.0", + "@humanwhocodes/config-array": "^0.11.10", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.2", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-ast-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eslint-ast-utils/-/eslint-ast-utils-1.1.0.tgz", + "integrity": "sha512-otzzTim2/1+lVrlH19EfQQJEhVJSu0zOb9ygb3iapN6UlyaDtyRq4b5U1FuW0v1lRa9Fp/GJyHkSwm6NqABgCA==", + "license": "MIT", + "dependencies": { + "lodash.get": "^4.4.2", + "lodash.zip": "^4.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-config-prettier": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", + "license": "MIT", + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-import-resolver-babel-module": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-babel-module/-/eslint-import-resolver-babel-module-5.3.2.tgz", + "integrity": "sha512-K7D8n0O6p/JJncPote8yiuB7chJfu26Yn/Q3gzT53cNzJNS0NUCkI0iuimj4/vWVRHVQvPnYWeq07V8RvKjz/A==", + "license": "MIT", + "dependencies": { + "pkg-up": "^3.1.0", + "resolve": "^1.20.0" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0", + "babel-plugin-module-resolver": "^3.0.0 || ^4.0.0 || ^5.0.0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.8.tgz", + "integrity": "sha512-tEe+Pok22qIGaK3KoMP+N96GVDS66B/zreoVVmiavLvRUEmGRtvb4B8wO9jwnb8d2lvHtrkhZ7UD73dWBVnf/Q==", + "license": "MIT", + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", + "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", + "license": "MIT", + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-babel": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-babel/-/eslint-plugin-babel-5.3.1.tgz", + "integrity": "sha512-VsQEr6NH3dj664+EyxJwO4FCYm/00JhYb3Sk3ft8o+fpKuIfQ9TaW6uVUfvwMXHcf/lsnRIoyFPsLMyiWCSL/g==", + "license": "MIT", + "dependencies": { + "eslint-rule-composer": "^0.3.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": ">=4.0.0" + } + }, + "node_modules/eslint-plugin-es": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", + "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", + "license": "MIT", + "dependencies": { + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" + }, + "engines": { + "node": ">=8.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=4.19.1" + } + }, + "node_modules/eslint-plugin-es/node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-plugin-es/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-eslint-comments": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-3.2.0.tgz", + "integrity": "sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==", + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.5", + "ignore": "^5.0.5" + }, + "engines": { + "node": ">=6.5.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=4.19.1" + } + }, + "node_modules/eslint-plugin-eslint-comments/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint-plugin-flowtype": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-8.0.3.tgz", + "integrity": "sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==", + "license": "BSD-3-Clause", + "dependencies": { + "lodash": "^4.17.21", + "string-natural-compare": "^3.0.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@babel/plugin-syntax-flow": "^7.14.5", + "@babel/plugin-transform-react-jsx": "^7.14.9", + "eslint": "^8.1.0" + } + }, + "node_modules/eslint-plugin-fp": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-fp/-/eslint-plugin-fp-2.3.0.tgz", + "integrity": "sha512-3n2oHibwoIxAht9/+ZaTldhI6brXORgl8oNXqZd+d9xuAQt2SBJ2/aml0oQRMWvXrgsz2WG6wfC++NjzSG3prA==", + "license": "MIT", + "dependencies": { + "create-eslint-index": "^1.0.0", + "eslint-ast-utils": "^1.0.0", + "lodash": "^4.13.1", + "req-all": "^0.1.0" + }, + "engines": { + "node": ">=4.0.0" + }, + "peerDependencies": { + "eslint": ">=3" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.26.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", + "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.4", + "array.prototype.flat": "^1.2.5", + "debug": "^2.6.9", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-module-utils": "^2.7.3", + "has": "^1.0.3", + "is-core-module": "^2.8.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.values": "^1.1.5", + "resolve": "^1.22.0", + "tsconfig-paths": "^3.14.1" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/eslint-plugin-jest": { + "version": "26.9.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-26.9.0.tgz", + "integrity": "sha512-TWJxWGp1J628gxh2KhaH1H1paEdgE2J61BBF1I59c6xWeL5+D1BzMxGDN/nXAfX+aSkR5u80K+XhskK6Gwq9ng==", + "license": "MIT", + "dependencies": { + "@typescript-eslint/utils": "^5.10.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + }, + "jest": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz", + "integrity": "sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.9", + "aria-query": "^4.2.2", + "array-includes": "^3.1.5", + "ast-types-flow": "^0.0.7", + "axe-core": "^4.4.3", + "axobject-query": "^2.2.0", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "has": "^1.0.3", + "jsx-ast-utils": "^3.3.2", + "language-tags": "^1.0.5", + "minimatch": "^3.1.2", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-monorepo": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-monorepo/-/eslint-plugin-monorepo-0.3.2.tgz", + "integrity": "sha512-CypTAqHjTR05XxzqDj7x88oVu2GiqqQA/datD9kIwciHzpj0oE4YbTdyEFFKADgd7dbd21KliSlUpOvo626FBw==", + "license": "MIT", + "dependencies": { + "eslint-module-utils": "^2.1.1", + "get-monorepo-packages": "^1.1.0", + "globby": "^7.1.1", + "load-json-file": "^4.0.0", + "minimatch": "^3.0.4", + "parse-package-name": "^0.1.0", + "path-is-inside": "^1.0.2" + } + }, + "node_modules/eslint-plugin-monorepo/node_modules/array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", + "license": "MIT", + "dependencies": { + "array-uniq": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-monorepo/node_modules/dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "license": "MIT", + "dependencies": { + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-monorepo/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/eslint-plugin-monorepo/node_modules/globby": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", + "integrity": "sha512-yANWAN2DUcBtuus5Cpd+SKROzXHs2iVXFZt/Ykrfz6SAXqacLX25NZpltE+39ceMexYF4TtEadjuSTw8+3wX4g==", + "license": "MIT", + "dependencies": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-monorepo/node_modules/ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "license": "MIT" + }, + "node_modules/eslint-plugin-monorepo/node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "license": "MIT", + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-monorepo/node_modules/slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-node": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", + "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", + "license": "MIT", + "dependencies": { + "eslint-plugin-es": "^3.0.0", + "eslint-utils": "^2.0.0", + "ignore": "^5.1.1", + "minimatch": "^3.0.4", + "resolve": "^1.10.1", + "semver": "^6.1.0" + }, + "engines": { + "node": ">=8.10.0" + }, + "peerDependencies": { + "eslint": ">=5.16.0" + } + }, + "node_modules/eslint-plugin-node/node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-plugin-node/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.31.11", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.31.11.tgz", + "integrity": "sha512-TTvq5JsT5v56wPa9OYHzsrOlHzKZKjV+aLgS+55NJP/cuzdiQPC7PfYoUjMoxlffKtvijpk7vA/jmuqRb9nohw==", + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "array.prototype.tosorted": "^1.1.1", + "doctrine": "^2.1.0", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "object.hasown": "^1.1.2", + "object.values": "^1.1.6", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.3", + "semver": "^6.3.0", + "string.prototype.matchall": "^4.0.8" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", + "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", + "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-vue": { + "version": "9.16.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.16.1.tgz", + "integrity": "sha512-2FtnTqazA6aYONfDuOZTk0QzwhAwi7Z4+uJ7+GHeGxcKapjqWlDsRWDenvyG/utyOfAS5bVRmAG3cEWiYEz2bA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "natural-compare": "^1.4.0", + "nth-check": "^2.1.1", + "postcss-selector-parser": "^6.0.13", + "semver": "^7.5.4", + "vue-eslint-parser": "^9.3.1", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/eslint-plugin-vue/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-plugin-vue/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-plugin-vue/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, + "node_modules/eslint-rule-composer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz", + "integrity": "sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==", + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-scope/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "license": "Apache-2.0", + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.2.tgz", + "integrity": "sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.2.tgz", + "integrity": "sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true, + "license": "MIT" + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "license": "MIT" + }, + "node_modules/externality": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/externality/-/externality-1.0.2.tgz", + "integrity": "sha512-LyExtJWKxtgVzmgtEHyQtLFpw1KFhQphF9nTG8TpAIVkiI/xQ3FJh75tRFLYl4hkn7BNIIdLJInuDAavX35pMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "enhanced-resolve": "^5.14.1", + "mlly": "^1.3.0", + "pathe": "^1.1.1", + "ufo": "^1.1.2" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "license": "Apache-2.0" + }, + "node_modules/fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + } + }, + "node_modules/fflate": { + "version": "0.4.8", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.4.8.tgz", + "integrity": "sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA==", + "license": "MIT" + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/file-selector": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.2.4.tgz", + "integrity": "sha512-ZDsQNbrv6qRi1YTDOEWzf5J2KjZ9KMI1Q2SGeTkCJmNNW25Jg4TW4UMcmoqcg4WrAyKRcpBXdbWRxkfrOzVRbA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.3" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "license": "MIT" + }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "license": "BSD-3-Clause", + "bin": { + "flat": "cli.js" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/floating-vue": { + "version": "2.0.0-beta.24", + "resolved": "https://registry.npmjs.org/floating-vue/-/floating-vue-2.0.0-beta.24.tgz", + "integrity": "sha512-URSzP6YXaF4u1oZ9XGL8Sn8puuM7ivp5jkOUrpy5Q1mfo9BfGppJOn+ierTmsSUfJEeHBae8KT7r5DeI3vQIEw==", + "license": "MIT", + "dependencies": { + "@floating-ui/dom": "~1.1.1", + "vue-resize": "^2.0.0-alpha.1" + }, + "peerDependencies": { + "@nuxt/kit": "^3.2.0", + "vue": "^3.2.0" + }, + "peerDependenciesMeta": { + "@nuxt/kit": { + "optional": true + } + } + }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/fraction.js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://www.patreon.com/infusion" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true, + "license": "MIT" + }, + "node_modules/fs-extra": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fs-minipass/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "license": "MIT" + }, + "node_modules/function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "license": "MIT" + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gauge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "deprecated": "This package is no longer supported.", + "dev": true, + "license": "ISC", + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-monorepo-packages": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-monorepo-packages/-/get-monorepo-packages-1.2.0.tgz", + "integrity": "sha512-aDP6tH+eM3EuVSp3YyCutOcFS4Y9AhRRH9FAd+cjtR/g63Hx+DCXdKoP1ViRPUJz5wm+BOEXB4FhoffGHxJ7jQ==", + "license": "MIT", + "dependencies": { + "globby": "^7.1.1", + "load-json-file": "^4.0.0" + } + }, + "node_modules/get-monorepo-packages/node_modules/array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", + "license": "MIT", + "dependencies": { + "array-uniq": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/get-monorepo-packages/node_modules/dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "license": "MIT", + "dependencies": { + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/get-monorepo-packages/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/get-monorepo-packages/node_modules/globby": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", + "integrity": "sha512-yANWAN2DUcBtuus5Cpd+SKROzXHs2iVXFZt/Ykrfz6SAXqacLX25NZpltE+39ceMexYF4TtEadjuSTw8+3wX4g==", + "license": "MIT", + "dependencies": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/get-monorepo-packages/node_modules/ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "license": "MIT" + }, + "node_modules/get-monorepo-packages/node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "license": "MIT", + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/get-monorepo-packages/node_modules/slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", + "dev": true, + "license": "ISC" + }, + "node_modules/get-port-please": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/get-port-please/-/get-port-please-3.0.1.tgz", + "integrity": "sha512-R5pcVO8Z1+pVDu8Ml3xaJCEkBiiy1VQN9za0YqH8GIi1nIqD4IzQhzY6dDzMRtdS1lyiGlucRzm8IN8wtLIXng==", + "dev": true, + "license": "MIT" + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/giget": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/giget/-/giget-1.1.2.tgz", + "integrity": "sha512-HsLoS07HiQ5oqvObOI+Qb2tyZH4Gj5nYGfF9qQcZNrPw+uEFhdXtgJr01aO2pWadGHucajYDLxxbtQkm97ON2A==", + "license": "MIT", + "dependencies": { + "colorette": "^2.0.19", + "defu": "^6.1.2", + "https-proxy-agent": "^5.0.1", + "mri": "^1.2.0", + "node-fetch-native": "^1.0.2", + "pathe": "^1.1.0", + "tar": "^6.1.13" + }, + "bin": { + "giget": "dist/cli.mjs" + } + }, + "node_modules/git-config-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/git-config-path/-/git-config-path-2.0.0.tgz", + "integrity": "sha512-qc8h1KIQbJpp+241id3GuAtkdyJ+IK+LIVtkiFTRKRrmddDzs3SI9CvP1QYmWBFvm1I/PWRwj//of8bgAc0ltA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/git-up": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/git-up/-/git-up-7.0.0.tgz", + "integrity": "sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-ssh": "^1.4.0", + "parse-url": "^8.1.0" + } + }, + "node_modules/git-url-parse": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-13.1.0.tgz", + "integrity": "sha512-5FvPJP/70WkIprlUZ33bm4UAaFdjcLkJLpWft1BeZKqwR0uhhNGoKwlUaPtVb4LxCSQ++erHapRak9kWGj+FCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "git-up": "^7.0.0" + } + }, + "node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/globals": { + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", + "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", + "license": "MIT", + "dependencies": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.3.0", + "ignore": "^5.2.4", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, + "node_modules/gzip-size": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-7.0.0.tgz", + "integrity": "sha512-O1Ld7Dr+nqPnmGpdhzLmMTQ4vAsD+rHwMm1NLUmoUFFymBOMKxCCrtDxqdBRYXdeEPEi3SyoR4TizJLQrnKBNA==", + "dev": true, + "license": "MIT", + "dependencies": { + "duplexer": "^0.1.2" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/h3": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/h3/-/h3-1.7.1.tgz", + "integrity": "sha512-A9V2NEDNHet7v1gCg7CMwerSigLi0SRbhTy7C3lGb0N4YKIpPmLDjedTUopqp4dnn7COHfqUjjaz3zbtz4QduA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cookie-es": "^1.0.0", + "defu": "^6.1.2", + "destr": "^2.0.0", + "iron-webcrypto": "^0.7.0", + "radix3": "^1.0.1", + "ufo": "^1.1.2", + "uncrypto": "^0.1.3" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/hash-sum": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz", + "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==", + "license": "MIT" + }, + "node_modules/hookable": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz", + "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==", + "license": "MIT" + }, + "node_modules/html-encoding-sniffer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", + "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", + "license": "MIT", + "dependencies": { + "whatwg-encoding": "^3.1.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/html-tags": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", + "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/html2canvas": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/html2canvas/-/html2canvas-1.4.1.tgz", + "integrity": "sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==", + "license": "MIT", + "optional": true, + "dependencies": { + "css-line-break": "^2.1.0", + "text-segmentation": "^1.0.3" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/http-assert/-/http-assert-1.5.0.tgz", + "integrity": "sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-equal": "~1.0.1", + "http-errors": "~1.8.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-assert/node_modules/deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/http-assert/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-assert/node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-assert/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-graceful-shutdown": { + "version": "3.1.13", + "resolved": "https://registry.npmjs.org/http-graceful-shutdown/-/http-graceful-shutdown-3.1.13.tgz", + "integrity": "sha512-Ci5LRufQ8AtrQ1U26AevS8QoMXDOhnAHCJI3eZu1com7mZGHxREmw3dNj85ftpQokQCvak8nI2pnFS8zyM1M+Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/http-proxy-agent/node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/http-shutdown": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/http-shutdown/-/http-shutdown-1.2.2.tgz", + "integrity": "sha512-S9wWkJ/VSY9/k4qcjG318bqJNruzE4HySUhFYknwmu6LBP97KLLfwNf+n4V1BHurvFNkSKLFnK/RsuUnRTf9Vw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/idb": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz", + "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/immutable": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.2.tgz", + "integrity": "sha512-oGXzbEDem9OOpDWZu88jGiYCvIsLHMvGw+8OXlpsvTFvIQplQbjg1B1cvKg8f7Hoch6+NGjpPsH1Fr+Mc2D1aA==", + "license": "MIT" + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true, + "license": "ISC" + }, + "node_modules/internal-slot": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", + "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ioredis": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.3.2.tgz", + "integrity": "sha512-1DKMMzlIHM02eBBVOFQ1+AolGjs6+xEcM4PDL7NqOS6szq7H9jSaEkIUH6/a5Hl241LzW6JLSiAbNvTQjUupUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ioredis/commands": "^1.1.1", + "cluster-key-slot": "^1.1.0", + "debug": "^4.3.4", + "denque": "^2.1.0", + "lodash.defaults": "^4.2.0", + "lodash.isarguments": "^3.1.0", + "redis-errors": "^1.2.0", + "redis-parser": "^3.0.0", + "standard-as-callback": "^2.1.0" + }, + "engines": { + "node": ">=12.22.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/ioredis" + } + }, + "node_modules/iron-webcrypto": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/iron-webcrypto/-/iron-webcrypto-0.7.1.tgz", + "integrity": "sha512-K/UmlEhPCPXEHV5hAtH5C0tI5JnFuOrv4yO/j7ODPl3HaiiHBLbOLTde+ieUaAyfCATe4LoAnclyF+hmSCOVmQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/brc-dd" + } + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "license": "MIT" + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-builtin-module": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", + "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", + "dev": true, + "license": "MIT", + "dependencies": { + "builtin-modules": "^3.3.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "license": "MIT", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "dev": true, + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "license": "MIT" + }, + "node_modules/is-primitive": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-3.0.1.tgz", + "integrity": "sha512-GljRxhWvlCNRfZyORiH77FwdFwGcMO620o37EOYC0ORWdq+WYNVqW0w2Juzew4M+L81l6/QS3t5gkkihyRqv9w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-reference": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-ssh": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.0.tgz", + "integrity": "sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "protocols": "^2.0.1" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.11" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-unicode-supported": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", + "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-wsl/node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/isomorphic-dompurify": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/isomorphic-dompurify/-/isomorphic-dompurify-2.29.0.tgz", + "integrity": "sha512-Bgw5M9GMsuGeGSRpS81gk68t9/+r3AwuJJ5WnSxZK+tuazDodlRgmwz4ItMAfNYDgiNaizREYeiefkFQWkG7ow==", + "license": "MIT", + "dependencies": { + "dompurify": "^3.3.0", + "jsdom": "^27.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/isomorphic-dompurify/node_modules/dompurify": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.0.tgz", + "integrity": "sha512-r+f6MYR1gGN1eJv0TVQbhA7if/U7P87cdPl3HN5rikqaBSBxLiCb/b9O+2eG0cxz0ghyU+mU1QkbsOwERMYlWQ==", + "license": "(MPL-2.0 OR Apache-2.0)", + "optionalDependencies": { + "@types/trusted-types": "^2.0.7" + } + }, + "node_modules/jake": { + "version": "10.8.7", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", + "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jiti": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.19.1.tgz", + "integrity": "sha512-oVhqoRDaBXf7sjkll95LHVS6Myyyb1zaunVwk4Z0+WPSW4gjS0pl01zYKHScTuyEhQsFxV5L4DR5r+YqSyqyyg==", + "license": "MIT", + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsdom": { + "version": "27.0.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-27.0.0.tgz", + "integrity": "sha512-lIHeR1qlIRrIN5VMccd8tI2Sgw6ieYXSVktcSHaNe3Z5nE/tcPQYQWOq00wxMvYOsz+73eAkNenVvmPC6bba9A==", + "license": "MIT", + "dependencies": { + "@asamuzakjp/dom-selector": "^6.5.4", + "cssstyle": "^5.3.0", + "data-urls": "^6.0.0", + "decimal.js": "^10.5.0", + "html-encoding-sniffer": "^4.0.0", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.6", + "is-potential-custom-element-name": "^1.0.1", + "parse5": "^7.3.0", + "rrweb-cssom": "^0.8.0", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^6.0.0", + "w3c-xmlserializer": "^5.0.0", + "webidl-conversions": "^8.0.0", + "whatwg-encoding": "^3.1.1", + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^15.0.0", + "ws": "^8.18.2", + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": ">=20" + }, + "peerDependencies": { + "canvas": "^3.0.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsdom/node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/jsdom/node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/jsdom/node_modules/tr46": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-6.0.0.tgz", + "integrity": "sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==", + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/jsdom/node_modules/webidl-conversions": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-8.0.0.tgz", + "integrity": "sha512-n4W4YFyz5JzOfQeA8oN7dUYpR+MBP3PIUsn2jLjWXwK5ASUzt0Jc/A5sAUZoCYFJRGF0FBKJ+1JjN43rNdsQzA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=20" + } + }, + "node_modules/jsdom/node_modules/whatwg-url": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-15.1.0.tgz", + "integrity": "sha512-2ytDk0kiEj/yu90JOAp44PVPUkO9+jVhyf+SybKlRHSDlvOOZhdPIrr7xTH64l4WixO2cP+wQIcgujkGBPPz6g==", + "license": "MIT", + "dependencies": { + "tr46": "^6.0.0", + "webidl-conversions": "^8.0.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/jsdom/node_modules/xml-name-validator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", + "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", + "license": "Apache-2.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true, + "license": "(AFL-2.1 OR BSD-3-Clause)" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "license": "MIT" + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonpointer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", + "integrity": "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jsonwebtoken": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", + "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", + "license": "MIT", + "dependencies": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=4", + "npm": ">=1.4.28" + } + }, + "node_modules/jsonwebtoken/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/jspdf": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/jspdf/-/jspdf-2.5.1.tgz", + "integrity": "sha512-hXObxz7ZqoyhxET78+XR34Xu2qFGrJJ2I2bE5w4SM8eFaFEkW2xcGRVUss360fYelwRSid/jT078kbNvmoW0QA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.14.0", + "atob": "^2.1.2", + "btoa": "^1.2.1", + "fflate": "^0.4.8" + }, + "optionalDependencies": { + "canvg": "^3.0.6", + "core-js": "^3.6.0", + "dompurify": "^2.2.0", + "html2canvas": "^1.0.0-rc.5" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/just-performance": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/just-performance/-/just-performance-4.3.0.tgz", + "integrity": "sha512-L7RjvtJsL0QO8xFs5wEoDDzzJwoiowRw6Rn/GnvldlchS2JQr9wFYPiwZcDfrbbujEKqKN0tvENdbjXdYhDp5Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "license": "MIT", + "dependencies": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "license": "MIT", + "dependencies": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/keygrip": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", + "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tsscmp": "1.0.6" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/klona": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/knitwork": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/knitwork/-/knitwork-1.0.0.tgz", + "integrity": "sha512-dWl0Dbjm6Xm+kDxhPQJsCBTxrJzuGl0aP9rhr+TG8D3l+GL90N8O8lYUi7dTSAN2uuDqCtNgb6aEuQH5wsiV8Q==", + "license": "MIT" + }, + "node_modules/koa": { + "version": "2.14.2", + "resolved": "https://registry.npmjs.org/koa/-/koa-2.14.2.tgz", + "integrity": "sha512-VFI2bpJaodz6P7x2uyLiX6RLYpZmOJqNmoCst/Yyd7hQlszyPwG/I9CQJ63nOtKSxpt5M7NH67V6nJL2BwCl7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "^1.3.5", + "cache-content-type": "^1.0.0", + "content-disposition": "~0.5.2", + "content-type": "^1.0.4", + "cookies": "~0.8.0", + "debug": "^4.3.2", + "delegates": "^1.0.0", + "depd": "^2.0.0", + "destroy": "^1.0.4", + "encodeurl": "^1.0.2", + "escape-html": "^1.0.3", + "fresh": "~0.5.2", + "http-assert": "^1.3.0", + "http-errors": "^1.6.3", + "is-generator-function": "^1.0.7", + "koa-compose": "^4.1.0", + "koa-convert": "^2.0.0", + "on-finished": "^2.3.0", + "only": "~0.0.2", + "parseurl": "^1.3.2", + "statuses": "^1.5.0", + "type-is": "^1.6.16", + "vary": "^1.1.2" + }, + "engines": { + "node": "^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4" + } + }, + "node_modules/koa-compose": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-4.1.0.tgz", + "integrity": "sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==", + "dev": true, + "license": "MIT" + }, + "node_modules/koa-convert": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/koa-convert/-/koa-convert-2.0.0.tgz", + "integrity": "sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==", + "dev": true, + "license": "MIT", + "dependencies": { + "co": "^4.6.0", + "koa-compose": "^4.1.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/koa-send": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/koa-send/-/koa-send-5.0.1.tgz", + "integrity": "sha512-tmcyQ/wXXuxpDxyNXv5yNNkdAMdFRqwtegBXUaowiQzUKqJehttS0x2j0eOZDQAyloAth5w6wwBImnFzkUz3pQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.1", + "http-errors": "^1.7.3", + "resolve-path": "^1.4.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/koa-send/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/koa-send/node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/koa-send/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/koa-static": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/koa-static/-/koa-static-5.0.0.tgz", + "integrity": "sha512-UqyYyH5YEXaJrf9S8E23GoJFQZXkBVJ9zYYMPGz919MSX1KuvAcycIuS0ci150HCoPf4XQVhQ84Qf8xRPWxFaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.1.0", + "koa-send": "^5.0.0" + }, + "engines": { + "node": ">= 7.6.0" + } + }, + "node_modules/koa-static/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/koa/node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/koa/node_modules/http-errors/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/koa/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/language-subtag-registry": { + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", + "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", + "license": "CC0-1.0" + }, + "node_modules/language-tags": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.8.tgz", + "integrity": "sha512-aWAZwgPLS8hJ20lNPm9HNVs4inexz6S2sQa3wx/+ycuutMNE5/IfYxiWYBbi+9UWCQVaXYCOPUl6gFrPR7+jGg==", + "license": "MIT", + "dependencies": { + "language-subtag-registry": "^0.3.20" + } + }, + "node_modules/lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "^2.0.5" + }, + "engines": { + "node": ">= 0.6.3" + } + }, + "node_modules/lazystream/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lazystream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/lazystream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/lazystream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/limiter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/limiter/-/limiter-2.1.0.tgz", + "integrity": "sha512-361TYz6iay6n+9KvUUImqdLuFigK+K79qrUtBsXhJTLdH4rIt/r1y8r1iozwh8KbZNpujbFTSh74mJ7bwbAMOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "just-performance": "4.3.0" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "license": "MIT" + }, + "node_modules/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", + "license": "MIT", + "dependencies": { + "uc.micro": "^2.0.0" + } + }, + "node_modules/listhen": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/listhen/-/listhen-1.2.2.tgz", + "integrity": "sha512-fQaXe+DAQ5QiYP1B4uXfAgwqIwNS+0WMIwRd5l2a3npQAEhlCJ1pN11d41yHtbeReE7oRtfL+h6Nzxq+Wc4vIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@parcel/watcher-wasm": "2.3.0-alpha.1", + "citty": "^0.1.2", + "clipboardy": "^3.0.0", + "consola": "^3.2.3", + "defu": "^6.1.2", + "get-port-please": "^3.0.1", + "h3": "^1.8.0-rc.2", + "http-shutdown": "^1.2.2", + "jiti": "^1.19.1", + "mlly": "^1.4.0", + "node-forge": "^1.3.1", + "pathe": "^1.1.1", + "ufo": "^1.2.0" + }, + "bin": { + "listen": "bin/listhen.mjs", + "listhen": "bin/listhen.mjs" + } + }, + "node_modules/listhen/node_modules/h3": { + "version": "1.8.0-rc.3", + "resolved": "https://registry.npmjs.org/h3/-/h3-1.8.0-rc.3.tgz", + "integrity": "sha512-NhDCNXhrJkt42BDQF57787yXJa2eX2Hl4OMlu+Ym9QBdBaOByUjBrovYaBc+27mtIhHvs2IqPf56to8qcNBI7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "cookie-es": "^1.0.0", + "defu": "^6.1.2", + "destr": "^2.0.1", + "iron-webcrypto": "^0.8.0", + "radix3": "^1.0.1", + "ufo": "^1.2.0", + "uncrypto": "^0.1.3", + "unenv": "^1.6.1" + } + }, + "node_modules/listhen/node_modules/iron-webcrypto": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/iron-webcrypto/-/iron-webcrypto-0.8.0.tgz", + "integrity": "sha512-gScdcWHjTGclCU15CIv2r069NoQrys1UeUFFfaO1hL++ytLHkVw7N5nXJmFf3J2LEDMz1PkrvC0m62JEeu1axQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/brc-dd" + } + }, + "node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/local-pkg": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", + "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" + }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "license": "MIT" + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", + "license": "MIT" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.defaults": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.difference": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", + "deprecated": "This package is deprecated. Use the optional chaining (?.) operator instead.", + "license": "MIT" + }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", + "license": "MIT" + }, + "node_modules/lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", + "license": "MIT" + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", + "deprecated": "This package is deprecated. Use require('node:util').isDeepStrictEqual instead.", + "license": "MIT" + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", + "license": "MIT" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", + "license": "MIT" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "license": "MIT" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "license": "MIT" + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "license": "MIT" + }, + "node_modules/lodash.pick": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", + "integrity": "sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==", + "deprecated": "This package is deprecated. Use destructuring assignment syntax instead.", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.union": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", + "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "license": "MIT" + }, + "node_modules/lodash.zip": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.zip/-/lodash.zip-4.2.0.tgz", + "integrity": "sha512-C7IOaBBK/0gMORRBd8OETNx3kmOkgIWIPvyDpZSCTwUrpYmgZwJkjZeOD8ww4xbOUOs4/attY+pciKvadNfFbg==", + "license": "MIT" + }, + "node_modules/log-symbols": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-5.1.0.tgz", + "integrity": "sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^5.0.0", + "is-unicode-supported": "^1.1.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/luxon": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.3.0.tgz", + "integrity": "sha512-An0UCfG/rSiqtAIiBPO0Y9/zAnHUZxAMiCpTd5h2smgsj7GGmcenvrvww2cqNA8/4A5ZrD1gJpHN2mIHZQF+Mg==", + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/magic-string": { + "version": "0.30.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.2.tgz", + "integrity": "sha512-lNZdu7pewtq/ZvWUp9Wpf/x7WzMTsR26TWV03BRZrXFsv+BI6dy8RAiKgm1uM/kyR0rCfUcqvOlXKG66KhIGug==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/magic-string-ast": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/magic-string-ast/-/magic-string-ast-0.3.0.tgz", + "integrity": "sha512-0shqecEPgdFpnI3AP90epXyxZy9g6CRZ+SZ7BcqFwYmtFEnZ1jpevcV5HoyVnlDS9gCnc1UIg3Rsvp3Ci7r8OA==", + "dev": true, + "license": "MIT", + "dependencies": { + "magic-string": "^0.30.2" + }, + "engines": { + "node": ">=16.14.0" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/markdown-it": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", + "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" + }, + "bin": { + "markdown-it": "bin/markdown-it.mjs" + } + }, + "node_modules/maska": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/maska/-/maska-1.5.2.tgz", + "integrity": "sha512-zDalYGEVjQvnmedj6Yaae532g1RQVKppX8w4+L4q5HPuTUCJew/YDtTsKto4ReYSk5+nfacGyyz067o7qo4xTQ==", + "license": "MIT" + }, + "node_modules/mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", + "license": "MIT" + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memory-cache": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/memory-cache/-/memory-cache-0.2.0.tgz", + "integrity": "sha512-OcjA+jzjOYzKmKS6IQVALHLVz+rNTMPoJvCztFaZxwG14wtAW7VRZjwTQu06vKCYOxh4jVnik7ya0SXTB0W+xA==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "license": "MIT", + "dependencies": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + }, + "engines": { + "node": ">=4.3.0 <5.0.0 || >=5.10" + } + }, + "node_modules/memory-fs/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/memory-fs/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/memory-fs/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/memory-fs/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "license": "MIT", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "license": "MIT", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" + }, + "node_modules/mkdirp": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", + "dev": true, + "license": "MIT", + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mlly": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.4.0.tgz", + "integrity": "sha512-ua8PAThnTwpprIaU47EPeZ/bPUVp2QYBbWMphUQpVdBI3Lgqzm5KZQ45Agm3YJedHXaIHl6pBGabaLSUPPSptg==", + "license": "MIT", + "dependencies": { + "acorn": "^8.9.0", + "pathe": "^1.1.1", + "pkg-types": "^1.0.3", + "ufo": "^1.1.2" + } + }, + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "license": "MIT" + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.2.tgz", + "integrity": "sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.js" + }, + "engines": { + "node": "^14 || ^16 || >=18" + } + }, + "node_modules/napi-wasm": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/napi-wasm/-/napi-wasm-1.1.0.tgz", + "integrity": "sha512-lHwIAJbmLSjF9VDRm9GoVOy9AGp3aIvkjv+Kvz9h16QR3uSVYH78PNQUnT2U4X53mhlnV2M7wrhibQ3GHicDmg==", + "dev": true, + "license": "MIT" + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/nitropack": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/nitropack/-/nitropack-2.5.2.tgz", + "integrity": "sha512-hXEHY9NJmOOETFFTPCBB9PB0+txoAbU/fB2ovUF6UMRo4ucQZztYnZdX+YSxa6FVz6eONvcxXvf9/9s6t08KWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@cloudflare/kv-asset-handler": "^0.3.0", + "@netlify/functions": "^1.6.0", + "@rollup/plugin-alias": "^5.0.0", + "@rollup/plugin-commonjs": "^25.0.2", + "@rollup/plugin-inject": "^5.0.3", + "@rollup/plugin-json": "^6.0.0", + "@rollup/plugin-node-resolve": "^15.1.0", + "@rollup/plugin-replace": "^5.0.2", + "@rollup/plugin-terser": "^0.4.3", + "@rollup/plugin-wasm": "^6.1.3", + "@rollup/pluginutils": "^5.0.2", + "@types/http-proxy": "^1.17.11", + "@vercel/nft": "^0.22.6", + "archiver": "^5.3.1", + "c12": "^1.4.2", + "chalk": "^5.2.0", + "chokidar": "^3.5.3", + "citty": "^0.1.1", + "consola": "^3.2.2", + "cookie-es": "^1.0.0", + "defu": "^6.1.2", + "destr": "^2.0.0", + "dot-prop": "^7.2.0", + "esbuild": "^0.18.10", + "escape-string-regexp": "^5.0.0", + "etag": "^1.8.1", + "fs-extra": "^11.1.1", + "globby": "^13.2.0", + "gzip-size": "^7.0.0", + "h3": "^1.7.1", + "hookable": "^5.5.3", + "http-graceful-shutdown": "^3.1.13", + "http-proxy": "^1.18.1", + "is-primitive": "^3.0.1", + "jiti": "^1.18.2", + "klona": "^2.0.6", + "knitwork": "^1.0.0", + "listhen": "^1.0.4", + "magic-string": "^0.30.0", + "mime": "^3.0.0", + "mlly": "^1.4.0", + "mri": "^1.2.0", + "node-fetch-native": "^1.2.0", + "ofetch": "^1.1.1", + "ohash": "^1.1.2", + "openapi-typescript": "^6.2.8", + "pathe": "^1.1.1", + "perfect-debounce": "^1.0.0", + "pkg-types": "^1.0.3", + "pretty-bytes": "^6.1.0", + "radix3": "^1.0.1", + "rollup": "^3.25.3", + "rollup-plugin-visualizer": "^5.9.2", + "scule": "^1.0.0", + "semver": "^7.5.3", + "serve-placeholder": "^2.0.1", + "serve-static": "^1.15.0", + "source-map-support": "^0.5.21", + "std-env": "^3.3.3", + "ufo": "^1.1.2", + "uncrypto": "^0.1.3", + "unenv": "^1.5.1", + "unimport": "^3.0.11", + "unstorage": "^1.7.0" + }, + "bin": { + "nitro": "dist/cli.mjs", + "nitropack": "dist/cli.mjs" + }, + "engines": { + "node": "^14.16.0 || ^16.11.0 || >=17.0.0" + } + }, + "node_modules/nitropack/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/nitropack/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nitropack/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/nitropack/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/nitropack/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "deprecated": "Use your platform's native DOMException instead", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "engines": { + "node": ">=10.5.0" + } + }, + "node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, + "node_modules/node-fetch-native": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.2.0.tgz", + "integrity": "sha512-5IAMBTl9p6PaAjYCnMv5FmqIF6GcZnawAVnzaCG0rX2aYZJ4CxEkZNtVPuTRug7fL7wyM5BQYTlAzcyMPi6oTQ==", + "license": "MIT" + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "dev": true, + "license": "(BSD-3-Clause OR GPL-2.0)", + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-gyp-build": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", + "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==", + "dev": true, + "license": "MIT", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/node-releases": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "license": "MIT" + }, + "node_modules/nodemailer": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-7.0.6.tgz", + "integrity": "sha512-F44uVzgwo49xboqbFgBGkRaiMgtoBrBEWCVincJPK9+S9Adkzt/wXCLKbf7dxucmxfTI5gHGB+bEmdyzN6QKjw==", + "license": "MIT-0", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npmlog": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "deprecated": "This package is no longer supported.", + "dev": true, + "license": "ISC", + "dependencies": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/nuxi": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/nuxi/-/nuxi-3.6.5.tgz", + "integrity": "sha512-4XEXYz71UiWWiKC1/cJCzqRSUEImYRmjcvKpSsBKMU58ALYVSx5KIoas5SwLO8tEKO5BS4DAe4u7MYix7hfuHQ==", + "dev": true, + "license": "MIT", + "bin": { + "nuxi": "bin/nuxi.mjs" + }, + "engines": { + "node": "^14.18.0 || >=16.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/nuxt": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/nuxt/-/nuxt-3.6.5.tgz", + "integrity": "sha512-0A7V8B1HrIXX9IlqPc2w+5ZPXi+7MYa9QVhtuGYuLvjRKoSFANhCoMPRP6pKdoxigM1MBxhLue2VmHA/VbtJCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nuxt/devalue": "^2.0.2", + "@nuxt/kit": "3.6.5", + "@nuxt/schema": "3.6.5", + "@nuxt/telemetry": "^2.3.0", + "@nuxt/ui-templates": "^1.2.0", + "@nuxt/vite-builder": "3.6.5", + "@unhead/ssr": "^1.1.30", + "@unhead/vue": "^1.1.30", + "@vue/shared": "^3.3.4", + "acorn": "8.10.0", + "c12": "^1.4.2", + "chokidar": "^3.5.3", + "cookie-es": "^1.0.0", + "defu": "^6.1.2", + "destr": "^2.0.0", + "devalue": "^4.3.2", + "esbuild": "^0.18.11", + "escape-string-regexp": "^5.0.0", + "estree-walker": "^3.0.3", + "fs-extra": "^11.1.1", + "globby": "^13.2.2", + "h3": "^1.7.1", + "hookable": "^5.5.3", + "jiti": "^1.19.1", + "klona": "^2.0.6", + "knitwork": "^1.0.0", + "local-pkg": "^0.4.3", + "magic-string": "^0.30.1", + "mlly": "^1.4.0", + "nitropack": "^2.5.2", + "nuxi": "3.6.5", + "nypm": "^0.2.2", + "ofetch": "^1.1.1", + "ohash": "^1.1.2", + "pathe": "^1.1.1", + "perfect-debounce": "^1.0.0", + "prompts": "^2.4.2", + "scule": "^1.0.0", + "strip-literal": "^1.0.1", + "ufo": "^1.1.2", + "ultrahtml": "^1.2.0", + "uncrypto": "^0.1.3", + "unctx": "^2.3.1", + "unenv": "^1.5.1", + "unimport": "^3.0.14", + "unplugin": "^1.3.2", + "unplugin-vue-router": "^0.6.4", + "untyped": "^1.3.2", + "vue": "^3.3.4", + "vue-bundle-renderer": "^1.0.3", + "vue-devtools-stub": "^0.1.0", + "vue-router": "^4.2.4" + }, + "bin": { + "nuxi": "bin/nuxt.mjs", + "nuxt": "bin/nuxt.mjs" + }, + "engines": { + "node": "^14.18.0 || >=16.10.0" + }, + "peerDependencies": { + "@parcel/watcher": "^2.1.0", + "@types/node": "^14.18.0 || >=16.10.0" + }, + "peerDependenciesMeta": { + "@parcel/watcher": { + "optional": true + } + } + }, + "node_modules/nuxt-csurf": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/nuxt-csurf/-/nuxt-csurf-1.2.0.tgz", + "integrity": "sha512-sO8Hm3fR+GB3DMc0y1Slzt+f9LiUKpvF/qvUUZBWz1ZknfTRTYemZkfSNcoYf0/hoL2Wb9O0c8pFtzj0hs8Spw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nuxt/kit": "^3.1.0", + "defu": "^6.1.1" + } + }, + "node_modules/nuxt-icon": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/nuxt-icon/-/nuxt-icon-0.1.8.tgz", + "integrity": "sha512-oPFlLOZCy80MN+hf49+mBkOIHWVF3sOqZREQZw3qD0N6wGlR15QeRQtKQC8qGeQcc+xvpLQm0GvrdJ8FxFOPYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@iconify/vue": "^4.0.1", + "@nuxt/kit": "^3.0.0" + } + }, + "node_modules/nuxt-security": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/nuxt-security/-/nuxt-security-0.13.1.tgz", + "integrity": "sha512-ZqO9Eu2LmB43U/NK+kAQtTcEO+7swu6WhgZBjvHwSCvg5cDvruhfEjLOffF4nuhvyVpKnt5HRfeRao8ABIe3ug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nuxt/kit": "^3.2.2", + "basic-auth": "^2.0.1", + "defu": "^6.1.1", + "limiter": "^2.1.0", + "memory-cache": "^0.2.0", + "nuxt-csurf": "^1.1.0", + "pathe": "^1.0.0", + "xss": "^1.0.14" + } + }, + "node_modules/nuxt-typed-router": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/nuxt-typed-router/-/nuxt-typed-router-3.2.5.tgz", + "integrity": "sha512-E2CPfEioyzeISaVSlDottH1sV41wog952nfoChAj9tGLAc76NUHpbKeZ2SCGma3HUjozwehiiqffmGq/LTCEJA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nuxt/kit": "^3.6.1", + "chalk": "^5.3.0", + "defu": "^6.1.2", + "lodash-es": "^4.17.21", + "log-symbols": "^5.1.0", + "mkdirp": "^3.0.1", + "nanoid": "^4.0.2", + "pathe": "1.1.0" + } + }, + "node_modules/nuxt-typed-router/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/nuxt-typed-router/node_modules/pathe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.0.tgz", + "integrity": "sha512-ODbEPR0KKHqECXW1GoxdDb+AZvULmXjVPy4rt+pGo2+TnjJTIPJQSVS6N63n8T2Ip+syHhbn52OewKicV0373w==", + "dev": true, + "license": "MIT" + }, + "node_modules/nuxt/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nypm": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.2.2.tgz", + "integrity": "sha512-O7bumfWgUXlJefT1Y41SF4vsCvzeUYmnKABuOKStheCObzrkWPDmqJc+RJVU+57oFu9bITcrUq8sKFIHgjCnTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "execa": "^7.1.1" + }, + "engines": { + "node": "^14.16.0 || >=16.10.0" + } + }, + "node_modules/nypm/node_modules/execa": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", + "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^4.3.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": "^14.18.0 || ^16.14.0 || >=18.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/nypm/node_modules/human-signals": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", + "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/nypm/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nypm/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nypm/node_modules/npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nypm/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nypm/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nypm/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", + "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz", + "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.hasown": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz", + "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==", + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", + "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ofetch": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.1.1.tgz", + "integrity": "sha512-SSMoktrp9SNLi20BWfB/BnnKcL0RDigXThD/mZBeQxkIRv1xrd9183MtLdsqRYLYSqW0eTr5t8w8MqjNhvoOQQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "destr": "^2.0.0", + "node-fetch-native": "^1.2.0", + "ufo": "^1.1.2" + } + }, + "node_modules/ohash": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/ohash/-/ohash-1.1.2.tgz", + "integrity": "sha512-9CIOSq5945rI045GFtcO3uudyOkYVY1nyfFxVQp+9BRgslr8jPNiSSrsFGg/BNTUFOLqx0P5tng6G32brIPw0w==", + "license": "MIT" + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/only": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/only/-/only-0.0.2.tgz", + "integrity": "sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==", + "dev": true + }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open/node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/openapi-typescript": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/openapi-typescript/-/openapi-typescript-6.4.0.tgz", + "integrity": "sha512-qTa5HGcVdTic2zmvC+aE3tEJqFUZGkXFk8ygAexTPzsHY3a0etay8bBSQjdNP4ZI8TaA+gtHJtTKvhkUhJd6Jw==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-colors": "^4.1.3", + "fast-glob": "^3.3.0", + "js-yaml": "^4.1.0", + "supports-color": "^9.4.0", + "undici": "^5.22.1", + "yargs-parser": "^21.1.1" + }, + "bin": { + "openapi-typescript": "bin/cli.js" + } + }, + "node_modules/openapi-typescript/node_modules/supports-color": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.4.0.tgz", + "integrity": "sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/orderedmap": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/orderedmap/-/orderedmap-2.1.1.tgz", + "integrity": "sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==", + "license": "MIT" + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/parchment": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/parchment/-/parchment-1.1.4.tgz", + "integrity": "sha512-J5FBQt/pM2inLzg4hEWmzQx/8h8D0CiDxaG3vyp9rKrQRSDgBlhjdP5jQGgosEajXPSQouXGHOmVdgo7QmJuOg==", + "license": "BSD-3-Clause" + }, + "node_modules/parent-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-2.0.0.tgz", + "integrity": "sha512-uo0Z9JJeWzv8BG+tRcapBKNJ0dro9cLyczGzulS6EfeyAdeC9sbojtW6XwvYxJkEne9En+J2XEl4zyglVeIwFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/parse-git-config": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/parse-git-config/-/parse-git-config-3.0.0.tgz", + "integrity": "sha512-wXoQGL1D+2COYWCD35/xbiKma1Z15xvZL8cI25wvxzled58V51SJM04Urt/uznS900iQor7QO04SgdfT/XlbuA==", + "dev": true, + "license": "MIT", + "dependencies": { + "git-config-path": "^2.0.0", + "ini": "^1.3.5" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "license": "MIT", + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/parse-package-name": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/parse-package-name/-/parse-package-name-0.1.0.tgz", + "integrity": "sha512-OT2+32knn014ggXMpGjZeHHsTYwOvHmRAMFtVBZstWAnR4UVIOw+JOhWZUCv5JwZQAMiisfdF2K5SyGI5OXXIg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/parse-path": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-7.0.0.tgz", + "integrity": "sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog==", + "dev": true, + "license": "MIT", + "dependencies": { + "protocols": "^2.0.0" + } + }, + "node_modules/parse-url": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-8.1.0.tgz", + "integrity": "sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w==", + "dev": true, + "license": "MIT", + "dependencies": { + "parse-path": "^7.0.0" + } + }, + "node_modules/parse5": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", + "license": "MIT", + "dependencies": { + "entities": "^6.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5/node_modules/entities": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", + "license": "(WTFPL OR MIT)" + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "license": "MIT" + }, + "node_modules/path-to-regexp": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz", + "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/pathe": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.1.tgz", + "integrity": "sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==", + "license": "MIT" + }, + "node_modules/perfect-debounce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz", + "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", + "license": "MIT" + }, + "node_modules/perfect-scrollbar": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/perfect-scrollbar/-/perfect-scrollbar-1.5.5.tgz", + "integrity": "sha512-dzalfutyP3e/FOpdlhVryN4AJ5XDVauVWxybSkLZmakFE2sS3y3pc4JnSprw8tGmHvkaG5Edr5T7LBTZ+WWU2g==", + "license": "MIT" + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "license": "MIT", + "optional": true + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/pinia": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.1.6.tgz", + "integrity": "sha512-bIU6QuE5qZviMmct5XwCesXelb5VavdOWKWaB17ggk++NUwQWWbP5YnsONTk3b752QkW9sACiR81rorpeOMSvQ==", + "license": "MIT", + "dependencies": { + "@vue/devtools-api": "^6.5.0", + "vue-demi": ">=0.14.5" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "@vue/composition-api": "^1.4.0", + "typescript": ">=4.4.4", + "vue": "^2.6.14 || ^3.3.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/pinia-plugin-persistedstate": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/pinia-plugin-persistedstate/-/pinia-plugin-persistedstate-3.2.0.tgz", + "integrity": "sha512-tZbNGf2vjAQcIm7alK40sE51Qu/m9oWr+rEgNm/2AWr1huFxj72CjvpQcIQzMknDBJEkQznCLAGtJTIcLKrKdw==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "pinia": "^2.0.0" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-types": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.3.tgz", + "integrity": "sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==", + "license": "MIT", + "dependencies": { + "jsonc-parser": "^3.2.0", + "mlly": "^1.2.0", + "pathe": "^1.1.0" + } + }, + "node_modules/pkg-up": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", + "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "license": "MIT", + "dependencies": { + "find-up": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-up/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "license": "MIT", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "license": "MIT", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-up/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "license": "MIT", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-up/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/portfinder": { + "version": "1.0.32", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", + "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "async": "^2.6.4", + "debug": "^3.2.7", + "mkdirp": "^0.5.6" + }, + "engines": { + "node": ">= 0.12.0" + } + }, + "node_modules/portfinder/node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/portfinder/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/portfinder/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/postcss": { + "version": "8.4.27", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.27.tgz", + "integrity": "sha512-gY/ACJtJPSmUFPDCHtX78+01fHa64FaU4zaaWfuh1MhGJISufJAH4cun6k/8fwsHYeK4UQmENQK+tRLCFJE8JQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-calc": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-9.0.1.tgz", + "integrity": "sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.11", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.2" + } + }, + "node_modules/postcss-colormin": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-6.0.0.tgz", + "integrity": "sha512-EuO+bAUmutWoZYgHn2T1dG1pPqHU6L4TjzPlu4t1wZGXQ/fxV16xg2EJmYi0z+6r+MGV1yvpx1BHkUaRrPa2bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "colord": "^2.9.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-convert-values": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-6.0.0.tgz", + "integrity": "sha512-U5D8QhVwqT++ecmy8rnTb+RL9n/B806UVaS3m60lqle4YDFcpbS3ae5bTQIh3wOGUSDHSEtMYLs/38dNG7EYFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-custom-properties": { + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-13.3.0.tgz", + "integrity": "sha512-q4VgtIKSy5+KcUvQ0WxTjDy9DZjQ5VCXAZ9+tT9+aPMbA0z6s2t1nMw0QHszru1ib5ElkXl9JUpYYU37VVUs7g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/cascade-layer-name-parser": "^1.0.4", + "@csstools/css-parser-algorithms": "^2.3.1", + "@csstools/css-tokenizer": "^2.2.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-discard-comments": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-6.0.0.tgz", + "integrity": "sha512-p2skSGqzPMZkEQvJsgnkBhCn8gI7NzRH2683EEjrIkoMiwRELx68yoUJ3q3DGSGuQ8Ug9Gsn+OuDr46yfO+eFw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.0.tgz", + "integrity": "sha512-bU1SXIizMLtDW4oSsi5C/xHKbhLlhek/0/yCnoMQany9k3nPBq+Ctsv/9oMmyqbR96HYHxZcHyK2HR5P/mqoGA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-empty": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-6.0.0.tgz", + "integrity": "sha512-b+h1S1VT6dNhpcg+LpyiUrdnEZfICF0my7HAKgJixJLW7BnNmpRH34+uw/etf5AhOlIhIAuXApSzzDzMI9K/gQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-6.0.0.tgz", + "integrity": "sha512-4VELwssYXDFigPYAZ8vL4yX4mUepF/oCBeeIT4OXsJPYOtvJumyz9WflmJWTfDwCUcpDR+z0zvCWBXgTx35SVw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-import-resolver": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-import-resolver/-/postcss-import-resolver-2.0.0.tgz", + "integrity": "sha512-y001XYgGvVwgxyxw9J1a5kqM/vtmIQGzx34g0A0Oy44MFcy/ZboZw1hu/iN3VYFjSTRzbvd7zZJJz0Kh0AGkTw==", + "license": "MIT", + "dependencies": { + "enhanced-resolve": "^4.1.1" + } + }, + "node_modules/postcss-import-resolver/node_modules/enhanced-resolve": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", + "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", + "dependencies": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/postcss-import-resolver/node_modules/tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.1.tgz", + "integrity": "sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "lilconfig": "^2.0.5", + "yaml": "^2.1.1" + }, + "engines": { + "node": ">= 14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-load-config/node_modules/yaml": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz", + "integrity": "sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 14" + } + }, + "node_modules/postcss-loader": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-4.3.0.tgz", + "integrity": "sha512-M/dSoIiNDOo8Rk0mUqoj4kpGq91gcxCfb9PoyZVdZ76/AuhxylHDYZblNE8o+EQ9AMSASeMFEKxZf5aU6wlx1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.4", + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0", + "semver": "^7.3.4" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/postcss-loader/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/postcss-loader/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/postcss-loader/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, + "node_modules/postcss-merge-longhand": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-6.0.0.tgz", + "integrity": "sha512-4VSfd1lvGkLTLYcxFuISDtWUfFS4zXe0FpF149AyziftPFQIWxjvFSKhA4MIxMe4XM3yTDgQMbSNgzIVxChbIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^6.0.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-merge-rules": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-6.0.1.tgz", + "integrity": "sha512-a4tlmJIQo9SCjcfiCcCMg/ZCEe0XTkl/xK0XHBs955GWg9xDX3NwP9pwZ78QUOWB8/0XCjZeJn98Dae0zg6AAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^4.0.0", + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-6.0.0.tgz", + "integrity": "sha512-zNRAVtyh5E8ndZEYXA4WS8ZYsAp798HiIQ1V2UF/C/munLp2r1UGHwf1+6JFu7hdEhJFN+W1WJQKBrtjhFgEnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-gradients": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-6.0.0.tgz", + "integrity": "sha512-wO0F6YfVAR+K1xVxF53ueZJza3L+R3E6cp0VwuXJQejnNUH0DjcAFe3JEBeTY1dLwGa0NlDWueCA1VlEfiKgAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "colord": "^2.9.1", + "cssnano-utils": "^4.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-params": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-6.0.0.tgz", + "integrity": "sha512-Fz/wMQDveiS0n5JPcvsMeyNXOIMrwF88n7196puSuQSWSa+/Ofc1gDOSY2xi8+A4PqB5dlYCKk/WfqKqsI+ReQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "cssnano-utils": "^4.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-6.0.0.tgz", + "integrity": "sha512-ec/q9JNCOC2CRDNnypipGfOhbYPuUkewGwLnbv6omue/PSASbHSU7s6uSQ0tcFRVv731oMIx8k0SP4ZX6be/0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz", + "integrity": "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dev": true, + "license": "ISC", + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-nested": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", + "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.11" + }, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-nesting": { + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-11.3.0.tgz", + "integrity": "sha512-JlS10AQm/RzyrUGgl5irVkAlZYTJ99mNueUl+Qab+TcHhVedLiylWVkKBhRale+rS9yWIJK48JVzQlq3LcSdeA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "CC0-1.0", + "dependencies": { + "@csstools/selector-specificity": "^2.0.0", + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-6.0.0.tgz", + "integrity": "sha512-cqundwChbu8yO/gSWkuFDmKrCZ2vJzDAocheT2JTd0sFNA4HMGoKMfbk2B+J0OmO0t5GUkiAkSM5yF2rSLUjgQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.0.tgz", + "integrity": "sha512-Qyt5kMrvy7dJRO3OjF7zkotGfuYALETZE+4lk66sziWSPzlBEt7FrUshV6VLECkI4EN8Z863O6Nci4NXQGNzYw==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-positions": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-6.0.0.tgz", + "integrity": "sha512-mPCzhSV8+30FZyWhxi6UoVRYd3ZBJgTRly4hOkaSifo0H+pjDYcii/aVT4YE6QpOil15a5uiv6ftnY3rm0igPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.0.tgz", + "integrity": "sha512-50W5JWEBiOOAez2AKBh4kRFm2uhrT3O1Uwdxz7k24aKtbD83vqmcVG7zoIwo6xI2FZ/HDlbrCopXhLeTpQib1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-string": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-6.0.0.tgz", + "integrity": "sha512-KWkIB7TrPOiqb8ZZz6homet2KWKJwIlysF5ICPZrXAylGe2hzX/HSf4NTX2rRPJMAtlRsj/yfkrWGavFuB+c0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.0.tgz", + "integrity": "sha512-tpIXWciXBp5CiFs8sem90IWlw76FV4oi6QEWfQwyeREVwUy39VSeSqjAT7X0Qw650yAimYW5gkl2Gd871N5SQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-unicode": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-6.0.0.tgz", + "integrity": "sha512-ui5crYkb5ubEUDugDc786L/Me+DXp2dLg3fVJbqyAl0VPkAeALyAijF2zOsnZyaS1HyfPuMH0DwyY18VMFVNkg==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-url": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-6.0.0.tgz", + "integrity": "sha512-98mvh2QzIPbb02YDIrYvAg4OUzGH7s1ZgHlD3fIdTHLgPLRpv1ZTKJDnSAKr4Rt21ZQFzwhGMXxpXlfrUBKFHw==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-whitespace": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.0.tgz", + "integrity": "sha512-7cfE1AyLiK0+ZBG6FmLziJzqQCpTQY+8XjMhMAz8WSBSCsCNNUKujgIgjCAmDT3cJ+3zjTXFkoD15ZPsckArVw==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-ordered-values": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-6.0.0.tgz", + "integrity": "sha512-K36XzUDpvfG/nWkjs6d1hRBydeIxGpKS2+n+ywlKPzx1nMYDYpoGbcjhj5AwVYJK1qV2/SDoDEnHzlPD6s3nMg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssnano-utils": "^4.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-initial": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-6.0.0.tgz", + "integrity": "sha512-s2UOnidpVuXu6JiiI5U+fV2jamAw5YNA9Fdi/GRK0zLDLCfXmSGqQtzpUPtfN66RtCbb9fFHoyZdQaxOB3WxVA==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.0.tgz", + "integrity": "sha512-FQ9f6xM1homnuy1wLe9lP1wujzxnwt1EwiigtWwuyf8FsqqXUDUp2Ulxf9A5yjlUOTdCJO6lonYjg1mgqIIi2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.13", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", + "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-svgo": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-6.0.0.tgz", + "integrity": "sha512-r9zvj/wGAoAIodn84dR/kFqwhINp5YsJkLoujybWG59grR/IHx+uQ2Zo+IcOwM0jskfYX3R0mo+1Kip1VSNcvw==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "svgo": "^3.0.2" + }, + "engines": { + "node": "^14 || ^16 || >= 18" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-unique-selectors": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-6.0.0.tgz", + "integrity": "sha512-EPQzpZNxOxP7777t73RQpZE5e9TrnCrkvp7AH7a0l89JmZiPnS82y216JowHXwpBCQitfyxrof9TK3rYbi7/Yw==", + "dev": true, + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-url": { + "version": "10.1.3", + "resolved": "https://registry.npmjs.org/postcss-url/-/postcss-url-10.1.3.tgz", + "integrity": "sha512-FUzyxfI5l2tKmXdYc6VTu3TWZsInayEKPbiyW+P6vmmIrrb4I6CGX0BFoewgYHLK+oIL5FECEK02REYRpBvUCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "make-dir": "~3.1.0", + "mime": "~2.5.2", + "minimatch": "~3.0.4", + "xxhashjs": "~0.2.2" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-url/node_modules/mime": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", + "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/postcss-url/node_modules/minimatch": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", + "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "license": "MIT" + }, + "node_modules/postcss/node_modules/nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/preact": { + "version": "10.12.1", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.12.1.tgz", + "integrity": "sha512-l8386ixSsBdbreOAkqtrwqHwdvR35ID8c3rKPa8lCWuO86dBi32QWHV4vfsZK1utLLFMvw+Z5Ad4XLkZzchscg==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/preact" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "license": "MIT", + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/pretty-bytes": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-6.1.1.tgz", + "integrity": "sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/prism-es6": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/prism-es6/-/prism-es6-1.2.0.tgz", + "integrity": "sha512-A8JV9G2zKM8PWksT7YJcmnaWtYO6C9hSfxM/xv0RxB2aNc8rjv30WakzIw1gWyqLi2eiqquo2KmS7orxqlm+yg==", + "license": "ISC" + }, + "node_modules/prisma": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-5.1.1.tgz", + "integrity": "sha512-WJFG/U7sMmcc6TjJTTifTfpI6Wjoh55xl4AzopVwAdyK68L9/ogNo8QQ2cxuUjJf/Wa82z/uhyh3wMzvRIBphg==", + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@prisma/engines": "5.1.1" + }, + "bin": { + "prisma": "build/index.js" + }, + "engines": { + "node": ">=16.13" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "license": "MIT" + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prosemirror-changeset": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/prosemirror-changeset/-/prosemirror-changeset-2.3.1.tgz", + "integrity": "sha512-j0kORIBm8ayJNl3zQvD1TTPHJX3g042et6y/KQhZhnPrruO8exkTgG8X+NRpj7kIyMMEx74Xb3DyMIBtO0IKkQ==", + "license": "MIT", + "dependencies": { + "prosemirror-transform": "^1.0.0" + } + }, + "node_modules/prosemirror-collab": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/prosemirror-collab/-/prosemirror-collab-1.3.1.tgz", + "integrity": "sha512-4SnynYR9TTYaQVXd/ieUvsVV4PDMBzrq2xPUWutHivDuOshZXqQ5rGbZM84HEaXKbLdItse7weMGOUdDVcLKEQ==", + "license": "MIT", + "dependencies": { + "prosemirror-state": "^1.0.0" + } + }, + "node_modules/prosemirror-commands": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/prosemirror-commands/-/prosemirror-commands-1.7.1.tgz", + "integrity": "sha512-rT7qZnQtx5c0/y/KlYaGvtG411S97UaL6gdp6RIZ23DLHanMYLyfGBV5DtSnZdthQql7W+lEVbpSfwtO8T+L2w==", + "license": "MIT", + "dependencies": { + "prosemirror-model": "^1.0.0", + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.10.2" + } + }, + "node_modules/prosemirror-dropcursor": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/prosemirror-dropcursor/-/prosemirror-dropcursor-1.8.2.tgz", + "integrity": "sha512-CCk6Gyx9+Tt2sbYk5NK0nB1ukHi2ryaRgadV/LvyNuO3ena1payM2z6Cg0vO1ebK8cxbzo41ku2DE5Axj1Zuiw==", + "license": "MIT", + "dependencies": { + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.1.0", + "prosemirror-view": "^1.1.0" + } + }, + "node_modules/prosemirror-gapcursor": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/prosemirror-gapcursor/-/prosemirror-gapcursor-1.3.2.tgz", + "integrity": "sha512-wtjswVBd2vaQRrnYZaBCbyDqr232Ed4p2QPtRIUK5FuqHYKGWkEwl08oQM4Tw7DOR0FsasARV5uJFvMZWxdNxQ==", + "license": "MIT", + "dependencies": { + "prosemirror-keymap": "^1.0.0", + "prosemirror-model": "^1.0.0", + "prosemirror-state": "^1.0.0", + "prosemirror-view": "^1.0.0" + } + }, + "node_modules/prosemirror-history": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/prosemirror-history/-/prosemirror-history-1.4.1.tgz", + "integrity": "sha512-2JZD8z2JviJrboD9cPuX/Sv/1ChFng+xh2tChQ2X4bB2HeK+rra/bmJ3xGntCcjhOqIzSDG6Id7e8RJ9QPXLEQ==", + "license": "MIT", + "dependencies": { + "prosemirror-state": "^1.2.2", + "prosemirror-transform": "^1.0.0", + "prosemirror-view": "^1.31.0", + "rope-sequence": "^1.3.0" + } + }, + "node_modules/prosemirror-inputrules": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/prosemirror-inputrules/-/prosemirror-inputrules-1.5.0.tgz", + "integrity": "sha512-K0xJRCmt+uSw7xesnHmcn72yBGTbY45vm8gXI4LZXbx2Z0jwh5aF9xrGQgrVPu0WbyFVFF3E/o9VhJYz6SQWnA==", + "license": "MIT", + "dependencies": { + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.0.0" + } + }, + "node_modules/prosemirror-keymap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/prosemirror-keymap/-/prosemirror-keymap-1.2.3.tgz", + "integrity": "sha512-4HucRlpiLd1IPQQXNqeo81BGtkY8Ai5smHhKW9jjPKRc2wQIxksg7Hl1tTI2IfT2B/LgX6bfYvXxEpJl7aKYKw==", + "license": "MIT", + "dependencies": { + "prosemirror-state": "^1.0.0", + "w3c-keyname": "^2.2.0" + } + }, + "node_modules/prosemirror-markdown": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/prosemirror-markdown/-/prosemirror-markdown-1.13.2.tgz", + "integrity": "sha512-FPD9rHPdA9fqzNmIIDhhnYQ6WgNoSWX9StUZ8LEKapaXU9i6XgykaHKhp6XMyXlOWetmaFgGDS/nu/w9/vUc5g==", + "license": "MIT", + "dependencies": { + "@types/markdown-it": "^14.0.0", + "markdown-it": "^14.0.0", + "prosemirror-model": "^1.25.0" + } + }, + "node_modules/prosemirror-menu": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/prosemirror-menu/-/prosemirror-menu-1.2.5.tgz", + "integrity": "sha512-qwXzynnpBIeg1D7BAtjOusR+81xCp53j7iWu/IargiRZqRjGIlQuu1f3jFi+ehrHhWMLoyOQTSRx/IWZJqOYtQ==", + "license": "MIT", + "dependencies": { + "crelt": "^1.0.0", + "prosemirror-commands": "^1.0.0", + "prosemirror-history": "^1.0.0", + "prosemirror-state": "^1.0.0" + } + }, + "node_modules/prosemirror-model": { + "version": "1.25.1", + "resolved": "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.25.1.tgz", + "integrity": "sha512-AUvbm7qqmpZa5d9fPKMvH1Q5bqYQvAZWOGRvxsB6iFLyycvC9MwNemNVjHVrWgjaoxAfY8XVg7DbvQ/qxvI9Eg==", + "license": "MIT", + "dependencies": { + "orderedmap": "^2.0.0" + } + }, + "node_modules/prosemirror-schema-basic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/prosemirror-schema-basic/-/prosemirror-schema-basic-1.2.4.tgz", + "integrity": "sha512-ELxP4TlX3yr2v5rM7Sb70SqStq5NvI15c0j9j/gjsrO5vaw+fnnpovCLEGIcpeGfifkuqJwl4fon6b+KdrODYQ==", + "license": "MIT", + "dependencies": { + "prosemirror-model": "^1.25.0" + } + }, + "node_modules/prosemirror-schema-list": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/prosemirror-schema-list/-/prosemirror-schema-list-1.5.1.tgz", + "integrity": "sha512-927lFx/uwyQaGwJxLWCZRkjXG0p48KpMj6ueoYiu4JX05GGuGcgzAy62dfiV8eFZftgyBUvLx76RsMe20fJl+Q==", + "license": "MIT", + "dependencies": { + "prosemirror-model": "^1.0.0", + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.7.3" + } + }, + "node_modules/prosemirror-state": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/prosemirror-state/-/prosemirror-state-1.4.3.tgz", + "integrity": "sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q==", + "license": "MIT", + "dependencies": { + "prosemirror-model": "^1.0.0", + "prosemirror-transform": "^1.0.0", + "prosemirror-view": "^1.27.0" + } + }, + "node_modules/prosemirror-tables": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/prosemirror-tables/-/prosemirror-tables-1.7.1.tgz", + "integrity": "sha512-eRQ97Bf+i9Eby99QbyAiyov43iOKgWa7QCGly+lrDt7efZ1v8NWolhXiB43hSDGIXT1UXgbs4KJN3a06FGpr1Q==", + "license": "MIT", + "dependencies": { + "prosemirror-keymap": "^1.2.2", + "prosemirror-model": "^1.25.0", + "prosemirror-state": "^1.4.3", + "prosemirror-transform": "^1.10.3", + "prosemirror-view": "^1.39.1" + } + }, + "node_modules/prosemirror-trailing-node": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/prosemirror-trailing-node/-/prosemirror-trailing-node-3.0.0.tgz", + "integrity": "sha512-xiun5/3q0w5eRnGYfNlW1uU9W6x5MoFKWwq/0TIRgt09lv7Hcser2QYV8t4muXbEr+Fwo0geYn79Xs4GKywrRQ==", + "license": "MIT", + "dependencies": { + "@remirror/core-constants": "3.0.0", + "escape-string-regexp": "^4.0.0" + }, + "peerDependencies": { + "prosemirror-model": "^1.22.1", + "prosemirror-state": "^1.4.2", + "prosemirror-view": "^1.33.8" + } + }, + "node_modules/prosemirror-transform": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/prosemirror-transform/-/prosemirror-transform-1.10.4.tgz", + "integrity": "sha512-pwDy22nAnGqNR1feOQKHxoFkkUtepoFAd3r2hbEDsnf4wp57kKA36hXsB3njA9FtONBEwSDnDeCiJe+ItD+ykw==", + "license": "MIT", + "dependencies": { + "prosemirror-model": "^1.21.0" + } + }, + "node_modules/prosemirror-view": { + "version": "1.39.3", + "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.39.3.tgz", + "integrity": "sha512-bY/7kg0LzRE7ytR0zRdSMWX3sknEjw68l836ffLPMh0OG3OYnNuBDUSF3v0vjvnzgYjgY9ZH/RypbARURlcMFA==", + "license": "MIT", + "dependencies": { + "prosemirror-model": "^1.20.0", + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.1.0" + } + }, + "node_modules/protocols": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/protocols/-/protocols-2.0.1.tgz", + "integrity": "sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "license": "MIT" + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/quill": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/quill/-/quill-1.3.7.tgz", + "integrity": "sha512-hG/DVzh/TiknWtE6QmWAF/pxoZKYxfe3J/d/+ShUWkDvvkZQVTPeVmUJVu1uE6DDooC4fWTiCLh84ul89oNz5g==", + "license": "BSD-3-Clause", + "dependencies": { + "clone": "^2.1.1", + "deep-equal": "^1.0.1", + "eventemitter3": "^2.0.3", + "extend": "^3.0.2", + "parchment": "^1.1.4", + "quill-delta": "^3.6.2" + } + }, + "node_modules/quill-delta": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-4.2.2.tgz", + "integrity": "sha512-qjbn82b/yJzOjstBgkhtBjN2TNK+ZHP/BgUQO+j6bRhWQQdmj2lH6hXG7+nwwLF41Xgn//7/83lxs9n2BkTtTg==", + "license": "MIT", + "dependencies": { + "fast-diff": "1.2.0", + "lodash.clonedeep": "^4.5.0", + "lodash.isequal": "^4.5.0" + } + }, + "node_modules/quill/node_modules/eventemitter3": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-2.0.3.tgz", + "integrity": "sha512-jLN68Dx5kyFHaePoXWPsCGW5qdyZQtLYHkxkg02/Mz6g0kYpDx4FyP6XfArhQdlOC4b8Mv+EMxPo/8La7Tzghg==", + "license": "MIT" + }, + "node_modules/quill/node_modules/fast-diff": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.2.tgz", + "integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==", + "license": "Apache-2.0" + }, + "node_modules/quill/node_modules/quill-delta": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-3.6.3.tgz", + "integrity": "sha512-wdIGBlcX13tCHOXGMVnnTVFtGRLoP0imqxM696fIPwIf5ODIYUHIvHbZcyvGlZFiFhK5XzDC2lpjbxRhnM05Tg==", + "license": "MIT", + "dependencies": { + "deep-equal": "^1.0.1", + "extend": "^3.0.2", + "fast-diff": "1.1.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/radix3": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/radix3/-/radix3-1.0.1.tgz", + "integrity": "sha512-y+AcwZ3HcUIGc9zGsNVf5+BY/LxL+z+4h4J3/pp8jxSmy1STaCocPS3qrj4tA5ehUSzqtqK+0Aygvz/r/8vy4g==", + "dev": true, + "license": "MIT" + }, + "node_modules/raf": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", + "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", + "license": "MIT", + "optional": true, + "dependencies": { + "performance-now": "^2.1.0" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/rc9": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/rc9/-/rc9-2.1.1.tgz", + "integrity": "sha512-lNeOl38Ws0eNxpO3+wD1I9rkHGQyj1NU1jlzv4go2CtEnEQEUfqnIvZG7W+bC/aXdJ27n5x/yUjb6RoT9tko+Q==", + "license": "MIT", + "dependencies": { + "defu": "^6.1.2", + "destr": "^2.0.0", + "flat": "^5.0.2" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "license": "MIT", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/read-cache/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdir-glob": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz", + "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.1.0" + } + }, + "node_modules/readdir-glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/readdir-glob/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/redis-errors": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz", + "integrity": "sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/redis-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz", + "integrity": "sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==", + "dev": true, + "license": "MIT", + "dependencies": { + "redis-errors": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true, + "license": "MIT" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", + "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==", + "license": "MIT" + }, + "node_modules/regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", + "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/replace-in-file": { + "version": "6.3.5", + "resolved": "https://registry.npmjs.org/replace-in-file/-/replace-in-file-6.3.5.tgz", + "integrity": "sha512-arB9d3ENdKva2fxRnSjwBEXfK1npgyci7ZZuwysgAp7ORjHSyxz6oqIjTEv8R0Ydl4Ll7uOAZXL4vbkhGIizCg==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.2", + "glob": "^7.2.0", + "yargs": "^17.2.1" + }, + "bin": { + "replace-in-file": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/replace-in-file/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/req-all": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/req-all/-/req-all-0.1.0.tgz", + "integrity": "sha512-ZdvPr8uXy9ujX3KujwE2P1HWkMYgogIhqeAeyb47MqWjSfyxERSm0TNbN/IapCCmWDufXab04AYrRgObaJCJ6Q==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/resolve": { + "version": "1.22.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz", + "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-path": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/resolve-path/-/resolve-path-1.4.0.tgz", + "integrity": "sha512-i1xevIst/Qa+nA9olDxLWnLk8YZbi8R/7JPbCMcgyWaFR6bKWaexgJgEB5oc2PKMjYdrHynyz0NY+if+H98t1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "http-errors": "~1.6.2", + "path-is-absolute": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/resolve-path/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/resolve-path/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/resolve-path/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true, + "license": "ISC" + }, + "node_modules/resolve-path/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/resolve-path/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rgbcolor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgbcolor/-/rgbcolor-1.0.1.tgz", + "integrity": "sha512-9aZLIrhRaD97sgVhtJOW6ckOEh6/GnvQtdVNfdZ6s67+3/XwLS9lBcQYzEEhYVeUowN7pRzMLsyGhK2i/xvWbw==", + "license": "MIT OR SEE LICENSE IN FEEL-FREE.md", + "optional": true, + "engines": { + "node": ">= 0.8.15" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "3.27.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.27.2.tgz", + "integrity": "sha512-YGwmHf7h2oUHkVBT248x0yt6vZkYQ3/rvE5iQuVBh3WO8GcJ6BNeOkpoX1yMHIiBm18EMLjBPIoUDkhgnyxGOQ==", + "dev": true, + "license": "MIT", + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/rollup-plugin-terser": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", + "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" + }, + "peerDependencies": { + "rollup": "^2.0.0" + } + }, + "node_modules/rollup-plugin-terser/node_modules/serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/rollup-plugin-visualizer": { + "version": "5.9.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.9.2.tgz", + "integrity": "sha512-waHktD5mlWrYFrhOLbti4YgQCn1uR24nYsNuXxg7LkPH8KdTXVWR9DNY1WU0QqokyMixVXJS4J04HNrVTMP01A==", + "dev": true, + "license": "MIT", + "dependencies": { + "open": "^8.4.0", + "picomatch": "^2.3.1", + "source-map": "^0.7.4", + "yargs": "^17.5.1" + }, + "bin": { + "rollup-plugin-visualizer": "dist/bin/cli.js" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "rollup": "2.x || 3.x" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/rope-sequence": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/rope-sequence/-/rope-sequence-1.3.4.tgz", + "integrity": "sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==", + "license": "MIT" + }, + "node_modules/rrweb-cssom": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", + "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==", + "license": "MIT" + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.0.tgz", + "integrity": "sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/sass": { + "version": "1.64.2", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.64.2.tgz", + "integrity": "sha512-TnDlfc+CRnUAgLO9D8cQLFu/GIjJIzJCGkE7o4ekIGQOH7T3GetiRR/PsTWJUHhkzcSPrARkPI+gNWn5alCzDg==", + "license": "MIT", + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", + "license": "ISC", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=v12.22.7" + } + }, + "node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/screenfull": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/screenfull/-/screenfull-5.2.0.tgz", + "integrity": "sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/scule": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/scule/-/scule-1.0.0.tgz", + "integrity": "sha512-4AsO/FrViE/iDNEPaAQlb77tf0csuq27EsVpy6ett584EcRTp6pTDLoGWVxCD77y5iU5FauOvhsI4o1APwPoSQ==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/send/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-placeholder": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/serve-placeholder/-/serve-placeholder-2.0.1.tgz", + "integrity": "sha512-rUzLlXk4uPFnbEaIz3SW8VISTxMuONas88nYWjAWaM2W9VDbt9tyFOr3lq8RhVOFrT3XISoBw8vni5una8qMnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "defu": "^6.0.0" + } + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true, + "license": "ISC" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true, + "license": "ISC" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true, + "license": "MIT" + }, + "node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/smob": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/smob/-/smob-1.4.0.tgz", + "integrity": "sha512-MqR3fVulhjWuRNSMydnTlweu38UhQ0HXM4buStD/S3mc/BzX3CuM9OmhyQpmtYCvoYdl5ris6TI0ZqH355Ymqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/sortablejs": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.14.0.tgz", + "integrity": "sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w==", + "license": "MIT" + }, + "node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">= 8" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "deprecated": "Please use @jridgewell/sourcemap-codec instead", + "dev": true, + "license": "MIT" + }, + "node_modules/ssr-window": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/ssr-window/-/ssr-window-4.0.2.tgz", + "integrity": "sha512-ISv/Ch+ig7SOtw7G2+qkwfVASzazUnvlDTwypdLoPoySv+6MqlOV10VwPSE6EWkGjhW50lUmghPmpYZXMu/+AQ==", + "license": "MIT" + }, + "node_modules/stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "deprecated": "Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility", + "license": "MIT" + }, + "node_modules/stackblur-canvas": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/stackblur-canvas/-/stackblur-canvas-2.7.0.tgz", + "integrity": "sha512-yf7OENo23AGJhBriGx0QivY5JP6Y1HbrrDI6WLt6C5auYZXlQrheoY8hD4ibekFKz1HOfE48Ww8kMWMnJD/zcQ==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.1.14" + } + }, + "node_modules/standard-as-callback": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/standard-as-callback/-/standard-as-callback-2.1.0.tgz", + "integrity": "sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==", + "dev": true, + "license": "MIT" + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/std-env": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.3.3.tgz", + "integrity": "sha512-Rz6yejtVyWnVjC1RFvNmYL10kgjC49EOghxWn0RFqlCHGFpQx+Xe7yW3I4ceK1SGrWIGMjD5Kbue8W/udkbMJg==", + "license": "MIT" + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-natural-compare": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz", + "integrity": "sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==", + "license": "MIT" + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", + "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "regexp.prototype.flags": "^1.4.3", + "side-channel": "^1.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", + "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz", + "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-literal": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-1.3.0.tgz", + "integrity": "sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==", + "license": "MIT", + "dependencies": { + "acorn": "^8.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/style-mod": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.0.3.tgz", + "integrity": "sha512-78Jv8kYJdjbvRwwijtCevYADfsI0lGzYJe4mMFdceO8l75DFFDoqBhR1jVDicDRRaX4//g1u9wKeo+ztc2h1Rw==", + "license": "MIT" + }, + "node_modules/stylehacks": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-6.0.0.tgz", + "integrity": "sha512-+UT589qhHPwz6mTlCLSt/vMNTJx8dopeJlZAlBMJPWA3ORqu6wmQY7FBXf+qD+FsqoBJODyqNxOUP3jdntFRdw==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/sucrase": { + "version": "3.34.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz", + "integrity": "sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "7.1.6", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/sucrase/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/sucrase/node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svg-pathdata": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/svg-pathdata/-/svg-pathdata-6.0.3.tgz", + "integrity": "sha512-qsjeeq5YjBZ5eMdFuUa4ZosMLxgr5RZ+F+Y1OrDhuOCEInRMA3x74XdBtggJcj9kOeInz0WE+LgCPDkZFlBYJw==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", + "dev": true + }, + "node_modules/svg.draggable.js": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/svg.draggable.js/-/svg.draggable.js-2.2.2.tgz", + "integrity": "sha512-JzNHBc2fLQMzYCZ90KZHN2ohXL0BQJGQimK1kGk6AvSeibuKcIdDX9Kr0dT9+UJ5O8nYA0RB839Lhvk4CY4MZw==", + "license": "MIT", + "dependencies": { + "svg.js": "^2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.easing.js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/svg.easing.js/-/svg.easing.js-2.0.0.tgz", + "integrity": "sha512-//ctPdJMGy22YoYGV+3HEfHbm6/69LJUTAqI2/5qBvaNHZ9uUFVC82B0Pl299HzgH13rKrBgi4+XyXXyVWWthA==", + "license": "MIT", + "dependencies": { + "svg.js": ">=2.3.x" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.filter.js": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/svg.filter.js/-/svg.filter.js-2.0.2.tgz", + "integrity": "sha512-xkGBwU+dKBzqg5PtilaTb0EYPqPfJ9Q6saVldX+5vCRy31P6TlRCP3U9NxH3HEufkKkpNgdTLBJnmhDHeTqAkw==", + "license": "MIT", + "dependencies": { + "svg.js": "^2.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.js": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/svg.js/-/svg.js-2.7.1.tgz", + "integrity": "sha512-ycbxpizEQktk3FYvn/8BH+6/EuWXg7ZpQREJvgacqn46gIddG24tNNe4Son6omdXCnSOaApnpZw6MPCBA1dODA==", + "license": "MIT" + }, + "node_modules/svg.pathmorphing.js": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/svg.pathmorphing.js/-/svg.pathmorphing.js-0.1.3.tgz", + "integrity": "sha512-49HWI9X4XQR/JG1qXkSDV8xViuTLIWm/B/7YuQELV5KMOPtXjiwH4XPJvr/ghEDibmLQ9Oc22dpWpG0vUDDNww==", + "license": "MIT", + "dependencies": { + "svg.js": "^2.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.resize.js": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/svg.resize.js/-/svg.resize.js-1.4.3.tgz", + "integrity": "sha512-9k5sXJuPKp+mVzXNvxz7U0uC9oVMQrrf7cFsETznzUDDm0x8+77dtZkWdMfRlmbkEEYvUn9btKuZ3n41oNA+uw==", + "license": "MIT", + "dependencies": { + "svg.js": "^2.6.5", + "svg.select.js": "^2.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.resize.js/node_modules/svg.select.js": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/svg.select.js/-/svg.select.js-2.1.2.tgz", + "integrity": "sha512-tH6ABEyJsAOVAhwcCjF8mw4crjXSI1aa7j2VQR8ZuJ37H2MBUbyeqYr5nEO7sSN3cy9AR9DUwNg0t/962HlDbQ==", + "license": "MIT", + "dependencies": { + "svg.js": "^2.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.select.js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/svg.select.js/-/svg.select.js-3.0.1.tgz", + "integrity": "sha512-h5IS/hKkuVCbKSieR9uQCj9w+zLHoPh+ce19bBYyqF53g6mnPB8sAtIbe1s9dh2S2fCmYX2xel1Ln3PJBbK4kw==", + "license": "MIT", + "dependencies": { + "svg.js": "^2.6.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svgo": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.0.2.tgz", + "integrity": "sha512-Z706C1U2pb1+JGP48fbazf3KxHrWOsLme6Rv7imFBn5EnuanDW1GPaA/P1/dvObE670JDePC3mnj0k0B7P0jjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^5.1.0", + "css-tree": "^2.2.1", + "csso": "^5.0.5", + "picocolors": "^1.0.0" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/svgo" + } + }, + "node_modules/sweetalert2": { + "version": "11.7.20", + "resolved": "https://registry.npmjs.org/sweetalert2/-/sweetalert2-11.7.20.tgz", + "integrity": "sha512-GdU1TkiLpGGC0mcPV8bKmS7G0MR7caxambPkEU8zyepRSNR9EaEvIjNhX5QNkL0VFVzHbI3l12NtuEklkJ0D4Q==", + "license": "MIT", + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/limonte" + } + }, + "node_modules/swiper": { + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/swiper/-/swiper-8.4.7.tgz", + "integrity": "sha512-VwO/KU3i9IV2Sf+W2NqyzwWob4yX9Qdedq6vBtS0rFqJ6Fa5iLUJwxQkuD4I38w0WDJwmFl8ojkdcRFPHWD+2g==", + "funding": [ + { + "type": "patreon", + "url": "https://www.patreon.com/swiperjs" + }, + { + "type": "open_collective", + "url": "http://opencollective.com/swiper" + } + ], + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "dom7": "^4.0.4", + "ssr-window": "^4.0.2" + }, + "engines": { + "node": ">= 4.7.0" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "license": "MIT" + }, + "node_modules/tailwind-config-viewer": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/tailwind-config-viewer/-/tailwind-config-viewer-1.7.2.tgz", + "integrity": "sha512-3JJCeAAlvG+i/EBj+tQb0x4weo30QjdSAo4hlcnVbtD+CkpzHi/UwU9InbPMcYH+ESActoa2kCyjpLEyjEkn0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@koa/router": "^9.0.1", + "commander": "^6.0.0", + "fs-extra": "^9.0.1", + "koa": "^2.12.0", + "koa-static": "^5.0.0", + "open": "^7.0.4", + "portfinder": "^1.0.26", + "replace-in-file": "^6.1.0" + }, + "bin": { + "tailwind-config-viewer": "cli/index.js", + "tailwindcss-config-viewer": "cli/index.js" + }, + "engines": { + "node": ">=8" + }, + "peerDependencies": { + "tailwindcss": "1 || 2 || 2.0.1-compat || 3" + } + }, + "node_modules/tailwind-config-viewer/node_modules/commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/tailwind-config-viewer/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tailwind-config-viewer/node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tailwind-config-viewer/node_modules/open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tailwindcss": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.3.tgz", + "integrity": "sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.2.12", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.18.2", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tailwindcss/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/tar": { + "version": "6.1.15", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.15.tgz", + "integrity": "sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A==", + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" + }, + "node_modules/temp-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/tempy": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz", + "integrity": "sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-stream": "^2.0.0", + "temp-dir": "^2.0.0", + "type-fest": "^0.16.0", + "unique-string": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tempy/node_modules/type-fest": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", + "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terser": { + "version": "5.40.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.40.0.tgz", + "integrity": "sha512-cfeKl/jjwSR5ar7d0FGmave9hFGJT8obyo0z+CrQOylLDbk7X81nPU6vq9VORa5jU30SkDnT2FXjLbR8HLP+xA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.14.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser/node_modules/acorn": { + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/text-segmentation": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/text-segmentation/-/text-segmentation-1.0.3.tgz", + "integrity": "sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==", + "license": "MIT", + "optional": true, + "dependencies": { + "utrie": "^1.0.2" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true, + "license": "MIT" + }, + "node_modules/thememirror": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/thememirror/-/thememirror-2.0.1.tgz", + "integrity": "sha512-d5i6FVvWWPkwrm4cHLI3t9AT1OrkAt7Ig8dtdYSofgF7C/eiyNuq6zQzSTusWTde3jpW9WLvA9J/fzNKMUsd0w==", + "license": "MIT", + "peerDependencies": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0" + } + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tiny-invariant": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz", + "integrity": "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==", + "dev": true, + "license": "MIT" + }, + "node_modules/tippy.js": { + "version": "6.3.7", + "resolved": "https://registry.npmjs.org/tippy.js/-/tippy.js-6.3.7.tgz", + "integrity": "sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==", + "license": "MIT", + "dependencies": { + "@popperjs/core": "^2.9.0" + } + }, + "node_modules/tldts": { + "version": "7.0.17", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-7.0.17.tgz", + "integrity": "sha512-Y1KQBgDd/NUc+LfOtKS6mNsC9CCaH+m2P1RoIZy7RAPo3C3/t8X45+zgut31cRZtZ3xKPjfn3TkGTrctC2TQIQ==", + "license": "MIT", + "dependencies": { + "tldts-core": "^7.0.17" + }, + "bin": { + "tldts": "bin/cli.js" + } + }, + "node_modules/tldts-core": { + "version": "7.0.17", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.0.17.tgz", + "integrity": "sha512-DieYoGrP78PWKsrXr8MZwtQ7GLCUeLxihtjC1jZsW1DnvSMdKPitJSe8OSYDM2u5H6g3kWJZpePqkp43TfLh0g==", + "license": "MIT" + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tough-cookie": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-6.0.0.tgz", + "integrity": "sha512-kXuRi1mtaKMrsLUxz3sQYvVl37B0Ns6MzfrtV5DvJceE9bPyspOqk9xxv7XbZWcfLWbFmm997vl83qUWVJA64w==", + "license": "BSD-3-Clause", + "dependencies": { + "tldts": "^7.0.5" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true, + "license": "MIT" + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/tsconfig-paths": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", + "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", + "license": "MIT", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tslib": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", + "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", + "license": "0BSD" + }, + "node_modules/tsscmp": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", + "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6.x" + } + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "license": "MIT", + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/uc.micro": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", + "license": "MIT" + }, + "node_modules/ufo": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.2.0.tgz", + "integrity": "sha512-RsPyTbqORDNDxqAdQPQBpgqhWle1VcTSou/FraClYlHf6TZnQcGslpLcAphNR+sQW4q5lLWLbOsRlh9j24baQg==", + "license": "MIT" + }, + "node_modules/ultrahtml": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ultrahtml/-/ultrahtml-1.3.0.tgz", + "integrity": "sha512-xmXvE8tC8t4PVqy0/g1fe7H9USY/Brr425q4dD/0QbQMQit7siCtb06+SCqE4GfU24nwsZz8Th1g7L7mm1lL5g==", + "dev": true, + "license": "MIT" + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/uncrypto": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/uncrypto/-/uncrypto-0.1.3.tgz", + "integrity": "sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/unctx": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/unctx/-/unctx-2.3.1.tgz", + "integrity": "sha512-PhKke8ZYauiqh3FEMVNm7ljvzQiph0Mt3GBRve03IJm7ukfaON2OBK795tLwhbyfzknuRRkW0+Ze+CQUmzOZ+A==", + "license": "MIT", + "dependencies": { + "acorn": "^8.8.2", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.0", + "unplugin": "^1.3.1" + } + }, + "node_modules/undici": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.23.0.tgz", + "integrity": "sha512-1D7w+fvRsqlQ9GscLBwcAJinqcZGHUKjbOmXdlE/v8BvEGXjeWAax+341q44EuTcHXXnfyKNbKRq4Lg7OzhMmg==", + "dev": true, + "license": "MIT", + "dependencies": { + "busboy": "^1.6.0" + }, + "engines": { + "node": ">=14.0" + } + }, + "node_modules/unenv": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/unenv/-/unenv-1.6.2.tgz", + "integrity": "sha512-oDbB3arlgPB8Berj4nD7z9ydzF8ITInlBunf0a+3YJkLDhI1DJrUdmv2ovPXAIXvxzW4FTIGtWqng6dk7/kziA==", + "dev": true, + "license": "MIT", + "dependencies": { + "consola": "^3.2.3", + "defu": "^6.1.2", + "mime": "^3.0.0", + "node-fetch-native": "^1.2.0", + "pathe": "^1.1.1" + } + }, + "node_modules/unhead": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/unhead/-/unhead-1.2.2.tgz", + "integrity": "sha512-9wDuiso7YWNe0BTA5NGsHR0dtqn0YrL/5+NumfuXDxxYykavc6N27pzZxTXiuvVHbod8tFicsxA6pC9WhQvzqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@unhead/dom": "1.2.2", + "@unhead/schema": "1.2.2", + "@unhead/shared": "1.2.2", + "hookable": "^5.5.3" + }, + "funding": { + "url": "https://github.com/sponsors/harlan-zw" + } + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unimport": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/unimport/-/unimport-3.1.3.tgz", + "integrity": "sha512-up4TE2yA+nMyyErGTjbYGVw95MriGa2hVRXQ3/JRp7984cwwqULcnBjHaovVpsO8tZc2j0fvgGu9yiBKOyxvYw==", + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^5.0.2", + "escape-string-regexp": "^5.0.0", + "fast-glob": "^3.3.1", + "local-pkg": "^0.4.3", + "magic-string": "^0.30.2", + "mlly": "^1.4.0", + "pathe": "^1.1.1", + "pkg-types": "^1.0.3", + "scule": "^1.0.0", + "strip-literal": "^1.3.0", + "unplugin": "^1.4.0" + } + }, + "node_modules/unimport/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unplugin": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.4.0.tgz", + "integrity": "sha512-5x4eIEL6WgbzqGtF9UV8VEC/ehKptPXDS6L2b0mv4FRMkJxRtjaJfOWDd6a8+kYbqsjklix7yWP0N3SUepjXcg==", + "license": "MIT", + "dependencies": { + "acorn": "^8.9.0", + "chokidar": "^3.5.3", + "webpack-sources": "^3.2.3", + "webpack-virtual-modules": "^0.5.0" + } + }, + "node_modules/unplugin-vue-router": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/unplugin-vue-router/-/unplugin-vue-router-0.6.4.tgz", + "integrity": "sha512-9THVhhtbVFxbsIibjK59oPwMI1UCxRWRPX7azSkTUABsxovlOXJys5SJx0kd/0oKIqNJuYgkRfAgPuO77SqCOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.21.5", + "@rollup/pluginutils": "^5.0.2", + "@vue-macros/common": "^1.3.1", + "ast-walker-scope": "^0.4.1", + "chokidar": "^3.5.3", + "fast-glob": "^3.2.12", + "json5": "^2.2.3", + "local-pkg": "^0.4.3", + "mlly": "^1.2.0", + "pathe": "^1.1.0", + "scule": "^1.0.0", + "unplugin": "^1.3.1", + "yaml": "^2.2.2" + }, + "peerDependencies": { + "vue-router": "^4.1.0" + }, + "peerDependenciesMeta": { + "vue-router": { + "optional": true + } + } + }, + "node_modules/unplugin-vue-router/node_modules/yaml": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz", + "integrity": "sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">= 14" + } + }, + "node_modules/unstorage": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.9.0.tgz", + "integrity": "sha512-VpD8ZEYc/le8DZCrny3bnqKE4ZjioQxBRnWE+j5sGNvziPjeDlaS1NaFFHzl/kkXaO3r7UaF8MGQrs14+1B4pQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "^3.1.3", + "chokidar": "^3.5.3", + "destr": "^2.0.1", + "h3": "^1.7.1", + "ioredis": "^5.3.2", + "listhen": "^1.2.2", + "lru-cache": "^10.0.0", + "mri": "^1.2.0", + "node-fetch-native": "^1.2.0", + "ofetch": "^1.1.1", + "ufo": "^1.2.0" + }, + "peerDependencies": { + "@azure/app-configuration": "^1.4.1", + "@azure/cosmos": "^3.17.3", + "@azure/data-tables": "^13.2.2", + "@azure/identity": "^3.2.3", + "@azure/keyvault-secrets": "^4.7.0", + "@azure/storage-blob": "^12.14.0", + "@capacitor/preferences": "^5.0.0", + "@planetscale/database": "^1.8.0", + "@upstash/redis": "^1.22.0", + "@vercel/kv": "^0.2.2", + "idb-keyval": "^6.2.1" + }, + "peerDependenciesMeta": { + "@azure/app-configuration": { + "optional": true + }, + "@azure/cosmos": { + "optional": true + }, + "@azure/data-tables": { + "optional": true + }, + "@azure/identity": { + "optional": true + }, + "@azure/keyvault-secrets": { + "optional": true + }, + "@azure/storage-blob": { + "optional": true + }, + "@capacitor/preferences": { + "optional": true + }, + "@planetscale/database": { + "optional": true + }, + "@upstash/redis": { + "optional": true + }, + "@vercel/kv": { + "optional": true + }, + "idb-keyval": { + "optional": true + } + } + }, + "node_modules/unstorage/node_modules/lru-cache": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.0.tgz", + "integrity": "sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw==", + "dev": true, + "license": "ISC", + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/untyped": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/untyped/-/untyped-1.4.0.tgz", + "integrity": "sha512-Egkr/s4zcMTEuulcIb7dgURS6QpN7DyqQYdf+jBtiaJvQ+eRsrtWUoX84SbvQWuLkXsOjM+8sJC9u6KoMK/U7Q==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.22.9", + "@babel/standalone": "^7.22.9", + "@babel/types": "^7.22.5", + "defu": "^6.1.2", + "jiti": "^1.19.1", + "mri": "^1.2.0", + "scule": "^1.0.0" + }, + "bin": { + "untyped": "dist/cli.mjs" + } + }, + "node_modules/upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/utrie": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/utrie/-/utrie-1.0.2.tgz", + "integrity": "sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==", + "license": "MIT", + "optional": true, + "dependencies": { + "base64-arraybuffer": "^1.0.2" + } + }, + "node_modules/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v-calendar": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/v-calendar/-/v-calendar-3.0.3.tgz", + "integrity": "sha512-Skpp/nMoFqFadm94aWj0oOfazoux5T5Ug3/pbRbdolkoDrnVcL7Ronw1/SGFRUPGOwnLdYwhKPhrhSE1segW6w==", + "license": "MIT", + "dependencies": { + "@types/lodash": "^4.14.165", + "@types/resize-observer-browser": "^0.1.7", + "date-fns": "^2.16.1", + "date-fns-tz": "^1.0.12", + "lodash": "^4.17.20", + "vue-screen-utils": "^1.0.0-beta.13" + }, + "peerDependencies": { + "@popperjs/core": "^2.0.0", + "vue": "^3.2.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vite": { + "version": "4.3.9", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.3.9.tgz", + "integrity": "sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.17.5", + "postcss": "^8.4.23", + "rollup": "^3.21.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-node": { + "version": "0.33.0", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.33.0.tgz", + "integrity": "sha512-19FpHYbwWWxDr73ruNahC+vtEdza52kA90Qb3La98yZ0xULqV8A5JLNPUff0f5zID4984tW7l3DH2przTJUZSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "cac": "^6.7.14", + "debug": "^4.3.4", + "mlly": "^1.4.0", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "vite": "^3.0.0 || ^4.0.0" + }, + "bin": { + "vite-node": "vite-node.mjs" + }, + "engines": { + "node": ">=v14.18.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/vite-plugin-checker": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/vite-plugin-checker/-/vite-plugin-checker-0.6.1.tgz", + "integrity": "sha512-4fAiu3W/IwRJuJkkUZlWbLunSzsvijDf0eDN6g/MGh6BUK4SMclOTGbLJCPvdAcMOQvVmm8JyJeYLYd4//8CkA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "ansi-escapes": "^4.3.0", + "chalk": "^4.1.1", + "chokidar": "^3.5.1", + "commander": "^8.0.0", + "fast-glob": "^3.2.7", + "fs-extra": "^11.1.0", + "lodash.debounce": "^4.0.8", + "lodash.pick": "^4.4.0", + "npm-run-path": "^4.0.1", + "semver": "^7.5.0", + "strip-ansi": "^6.0.0", + "tiny-invariant": "^1.1.0", + "vscode-languageclient": "^7.0.0", + "vscode-languageserver": "^7.0.0", + "vscode-languageserver-textdocument": "^1.0.1", + "vscode-uri": "^3.0.2" + }, + "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 + } + } + }, + "node_modules/vite-plugin-checker/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/vite-plugin-checker/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/vite-plugin-checker/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/vite-plugin-checker/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, + "node_modules/vite-plugin-pwa": { + "version": "0.16.4", + "resolved": "https://registry.npmjs.org/vite-plugin-pwa/-/vite-plugin-pwa-0.16.4.tgz", + "integrity": "sha512-lmwHFIs9zI2H9bXJld/zVTbCqCQHZ9WrpyDMqosICDV0FVnCJwniX1NMDB79HGTIZzOQkY4gSZaVTJTw6maz/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4", + "fast-glob": "^3.2.12", + "pretty-bytes": "^6.0.0", + "workbox-build": "^7.0.0", + "workbox-window": "^7.0.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vite": "^3.1.0 || ^4.0.0", + "workbox-build": "^7.0.0", + "workbox-window": "^7.0.0" + } + }, + "node_modules/vite/node_modules/@esbuild/android-arm": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", + "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/android-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", + "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/android-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", + "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/darwin-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", + "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/darwin-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", + "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", + "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/freebsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", + "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-arm": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", + "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", + "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-ia32": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", + "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-loong64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", + "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-mips64el": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", + "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-ppc64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", + "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-riscv64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", + "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-s390x": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", + "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", + "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/netbsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", + "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/openbsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", + "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/sunos-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", + "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", + "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-ia32": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", + "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", + "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/esbuild": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", + "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.17.19", + "@esbuild/android-arm64": "0.17.19", + "@esbuild/android-x64": "0.17.19", + "@esbuild/darwin-arm64": "0.17.19", + "@esbuild/darwin-x64": "0.17.19", + "@esbuild/freebsd-arm64": "0.17.19", + "@esbuild/freebsd-x64": "0.17.19", + "@esbuild/linux-arm": "0.17.19", + "@esbuild/linux-arm64": "0.17.19", + "@esbuild/linux-ia32": "0.17.19", + "@esbuild/linux-loong64": "0.17.19", + "@esbuild/linux-mips64el": "0.17.19", + "@esbuild/linux-ppc64": "0.17.19", + "@esbuild/linux-riscv64": "0.17.19", + "@esbuild/linux-s390x": "0.17.19", + "@esbuild/linux-x64": "0.17.19", + "@esbuild/netbsd-x64": "0.17.19", + "@esbuild/openbsd-x64": "0.17.19", + "@esbuild/sunos-x64": "0.17.19", + "@esbuild/win32-arm64": "0.17.19", + "@esbuild/win32-ia32": "0.17.19", + "@esbuild/win32-x64": "0.17.19" + } + }, + "node_modules/vscode-jsonrpc": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-6.0.0.tgz", + "integrity": "sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.0.0 || >=10.0.0" + } + }, + "node_modules/vscode-languageclient": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-7.0.0.tgz", + "integrity": "sha512-P9AXdAPlsCgslpP9pRxYPqkNYV7Xq8300/aZDpO35j1fJm/ncize8iGswzYlcvFw5DQUx4eVk+KvfXdL0rehNg==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimatch": "^3.0.4", + "semver": "^7.3.4", + "vscode-languageserver-protocol": "3.16.0" + }, + "engines": { + "vscode": "^1.52.0" + } + }, + "node_modules/vscode-languageclient/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/vscode-languageclient/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/vscode-languageclient/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, + "node_modules/vscode-languageserver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-7.0.0.tgz", + "integrity": "sha512-60HTx5ID+fLRcgdHfmz0LDZAXYEV68fzwG0JWwEPBode9NuMYTIxuYXPg4ngO8i8+Ou0lM7y6GzaYWbiDL0drw==", + "dev": true, + "license": "MIT", + "dependencies": { + "vscode-languageserver-protocol": "3.16.0" + }, + "bin": { + "installServerIntoExtension": "bin/installServerIntoExtension" + } + }, + "node_modules/vscode-languageserver-protocol": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.16.0.tgz", + "integrity": "sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A==", + "dev": true, + "license": "MIT", + "dependencies": { + "vscode-jsonrpc": "6.0.0", + "vscode-languageserver-types": "3.16.0" + } + }, + "node_modules/vscode-languageserver-textdocument": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.8.tgz", + "integrity": "sha512-1bonkGqQs5/fxGT5UchTgjGVnfysL0O8v1AYMBjqTbWQTFn721zaPGDYFkOKtfDgFiSgXM3KwaG3FMGfW4Ed9Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/vscode-languageserver-types": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz", + "integrity": "sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==", + "dev": true, + "license": "MIT" + }, + "node_modules/vscode-uri": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.7.tgz", + "integrity": "sha512-eOpPHogvorZRobNqJGhapa0JdwaxpjVvyBp0QIUMRMSf8ZAlqOdEquKuRmw9Qwu0qXtJIWqFtMkmvJjUZmMjVA==", + "dev": true, + "license": "MIT" + }, + "node_modules/vue": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.4.tgz", + "integrity": "sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==", + "license": "MIT", + "dependencies": { + "@vue/compiler-dom": "3.3.4", + "@vue/compiler-sfc": "3.3.4", + "@vue/runtime-dom": "3.3.4", + "@vue/server-renderer": "3.3.4", + "@vue/shared": "3.3.4" + } + }, + "node_modules/vue-bundle-renderer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/vue-bundle-renderer/-/vue-bundle-renderer-1.0.3.tgz", + "integrity": "sha512-EfjX+5TTUl70bki9hPuVp+54JiZOvFIfoWBcfXsSwLzKEiDYyHNi5iX8srnqLIv3YRnvxgbntdcG1WPq0MvffQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ufo": "^1.1.1" + } + }, + "node_modules/vue-chart-3": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/vue-chart-3/-/vue-chart-3-3.1.8.tgz", + "integrity": "sha512-zX5ajjQi/PocEqLETlej3vp92q/tnI/Fvu2RVb++Kap8qOrXu6PXCpodi73BFrWzEGZIAnqoUxC3OIkRWD657g==", + "license": "MIT", + "dependencies": { + "@vue/runtime-core": "latest", + "@vue/runtime-dom": "latest", + "csstype": "latest", + "lodash-es": "latest" + }, + "peerDependencies": { + "chart.js": "=> ^3.1.0", + "vue": ">= 3" + } + }, + "node_modules/vue-code-highlight": { + "version": "0.7.8", + "resolved": "https://registry.npmjs.org/vue-code-highlight/-/vue-code-highlight-0.7.8.tgz", + "integrity": "sha512-jMt1W0DGisNZ3B2TASFCPLEswohVrwImX+TxzMIZINZyAUUNZ1Xth3soJw1xepTsMgxkIkhsmN/xVNpiI3bU4g==", + "license": "MIT", + "dependencies": { + "prism-es6": "^1.2.0", + "vue": "^2.5.16" + } + }, + "node_modules/vue-code-highlight/node_modules/@vue/compiler-sfc": { + "version": "2.7.14", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.14.tgz", + "integrity": "sha512-aNmNHyLPsw+sVvlQFQ2/8sjNuLtK54TC6cuKnVzAY93ks4ZBrvwQSnkkIh7bsbNhum5hJBS00wSDipQ937f5DA==", + "dependencies": { + "@babel/parser": "^7.18.4", + "postcss": "^8.4.14", + "source-map": "^0.6.1" + } + }, + "node_modules/vue-code-highlight/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/vue-code-highlight/node_modules/vue": { + "version": "2.7.14", + "resolved": "https://registry.npmjs.org/vue/-/vue-2.7.14.tgz", + "integrity": "sha512-b2qkFyOM0kwqWFuQmgd4o+uHGU7T+2z3T+WQp8UBjADfEv2n4FEMffzBmCKNP0IGzOEEfYjvtcC62xaSKeQDrQ==", + "deprecated": "Vue 2 has reached EOL and is no longer actively maintained. See https://v2.vuejs.org/eol/ for more details.", + "license": "MIT", + "dependencies": { + "@vue/compiler-sfc": "2.7.14", + "csstype": "^3.1.0" + } + }, + "node_modules/vue-codemirror": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/vue-codemirror/-/vue-codemirror-6.1.1.tgz", + "integrity": "sha512-rTAYo44owd282yVxKtJtnOi7ERAcXTeviwoPXjIc6K/IQYUsoDkzPvw/JDFtSP6T7Cz/2g3EHaEyeyaQCKoDMg==", + "license": "MIT", + "dependencies": { + "@codemirror/commands": "6.x", + "@codemirror/language": "6.x", + "@codemirror/state": "6.x", + "@codemirror/view": "6.x" + }, + "peerDependencies": { + "codemirror": "6.x", + "vue": "3.x" + } + }, + "node_modules/vue-country-flag-next": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/vue-country-flag-next/-/vue-country-flag-next-2.3.2.tgz", + "integrity": "sha512-Lv12L1VTwlBgizpZ3xPEPO3zuIETaJmeSiPuLOWLLgu2EakwU/o72iKYiKcdZ6BXiSkfss+Ski5fDzjuxZ1DcA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/vue-demi": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.5.tgz", + "integrity": "sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/vue-devtools-stub": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/vue-devtools-stub/-/vue-devtools-stub-0.1.0.tgz", + "integrity": "sha512-RutnB7X8c5hjq39NceArgXg28WZtZpGc3+J16ljMiYnFhKvd8hITxSWQSQ5bvldxMDU6gG5mkxl1MTQLXckVSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/vue-eslint-parser": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.3.1.tgz", + "integrity": "sha512-Clr85iD2XFZ3lJ52/ppmUDG/spxQu6+MAeHXjjyI4I1NUYZ9xmenQp4N0oaHJhrA8OOxltCVxMRfANGa70vU0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4", + "eslint-scope": "^7.1.1", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", + "esquery": "^1.4.0", + "lodash": "^4.17.21", + "semver": "^7.3.6" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, + "node_modules/vue-eslint-parser/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/vue-eslint-parser/node_modules/eslint-visitor-keys": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.2.tgz", + "integrity": "sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/vue-eslint-parser/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/vue-eslint-parser/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/vue-eslint-parser/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, + "node_modules/vue-fullscreen": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/vue-fullscreen/-/vue-fullscreen-3.1.1.tgz", + "integrity": "sha512-I59sIO0O22116gwVPo1qM2cNf5binEC5vTswIm8qJsqgatGfFquIJANpoVggSUS2EgUF0Xg4tHliT1ITcwQw8Q==", + "license": "MIT", + "dependencies": { + "screenfull": "^5.1.0" + }, + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/vue-resize": { + "version": "2.0.0-alpha.1", + "resolved": "https://registry.npmjs.org/vue-resize/-/vue-resize-2.0.0-alpha.1.tgz", + "integrity": "sha512-7+iqOueLU7uc9NrMfrzbG8hwMqchfVfSzpVlCMeJQe4pyibqyoifDNbKTZvwxZKDvGkB+PdFeKvnGZMoEb8esg==", + "license": "MIT", + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/vue-router": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.2.4.tgz", + "integrity": "sha512-9PISkmaCO02OzPVOMq2w82ilty6+xJmQrarYZDkjZBfl4RvYAlt4PKnEX21oW4KTtWfa9OuO/b3qk1Od3AEdCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vue/devtools-api": "^6.5.0" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/vue-screen-utils": { + "version": "1.0.0-beta.13", + "resolved": "https://registry.npmjs.org/vue-screen-utils/-/vue-screen-utils-1.0.0-beta.13.tgz", + "integrity": "sha512-EJ/8TANKhFj+LefDuOvZykwMr3rrLFPLNb++lNBqPOpVigT2ActRg6icH9RFQVm4nHwlHIHSGm5OY/Clar9yIg==", + "license": "MIT", + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/vue-select": { + "version": "4.0.0-beta.6", + "resolved": "https://registry.npmjs.org/vue-select/-/vue-select-4.0.0-beta.6.tgz", + "integrity": "sha512-K+zrNBSpwMPhAxYLTCl56gaMrWZGgayoWCLqe5rWwkB8aUbAUh7u6sXjIR7v4ckp2WKC7zEEUY27g6h1MRsIHw==", + "license": "MIT", + "peerDependencies": { + "vue": "3.x" + } + }, + "node_modules/vue-sweetalert2": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/vue-sweetalert2/-/vue-sweetalert2-5.0.5.tgz", + "integrity": "sha512-Q7+TjQxNwGruT2jfPaSKMz18HHWs81r4umEwlrrtOf/QL5Iwl1T+tUaNkcvKB7Rf9rYftubt7NnOMjfDMnDH3A==", + "license": "MIT", + "dependencies": { + "sweetalert2": "11.x" + }, + "peerDependencies": { + "vue": "*" + } + }, + "node_modules/vue-toastification": { + "version": "2.0.0-rc.5", + "resolved": "https://registry.npmjs.org/vue-toastification/-/vue-toastification-2.0.0-rc.5.tgz", + "integrity": "sha512-q73e5jy6gucEO/U+P48hqX+/qyXDozAGmaGgLFm5tXX4wJBcVsnGp4e/iJqlm9xzHETYOilUuwOUje2Qg1JdwA==", + "license": "MIT", + "peerDependencies": { + "vue": "^3.0.2" + } + }, + "node_modules/vue-window-size": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/vue-window-size/-/vue-window-size-1.2.1.tgz", + "integrity": "sha512-RA6Tl7gQcHqeOUNQuNfDxeXaNa26QXj6gkWUkwxvJVjXdJ57aaUGnfCMlkLz6BZQTOip78VxxTwbSwmQUZtfrQ==", + "license": "MIT", + "dependencies": { + "window-resize-subject": "^1.5.0" + }, + "peerDependencies": { + "vue": ">=3.0.0" + } + }, + "node_modules/vue3-apexcharts": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/vue3-apexcharts/-/vue3-apexcharts-1.4.4.tgz", + "integrity": "sha512-TH89uZrxGjaDvkaYAISvj8+k6Bf1rUKFillc8oJirs5XZEPiwM1ELKZQ786wz0rfPqkSHHny2lqqUCK7Rw+LcQ==", + "license": "MIT", + "peerDependencies": { + "apexcharts": "> 3.0.0", + "vue": "> 3.0.0" + } + }, + "node_modules/vue3-click-away": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/vue3-click-away/-/vue3-click-away-1.2.4.tgz", + "integrity": "sha512-O9Z2KlvIhJT8OxaFy04eiZE9rc1Mk/bp+70dLok68ko3Kr8AW5dU+j8avSk4GDQu94FllSr4m5ul4BpzlKOw1A==", + "license": "MIT" + }, + "node_modules/vue3-dropzone": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/vue3-dropzone/-/vue3-dropzone-2.0.1.tgz", + "integrity": "sha512-jY36ZhIpGCxyok6cKxFb2s9s15c1KXmLHxcHzHhjoPzZ5IHW7+2RrnYUenCdq88ym66KyknscNkJYJzh3C23hw==", + "license": "ISC", + "dependencies": { + "attr-accept": "^2.2.2", + "file-selector": "^0.2.4" + }, + "peerDependencies": { + "vue": ">=3" + } + }, + "node_modules/vue3-perfect-scrollbar": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/vue3-perfect-scrollbar/-/vue3-perfect-scrollbar-1.6.1.tgz", + "integrity": "sha512-r9wfxlFwVyHXMPKG0PnR7fDfJPQ20KEVzKQfSU5by2WKYz2PwV0bTfyfejmEyZXsXL0O8VtSWtgxfPuFR2AGOg==", + "license": "MIT", + "dependencies": { + "cssnano": "^5.1.14", + "perfect-scrollbar": "^1.5.5", + "postcss-import": "^12.0.0" + } + }, + "node_modules/vue3-perfect-scrollbar/node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/vue3-perfect-scrollbar/node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/vue3-perfect-scrollbar/node_modules/cssnano": { + "version": "5.1.15", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.15.tgz", + "integrity": "sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==", + "license": "MIT", + "dependencies": { + "cssnano-preset-default": "^5.2.14", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/cssnano" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/vue3-perfect-scrollbar/node_modules/cssnano-preset-default": { + "version": "5.2.14", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz", + "integrity": "sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==", + "license": "MIT", + "dependencies": { + "css-declaration-sorter": "^6.3.1", + "cssnano-utils": "^3.1.0", + "postcss-calc": "^8.2.3", + "postcss-colormin": "^5.3.1", + "postcss-convert-values": "^5.1.3", + "postcss-discard-comments": "^5.1.2", + "postcss-discard-duplicates": "^5.1.0", + "postcss-discard-empty": "^5.1.1", + "postcss-discard-overridden": "^5.1.0", + "postcss-merge-longhand": "^5.1.7", + "postcss-merge-rules": "^5.1.4", + "postcss-minify-font-values": "^5.1.0", + "postcss-minify-gradients": "^5.1.1", + "postcss-minify-params": "^5.1.4", + "postcss-minify-selectors": "^5.2.1", + "postcss-normalize-charset": "^5.1.0", + "postcss-normalize-display-values": "^5.1.0", + "postcss-normalize-positions": "^5.1.1", + "postcss-normalize-repeat-style": "^5.1.1", + "postcss-normalize-string": "^5.1.0", + "postcss-normalize-timing-functions": "^5.1.0", + "postcss-normalize-unicode": "^5.1.1", + "postcss-normalize-url": "^5.1.0", + "postcss-normalize-whitespace": "^5.1.1", + "postcss-ordered-values": "^5.1.3", + "postcss-reduce-initial": "^5.1.2", + "postcss-reduce-transforms": "^5.1.0", + "postcss-svgo": "^5.1.0", + "postcss-unique-selectors": "^5.1.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/vue3-perfect-scrollbar/node_modules/cssnano-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", + "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", + "license": "MIT", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/vue3-perfect-scrollbar/node_modules/csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "license": "MIT", + "dependencies": { + "css-tree": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/vue3-perfect-scrollbar/node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/vue3-perfect-scrollbar/node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/vue3-perfect-scrollbar/node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/vue3-perfect-scrollbar/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "license": "BSD-2-Clause", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/vue3-perfect-scrollbar/node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "license": "CC0-1.0" + }, + "node_modules/vue3-perfect-scrollbar/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "license": "ISC" + }, + "node_modules/vue3-perfect-scrollbar/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "license": "MIT", + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/vue3-perfect-scrollbar/node_modules/postcss-calc": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", + "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0" + }, + "peerDependencies": { + "postcss": "^8.2.2" + } + }, + "node_modules/vue3-perfect-scrollbar/node_modules/postcss-colormin": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.1.tgz", + "integrity": "sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "colord": "^2.9.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/vue3-perfect-scrollbar/node_modules/postcss-convert-values": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz", + "integrity": "sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/vue3-perfect-scrollbar/node_modules/postcss-discard-comments": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", + "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", + "license": "MIT", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/vue3-perfect-scrollbar/node_modules/postcss-discard-duplicates": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", + "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", + "license": "MIT", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/vue3-perfect-scrollbar/node_modules/postcss-discard-empty": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", + "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", + "license": "MIT", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/vue3-perfect-scrollbar/node_modules/postcss-discard-overridden": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", + "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", + "license": "MIT", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/vue3-perfect-scrollbar/node_modules/postcss-import": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-12.0.1.tgz", + "integrity": "sha512-3Gti33dmCjyKBgimqGxL3vcV8w9+bsHwO5UrBawp796+jdardbcFl4RP5w/76BwNL7aGzpKstIfF9I+kdE8pTw==", + "license": "MIT", + "dependencies": { + "postcss": "^7.0.1", + "postcss-value-parser": "^3.2.3", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/vue3-perfect-scrollbar/node_modules/postcss-import/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "license": "MIT" + }, + "node_modules/vue3-perfect-scrollbar/node_modules/postcss-merge-longhand": { + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz", + "integrity": "sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^5.1.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/vue3-perfect-scrollbar/node_modules/postcss-merge-rules": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz", + "integrity": "sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^3.1.0", + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/vue3-perfect-scrollbar/node_modules/postcss-minify-font-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", + "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/vue3-perfect-scrollbar/node_modules/postcss-minify-gradients": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", + "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", + "license": "MIT", + "dependencies": { + "colord": "^2.9.1", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/vue3-perfect-scrollbar/node_modules/postcss-minify-params": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz", + "integrity": "sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/vue3-perfect-scrollbar/node_modules/postcss-minify-selectors": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz", + "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/vue3-perfect-scrollbar/node_modules/postcss-normalize-charset": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", + "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", + "license": "MIT", + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/vue3-perfect-scrollbar/node_modules/postcss-normalize-display-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", + "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/vue3-perfect-scrollbar/node_modules/postcss-normalize-positions": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz", + "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/vue3-perfect-scrollbar/node_modules/postcss-normalize-repeat-style": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz", + "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/vue3-perfect-scrollbar/node_modules/postcss-normalize-string": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", + "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/vue3-perfect-scrollbar/node_modules/postcss-normalize-timing-functions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", + "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/vue3-perfect-scrollbar/node_modules/postcss-normalize-unicode": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz", + "integrity": "sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/vue3-perfect-scrollbar/node_modules/postcss-normalize-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", + "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", + "license": "MIT", + "dependencies": { + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/vue3-perfect-scrollbar/node_modules/postcss-normalize-whitespace": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", + "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/vue3-perfect-scrollbar/node_modules/postcss-ordered-values": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz", + "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==", + "license": "MIT", + "dependencies": { + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/vue3-perfect-scrollbar/node_modules/postcss-reduce-initial": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz", + "integrity": "sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/vue3-perfect-scrollbar/node_modules/postcss-reduce-transforms": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", + "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/vue3-perfect-scrollbar/node_modules/postcss-svgo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", + "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", + "license": "MIT", + "dependencies": { + "postcss-value-parser": "^4.2.0", + "svgo": "^2.7.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/vue3-perfect-scrollbar/node_modules/postcss-unique-selectors": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", + "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", + "license": "MIT", + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/vue3-perfect-scrollbar/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/vue3-perfect-scrollbar/node_modules/stylehacks": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz", + "integrity": "sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.21.4", + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/vue3-perfect-scrollbar/node_modules/svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "license": "MIT", + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/vue3-perfect-scrollbar/node_modules/svgo/node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/vue3-recaptcha-v2": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/vue3-recaptcha-v2/-/vue3-recaptcha-v2-2.0.2.tgz", + "integrity": "sha512-uIxJG4+BVquSVJxCLdkJV3Y0IgXPG+sWqAG34qwHt9MungDFshuKprtrN48oJHcLXePLey/FEo2B5pbfMB5cjQ==", + "license": "MIT", + "peerDependencies": { + "vue": "^3" + } + }, + "node_modules/vuedraggable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vuedraggable/-/vuedraggable-4.1.0.tgz", + "integrity": "sha512-FU5HCWBmsf20GpP3eudURW3WdWTKIbEIQxh9/8GE806hydR9qZqRRxRE3RjqX7PkuLuMQG/A7n3cfj9rCEchww==", + "license": "MIT", + "dependencies": { + "sortablejs": "1.14.0" + }, + "peerDependencies": { + "vue": "^3.0.1" + } + }, + "node_modules/w3c-keyname": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz", + "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==", + "license": "MIT" + }, + "node_modules/w3c-xmlserializer": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", + "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", + "license": "MIT", + "dependencies": { + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/w3c-xmlserializer/node_modules/xml-name-validator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", + "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", + "license": "Apache-2.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/web-streams-polyfill": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", + "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack-virtual-modules": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz", + "integrity": "sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==", + "license": "MIT" + }, + "node_modules/whatwg-encoding": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", + "license": "MIT", + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/whatwg-mimetype": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "license": "MIT", + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", + "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/window-resize-subject": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/window-resize-subject/-/window-resize-subject-1.5.0.tgz", + "integrity": "sha512-r+zXdtumr1+De51Lb3P561K+3t6PvEVXq+dTaEhikNY8Hj0UuzkYL3v9jo5TLpPaL7s9gkaX3Sb643HqYT7uSA==", + "license": "MIT" + }, + "node_modules/workbox-background-sync": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-7.0.0.tgz", + "integrity": "sha512-S+m1+84gjdueM+jIKZ+I0Lx0BDHkk5Nu6a3kTVxP4fdj3gKouRNmhO8H290ybnJTOPfBDtTMXSQA/QLTvr7PeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "idb": "^7.0.1", + "workbox-core": "7.0.0" + } + }, + "node_modules/workbox-broadcast-update": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-7.0.0.tgz", + "integrity": "sha512-oUuh4jzZrLySOo0tC0WoKiSg90bVAcnE98uW7F8GFiSOXnhogfNDGZelPJa+6KpGBO5+Qelv04Hqx2UD+BJqNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "7.0.0" + } + }, + "node_modules/workbox-build": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-7.0.0.tgz", + "integrity": "sha512-CttE7WCYW9sZC+nUYhQg3WzzGPr4IHmrPnjKiu3AMXsiNQKx+l4hHl63WTrnicLmKEKHScWDH8xsGBdrYgtBzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@apideck/better-ajv-errors": "^0.3.1", + "@babel/core": "^7.11.1", + "@babel/preset-env": "^7.11.0", + "@babel/runtime": "^7.11.2", + "@rollup/plugin-babel": "^5.2.0", + "@rollup/plugin-node-resolve": "^11.2.1", + "@rollup/plugin-replace": "^2.4.1", + "@surma/rollup-plugin-off-main-thread": "^2.2.3", + "ajv": "^8.6.0", + "common-tags": "^1.8.0", + "fast-json-stable-stringify": "^2.1.0", + "fs-extra": "^9.0.1", + "glob": "^7.1.6", + "lodash": "^4.17.20", + "pretty-bytes": "^5.3.0", + "rollup": "^2.43.1", + "rollup-plugin-terser": "^7.0.0", + "source-map": "^0.8.0-beta.0", + "stringify-object": "^3.3.0", + "strip-comments": "^2.0.1", + "tempy": "^0.6.0", + "upath": "^1.2.0", + "workbox-background-sync": "7.0.0", + "workbox-broadcast-update": "7.0.0", + "workbox-cacheable-response": "7.0.0", + "workbox-core": "7.0.0", + "workbox-expiration": "7.0.0", + "workbox-google-analytics": "7.0.0", + "workbox-navigation-preload": "7.0.0", + "workbox-precaching": "7.0.0", + "workbox-range-requests": "7.0.0", + "workbox-recipes": "7.0.0", + "workbox-routing": "7.0.0", + "workbox-strategies": "7.0.0", + "workbox-streams": "7.0.0", + "workbox-sw": "7.0.0", + "workbox-window": "7.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/workbox-build/node_modules/@rollup/plugin-node-resolve": { + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", + "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/workbox-build/node_modules/@rollup/plugin-replace": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz", + "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "magic-string": "^0.25.7" + }, + "peerDependencies": { + "rollup": "^1.20.0 || ^2.0.0" + } + }, + "node_modules/workbox-build/node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/workbox-build/node_modules/@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true, + "license": "MIT" + }, + "node_modules/workbox-build/node_modules/@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/workbox-build/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/workbox-build/node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true, + "license": "MIT" + }, + "node_modules/workbox-build/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/workbox-build/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/workbox-build/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, + "node_modules/workbox-build/node_modules/magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "sourcemap-codec": "^1.4.8" + } + }, + "node_modules/workbox-build/node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/workbox-build/node_modules/rollup": { + "version": "2.79.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", + "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==", + "dev": true, + "license": "MIT", + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/workbox-build/node_modules/source-map": { + "version": "0.8.0-beta.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", + "deprecated": "The work that was done in this beta branch won't be included in future versions", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "whatwg-url": "^7.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/workbox-build/node_modules/tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/workbox-build/node_modules/webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/workbox-build/node_modules/whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "node_modules/workbox-cacheable-response": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-7.0.0.tgz", + "integrity": "sha512-0lrtyGHn/LH8kKAJVOQfSu3/80WDc9Ma8ng0p2i/5HuUndGttH+mGMSvOskjOdFImLs2XZIimErp7tSOPmu/6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "7.0.0" + } + }, + "node_modules/workbox-core": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-7.0.0.tgz", + "integrity": "sha512-81JkAAZtfVP8darBpfRTovHg8DGAVrKFgHpOArZbdFd78VqHr5Iw65f2guwjE2NlCFbPFDoez3D3/6ZvhI/rwQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/workbox-expiration": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-7.0.0.tgz", + "integrity": "sha512-MLK+fogW+pC3IWU9SFE+FRStvDVutwJMR5if1g7oBJx3qwmO69BNoJQVaMXq41R0gg3MzxVfwOGKx3i9P6sOLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "idb": "^7.0.1", + "workbox-core": "7.0.0" + } + }, + "node_modules/workbox-google-analytics": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-7.0.0.tgz", + "integrity": "sha512-MEYM1JTn/qiC3DbpvP2BVhyIH+dV/5BjHk756u9VbwuAhu0QHyKscTnisQuz21lfRpOwiS9z4XdqeVAKol0bzg==", + "deprecated": "It is not compatible with newer versions of GA starting with v4, as long as you are using GAv3 it should be ok, but the package is not longer being maintained", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-background-sync": "7.0.0", + "workbox-core": "7.0.0", + "workbox-routing": "7.0.0", + "workbox-strategies": "7.0.0" + } + }, + "node_modules/workbox-navigation-preload": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-7.0.0.tgz", + "integrity": "sha512-juWCSrxo/fiMz3RsvDspeSLGmbgC0U9tKqcUPZBCf35s64wlaLXyn2KdHHXVQrb2cqF7I0Hc9siQalainmnXJA==", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "7.0.0" + } + }, + "node_modules/workbox-precaching": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-7.0.0.tgz", + "integrity": "sha512-EC0vol623LJqTJo1mkhD9DZmMP604vHqni3EohhQVwhJlTgyKyOkMrZNy5/QHfOby+39xqC01gv4LjOm4HSfnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "7.0.0", + "workbox-routing": "7.0.0", + "workbox-strategies": "7.0.0" + } + }, + "node_modules/workbox-range-requests": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-7.0.0.tgz", + "integrity": "sha512-SxAzoVl9j/zRU9OT5+IQs7pbJBOUOlriB8Gn9YMvi38BNZRbM+RvkujHMo8FOe9IWrqqwYgDFBfv6sk76I1yaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "7.0.0" + } + }, + "node_modules/workbox-recipes": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-7.0.0.tgz", + "integrity": "sha512-DntcK9wuG3rYQOONWC0PejxYYIDHyWWZB/ueTbOUDQgefaeIj1kJ7pdP3LZV2lfrj8XXXBWt+JDRSw1lLLOnww==", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-cacheable-response": "7.0.0", + "workbox-core": "7.0.0", + "workbox-expiration": "7.0.0", + "workbox-precaching": "7.0.0", + "workbox-routing": "7.0.0", + "workbox-strategies": "7.0.0" + } + }, + "node_modules/workbox-routing": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-7.0.0.tgz", + "integrity": "sha512-8YxLr3xvqidnbVeGyRGkaV4YdlKkn5qZ1LfEePW3dq+ydE73hUUJJuLmGEykW3fMX8x8mNdL0XrWgotcuZjIvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "7.0.0" + } + }, + "node_modules/workbox-strategies": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-7.0.0.tgz", + "integrity": "sha512-dg3qJU7tR/Gcd/XXOOo7x9QoCI9nk74JopaJaYAQ+ugLi57gPsXycVdBnYbayVj34m6Y8ppPwIuecrzkpBVwbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "7.0.0" + } + }, + "node_modules/workbox-streams": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-7.0.0.tgz", + "integrity": "sha512-moVsh+5to//l6IERWceYKGiftc+prNnqOp2sgALJJFbnNVpTXzKISlTIsrWY+ogMqt+x1oMazIdHj25kBSq/HQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "workbox-core": "7.0.0", + "workbox-routing": "7.0.0" + } + }, + "node_modules/workbox-sw": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-7.0.0.tgz", + "integrity": "sha512-SWfEouQfjRiZ7GNABzHUKUyj8pCoe+RwjfOIajcx6J5mtgKkN+t8UToHnpaJL5UVVOf5YhJh+OHhbVNIHe+LVA==", + "dev": true, + "license": "MIT" + }, + "node_modules/workbox-window": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-7.0.0.tgz", + "integrity": "sha512-j7P/bsAWE/a7sxqTzXo3P2ALb1reTfZdvVp6OJ/uLr/C2kZAMvjeWGm8V4htQhor7DOvYg0sSbFN2+flT5U0qA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/trusted-types": "^2.0.2", + "workbox-core": "7.0.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/ws": { + "version": "8.18.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", + "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "license": "MIT" + }, + "node_modules/xss": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.14.tgz", + "integrity": "sha512-og7TEJhXvn1a7kzZGQ7ETjdQVS2UfZyTlsEdDOqvQF7GoxNfY+0YLCzBy1kPdsDDx4QuNAonQPddpsn6Xl/7sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "commander": "^2.20.3", + "cssfilter": "0.0.10" + }, + "bin": { + "xss": "bin/xss" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/xss/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/xxhashjs": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/xxhashjs/-/xxhashjs-0.2.2.tgz", + "integrity": "sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "cuint": "^0.2.2" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "license": "ISC" + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/ylru": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/ylru/-/ylru-1.3.2.tgz", + "integrity": "sha512-RXRJzMiK6U2ye0BlGGZnmpwJDPgakn6aNQ0A7gHRbD4I0uvK4TW6UqkK1V0pp9jskjJBAXd3dRrbzWkqJ+6cxA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zhead": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/zhead/-/zhead-2.0.10.tgz", + "integrity": "sha512-irug8fXNKjqazkA27cFQs7C6/ZD3qNiEzLC56kDyzQART/Z9GMGfg8h2i6fb9c8ZWnIx/QgOgFJxK3A/CYHG0g==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/harlan-zw" + } + }, + "node_modules/zip-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.0.tgz", + "integrity": "sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "archiver-utils": "^2.1.0", + "compress-commons": "^4.1.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/zod": { + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..2e51e2c --- /dev/null +++ b/package.json @@ -0,0 +1,95 @@ +{ + "private": true, + "scripts": { + "build": "nuxt build", + "dev": "nuxt dev", + "generate": "nuxt generate", + "preview": "nuxt preview", + "postinstall": "nuxt prepare", + "prisma": "npx prisma db pull && npx prisma generate && nuxt dev", + "seed-templates": "node scripts/seed-templates.js", + "test-api": "node scripts/test-api.js", + "debug-templates": "npm run test-api && npm run seed-templates" + }, + "devDependencies": { + "@nuxtjs/tailwindcss": "^6.8.0", + "@pinia-plugin-persistedstate/nuxt": "^1.1.1", + "@vite-pwa/nuxt": "^0.1.0", + "eslint": "^8.39.0", + "eslint-plugin-vue": "^9.16.1", + "nuxt": "^3.6.5", + "nuxt-icon": "^0.1.7", + "nuxt-security": "^0.13.0", + "nuxt-typed-router": "^3.2.5", + "postcss-import": "^15.1.0" + }, + "dependencies": { + "@babel/eslint-parser": "^7.19.1", + "@codemirror/lang-html": "^6.4.3", + "@codemirror/lang-javascript": "^6.1.6", + "@codemirror/lang-vue": "^0.1.1", + "@codemirror/theme-one-dark": "^6.1.2", + "@davestewart/nuxt-scrollbar": "^1.0.0", + "@formkit/addons": "^1.0.0", + "@formkit/auto-animate": "^0.7.0", + "@formkit/nuxt": "^1.0.0", + "@formkit/pro": "^0.115.3", + "@formkit/themes": "^1.0.0", + "@fullcalendar/core": "^5.11.3", + "@fullcalendar/daygrid": "^5.11.3", + "@fullcalendar/interaction": "^5.11.3", + "@fullcalendar/list": "^5.11.3", + "@fullcalendar/luxon2": "^5.11.3", + "@fullcalendar/scrollgrid": "^5.11.3", + "@fullcalendar/timegrid": "^5.11.3", + "@fullcalendar/vue3": "^5.11.2", + "@kiwicom/eslint-config": "^12.7.3", + "@pinia/nuxt": "^0.4.11", + "@popperjs/core": "^2.11.8", + "@prisma/client": "^5.1.1", + "@shimyshack/uid": "^0.1.7", + "@sweetalert2/theme-dark": "^5.0.14", + "@tiptap/extension-underline": "^2.12.0", + "@tiptap/pm": "^2.12.0", + "@tiptap/starter-kit": "^2.12.0", + "@tiptap/vue-3": "^2.12.0", + "@vueup/vue-quill": "^1.0.0", + "@vueuse/core": "^9.5.0", + "@vueuse/nuxt": "^9.5.0", + "apexcharts": "^3.36.0", + "chart.js": "^3.9.1", + "codemirror": "^6.0.1", + "cross-env": "^7.0.3", + "crypto-js": "^4.1.1", + "floating-vue": "^2.0.0-beta.24", + "isomorphic-dompurify": "^2.29.0", + "jsonwebtoken": "^8.5.1", + "jspdf": "^2.5.1", + "luxon": "^3.1.0", + "maska": "^1.5.0", + "nodemailer": "^7.0.6", + "pinia": "^2.1.6", + "prettier": "^2.8.1", + "prisma": "^5.1.1", + "sass": "^1.62.0", + "swiper": "^8.4.4", + "thememirror": "^2.0.1", + "uuid": "^10.0.0", + "v-calendar": "^3.0.3", + "vue-chart-3": "^3.1.8", + "vue-code-highlight": "^0.7.8", + "vue-codemirror": "^6.1.1", + "vue-country-flag-next": "^2.3.2", + "vue-fullscreen": "^3.1.1", + "vue-select": "^4.0.0-beta.5", + "vue-sweetalert2": "^5.0.5", + "vue-toastification": "^2.0.0-rc.5", + "vue-window-size": "^1.0.8", + "vue3-apexcharts": "^1.4.1", + "vue3-click-away": "^1.2.4", + "vue3-dropzone": "^2.0.1", + "vue3-recaptcha-v2": "^2.0.2", + "vuedraggable": "^4.1.0", + "zod": "^3.25.42" + } +} diff --git a/pages/dashboard/index.vue b/pages/dashboard/index.vue new file mode 100644 index 0000000..361238f --- /dev/null +++ b/pages/dashboard/index.vue @@ -0,0 +1,338 @@ + + + diff --git a/pages/devtool/api-editor/code/index.vue b/pages/devtool/api-editor/code/index.vue new file mode 100644 index 0000000..d7a2ee0 --- /dev/null +++ b/pages/devtool/api-editor/code/index.vue @@ -0,0 +1,244 @@ + + + + + diff --git a/pages/devtool/api-editor/index.vue b/pages/devtool/api-editor/index.vue new file mode 100644 index 0000000..de8d722 --- /dev/null +++ b/pages/devtool/api-editor/index.vue @@ -0,0 +1,327 @@ + + \ No newline at end of file diff --git a/pages/devtool/code-playground/index.js b/pages/devtool/code-playground/index.js new file mode 100644 index 0000000..fc98745 --- /dev/null +++ b/pages/devtool/code-playground/index.js @@ -0,0 +1,35 @@ +import RsAlert from "../../../components/RsAlert.vue"; +import RsBadge from "../../../components/RsBadge.vue"; +import RsButton from "../../../components/RsButton.vue"; +import RsCard from "../../../components/RsCard.vue"; +import RsCodeMirror from "../../../components/RsCodeMirror.vue"; +import RsCollapse from "../../../components/RsCollapse.vue"; +import RsCollapseItem from "../../../components/RsCollapseItem.vue"; +import RsDropdown from "../../../components/RsDropdown.vue"; +import RsDropdownItem from "../../../components/RsDropdownItem.vue"; +import RsFieldset from "../../../components/RsFieldset.vue"; +import RsModal from "../../../components/RsModal.vue"; +import RsProgressBar from "../../../components/RsProgressBar.vue"; +import RsTab from "../../../components/RsTab.vue"; +import RsTabItem from "../../../components/RsTabItem.vue"; +import RsTable from "../../../components/RsTable.vue"; +import RsWizard from "../../../components/RsWizard.vue"; + +export { + RsAlert, + RsBadge, + RsButton, + RsCard, + RsCodeMirror, + RsCollapse, + RsCollapseItem, + RsDropdown, + RsDropdownItem, + RsFieldset, + RsModal, + RsProgressBar, + RsTab, + RsTabItem, + RsTable, + RsWizard, +}; diff --git a/pages/devtool/code-playground/index.vue b/pages/devtool/code-playground/index.vue new file mode 100644 index 0000000..f31e8e2 --- /dev/null +++ b/pages/devtool/code-playground/index.vue @@ -0,0 +1,422 @@ + + + + diff --git a/pages/devtool/config/application-log/index.vue b/pages/devtool/config/application-log/index.vue new file mode 100644 index 0000000..677f24b --- /dev/null +++ b/pages/devtool/config/application-log/index.vue @@ -0,0 +1,7 @@ + + + + + diff --git a/pages/devtool/config/environment/index.vue b/pages/devtool/config/environment/index.vue new file mode 100644 index 0000000..77bcd0a --- /dev/null +++ b/pages/devtool/config/environment/index.vue @@ -0,0 +1,27 @@ + + + diff --git a/pages/devtool/config/index.vue b/pages/devtool/config/index.vue new file mode 100644 index 0000000..677f24b --- /dev/null +++ b/pages/devtool/config/index.vue @@ -0,0 +1,7 @@ + + + + + diff --git a/pages/devtool/config/site-settings/index.vue b/pages/devtool/config/site-settings/index.vue new file mode 100644 index 0000000..05f2139 --- /dev/null +++ b/pages/devtool/config/site-settings/index.vue @@ -0,0 +1,1108 @@ + + + + + \ No newline at end of file diff --git a/pages/devtool/content-editor/code/index.vue b/pages/devtool/content-editor/code/index.vue new file mode 100644 index 0000000..223aea6 --- /dev/null +++ b/pages/devtool/content-editor/code/index.vue @@ -0,0 +1,226 @@ + + + diff --git a/pages/devtool/content-editor/index.vue b/pages/devtool/content-editor/index.vue new file mode 100644 index 0000000..884e783 --- /dev/null +++ b/pages/devtool/content-editor/index.vue @@ -0,0 +1,247 @@ + + + + diff --git a/pages/devtool/content-editor/template/index.vue b/pages/devtool/content-editor/template/index.vue new file mode 100644 index 0000000..8b18c25 --- /dev/null +++ b/pages/devtool/content-editor/template/index.vue @@ -0,0 +1,127 @@ + + + + + diff --git a/pages/devtool/content-editor/template/view/[id]/index.vue b/pages/devtool/content-editor/template/view/[id]/index.vue new file mode 100644 index 0000000..e332bda --- /dev/null +++ b/pages/devtool/content-editor/template/view/[id]/index.vue @@ -0,0 +1,33 @@ + + + diff --git a/pages/devtool/menu-editor/index.vue b/pages/devtool/menu-editor/index.vue new file mode 100644 index 0000000..b27d732 --- /dev/null +++ b/pages/devtool/menu-editor/index.vue @@ -0,0 +1,761 @@ + + + \ No newline at end of file diff --git a/pages/devtool/orm/index.vue b/pages/devtool/orm/index.vue new file mode 100644 index 0000000..7ab6ae1 --- /dev/null +++ b/pages/devtool/orm/index.vue @@ -0,0 +1,169 @@ + + + diff --git a/pages/devtool/orm/table/create/index.vue b/pages/devtool/orm/table/create/index.vue new file mode 100644 index 0000000..13bdac5 --- /dev/null +++ b/pages/devtool/orm/table/create/index.vue @@ -0,0 +1,315 @@ + + + diff --git a/pages/devtool/orm/table/modify/[table].vue b/pages/devtool/orm/table/modify/[table].vue new file mode 100644 index 0000000..b2e8855 --- /dev/null +++ b/pages/devtool/orm/table/modify/[table].vue @@ -0,0 +1,360 @@ + + + diff --git a/pages/devtool/orm/view/[table]/index.vue b/pages/devtool/orm/view/[table]/index.vue new file mode 100644 index 0000000..6d984cc --- /dev/null +++ b/pages/devtool/orm/view/[table]/index.vue @@ -0,0 +1,79 @@ + + + diff --git a/pages/devtool/user-management/role/index.vue b/pages/devtool/user-management/role/index.vue new file mode 100644 index 0000000..74212ef --- /dev/null +++ b/pages/devtool/user-management/role/index.vue @@ -0,0 +1,499 @@ + + diff --git a/pages/devtool/user-management/user/index.vue b/pages/devtool/user-management/user/index.vue new file mode 100644 index 0000000..b157201 --- /dev/null +++ b/pages/devtool/user-management/user/index.vue @@ -0,0 +1,497 @@ + + diff --git a/pages/forgot-password/index.vue b/pages/forgot-password/index.vue new file mode 100644 index 0000000..445bad3 --- /dev/null +++ b/pages/forgot-password/index.vue @@ -0,0 +1,96 @@ + + + + + diff --git a/pages/index.vue b/pages/index.vue new file mode 100644 index 0000000..0cf6a06 --- /dev/null +++ b/pages/index.vue @@ -0,0 +1,10 @@ + + + diff --git a/pages/kitchen-sink/form-input-standards.vue b/pages/kitchen-sink/form-input-standards.vue new file mode 100644 index 0000000..fca6d36 --- /dev/null +++ b/pages/kitchen-sink/form-input-standards.vue @@ -0,0 +1,702 @@ + + + \ No newline at end of file diff --git a/pages/kitchen-sink/index.vue b/pages/kitchen-sink/index.vue new file mode 100644 index 0000000..2f09959 --- /dev/null +++ b/pages/kitchen-sink/index.vue @@ -0,0 +1,3255 @@ + + + + + diff --git a/pages/kitchen-sink/mobile.vue b/pages/kitchen-sink/mobile.vue new file mode 100644 index 0000000..f805d48 --- /dev/null +++ b/pages/kitchen-sink/mobile.vue @@ -0,0 +1,3124 @@ + + + + + \ No newline at end of file diff --git a/pages/login/index.vue b/pages/login/index.vue new file mode 100644 index 0000000..ac5827a --- /dev/null +++ b/pages/login/index.vue @@ -0,0 +1,179 @@ + + + diff --git a/pages/logout/index.vue b/pages/logout/index.vue new file mode 100644 index 0000000..6bc920b --- /dev/null +++ b/pages/logout/index.vue @@ -0,0 +1,28 @@ + + + diff --git a/pages/notification/create/index.vue b/pages/notification/create/index.vue new file mode 100644 index 0000000..9f44dca --- /dev/null +++ b/pages/notification/create/index.vue @@ -0,0 +1,898 @@ + + + + + diff --git a/pages/notification/dashboard/index.vue b/pages/notification/dashboard/index.vue new file mode 100644 index 0000000..24bd4dc --- /dev/null +++ b/pages/notification/dashboard/index.vue @@ -0,0 +1,391 @@ + + + + + diff --git a/pages/notification/delivery/index.vue b/pages/notification/delivery/index.vue new file mode 100644 index 0000000..8f1088a --- /dev/null +++ b/pages/notification/delivery/index.vue @@ -0,0 +1,643 @@ + + + + + diff --git a/pages/notification/delivery/monitor.vue b/pages/notification/delivery/monitor.vue new file mode 100644 index 0000000..78e643c --- /dev/null +++ b/pages/notification/delivery/monitor.vue @@ -0,0 +1,661 @@ + + + + + \ No newline at end of file diff --git a/pages/notification/delivery/providers.vue b/pages/notification/delivery/providers.vue new file mode 100644 index 0000000..151167c --- /dev/null +++ b/pages/notification/delivery/providers.vue @@ -0,0 +1,805 @@ + + + + + diff --git a/pages/notification/delivery/webhooks.vue b/pages/notification/delivery/webhooks.vue new file mode 100644 index 0000000..245d12a --- /dev/null +++ b/pages/notification/delivery/webhooks.vue @@ -0,0 +1,822 @@ + + + + + \ No newline at end of file diff --git a/pages/notification/edit/[id].vue b/pages/notification/edit/[id].vue new file mode 100644 index 0000000..a9bff6d --- /dev/null +++ b/pages/notification/edit/[id].vue @@ -0,0 +1,661 @@ + + + diff --git a/pages/notification/list/index.vue b/pages/notification/list/index.vue new file mode 100644 index 0000000..d3a3807 --- /dev/null +++ b/pages/notification/list/index.vue @@ -0,0 +1,656 @@ + + + + + diff --git a/pages/notification/log-audit/analytics.vue b/pages/notification/log-audit/analytics.vue new file mode 100644 index 0000000..6e01e6f --- /dev/null +++ b/pages/notification/log-audit/analytics.vue @@ -0,0 +1,329 @@ + + + + + \ No newline at end of file diff --git a/pages/notification/log-audit/index.vue b/pages/notification/log-audit/index.vue new file mode 100644 index 0000000..7d7887e --- /dev/null +++ b/pages/notification/log-audit/index.vue @@ -0,0 +1,382 @@ + + + + + diff --git a/pages/notification/log-audit/logs.vue b/pages/notification/log-audit/logs.vue new file mode 100644 index 0000000..d43e531 --- /dev/null +++ b/pages/notification/log-audit/logs.vue @@ -0,0 +1,410 @@ + + + + + \ No newline at end of file diff --git a/pages/notification/log-audit/monitoring.vue b/pages/notification/log-audit/monitoring.vue new file mode 100644 index 0000000..ba1ac62 --- /dev/null +++ b/pages/notification/log-audit/monitoring.vue @@ -0,0 +1,689 @@ + + + + + diff --git a/pages/notification/log-audit/reports.vue b/pages/notification/log-audit/reports.vue new file mode 100644 index 0000000..f64a10c --- /dev/null +++ b/pages/notification/log-audit/reports.vue @@ -0,0 +1,439 @@ + + + + + diff --git a/pages/notification/preferences/index.vue b/pages/notification/preferences/index.vue new file mode 100644 index 0000000..670d90e --- /dev/null +++ b/pages/notification/preferences/index.vue @@ -0,0 +1,642 @@ + + + + + \ No newline at end of file diff --git a/pages/notification/queue/batch.vue b/pages/notification/queue/batch.vue new file mode 100644 index 0000000..71fca04 --- /dev/null +++ b/pages/notification/queue/batch.vue @@ -0,0 +1,537 @@ + + + + + diff --git a/pages/notification/queue/index.vue b/pages/notification/queue/index.vue new file mode 100644 index 0000000..0349c10 --- /dev/null +++ b/pages/notification/queue/index.vue @@ -0,0 +1,192 @@ + + + + + diff --git a/pages/notification/queue/monitor.vue b/pages/notification/queue/monitor.vue new file mode 100644 index 0000000..a583327 --- /dev/null +++ b/pages/notification/queue/monitor.vue @@ -0,0 +1,339 @@ + + + + + diff --git a/pages/notification/queue/performance.vue b/pages/notification/queue/performance.vue new file mode 100644 index 0000000..2993706 --- /dev/null +++ b/pages/notification/queue/performance.vue @@ -0,0 +1,548 @@ + + + + + diff --git a/pages/notification/queue/persistence.vue b/pages/notification/queue/persistence.vue new file mode 100644 index 0000000..a91d62f --- /dev/null +++ b/pages/notification/queue/persistence.vue @@ -0,0 +1,803 @@ + + + + + \ No newline at end of file diff --git a/pages/notification/queue/priority.vue b/pages/notification/queue/priority.vue new file mode 100644 index 0000000..f255585 --- /dev/null +++ b/pages/notification/queue/priority.vue @@ -0,0 +1,665 @@ + + + + + \ No newline at end of file diff --git a/pages/notification/queue/rate-limit.vue b/pages/notification/queue/rate-limit.vue new file mode 100644 index 0000000..6451a07 --- /dev/null +++ b/pages/notification/queue/rate-limit.vue @@ -0,0 +1,768 @@ + + + + + \ No newline at end of file diff --git a/pages/notification/queue/retry.vue b/pages/notification/queue/retry.vue new file mode 100644 index 0000000..3e7a309 --- /dev/null +++ b/pages/notification/queue/retry.vue @@ -0,0 +1,563 @@ + + + + + diff --git a/pages/notification/queue/timezone.vue b/pages/notification/queue/timezone.vue new file mode 100644 index 0000000..fb9083b --- /dev/null +++ b/pages/notification/queue/timezone.vue @@ -0,0 +1,707 @@ + + + + + \ No newline at end of file diff --git a/pages/notification/templates/create_template/index.vue b/pages/notification/templates/create_template/index.vue new file mode 100644 index 0000000..f2cb167 --- /dev/null +++ b/pages/notification/templates/create_template/index.vue @@ -0,0 +1,1357 @@ + + + + + diff --git a/pages/notification/templates/edit/[id].vue b/pages/notification/templates/edit/[id].vue new file mode 100644 index 0000000..6799601 --- /dev/null +++ b/pages/notification/templates/edit/[id].vue @@ -0,0 +1,764 @@ + + + diff --git a/pages/notification/templates/index.vue b/pages/notification/templates/index.vue new file mode 100644 index 0000000..b06822d --- /dev/null +++ b/pages/notification/templates/index.vue @@ -0,0 +1,749 @@ + + + diff --git a/pages/notification/triggers-rule/index.vue b/pages/notification/triggers-rule/index.vue new file mode 100644 index 0000000..e38713c --- /dev/null +++ b/pages/notification/triggers-rule/index.vue @@ -0,0 +1,314 @@ + + + + + \ No newline at end of file diff --git a/pages/notification/view/[id].vue b/pages/notification/view/[id].vue new file mode 100644 index 0000000..503533f --- /dev/null +++ b/pages/notification/view/[id].vue @@ -0,0 +1,519 @@ + + + diff --git a/pages/register/index.vue b/pages/register/index.vue new file mode 100644 index 0000000..030d813 --- /dev/null +++ b/pages/register/index.vue @@ -0,0 +1,241 @@ + + + diff --git a/plugins/apex-chart.client.js b/plugins/apex-chart.client.js new file mode 100644 index 0000000..343d647 --- /dev/null +++ b/plugins/apex-chart.client.js @@ -0,0 +1,5 @@ +import VueApexCharts from "vue3-apexcharts"; + +export default defineNuxtPlugin((nuxtApp) => { + nuxtApp.vueApp.component("VueApexCharts", VueApexCharts); +}); diff --git a/plugins/chart-js.client.js b/plugins/chart-js.client.js new file mode 100644 index 0000000..e9eda5b --- /dev/null +++ b/plugins/chart-js.client.js @@ -0,0 +1,7 @@ +// Workaround because chart.js doesn't provide an default export +import * as ChartJs from "chart.js"; +const { Chart, registerables } = ChartJs; + +export default defineNuxtPlugin(() => { + Chart.register(...registerables); +}); diff --git a/plugins/formkit-auto-animate.js b/plugins/formkit-auto-animate.js new file mode 100644 index 0000000..37dd775 --- /dev/null +++ b/plugins/formkit-auto-animate.js @@ -0,0 +1,5 @@ +import { autoAnimatePlugin } from "@formkit/auto-animate/vue"; + +export default defineNuxtPlugin((nuxtApp) => { + nuxtApp.vueApp.use(autoAnimatePlugin); +}); diff --git a/plugins/full-calendar.client.js b/plugins/full-calendar.client.js new file mode 100644 index 0000000..986bf69 --- /dev/null +++ b/plugins/full-calendar.client.js @@ -0,0 +1,27 @@ +import "@fullcalendar/core/vdom"; // solve problem with Vite +import FullCalendar from "@fullcalendar/vue3"; +import interactionPlugin from "@fullcalendar/interaction"; +import dayGridPlugin from "@fullcalendar/daygrid"; +import timeGridPlugin from "@fullcalendar/timegrid"; +import listPlugin from "@fullcalendar/list"; +import scrollGrid from "@fullcalendar/scrollgrid"; +import luxon2Plugin from "@fullcalendar/luxon2"; + +FullCalendar.options = { + plugins: [ + interactionPlugin, + dayGridPlugin, + timeGridPlugin, + listPlugin, + scrollGrid, + luxon2Plugin, + ], +}; + +export default defineNuxtPlugin((/* nuxtApp */) => { + return { + provide: { + FullCalendar, + }, + }; +}); diff --git a/plugins/maska.js b/plugins/maska.js new file mode 100644 index 0000000..169859f --- /dev/null +++ b/plugins/maska.js @@ -0,0 +1,5 @@ +import Maska from "maska"; + +export default defineNuxtPlugin((nuxtApp) => { + nuxtApp.vueApp.use(Maska); +}); diff --git a/plugins/recaptcha.client.js b/plugins/recaptcha.client.js new file mode 100644 index 0000000..5e072bf --- /dev/null +++ b/plugins/recaptcha.client.js @@ -0,0 +1,8 @@ +import { install } from "vue3-recaptcha-v2"; + +export default defineNuxtPlugin((nuxtApp) => { + nuxtApp.vueApp.use(install, { + sitekey: "6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI", + cnDomains: false, + }); +}); diff --git a/plugins/site-settings.client.js b/plugins/site-settings.client.js new file mode 100644 index 0000000..8f82207 --- /dev/null +++ b/plugins/site-settings.client.js @@ -0,0 +1,9 @@ +export default defineNuxtPlugin(async () => { + // Only run on client side + if (process.client) { + const { loadSiteSettings } = useSiteSettings(); + + // Load site settings on app initialization + await loadSiteSettings(); + } +}); \ No newline at end of file diff --git a/plugins/swiper.js b/plugins/swiper.js new file mode 100644 index 0000000..722898a --- /dev/null +++ b/plugins/swiper.js @@ -0,0 +1,7 @@ +import { Swiper, SwiperSlide } from "swiper/vue"; +import "swiper/css/bundle"; + +export default defineNuxtPlugin((nuxtApp) => { + nuxtApp.vueApp.component("Swiper", Swiper); + nuxtApp.vueApp.component("SwiperSlide", SwiperSlide); +}); diff --git a/plugins/uid-plugin.js b/plugins/uid-plugin.js new file mode 100644 index 0000000..24e036d --- /dev/null +++ b/plugins/uid-plugin.js @@ -0,0 +1,5 @@ +import { UidPlugin } from "@shimyshack/uid"; + +export default defineNuxtPlugin((nuxtApp) => { + nuxtApp.vueApp.use(UidPlugin); +}); diff --git a/plugins/v-select.js b/plugins/v-select.js new file mode 100644 index 0000000..ede656d --- /dev/null +++ b/plugins/v-select.js @@ -0,0 +1,6 @@ +import vSelect from "vue-select"; +import "vue-select/dist/vue-select.css"; + +export default defineNuxtPlugin((nuxtApp) => { + nuxtApp.vueApp.component("v-select", vSelect); +}); diff --git a/plugins/vue-calendar.js b/plugins/vue-calendar.js new file mode 100644 index 0000000..eb1c2f5 --- /dev/null +++ b/plugins/vue-calendar.js @@ -0,0 +1,5 @@ +import VCalendar from "v-calendar"; +import "v-calendar/style.css"; +export default defineNuxtPlugin((nuxtApp) => { + nuxtApp.vueApp.use(VCalendar); +}); diff --git a/plugins/vue-code-highlight.js b/plugins/vue-code-highlight.js new file mode 100644 index 0000000..ef0ec1f --- /dev/null +++ b/plugins/vue-code-highlight.js @@ -0,0 +1,8 @@ +import VueCodeHighlight from "vue-code-highlight"; + +import "vue-code-highlight/themes/prism-okaidia.css"; +import "vue-code-highlight/themes/window.css"; + +export default defineNuxtPlugin((nuxtApp) => { + nuxtApp.vueApp.use(VueCodeHighlight); +}); diff --git a/plugins/vue-codemirror.js b/plugins/vue-codemirror.js new file mode 100644 index 0000000..82838fc --- /dev/null +++ b/plugins/vue-codemirror.js @@ -0,0 +1,6 @@ +import { Codemirror } from "vue-codemirror"; + +// Install plugin +export default defineNuxtPlugin((nuxtApp) => { + nuxtApp.vueApp.component("CodeMirror", Codemirror); +}); diff --git a/plugins/vue-country-flag.js b/plugins/vue-country-flag.js new file mode 100644 index 0000000..c0e9a9b --- /dev/null +++ b/plugins/vue-country-flag.js @@ -0,0 +1,7 @@ +// Import vue 3 plugin here +import CountryFlag from "vue-country-flag-next"; + +// Install the plugin +export default defineNuxtPlugin((nuxtApp) => { + nuxtApp.vueApp.component("CountryFlag", CountryFlag); +}); diff --git a/plugins/vue-draggable.client.js b/plugins/vue-draggable.client.js new file mode 100644 index 0000000..58d50a0 --- /dev/null +++ b/plugins/vue-draggable.client.js @@ -0,0 +1,5 @@ +import draggable from "vuedraggable"; + +export default defineNuxtPlugin((nuxtApp) => { + nuxtApp.vueApp.component("draggable", draggable); +}); diff --git a/plugins/vue-fullscreen.js b/plugins/vue-fullscreen.js new file mode 100644 index 0000000..7b50e15 --- /dev/null +++ b/plugins/vue-fullscreen.js @@ -0,0 +1,5 @@ +import VueFullscreen from "vue-fullscreen"; + +export default defineNuxtPlugin((nuxtApp) => { + nuxtApp.vueApp.use(VueFullscreen); +}); diff --git a/plugins/vue-quill.client.js b/plugins/vue-quill.client.js new file mode 100644 index 0000000..db49b28 --- /dev/null +++ b/plugins/vue-quill.client.js @@ -0,0 +1,7 @@ +import { QuillEditor } from "@vueup/vue-quill"; +import "@vueup/vue-quill/dist/vue-quill.snow.css"; // Add css for snow theme +// import '@vueup/vue-quill/dist/vue-quill.bubble.css'; // for bubble theme + +export default defineNuxtPlugin((nuxtApp) => { + nuxtApp.vueApp.component("QuillEditor", QuillEditor); +}); diff --git a/plugins/vue-sweetalert2.js b/plugins/vue-sweetalert2.js new file mode 100644 index 0000000..0297888 --- /dev/null +++ b/plugins/vue-sweetalert2.js @@ -0,0 +1,6 @@ +import Swal from "sweetalert2"; +import "sweetalert2/dist/sweetalert2.min.css"; + +export default defineNuxtPlugin((nuxtApp) => { + nuxtApp.provide("swal", Swal); +}); diff --git a/plugins/vue-toastification.client.js b/plugins/vue-toastification.client.js new file mode 100644 index 0000000..ca46118 --- /dev/null +++ b/plugins/vue-toastification.client.js @@ -0,0 +1,12 @@ +import Toast from "vue-toastification"; +import "vue-toastification/dist/index.css"; + +export default defineNuxtPlugin((nuxtApp) => { + const options = { + transition: "Vue-Toastification__bounce", + maxToasts: 20, + newestOnTop: true, + }; + + nuxtApp.vueApp.use(Toast, options); +}); diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..a5a6ff8 --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,7 @@ +module.exports = { + plugins: { + "postcss-import": {}, + tailwindcss: {}, + autoprefixer: {}, + }, +}; diff --git a/prisma/migrations/20230808013656_initialize/migration.sql b/prisma/migrations/20230808013656_initialize/migration.sql new file mode 100644 index 0000000..c611a65 --- /dev/null +++ b/prisma/migrations/20230808013656_initialize/migration.sql @@ -0,0 +1,72 @@ +-- CreateTable +CREATE TABLE `audit` ( + `auditID` INTEGER NOT NULL AUTO_INCREMENT, + `auditIP` VARCHAR(255) NULL, + `auditURL` VARCHAR(255) NULL, + `auditURLMethod` VARCHAR(255) NULL, + `auditURLPayload` VARCHAR(255) NULL, + `auditCreatedDate` DATETIME(0) NULL, + + PRIMARY KEY (`auditID`) +) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + +-- CreateTable +CREATE TABLE `user` ( + `userID` INTEGER NOT NULL AUTO_INCREMENT, + `userSecretKey` VARCHAR(255) NULL, + `userUsername` VARCHAR(255) NULL, + `userPassword` VARCHAR(255) NULL, + `userFullName` VARCHAR(255) NULL, + `userEmail` VARCHAR(255) NULL, + `userPhone` VARCHAR(255) NULL, + `userStatus` VARCHAR(255) NULL, + `userCreatedDate` DATETIME(0) NULL, + `userModifiedDate` DATETIME(0) NULL, + + PRIMARY KEY (`userID`) +) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + +-- CreateTable +CREATE TABLE `role` ( + `roleID` INTEGER NOT NULL AUTO_INCREMENT, + `roleName` VARCHAR(255) NULL, + `roleDescription` VARCHAR(255) NULL, + `roleStatus` VARCHAR(255) NULL, + `roleCreatedDate` DATETIME(0) NULL, + `roleModifiedDate` DATETIME(0) NULL, + + PRIMARY KEY (`roleID`) +) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + +-- CreateTable +CREATE TABLE `lookup` ( + `lookupID` INTEGER NOT NULL AUTO_INCREMENT, + `lookupOrder` INTEGER NULL, + `lookupTitle` VARCHAR(255) NULL, + `lookupRefCode` VARCHAR(255) NULL, + `lookupValue` VARCHAR(255) NULL, + `lookupType` VARCHAR(255) NULL, + `lookupStatus` VARCHAR(255) NULL, + `lookupCreatedDate` DATETIME(0) NULL, + `lookupModifiedDate` DATETIME(0) NULL, + + PRIMARY KEY (`lookupID`) +) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + +-- CreateTable +CREATE TABLE `userrole` ( + `userRoleID` INTEGER NOT NULL AUTO_INCREMENT, + `userRoleUserID` INTEGER NOT NULL DEFAULT 0, + `userRoleRoleID` INTEGER NOT NULL DEFAULT 0, + `userRoleCreatedDate` DATETIME(0) NOT NULL, + + INDEX `FK_userrole_role`(`userRoleRoleID`), + INDEX `FK_userrole_user`(`userRoleUserID`), + PRIMARY KEY (`userRoleID`) +) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + +-- AddForeignKey +ALTER TABLE `userrole` ADD CONSTRAINT `FK_userrole_role` FOREIGN KEY (`userRoleRoleID`) REFERENCES `role`(`roleID`) ON DELETE NO ACTION ON UPDATE NO ACTION; + +-- AddForeignKey +ALTER TABLE `userrole` ADD CONSTRAINT `FK_userrole_user` FOREIGN KEY (`userRoleUserID`) REFERENCES `user`(`userID`) ON DELETE NO ACTION ON UPDATE NO ACTION; diff --git a/prisma/migrations/migration_lock.toml b/prisma/migrations/migration_lock.toml new file mode 100644 index 0000000..e5a788a --- /dev/null +++ b/prisma/migrations/migration_lock.toml @@ -0,0 +1,3 @@ +# Please do not edit this file manually +# It should be added in your version-control system (i.e. Git) +provider = "mysql" \ No newline at end of file diff --git a/prisma/schema.prisma b/prisma/schema.prisma new file mode 100644 index 0000000..ee0a288 --- /dev/null +++ b/prisma/schema.prisma @@ -0,0 +1,419 @@ +generator client { + provider = "prisma-client-js" +} + +datasource db { + provider = "mysql" + url = env("DATABASE_URL") +} + +model audit { + auditID Int @id @default(autoincrement()) + auditIP String? @db.VarChar(255) + auditURL String? @db.VarChar(255) + auditURLMethod String? @db.VarChar(255) + auditURLPayload String? @db.VarChar(255) + auditCreatedDate DateTime? @db.DateTime(0) +} + +model lookup { + lookupID Int @id @default(autoincrement()) + lookupOrder Int? + lookupTitle String? @db.VarChar(255) + lookupRefCode String? @db.VarChar(255) + lookupValue String? @db.VarChar(255) + lookupType String? @db.VarChar(255) + lookupStatus String? @db.VarChar(255) + lookupCreatedDate DateTime? @db.DateTime(0) + lookupModifiedDate DateTime? @db.DateTime(0) +} + +model role { + roleID Int @id @default(autoincrement()) + roleName String? @db.VarChar(255) + roleDescription String? @db.VarChar(255) + roleStatus String? @db.VarChar(255) + roleCreatedDate DateTime? @db.DateTime(0) + roleModifiedDate DateTime? @db.DateTime(0) + userrole userrole[] +} + +model user { + userID Int @id @default(autoincrement()) + userSecretKey String? @db.VarChar(255) + userUsername String? @db.VarChar(255) + userPassword String? @db.VarChar(255) + userFullName String? @db.VarChar(255) + userEmail String? @db.VarChar(255) + userPhone String? @db.VarChar(255) + userStatus String? @db.VarChar(255) + userCreatedDate DateTime? @db.DateTime(0) + userModifiedDate DateTime? @db.DateTime(0) + userrole userrole[] +} + +model userrole { + userRoleID Int @id @default(autoincrement()) + userRoleUserID Int @default(0) + userRoleRoleID Int @default(0) + userRoleCreatedDate DateTime @db.DateTime(0) + role role @relation(fields: [userRoleRoleID], references: [roleID], onDelete: NoAction, onUpdate: NoAction, map: "FK_userrole_role") + user user @relation(fields: [userRoleUserID], references: [userID], onDelete: NoAction, onUpdate: NoAction, map: "FK_userrole_user") + + @@index([userRoleRoleID], map: "FK_userrole_role") + @@index([userRoleUserID], map: "FK_userrole_user") +} + +model site_settings { + settingID Int @id @default(autoincrement()) + siteName String? @db.VarChar(255) + siteNameFontSize Int? @default(18) + siteDescription String? @db.Text + siteLogo String? @db.VarChar(500) + siteLoadingLogo String? @db.VarChar(500) + siteFavicon String? @db.VarChar(500) + showSiteNameInHeader Boolean? @default(true) + primaryColor String? @db.VarChar(50) + secondaryColor String? @db.VarChar(50) + successColor String? @db.VarChar(50) + infoColor String? @db.VarChar(50) + warningColor String? @db.VarChar(50) + dangerColor String? @db.VarChar(50) + customCSS String? @db.Text + themeMode String? @db.VarChar(50) + customThemeFile String? @db.VarChar(500) + currentFont String? @db.VarChar(255) + fontSource String? @db.VarChar(500) + seoTitle String? @db.VarChar(255) + seoDescription String? @db.Text + seoKeywords String? @db.Text + seoAuthor String? @db.VarChar(255) + seoOgImage String? @db.VarChar(500) + seoTwitterCard String? @default("summary_large_image") @db.VarChar(50) + seoCanonicalUrl String? @db.VarChar(500) + seoRobots String? @default("index, follow") @db.VarChar(100) + seoGoogleAnalytics String? @db.VarChar(255) + seoGoogleTagManager String? @db.VarChar(255) + seoFacebookPixel String? @db.VarChar(255) + settingCreatedDate DateTime? @db.DateTime(0) + settingModifiedDate DateTime? @db.DateTime(0) + siteLoginLogo String? @db.VarChar(500) +} + +/// This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info. +model notification_analytics { + id String @id @default(dbgenerated("(uuid())")) @db.VarChar(36) + notification_id String @db.VarChar(36) + channel_type String @db.VarChar(20) + metric_type String @db.VarChar(30) + metric_value Int? @default(0) + recorded_at DateTime? @default(now()) @db.Timestamp(0) + metadata Json? + notifications notifications @relation(fields: [notification_id], references: [id], onDelete: Cascade, onUpdate: NoAction, map: "notification_analytics_ibfk_1") + + @@index([notification_id], map: "idx_notification_analytics_notification_id") +} + +model notification_categories { + id String @id @default(dbgenerated("(uuid())")) @db.VarChar(36) + name String @db.VarChar(100) + value String @unique(map: "value") @db.VarChar(50) + description String? @db.Text + created_at DateTime? @default(now()) @db.Timestamp(0) + updated_at DateTime? @default(now()) @db.Timestamp(0) + notifications notifications[] +} + +/// This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info. +model notification_channels { + id String @id @default(dbgenerated("(uuid())")) @db.VarChar(36) + notification_id String @db.VarChar(36) + channel_type String @db.VarChar(20) + is_enabled Boolean? @default(true) + created_at DateTime? @default(now()) @db.Timestamp(0) + notifications notifications @relation(fields: [notification_id], references: [id], onDelete: Cascade, onUpdate: NoAction, map: "notification_channels_ibfk_1") + + @@index([notification_id], map: "notification_id") +} + +model notification_delivery { + id Int @id @default(autoincrement()) + notification_id Int + channel_type String + recipient String + is_success Boolean @default(false) + error_message String? @db.Text + attempts Int @default(0) + sent_at DateTime? + delivered_at DateTime? + created_at DateTime @default(now()) + updated_at DateTime +} + +model notification_delivery_config { + id Int @id @default(autoincrement()) + channel_type String + is_enabled Boolean @default(false) + is_active Boolean? @default(false) + provider String + provider_config Json + status String @default("Not Configured") + success_rate Float @default(0) @db.Float + created_at DateTime @default(now()) + updated_at DateTime + created_by Int + updated_by Int + + @@unique([channel_type, provider], map: "unique_channel_provider") + @@index([channel_type, is_enabled], map: "idx_delivery_config_channel_enabled") +} + +model notification_delivery_settings { + id Int @id @default(1) + auto_retry Boolean @default(true) + enable_fallback Boolean @default(true) + max_retries Int @default(3) + retry_delay Int @default(30) + priority String @default("normal") + enable_reports Boolean @default(true) + created_at DateTime @default(now()) + updated_at DateTime + created_by Int + updated_by Int +} + +/// This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info. +model notification_queue { + id String @id @default(dbgenerated("(uuid())")) @db.VarChar(36) + notification_id String @db.VarChar(36) + recipient_id String @db.VarChar(36) + scheduled_for DateTime @db.Timestamp(0) + priority Int? @default(5) + attempts Int? @default(0) + max_attempts Int? @default(3) + status String? @default("queued") @db.VarChar(20) + last_attempt_at DateTime? @db.Timestamp(0) + error_message String? @db.Text + created_at DateTime? @default(now()) @db.Timestamp(0) + updated_at DateTime? @default(now()) @db.Timestamp(0) + notifications notifications @relation(fields: [notification_id], references: [id], onDelete: Cascade, onUpdate: NoAction, map: "notification_queue_ibfk_1") + notification_recipients notification_recipients @relation(fields: [recipient_id], references: [id], onDelete: Cascade, onUpdate: NoAction, map: "notification_queue_ibfk_2") + + @@index([scheduled_for], map: "idx_notification_queue_scheduled_for") + @@index([status], map: "idx_notification_queue_status") + @@index([notification_id], map: "notification_id") + @@index([recipient_id], map: "recipient_id") + @@index([status, scheduled_for, priority, last_attempt_at], map: "idx_queue_processing_composite") + @@index([recipient_id], map: "idx_queue_recipient") + @@index([status, last_attempt_at], map: "idx_queue_stuck_recovery") +} + +/// This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info. +model notification_recipients { + id String @id @default(dbgenerated("(uuid())")) @db.VarChar(36) + notification_id String @db.VarChar(36) + user_id String @db.VarChar(36) + email String? @db.VarChar(255) + channel_type String @db.VarChar(20) + status String? @default("pending") @db.VarChar(20) + sent_at DateTime? @db.Timestamp(0) + delivered_at DateTime? @db.Timestamp(0) + opened_at DateTime? @db.Timestamp(0) + clicked_at DateTime? @db.Timestamp(0) + error_message String? @db.Text + ab_test_variant String? @db.VarChar(1) + created_at DateTime? @default(now()) @db.Timestamp(0) + updated_at DateTime? @default(now()) @db.Timestamp(0) + notification_queue notification_queue[] + notifications notifications @relation(fields: [notification_id], references: [id], onDelete: Cascade, onUpdate: NoAction, map: "notification_recipients_ibfk_1") + + @@index([status], map: "idx_notification_recipients_status") + @@index([user_id], map: "idx_notification_recipients_user_id") + @@index([notification_id], map: "notification_id") + @@index([notification_id, status], map: "idx_recipients_notification_status") +} + +model notification_templates { + id String @id @default(dbgenerated("(uuid())")) @db.VarChar(36) + name String @db.VarChar(100) + value String @unique(map: "value") @db.VarChar(50) + subject String? @db.VarChar(255) + email_content String? @db.Text + push_title String? @db.VarChar(100) + push_body String? @db.VarChar(300) + variables Json? + is_active Int? @default(1) + created_at DateTime? @default(now()) @db.Timestamp(0) + updated_at DateTime? @default(now()) @db.Timestamp(0) + description String? @db.Text + preheader String? @db.VarChar(255) + push_icon String? @db.VarChar(500) + push_url String? @db.Text + sms_content String? @db.Text + category String? @db.VarChar(50) + channels Json? + status String? @default("Draft") @db.VarChar(20) + version String? @default("1.0") @db.VarChar(20) + tags String? @db.Text + is_personal Boolean? @default(false) + from_name String? @db.VarChar(100) + reply_to String? @db.VarChar(255) + track_opens Boolean? @default(true) + created_by String? @db.VarChar(36) + updated_by String? @db.VarChar(36) + template_versions notification_template_versions[] + notifications notifications[] +} + +model notification_template_versions { + id String @id @default(dbgenerated("(uuid())")) @db.VarChar(36) + template_id String @db.VarChar(36) + version String @db.VarChar(20) + name String @db.VarChar(100) + description String? @db.Text + subject String? @db.VarChar(255) + preheader String? @db.VarChar(255) + email_content String? @db.Text + push_title String? @db.VarChar(100) + push_body String? @db.VarChar(300) + push_icon String? @db.VarChar(500) + push_url String? @db.Text + sms_content String? @db.Text + category String? @db.VarChar(50) + channels Json? + status String? @default("Draft") @db.VarChar(20) + tags String? @db.Text + is_personal Boolean? @default(false) + from_name String? @db.VarChar(100) + reply_to String? @db.VarChar(255) + track_opens Boolean? @default(true) + variables Json? + is_active Boolean? @default(true) + change_description String? @db.Text + is_current Boolean? @default(false) + created_by String? @db.VarChar(36) + created_at DateTime? @default(now()) @db.Timestamp(0) + template notification_templates @relation(fields: [template_id], references: [id], onDelete: Cascade, onUpdate: NoAction, map: "fk_template_versions_template_id") + + @@index([template_id], map: "idx_template_versions_template_id") + @@index([version], map: "idx_template_versions_version") + @@index([created_at], map: "idx_template_versions_created_at") + @@index([template_id, version], map: "idx_template_versions_template_version") + @@index([is_current], map: "idx_template_versions_is_current") +} + +model notification_user_segments { + id String @id @default(dbgenerated("(uuid())")) @db.VarChar(36) + notification_id String @db.VarChar(36) + segment_id String @db.VarChar(36) + created_at DateTime? @default(now()) @db.Timestamp(0) + notifications notifications @relation(fields: [notification_id], references: [id], onDelete: Cascade, onUpdate: NoAction, map: "notification_user_segments_ibfk_1") + user_segments user_segments @relation(fields: [segment_id], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "notification_user_segments_ibfk_2") + + @@index([notification_id], map: "notification_id") + @@index([segment_id], map: "segment_id") +} + +/// This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info. +model notifications { + id String @id @default(dbgenerated("(uuid())")) @db.VarChar(36) + title String @db.VarChar(255) + type String @db.VarChar(20) + priority String @db.VarChar(20) + category_id String? @db.VarChar(36) + status String? @default("draft") @db.VarChar(20) + delivery_type String @db.VarChar(20) + scheduled_at DateTime? @db.Timestamp(0) + timezone String? @default("UTC") @db.VarChar(50) + expires_at DateTime? @db.Timestamp(0) + enable_ab_testing Boolean? @default(false) + ab_test_split Int? @default(50) + ab_test_name String? @db.VarChar(100) + enable_tracking Boolean? @default(true) + audience_type String @db.VarChar(20) + specific_users String? @db.Text + user_status String? @db.VarChar(20) + registration_period String? @db.VarChar(50) + exclude_unsubscribed Boolean? @default(true) + respect_do_not_disturb Boolean? @default(true) + content_type String @db.VarChar(20) + template_id String? @db.VarChar(36) + email_subject String? @db.VarChar(255) + email_content String? @db.Text + call_to_action_text String? @db.VarChar(100) + call_to_action_url String? @db.Text + push_title String? @db.VarChar(100) + push_body String? @db.VarChar(300) + push_image_url String? @db.Text + estimated_reach Int? @default(0) + actual_sent Int? @default(0) + created_by String @db.VarChar(36) + created_at DateTime? @default(now()) @db.Timestamp(0) + updated_at DateTime? @default(now()) @db.Timestamp(0) + sent_at DateTime? @db.Timestamp(0) + notification_analytics notification_analytics[] + notification_channels notification_channels[] + notification_queue notification_queue[] + notification_recipients notification_recipients[] + notification_user_segments notification_user_segments[] + notification_categories notification_categories? @relation(fields: [category_id], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "notifications_ibfk_1") + notification_templates notification_templates? @relation(fields: [template_id], references: [id], onDelete: NoAction, onUpdate: NoAction, map: "notifications_ibfk_2") + + @@index([category_id], map: "category_id") + @@index([created_by], map: "idx_notifications_created_by") + @@index([scheduled_at], map: "idx_notifications_scheduled_at") + @@index([status], map: "idx_notifications_status") + @@index([template_id], map: "template_id") +} + +model user_notification_preferences { + id String @id @default(dbgenerated("(uuid())")) @db.VarChar(36) + user_id String @db.VarChar(36) + channel_type String @db.VarChar(20) + category_value String? @db.VarChar(50) + is_enabled Boolean? @default(true) + do_not_disturb_start DateTime? @db.Time(0) + do_not_disturb_end DateTime? @db.Time(0) + timezone String? @default("UTC") @db.VarChar(50) + created_at DateTime? @default(now()) @db.Timestamp(0) + updated_at DateTime? @default(now()) @db.Timestamp(0) + + @@unique([user_id, channel_type, category_value], map: "user_id") + @@index([user_id], map: "idx_user_notification_preferences_user_id") +} + +model user_segments { + id String @id @default(dbgenerated("(uuid())")) @db.VarChar(36) + name String @db.VarChar(100) + value String @unique(map: "value") @db.VarChar(50) + description String? @db.Text + criteria Json + is_active Boolean? @default(true) + created_at DateTime? @default(now()) @db.Timestamp(0) + updated_at DateTime? @default(now()) @db.Timestamp(0) + notification_user_segments notification_user_segments[] +} + +model notification_logs { + id String @id @default(dbgenerated("(uuid())")) @db.VarChar(36) + notification_id String? @db.VarChar(36) + action String @db.VarChar(50) + actor String? @db.VarChar(100) + actor_id String? @db.VarChar(36) + channel_type String? @db.VarChar(20) + status String? @db.VarChar(30) + details String? @db.Text + source_ip String? @db.VarChar(50) + error_code String? @db.VarChar(50) + error_message String? @db.Text + metadata Json? + created_at DateTime? @default(now()) @db.Timestamp(0) + + @@index([notification_id], map: "idx_notification_logs_notification_id") + @@index([action], map: "idx_notification_logs_action") + @@index([created_at], map: "idx_notification_logs_created_at") + @@index([status], map: "idx_notification_logs_status") + @@index([channel_type], map: "idx_notification_logs_channel_type") + @@index([notification_id, created_at], map: "idx_logs_notification_created") + @@index([status, created_at], map: "idx_logs_status_created") +} diff --git a/scripts/cleanup-connections.js b/scripts/cleanup-connections.js new file mode 100644 index 0000000..3267cc0 --- /dev/null +++ b/scripts/cleanup-connections.js @@ -0,0 +1,24 @@ +#!/usr/bin/env node + +/** + * Cleanup script to disconnect all Prisma connections + * Run this before restarting the server if you have connection pool issues + */ + +const { PrismaClient } = require('@prisma/client'); + +async function cleanup() { + const prisma = new PrismaClient(); + + try { + console.log('🔌 Disconnecting Prisma client...'); + await prisma.$disconnect(); + console.log('✅ Prisma client disconnected successfully'); + process.exit(0); + } catch (error) { + console.error('❌ Error disconnecting Prisma:', error); + process.exit(1); + } +} + +cleanup(); diff --git a/scripts/run-migration.js b/scripts/run-migration.js new file mode 100644 index 0000000..d13a38f --- /dev/null +++ b/scripts/run-migration.js @@ -0,0 +1,71 @@ +const fs = require('fs'); +const path = require('path'); +const mysql = require('mysql2/promise'); + +// Database configuration - you should update these with your actual database credentials +const dbConfig = { + host: process.env.DB_HOST || 'localhost', + port: process.env.DB_PORT || 3306, + user: process.env.DB_USER || 'root', + password: process.env.DB_PASSWORD || '', + database: process.env.DB_NAME || 'corrad_af_2024', + multipleStatements: true +}; + +async function runMigration() { + let connection; + + try { + console.log('🔄 Connecting to database...'); + connection = await mysql.createConnection(dbConfig); + + console.log('✅ Connected to database successfully'); + + // Read the migration file + const migrationPath = path.join(__dirname, '..', 'database', 'migrations', '004_create_notification_logs_table.sql'); + const migrationSQL = fs.readFileSync(migrationPath, 'utf8'); + + console.log('📄 Running migration: 004_create_notification_logs_table.sql'); + + // Execute the migration + const [results] = await connection.execute(migrationSQL); + + console.log('✅ Migration completed successfully'); + console.log('🎉 Notification logs table created'); + + // Optional: Check if the table was created + const [tables] = await connection.execute('SHOW TABLES LIKE "notification_logs"'); + + if (tables.length > 0) { + console.log('✅ Table "notification_logs" confirmed to exist'); + + // Show table structure + const [columns] = await connection.execute('DESCRIBE notification_logs'); + console.log('📋 Table structure:'); + columns.forEach(col => { + console.log(` - ${col.Field}: ${col.Type} ${col.Null === 'YES' ? 'NULL' : 'NOT NULL'} ${col.Key ? `(${col.Key})` : ''}`); + }); + } else { + console.log('❌ Table "notification_logs" was not found'); + } + + } catch (error) { + console.error('❌ Migration failed:', error.message); + console.error('Stack trace:', error.stack); + process.exit(1); + } finally { + if (connection) { + await connection.end(); + console.log('🔌 Database connection closed'); + } + } +} + +// Run the migration +console.log('🚀 Starting database migration for notification logs...'); +runMigration().then(() => { + console.log('✅ Migration process completed successfully'); +}).catch(error => { + console.error('❌ Migration process failed:', error); + process.exit(1); +}); \ No newline at end of file diff --git a/scripts/seed-templates.js b/scripts/seed-templates.js new file mode 100644 index 0000000..e749842 --- /dev/null +++ b/scripts/seed-templates.js @@ -0,0 +1,184 @@ +const { PrismaClient } = require('@prisma/client'); + +const prisma = new PrismaClient(); + +const sampleTemplates = [ + { + name: "Welcome Email", + value: "welcome_email", + description: "Welcome email for new users", + subject: "Welcome to our platform!", + preheader: "Get started with your new account", + email_content: ` +

Welcome {{user_name}}!

+

Thank you for joining our platform. We're excited to have you aboard!

+

Here are some things you can do to get started:

+
    +
  • Complete your profile
  • +
  • Explore our features
  • +
  • Connect with other users
  • +
+

If you have any questions, feel free to reach out to our support team.

+

Best regards,
The Team

+ `, + category: "user_management", + channels: ["email"], + status: "Active", + version: "1.0", + is_personal: false, + from_name: "Welcome Team", + reply_to: "support@example.com", + track_opens: true, + variables: [ + { name: "user_name", description: "User's full name", required: true }, + { name: "user_email", description: "User's email address", required: true } + ], + is_active: true, + created_by: "system", + updated_by: "system" + }, + { + name: "Password Reset", + value: "password_reset", + description: "Password reset notification", + subject: "Reset your password", + preheader: "You requested a password reset", + email_content: ` +

Password Reset Request

+

Hi {{user_name}},

+

You recently requested to reset your password. Click the button below to proceed:

+

Reset Password

+

If you didn't request this, please ignore this email.

+

This link will expire in 24 hours.

+ `, + category: "security", + channels: ["email"], + status: "Active", + version: "1.0", + is_personal: false, + from_name: "Security Team", + reply_to: "security@example.com", + track_opens: true, + variables: [ + { name: "user_name", description: "User's full name", required: true }, + { name: "reset_url", description: "Password reset URL", required: true } + ], + is_active: true, + created_by: "system", + updated_by: "system" + }, + { + name: "Order Confirmation", + value: "order_confirmation", + description: "Order confirmation notification", + subject: "Order Confirmed - {{order_number}}", + preheader: "Your order has been confirmed", + email_content: ` +

Order Confirmation

+

Hi {{customer_name}},

+

Your order {{order_number}} has been confirmed!

+

Order Total: {{order_total}}

+

Estimated delivery: {{delivery_date}}

+

You can track your order status in your account dashboard.

+

Thank you for your business!

+ `, + push_title: "Order Confirmed!", + push_body: "Your order {{order_number}} has been confirmed and is being processed.", + category: "orders", + channels: ["email", "push"], + status: "Active", + version: "1.0", + is_personal: false, + from_name: "Orders Team", + reply_to: "orders@example.com", + track_opens: true, + variables: [ + { name: "customer_name", description: "Customer's name", required: true }, + { name: "order_number", description: "Order number", required: true }, + { name: "order_total", description: "Order total amount", required: true }, + { name: "delivery_date", description: "Estimated delivery date", required: true } + ], + is_active: true, + created_by: "system", + updated_by: "system" + }, + { + name: "Marketing Newsletter", + value: "marketing_newsletter", + description: "Monthly marketing newsletter", + subject: "{{newsletter_title}} - Don't miss out!", + preheader: "Exclusive offers and updates inside", + email_content: ` +

{{newsletter_title}}

+

Hi {{subscriber_name}},

+

Here are this month's highlights:

+
{{newsletter_content}}
+

Don't forget to follow us on social media for daily updates!

+

Best regards,
Marketing Team

+

Unsubscribe

+ `, + category: "marketing", + channels: ["email"], + status: "Draft", + version: "1.0", + is_personal: false, + from_name: "Marketing Team", + reply_to: "marketing@example.com", + track_opens: true, + variables: [ + { name: "subscriber_name", description: "Subscriber's name", required: true }, + { name: "newsletter_title", description: "Newsletter title", required: true }, + { name: "newsletter_content", description: "Newsletter content", required: true }, + { name: "unsubscribe_url", description: "Unsubscribe URL", required: true } + ], + is_active: false, + created_by: "system", + updated_by: "system" + } +]; + +async function seedTemplates() { + try { + console.log('Starting to seed notification templates...'); + + // Clear existing sample data + await prisma.notification_templates.deleteMany({ + where: { + created_by: "system" + } + }); + + console.log('Cleared existing sample templates'); + + // Insert sample templates + for (const template of sampleTemplates) { + const created = await prisma.notification_templates.create({ + data: template + }); + console.log(`Created template: ${created.name} (${created.id})`); + } + + console.log(`Successfully seeded ${sampleTemplates.length} notification templates!`); + + } catch (error) { + console.error('Error seeding templates:', error); + throw error; + } finally { + await prisma.$disconnect(); + } +} + +// Run the seeding +if (require.main === module) { + seedTemplates() + .then(() => { + console.log('Seeding completed successfully!'); + process.exit(0); + }) + .catch((error) => { + console.error('Seeding failed:', error); + process.exit(1); + }); +} + +module.exports = seedTemplates; \ No newline at end of file diff --git a/scripts/setup-aws-ses-config.sql b/scripts/setup-aws-ses-config.sql new file mode 100644 index 0000000..4088084 --- /dev/null +++ b/scripts/setup-aws-ses-config.sql @@ -0,0 +1,60 @@ +-- Setup AWS SES SMTP Configuration in Database +-- This script configures the notification_delivery_config table with AWS SES settings + +-- Insert or update AWS SES configuration for email channel +INSERT INTO notification_delivery_config +(channel_type, is_enabled, provider, provider_config, status, success_rate, created_by, updated_by, created_at, updated_at) +VALUES ( + 'email', + true, + 'AWS SES', + JSON_OBJECT( + 'host', 'email-smtp.us-east-1.amazonaws.com', + 'port', 587, + 'secure', false, + 'user', 'YOUR_AWS_SES_SMTP_USERNAME', + 'pass', 'YOUR_AWS_SES_SMTP_PASSWORD', + 'senderEmail', 'noreply@yourcompany.com', + 'senderName', 'Your Company Name', + 'region', 'us-east-1', + 'configurationSet', '' + ), + 'Active', + 0.0, + 1, + 1, + NOW(), + NOW() +) +ON DUPLICATE KEY UPDATE + is_enabled = true, + provider = 'AWS SES', + provider_config = JSON_OBJECT( + 'host', 'email-smtp.us-east-1.amazonaws.com', + 'port', 587, + 'secure', false, + 'user', 'YOUR_AWS_SES_SMTP_USERNAME', + 'pass', 'YOUR_AWS_SES_SMTP_PASSWORD', + 'senderEmail', 'noreply@yourcompany.com', + 'senderName', 'Your Company Name', + 'region', 'us-east-1', + 'configurationSet', '' + ), + status = 'Active', + updated_by = 1, + updated_at = NOW(); + +-- Verify the configuration +SELECT + id, + channel_type, + is_enabled, + provider, + status, + JSON_EXTRACT(provider_config, '$.host') as smtp_host, + JSON_EXTRACT(provider_config, '$.port') as smtp_port, + JSON_EXTRACT(provider_config, '$.region') as aws_region, + created_at, + updated_at +FROM notification_delivery_config +WHERE channel_type = 'email'; diff --git a/scripts/setup-mailtrap-config.sql b/scripts/setup-mailtrap-config.sql new file mode 100644 index 0000000..0a5b34b --- /dev/null +++ b/scripts/setup-mailtrap-config.sql @@ -0,0 +1,56 @@ +-- Setup Mailtrap SMTP Configuration in Database +-- This script configures the notification_delivery_config table with Mailtrap settings + +-- Insert or update Mailtrap configuration for email channel +INSERT INTO notification_delivery_config +(channel_type, is_enabled, provider, provider_config, status, success_rate, created_by, updated_by, created_at, updated_at) +VALUES ( + 'email', + true, + 'Mailtrap', + JSON_OBJECT( + 'host', 'live.smtp.mailtrap.io', + 'port', 587, + 'secure', false, + 'user', 'apismtp@mailtrap.io', + 'pass', '8ec4d16f282740da5ddfc7ef7a3ca87b', + 'senderEmail', 'noreply@yourcompany.com', + 'senderName', 'Your Company Name' + ), + 'Active', + 0.0, + 1, + 1, + NOW(), + NOW() +) +ON DUPLICATE KEY UPDATE + is_enabled = true, + provider = 'Mailtrap', + provider_config = JSON_OBJECT( + 'host', 'live.smtp.mailtrap.io', + 'port', 587, + 'secure', false, + 'user', 'apismtp@mailtrap.io', + 'pass', '8ec4d16f282740da5ddfc7ef7a3ca87b', + 'senderEmail', 'noreply@yourcompany.com', + 'senderName', 'Your Company Name' + ), + status = 'Active', + updated_by = 1, + updated_at = NOW(); + +-- Verify the configuration +SELECT + id, + channel_type, + is_enabled, + provider, + status, + JSON_EXTRACT(provider_config, '$.host') as smtp_host, + JSON_EXTRACT(provider_config, '$.port') as smtp_port, + JSON_EXTRACT(provider_config, '$.user') as smtp_user, + created_at, + updated_at +FROM notification_delivery_config +WHERE channel_type = 'email'; diff --git a/scripts/test-api.js b/scripts/test-api.js new file mode 100644 index 0000000..0b7de03 --- /dev/null +++ b/scripts/test-api.js @@ -0,0 +1,206 @@ +const { PrismaClient } = require('@prisma/client'); + +const prisma = new PrismaClient(); + +async function testDatabaseConnection() { + try { + console.log('Testing database connection...'); + + // Test basic connection + await prisma.$connect(); + console.log('✅ Database connection successful'); + + // Check if notification_templates table exists + const tableInfo = await prisma.$queryRaw` + SELECT COUNT(*) as count + FROM information_schema.tables + WHERE table_schema = DATABASE() + AND table_name = 'notification_templates' + `; + + console.log('Table exists check:', tableInfo); + + // Check current data in the table + const count = await prisma.notification_templates.count(); + console.log(`📊 Current templates count: ${count}`); + + // Fetch all templates to see what we have + const templates = await prisma.notification_templates.findMany({ + select: { + id: true, + name: true, + value: true, + status: true, + category: true, + channels: true, + created_at: true + } + }); + + console.log('📝 Current templates:', JSON.stringify(templates, null, 2)); + + return { success: true, count, templates }; + + } catch (error) { + console.error('❌ Database test failed:', error); + return { success: false, error: error.message }; + } finally { + await prisma.$disconnect(); + } +} + +async function testAPILogic() { + try { + console.log('\n🧪 Testing API logic...'); + + // Simulate the API endpoint logic + const queryParams = { + page: 1, + limit: 10, + sortBy: "created_at", + sortOrder: "desc" + }; + + console.log('Query params:', queryParams); + + // Build where clause (same as API) + const whereClause = {}; + + // Calculate pagination + const skip = (queryParams.page - 1) * queryParams.limit; + + // Get total count + const totalCount = await prisma.notification_templates.count({ + where: whereClause + }); + + console.log(`📊 Total count: ${totalCount}`); + + // Fetch templates + const templates = await prisma.notification_templates.findMany({ + where: whereClause, + orderBy: { + [queryParams.sortBy]: queryParams.sortOrder + }, + skip: skip, + take: queryParams.limit, + select: { + id: true, + name: true, + value: true, + description: true, + subject: true, + category: true, + channels: true, + status: true, + version: true, + tags: true, + is_personal: true, + is_active: true, + created_by: true, + created_at: true, + updated_at: true + } + }); + + console.log(`📝 Fetched ${templates.length} templates`); + + // Format the response data (same as API) + const formattedTemplates = templates.map(template => ({ + id: template.id, + title: template.name, + value: template.value, + description: template.description, + subject: template.subject, + category: template.category, + channels: template.channels || [], + status: template.status, + version: template.version, + tags: template.tags ? template.tags.split(',').map(tag => tag.trim()) : [], + isPersonal: template.is_personal, + isActive: template.is_active, + createdBy: template.created_by, + createdAt: template.created_at, + updatedAt: template.updated_at + })); + + // Calculate pagination info + const totalPages = Math.ceil(totalCount / queryParams.limit); + const hasNextPage = queryParams.page < totalPages; + const hasPrevPage = queryParams.page > 1; + + const apiResponse = { + success: true, + data: { + templates: formattedTemplates, + pagination: { + page: queryParams.page, + limit: queryParams.limit, + totalCount, + totalPages, + hasNextPage, + hasPrevPage + } + } + }; + + console.log('🚀 Simulated API Response structure:'); + console.log(` success: ${apiResponse.success}`); + console.log(` data: ${apiResponse.data ? 'exists' : 'undefined'}`); + console.log(` data.templates: ${apiResponse.data?.templates ? `array with ${apiResponse.data.templates.length} items` : 'undefined'}`); + console.log(` data.pagination: ${apiResponse.data?.pagination ? 'exists' : 'undefined'}`); + + return apiResponse; + + } catch (error) { + console.error('❌ API logic test failed:', error); + return { + success: false, + error: error.message + }; + } +} + +async function runAllTests() { + console.log('🔍 Starting API debugging tests...\n'); + + // Test 1: Database connection and data + const dbTest = await testDatabaseConnection(); + + // Test 2: API logic simulation + const apiTest = await testAPILogic(); + + console.log('\n📋 Test Summary:'); + console.log(`Database connection: ${dbTest.success ? '✅ PASS' : '❌ FAIL'}`); + console.log(`API logic simulation: ${apiTest.success ? '✅ PASS' : '❌ FAIL'}`); + + if (!dbTest.success || !apiTest.success) { + console.log('\n🔧 Recommended actions:'); + if (!dbTest.success) { + console.log(' - Check database connection string'); + console.log(' - Ensure database server is running'); + console.log(' - Run database migrations'); + } + if (!apiTest.success) { + console.log(' - Check API endpoint implementation'); + console.log(' - Verify Prisma client setup'); + } + } + + return { dbTest, apiTest }; +} + +// Run the tests +if (require.main === module) { + runAllTests() + .then(() => { + console.log('\n✅ Debugging tests completed!'); + process.exit(0); + }) + .catch((error) => { + console.error('\n❌ Debugging tests failed:', error); + process.exit(1); + }); +} + +module.exports = runAllTests; \ No newline at end of file diff --git a/server/api/analyze-asnaf.post.ts b/server/api/analyze-asnaf.post.ts new file mode 100644 index 0000000..2034b0e --- /dev/null +++ b/server/api/analyze-asnaf.post.ts @@ -0,0 +1,124 @@ +import { defineEventHandler, readBody } from 'h3'; + +// Define an interface for the expected request body (subset of AsnafProfile) +interface AsnafAnalysisRequest { + monthlyIncome: string; + otherIncome: string; + totalIncome: string; + occupation: string; + maritalStatus: string; + dependents: Array; // Or a more specific type if you have one for dependents + // Add any other fields you deem necessary for OpenAI to analyze +} + +interface AidSuggestion { + nama: string; + peratusan: string; +} + +// Define an interface for the expected OpenAI response structure (and our API response) +interface AsnafAnalysisResponse { + hadKifayahPercentage: string; + kategoriAsnaf: string; + kategoriKeluarga: string; + cadanganKategori: string; + statusKelayakan: string; + cadanganBantuan: AidSuggestion[]; + ramalanJangkaMasaPulih: string; + rumusan: string; +} + +export default defineEventHandler(async (event): Promise => { + const body = await readBody(event); + + // --- Placeholder for Actual OpenAI API Call --- + // In a real application, you would: + // 1. Retrieve your OpenAI API key securely (e.g., from environment variables) + const openAIApiKey = process.env.OPENAI_API_KEY; + if (!openAIApiKey) { + console.error('OpenAI API key not configured. Please set OPENAI_API_KEY in your .env file.'); + throw createError({ statusCode: 500, statusMessage: 'OpenAI API key not configured' }); + } + + // 2. Construct the prompt for OpenAI using the data from `body`. + // IMPORTANT: Sanitize or carefully construct any data from `body` included in the prompt to prevent prompt injection. + const prompt = `You are an expert Zakat administrator. Based on the following applicant data: monthlyIncome: ${body.monthlyIncome}, totalIncome: ${body.totalIncome}, occupation: ${body.occupation}, maritalStatus: ${body.maritalStatus}, dependents: ${body.dependents.length}. +Return JSON with keys: hadKifayahPercentage, kategoriAsnaf, kategoriKeluarga, cadanganKategori, statusKelayakan, cadanganBantuan, ramalanJangkaMasaPulih, rumusan. +For 'cadanganBantuan', provide a JSON array of objects, where each object has a 'nama' (string, name of the aid) and 'peratusan' (string, e.g., '85%', representing suitability). Suggest 2-3 most relevant aid types. +Example for cadanganBantuan: [{"nama": "Bantuan Kewangan Bulanan", "peratusan": "90%"}, {"nama": "Bantuan Makanan Asas", "peratusan": "75%"}]. +Full JSON Example: {"hadKifayahPercentage": "75%", ..., "cadanganBantuan": [{"nama": "Bantuan Kewangan Bulanan", "peratusan": "90%"}], ...}`; + // Adjust the prompt to be more detailed and specific to your needs and desired JSON output structure. + + // 3. Make the API call to OpenAI + try { + const openAIResponse = await fetch('https://api.openai.com/v1/chat/completions', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'Authorization': `Bearer ${openAIApiKey}`, + }, + body: JSON.stringify({ + model: 'gpt-3.5-turbo', // Or your preferred model like gpt-4 + messages: [{ role: 'user', content: prompt }], + // For more consistent JSON output, consider using a model version that officially supports JSON mode if available + // and set response_format: { type: "json_object" }, (check OpenAI documentation for model compatibility) + }), + }); + + if (!openAIResponse.ok) { + const errorData = await openAIResponse.text(); + console.error('OpenAI API Error details:', errorData); + throw createError({ statusCode: openAIResponse.status, statusMessage: `Failed to get analysis from OpenAI: ${openAIResponse.statusText}` }); + } + + const openAIData = await openAIResponse.json(); + + // Parse the content from the response - structure might vary slightly based on OpenAI model/API version + // It's common for the JSON string to be in openAIData.choices[0].message.content + if (openAIData.choices && openAIData.choices[0] && openAIData.choices[0].message && openAIData.choices[0].message.content) { + const analysisResult = JSON.parse(openAIData.choices[0].message.content) as AsnafAnalysisResponse; + return analysisResult; + } else { + console.error('OpenAI response structure not as expected:', openAIData); + throw createError({ statusCode: 500, statusMessage: 'Unexpected response structure from OpenAI' }); + } + + } catch (error) { + console.error('Error during OpenAI API call or parsing:', error); + // Avoid exposing detailed internal errors to the client if they are not createError objects + if (typeof error === 'object' && error !== null && 'statusCode' in error) { + // We can infer error has statusCode here, but to be super safe with TS: + const e = error as { statusCode: number }; + if (e.statusCode) throw e; + } + throw createError({ statusCode: 500, statusMessage: 'Internal server error during AI analysis' }); + } + // --- End of Actual OpenAI API Call --- + + // The simulated response below this line should be REMOVED once the actual OpenAI call is implemented and working. + /* + console.log('Received for analysis in server route:', body); + await new Promise(resolve => setTimeout(resolve, 2000)); // Simulate API delay + + const totalIncomeNumeric = parseFloat(body.totalIncome); + let percentage = '50%'; + if (totalIncomeNumeric < 1000) percentage = '30%'; + else if (totalIncomeNumeric < 2000) percentage = '65%'; + else if (totalIncomeNumeric < 3000) percentage = '85%'; + else percentage = '110%'; + + return { + hadKifayahPercentage: percentage, + kategoriAsnaf: 'Simulated - Miskin', + kategoriKeluarga: 'Simulated - Miskin (50-100% HK)', + cadanganKategori: 'Simulated - Miskin', + statusKelayakan: 'Simulated - Layak (Miskin)', + cadanganBantuan: [ + { nama: 'Simulated - Bantuan Kewangan Bulanan', peratusan: '80%' }, + { nama: 'Simulated - Bantuan Pendidikan Anak', peratusan: '65%' } + ], + ramalanJangkaMasaPulih: 'Simulated - 6 bulan', + rumusan: 'Simulated - Pemohon memerlukan perhatian segera.' + }; + */ +}); \ No newline at end of file diff --git a/server/api/auth/login.post.js b/server/api/auth/login.post.js new file mode 100644 index 0000000..2a1d95f --- /dev/null +++ b/server/api/auth/login.post.js @@ -0,0 +1,93 @@ +import sha256 from "crypto-js/sha256.js"; +import jwt from "jsonwebtoken"; + +const ENV = useRuntimeConfig(); + +export default defineEventHandler(async (event) => { + try { + const { username, password } = await readBody(event); + + if (!username || !password) { + return { + statusCode: 400, + message: "Username and password are required", + }; + } + + const user = await prisma.user.findFirst({ + where: { + userUsername: username, + }, + }); + + if (!user) { + return { + statusCode: 404, + message: "User does not exist", + }; + } + + const hashedPassword = sha256(password).toString(); + if (user.userPassword !== hashedPassword) { + return { + statusCode: 401, + message: "Invalid password", + }; + } + + // Get user roles + const roles = await prisma.userrole.findMany({ + where: { + userRoleUserID: user.userID, + }, + select: { + role: { + select: { + roleName: true, + }, + }, + }, + }); + + const roleNames = roles.map((r) => r.role.roleName); + + const accessToken = generateAccessToken({ + username: user.userUsername, + roles: roleNames, + }); + + const refreshToken = generateRefreshToken({ + username: user.userUsername, + roles: roleNames, + }); + + // Set cookie httpOnly + event.res.setHeader("Set-Cookie", [ + `accessToken=${accessToken}; HttpOnly; Secure; SameSite=Lax; Path=/`, + `refreshToken=${refreshToken}; HttpOnly; Secure; SameSite=Lax; Path=/`, + ]); + + return { + statusCode: 200, + message: "Login success", + data: { + username: user.userUsername, + roles: roleNames, + }, + }; + } catch (error) { + console.log(error); + return { + statusCode: 500, + message: "Internal server error", + }; + } +}); + +function generateAccessToken(user) { + return jwt.sign(user, ENV.auth.secretAccess, { expiresIn: "1d" }); +} + +function generateRefreshToken(user) { + return jwt.sign(user, ENV.auth.secretRefresh, { expiresIn: "30d" }); +} diff --git a/server/api/auth/logout.get.js b/server/api/auth/logout.get.js new file mode 100644 index 0000000..c7e14d1 --- /dev/null +++ b/server/api/auth/logout.get.js @@ -0,0 +1,19 @@ +export default defineEventHandler(async (event) => { + try { + event.res.setHeader("Set-Cookie", [ + `accessToken=; HttpOnly; Secure; SameSite=Lax; Path=/`, + `refreshToken=; HttpOnly; Secure; SameSite=Lax; Path=/`, + ]); + + return { + statusCode: 200, + message: "Logout success", + }; + } catch (error) { + console.log(error); + return { + statusCode: 400, + message: "Server error", + }; + } +}); diff --git a/server/api/auth/validate.get.js b/server/api/auth/validate.get.js new file mode 100644 index 0000000..a5014e9 --- /dev/null +++ b/server/api/auth/validate.get.js @@ -0,0 +1,34 @@ +export default defineEventHandler(async (event) => { + try { + const { userID } = event.context.user; + + if (userID == null) { + return { + statusCode: 401, + message: "Unauthorized", + }; + } + + const validatedUser = await prisma.user.findFirst({ + where: { + userID: parseInt(userID), + }, + }); + if (!validatedUser) { + return { + statusCode: 401, + message: "Unauthorized", + }; + } + + return { + statusCode: 200, + message: "Authorized", + }; + } catch (error) { + return { + statusCode: 401, + message: "Unauthorized", + }; + } +}); diff --git a/server/api/devtool/api/file-code.js b/server/api/devtool/api/file-code.js new file mode 100644 index 0000000..d2fbfe7 --- /dev/null +++ b/server/api/devtool/api/file-code.js @@ -0,0 +1,24 @@ +import fs from "fs"; +import path from "path"; + +export default defineEventHandler(async (event) => { + const query = await getQuery(event); + + try { + // Get vue code from path in query + const filePath = path.join(process.cwd() + "/server/", query.path + ".js"); + const code = fs.readFileSync(filePath, "utf8"); + + return { + statusCode: 200, + message: "Code successfully loaded", + data: code, + }; + } catch (error) { + // console.log(error); + return { + statusCode: 500, + message: "File not found", + }; + } +}); diff --git a/server/api/devtool/api/linter.js b/server/api/devtool/api/linter.js new file mode 100644 index 0000000..32572eb --- /dev/null +++ b/server/api/devtool/api/linter.js @@ -0,0 +1,191 @@ +// import esline vue +import { ESLint } from "eslint"; + +export default defineEventHandler(async (event) => { + const body = await readBody(event); + + try { + if (body.code === undefined) { + return { + statusCode: 400, + message: "Bad Request", + }; + } + + // run linter + const code = body.code; + const validateNitroCode = (code) => { + // Check if this is a server route file + const isServerRoute = code.includes("defineEventHandler"); + + if (isServerRoute) { + let lineNumber = 1; + + // 1. Validate event handler structure + if (!code.includes("export default defineEventHandler")) { + throw { + message: + "Nitro route handlers must use 'export default defineEventHandler'", + line: 1, + column: 0, + }; + } + + // 2. Check for proper request handling + const hasRequestBody = code.includes("await readBody(event)"); + const hasRequestQuery = code.includes("getQuery(event)"); + const usesEventWithoutImport = + code.includes("event.") && !hasRequestBody && !hasRequestQuery; + + if (usesEventWithoutImport) { + // Find the line where event is improperly used + const lines = code.split("\n"); + for (let i = 0; i < lines.length; i++) { + if ( + lines[i].includes("event.") && + !lines[i].includes("readBody") && + !lines[i].includes("getQuery") + ) { + throw { + message: + "Use 'readBody(event)' for POST data or 'getQuery(event)' for query parameters", + line: i + 1, + column: lines[i].indexOf("event."), + }; + } + } + } + + // 3. Validate response structure + const responseRegex = /return\s+{([^}]+)}/g; + let match; + let lastIndex = 0; + + while ((match = responseRegex.exec(code)) !== null) { + lineNumber += (code.slice(lastIndex, match.index).match(/\n/g) || []) + .length; + lastIndex = match.index; + + const responseContent = match[1]; + + // Check for required response properties + if (!responseContent.includes("statusCode")) { + throw { + message: "API responses must include a 'statusCode' property", + line: lineNumber, + column: match.index - code.lastIndexOf("\n", match.index), + }; + } + + // Validate status code usage + const statusMatch = responseContent.match(/statusCode:\s*(\d+)/); + if (statusMatch) { + const statusCode = parseInt(statusMatch[1]); + if (![200, 201, 400, 401, 403, 404, 500].includes(statusCode)) { + throw { + message: `Invalid status code: ${statusCode}. Use standard HTTP status codes.`, + line: lineNumber, + column: statusMatch.index, + }; + } + } + } + + // 4. Check error handling + if (code.includes("try") && !code.includes("catch")) { + throw { + message: + "Missing error handling. Add a catch block for try statements.", + line: + code.split("\n").findIndex((line) => line.includes("try")) + 1, + column: 0, + }; + } + + // 5. Validate async/await usage + const asyncLines = code.match(/async.*=>/g) || []; + const awaitLines = code.match(/await\s+/g) || []; + + if (awaitLines.length > 0 && asyncLines.length === 0) { + throw { + message: "Using 'await' requires an async function", + line: + code.split("\n").findIndex((line) => line.includes("await")) + 1, + column: 0, + }; + } + + // // 6. Check for proper imports + // const requiredImports = new Set(); + // if (hasRequestBody) requiredImports.add("readBody"); + // if (hasRequestQuery) requiredImports.add("getQuery"); + + // const importLines = code.match(/import.*from/g) || []; + // requiredImports.forEach((imp) => { + // if (!importLines.some((line) => line.includes(imp))) { + // throw { + // message: `Missing import for '${imp}' utility`, + // line: 1, + // column: 0, + // }; + // } + // }); + } + }; + + try { + validateNitroCode(code); + + const eslint = new ESLint({ + overrideConfig: { + parser: "@babel/eslint-parser", + extends: ["@kiwicom"], + parserOptions: { + requireConfigFile: false, + ecmaVersion: 2020, + sourceType: "module", + }, + }, + useEslintrc: false, + }); + + const results = await eslint.lintText(code); + + if (results[0].messages.length > 0) { + const messages = results[0].messages[0]; + + if (messages.fatal === true) { + return { + statusCode: 400, + message: "Bad Linter Test", + data: messages, + }; + } + + return { + statusCode: 200, + message: "Good Linter test", + data: messages, + }; + } + } catch (error) { + console.log(error); + return { + statusCode: 400, + message: "Bad Linter Test", + data: { + message: error.message, + line: error.line || 1, + column: error.column || 0, + }, + }; + } + } catch (error) { + console.log(error); + return { + statusCode: 500, + message: "Internal Server Error", + errror: error, + }; + } +}); diff --git a/server/api/devtool/api/list.js b/server/api/devtool/api/list.js new file mode 100644 index 0000000..903ff37 --- /dev/null +++ b/server/api/devtool/api/list.js @@ -0,0 +1,77 @@ +import fs from "fs"; +import path from "path"; + +export default defineEventHandler(async (event) => { + try { + // get api folder path from server root folder and its files and folders inside it + const apiFolderPath = path.join(process.cwd() + "/server/api"); + const apis = fs.readdirSync(apiFolderPath); + + const apiList = getFilesAndFolders(apiFolderPath); + + const apiUrls = getApiUrls(apiList); + const jsonObject = JSON.parse(JSON.stringify(apiUrls)); + + return { + statusCode: 200, + message: "API List successfully fetched", + data: jsonObject, + }; + } catch (error) { + return { + statusCode: 500, + message: error.message, + }; + } +}); + +function getFilesAndFolders(folderPath) { + const folderFiles = fs.readdirSync(folderPath); + const files = []; + const folders = []; + const apiURL = "/api"; + + folderFiles.forEach((file) => { + const filePath = path.join(folderPath + "/" + file); + if (file == "devtool") return; + if (fs.lstatSync(filePath).isDirectory()) { + folders.push(getFilesAndFolders(filePath)); + } else { + const processPath = path.join(process.cwd() + "/server/api"); + const apiUrl = filePath + .replace(processPath, apiURL) + .replace(/\\/g, "/") + .replace(".js", ""); + const fileName = file.replace(".js", ""); + const parentFolder = folderPath + .replace(processPath, "") + .replace(/\\/g, ""); + + files.push({ + name: fileName, + parentName: parentFolder, + url: apiUrl, + }); + } + }); + + return { files, folders }; +} + +function getApiUrls(folder) { + const apiUrls = []; + + folder.files.forEach((file) => { + apiUrls.push({ + name: file.name, + parentName: file.parentName, + url: file.url, + }); + }); + + folder.folders.forEach((nestedFolder) => { + apiUrls.push(...getApiUrls(nestedFolder)); + }); + + return apiUrls; +} diff --git a/server/api/devtool/api/prettier-format.js b/server/api/devtool/api/prettier-format.js new file mode 100644 index 0000000..f8f4bb2 --- /dev/null +++ b/server/api/devtool/api/prettier-format.js @@ -0,0 +1,27 @@ +import prettier from "prettier"; + +export default defineEventHandler(async (event) => { + const body = await readBody(event); + + try { + if (body.code === undefined) { + return { + statusCode: 400, + message: "Bad Request", + }; + } + + const code = prettier.format(body.code, { semi: false, parser: "babel" }); + + return { + statusCode: 200, + message: "Code successfully formatted", + data: code, + }; + } catch (error) { + return { + statusCode: 500, + message: "Internal Server Error", + }; + } +}); diff --git a/server/api/devtool/api/save.js b/server/api/devtool/api/save.js new file mode 100644 index 0000000..567ff59 --- /dev/null +++ b/server/api/devtool/api/save.js @@ -0,0 +1,71 @@ +import fs from "fs"; +import path from "path"; + +export default defineEventHandler(async (event) => { + const body = await readBody(event); + + try { + const codeDefault = ` + export default defineEventHandler(async (event) => { + + // const query = await getQuery(event); // Get Params from URL + // const body = await readBody(event); // Get Body Data + + return { + statusCode: 200, + message: "API Route Created", + }; + + });`; + + // Overwrite vue code from path in body with new code + const filePath = path.join(process.cwd() + "/server/", body.path + ".js"); + + if (body.type == "update") { + fs.writeFileSync(filePath, body.code, "utf8"); + } else if (body.type == "add") { + // if the folder doesn't exist, create it + if (!fs.existsSync(path.dirname(filePath))) { + fs.mkdirSync(path.dirname(filePath), { recursive: true }); + } + + fs.writeFileSync(filePath, codeDefault, "utf8"); + } else if (body.type == "edit") { + // if the folder doesn't exist, create it + if (!fs.existsSync(path.dirname(filePath))) { + fs.mkdirSync(path.dirname(filePath), { recursive: true }); + } + + // Copy the file from the default path to the new path + const oldPath = path.join( + process.cwd() + "/server/", + body.oldPath + ".js" + ); + + // Copy file + fs.copyFileSync(oldPath, filePath); + + // Delete old file + fs.unlinkSync(oldPath); + } else if (body.type == "delete") { + // Delete file from path + fs.unlinkSync(filePath); + + return { + statusCode: 200, + message: "Code successfully deleted", + }; + } + + return { + statusCode: 200, + message: "Code successfully saved", + }; + } catch (error) { + console.log(error); + return { + statusCode: 500, + message: "Internal Server Error", + }; + } +}); diff --git a/server/api/devtool/config/add-custom-theme.js b/server/api/devtool/config/add-custom-theme.js new file mode 100644 index 0000000..d6ae1f9 --- /dev/null +++ b/server/api/devtool/config/add-custom-theme.js @@ -0,0 +1,90 @@ +import fs from "fs"; +import path from "path"; + +export default defineEventHandler(async (event) => { + const method = getMethod(event); + + if (method !== "POST") { + return { + statusCode: 405, + message: "Method not allowed", + }; + } + + try { + const body = await readBody(event); + const { themeName, themeCSS } = body; + + if (!themeName || !themeCSS) { + return { + statusCode: 400, + message: "Theme name and CSS are required", + }; + } + + // Validate theme name (alphanumeric and hyphens only) + if (!/^[a-zA-Z0-9-_]+$/.test(themeName)) { + return { + statusCode: 400, + message: "Theme name can only contain letters, numbers, hyphens, and underscores", + }; + } + + // Path to theme.css file + const themeCSSPath = path.join(process.cwd(), 'assets', 'style', 'css', 'base', 'theme.css'); + + // Check if theme.css exists + if (!fs.existsSync(themeCSSPath)) { + return { + statusCode: 404, + message: "theme.css file not found", + }; + } + + // Read current theme.css content + let currentContent = fs.readFileSync(themeCSSPath, 'utf8'); + + // Check if theme already exists + const themePattern = new RegExp(`html\\[data-theme="${themeName}"\\]`, 'g'); + if (themePattern.test(currentContent)) { + return { + statusCode: 409, + message: `Theme "${themeName}" already exists`, + }; + } + + // Format the new theme CSS + const formattedThemeCSS = themeCSS.trim(); + + // Ensure the CSS starts with the correct selector if not provided + let finalThemeCSS; + if (!formattedThemeCSS.includes(`html[data-theme="${themeName}"]`)) { + finalThemeCSS = `html[data-theme="${themeName}"] {\n${formattedThemeCSS}\n}`; + } else { + finalThemeCSS = formattedThemeCSS; + } + + // Add the new theme to the end of the file + const newContent = currentContent + '\n\n' + finalThemeCSS + '\n'; + + // Write the updated content back to the file + fs.writeFileSync(themeCSSPath, newContent, 'utf8'); + + return { + statusCode: 200, + message: "Custom theme added successfully", + data: { + themeName, + success: true + }, + }; + + } catch (error) { + console.error("Add custom theme error:", error); + return { + statusCode: 500, + message: "Internal server error", + error: error.message, + }; + } +}); \ No newline at end of file diff --git a/server/api/devtool/config/env.js b/server/api/devtool/config/env.js new file mode 100644 index 0000000..557c0c9 --- /dev/null +++ b/server/api/devtool/config/env.js @@ -0,0 +1,22 @@ +import fs from "fs"; +import path from "path"; + +export default defineEventHandler(async (event) => { + // Get .env file, parse and return + const envFile = path.join(process.cwd(), ".env"); + + if (!fs.existsSync(envFile)) { + return { + statusCode: 404, + message: "File not found", + }; + } + + const env = fs.readFileSync(envFile, "utf-8"); + + return { + statusCode: 200, + message: "Success", + data: env, + }; +}); diff --git a/server/api/devtool/config/loading-logo.js b/server/api/devtool/config/loading-logo.js new file mode 100644 index 0000000..8573df2 --- /dev/null +++ b/server/api/devtool/config/loading-logo.js @@ -0,0 +1,44 @@ +import { PrismaClient } from "@prisma/client"; + +const prisma = new PrismaClient(); + +export default defineEventHandler(async (event) => { + const method = getMethod(event); + + try { + if (method === "GET") { + // Get only the loading logo and site name for faster loading + const settings = await prisma.site_settings.findFirst({ + select: { + siteLoadingLogo: true, + siteName: true, + }, + orderBy: { settingID: "desc" }, + }); + + return { + statusCode: 200, + message: "Success", + data: { + siteLoadingLogo: settings?.siteLoadingLogo || '', + siteName: settings?.siteName || 'corradAF', + }, + }; + } + + return { + statusCode: 405, + message: "Method not allowed", + }; + } catch (error) { + console.error("Loading logo API error:", error); + + return { + statusCode: 500, + message: "Internal server error", + error: error.message, + }; + } finally { + await prisma.$disconnect(); + } +}); \ No newline at end of file diff --git a/server/api/devtool/config/site-settings.js b/server/api/devtool/config/site-settings.js new file mode 100644 index 0000000..753bb6c --- /dev/null +++ b/server/api/devtool/config/site-settings.js @@ -0,0 +1,217 @@ +import { PrismaClient } from "@prisma/client"; + +const prisma = new PrismaClient(); + +export default defineEventHandler(async (event) => { + const method = getMethod(event); + + try { + if (method === "GET") { + // Get site settings + let settings = await prisma.site_settings.findFirst({ + orderBy: { settingID: "desc" }, + }); + + // If no settings exist, create default ones + if (!settings) { + settings = await prisma.site_settings.create({ + data: { + siteName: "corradAF", + siteDescription: "corradAF Base Project", + themeMode: "biasa", + showSiteNameInHeader: true, + seoRobots: "index, follow", + seoTwitterCard: "summary_large_image", + settingCreatedDate: new Date(), + settingModifiedDate: new Date(), + }, + }); + } + + // Transform data to match new structure + const transformedSettings = { + siteName: settings.siteName || "corradAF", + siteNameFontSize: settings.siteNameFontSize || 18, + siteDescription: settings.siteDescription || "corradAF Base Project", + siteLogo: settings.siteLogo || "", + siteLoadingLogo: settings.siteLoadingLogo || "", + siteFavicon: settings.siteFavicon || "", + siteLoginLogo: settings.siteLoginLogo || "", + showSiteNameInHeader: settings.showSiteNameInHeader !== false, + customCSS: settings.customCSS || "", + selectedTheme: settings.themeMode || "biasa", // Use themeMode as selectedTheme + customThemeFile: settings.customThemeFile || "", + currentFont: settings.currentFont || "", + fontSource: settings.fontSource || "", + // SEO fields + seoTitle: settings.seoTitle || "", + seoDescription: settings.seoDescription || "", + seoKeywords: settings.seoKeywords || "", + seoAuthor: settings.seoAuthor || "", + seoOgImage: settings.seoOgImage || "", + seoTwitterCard: settings.seoTwitterCard || "summary_large_image", + seoCanonicalUrl: settings.seoCanonicalUrl || "", + seoRobots: settings.seoRobots || "index, follow", + seoGoogleAnalytics: settings.seoGoogleAnalytics || "", + seoGoogleTagManager: settings.seoGoogleTagManager || "", + seoFacebookPixel: settings.seoFacebookPixel || "" + }; + + return { + statusCode: 200, + message: "Success", + data: transformedSettings, + }; + } + + if (method === "POST") { + let body; + try { + body = await readBody(event); + } catch (bodyError) { + console.error("Error reading request body:", bodyError); + return { + statusCode: 400, + message: "Invalid request body", + error: bodyError.message, + }; + } + + // Validate required fields + if (!body || typeof body !== 'object') { + return { + statusCode: 400, + message: "Request body must be a valid JSON object", + }; + } + + // Check if settings exist + const existingSettings = await prisma.site_settings.findFirst(); + + // Prepare data for database (use themeMode instead of selectedTheme) + // Filter out undefined values to avoid database errors + const dbData = {}; + + // Only add fields that are not undefined + if (body.siteName !== undefined) dbData.siteName = body.siteName; + if (body.siteNameFontSize !== undefined) dbData.siteNameFontSize = body.siteNameFontSize; + if (body.siteDescription !== undefined) dbData.siteDescription = body.siteDescription; + if (body.siteLogo !== undefined) dbData.siteLogo = body.siteLogo; + if (body.siteLoadingLogo !== undefined) dbData.siteLoadingLogo = body.siteLoadingLogo; + if (body.siteFavicon !== undefined) dbData.siteFavicon = body.siteFavicon; + if (body.siteLoginLogo !== undefined) dbData.siteLoginLogo = body.siteLoginLogo; + if (body.showSiteNameInHeader !== undefined) dbData.showSiteNameInHeader = body.showSiteNameInHeader; + if (body.customCSS !== undefined) dbData.customCSS = body.customCSS; + if (body.selectedTheme !== undefined) dbData.themeMode = body.selectedTheme; + if (body.customThemeFile !== undefined) dbData.customThemeFile = body.customThemeFile; + if (body.currentFont !== undefined) dbData.currentFont = body.currentFont; + if (body.fontSource !== undefined) dbData.fontSource = body.fontSource; + if (body.seoTitle !== undefined) dbData.seoTitle = body.seoTitle; + if (body.seoDescription !== undefined) dbData.seoDescription = body.seoDescription; + if (body.seoKeywords !== undefined) dbData.seoKeywords = body.seoKeywords; + if (body.seoAuthor !== undefined) dbData.seoAuthor = body.seoAuthor; + if (body.seoOgImage !== undefined) dbData.seoOgImage = body.seoOgImage; + if (body.seoTwitterCard !== undefined) dbData.seoTwitterCard = body.seoTwitterCard; + if (body.seoCanonicalUrl !== undefined) dbData.seoCanonicalUrl = body.seoCanonicalUrl; + if (body.seoRobots !== undefined) dbData.seoRobots = body.seoRobots; + if (body.seoGoogleAnalytics !== undefined) dbData.seoGoogleAnalytics = body.seoGoogleAnalytics; + if (body.seoGoogleTagManager !== undefined) dbData.seoGoogleTagManager = body.seoGoogleTagManager; + if (body.seoFacebookPixel !== undefined) dbData.seoFacebookPixel = body.seoFacebookPixel; + + dbData.settingModifiedDate = new Date(); + + let settings; + if (existingSettings) { + // Update existing settings + settings = await prisma.site_settings.update({ + where: { settingID: existingSettings.settingID }, + data: dbData, + }); + } else { + // Create new settings + settings = await prisma.site_settings.create({ + data: { + ...dbData, + settingCreatedDate: new Date(), + }, + }); + } + + // Transform response to match new structure + const transformedSettings = { + siteName: settings.siteName || "corradAF", + siteNameFontSize: settings.siteNameFontSize || 18, + siteDescription: settings.siteDescription || "corradAF Base Project", + siteLogo: settings.siteLogo || "", + siteLoadingLogo: settings.siteLoadingLogo || "", + siteFavicon: settings.siteFavicon || "", + siteLoginLogo: settings.siteLoginLogo || "", + showSiteNameInHeader: settings.showSiteNameInHeader !== false, + customCSS: settings.customCSS || "", + selectedTheme: settings.themeMode || "biasa", // Use themeMode as selectedTheme + customThemeFile: settings.customThemeFile || "", + currentFont: settings.currentFont || "", + fontSource: settings.fontSource || "", + // SEO fields + seoTitle: settings.seoTitle || "", + seoDescription: settings.seoDescription || "", + seoKeywords: settings.seoKeywords || "", + seoAuthor: settings.seoAuthor || "", + seoOgImage: settings.seoOgImage || "", + seoTwitterCard: settings.seoTwitterCard || "summary_large_image", + seoCanonicalUrl: settings.seoCanonicalUrl || "", + seoRobots: settings.seoRobots || "index, follow", + seoGoogleAnalytics: settings.seoGoogleAnalytics || "", + seoGoogleTagManager: settings.seoGoogleTagManager || "", + seoFacebookPixel: settings.seoFacebookPixel || "" + }; + + return { + statusCode: 200, + message: "Settings updated successfully", + data: transformedSettings, + }; + } + + return { + statusCode: 405, + message: "Method not allowed", + }; + } catch (error) { + console.error("Site settings API error:", error); + + // Provide more specific error messages + if (error.code === 'P2002') { + return { + statusCode: 400, + message: "Duplicate entry error", + error: error.message, + }; + } + + if (error.code === 'P2025') { + return { + statusCode: 404, + message: "Record not found", + error: error.message, + }; + } + + if (error.code && error.code.startsWith('P')) { + return { + statusCode: 400, + message: "Database error", + error: error.message, + code: error.code, + }; + } + + return { + statusCode: 500, + message: "Internal server error", + error: error.message, + }; + } finally { + await prisma.$disconnect(); + } +}); \ No newline at end of file diff --git a/server/api/devtool/config/upload-file.js b/server/api/devtool/config/upload-file.js new file mode 100644 index 0000000..b3bf422 --- /dev/null +++ b/server/api/devtool/config/upload-file.js @@ -0,0 +1,134 @@ +import fs from "fs"; +import path from "path"; +import { v4 as uuidv4 } from "uuid"; + +export default defineEventHandler(async (event) => { + const method = getMethod(event); + + if (method !== "POST") { + return { + statusCode: 405, + message: "Method not allowed", + }; + } + + try { + const form = await readMultipartFormData(event); + + if (!form || form.length === 0) { + return { + statusCode: 400, + message: "No file uploaded", + }; + } + + const file = form[0]; + const fileType = form.find(field => field.name === 'type')?.data?.toString() || 'logo'; + + // Validate file type + const allowedTypes = { + logo: ['image/jpeg', 'image/jpg', 'image/png', 'image/gif', 'image/svg+xml'], + 'loading-logo': ['image/jpeg', 'image/jpg', 'image/png', 'image/gif', 'image/svg+xml'], + 'login-logo': ['image/jpeg', 'image/jpg', 'image/png', 'image/gif', 'image/svg+xml'], + favicon: ['image/x-icon', 'image/vnd.microsoft.icon', 'image/png'], + 'og-image': ['image/jpeg', 'image/jpg', 'image/png'], + theme: ['text/css', 'application/octet-stream'] + }; + + if (!allowedTypes[fileType] || !allowedTypes[fileType].includes(file.type)) { + return { + statusCode: 400, + message: `Invalid file type for ${fileType}. Allowed types: ${allowedTypes[fileType].join(', ')}`, + }; + } + + let uploadDir, fileUrl; + + // Determine upload directory based on file type + if (fileType === 'theme') { + // Theme files go to assets/style/css + uploadDir = path.join(process.cwd(), 'assets', 'style', 'css'); + if (!fs.existsSync(uploadDir)) { + fs.mkdirSync(uploadDir, { recursive: true }); + } + + // Generate unique filename for theme + const fileExtension = path.extname(file.filename || ''); + const uniqueFilename = `custom-theme-${uuidv4()}${fileExtension}`; + const filePath = path.join(uploadDir, uniqueFilename); + + // Save file + fs.writeFileSync(filePath, file.data); + + // Return relative path for theme files + fileUrl = `/assets/style/css/${uniqueFilename}`; + } else { + // Logo, loading-logo, favicon, and og-image files go to public/uploads + uploadDir = path.join(process.cwd(), 'public', 'uploads', 'site-settings'); + if (!fs.existsSync(uploadDir)) { + fs.mkdirSync(uploadDir, { recursive: true }); + } + + const fileExtension = path.extname(file.filename || ''); + let baseFilename; + + switch (fileType) { + case 'logo': + baseFilename = 'site-logo'; + break; + case 'loading-logo': + baseFilename = 'loading-logo'; + break; + case 'login-logo': + baseFilename = 'login-logo'; + break; + case 'favicon': + baseFilename = 'favicon'; + break; + case 'og-image': + baseFilename = 'og-image'; + break; + default: + // This case should ideally not be reached if fileType is validated earlier + // and is one of the image types. + // However, as a fallback, use the fileType itself or a generic name. + // For safety, and to avoid using uuidv4 for these specific types as requested, + // we should ensure this path isn't taken for the specified image types. + // If an unexpected fileType gets here, it might be better to error or use a UUID. + // For now, we'll stick to the primary requirement of fixed names for specified types. + // If we need UUID for other non-logo image types, that logic can be added. + // console.warn(`Unexpected fileType received: ${fileType} for non-theme upload.`); + // For simplicity, if it's an image type not explicitly handled, it will get a name like 'unknown-type.ext' + baseFilename = fileType; + } + + const filenameWithExt = `${baseFilename}${fileExtension}`; + const filePath = path.join(uploadDir, filenameWithExt); + + // Save file (overwrites if exists) + fs.writeFileSync(filePath, file.data); + + // Return file URL + fileUrl = `/uploads/site-settings/${filenameWithExt}`; + } + + return { + statusCode: 200, + message: "File uploaded successfully", + data: { + filename: path.basename(fileUrl), + url: fileUrl, + type: fileType, + size: file.data.length, + }, + }; + + } catch (error) { + console.error("Upload error:", error); + return { + statusCode: 500, + message: "Internal server error", + error: error.message, + }; + } +}); \ No newline at end of file diff --git a/server/api/devtool/content/canvas/file-code.js b/server/api/devtool/content/canvas/file-code.js new file mode 100644 index 0000000..7a01349 --- /dev/null +++ b/server/api/devtool/content/canvas/file-code.js @@ -0,0 +1,48 @@ +import fs from "fs"; +import path from "path"; + +export default defineEventHandler(async (event) => { + const query = await getQuery(event); + + let code = ""; + // console.log(query.path); + + try { + // Get vue code from path in query + const filePath = path.join(process.cwd() + "/pages/", query.path + ".vue"); + try { + code = fs.readFileSync(filePath, "utf8"); + return { + statusCode: 200, + message: "Code successfully loaded", + data: code, + }; + } catch (error) {} + + // Check if there is path with index.vue + const filePathIndex = path.join( + process.cwd() + "/pages/", + query.path + "/index.vue" + ); + + code = fs.readFileSync(filePathIndex, "utf8"); + + // Only get the template part of the code and make sure its from the first template tag to the last template tag + code = code.substring( + code.indexOf("") + ); + + return { + statusCode: 200, + message: "Code successfully loaded", + data: code, + mode: "index", + }; + } catch (error) { + return { + statusCode: 500, + message: "File not found", + }; + } +}); diff --git a/server/api/devtool/content/code/file-code.js b/server/api/devtool/content/code/file-code.js new file mode 100644 index 0000000..84b752c --- /dev/null +++ b/server/api/devtool/content/code/file-code.js @@ -0,0 +1,42 @@ +import fs from "fs"; +import path from "path"; + +export default defineEventHandler(async (event) => { + const query = await getQuery(event); + + let code = ""; + // console.log(query.path); + + try { + // Get vue code from path in query + const filePath = path.join(process.cwd() + "/pages/", query.path + ".vue"); + try { + code = fs.readFileSync(filePath, "utf8"); + return { + statusCode: 200, + message: "Code successfully loaded", + data: code, + }; + } catch (error) {} + + // Check if there is path with index.vue + const filePathIndex = path.join( + process.cwd() + "/pages/", + query.path + "/index.vue" + ); + + code = fs.readFileSync(filePathIndex, "utf8"); + + return { + statusCode: 200, + message: "Code successfully loaded", + data: code, + mode: "index", + }; + } catch (error) { + return { + statusCode: 500, + message: "File not found", + }; + } +}); diff --git a/server/api/devtool/content/code/linter.js b/server/api/devtool/content/code/linter.js new file mode 100644 index 0000000..85554c0 --- /dev/null +++ b/server/api/devtool/content/code/linter.js @@ -0,0 +1,450 @@ +import { ESLint } from "eslint"; + +export default defineEventHandler(async (event) => { + const body = await readBody(event); + + try { + if (body.code === undefined) { + return { + statusCode: 400, + message: "Bad Request", + }; + } + + const code = body.code; + + // Extract script and template content once + const scriptContent = + code.match(/]*>([\s\S]*?)<\/script>/)?.[1] || ""; + const templateContent = code.match(/