From 6abb391173b6f7378c854ea53a0f06a5732a59a1 Mon Sep 17 00:00:00 2001 From: Steven Dalamaras Date: Mon, 1 Dec 2025 00:56:09 +1000 Subject: [PATCH 01/17] feat: add Docker and dev container options --- .devcontainer/devcontainer.json | 12 ++++++++++++ .devcontainer/docker-compose.yml | 12 ++++++++++++ .devcontainer/package-lock.json | 6 ++++++ .prettierignore | 2 -- Dockerfile | 24 ++++++++++++++++++++++++ README.md | 29 ++++++++++++++--------------- astro.config.mjs | 9 +++++++-- src/content/docs/index.mdx | 4 ++-- 8 files changed, 77 insertions(+), 21 deletions(-) create mode 100644 .devcontainer/devcontainer.json create mode 100644 .devcontainer/docker-compose.yml create mode 100644 .devcontainer/package-lock.json create mode 100644 Dockerfile diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 00000000..6a43bd57 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,12 @@ +{ + "name": "Astro Starlight Dev", + "dockerComposeFile": "./docker-compose.yml", + "service": "astro-dev", + "workspaceFolder": "/site", + "workspaceMount": "source=${localWorkspaceFolder},target=/site,type=bind", + "forwardPorts": [4321], + "postStartCommand": "npm run dev", + "features": { + "ghcr.io/devcontainers/features/github-cli:1": {} + } +} diff --git a/.devcontainer/docker-compose.yml b/.devcontainer/docker-compose.yml new file mode 100644 index 00000000..dfde5161 --- /dev/null +++ b/.devcontainer/docker-compose.yml @@ -0,0 +1,12 @@ +services: + astro-dev: + build: + context: ../ + dockerfile: Dockerfile + ports: + - "4321:4321" # or whatever port your dev server uses + volumes: + - ..:/site + - astro-node_modules:/site/node_modules +volumes: + astro-node_modules: \ No newline at end of file diff --git a/.devcontainer/package-lock.json b/.devcontainer/package-lock.json new file mode 100644 index 00000000..ec73fec8 --- /dev/null +++ b/.devcontainer/package-lock.json @@ -0,0 +1,6 @@ +{ + "name": "site", + "lockfileVersion": 3, + "requires": true, + "packages": {} +} diff --git a/.prettierignore b/.prettierignore index 8dc0d6de..27cd847b 100644 --- a/.prettierignore +++ b/.prettierignore @@ -4,5 +4,3 @@ package.json package-lock.json yarn.lock dist - - diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..1675c73f --- /dev/null +++ b/Dockerfile @@ -0,0 +1,24 @@ +FROM node:iron-trixie-slim + +WORKDIR /site + +COPY package*.json /site/ + +RUN npm install +RUN npm run build + +# Copy the rest of the project + +ENV HOST=0.0.0.0 +ENV PORT=4321 + +# Expose the dev server port (adjust if needed) +EXPOSE 4321 + +# This setup doesn't yet work with VSCode dev containers. You still need to +# run "docker compose up" from the integrated terminal after opening this repo +# in VSCode. It also doesn't watch the changes (because they are in the +# container) + +# Start the dev server +CMD ["npm", "run", "dev"] \ No newline at end of file diff --git a/README.md b/README.md index 99b2b69a..068f540a 100644 --- a/README.md +++ b/README.md @@ -3,22 +3,22 @@ https://ontrackdocumentation.netlify.app/ # Contributing to Doubtfire Astro Repository -This guide provides high-level details on how to contribute to the Doubtfire repositories. This repository reflects the code for Ontrack documentation website. +This guide provides high-level details on how to contribute to the Doubtfire repositories. This repository reflects the code for Ontrack documentation website. -The Ontrack documentation website is a centralised repository for recording all technical documentation for Ontrack project. +The Ontrack documentation website is a centralised repository for recording all technical documentation for Ontrack project. ## Background -The **doubtfire-astro** project provides the base repository containing information on technical document for OnTrack project. +The **doubtfire-astro** project provides the base repository containing information on technical document for OnTrack project. The OnTrack project contains following submodules: - [doubtfire-api](https://github.com/thoth-tech/doubtfire-api) contain the backend RESTful API. This uses Rails' [active model](https://guides.rubyonrails.org/active_model_basics.html) with the [Grape REST api framework](https://github.com/ruby-grape/grape). - [doubtfire-web](https://github.com/thoth-tech/doubtfire-web) hosts the frontend code implemented in [Angular](https://angular.io) and [AngularJS](https://angularjs.org). This implements the web application that connects to the backend api. -- [doubtfire-overseer](https://github.com/thoth-tech/doubtfire-overseer) provides facilities to run automated tasks on student submissions. Please get in touch with the core team if you want access to this repository. +- [doubtfire-overseer](https://github.com/thoth-tech/doubtfire-overseer) provides facilities to run automated tasks on student submissions. Please get in touch with the core team if you want access to this repository. -### Working on onTrack documentation website +### Working on OnTrack documentation website To get started: @@ -26,24 +26,24 @@ To get started: To push your contributions, you will need a fork of each repository. Contributions can then be made by making pull requests back into the main repositories. -2. Clone your [doubtfire-astro](https://github.com/thoth-tech/doubtfire-astro). +2. Clone your [doubtfire-astro](https://github.com/thoth-tech/doubtfire-astro). `git clone https://github.com/YOUR_USERNAME/doubtfire-astro` -3. Open the cloned repository in VS code +3. Open the cloned repository in VS code - Open VS code - - Navigate to File and select ```Open folder``` + - Navigate to File and select ```Open folder``` - Select the folder where you have cloned this repository - you will be able to see all the files now -4. To make changes/ add content to OnTrack Technical documentation website +4. To make changes/ add content to OnTrack Technical documentation website - Go to the ```scr``` folder - - New Pages can be added or changes to existing pages can be made by navigating to ```content``` folder + - New Pages can be added or changes to existing pages can be made by navigating to ```content``` folder - Images are required to be stored under ```assets``` folder -5. Note - when adding new pages you would need to do following +5. Note - when adding new pages you would need to do following - Make changes to ```content``` and also the ```astro.config.mjs``` file in parallel - e.g. We have a page for backend API list api_list.md the path of this needs to be mention in ```astro.config.mjs``` file + e.g. We have a page for backend API list api_list.md the path of this needs to be mention in ```astro.config.mjs``` file ``` items: [ { @@ -55,13 +55,13 @@ To get started: 6. To see changes and verify changes being made are reflecting in Website follow the below steps: - Open node terminal in your VS code project - - Run the command ```npm run dev``` + - Run the command ```npm run dev``` - This will load the website locally - For any additional commands on Starlight refer to ```starlight.md``` -## Pushing changes to Thoth Tech doubtfire-astro repository +## Pushing changes to Thoth Tech doubtfire-astro repository To start work on a new feature. @@ -164,4 +164,3 @@ Use the body (lines after the top line) to explain why and what and *not* how; k ### But how can I write new lines if I'm using `git commit -m "Message"`? Don't use the `-m` switch. Use a text editor to write your commit message instead. - diff --git a/astro.config.mjs b/astro.config.mjs index 85e1df58..b7ede514 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -3,6 +3,11 @@ import starlight from '@astrojs/starlight'; // https://astro.build/config export default defineConfig({ + + server: { + host: true + }, + integrations: [ starlight({ title: 'OnTrack', @@ -43,7 +48,7 @@ export default defineConfig({ directory: '/frontend', }, items: [ - + { label: 'Frontend Tutor-Times Design', link: '/frontend/tutor-times/tutor-times-design', @@ -52,7 +57,7 @@ export default defineConfig({ label:'Frontend Tutor-Times Requirements', link: '/frontend/tutor-times/tutor-times-requirements', } - + ], }, diff --git a/src/content/docs/index.mdx b/src/content/docs/index.mdx index 002e5c13..1e026d34 100644 --- a/src/content/docs/index.mdx +++ b/src/content/docs/index.mdx @@ -29,7 +29,7 @@ Our platform is more than just a repository; it’s a dynamic hub fostering coll Navigate effortlessly through our user-friendly interface, search for specific topics, or browse curated collections tailored to your interests. Whether you’re a seasoned professional seeking to enhance your skills or a newcomer eager to embark on a learning journey, our technical documentation website is your gateway to unlocking limitless possibilities in the world of technology. Join us and embark on a journey of discovery, learning, and innovation! - + - + From 89c31bbe12246add398f5f64e6834f35ae52dc10 Mon Sep 17 00:00:00 2001 From: Steven Dalamaras Date: Tue, 2 Dec 2025 22:14:52 +1000 Subject: [PATCH 02/17] fix: turn on polling for dev container environment --- astro.config.mjs | 516 ++++++++++++++++++++++++----------------------- 1 file changed, 262 insertions(+), 254 deletions(-) diff --git a/astro.config.mjs b/astro.config.mjs index b7ede514..3a08e15f 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -1,254 +1,262 @@ -import { defineConfig } from 'astro/config'; -import starlight from '@astrojs/starlight'; - -// https://astro.build/config -export default defineConfig({ - - server: { - host: true - }, - - integrations: [ - starlight({ - title: 'OnTrack', - social: { - github: 'https://github.com/thoth-tech', - }, - sidebar: [ - { - label: 'Document', - items: [ - // Each item here is one entry in the navigation menu. - { - label: 'Introduction', - link: '/document/introduction/', - }, - ], - }, - { - label: 'Intial Setup', - autogenerate: { - directory: '/setup', - }, - items: [ - { - label: 'Frontend Documentation', - link: '/frontend/page', - }, - { - label: 'OnTrack Intial Setup Guidance', - link: '/setup/set', - }, - ], - }, - - { - label: 'Frontend documentation', - autogenerate: { - directory: '/frontend', - }, - items: [ - - { - label: 'Frontend Tutor-Times Design', - link: '/frontend/tutor-times/tutor-times-design', - }, - { - label:'Frontend Tutor-Times Requirements', - link: '/frontend/tutor-times/tutor-times-requirements', - } - - - ], - }, - - { - label: 'Backend documentation', - autogenerate: { - directory: '/backend', - }, - items: [ - { - label: 'Doubtfire API Documentation List', - link: '/backend/api/api_list', - }, - { - label: 'activity types', - link: '/backend/api/activity_types', - }, - { - label: 'admin', - link: '/backend/api/admin', - }, - { - label: 'auth', - link: '/backend/api/auth', - }, - { - label: 'campuses', - link: '/backend/api/campuses', - }, - { - label: 'csv', - link: '/backend/api/csv', - }, - { - label: 'projects API operation list', - link: '/backend/api/projects', - }, - { - label: 'projects (1)', - link: '/backend/api/projects_1', - }, - { - label: 'projects (2)', - link: '/backend/api/projects_2', - }, - { - label: 'setting', - link: '/backend/api/setting', - }, - { - label: 'students', - link: '/backend/api/students', - }, - { - label: 'submission', - link: '/backend/api/submission', - }, - { - label: 'tasks', - link: '/backend/api/tasks', - }, - { - label: 'teaching periods', - link: '/backend/api/teaching_periods', - }, - { - label: 'tii_actions', - link: '/backend/api/tii_actions', - }, - { - label: 'tii_eula', - link: '/backend/api/tii_eula', - }, - { - label: 'tii_hook', - link: '/backend/api/tii_hook', - }, - { - label: 'tutorials', - link: '/backend/api/tutorials', - }, - { - label: 'unit_roles', - link: '/backend/api/unit_roles', - }, - { - label: 'units API operation list', - link: '/backend/api/units', - }, - { - label: 'units id', - link: '/backend/api/units_id', - }, - { - label: 'users', - link: '/backend/api/users', - }, - { - label: 'webcal', - link: '/backend/api/webcal', - }, - { - label: 'Error codes', - link: '/backend/api/error_codes', - }, - { - label: 'Unit Tutorial Streams', - link: '/backend/api/unit-tutorial_streams', - }, - { - label: 'Unit Group Sets', - link: '/backend/api/unit-group_sets', - }, - { - label: 'Units Task Definition', - link: '/backend/api/api-task_definitions', - }, - { - label: 'learning', - link: '/backend/api/learning', - }, - { - label: 'stats', - link: '/backend/api/stats', - }, - { - label: 'Tutor Times', - autogenerate: { - directory: '/tutor_times', - }, - items: [ - { - label: 'Requirements Document', - link: '/backend/tutor_times/requirements_document', - }, - { - label: 'Design Document', - link: '/backend/tutor_times/design_document', - }, - ], - }, - ], - }, - { - label: 'Team', - autogenerate: { directory: 'team' }, - }, - { - label: 'Courseflow documentation', - autogenerate: { - directory: '/courseflow', - }, - items: [ - { - label: 'Courseflow Introduction', - link: '/courseflow/requirements', - }, - { - label: 'Use Cases', - link: '/courseflow/usecase', - }, - { - label: 'What is currently done?', - link: '/courseflow/current_stage', - }, - { - label: 'Planned Features', - link: '/courseflow/future', - }, - { - label: 'Visualisation', - link: '/courseflow/diagrams', - }, - { - label: 'Frontend Structure', - link: '/courseflow/frontend', - }, - { - label: 'Backend APIs', - link: '/courseflow/backend', - }, - ], - }, - { - label: 'Security', - autogenerate: { - directory: '/security', - }, - }, - ], - }), - ], -}); +import { defineConfig } from 'astro/config'; +import starlight from '@astrojs/starlight'; + +// https://astro.build/config +export default defineConfig({ + + server: { + host: true + }, + vite: { + server: { + watch: { + usePolling: true, + interval: 60 + } + } + }, + + integrations: [ + starlight({ + title: 'OnTrack', + social: { + github: 'https://github.com/thoth-tech', + }, + sidebar: [ + { + label: 'Document', + items: [ + // Each item here is one entry in the navigation menu. + { + label: 'Introduction', + link: '/document/introduction/', + }, + ], + }, + { + label: 'Intial Setup', + autogenerate: { + directory: '/setup', + }, + items: [ + { + label: 'Frontend Documentation', + link: '/frontend/page', + }, + { + label: 'OnTrack Intial Setup Guidance', + link: '/setup/set', + }, + ], + }, + + { + label: 'Frontend documentation', + autogenerate: { + directory: '/frontend', + }, + items: [ + + { + label: 'Frontend Tutor-Times Design', + link: '/frontend/tutor-times/tutor-times-design', + }, + { + label:'Frontend Tutor-Times Requirements', + link: '/frontend/tutor-times/tutor-times-requirements', + } + + + ], + }, + + { + label: 'Backend documentation', + autogenerate: { + directory: '/backend', + }, + items: [ + { + label: 'Doubtfire API Documentation List', + link: '/backend/api/api_list', + }, + { + label: 'activity types', + link: '/backend/api/activity_types', + }, + { + label: 'admin', + link: '/backend/api/admin', + }, + { + label: 'auth', + link: '/backend/api/auth', + }, + { + label: 'campuses', + link: '/backend/api/campuses', + }, + { + label: 'csv', + link: '/backend/api/csv', + }, + { + label: 'projects API operation list', + link: '/backend/api/projects', + }, + { + label: 'projects (1)', + link: '/backend/api/projects_1', + }, + { + label: 'projects (2)', + link: '/backend/api/projects_2', + }, + { + label: 'setting', + link: '/backend/api/setting', + }, + { + label: 'students', + link: '/backend/api/students', + }, + { + label: 'submission', + link: '/backend/api/submission', + }, + { + label: 'tasks', + link: '/backend/api/tasks', + }, + { + label: 'teaching periods', + link: '/backend/api/teaching_periods', + }, + { + label: 'tii_actions', + link: '/backend/api/tii_actions', + }, + { + label: 'tii_eula', + link: '/backend/api/tii_eula', + }, + { + label: 'tii_hook', + link: '/backend/api/tii_hook', + }, + { + label: 'tutorials', + link: '/backend/api/tutorials', + }, + { + label: 'unit_roles', + link: '/backend/api/unit_roles', + }, + { + label: 'units API operation list', + link: '/backend/api/units', + }, + { + label: 'units id', + link: '/backend/api/units_id', + }, + { + label: 'users', + link: '/backend/api/users', + }, + { + label: 'webcal', + link: '/backend/api/webcal', + }, + { + label: 'Error codes', + link: '/backend/api/error_codes', + }, + { + label: 'Unit Tutorial Streams', + link: '/backend/api/unit-tutorial_streams', + }, + { + label: 'Unit Group Sets', + link: '/backend/api/unit-group_sets', + }, + { + label: 'Units Task Definition', + link: '/backend/api/api-task_definitions', + }, + { + label: 'learning', + link: '/backend/api/learning', + }, + { + label: 'stats', + link: '/backend/api/stats', + }, + { + label: 'Tutor Times', + autogenerate: { + directory: '/tutor_times', + }, + items: [ + { + label: 'Requirements Document', + link: '/backend/tutor_times/requirements_document', + }, + { + label: 'Design Document', + link: '/backend/tutor_times/design_document', + }, + ], + }, + ], + }, + { + label: 'Team', + autogenerate: { directory: 'team' }, + }, + { + label: 'Courseflow documentation', + autogenerate: { + directory: '/courseflow', + }, + items: [ + { + label: 'Courseflow Introduction', + link: '/courseflow/requirements', + }, + { + label: 'Use Cases', + link: '/courseflow/usecase', + }, + { + label: 'What is currently done?', + link: '/courseflow/current_stage', + }, + { + label: 'Planned Features', + link: '/courseflow/future', + }, + { + label: 'Visualisation', + link: '/courseflow/diagrams', + }, + { + label: 'Frontend Structure', + link: '/courseflow/frontend', + }, + { + label: 'Backend APIs', + link: '/courseflow/backend', + }, + ], + }, + { + label: 'Security', + autogenerate: { + directory: '/security', + }, + }, + ], + }), + ], +}); From 3c0edd4b1a7a00c607f73c6afe9646897e2c1cf5 Mon Sep 17 00:00:00 2001 From: Steven Dalamaras Date: Tue, 2 Dec 2025 22:35:07 +1000 Subject: [PATCH 03/17] fix: ensure LF line endings --- .gitattributes | 1 + 1 file changed, 1 insertion(+) create mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..94f480de --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +* text=auto eol=lf \ No newline at end of file From 4a0e14ae40bd98e3e269edcc9e04f55ce7452b9e Mon Sep 17 00:00:00 2001 From: Steven Dalamaras Date: Tue, 2 Dec 2025 23:39:15 +1000 Subject: [PATCH 04/17] chore: remove some unnecessary/incorrect comments --- .devcontainer/docker-compose.yml | 3 +-- Dockerfile | 9 +-------- src/content/docs/backend/API/auth.md | 17 ++++++++--------- 3 files changed, 10 insertions(+), 19 deletions(-) diff --git a/.devcontainer/docker-compose.yml b/.devcontainer/docker-compose.yml index dfde5161..8572d960 100644 --- a/.devcontainer/docker-compose.yml +++ b/.devcontainer/docker-compose.yml @@ -4,8 +4,7 @@ services: context: ../ dockerfile: Dockerfile ports: - - "4321:4321" # or whatever port your dev server uses - volumes: + - "4321:4321" - ..:/site - astro-node_modules:/site/node_modules volumes: diff --git a/Dockerfile b/Dockerfile index 1675c73f..9fb319d3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,18 +7,11 @@ COPY package*.json /site/ RUN npm install RUN npm run build -# Copy the rest of the project - ENV HOST=0.0.0.0 ENV PORT=4321 -# Expose the dev server port (adjust if needed) +# Expose the dev server port EXPOSE 4321 -# This setup doesn't yet work with VSCode dev containers. You still need to -# run "docker compose up" from the integrated terminal after opening this repo -# in VSCode. It also doesn't watch the changes (because they are in the -# container) - # Start the dev server CMD ["npm", "run", "dev"] \ No newline at end of file diff --git a/src/content/docs/backend/API/auth.md b/src/content/docs/backend/API/auth.md index b7a5e832..48b82f67 100644 --- a/src/content/docs/backend/API/auth.md +++ b/src/content/docs/backend/API/auth.md @@ -3,7 +3,7 @@ title: Doubtfire API Documentation --- # API: Auth -auth : Operations about auth +auth : Operations about auth This markdown document provides detailed documentation for the "auth" API endpoints, including their URLs, methods, parameters (if any), responses, and example requests using curl @@ -22,12 +22,12 @@ This "auth" API has the following operations. - URL: `/api/auth` - Method: `DELETE` -- Parameters: +- Parameters: | Parameter | Description |Parameter Type| Data Type|Mandatory| |---------------------|-----------------|------------|------------|---| |Username | User username | header | string |Yes| |Auth_Token | Authentication token | header | string |Yes| - + - Response: - `204 No Content`: Authentication deleted successfully. @@ -36,7 +36,7 @@ This "auth" API has the following operations. curl -X DELETE --header 'Accept: application/json' --header 'username: student_1' --header 'auth_token: RbYVL1screzs9QGbAkd' 'http://localhost:3000/api/auth' curl -X DELETE http://doubtfire.com/api/auth ``` -### POST: Sign in +### POST: Sign in - URL: `/api/auth` - Method: `POST` @@ -115,7 +115,7 @@ GET /api/auth/signout_url ```bash curl -X GET --header 'Accept: application/json' 'http://localhost:3000/api/auth/signout_url' ``` -- Response body: +- Response body: ```json { "auth_signout_url": null @@ -136,7 +136,7 @@ GET /api/auth/method ```bash curl -X GET --header 'Accept: application/json' 'http://localhost:3000/api/auth/method' ``` -- Response body: +- Response body: ```json { "method": "database", @@ -149,11 +149,11 @@ POST /api/auth/jwt - URL: `/api/auth/jwt` - Method: `POST` -- Parameters: +- Parameters: | Parameter | Description |Parameter Type| Data Type|Mandatory| |---------------------|-----------------|------------|------------|---| |SAMLResponse | Data provided for further processing | header | string |Yes| - + - Response: - `201 Created`: The JWT token is successfully generated. @@ -176,4 +176,3 @@ POST /api/auth/jwt } } ``` - From 04b51049d4a7669a66107a63162040999268f508 Mon Sep 17 00:00:00 2001 From: Steven Dalamaras Date: Wed, 3 Dec 2025 08:33:43 +1000 Subject: [PATCH 05/17] fix: volumes attribute under services.astro-dev --- .devcontainer/docker-compose.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.devcontainer/docker-compose.yml b/.devcontainer/docker-compose.yml index 8572d960..d10ce25e 100644 --- a/.devcontainer/docker-compose.yml +++ b/.devcontainer/docker-compose.yml @@ -5,6 +5,7 @@ services: dockerfile: Dockerfile ports: - "4321:4321" + volumes: - ..:/site - astro-node_modules:/site/node_modules volumes: From 3fac569b3e182639b4df07d04cd1eb8330d60157 Mon Sep 17 00:00:00 2001 From: Steven Dalamaras Date: Wed, 3 Dec 2025 22:09:05 +1000 Subject: [PATCH 06/17] fix: add git to container to ensure reproducibility Removing `package-lock.json` would cause subsequent full builds of the container to fail. This is because git is a requirement of some dependencies of packages listed in `package.json`. Git and curl have now been added to the Dockerfile. In addition, the `package-lock.json` has been regenerated with the latest dependency versions. --- Dockerfile | 3 + package-lock.json | 5188 ++++++++++++++++----------------------------- 2 files changed, 1879 insertions(+), 3312 deletions(-) diff --git a/Dockerfile b/Dockerfile index 9fb319d3..1bf931bf 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,6 +4,9 @@ WORKDIR /site COPY package*.json /site/ +RUN apt-get update && apt-get upgrade +RUN apt-get install git curl -y + RUN npm install RUN npm run build diff --git a/package-lock.json b/package-lock.json index e65649e9..3a612dae 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,22 +19,9 @@ "prettier-plugin-astro": "^0.13.0" } }, - "node_modules/@ampproject/remapping": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/@astrojs/check": { "version": "0.5.10", - "resolved": "https://registry.npmjs.org/@astrojs/check/-/check-0.5.10.tgz", - "integrity": "sha512-vliHXM9cu/viGeKiksUM4mXfO816ohWtawTl2ADPgTsd4nUMjFiyAl7xFZhF34yy4hq4qf7jvK1F2PlR3b5I5w==", + "license": "MIT", "dependencies": { "@astrojs/language-server": "^2.8.4", "chokidar": "^3.5.3", @@ -50,37 +37,35 @@ } }, "node_modules/@astrojs/compiler": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-2.10.1.tgz", - "integrity": "sha512-XmM4j6BjvOVMag2xELq0JuG2yKOW8wgIu6dvb9BsjbGYmnvoStJn/pqEzVqc1EBszf2xYT7onIkftIOUz9AwrQ==" + "version": "2.13.0", + "license": "MIT" }, "node_modules/@astrojs/internal-helpers": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.4.1.tgz", - "integrity": "sha512-bMf9jFihO8YP940uD70SI/RDzIhUHJAolWVcO1v5PUivxGKvfLZTLTVVxEYzGYyPsA3ivdLNqMnL5VgmQySa+g==" + "license": "MIT" }, "node_modules/@astrojs/language-server": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/@astrojs/language-server/-/language-server-2.13.1.tgz", - "integrity": "sha512-Cl9ynfnge6+MaCpehYn7w9WrAE+sVS7onhxhMzCdqzPtIt/Yo5zIaiGZdu4QgvmOV/mdNBZCZgaTpAIeGjWwsQ==", + "version": "2.16.1", + "license": "MIT", "dependencies": { - "@astrojs/compiler": "^2.10.1", + "@astrojs/compiler": "^2.10.3", + "@astrojs/yaml2ts": "^0.2.2", "@jridgewell/sourcemap-codec": "^1.4.15", - "@volar/kit": "~2.4.0-alpha.15", - "@volar/language-core": "~2.4.0-alpha.15", - "@volar/language-server": "~2.4.0-alpha.15", - "@volar/language-service": "~2.4.0-alpha.15", - "@volar/typescript": "~2.4.0-alpha.15", + "@volar/kit": "~2.4.23", + "@volar/language-core": "~2.4.23", + "@volar/language-server": "~2.4.23", + "@volar/language-service": "~2.4.23", "fast-glob": "^3.2.12", "muggle-string": "^0.4.1", - "volar-service-css": "0.0.59", - "volar-service-emmet": "0.0.59", - "volar-service-html": "0.0.59", - "volar-service-prettier": "0.0.59", - "volar-service-typescript": "0.0.59", - "volar-service-typescript-twoslash-queries": "0.0.59", - "vscode-html-languageservice": "^5.2.0", - "vscode-uri": "^3.0.8" + "volar-service-css": "0.0.66", + "volar-service-emmet": "0.0.66", + "volar-service-html": "0.0.66", + "volar-service-prettier": "0.0.66", + "volar-service-typescript": "0.0.66", + "volar-service-typescript-twoslash-queries": "0.0.66", + "volar-service-yaml": "0.0.66", + "vscode-html-languageservice": "^5.5.2", + "vscode-uri": "^3.1.0" }, "bin": { "astro-ls": "bin/nodeServer.js" @@ -100,8 +85,7 @@ }, "node_modules/@astrojs/markdown-remark": { "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-5.1.0.tgz", - "integrity": "sha512-S6Z3K2hOB7MfjeDoHsotnP/q2UsnEDB8NlNAaCjMDsGBZfTUbWxyLW3CaphEWw08f6KLZi2ibK9yC3BaMhh2NQ==", + "license": "MIT", "dependencies": { "@astrojs/prism": "^3.1.0", "github-slugger": "^2.0.0", @@ -125,8 +109,7 @@ }, "node_modules/@astrojs/mdx": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-2.3.1.tgz", - "integrity": "sha512-BOQFKD2Pi9cRntNQJlpF2fh4xV8doNpmVy9NKI95r4jsitrY4X5aTOhAowi+fkQgP/zW1A4HwCyQ6Pdam6z8zQ==", + "license": "MIT", "dependencies": { "@astrojs/markdown-remark": "5.1.0", "@mdx-js/mdx": "^3.0.0", @@ -152,30 +135,27 @@ } }, "node_modules/@astrojs/prism": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@astrojs/prism/-/prism-3.1.0.tgz", - "integrity": "sha512-Z9IYjuXSArkAUx3N6xj6+Bnvx8OdUSHA8YoOgyepp3+zJmtVYJIl/I18GozdJVW1p5u/CNpl3Km7/gwTJK85cw==", + "version": "3.3.0", + "license": "MIT", "dependencies": { - "prismjs": "^1.29.0" + "prismjs": "^1.30.0" }, "engines": { - "node": "^18.17.1 || ^20.3.0 || >=21.0.0" + "node": "18.20.8 || ^20.3.0 || >=22.0.0" } }, "node_modules/@astrojs/sitemap": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@astrojs/sitemap/-/sitemap-3.1.6.tgz", - "integrity": "sha512-1Qp2NvAzVImqA6y+LubKi1DVhve/hXXgFvB0szxiipzh7BvtuKe4oJJ9dXSqaubaTkt4nMa6dv6RCCAYeB6xaQ==", + "version": "3.6.0", + "license": "MIT", "dependencies": { - "sitemap": "^7.1.2", + "sitemap": "^8.0.0", "stream-replace-string": "^2.0.0", - "zod": "^3.23.8" + "zod": "^3.25.76" } }, "node_modules/@astrojs/starlight": { "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@astrojs/starlight/-/starlight-0.21.5.tgz", - "integrity": "sha512-cvftxu7DM4C25KGSxqyIk81DiQGX0zx9s5sfmprd1kKQK1h/MQXaRVDCpJrK4SjrgWtpG1UoKLJZBgD5w4k9kw==", + "license": "MIT", "dependencies": { "@astrojs/mdx": "^2.1.1", "@astrojs/sitemap": "^3.0.5", @@ -203,8 +183,7 @@ }, "node_modules/@astrojs/telemetry": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-3.1.0.tgz", - "integrity": "sha512-/ca/+D8MIKEC8/A9cSaPUqQNZm+Es/ZinRv0ZAzvu2ios7POQSsVD+VOj7/hypWNsNM3T7RpfgNq7H2TU1KEHA==", + "license": "MIT", "dependencies": { "ci-info": "^4.0.0", "debug": "^4.3.4", @@ -218,41 +197,46 @@ "node": "^18.17.1 || ^20.3.0 || >=21.0.0" } }, + "node_modules/@astrojs/yaml2ts": { + "version": "0.2.2", + "license": "MIT", + "dependencies": { + "yaml": "^2.5.0" + } + }, "node_modules/@babel/code-frame": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", - "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "version": "7.27.1", + "license": "MIT", "dependencies": { - "@babel/highlight": "^7.24.7", - "picocolors": "^1.0.0" + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.2.tgz", - "integrity": "sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==", + "version": "7.28.5", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", - "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.25.0", - "@babel/helper-compilation-targets": "^7.25.2", - "@babel/helper-module-transforms": "^7.25.2", - "@babel/helpers": "^7.25.0", - "@babel/parser": "^7.25.0", - "@babel/template": "^7.25.0", - "@babel/traverse": "^7.25.2", - "@babel/types": "^7.25.2", + "version": "7.28.5", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.5", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.28.3", + "@babel/helpers": "^7.28.4", + "@babel/parser": "^7.28.5", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5", + "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -269,45 +253,42 @@ }, "node_modules/@babel/core/node_modules/semver": { "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/generator": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.0.tgz", - "integrity": "sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==", + "version": "7.28.5", + "license": "MIT", "dependencies": { - "@babel/types": "^7.25.0", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^2.5.1" + "@babel/parser": "^7.28.5", + "@babel/types": "^7.28.5", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", - "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", + "version": "7.27.3", + "license": "MIT", "dependencies": { - "@babel/types": "^7.24.7" + "@babel/types": "^7.27.3" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz", - "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==", + "version": "7.27.2", + "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.25.2", - "@babel/helper-validator-option": "^7.24.8", - "browserslist": "^4.23.1", + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -317,33 +298,36 @@ }, "node_modules/@babel/helper-compilation-targets/node_modules/semver": { "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-module-imports": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", - "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", + "version": "7.27.1", + "license": "MIT", "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz", - "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==", + "version": "7.28.3", + "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.24.7", - "@babel/helper-simple-access": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7", - "@babel/traverse": "^7.25.2" + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.28.3" }, "engines": { "node": ">=6.9.0" @@ -353,81 +337,49 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", - "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", - "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", - "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" - }, + "version": "7.27.1", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", - "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", + "version": "7.27.1", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", - "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "version": "7.28.5", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", - "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", + "version": "7.27.1", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.0.tgz", - "integrity": "sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==", - "dependencies": { - "@babel/template": "^7.25.0", - "@babel/types": "^7.25.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", - "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "version": "7.28.4", + "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.24.7", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.4" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.25.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.3.tgz", - "integrity": "sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==", + "version": "7.28.5", + "license": "MIT", "dependencies": { - "@babel/types": "^7.25.2" + "@babel/types": "^7.28.5" }, "bin": { "parser": "bin/babel-parser.js" @@ -437,11 +389,10 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz", - "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==", + "version": "7.27.1", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -451,15 +402,14 @@ } }, "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.2.tgz", - "integrity": "sha512-KQsqEAVBpU82NM/B/N9j9WOdphom1SZH3R+2V7INrQUH+V9EBFwZsEJl8eBIVeQE62FxJCc70jzEZwqU7RcVqA==", + "version": "7.27.1", + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-module-imports": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/plugin-syntax-jsx": "^7.24.7", - "@babel/types": "^7.25.2" + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -469,43 +419,39 @@ } }, "node_modules/@babel/template": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", - "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", + "version": "7.27.2", + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/parser": "^7.25.0", - "@babel/types": "^7.25.0" + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.25.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.3.tgz", - "integrity": "sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==", + "version": "7.28.5", + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.25.0", - "@babel/parser": "^7.25.3", - "@babel/template": "^7.25.0", - "@babel/types": "^7.25.2", - "debug": "^4.3.1", - "globals": "^11.1.0" + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.5", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.5", + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.5", + "debug": "^4.3.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/types": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.2.tgz", - "integrity": "sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==", + "version": "7.28.5", + "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.24.8", - "@babel/helper-validator-identifier": "^7.24.7", - "to-fast-properties": "^2.0.0" + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -513,32 +459,29 @@ }, "node_modules/@ctrl/tinycolor": { "version": "3.6.1", - "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz", - "integrity": "sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==", + "license": "MIT", "engines": { "node": ">=10" } }, "node_modules/@emmetio/abbreviation": { "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@emmetio/abbreviation/-/abbreviation-2.3.3.tgz", - "integrity": "sha512-mgv58UrU3rh4YgbE/TzgLQwJ3pFsHHhCLqY20aJq+9comytTXUDNGG/SMtSeMJdkpxgXSXunBGLD8Boka3JyVA==", + "license": "MIT", "dependencies": { "@emmetio/scanner": "^1.0.4" } }, "node_modules/@emmetio/css-abbreviation": { "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@emmetio/css-abbreviation/-/css-abbreviation-2.1.8.tgz", - "integrity": "sha512-s9yjhJ6saOO/uk1V74eifykk2CBYi01STTK3WlXWGOepyKa23ymJ053+DNQjpFcy1ingpaO7AxCcwLvHFY9tuw==", + "license": "MIT", "dependencies": { "@emmetio/scanner": "^1.0.4" } }, "node_modules/@emmetio/css-parser": { "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@emmetio/css-parser/-/css-parser-0.4.0.tgz", - "integrity": "sha512-z7wkxRSZgrQHXVzObGkXG+Vmj3uRlpM11oCZ9pbaz0nFejvCDmAiNDpY75+wgXOcffKpj4rzGtwGaZxfJKsJxw==", + "resolved": "git+ssh://git@github.com/ramya-rao-a/css-parser.git#370c480ac103bd17c7bcfb34bf5d577dc40d3660", + "license": "MIT", "dependencies": { "@emmetio/stream-reader": "^2.2.0", "@emmetio/stream-reader-utils": "^0.1.0" @@ -546,540 +489,191 @@ }, "node_modules/@emmetio/html-matcher": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@emmetio/html-matcher/-/html-matcher-1.3.0.tgz", - "integrity": "sha512-NTbsvppE5eVyBMuyGfVu2CRrLvo7J4YHb6t9sBFLyY03WYhXET37qA4zOYUjBWFCRHO7pS1B9khERtY0f5JXPQ==", + "license": "ISC", "dependencies": { "@emmetio/scanner": "^1.0.0" } }, "node_modules/@emmetio/scanner": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@emmetio/scanner/-/scanner-1.0.4.tgz", - "integrity": "sha512-IqRuJtQff7YHHBk4G8YZ45uB9BaAGcwQeVzgj/zj8/UdOhtQpEIupUhSk8dys6spFIWVZVeK20CzGEnqR5SbqA==" + "license": "MIT" }, "node_modules/@emmetio/stream-reader": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@emmetio/stream-reader/-/stream-reader-2.2.0.tgz", - "integrity": "sha512-fXVXEyFA5Yv3M3n8sUGT7+fvecGrZP4k6FnWWMSZVQf69kAq0LLpaBQLGcPR30m3zMmKYhECP4k/ZkzvhEW5kw==" + "license": "MIT" }, "node_modules/@emmetio/stream-reader-utils": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@emmetio/stream-reader-utils/-/stream-reader-utils-0.1.0.tgz", - "integrity": "sha512-ZsZ2I9Vzso3Ho/pjZFsmmZ++FWeEd/txqybHTm4OgaZzdS8V9V/YYWQwg5TC38Z7uLWUV1vavpLLbjJtKubR1A==" - }, - "node_modules/@emnapi/runtime": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.2.0.tgz", - "integrity": "sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } + "license": "MIT" }, - "node_modules/@esbuild/aix-ppc64": { + "node_modules/@esbuild/linux-x64": { "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" + "x64" ], + "license": "MIT", "optional": true, "os": [ - "aix" + "linux" ], "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" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" + "node_modules/@expressive-code/core": { + "version": "0.33.5", + "license": "MIT", + "dependencies": { + "@ctrl/tinycolor": "^3.6.0", + "hast-util-to-html": "^8.0.4", + "hastscript": "^7.2.0", + "postcss": "^8.4.21", + "postcss-nested": "^6.0.1" } }, - "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" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" + "node_modules/@expressive-code/core/node_modules/@types/hast": { + "version": "2.3.10", + "license": "MIT", + "dependencies": { + "@types/unist": "^2" } }, - "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" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" + "node_modules/@expressive-code/core/node_modules/@types/unist": { + "version": "2.0.11", + "license": "MIT" + }, + "node_modules/@expressive-code/core/node_modules/hast-util-from-parse5": { + "version": "7.1.2", + "license": "MIT", + "dependencies": { + "@types/hast": "^2.0.0", + "@types/unist": "^2.0.0", + "hastscript": "^7.0.0", + "property-information": "^6.0.0", + "vfile": "^5.0.0", + "vfile-location": "^4.0.0", + "web-namespaces": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "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" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" + "node_modules/@expressive-code/core/node_modules/hast-util-parse-selector": { + "version": "3.1.1", + "license": "MIT", + "dependencies": { + "@types/hast": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "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" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" + "node_modules/@expressive-code/core/node_modules/hast-util-raw": { + "version": "7.2.3", + "license": "MIT", + "dependencies": { + "@types/hast": "^2.0.0", + "@types/parse5": "^6.0.0", + "hast-util-from-parse5": "^7.0.0", + "hast-util-to-parse5": "^7.0.0", + "html-void-elements": "^2.0.0", + "parse5": "^6.0.0", + "unist-util-position": "^4.0.0", + "unist-util-visit": "^4.0.0", + "vfile": "^5.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "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" - ], - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" + "node_modules/@expressive-code/core/node_modules/hast-util-to-html": { + "version": "8.0.4", + "license": "MIT", + "dependencies": { + "@types/hast": "^2.0.0", + "@types/unist": "^2.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-raw": "^7.0.0", + "hast-util-whitespace": "^2.0.0", + "html-void-elements": "^2.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.0", + "zwitch": "^2.0.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "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" - ], - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" + "node_modules/@expressive-code/core/node_modules/hast-util-to-parse5": { + "version": "7.1.0", + "license": "MIT", + "dependencies": { + "@types/hast": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "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" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" + "node_modules/@expressive-code/core/node_modules/hast-util-whitespace": { + "version": "2.0.1", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "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" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" + "node_modules/@expressive-code/core/node_modules/hastscript": { + "version": "7.2.0", + "license": "MIT", + "dependencies": { + "@types/hast": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^3.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "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" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" + "node_modules/@expressive-code/core/node_modules/html-void-elements": { + "version": "2.0.1", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "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" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" + "node_modules/@expressive-code/core/node_modules/parse5": { + "version": "6.0.1", + "license": "MIT" + }, + "node_modules/@expressive-code/core/node_modules/property-information": { + "version": "6.5.0", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "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" - ], - "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" - ], - "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" - ], - "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" - ], - "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" - ], - "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" - ], - "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" - ], - "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" - ], - "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" - ], - "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" - ], - "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" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@expressive-code/core": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@expressive-code/core/-/core-0.33.5.tgz", - "integrity": "sha512-KL0EkKAvd7SSIQL3ZIP19xqe4xNjBaQYNvcJC6RmoBUnQpvxaJNFwRxCBEF/X0ftJEMaSG7WTrabZ9c/zFeqmA==", - "dependencies": { - "@ctrl/tinycolor": "^3.6.0", - "hast-util-to-html": "^8.0.4", - "hastscript": "^7.2.0", - "postcss": "^8.4.21", - "postcss-nested": "^6.0.1" - } - }, - "node_modules/@expressive-code/core/node_modules/@types/hast": { - "version": "2.3.10", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.10.tgz", - "integrity": "sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==", - "dependencies": { - "@types/unist": "^2" - } - }, - "node_modules/@expressive-code/core/node_modules/@types/unist": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", - "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==" - }, - "node_modules/@expressive-code/core/node_modules/hast-util-from-parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-7.1.2.tgz", - "integrity": "sha512-Nz7FfPBuljzsN3tCQ4kCBKqdNhQE2l0Tn+X1ubgKBPRoiDIu1mL08Cfw4k7q71+Duyaw7DXDN+VTAp4Vh3oCOw==", - "dependencies": { - "@types/hast": "^2.0.0", - "@types/unist": "^2.0.0", - "hastscript": "^7.0.0", - "property-information": "^6.0.0", - "vfile": "^5.0.0", - "vfile-location": "^4.0.0", - "web-namespaces": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/@expressive-code/core/node_modules/hast-util-parse-selector": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-3.1.1.tgz", - "integrity": "sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==", - "dependencies": { - "@types/hast": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/@expressive-code/core/node_modules/hast-util-raw": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-7.2.3.tgz", - "integrity": "sha512-RujVQfVsOrxzPOPSzZFiwofMArbQke6DJjnFfceiEbFh7S05CbPt0cYN+A5YeD3pso0JQk6O1aHBnx9+Pm2uqg==", - "dependencies": { - "@types/hast": "^2.0.0", - "@types/parse5": "^6.0.0", - "hast-util-from-parse5": "^7.0.0", - "hast-util-to-parse5": "^7.0.0", - "html-void-elements": "^2.0.0", - "parse5": "^6.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0", - "vfile": "^5.0.0", - "web-namespaces": "^2.0.0", - "zwitch": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/@expressive-code/core/node_modules/hast-util-to-html": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-8.0.4.tgz", - "integrity": "sha512-4tpQTUOr9BMjtYyNlt0P50mH7xj0Ks2xpo8M943Vykljf99HW6EzulIoJP1N3eKOSScEHzyzi9dm7/cn0RfGwA==", - "dependencies": { - "@types/hast": "^2.0.0", - "@types/unist": "^2.0.0", - "ccount": "^2.0.0", - "comma-separated-tokens": "^2.0.0", - "hast-util-raw": "^7.0.0", - "hast-util-whitespace": "^2.0.0", - "html-void-elements": "^2.0.0", - "property-information": "^6.0.0", - "space-separated-tokens": "^2.0.0", - "stringify-entities": "^4.0.0", - "zwitch": "^2.0.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/@expressive-code/core/node_modules/hast-util-to-parse5": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-7.1.0.tgz", - "integrity": "sha512-YNRgAJkH2Jky5ySkIqFXTQiaqcAtJyVE+D5lkN6CdtOqrnkLfGYYrEcKuHOJZlp+MwjSwuD3fZuawI+sic/RBw==", - "dependencies": { - "@types/hast": "^2.0.0", - "comma-separated-tokens": "^2.0.0", - "property-information": "^6.0.0", - "space-separated-tokens": "^2.0.0", - "web-namespaces": "^2.0.0", - "zwitch": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/@expressive-code/core/node_modules/hast-util-whitespace": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.1.tgz", - "integrity": "sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/@expressive-code/core/node_modules/hastscript": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-7.2.0.tgz", - "integrity": "sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==", - "dependencies": { - "@types/hast": "^2.0.0", - "comma-separated-tokens": "^2.0.0", - "hast-util-parse-selector": "^3.0.0", - "property-information": "^6.0.0", - "space-separated-tokens": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/@expressive-code/core/node_modules/html-void-elements": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-2.0.1.tgz", - "integrity": "sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/@expressive-code/core/node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" - }, "node_modules/@expressive-code/core/node_modules/unist-util-is": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", - "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", + "license": "MIT", "dependencies": { "@types/unist": "^2.0.0" }, @@ -1090,8 +684,7 @@ }, "node_modules/@expressive-code/core/node_modules/unist-util-position": { "version": "4.0.4", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.4.tgz", - "integrity": "sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==", + "license": "MIT", "dependencies": { "@types/unist": "^2.0.0" }, @@ -1102,8 +695,7 @@ }, "node_modules/@expressive-code/core/node_modules/unist-util-stringify-position": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", - "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "license": "MIT", "dependencies": { "@types/unist": "^2.0.0" }, @@ -1114,8 +706,7 @@ }, "node_modules/@expressive-code/core/node_modules/unist-util-visit": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", - "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", + "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", "unist-util-is": "^5.0.0", @@ -1128,8 +719,7 @@ }, "node_modules/@expressive-code/core/node_modules/unist-util-visit-parents": { "version": "5.1.3", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", - "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", + "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", "unist-util-is": "^5.0.0" @@ -1141,8 +731,7 @@ }, "node_modules/@expressive-code/core/node_modules/vfile": { "version": "5.3.7", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", - "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", + "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", "is-buffer": "^2.0.0", @@ -1156,8 +745,7 @@ }, "node_modules/@expressive-code/core/node_modules/vfile-location": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-4.1.0.tgz", - "integrity": "sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw==", + "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", "vfile": "^5.0.0" @@ -1169,8 +757,7 @@ }, "node_modules/@expressive-code/core/node_modules/vfile-message": { "version": "3.1.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", - "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", + "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", "unist-util-stringify-position": "^3.0.0" @@ -1182,8 +769,7 @@ }, "node_modules/@expressive-code/plugin-frames": { "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@expressive-code/plugin-frames/-/plugin-frames-0.33.5.tgz", - "integrity": "sha512-lFt/gbnZscBSxHovg4XiWohp5nrxk4McS6RGABdj6+0gJcX8/YrFTM23GKBIkaDePxdDidVY0jQYGYDL/RrQHw==", + "license": "MIT", "dependencies": { "@expressive-code/core": "^0.33.5", "hastscript": "^7.2.0" @@ -1191,21 +777,18 @@ }, "node_modules/@expressive-code/plugin-frames/node_modules/@types/hast": { "version": "2.3.10", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.10.tgz", - "integrity": "sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==", + "license": "MIT", "dependencies": { "@types/unist": "^2" } }, "node_modules/@expressive-code/plugin-frames/node_modules/@types/unist": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", - "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==" + "version": "2.0.11", + "license": "MIT" }, "node_modules/@expressive-code/plugin-frames/node_modules/hast-util-parse-selector": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-3.1.1.tgz", - "integrity": "sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==", + "license": "MIT", "dependencies": { "@types/hast": "^2.0.0" }, @@ -1216,8 +799,7 @@ }, "node_modules/@expressive-code/plugin-frames/node_modules/hastscript": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-7.2.0.tgz", - "integrity": "sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==", + "license": "MIT", "dependencies": { "@types/hast": "^2.0.0", "comma-separated-tokens": "^2.0.0", @@ -1230,10 +812,17 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/@expressive-code/plugin-frames/node_modules/property-information": { + "version": "6.5.0", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/@expressive-code/plugin-shiki": { "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@expressive-code/plugin-shiki/-/plugin-shiki-0.33.5.tgz", - "integrity": "sha512-LWgttQTUrIPE1X+Lya1qFWiX47tH2AS2hkbj/cZoWkdiSjn6zUvtTypK/2Xn6Rgn6z6ClzpgHvkXRqFn7nAB4A==", + "license": "MIT", "dependencies": { "@expressive-code/core": "^0.33.5", "shiki": "^1.1.7" @@ -1241,8 +830,7 @@ }, "node_modules/@expressive-code/plugin-text-markers": { "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@expressive-code/plugin-text-markers/-/plugin-text-markers-0.33.5.tgz", - "integrity": "sha512-JxSHL1MGrJAPNaUMjFXex3K+9NJDbfew9H6PmX8LQ+fm9VNQdtBYTAz/x7nqOk7bkTrtAZK5RfDqUfb8U5M+2A==", + "license": "MIT", "dependencies": { "@expressive-code/core": "^0.33.5", "hastscript": "^7.2.0", @@ -1251,21 +839,18 @@ }, "node_modules/@expressive-code/plugin-text-markers/node_modules/@types/hast": { "version": "2.3.10", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.10.tgz", - "integrity": "sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==", + "license": "MIT", "dependencies": { "@types/unist": "^2" } }, "node_modules/@expressive-code/plugin-text-markers/node_modules/@types/unist": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", - "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==" + "version": "2.0.11", + "license": "MIT" }, "node_modules/@expressive-code/plugin-text-markers/node_modules/hast-util-parse-selector": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-3.1.1.tgz", - "integrity": "sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==", + "license": "MIT", "dependencies": { "@types/hast": "^2.0.0" }, @@ -1276,8 +861,7 @@ }, "node_modules/@expressive-code/plugin-text-markers/node_modules/hastscript": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-7.2.0.tgz", - "integrity": "sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==", + "license": "MIT", "dependencies": { "@types/hast": "^2.0.0", "comma-separated-tokens": "^2.0.0", @@ -1290,10 +874,17 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/@expressive-code/plugin-text-markers/node_modules/property-information": { + "version": "6.5.0", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/@expressive-code/plugin-text-markers/node_modules/unist-util-is": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", - "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", + "license": "MIT", "dependencies": { "@types/unist": "^2.0.0" }, @@ -1304,8 +895,7 @@ }, "node_modules/@expressive-code/plugin-text-markers/node_modules/unist-util-visit-parents": { "version": "5.1.3", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", - "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", + "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", "unist-util-is": "^5.0.0" @@ -1315,499 +905,95 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/@img/sharp-darwin-arm64": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.4.tgz", - "integrity": "sha512-p0suNqXufJs9t3RqLBO6vvrgr5OhgbWp76s5gTRvdmxmuv9E1rcaqGUsl3l4mKVmXPkTkTErXediAui4x+8PSA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "glibc": ">=2.26", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-arm64": "1.0.2" - } - }, - "node_modules/@img/sharp-darwin-x64": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.4.tgz", - "integrity": "sha512-0l7yRObwtTi82Z6ebVI2PnHT8EB2NxBgpK2MiKJZJ7cz32R4lxd001ecMhzzsZig3Yv9oclvqqdV93jo9hy+Dw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "glibc": ">=2.26", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-x64": "1.0.2" - } - }, - "node_modules/@img/sharp-libvips-darwin-arm64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.2.tgz", - "integrity": "sha512-tcK/41Rq8IKlSaKRCCAuuY3lDJjQnYIW1UXU1kxcEKrfL8WR7N6+rzNoOxoQRJWTAECuKwgAHnPvqXGN8XfkHA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "macos": ">=11", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-darwin-x64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.2.tgz", - "integrity": "sha512-Ofw+7oaWa0HiiMiKWqqaZbaYV3/UGL2wAPeLuJTx+9cXpCRdvQhCLG0IH8YGwM0yGWGLpsF4Su9vM1o6aer+Fw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "macos": ">=10.13", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-arm": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.2.tgz", - "integrity": "sha512-iLWCvrKgeFoglQxdEwzu1eQV04o8YeYGFXtfWU26Zr2wWT3q3MTzC+QTCO3ZQfWd3doKHT4Pm2kRmLbupT+sZw==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "glibc": ">=2.28", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-arm64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.2.tgz", - "integrity": "sha512-x7kCt3N00ofFmmkkdshwj3vGPCnmiDh7Gwnd4nUwZln2YjqPxV1NlTyZOvoDWdKQVDL911487HOueBvrpflagw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "glibc": ">=2.26", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-s390x": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.2.tgz", - "integrity": "sha512-cmhQ1J4qVhfmS6szYW7RT+gLJq9dH2i4maq+qyXayUSn9/3iY2ZeWpbAgSpSVbV2E1JUL2Gg7pwnYQ1h8rQIog==", - "cpu": [ - "s390x" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "glibc": ">=2.28", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, "node_modules/@img/sharp-libvips-linux-x64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.2.tgz", - "integrity": "sha512-E441q4Qdb+7yuyiADVi5J+44x8ctlrqn8XgkDTwr4qPJzWkaHwD489iZ4nGDgcuya4iMN3ULV6NwbhRZJ9Z7SQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "glibc": ">=2.26", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linuxmusl-arm64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.2.tgz", - "integrity": "sha512-3CAkndNpYUrlDqkCM5qhksfE+qSIREVpyoeHIU6jd48SJZViAmznoQQLAv4hVXF7xyUB9zf+G++e2v1ABjCbEQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "musl": ">=1.2.2", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linuxmusl-x64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.2.tgz", - "integrity": "sha512-VI94Q6khIHqHWNOh6LLdm9s2Ry4zdjWJwH56WoiJU7NTeDwyApdZZ8c+SADC8OH98KWNQXnE01UdJ9CSfZvwZw==", + "version": "1.0.4", "cpu": [ "x64" ], + "license": "LGPL-3.0-or-later", "optional": true, "os": [ "linux" ], - "engines": { - "musl": ">=1.2.2", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-linux-arm": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.4.tgz", - "integrity": "sha512-RUgBD1c0+gCYZGCCe6mMdTiOFS0Zc/XrN0fYd6hISIKcDUbAW5NtSQW9g/powkrXYm6Vzwd6y+fqmExDuCdHNQ==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "glibc": ">=2.28", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, "funding": { "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-arm": "1.0.2" - } - }, - "node_modules/@img/sharp-linux-arm64": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.4.tgz", - "integrity": "sha512-2800clwVg1ZQtxwSoTlHvtm9ObgAax7V6MTAB/hDT945Tfyy3hVkmiHpeLPCKYqYR1Gcmv1uDZ3a4OFwkdBL7Q==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "glibc": ">=2.26", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-arm64": "1.0.2" - } - }, - "node_modules/@img/sharp-linux-s390x": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.4.tgz", - "integrity": "sha512-h3RAL3siQoyzSoH36tUeS0PDmb5wINKGYzcLB5C6DIiAn2F3udeFAum+gj8IbA/82+8RGCTn7XW8WTFnqag4tQ==", - "cpu": [ - "s390x" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "glibc": ">=2.31", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-s390x": "1.0.2" } }, "node_modules/@img/sharp-linux-x64": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.4.tgz", - "integrity": "sha512-GoR++s0XW9DGVi8SUGQ/U4AeIzLdNjHka6jidVwapQ/JebGVQIpi52OdyxCNVRE++n1FCLzjDovJNozif7w/Aw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "glibc": ">=2.26", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-x64": "1.0.2" - } - }, - "node_modules/@img/sharp-linuxmusl-arm64": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.4.tgz", - "integrity": "sha512-nhr1yC3BlVrKDTl6cO12gTpXMl4ITBUZieehFvMntlCXFzH2bvKG76tBL2Y/OqhupZt81pR7R+Q5YhJxW0rGgQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "musl": ">=1.2.2", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-arm64": "1.0.2" - } - }, - "node_modules/@img/sharp-linuxmusl-x64": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.4.tgz", - "integrity": "sha512-uCPTku0zwqDmZEOi4ILyGdmW76tH7dm8kKlOIV1XC5cLyJ71ENAAqarOHQh0RLfpIpbV5KOpXzdU6XkJtS0daw==", + "version": "0.33.5", "cpu": [ "x64" ], + "license": "Apache-2.0", "optional": true, "os": [ "linux" ], "engines": { - "musl": ">=1.2.2", - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-x64": "1.0.2" + "@img/sharp-libvips-linux-x64": "1.0.4" } }, - "node_modules/@img/sharp-wasm32": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.4.tgz", - "integrity": "sha512-Bmmauh4sXUsUqkleQahpdNXKvo+wa1V9KhT2pDA4VJGKwnKMJXiSTGphn0gnJrlooda0QxCtXc6RX1XAU6hMnQ==", - "cpu": [ - "wasm32" - ], - "optional": true, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "license": "MIT", "dependencies": { - "@emnapi/runtime": "^1.1.1" - }, - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-win32-ia32": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.4.tgz", - "integrity": "sha512-99SJ91XzUhYHbx7uhK3+9Lf7+LjwMGQZMDlO/E/YVJ7Nc3lyDFZPGhjwiYdctoH2BOzW9+TnfqcaMKt0jHLdqw==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-win32-x64": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.4.tgz", - "integrity": "sha512-3QLocdTRVIrFNye5YocZl+KKpYKP+fksi1QhmOArgx7GyhIbQp/WrJRu176jm8IxromS7RIkzMiMINVdBtC8Aw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0", - "npm": ">=9.6.5", - "pnpm": ">=7.1.0", - "yarn": ">=3.2.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" } }, - "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==", + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "license": "MIT", "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/gen-mapping": "^0.3.5", "@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==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/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==" + "version": "1.5.5", + "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "version": "0.3.31", + "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "node_modules/@mdx-js/mdx": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.0.1.tgz", - "integrity": "sha512-eIQ4QTrOWyL3LWEe/bu6Taqzq2HQvHcyTMaOrI95P2/LmJE7AsfPfgJGuFLPVqBUE1BC1rik3VIhU+s9u72arA==", + "version": "3.1.1", + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdx": "^2.0.0", + "acorn": "^8.0.0", "collapse-white-space": "^2.0.0", "devlop": "^1.0.0", - "estree-util-build-jsx": "^3.0.0", "estree-util-is-identifier-name": "^3.0.0", - "estree-util-to-js": "^2.0.0", + "estree-util-scope": "^1.0.0", "estree-walker": "^3.0.0", - "hast-util-to-estree": "^3.0.0", "hast-util-to-jsx-runtime": "^2.0.0", "markdown-extensions": "^2.0.0", - "periscopic": "^3.0.0", + "recma-build-jsx": "^1.0.0", + "recma-jsx": "^1.0.0", + "recma-stringify": "^1.0.0", + "rehype-recma": "^1.0.0", "remark-mdx": "^3.0.0", "remark-parse": "^11.0.0", "remark-rehype": "^11.0.0", @@ -1825,8 +1011,7 @@ }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -1835,303 +1020,136 @@ "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==", - "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==", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@pagefind/darwin-arm64": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@pagefind/darwin-arm64/-/darwin-arm64-1.1.1.tgz", - "integrity": "sha512-tZ9tysUmQpFs2EqWG2+E1gc+opDAhSyZSsgKmFzhnWfkK02YHZhvL5XJXEZDqYy3s1FAKhwjTg8XDxneuBlDZQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@pagefind/darwin-x64": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@pagefind/darwin-x64/-/darwin-x64-1.1.1.tgz", - "integrity": "sha512-ChohLQ39dLwaxQv0jIQB/SavP3TM5K5ENfDTqIdzLkmfs3+JlzSDyQKcJFjTHYcCzQOZVeieeGq8PdqvLJxJxQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@pagefind/default-ui": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@pagefind/default-ui/-/default-ui-1.1.1.tgz", - "integrity": "sha512-ZM0zDatWDnac/VGHhQCiM7UgA4ca8jpjA+VfuTJyHJBaxGqZMQnm4WoTz9E0KFcue1Bh9kxpu7uWFZfwpZZk0A==" - }, - "node_modules/@pagefind/linux-arm64": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@pagefind/linux-arm64/-/linux-arm64-1.1.1.tgz", - "integrity": "sha512-H5P6wDoCoAbdsWp0Zx0DxnLUrwTGWGLu/VI1rcN2CyFdY2EGSvPQsbGBMrseKRNuIrJDFtxHHHyjZ7UbzaM9EA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@pagefind/linux-x64": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@pagefind/linux-x64/-/linux-x64-1.1.1.tgz", - "integrity": "sha512-yJs7tTYbL2MI3HT+ngs9E1BfUbY9M4/YzA0yEM5xBo4Xl8Yu8Qg2xZTOQ1/F6gwvMrjCUFo8EoACs6LRDhtMrQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@pagefind/windows-x64": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@pagefind/windows-x64/-/windows-x64-1.1.1.tgz", - "integrity": "sha512-b7/qPqgIl+lMzkQ8fJt51SfguB396xbIIR+VZ3YrL2tLuyifDJ1wL5mEm+ddmHxJ2Fki340paPcDan9en5OmAw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.20.0.tgz", - "integrity": "sha512-TSpWzflCc4VGAUJZlPpgAJE1+V60MePDQnBd7PPkpuEmOy8i87aL6tinFGKBFKuEDikYpig72QzdT3QPYIi+oA==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.20.0.tgz", - "integrity": "sha512-u00Ro/nok7oGzVuh/FMYfNoGqxU5CPWz1mxV85S2w9LxHR8OoMQBuSk+3BKVIDYgkpeOET5yXkx90OYFc+ytpQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.20.0.tgz", - "integrity": "sha512-uFVfvzvsdGtlSLuL0ZlvPJvl6ZmrH4CBwLGEFPe7hUmf7htGAN+aXo43R/V6LATyxlKVC/m6UsLb7jbG+LG39Q==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.20.0.tgz", - "integrity": "sha512-xbrMDdlev53vNXexEa6l0LffojxhqDTBeL+VUxuuIXys4x6xyvbKq5XqTXBCEUA8ty8iEJblHvFaWRJTk/icAQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.20.0.tgz", - "integrity": "sha512-jMYvxZwGmoHFBTbr12Xc6wOdc2xA5tF5F2q6t7Rcfab68TT0n+r7dgawD4qhPEvasDsVpQi+MgDzj2faOLsZjA==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.20.0.tgz", - "integrity": "sha512-1asSTl4HKuIHIB1GcdFHNNZhxAYEdqML/MW4QmPS4G0ivbEcBr1JKlFLKsIRqjSwOBkdItn3/ZDlyvZ/N6KPlw==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ] + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "license": "MIT", + "engines": { + "node": ">= 8" + } }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.20.0.tgz", - "integrity": "sha512-COBb8Bkx56KldOYJfMf6wKeYJrtJ9vEgBRAOkfw6Ens0tnmzPqvlpjZiLgkhg6cA3DGzCmLmmd319pmHvKWWlQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ] + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.20.0.tgz", - "integrity": "sha512-+it+mBSyMslVQa8wSPvBx53fYuZK/oLTu5RJoXogjk6x7Q7sz1GNRsXWjn6SwyJm8E/oMjNVwPhmNdIjwP135Q==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ] + "node_modules/@oslojs/encoding": { + "version": "1.1.0", + "license": "MIT" }, - "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.20.0.tgz", - "integrity": "sha512-yAMvqhPfGKsAxHN8I4+jE0CpLWD8cv4z7CK7BMmhjDuz606Q2tFKkWRY8bHR9JQXYcoLfopo5TTqzxgPUjUMfw==", - "cpu": [ - "ppc64" - ], - "optional": true, - "os": [ - "linux" - ] + "node_modules/@pagefind/default-ui": { + "version": "1.4.0", + "license": "MIT" }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.20.0.tgz", - "integrity": "sha512-qmuxFpfmi/2SUkAw95TtNq/w/I7Gpjurx609OOOV7U4vhvUhBcftcmXwl3rqAek+ADBwSjIC4IVNLiszoj3dPA==", + "node_modules/@pagefind/linux-x64": { + "version": "1.4.0", "cpu": [ - "riscv64" + "x64" ], + "license": "MIT", "optional": true, "os": [ "linux" ] }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.20.0.tgz", - "integrity": "sha512-I0BtGXddHSHjV1mqTNkgUZLnS3WtsqebAXv11D5BZE/gfw5KoyXSAXVqyJximQXNvNzUo4GKlCK/dIwXlz+jlg==", - "cpu": [ - "s390x" - ], - "optional": true, - "os": [ - "linux" - ] + "node_modules/@rollup/pluginutils": { + "version": "5.3.0", + "license": "MIT", + "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", + "license": "MIT" }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.20.0.tgz", - "integrity": "sha512-y+eoL2I3iphUg9tN9GB6ku1FA8kOfmF4oUEWhztDJ4KXJy1agk/9+pejOuZkNFhRwHAOxMsBPLbXPd6mJiCwew==", + "version": "4.53.3", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "linux" ] }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.20.0.tgz", - "integrity": "sha512-hM3nhW40kBNYUkZb/r9k2FKK+/MnKglX7UYd4ZUy5DJs8/sMsIbqWK2piZtVGE3kcXVNj3B2IrUYROJMMCikNg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ] + "node_modules/@shikijs/core": { + "version": "1.29.2", + "license": "MIT", + "dependencies": { + "@shikijs/engine-javascript": "1.29.2", + "@shikijs/engine-oniguruma": "1.29.2", + "@shikijs/types": "1.29.2", + "@shikijs/vscode-textmate": "^10.0.1", + "@types/hast": "^3.0.4", + "hast-util-to-html": "^9.0.4" + } }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.20.0.tgz", - "integrity": "sha512-psegMvP+Ik/Bg7QRJbv8w8PAytPA7Uo8fpFjXyCRHWm6Nt42L+JtoqH8eDQ5hRP7/XW2UiIriy1Z46jf0Oa1kA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ] + "node_modules/@shikijs/engine-javascript": { + "version": "1.29.2", + "license": "MIT", + "dependencies": { + "@shikijs/types": "1.29.2", + "@shikijs/vscode-textmate": "^10.0.1", + "oniguruma-to-es": "^2.2.0" + } }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.20.0.tgz", - "integrity": "sha512-GabekH3w4lgAJpVxkk7hUzUf2hICSQO0a/BLFA11/RMxQT92MabKAqyubzDZmMOC/hcJNlc+rrypzNzYl4Dx7A==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ] + "node_modules/@shikijs/engine-oniguruma": { + "version": "1.29.2", + "license": "MIT", + "dependencies": { + "@shikijs/types": "1.29.2", + "@shikijs/vscode-textmate": "^10.0.1" + } }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.20.0.tgz", - "integrity": "sha512-aJ1EJSuTdGnM6qbVC4B5DSmozPTqIag9fSzXRNNo+humQLG89XpPgdt16Ia56ORD7s+H8Pmyx44uczDQ0yDzpg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ] + "node_modules/@shikijs/langs": { + "version": "1.29.2", + "license": "MIT", + "dependencies": { + "@shikijs/types": "1.29.2" + } }, - "node_modules/@shikijs/core": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.12.1.tgz", - "integrity": "sha512-biCz/mnkMktImI6hMfMX3H9kOeqsInxWEyCHbSlL8C/2TR1FqfmGxTLRNwYCKsyCyxWLbB8rEqXRVZuyxuLFmA==", + "node_modules/@shikijs/themes": { + "version": "1.29.2", + "license": "MIT", "dependencies": { - "@types/hast": "^3.0.4" + "@shikijs/types": "1.29.2" } }, - "node_modules/@types/acorn": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz", - "integrity": "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==", + "node_modules/@shikijs/types": { + "version": "1.29.2", + "license": "MIT", "dependencies": { - "@types/estree": "*" + "@shikijs/vscode-textmate": "^10.0.1", + "@types/hast": "^3.0.4" } }, + "node_modules/@shikijs/vscode-textmate": { + "version": "10.0.2", + "license": "MIT" + }, "node_modules/@types/babel__core": { "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "license": "MIT", "dependencies": { "@babel/parser": "^7.20.7", "@babel/types": "^7.20.7", @@ -2141,133 +1159,114 @@ } }, "node_modules/@types/babel__generator": { - "version": "7.6.8", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", - "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "version": "7.27.0", + "license": "MIT", "dependencies": { "@babel/types": "^7.0.0" } }, "node_modules/@types/babel__template": { "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "license": "MIT", "dependencies": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0" } }, "node_modules/@types/babel__traverse": { - "version": "7.20.6", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", - "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", + "version": "7.28.0", + "license": "MIT", "dependencies": { - "@babel/types": "^7.20.7" + "@babel/types": "^7.28.2" } }, "node_modules/@types/cookie": { "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==" + "license": "MIT" }, "node_modules/@types/debug": { "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", - "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "license": "MIT", "dependencies": { "@types/ms": "*" } }, "node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" + "version": "1.0.8", + "license": "MIT" }, "node_modules/@types/estree-jsx": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", - "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", + "license": "MIT", "dependencies": { "@types/estree": "*" } }, "node_modules/@types/hast": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", - "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "license": "MIT", "dependencies": { "@types/unist": "*" } }, "node_modules/@types/mdast": { "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "license": "MIT", "dependencies": { "@types/unist": "*" } }, "node_modules/@types/mdx": { "version": "2.0.13", - "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz", - "integrity": "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==" + "license": "MIT" }, "node_modules/@types/ms": { - "version": "0.7.34", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", - "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" + "version": "2.1.0", + "license": "MIT" }, "node_modules/@types/nlcst": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@types/nlcst/-/nlcst-1.0.4.tgz", - "integrity": "sha512-ABoYdNQ/kBSsLvZAekMhIPMQ3YUZvavStpKYs7BjLLuKVmIMA0LUgZ7b54zzuWJRbHF80v1cNf4r90Vd6eMQDg==", + "license": "MIT", "dependencies": { "@types/unist": "^2" } }, "node_modules/@types/nlcst/node_modules/@types/unist": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", - "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==" + "version": "2.0.11", + "license": "MIT" }, "node_modules/@types/node": { - "version": "22.1.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.1.0.tgz", - "integrity": "sha512-AOmuRF0R2/5j1knA3c6G3HOk523Ga+l+ZXltX8SF1+5oqcXijjfTd8fY3XRZqSihEu9XhtQnKYLmkFaoxgsJHw==", + "version": "24.10.1", + "license": "MIT", "dependencies": { - "undici-types": "~6.13.0" + "undici-types": "~7.16.0" } }, "node_modules/@types/parse5": { "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.3.tgz", - "integrity": "sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==" + "license": "MIT" }, "node_modules/@types/sax": { "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@types/sax/-/sax-1.2.7.tgz", - "integrity": "sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==", + "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/unist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", - "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==" + "version": "3.0.3", + "license": "MIT" }, "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==" + "version": "1.3.0", + "license": "ISC" }, "node_modules/@volar/kit": { - "version": "2.4.0-alpha.18", - "resolved": "https://registry.npmjs.org/@volar/kit/-/kit-2.4.0-alpha.18.tgz", - "integrity": "sha512-dZMSNhesh23lhd61ax2l04IgIcYofAjm8M+5BKAmX47ROweyc8RrrslszCFUJynlmXx6JS1PoHqvo8+E0aAYQQ==", + "version": "2.4.26", + "license": "MIT", "dependencies": { - "@volar/language-service": "2.4.0-alpha.18", - "@volar/typescript": "2.4.0-alpha.18", + "@volar/language-service": "2.4.26", + "@volar/typescript": "2.4.26", "typesafe-path": "^0.2.2", "vscode-languageserver-textdocument": "^1.0.11", "vscode-uri": "^3.0.8" @@ -2277,22 +1276,19 @@ } }, "node_modules/@volar/language-core": { - "version": "2.4.0-alpha.18", - "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.0-alpha.18.tgz", - "integrity": "sha512-JAYeJvYQQROmVRtSBIczaPjP3DX4QW1fOqW1Ebs0d3Y3EwSNRglz03dSv0Dm61dzd0Yx3WgTW3hndDnTQqgmyg==", + "version": "2.4.26", + "license": "MIT", "dependencies": { - "@volar/source-map": "2.4.0-alpha.18" + "@volar/source-map": "2.4.26" } }, "node_modules/@volar/language-server": { - "version": "2.4.0-alpha.18", - "resolved": "https://registry.npmjs.org/@volar/language-server/-/language-server-2.4.0-alpha.18.tgz", - "integrity": "sha512-dciHEE/R5kzI0bY71QfkoCVQ3cQI6g9MHfA4oIP6UhnJy0CdleUalWSygOXoD3Nq7Yk6wn2BRrb1PP5MsadY/Q==", - "dependencies": { - "@volar/language-core": "2.4.0-alpha.18", - "@volar/language-service": "2.4.0-alpha.18", - "@volar/snapshot-document": "2.4.0-alpha.18", - "@volar/typescript": "2.4.0-alpha.18", + "version": "2.4.26", + "license": "MIT", + "dependencies": { + "@volar/language-core": "2.4.26", + "@volar/language-service": "2.4.26", + "@volar/typescript": "2.4.26", "path-browserify": "^1.0.1", "request-light": "^0.7.0", "vscode-languageserver": "^9.0.1", @@ -2302,66 +1298,46 @@ } }, "node_modules/@volar/language-service": { - "version": "2.4.0-alpha.18", - "resolved": "https://registry.npmjs.org/@volar/language-service/-/language-service-2.4.0-alpha.18.tgz", - "integrity": "sha512-EuetrtbEtudi9buinWAG5U3Jam5dY27zXd/7GYnx542kBwanWOBM8i4DAQd0z7M11fOxXgybxPA933uaSyaOog==", + "version": "2.4.26", + "license": "MIT", "dependencies": { - "@volar/language-core": "2.4.0-alpha.18", + "@volar/language-core": "2.4.26", "vscode-languageserver-protocol": "^3.17.5", "vscode-languageserver-textdocument": "^1.0.11", "vscode-uri": "^3.0.8" } }, - "node_modules/@volar/snapshot-document": { - "version": "2.4.0-alpha.18", - "resolved": "https://registry.npmjs.org/@volar/snapshot-document/-/snapshot-document-2.4.0-alpha.18.tgz", - "integrity": "sha512-JAeclEly/wnILhR4Pu9MpgBLInZJH49O1zoy8fU+pk5I+zpv7JIEby5z2UFAS60+sIDnxBdAGd7rZ5VibE70vg==", - "dependencies": { - "vscode-languageserver-protocol": "^3.17.5", - "vscode-languageserver-textdocument": "^1.0.11" - } - }, "node_modules/@volar/source-map": { - "version": "2.4.0-alpha.18", - "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.0-alpha.18.tgz", - "integrity": "sha512-MTeCV9MUwwsH0sNFiZwKtFrrVZUK6p8ioZs3xFzHc2cvDXHWlYN3bChdQtwKX+FY2HG6H3CfAu1pKijolzIQ8g==" + "version": "2.4.26", + "license": "MIT" }, "node_modules/@volar/typescript": { - "version": "2.4.0-alpha.18", - "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.0-alpha.18.tgz", - "integrity": "sha512-sXh5Y8sqGUkgxpMWUGvRXggxYHAVxg0Pa1C42lQZuPDrW6vHJPR0VCK8Sr7WJsAW530HuNQT/ZIskmXtxjybMQ==", + "version": "2.4.26", + "license": "MIT", "dependencies": { - "@volar/language-core": "2.4.0-alpha.18", + "@volar/language-core": "2.4.26", "path-browserify": "^1.0.1", "vscode-uri": "^3.0.8" } }, "node_modules/@vscode/emmet-helper": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/@vscode/emmet-helper/-/emmet-helper-2.9.3.tgz", - "integrity": "sha512-rB39LHWWPQYYlYfpv9qCoZOVioPCftKXXqrsyqN1mTWZM6dTnONT63Db+03vgrBbHzJN45IrgS/AGxw9iiqfEw==", + "version": "2.11.0", + "license": "MIT", "dependencies": { "emmet": "^2.4.3", "jsonc-parser": "^2.3.0", "vscode-languageserver-textdocument": "^1.0.1", "vscode-languageserver-types": "^3.15.1", - "vscode-uri": "^2.1.2" + "vscode-uri": "^3.0.8" } }, - "node_modules/@vscode/emmet-helper/node_modules/vscode-uri": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-2.1.2.tgz", - "integrity": "sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==" - }, "node_modules/@vscode/l10n": { "version": "0.0.18", - "resolved": "https://registry.npmjs.org/@vscode/l10n/-/l10n-0.0.18.tgz", - "integrity": "sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==" + "license": "MIT" }, "node_modules/acorn": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", - "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "version": "8.15.0", + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -2371,37 +1347,58 @@ }, "node_modules/acorn-jsx": { "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, + "node_modules/ajv": { + "version": "8.17.1", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-draft-04": { + "version": "1.0.0", + "license": "MIT", + "peerDependencies": { + "ajv": "^8.5.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, "node_modules/ansi-align": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", - "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "license": "ISC", "dependencies": { "string-width": "^4.1.0" } }, "node_modules/ansi-align/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==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/ansi-align/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==" + "license": "MIT" }, "node_modules/ansi-align/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==", + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -2413,8 +1410,7 @@ }, "node_modules/ansi-align/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==", + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -2423,9 +1419,8 @@ } }, "node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "version": "6.2.2", + "license": "MIT", "engines": { "node": ">=12" }, @@ -2434,20 +1429,18 @@ } }, "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, + "version": "6.2.3", + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/anymatch": { "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -2456,77 +1449,79 @@ "node": ">= 8" } }, + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.1", + "license": "MIT", + "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==" + "license": "MIT" }, "node_modules/argparse": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + "license": "Python-2.0" }, "node_modules/aria-query": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", - "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", - "dependencies": { - "dequal": "^2.0.3" + "version": "5.3.2", + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" } }, "node_modules/array-iterate": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/array-iterate/-/array-iterate-2.0.1.tgz", - "integrity": "sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, "node_modules/astring": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/astring/-/astring-1.8.6.tgz", - "integrity": "sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==", + "version": "1.9.0", + "license": "MIT", "bin": { "astring": "bin/astring" } }, "node_modules/astro": { - "version": "4.13.1", - "resolved": "https://registry.npmjs.org/astro/-/astro-4.13.1.tgz", - "integrity": "sha512-VnMjAc+ykFsIVjgbu9Mt/EA1fMIcPMXbU89h3ATwGOzSIKDsQH72bDgfJkWiwk6u0OE90GeP5EPhAT28Twf9oA==", + "version": "4.16.19", + "license": "MIT", "dependencies": { - "@astrojs/compiler": "^2.10.0", + "@astrojs/compiler": "^2.10.3", "@astrojs/internal-helpers": "0.4.1", - "@astrojs/markdown-remark": "5.2.0", + "@astrojs/markdown-remark": "5.3.0", "@astrojs/telemetry": "3.1.0", - "@babel/core": "^7.25.2", - "@babel/generator": "^7.25.0", - "@babel/parser": "^7.25.3", - "@babel/plugin-transform-react-jsx": "^7.25.2", - "@babel/traverse": "^7.25.3", - "@babel/types": "^7.25.2", + "@babel/core": "^7.26.0", + "@babel/plugin-transform-react-jsx": "^7.25.9", + "@babel/types": "^7.26.0", + "@oslojs/encoding": "^1.1.0", + "@rollup/pluginutils": "^5.1.3", "@types/babel__core": "^7.20.5", "@types/cookie": "^0.6.0", - "acorn": "^8.12.1", - "aria-query": "^5.3.0", + "acorn": "^8.14.0", + "aria-query": "^5.3.2", "axobject-query": "^4.1.0", - "boxen": "7.1.1", - "ci-info": "^4.0.0", + "boxen": "8.0.1", + "ci-info": "^4.1.0", "clsx": "^2.1.1", "common-ancestor-path": "^1.0.1", - "cookie": "^0.6.0", + "cookie": "^0.7.2", "cssesc": "^3.0.0", - "debug": "^4.3.6", + "debug": "^4.3.7", "deterministic-object-hash": "^2.0.2", - "devalue": "^5.0.0", + "devalue": "^5.1.1", "diff": "^5.2.0", "dlv": "^1.1.3", - "dset": "^3.1.3", + "dset": "^3.1.4", "es-module-lexer": "^1.5.4", "esbuild": "^0.21.5", "estree-walker": "^3.0.3", - "execa": "^8.0.1", "fast-glob": "^3.3.2", "flattie": "^1.1.1", "github-slugger": "^2.0.0", @@ -2535,28 +1530,31 @@ "http-cache-semantics": "^4.1.1", "js-yaml": "^4.1.0", "kleur": "^4.1.5", - "magic-string": "^0.30.11", + "magic-string": "^0.30.14", + "magicast": "^0.3.5", + "micromatch": "^4.0.8", "mrmime": "^2.0.0", - "ora": "^8.0.1", + "neotraverse": "^0.6.18", + "ora": "^8.1.1", "p-limit": "^6.1.0", "p-queue": "^8.0.1", - "path-to-regexp": "^6.2.2", "preferred-pm": "^4.0.0", "prompts": "^2.4.2", - "rehype": "^13.0.1", + "rehype": "^13.0.2", "semver": "^7.6.3", - "shiki": "^1.12.0", - "string-width": "^7.2.0", - "strip-ansi": "^7.1.0", - "tsconfck": "^3.1.1", + "shiki": "^1.23.1", + "tinyexec": "^0.3.1", + "tsconfck": "^3.1.4", "unist-util-visit": "^5.0.0", - "vfile": "^6.0.2", - "vite": "^5.3.5", - "vitefu": "^0.2.5", + "vfile": "^6.0.3", + "vite": "^5.4.11", + "vitefu": "^1.0.4", "which-pm": "^3.0.0", + "xxhash-wasm": "^1.1.0", "yargs-parser": "^21.1.1", "zod": "^3.23.8", - "zod-to-json-schema": "^3.23.2" + "zod-to-json-schema": "^3.23.5", + "zod-to-ts": "^1.2.0" }, "bin": { "astro": "astro.js" @@ -2572,8 +1570,7 @@ }, "node_modules/astro-expressive-code": { "version": "0.33.5", - "resolved": "https://registry.npmjs.org/astro-expressive-code/-/astro-expressive-code-0.33.5.tgz", - "integrity": "sha512-9JAyllueMUN8JTl/h/yTdbKinNmfalEWcV11s3lSf/UJQbAZfWJuy+IlGcArZDI/CmD21GXhFHLqYthpdY33ug==", + "license": "MIT", "dependencies": { "hast-util-to-html": "^8.0.4", "remark-expressive-code": "^0.33.5" @@ -2584,21 +1581,18 @@ }, "node_modules/astro-expressive-code/node_modules/@types/hast": { "version": "2.3.10", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.10.tgz", - "integrity": "sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==", + "license": "MIT", "dependencies": { "@types/unist": "^2" } }, "node_modules/astro-expressive-code/node_modules/@types/unist": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", - "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==" + "version": "2.0.11", + "license": "MIT" }, "node_modules/astro-expressive-code/node_modules/hast-util-from-parse5": { "version": "7.1.2", - "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-7.1.2.tgz", - "integrity": "sha512-Nz7FfPBuljzsN3tCQ4kCBKqdNhQE2l0Tn+X1ubgKBPRoiDIu1mL08Cfw4k7q71+Duyaw7DXDN+VTAp4Vh3oCOw==", + "license": "MIT", "dependencies": { "@types/hast": "^2.0.0", "@types/unist": "^2.0.0", @@ -2615,8 +1609,7 @@ }, "node_modules/astro-expressive-code/node_modules/hast-util-parse-selector": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-3.1.1.tgz", - "integrity": "sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==", + "license": "MIT", "dependencies": { "@types/hast": "^2.0.0" }, @@ -2627,8 +1620,7 @@ }, "node_modules/astro-expressive-code/node_modules/hast-util-raw": { "version": "7.2.3", - "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-7.2.3.tgz", - "integrity": "sha512-RujVQfVsOrxzPOPSzZFiwofMArbQke6DJjnFfceiEbFh7S05CbPt0cYN+A5YeD3pso0JQk6O1aHBnx9+Pm2uqg==", + "license": "MIT", "dependencies": { "@types/hast": "^2.0.0", "@types/parse5": "^6.0.0", @@ -2649,8 +1641,7 @@ }, "node_modules/astro-expressive-code/node_modules/hast-util-to-html": { "version": "8.0.4", - "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-8.0.4.tgz", - "integrity": "sha512-4tpQTUOr9BMjtYyNlt0P50mH7xj0Ks2xpo8M943Vykljf99HW6EzulIoJP1N3eKOSScEHzyzi9dm7/cn0RfGwA==", + "license": "MIT", "dependencies": { "@types/hast": "^2.0.0", "@types/unist": "^2.0.0", @@ -2671,8 +1662,7 @@ }, "node_modules/astro-expressive-code/node_modules/hast-util-to-parse5": { "version": "7.1.0", - "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-7.1.0.tgz", - "integrity": "sha512-YNRgAJkH2Jky5ySkIqFXTQiaqcAtJyVE+D5lkN6CdtOqrnkLfGYYrEcKuHOJZlp+MwjSwuD3fZuawI+sic/RBw==", + "license": "MIT", "dependencies": { "@types/hast": "^2.0.0", "comma-separated-tokens": "^2.0.0", @@ -2688,8 +1678,7 @@ }, "node_modules/astro-expressive-code/node_modules/hast-util-whitespace": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.1.tgz", - "integrity": "sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==", + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" @@ -2697,8 +1686,7 @@ }, "node_modules/astro-expressive-code/node_modules/hastscript": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-7.2.0.tgz", - "integrity": "sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==", + "license": "MIT", "dependencies": { "@types/hast": "^2.0.0", "comma-separated-tokens": "^2.0.0", @@ -2713,8 +1701,7 @@ }, "node_modules/astro-expressive-code/node_modules/html-void-elements": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-2.0.1.tgz", - "integrity": "sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -2722,13 +1709,19 @@ }, "node_modules/astro-expressive-code/node_modules/parse5": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + "license": "MIT" + }, + "node_modules/astro-expressive-code/node_modules/property-information": { + "version": "6.5.0", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } }, "node_modules/astro-expressive-code/node_modules/unist-util-is": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", - "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", + "license": "MIT", "dependencies": { "@types/unist": "^2.0.0" }, @@ -2739,8 +1732,7 @@ }, "node_modules/astro-expressive-code/node_modules/unist-util-position": { "version": "4.0.4", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.4.tgz", - "integrity": "sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==", + "license": "MIT", "dependencies": { "@types/unist": "^2.0.0" }, @@ -2751,8 +1743,7 @@ }, "node_modules/astro-expressive-code/node_modules/unist-util-stringify-position": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", - "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "license": "MIT", "dependencies": { "@types/unist": "^2.0.0" }, @@ -2763,8 +1754,7 @@ }, "node_modules/astro-expressive-code/node_modules/unist-util-visit": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", - "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", + "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", "unist-util-is": "^5.0.0", @@ -2777,8 +1767,7 @@ }, "node_modules/astro-expressive-code/node_modules/unist-util-visit-parents": { "version": "5.1.3", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", - "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", + "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", "unist-util-is": "^5.0.0" @@ -2790,8 +1779,7 @@ }, "node_modules/astro-expressive-code/node_modules/vfile": { "version": "5.3.7", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", - "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", + "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", "is-buffer": "^2.0.0", @@ -2805,8 +1793,7 @@ }, "node_modules/astro-expressive-code/node_modules/vfile-location": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-4.1.0.tgz", - "integrity": "sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw==", + "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", "vfile": "^5.0.0" @@ -2818,8 +1805,7 @@ }, "node_modules/astro-expressive-code/node_modules/vfile-message": { "version": "3.1.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", - "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", + "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", "unist-util-stringify-position": "^3.0.0" @@ -2830,42 +1816,49 @@ } }, "node_modules/astro/node_modules/@astrojs/markdown-remark": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-5.2.0.tgz", - "integrity": "sha512-vWGM24KZXz11jR3JO+oqYU3T2qpuOi4uGivJ9SQLCAI01+vEkHC60YJMRvHPc+hwd60F7euNs1PeOEixIIiNQw==", + "version": "5.3.0", + "license": "MIT", "dependencies": { "@astrojs/prism": "3.1.0", "github-slugger": "^2.0.0", - "hast-util-from-html": "^2.0.1", + "hast-util-from-html": "^2.0.3", "hast-util-to-text": "^4.0.2", "import-meta-resolve": "^4.1.0", "mdast-util-definitions": "^6.0.0", "rehype-raw": "^7.0.0", - "rehype-stringify": "^10.0.0", + "rehype-stringify": "^10.0.1", "remark-gfm": "^4.0.0", "remark-parse": "^11.0.0", - "remark-rehype": "^11.1.0", + "remark-rehype": "^11.1.1", "remark-smartypants": "^3.0.2", - "shiki": "^1.10.3", + "shiki": "^1.22.0", "unified": "^11.0.5", "unist-util-remove-position": "^5.0.0", "unist-util-visit": "^5.0.0", "unist-util-visit-parents": "^6.0.1", - "vfile": "^6.0.2" + "vfile": "^6.0.3" + } + }, + "node_modules/astro/node_modules/@astrojs/prism": { + "version": "3.1.0", + "license": "MIT", + "dependencies": { + "prismjs": "^1.29.0" + }, + "engines": { + "node": "^18.17.1 || ^20.3.0 || >=21.0.0" } }, "node_modules/astro/node_modules/@types/nlcst": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/nlcst/-/nlcst-2.0.3.tgz", - "integrity": "sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==", + "license": "MIT", "dependencies": { "@types/unist": "*" } }, "node_modules/astro/node_modules/nlcst-to-string": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-4.0.0.tgz", - "integrity": "sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==", + "license": "MIT", "dependencies": { "@types/nlcst": "^2.0.0" }, @@ -2876,8 +1869,7 @@ }, "node_modules/astro/node_modules/parse-latin": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/parse-latin/-/parse-latin-7.0.0.tgz", - "integrity": "sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==", + "license": "MIT", "dependencies": { "@types/nlcst": "^2.0.0", "@types/unist": "^3.0.0", @@ -2893,8 +1885,7 @@ }, "node_modules/astro/node_modules/remark-smartypants": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/remark-smartypants/-/remark-smartypants-3.0.2.tgz", - "integrity": "sha512-ILTWeOriIluwEvPjv67v7Blgrcx+LZOkAUVtKI3putuhlZm84FnqDORNXPPm+HY3NdZOMhyDwZ1E+eZB/Df5dA==", + "license": "MIT", "dependencies": { "retext": "^9.0.0", "retext-smartypants": "^6.0.0", @@ -2907,8 +1898,7 @@ }, "node_modules/astro/node_modules/retext": { "version": "9.0.0", - "resolved": "https://registry.npmjs.org/retext/-/retext-9.0.0.tgz", - "integrity": "sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA==", + "license": "MIT", "dependencies": { "@types/nlcst": "^2.0.0", "retext-latin": "^4.0.0", @@ -2922,8 +1912,7 @@ }, "node_modules/astro/node_modules/retext-latin": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/retext-latin/-/retext-latin-4.0.0.tgz", - "integrity": "sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA==", + "license": "MIT", "dependencies": { "@types/nlcst": "^2.0.0", "parse-latin": "^7.0.0", @@ -2935,9 +1924,8 @@ } }, "node_modules/astro/node_modules/retext-smartypants": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/retext-smartypants/-/retext-smartypants-6.1.0.tgz", - "integrity": "sha512-LDPXg95346bqFZnDMHo0S7Rq5p64+B+N8Vz733+wPMDtwb9rCOs9LIdIEhrUOU+TAywX9St+ocQWJt8wrzivcQ==", + "version": "6.2.0", + "license": "MIT", "dependencies": { "@types/nlcst": "^2.0.0", "nlcst-to-string": "^4.0.0", @@ -2950,8 +1938,7 @@ }, "node_modules/astro/node_modules/retext-stringify": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/retext-stringify/-/retext-stringify-4.0.0.tgz", - "integrity": "sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA==", + "license": "MIT", "dependencies": { "@types/nlcst": "^2.0.0", "nlcst-to-string": "^4.0.0", @@ -2963,49 +1950,46 @@ } }, "node_modules/astro/node_modules/sharp": { - "version": "0.33.4", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.4.tgz", - "integrity": "sha512-7i/dt5kGl7qR4gwPRD2biwD2/SvBn3O04J77XKFgL2OnZtQw+AG9wnuS/csmu80nPRHLYE9E41fyEiG8nhH6/Q==", + "version": "0.33.5", "hasInstallScript": true, + "license": "Apache-2.0", "optional": true, "dependencies": { "color": "^4.2.3", "detect-libc": "^2.0.3", - "semver": "^7.6.0" + "semver": "^7.6.3" }, "engines": { - "libvips": ">=8.15.2", "node": "^18.17.0 || ^20.3.0 || >=21.0.0" }, "funding": { "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-darwin-arm64": "0.33.4", - "@img/sharp-darwin-x64": "0.33.4", - "@img/sharp-libvips-darwin-arm64": "1.0.2", - "@img/sharp-libvips-darwin-x64": "1.0.2", - "@img/sharp-libvips-linux-arm": "1.0.2", - "@img/sharp-libvips-linux-arm64": "1.0.2", - "@img/sharp-libvips-linux-s390x": "1.0.2", - "@img/sharp-libvips-linux-x64": "1.0.2", - "@img/sharp-libvips-linuxmusl-arm64": "1.0.2", - "@img/sharp-libvips-linuxmusl-x64": "1.0.2", - "@img/sharp-linux-arm": "0.33.4", - "@img/sharp-linux-arm64": "0.33.4", - "@img/sharp-linux-s390x": "0.33.4", - "@img/sharp-linux-x64": "0.33.4", - "@img/sharp-linuxmusl-arm64": "0.33.4", - "@img/sharp-linuxmusl-x64": "0.33.4", - "@img/sharp-wasm32": "0.33.4", - "@img/sharp-win32-ia32": "0.33.4", - "@img/sharp-win32-x64": "0.33.4" + "@img/sharp-darwin-arm64": "0.33.5", + "@img/sharp-darwin-x64": "0.33.5", + "@img/sharp-libvips-darwin-arm64": "1.0.4", + "@img/sharp-libvips-darwin-x64": "1.0.4", + "@img/sharp-libvips-linux-arm": "1.0.5", + "@img/sharp-libvips-linux-arm64": "1.0.4", + "@img/sharp-libvips-linux-s390x": "1.0.4", + "@img/sharp-libvips-linux-x64": "1.0.4", + "@img/sharp-libvips-linuxmusl-arm64": "1.0.4", + "@img/sharp-libvips-linuxmusl-x64": "1.0.4", + "@img/sharp-linux-arm": "0.33.5", + "@img/sharp-linux-arm64": "0.33.5", + "@img/sharp-linux-s390x": "0.33.5", + "@img/sharp-linux-x64": "0.33.5", + "@img/sharp-linuxmusl-arm64": "0.33.5", + "@img/sharp-linuxmusl-x64": "0.33.5", + "@img/sharp-wasm32": "0.33.5", + "@img/sharp-win32-ia32": "0.33.5", + "@img/sharp-win32-x64": "0.33.5" } }, "node_modules/astro/node_modules/unist-util-modify-children": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unist-util-modify-children/-/unist-util-modify-children-4.0.0.tgz", - "integrity": "sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "array-iterate": "^2.0.0" @@ -3017,8 +2001,7 @@ }, "node_modules/astro/node_modules/unist-util-visit-children": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-visit-children/-/unist-util-visit-children-3.0.0.tgz", - "integrity": "sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0" }, @@ -3029,76 +2012,116 @@ }, "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==", + "license": "Apache-2.0", "engines": { "node": ">= 0.4" } }, "node_modules/b4a": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz", - "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==" + "version": "1.7.3", + "license": "Apache-2.0", + "peerDependencies": { + "react-native-b4a": "*" + }, + "peerDependenciesMeta": { + "react-native-b4a": { + "optional": true + } + } }, "node_modules/bail": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", - "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, "node_modules/bare-events": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.4.2.tgz", - "integrity": "sha512-qMKFd2qG/36aA4GwvKq8MxnPgCQAmBWmSyLWsJcbn8v03wvIPQ/hG1Ms8bPzndZxMDoHpxez5VOS+gC9Yi24/Q==", - "optional": true + "version": "2.8.2", + "license": "Apache-2.0", + "peerDependencies": { + "bare-abort-controller": "*" + }, + "peerDependenciesMeta": { + "bare-abort-controller": { + "optional": true + } + } }, "node_modules/bare-fs": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.3.1.tgz", - "integrity": "sha512-W/Hfxc/6VehXlsgFtbB5B4xFcsCl+pAh30cYhoFyXErf6oGrwjh8SwiPAdHgpmWonKuYpZgGywN0SXt7dgsADA==", + "version": "4.5.2", + "license": "Apache-2.0", "optional": true, "dependencies": { - "bare-events": "^2.0.0", - "bare-path": "^2.0.0", - "bare-stream": "^2.0.0" + "bare-events": "^2.5.4", + "bare-path": "^3.0.0", + "bare-stream": "^2.6.4", + "bare-url": "^2.2.2", + "fast-fifo": "^1.3.2" + }, + "engines": { + "bare": ">=1.16.0" + }, + "peerDependencies": { + "bare-buffer": "*" + }, + "peerDependenciesMeta": { + "bare-buffer": { + "optional": true + } } }, "node_modules/bare-os": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.4.0.tgz", - "integrity": "sha512-v8DTT08AS/G0F9xrhyLtepoo9EJBJ85FRSMbu1pQUlAf6A8T0tEEQGMVObWeqpjhSPXsE0VGlluFBJu2fdoTNg==", - "optional": true + "version": "3.6.2", + "license": "Apache-2.0", + "optional": true, + "engines": { + "bare": ">=1.14.0" + } }, "node_modules/bare-path": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-2.1.3.tgz", - "integrity": "sha512-lh/eITfU8hrj9Ru5quUp0Io1kJWIk1bTjzo7JH1P5dWmQ2EL4hFUlfI8FonAhSlgIfhn63p84CDY/x+PisgcXA==", + "version": "3.0.0", + "license": "Apache-2.0", "optional": true, "dependencies": { - "bare-os": "^2.1.0" + "bare-os": "^3.0.1" } }, "node_modules/bare-stream": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.1.3.tgz", - "integrity": "sha512-tiDAH9H/kP+tvNO5sczyn9ZAA7utrSMobyDchsnyyXBuUe2FSQWbxhtuHB8jwpHYYevVo2UJpcmvvjrbHboUUQ==", + "version": "2.7.0", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "streamx": "^2.21.0" + }, + "peerDependencies": { + "bare-buffer": "*", + "bare-events": "*" + }, + "peerDependenciesMeta": { + "bare-buffer": { + "optional": true + }, + "bare-events": { + "optional": true + } + } + }, + "node_modules/bare-url": { + "version": "2.3.2", + "license": "Apache-2.0", "optional": true, "dependencies": { - "streamx": "^2.18.0" + "bare-path": "^3.0.0" } }, "node_modules/base-64": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/base-64/-/base-64-1.0.0.tgz", - "integrity": "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==" + "license": "MIT" }, "node_modules/base64-js": { "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", "funding": [ { "type": "github", @@ -3112,12 +2135,19 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" + }, + "node_modules/baseline-browser-mapping": { + "version": "2.8.32", + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } }, "node_modules/bcp-47": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/bcp-47/-/bcp-47-2.1.0.tgz", - "integrity": "sha512-9IIS3UPrvIa1Ej+lVDdDwO7zLehjqsaByECw0bu2RRGP73jALm6FYbzI5gWbgHLvNdkvfXB5YrSbocZdOS0c0w==", + "license": "MIT", "dependencies": { "is-alphabetical": "^2.0.0", "is-alphanumerical": "^2.0.0", @@ -3130,8 +2160,7 @@ }, "node_modules/bcp-47-match": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/bcp-47-match/-/bcp-47-match-2.0.3.tgz", - "integrity": "sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -3139,8 +2168,7 @@ }, "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==", + "license": "MIT", "engines": { "node": ">=8" }, @@ -3150,8 +2178,7 @@ }, "node_modules/bl": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "license": "MIT", "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", @@ -3160,57 +2187,23 @@ }, "node_modules/boolbase": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + "license": "ISC" }, "node_modules/boxen": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.1.1.tgz", - "integrity": "sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==", + "version": "8.0.1", + "license": "MIT", "dependencies": { "ansi-align": "^3.0.1", - "camelcase": "^7.0.1", - "chalk": "^5.2.0", + "camelcase": "^8.0.0", + "chalk": "^5.3.0", "cli-boxes": "^3.0.0", - "string-width": "^5.1.2", - "type-fest": "^2.13.0", - "widest-line": "^4.0.1", - "wrap-ansi": "^8.1.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/boxen/node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/boxen/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==" - }, - "node_modules/boxen/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==", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" + "string-width": "^7.2.0", + "type-fest": "^4.21.0", + "widest-line": "^5.0.0", + "wrap-ansi": "^9.0.0" }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -3218,8 +2211,7 @@ }, "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==", + "license": "MIT", "dependencies": { "fill-range": "^7.1.1" }, @@ -3228,9 +2220,7 @@ } }, "node_modules/browserslist": { - "version": "4.23.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", - "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", + "version": "4.28.0", "funding": [ { "type": "opencollective", @@ -3245,11 +2235,13 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001646", - "electron-to-chromium": "^1.5.4", - "node-releases": "^2.0.18", - "update-browserslist-db": "^1.1.0" + "baseline-browser-mapping": "^2.8.25", + "caniuse-lite": "^1.0.30001754", + "electron-to-chromium": "^1.5.249", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.1.4" }, "bin": { "browserslist": "cli.js" @@ -3260,8 +2252,6 @@ }, "node_modules/buffer": { "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "funding": [ { "type": "github", @@ -3276,26 +2266,24 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" } }, "node_modules/camelcase": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz", - "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==", + "version": "8.0.0", + "license": "MIT", "engines": { - "node": ">=14.16" + "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/caniuse-lite": { - "version": "1.0.30001647", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001647.tgz", - "integrity": "sha512-n83xdNiyeNcHpzWY+1aFbqCK7LuLfBricc4+alSQL2Xb6OR3XpnQAmlDG+pQcdTfiHRuLcQ96VOfrPSGiNJYSg==", + "version": "1.0.30001759", "funding": [ { "type": "opencollective", @@ -3309,34 +2297,30 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ] + ], + "license": "CC-BY-4.0" }, "node_modules/ccount": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", - "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, + "node_modules/chalk": { + "version": "5.6.2", + "license": "MIT", "engines": { - "node": ">=4" + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/character-entities": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", - "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -3344,8 +2328,7 @@ }, "node_modules/character-entities-html4": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", - "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -3353,8 +2336,7 @@ }, "node_modules/character-entities-legacy": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", - "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -3362,8 +2344,7 @@ }, "node_modules/character-reference-invalid": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", - "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -3371,8 +2352,7 @@ }, "node_modules/chokidar": { "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "license": "MIT", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -3394,27 +2374,24 @@ }, "node_modules/chownr": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + "license": "ISC" }, "node_modules/ci-info": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.0.0.tgz", - "integrity": "sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==", + "version": "4.3.1", "funding": [ { "type": "github", "url": "https://github.com/sponsors/sibiraj-s" } ], + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/cli-boxes": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", - "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -3423,14 +2400,13 @@ } }, "node_modules/cli-cursor": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", - "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", + "version": "5.0.0", + "license": "MIT", "dependencies": { - "restore-cursor": "^4.0.0" + "restore-cursor": "^5.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -3438,8 +2414,7 @@ }, "node_modules/cli-spinners": { "version": "2.9.2", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", - "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "license": "MIT", "engines": { "node": ">=6" }, @@ -3449,8 +2424,7 @@ }, "node_modules/cliui": { "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", @@ -3462,16 +2436,14 @@ }, "node_modules/cliui/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==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/cliui/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==", + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -3482,31 +2454,13 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/cliui/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==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/cliui/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==" - }, "node_modules/cliui/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==" + "license": "MIT" }, "node_modules/cliui/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==", + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -3518,8 +2472,7 @@ }, "node_modules/cliui/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==", + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -3529,8 +2482,7 @@ }, "node_modules/cliui/node_modules/wrap-ansi": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -3545,16 +2497,14 @@ }, "node_modules/clsx": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", - "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/collapse-white-space": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz", - "integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -3562,8 +2512,7 @@ }, "node_modules/color": { "version": "4.2.3", - "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", - "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "license": "MIT", "dependencies": { "color-convert": "^2.0.1", "color-string": "^1.9.0" @@ -3573,47 +2522,30 @@ } }, "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "version": "2.0.1", + "license": "MIT", "dependencies": { - "color-name": "1.1.3" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + "version": "1.1.4", + "license": "MIT" }, "node_modules/color-string": { "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "license": "MIT", "dependencies": { "color-name": "^1.0.0", "simple-swizzle": "^0.2.2" } }, - "node_modules/color/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==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color/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==" - }, "node_modules/comma-separated-tokens": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", - "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -3621,39 +2553,21 @@ }, "node_modules/common-ancestor-path": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz", - "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==" + "license": "ISC" }, "node_modules/convert-source-map": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" + "license": "MIT" }, "node_modules/cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "version": "0.7.2", + "license": "MIT", "engines": { "node": ">= 0.6" } }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/css-selector-parser": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-3.0.5.tgz", - "integrity": "sha512-3itoDFbKUNx1eKmVpYMFyqKX04Ww9osZ+dLgrk6GEv6KMVeXUhUnp4I5X+evw+u3ZxVU6RFXSSRxlTeMh8bA+g==", + "version": "3.2.0", "funding": [ { "type": "github", @@ -3663,12 +2577,12 @@ "type": "patreon", "url": "https://patreon.com/mdevils" } - ] + ], + "license": "MIT" }, "node_modules/cssesc": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "license": "MIT", "bin": { "cssesc": "bin/cssesc" }, @@ -3677,11 +2591,10 @@ } }, "node_modules/debug": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", - "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "version": "4.4.3", + "license": "MIT", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -3693,9 +2606,8 @@ } }, "node_modules/decode-named-character-reference": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", - "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", + "version": "1.2.0", + "license": "MIT", "dependencies": { "character-entities": "^2.0.0" }, @@ -3706,8 +2618,7 @@ }, "node_modules/decompress-response": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "license": "MIT", "dependencies": { "mimic-response": "^3.1.0" }, @@ -3720,32 +2631,28 @@ }, "node_modules/deep-extend": { "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "license": "MIT", "engines": { "node": ">=4.0.0" } }, "node_modules/dequal": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/detect-libc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", - "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "version": "2.1.2", + "license": "Apache-2.0", "engines": { "node": ">=8" } }, "node_modules/deterministic-object-hash": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/deterministic-object-hash/-/deterministic-object-hash-2.0.2.tgz", - "integrity": "sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ==", + "license": "MIT", "dependencies": { "base-64": "^1.0.0" }, @@ -3754,14 +2661,12 @@ } }, "node_modules/devalue": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.0.0.tgz", - "integrity": "sha512-gO+/OMXF7488D+u3ue+G7Y4AA3ZmUnB3eHJXmBTgNHvr4ZNzl36A0ZtG+XCRNYCkYx/bFmw4qtkoFLa+wSrwAA==" + "version": "5.5.0", + "license": "MIT" }, "node_modules/devlop": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", - "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "license": "MIT", "dependencies": { "dequal": "^2.0.0" }, @@ -3772,16 +2677,14 @@ }, "node_modules/diff": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", - "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" } }, "node_modules/direction": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/direction/-/direction-2.0.1.tgz", - "integrity": "sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==", + "license": "MIT", "bin": { "direction": "cli.js" }, @@ -3792,31 +2695,22 @@ }, "node_modules/dlv": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" + "license": "MIT" }, "node_modules/dset": { "version": "3.1.4", - "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.4.tgz", - "integrity": "sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==", + "license": "MIT", "engines": { "node": ">=4" } }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" - }, "node_modules/electron-to-chromium": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.4.tgz", - "integrity": "sha512-orzA81VqLyIGUEA77YkVA1D+N+nNfl2isJVjjmOyrlxuooZ19ynb+dOlaDTqd/idKRS9lDCSBmtzM+kyCsMnkA==" + "version": "1.5.263", + "license": "ISC" }, "node_modules/emmet": { - "version": "2.4.7", - "resolved": "https://registry.npmjs.org/emmet/-/emmet-2.4.7.tgz", - "integrity": "sha512-O5O5QNqtdlnQM2bmKHtJgyChcrFMgQuulI+WdiOw2NArzprUqqxUW6bgYtKvzKgrsYpuLWalOkdhNP+1jluhCA==", + "version": "2.4.11", + "license": "MIT", "workspaces": [ "./packages/scanner", "./packages/abbreviation", @@ -3829,22 +2723,23 @@ } }, "node_modules/emoji-regex": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz", - "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==" + "version": "10.6.0", + "license": "MIT" + }, + "node_modules/emoji-regex-xs": { + "version": "1.0.0", + "license": "MIT" }, "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "version": "1.4.5", + "license": "MIT", "dependencies": { "once": "^1.4.0" } }, "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "version": "6.0.1", + "license": "BSD-2-Clause", "engines": { "node": ">=0.12" }, @@ -3853,15 +2748,41 @@ } }, "node_modules/es-module-lexer": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", - "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==" + "version": "1.7.0", + "license": "MIT" + }, + "node_modules/esast-util-from-estree": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/esast-util-from-js": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "acorn": "^8.0.0", + "esast-util-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, "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==", "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -3895,25 +2816,25 @@ } }, "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "version": "3.2.0", + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "version": "5.0.0", + "license": "MIT", "engines": { - "node": ">=0.8.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/esprima": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -3924,8 +2845,7 @@ }, "node_modules/estree-util-attach-comments": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz", - "integrity": "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==", + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0" }, @@ -3936,8 +2856,7 @@ }, "node_modules/estree-util-build-jsx": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz", - "integrity": "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==", + "license": "MIT", "dependencies": { "@types/estree-jsx": "^1.0.0", "devlop": "^1.0.0", @@ -3951,8 +2870,19 @@ }, "node_modules/estree-util-is-identifier-name": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", - "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-scope": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0" + }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" @@ -3960,8 +2890,7 @@ }, "node_modules/estree-util-to-js": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz", - "integrity": "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==", + "license": "MIT", "dependencies": { "@types/estree-jsx": "^1.0.0", "astring": "^1.8.0", @@ -3974,8 +2903,7 @@ }, "node_modules/estree-util-visit": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz", - "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==", + "license": "MIT", "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/unist": "^3.0.0" @@ -3987,51 +2915,32 @@ }, "node_modules/estree-walker": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0" } }, "node_modules/eventemitter3": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" + "license": "MIT" }, - "node_modules/execa": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "node_modules/events-universal": { + "version": "1.0.1", + "license": "Apache-2.0", "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" - }, - "engines": { - "node": ">=16.17" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "bare-events": "^2.7.0" } }, "node_modules/expand-template": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", - "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "license": "(MIT OR WTFPL)", "engines": { "node": ">=6" } }, "node_modules/expressive-code": { "version": "0.33.5", - "resolved": "https://registry.npmjs.org/expressive-code/-/expressive-code-0.33.5.tgz", - "integrity": "sha512-UPg2jSvZEfXPiCa4MKtMoMQ5Hwiv7In5/LSCa/ukhjzZqPO48iVsCcEBgXWEUmEAQ02P0z00/xFfBmVnUKH+Zw==", + "license": "MIT", "dependencies": { "@expressive-code/core": "^0.33.5", "@expressive-code/plugin-frames": "^0.33.5", @@ -4041,13 +2950,11 @@ }, "node_modules/extend": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "license": "MIT" }, "node_modules/extend-shallow": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "license": "MIT", "dependencies": { "is-extendable": "^0.1.0" }, @@ -4055,38 +2962,52 @@ "node": ">=0.10.0" } }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "license": "MIT" + }, "node_modules/fast-fifo": { "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", - "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==" + "license": "MIT" }, "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==", + "version": "3.3.3", + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "micromatch": "^4.0.8" }, "engines": { "node": ">=8.6.0" } }, + "node_modules/fast-uri": { + "version": "3.1.0", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, "node_modules/fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "version": "1.19.1", + "license": "ISC", "dependencies": { "reusify": "^1.0.4" } }, "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==", + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -4096,8 +3017,7 @@ }, "node_modules/find-up": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -4107,9 +3027,8 @@ } }, "node_modules/find-up-simple": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.0.tgz", - "integrity": "sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==", + "version": "1.0.1", + "license": "MIT", "engines": { "node": ">=18" }, @@ -4119,8 +3038,7 @@ }, "node_modules/find-yarn-workspace-root2": { "version": "1.2.16", - "resolved": "https://registry.npmjs.org/find-yarn-workspace-root2/-/find-yarn-workspace-root2-1.2.16.tgz", - "integrity": "sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==", + "license": "Apache-2.0", "dependencies": { "micromatch": "^4.0.2", "pkg-dir": "^4.2.0" @@ -4128,50 +3046,32 @@ }, "node_modules/flattie": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flattie/-/flattie-1.1.1.tgz", - "integrity": "sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/fs-constants": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } + "license": "MIT" }, "node_modules/gensync": { "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/get-caller-file": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" } }, "node_modules/get-east-asian-width": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz", - "integrity": "sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==", + "version": "1.4.0", + "license": "MIT", "engines": { "node": ">=18" }, @@ -4179,31 +3079,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/get-stream": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/github-from-package": { "version": "0.0.0", - "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==" + "license": "MIT" }, "node_modules/github-slugger": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", - "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==" + "license": "ISC" }, "node_modules/glob-parent": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -4211,23 +3097,13 @@ "node": ">= 6" } }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "engines": { - "node": ">=4" - } - }, "node_modules/graceful-fs": { "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + "license": "ISC" }, "node_modules/gray-matter": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", - "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", + "license": "MIT", "dependencies": { "js-yaml": "^3.13.1", "kind-of": "^6.0.2", @@ -4240,16 +3116,14 @@ }, "node_modules/gray-matter/node_modules/argparse": { "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "license": "MIT", "dependencies": { "sprintf-js": "~1.0.2" } }, "node_modules/gray-matter/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "version": "3.14.2", + "license": "MIT", "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -4258,18 +3132,9 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "engines": { - "node": ">=4" - } - }, "node_modules/hast-util-from-html": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-2.0.1.tgz", - "integrity": "sha512-RXQBLMl9kjKVNkJTIO6bZyb2n+cUH8LFaSSzo82jiLT6Tfc+Pt7VQCS+/h3YwG4jaNE2TA2sdJisGWR+aJrp0g==", + "version": "2.0.3", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "devlop": "^1.1.0", @@ -4284,15 +3149,14 @@ } }, "node_modules/hast-util-from-parse5": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.1.tgz", - "integrity": "sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==", + "version": "8.0.3", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "devlop": "^1.0.0", - "hastscript": "^8.0.0", - "property-information": "^6.0.0", + "hastscript": "^9.0.0", + "property-information": "^7.0.0", "vfile": "^6.0.0", "vfile-location": "^5.0.0", "web-namespaces": "^2.0.0" @@ -4302,10 +3166,24 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/hast-util-from-parse5/node_modules/hastscript": { + "version": "9.0.1", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^4.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/hast-util-has-property": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hast-util-has-property/-/hast-util-has-property-3.0.0.tgz", - "integrity": "sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0" }, @@ -4316,8 +3194,7 @@ }, "node_modules/hast-util-is-element": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz", - "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0" }, @@ -4328,8 +3205,7 @@ }, "node_modules/hast-util-parse-selector": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", - "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0" }, @@ -4339,9 +3215,8 @@ } }, "node_modules/hast-util-raw": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.0.4.tgz", - "integrity": "sha512-LHE65TD2YiNsHD3YuXcKPHXPLuYh/gjp12mOfU8jxSrm1f/yJpsb0F/KKljS6U9LJoP0Ux+tCe8iJ2AsPzTdgA==", + "version": "9.1.0", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", @@ -4363,9 +3238,8 @@ } }, "node_modules/hast-util-select": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/hast-util-select/-/hast-util-select-6.0.2.tgz", - "integrity": "sha512-hT/SD/d/Meu+iobvgkffo1QecV8WeKWxwsNMzcTJsKw1cKTQKSR/7ArJeURLNJF9HDjp9nVoORyNNJxrvBye8Q==", + "version": "6.0.4", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", @@ -4377,9 +3251,8 @@ "hast-util-has-property": "^3.0.0", "hast-util-to-string": "^3.0.0", "hast-util-whitespace": "^3.0.0", - "not": "^0.1.0", "nth-check": "^2.0.0", - "property-information": "^6.0.0", + "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", "unist-util-visit": "^5.0.0", "zwitch": "^2.0.0" @@ -4390,9 +3263,8 @@ } }, "node_modules/hast-util-to-estree": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.0.tgz", - "integrity": "sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==", + "version": "3.1.3", + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "@types/estree-jsx": "^1.0.0", @@ -4405,9 +3277,9 @@ "mdast-util-mdx-expression": "^2.0.0", "mdast-util-mdx-jsx": "^3.0.0", "mdast-util-mdxjs-esm": "^2.0.0", - "property-information": "^6.0.0", + "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", - "style-to-object": "^0.4.0", + "style-to-js": "^1.0.0", "unist-util-position": "^5.0.0", "zwitch": "^2.0.0" }, @@ -4417,19 +3289,17 @@ } }, "node_modules/hast-util-to-html": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.1.tgz", - "integrity": "sha512-hZOofyZANbyWo+9RP75xIDV/gq+OUKx+T46IlwERnKmfpwp81XBFbT9mi26ws+SJchA4RVUQwIBJpqEOBhMzEQ==", + "version": "9.0.5", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "ccount": "^2.0.0", "comma-separated-tokens": "^2.0.0", - "hast-util-raw": "^9.0.0", "hast-util-whitespace": "^3.0.0", "html-void-elements": "^3.0.0", "mdast-util-to-hast": "^13.0.0", - "property-information": "^6.0.0", + "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", "stringify-entities": "^4.0.0", "zwitch": "^2.0.4" @@ -4440,9 +3310,8 @@ } }, "node_modules/hast-util-to-jsx-runtime": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.0.tgz", - "integrity": "sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==", + "version": "2.3.6", + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "@types/hast": "^3.0.0", @@ -4454,9 +3323,9 @@ "mdast-util-mdx-expression": "^2.0.0", "mdast-util-mdx-jsx": "^3.0.0", "mdast-util-mdxjs-esm": "^2.0.0", - "property-information": "^6.0.0", + "property-information": "^7.0.0", "space-separated-tokens": "^2.0.0", - "style-to-object": "^1.0.0", + "style-to-js": "^1.0.0", "unist-util-position": "^5.0.0", "vfile-message": "^4.0.0" }, @@ -4465,23 +3334,9 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/hast-util-to-jsx-runtime/node_modules/inline-style-parser": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.3.tgz", - "integrity": "sha512-qlD8YNDqyTKTyuITrDOffsl6Tdhv+UC4hcdAVuQsK4IMQ99nSgd1MIA/Q+jQYoh9r3hVUXhYh7urSRmXPkW04g==" - }, - "node_modules/hast-util-to-jsx-runtime/node_modules/style-to-object": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.6.tgz", - "integrity": "sha512-khxq+Qm3xEyZfKd/y9L3oIWQimxuc4STrQKtQn8aSDRHb8mFgpukgX1hdzfrMEW6JCjyJ8p89x+IUMVnCBI1PA==", - "dependencies": { - "inline-style-parser": "0.2.3" - } - }, "node_modules/hast-util-to-parse5": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz", - "integrity": "sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "comma-separated-tokens": "^2.0.0", @@ -4496,10 +3351,17 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/hast-util-to-parse5/node_modules/property-information": { + "version": "6.5.0", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/hast-util-to-string": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-3.0.0.tgz", - "integrity": "sha512-OGkAxX1Ua3cbcW6EJ5pT/tslVb90uViVkcJ4ZZIMW/R33DX/AkcJcRrPebPwJkHYwlDHXz4aIwvAAaAdtrACFA==", + "version": "3.0.1", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0" }, @@ -4510,8 +3372,7 @@ }, "node_modules/hast-util-to-text": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-4.0.2.tgz", - "integrity": "sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", @@ -4525,8 +3386,7 @@ }, "node_modules/hast-util-whitespace": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", - "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0" }, @@ -4537,8 +3397,7 @@ }, "node_modules/hastscript": { "version": "8.0.0", - "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-8.0.0.tgz", - "integrity": "sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "comma-separated-tokens": "^2.0.0", @@ -4551,37 +3410,32 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/hastscript/node_modules/property-information": { + "version": "6.5.0", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/html-escaper": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-3.0.3.tgz", - "integrity": "sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==" + "license": "MIT" }, "node_modules/html-void-elements": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", - "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, "node_modules/http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" - }, - "node_modules/human-signals": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", - "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", - "engines": { - "node": ">=16.17.0" - } + "version": "4.2.0", + "license": "BSD-2-Clause" }, "node_modules/ieee754": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "funding": [ { "type": "github", @@ -4595,12 +3449,12 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "BSD-3-Clause" }, "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==", + "version": "4.2.0", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -4608,23 +3462,19 @@ }, "node_modules/inherits": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "license": "ISC" }, "node_modules/ini": { "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + "license": "ISC" }, "node_modules/inline-style-parser": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", - "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" + "version": "0.2.7", + "license": "MIT" }, "node_modules/is-alphabetical": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", - "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -4632,8 +3482,7 @@ }, "node_modules/is-alphanumerical": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", - "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "license": "MIT", "dependencies": { "is-alphabetical": "^2.0.0", "is-decimal": "^2.0.0" @@ -4644,14 +3493,12 @@ } }, "node_modules/is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + "version": "0.3.4", + "license": "MIT" }, "node_modules/is-binary-path": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" }, @@ -4661,8 +3508,6 @@ }, "node_modules/is-buffer": { "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", "funding": [ { "type": "github", @@ -4677,14 +3522,14 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/is-decimal": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", - "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -4692,8 +3537,7 @@ }, "node_modules/is-docker": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", - "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "license": "MIT", "bin": { "is-docker": "cli.js" }, @@ -4706,32 +3550,28 @@ }, "node_modules/is-extendable": { "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-extglob": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", "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==", + "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -4741,8 +3581,7 @@ }, "node_modules/is-hexadecimal": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", - "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -4750,8 +3589,7 @@ }, "node_modules/is-inside-container": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", - "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "license": "MIT", "dependencies": { "is-docker": "^3.0.0" }, @@ -4767,8 +3605,7 @@ }, "node_modules/is-interactive": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", - "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", + "license": "MIT", "engines": { "node": ">=12" }, @@ -4778,16 +3615,14 @@ }, "node_modules/is-number": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", "engines": { "node": ">=0.12.0" } }, "node_modules/is-plain-obj": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", - "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "license": "MIT", "engines": { "node": ">=12" }, @@ -4795,29 +3630,9 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-reference": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.2.tgz", - "integrity": "sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==", - "dependencies": { - "@types/estree": "*" - } - }, - "node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-unicode-supported": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.0.0.tgz", - "integrity": "sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==", + "version": "2.1.0", + "license": "MIT", "engines": { "node": ">=18" }, @@ -4827,8 +3642,7 @@ }, "node_modules/is-wsl": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", - "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "license": "MIT", "dependencies": { "is-inside-container": "^1.0.0" }, @@ -4839,20 +3653,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, "node_modules/js-tokens": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + "license": "MIT" }, "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -4861,20 +3668,22 @@ } }, "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "version": "3.1.0", + "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, "engines": { - "node": ">=4" + "node": ">=6" } }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "license": "MIT" + }, "node_modules/json5": { "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "license": "MIT", "bin": { "json5": "lib/cli.js" }, @@ -4884,29 +3693,25 @@ }, "node_modules/jsonc-parser": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.3.1.tgz", - "integrity": "sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==" + "license": "MIT" }, "node_modules/kind-of": { "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "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==", + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/load-yaml-file": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/load-yaml-file/-/load-yaml-file-0.2.0.tgz", - "integrity": "sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==", + "license": "MIT", "dependencies": { "graceful-fs": "^4.1.5", "js-yaml": "^3.13.0", @@ -4919,16 +3724,14 @@ }, "node_modules/load-yaml-file/node_modules/argparse": { "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "license": "MIT", "dependencies": { "sprintf-js": "~1.0.2" } }, "node_modules/load-yaml-file/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "version": "3.14.2", + "license": "MIT", "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -4939,8 +3742,7 @@ }, "node_modules/locate-path": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, @@ -4948,10 +3750,13 @@ "node": ">=8" } }, + "node_modules/lodash": { + "version": "4.17.21", + "license": "MIT" + }, "node_modules/log-symbols": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz", - "integrity": "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==", + "license": "MIT", "dependencies": { "chalk": "^5.3.0", "is-unicode-supported": "^1.3.0" @@ -4963,21 +3768,9 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/log-symbols/node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, "node_modules/log-symbols/node_modules/is-unicode-supported": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", - "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", + "license": "MIT", "engines": { "node": ">=12" }, @@ -4987,8 +3780,7 @@ }, "node_modules/longest-streak": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", - "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -4996,24 +3788,30 @@ }, "node_modules/lru-cache": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "license": "ISC", "dependencies": { "yallist": "^3.0.2" } }, "node_modules/magic-string": { - "version": "0.30.11", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz", - "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==", + "version": "0.30.21", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/magicast": { + "version": "0.3.5", + "license": "MIT", "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0" + "@babel/parser": "^7.25.4", + "@babel/types": "^7.25.4", + "source-map-js": "^1.2.0" } }, "node_modules/markdown-extensions": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz", - "integrity": "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==", + "license": "MIT", "engines": { "node": ">=16" }, @@ -5022,9 +3820,8 @@ } }, "node_modules/markdown-table": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.3.tgz", - "integrity": "sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==", + "version": "3.0.4", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -5032,8 +3829,7 @@ }, "node_modules/mdast-util-definitions": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-6.0.0.tgz", - "integrity": "sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", @@ -5045,12 +3841,12 @@ } }, "node_modules/mdast-util-directive": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-directive/-/mdast-util-directive-3.0.0.tgz", - "integrity": "sha512-JUpYOqKI4mM3sZcNxmF/ox04XYFFkNwr0CFlrQIkCwbvH0xzMCqkMqAde9wRd80VAhaUrwFwKm2nxretdT1h7Q==", + "version": "3.1.0", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", + "ccount": "^2.0.0", "devlop": "^1.0.0", "mdast-util-from-markdown": "^2.0.0", "mdast-util-to-markdown": "^2.0.0", @@ -5064,35 +3860,22 @@ } }, "node_modules/mdast-util-find-and-replace": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.1.tgz", - "integrity": "sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==", + "version": "3.0.2", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", - "escape-string-regexp": "^5.0.0", - "unist-util-is": "^6.0.0", - "unist-util-visit-parents": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "engines": { - "node": ">=12" + "escape-string-regexp": "^5.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, "node_modules/mdast-util-from-markdown": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.1.tgz", - "integrity": "sha512-aJEUyzZ6TzlsX2s5B4Of7lN7EQtAxvtradMMglCQDyaTFgse6CmtmdJ15ElnVRlCg1vpNyVtbem0PWzlNieZsA==", + "version": "2.0.2", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", @@ -5113,9 +3896,8 @@ } }, "node_modules/mdast-util-gfm": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.0.0.tgz", - "integrity": "sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==", + "version": "3.1.0", + "license": "MIT", "dependencies": { "mdast-util-from-markdown": "^2.0.0", "mdast-util-gfm-autolink-literal": "^2.0.0", @@ -5131,9 +3913,8 @@ } }, "node_modules/mdast-util-gfm-autolink-literal": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.0.tgz", - "integrity": "sha512-FyzMsduZZHSc3i0Px3PQcBT4WJY/X/RCtEJKuybiC6sjPqLv7h1yqAkmILZtuxMSsUyaLUWNp71+vQH2zqp5cg==", + "version": "2.0.1", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "ccount": "^2.0.0", @@ -5147,9 +3928,8 @@ } }, "node_modules/mdast-util-gfm-footnote": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.0.0.tgz", - "integrity": "sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==", + "version": "2.1.0", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.1.0", @@ -5164,8 +3944,7 @@ }, "node_modules/mdast-util-gfm-strikethrough": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", - "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-from-markdown": "^2.0.0", @@ -5178,8 +3957,7 @@ }, "node_modules/mdast-util-gfm-table": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", - "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", @@ -5194,8 +3972,7 @@ }, "node_modules/mdast-util-gfm-task-list-item": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", - "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "devlop": "^1.0.0", @@ -5209,8 +3986,7 @@ }, "node_modules/mdast-util-mdx": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz", - "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==", + "license": "MIT", "dependencies": { "mdast-util-from-markdown": "^2.0.0", "mdast-util-mdx-expression": "^2.0.0", @@ -5224,9 +4000,8 @@ } }, "node_modules/mdast-util-mdx-expression": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.0.tgz", - "integrity": "sha512-fGCu8eWdKUKNu5mohVGkhBXCXGnOTLuFqOvGMvdikr+J1w7lDJgxThOKpwRWzzbyXAU2hhSwsmssOY4yTokluw==", + "version": "2.0.1", + "license": "MIT", "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", @@ -5241,9 +4016,8 @@ } }, "node_modules/mdast-util-mdx-jsx": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.1.2.tgz", - "integrity": "sha512-eKMQDeywY2wlHc97k5eD8VC+9ASMjN8ItEZQNGwJ6E0XWKiW/Z0V5/H8pvoXUf+y+Mj0VIgeRRbujBmFn4FTyA==", + "version": "3.2.0", + "license": "MIT", "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", @@ -5255,7 +4029,6 @@ "mdast-util-to-markdown": "^2.0.0", "parse-entities": "^4.0.0", "stringify-entities": "^4.0.0", - "unist-util-remove-position": "^5.0.0", "unist-util-stringify-position": "^4.0.0", "vfile-message": "^4.0.0" }, @@ -5266,8 +4039,7 @@ }, "node_modules/mdast-util-mdxjs-esm": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", - "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", + "license": "MIT", "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", @@ -5283,8 +4055,7 @@ }, "node_modules/mdast-util-phrasing": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", - "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "unist-util-is": "^6.0.0" @@ -5295,9 +4066,8 @@ } }, "node_modules/mdast-util-to-hast": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", - "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==", + "version": "13.2.1", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", @@ -5315,15 +4085,15 @@ } }, "node_modules/mdast-util-to-markdown": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.0.tgz", - "integrity": "sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==", + "version": "2.1.2", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "@types/unist": "^3.0.0", "longest-streak": "^3.0.0", "mdast-util-phrasing": "^4.0.0", "mdast-util-to-string": "^4.0.0", + "micromark-util-classify-character": "^2.0.0", "micromark-util-decode-string": "^2.0.0", "unist-util-visit": "^5.0.0", "zwitch": "^2.0.0" @@ -5335,8 +4105,7 @@ }, "node_modules/mdast-util-to-string": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", - "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0" }, @@ -5345,23 +4114,15 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" - }, "node_modules/merge2": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/micromark": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz", - "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==", + "version": "4.0.2", "funding": [ { "type": "GitHub Sponsors", @@ -5372,6 +4133,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "@types/debug": "^4.0.0", "debug": "^4.0.0", @@ -5393,9 +4155,7 @@ } }, "node_modules/micromark-core-commonmark": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.1.tgz", - "integrity": "sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==", + "version": "2.0.3", "funding": [ { "type": "GitHub Sponsors", @@ -5406,6 +4166,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", @@ -5426,9 +4187,8 @@ } }, "node_modules/micromark-extension-directive": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/micromark-extension-directive/-/micromark-extension-directive-3.0.1.tgz", - "integrity": "sha512-VGV2uxUzhEZmaP7NSFo2vtq7M2nUD+WfmYQD+d8i/1nHbzE+rMy9uzTvUybBbNiVbrhOZibg3gbyoARGqgDWyg==", + "version": "3.0.2", + "license": "MIT", "dependencies": { "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", @@ -5445,8 +4205,7 @@ }, "node_modules/micromark-extension-gfm": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", - "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", + "license": "MIT", "dependencies": { "micromark-extension-gfm-autolink-literal": "^2.0.0", "micromark-extension-gfm-footnote": "^2.0.0", @@ -5464,8 +4223,7 @@ }, "node_modules/micromark-extension-gfm-autolink-literal": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", - "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", + "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-sanitize-uri": "^2.0.0", @@ -5479,8 +4237,7 @@ }, "node_modules/micromark-extension-gfm-footnote": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", - "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", + "license": "MIT", "dependencies": { "devlop": "^1.0.0", "micromark-core-commonmark": "^2.0.0", @@ -5498,8 +4255,7 @@ }, "node_modules/micromark-extension-gfm-strikethrough": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz", - "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==", + "license": "MIT", "dependencies": { "devlop": "^1.0.0", "micromark-util-chunked": "^2.0.0", @@ -5514,9 +4270,8 @@ } }, "node_modules/micromark-extension-gfm-table": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.0.tgz", - "integrity": "sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g==", + "version": "2.1.1", + "license": "MIT", "dependencies": { "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", @@ -5531,8 +4286,7 @@ }, "node_modules/micromark-extension-gfm-tagfilter": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", - "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", + "license": "MIT", "dependencies": { "micromark-util-types": "^2.0.0" }, @@ -5543,8 +4297,7 @@ }, "node_modules/micromark-extension-gfm-task-list-item": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz", - "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==", + "license": "MIT", "dependencies": { "devlop": "^1.0.0", "micromark-factory-space": "^2.0.0", @@ -5558,9 +4311,7 @@ } }, "node_modules/micromark-extension-mdx-expression": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.0.tgz", - "integrity": "sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==", + "version": "3.0.1", "funding": [ { "type": "GitHub Sponsors", @@ -5571,6 +4322,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", @@ -5583,17 +4335,16 @@ } }, "node_modules/micromark-extension-mdx-jsx": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.0.tgz", - "integrity": "sha512-uvhhss8OGuzR4/N17L1JwvmJIpPhAd8oByMawEKx6NVdBCbesjH4t+vjEp3ZXft9DwvlKSD07fCeI44/N0Vf2w==", + "version": "3.0.2", + "license": "MIT", "dependencies": { - "@types/acorn": "^4.0.0", "@types/estree": "^1.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "micromark-factory-mdx-expression": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "vfile-message": "^4.0.0" @@ -5605,8 +4356,7 @@ }, "node_modules/micromark-extension-mdx-md": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz", - "integrity": "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==", + "license": "MIT", "dependencies": { "micromark-util-types": "^2.0.0" }, @@ -5617,8 +4367,7 @@ }, "node_modules/micromark-extension-mdxjs": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz", - "integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==", + "license": "MIT", "dependencies": { "acorn": "^8.0.0", "acorn-jsx": "^5.0.0", @@ -5636,8 +4385,7 @@ }, "node_modules/micromark-extension-mdxjs-esm": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz", - "integrity": "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==", + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", @@ -5655,9 +4403,7 @@ } }, "node_modules/micromark-factory-destination": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz", - "integrity": "sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==", + "version": "2.0.1", "funding": [ { "type": "GitHub Sponsors", @@ -5668,6 +4414,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", @@ -5675,9 +4422,7 @@ } }, "node_modules/micromark-factory-label": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz", - "integrity": "sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==", + "version": "2.0.1", "funding": [ { "type": "GitHub Sponsors", @@ -5688,6 +4433,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "devlop": "^1.0.0", "micromark-util-character": "^2.0.0", @@ -5696,9 +4442,7 @@ } }, "node_modules/micromark-factory-mdx-expression": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.1.tgz", - "integrity": "sha512-F0ccWIUHRLRrYp5TC9ZYXmZo+p2AM13ggbsW4T0b5CRKP8KHVRB8t4pwtBgTxtjRmwrK0Irwm7vs2JOZabHZfg==", + "version": "2.0.3", "funding": [ { "type": "GitHub Sponsors", @@ -5709,9 +4453,11 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-events-to-acorn": "^2.0.0", "micromark-util-symbol": "^2.0.0", @@ -5721,9 +4467,7 @@ } }, "node_modules/micromark-factory-space": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.0.tgz", - "integrity": "sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==", + "version": "2.0.1", "funding": [ { "type": "GitHub Sponsors", @@ -5734,15 +4478,14 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "node_modules/micromark-factory-title": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz", - "integrity": "sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==", + "version": "2.0.1", "funding": [ { "type": "GitHub Sponsors", @@ -5753,6 +4496,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", @@ -5761,9 +4505,7 @@ } }, "node_modules/micromark-factory-whitespace": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz", - "integrity": "sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==", + "version": "2.0.1", "funding": [ { "type": "GitHub Sponsors", @@ -5774,6 +4516,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", @@ -5782,9 +4525,7 @@ } }, "node_modules/micromark-util-character": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", - "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", + "version": "2.1.1", "funding": [ { "type": "GitHub Sponsors", @@ -5795,15 +4536,14 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "node_modules/micromark-util-chunked": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz", - "integrity": "sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==", + "version": "2.0.1", "funding": [ { "type": "GitHub Sponsors", @@ -5814,14 +4554,13 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0" } }, "node_modules/micromark-util-classify-character": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz", - "integrity": "sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==", + "version": "2.0.1", "funding": [ { "type": "GitHub Sponsors", @@ -5832,6 +4571,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-symbol": "^2.0.0", @@ -5839,9 +4579,7 @@ } }, "node_modules/micromark-util-combine-extensions": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz", - "integrity": "sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==", + "version": "2.0.1", "funding": [ { "type": "GitHub Sponsors", @@ -5852,15 +4590,14 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-chunked": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "node_modules/micromark-util-decode-numeric-character-reference": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz", - "integrity": "sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==", + "version": "2.0.2", "funding": [ { "type": "GitHub Sponsors", @@ -5871,14 +4608,13 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0" } }, "node_modules/micromark-util-decode-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz", - "integrity": "sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==", + "version": "2.0.1", "funding": [ { "type": "GitHub Sponsors", @@ -5889,6 +4625,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "decode-named-character-reference": "^1.0.0", "micromark-util-character": "^2.0.0", @@ -5897,9 +4634,7 @@ } }, "node_modules/micromark-util-encode": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", - "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", + "version": "2.0.1", "funding": [ { "type": "GitHub Sponsors", @@ -5909,12 +4644,11 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "license": "MIT" }, "node_modules/micromark-util-events-to-acorn": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.2.tgz", - "integrity": "sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==", + "version": "2.0.3", "funding": [ { "type": "GitHub Sponsors", @@ -5925,8 +4659,8 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { - "@types/acorn": "^4.0.0", "@types/estree": "^1.0.0", "@types/unist": "^3.0.0", "devlop": "^1.0.0", @@ -5937,9 +4671,7 @@ } }, "node_modules/micromark-util-html-tag-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz", - "integrity": "sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==", + "version": "2.0.1", "funding": [ { "type": "GitHub Sponsors", @@ -5949,12 +4681,11 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "license": "MIT" }, "node_modules/micromark-util-normalize-identifier": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz", - "integrity": "sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==", + "version": "2.0.1", "funding": [ { "type": "GitHub Sponsors", @@ -5965,14 +4696,13 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-symbol": "^2.0.0" } }, "node_modules/micromark-util-resolve-all": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz", - "integrity": "sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==", + "version": "2.0.1", "funding": [ { "type": "GitHub Sponsors", @@ -5983,14 +4713,13 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-types": "^2.0.0" } }, "node_modules/micromark-util-sanitize-uri": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", - "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", + "version": "2.0.1", "funding": [ { "type": "GitHub Sponsors", @@ -6001,6 +4730,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "micromark-util-character": "^2.0.0", "micromark-util-encode": "^2.0.0", @@ -6008,9 +4738,7 @@ } }, "node_modules/micromark-util-subtokenize": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz", - "integrity": "sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==", + "version": "2.1.0", "funding": [ { "type": "GitHub Sponsors", @@ -6021,6 +4749,7 @@ "url": "https://opencollective.com/unified" } ], + "license": "MIT", "dependencies": { "devlop": "^1.0.0", "micromark-util-chunked": "^2.0.0", @@ -6029,9 +4758,7 @@ } }, "node_modules/micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "version": "2.0.1", "funding": [ { "type": "GitHub Sponsors", @@ -6041,12 +4768,11 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "license": "MIT" }, "node_modules/micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "version": "2.0.2", "funding": [ { "type": "GitHub Sponsors", @@ -6056,12 +4782,12 @@ "type": "OpenCollective", "url": "https://opencollective.com/unified" } - ] + ], + "license": "MIT" }, "node_modules/micromatch": { "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "license": "MIT", "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" @@ -6070,12 +4796,21 @@ "node": ">=8.6" } }, - "node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.1", + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/mimic-function": { + "version": "5.0.1", + "license": "MIT", + "engines": { + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -6083,8 +4818,7 @@ }, "node_modules/mimic-response": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -6094,45 +4828,39 @@ }, "node_modules/minimist": { "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/mkdirp-classic": { "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" + "license": "MIT" }, "node_modules/mrmime": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", - "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", + "version": "2.0.1", + "license": "MIT", "engines": { "node": ">=10" } }, "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "version": "2.1.3", + "license": "MIT" }, "node_modules/muggle-string": { "version": "0.4.1", - "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.4.1.tgz", - "integrity": "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==" + "license": "MIT" }, "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "version": "3.3.11", "funding": [ { "type": "github", "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -6141,14 +4869,19 @@ } }, "node_modules/napi-build-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", - "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" + "version": "2.0.0", + "license": "MIT" + }, + "node_modules/neotraverse": { + "version": "0.6.18", + "license": "MIT", + "engines": { + "node": ">= 10" + } }, "node_modules/nlcst-to-string": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-3.1.1.tgz", - "integrity": "sha512-63mVyqaqt0cmn2VcI2aH6kxe1rLAmSROqHMA0i4qqg1tidkfExgpb0FGMikMCn86mw5dFtBtEANfmSSK7TjNHw==", + "license": "MIT", "dependencies": { "@types/nlcst": "^1.0.0" }, @@ -6158,9 +4891,8 @@ } }, "node_modules/node-abi": { - "version": "3.65.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.65.0.tgz", - "integrity": "sha512-ThjYBfoDNr08AWx6hGaRbfPwxKV9kVzAzOzlLKbk2CuqXE2xnCh+cbAGnwM3t8Lq4v9rUB7VfondlkBckcJrVA==", + "version": "3.85.0", + "license": "MIT", "dependencies": { "semver": "^7.3.5" }, @@ -6170,56 +4902,22 @@ }, "node_modules/node-addon-api": { "version": "6.1.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz", - "integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==" + "license": "MIT" }, "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==" + "version": "2.0.27", + "license": "MIT" }, "node_modules/normalize-path": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/not": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/not/-/not-0.1.0.tgz", - "integrity": "sha512-5PDmaAsVfnWUgTUbJ3ERwn7u79Z0dYxN9ErxCpVJJqe2RK0PJ3z+iFUxuqjwtlDDegXvtWoxD/3Fzxox7tFGWA==" - }, - "node_modules/npm-run-path": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", - "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", - "dependencies": { - "path-key": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm-run-path/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/nth-check": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0" }, @@ -6229,39 +4927,45 @@ }, "node_modules/once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", "dependencies": { "wrappy": "1" } }, "node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "version": "7.0.0", + "license": "MIT", "dependencies": { - "mimic-fn": "^4.0.0" + "mimic-function": "^5.0.0" }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/oniguruma-to-es": { + "version": "2.3.0", + "license": "MIT", + "dependencies": { + "emoji-regex-xs": "^1.0.0", + "regex": "^5.1.1", + "regex-recursion": "^5.1.1" + } + }, "node_modules/ora": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-8.0.1.tgz", - "integrity": "sha512-ANIvzobt1rls2BDny5fWZ3ZVKyD6nscLvfFRpQgfWsythlcsVUC9kL0zq6j2Z5z9wwp1kd7wpsD/T9qNPVLCaQ==", + "version": "8.2.0", + "license": "MIT", "dependencies": { "chalk": "^5.3.0", - "cli-cursor": "^4.0.0", + "cli-cursor": "^5.0.0", "cli-spinners": "^2.9.2", "is-interactive": "^2.0.0", "is-unicode-supported": "^2.0.0", "log-symbols": "^6.0.0", - "stdin-discarder": "^0.2.1", - "string-width": "^7.0.0", + "stdin-discarder": "^0.2.2", + "string-width": "^7.2.0", "strip-ansi": "^7.1.0" }, "engines": { @@ -6271,21 +4975,9 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ora/node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, "node_modules/p-limit": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-6.1.0.tgz", - "integrity": "sha512-H0jc0q1vOzlEk0TqAKXKZxdl7kX3OFUzCnNVUnq5Pc3DGo0kpeaMuPqxQn235HibwBEb0/pm9dgKTjXy66fBkg==", + "version": "6.2.0", + "license": "MIT", "dependencies": { "yocto-queue": "^1.1.1" }, @@ -6298,8 +4990,7 @@ }, "node_modules/p-locate": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -6309,8 +5000,7 @@ }, "node_modules/p-locate/node_modules/p-limit": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -6322,9 +5012,8 @@ } }, "node_modules/p-queue": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-8.0.1.tgz", - "integrity": "sha512-NXzu9aQJTAzbBqOt2hwsR63ea7yvxJc0PwN/zobNAudYfb1B7R08SzB4TsLeSbUCuG467NhnoT0oO6w1qRO+BA==", + "version": "8.1.1", + "license": "MIT", "dependencies": { "eventemitter3": "^5.0.1", "p-timeout": "^6.1.2" @@ -6337,9 +5026,8 @@ } }, "node_modules/p-timeout": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.2.tgz", - "integrity": "sha512-UbD77BuZ9Bc9aABo74gfXhNvzC9Tx7SxtHSh1fxvx3jTLLYvmVhiQZZrJzqqU0jKbN32kb5VOKiLEQI/3bIjgQ==", + "version": "6.1.4", + "license": "MIT", "engines": { "node": ">=14.16" }, @@ -6349,34 +5037,31 @@ }, "node_modules/p-try": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/pagefind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pagefind/-/pagefind-1.1.1.tgz", - "integrity": "sha512-U2YR0dQN5B2fbIXrLtt/UXNS0yWSSYfePaad1KcBPTi0p+zRtsVjwmoPaMQgTks5DnHNbmDxyJUL5TGaLljK3A==", + "version": "1.4.0", + "license": "MIT", "bin": { "pagefind": "lib/runner/bin.cjs" }, "optionalDependencies": { - "@pagefind/darwin-arm64": "1.1.1", - "@pagefind/darwin-x64": "1.1.1", - "@pagefind/linux-arm64": "1.1.1", - "@pagefind/linux-x64": "1.1.1", - "@pagefind/windows-x64": "1.1.1" + "@pagefind/darwin-arm64": "1.4.0", + "@pagefind/darwin-x64": "1.4.0", + "@pagefind/freebsd-x64": "1.4.0", + "@pagefind/linux-arm64": "1.4.0", + "@pagefind/linux-x64": "1.4.0", + "@pagefind/windows-x64": "1.4.0" } }, "node_modules/parse-entities": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.1.tgz", - "integrity": "sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==", + "version": "4.0.2", + "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", - "character-entities": "^2.0.0", "character-entities-legacy": "^3.0.0", "character-reference-invalid": "^2.0.0", "decode-named-character-reference": "^1.0.0", @@ -6390,14 +5075,12 @@ } }, "node_modules/parse-entities/node_modules/@types/unist": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", - "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==" + "version": "2.0.11", + "license": "MIT" }, "node_modules/parse-latin": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/parse-latin/-/parse-latin-5.0.1.tgz", - "integrity": "sha512-b/K8ExXaWC9t34kKeDV8kGXBkXZ1HCSAZRYE7HR14eA1GlXX5L8iWhs8USJNhQU9q5ci413jCKF0gOyovvyRBg==", + "license": "MIT", "dependencies": { "nlcst-to-string": "^3.0.0", "unist-util-modify-children": "^3.0.0", @@ -6409,11 +5092,10 @@ } }, "node_modules/parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "version": "7.3.0", + "license": "MIT", "dependencies": { - "entities": "^4.4.0" + "entities": "^6.0.0" }, "funding": { "url": "https://github.com/inikulin/parse5?sponsor=1" @@ -6421,51 +5103,24 @@ }, "node_modules/path-browserify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" + "license": "MIT" }, "node_modules/path-exists": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/path-to-regexp": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", - "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==" - }, - "node_modules/periscopic": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz", - "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==", - "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^3.0.0", - "is-reference": "^3.0.0" - } - }, "node_modules/picocolors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", - "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==" + "version": "1.1.1", + "license": "ISC" }, "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "4.0.3", + "license": "MIT", "engines": { - "node": ">=8.6" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/jonschlinkert" @@ -6473,16 +5128,14 @@ }, "node_modules/pify": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/pkg-dir": { "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "license": "MIT", "dependencies": { "find-up": "^4.0.0" }, @@ -6491,9 +5144,7 @@ } }, "node_modules/postcss": { - "version": "8.4.47", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", - "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", + "version": "8.5.6", "funding": [ { "type": "opencollective", @@ -6508,9 +5159,10 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.1.0", + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, "engines": { @@ -6519,8 +5171,6 @@ }, "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==", "funding": [ { "type": "opencollective", @@ -6531,6 +5181,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "postcss-selector-parser": "^6.1.1" }, @@ -6542,9 +5193,8 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.1.tgz", - "integrity": "sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==", + "version": "6.1.2", + "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -6554,16 +5204,15 @@ } }, "node_modules/prebuild-install": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.2.tgz", - "integrity": "sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==", + "version": "7.1.3", + "license": "MIT", "dependencies": { "detect-libc": "^2.0.0", "expand-template": "^2.0.3", "github-from-package": "0.0.0", "minimist": "^1.2.3", "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^1.0.1", + "napi-build-utils": "^2.0.0", "node-abi": "^3.3.0", "pump": "^3.0.0", "rc": "^1.2.7", @@ -6579,9 +5228,8 @@ } }, "node_modules/prebuild-install/node_modules/tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "version": "2.1.4", + "license": "MIT", "dependencies": { "chownr": "^1.1.1", "mkdirp-classic": "^0.5.2", @@ -6591,8 +5239,7 @@ }, "node_modules/prebuild-install/node_modules/tar-stream": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "license": "MIT", "dependencies": { "bl": "^4.0.3", "end-of-stream": "^1.4.1", @@ -6605,13 +5252,12 @@ } }, "node_modules/preferred-pm": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/preferred-pm/-/preferred-pm-4.0.0.tgz", - "integrity": "sha512-gYBeFTZLu055D8Vv3cSPox/0iTPtkzxpLroSYYA7WXgRi31WCJ51Uyl8ZiPeUUjyvs2MBzK+S8v9JVUgHU/Sqw==", + "version": "4.1.1", + "license": "MIT", "dependencies": { "find-up-simple": "^1.0.0", "find-yarn-workspace-root2": "1.2.16", - "which-pm": "^3.0.0" + "which-pm": "^3.0.1" }, "engines": { "node": ">=18.12" @@ -6619,9 +5265,8 @@ }, "node_modules/prettier": { "version": "3.2.5", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", - "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", "devOptional": true, + "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" }, @@ -6634,9 +5279,8 @@ }, "node_modules/prettier-plugin-astro": { "version": "0.13.0", - "resolved": "https://registry.npmjs.org/prettier-plugin-astro/-/prettier-plugin-astro-0.13.0.tgz", - "integrity": "sha512-5HrJNnPmZqTUNoA97zn4gNQv9BgVhv+et03314WpQ9H9N8m2L9OSV798olwmG2YLXPl1iSstlJCR1zB3x5xG4g==", "devOptional": true, + "license": "MIT", "dependencies": { "@astrojs/compiler": "^1.5.5", "prettier": "^3.0.0", @@ -6648,22 +5292,19 @@ }, "node_modules/prettier-plugin-astro/node_modules/@astrojs/compiler": { "version": "1.8.2", - "resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-1.8.2.tgz", - "integrity": "sha512-o/ObKgtMzl8SlpIdzaxFnt7SATKPxu4oIP/1NL+HDJRzxfJcAkOTAb/ZKMRyULbz4q+1t2/DAebs2Z1QairkZw==", - "devOptional": true + "devOptional": true, + "license": "MIT" }, "node_modules/prismjs": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", - "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", + "version": "1.30.0", + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/prompts": { "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "license": "MIT", "dependencies": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" @@ -6674,25 +5315,22 @@ }, "node_modules/prompts/node_modules/kleur": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/property-information": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", - "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", + "version": "7.1.0", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "version": "3.0.3", + "license": "MIT", "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -6700,8 +5338,6 @@ }, "node_modules/queue-microtask": { "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "funding": [ { "type": "github", @@ -6715,55 +5351,135 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" + }, + "node_modules/rc": { + "version": "1.2.8", + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/readdirp/node_modules/picomatch": { + "version": "2.3.1", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/recma-build-jsx": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-util-build-jsx": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "node_modules/queue-tick": { + "node_modules/recma-jsx": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", - "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==" + "license": "MIT", + "dependencies": { + "acorn-jsx": "^5.0.0", + "estree-util-to-js": "^2.0.0", + "recma-parse": "^1.0.0", + "recma-stringify": "^1.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/recma-parse": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "esast-util-from-js": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "node_modules/recma-stringify": { + "version": "1.0.0", + "license": "MIT", "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" + "@types/estree": "^1.0.0", + "estree-util-to-js": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" }, - "bin": { - "rc": "cli.js" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "node_modules/regex": { + "version": "5.1.1", + "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" + "regex-utilities": "^2.3.0" } }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "node_modules/regex-recursion": { + "version": "5.1.1", + "license": "MIT", "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" + "regex": "^5.1.1", + "regex-utilities": "^2.3.0" } }, + "node_modules/regex-utilities": { + "version": "2.3.0", + "license": "MIT" + }, "node_modules/rehype": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/rehype/-/rehype-13.0.1.tgz", - "integrity": "sha512-AcSLS2mItY+0fYu9xKxOu1LhUZeBZZBx8//5HKzF+0XP+eP8+6a5MXn2+DW2kfXR6Dtp1FEXMVrjyKAcvcU8vg==", + "version": "13.0.2", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "rehype-parse": "^9.0.0", @@ -6776,9 +5492,8 @@ } }, "node_modules/rehype-parse": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-9.0.0.tgz", - "integrity": "sha512-WG7nfvmWWkCR++KEkZevZb/uw41E8TsH4DsY9UxsTbIXCVGbAs4S+r8FrQ+OtH5EEQAs+5UxKC42VinkmpA1Yw==", + "version": "9.0.1", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "hast-util-from-html": "^2.0.0", @@ -6791,8 +5506,7 @@ }, "node_modules/rehype-raw": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz", - "integrity": "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "hast-util-raw": "^9.0.0", @@ -6803,10 +5517,22 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/rehype-recma": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "hast-util-to-estree": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/rehype-stringify": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/rehype-stringify/-/rehype-stringify-10.0.0.tgz", - "integrity": "sha512-1TX1i048LooI9QoecrXy7nGFFbFSufxVRAfc6Y9YMRAi56l+oB0zP51mLSV312uRuvVLPV1opSlJmslozR1XHQ==", + "version": "10.0.1", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "hast-util-to-html": "^9.0.0", @@ -6818,9 +5544,8 @@ } }, "node_modules/remark-directive": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remark-directive/-/remark-directive-3.0.0.tgz", - "integrity": "sha512-l1UyWJ6Eg1VPU7Hm/9tt0zKtReJQNOA4+iDMAxTyZNWnJnFlbS/7zhiel/rogTLQ2vMYwDzSJa4BiVNqGlqIMA==", + "version": "3.0.1", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-directive": "^3.0.0", @@ -6834,8 +5559,7 @@ }, "node_modules/remark-expressive-code": { "version": "0.33.5", - "resolved": "https://registry.npmjs.org/remark-expressive-code/-/remark-expressive-code-0.33.5.tgz", - "integrity": "sha512-E4CZq3AuUXLu6or0AaDKkgsHYqmnm4ZL8/+1/8YgwtKcogHwTMRJfQtxkZpth90QQoNUpsapvm5x5n3Np2OC9w==", + "license": "MIT", "dependencies": { "expressive-code": "^0.33.5", "hast-util-to-html": "^8.0.4", @@ -6844,21 +5568,18 @@ }, "node_modules/remark-expressive-code/node_modules/@types/hast": { "version": "2.3.10", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.10.tgz", - "integrity": "sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==", + "license": "MIT", "dependencies": { "@types/unist": "^2" } }, "node_modules/remark-expressive-code/node_modules/@types/unist": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", - "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==" + "version": "2.0.11", + "license": "MIT" }, "node_modules/remark-expressive-code/node_modules/hast-util-from-parse5": { "version": "7.1.2", - "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-7.1.2.tgz", - "integrity": "sha512-Nz7FfPBuljzsN3tCQ4kCBKqdNhQE2l0Tn+X1ubgKBPRoiDIu1mL08Cfw4k7q71+Duyaw7DXDN+VTAp4Vh3oCOw==", + "license": "MIT", "dependencies": { "@types/hast": "^2.0.0", "@types/unist": "^2.0.0", @@ -6875,8 +5596,7 @@ }, "node_modules/remark-expressive-code/node_modules/hast-util-parse-selector": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-3.1.1.tgz", - "integrity": "sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==", + "license": "MIT", "dependencies": { "@types/hast": "^2.0.0" }, @@ -6887,8 +5607,7 @@ }, "node_modules/remark-expressive-code/node_modules/hast-util-raw": { "version": "7.2.3", - "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-7.2.3.tgz", - "integrity": "sha512-RujVQfVsOrxzPOPSzZFiwofMArbQke6DJjnFfceiEbFh7S05CbPt0cYN+A5YeD3pso0JQk6O1aHBnx9+Pm2uqg==", + "license": "MIT", "dependencies": { "@types/hast": "^2.0.0", "@types/parse5": "^6.0.0", @@ -6909,8 +5628,7 @@ }, "node_modules/remark-expressive-code/node_modules/hast-util-to-html": { "version": "8.0.4", - "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-8.0.4.tgz", - "integrity": "sha512-4tpQTUOr9BMjtYyNlt0P50mH7xj0Ks2xpo8M943Vykljf99HW6EzulIoJP1N3eKOSScEHzyzi9dm7/cn0RfGwA==", + "license": "MIT", "dependencies": { "@types/hast": "^2.0.0", "@types/unist": "^2.0.0", @@ -6931,8 +5649,7 @@ }, "node_modules/remark-expressive-code/node_modules/hast-util-to-parse5": { "version": "7.1.0", - "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-7.1.0.tgz", - "integrity": "sha512-YNRgAJkH2Jky5ySkIqFXTQiaqcAtJyVE+D5lkN6CdtOqrnkLfGYYrEcKuHOJZlp+MwjSwuD3fZuawI+sic/RBw==", + "license": "MIT", "dependencies": { "@types/hast": "^2.0.0", "comma-separated-tokens": "^2.0.0", @@ -6948,8 +5665,7 @@ }, "node_modules/remark-expressive-code/node_modules/hast-util-whitespace": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.1.tgz", - "integrity": "sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==", + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" @@ -6957,8 +5673,7 @@ }, "node_modules/remark-expressive-code/node_modules/hastscript": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-7.2.0.tgz", - "integrity": "sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==", + "license": "MIT", "dependencies": { "@types/hast": "^2.0.0", "comma-separated-tokens": "^2.0.0", @@ -6973,8 +5688,7 @@ }, "node_modules/remark-expressive-code/node_modules/html-void-elements": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-2.0.1.tgz", - "integrity": "sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -6982,13 +5696,19 @@ }, "node_modules/remark-expressive-code/node_modules/parse5": { "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" + "license": "MIT" + }, + "node_modules/remark-expressive-code/node_modules/property-information": { + "version": "6.5.0", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } }, "node_modules/remark-expressive-code/node_modules/unist-util-is": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", - "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", + "license": "MIT", "dependencies": { "@types/unist": "^2.0.0" }, @@ -6999,8 +5719,7 @@ }, "node_modules/remark-expressive-code/node_modules/unist-util-position": { "version": "4.0.4", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.4.tgz", - "integrity": "sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==", + "license": "MIT", "dependencies": { "@types/unist": "^2.0.0" }, @@ -7011,8 +5730,7 @@ }, "node_modules/remark-expressive-code/node_modules/unist-util-stringify-position": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", - "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "license": "MIT", "dependencies": { "@types/unist": "^2.0.0" }, @@ -7023,8 +5741,7 @@ }, "node_modules/remark-expressive-code/node_modules/unist-util-visit": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", - "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", + "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", "unist-util-is": "^5.0.0", @@ -7037,8 +5754,7 @@ }, "node_modules/remark-expressive-code/node_modules/unist-util-visit-parents": { "version": "5.1.3", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", - "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", + "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", "unist-util-is": "^5.0.0" @@ -7050,8 +5766,7 @@ }, "node_modules/remark-expressive-code/node_modules/vfile": { "version": "5.3.7", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", - "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", + "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", "is-buffer": "^2.0.0", @@ -7065,8 +5780,7 @@ }, "node_modules/remark-expressive-code/node_modules/vfile-location": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-4.1.0.tgz", - "integrity": "sha512-YF23YMyASIIJXpktBa4vIGLJ5Gs88UB/XePgqPmTa7cDA+JeO3yclbpheQYCHjVHBn/yePzrXuygIL+xbvRYHw==", + "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", "vfile": "^5.0.0" @@ -7078,8 +5792,7 @@ }, "node_modules/remark-expressive-code/node_modules/vfile-message": { "version": "3.1.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", - "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", + "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", "unist-util-stringify-position": "^3.0.0" @@ -7090,9 +5803,8 @@ } }, "node_modules/remark-gfm": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.0.tgz", - "integrity": "sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==", + "version": "4.0.1", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-gfm": "^3.0.0", @@ -7107,9 +5819,8 @@ } }, "node_modules/remark-mdx": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.0.1.tgz", - "integrity": "sha512-3Pz3yPQ5Rht2pM5R+0J2MrGoBSrzf+tJG94N+t/ilfdh8YLyyKYtidAYwTveB20BoHAcwIopOUqhcmh2F7hGYA==", + "version": "3.1.1", + "license": "MIT", "dependencies": { "mdast-util-mdx": "^3.0.0", "micromark-extension-mdxjs": "^3.0.0" @@ -7121,8 +5832,7 @@ }, "node_modules/remark-parse": { "version": "11.0.0", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", - "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-from-markdown": "^2.0.0", @@ -7135,9 +5845,8 @@ } }, "node_modules/remark-rehype": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.0.tgz", - "integrity": "sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g==", + "version": "11.1.2", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", @@ -7152,8 +5861,7 @@ }, "node_modules/remark-smartypants": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/remark-smartypants/-/remark-smartypants-2.1.0.tgz", - "integrity": "sha512-qoF6Vz3BjU2tP6OfZqHOvCU0ACmu/6jhGaINSQRI9mM7wCxNQTKB3JUAN4SVoN2ybElEDTxBIABRep7e569iJw==", + "license": "MIT", "dependencies": { "retext": "^8.1.0", "retext-smartypants": "^5.2.0", @@ -7165,8 +5873,7 @@ }, "node_modules/remark-stringify": { "version": "11.0.0", - "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", - "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", + "license": "MIT", "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-to-markdown": "^2.0.0", @@ -7179,63 +5886,39 @@ }, "node_modules/request-light": { "version": "0.7.0", - "resolved": "https://registry.npmjs.org/request-light/-/request-light-0.7.0.tgz", - "integrity": "sha512-lMbBMrDoxgsyO+yB3sDcrDuX85yYt7sS8BfQd11jtbW/z5ZWgLZRcEGLsLoYw7I0WSUGQBs8CC8ScIxkTX1+6Q==" + "license": "MIT" }, "node_modules/require-directory": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/restore-cursor": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", - "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/restore-cursor/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "node_modules/require-from-string": { + "version": "2.0.2", + "license": "MIT", "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/restore-cursor/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "node_modules/restore-cursor": { + "version": "5.1.0", + "license": "MIT", "dependencies": { - "mimic-fn": "^2.1.0" + "onetime": "^7.0.0", + "signal-exit": "^4.1.0" }, "engines": { - "node": ">=6" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/restore-cursor/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" - }, "node_modules/retext": { "version": "8.1.0", - "resolved": "https://registry.npmjs.org/retext/-/retext-8.1.0.tgz", - "integrity": "sha512-N9/Kq7YTn6ZpzfiGW45WfEGJqFf1IM1q8OsRa1CGzIebCJBNCANDRmOrholiDRGKo/We7ofKR4SEvcGAWEMD3Q==", + "license": "MIT", "dependencies": { "@types/nlcst": "^1.0.0", "retext-latin": "^3.0.0", @@ -7249,8 +5932,7 @@ }, "node_modules/retext-latin": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/retext-latin/-/retext-latin-3.1.0.tgz", - "integrity": "sha512-5MrD1tuebzO8ppsja5eEu+ZbBeUNCjoEarn70tkXOS7Bdsdf6tNahsv2bY0Z8VooFF6cw7/6S+d3yI/TMlMVVQ==", + "license": "MIT", "dependencies": { "@types/nlcst": "^1.0.0", "parse-latin": "^5.0.0", @@ -7263,14 +5945,12 @@ } }, "node_modules/retext-latin/node_modules/@types/unist": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", - "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==" + "version": "2.0.11", + "license": "MIT" }, "node_modules/retext-latin/node_modules/unified": { "version": "10.1.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", - "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", + "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", "bail": "^2.0.0", @@ -7287,8 +5967,7 @@ }, "node_modules/retext-latin/node_modules/unist-util-stringify-position": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", - "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "license": "MIT", "dependencies": { "@types/unist": "^2.0.0" }, @@ -7299,8 +5978,7 @@ }, "node_modules/retext-latin/node_modules/vfile": { "version": "5.3.7", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", - "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", + "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", "is-buffer": "^2.0.0", @@ -7314,8 +5992,7 @@ }, "node_modules/retext-latin/node_modules/vfile-message": { "version": "3.1.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", - "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", + "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", "unist-util-stringify-position": "^3.0.0" @@ -7327,8 +6004,7 @@ }, "node_modules/retext-smartypants": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/retext-smartypants/-/retext-smartypants-5.2.0.tgz", - "integrity": "sha512-Do8oM+SsjrbzT2UNIKgheP0hgUQTDDQYyZaIY3kfq0pdFzoPk+ZClYJ+OERNXveog4xf1pZL4PfRxNoVL7a/jw==", + "license": "MIT", "dependencies": { "@types/nlcst": "^1.0.0", "nlcst-to-string": "^3.0.0", @@ -7341,14 +6017,12 @@ } }, "node_modules/retext-smartypants/node_modules/@types/unist": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", - "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==" + "version": "2.0.11", + "license": "MIT" }, "node_modules/retext-smartypants/node_modules/unified": { "version": "10.1.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", - "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", + "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", "bail": "^2.0.0", @@ -7365,8 +6039,7 @@ }, "node_modules/retext-smartypants/node_modules/unist-util-is": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", - "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", + "license": "MIT", "dependencies": { "@types/unist": "^2.0.0" }, @@ -7377,8 +6050,7 @@ }, "node_modules/retext-smartypants/node_modules/unist-util-stringify-position": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", - "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "license": "MIT", "dependencies": { "@types/unist": "^2.0.0" }, @@ -7389,8 +6061,7 @@ }, "node_modules/retext-smartypants/node_modules/unist-util-visit": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", - "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", + "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", "unist-util-is": "^5.0.0", @@ -7403,8 +6074,7 @@ }, "node_modules/retext-smartypants/node_modules/unist-util-visit-parents": { "version": "5.1.3", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", - "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", + "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", "unist-util-is": "^5.0.0" @@ -7416,8 +6086,7 @@ }, "node_modules/retext-smartypants/node_modules/vfile": { "version": "5.3.7", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", - "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", + "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", "is-buffer": "^2.0.0", @@ -7431,8 +6100,7 @@ }, "node_modules/retext-smartypants/node_modules/vfile-message": { "version": "3.1.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", - "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", + "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", "unist-util-stringify-position": "^3.0.0" @@ -7444,8 +6112,7 @@ }, "node_modules/retext-stringify": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/retext-stringify/-/retext-stringify-3.1.0.tgz", - "integrity": "sha512-767TLOaoXFXyOnjx/EggXlb37ZD2u4P1n0GJqVdpipqACsQP+20W+BNpMYrlJkq7hxffnFk+jc6mAK9qrbuB8w==", + "license": "MIT", "dependencies": { "@types/nlcst": "^1.0.0", "nlcst-to-string": "^3.0.0", @@ -7457,14 +6124,12 @@ } }, "node_modules/retext-stringify/node_modules/@types/unist": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", - "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==" + "version": "2.0.11", + "license": "MIT" }, "node_modules/retext-stringify/node_modules/unified": { "version": "10.1.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", - "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", + "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", "bail": "^2.0.0", @@ -7481,8 +6146,7 @@ }, "node_modules/retext-stringify/node_modules/unist-util-stringify-position": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", - "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "license": "MIT", "dependencies": { "@types/unist": "^2.0.0" }, @@ -7493,8 +6157,7 @@ }, "node_modules/retext-stringify/node_modules/vfile": { "version": "5.3.7", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", - "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", + "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", "is-buffer": "^2.0.0", @@ -7508,8 +6171,7 @@ }, "node_modules/retext-stringify/node_modules/vfile-message": { "version": "3.1.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", - "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", + "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", "unist-util-stringify-position": "^3.0.0" @@ -7520,14 +6182,12 @@ } }, "node_modules/retext/node_modules/@types/unist": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", - "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==" + "version": "2.0.11", + "license": "MIT" }, "node_modules/retext/node_modules/unified": { "version": "10.1.2", - "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", - "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", + "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", "bail": "^2.0.0", @@ -7544,8 +6204,7 @@ }, "node_modules/retext/node_modules/unist-util-stringify-position": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", - "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "license": "MIT", "dependencies": { "@types/unist": "^2.0.0" }, @@ -7556,8 +6215,7 @@ }, "node_modules/retext/node_modules/vfile": { "version": "5.3.7", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", - "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", + "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", "is-buffer": "^2.0.0", @@ -7571,8 +6229,7 @@ }, "node_modules/retext/node_modules/vfile-message": { "version": "3.1.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", - "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", + "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", "unist-util-stringify-position": "^3.0.0" @@ -7583,20 +6240,18 @@ } }, "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "version": "1.1.0", + "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" } }, "node_modules/rollup": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.20.0.tgz", - "integrity": "sha512-6rbWBChcnSGzIlXeIdNIZTopKYad8ZG8ajhl78lGRLsI2rX8IkaotQhVas2Ma+GPxJav19wrSzvRvuiv0YKzWw==", + "version": "4.53.3", + "license": "MIT", "dependencies": { - "@types/estree": "1.0.5" + "@types/estree": "1.0.8" }, "bin": { "rollup": "dist/bin/rollup" @@ -7606,29 +6261,33 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.20.0", - "@rollup/rollup-android-arm64": "4.20.0", - "@rollup/rollup-darwin-arm64": "4.20.0", - "@rollup/rollup-darwin-x64": "4.20.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.20.0", - "@rollup/rollup-linux-arm-musleabihf": "4.20.0", - "@rollup/rollup-linux-arm64-gnu": "4.20.0", - "@rollup/rollup-linux-arm64-musl": "4.20.0", - "@rollup/rollup-linux-powerpc64le-gnu": "4.20.0", - "@rollup/rollup-linux-riscv64-gnu": "4.20.0", - "@rollup/rollup-linux-s390x-gnu": "4.20.0", - "@rollup/rollup-linux-x64-gnu": "4.20.0", - "@rollup/rollup-linux-x64-musl": "4.20.0", - "@rollup/rollup-win32-arm64-msvc": "4.20.0", - "@rollup/rollup-win32-ia32-msvc": "4.20.0", - "@rollup/rollup-win32-x64-msvc": "4.20.0", + "@rollup/rollup-android-arm-eabi": "4.53.3", + "@rollup/rollup-android-arm64": "4.53.3", + "@rollup/rollup-darwin-arm64": "4.53.3", + "@rollup/rollup-darwin-x64": "4.53.3", + "@rollup/rollup-freebsd-arm64": "4.53.3", + "@rollup/rollup-freebsd-x64": "4.53.3", + "@rollup/rollup-linux-arm-gnueabihf": "4.53.3", + "@rollup/rollup-linux-arm-musleabihf": "4.53.3", + "@rollup/rollup-linux-arm64-gnu": "4.53.3", + "@rollup/rollup-linux-arm64-musl": "4.53.3", + "@rollup/rollup-linux-loong64-gnu": "4.53.3", + "@rollup/rollup-linux-ppc64-gnu": "4.53.3", + "@rollup/rollup-linux-riscv64-gnu": "4.53.3", + "@rollup/rollup-linux-riscv64-musl": "4.53.3", + "@rollup/rollup-linux-s390x-gnu": "4.53.3", + "@rollup/rollup-linux-x64-gnu": "4.53.3", + "@rollup/rollup-linux-x64-musl": "4.53.3", + "@rollup/rollup-openharmony-arm64": "4.53.3", + "@rollup/rollup-win32-arm64-msvc": "4.53.3", + "@rollup/rollup-win32-ia32-msvc": "4.53.3", + "@rollup/rollup-win32-x64-gnu": "4.53.3", + "@rollup/rollup-win32-x64-msvc": "4.53.3", "fsevents": "~2.3.2" } }, "node_modules/run-parallel": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "funding": [ { "type": "github", @@ -7643,20 +6302,18 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } }, "node_modules/s.color": { "version": "0.0.15", - "resolved": "https://registry.npmjs.org/s.color/-/s.color-0.0.15.tgz", - "integrity": "sha512-AUNrbEUHeKY8XsYr/DYpl+qk5+aM+DChopnWOPEzn8YKzOhv4l2zH6LzZms3tOZP3wwdOyc0RmTciyi46HLIuA==", - "devOptional": true + "devOptional": true, + "license": "MIT" }, "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", @@ -7670,26 +6327,24 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/sass-formatter": { "version": "0.7.9", - "resolved": "https://registry.npmjs.org/sass-formatter/-/sass-formatter-0.7.9.tgz", - "integrity": "sha512-CWZ8XiSim+fJVG0cFLStwDvft1VI7uvXdCNJYXhDvowiv+DsbD1nXLiQ4zrE5UBvj5DWZJ93cwN0NX5PMsr1Pw==", "devOptional": true, + "license": "MIT", "dependencies": { "suf-log": "^2.5.3" } }, "node_modules/sax": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", - "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==" + "version": "1.4.3", + "license": "BlueOak-1.0.0" }, "node_modules/section-matter": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", - "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", + "license": "MIT", "dependencies": { "extend-shallow": "^2.0.1", "kind-of": "^6.0.0" @@ -7699,9 +6354,8 @@ } }, "node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.3", + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -7711,9 +6365,8 @@ }, "node_modules/sharp": { "version": "0.32.6", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.32.6.tgz", - "integrity": "sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==", "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { "color": "^4.2.3", "detect-libc": "^2.0.2", @@ -7731,38 +6384,23 @@ "url": "https://opencollective.com/libvips" } }, - "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==", - "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==", - "engines": { - "node": ">=8" - } - }, "node_modules/shiki": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.12.1.tgz", - "integrity": "sha512-nwmjbHKnOYYAe1aaQyEBHvQymJgfm86ZSS7fT8OaPRr4sbAcBNz7PbfAikMEFSDQ6se2j2zobkXvVKcBOm0ysg==", - "dependencies": { - "@shikijs/core": "1.12.1", + "version": "1.29.2", + "license": "MIT", + "dependencies": { + "@shikijs/core": "1.29.2", + "@shikijs/engine-javascript": "1.29.2", + "@shikijs/engine-oniguruma": "1.29.2", + "@shikijs/langs": "1.29.2", + "@shikijs/themes": "1.29.2", + "@shikijs/types": "1.29.2", + "@shikijs/vscode-textmate": "^10.0.1", "@types/hast": "^3.0.4" } }, "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==", + "license": "ISC", "engines": { "node": ">=14" }, @@ -7772,8 +6410,6 @@ }, "node_modules/simple-concat": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", "funding": [ { "type": "github", @@ -7787,12 +6423,11 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/simple-get": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", - "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", "funding": [ { "type": "github", @@ -7807,6 +6442,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "decompress-response": "^6.0.0", "once": "^1.3.1", @@ -7814,61 +6450,54 @@ } }, "node_modules/simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "version": "0.2.4", + "license": "MIT", "dependencies": { "is-arrayish": "^0.3.1" } }, "node_modules/sisteransi": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" + "license": "MIT" }, "node_modules/sitemap": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-7.1.2.tgz", - "integrity": "sha512-ARCqzHJ0p4gWt+j7NlU5eDlIO9+Rkr/JhPFZKKQ1l5GCus7rJH4UdrlVAh0xC/gDS/Qir2UMxqYNHtsKr2rpCw==", + "version": "8.0.2", + "license": "MIT", "dependencies": { "@types/node": "^17.0.5", "@types/sax": "^1.2.1", "arg": "^5.0.0", - "sax": "^1.2.4" + "sax": "^1.4.1" }, "bin": { "sitemap": "dist/cli.js" }, "engines": { - "node": ">=12.0.0", - "npm": ">=5.6.0" + "node": ">=14.0.0", + "npm": ">=6.0.0" } }, "node_modules/sitemap/node_modules/@types/node": { "version": "17.0.45", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", - "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==" + "license": "MIT" }, "node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "version": "0.7.6", + "license": "BSD-3-Clause", "engines": { - "node": ">= 8" + "node": ">= 12" } }, "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==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/space-separated-tokens": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", - "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -7876,13 +6505,11 @@ }, "node_modules/sprintf-js": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + "license": "BSD-3-Clause" }, "node_modules/stdin-discarder": { "version": "0.2.2", - "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.2.2.tgz", - "integrity": "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==", + "license": "MIT", "engines": { "node": ">=18" }, @@ -7892,34 +6519,27 @@ }, "node_modules/stream-replace-string": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/stream-replace-string/-/stream-replace-string-2.0.0.tgz", - "integrity": "sha512-TlnjJ1C0QrmxRNrON00JvaFFlNh5TTG00APw23j74ET7gkQpTASi6/L2fuiav8pzK715HXtUeClpBTw2NPSn6w==" + "license": "MIT" }, "node_modules/streamx": { - "version": "2.18.0", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.18.0.tgz", - "integrity": "sha512-LLUC1TWdjVdn1weXGcSxyTR3T4+acB6tVGXT95y0nGbca4t4o/ng1wKAGTljm9VicuCVLvRlqFYXYy5GwgM7sQ==", + "version": "2.23.0", + "license": "MIT", "dependencies": { + "events-universal": "^1.0.0", "fast-fifo": "^1.3.2", - "queue-tick": "^1.0.1", "text-decoder": "^1.1.0" - }, - "optionalDependencies": { - "bare-events": "^2.2.0" } }, "node_modules/string_decoder": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", "dependencies": { "safe-buffer": "~5.2.0" } }, "node_modules/string-width": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "license": "MIT", "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", @@ -7934,8 +6554,7 @@ }, "node_modules/stringify-entities": { "version": "4.0.4", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", - "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "license": "MIT", "dependencies": { "character-entities-html4": "^2.0.0", "character-entities-legacy": "^3.0.0" @@ -7946,9 +6565,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==", + "version": "7.1.2", + "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -7961,84 +6579,62 @@ }, "node_modules/strip-bom": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/strip-bom-string": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", - "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/strip-json-comments": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, + "node_modules/style-to-js": { + "version": "1.1.21", + "license": "MIT", + "dependencies": { + "style-to-object": "1.0.14" + } + }, "node_modules/style-to-object": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.4.tgz", - "integrity": "sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==", + "version": "1.0.14", + "license": "MIT", "dependencies": { - "inline-style-parser": "0.1.1" + "inline-style-parser": "0.2.7" } }, "node_modules/suf-log": { "version": "2.5.3", - "resolved": "https://registry.npmjs.org/suf-log/-/suf-log-2.5.3.tgz", - "integrity": "sha512-KvC8OPjzdNOe+xQ4XWJV2whQA0aM1kGVczMQ8+dStAO6KfEB140JEVQ9dE76ONZ0/Ylf67ni4tILPJB41U0eow==", "devOptional": true, + "license": "MIT", "dependencies": { "s.color": "0.0.15" } }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/tar-fs": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.6.tgz", - "integrity": "sha512-iokBDQQkUyeXhgPYaZxmczGPhnhXZ0CmrqI+MOb/WFGS9DW5wnfrLgtjUJBvz50vQ3qfRwJ62QVoCFu8mPVu5w==", + "version": "3.1.1", + "license": "MIT", "dependencies": { "pump": "^3.0.0", "tar-stream": "^3.1.5" }, "optionalDependencies": { - "bare-fs": "^2.1.1", - "bare-path": "^2.1.0" + "bare-fs": "^4.0.1", + "bare-path": "^3.0.0" } }, "node_modules/tar-stream": { "version": "3.1.7", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", - "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", + "license": "MIT", "dependencies": { "b4a": "^1.6.4", "fast-fifo": "^1.2.0", @@ -8046,25 +6642,19 @@ } }, "node_modules/text-decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.1.1.tgz", - "integrity": "sha512-8zll7REEv4GDD3x4/0pW+ppIxSNs7H1J10IKFZsuOMscumCdM2a+toDGLPA3T+1+fLBql4zbt5z83GEQGGV5VA==", + "version": "1.2.3", + "license": "Apache-2.0", "dependencies": { "b4a": "^1.6.4" } }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "engines": { - "node": ">=4" - } + "node_modules/tinyexec": { + "version": "0.3.2", + "license": "MIT" }, "node_modules/to-regex-range": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -8074,8 +6664,7 @@ }, "node_modules/trim-lines": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", - "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -8083,17 +6672,15 @@ }, "node_modules/trough": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", - "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, "node_modules/tsconfck": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.1.tgz", - "integrity": "sha512-00eoI6WY57SvZEVjm13stEVE90VkEdJAFGgpFLTsZbJyW/LwFQ7uQxJHWpZ2hzSWgCPKc9AnBnNP+0X7o3hAmQ==", + "version": "3.1.6", + "license": "MIT", "bin": { "tsconfck": "bin/tsconfck.js" }, @@ -8109,16 +6696,9 @@ } } }, - "node_modules/tslib": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", - "optional": true - }, "node_modules/tunnel-agent": { "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "license": "Apache-2.0", "dependencies": { "safe-buffer": "^5.0.1" }, @@ -8127,11 +6707,10 @@ } }, "node_modules/type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "version": "4.41.0", + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=12.20" + "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -8139,13 +6718,11 @@ }, "node_modules/typesafe-path": { "version": "0.2.2", - "resolved": "https://registry.npmjs.org/typesafe-path/-/typesafe-path-0.2.2.tgz", - "integrity": "sha512-OJabfkAg1WLZSqJAJ0Z6Sdt3utnbzr/jh+NAHoyWHJe8CMSy79Gm085094M9nvTPy22KzTVn5Zq5mbapCI/hPA==" + "license": "MIT" }, "node_modules/typescript": { - "version": "5.5.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", - "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", + "version": "5.9.3", + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -8155,22 +6732,19 @@ } }, "node_modules/typescript-auto-import-cache": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/typescript-auto-import-cache/-/typescript-auto-import-cache-0.3.3.tgz", - "integrity": "sha512-ojEC7+Ci1ij9eE6hp8Jl9VUNnsEKzztktP5gtYNRMrTmfXVwA1PITYYAkpxCvvupdSYa/Re51B6KMcv1CTZEUA==", + "version": "0.3.6", + "license": "MIT", "dependencies": { "semver": "^7.3.8" } }, "node_modules/undici-types": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.13.0.tgz", - "integrity": "sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg==" + "version": "7.16.0", + "license": "MIT" }, "node_modules/unherit": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/unherit/-/unherit-3.0.1.tgz", - "integrity": "sha512-akOOQ/Yln8a2sgcLj4U0Jmx0R5jpIg2IUyRrWOzmEbjBtGzBdHtSeFKgoEcoH4KYIG/Pb8GQ/BwtYm0GCq1Sqg==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -8178,8 +6752,7 @@ }, "node_modules/unified": { "version": "11.0.5", - "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", - "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "bail": "^2.0.0", @@ -8196,8 +6769,7 @@ }, "node_modules/unist-util-find-after": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-5.0.0.tgz", - "integrity": "sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0" @@ -8208,9 +6780,8 @@ } }, "node_modules/unist-util-is": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", - "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "version": "6.0.1", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0" }, @@ -8221,8 +6792,7 @@ }, "node_modules/unist-util-modify-children": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/unist-util-modify-children/-/unist-util-modify-children-3.1.1.tgz", - "integrity": "sha512-yXi4Lm+TG5VG+qvokP6tpnk+r1EPwyYL04JWDxLvgvPV40jANh7nm3udk65OOWquvbMDe+PL9+LmkxDpTv/7BA==", + "license": "MIT", "dependencies": { "@types/unist": "^2.0.0", "array-iterate": "^2.0.0" @@ -8233,14 +6803,12 @@ } }, "node_modules/unist-util-modify-children/node_modules/@types/unist": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", - "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==" + "version": "2.0.11", + "license": "MIT" }, "node_modules/unist-util-position": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", - "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0" }, @@ -8251,8 +6819,7 @@ }, "node_modules/unist-util-position-from-estree": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz", - "integrity": "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0" }, @@ -8263,8 +6830,7 @@ }, "node_modules/unist-util-remove-position": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz", - "integrity": "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "unist-util-visit": "^5.0.0" @@ -8276,8 +6842,7 @@ }, "node_modules/unist-util-stringify-position": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", - "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0" }, @@ -8288,8 +6853,7 @@ }, "node_modules/unist-util-visit": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", - "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0", @@ -8302,8 +6866,7 @@ }, "node_modules/unist-util-visit-children": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unist-util-visit-children/-/unist-util-visit-children-2.0.2.tgz", - "integrity": "sha512-+LWpMFqyUwLGpsQxpumsQ9o9DG2VGLFrpz+rpVXYIEdPy57GSy5HioC0g3bg/8WP9oCLlapQtklOzQ8uLS496Q==", + "license": "MIT", "dependencies": { "@types/unist": "^2.0.0" }, @@ -8313,14 +6876,12 @@ } }, "node_modules/unist-util-visit-children/node_modules/@types/unist": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", - "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==" + "version": "2.0.11", + "license": "MIT" }, "node_modules/unist-util-visit-parents": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", - "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "version": "6.0.2", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0" @@ -8331,9 +6892,7 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", - "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", + "version": "1.1.4", "funding": [ { "type": "opencollective", @@ -8348,9 +6907,10 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "escalade": "^3.1.2", - "picocolors": "^1.0.1" + "escalade": "^3.2.0", + "picocolors": "^1.1.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -8361,16 +6921,13 @@ }, "node_modules/util-deprecate": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + "license": "MIT" }, "node_modules/vfile": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.2.tgz", - "integrity": "sha512-zND7NlS8rJYb/sPqkb13ZvbbUoExdbi4w3SfRrMq6R3FvnLQmmfpajJNITuuYm6AZ5uao9vy4BAos3EXBPf2rg==", + "version": "6.0.3", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", - "unist-util-stringify-position": "^4.0.0", "vfile-message": "^4.0.0" }, "funding": { @@ -8380,8 +6937,7 @@ }, "node_modules/vfile-location": { "version": "5.0.3", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.3.tgz", - "integrity": "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "vfile": "^6.0.0" @@ -8392,9 +6948,8 @@ } }, "node_modules/vfile-message": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", - "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "version": "4.0.3", + "license": "MIT", "dependencies": { "@types/unist": "^3.0.0", "unist-util-stringify-position": "^4.0.0" @@ -8405,9 +6960,8 @@ } }, "node_modules/vite": { - "version": "5.4.7", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.7.tgz", - "integrity": "sha512-5l2zxqMEPVENgvzTuBpHer2awaetimj2BGkhBPdnwKbPNOlHsODU+oiazEZzLK7KhAnOrO+XGYJYn4ZlUhDtDQ==", + "version": "5.4.21", + "license": "MIT", "dependencies": { "esbuild": "^0.21.3", "postcss": "^8.4.43", @@ -8463,11 +7017,15 @@ } }, "node_modules/vitefu": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.5.tgz", - "integrity": "sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==", + "version": "1.1.1", + "license": "MIT", + "workspaces": [ + "tests/deps/*", + "tests/projects/*", + "tests/projects/workspace/packages/*" + ], "peerDependencies": { - "vite": "^3.0.0 || ^4.0.0 || ^5.0.0" + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0" }, "peerDependenciesMeta": { "vite": { @@ -8476,16 +7034,15 @@ } }, "node_modules/volar-service-css": { - "version": "0.0.59", - "resolved": "https://registry.npmjs.org/volar-service-css/-/volar-service-css-0.0.59.tgz", - "integrity": "sha512-gLNjJnECbalPvQB7qeJjhkDN8sR5M3ItbVYjnyio61aHaWptIiXm/HfDahcQ2ApwmvWidkMWWegjGq5L0BENDA==", + "version": "0.0.66", + "license": "MIT", "dependencies": { "vscode-css-languageservice": "^6.3.0", "vscode-languageserver-textdocument": "^1.0.11", "vscode-uri": "^3.0.8" }, "peerDependencies": { - "@volar/language-service": "~2.4.0-alpha.12" + "@volar/language-service": "~2.4.0" }, "peerDependenciesMeta": { "@volar/language-service": { @@ -8494,17 +7051,16 @@ } }, "node_modules/volar-service-emmet": { - "version": "0.0.59", - "resolved": "https://registry.npmjs.org/volar-service-emmet/-/volar-service-emmet-0.0.59.tgz", - "integrity": "sha512-6EynHcuMwMBETpK29TbZvIMmvzdVG+Tkokk9VWfZeI+SwDptk2tgdhEqiXXvIkqYNgbuu73Itp66lpH76cAU+Q==", + "version": "0.0.66", + "license": "MIT", "dependencies": { - "@emmetio/css-parser": "^0.4.0", + "@emmetio/css-parser": "ramya-rao-a/css-parser#vscode", "@emmetio/html-matcher": "^1.3.0", "@vscode/emmet-helper": "^2.9.3", "vscode-uri": "^3.0.8" }, "peerDependencies": { - "@volar/language-service": "~2.4.0-alpha.12" + "@volar/language-service": "~2.4.0" }, "peerDependenciesMeta": { "@volar/language-service": { @@ -8513,16 +7069,15 @@ } }, "node_modules/volar-service-html": { - "version": "0.0.59", - "resolved": "https://registry.npmjs.org/volar-service-html/-/volar-service-html-0.0.59.tgz", - "integrity": "sha512-hEXOsYpILDlITZxnqRLV9OepVWD63GZBsyjMxszwdzlxvGZjzbGcBBinJGGJRwFIV8djdJwnt91bkdg1V5tj6Q==", + "version": "0.0.66", + "license": "MIT", "dependencies": { "vscode-html-languageservice": "^5.3.0", "vscode-languageserver-textdocument": "^1.0.11", "vscode-uri": "^3.0.8" }, "peerDependencies": { - "@volar/language-service": "~2.4.0-alpha.12" + "@volar/language-service": "~2.4.0" }, "peerDependenciesMeta": { "@volar/language-service": { @@ -8531,14 +7086,13 @@ } }, "node_modules/volar-service-prettier": { - "version": "0.0.59", - "resolved": "https://registry.npmjs.org/volar-service-prettier/-/volar-service-prettier-0.0.59.tgz", - "integrity": "sha512-FmBR4lsgFRGR3V0LnxZZal0WqdOJjuLL6mQSj4p57M15APtQwuocG/FiF+ONGFnwRXMOIBDBTCARdth+TKgL3A==", + "version": "0.0.66", + "license": "MIT", "dependencies": { "vscode-uri": "^3.0.8" }, "peerDependencies": { - "@volar/language-service": "~2.4.0-alpha.12", + "@volar/language-service": "~2.4.0", "prettier": "^2.2 || ^3.0" }, "peerDependenciesMeta": { @@ -8551,19 +7105,18 @@ } }, "node_modules/volar-service-typescript": { - "version": "0.0.59", - "resolved": "https://registry.npmjs.org/volar-service-typescript/-/volar-service-typescript-0.0.59.tgz", - "integrity": "sha512-VCOpfiu+lUo5lapWLB5L5vmQGtwzmNWn5MueV915eku7blpphmE+Z7hCNcL1NApn7AetXWhiblv8ZhmUx/dGIA==", + "version": "0.0.66", + "license": "MIT", "dependencies": { "path-browserify": "^1.0.1", "semver": "^7.6.2", - "typescript-auto-import-cache": "^0.3.3", + "typescript-auto-import-cache": "^0.3.5", "vscode-languageserver-textdocument": "^1.0.11", "vscode-nls": "^5.2.0", "vscode-uri": "^3.0.8" }, "peerDependencies": { - "@volar/language-service": "~2.4.0-alpha.12" + "@volar/language-service": "~2.4.0" }, "peerDependenciesMeta": { "@volar/language-service": { @@ -8572,14 +7125,29 @@ } }, "node_modules/volar-service-typescript-twoslash-queries": { - "version": "0.0.59", - "resolved": "https://registry.npmjs.org/volar-service-typescript-twoslash-queries/-/volar-service-typescript-twoslash-queries-0.0.59.tgz", - "integrity": "sha512-skm8e6yhCIkqLwJB6S9MqT5lO9LNFuMD3dYxKpmOZs1CKbXmCZZTmLfEaD5VkJae1xdleEDZFFTHl2O5HLjOGQ==", + "version": "0.0.66", + "license": "MIT", "dependencies": { "vscode-uri": "^3.0.8" }, "peerDependencies": { - "@volar/language-service": "~2.4.0-alpha.12" + "@volar/language-service": "~2.4.0" + }, + "peerDependenciesMeta": { + "@volar/language-service": { + "optional": true + } + } + }, + "node_modules/volar-service-yaml": { + "version": "0.0.66", + "license": "MIT", + "dependencies": { + "vscode-uri": "^3.0.8", + "yaml-language-server": "~1.19.2" + }, + "peerDependencies": { + "@volar/language-service": "~2.4.0" }, "peerDependenciesMeta": { "@volar/language-service": { @@ -8588,39 +7156,53 @@ } }, "node_modules/vscode-css-languageservice": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/vscode-css-languageservice/-/vscode-css-languageservice-6.3.0.tgz", - "integrity": "sha512-nU92imtkgzpCL0xikrIb8WvedV553F2BENzgz23wFuok/HLN5BeQmroMy26pUwFxV2eV8oNRmYCUv8iO7kSMhw==", + "version": "6.3.9", + "license": "MIT", "dependencies": { "@vscode/l10n": "^0.0.18", - "vscode-languageserver-textdocument": "^1.0.11", + "vscode-languageserver-textdocument": "^1.0.12", "vscode-languageserver-types": "3.17.5", - "vscode-uri": "^3.0.8" + "vscode-uri": "^3.1.0" } }, "node_modules/vscode-html-languageservice": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/vscode-html-languageservice/-/vscode-html-languageservice-5.3.0.tgz", - "integrity": "sha512-C4Z3KsP5Ih+fjHpiBc5jxmvCl+4iEwvXegIrzu2F5pktbWvQaBT3YkVPk8N+QlSSMk8oCG6PKtZ/Sq2YHb5e8g==", + "version": "5.6.1", + "license": "MIT", "dependencies": { "@vscode/l10n": "^0.0.18", - "vscode-languageserver-textdocument": "^1.0.11", + "vscode-languageserver-textdocument": "^1.0.12", "vscode-languageserver-types": "^3.17.5", - "vscode-uri": "^3.0.8" + "vscode-uri": "^3.1.0" + } + }, + "node_modules/vscode-json-languageservice": { + "version": "4.1.8", + "license": "MIT", + "dependencies": { + "jsonc-parser": "^3.0.0", + "vscode-languageserver-textdocument": "^1.0.1", + "vscode-languageserver-types": "^3.16.0", + "vscode-nls": "^5.0.0", + "vscode-uri": "^3.0.2" + }, + "engines": { + "npm": ">=7.0.0" } }, + "node_modules/vscode-json-languageservice/node_modules/jsonc-parser": { + "version": "3.3.1", + "license": "MIT" + }, "node_modules/vscode-jsonrpc": { "version": "8.2.0", - "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", - "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==", + "license": "MIT", "engines": { "node": ">=14.0.0" } }, "node_modules/vscode-languageserver": { "version": "9.0.1", - "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz", - "integrity": "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==", + "license": "MIT", "dependencies": { "vscode-languageserver-protocol": "3.17.5" }, @@ -8630,8 +7212,7 @@ }, "node_modules/vscode-languageserver-protocol": { "version": "3.17.5", - "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz", - "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==", + "license": "MIT", "dependencies": { "vscode-jsonrpc": "8.2.0", "vscode-languageserver-types": "3.17.5" @@ -8639,51 +7220,31 @@ }, "node_modules/vscode-languageserver-textdocument": { "version": "1.0.12", - "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz", - "integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==" + "license": "MIT" }, "node_modules/vscode-languageserver-types": { "version": "3.17.5", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", - "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==" + "license": "MIT" }, "node_modules/vscode-nls": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/vscode-nls/-/vscode-nls-5.2.0.tgz", - "integrity": "sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==" + "license": "MIT" }, "node_modules/vscode-uri": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz", - "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==" + "version": "3.1.0", + "license": "MIT" }, "node_modules/web-namespaces": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", - "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/which-pm": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/which-pm/-/which-pm-3.0.0.tgz", - "integrity": "sha512-ysVYmw6+ZBhx3+ZkcPwRuJi38ZOTLJJ33PSHaitLxSKUMsh0LkKd0nC69zZCwt5D+AYUcMK2hhw4yWny20vSGg==", + "version": "3.0.1", + "license": "MIT", "dependencies": { "load-yaml-file": "^0.2.0" }, @@ -8693,117 +7254,122 @@ }, "node_modules/which-pm-runs": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.1.0.tgz", - "integrity": "sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==", + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/widest-line": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", - "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", + "version": "5.0.0", + "license": "MIT", "dependencies": { - "string-width": "^5.0.1" + "string-width": "^7.0.0" }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/widest-line/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==" - }, - "node_modules/widest-line/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==", + "node_modules/wrap-ansi": { + "version": "9.0.2", + "license": "MIT", "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "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==", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, + "node_modules/wrappy": { + "version": "1.0.2", + "license": "ISC" + }, + "node_modules/xxhash-wasm": { + "version": "1.1.0", + "license": "MIT" + }, + "node_modules/y18n": { + "version": "5.0.8", + "license": "ISC", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "node": ">=10" } }, - "node_modules/wrap-ansi/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==", + "node_modules/yallist": { + "version": "3.1.1", + "license": "ISC" + }, + "node_modules/yaml": { + "version": "2.8.2", + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, "engines": { - "node": ">=12" + "node": ">= 14.6" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/eemeli" } }, - "node_modules/wrap-ansi/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==" - }, - "node_modules/wrap-ansi/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==", + "node_modules/yaml-language-server": { + "version": "1.19.2", + "license": "MIT", "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" + "@vscode/l10n": "^0.0.18", + "ajv": "^8.17.1", + "ajv-draft-04": "^1.0.0", + "lodash": "4.17.21", + "prettier": "^3.5.0", + "request-light": "^0.5.7", + "vscode-json-languageservice": "4.1.8", + "vscode-languageserver": "^9.0.0", + "vscode-languageserver-textdocument": "^1.0.1", + "vscode-languageserver-types": "^3.16.0", + "vscode-uri": "^3.0.2", + "yaml": "2.7.1" + }, + "bin": { + "yaml-language-server": "bin/yaml-language-server" + } + }, + "node_modules/yaml-language-server/node_modules/prettier": { + "version": "3.7.4", + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" }, "engines": { - "node": ">=12" + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + "node_modules/yaml-language-server/node_modules/request-light": { + "version": "0.5.8", + "license": "MIT" }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "node_modules/yaml-language-server/node_modules/yaml": { + "version": "2.7.1", + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, "engines": { - "node": ">=10" + "node": ">= 14" } }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - }, "node_modules/yargs": { "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "license": "MIT", "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -8819,29 +7385,25 @@ }, "node_modules/yargs-parser": { "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/yargs/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==", + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/yargs/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==" + "license": "MIT" }, "node_modules/yargs/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==", + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -8853,8 +7415,7 @@ }, "node_modules/yargs/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==", + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -8863,9 +7424,8 @@ } }, "node_modules/yocto-queue": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", - "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", + "version": "1.2.2", + "license": "MIT", "engines": { "node": ">=12.20" }, @@ -8874,25 +7434,29 @@ } }, "node_modules/zod": { - "version": "3.23.8", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", - "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", + "version": "3.25.76", + "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" } }, "node_modules/zod-to-json-schema": { - "version": "3.23.2", - "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.23.2.tgz", - "integrity": "sha512-uSt90Gzc/tUfyNqxnjlfBs8W6WSGpNBv0rVsNxP/BVSMHMKGdthPYff4xtCHYloJGM0CFxFsb3NbC0eqPhfImw==", + "version": "3.25.0", + "license": "ISC", + "peerDependencies": { + "zod": "^3.25 || ^4" + } + }, + "node_modules/zod-to-ts": { + "version": "1.2.0", "peerDependencies": { - "zod": "^3.23.3" + "typescript": "^4.9.4 || ^5.0.2", + "zod": "^3" } }, "node_modules/zwitch": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", - "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" From 56f8317b234e7fc7a775dfb516a5d2455de30426 Mon Sep 17 00:00:00 2001 From: Steven Dalamaras Date: Thu, 4 Dec 2025 22:14:21 +1000 Subject: [PATCH 07/17] chore: rebase to main (1 of 9) --- src/content/docs/BACaudit/AuditReport_BAC.md | 170 ++++++++++ .../docs/report-scripts/Planner_Pull.ps1 | 309 ++++++++++++++++++ .../Planner_Pull_Documentation.md | 97 ++++++ src/content/docs/report-scripts/config.txt | 2 + .../docs/report-scripts/ontrack_tasks.csv | 114 +++++++ 5 files changed, 692 insertions(+) create mode 100644 src/content/docs/BACaudit/AuditReport_BAC.md create mode 100644 src/content/docs/report-scripts/Planner_Pull.ps1 create mode 100644 src/content/docs/report-scripts/Planner_Pull_Documentation.md create mode 100644 src/content/docs/report-scripts/config.txt create mode 100644 src/content/docs/report-scripts/ontrack_tasks.csv diff --git a/src/content/docs/BACaudit/AuditReport_BAC.md b/src/content/docs/BACaudit/AuditReport_BAC.md new file mode 100644 index 00000000..8ed7b5c8 --- /dev/null +++ b/src/content/docs/BACaudit/AuditReport_BAC.md @@ -0,0 +1,170 @@ +--- +title: Web Security Audit Broken Access Control Vulnerability Report +--- + +## Introduction + +Broken Access Control is a critical security vulnerability where an application fails to properly restrict access to resources, allowing users to perform actions beyond their intended permissions. This vulnerability is ranked #1 in the OWASP Top 10 Web Application Security Risks (2021) due to its prevalence and severe impact. + +Examples of Broken Access Control include: + +- A regular user accessing administrator functionalities +- A user viewing or modifying another user's data by manipulating resource identifiers +- Using authorization tokens across different user contexts +- Bypassing access controls through URL manipulation +- Accessing sensitive API endpoints without proper authentication + +In the context of Doubtfire, these vulnerabilities could allow students to view other students' submissions, modify grades, access administrative functions, or view sensitive institutional data. + +## Test Cases + +Our security audit focused on the following test categories: + +1. **Vertical Privilege Escalation**: Testing if regular users can perform administrator-only actions +2. **Insecure Direct Object References (IDOR)**: Testing if users can access resources of other users by manipulating identifiers +3. **Session Token Misuse**: Testing if authentication tokens can be used across different user contexts +4. **URL Manipulation**: Testing if modifying URL parameters can bypass access controls +5. **Missing Access Controls**: Testing if sensitive endpoints can be accessed without authentication +6. **HTTP Method Manipulation**: Testing if changing HTTP methods can bypass access controls +7. **Function Level Access Controls**: Testing if sensitive functions are properly protected + +## Methodology + +### Tools Required + +- Bash shell environment (Linux/macOS, or Windows with WSL/Git Bash) +- cURL command-line tool +- Access to test environment with admin and regular user credentials + +### Testing Procedure + +1. **Setup**: + + - Clone the repository containing the test script + - Make the script executable: `chmod +x broken_access_control_test.sh` + - Configure the API_URL variable in the script (default: `http://localhost:3000`) + +2. **Execution**: + + - Run the script: `./broken_access_control_test.sh` + - The script will output results to the console and save detailed logs to a timestamped file + +3. **Understanding Results**: + + - **PASS (Green)**: The test confirmed proper access controls are in place + - **FAIL (Red)**: The test identified a security vulnerability that requires attention + - **INCONCLUSIVE/SKIPPED (Yellow)**: The test requires further investigation or manual verification + - The script differentiates between various response types: + - 401/403/419 responses for authenticated requests (expected denial) + - 405 Method Not Allowed (acceptable for certain tests) + - Empty arrays/null responses (potential information disclosure) + +4. **Manual Verification**: + - For UI-related vulnerabilities, manually check if regular users can access `/#/admin/units` + - Verify path traversal protection by testing various URL patterns in the browser + - Test endpoints that returned inconclusive results with different parameters or methods + +### Script Details + +The `broken_access_control_test.sh` script: + +1. Performs authentication to obtain admin and regular user tokens +2. Systematically tests each access control category +3. Interprets responses based on HTTP status codes and content +4. Provides a detailed report of findings with recommendations +5. Logs all results for future reference and compliance documentation + +The script is designed to be comprehensive, testing all API endpoints documented in the Doubtfire API specification. + +## Results + +After running the security audit, we identified the following issues: + +### Critical Vulnerabilities + +1. **Insecure Direct Object References (IDOR)**: + + - Users can access other users' data by manipulating the user ID + - Status 200 was returned with full user profile information + - This allows any authenticated user to view sensitive information of other users + +2. **Missing Access Controls on Sensitive Endpoints**: + + - The `/api/settings` endpoint returns configuration data without authentication + - This reveals system configuration including external integrations + +3. **Path Traversal Risk**: + - While API path traversal tests returned 404 status codes, further manual verification confirmed that regular users can access the admin creation page in the UI + - This frontend vulnerability allows unauthorized access to administrative functionality + +### Inconclusive Results Requiring Investigation + +1. **Endpoints Returning Empty Results Without Authentication**: + + - `/api/activity_types`, `/api/campuses`, `/api/teaching_periods`, and `/api/tii_eula` return 200 status with empty arrays/null values + - These endpoints should require authentication even when returning empty data + +2. **Function Level Access Controls**: + + - Teaching period creation attempts resulted in validation errors (400) rather than permission denial + - The endpoint processes the request and fails on validation instead of rejecting due to insufficient permissions + +3. **Regular User Resource Access**: + - Test user couldn't access permitted units (403 "Unable to list units") + - This may be legitimate if the test user has no assigned units, but should be confirmed + +### Successful Controls + +The application successfully implemented: + +- Protection against vertical privilege escalation attempts +- Session token binding and validation +- HTTP method restrictions (405 responses for inappropriate methods) +- Access controls on many critical API endpoints + +## Required Actions + +Based on our findings, we recommend the following actions: + +### Immediate Actions + +1. **Fix IDOR Vulnerability**: + + - Implement proper authorization checks in the user controller + - Ensure users can only access their own profile information + - Add role-based access control for user data access + +2. **Secure Settings Endpoint**: + + - Require authentication for the `/api/settings` endpoint + - Implement role-based access to configuration data + - Consider moving sensitive configuration to a protected admin-only endpoint + +3. **Fix Frontend Access Controls**: + - Implement proper route protection in the frontend application + - Prevent student accounts from accessing `/#/admin/units` + - Ensure admin components are not rendered for non-admin users + +### Recommended Improvements + +1. **Consistent Authentication Checks**: + + - Add authentication requirements to all API endpoints, even those returning empty results + - Implement uniform authorization checks that run before request processing + - Return consistent 401/403 responses instead of empty data arrays + +2. **Enhance Function Level Controls**: + + - Ensure permission checks occur before parameter validation + - Return clear authorization errors rather than validation errors for unauthorized requests + +3. **Implement Comprehensive Logging**: + + - Add detailed logging for all access control failures + - Set up alerts for potential authorization bypass attempts + - Include sufficient context in logs to identify potential attack patterns + +4. **Regular Security Testing**: + - Include access control testing in the CI/CD pipeline + - Re-run the security test after implementing fixes to confirm remediation + - Expand tests as new endpoints are developed diff --git a/src/content/docs/report-scripts/Planner_Pull.ps1 b/src/content/docs/report-scripts/Planner_Pull.ps1 new file mode 100644 index 00000000..4cfb9d64 --- /dev/null +++ b/src/content/docs/report-scripts/Planner_Pull.ps1 @@ -0,0 +1,309 @@ +# Check for Microsoft.Graph module +if (-not (Get-Module -ListAvailable -Name Microsoft.Graph)) { + Write-Host "Microsoft.Graph module is not installed. Please install it by running: Install-Module Microsoft.Graph -Scope CurrentUser -AllowClobber -Force" + exit +} + +# --- Menu Selection --- +Write-Host "How would you like to pull the tasks? Select the relevant Option" +Write-Host "1. Pull all tasks (including unassigned)" +Write-Host "2. Pull only tasks with assigned users ONLY" +Write-Host "3. Pull tasks of assigned users based on a date range(great for progress and handover Doc)" +$selection = Read-Host -Prompt "Enter your choice (1, 2 or 3)" + +if ($selection -ne '1' -and $selection -ne '2' -and $selection -ne '3') { + Write-Host "Invalid selection. Exiting." + exit +} + +if ($selection -eq '3') { + $startDateStr = Read-Host -Prompt "Enter the start date (YYYY-MM-DD)" + $endDateStr = Read-Host -Prompt "Enter the end date (YYYY-MM-DD)" + + try { + $startDate = [datetime]::ParseExact($startDateStr, 'yyyy-MM-dd', $null) + $endDate = [datetime]::ParseExact($endDateStr, 'yyyy-MM-dd', $null).AddDays(1) # Adds one day to include the entire end day + } + catch { + Write-Host "Invalid date format. Please use YYYY-MM-DD. Exiting." + exit + } +} + +# Import required sub modules +Write-Host "Importing Required Microsoft.Graph sub modules..." +Import-Module Microsoft.Graph.Planner +Import-Module Microsoft.Graph.Users + +# Authenticate to Microsoft Graph +Write-Host "Authenticating to Microsoft Graph..." +try { + # Connect to Microsoft Graph with required permissions + Connect-MgGraph -Scopes @( + "Tasks.Read", + "Tasks.ReadWrite", + "User.ReadBasic.All" + ) -UseDeviceCode -Audience "organizations" + + # Verify connection + $context = Get-MgContext + if (-not $context) { + throw "Failed to establish connection" + } + Write-Host "Authentication successful as $($context.Account)" +} +catch { + Write-Error "Authentication failed: $_" + exit 1 +} + +# --- Plan ID Configuration --- +$configPath = ".\config.txt" +$planId = $null + +if (Test-Path $configPath) { + $savedPlans = @(Get-Content $configPath | Where-Object { $_ -match ".+ - .+" }) # Filter for valid entries + if ($savedPlans) { + Write-Host "Please choose a saved Plan ID or enter a new one:" + for ($i = 0; $i -lt $savedPlans.Count; $i++) { + # Display only the name part + Write-Host ("{0}. {1}" -f ($i + 1), $savedPlans[$i].Split(' - ', 2)[1]) + } + Write-Host "N. Enter a new Plan ID" + + $choice = Read-Host -Prompt "Select an ID" + + if ($choice -eq 'N' -or $choice -eq 'n') { + # Flag to enter a new Plan ID + $planId = $null + } + elseif ($choice -match "^\d+$" -and [int]$choice -ge 1 -and [int]$choice -le $savedPlans.Count) { + $selectedIndex = [int]$choice - 1 + # Extract the ID part + $planId = $savedPlans[$selectedIndex].Split(' - ', 2)[0] + } + else { + Write-Host "Invalid selection. Exiting." + exit + } + } +} + +# If no plan was selected from the menu, or if config is empty/doesn't exist +if (-not $planId) { + $newPlanId = Read-Host -Prompt "Please enter the new Plan ID" + $planName = Read-Host -Prompt "Please enter a name for this plan (for your reference)" + + if (-not $newPlanId -or -not $planName) { + Write-Host "Plan ID and Plan Name cannot be empty. Exiting." + exit + } + + $newEntry = "$newPlanId - $planName" + + # Add the new entry to the config file + Add-Content -Path $configPath -Value $newEntry + Write-Host "New Plan ID saved: $newEntry" + $planId = $newPlanId +} + +Write-Host "Using Plan ID: $planId" + +# Initialize task data array +$taskData = @() + +# Retrieve and process tasks +Write-Host "Fetching tasks from plan..." +try { + try { + $tasks = Get-MgPlannerPlanTask -PlannerPlanId $planId -ErrorAction Stop + if (-not $tasks) { + Write-Error "No tasks found in the plan." + exit + } + + # Get all buckets in the plan to create a lookup table for bucket names + $buckets = Get-MgPlannerPlanBucket -PlannerPlanId $planId -ErrorAction Stop + $bucketNameLookup = @{} + foreach ($bucket in $buckets) { + $bucketNameLookup[$bucket.Id] = $bucket.Name + } + } + catch { + Write-Error "Failed to get tasks or buckets: $_" + exit 1 + } + + foreach ($task in $tasks) { + + $bucketName = $bucketNameLookup[$task.BucketId] + + Write-Host "Processing task: $($task.Title)" + + # Get task details for attachments and assigned users + try { + if (-not $task.Assignments) { + if ($selection -eq '1') { + $taskDetails = Get-MgPlannerTaskDetail -PlannerTaskId $task.Id + $attachments = "No references" + if ($taskDetails.References -and $taskDetails.References.AdditionalProperties) { + $foundUrls = @() + foreach ($key in $taskDetails.References.AdditionalProperties.Keys) { + $url = [System.Net.WebUtility]::UrlDecode($key) + $alias = $taskDetails.References.AdditionalProperties[$key].alias + + $urlIsGithub = $url -like "*github.com*" + $aliasIsGithub = $alias -like "*github.com*" + + if ($urlIsGithub -and $aliasIsGithub) { + if ($url -eq $alias) { + $foundUrls += $url + } + else { + $foundUrls += "$alias ($url)" + } + } + elseif ($urlIsGithub) { + $foundUrls += $url + } + elseif ($aliasIsGithub) { + $foundUrls += $alias + } + } + if ($foundUrls.Count -gt 0) { + $attachments = $foundUrls -join "; " + } + else { + $attachments = "No GitHub links" + } + } + + $taskData += [PSCustomObject]@{ + Name = "Unassigned" + Role = "" + Task = $task.Title + Bucket = $bucketNameLookup[$task.BucketId] + Attachments = $attachments + } + } + continue + } + + $taskDetails = Get-MgPlannerTaskDetail -PlannerTaskId $task.Id + + # Check for GitHub references + $attachments = "No references" + if ($taskDetails.References -and $taskDetails.References.AdditionalProperties) { + $foundUrls = @() + foreach ($key in $taskDetails.References.AdditionalProperties.Keys) { + $url = [System.Net.WebUtility]::UrlDecode($key) + $alias = $taskDetails.References.AdditionalProperties[$key].alias + + $urlIsGithub = $url -like "*github.com*" + $aliasIsGithub = $alias -like "*github.com*" + + if ($urlIsGithub -and $aliasIsGithub) { + if ($url -eq $alias) { + $foundUrls += $url + } + else { + $foundUrls += "$alias ($url)" + } + } + elseif ($urlIsGithub) { + $foundUrls += $url + } + elseif ($aliasIsGithub) { + $foundUrls += $alias + } + } + if ($foundUrls.Count -gt 0) { + $attachments = $foundUrls -join "; " + } + else { + $attachments = "No GitHub links" + } + } + else { + Write-Host "No references found in task details" + } + + # Get assigned users + $assignmentKeys = $task.Assignments.AdditionalProperties.Keys + $assignments = $task.Assignments.AdditionalProperties + + if ($assignmentKeys.Count -gt 0) { + # Sort keys by assignedDateTime + $sortedKeys = $assignmentKeys | Sort-Object { [datetime]$assignments[$_].assignedDateTime } + + $mainContributorKey = $sortedKeys[0] + $reviewerKey = if ($sortedKeys.Count -gt 1) { $sortedKeys[-1] } else { $null } + + foreach ($userId in $assignmentKeys) { + $assignment = $assignments[$userId] + $assignedDateTime = [datetime]$assignment.assignedDateTime + + if ($selection -eq '3' -and ($assignedDateTime -lt $startDate -or $assignedDateTime -ge $endDate)) { + continue + } + + $role = if ($userId -eq $mainContributorKey) { "Main Contributor" } elseif ($userId -eq $reviewerKey) { "Reviewer" } else { "" } + + try { + $user = Get-MgUser -UserId $userId -ErrorAction Stop + $userName = $user.DisplayName + } + catch { + Write-Host "Error getting user details: $_" + $userName = "$userId (Unable to get name)" + } + + # Add task to collection with individual user + $taskData += [PSCustomObject]@{ + Name = $userName + Role = $role + Task = $task.Title + Bucket = $bucketName + Attachments = $attachments + } + } + } + } + catch { + Write-Warning "Failed to process task: $($task.Title). Error: $_" + # Add error entry + $taskData += [PSCustomObject]@{ + Name = "Error Processing" + Role = "" + Task = $task.Title + Bucket = $bucketName + Attachments = "Error retrieving attachments" + } + } + } + + # Sort the data by Name + $taskData = $taskData | Sort-Object Name + + # Display preview of the data + Write-Host "`nPreview of exported data:" + $taskData | Format-Table -AutoSize + + # Get output filename from user + $outputFile = Read-Host -Prompt "Enter the desired name for the CSV file" + if (-not ($outputFile.EndsWith(".csv"))) { + $outputFile = "$outputFile.csv" + } + + # Export to CSV + $taskData | Export-Csv -Path $outputFile -NoTypeInformation -Force + Write-Host "Tasks exported successfully to $outputFile" + +} +catch { + Write-Error "Failed to fetch tasks. Error: $_" +} + +Write-Host "Script made by Ibitope Fatoki. Github ibi420" +Write-Host "Script completed." +Read-Host "Press Enter to exit" diff --git a/src/content/docs/report-scripts/Planner_Pull_Documentation.md b/src/content/docs/report-scripts/Planner_Pull_Documentation.md new file mode 100644 index 00000000..db55d25d --- /dev/null +++ b/src/content/docs/report-scripts/Planner_Pull_Documentation.md @@ -0,0 +1,97 @@ +# Planner Task Puller Script + +## Overview + +This PowerShell script connects to Microsoft Graph to retrieve tasks from a specified Microsoft Planner plan. It allows the user to pull all tasks, only those assigned to users, or tasks assigned to users within a specific date range. The script can store connection details for multiple plans in a `config.txt` file, allowing for easy switching between them. The script fetches task details, including bucket names, attachments (specifically looking for GitHub links), and assigned users with their roles (Main Contributor, Reviewer). The collected data is then exported to a user-specified CSV file. + +## Prerequisites + +* Windows operating system with PowerShell 7. You can grap powershell online at [Microsoft Page](https://learn.microsoft.com/en-gb/powershell/scripting/install/installing-powershell?view=powershell-7.5) or [Github Link](https://github.com/PowerShell/PowerShell?tab=readme-ov-file). +* An internet connection. +* A Microsoft 365 account with access to Microsoft Planner. +* The `Microsoft.Graph` PowerShell module. + +## Setup + +Before running the script for the first time, you need to install the `Microsoft.Graph` module. Open a PowerShell terminal and run the following command: + +```powershell +Install-Module Microsoft.Graph -Scope CurrentUser -AllowClobber -Force +``` + +## Finding Your Plan ID + +The Plan ID is required to fetch tasks from a specific plan. You can find the Plan ID in the URL of your Planner board. + +1. Go to [Microsoft Planner](https://tasks.office.com/). +2. Open the plan you want to use. +3. Look at the URL in your browser's address bar. It will look something like this: + `https://planner.cloud.microsoft/webui/plan/PLANNER_ID/view/board?tid=BOARDID` +4. The `planId` is the alphanumeric string that follows `plan/`. Copy this value when the script prompts for it. + +### Video Tutorial + +For a visual guide on how to find the Plan ID, please watch this video (Covers Two methods): + +[Plan ID Tutorial](https://deakin365-my.sharepoint.com/:v:/g/personal/s223739207_deakin_edu_au/EeAm2dpPc3VGrh6DHzyHkOcBig0my4m3UYWG5HmGtFG09A?nav=eyJyZWZlcnJhbEluZm8iOnsicmVmZXJyYWxBcHAiOiJPbmVEcml2ZUZvckJ1c2luZXNzIiwicmVmZXJyYWxBcHBQbGF0Zm9ybSI6IldlYiIsInJlZmVycmFsTW9kZSI6InZpZXciLCJyZWZlcnJhbFZpZXciOiJNeUZpbGVzTGlua0NvcHkifX0&e=TVSwwN) + +## How to Run the Script + +[Script Demo](https://deakin365-my.sharepoint.com/:v:/g/personal/s223739207_deakin_edu_au/ETM6TddvX_9KhSbykjwiinMBgSIsZp8inzyoABN32SEFMg?nav=eyJyZWZlcnJhbEluZm8iOnsicmVmZXJyYWxBcHAiOiJPbmVEcml2ZUZvckJ1c2luZXNzIiwicmVmZXJyYWxBcHBQbGF0Zm9ybSI6IldlYiIsInJlZmVycmFsTW9kZSI6InZpZXciLCJyZWZlcnJhbFZpZXciOiJNeUZpbGVzTGlua0NvcHkifX0&e=7QDevO) + +1. Open a PowerShell terminal. +2. Navigate to the directory where the script is located. +3. Execute the script by running: `.\planner_pull.ps1` +4. Follow the on-screen prompts: + * **Choose an option:** Select whether to pull all tasks, only assigned ones, or assigned tasks within a date range. + * **Enter Date Range (if applicable):** If you choose to filter by date, you will be prompted to enter a start and end date in `YYYY-MM-DD` format. + * **Authenticate:** The script uses a device code flow for authentication. You will be prompted to open a URL in a web browser and enter a code to sign in to your Microsoft account. This is required before you can select a plan. + * **Choose a Plan:** + * If you have saved plans in `config.txt`, you will see a numbered list of them. Enter the number to select a plan. + * To add a new plan, choose the "Enter a new Plan ID" option (N). + * **Enter New Plan Details (if applicable):** + * Enter the new Plan ID. + * Enter a descriptive name for the plan. This name is for your reference and will be shown in the selection menu in the future. + * **Enter CSV Filename:** Provide a name for the output CSV file. + +## How it Works + +1. **Module Check:** The script first checks if the `Microsoft.Graph` module is installed. +2. **User Selection:** It prompts the user to choose between pulling all tasks, only assigned tasks, or assigned tasks within a date range. +3. **Date Range Input:** If the user chooses to filter by date, the script prompts for a start and end date. +4. **Authentication:** It connects to the Microsoft Graph API using a device code authentication flow. This is done early to ensure the script has the necessary permissions for subsequent steps. The script uses a minimal set of permissions required to read tasks and user profiles. +5. **Plan ID Configuration:** + * The script reads the `config.txt` file to find any saved plans. + * If saved plans are found, it displays them in a menu for the user to select. + * If the user opts to add a new plan, the script prompts for the new Plan ID and a descriptive name. + * The new plan entry is appended to `config.txt` in the format ` - `. This preserves existing entries. +6. **Data Retrieval:** + * It fetches all tasks for the selected Plan ID using `Get-MgPlannerPlanTask`. + * It fetches all buckets in the plan using `Get-MgPlannerPlanBucket` to create a lookup map of bucket IDs to bucket names. + * For each task, it retrieves detailed information using `Get-MgPlannerTaskDetail`. + * It retrieves user information for assigned users using `Get-MgUser`. +7. **Data Processing:** + * **Date Filtering:** If a date range is provided, the script filters out tasks that were not assigned within that range. + * **Bucket Name:** It matches the task's `bucketId` to the previously fetched list of buckets to get the bucket name. + * **Attachments:** It intelligently scans task references for GitHub links. It checks both the underlying URL and the display text (alias) for each reference. + * If a GitHub link is found in the URL, its display text is checked. If the display text is also a distinct GitHub link, both are preserved for context. Otherwise, only the clean URL is used. + * If a GitHub link is found only in the display text, the entire display text is captured. + This ensures that links are found even if entered incorrectly by users. + * **User Roles:** It determines user roles ("Main Contributor" or "Reviewer") based on the order of assignment. The first assigned user is considered the Main Contributor, and the last is the Reviewer. +8. **Output:** + * The script prompts the user for a desired output CSV filename. + * It compiles all the processed data. + * It displays a preview of the data in the console. + * It exports the final data to the specified CSV file. + +## Output CSV Columns + +* **Name:** The display name of the user assigned to the task. +* **Role:** The role of the user for that task (Main Contributor, Reviewer, or blank). +* **Task:** The title of the Planner task. +* **Bucket:** The name of the bucket the task belongs to. +* **Attachments:** A semicolon-separated list of GitHub URLs found in the task's references. If a reference has a descriptive name that is also a distinct GitHub link, it will be formatted as `DisplayText (URL)`. Otherwise, only the clean URL is shown. This column may also contain a message indicating if no GitHub links were found. + +**Date of Creation:** 22/08/2025 +**Author:** Ibitope Fatoki + diff --git a/src/content/docs/report-scripts/config.txt b/src/content/docs/report-scripts/config.txt new file mode 100644 index 00000000..55609d2e --- /dev/null +++ b/src/content/docs/report-scripts/config.txt @@ -0,0 +1,2 @@ +njykIFLDn0iAY1at7tACfcgADgBS - Ontrack Planner ID +mIelcQoIgkqhbM8WaPS3sMgAEmyV - Splashkit Plan ID diff --git a/src/content/docs/report-scripts/ontrack_tasks.csv b/src/content/docs/report-scripts/ontrack_tasks.csv new file mode 100644 index 00000000..203053db --- /dev/null +++ b/src/content/docs/report-scripts/ontrack_tasks.csv @@ -0,0 +1,114 @@ +"Name","Role","Task","Bucket","Attachments" +"ALEX BROWN","","Frontend Migrations: Update frontend migration progress list","Sprint 2 Code Review","https://github.com/thoth-tech/doubtfire-web/pull/397" +"ALEX BROWN","","Migrate groups.coffee","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-web/pull/382" +"ALEX BROWN","","Fix change_remotes.sh","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-deploy/pull/32" +"ALEX BROWN","","Migrate student-task-list.coffee","Frontend Migration","No GitHub links" +"ALEX BROWN","Main Contributor","Migrate runtime.coffee","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-web/pull/398" +"ALEX BROWN","","Migrate privacy-policy.coffee","Frontend Migration","No GitHub links" +"ALEX BROWN","Reviewer","Migrate outcome-service.coffee","Sprint 2 Code Review","https://github.com/thoth-tech/doubtfire-web/pull/390" +"ALEX BROWN","","Migrate Portfolio Welcome Step","Sprint 1 Complete","https://github.com/thoth-tech/doubtfire-web/pull/384; https://github.com/thoth-tech/documentation/pull/619" +"CHELAKA YASODHANA PATHBERIYAGE","Reviewer","Add observer property to unit-level roles","Visitor Enhancement - NOT CAPSTONE","No GitHub links" +"CHELAKA YASODHANA PATHBERIYAGE","","Migrate portfolio-review-step.coffee","Frontend Migration","No GitHub links" +"DISURU PASANJITH RATHNAYAKE RATHNAYAKE THUDUGALA BANDULAGE","","Migrate group-selector.coffee","Frontend Migration","No GitHub links" +"DISURU PASANJITH RATHNAYAKE RATHNAYAKE THUDUGALA BANDULAGE","","Migration: task-ilo-alignment-rater","Frontend Migration","https://github.com/thoth-tech/documentation/pull/603; https://github.com/thoth-tech/doubtfire-web/pull/338" +"DISURU PASANJITH RATHNAYAKE RATHNAYAKE THUDUGALA BANDULAGE","","Migration: group set selector","Sprint 2 Code Review","https://github.com/thoth-tech/doubtfire-web/pull/387; https://github.com/thoth-tech/documentation/pull/620" +"DISURU PASANJITH RATHNAYAKE RATHNAYAKE THUDUGALA BANDULAGE","Main Contributor","Migrate recorder-service.coffee","Sprint 2 Doing","https://github.com/thoth-tech/doubtfire-web/pull/391" +"DISURU PASANJITH RATHNAYAKE RATHNAYAKE THUDUGALA BANDULAGE","","Migrate outcome-service.coffee","Sprint 2 Code Review","https://github.com/thoth-tech/doubtfire-web/pull/390" +"DISURU PASANJITH RATHNAYAKE RATHNAYAKE THUDUGALA BANDULAGE","","Migrate Group-member-list","Sprint 1 Doing","https://github.com/thoth-tech/doubtfire-web/pull/393" +"DUY NGUYEN","Main Contributor","Update unit model to host more details","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-api/pull/71" +"DUY NGUYEN","","Enrich the unit card itself to show more info","CourseFlow","No GitHub links" +"DUY NGUYEN","Reviewer","Migrate runtime.coffee","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-web/pull/398" +"DUY NGUYEN","Reviewer","Migrate groups.coffee","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-web/pull/382" +"DUY NGUYEN","Main Contributor","Refactor CourseFlow code base for better components maintainence","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-web/pull/385" +"DUY NGUYEN","","Add option to overload units to a teaching period","CourseFlow","No GitHub links" +"DUY NGUYEN","Main Contributor","Create test data for CourseFlow ( Course map, Course map units, Units)","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-api/pull/70" +"EDWARD NGUYEN","Main Contributor","Add summary of skills component","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-web/pull/396" +"EDWARD NGUYEN","Reviewer","Update unit model to host more details","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-api/pull/71" +"EDWARD NGUYEN","","Create a component to display credit points achieved.","CourseFlow","No GitHub links" +"EDWARD NGUYEN","","Populate the overlay component for the detailed unit with content of the unit - this needs to include unit requirements.","CourseFlow","https://github.com/thoth-tech/doubtfire-web/pull/215" +"EDWARD NGUYEN","Main Contributor","Add ability to mark unit as complete (phase 4)","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-web/pull/386 (https://github.com/thoth-tech/doubtfire-web/pull/396)" +"EDWARD NGUYEN","","Create test data for CourseFlow ( Course map, Course map units, Units)","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-api/pull/70" +"EDWARD NGUYEN","Reviewer","Remove alignment-bar-chart.coffee","Sprint 2 Code Review","https://github.com/thoth-tech/doubtfire-web/pull/395" +"EKAM BHULLAR","","Implement ngx graphs/charts in UI","Tutor Times","https://github.com/thoth-tech/doubtfire-web/pull/392" +"EKAM BHULLAR","Reviewer","Add summary of skills component","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-web/pull/396" +"EKAM BHULLAR","Reviewer","Refactor CourseFlow code base for better components maintainence","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-web/pull/385" +"EKAM BHULLAR","","Implement Real-Time Notification System","Tutor Times","No GitHub links" +"EKAM BHULLAR","","Migrate task-ilo-alignment-editor.coffee","Frontend Migration","No GitHub links" +"GAURAV MANOHAR MYANA","","Build Dashboard for admin","Tutor Times","No GitHub links" +"GAURAV MANOHAR MYANA","Reviewer","OnTrack Style Guide v0.1","Colour Vision Deficiency Accessibility","No GitHub links" +"HASINDU DESHITHA WELARATHNE","Main Contributor","Migrate students-list.coffee","Frontend Migration","https://github.com/thoth-tech/documentation/pull/597; https://github.com/thoth-tech/doubtfire-web/pull/389" +"HASINDU DESHITHA WELARATHNE","","Migrate recorder-service.coffee","Sprint 2 Doing","https://github.com/thoth-tech/doubtfire-web/pull/391" +"IBI FATOKI","","Create Script to Pull tasks from Planner","Visitor Enhancement - NOT CAPSTONE","https://github.com/thoth-tech/doubtfire-astro/pull/50" +"IBI FATOKI","Main Contributor","Security Issue: Publicly Accessible API Documentation via Swagger","OnTrack x AppAttack","https://github.com/thoth-tech/doubtfire-api/pull/73; https://github.com/thoth-tech/doubtfire-astro/pull/48/files" +"IRIS CHEN","","Web Security Audit: Security Misconfiguration","Security","No GitHub links" +"IRIS CHEN","Main Contributor","Standardize API Authentication Requirements","Security","https://github.com/thoth-tech/doubtfire-api/pull/72" +"IRIS CHEN","","Frontend Migrations: Update frontend migration progress list","Sprint 2 Code Review","https://github.com/thoth-tech/doubtfire-web/pull/397" +"IRIS CHEN","Main Contributor","Web Security Audit: Cryptographic Failures","Security","https://github.com/thoth-tech/doubtfire-astro/pull/45" +"IRIS CHEN","","Fix Insecure Direct Object References (IDOR) Vulnerability","Security","No GitHub links" +"IRIS CHEN","","Fix IDOR Vulnerability - User Data Access","Security","No GitHub links" +"JASON MARK VELLUCCI","","Migrate runtime.coffee","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-web/pull/398" +"JASON MARK VELLUCCI","Main Contributor","Frontend Migrations: Update frontend migration progress list","Sprint 2 Code Review","https://github.com/thoth-tech/doubtfire-web/pull/397" +"JASON MARK VELLUCCI","","Migrate summary-task-status-scatter","Frontend Migration","No GitHub links" +"JASON MARK VELLUCCI","","Refactor CourseFlow code base for better components maintainence","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-web/pull/385" +"JASON MARK VELLUCCI","Reviewer","Clean up src/app/admin/modals/create-unit-modal leftover files","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-web/pull/388; https://github.com/thoth-tech/doubtfire-web/pull/350" +"JASON MARK VELLUCCI","Main Contributor","Migration: group set selector","Sprint 2 Code Review","https://github.com/thoth-tech/doubtfire-web/pull/387; https://github.com/thoth-tech/documentation/pull/620" +"JASON MARK VELLUCCI","Reviewer","8.x and 9.x build documentation","Sprint 2 Code Review","No GitHub links" +"JASON MARK VELLUCCI","Reviewer","Migrate Group-member-list","Sprint 1 Doing","https://github.com/thoth-tech/doubtfire-web/pull/393" +"JASON MARK VELLUCCI","","Update unit model to host more details","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-api/pull/71" +"JOSEPH KALAYATHANKAL SAJI","","Backend - Implement API Endpoints for SessionActivies and MarkingSession for Analytics","Sprint 2 Doing","No GitHub links" +"JOSEPH KALAYATHANKAL SAJI","Main Contributor","Backend - Create marking_sessions table","Sprint 1 Review","https://github.com/martindolores/doubtfire-api/pull/4" +"JOSEPH KALAYATHANKAL SAJI","Main Contributor","OnTrack Style Guide v0.1","Colour Vision Deficiency Accessibility","No GitHub links" +"JOSEPH KALAYATHANKAL SAJI","Reviewer","Backend - Create session_activities table","Sprint 1 Review","https://github.com/martindolores/doubtfire-api/pull/3" +"JOSH BEVAN","Reviewer","Migration: group set selector","Sprint 2 Code Review","https://github.com/thoth-tech/doubtfire-web/pull/387; https://github.com/thoth-tech/documentation/pull/620" +"JOSH BEVAN","Reviewer","Frontend Migrations: Update frontend migration progress list","Sprint 2 Code Review","https://github.com/thoth-tech/doubtfire-web/pull/397" +"JOSH TALEV","Main Contributor","Clean up src/app/admin/modals/create-unit-modal leftover files","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-web/pull/388; https://github.com/thoth-tech/doubtfire-web/pull/350" +"JOSH TALEV","Main Contributor","Migrate confirmation-modal.coffee","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-web/pull/381" +"JOSH TALEV","Main Contributor","Migrate Portfolio Welcome Step","Sprint 1 Complete","https://github.com/thoth-tech/doubtfire-web/pull/384; https://github.com/thoth-tech/documentation/pull/619" +"JOSH TALEV","Main Contributor","Backend - Create session_activities table","Sprint 1 Review","https://github.com/martindolores/doubtfire-api/pull/3" +"JOSH TALEV","","Migration: group set selector","Sprint 2 Code Review","https://github.com/thoth-tech/doubtfire-web/pull/387; https://github.com/thoth-tech/documentation/pull/620" +"LACHLAN MACKIE ROBINSON","Main Contributor","8.x and 9.x build documentation","Sprint 2 Code Review","No GitHub links" +"LACHLAN MACKIE ROBINSON","Main Contributor","Migrate outcome-service.coffee","Sprint 2 Code Review","https://github.com/thoth-tech/doubtfire-web/pull/390" +"LACHLAN MACKIE ROBINSON","","Migrate utilService.coffee","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-web/pull/383" +"LACHLAN MACKIE ROBINSON","","Migration: group set selector","Sprint 2 Code Review","https://github.com/thoth-tech/doubtfire-web/pull/387; https://github.com/thoth-tech/documentation/pull/620" +"LACHLAN MACKIE ROBINSON","Main Contributor","Remove alignment-bar-chart.coffee","Sprint 2 Code Review","https://github.com/thoth-tech/doubtfire-web/pull/395" +"LAMIA TABASSUM","","Add observer property to unit-level roles","Visitor Enhancement - NOT CAPSTONE","No GitHub links" +"MARTIN JOHN DOLORES","","Migrate confirmation-modal.coffee","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-web/pull/381" +"MARTIN JOHN DOLORES","Main Contributor","Migrate utilService.coffee","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-web/pull/383" +"MARTIN JOHN DOLORES","","Backend - Create new SessionTracker Service","Sprint 2 Doing","No GitHub links" +"MARTIN JOHN DOLORES","Reviewer","Backend - Create marking_sessions table","Sprint 1 Review","https://github.com/martindolores/doubtfire-api/pull/4" +"MARTIN JOHN DOLORES","","Backend - Integrate SessionTracker service across related entities","Tutor Times","No GitHub links" +"MARTIN JOHN DOLORES","Main Contributor","Migrate groups.coffee","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-web/pull/382" +"MARTIN JOHN DOLORES","","Migrate Portfolio Welcome Step","Sprint 1 Complete","https://github.com/thoth-tech/doubtfire-web/pull/384; https://github.com/thoth-tech/documentation/pull/619" +"MARTIN JOHN DOLORES","Reviewer","Create test data for CourseFlow ( Course map, Course map units, Units)","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-api/pull/70" +"MARTIN JOHN DOLORES","","Web Security Audit: Cryptographic Failures","Security","https://github.com/thoth-tech/doubtfire-astro/pull/45" +"MARTIN JOHN DOLORES","Reviewer","Standardize API Authentication Requirements","Security","https://github.com/thoth-tech/doubtfire-api/pull/72" +"MARTIN JOHN DOLORES","","Backend - Create session_activities table","Sprint 1 Review","https://github.com/martindolores/doubtfire-api/pull/3" +"MARTIN JOHN DOLORES","Reviewer","Security Issue: Publicly Accessible API Documentation via Swagger","OnTrack x AppAttack","https://github.com/thoth-tech/doubtfire-api/pull/73; https://github.com/thoth-tech/doubtfire-astro/pull/48/files" +"MILLICENT ACHIENG AMOLO","","Fix Frontend Admin Route Access Controls","Security","https://github.com/thoth-tech/doubtfire-astro/pull/49#issue-3340358209" +"PARTH SANJAYKUMAR VAGHELA","","Migrate unit-dates-selector.coffee","Sprint 2 Doing","No GitHub links" +"PASINDU FERNANDO","","Migrate students-list.coffee","Frontend Migration","https://github.com/thoth-tech/documentation/pull/597; https://github.com/thoth-tech/doubtfire-web/pull/389" +"PASINDU FERNANDO","Main Contributor","Migrate Group-member-list","Sprint 1 Doing","https://github.com/thoth-tech/doubtfire-web/pull/393" +"PASINDU FERNANDO","Reviewer","Migrate recorder-service.coffee","Sprint 2 Doing","https://github.com/thoth-tech/doubtfire-web/pull/391" +"PASINDU FERNANDO","Reviewer","Migrate confirmation-modal.coffee","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-web/pull/381" +"PASINDU FERNANDO","Reviewer","Migrate Portfolio Welcome Step","Sprint 1 Complete","https://github.com/thoth-tech/doubtfire-web/pull/384; https://github.com/thoth-tech/documentation/pull/619" +"RASHI AGRAWAL","Reviewer","Frontend: Add new SGE page","Staff Grant Extension","https://github.com/thoth-tech/doubtfire-web/pull/394" +"RASHI AGRAWAL","","Test backend and frontend integration","Sprint 1 Complete","No GitHub links" +"RASHI AGRAWAL","","Migrate unit-ilo-edit-modal.coffee","Frontend Migration","No GitHub links" +"SAHIRU HESHAN WITHANAGE","","Remove alignment-bar-chart.coffee","Sprint 2 Code Review","https://github.com/thoth-tech/doubtfire-web/pull/395" +"SAHIRU HESHAN WITHANAGE","","Add summary of skills component","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-web/pull/396" +"SAHIRU HESHAN WITHANAGE","Reviewer","Add ability to mark unit as complete (phase 4)","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-web/pull/386 (https://github.com/thoth-tech/doubtfire-web/pull/396)" +"SAHIRU HESHAN WITHANAGE","","Frontend Work: Student search and selection","Staff Grant Extension","https://github.com/thoth-tech/doubtfire-web/pull/359" +"SAHIRU HESHAN WITHANAGE","Main Contributor","Frontend: Add new SGE page","Staff Grant Extension","https://github.com/thoth-tech/doubtfire-web/pull/394" +"SAMINDI SITUMYA RATNAYAKE MUDIYANSELAGE","","Frontend: Add new SGE page","Staff Grant Extension","https://github.com/thoth-tech/doubtfire-web/pull/394" +"SAMINDI SITUMYA RATNAYAKE MUDIYANSELAGE","","Standardize API Authentication Requirements","Security","https://github.com/thoth-tech/doubtfire-api/pull/72" +"SAMINDI SITUMYA RATNAYAKE MUDIYANSELAGE","","Add ability to mark unit as complete (phase 4)","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-web/pull/386 (https://github.com/thoth-tech/doubtfire-web/pull/396)" +"SAMINDI SITUMYA RATNAYAKE MUDIYANSELAGE","","Backend- In-system notification system","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-api/pull/69" +"SAMINDI SITUMYA RATNAYAKE MUDIYANSELAGE","","Update documentation in doubtfire-astro for staff grant extension new APIs and FE components","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-astro/pull/40" +"SAMINDI SITUMYA RATNAYAKE MUDIYANSELAGE","","Frontend Work: Set up notification UI","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-web/pull/353" +"SAMINDI SITUMYA RATNAYAKE MUDIYANSELAGE","Reviewer","Migrate utilService.coffee","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-web/pull/383" +"SAMINDI SITUMYA RATNAYAKE MUDIYANSELAGE","Reviewer","Web Security Audit: Cryptographic Failures","Security","https://github.com/thoth-tech/doubtfire-astro/pull/45" +"TRIET LAM","","Migrate task-dashboard.coffee","Frontend Migration","No GitHub links" +"TRIET LAM","","Cleanup feedback.coffee","Frontend Migration","https://github.com/thoth-tech/doubtfire-web/pull/399" +"WAEL ALAHMADI","Main Contributor","Add observer property to unit-level roles","Visitor Enhancement - NOT CAPSTONE","No GitHub links" +"WAEL ALAHMADI","Reviewer","Migrate students-list.coffee","Frontend Migration","https://github.com/thoth-tech/documentation/pull/597; https://github.com/thoth-tech/doubtfire-web/pull/389" +"WAEL ALAHMADI","","Develop Tutor Time Dashboard ","Tutor Times","No GitHub links" From f8d1a387beb1a23aaa18ef1ed259cae4802a0d57 Mon Sep 17 00:00:00 2001 From: Steven Dalamaras Date: Thu, 4 Dec 2025 22:16:47 +1000 Subject: [PATCH 08/17] Script refactoring --- .../docs/report-scripts/Planner_Pull.ps1 | 819 +++++++++++++----- .../Planner_Pull_Documentation.md | 116 +-- src/content/docs/report-scripts/config.json | 10 + .../docs/report-scripts/logs/script.log | 57 ++ 4 files changed, 751 insertions(+), 251 deletions(-) create mode 100644 src/content/docs/report-scripts/config.json create mode 100644 src/content/docs/report-scripts/logs/script.log diff --git a/src/content/docs/report-scripts/Planner_Pull.ps1 b/src/content/docs/report-scripts/Planner_Pull.ps1 index 4cfb9d64..f24ce06b 100644 --- a/src/content/docs/report-scripts/Planner_Pull.ps1 +++ b/src/content/docs/report-scripts/Planner_Pull.ps1 @@ -1,241 +1,518 @@ -# Check for Microsoft.Graph module -if (-not (Get-Module -ListAvailable -Name Microsoft.Graph)) { - Write-Host "Microsoft.Graph module is not installed. Please install it by running: Install-Module Microsoft.Graph -Scope CurrentUser -AllowClobber -Force" - exit +# Script: Planner_pull.ps1 +# Description: Pulls tasks from a Microsoft Planner plan and exports them to a CSV, JSON, or Markdown file. +# Version: 3.3 +# Author: Ibitope Fatoki + +[CmdletBinding()] +param ( + [string]$ConfigPath = ".\config.json" +) + +# --- Script-level configuration --- +# Set logging level. Options: DEBUG, INFO, WARN, ERROR +$Script:LogLevel = 'INFO' + +# --- Function Definitions --- + +function Write-Log { + param( + [string]$Message, + [string]$Level = "INFO", + [string]$LogPath = ".\logs\script.log" + ) + + $logLevels = @{ + 'DEBUG' = 1 + 'INFO' = 2 + 'WARN' = 3 + 'ERROR' = 4 + } + + if ($logLevels[$Level.ToUpper()] -ge $logLevels[$Script:LogLevel.ToUpper()]) { + try { + $logDirectory = Split-Path -Path $LogPath -Parent + if (-not (Test-Path -Path $logDirectory -PathType Container)) { + New-Item -Path $logDirectory -ItemType Directory -Force -ErrorAction Stop | Out-Null + } + $logEntry = "$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss') [$($Level.ToUpper())] $Message" + Add-Content -Path $LogPath -Value $logEntry + } + catch { + Write-Warning "Could not write to log file at '$LogPath'. Error: $_" + } + } } -# --- Menu Selection --- -Write-Host "How would you like to pull the tasks? Select the relevant Option" -Write-Host "1. Pull all tasks (including unassigned)" -Write-Host "2. Pull only tasks with assigned users ONLY" -Write-Host "3. Pull tasks of assigned users based on a date range(great for progress and handover Doc)" -$selection = Read-Host -Prompt "Enter your choice (1, 2 or 3)" +function Select-TableColumns { + param($Data) + Write-Log -Level DEBUG -Message "Entering Select-TableColumns function." -if ($selection -ne '1' -and $selection -ne '2' -and $selection -ne '3') { - Write-Host "Invalid selection. Exiting." - exit + if (-not $Data) { + Write-Log -Level WARN -Message "Select-TableColumns called with no data." + return $null + } + + $availableColumns = $Data[0].PSObject.Properties.Name + Write-Log -Level DEBUG -Message "Available columns for selection: $($availableColumns -join ', ')" + Write-Host "`nSelect the columns to include in the Markdown report:" + for ($i = 0; $i -lt $availableColumns.Count; $i++) { + Write-Host ("{0}. {1}" -f ($i + 1), $availableColumns[$i]) + } + + $choice = Read-Host -Prompt "Enter the column numbers, separated by commas (e.g., 1,3,4), or press Enter for all" + Write-Log -Level INFO -Message "User column selection: '$choice'" + + if ([string]::IsNullOrWhiteSpace($choice)) { + Write-Log -Level DEBUG -Message "User selected all columns." + return $availableColumns + } + + $selectedColumns = @() + $choices = $choice -split ',' | ForEach-Object { $_.Trim() } + + foreach ($c in $choices) { + if ($c -match "^\d+$" -and [int]$c -ge 1 -and [int]$c -le $availableColumns.Count) { + $selectedIndex = [int]$c - 1 + if ($selectedColumns -notcontains $availableColumns[$selectedIndex]) { + $selectedColumns += $availableColumns[$selectedIndex] + } + } else { + Write-Log -Level WARN -Message "Invalid column selection: '$c'. Aborting export." + Write-Host "Invalid selection: '$c'. Aborting export." + return $null + } + } + + Write-Log -Level DEBUG -Message "Returning selected columns: $($selectedColumns -join ', ')" + return $selectedColumns +} + +function ConvertTo-MarkdownTable { + param ($Data) + Write-Log -Level DEBUG -Message "Entering ConvertTo-MarkdownTable function." + + if (-not $Data) { + Write-Log -Level WARN -Message "ConvertTo-MarkdownTable called with no data." + return "" + } + + $headers = $Data[0].PSObject.Properties.Name + $headerLine = "| $($headers -join ' | ') |" + $separatorArray = $headers | ForEach-Object { '-' * $_.Length } + $separatorLine = "| $($separatorArray -join ' | ') |" + + $dataRows = $Data | ForEach-Object { + $row = $_ + $values = $headers | ForEach-Object { + $value = $row.$_ + if ($null -eq $value) { + $value = "" + } + $sanitizedValue = $value.ToString() -replace '(\r|\n)', ' ' -replace '\|', '|' + $sanitizedValue + } + "| $($values -join ' | ') |" + } + + # Flatten the array of lines before joining to prevent nested array issues. + $allLines = @($headerLine, $separatorLine) + $dataRows + $markdown = $allLines -join [System.Environment]::NewLine + + Write-Log -Level DEBUG -Message "Exiting ConvertTo-MarkdownTable function. Markdown length: $($markdown.Length)" + return $markdown } -if ($selection -eq '3') { - $startDateStr = Read-Host -Prompt "Enter the start date (YYYY-MM-DD)" - $endDateStr = Read-Host -Prompt "Enter the end date (YYYY-MM-DD)" +function Connect-ToGraph { + Write-Log -Level DEBUG -Message "Entering Connect-ToGraph function." + Write-Host "Importing Required Microsoft.Graph sub modules..." + try { + Import-Module Microsoft.Graph.Planner -ErrorAction Stop + Import-Module Microsoft.Graph.Users -ErrorAction Stop + } + catch { + Write-Log -Level "ERROR" -Message "Failed to import required modules: $_" + Write-Error "Failed to import required modules. Please ensure Microsoft.Graph is installed correctly." + exit 1 + } + Write-Host "Authenticating to Microsoft Graph..." try { - $startDate = [datetime]::ParseExact($startDateStr, 'yyyy-MM-dd', $null) - $endDate = [datetime]::ParseExact($endDateStr, 'yyyy-MM-dd', $null).AddDays(1) # Adds one day to include the entire end day + $context = Get-MgContext + if ($context) { + Write-Log -Level INFO -Message "Already authenticated as $($context.Account)" + Write-Host "Already authenticated as $($context.Account)" + return $true + } + Connect-MgGraph -Scopes @("Tasks.Read", "Tasks.ReadWrite", "User.ReadBasic.All") -UseDeviceCode -Audience "organizations" + $context = Get-MgContext + if (-not $context) { + throw "Failed to establish connection" + } + Write-Host "Authentication successful as $($context.Account)" + Write-Log -Level INFO -Message "Authentication successful as $($context.Account)" + return $true } catch { - Write-Host "Invalid date format. Please use YYYY-MM-DD. Exiting." - exit + Write-Log -Level "ERROR" -Message "Authentication failed: $_" + Write-Error "Authentication failed: $_" + exit 1 + } +} + +function Get-Configurations { + param ([string]$Path) + Write-Log -Level DEBUG -Message "Entering Get-Configurations function for path: $Path" + if (Test-Path $Path) { + try { + $content = Get-Content -Path $Path -Raw + if ([string]::IsNullOrWhiteSpace($content)) { + Write-Log -Level INFO -Message "Config file is empty. Returning empty array." + return @() + } + $data = $content | ConvertFrom-Json + Write-Log -Level DEBUG -Message "Successfully read and parsed config file." + return @($data) + } + catch { + Write-Log -Level "ERROR" -Message "Failed to read or parse config file '$Path': $_" + Write-Error "Could not read or parse config file '$Path'. It might be corrupted." + return @() + } } + Write-Log -Level INFO -Message "Config file not found at '$Path'. Returning empty array." + return @() } -# Import required sub modules -Write-Host "Importing Required Microsoft.Graph sub modules..." -Import-Module Microsoft.Graph.Planner -Import-Module Microsoft.Graph.Users - -# Authenticate to Microsoft Graph -Write-Host "Authenticating to Microsoft Graph..." -try { - # Connect to Microsoft Graph with required permissions - Connect-MgGraph -Scopes @( - "Tasks.Read", - "Tasks.ReadWrite", - "User.ReadBasic.All" - ) -UseDeviceCode -Audience "organizations" - - # Verify connection - $context = Get-MgContext - if (-not $context) { - throw "Failed to establish connection" - } - Write-Host "Authentication successful as $($context.Account)" +function Save-Configurations { + param ([string]$Path, $ConfigData) + Write-Log -Level DEBUG -Message "Entering Save-Configurations function for path: $Path" + try { + $jsonOutput = if ($ConfigData -is [array] -and $ConfigData.Count -eq 1) { + Write-Log -Level DEBUG -Message "Saving single-item array with comma-prefix for backwards compatibility." + ,$ConfigData | ConvertTo-Json -Depth 5 + } else { + Write-Log -Level DEBUG -Message "Saving multi-item array or empty array." + $ConfigData | ConvertTo-Json -Depth 5 + } + $jsonOutput | Set-Content -Path $Path + Write-Log -Level INFO -Message "Successfully saved configuration to '$Path'." + } + catch { + $errorMessage = $_.Exception.Message + Write-Log -Level "ERROR" -Message "Failed to save config file '$Path': $errorMessage" + Write-Error "Failed to save configuration to '$Path'. Reason: $errorMessage" + } } -catch { - Write-Error "Authentication failed: $_" - exit 1 + +function Manage-Configurations { + param ([string]$ConfigPath) + Write-Log -Level INFO -Message "Entering plan management utility." + + while ($true) { + [array]$savedPlans = Get-Configurations -Path $ConfigPath + + Write-Host "`n--- Manage Saved Plans ---" + if ($savedPlans.Count -eq 0) { + Write-Host "No saved plans found." + } else { + for ($i = 0; $i -lt $savedPlans.Count; $i++) { + Write-Host ("{0}. {1} ({2})" -f ($i + 1), $savedPlans[$i].name, $savedPlans[$i].planId) + } + } + + Write-Host "--------------------------" + Write-Host "A. Add a new plan" + Write-Host "D. Delete a plan" + Write-Host "Q. Quit to main menu" + + $choice = Read-Host -Prompt "Enter your choice" + Write-Log -Level INFO -Message "User selected management option: '$choice'" + + switch ($choice.ToUpper()) { + 'A' { + $newPlanId = Read-Host -Prompt "Please enter the new Plan ID" + $planName = Read-Host -Prompt "Please enter a name for this plan" + + if (-not $newPlanId -or -not $planName) { + Write-Log -Level WARN -Message "User tried to add a plan with empty ID or name." + Write-Host "Plan ID and Plan Name cannot be empty." + continue + } + Write-Log -Level INFO -Message "Adding new plan: Name='$planName', ID='$newPlanId'" + $newPlan = @{ planId = $newPlanId; name = $planName } + $savedPlans += $newPlan + Save-Configurations -Path $ConfigPath -ConfigData $savedPlans + Write-Host "Plan '$planName' added successfully." + } + 'D' { + if ($savedPlans.Count -eq 0) { + Write-Host "No plans to delete." + continue + } + + Write-Host "`nWhich plan would you like to delete?" + for ($i = 0; $i -lt $savedPlans.Count; $i++) { + Write-Host ("{0}. {1}" -f ($i + 1), $savedPlans[$i].name) + } + + $delChoice = Read-Host -Prompt "Enter the number of the plan to delete" + if ($delChoice -match "^\d+$" -and [int]$delChoice -ge 1 -and [int]$delChoice -le $savedPlans.Count) { + $selectedIndex = [int]$delChoice - 1 + $planNameToDelete = $savedPlans[$selectedIndex].name + Write-Log -Level INFO -Message "User chose to delete plan #$delChoice ('$planNameToDelete')." + $confirmation = Read-Host "Are you sure you want to delete '$planNameToDelete'? (y/n)" + if ($confirmation.ToUpper() -eq 'Y') { + Write-Log -Level INFO -Message "User confirmed deletion." + $savedPlans = $savedPlans | Where-Object { $_.planId -ne $savedPlans[$selectedIndex].planId } + Save-Configurations -Path $ConfigPath -ConfigData $savedPlans + Write-Host "'$planNameToDelete' has been deleted." + } else { + Write-Log -Level INFO -Message "User cancelled deletion." + } + } else { + Write-Log -Level WARN -Message "User entered invalid number for deletion: '$delChoice'" + Write-Host "Invalid number." + } + } + 'Q' { + Write-Log -Level INFO -Message "Exiting plan management utility." + return + } + default { + Write-Log -Level WARN -Message "User entered invalid management option: '$choice'" + Write-Host "Invalid option." + } + } + } } -# --- Plan ID Configuration --- -$configPath = ".\config.txt" -$planId = $null +function Select-PlannerPlan { + param ([string]$ConfigPath) + Write-Log -Level DEBUG -Message "Entering Select-PlannerPlan function." + [array]$savedPlans = Get-Configurations -Path $ConfigPath + $planId = $null -if (Test-Path $configPath) { - $savedPlans = @(Get-Content $configPath | Where-Object { $_ -match ".+ - .+" }) # Filter for valid entries - if ($savedPlans) { - Write-Host "Please choose a saved Plan ID or enter a new one:" + if ($savedPlans.Count -gt 0) { + Write-Host "Please choose a saved Plan or enter a new one:" for ($i = 0; $i -lt $savedPlans.Count; $i++) { - # Display only the name part - Write-Host ("{0}. {1}" -f ($i + 1), $savedPlans[$i].Split(' - ', 2)[1]) + Write-Host ("{0}. {1}" -f ($i + 1), $savedPlans[$i].name) } - Write-Host "N. Enter a new Plan ID" + Write-Host "N. Enter a new Plan" - $choice = Read-Host -Prompt "Select an ID" + $choice = Read-Host -Prompt "Select a plan" + Write-Log -Level INFO -Message "User plan selection: '$choice'" if ($choice -eq 'N' -or $choice -eq 'n') { - # Flag to enter a new Plan ID $planId = $null } elseif ($choice -match "^\d+$" -and [int]$choice -ge 1 -and [int]$choice -le $savedPlans.Count) { $selectedIndex = [int]$choice - 1 - # Extract the ID part - $planId = $savedPlans[$selectedIndex].Split(' - ', 2)[0] + $planId = $savedPlans[$selectedIndex].planId } else { + Write-Log -Level WARN -Message "Invalid plan selection. Exiting." Write-Host "Invalid selection. Exiting." exit } } + + if (-not $planId) { + Write-Log -Level INFO -Message "User chose to enter a new plan." + $newPlanId = Read-Host -Prompt "Please enter the new Plan ID" + $planName = Read-Host -Prompt "Please enter a name for this plan (for your reference)" + + if (-not $newPlanId -or -not $planName) { + Write-Log -Level WARN -Message "New plan details were empty. Exiting." + Write-Host "Plan ID and Plan Name cannot be empty. Exiting." + exit + } + + $newPlan = @{ planId = $newPlanId; name = $planName } + $savedPlans += $newPlan + Save-Configurations -Path $ConfigPath -ConfigData $savedPlans + Write-Host "New Plan saved: $planName" + $planId = $newPlanId + } + + Write-Log -Level INFO -Message "Using Plan ID: $planId" + Write-Host "Using Plan ID: $planId" + return $planId } -# If no plan was selected from the menu, or if config is empty/doesn't exist -if (-not $planId) { - $newPlanId = Read-Host -Prompt "Please enter the new Plan ID" - $planName = Read-Host -Prompt "Please enter a name for this plan (for your reference)" +function Select-PlannerBucket { + param ([string]$PlanId) + Write-Log -Level DEBUG -Message "Entering Select-PlannerBucket for Plan ID: $PlanId" + Write-Host "Fetching buckets for plan..." + try { + $buckets = Get-MgPlannerPlanBucket -PlannerPlanId $PlanId -ErrorAction Stop + } + catch { + Write-Log -Level "ERROR" -Message "Failed to get buckets for plan '$PlanId': $_" + Write-Error "Failed to get buckets for plan '$PlanId': $_" + return $null + } - if (-not $newPlanId -or -not $planName) { - Write-Host "Plan ID and Plan Name cannot be empty. Exiting." - exit + if ($buckets.Count -eq 0) { + Write-Log -Level WARN -Message "No buckets found in plan '$PlanId'." + Write-Host "No buckets found in this plan." + return $null } - $newEntry = "$newPlanId - $planName" + Write-Host "Please choose a bucket:" + for ($i = 0; $i -lt $buckets.Count; $i++) { + Write-Host ("{0}. {1}" -f ($i + 1), $buckets[$i].Name) + } - # Add the new entry to the config file - Add-Content -Path $configPath -Value $newEntry - Write-Host "New Plan ID saved: $newEntry" - $planId = $newPlanId + $choice = Read-Host -Prompt "Select a bucket" + if ($choice -match "^\d+$" -and [int]$choice -ge 1 -and [int]$choice -le $buckets.Count) { + $selectedIndex = [int]$choice - 1 + $selectedBucket = $buckets[$selectedIndex] + Write-Log -Level INFO -Message "User selected bucket: Name='$($selectedBucket.Name)', ID='$($selectedBucket.Id)'" + return $selectedBucket.Id + } + else { + Write-Log -Level WARN -Message "User entered invalid bucket selection: '$choice'" + Write-Host "Invalid selection. No bucket filter will be applied." + return $null + } } -Write-Host "Using Plan ID: $planId" +function Select-TaskStatus { + Write-Log -Level DEBUG -Message "Entering Select-TaskStatus function." + Write-Host "Filter by task status:" + Write-Host "1. Not Started" + Write-Host "2. In Progress" + Write-Host "3. Completed" + + $choice = Read-Host -Prompt "Enter your choice" + Write-Log -Level INFO -Message "User status filter selection: '$choice'" + switch ($choice) { + '1' { return "Not Started" } + '2' { return "In Progress" } + '3' { return "Completed" } + default { + Write-Log -Level WARN -Message "Invalid status selection." + Write-Host "Invalid selection. No status filter will be applied." + return $null + } + } +} + +function Get-TaskReferences { + param ($TaskDetails) + Write-Log -Level DEBUG -Message "Entering Get-TaskReferences function." + + if (-not $TaskDetails.References -or -not $TaskDetails.References.AdditionalProperties) { + return "No references" + } + + $foundUrls = @() + foreach ($key in $TaskDetails.References.AdditionalProperties.Keys) { + $url = [System.Net.WebUtility]::UrlDecode($key) + $alias = $TaskDetails.References.AdditionalProperties[$key].alias -# Initialize task data array -$taskData = @() + $urlIsGithub = $url -like "*github.com*" + $aliasIsGithub = $alias -like "*github.com*" -# Retrieve and process tasks -Write-Host "Fetching tasks from plan..." -try { + if ($urlIsGithub -and $aliasIsGithub) { + if ($url -eq $alias) { $foundUrls += $url } else { $foundUrls += "$alias ($url)" } + } elseif ($urlIsGithub) { + $foundUrls += $url + } elseif ($aliasIsGithub) { + $foundUrls += $alias + } + } + + if ($foundUrls.Count -gt 0) { + $result = $foundUrls -join "; " + Write-Log -Level DEBUG -Message "Found $($foundUrls.Count) GitHub links." + return $result + } else { + return "" # No GitHub links found + } +} + +function Get-PlannerTasks { + param ( + [string]$PlanId, + [string]$Selection, + [datetime]$StartDate, + [datetime]$EndDate, + [string]$BucketId, + [string]$Status + ) + Write-Log -Level INFO -Message "Starting Get-PlannerTasks for Plan ID '$PlanId'. Selection: $Selection, BucketId: $BucketId, Status: $Status" + + Write-Host "Fetching tasks from plan..." try { - $tasks = Get-MgPlannerPlanTask -PlannerPlanId $planId -ErrorAction Stop - if (-not $tasks) { - Write-Error "No tasks found in the plan." - exit + $allTasks = Get-MgPlannerPlanTask -PlannerPlanId $PlanId -ErrorAction Stop + if (-not $allTasks) { + Write-Log -Level WARN -Message "No tasks found in the plan." + Write-Warning "No tasks found in the plan." + return @() } + Write-Log -Level INFO -Message "Fetched $($allTasks.Count) total tasks from plan." - # Get all buckets in the plan to create a lookup table for bucket names - $buckets = Get-MgPlannerPlanBucket -PlannerPlanId $planId -ErrorAction Stop - $bucketNameLookup = @{} - foreach ($bucket in $buckets) { - $bucketNameLookup[$bucket.Id] = $bucket.Name + $tasksToProcess = $allTasks + if ($BucketId) { + $tasksToProcess = $tasksToProcess | Where-Object { $_.BucketId -eq $BucketId } + Write-Log -Level INFO -Message "Filtered by Bucket ID '$BucketId'. $($tasksToProcess.Count) tasks remain." + } + if ($Status) { + switch ($Status) { + "Not Started" { $tasksToProcess = $tasksToProcess | Where-Object { $_.PercentComplete -eq 0 } } + "In Progress" { $tasksToProcess = $tasksToProcess | Where-Object { $_.PercentComplete -gt 0 -and $_.PercentComplete -lt 100 } } + "Completed" { $tasksToProcess = $tasksToProcess | Where-Object { $_.PercentComplete -eq 100 } } + } + Write-Log -Level INFO -Message "Filtered by Status '$Status'. $($tasksToProcess.Count) tasks remain." + } + + if ($tasksToProcess.Count -eq 0) { + Write-Log -Level WARN -Message "No tasks match the specified filter criteria." + Write-Warning "No tasks match the specified filter criteria." + return @() } + + $buckets = Get-MgPlannerPlanBucket -PlannerPlanId $PlanId -ErrorAction Stop + $bucketNameLookup = @{} + foreach ($bucket in $buckets) { $bucketNameLookup[$bucket.Id] = $bucket.Name } + Write-Log -Level DEBUG -Message "Created lookup for $($buckets.Count) buckets." } catch { + Write-Log -Level "ERROR" -Message "Failed to get tasks or buckets for plan '$PlanId': $_" Write-Error "Failed to get tasks or buckets: $_" exit 1 } - foreach ($task in $tasks) { + $totalTasks = $tasksToProcess.Count + $processedCount = 0 - $bucketName = $bucketNameLookup[$task.BucketId] + $taskData = foreach ($task in $tasksToProcess) { + $processedCount++ + Write-Progress -Activity "Processing Tasks" -Status "Task $processedCount of $totalTasks" -PercentComplete (($processedCount / $totalTasks) * 100) + Write-Log -Level DEBUG -Message "Processing task: ID=$($task.Id), Title='$($task.Title)'" - Write-Host "Processing task: $($task.Title)" + $bucketName = $bucketNameLookup[$task.BucketId] - # Get task details for attachments and assigned users try { if (-not $task.Assignments) { if ($selection -eq '1') { $taskDetails = Get-MgPlannerTaskDetail -PlannerTaskId $task.Id - $attachments = "No references" - if ($taskDetails.References -and $taskDetails.References.AdditionalProperties) { - $foundUrls = @() - foreach ($key in $taskDetails.References.AdditionalProperties.Keys) { - $url = [System.Net.WebUtility]::UrlDecode($key) - $alias = $taskDetails.References.AdditionalProperties[$key].alias - - $urlIsGithub = $url -like "*github.com*" - $aliasIsGithub = $alias -like "*github.com*" - - if ($urlIsGithub -and $aliasIsGithub) { - if ($url -eq $alias) { - $foundUrls += $url - } - else { - $foundUrls += "$alias ($url)" - } - } - elseif ($urlIsGithub) { - $foundUrls += $url - } - elseif ($aliasIsGithub) { - $foundUrls += $alias - } - } - if ($foundUrls.Count -gt 0) { - $attachments = $foundUrls -join "; " - } - else { - $attachments = "No GitHub links" - } - } + $attachments = Get-TaskReferences -TaskDetails $taskDetails - $taskData += [PSCustomObject]@{ - Name = "Unassigned" - Role = "" - Task = $task.Title - Bucket = $bucketNameLookup[$task.BucketId] - Attachments = $attachments - } + [PSCustomObject]@{ Name = "Unassigned"; Role = ""; Task = $task.Title; Bucket = $bucketName; Attachments = $attachments; Status = switch ($task.PercentComplete) { 0 { "Not Started" } 100 { "Completed" } default { "In Progress" } } } } continue } $taskDetails = Get-MgPlannerTaskDetail -PlannerTaskId $task.Id + $attachments = Get-TaskReferences -TaskDetails $taskDetails - # Check for GitHub references - $attachments = "No references" - if ($taskDetails.References -and $taskDetails.References.AdditionalProperties) { - $foundUrls = @() - foreach ($key in $taskDetails.References.AdditionalProperties.Keys) { - $url = [System.Net.WebUtility]::UrlDecode($key) - $alias = $taskDetails.References.AdditionalProperties[$key].alias - - $urlIsGithub = $url -like "*github.com*" - $aliasIsGithub = $alias -like "*github.com*" - - if ($urlIsGithub -and $aliasIsGithub) { - if ($url -eq $alias) { - $foundUrls += $url - } - else { - $foundUrls += "$alias ($url)" - } - } - elseif ($urlIsGithub) { - $foundUrls += $url - } - elseif ($aliasIsGithub) { - $foundUrls += $alias - } - } - if ($foundUrls.Count -gt 0) { - $attachments = $foundUrls -join "; " - } - else { - $attachments = "No GitHub links" - } - } - else { - Write-Host "No references found in task details" - } - - # Get assigned users $assignmentKeys = $task.Assignments.AdditionalProperties.Keys $assignments = $task.Assignments.AdditionalProperties if ($assignmentKeys.Count -gt 0) { - # Sort keys by assignedDateTime $sortedKeys = $assignmentKeys | Sort-Object { [datetime]$assignments[$_].assignedDateTime } - $mainContributorKey = $sortedKeys[0] $reviewerKey = if ($sortedKeys.Count -gt 1) { $sortedKeys[-1] } else { $null } @@ -243,7 +520,8 @@ try { $assignment = $assignments[$userId] $assignedDateTime = [datetime]$assignment.assignedDateTime - if ($selection -eq '3' -and ($assignedDateTime -lt $startDate -or $assignedDateTime -ge $endDate)) { + if ($selection -eq '3' -and ($assignedDateTime -lt $StartDate -or $assignedDateTime -ge $EndDate)) { + Write-Log -Level DEBUG -Message "Skipping user '$userId' in task '$($task.Title)' due to date filter." continue } @@ -254,56 +532,193 @@ try { $userName = $user.DisplayName } catch { - Write-Host "Error getting user details: $_" + Write-Log -Level "WARN" -Message "Could not get user details for ID '$userId': $_" $userName = "$userId (Unable to get name)" } - # Add task to collection with individual user - $taskData += [PSCustomObject]@{ - Name = $userName - Role = $role - Task = $task.Title - Bucket = $bucketName - Attachments = $attachments - } + [PSCustomObject]@{ Name = $userName; Role = $role; Task = $task.Title; Bucket = $bucketName; Attachments = $attachments; Status = switch ($task.PercentComplete) { 0 { "Not Started" } 100 { "Completed" } default { "In Progress" } } } } } } catch { + Write-Log -Level "WARN" -Message "Failed to process task '$($task.Title)' (ID: $($task.Id)). Error: $_" Write-Warning "Failed to process task: $($task.Title). Error: $_" - # Add error entry - $taskData += [PSCustomObject]@{ - Name = "Error Processing" - Role = "" - Task = $task.Title - Bucket = $bucketName - Attachments = "Error retrieving attachments" - } + [PSCustomObject]@{ Name = "Error Processing"; Role = ""; Task = $task.Title; Bucket = $bucketName; Attachments = "Error retrieving details"; Status = "Unknown" } } } + Write-Progress -Activity "Processing Tasks" -Completed + Write-Log -Level INFO -Message "Finished processing tasks. Returning $($taskData.Count) records." + return $taskData +} - # Sort the data by Name - $taskData = $taskData | Sort-Object Name +function Export-Data { + param ($TaskData) + Write-Log -Level DEBUG -Message "Entering Export-Data function." + + if (-not $TaskData) { + Write-Log -Level WARN -Message "No data passed to Export-Data." + Write-Host "No data to export." + return + } + + $sortedData = $TaskData | Sort-Object Name - # Display preview of the data Write-Host "`nPreview of exported data:" - $taskData | Format-Table -AutoSize + $previewColumns = @('Name', 'Task', 'Bucket', 'Status') + $sortedData | Format-Table -Property $previewColumns -AutoSize + + $formatChoice = Read-Host -Prompt "Choose export format: (1) CSV, (2) JSON, or (3) Markdown" + Write-Log -Level INFO -Message "User chose export format: $formatChoice" + + # --- Column Selection for applicable formats --- + $reportData = $sortedData + if ($formatChoice -eq '1' -or $formatChoice -eq '3') { # CSV or Markdown + $formatName = if ($formatChoice -eq '1') { "CSV" } else { "Markdown" } + $selectedColumns = Select-TableColumns -Data $sortedData -FormatName $formatName + if (-not $selectedColumns) { + Write-Log -Level WARN -Message "User cancelled or failed column selection. Aborting export." + return + } + + if ($selectedColumns.Count -ne $sortedData[0].PSObject.Properties.Name.Count) { + $reportData = $sortedData | Select-Object -Property $selectedColumns + Write-Log -Level INFO -Message "User filtered columns for export: $($selectedColumns -join ', ')" + } + } - # Get output filename from user - $outputFile = Read-Host -Prompt "Enter the desired name for the CSV file" - if (-not ($outputFile.EndsWith(".csv"))) { - $outputFile = "$outputFile.csv" + # --- File Export Logic --- + switch ($formatChoice) { + '1' { # CSV + $outputFile = Read-Host -Prompt "Enter the desired name for the CSV file" + if (-not ($outputFile.EndsWith(".csv"))) { $outputFile = "$outputFile.csv" } + Write-Log -Level INFO -Message "Exporting to CSV at '$outputFile'" + try { + $reportData | Export-Csv -Path $outputFile -NoTypeInformation -Force + Write-Host "Tasks exported successfully to $outputFile" + } + catch { + Write-Log -Level "ERROR" -Message "Failed to export CSV to '$outputFile': $_" + Write-Error "Failed to export CSV file: $_" + } + } + '2' { # JSON + $outputFile = Read-Host -Prompt "Enter the desired name for the JSON file" + if (-not ($outputFile.EndsWith(".json"))) { $outputFile = "$outputFile.json" } + Write-Log -Level INFO -Message "Exporting to JSON at '$outputFile'" + try { + $reportData | ConvertTo-Json -Depth 10 | Set-Content -Path $outputFile + Write-Host "Tasks exported successfully to $outputFile" + } + catch { + Write-Log -Level "ERROR" -Message "Failed to export JSON to '$outputFile': $_" + Write-Error "Failed to export JSON file: $_" + } + } + '3' { # Markdown + $outputFile = Read-Host -Prompt "Enter the desired name for the MD file" + if (-not ($outputFile.EndsWith(".md"))) { $outputFile = "$outputFile.md" } + Write-Log -Level INFO -Message "Exporting to Markdown at '$outputFile'" + try { + $markdownTable = ConvertTo-MarkdownTable -Data $reportData + Set-Content -Path $outputFile -Value $markdownTable + Write-Host "Tasks exported successfully to $outputFile" + } + catch { + Write-Log -Level "ERROR" -Message "Failed to export Markdown to '$outputFile': $_" + Write-Error "Failed to export Markdown file: $_" + } + } + default { + Write-Log -Level WARN -Message "User entered invalid export format: $formatChoice" + Write-Host "Invalid format selection. Export cancelled." + } } +} + +# --- Main Script --- - # Export to CSV - $taskData | Export-Csv -Path $outputFile -NoTypeInformation -Force - Write-Host "Tasks exported successfully to $outputFile" +# --- Pre-flight Checks --- +# Check for PowerShell 7+ +if ($PSVersionTable.PSVersion.Major -lt 7) { + Write-Error "This script requires PowerShell 7 or higher. You are running version $($PSVersionTable.PSVersion). Please start the script using PowerShell 7 (pwsh.exe)." + if ($Host.Name -eq "ConsoleHost") { + Read-Host "Press Enter to exit" + } + exit 1 } -catch { - Write-Error "Failed to fetch tasks. Error: $_" + +# Check for module dependency +if (-not (Get-Module -ListAvailable -Name Microsoft.Graph)) { + Write-Host "Microsoft.Graph module is not installed. Please install it by running: Install-Module Microsoft.Graph -Scope CurrentUser -AllowClobber -Force" + exit +} + +Write-Log -Message "Script started." + +while ($true) { + Write-Host "`n--- Microsoft Planner Task Exporter ---" + Write-Host "1. Pull all tasks (including unassigned)" + Write-Host "2. Pull only tasks with assigned users" + Write-Host "3. Pull tasks of assigned users based on a date range" + Write-Host "4. Pull tasks from a specific bucket" + Write-Host "5. Pull tasks by completion status" + Write-Host "6. Manage saved plans" + Write-Host "Q. Quit" + $selection = Read-Host -Prompt "Enter your choice" + + if ($selection.ToUpper() -eq 'Q') { + break + } + + if ($selection -notin '1', '2', '3', '4', '5', '6') { + Write-Log -Level WARN -Message "User selected invalid main menu option: $selection" + Write-Host "Invalid selection." + continue + } + + Connect-ToGraph + + if ($selection -eq '6') { + Manage-Configurations -ConfigPath $ConfigPath + continue + } + + $planId = Select-PlannerPlan -ConfigPath $ConfigPath + if (-not $planId) { continue } + + $startDate = $null + $endDate = $null + $bucketId = $null + $status = $null + + if ($selection -eq '3') { + try { + $startDateStr = Read-Host -Prompt "Enter the start date (YYYY-MM-DD)" + $startDate = [datetime]::ParseExact($startDateStr, 'yyyy-MM-dd', $null) + $endDateStr = Read-Host -Prompt "Enter the end date (YYYY-MM-DD)" + $endDate = [datetime]::ParseExact($endDateStr, 'yyyy-MM-dd', $null).AddDays(1) + Write-Log -Level INFO -Message "Date filter selected. Start: $startDate, End: $endDate" + } + catch { + Write-Log -Level WARN -Message "User entered invalid date format." + Write-Host "Invalid date format. Please use YYYY-MM-DD." + continue + } + } + elseif ($selection -eq '4') { + $bucketId = Select-PlannerBucket -PlanId $planId + } + elseif ($selection -eq '5') { + $status = Select-TaskStatus + } + + $taskData = Get-PlannerTasks -PlanId $planId -Selection $selection -StartDate $startDate -EndDate $endDate -BucketId $bucketId -Status $status + Export-Data -TaskData $taskData + + Read-Host "Press Enter to return to the main menu" } -Write-Host "Script made by Ibitope Fatoki. Github ibi420" -Write-Host "Script completed." -Read-Host "Press Enter to exit" +Write-Log -Message "Script finished." +Write-Host "Script made by Ibitope Fatoki. Github ibi420." +Write-Host "Exiting." diff --git a/src/content/docs/report-scripts/Planner_Pull_Documentation.md b/src/content/docs/report-scripts/Planner_Pull_Documentation.md index db55d25d..26b0693a 100644 --- a/src/content/docs/report-scripts/Planner_Pull_Documentation.md +++ b/src/content/docs/report-scripts/Planner_Pull_Documentation.md @@ -1,19 +1,32 @@ -# Planner Task Puller Script +# Planner Task Puller Script Documentation ## Overview -This PowerShell script connects to Microsoft Graph to retrieve tasks from a specified Microsoft Planner plan. It allows the user to pull all tasks, only those assigned to users, or tasks assigned to users within a specific date range. The script can store connection details for multiple plans in a `config.txt` file, allowing for easy switching between them. The script fetches task details, including bucket names, attachments (specifically looking for GitHub links), and assigned users with their roles (Main Contributor, Reviewer). The collected data is then exported to a user-specified CSV file. +This PowerShell script connects to Microsoft Graph to retrieve tasks from a specified Microsoft Planner plan. It is a flexible, menu-driven tool that allows for powerful filtering and multiple export formats. + +The script can store connection details for multiple plans in a `config.json` file, allowing for easy switching between them. It fetches task details, including bucket names, completion status, attachments (specifically looking for GitHub links), and assigned users with their roles (Main Contributor, Reviewer). The collected data can then be exported to a **CSV**, **JSON**, or **Markdown** file. + +For CSV and Markdown exports, the script allows you to interactively select which data columns to include, making it ideal for generating custom reports. + +## Key Features + +* **Multiple Filtering Options:** Pull tasks by assignment, date range, completion status, or specific bucket. +* **Multiple Export Formats:** Export your data to CSV, JSON, or a report-ready Markdown table. +* **Customizable Columns:** For CSV and Markdown exports, you can choose exactly which columns to include. +* **Plan Management:** An interactive utility to add, delete, and view your saved Planner plans. +* **Robust Logging:** Creates a detailed log file in the `\logs` directory, with a configurable log level for easier debugging. +* **Environment Checks:** Automatically checks for the required PowerShell version (7+) and `Microsoft.Graph` module to prevent errors. ## Prerequisites -* Windows operating system with PowerShell 7. You can grap powershell online at [Microsoft Page](https://learn.microsoft.com/en-gb/powershell/scripting/install/installing-powershell?view=powershell-7.5) or [Github Link](https://github.com/PowerShell/PowerShell?tab=readme-ov-file). +* **PowerShell 7 or higher.** The script will not run on older versions like Windows PowerShell 5.1. You can get PowerShell 7 from the [Microsoft Page](https://learn.microsoft.com/en-gb/powershell/scripting/install/installing-powershell?view=powershell-7.5) or [GitHub](https://github.com/PowerShell/PowerShell). * An internet connection. * A Microsoft 365 account with access to Microsoft Planner. * The `Microsoft.Graph` PowerShell module. ## Setup -Before running the script for the first time, you need to install the `Microsoft.Graph` module. Open a PowerShell terminal and run the following command: +Before running the script for the first time, you need to install the `Microsoft.Graph` module. Open a PowerShell 7 terminal and run the following command: ```powershell Install-Module Microsoft.Graph -Scope CurrentUser -AllowClobber -Force @@ -26,8 +39,8 @@ The Plan ID is required to fetch tasks from a specific plan. You can find the Pl 1. Go to [Microsoft Planner](https://tasks.office.com/). 2. Open the plan you want to use. 3. Look at the URL in your browser's address bar. It will look something like this: - `https://planner.cloud.microsoft/webui/plan/PLANNER_ID/view/board?tid=BOARDID` -4. The `planId` is the alphanumeric string that follows `plan/`. Copy this value when the script prompts for it. + `https://tasks.office.com/your-tenant.com/en-US/Home/Plan?planId=YOUR_PLAN_ID&ownerId=...` +4. The `planId` is the alphanumeric string that follows `planId=`. Copy this value. ### Video Tutorial @@ -39,59 +52,64 @@ For a visual guide on how to find the Plan ID, please watch this video (Covers T [Script Demo](https://deakin365-my.sharepoint.com/:v:/g/personal/s223739207_deakin_edu_au/ETM6TddvX_9KhSbykjwiinMBgSIsZp8inzyoABN32SEFMg?nav=eyJyZWZlcnJhbEluZm8iOnsicmVmZXJyYWxBcHAiOiJPbmVEcml2ZUZvckJ1c2luZXNzIiwicmVmZXJyYWxBcHBQbGF0Zm9ybSI6IldlYiIsInJlZmVycmFsTW9kZSI6InZpZXciLCJyZWZlcnJhbFZpZXciOiJNeUZpbGVzTGlua0NvcHkifX0&e=7QDevO) -1. Open a PowerShell terminal. +1. Open a **PowerShell 7** terminal (`pwsh.exe`). 2. Navigate to the directory where the script is located. -3. Execute the script by running: `.\planner_pull.ps1` -4. Follow the on-screen prompts: - * **Choose an option:** Select whether to pull all tasks, only assigned ones, or assigned tasks within a date range. - * **Enter Date Range (if applicable):** If you choose to filter by date, you will be prompted to enter a start and end date in `YYYY-MM-DD` format. - * **Authenticate:** The script uses a device code flow for authentication. You will be prompted to open a URL in a web browser and enter a code to sign in to your Microsoft account. This is required before you can select a plan. - * **Choose a Plan:** - * If you have saved plans in `config.txt`, you will see a numbered list of them. Enter the number to select a plan. - * To add a new plan, choose the "Enter a new Plan ID" option (N). - * **Enter New Plan Details (if applicable):** - * Enter the new Plan ID. - * Enter a descriptive name for the plan. This name is for your reference and will be shown in the selection menu in the future. - * **Enter CSV Filename:** Provide a name for the output CSV file. +3. Execute the script by running: `.\Planner_pull.ps1` +4. Follow the on-screen prompts. + +### Main Menu + +The script presents a main menu with the following options: + +* **1-5 (Data Pulling Options):** Choose how you want to filter the tasks you retrieve. + * 1. Pull all tasks (including unassigned) + * 2. Pull only tasks with assigned users + * 3. Pull tasks of assigned users based on a date range + * 4. Pull tasks from a specific bucket + * 5. Pull tasks by completion status (Not Started, In Progress, Completed) +* **6. Manage saved plans:** Enter a utility menu to add or delete plans from your `config.json` file. +* **Q. Quit:** Exit the script. + +### Data Export Workflow + +After you select a data pulling option (1-5) and retrieve the tasks: + +1. **Data Preview:** A preview of the data is shown in the console. +2. **Choose Export Format:** You will be prompted to choose an export format: **CSV**, **JSON**, or **Markdown**. +3. **Select Columns (for CSV/Markdown):** If you choose CSV or Markdown, a menu will appear listing all available data columns. You can then enter the numbers of the columns you wish to keep in your report (e.g., `1,3,5`). +4. **Enter Filename:** Provide a name for the output file. ## How it Works -1. **Module Check:** The script first checks if the `Microsoft.Graph` module is installed. -2. **User Selection:** It prompts the user to choose between pulling all tasks, only assigned tasks, or assigned tasks within a date range. -3. **Date Range Input:** If the user chooses to filter by date, the script prompts for a start and end date. -4. **Authentication:** It connects to the Microsoft Graph API using a device code authentication flow. This is done early to ensure the script has the necessary permissions for subsequent steps. The script uses a minimal set of permissions required to read tasks and user profiles. -5. **Plan ID Configuration:** - * The script reads the `config.txt` file to find any saved plans. +1. **Pre-flight Checks:** The script first checks for two things: + * That it is being run in **PowerShell 7 or higher**. + * That the `Microsoft.Graph` module is installed. +2. **User Selection:** It prompts the user to choose a filtering method from the main menu. +3. **Authentication:** It connects to the Microsoft Graph API using a device code authentication flow. +4. **Plan ID Configuration (`config.json`):** + * The script reads the `config.json` file to find any saved plans. This file is created automatically. * If saved plans are found, it displays them in a menu for the user to select. - * If the user opts to add a new plan, the script prompts for the new Plan ID and a descriptive name. - * The new plan entry is appended to `config.txt` in the format ` - `. This preserves existing entries. -6. **Data Retrieval:** - * It fetches all tasks for the selected Plan ID using `Get-MgPlannerPlanTask`. - * It fetches all buckets in the plan using `Get-MgPlannerPlanBucket` to create a lookup map of bucket IDs to bucket names. - * For each task, it retrieves detailed information using `Get-MgPlannerTaskDetail`. - * It retrieves user information for assigned users using `Get-MgUser`. -7. **Data Processing:** - * **Date Filtering:** If a date range is provided, the script filters out tasks that were not assigned within that range. - * **Bucket Name:** It matches the task's `bucketId` to the previously fetched list of buckets to get the bucket name. - * **Attachments:** It intelligently scans task references for GitHub links. It checks both the underlying URL and the display text (alias) for each reference. - * If a GitHub link is found in the URL, its display text is checked. If the display text is also a distinct GitHub link, both are preserved for context. Otherwise, only the clean URL is used. - * If a GitHub link is found only in the display text, the entire display text is captured. - This ensures that links are found even if entered incorrectly by users. - * **User Roles:** It determines user roles ("Main Contributor" or "Reviewer") based on the order of assignment. The first assigned user is considered the Main Contributor, and the last is the Reviewer. -8. **Output:** - * The script prompts the user for a desired output CSV filename. - * It compiles all the processed data. - * It displays a preview of the data in the console. - * It exports the final data to the specified CSV file. - -## Output CSV Columns + * The **Manage saved plans** option provides a dedicated utility for adding and deleting plans from this file. +5. **Data Retrieval & Processing:** + * It fetches tasks, buckets, and user details from the Graph API based on the user's filter selections. + * **Attachments:** It intelligently scans task references for GitHub links. + * **User Roles:** It determines user roles ("Main Contributor" or "Reviewer") based on the order of assignment. +6. **Output:** + * The script prompts the user for an export format and an output filename. + * For CSV and Markdown, it allows the user to select specific columns. + * It compiles all the processed data and exports it to the specified file. +7. **Logging:** All operations, user choices, and errors are logged to a file in the `.\logs` directory for easy debugging. + +## Output Columns + +The following data columns are available for export: * **Name:** The display name of the user assigned to the task. * **Role:** The role of the user for that task (Main Contributor, Reviewer, or blank). * **Task:** The title of the Planner task. * **Bucket:** The name of the bucket the task belongs to. -* **Attachments:** A semicolon-separated list of GitHub URLs found in the task's references. If a reference has a descriptive name that is also a distinct GitHub link, it will be formatted as `DisplayText (URL)`. Otherwise, only the clean URL is shown. This column may also contain a message indicating if no GitHub links were found. +* **Attachments:** A semicolon-separated list of GitHub URLs found in the task's references. +* **Status:** The completion status of the task (Not Started, In Progress, or Completed). **Date of Creation:** 22/08/2025 **Author:** Ibitope Fatoki - diff --git a/src/content/docs/report-scripts/config.json b/src/content/docs/report-scripts/config.json new file mode 100644 index 00000000..d3144bdd --- /dev/null +++ b/src/content/docs/report-scripts/config.json @@ -0,0 +1,10 @@ +[ + { + "planId": "njykIFLDn0iAY1at7tACfcgADgBS", + "name": "Ontrack Plan id" + }, + { + "planId": "mIelcQoIgkqhbM8WaPS3sMgAEmyV", + "name": "Splashkit Plan id" + } +] diff --git a/src/content/docs/report-scripts/logs/script.log b/src/content/docs/report-scripts/logs/script.log new file mode 100644 index 00000000..69009dcb --- /dev/null +++ b/src/content/docs/report-scripts/logs/script.log @@ -0,0 +1,57 @@ +2025-08-23 18:43:37 [INFO] Script started. +2025-08-23 18:43:43 [INFO] Already authenticated as s223739207@deakin.edu.au +2025-08-23 18:43:43 [INFO] Entering plan management utility. +2025-08-23 18:43:45 [INFO] User selected management option: 'a' +2025-08-23 18:43:51 [WARN] User tried to add a plan with empty ID or name. +2025-08-23 18:44:15 [INFO] User selected management option: 'q' +2025-08-23 18:44:15 [INFO] Exiting plan management utility. +2025-08-23 18:44:18 [INFO] Already authenticated as s223739207@deakin.edu.au +2025-08-23 18:44:21 [INFO] User plan selection: '2' +2025-08-23 18:44:21 [INFO] Using Plan ID: mIelcQoIgkqhbM8WaPS3sMgAEmyV +2025-08-23 18:44:48 [INFO] Date filter selected. Start: 07/01/2025 00:00:00, End: 08/24/2025 00:00:00 +2025-08-23 18:44:48 [INFO] Starting Get-PlannerTasks for Plan ID 'mIelcQoIgkqhbM8WaPS3sMgAEmyV'. Selection: 3, BucketId: , Status: +2025-08-23 18:44:49 [INFO] Fetched 120 total tasks from plan. +2025-08-23 18:45:20 [INFO] Finished processing tasks. Returning 120 records. +2025-08-23 18:45:24 [INFO] User chose export format: 1 +2025-08-23 18:45:34 [INFO] Exporting to CSV at 'test.csv' +2025-08-23 18:46:35 [INFO] Already authenticated as s223739207@deakin.edu.au +2025-08-23 18:46:39 [INFO] User plan selection: '2' +2025-08-23 18:46:39 [INFO] Using Plan ID: mIelcQoIgkqhbM8WaPS3sMgAEmyV +2025-08-23 18:47:06 [INFO] Date filter selected. Start: 07/01/2025 00:00:00, End: 08/24/2025 00:00:00 +2025-08-23 18:47:06 [INFO] Starting Get-PlannerTasks for Plan ID 'mIelcQoIgkqhbM8WaPS3sMgAEmyV'. Selection: 3, BucketId: , Status: +2025-08-23 18:47:06 [INFO] Fetched 120 total tasks from plan. +2025-08-23 18:47:39 [INFO] Finished processing tasks. Returning 120 records. +2025-08-23 18:47:43 [INFO] User chose export format: 2 +2025-08-23 18:47:46 [INFO] Exporting to JSON at 'test2.json' +2025-08-23 18:48:10 [INFO] Script finished. +2025-08-23 18:50:43 [INFO] Script started. +2025-08-23 18:50:46 [INFO] Already authenticated as s223739207@deakin.edu.au +2025-08-23 18:50:49 [INFO] User plan selection: '2' +2025-08-23 18:50:49 [INFO] Using Plan ID: mIelcQoIgkqhbM8WaPS3sMgAEmyV +2025-08-23 18:51:11 [INFO] Date filter selected. Start: 07/01/2025 00:00:00, End: 08/02/2025 00:00:00 +2025-08-23 18:51:11 [INFO] Starting Get-PlannerTasks for Plan ID 'mIelcQoIgkqhbM8WaPS3sMgAEmyV'. Selection: 3, BucketId: , Status: +2025-08-23 18:51:12 [INFO] Fetched 120 total tasks from plan. +2025-08-23 18:51:40 [INFO] Finished processing tasks. Returning 44 records. +2025-08-23 18:51:51 [INFO] User chose export format: 3 +2025-08-23 18:52:14 [INFO] User column selection: '1,2,3,5' +2025-08-23 18:52:20 [INFO] Exporting to Markdown at 'test123.md' with columns: Name, Role, Task, Attachments +2025-08-23 18:52:50 [INFO] Script finished. +2025-08-23 18:56:54 [INFO] Script started. +2025-08-23 18:57:11 [INFO] Already authenticated as s223739207@deakin.edu.au +2025-08-23 18:57:14 [INFO] User plan selection: '1' +2025-08-23 18:57:14 [INFO] Using Plan ID: njykIFLDn0iAY1at7tACfcgADgBS +2025-08-23 18:57:42 [INFO] Date filter selected. Start: 07/01/2025 00:00:00, End: 08/24/2025 00:00:00 +2025-08-23 18:57:42 [INFO] Starting Get-PlannerTasks for Plan ID 'njykIFLDn0iAY1at7tACfcgADgBS'. Selection: 3, BucketId: , Status: +2025-08-23 18:57:43 [INFO] Fetched 400 total tasks from plan. +2025-08-23 18:57:58 [INFO] Script started. +2025-08-23 18:58:02 [INFO] Already authenticated as s223739207@deakin.edu.au +2025-08-23 18:58:04 [INFO] User plan selection: '2' +2025-08-23 18:58:04 [INFO] Using Plan ID: mIelcQoIgkqhbM8WaPS3sMgAEmyV +2025-08-23 18:58:19 [INFO] Date filter selected. Start: 07/01/2025 00:00:00, End: 08/23/2025 00:00:00 +2025-08-23 18:58:19 [INFO] Starting Get-PlannerTasks for Plan ID 'mIelcQoIgkqhbM8WaPS3sMgAEmyV'. Selection: 3, BucketId: , Status: +2025-08-23 18:58:20 [INFO] Fetched 120 total tasks from plan. +2025-08-23 18:58:55 [INFO] Finished processing tasks. Returning 119 records. +2025-08-23 18:58:59 [INFO] User chose export format: 1 +2025-08-23 18:59:10 [INFO] User column selection: '' +2025-08-23 18:59:16 [INFO] Exporting to CSV at 'test.csv' +2025-08-23 18:59:27 [INFO] Script finished. From af0004b599f1b22f78db809891956e750fac2027 Mon Sep 17 00:00:00 2001 From: Ibitope Fatoki Date: Sat, 23 Aug 2025 19:17:17 +1000 Subject: [PATCH 09/17] doc updates --- src/content/docs/report-scripts/Planner_Pull_Documentation.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/content/docs/report-scripts/Planner_Pull_Documentation.md b/src/content/docs/report-scripts/Planner_Pull_Documentation.md index 26b0693a..41bdce8f 100644 --- a/src/content/docs/report-scripts/Planner_Pull_Documentation.md +++ b/src/content/docs/report-scripts/Planner_Pull_Documentation.md @@ -50,8 +50,6 @@ For a visual guide on how to find the Plan ID, please watch this video (Covers T ## How to Run the Script -[Script Demo](https://deakin365-my.sharepoint.com/:v:/g/personal/s223739207_deakin_edu_au/ETM6TddvX_9KhSbykjwiinMBgSIsZp8inzyoABN32SEFMg?nav=eyJyZWZlcnJhbEluZm8iOnsicmVmZXJyYWxBcHAiOiJPbmVEcml2ZUZvckJ1c2luZXNzIiwicmVmZXJyYWxBcHBQbGF0Zm9ybSI6IldlYiIsInJlZmVycmFsTW9kZSI6InZpZXciLCJyZWZlcnJhbFZpZXciOiJNeUZpbGVzTGlua0NvcHkifX0&e=7QDevO) - 1. Open a **PowerShell 7** terminal (`pwsh.exe`). 2. Navigate to the directory where the script is located. 3. Execute the script by running: `.\Planner_pull.ps1` From 3452ab66bba185221ced4872017396fe7ef299ee Mon Sep 17 00:00:00 2001 From: Ibitope Fatoki Date: Sat, 23 Aug 2025 19:37:22 +1000 Subject: [PATCH 10/17] Documentation updates --- .../Planner_Pull_Documentation.md | 156 +++++++++++------- 1 file changed, 99 insertions(+), 57 deletions(-) diff --git a/src/content/docs/report-scripts/Planner_Pull_Documentation.md b/src/content/docs/report-scripts/Planner_Pull_Documentation.md index 41bdce8f..0cdc8d55 100644 --- a/src/content/docs/report-scripts/Planner_Pull_Documentation.md +++ b/src/content/docs/report-scripts/Planner_Pull_Documentation.md @@ -10,19 +10,19 @@ For CSV and Markdown exports, the script allows you to interactively select whic ## Key Features -* **Multiple Filtering Options:** Pull tasks by assignment, date range, completion status, or specific bucket. -* **Multiple Export Formats:** Export your data to CSV, JSON, or a report-ready Markdown table. -* **Customizable Columns:** For CSV and Markdown exports, you can choose exactly which columns to include. -* **Plan Management:** An interactive utility to add, delete, and view your saved Planner plans. -* **Robust Logging:** Creates a detailed log file in the `\logs` directory, with a configurable log level for easier debugging. -* **Environment Checks:** Automatically checks for the required PowerShell version (7+) and `Microsoft.Graph` module to prevent errors. +* **Multiple Filtering Options:** Pull tasks by assignment, date range, completion status, or specific bucket. +* **Multiple Export Formats:** Export your data to CSV, JSON, or a report-ready Markdown table. +* **Customizable Columns:** For CSV and Markdown exports, you can choose exactly which columns to include. +* **Plan Management:** An interactive utility to add, delete, and view your saved Planner plans. +* **Robust Logging:** Creates a detailed log file in the `./logs` directory, with a configurable log level for easier debugging. +* **Environment Checks:** Automatically checks for the required PowerShell version (7+) and `Microsoft.Graph` module to prevent errors. ## Prerequisites -* **PowerShell 7 or higher.** The script will not run on older versions like Windows PowerShell 5.1. You can get PowerShell 7 from the [Microsoft Page](https://learn.microsoft.com/en-gb/powershell/scripting/install/installing-powershell?view=powershell-7.5) or [GitHub](https://github.com/PowerShell/PowerShell). -* An internet connection. -* A Microsoft 365 account with access to Microsoft Planner. -* The `Microsoft.Graph` PowerShell module. +* **PowerShell 7 or higher.** The script will not run on older versions like Windows PowerShell 5.1. You can get PowerShell 7 from the [Microsoft Page](https://learn.microsoft.com/en-gb/powershell/scripting/install/installing-powershell?view=powershell-7.5) or [GitHub](https://github.com/PowerShell/PowerShell). +* An internet connection. +* A Microsoft 365 account with access to Microsoft Planner. +* The `Microsoft.Graph` PowerShell module. ## Setup @@ -36,78 +36,120 @@ Install-Module Microsoft.Graph -Scope CurrentUser -AllowClobber -Force The Plan ID is required to fetch tasks from a specific plan. You can find the Plan ID in the URL of your Planner board. -1. Go to [Microsoft Planner](https://tasks.office.com/). -2. Open the plan you want to use. -3. Look at the URL in your browser's address bar. It will look something like this: - `https://tasks.office.com/your-tenant.com/en-US/Home/Plan?planId=YOUR_PLAN_ID&ownerId=...` -4. The `planId` is the alphanumeric string that follows `planId=`. Copy this value. +1. Go to [Microsoft Planner](https://tasks.office.com/). +2. Open the plan you want to use. +3. Look at the URL in your browser's address bar. It will look something like this: + `https://tasks.office.com/your-tenant.com/en-US/Home/Plan?planId=YOUR_PLAN_ID&ownerId=...` +4. The `planId` is the alphanumeric string that follows `planId=`. Copy this value. ### Video Tutorial -For a visual guide on how to find the Plan ID, please watch this video (Covers Two methods): +For a visual guide on how to find the Plan ID, please watch this video (covers two methods): -[Plan ID Tutorial](https://deakin365-my.sharepoint.com/:v:/g/personal/s223739207_deakin_edu_au/EeAm2dpPc3VGrh6DHzyHkOcBig0my4m3UYWG5HmGtFG09A?nav=eyJyZWZlcnJhbEluZm8iOnsicmVmZXJyYWxBcHAiOiJPbmVEcml2ZUZvckJ1c2luZXNzIiwicmVmZXJyYWxBcHBQbGF0Zm9ybSI6IldlYiIsInJlZmVycmFsTW9kZSI6InZpZXciLCJyZWZlcnJhbFZpZXciOiJNeUZpbGVzTGlua0NvcHkifX0&e=TVSwwN) +[Plan ID Tutorial](https://youtu.be/KdOdRppqxCk) +If you don't want to do that, here are the steps transcribed: + +# How to Find Your Planner ID + +This guide outlines two methods for finding your Planner ID, as described in the video "How to Find your Planner ID." + +### Method 1: Scraping from the URL + +This method is simpler but less reliable. + +1. **Open your Planner:** Go to the specific plan in your web browser. +2. **Locate the ID:** Look at the address bar. The **Planner ID** is the string of characters right after `"plan/"`. +3. **Copy the ID:** This alphanumeric string is your Planner ID. + +### Method 2: Using Microsoft Graph Explorer + +This method is more reliable but more complex. + +1. **Go to Graph Explorer:** Open `developer.microsoft.com/graph/graph-explorer` in your browser. + +#### Option A: If you have a task assigned to the plan + +1. In the left sidebar, scroll down and expand **Users**. +2. Find and click on **all my planner tasks**. +3. Click the **Run query** button. +4. In the response area, find **planId**. The value next to it is your Planner ID. + +#### Option B: If you do not have a task assigned to the plan + +**First, get the Group ID:** +1. In the left sidebar, scroll up to **Groups**. +2. Click on **all groups I belong to**. +3. Click **Run query**. +4. Use your browser's find function (Ctrl+F or Cmd+F) to search for the name of the group associated with your plan. +5. Locate the **id** field next to the group name. This is your **Group ID**. Copy it. + +**Next, get the Planner ID using the Group ID:** +1. In the left sidebar, scroll down to **Planner**. +2. Click on **all Planner plans associated with a group**. +3. In the query bar, replace the placeholder with the Group ID you just copied. +4. Click **Run query**. +5. In the response, find the plan by its **title**. The **id** field associated with that title is your **Planner ID**. ## How to Run the Script -1. Open a **PowerShell 7** terminal (`pwsh.exe`). -2. Navigate to the directory where the script is located. -3. Execute the script by running: `.\Planner_pull.ps1` -4. Follow the on-screen prompts. +1. Open a **PowerShell 7** terminal (`pwsh.exe`). +2. Navigate to the directory where the script is located. +3. Execute the script by running: `./Planner_pull.ps1` +4. Follow the on-screen prompts. ### Main Menu The script presents a main menu with the following options: -* **1-5 (Data Pulling Options):** Choose how you want to filter the tasks you retrieve. - * 1. Pull all tasks (including unassigned) - * 2. Pull only tasks with assigned users - * 3. Pull tasks of assigned users based on a date range - * 4. Pull tasks from a specific bucket - * 5. Pull tasks by completion status (Not Started, In Progress, Completed) -* **6. Manage saved plans:** Enter a utility menu to add or delete plans from your `config.json` file. -* **Q. Quit:** Exit the script. +* **1-5 (Data Pulling Options):** Choose how you want to filter the tasks you retrieve: + 1. Pull all tasks (including unassigned) + 2. Pull only tasks with assigned users + 3. Pull tasks of assigned users based on a date range + 4. Pull tasks from a specific bucket + 5. Pull tasks by completion status (Not Started, In Progress, Completed) +* **6. Manage saved plans:** Enter a utility menu to add or delete plans from your `config.json` file. +* **Q. Quit:** Exit the script. ### Data Export Workflow After you select a data pulling option (1-5) and retrieve the tasks: -1. **Data Preview:** A preview of the data is shown in the console. -2. **Choose Export Format:** You will be prompted to choose an export format: **CSV**, **JSON**, or **Markdown**. -3. **Select Columns (for CSV/Markdown):** If you choose CSV or Markdown, a menu will appear listing all available data columns. You can then enter the numbers of the columns you wish to keep in your report (e.g., `1,3,5`). -4. **Enter Filename:** Provide a name for the output file. +1. **Data Preview:** A preview of the data is shown in the console. +2. **Choose Export Format:** You will be prompted to choose an export format: **CSV**, **JSON**, or **Markdown**. +3. **Select Columns (for CSV/Markdown):** If you choose CSV or Markdown, a menu will appear listing all available data columns. You can then enter the numbers of the columns you wish to keep in your report (e.g., `1,3,5`). +4. **Enter Filename:** Provide a name for the output file. ## How it Works -1. **Pre-flight Checks:** The script first checks for two things: - * That it is being run in **PowerShell 7 or higher**. - * That the `Microsoft.Graph` module is installed. -2. **User Selection:** It prompts the user to choose a filtering method from the main menu. -3. **Authentication:** It connects to the Microsoft Graph API using a device code authentication flow. -4. **Plan ID Configuration (`config.json`):** - * The script reads the `config.json` file to find any saved plans. This file is created automatically. - * If saved plans are found, it displays them in a menu for the user to select. - * The **Manage saved plans** option provides a dedicated utility for adding and deleting plans from this file. -5. **Data Retrieval & Processing:** - * It fetches tasks, buckets, and user details from the Graph API based on the user's filter selections. - * **Attachments:** It intelligently scans task references for GitHub links. - * **User Roles:** It determines user roles ("Main Contributor" or "Reviewer") based on the order of assignment. -6. **Output:** - * The script prompts the user for an export format and an output filename. - * For CSV and Markdown, it allows the user to select specific columns. - * It compiles all the processed data and exports it to the specified file. -7. **Logging:** All operations, user choices, and errors are logged to a file in the `.\logs` directory for easy debugging. +1. **Pre-flight Checks:** The script first checks for two things: + * That it is being run in **PowerShell 7 or higher**. + * That the `Microsoft.Graph` module is installed. +2. **User Selection:** It prompts the user to choose a filtering method from the main menu. +3. **Authentication:** It connects to the Microsoft Graph API using a device code authentication flow. +4. **Plan ID Configuration (`config.json`):** + * The script reads the `config.json` file to find any saved plans. This file is created automatically. + * If saved plans are found, it displays them in a menu for the user to select. + * The **Manage saved plans** option provides a dedicated utility for adding and deleting plans from this file. +5. **Data Retrieval & Processing:** + * It fetches tasks, buckets, and user details from the Graph API based on the user's filter selections. + * **Attachments:** It intelligently scans task references for GitHub links. + * **User Roles:** It determines user roles ("Main Contributor" or "Reviewer") based on the order of assignment. +6. **Output:** + * The script prompts the user for an export format and an output filename. + * For CSV and Markdown, it allows the user to select specific columns. + * It compiles all the processed data and exports it to the specified file. +7. **Logging:** All operations, user choices, and errors are logged to a file in the `./logs` directory for easy debugging. ## Output Columns The following data columns are available for export: -* **Name:** The display name of the user assigned to the task. -* **Role:** The role of the user for that task (Main Contributor, Reviewer, or blank). -* **Task:** The title of the Planner task. -* **Bucket:** The name of the bucket the task belongs to. -* **Attachments:** A semicolon-separated list of GitHub URLs found in the task's references. -* **Status:** The completion status of the task (Not Started, In Progress, or Completed). +* **Name:** The display name of the user assigned to the task. +* **Role:** The role of the user for that task (Main Contributor, Reviewer, or blank). +* **Task:** The title of the Planner task. +* **Bucket:** The name of the bucket the task belongs to. +* **Attachments:** A semicolon-separated list of GitHub URLs found in the task's references. +* **Status:** The completion status of the task (Not Started, In Progress, or Completed). **Date of Creation:** 22/08/2025 **Author:** Ibitope Fatoki From 47e2fa945eb8fd6f505ff5ea370640082aa5f3e5 Mon Sep 17 00:00:00 2001 From: Ibitope Fatoki Date: Thu, 4 Sep 2025 18:26:28 +1000 Subject: [PATCH 11/17] new features and QOL improvements. --- .../docs/report-scripts/Planner_Pull.ps1 | 141 +++++++++++++++++- .../Planner_Pull_Documentation.md | 30 +++- 2 files changed, 159 insertions(+), 12 deletions(-) diff --git a/src/content/docs/report-scripts/Planner_Pull.ps1 b/src/content/docs/report-scripts/Planner_Pull.ps1 index f24ce06b..23109132 100644 --- a/src/content/docs/report-scripts/Planner_Pull.ps1 +++ b/src/content/docs/report-scripts/Planner_Pull.ps1 @@ -204,7 +204,7 @@ function Save-Configurations { } } -function Manage-Configurations { +function Set-Configurations { param ([string]$ConfigPath) Write-Log -Level INFO -Message "Entering plan management utility." @@ -230,6 +230,7 @@ function Manage-Configurations { switch ($choice.ToUpper()) { 'A' { + Write-Host "`nNeed help finding the id? Look no further https://youtu.be/KdOdRppqxCk" $newPlanId = Read-Host -Prompt "Please enter the new Plan ID" $planName = Read-Host -Prompt "Please enter a name for this plan" @@ -294,6 +295,7 @@ function Select-PlannerPlan { if ($savedPlans.Count -gt 0) { Write-Host "Please choose a saved Plan or enter a new one:" + Write-Host "`nNeed help finding the id? Look no further https://youtu.be/KdOdRppqxCk" for ($i = 0; $i -lt $savedPlans.Count; $i++) { Write-Host ("{0}. {1}" -f ($i + 1), $savedPlans[$i].name) } @@ -436,8 +438,8 @@ function Get-PlannerTasks { param ( [string]$PlanId, [string]$Selection, - [datetime]$StartDate, - [datetime]$EndDate, + $StartDate, + $EndDate, [string]$BucketId, [string]$Status ) @@ -622,6 +624,12 @@ function Export-Data { $markdownTable = ConvertTo-MarkdownTable -Data $reportData Set-Content -Path $outputFile -Value $markdownTable Write-Host "Tasks exported successfully to $outputFile" + + $convertChoice = Read-Host -Prompt "Convert GitHub PR links to clickable Markdown hyperlinks? (y/n)" + if ($convertChoice.ToUpper() -eq 'Y') { + Convert-GitHubLinksToMarkdown -Path $outputFile + Write-Host "GitHub links have been converted in $outputFile" + } } catch { Write-Log -Level "ERROR" -Message "Failed to export Markdown to '$outputFile': $_" @@ -635,6 +643,117 @@ function Export-Data { } } +function Convert-GitHubLinksToMarkdown { + param ( + [string]$Path + ) + Write-Log -Level INFO -Message "Starting GitHub link conversion for '$Path'." + try { + $content = Get-Content -Path $Path -Raw + + # Regex to find GitHub pull request URLs. + # It captures the whole URL and then the PR number. + $regex = '(https?://github\.com/[^/|]+/[^/|]+/pull/(\d+))' + + $newContent = $content + $foundMatches = $content | Select-String -Pattern $regex -AllMatches + + if ($foundMatches) { + # Get unique matches to avoid processing the same URL multiple times + $uniqueMatches = $foundMatches.Matches | Select-Object -Property Value, @{N='PR';E={$_.Groups[2].Value}} -Unique + + foreach ($match in $uniqueMatches) { + $url = $match.Value + $pr = $match.PR + $markdownLink = "[PR#$pr]($url)" + # Use simple string replacement. + $newContent = $newContent.Replace($url, $markdownLink) + } + } + + $newContent | Set-Content -Path $Path + Write-Log -Level INFO -Message "Finished GitHub link conversion for '$Path'." + } + catch { + Write-Log -Level "ERROR" -Message "Failed to convert GitHub links in '$Path'. Error: $_" + Write-Error "An error occurred during link conversion: $_" + } +} + +function Convert-CsvToMarkdown { + Write-Log -Level INFO -Message "Entering CSV to Markdown conversion utility." + + $csvPath = $null # Initialize to null + + # Find CSV files in the script's directory ($PSScriptRoot is an automatic variable) + $localCsvFiles = Get-ChildItem -Path $PSScriptRoot -Filter *.csv + + if ($localCsvFiles.Count -gt 0) { + Write-Host "`nFound CSV files in the current directory:" + for ($i = 0; $i -lt $localCsvFiles.Count; $i++) { + Write-Host ("{0}. {1}" -f ($i + 1), $localCsvFiles[$i].Name) + } + Write-Host "M. Enter a file path manually" + + $choice = Read-Host -Prompt "Select a file or choose manual entry" + + if ($choice -match "^\d+$" -and [int]$choice -ge 1 -and [int]$choice -le $localCsvFiles.Count) { + $selectedIndex = [int]$choice - 1 + $csvPath = $localCsvFiles[$selectedIndex].FullName + Write-Log -Level INFO -Message "User selected local CSV file: $csvPath" + } + elseif ($choice.ToUpper() -ne 'M') { + Write-Host "Invalid selection. Returning to main menu." + Write-Log -Level WARN -Message "User made an invalid selection: $choice" + return + } + # If choice is 'M', $csvPath remains null and we fall through to the manual prompt. + } + + # If no local files were found, or if user chose manual entry + if (-not $csvPath) { + $csvPath = Read-Host -Prompt "Please enter the path to the input CSV file" + } + + # Validate the final path + if (-not (Test-Path -Path $csvPath) -or -not ($csvPath.EndsWith(".csv"))) { + Write-Log -Level WARN -Message "Invalid CSV path provided: $csvPath" + Write-Host "Error: The specified file does not exist or is not a .csv file." + return + } + + $markdownPath = Read-Host -Prompt "Please enter the name for the output Markdown file" + if (-not ($markdownPath.EndsWith(".md"))) { + $markdownPath = "$markdownPath.md" + } + + try { + $csvData = Import-Csv -Path $csvPath + + if (-not $csvData) { + Write-Log -Level WARN -Message "CSV file '$csvPath' is empty or could not be read." + Write-Host "Warning: CSV file is empty or could not be read. No output generated." + return + } + + $markdownTable = ConvertTo-MarkdownTable -Data $csvData + Set-Content -Path $markdownPath -Value $markdownTable + Write-Log -Level INFO -Message "Successfully converted '$csvPath' to '$markdownPath'." + Write-Host "Successfully converted CSV to Markdown: $markdownPath" + + # Offer to convert GitHub links + $convertChoice = Read-Host -Prompt "Convert GitHub PR links to clickable Markdown hyperlinks? (y/n)" + if ($convertChoice.ToUpper() -eq 'Y') { + Convert-GitHubLinksToMarkdown -Path $markdownPath + Write-Host "GitHub links have been converted in $markdownPath" + } + } + catch { + Write-Log -Level "ERROR" -Message "Failed to convert CSV '$csvPath' to Markdown. Error: $_" + Write-Error "An error occurred during CSV to Markdown conversion: $_" + } +} + # --- Main Script --- # --- Pre-flight Checks --- @@ -664,6 +783,7 @@ while ($true) { Write-Host "4. Pull tasks from a specific bucket" Write-Host "5. Pull tasks by completion status" Write-Host "6. Manage saved plans" + Write-Host "7. Convert CSV to Markdown" Write-Host "Q. Quit" $selection = Read-Host -Prompt "Enter your choice" @@ -671,19 +791,28 @@ while ($true) { break } - if ($selection -notin '1', '2', '3', '4', '5', '6') { + # Handle standalone options first + if ($selection -eq '7') { + Convert-CsvToMarkdown + Read-Host "Press Enter to return to the main menu" + continue + } + + if ($selection -notin '1', '2', '3', '4', '5', '6', '7') { Write-Log -Level WARN -Message "User selected invalid main menu option: $selection" Write-Host "Invalid selection." continue } + # The rest of the options require Graph connection Connect-ToGraph if ($selection -eq '6') { - Manage-Configurations -ConfigPath $ConfigPath + Set-Configurations -ConfigPath $ConfigPath continue } + # The rest of the options require a Plan ID $planId = Select-PlannerPlan -ConfigPath $ConfigPath if (-not $planId) { continue } @@ -701,7 +830,7 @@ while ($true) { Write-Log -Level INFO -Message "Date filter selected. Start: $startDate, End: $endDate" } catch { - Write-Log -Level WARN -Message "User entered invalid date format." + Write-Log -Level WARN -Message "User entered invalid date format $startDateStr and $endDateStr." Write-Host "Invalid date format. Please use YYYY-MM-DD." continue } diff --git a/src/content/docs/report-scripts/Planner_Pull_Documentation.md b/src/content/docs/report-scripts/Planner_Pull_Documentation.md index 0cdc8d55..2af3ba37 100644 --- a/src/content/docs/report-scripts/Planner_Pull_Documentation.md +++ b/src/content/docs/report-scripts/Planner_Pull_Documentation.md @@ -1,4 +1,6 @@ -# Planner Task Puller Script Documentation +--- +title: Planner Task Puller Script Documentation +--- ## Overview @@ -12,6 +14,8 @@ For CSV and Markdown exports, the script allows you to interactively select whic * **Multiple Filtering Options:** Pull tasks by assignment, date range, completion status, or specific bucket. * **Multiple Export Formats:** Export your data to CSV, JSON, or a report-ready Markdown table. +* **CSV to Markdown Utility:** A dedicated tool to convert existing CSV files into Markdown tables, with an easy-to-use file picker for local files. +* **Automatic Link Conversion:** For Markdown exports, automatically convert raw GitHub pull request URLs into formatted, clickable Markdown hyperlinks. * **Customizable Columns:** For CSV and Markdown exports, you can choose exactly which columns to include. * **Plan Management:** An interactive utility to add, delete, and view your saved Planner plans. * **Robust Logging:** Creates a detailed log file in the `./logs` directory, with a configurable log level for easier debugging. @@ -94,7 +98,7 @@ This method is more reliable but more complex. 1. Open a **PowerShell 7** terminal (`pwsh.exe`). 2. Navigate to the directory where the script is located. -3. Execute the script by running: `./Planner_pull.ps1` +3. Execute the script by running: `.\Planner_pull.ps1` 4. Follow the on-screen prompts. ### Main Menu @@ -108,6 +112,7 @@ The script presents a main menu with the following options: 4. Pull tasks from a specific bucket 5. Pull tasks by completion status (Not Started, In Progress, Completed) * **6. Manage saved plans:** Enter a utility menu to add or delete plans from your `config.json` file. +* **7. Convert CSV to Markdown:** A tool to convert a CSV file to a Markdown table. * **Q. Quit:** Exit the script. ### Data Export Workflow @@ -118,14 +123,26 @@ After you select a data pulling option (1-5) and retrieve the tasks: 2. **Choose Export Format:** You will be prompted to choose an export format: **CSV**, **JSON**, or **Markdown**. 3. **Select Columns (for CSV/Markdown):** If you choose CSV or Markdown, a menu will appear listing all available data columns. You can then enter the numbers of the columns you wish to keep in your report (e.g., `1,3,5`). 4. **Enter Filename:** Provide a name for the output file. +5. **Convert Links (for Markdown):** If you chose Markdown, you will be asked if you want to convert GitHub pull request links into clickable Markdown hyperlinks. + +### CSV to Markdown Conversion + +This utility provides a convenient way to create a Markdown report from a CSV file. This is useful if you prefer to export your data to CSV, make manual edits, and then generate a final Markdown table. + +When you select this option from the main menu: + +1. **File Selection:** The script will first look for any `.csv` files in its current directory and display them as a numbered list. You can simply select a number to choose your file. +2. **Manual Path:** If your file is in a different location, you can choose the option to enter the file path manually. +3. **Output:** You will be prompted to provide a name for the new Markdown file. +4. **Link Conversion:** After the Markdown file is created, the script will ask if you want to perform the final step of converting any GitHub URLs into clickable hyperlinks. ## How it Works 1. **Pre-flight Checks:** The script first checks for two things: * That it is being run in **PowerShell 7 or higher**. * That the `Microsoft.Graph` module is installed. -2. **User Selection:** It prompts the user to choose a filtering method from the main menu. -3. **Authentication:** It connects to the Microsoft Graph API using a device code authentication flow. +2. **User Selection:** It prompts the user to choose an action from the main menu. This can be a data pull, plan management, or a utility like the CSV to Markdown converter. +3. **Authentication:** For data pulling and plan management, it connects to the Microsoft Graph API using a device code authentication flow. 4. **Plan ID Configuration (`config.json`):** * The script reads the `config.json` file to find any saved plans. This file is created automatically. * If saved plans are found, it displays them in a menu for the user to select. @@ -137,6 +154,7 @@ After you select a data pulling option (1-5) and retrieve the tasks: 6. **Output:** * The script prompts the user for an export format and an output filename. * For CSV and Markdown, it allows the user to select specific columns. + * If the user exports to Markdown, it offers an additional step to automatically format any found GitHub PR links into proper Markdown hyperlinks. * It compiles all the processed data and exports it to the specified file. 7. **Logging:** All operations, user choices, and errors are logged to a file in the `./logs` directory for easy debugging. @@ -148,8 +166,8 @@ The following data columns are available for export: * **Role:** The role of the user for that task (Main Contributor, Reviewer, or blank). * **Task:** The title of the Planner task. * **Bucket:** The name of the bucket the task belongs to. -* **Attachments:** A semicolon-separated list of GitHub URLs found in the task's references. +* **Attachments:** A semicolon-separated list of GitHub URLs found in the task's references. In Markdown exports, these can be automatically converted to clickable hyperlinks (e.g., `[PR#123](...)`). * **Status:** The completion status of the task (Not Started, In Progress, or Completed). **Date of Creation:** 22/08/2025 -**Author:** Ibitope Fatoki +**Author:** Ibitope Fatoki \ No newline at end of file From 3ee958f173bffd9e5e4763b7b9e68b467d1bc7f4 Mon Sep 17 00:00:00 2001 From: Ibitope Fatoki Date: Fri, 5 Sep 2025 19:56:30 +1000 Subject: [PATCH 12/17] regex update to capture entire links --- src/content/docs/report-scripts/Planner_Pull.ps1 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/docs/report-scripts/Planner_Pull.ps1 b/src/content/docs/report-scripts/Planner_Pull.ps1 index 23109132..f9fbc709 100644 --- a/src/content/docs/report-scripts/Planner_Pull.ps1 +++ b/src/content/docs/report-scripts/Planner_Pull.ps1 @@ -653,7 +653,7 @@ function Convert-GitHubLinksToMarkdown { # Regex to find GitHub pull request URLs. # It captures the whole URL and then the PR number. - $regex = '(https?://github\.com/[^/|]+/[^/|]+/pull/(\d+))' + $regex = '(https?://github\.com/[^/|]+/[^/|]+/pull/(\d+)[^|; ]*)' $newContent = $content $foundMatches = $content | Select-String -Pattern $regex -AllMatches From 3696ef9de237ee4d4cf1da131f11f647a5adf5a2 Mon Sep 17 00:00:00 2001 From: Ibitope Fatoki Date: Wed, 24 Sep 2025 16:39:40 +1000 Subject: [PATCH 13/17] fixed renaming issue --- src/content/docs/BACaudit/AuditReport_BAC.md | 170 ------------------- 1 file changed, 170 deletions(-) delete mode 100644 src/content/docs/BACaudit/AuditReport_BAC.md diff --git a/src/content/docs/BACaudit/AuditReport_BAC.md b/src/content/docs/BACaudit/AuditReport_BAC.md deleted file mode 100644 index 8ed7b5c8..00000000 --- a/src/content/docs/BACaudit/AuditReport_BAC.md +++ /dev/null @@ -1,170 +0,0 @@ ---- -title: Web Security Audit Broken Access Control Vulnerability Report ---- - -## Introduction - -Broken Access Control is a critical security vulnerability where an application fails to properly restrict access to resources, allowing users to perform actions beyond their intended permissions. This vulnerability is ranked #1 in the OWASP Top 10 Web Application Security Risks (2021) due to its prevalence and severe impact. - -Examples of Broken Access Control include: - -- A regular user accessing administrator functionalities -- A user viewing or modifying another user's data by manipulating resource identifiers -- Using authorization tokens across different user contexts -- Bypassing access controls through URL manipulation -- Accessing sensitive API endpoints without proper authentication - -In the context of Doubtfire, these vulnerabilities could allow students to view other students' submissions, modify grades, access administrative functions, or view sensitive institutional data. - -## Test Cases - -Our security audit focused on the following test categories: - -1. **Vertical Privilege Escalation**: Testing if regular users can perform administrator-only actions -2. **Insecure Direct Object References (IDOR)**: Testing if users can access resources of other users by manipulating identifiers -3. **Session Token Misuse**: Testing if authentication tokens can be used across different user contexts -4. **URL Manipulation**: Testing if modifying URL parameters can bypass access controls -5. **Missing Access Controls**: Testing if sensitive endpoints can be accessed without authentication -6. **HTTP Method Manipulation**: Testing if changing HTTP methods can bypass access controls -7. **Function Level Access Controls**: Testing if sensitive functions are properly protected - -## Methodology - -### Tools Required - -- Bash shell environment (Linux/macOS, or Windows with WSL/Git Bash) -- cURL command-line tool -- Access to test environment with admin and regular user credentials - -### Testing Procedure - -1. **Setup**: - - - Clone the repository containing the test script - - Make the script executable: `chmod +x broken_access_control_test.sh` - - Configure the API_URL variable in the script (default: `http://localhost:3000`) - -2. **Execution**: - - - Run the script: `./broken_access_control_test.sh` - - The script will output results to the console and save detailed logs to a timestamped file - -3. **Understanding Results**: - - - **PASS (Green)**: The test confirmed proper access controls are in place - - **FAIL (Red)**: The test identified a security vulnerability that requires attention - - **INCONCLUSIVE/SKIPPED (Yellow)**: The test requires further investigation or manual verification - - The script differentiates between various response types: - - 401/403/419 responses for authenticated requests (expected denial) - - 405 Method Not Allowed (acceptable for certain tests) - - Empty arrays/null responses (potential information disclosure) - -4. **Manual Verification**: - - For UI-related vulnerabilities, manually check if regular users can access `/#/admin/units` - - Verify path traversal protection by testing various URL patterns in the browser - - Test endpoints that returned inconclusive results with different parameters or methods - -### Script Details - -The `broken_access_control_test.sh` script: - -1. Performs authentication to obtain admin and regular user tokens -2. Systematically tests each access control category -3. Interprets responses based on HTTP status codes and content -4. Provides a detailed report of findings with recommendations -5. Logs all results for future reference and compliance documentation - -The script is designed to be comprehensive, testing all API endpoints documented in the Doubtfire API specification. - -## Results - -After running the security audit, we identified the following issues: - -### Critical Vulnerabilities - -1. **Insecure Direct Object References (IDOR)**: - - - Users can access other users' data by manipulating the user ID - - Status 200 was returned with full user profile information - - This allows any authenticated user to view sensitive information of other users - -2. **Missing Access Controls on Sensitive Endpoints**: - - - The `/api/settings` endpoint returns configuration data without authentication - - This reveals system configuration including external integrations - -3. **Path Traversal Risk**: - - While API path traversal tests returned 404 status codes, further manual verification confirmed that regular users can access the admin creation page in the UI - - This frontend vulnerability allows unauthorized access to administrative functionality - -### Inconclusive Results Requiring Investigation - -1. **Endpoints Returning Empty Results Without Authentication**: - - - `/api/activity_types`, `/api/campuses`, `/api/teaching_periods`, and `/api/tii_eula` return 200 status with empty arrays/null values - - These endpoints should require authentication even when returning empty data - -2. **Function Level Access Controls**: - - - Teaching period creation attempts resulted in validation errors (400) rather than permission denial - - The endpoint processes the request and fails on validation instead of rejecting due to insufficient permissions - -3. **Regular User Resource Access**: - - Test user couldn't access permitted units (403 "Unable to list units") - - This may be legitimate if the test user has no assigned units, but should be confirmed - -### Successful Controls - -The application successfully implemented: - -- Protection against vertical privilege escalation attempts -- Session token binding and validation -- HTTP method restrictions (405 responses for inappropriate methods) -- Access controls on many critical API endpoints - -## Required Actions - -Based on our findings, we recommend the following actions: - -### Immediate Actions - -1. **Fix IDOR Vulnerability**: - - - Implement proper authorization checks in the user controller - - Ensure users can only access their own profile information - - Add role-based access control for user data access - -2. **Secure Settings Endpoint**: - - - Require authentication for the `/api/settings` endpoint - - Implement role-based access to configuration data - - Consider moving sensitive configuration to a protected admin-only endpoint - -3. **Fix Frontend Access Controls**: - - Implement proper route protection in the frontend application - - Prevent student accounts from accessing `/#/admin/units` - - Ensure admin components are not rendered for non-admin users - -### Recommended Improvements - -1. **Consistent Authentication Checks**: - - - Add authentication requirements to all API endpoints, even those returning empty results - - Implement uniform authorization checks that run before request processing - - Return consistent 401/403 responses instead of empty data arrays - -2. **Enhance Function Level Controls**: - - - Ensure permission checks occur before parameter validation - - Return clear authorization errors rather than validation errors for unauthorized requests - -3. **Implement Comprehensive Logging**: - - - Add detailed logging for all access control failures - - Set up alerts for potential authorization bypass attempts - - Include sufficient context in logs to identify potential attack patterns - -4. **Regular Security Testing**: - - Include access control testing in the CI/CD pipeline - - Re-run the security test after implementing fixes to confirm remediation - - Expand tests as new endpoints are developed From 27fcd9274a25a469b28e5d358653f0b870b5b92f Mon Sep 17 00:00:00 2001 From: Ibitope Fatoki Date: Wed, 24 Sep 2025 16:51:59 +1000 Subject: [PATCH 14/17] Modified git ignore to ignore script logs --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 6240da8b..730172f7 100644 --- a/.gitignore +++ b/.gitignore @@ -11,7 +11,7 @@ npm-debug.log* yarn-debug.log* yarn-error.log* pnpm-debug.log* - +script.log* # environment variables .env From 8ed9e933781e7a13c6c3c2c268ea4582cea8009f Mon Sep 17 00:00:00 2001 From: Ibitope Fatoki Date: Sat, 27 Sep 2025 19:29:59 +1000 Subject: [PATCH 15/17] token validation check before running --- .../docs/report-scripts/Planner_Pull.ps1 | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/content/docs/report-scripts/Planner_Pull.ps1 b/src/content/docs/report-scripts/Planner_Pull.ps1 index f9fbc709..130d7cf1 100644 --- a/src/content/docs/report-scripts/Planner_Pull.ps1 +++ b/src/content/docs/report-scripts/Planner_Pull.ps1 @@ -139,10 +139,22 @@ function Connect-ToGraph { try { $context = Get-MgContext if ($context) { - Write-Log -Level INFO -Message "Already authenticated as $($context.Account)" - Write-Host "Already authenticated as $($context.Account)" - return $true + try { + Write-Log -Level INFO -Message "Already authenticated as $($context.Account). Verifying token..." + # Make a lightweight call to check if the token is still valid. + Get-MgUser -UserId "me" -ErrorAction Stop -Select Id | Out-Null + Write-Log -Level INFO -Message "Token is still valid." + Write-Host "Already authenticated as $($context.Account)" + return $true + } + catch { + Write-Log -Level WARN -Message "Token validation failed. It might be expired. Attempting to re-authenticate. Error: $_" + Write-Host "Your previous session may have expired. Re-authenticating..." + Disconnect-MgGraph + # Fall-through to re-authenticate + } } + Connect-MgGraph -Scopes @("Tasks.Read", "Tasks.ReadWrite", "User.ReadBasic.All") -UseDeviceCode -Audience "organizations" $context = Get-MgContext if (-not $context) { From f5591244b939d7a9f6f456bd24175ac53fcbe4ee Mon Sep 17 00:00:00 2001 From: Ibitope Fatoki Date: Sat, 27 Sep 2025 21:40:30 +1000 Subject: [PATCH 16/17] switched to browser auth and improved token val --- .../docs/report-scripts/Planner_Pull.ps1 | 48 +++++++++++++------ 1 file changed, 33 insertions(+), 15 deletions(-) diff --git a/src/content/docs/report-scripts/Planner_Pull.ps1 b/src/content/docs/report-scripts/Planner_Pull.ps1 index 130d7cf1..cb65bb5f 100644 --- a/src/content/docs/report-scripts/Planner_Pull.ps1 +++ b/src/content/docs/report-scripts/Planner_Pull.ps1 @@ -126,36 +126,46 @@ function Connect-ToGraph { Write-Log -Level DEBUG -Message "Entering Connect-ToGraph function." Write-Host "Importing Required Microsoft.Graph sub modules..." try { + Import-Module Microsoft.Graph.Authentication -ErrorAction Stop Import-Module Microsoft.Graph.Planner -ErrorAction Stop Import-Module Microsoft.Graph.Users -ErrorAction Stop } catch { Write-Log -Level "ERROR" -Message "Failed to import required modules: $_" - Write-Error "Failed to import required modules. Please ensure Microsoft.Graph is installed correctly." + Write-Error "Failed to import required modules. Please ensure Microsoft.Graph is installed correctly and is up to date." exit 1 } Write-Host "Authenticating to Microsoft Graph..." try { $context = Get-MgContext - if ($context) { + if ($context -and $context.AuthContext) { try { - Write-Log -Level INFO -Message "Already authenticated as $($context.Account). Verifying token..." - # Make a lightweight call to check if the token is still valid. - Get-MgUser -UserId "me" -ErrorAction Stop -Select Id | Out-Null - Write-Log -Level INFO -Message "Token is still valid." - Write-Host "Already authenticated as $($context.Account)" - return $true + # Actively test the token to ensure it's valid, as cached tokens can become stale. + Write-Log -Level DEBUG -Message "Existing context found. Verifying token with a test call..." + Get-MgUser -UserId "me" -Property "Id" -ErrorAction Stop | Out-Null + + $tokenExpiry = [datetime]$context.AuthContext.ExpiresOn + $timeToExpiry = $tokenExpiry - (Get-Date) + + if ($timeToExpiry.TotalMinutes -gt 5) { + Write-Log -Level INFO -Message "Already authenticated as $($context.Account). Token is valid." + Write-Host "Already authenticated as $($context.Account)" + return $true + } + else { + Write-Log -Level WARN -Message "Token is expired or expiring soon. Re-authenticating." + Write-Host "Your session is expired or expiring soon. Re-authenticating..." + Disconnect-MgGraph + } } catch { - Write-Log -Level WARN -Message "Token validation failed. It might be expired. Attempting to re-authenticate. Error: $_" - Write-Host "Your previous session may have expired. Re-authenticating..." + Write-Log -Level WARN -Message "Token validation failed or session is invalid. Re-authenticating. Error: $_" Disconnect-MgGraph - # Fall-through to re-authenticate } } - Connect-MgGraph -Scopes @("Tasks.Read", "Tasks.ReadWrite", "User.ReadBasic.All") -UseDeviceCode -Audience "organizations" + Connect-MgGraph -Scopes @("Tasks.Read", "Tasks.ReadWrite", "User.Read", "User.ReadBasic.All") -Audience "organizations" $context = Get-MgContext if (-not $context) { throw "Failed to establish connection" @@ -493,8 +503,14 @@ function Get-PlannerTasks { Write-Log -Level DEBUG -Message "Created lookup for $($buckets.Count) buckets." } catch { - Write-Log -Level "ERROR" -Message "Failed to get tasks or buckets for plan '$PlanId': $_" - Write-Error "Failed to get tasks or buckets: $_" + $errorMessage = $_.Exception.Message + Write-Log -Level "ERROR" -Message "Failed to get tasks or buckets for plan '$PlanId': $errorMessage" + if ($errorMessage -like "*DeviceCodeCredential*") { + Write-Error "An authentication error occurred while fetching data. This can sometimes be resolved by restarting the script to force re-authentication. Error: $errorMessage" + } + else { + Write-Error "Failed to get tasks or buckets: $errorMessage" + } exit 1 } @@ -785,6 +801,9 @@ if (-not (Get-Module -ListAvailable -Name Microsoft.Graph)) { exit } +#clear the previous connection for better reliability +Disconnect-MgGraph + Write-Log -Message "Script started." while ($true) { @@ -859,7 +878,6 @@ while ($true) { Read-Host "Press Enter to return to the main menu" } - Write-Log -Message "Script finished." Write-Host "Script made by Ibitope Fatoki. Github ibi420." Write-Host "Exiting." From 44b260e70c581db5614c0f1331403f690baf80d8 Mon Sep 17 00:00:00 2001 From: Steven Dalamaras Date: Thu, 4 Dec 2025 23:52:56 +1000 Subject: [PATCH 17/17] fix: remove data files generated by script --- .../Planner_Pull_Documentation.md | 5 + src/content/docs/report-scripts/config.json | 10 -- src/content/docs/report-scripts/config.txt | 2 - .../docs/report-scripts/logs/script.log | 57 --------- .../docs/report-scripts/ontrack_tasks.csv | 114 ------------------ 5 files changed, 5 insertions(+), 183 deletions(-) delete mode 100644 src/content/docs/report-scripts/config.json delete mode 100644 src/content/docs/report-scripts/config.txt delete mode 100644 src/content/docs/report-scripts/logs/script.log delete mode 100644 src/content/docs/report-scripts/ontrack_tasks.csv diff --git a/src/content/docs/report-scripts/Planner_Pull_Documentation.md b/src/content/docs/report-scripts/Planner_Pull_Documentation.md index 2af3ba37..c0679eb5 100644 --- a/src/content/docs/report-scripts/Planner_Pull_Documentation.md +++ b/src/content/docs/report-scripts/Planner_Pull_Documentation.md @@ -169,5 +169,10 @@ The following data columns are available for export: * **Attachments:** A semicolon-separated list of GitHub URLs found in the task's references. In Markdown exports, these can be automatically converted to clickable hyperlinks (e.g., `[PR#123](...)`). * **Status:** The completion status of the task (Not Started, In Progress, or Completed). +## Thoth Tech information + +`njykIFLDn0iAY1at7tACfcgADgBS` - Ontrack Planner ID +`mIelcQoIgkqhbM8WaPS3sMgAEmyV` - Splashkit Plan ID + **Date of Creation:** 22/08/2025 **Author:** Ibitope Fatoki \ No newline at end of file diff --git a/src/content/docs/report-scripts/config.json b/src/content/docs/report-scripts/config.json deleted file mode 100644 index d3144bdd..00000000 --- a/src/content/docs/report-scripts/config.json +++ /dev/null @@ -1,10 +0,0 @@ -[ - { - "planId": "njykIFLDn0iAY1at7tACfcgADgBS", - "name": "Ontrack Plan id" - }, - { - "planId": "mIelcQoIgkqhbM8WaPS3sMgAEmyV", - "name": "Splashkit Plan id" - } -] diff --git a/src/content/docs/report-scripts/config.txt b/src/content/docs/report-scripts/config.txt deleted file mode 100644 index 55609d2e..00000000 --- a/src/content/docs/report-scripts/config.txt +++ /dev/null @@ -1,2 +0,0 @@ -njykIFLDn0iAY1at7tACfcgADgBS - Ontrack Planner ID -mIelcQoIgkqhbM8WaPS3sMgAEmyV - Splashkit Plan ID diff --git a/src/content/docs/report-scripts/logs/script.log b/src/content/docs/report-scripts/logs/script.log deleted file mode 100644 index 69009dcb..00000000 --- a/src/content/docs/report-scripts/logs/script.log +++ /dev/null @@ -1,57 +0,0 @@ -2025-08-23 18:43:37 [INFO] Script started. -2025-08-23 18:43:43 [INFO] Already authenticated as s223739207@deakin.edu.au -2025-08-23 18:43:43 [INFO] Entering plan management utility. -2025-08-23 18:43:45 [INFO] User selected management option: 'a' -2025-08-23 18:43:51 [WARN] User tried to add a plan with empty ID or name. -2025-08-23 18:44:15 [INFO] User selected management option: 'q' -2025-08-23 18:44:15 [INFO] Exiting plan management utility. -2025-08-23 18:44:18 [INFO] Already authenticated as s223739207@deakin.edu.au -2025-08-23 18:44:21 [INFO] User plan selection: '2' -2025-08-23 18:44:21 [INFO] Using Plan ID: mIelcQoIgkqhbM8WaPS3sMgAEmyV -2025-08-23 18:44:48 [INFO] Date filter selected. Start: 07/01/2025 00:00:00, End: 08/24/2025 00:00:00 -2025-08-23 18:44:48 [INFO] Starting Get-PlannerTasks for Plan ID 'mIelcQoIgkqhbM8WaPS3sMgAEmyV'. Selection: 3, BucketId: , Status: -2025-08-23 18:44:49 [INFO] Fetched 120 total tasks from plan. -2025-08-23 18:45:20 [INFO] Finished processing tasks. Returning 120 records. -2025-08-23 18:45:24 [INFO] User chose export format: 1 -2025-08-23 18:45:34 [INFO] Exporting to CSV at 'test.csv' -2025-08-23 18:46:35 [INFO] Already authenticated as s223739207@deakin.edu.au -2025-08-23 18:46:39 [INFO] User plan selection: '2' -2025-08-23 18:46:39 [INFO] Using Plan ID: mIelcQoIgkqhbM8WaPS3sMgAEmyV -2025-08-23 18:47:06 [INFO] Date filter selected. Start: 07/01/2025 00:00:00, End: 08/24/2025 00:00:00 -2025-08-23 18:47:06 [INFO] Starting Get-PlannerTasks for Plan ID 'mIelcQoIgkqhbM8WaPS3sMgAEmyV'. Selection: 3, BucketId: , Status: -2025-08-23 18:47:06 [INFO] Fetched 120 total tasks from plan. -2025-08-23 18:47:39 [INFO] Finished processing tasks. Returning 120 records. -2025-08-23 18:47:43 [INFO] User chose export format: 2 -2025-08-23 18:47:46 [INFO] Exporting to JSON at 'test2.json' -2025-08-23 18:48:10 [INFO] Script finished. -2025-08-23 18:50:43 [INFO] Script started. -2025-08-23 18:50:46 [INFO] Already authenticated as s223739207@deakin.edu.au -2025-08-23 18:50:49 [INFO] User plan selection: '2' -2025-08-23 18:50:49 [INFO] Using Plan ID: mIelcQoIgkqhbM8WaPS3sMgAEmyV -2025-08-23 18:51:11 [INFO] Date filter selected. Start: 07/01/2025 00:00:00, End: 08/02/2025 00:00:00 -2025-08-23 18:51:11 [INFO] Starting Get-PlannerTasks for Plan ID 'mIelcQoIgkqhbM8WaPS3sMgAEmyV'. Selection: 3, BucketId: , Status: -2025-08-23 18:51:12 [INFO] Fetched 120 total tasks from plan. -2025-08-23 18:51:40 [INFO] Finished processing tasks. Returning 44 records. -2025-08-23 18:51:51 [INFO] User chose export format: 3 -2025-08-23 18:52:14 [INFO] User column selection: '1,2,3,5' -2025-08-23 18:52:20 [INFO] Exporting to Markdown at 'test123.md' with columns: Name, Role, Task, Attachments -2025-08-23 18:52:50 [INFO] Script finished. -2025-08-23 18:56:54 [INFO] Script started. -2025-08-23 18:57:11 [INFO] Already authenticated as s223739207@deakin.edu.au -2025-08-23 18:57:14 [INFO] User plan selection: '1' -2025-08-23 18:57:14 [INFO] Using Plan ID: njykIFLDn0iAY1at7tACfcgADgBS -2025-08-23 18:57:42 [INFO] Date filter selected. Start: 07/01/2025 00:00:00, End: 08/24/2025 00:00:00 -2025-08-23 18:57:42 [INFO] Starting Get-PlannerTasks for Plan ID 'njykIFLDn0iAY1at7tACfcgADgBS'. Selection: 3, BucketId: , Status: -2025-08-23 18:57:43 [INFO] Fetched 400 total tasks from plan. -2025-08-23 18:57:58 [INFO] Script started. -2025-08-23 18:58:02 [INFO] Already authenticated as s223739207@deakin.edu.au -2025-08-23 18:58:04 [INFO] User plan selection: '2' -2025-08-23 18:58:04 [INFO] Using Plan ID: mIelcQoIgkqhbM8WaPS3sMgAEmyV -2025-08-23 18:58:19 [INFO] Date filter selected. Start: 07/01/2025 00:00:00, End: 08/23/2025 00:00:00 -2025-08-23 18:58:19 [INFO] Starting Get-PlannerTasks for Plan ID 'mIelcQoIgkqhbM8WaPS3sMgAEmyV'. Selection: 3, BucketId: , Status: -2025-08-23 18:58:20 [INFO] Fetched 120 total tasks from plan. -2025-08-23 18:58:55 [INFO] Finished processing tasks. Returning 119 records. -2025-08-23 18:58:59 [INFO] User chose export format: 1 -2025-08-23 18:59:10 [INFO] User column selection: '' -2025-08-23 18:59:16 [INFO] Exporting to CSV at 'test.csv' -2025-08-23 18:59:27 [INFO] Script finished. diff --git a/src/content/docs/report-scripts/ontrack_tasks.csv b/src/content/docs/report-scripts/ontrack_tasks.csv deleted file mode 100644 index 203053db..00000000 --- a/src/content/docs/report-scripts/ontrack_tasks.csv +++ /dev/null @@ -1,114 +0,0 @@ -"Name","Role","Task","Bucket","Attachments" -"ALEX BROWN","","Frontend Migrations: Update frontend migration progress list","Sprint 2 Code Review","https://github.com/thoth-tech/doubtfire-web/pull/397" -"ALEX BROWN","","Migrate groups.coffee","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-web/pull/382" -"ALEX BROWN","","Fix change_remotes.sh","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-deploy/pull/32" -"ALEX BROWN","","Migrate student-task-list.coffee","Frontend Migration","No GitHub links" -"ALEX BROWN","Main Contributor","Migrate runtime.coffee","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-web/pull/398" -"ALEX BROWN","","Migrate privacy-policy.coffee","Frontend Migration","No GitHub links" -"ALEX BROWN","Reviewer","Migrate outcome-service.coffee","Sprint 2 Code Review","https://github.com/thoth-tech/doubtfire-web/pull/390" -"ALEX BROWN","","Migrate Portfolio Welcome Step","Sprint 1 Complete","https://github.com/thoth-tech/doubtfire-web/pull/384; https://github.com/thoth-tech/documentation/pull/619" -"CHELAKA YASODHANA PATHBERIYAGE","Reviewer","Add observer property to unit-level roles","Visitor Enhancement - NOT CAPSTONE","No GitHub links" -"CHELAKA YASODHANA PATHBERIYAGE","","Migrate portfolio-review-step.coffee","Frontend Migration","No GitHub links" -"DISURU PASANJITH RATHNAYAKE RATHNAYAKE THUDUGALA BANDULAGE","","Migrate group-selector.coffee","Frontend Migration","No GitHub links" -"DISURU PASANJITH RATHNAYAKE RATHNAYAKE THUDUGALA BANDULAGE","","Migration: task-ilo-alignment-rater","Frontend Migration","https://github.com/thoth-tech/documentation/pull/603; https://github.com/thoth-tech/doubtfire-web/pull/338" -"DISURU PASANJITH RATHNAYAKE RATHNAYAKE THUDUGALA BANDULAGE","","Migration: group set selector","Sprint 2 Code Review","https://github.com/thoth-tech/doubtfire-web/pull/387; https://github.com/thoth-tech/documentation/pull/620" -"DISURU PASANJITH RATHNAYAKE RATHNAYAKE THUDUGALA BANDULAGE","Main Contributor","Migrate recorder-service.coffee","Sprint 2 Doing","https://github.com/thoth-tech/doubtfire-web/pull/391" -"DISURU PASANJITH RATHNAYAKE RATHNAYAKE THUDUGALA BANDULAGE","","Migrate outcome-service.coffee","Sprint 2 Code Review","https://github.com/thoth-tech/doubtfire-web/pull/390" -"DISURU PASANJITH RATHNAYAKE RATHNAYAKE THUDUGALA BANDULAGE","","Migrate Group-member-list","Sprint 1 Doing","https://github.com/thoth-tech/doubtfire-web/pull/393" -"DUY NGUYEN","Main Contributor","Update unit model to host more details","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-api/pull/71" -"DUY NGUYEN","","Enrich the unit card itself to show more info","CourseFlow","No GitHub links" -"DUY NGUYEN","Reviewer","Migrate runtime.coffee","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-web/pull/398" -"DUY NGUYEN","Reviewer","Migrate groups.coffee","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-web/pull/382" -"DUY NGUYEN","Main Contributor","Refactor CourseFlow code base for better components maintainence","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-web/pull/385" -"DUY NGUYEN","","Add option to overload units to a teaching period","CourseFlow","No GitHub links" -"DUY NGUYEN","Main Contributor","Create test data for CourseFlow ( Course map, Course map units, Units)","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-api/pull/70" -"EDWARD NGUYEN","Main Contributor","Add summary of skills component","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-web/pull/396" -"EDWARD NGUYEN","Reviewer","Update unit model to host more details","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-api/pull/71" -"EDWARD NGUYEN","","Create a component to display credit points achieved.","CourseFlow","No GitHub links" -"EDWARD NGUYEN","","Populate the overlay component for the detailed unit with content of the unit - this needs to include unit requirements.","CourseFlow","https://github.com/thoth-tech/doubtfire-web/pull/215" -"EDWARD NGUYEN","Main Contributor","Add ability to mark unit as complete (phase 4)","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-web/pull/386 (https://github.com/thoth-tech/doubtfire-web/pull/396)" -"EDWARD NGUYEN","","Create test data for CourseFlow ( Course map, Course map units, Units)","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-api/pull/70" -"EDWARD NGUYEN","Reviewer","Remove alignment-bar-chart.coffee","Sprint 2 Code Review","https://github.com/thoth-tech/doubtfire-web/pull/395" -"EKAM BHULLAR","","Implement ngx graphs/charts in UI","Tutor Times","https://github.com/thoth-tech/doubtfire-web/pull/392" -"EKAM BHULLAR","Reviewer","Add summary of skills component","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-web/pull/396" -"EKAM BHULLAR","Reviewer","Refactor CourseFlow code base for better components maintainence","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-web/pull/385" -"EKAM BHULLAR","","Implement Real-Time Notification System","Tutor Times","No GitHub links" -"EKAM BHULLAR","","Migrate task-ilo-alignment-editor.coffee","Frontend Migration","No GitHub links" -"GAURAV MANOHAR MYANA","","Build Dashboard for admin","Tutor Times","No GitHub links" -"GAURAV MANOHAR MYANA","Reviewer","OnTrack Style Guide v0.1","Colour Vision Deficiency Accessibility","No GitHub links" -"HASINDU DESHITHA WELARATHNE","Main Contributor","Migrate students-list.coffee","Frontend Migration","https://github.com/thoth-tech/documentation/pull/597; https://github.com/thoth-tech/doubtfire-web/pull/389" -"HASINDU DESHITHA WELARATHNE","","Migrate recorder-service.coffee","Sprint 2 Doing","https://github.com/thoth-tech/doubtfire-web/pull/391" -"IBI FATOKI","","Create Script to Pull tasks from Planner","Visitor Enhancement - NOT CAPSTONE","https://github.com/thoth-tech/doubtfire-astro/pull/50" -"IBI FATOKI","Main Contributor","Security Issue: Publicly Accessible API Documentation via Swagger","OnTrack x AppAttack","https://github.com/thoth-tech/doubtfire-api/pull/73; https://github.com/thoth-tech/doubtfire-astro/pull/48/files" -"IRIS CHEN","","Web Security Audit: Security Misconfiguration","Security","No GitHub links" -"IRIS CHEN","Main Contributor","Standardize API Authentication Requirements","Security","https://github.com/thoth-tech/doubtfire-api/pull/72" -"IRIS CHEN","","Frontend Migrations: Update frontend migration progress list","Sprint 2 Code Review","https://github.com/thoth-tech/doubtfire-web/pull/397" -"IRIS CHEN","Main Contributor","Web Security Audit: Cryptographic Failures","Security","https://github.com/thoth-tech/doubtfire-astro/pull/45" -"IRIS CHEN","","Fix Insecure Direct Object References (IDOR) Vulnerability","Security","No GitHub links" -"IRIS CHEN","","Fix IDOR Vulnerability - User Data Access","Security","No GitHub links" -"JASON MARK VELLUCCI","","Migrate runtime.coffee","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-web/pull/398" -"JASON MARK VELLUCCI","Main Contributor","Frontend Migrations: Update frontend migration progress list","Sprint 2 Code Review","https://github.com/thoth-tech/doubtfire-web/pull/397" -"JASON MARK VELLUCCI","","Migrate summary-task-status-scatter","Frontend Migration","No GitHub links" -"JASON MARK VELLUCCI","","Refactor CourseFlow code base for better components maintainence","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-web/pull/385" -"JASON MARK VELLUCCI","Reviewer","Clean up src/app/admin/modals/create-unit-modal leftover files","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-web/pull/388; https://github.com/thoth-tech/doubtfire-web/pull/350" -"JASON MARK VELLUCCI","Main Contributor","Migration: group set selector","Sprint 2 Code Review","https://github.com/thoth-tech/doubtfire-web/pull/387; https://github.com/thoth-tech/documentation/pull/620" -"JASON MARK VELLUCCI","Reviewer","8.x and 9.x build documentation","Sprint 2 Code Review","No GitHub links" -"JASON MARK VELLUCCI","Reviewer","Migrate Group-member-list","Sprint 1 Doing","https://github.com/thoth-tech/doubtfire-web/pull/393" -"JASON MARK VELLUCCI","","Update unit model to host more details","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-api/pull/71" -"JOSEPH KALAYATHANKAL SAJI","","Backend - Implement API Endpoints for SessionActivies and MarkingSession for Analytics","Sprint 2 Doing","No GitHub links" -"JOSEPH KALAYATHANKAL SAJI","Main Contributor","Backend - Create marking_sessions table","Sprint 1 Review","https://github.com/martindolores/doubtfire-api/pull/4" -"JOSEPH KALAYATHANKAL SAJI","Main Contributor","OnTrack Style Guide v0.1","Colour Vision Deficiency Accessibility","No GitHub links" -"JOSEPH KALAYATHANKAL SAJI","Reviewer","Backend - Create session_activities table","Sprint 1 Review","https://github.com/martindolores/doubtfire-api/pull/3" -"JOSH BEVAN","Reviewer","Migration: group set selector","Sprint 2 Code Review","https://github.com/thoth-tech/doubtfire-web/pull/387; https://github.com/thoth-tech/documentation/pull/620" -"JOSH BEVAN","Reviewer","Frontend Migrations: Update frontend migration progress list","Sprint 2 Code Review","https://github.com/thoth-tech/doubtfire-web/pull/397" -"JOSH TALEV","Main Contributor","Clean up src/app/admin/modals/create-unit-modal leftover files","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-web/pull/388; https://github.com/thoth-tech/doubtfire-web/pull/350" -"JOSH TALEV","Main Contributor","Migrate confirmation-modal.coffee","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-web/pull/381" -"JOSH TALEV","Main Contributor","Migrate Portfolio Welcome Step","Sprint 1 Complete","https://github.com/thoth-tech/doubtfire-web/pull/384; https://github.com/thoth-tech/documentation/pull/619" -"JOSH TALEV","Main Contributor","Backend - Create session_activities table","Sprint 1 Review","https://github.com/martindolores/doubtfire-api/pull/3" -"JOSH TALEV","","Migration: group set selector","Sprint 2 Code Review","https://github.com/thoth-tech/doubtfire-web/pull/387; https://github.com/thoth-tech/documentation/pull/620" -"LACHLAN MACKIE ROBINSON","Main Contributor","8.x and 9.x build documentation","Sprint 2 Code Review","No GitHub links" -"LACHLAN MACKIE ROBINSON","Main Contributor","Migrate outcome-service.coffee","Sprint 2 Code Review","https://github.com/thoth-tech/doubtfire-web/pull/390" -"LACHLAN MACKIE ROBINSON","","Migrate utilService.coffee","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-web/pull/383" -"LACHLAN MACKIE ROBINSON","","Migration: group set selector","Sprint 2 Code Review","https://github.com/thoth-tech/doubtfire-web/pull/387; https://github.com/thoth-tech/documentation/pull/620" -"LACHLAN MACKIE ROBINSON","Main Contributor","Remove alignment-bar-chart.coffee","Sprint 2 Code Review","https://github.com/thoth-tech/doubtfire-web/pull/395" -"LAMIA TABASSUM","","Add observer property to unit-level roles","Visitor Enhancement - NOT CAPSTONE","No GitHub links" -"MARTIN JOHN DOLORES","","Migrate confirmation-modal.coffee","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-web/pull/381" -"MARTIN JOHN DOLORES","Main Contributor","Migrate utilService.coffee","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-web/pull/383" -"MARTIN JOHN DOLORES","","Backend - Create new SessionTracker Service","Sprint 2 Doing","No GitHub links" -"MARTIN JOHN DOLORES","Reviewer","Backend - Create marking_sessions table","Sprint 1 Review","https://github.com/martindolores/doubtfire-api/pull/4" -"MARTIN JOHN DOLORES","","Backend - Integrate SessionTracker service across related entities","Tutor Times","No GitHub links" -"MARTIN JOHN DOLORES","Main Contributor","Migrate groups.coffee","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-web/pull/382" -"MARTIN JOHN DOLORES","","Migrate Portfolio Welcome Step","Sprint 1 Complete","https://github.com/thoth-tech/doubtfire-web/pull/384; https://github.com/thoth-tech/documentation/pull/619" -"MARTIN JOHN DOLORES","Reviewer","Create test data for CourseFlow ( Course map, Course map units, Units)","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-api/pull/70" -"MARTIN JOHN DOLORES","","Web Security Audit: Cryptographic Failures","Security","https://github.com/thoth-tech/doubtfire-astro/pull/45" -"MARTIN JOHN DOLORES","Reviewer","Standardize API Authentication Requirements","Security","https://github.com/thoth-tech/doubtfire-api/pull/72" -"MARTIN JOHN DOLORES","","Backend - Create session_activities table","Sprint 1 Review","https://github.com/martindolores/doubtfire-api/pull/3" -"MARTIN JOHN DOLORES","Reviewer","Security Issue: Publicly Accessible API Documentation via Swagger","OnTrack x AppAttack","https://github.com/thoth-tech/doubtfire-api/pull/73; https://github.com/thoth-tech/doubtfire-astro/pull/48/files" -"MILLICENT ACHIENG AMOLO","","Fix Frontend Admin Route Access Controls","Security","https://github.com/thoth-tech/doubtfire-astro/pull/49#issue-3340358209" -"PARTH SANJAYKUMAR VAGHELA","","Migrate unit-dates-selector.coffee","Sprint 2 Doing","No GitHub links" -"PASINDU FERNANDO","","Migrate students-list.coffee","Frontend Migration","https://github.com/thoth-tech/documentation/pull/597; https://github.com/thoth-tech/doubtfire-web/pull/389" -"PASINDU FERNANDO","Main Contributor","Migrate Group-member-list","Sprint 1 Doing","https://github.com/thoth-tech/doubtfire-web/pull/393" -"PASINDU FERNANDO","Reviewer","Migrate recorder-service.coffee","Sprint 2 Doing","https://github.com/thoth-tech/doubtfire-web/pull/391" -"PASINDU FERNANDO","Reviewer","Migrate confirmation-modal.coffee","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-web/pull/381" -"PASINDU FERNANDO","Reviewer","Migrate Portfolio Welcome Step","Sprint 1 Complete","https://github.com/thoth-tech/doubtfire-web/pull/384; https://github.com/thoth-tech/documentation/pull/619" -"RASHI AGRAWAL","Reviewer","Frontend: Add new SGE page","Staff Grant Extension","https://github.com/thoth-tech/doubtfire-web/pull/394" -"RASHI AGRAWAL","","Test backend and frontend integration","Sprint 1 Complete","No GitHub links" -"RASHI AGRAWAL","","Migrate unit-ilo-edit-modal.coffee","Frontend Migration","No GitHub links" -"SAHIRU HESHAN WITHANAGE","","Remove alignment-bar-chart.coffee","Sprint 2 Code Review","https://github.com/thoth-tech/doubtfire-web/pull/395" -"SAHIRU HESHAN WITHANAGE","","Add summary of skills component","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-web/pull/396" -"SAHIRU HESHAN WITHANAGE","Reviewer","Add ability to mark unit as complete (phase 4)","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-web/pull/386 (https://github.com/thoth-tech/doubtfire-web/pull/396)" -"SAHIRU HESHAN WITHANAGE","","Frontend Work: Student search and selection","Staff Grant Extension","https://github.com/thoth-tech/doubtfire-web/pull/359" -"SAHIRU HESHAN WITHANAGE","Main Contributor","Frontend: Add new SGE page","Staff Grant Extension","https://github.com/thoth-tech/doubtfire-web/pull/394" -"SAMINDI SITUMYA RATNAYAKE MUDIYANSELAGE","","Frontend: Add new SGE page","Staff Grant Extension","https://github.com/thoth-tech/doubtfire-web/pull/394" -"SAMINDI SITUMYA RATNAYAKE MUDIYANSELAGE","","Standardize API Authentication Requirements","Security","https://github.com/thoth-tech/doubtfire-api/pull/72" -"SAMINDI SITUMYA RATNAYAKE MUDIYANSELAGE","","Add ability to mark unit as complete (phase 4)","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-web/pull/386 (https://github.com/thoth-tech/doubtfire-web/pull/396)" -"SAMINDI SITUMYA RATNAYAKE MUDIYANSELAGE","","Backend- In-system notification system","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-api/pull/69" -"SAMINDI SITUMYA RATNAYAKE MUDIYANSELAGE","","Update documentation in doubtfire-astro for staff grant extension new APIs and FE components","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-astro/pull/40" -"SAMINDI SITUMYA RATNAYAKE MUDIYANSELAGE","","Frontend Work: Set up notification UI","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-web/pull/353" -"SAMINDI SITUMYA RATNAYAKE MUDIYANSELAGE","Reviewer","Migrate utilService.coffee","Sprint 1 Review","https://github.com/thoth-tech/doubtfire-web/pull/383" -"SAMINDI SITUMYA RATNAYAKE MUDIYANSELAGE","Reviewer","Web Security Audit: Cryptographic Failures","Security","https://github.com/thoth-tech/doubtfire-astro/pull/45" -"TRIET LAM","","Migrate task-dashboard.coffee","Frontend Migration","No GitHub links" -"TRIET LAM","","Cleanup feedback.coffee","Frontend Migration","https://github.com/thoth-tech/doubtfire-web/pull/399" -"WAEL ALAHMADI","Main Contributor","Add observer property to unit-level roles","Visitor Enhancement - NOT CAPSTONE","No GitHub links" -"WAEL ALAHMADI","Reviewer","Migrate students-list.coffee","Frontend Migration","https://github.com/thoth-tech/documentation/pull/597; https://github.com/thoth-tech/doubtfire-web/pull/389" -"WAEL ALAHMADI","","Develop Tutor Time Dashboard ","Tutor Times","No GitHub links"