From de3c0b93c7b555a269870ee61ce9592c9464f729 Mon Sep 17 00:00:00 2001 From: donavon04 Date: Tue, 10 Dec 2024 16:32:44 -0700 Subject: [PATCH] First commit --- .gitignore | 1 + backend/.env | 0 backend/app.js | 210 ++ backend/package-lock.json | 941 +++++ backend/package.json | 19 + frontend/.gitignore | 23 + frontend/.prettierignore | 4 + frontend/.prettierrc | 8 + frontend/.vscode/settings.json | 120 + frontend/README.md | 38 + frontend/package-lock.json | 4073 +++++++++++++++++++++ frontend/package.json | 55 + frontend/postcss.config.cjs | 6 + frontend/src/app.d.ts | 9 + frontend/src/app.html | 20 + frontend/src/app.postcss | 4 + frontend/src/lib/components/Tiptap.svelte | 202 + frontend/src/lib/index.ts | 1 + frontend/src/mpe_theme.ts | 101 + frontend/src/routes/+layout.svelte | 12 + frontend/src/routes/+page.server.ts | 6 + frontend/src/routes/+page.svelte | 0 frontend/src/routes/add/+page.svelte | 111 + frontend/src/routes/document/+page.svelte | 60 + frontend/src/routes/home/+page.svelte | 131 + frontend/src/routes/login/+page.svelte | 0 frontend/static/branding/mpe_logo.png | Bin 0 -> 56373 bytes frontend/static/favicon.png | Bin 0 -> 15086 bytes frontend/svelte.config.js | 18 + frontend/tailwind.config.ts | 26 + frontend/tsconfig.json | 19 + frontend/vite.config.ts | 7 + 32 files changed, 6225 insertions(+) create mode 100644 .gitignore create mode 100644 backend/.env create mode 100644 backend/app.js create mode 100644 backend/package-lock.json create mode 100644 backend/package.json create mode 100644 frontend/.gitignore create mode 100644 frontend/.prettierignore create mode 100644 frontend/.prettierrc create mode 100644 frontend/.vscode/settings.json create mode 100644 frontend/README.md create mode 100644 frontend/package-lock.json create mode 100644 frontend/package.json create mode 100644 frontend/postcss.config.cjs create mode 100644 frontend/src/app.d.ts create mode 100644 frontend/src/app.html create mode 100644 frontend/src/app.postcss create mode 100644 frontend/src/lib/components/Tiptap.svelte create mode 100644 frontend/src/lib/index.ts create mode 100644 frontend/src/mpe_theme.ts create mode 100644 frontend/src/routes/+layout.svelte create mode 100644 frontend/src/routes/+page.server.ts create mode 100644 frontend/src/routes/+page.svelte create mode 100644 frontend/src/routes/add/+page.svelte create mode 100644 frontend/src/routes/document/+page.svelte create mode 100644 frontend/src/routes/home/+page.svelte create mode 100644 frontend/src/routes/login/+page.svelte create mode 100644 frontend/static/branding/mpe_logo.png create mode 100644 frontend/static/favicon.png create mode 100644 frontend/svelte.config.js create mode 100644 frontend/tailwind.config.ts create mode 100644 frontend/tsconfig.json create mode 100644 frontend/vite.config.ts diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b512c09 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules \ No newline at end of file diff --git a/backend/.env b/backend/.env new file mode 100644 index 0000000..e69de29 diff --git a/backend/app.js b/backend/app.js new file mode 100644 index 0000000..d49f709 --- /dev/null +++ b/backend/app.js @@ -0,0 +1,210 @@ +// Required modules +const express = require('express'); + +const { MongoClient, ObjectId } = require('mongodb'); +const cors = require('cors'); + +// Set up express app +const app = express(); +const port = process.env.PORT || 3000; + +// Parse JSON bodies +app.use(express.json({ limit: '50mb' })); // For JSON data +app.use(express.urlencoded({ limit: '50mb', extended: true })); // For URL-encoded data + +// Enabling CORS globally +app.use(cors()); + +// MongoDB configuration +const mongoUri = 'mongodb://localhost:27017'; // Replace with your MongoDB URI +const dbName = 'docucenter'; +let db; + +// Connect to MongoDB +MongoClient.connect(mongoUri, { useNewUrlParser: true, useUnifiedTopology: true }) + .then(client => { + db = client.db(dbName); + console.log(`Connected to database: ${dbName}`); + }) + .catch(err => { + console.error('Failed to connect to MongoDB:', err); + process.exit(1); + }); + +// Middleware to handle errors +app.use((err, req, res, next) => { + console.error(err); + res.status(500).json({ error: 'Something went wrong!' }); +}); + +// CRUD Routes + +// Create a new document +app.post('/documents', async (req, res) => { + const { title, body, tags } = req.body; + + // Validate input + if (!title || !body) { + return res.status(400).json({ error: 'Title and body are required' }); + } + + if (!Array.isArray(tags)) { + return res.status(400).json({ error: 'Tags must be an array' }); + } + + try { + // Insert the document into the database + const result = await db.collection('documents').insertOne({ + title, + body, + tags, + created_at: new Date() + }); + + // Respond with success + res.status(201).json({ message: 'Document created', id: result.insertedId }); + } catch (err) { + console.error('Error saving document:', err); + res.status(500).json({ error: 'Failed to save document' }); + } +}); + + +// Get all documents +app.get('/documents', async (req, res) => { + try { + const documents = await db.collection('documents').find().toArray(); + + // Process each result + const cleanedResults = documents.map(result => { + // Remove tags from the body field + let cleanedBody = result.body.replace(/]*>/g, ''); + + return { ...result, body: cleanedBody }; + }); + + res.json(cleanedResults); + } catch (err) { + console.error(err); + res.status(500).json({ error: 'Failed to retrieve documents' }); + } +}); + +// Get a document by ID +app.get('/documents/:id', async (req, res) => { + const { id } = req.params; + try { + const document = await db.collection('documents').findOne({ _id: new ObjectId(id) }); + if (!document) { + return res.status(404).json({ error: 'Document not found' }); + } + res.json(document); + } catch (err) { + console.error(err); + res.status(500).json({ error: 'Failed to retrieve document' }); + } +}); + +// Update a document +app.put('/documents/:id', async (req, res) => { + const { id } = req.params; + const { title, body } = req.body; + if (!title || !body) { + return res.status(400).json({ error: 'Title and body are required' }); + } + try { + const result = await db.collection('documents').updateOne( + { _id: new ObjectId(id) }, + { $set: { title, body, updated_at: new Date() } } + ); + if (result.matchedCount === 0) { + return res.status(404).json({ error: 'Document not found' }); + } + res.json({ message: 'Document updated' }); + } catch (err) { + console.error(err); + res.status(500).json({ error: 'Failed to update document' }); + } +}); + +// Delete a document +app.delete('/documents/:id', async (req, res) => { + const { id } = req.params; + try { + const result = await db.collection('documents').deleteOne({ _id: new ObjectId(id) }); + if (result.deletedCount === 0) { + return res.status(404).json({ error: 'Document not found' }); + } + res.json({ message: 'Document deleted' }); + } catch (err) { + console.error(err); + res.status(500).json({ error: 'Failed to delete document' }); + } +}); + + +app.get('/search', async (req, res) => { + const { query } = req.query; + + if (!query) { + return res.status(400).send('Query parameter is required'); + } + + try { + // Case-insensitive search using regular expressions + const results = await db.collection('documents').find({ + $or: [ + { title: { $regex: query, $options: 'i' } }, // Search in title + { body: { $regex: query, $options: 'i' } }, // Search in body + { tags: { $regex: query, $options: 'i' } } // Search in tags (exact match) + ] + }).toArray(); // Convert cursor to array + + // Process each result + const cleanedResults = results.map(result => { + // Remove tags from the body field + let cleanedBody = result.body.replace(/]*>/g, ''); + + // Surround query matches in the body with + const bodyRegex = new RegExp(query, 'gi'); // 'gi' for case-insensitive matching globally + cleanedBody = cleanedBody.replace(bodyRegex, match => { + return `${match}`; + }); + + // Highlight the title if it matches the query + let cleanedTitle = result.title; + const titleRegex = new RegExp(query, 'gi'); // 'gi' for case-insensitive matching globally + cleanedTitle = cleanedTitle.replace(titleRegex, match => { + return `${match}`; + }); + + // Highlight query matches in tags (tags is an array) + const cleanedTags = result.tags.map(tag => { + const tagRegex = new RegExp(query, 'gi'); + return tag.replace(tagRegex, match => { + return `${match}`; + }); + }); + + // Return the updated result with highlighted title, body, and tags + return { ...result, title: cleanedTitle, body: cleanedBody, tags: cleanedTags }; + }); + + res.json(cleanedResults); + } catch (error) { + console.error('Error performing search:', error); + res.status(500).send('Server error'); + } +}); + + + +// Handle invalid routes (404) +app.use((req, res) => { + res.status(404).json({ error: 'Route not found' }); +}); + +// Start the server +app.listen(port, () => { + console.log(`Server running on http://localhost:${port}`); +}); \ No newline at end of file diff --git a/backend/package-lock.json b/backend/package-lock.json new file mode 100644 index 0000000..1ae2cfe --- /dev/null +++ b/backend/package-lock.json @@ -0,0 +1,941 @@ +{ + "name": "backend", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "backend", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "body-parser": "^1.20.3", + "cors": "^2.8.5", + "express": "^4.21.2", + "mariadb": "^3.4.0", + "mongodb": "^6.12.0" + } + }, + "node_modules/@mongodb-js/saslprep": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.9.tgz", + "integrity": "sha512-tVkljjeEaAhCqTzajSdgbQ6gE6f3oneVwa3iXR6csiEwXXOFsiC6Uh9iAjAhXPtqa/XMDHWjjeNH/77m/Yq2dw==", + "dependencies": { + "sparse-bitfield": "^3.0.3" + } + }, + "node_modules/@types/geojson": { + "version": "7946.0.15", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.15.tgz", + "integrity": "sha512-9oSxFzDCT2Rj6DfcHF8G++jxBKS7mBqXl5xrRW+Kbvjry6Uduya2iiwqHPhVXpasAVMBYKkEPGgKhd3+/HZ6xA==" + }, + "node_modules/@types/node": { + "version": "22.10.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.1.tgz", + "integrity": "sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ==", + "dependencies": { + "undici-types": "~6.20.0" + } + }, + "node_modules/@types/webidl-conversions": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz", + "integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==" + }, + "node_modules/@types/whatwg-url": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-11.0.5.tgz", + "integrity": "sha512-coYR071JRaHa+xoEvvYqvnIHaVqaYrLPbsufM9BF63HkwI5Lgmy2QR8Q5K/lYDYo5AK82wOvSOS0UsLTpTG7uQ==", + "dependencies": { + "@types/webidl-conversions": "*" + } + }, + "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==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "node_modules/body-parser": { + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.13.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/bson": { + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/bson/-/bson-6.10.1.tgz", + "integrity": "sha512-P92xmHDQjSKPLHqFxefqMxASNq/aWJMEZugpCjf+AF/pgcUpMMQCg7t7+ewko0/u8AapvF3luf/FoehddEK+sA==", + "engines": { + "node": ">=16.20.1" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", + "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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==", + "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==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/denque": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", + "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", + "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==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.0.tgz", + "integrity": "sha512-9+Sj30DIu+4KvHqMfLUGLFYL2PkURSYMVXJyXe92nFRvlYq5hBjLEhblKB+vkd/WVlUYMWigiY07T91Fkk0+4A==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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==" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, + "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==" + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express": { + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", + "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.3", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.7.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.3.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.12", + "proxy-addr": "~2.0.7", + "qs": "6.13.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.19.0", + "serve-static": "1.16.2", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/finalhandler": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.5.tgz", + "integrity": "sha512-Y4+pKa7XeRUPWFNvOOYHkRYrfzW07oraURSvjDmRVOJ748OrVmeXtpE4+GCEHncjCjkTxPNRt8kEbxDhsn6VTg==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "dunder-proto": "^1.0.0", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "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==", + "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/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==" + }, + "node_modules/mariadb": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/mariadb/-/mariadb-3.4.0.tgz", + "integrity": "sha512-hdRPcAzs+MTxK5VG1thBW18gGTlw6yWBe9YnLB65GLo7q0fO5DWsgomIevV/pXSaWRmD3qi6ka4oSFRTExRiEQ==", + "dependencies": { + "@types/geojson": "^7946.0.14", + "@types/node": "^22.5.4", + "denque": "^2.1.0", + "iconv-lite": "^0.6.3", + "lru-cache": "^10.3.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/mariadb/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==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memory-pager": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==" + }, + "node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "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==", + "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==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mongodb": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.12.0.tgz", + "integrity": "sha512-RM7AHlvYfS7jv7+BXund/kR64DryVI+cHbVAy9P61fnb1RcWZqOW1/Wj2YhqMCx+MuYhqTRGv7AwHBzmsCKBfA==", + "dependencies": { + "@mongodb-js/saslprep": "^1.1.9", + "bson": "^6.10.1", + "mongodb-connection-string-url": "^3.0.0" + }, + "engines": { + "node": ">=16.20.1" + }, + "peerDependencies": { + "@aws-sdk/credential-providers": "^3.188.0", + "@mongodb-js/zstd": "^1.1.0 || ^2.0.0", + "gcp-metadata": "^5.2.0", + "kerberos": "^2.0.1", + "mongodb-client-encryption": ">=6.0.0 <7", + "snappy": "^7.2.2", + "socks": "^2.7.1" + }, + "peerDependenciesMeta": { + "@aws-sdk/credential-providers": { + "optional": true + }, + "@mongodb-js/zstd": { + "optional": true + }, + "gcp-metadata": { + "optional": true + }, + "kerberos": { + "optional": true + }, + "mongodb-client-encryption": { + "optional": true + }, + "snappy": { + "optional": true + }, + "socks": { + "optional": true + } + } + }, + "node_modules/mongodb-connection-string-url": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-3.0.1.tgz", + "integrity": "sha512-XqMGwRX0Lgn05TDB4PyG2h2kKO/FfWJyCzYQbIhXUxz7ETt0I/FqHjUeqj37irJ+Dl1ZtU82uYyj14u2XsZKfg==", + "dependencies": { + "@types/whatwg-url": "^11.0.2", + "whatwg-url": "^13.0.0" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "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==", + "engines": { + "node": ">= 0.6" + } + }, + "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==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", + "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==" + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "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" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/send": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "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/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, + "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==" + }, + "node_modules/serve-static": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.19.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/sparse-bitfield": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", + "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", + "dependencies": { + "memory-pager": "^1.0.2" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "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==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tr46": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", + "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", + "dependencies": { + "punycode": "^2.3.0" + }, + "engines": { + "node": ">=14" + } + }, + "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==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/undici-types": { + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==" + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.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==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-url": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-13.0.0.tgz", + "integrity": "sha512-9WWbymnqj57+XEuqADHrCJ2eSXzn8WXIW/YSGaZtb2WKAInQ6CHfaUUcTyyver0p8BDg5StLQq8h1vtZuwmOig==", + "dependencies": { + "tr46": "^4.1.1", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=16" + } + } + } +} diff --git a/backend/package.json b/backend/package.json new file mode 100644 index 0000000..ac03c3c --- /dev/null +++ b/backend/package.json @@ -0,0 +1,19 @@ +{ + "name": "backend", + "version": "1.0.0", + "main": "app.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC", + "description": "", + "dependencies": { + "body-parser": "^1.20.3", + "cors": "^2.8.5", + "express": "^4.21.2", + "mariadb": "^3.4.0", + "mongodb": "^6.12.0" + } +} diff --git a/frontend/.gitignore b/frontend/.gitignore new file mode 100644 index 0000000..d04e6f4 --- /dev/null +++ b/frontend/.gitignore @@ -0,0 +1,23 @@ +node_modules + +# Output +.output +.vercel +/.svelte-kit +/build + +# OS +.DS_Store +Thumbs.db + +# Env +.env +.env.* +!.env.example +!.env.test + +# Vite +vite.config.js.timestamp-* +vite.config.ts.timestamp-* + +.npmrc \ No newline at end of file diff --git a/frontend/.prettierignore b/frontend/.prettierignore new file mode 100644 index 0000000..ab78a95 --- /dev/null +++ b/frontend/.prettierignore @@ -0,0 +1,4 @@ +# Package Managers +package-lock.json +pnpm-lock.yaml +yarn.lock diff --git a/frontend/.prettierrc b/frontend/.prettierrc new file mode 100644 index 0000000..9573023 --- /dev/null +++ b/frontend/.prettierrc @@ -0,0 +1,8 @@ +{ + "useTabs": true, + "singleQuote": true, + "trailingComma": "none", + "printWidth": 100, + "plugins": ["prettier-plugin-svelte"], + "overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }] +} diff --git a/frontend/.vscode/settings.json b/frontend/.vscode/settings.json new file mode 100644 index 0000000..e5c5673 --- /dev/null +++ b/frontend/.vscode/settings.json @@ -0,0 +1,120 @@ +{ + "prettier.documentSelectors": [ + "**/*.svelte" + ], + "tailwindCSS.classAttributes": [ + "class", + "accent", + "active", + "animIndeterminate", + "aspectRatio", + "background", + "badge", + "bgBackdrop", + "bgDark", + "bgDrawer", + "bgLight", + "blur", + "border", + "button", + "buttonAction", + "buttonBack", + "buttonClasses", + "buttonComplete", + "buttonDismiss", + "buttonNeutral", + "buttonNext", + "buttonPositive", + "buttonTextCancel", + "buttonTextConfirm", + "buttonTextFirst", + "buttonTextLast", + "buttonTextNext", + "buttonTextPrevious", + "buttonTextSubmit", + "caretClosed", + "caretOpen", + "chips", + "color", + "controlSeparator", + "controlVariant", + "cursor", + "display", + "element", + "fill", + "fillDark", + "fillLight", + "flex", + "flexDirection", + "gap", + "gridColumns", + "height", + "hover", + "inactive", + "indent", + "justify", + "meter", + "padding", + "position", + "regionAnchor", + "regionBackdrop", + "regionBody", + "regionCaption", + "regionCaret", + "regionCell", + "regionChildren", + "regionChipList", + "regionChipWrapper", + "regionCone", + "regionContent", + "regionControl", + "regionDefault", + "regionDrawer", + "regionFoot", + "regionFootCell", + "regionFooter", + "regionHead", + "regionHeadCell", + "regionHeader", + "regionIcon", + "regionInput", + "regionInterface", + "regionInterfaceText", + "regionLabel", + "regionLead", + "regionLegend", + "regionList", + "regionListItem", + "regionNavigation", + "regionPage", + "regionPanel", + "regionRowHeadline", + "regionRowMain", + "regionSummary", + "regionSymbol", + "regionTab", + "regionTrail", + "ring", + "rounded", + "select", + "shadow", + "slotDefault", + "slotFooter", + "slotHeader", + "slotLead", + "slotMessage", + "slotMeta", + "slotPageContent", + "slotPageFooter", + "slotPageHeader", + "slotSidebarLeft", + "slotSidebarRight", + "slotTrail", + "spacing", + "text", + "track", + "transition", + "width", + "zIndex" + ] +} \ No newline at end of file diff --git a/frontend/README.md b/frontend/README.md new file mode 100644 index 0000000..5ce6766 --- /dev/null +++ b/frontend/README.md @@ -0,0 +1,38 @@ +# create-svelte + +Everything you need to build a Svelte project, powered by [`create-svelte`](https://github.com/sveltejs/kit/tree/main/packages/create-svelte). + +## Creating a project + +If you're seeing this, you've probably already done this step. Congrats! + +```bash +# create a new project in the current directory +npm create svelte@latest + +# create a new project in my-app +npm create svelte@latest my-app +``` + +## Developing + +Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server: + +```bash +npm run dev + +# or start the server and open the app in a new browser tab +npm run dev -- --open +``` + +## Building + +To create a production version of your app: + +```bash +npm run build +``` + +You can preview the production build with `npm run preview`. + +> To deploy your app, you may need to install an [adapter](https://kit.svelte.dev/docs/adapters) for your target environment. diff --git a/frontend/package-lock.json b/frontend/package-lock.json new file mode 100644 index 0000000..435b5e0 --- /dev/null +++ b/frontend/package-lock.json @@ -0,0 +1,4073 @@ +{ + "name": "frontend", + "version": "0.0.1", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "version": "0.0.1", + "dependencies": { + "@tiptap-pro/extension-emoji": "^2.16.3", + "@tiptap-pro/extension-file-handler": "^2.16.3", + "@tiptap-pro/extension-unique-id": "^2.16.3", + "@tiptap/core": "^2.10.3", + "@tiptap/extension-bullet-list": "^2.10.3", + "@tiptap/extension-character-count": "^2.10.3", + "@tiptap/extension-image": "^2.10.3", + "@tiptap/extension-list-item": "^2.10.3", + "@tiptap/extension-placeholder": "^2.10.3", + "@tiptap/extension-table": "^2.10.3", + "@tiptap/extension-table-cell": "^2.10.3", + "@tiptap/extension-table-header": "^2.10.3", + "@tiptap/extension-table-row": "^2.10.3", + "@tiptap/extension-text-align": "^2.10.3", + "@tiptap/extension-underline": "^2.10.3", + "@tiptap/pm": "^2.10.3", + "@tiptap/starter-kit": "^2.10.3", + "tippy.js": "^6.3.7" + }, + "devDependencies": { + "@skeletonlabs/skeleton": "2.10.3", + "@skeletonlabs/tw-plugin": "0.4.0", + "@sveltejs/adapter-auto": "^3.0.0", + "@sveltejs/adapter-node": "^5.2.9", + "@sveltejs/kit": "^2.0.0", + "@sveltejs/vite-plugin-svelte": "^3.0.0", + "@tailwindcss/typography": "^0.5.15", + "@types/node": "22.10.1", + "autoprefixer": "10.4.20", + "postcss": "8.4.49", + "prettier": "^3.1.1", + "prettier-plugin-svelte": "^3.1.2", + "svelte": "^4.2.7", + "svelte-check": "^4.0.0", + "tailwindcss": "3.4.16", + "typescript": "^5.0.0", + "vite": "^5.0.3", + "vite-plugin-tailwind-purgecss": "0.3.5" + } + }, + "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, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "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.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true + }, + "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==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.28", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.28.tgz", + "integrity": "sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==", + "dev": true + }, + "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==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "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==" + }, + "node_modules/@rollup/plugin-commonjs": { + "version": "28.0.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-28.0.1.tgz", + "integrity": "sha512-+tNWdlWKbpB3WgBN7ijjYkq9X5uhjmcvyjEght4NmH5fAU++zfQzAJ6wumLS+dNcvwEZhKx2Z+skY8m7v0wGSA==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "commondir": "^1.0.1", + "estree-walker": "^2.0.2", + "fdir": "^6.2.0", + "is-reference": "1.2.1", + "magic-string": "^0.30.3", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=16.0.0 || 14 >= 14.17" + }, + "peerDependencies": { + "rollup": "^2.68.0||^3.0.0||^4.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 + }, + "node_modules/@rollup/plugin-commonjs/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, + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@rollup/plugin-json": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-6.1.0.tgz", + "integrity": "sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.1.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.3.0.tgz", + "integrity": "sha512-9eO5McEICxMzJpDW9OnMYSv4Sta3hmt7VtBFz5zR9273suNOydOyq/FrGeGy+KsTRFm8w0SLVhzig2ILFT63Ag==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "@types/resolve": "1.20.2", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.22.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.78.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.3.tgz", + "integrity": "sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A==", + "dev": true, + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils/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 + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.28.1.tgz", + "integrity": "sha512-2aZp8AES04KI2dy3Ss6/MDjXbwBzj+i0GqKtWXgw2/Ma6E4jJvujryO6gJAghIRVz7Vwr9Gtl/8na3nDUKpraQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.28.1.tgz", + "integrity": "sha512-EbkK285O+1YMrg57xVA+Dp0tDBRB93/BZKph9XhMjezf6F4TpYjaUSuPt5J0fZXlSag0LmZAsTmdGGqPp4pQFA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.28.1.tgz", + "integrity": "sha512-prduvrMKU6NzMq6nxzQw445zXgaDBbMQvmKSJaxpaZ5R1QDM8w+eGxo6Y/jhT/cLoCvnZI42oEqf9KQNYz1fqQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.28.1.tgz", + "integrity": "sha512-WsvbOunsUk0wccO/TV4o7IKgloJ942hVFK1CLatwv6TJspcCZb9umQkPdvB7FihmdxgaKR5JyxDjWpCOp4uZlQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.28.1.tgz", + "integrity": "sha512-HTDPdY1caUcU4qK23FeeGxCdJF64cKkqajU0iBnTVxS8F7H/7BewvYoG+va1KPSL63kQ1PGNyiwKOfReavzvNA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.28.1.tgz", + "integrity": "sha512-m/uYasxkUevcFTeRSM9TeLyPe2QDuqtjkeoTpP9SW0XxUWfcYrGDMkO/m2tTw+4NMAF9P2fU3Mw4ahNvo7QmsQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.28.1.tgz", + "integrity": "sha512-QAg11ZIt6mcmzpNE6JZBpKfJaKkqTm1A9+y9O+frdZJEuhQxiugM05gnCWiANHj4RmbgeVJpTdmKRmH/a+0QbA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.28.1.tgz", + "integrity": "sha512-dRP9PEBfolq1dmMcFqbEPSd9VlRuVWEGSmbxVEfiq2cs2jlZAl0YNxFzAQS2OrQmsLBLAATDMb3Z6MFv5vOcXg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.28.1.tgz", + "integrity": "sha512-uGr8khxO+CKT4XU8ZUH1TTEUtlktK6Kgtv0+6bIFSeiSlnGJHG1tSFSjm41uQ9sAO/5ULx9mWOz70jYLyv1QkA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.28.1.tgz", + "integrity": "sha512-QF54q8MYGAqMLrX2t7tNpi01nvq5RI59UBNx+3+37zoKX5KViPo/gk2QLhsuqok05sSCRluj0D00LzCwBikb0A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.28.1.tgz", + "integrity": "sha512-vPul4uodvWvLhRco2w0GcyZcdyBfpfDRgNKU+p35AWEbJ/HPs1tOUrkSueVbBS0RQHAf/A+nNtDpvw95PeVKOA==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.28.1.tgz", + "integrity": "sha512-pTnTdBuC2+pt1Rmm2SV7JWRqzhYpEILML4PKODqLz+C7Ou2apEV52h19CR7es+u04KlqplggmN9sqZlekg3R1A==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.28.1.tgz", + "integrity": "sha512-vWXy1Nfg7TPBSuAncfInmAI/WZDd5vOklyLJDdIRKABcZWojNDY0NJwruY2AcnCLnRJKSaBgf/GiJfauu8cQZA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.28.1.tgz", + "integrity": "sha512-/yqC2Y53oZjb0yz8PVuGOQQNOTwxcizudunl/tFs1aLvObTclTwZ0JhXF2XcPT/zuaymemCDSuuUPXJJyqeDOg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.28.1.tgz", + "integrity": "sha512-fzgeABz7rrAlKYB0y2kSEiURrI0691CSL0+KXwKwhxvj92VULEDQLpBYLHpF49MSiPG4sq5CK3qHMnb9tlCjBw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.28.1.tgz", + "integrity": "sha512-xQTDVzSGiMlSshpJCtudbWyRfLaNiVPXt1WgdWTwWz9n0U12cI2ZVtWe/Jgwyv/6wjL7b66uu61Vg0POWVfz4g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.28.1.tgz", + "integrity": "sha512-wSXmDRVupJstFP7elGMgv+2HqXelQhuNf+IS4V+nUpNVi/GUiBgDmfwD0UGN3pcAnWsgKG3I52wMOBnk1VHr/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.28.1.tgz", + "integrity": "sha512-ZkyTJ/9vkgrE/Rk9vhMXhf8l9D+eAhbAVbsGsXKy2ohmJaWg0LPQLnIxRdRp/bKyr8tXuPlXhIoGlEB5XpJnGA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.28.1.tgz", + "integrity": "sha512-ZvK2jBafvttJjoIdKm/Q/Bh7IJ1Ose9IBOwpOXcOvW3ikGTQGmKDgxTC6oCAzW6PynbkKP8+um1du81XJHZ0JA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@skeletonlabs/skeleton": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@skeletonlabs/skeleton/-/skeleton-2.10.3.tgz", + "integrity": "sha512-O1RecF68zEVvZl3GgRS4emqWMUIQLHvTOFoqGOw/2OXCPE06IxUQrHQf2hnxCPxtGZNXY2YX8UNV38l+eH8GNQ==", + "dev": true, + "dependencies": { + "esm-env": "1.0.0" + }, + "peerDependencies": { + "svelte": "^3.56.0 || ^4.0.0 || ^5.0.0" + } + }, + "node_modules/@skeletonlabs/tw-plugin": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@skeletonlabs/tw-plugin/-/tw-plugin-0.4.0.tgz", + "integrity": "sha512-v6Y4deBq9ByRx3kTRGgekhhYkWEYgNNNu8UXOwJngCStB7w8SwmbNFSeHkluxMbgCgMnJyp220EMpw9nj/rEsQ==", + "dev": true, + "peerDependencies": { + "tailwindcss": ">=3.0.0" + } + }, + "node_modules/@sveltejs/adapter-auto": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-3.3.1.tgz", + "integrity": "sha512-5Sc7WAxYdL6q9j/+D0jJKjGREGlfIevDyHSQ2eNETHcB1TKlQWHcAo8AS8H1QdjNvSXpvOwNjykDUHPEAyGgdQ==", + "dev": true, + "dependencies": { + "import-meta-resolve": "^4.1.0" + }, + "peerDependencies": { + "@sveltejs/kit": "^2.0.0" + } + }, + "node_modules/@sveltejs/adapter-node": { + "version": "5.2.9", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-node/-/adapter-node-5.2.9.tgz", + "integrity": "sha512-51euNrx0AcaTu8//wDfVh7xmqQSVgU52rfinE/MwvGkJa4nHPJMHmzv6+OIpmxg7gZaF6+5NVlxnieCzxLD59g==", + "dev": true, + "dependencies": { + "@rollup/plugin-commonjs": "^28.0.1", + "@rollup/plugin-json": "^6.1.0", + "@rollup/plugin-node-resolve": "^15.3.0", + "rollup": "^4.9.5" + }, + "peerDependencies": { + "@sveltejs/kit": "^2.4.0" + } + }, + "node_modules/@sveltejs/kit": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.9.0.tgz", + "integrity": "sha512-W3E7ed3ChB6kPqRs2H7tcHp+Z7oiTFC6m+lLyAQQuyXeqw6LdNuuwEUla+5VM0OGgqQD+cYD6+7Xq80vVm17Vg==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@types/cookie": "^0.6.0", + "cookie": "^0.6.0", + "devalue": "^5.1.0", + "esm-env": "^1.2.1", + "import-meta-resolve": "^4.1.0", + "kleur": "^4.1.5", + "magic-string": "^0.30.5", + "mrmime": "^2.0.0", + "sade": "^1.8.1", + "set-cookie-parser": "^2.6.0", + "sirv": "^3.0.0", + "tiny-glob": "^0.2.9" + }, + "bin": { + "svelte-kit": "svelte-kit.js" + }, + "engines": { + "node": ">=18.13" + }, + "peerDependencies": { + "@sveltejs/vite-plugin-svelte": "^3.0.0 || ^4.0.0-next.1 || ^5.0.0", + "svelte": "^4.0.0 || ^5.0.0-next.0", + "vite": "^5.0.3 || ^6.0.0" + } + }, + "node_modules/@sveltejs/kit/node_modules/esm-env": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.2.1.tgz", + "integrity": "sha512-U9JedYYjCnadUlXk7e1Kr+aENQhtUaoaV9+gZm1T8LC/YBAPJx3NSPIAurFOC0U5vrdSevnUJS2/wUVxGwPhng==", + "dev": true + }, + "node_modules/@sveltejs/vite-plugin-svelte": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-3.1.2.tgz", + "integrity": "sha512-Txsm1tJvtiYeLUVRNqxZGKR/mI+CzuIQuc2gn+YCs9rMTowpNZ2Nqt53JdL8KF9bLhAf2ruR/dr9eZCwdTriRA==", + "dev": true, + "dependencies": { + "@sveltejs/vite-plugin-svelte-inspector": "^2.1.0", + "debug": "^4.3.4", + "deepmerge": "^4.3.1", + "kleur": "^4.1.5", + "magic-string": "^0.30.10", + "svelte-hmr": "^0.16.0", + "vitefu": "^0.2.5" + }, + "engines": { + "node": "^18.0.0 || >=20" + }, + "peerDependencies": { + "svelte": "^4.0.0 || ^5.0.0-next.0", + "vite": "^5.0.0" + } + }, + "node_modules/@sveltejs/vite-plugin-svelte-inspector": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-2.1.0.tgz", + "integrity": "sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==", + "dev": true, + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.0.0 || >=20" + }, + "peerDependencies": { + "@sveltejs/vite-plugin-svelte": "^3.0.0", + "svelte": "^4.0.0 || ^5.0.0-next.0", + "vite": "^5.0.0" + } + }, + "node_modules/@tailwindcss/typography": { + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.15.tgz", + "integrity": "sha512-AqhlCXl+8grUz8uqExv5OTtgpjuVIwFTSXTrh8y9/pw6q2ek7fJ+Y8ZEVw7EB2DCcuCOtEjf9w3+J3rzts01uA==", + "dev": true, + "dependencies": { + "lodash.castarray": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.merge": "^4.6.2", + "postcss-selector-parser": "6.0.10" + }, + "peerDependencies": { + "tailwindcss": ">=3.0.0 || insiders || >=4.0.0-alpha.20" + } + }, + "node_modules/@tailwindcss/typography/node_modules/postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@tiptap-pro/extension-emoji": { + "version": "2.16.3", + "resolved": "https://registry.tiptap.dev/@tiptap-pro%2fextension-emoji/-/extension-emoji-2.16.3.tgz", + "integrity": "sha512-CDHtXzQSUHMMBZl4D0L+Ot1Qs9swVJCLT5Ck+zTvvvOPsZwlew/RiWYz8fX/ifVd7clnXBjd8SuG2xhb9zY6Kw==", + "dependencies": { + "emoji-regex": "^10.4.0", + "emojibase-data": "^7.0.1", + "is-emoji-supported": "^0.0.5" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.0.0", + "@tiptap/pm": "^2.0.0", + "@tiptap/suggestion": "^2.0.0" + } + }, + "node_modules/@tiptap-pro/extension-emoji/node_modules/emoji-regex": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==" + }, + "node_modules/@tiptap-pro/extension-file-handler": { + "version": "2.16.3", + "resolved": "https://registry.tiptap.dev/@tiptap-pro%2fextension-file-handler/-/extension-file-handler-2.16.3.tgz", + "integrity": "sha512-oOHIoVSux69AnFrnxtf7yvz6/UJGN5b8QLqCoqcTTekVZScfbh9w7xT3tiY48w1ggF5qqIRZwjns7zhtDEZGeA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.0.0", + "@tiptap/pm": "^2.0.0" + } + }, + "node_modules/@tiptap-pro/extension-unique-id": { + "version": "2.16.3", + "resolved": "https://registry.tiptap.dev/@tiptap-pro%2fextension-unique-id/-/extension-unique-id-2.16.3.tgz", + "integrity": "sha512-iYV4VkJLezZIlX4l62m7n1nNBCvgPSxLj3cdlJddSx/BymCn19q/lllyxmILpr1QLriQOdSV+yZOmpPbH7yeHA==", + "dependencies": { + "uuid": "^10.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.0.0", + "@tiptap/pm": "^2.0.0" + } + }, + "node_modules/@tiptap/core": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@tiptap/core/-/core-2.10.3.tgz", + "integrity": "sha512-wAG/0/UsLeZLmshWb6rtWNXKJftcmnned91/HLccHVQAuQZ1UWH+wXeQKu/mtodxEO7JcU2mVPR9mLGQkK0McQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/pm": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-blockquote": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-blockquote/-/extension-blockquote-2.10.3.tgz", + "integrity": "sha512-u9Mq4r8KzoeGVT8ms6FQDIMN95dTh3TYcT7fZpwcVM96mIl2Oyt+Bk66mL8z4zuFptfRI57Cu9QdnHEeILd//w==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-bold": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-bold/-/extension-bold-2.10.3.tgz", + "integrity": "sha512-xnF1tS2BsORenr11qyybW120gHaeHKiKq+ZOP14cGA0MsriKvWDnaCSocXP/xMEYHy7+2uUhJ0MsKkHVj4bPzQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-bullet-list": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-bullet-list/-/extension-bullet-list-2.10.3.tgz", + "integrity": "sha512-PTkwJOVlHi4RR4Wrs044tKMceweXwNmWA6EoQ93hPUVtQcwQL990Es5Izp+i88twTPLuGD9dH+o9QDyH9SkWdA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-character-count": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-character-count/-/extension-character-count-2.10.3.tgz", + "integrity": "sha512-7L3VS9+SZqwK94/Yk4c+NEpI6kDUAYW3tYGuxCRiKHDlUy3fkXkVkPlxsoNUpAA4O05KGAwD0YW5rvAkNXdi8w==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0", + "@tiptap/pm": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-code": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-code/-/extension-code-2.10.3.tgz", + "integrity": "sha512-JyLbfyY3cPctq9sVdpcRWTcoUOoq3/MnGE1eP6eBNyMTHyBPcM9TPhOkgj+xkD1zW/884jfelB+wa70RT/AMxQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-code-block": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-code-block/-/extension-code-block-2.10.3.tgz", + "integrity": "sha512-yiDVNg22fYkzsFk5kBlDSHcjwVJgajvO/M5fDXA+Hfxwo2oNcG6aJyyHXFe+UaXTVjdkPej0J6kcMKrTMCiFug==", + "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.10.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-document/-/extension-document-2.10.3.tgz", + "integrity": "sha512-6i8+xbS2zB6t8iFzli1O/QB01MmwyI5Hqiiv4m5lOxqavmJwLss2sRhoMC2hB3CyFg5UmeODy/f/RnI6q5Vixg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-dropcursor": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-dropcursor/-/extension-dropcursor-2.10.3.tgz", + "integrity": "sha512-wzWf82ixWzZQr0hxcf/A0ul8NNxgy1N63O+c56st6OomoLuKUJWOXF+cs9O7V+/5rZKWdbdYYoRB5QLvnDBAlQ==", + "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.10.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-gapcursor/-/extension-gapcursor-2.10.3.tgz", + "integrity": "sha512-FskZi2DqDSTH1WkgLF2OLy0xU7qj3AgHsKhVsryeAtld4jAK5EsonneWgaipbz0e/MxuIvc1oyacfZKABpLaNg==", + "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.10.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-hard-break/-/extension-hard-break-2.10.3.tgz", + "integrity": "sha512-2rFlimUKAgKDwT6nqAMtPBjkrknQY8S7oBNyIcDOUGyFkvbDUl3Jd0PiC929S5F3XStJRppnMqhpNDAlWmvBLA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-heading": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-heading/-/extension-heading-2.10.3.tgz", + "integrity": "sha512-AlxXXPCWIvw8hQUDFRskasj32iMNB8Sb19VgyFWqwvntGs2/UffNu8VdsVqxD2HpZ0g5rLYCYtSW4wigs9R3og==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-history": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-history/-/extension-history-2.10.3.tgz", + "integrity": "sha512-HaSiMdx9Im9Pb9qGlVud7W8bweRDRMez33Uzs5a2x0n1RWkelfH7TwYs41Y3wus8Ujs7kw6qh7jyhvPpQBKaSA==", + "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.10.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-2.10.3.tgz", + "integrity": "sha512-1a2IWhD00tgUNg/91RLnBvfENL7DLCui5L245+smcaLu+OXOOEpoBHawx59/M4hEpsjqvRRM79TzO9YXfopsPw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0", + "@tiptap/pm": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-image": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-image/-/extension-image-2.10.3.tgz", + "integrity": "sha512-YIjAF5CwDkMe28OQ5pvnmdRgbJ9JcGMIHY1kyqNunSf2iwphK+6SWz9UEIkDFiT7AsRZySqxFSq93iK1XyTifw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-italic": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-italic/-/extension-italic-2.10.3.tgz", + "integrity": "sha512-wAiO6ZxoHx2H90phnKttLWGPjPZXrfKxhOCsqYrK8BpRByhr48godOFRuGwYnKaiwoVjpxc63t+kDJDWvqmgMw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-list-item": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-list-item/-/extension-list-item-2.10.3.tgz", + "integrity": "sha512-9sok81gvZfSta2K1Dwrq5/HSz1jk4zHBpFqCx0oydzodGslx6X1bNxdca+eXJpXZmQIWALK7zEr4X8kg3WZsgw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-ordered-list": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-ordered-list/-/extension-ordered-list-2.10.3.tgz", + "integrity": "sha512-/SFuEDnbJxy3jvi72LeyiPHWkV+uFc0LUHTUHSh20vwyy+tLrzncJfXohGbTIv5YxYhzExQYZDRD4VbSghKdlw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-paragraph": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-paragraph/-/extension-paragraph-2.10.3.tgz", + "integrity": "sha512-sNkTX/iN+YoleDiTJsrWSBw9D7c4vsYwnW5y/G5ydfuJMIRQMF78pWSIWZFDRNOMkgK5UHkhu9anrbCFYgBfaA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-placeholder": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-placeholder/-/extension-placeholder-2.10.3.tgz", + "integrity": "sha512-0OkwnDLguZgoiJM85cfnOySuMmPUF7qqw7DHQ+c3zwTAYnvzpvqrvpupc+2Zi9GfC1sDgr+Ajrp8imBHa6PHfA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0", + "@tiptap/pm": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-strike": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-strike/-/extension-strike-2.10.3.tgz", + "integrity": "sha512-jYoPy6F6njYp3txF3u23bgdRy/S5ATcWDO9LPZLHSeikwQfJ47nqb+EUNo5M8jIOgFBTn4MEbhuZ6OGyhnxopA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-table": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-table/-/extension-table-2.10.3.tgz", + "integrity": "sha512-XAvq0ptpHfuN7lQhTeew4Sqo8aKYHTqroa7cHL8I+gWJqYqKJSTGb4FAqdGIFEzHvnSsMCFbTL//kAHXvTdsHg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0", + "@tiptap/pm": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-table-cell": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-table-cell/-/extension-table-cell-2.10.3.tgz", + "integrity": "sha512-EYzBrnq7KUAcRhshIoTmC4ED8YoF4Ei5m8ZMPOctKX+QMAagKdcrw2UxuOf4tP2xgBYx+qDsKCautepZXQiL2g==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-table-header": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-table-header/-/extension-table-header-2.10.3.tgz", + "integrity": "sha512-zJqzivz+VITYIFXNH09leBbkwAPuvp504rCAFL2PMa1uaME6+oiiRqZvXQrOiRkjNpOWEXH4dqvVLwkSMZoWaw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-table-row": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-table-row/-/extension-table-row-2.10.3.tgz", + "integrity": "sha512-l6P6BAE4SuIFdPmsRd+zGP2Ks9AhLAua7nfDlHFMWDnfOeaJu7g/t4oG++9xTojDcVDHhcIe8TJYUXfhOt2anw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-text": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-text/-/extension-text-2.10.3.tgz", + "integrity": "sha512-7p9XiRprsRZm8y9jvF/sS929FCELJ5N9FQnbzikOiyGNUx5mdI+exVZlfvBr9xOD5s7fBLg6jj9Vs0fXPNRkPg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-text-align": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-text-align/-/extension-text-align-2.10.3.tgz", + "integrity": "sha512-g75sNl73gtgjP3XIcl06kvv1qw3c0rGEUD848rUU1bvlBpU3IxjkcQLgYvHmv3vpuUp9cKUkA2wa7Sv6R3fjvw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-text-style": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-text-style/-/extension-text-style-2.10.3.tgz", + "integrity": "sha512-TalYIdlF7vBA4afFhmido7AORdBbu3sV+HCByda0FiNbM6cjng3Nr9oxHOCVJy+ChqrcgF4m54zDfLmamdyu5Q==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-underline": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@tiptap/extension-underline/-/extension-underline-2.10.3.tgz", + "integrity": "sha512-VeGs0jeNiTnXddHHJEgOc/sKljZiyTEgSSuqMmsBACrr9aGFXbLTgKTvNjkZ9WzSnu7LwgJuBrwEhg8yYixUyQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/pm": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@tiptap/pm/-/pm-2.10.3.tgz", + "integrity": "sha512-771p53aU0KFvujvKpngvq2uAxThlEsjYaXcVVmwrhf0vxSSg+psKQEvqvWvHv/3BwkPVCGwmEKNVJZjaXFKu4g==", + "dependencies": { + "prosemirror-changeset": "^2.2.1", + "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.1", + "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.10.3", + "resolved": "https://registry.npmjs.org/@tiptap/starter-kit/-/starter-kit-2.10.3.tgz", + "integrity": "sha512-oq8xdVIMqohSs91ofHSr7i5dCp2F56Lb9aYIAI25lZmwNwQJL2geGOYjMSfL0IC4cQHPylIuSKYCg7vRFdZmAA==", + "dependencies": { + "@tiptap/core": "^2.10.3", + "@tiptap/extension-blockquote": "^2.10.3", + "@tiptap/extension-bold": "^2.10.3", + "@tiptap/extension-bullet-list": "^2.10.3", + "@tiptap/extension-code": "^2.10.3", + "@tiptap/extension-code-block": "^2.10.3", + "@tiptap/extension-document": "^2.10.3", + "@tiptap/extension-dropcursor": "^2.10.3", + "@tiptap/extension-gapcursor": "^2.10.3", + "@tiptap/extension-hard-break": "^2.10.3", + "@tiptap/extension-heading": "^2.10.3", + "@tiptap/extension-history": "^2.10.3", + "@tiptap/extension-horizontal-rule": "^2.10.3", + "@tiptap/extension-italic": "^2.10.3", + "@tiptap/extension-list-item": "^2.10.3", + "@tiptap/extension-ordered-list": "^2.10.3", + "@tiptap/extension-paragraph": "^2.10.3", + "@tiptap/extension-strike": "^2.10.3", + "@tiptap/extension-text": "^2.10.3", + "@tiptap/extension-text-style": "^2.10.3", + "@tiptap/pm": "^2.10.3" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + } + }, + "node_modules/@tiptap/suggestion": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@tiptap/suggestion/-/suggestion-2.10.3.tgz", + "integrity": "sha512-ReEwiPQoDTXn3RuWnj9D7Aod9dbNQz0QAoLRftWUTdbj3O2ohbvTNX6tlcfS+7x48Q+fAALiJGpp5BtctODlsA==", + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0", + "@tiptap/pm": "^2.7.0" + } + }, + "node_modules/@types/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==", + "dev": true + }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "dev": true + }, + "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==" + }, + "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==", + "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==" + }, + "node_modules/@types/node": { + "version": "22.10.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.1.tgz", + "integrity": "sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ==", + "dev": true, + "dependencies": { + "undici-types": "~6.20.0" + } + }, + "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 + }, + "node_modules/acorn": { + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "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 + }, + "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==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "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 + }, + "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==" + }, + "node_modules/aria-query": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.20", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", + "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "browserslist": "^4.23.3", + "caniuse-lite": "^1.0.30001646", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/axobject-query": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "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==", + "dev": true + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.24.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", + "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", + "dev": true, + "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" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001669", + "electron-to-chromium": "^1.5.41", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.1" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "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, + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001687", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001687.tgz", + "integrity": "sha512-0S/FDhf4ZiqrTUiQ39dKeUjYRjkv7lOZU1Dgif2rIqrTzX/1wV2hfKu9TOm1IHkdSijfLswxTFzl/cvir+SLSQ==", + "dev": true, + "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" + } + ] + }, + "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, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chokidar": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.1.tgz", + "integrity": "sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==", + "dev": true, + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/code-red": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/code-red/-/code-red-1.0.4.tgz", + "integrity": "sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15", + "@types/estree": "^1.0.1", + "acorn": "^8.10.0", + "estree-walker": "^3.0.3", + "periscopic": "^3.1.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, + "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 + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, + "node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/crelt": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz", + "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==" + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "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, + "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/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "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, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/devalue": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.1.1.tgz", + "integrity": "sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==", + "dev": true + }, + "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 + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "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, + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.5.71", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.71.tgz", + "integrity": "sha512-dB68l59BI75W1BUGVTAEJy45CEVuEGy9qPVVQ8pnHyHMn36PLPPoE1mjLH+lo9rKulO3HC2OhbACI/8tCqJBcA==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/emojibase": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/emojibase/-/emojibase-16.0.0.tgz", + "integrity": "sha512-Nw2m7JLIO4Ou2X/yZPRNscHQXVbbr6SErjkJ7EooG7MbR3yDZszCv9KTizsXFc7yZl0n3WF+qUKIC/Lw6H9xaQ==", + "peer": true, + "engines": { + "node": ">=18.12.0" + }, + "funding": { + "type": "ko-fi", + "url": "https://ko-fi.com/milesjohnson" + } + }, + "node_modules/emojibase-data": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/emojibase-data/-/emojibase-data-7.0.1.tgz", + "integrity": "sha512-BLZpOdwyFpZ7lzBWyDtnxmKVm/SJMYgAfp1if3o6n1TVUMSXAf0nikONXl90LZuJ/m3XWPBkkubgCet2BsCGGQ==", + "funding": { + "type": "ko-fi", + "url": "https://ko-fi.com/milesjohnson" + }, + "peerDependencies": { + "emojibase": "*" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/esm-env": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.0.0.tgz", + "integrity": "sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==", + "dev": true + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "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-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fdir": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.2.tgz", + "integrity": "sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==", + "dev": true, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/foreground-child": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "dev": true, + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globalyzer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", + "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", + "dev": true + }, + "node_modules/globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", + "dev": true + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/import-meta-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", + "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "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==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "dev": true, + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-emoji-supported": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/is-emoji-supported/-/is-emoji-supported-0.0.5.tgz", + "integrity": "sha512-WOlXUhDDHxYqcSmFZis+xWhhqXiK2SU0iYiqmth5Ip0FHLZQAt9rKL5ahnilE8/86WH8tZ3bmNNNC+bTzamqlw==" + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "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, + "engines": { + "node": ">=8" + } + }, + "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==", + "dev": true, + "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 + }, + "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==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-reference": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz", + "integrity": "sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==", + "dev": true, + "dependencies": { + "@types/estree": "^1.0.6" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jiti": { + "version": "1.21.6", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", + "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", + "dev": true, + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "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 + }, + "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==", + "dependencies": { + "uc.micro": "^2.0.0" + } + }, + "node_modules/locate-character": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", + "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==", + "dev": true + }, + "node_modules/lodash.castarray": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.castarray/-/lodash.castarray-4.4.0.tgz", + "integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==", + "dev": true + }, + "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==", + "dev": true + }, + "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 + }, + "node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true + }, + "node_modules/magic-string": { + "version": "0.30.14", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.14.tgz", + "integrity": "sha512-5c99P1WKTed11ZC0HMJOj6CDIue6F8ySu+bJL+85q1zBEIY8IklrJ1eiKC2NDRh3Ct3FcvmJPyQHb9erXMTJNw==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "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==", + "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/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 + }, + "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==" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/mrmime": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", + "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "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 + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-releases": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "dev": true + }, + "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==", + "dev": true, + "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, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "dev": true, + "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, + "engines": { + "node": ">= 6" + } + }, + "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==" + }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true + }, + "node_modules/parse5": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz", + "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==", + "dev": true, + "dependencies": { + "entities": "^4.5.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz", + "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==", + "dev": true, + "dependencies": { + "domhandler": "^5.0.3", + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "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==", + "dev": true, + "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==", + "dev": true + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/periscopic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz", + "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==", + "dev": true, + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^3.0.0", + "is-reference": "^3.0.0" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true + }, + "node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.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, + "engines": { + "node": ">= 6" + } + }, + "node_modules/postcss": { + "version": "8.4.49", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", + "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "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, + "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-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, + "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.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-nested": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "postcss-selector-parser": "^6.1.1" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/prettier": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz", + "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==", + "dev": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-plugin-svelte": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-3.3.2.tgz", + "integrity": "sha512-kRPjH8wSj2iu+dO+XaUv4vD8qr5mdDmlak3IT/7AOgGIMRG86z/EHOLauFcClKEnOUf4A4nOA7sre5KrJD4Raw==", + "dev": true, + "peerDependencies": { + "prettier": "^3.0.0", + "svelte": "^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0" + } + }, + "node_modules/prosemirror-changeset": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/prosemirror-changeset/-/prosemirror-changeset-2.2.1.tgz", + "integrity": "sha512-J7msc6wbxB4ekDFj+n9gTW/jav/p53kdlivvuppHsrZXCaQdVgRghoZbSS3kwrRyAstRVQ4/+u5k7YfLgkkQvQ==", + "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==", + "dependencies": { + "prosemirror-state": "^1.0.0" + } + }, + "node_modules/prosemirror-commands": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/prosemirror-commands/-/prosemirror-commands-1.6.2.tgz", + "integrity": "sha512-0nDHH++qcf/BuPLYvmqZTUUsPJUCPBUXt0J1ErTcDIS369CTp773itzLGIgIXG4LJXOlwYCr44+Mh4ii6MP1QA==", + "dependencies": { + "prosemirror-model": "^1.0.0", + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.10.2" + } + }, + "node_modules/prosemirror-dropcursor": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/prosemirror-dropcursor/-/prosemirror-dropcursor-1.8.1.tgz", + "integrity": "sha512-M30WJdJZLyXHi3N8vxN6Zh5O8ZBbQCz0gURTfPmTIBNQ5pxrdU7A58QkNqfa98YEjSAL1HUyyU34f6Pm5xBSGw==", + "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==", + "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==", + "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.4.0", + "resolved": "https://registry.npmjs.org/prosemirror-inputrules/-/prosemirror-inputrules-1.4.0.tgz", + "integrity": "sha512-6ygpPRuTJ2lcOXs9JkefieMst63wVJBgHZGl5QOytN7oSZs3Co/BYbc3Yx9zm9H37Bxw8kVzCnDsihsVsL4yEg==", + "dependencies": { + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.0.0" + } + }, + "node_modules/prosemirror-keymap": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/prosemirror-keymap/-/prosemirror-keymap-1.2.2.tgz", + "integrity": "sha512-EAlXoksqC6Vbocqc0GtzCruZEzYgrn+iiGnNjsJsH4mrnIGex4qbLdWWNza3AW5W36ZRrlBID0eM6bdKH4OStQ==", + "dependencies": { + "prosemirror-state": "^1.0.0", + "w3c-keyname": "^2.2.0" + } + }, + "node_modules/prosemirror-markdown": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/prosemirror-markdown/-/prosemirror-markdown-1.13.1.tgz", + "integrity": "sha512-Sl+oMfMtAjWtlcZoj/5L/Q39MpEnVZ840Xo330WJWUvgyhNmLBLN7MsHn07s53nG/KImevWHSE6fEj4q/GihHw==", + "dependencies": { + "@types/markdown-it": "^14.0.0", + "markdown-it": "^14.0.0", + "prosemirror-model": "^1.20.0" + } + }, + "node_modules/prosemirror-menu": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/prosemirror-menu/-/prosemirror-menu-1.2.4.tgz", + "integrity": "sha512-S/bXlc0ODQup6aiBbWVsX/eM+xJgCTAfMq/nLqaO5ID/am4wS0tTCIkzwytmao7ypEtjj39i7YbJjAgO20mIqA==", + "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.24.0", + "resolved": "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.24.0.tgz", + "integrity": "sha512-Ft7epNnycoQSM+2ObF35SBbBX+5WY39v8amVlrtlAcpglhlHs2tCTnWl7RX5tbp/PsMKcRcWV9cXPuoBWq0AIQ==", + "dependencies": { + "orderedmap": "^2.0.0" + } + }, + "node_modules/prosemirror-schema-basic": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/prosemirror-schema-basic/-/prosemirror-schema-basic-1.2.3.tgz", + "integrity": "sha512-h+H0OQwZVqMon1PNn0AG9cTfx513zgIG2DY00eJ00Yvgb3UD+GQ/VlWW5rcaxacpCGT1Yx8nuhwXk4+QbXUfJA==", + "dependencies": { + "prosemirror-model": "^1.19.0" + } + }, + "node_modules/prosemirror-schema-list": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/prosemirror-schema-list/-/prosemirror-schema-list-1.5.0.tgz", + "integrity": "sha512-gg1tAfH1sqpECdhIHOA/aLg2VH3ROKBWQ4m8Qp9mBKrOxQRW61zc+gMCI8nh22gnBzd1t2u1/NPLmO3nAa3ssg==", + "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==", + "dependencies": { + "prosemirror-model": "^1.0.0", + "prosemirror-transform": "^1.0.0", + "prosemirror-view": "^1.27.0" + } + }, + "node_modules/prosemirror-tables": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/prosemirror-tables/-/prosemirror-tables-1.6.1.tgz", + "integrity": "sha512-p8WRJNA96jaNQjhJolmbxTzd6M4huRE5xQ8OxjvMhQUP0Nzpo4zz6TztEiwk6aoqGBhz9lxRWR1yRZLlpQN98w==", + "dependencies": { + "prosemirror-keymap": "^1.1.2", + "prosemirror-model": "^1.8.1", + "prosemirror-state": "^1.3.1", + "prosemirror-transform": "^1.2.1", + "prosemirror-view": "^1.13.3" + } + }, + "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==", + "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.2", + "resolved": "https://registry.npmjs.org/prosemirror-transform/-/prosemirror-transform-1.10.2.tgz", + "integrity": "sha512-2iUq0wv2iRoJO/zj5mv8uDUriOHWzXRnOTVgCzSXnktS/2iQRa3UUQwVlkBlYZFtygw6Nh1+X4mGqoYBINn5KQ==", + "dependencies": { + "prosemirror-model": "^1.21.0" + } + }, + "node_modules/prosemirror-view": { + "version": "1.37.0", + "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.37.0.tgz", + "integrity": "sha512-z2nkKI1sJzyi7T47Ji/ewBPuIma1RNvQCCYVdV+MqWBV7o4Sa1n94UJCJJ1aQRF/xRkFfyqLGlGFWitIcCOtbg==", + "dependencies": { + "prosemirror-model": "^1.20.0", + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.1.0" + } + }, + "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==", + "engines": { + "node": ">=6" + } + }, + "node_modules/purgecss": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-6.0.0.tgz", + "integrity": "sha512-s3EBxg5RSWmpqd0KGzNqPiaBbWDz1/As+2MzoYVGMqgDqRTLBhJW6sywfTBek7OwNfoS/6pS0xdtvChNhFj2cw==", + "dev": true, + "dependencies": { + "commander": "^12.0.0", + "glob": "^10.3.10", + "postcss": "^8.4.4", + "postcss-selector-parser": "^6.0.7" + }, + "bin": { + "purgecss": "bin/purgecss.js" + } + }, + "node_modules/purgecss-from-html": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/purgecss-from-html/-/purgecss-from-html-6.0.0.tgz", + "integrity": "sha512-GkgAUzgyC4kwcVY5+QOI2eqQghV1Lq7q2uIODAPIueiBn3mHpJOh9boSMjfUQg0/YU/ZEWq7SzjwetuqxTvD4g==", + "dev": true, + "dependencies": { + "parse5": "^7.1.2", + "parse5-htmlparser2-tree-adapter": "^7.0.0" + } + }, + "node_modules/purgecss/node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "dev": true, + "engines": { + "node": ">=18" + } + }, + "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==", + "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" + } + ] + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readdirp": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz", + "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==", + "dev": true, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "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/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rollup": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.28.1.tgz", + "integrity": "sha512-61fXYl/qNVinKmGSTHAZ6Yy8I3YIJC/r2m9feHo6SwVAVcLT5MPwOUFe7EuURA/4m0NR8lXG4BBXuo/IZEsjMg==", + "dev": true, + "dependencies": { + "@types/estree": "1.0.6" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.28.1", + "@rollup/rollup-android-arm64": "4.28.1", + "@rollup/rollup-darwin-arm64": "4.28.1", + "@rollup/rollup-darwin-x64": "4.28.1", + "@rollup/rollup-freebsd-arm64": "4.28.1", + "@rollup/rollup-freebsd-x64": "4.28.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.28.1", + "@rollup/rollup-linux-arm-musleabihf": "4.28.1", + "@rollup/rollup-linux-arm64-gnu": "4.28.1", + "@rollup/rollup-linux-arm64-musl": "4.28.1", + "@rollup/rollup-linux-loongarch64-gnu": "4.28.1", + "@rollup/rollup-linux-powerpc64le-gnu": "4.28.1", + "@rollup/rollup-linux-riscv64-gnu": "4.28.1", + "@rollup/rollup-linux-s390x-gnu": "4.28.1", + "@rollup/rollup-linux-x64-gnu": "4.28.1", + "@rollup/rollup-linux-x64-musl": "4.28.1", + "@rollup/rollup-win32-arm64-msvc": "4.28.1", + "@rollup/rollup-win32-ia32-msvc": "4.28.1", + "@rollup/rollup-win32-x64-msvc": "4.28.1", + "fsevents": "~2.3.2" + } + }, + "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==" + }, + "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==", + "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" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/sade": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "dev": true, + "dependencies": { + "mri": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/set-cookie-parser": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz", + "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==", + "dev": true + }, + "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==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sirv": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.0.tgz", + "integrity": "sha512-BPwJGUeDaDCHihkORDchNyyTvWFhcusy1XMmhEVTQTwGeybFbp8YEmB+njbPnth1FibULBSBVwCQni25XlCUDg==", + "dev": true, + "dependencies": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "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-cjs/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/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 + }, + "node_modules/string-width-cjs/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, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/sucrase": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "^10.3.10", + "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": ">=16 || 14 >=14.17" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svelte": { + "version": "4.2.19", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.19.tgz", + "integrity": "sha512-IY1rnGr6izd10B0A8LqsBfmlT5OILVuZ7XsI0vdGPEvuonFV7NYEUK4dAkm9Zg2q0Um92kYjTpS1CAP3Nh/KWw==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.1", + "@jridgewell/sourcemap-codec": "^1.4.15", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/estree": "^1.0.1", + "acorn": "^8.9.0", + "aria-query": "^5.3.0", + "axobject-query": "^4.0.0", + "code-red": "^1.0.3", + "css-tree": "^2.3.1", + "estree-walker": "^3.0.3", + "is-reference": "^3.0.1", + "locate-character": "^3.0.0", + "magic-string": "^0.30.4", + "periscopic": "^3.1.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/svelte-check": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-4.1.1.tgz", + "integrity": "sha512-NfaX+6Qtc8W/CyVGS/F7/XdiSSyXz+WGYA9ZWV3z8tso14V2vzjfXviKaTFEzB7g8TqfgO2FOzP6XT4ApSTUTw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "chokidar": "^4.0.1", + "fdir": "^6.2.0", + "picocolors": "^1.0.0", + "sade": "^1.7.4" + }, + "bin": { + "svelte-check": "bin/svelte-check" + }, + "engines": { + "node": ">= 18.0.0" + }, + "peerDependencies": { + "svelte": "^4.0.0 || ^5.0.0-next.0", + "typescript": ">=5.0.0" + } + }, + "node_modules/svelte-hmr": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.16.0.tgz", + "integrity": "sha512-Gyc7cOS3VJzLlfj7wKS0ZnzDVdv3Pn2IuVeJPk9m2skfhcu5bq3wtIZyQGggr7/Iim5rH5cncyQft/kRLupcnA==", + "dev": true, + "engines": { + "node": "^12.20 || ^14.13.1 || >= 16" + }, + "peerDependencies": { + "svelte": "^3.19.0 || ^4.0.0" + } + }, + "node_modules/tailwindcss": { + "version": "3.4.16", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.16.tgz", + "integrity": "sha512-TI4Cyx7gDiZ6r44ewaJmt0o6BrMCT5aK5e0rmJ/G9Xq3w7CX/5VXl/zIPEJZFUK5VEqwByyhqNPycPlvcK4ZNw==", + "dev": true, + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.6.0", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.2", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.6", + "lilconfig": "^3.1.3", + "micromatch": "^4.0.8", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.1.1", + "postcss": "^8.4.47", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.2", + "postcss-nested": "^6.2.0", + "postcss-selector-parser": "^6.1.2", + "resolve": "^1.22.8", + "sucrase": "^3.35.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tailwindcss/node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/tailwindcss/node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/tailwindcss/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/tailwindcss/node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.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, + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tiny-glob": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", + "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", + "dev": true, + "dependencies": { + "globalyzer": "0.1.0", + "globrex": "^0.1.2" + } + }, + "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==", + "dependencies": { + "@popperjs/core": "^2.9.0" + } + }, + "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==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true + }, + "node_modules/typescript": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz", + "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "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==" + }, + "node_modules/undici-types": { + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "dev": true + }, + "node_modules/update-browserslist-db": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", + "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", + "dev": true, + "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" + } + ], + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.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==", + "dev": true + }, + "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" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/vite": { + "version": "5.4.11", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.11.tgz", + "integrity": "sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==", + "dev": true, + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-plugin-tailwind-purgecss": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/vite-plugin-tailwind-purgecss/-/vite-plugin-tailwind-purgecss-0.3.5.tgz", + "integrity": "sha512-Ds9My/ED/DMWwMGgGUfu/KVxHKQnacnu0b3Kvm7Dv6ubOGuJq50pfbShVxLuSXFc6dOQKLTLZaoqdW9qxpC26g==", + "dev": true, + "dependencies": { + "chalk": "^5.3.0", + "css-tree": "^2.3.1", + "fast-glob": "^3.3.2", + "purgecss": "^6.0.0", + "purgecss-from-html": "^6.0.0" + }, + "peerDependencies": { + "tailwindcss": "^3.3.0", + "vite": "^4.1.1 || ^5.0.0 || ^6.0.0" + } + }, + "node_modules/vitefu": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.5.tgz", + "integrity": "sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==", + "dev": true, + "peerDependencies": { + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, + "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==" + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "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/wrap-ansi-cjs/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, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/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, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/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 + }, + "node_modules/wrap-ansi-cjs/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, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/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, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yaml": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.1.tgz", + "integrity": "sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==", + "dev": true, + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + } + } +} diff --git a/frontend/package.json b/frontend/package.json new file mode 100644 index 0000000..f71bc96 --- /dev/null +++ b/frontend/package.json @@ -0,0 +1,55 @@ +{ + "name": "", + "version": "0.0.1", + "private": true, + "scripts": { + "dev": "vite dev", + "build": "vite build", + "preview": "vite preview", + "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", + "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", + "lint": "prettier --check .", + "format": "prettier --write ." + }, + "devDependencies": { + "@skeletonlabs/skeleton": "2.10.3", + "@skeletonlabs/tw-plugin": "0.4.0", + "@sveltejs/adapter-auto": "^3.0.0", + "@sveltejs/adapter-node": "^5.2.9", + "@sveltejs/kit": "^2.0.0", + "@sveltejs/vite-plugin-svelte": "^3.0.0", + "@tailwindcss/typography": "^0.5.15", + "@types/node": "22.10.1", + "autoprefixer": "10.4.20", + "postcss": "8.4.49", + "prettier": "^3.1.1", + "prettier-plugin-svelte": "^3.1.2", + "svelte": "^4.2.7", + "svelte-check": "^4.0.0", + "tailwindcss": "3.4.16", + "typescript": "^5.0.0", + "vite": "^5.0.3", + "vite-plugin-tailwind-purgecss": "0.3.5" + }, + "type": "module", + "dependencies": { + "@tiptap-pro/extension-emoji": "^2.16.3", + "@tiptap-pro/extension-file-handler": "^2.16.3", + "@tiptap-pro/extension-unique-id": "^2.16.3", + "@tiptap/core": "^2.10.3", + "@tiptap/extension-bullet-list": "^2.10.3", + "@tiptap/extension-character-count": "^2.10.3", + "@tiptap/extension-image": "^2.10.3", + "@tiptap/extension-list-item": "^2.10.3", + "@tiptap/extension-placeholder": "^2.10.3", + "@tiptap/extension-table": "^2.10.3", + "@tiptap/extension-table-cell": "^2.10.3", + "@tiptap/extension-table-header": "^2.10.3", + "@tiptap/extension-table-row": "^2.10.3", + "@tiptap/extension-text-align": "^2.10.3", + "@tiptap/extension-underline": "^2.10.3", + "@tiptap/pm": "^2.10.3", + "@tiptap/starter-kit": "^2.10.3", + "tippy.js": "^6.3.7" + } +} diff --git a/frontend/postcss.config.cjs b/frontend/postcss.config.cjs new file mode 100644 index 0000000..16dce0b --- /dev/null +++ b/frontend/postcss.config.cjs @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +} \ No newline at end of file diff --git a/frontend/src/app.d.ts b/frontend/src/app.d.ts new file mode 100644 index 0000000..8f4d638 --- /dev/null +++ b/frontend/src/app.d.ts @@ -0,0 +1,9 @@ +// See https://kit.svelte.dev/docs/types#app +// for information about these interfaces +// and what to do when importing types +declare namespace App { + // interface Locals {} + // interface PageData {} + // interface Error {} + // interface Platform {} +} diff --git a/frontend/src/app.html b/frontend/src/app.html new file mode 100644 index 0000000..ade5272 --- /dev/null +++ b/frontend/src/app.html @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + %sveltekit.head% + + +
%sveltekit.body%
+ + diff --git a/frontend/src/app.postcss b/frontend/src/app.postcss new file mode 100644 index 0000000..510ff1d --- /dev/null +++ b/frontend/src/app.postcss @@ -0,0 +1,4 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; +@tailwind variants; diff --git a/frontend/src/lib/components/Tiptap.svelte b/frontend/src/lib/components/Tiptap.svelte new file mode 100644 index 0000000..860015f --- /dev/null +++ b/frontend/src/lib/components/Tiptap.svelte @@ -0,0 +1,202 @@ + + +{#if editor} +
+ + + + + + + + + + + + + + + +
+{/if} + +
+ + \ No newline at end of file diff --git a/frontend/src/lib/index.ts b/frontend/src/lib/index.ts new file mode 100644 index 0000000..856f2b6 --- /dev/null +++ b/frontend/src/lib/index.ts @@ -0,0 +1 @@ +// place files you want to import through the `$lib` alias in this folder. diff --git a/frontend/src/mpe_theme.ts b/frontend/src/mpe_theme.ts new file mode 100644 index 0000000..0ac7fbf --- /dev/null +++ b/frontend/src/mpe_theme.ts @@ -0,0 +1,101 @@ +// You can also use the generator at https://skeleton.dev/docs/generator to create these values for you +import type { CustomThemeConfig } from '@skeletonlabs/tw-plugin'; +export const mpe_theme: CustomThemeConfig = { + name: 'mpe_theme', + properties: { + // =~= Theme Properties =~= + "--theme-font-family-base": "system-ui", + "--theme-font-family-heading": "system-ui", + "--theme-font-color-base": "0 0 0", + "--theme-font-color-dark": "255 255 255", + "--theme-rounded-base": "9999px", + "--theme-rounded-container": "8px", + "--theme-border-base": "1px", + // =~= Theme On-X Colors =~= + "--on-primary": "0 0 0", + "--on-secondary": "255 255 255", + "--on-tertiary": "0 0 0", + "--on-success": "0 0 0", + "--on-warning": "0 0 0", + "--on-error": "255 255 255", + "--on-surface": "255 255 255", + // =~= Theme Colors =~= + // primary | #0FBA81 + "--color-primary-50": "219 245 236", // #dbf5ec + "--color-primary-100": "207 241 230", // #cff1e6 + "--color-primary-200": "195 238 224", // #c3eee0 + "--color-primary-300": "159 227 205", // #9fe3cd + "--color-primary-400": "87 207 167", // #57cfa7 + "--color-primary-500": "15 186 129", // #0FBA81 + "--color-primary-600": "14 167 116", // #0ea774 + "--color-primary-700": "11 140 97", // #0b8c61 + "--color-primary-800": "9 112 77", // #09704d + "--color-primary-900": "7 91 63", // #075b3f + // secondary | #4F46E5 + "--color-secondary-50": "229 227 251", // #e5e3fb + "--color-secondary-100": "220 218 250", // #dcdafa + "--color-secondary-200": "211 209 249", // #d3d1f9 + "--color-secondary-300": "185 181 245", // #b9b5f5 + "--color-secondary-400": "132 126 237", // #847eed + "--color-secondary-500": "79 70 229", // #4F46E5 + "--color-secondary-600": "71 63 206", // #473fce + "--color-secondary-700": "59 53 172", // #3b35ac + "--color-secondary-800": "47 42 137", // #2f2a89 + "--color-secondary-900": "39 34 112", // #272270 + // tertiary | #0EA5E9 + "--color-tertiary-50": "219 242 252", // #dbf2fc + "--color-tertiary-100": "207 237 251", // #cfedfb + "--color-tertiary-200": "195 233 250", // #c3e9fa + "--color-tertiary-300": "159 219 246", // #9fdbf6 + "--color-tertiary-400": "86 192 240", // #56c0f0 + "--color-tertiary-500": "14 165 233", // #0EA5E9 + "--color-tertiary-600": "13 149 210", // #0d95d2 + "--color-tertiary-700": "11 124 175", // #0b7caf + "--color-tertiary-800": "8 99 140", // #08638c + "--color-tertiary-900": "7 81 114", // #075172 + // success | #84cc16 + "--color-success-50": "237 247 220", // #edf7dc + "--color-success-100": "230 245 208", // #e6f5d0 + "--color-success-200": "224 242 197", // #e0f2c5 + "--color-success-300": "206 235 162", // #ceeba2 + "--color-success-400": "169 219 92", // #a9db5c + "--color-success-500": "132 204 22", // #84cc16 + "--color-success-600": "119 184 20", // #77b814 + "--color-success-700": "99 153 17", // #639911 + "--color-success-800": "79 122 13", // #4f7a0d + "--color-success-900": "65 100 11", // #41640b + // warning | #EAB308 + "--color-warning-50": "252 244 218", // #fcf4da + "--color-warning-100": "251 240 206", // #fbf0ce + "--color-warning-200": "250 236 193", // #faecc1 + "--color-warning-300": "247 225 156", // #f7e19c + "--color-warning-400": "240 202 82", // #f0ca52 + "--color-warning-500": "234 179 8", // #EAB308 + "--color-warning-600": "211 161 7", // #d3a107 + "--color-warning-700": "176 134 6", // #b08606 + "--color-warning-800": "140 107 5", // #8c6b05 + "--color-warning-900": "115 88 4", // #735804 + // error | #D41976 + "--color-error-50": "249 221 234", // #f9ddea + "--color-error-100": "246 209 228", // #f6d1e4 + "--color-error-200": "244 198 221", // #f4c6dd + "--color-error-300": "238 163 200", // #eea3c8 + "--color-error-400": "225 94 159", // #e15e9f + "--color-error-500": "212 25 118", // #D41976 + "--color-error-600": "191 23 106", // #bf176a + "--color-error-700": "159 19 89", // #9f1359 + "--color-error-800": "127 15 71", // #7f0f47 + "--color-error-900": "104 12 58", // #680c3a + // surface | #495a8f + "--color-surface-50": "228 230 238", // #e4e6ee + "--color-surface-100": "219 222 233", // #dbdee9 + "--color-surface-200": "210 214 227", // #d2d6e3 + "--color-surface-300": "182 189 210", // #b6bdd2 + "--color-surface-400": "128 140 177", // #808cb1 + "--color-surface-500": "73 90 143", // #495a8f + "--color-surface-600": "66 81 129", // #425181 + "--color-surface-700": "55 68 107", // #37446b + "--color-surface-800": "44 54 86", // #2c3656 + "--color-surface-900": "36 44 70", // #242c46 + } +} \ No newline at end of file diff --git a/frontend/src/routes/+layout.svelte b/frontend/src/routes/+layout.svelte new file mode 100644 index 0000000..983b498 --- /dev/null +++ b/frontend/src/routes/+layout.svelte @@ -0,0 +1,12 @@ + + + +
+ MPE Logo + Add +
+ + + diff --git a/frontend/src/routes/+page.server.ts b/frontend/src/routes/+page.server.ts new file mode 100644 index 0000000..ec720b1 --- /dev/null +++ b/frontend/src/routes/+page.server.ts @@ -0,0 +1,6 @@ +// src/routes/+page.server.ts +import { redirect } from '@sveltejs/kit'; + +export function load() { + throw redirect(307, '/home'); // Use a 307 temporary redirect to /home +} diff --git a/frontend/src/routes/+page.svelte b/frontend/src/routes/+page.svelte new file mode 100644 index 0000000..e69de29 diff --git a/frontend/src/routes/add/+page.svelte b/frontend/src/routes/add/+page.svelte new file mode 100644 index 0000000..0327276 --- /dev/null +++ b/frontend/src/routes/add/+page.svelte @@ -0,0 +1,111 @@ + + Add + + + + +
+
+ + +
+ +
+
+ + +
+
+ {#each tags as tag, i} + + {/each} +
+
+
+ +
+
+
+
\ No newline at end of file diff --git a/frontend/src/routes/document/+page.svelte b/frontend/src/routes/document/+page.svelte new file mode 100644 index 0000000..ad9410c --- /dev/null +++ b/frontend/src/routes/document/+page.svelte @@ -0,0 +1,60 @@ + + + {#if error} +

{error}

+ {:else if document} +
+
+
+

{document.title}

+
+ {#each document.tags as tag} +
+

{tag}

+
+ {/each} +
+ {#if document.author} +

By: {document.author}

+ {/if} + {#if document.created_at} +

{new Date(document.created_at).toLocaleString()}

+ {/if} +
+
+ + {@html document.body} +
+
+ {:else} +

Loading...

+ {/if} + \ No newline at end of file diff --git a/frontend/src/routes/home/+page.svelte b/frontend/src/routes/home/+page.svelte new file mode 100644 index 0000000..7935a7c --- /dev/null +++ b/frontend/src/routes/home/+page.svelte @@ -0,0 +1,131 @@ + + +
+
+ + + + {#if query} + +
+ {#if searchResults.length > 0} + {#each searchResults as result} + +
+
+

{@html result.title}

+
+ {#each result.tags as tag} +
+

{@html tag}

+
+ {/each} +
+
+

{@html truncateBody(result.body)}

+
+
+ {/each} + {:else} +

No results found.

+ {/if} +
+ {/if} +
+
+ {#if documents.length > 0} + + {:else} +

No results found.

+ {/if} +
+ +
+ \ No newline at end of file diff --git a/frontend/src/routes/login/+page.svelte b/frontend/src/routes/login/+page.svelte new file mode 100644 index 0000000..e69de29 diff --git a/frontend/static/branding/mpe_logo.png b/frontend/static/branding/mpe_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..6b3d96c6e509c4042ec53892ec0ee72558835570 GIT binary patch literal 56373 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�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 literal 0 HcmV?d00001 diff --git a/frontend/static/favicon.png b/frontend/static/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..c4e3735c58901acc906145296267c98399e77e61 GIT binary patch literal 15086 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 literal 0 HcmV?d00001 diff --git a/frontend/svelte.config.js b/frontend/svelte.config.js new file mode 100644 index 0000000..4ae2e3c --- /dev/null +++ b/frontend/svelte.config.js @@ -0,0 +1,18 @@ +import adapter from '@sveltejs/adapter-node'; +import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; + +/** @type {import('@sveltejs/kit').Config} */ +const config = { + extensions: ['.svelte'], + // Consult https://kit.svelte.dev/docs/integrations#preprocessors + // for more information about preprocessors + preprocess: [vitePreprocess()], + + kit: { + // adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list. + // If your environment is not supported or you settled on a specific environment, switch out the adapter. + // See https://kit.svelte.dev/docs/adapters for more information about adapters. + adapter: adapter() + } +}; +export default config; \ No newline at end of file diff --git a/frontend/tailwind.config.ts b/frontend/tailwind.config.ts new file mode 100644 index 0000000..905f50c --- /dev/null +++ b/frontend/tailwind.config.ts @@ -0,0 +1,26 @@ +import { join } from 'path' +import type { Config } from 'tailwindcss' +import { skeleton } from '@skeletonlabs/tw-plugin'; +import { mpe_theme } from './src/mpe_theme' + +export default { + darkMode: 'class', + content: ['./src/**/*.{html,js,svelte,ts}', join(require.resolve('@skeletonlabs/skeleton'), '../**/*.{html,js,svelte,ts}')], + theme: { + extend: { + fontFamily: { + roboto: ['Roboto', 'Arial', 'sans-serif'], // Add custom font as the primary sans-serif font + }, + }, + }, + plugins: [ + require('@tailwindcss/typography'), + skeleton({ + themes: { + custom: [ + mpe_theme, + ], + }, + }), + ], +} satisfies Config; diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json new file mode 100644 index 0000000..fc93cbd --- /dev/null +++ b/frontend/tsconfig.json @@ -0,0 +1,19 @@ +{ + "extends": "./.svelte-kit/tsconfig.json", + "compilerOptions": { + "allowJs": true, + "checkJs": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "sourceMap": true, + "strict": true, + "moduleResolution": "bundler" + } + // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias + // except $lib which is handled by https://kit.svelte.dev/docs/configuration#files + // + // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes + // from the referenced tsconfig.json - TypeScript does not merge them in +} diff --git a/frontend/vite.config.ts b/frontend/vite.config.ts new file mode 100644 index 0000000..8e4637e --- /dev/null +++ b/frontend/vite.config.ts @@ -0,0 +1,7 @@ +import { purgeCss } from 'vite-plugin-tailwind-purgecss'; +import { sveltekit } from '@sveltejs/kit/vite'; +import { defineConfig } from 'vite'; + +export default defineConfig({ + plugins: [sveltekit(), purgeCss()] +}); \ No newline at end of file