@@ -80,6 +81,7 @@ const Offers = ({ partnerOffers, additionalSections }) => {
{sortedPartnerOffers.map((offer, index) => (
+ /* eslint-disable-next-line @next/next/no-img-element */

{
+ const date = new Date(dateString + 'T00:00:00')
+ return date.toLocaleDateString('en-US', {
+ month: 'short',
+ day: 'numeric',
+ year: 'numeric',
+ })
+}
+
+const Ships = ({ ships }) => {
+ if (!ships || ships.length === 0) {
+ return (
+
+
+ {getLiteral('ships:empty')}
+
+
+ )
+ }
+
+ const sorted = [...ships].sort(
+ (a, b) => new Date(b.date) - new Date(a.date)
+ )
+
+ return (
+
+
+
{getLiteral('ships:title')}
+
{getLiteral('ships:description')}
+
+
+
+ )
+}
+
+export default Ships
diff --git a/components/ships/ships.scss b/components/ships/ships.scss
new file mode 100644
index 00000000..e6809e17
--- /dev/null
+++ b/components/ships/ships.scss
@@ -0,0 +1,108 @@
+.ships {
+ padding: spacing(7) spacing(2);
+ padding-bottom: spacing(4);
+ max-width: 1440px;
+ margin: 0 auto;
+ box-sizing: border-box;
+
+ @media (min-width: $lg) {
+ padding-left: spacing(4);
+ padding-right: spacing(4);
+ }
+
+ &__intro {
+ margin-bottom: spacing(5);
+ max-width: 640px;
+ }
+
+ &__heading {
+ @extend %header-2;
+ color: $white;
+ margin-bottom: spacing(2);
+ overflow-wrap: break-word;
+ }
+
+ &__subtitle {
+ @extend %body-1;
+ color: $white-50;
+ }
+
+ &__empty {
+ text-align: center;
+ padding: spacing(8) spacing(2);
+ @extend %body-1;
+ color: $white-50;
+ }
+
+ &__grid {
+ display: grid;
+ grid-template-columns: 1fr;
+ gap: spacing(3);
+
+ @media (min-width: $md) {
+ grid-template-columns: repeat(2, 1fr);
+ }
+
+ @media (min-width: $lg) {
+ grid-template-columns: repeat(3, 1fr);
+ }
+ }
+
+ &__card {
+ background: $white-20;
+ border-radius: 12px;
+ transition: background $simple-fade;
+ min-width: 0;
+
+ @extend %background-filter;
+
+ &:hover {
+ background: $white-40;
+ }
+ }
+
+ &__link {
+ display: block;
+ padding: spacing(3);
+ text-decoration: none;
+ color: inherit;
+ }
+
+ &__date {
+ margin-bottom: spacing(1);
+ @extend %subtitle-2;
+ color: $white-50;
+ }
+
+ &__title {
+ margin-bottom: spacing(1.5);
+ @extend %header-5;
+ display: flex;
+ align-items: baseline;
+ gap: spacing(1);
+ overflow-wrap: break-word;
+ word-break: break-word;
+ }
+
+ &__external-icon {
+ flex-shrink: 0;
+ opacity: 0.6;
+ }
+
+ &__description {
+ margin-bottom: spacing(2);
+ @extend %body-1;
+ color: $white-80;
+ font-size: 0.9375rem;
+
+ @media (min-width: $md) {
+ font-size: 1rem;
+ }
+ }
+
+ &__chips {
+ display: flex;
+ flex-wrap: wrap;
+ gap: spacing(1);
+ }
+}
diff --git a/content/events/2025-05-01-OpenPath.md b/content/2025/events/2025-05-01-OpenPath.md
similarity index 100%
rename from content/events/2025-05-01-OpenPath.md
rename to content/2025/events/2025-05-01-OpenPath.md
diff --git a/content/events/2025-05-01-OpenSearch.md b/content/2025/events/2025-05-01-OpenSearch.md
similarity index 100%
rename from content/events/2025-05-01-OpenSearch.md
rename to content/2025/events/2025-05-01-OpenSearch.md
diff --git a/content/events/2025-05-02-Cookie-Cutter.md b/content/2025/events/2025-05-02-Cookie-Cutter.md
similarity index 100%
rename from content/events/2025-05-02-Cookie-Cutter.md
rename to content/2025/events/2025-05-02-Cookie-Cutter.md
diff --git a/content/events/2025-05-02-NPCI.md b/content/2025/events/2025-05-02-NPCI.md
similarity index 100%
rename from content/events/2025-05-02-NPCI.md
rename to content/2025/events/2025-05-02-NPCI.md
diff --git a/content/events/2025-05-02-typewind.md b/content/2025/events/2025-05-02-typewind.md
similarity index 100%
rename from content/events/2025-05-02-typewind.md
rename to content/2025/events/2025-05-02-typewind.md
diff --git a/content/events/2025-05-06-GOSIM-AI.md b/content/2025/events/2025-05-06-GOSIM-AI.md
similarity index 100%
rename from content/events/2025-05-06-GOSIM-AI.md
rename to content/2025/events/2025-05-06-GOSIM-AI.md
diff --git a/content/events/2025-05-06-Innersource-China.md b/content/2025/events/2025-05-06-Innersource-China.md
similarity index 100%
rename from content/events/2025-05-06-Innersource-China.md
rename to content/2025/events/2025-05-06-Innersource-China.md
diff --git a/content/events/2025-05-06-Licensing-SBOMs.md b/content/2025/events/2025-05-06-Licensing-SBOMs.md
similarity index 100%
rename from content/events/2025-05-06-Licensing-SBOMs.md
rename to content/2025/events/2025-05-06-Licensing-SBOMs.md
diff --git a/content/events/2025-05-06-OS-Pledge.md b/content/2025/events/2025-05-06-OS-Pledge.md
similarity index 100%
rename from content/events/2025-05-06-OS-Pledge.md
rename to content/2025/events/2025-05-06-OS-Pledge.md
diff --git a/content/events/2025-05-07-PyTorch.md b/content/2025/events/2025-05-07-PyTorch.md
similarity index 100%
rename from content/events/2025-05-07-PyTorch.md
rename to content/2025/events/2025-05-07-PyTorch.md
diff --git a/content/events/2025-05-09-Diciotech.md b/content/2025/events/2025-05-09-Diciotech.md
similarity index 100%
rename from content/events/2025-05-09-Diciotech.md
rename to content/2025/events/2025-05-09-Diciotech.md
diff --git a/content/events/2025-05-09-Localization.md b/content/2025/events/2025-05-09-Localization.md
similarity index 100%
rename from content/events/2025-05-09-Localization.md
rename to content/2025/events/2025-05-09-Localization.md
diff --git a/content/events/2025-05-09-convex.md b/content/2025/events/2025-05-09-convex.md
similarity index 100%
rename from content/events/2025-05-09-convex.md
rename to content/2025/events/2025-05-09-convex.md
diff --git a/content/events/2025-05-09-whopays.md b/content/2025/events/2025-05-09-whopays.md
similarity index 100%
rename from content/events/2025-05-09-whopays.md
rename to content/2025/events/2025-05-09-whopays.md
diff --git a/content/events/2025-05-10-FOSS-United-Hyderabad.md b/content/2025/events/2025-05-10-FOSS-United-Hyderabad.md
similarity index 100%
rename from content/events/2025-05-10-FOSS-United-Hyderabad.md
rename to content/2025/events/2025-05-10-FOSS-United-Hyderabad.md
diff --git a/content/events/2025-05-13-RustWeek.md b/content/2025/events/2025-05-13-RustWeek.md
similarity index 100%
rename from content/events/2025-05-13-RustWeek.md
rename to content/2025/events/2025-05-13-RustWeek.md
diff --git a/content/events/2025-05-14-CloudFoundry.md b/content/2025/events/2025-05-14-CloudFoundry.md
similarity index 100%
rename from content/events/2025-05-14-CloudFoundry.md
rename to content/2025/events/2025-05-14-CloudFoundry.md
diff --git a/content/events/2025-05-16-Cyber-Security.md b/content/2025/events/2025-05-16-Cyber-Security.md
similarity index 100%
rename from content/events/2025-05-16-Cyber-Security.md
rename to content/2025/events/2025-05-16-Cyber-Security.md
diff --git a/content/events/2025-05-16-Open-Source-European-Commission.md b/content/2025/events/2025-05-16-Open-Source-European-Commission.md
similarity index 100%
rename from content/events/2025-05-16-Open-Source-European-Commission.md
rename to content/2025/events/2025-05-16-Open-Source-European-Commission.md
diff --git a/content/events/2025-05-16-Querido-Diario.md b/content/2025/events/2025-05-16-Querido-Diario.md
similarity index 100%
rename from content/events/2025-05-16-Querido-Diario.md
rename to content/2025/events/2025-05-16-Querido-Diario.md
diff --git a/content/events/2025-05-16-supermemoryai.md b/content/2025/events/2025-05-16-supermemoryai.md
similarity index 100%
rename from content/events/2025-05-16-supermemoryai.md
rename to content/2025/events/2025-05-16-supermemoryai.md
diff --git a/content/events/2025-05-17-FOSS-City-Meetup-Kanpur.md b/content/2025/events/2025-05-17-FOSS-City-Meetup-Kanpur.md
similarity index 100%
rename from content/events/2025-05-17-FOSS-City-Meetup-Kanpur.md
rename to content/2025/events/2025-05-17-FOSS-City-Meetup-Kanpur.md
diff --git a/content/events/2025-05-19-05F5.md b/content/2025/events/2025-05-19-05F5.md
similarity index 100%
rename from content/events/2025-05-19-05F5.md
rename to content/2025/events/2025-05-19-05F5.md
diff --git a/content/events/2025-05-19-Swift-Craft.md b/content/2025/events/2025-05-19-Swift-Craft.md
similarity index 100%
rename from content/events/2025-05-19-Swift-Craft.md
rename to content/2025/events/2025-05-19-Swift-Craft.md
diff --git a/content/events/2025-05-21-NGINX.md b/content/2025/events/2025-05-21-NGINX.md
similarity index 100%
rename from content/events/2025-05-21-NGINX.md
rename to content/2025/events/2025-05-21-NGINX.md
diff --git a/content/events/2025-05-21-OSI.md b/content/2025/events/2025-05-21-OSI.md
similarity index 100%
rename from content/events/2025-05-21-OSI.md
rename to content/2025/events/2025-05-21-OSI.md
diff --git a/content/events/2025-05-21-kotlinconf.md b/content/2025/events/2025-05-21-kotlinconf.md
similarity index 100%
rename from content/events/2025-05-21-kotlinconf.md
rename to content/2025/events/2025-05-21-kotlinconf.md
diff --git a/content/events/2025-05-23-Build-CLI.md b/content/2025/events/2025-05-23-Build-CLI.md
similarity index 100%
rename from content/events/2025-05-23-Build-CLI.md
rename to content/2025/events/2025-05-23-Build-CLI.md
diff --git a/content/events/2025-05-23-nuxt-ai.md b/content/2025/events/2025-05-23-nuxt-ai.md
similarity index 100%
rename from content/events/2025-05-23-nuxt-ai.md
rename to content/2025/events/2025-05-23-nuxt-ai.md
diff --git a/content/events/2025-05-24-FOSS-Meetup-Bengaluru.md b/content/2025/events/2025-05-24-FOSS-Meetup-Bengaluru.md
similarity index 100%
rename from content/events/2025-05-24-FOSS-Meetup-Bengaluru.md
rename to content/2025/events/2025-05-24-FOSS-Meetup-Bengaluru.md
diff --git a/content/events/2025-05-24-FOSS-Meetup-Lucknow.md b/content/2025/events/2025-05-24-FOSS-Meetup-Lucknow.md
similarity index 100%
rename from content/events/2025-05-24-FOSS-Meetup-Lucknow.md
rename to content/2025/events/2025-05-24-FOSS-Meetup-Lucknow.md
diff --git a/content/events/2025-05-24-FSF-40-Chennai.md b/content/2025/events/2025-05-24-FSF-40-Chennai.md
similarity index 100%
rename from content/events/2025-05-24-FSF-40-Chennai.md
rename to content/2025/events/2025-05-24-FSF-40-Chennai.md
diff --git a/content/events/2025-05-26-Cultivating-Design.md b/content/2025/events/2025-05-26-Cultivating-Design.md
similarity index 100%
rename from content/events/2025-05-26-Cultivating-Design.md
rename to content/2025/events/2025-05-26-Cultivating-Design.md
diff --git a/content/events/2025-05-27-CRA.md b/content/2025/events/2025-05-27-CRA.md
similarity index 100%
rename from content/events/2025-05-27-CRA.md
rename to content/2025/events/2025-05-27-CRA.md
diff --git a/content/events/2025-05-28-Deskree.md b/content/2025/events/2025-05-28-Deskree.md
similarity index 100%
rename from content/events/2025-05-28-Deskree.md
rename to content/2025/events/2025-05-28-Deskree.md
diff --git a/content/events/2025-05-30-Libre-Sign.md b/content/2025/events/2025-05-30-Libre-Sign.md
similarity index 100%
rename from content/events/2025-05-30-Libre-Sign.md
rename to content/2025/events/2025-05-30-Libre-Sign.md
diff --git a/content/events/2025-05-30-effection.md b/content/2025/events/2025-05-30-effection.md
similarity index 100%
rename from content/events/2025-05-30-effection.md
rename to content/2025/events/2025-05-30-effection.md
diff --git a/content/events/pycon-us-2025.md b/content/2025/events/pycon-us-2025.md
similarity index 100%
rename from content/events/pycon-us-2025.md
rename to content/2025/events/pycon-us-2025.md
diff --git a/content/commons.json b/content/commons.json
index 08918497..eb935fae 100644
--- a/content/commons.json
+++ b/content/commons.json
@@ -50,13 +50,14 @@
"hero:image-description": "Illustration by Ariel Davis, of a surreal geometric assortment of hands and shapes implying collaboration",
"library:title": "Library",
- "library:description": "List of all maintainer resources and storiesh.",
+ "library:description": "List of all maintainer resources and stories.",
- "meta:title": "Maintainer Month 2025",
+ "meta:title": "Maintainer Month 2026",
"meta:description": "A month for open source maintainers to gather, share, and be celebrated.",
"meta:event-description": "Check out this Maintainer Month event",
"message:tbd": "TBD",
+ "message:all-day": "All Day",
"not-found:title": "Oops!",
"not-found:subtitle": "Page not found",
@@ -66,14 +67,24 @@
"navigation:library": "Library",
"navigation:partner-pack": "Partner Pack",
"navigation:security-challenge": "Challenge",
+ "navigation:ships": "Ships",
"page:title": "Maintainer Month",
"page:title-mobile": "MM",
- "page:date": "May 2025",
+ "page:date": "May 2026",
+
+ "ships:title": "Ships for Maintainers",
+ "ships:description": "GitHub features and updates built for open source maintainers.",
+ "ships:empty": "No ships listed yet. Check back soon!",
"schedule:title": "Schedule",
"schedule:description": "List of all events organized during this year's Maintainer Month",
"schedule:add-event": "Add your activity",
+ "schedule:ics-download": "Subscribe to calendar",
+ "schedule:ics-label": "Download .ics file with all Maintainer Month events",
+ "schedule:empty-no-events": "Events for Maintainer Month 2026 are coming soon! Want to host one?",
+ "schedule:empty-host-link": "Submit your event here.",
+ "schedule:empty-no-matches": "No events match the selected filters.",
"share:event": "Check out this Maintainer Month event",
diff --git a/content/events/2025-05-30-Effection.md b/content/events/2025-05-30-Effection.md
deleted file mode 100644
index 3942d47e..00000000
--- a/content/events/2025-05-30-Effection.md
+++ /dev/null
@@ -1,18 +0,0 @@
----
-title: 'Open Source Friday: Effection'
-metaTitle: 'Open Source Friday: Nuxt and AI'
-metaDesc: 'Join Daniel Roe to discuss Nuxt, AI, and improving developer experiences with type inference.'
-date: '05/23'
-UTCStartTime: '6:00'
-UTCEndTime: '7:00'
-type: 'stream'
-location: 'Virtual'
-language: 'English'
-userName: 'GitHub'
-userLink: 'https://www.twitch.tv/github/schedule'
-linkUrl: 'https://www.twitch.tv/github/schedule'
----
-
-Join Charles Lowell [@cowboyd](https://github.com/cowboyd) to learn more about [Effection](https://github.com/thefrontside/effection), structured concurrency and effects for JavaScript.
-
-[Open Source Fridays](https://www.youtube.com/playlist?list=PL0lo9MOBetEFmtstItnKlhJJVmMghxc0P) stream weekly on GitHub's [Twitch](https://www.twitch.tv/github), [YouTube](https://github.com/youtube), and [LinkedIn](https://www.linkedin.com/company/github).
diff --git a/content/home/1-hero.md b/content/home/1-hero.md
index ab654186..d9b09adb 100644
--- a/content/home/1-hero.md
+++ b/content/home/1-hero.md
@@ -1,6 +1,6 @@
---
anchorNavSection: 'Maintainer Month'
-date: 'May 2025'
+date: 'May 2026'
title: 'A month for open source maintainers to gather, share, and be celebrated.'
buttonText: 'See the schedule'
---
diff --git a/content/home/2-about.md b/content/home/2-about.md
index 7945881e..08843943 100644
--- a/content/home/2-about.md
+++ b/content/home/2-about.md
@@ -1,7 +1,7 @@
---
anchorNavSection: 'About'
title: 'Welcome to Maintainer Month!'
-theme1: "This year, we're focusing on the critical role maintainers play in securing the digital infrastructure we all depend on. Join us in recognizing their efforts and supporting a more secure open source ecosystem."
+theme1: "Stay tuned for this year's theme. In the meantime, get involved by hosting an event or sharing your maintainer story."
theme2: 'Maintainers keep the software ecosystem running, but they’re humans, not machines. Do you know who the maintainers you rely on are? Do you know what kind of support those individuals actually need? Ask what you can do for them, and be ready to listen.'
---
diff --git a/content/home/5-events.md b/content/home/5-events.md
index 35fa7e73..d15da200 100644
--- a/content/home/5-events.md
+++ b/content/home/5-events.md
@@ -1,4 +1,4 @@
---
anchorNavSection: 'Schedule'
-title: 'Upcoming events 2025'
+title: 'Upcoming events 2026'
---
diff --git a/content/partner-pack/index.md b/content/partner-pack/index.md
index d7578f84..ad39b255 100644
--- a/content/partner-pack/index.md
+++ b/content/partner-pack/index.md
@@ -1,8 +1,8 @@
---
-title: "Maintainer Month 2025 Partner Pack"
+title: "Maintainer Month 2026 Partner Pack"
subtitle: "Real support for the people behind open source"
-metaTitle: "Maintainer Month 2025 Partner Pack | Resources for Open Source Maintainers"
-metaDesc: "Exclusive perks, tools, and resources for open source maintainers during Maintainer Month 2025."
+metaTitle: "Maintainer Month 2026 Partner Pack | Resources for Open Source Maintainers"
+metaDesc: "Exclusive perks, tools, and resources for open source maintainers during Maintainer Month 2026."
---
To celebrate Maintainer Month, we’re spotlighting the people who power open source — and giving back. We’ve teamed up with partners across the ecosystem to offer perks, tools, and resources for maintainers.
diff --git a/content/partner-pack/offers/bootdev.md b/content/partner-pack/offers/bootdev.md
index aee1188b..357c9f51 100644
--- a/content/partner-pack/offers/bootdev.md
+++ b/content/partner-pack/offers/bootdev.md
@@ -4,5 +4,5 @@ logo: "bootdev.png"
headline: "Level up your backend development skills."
description: "Get 1 month of free premium access to Boot.dev's interactive courses in Python, Go, JavaScript, and TypeScript."
ctaText: "Redeem here"
-ctaLink: "https://www.boot.dev/github-maintainer-month/2025"
+ctaLink: "https://www.boot.dev/github-maintainer-month/2026"
---
\ No newline at end of file
diff --git a/content/ships/ships.json b/content/ships/ships.json
new file mode 100644
index 00000000..4693d584
--- /dev/null
+++ b/content/ships/ships.json
@@ -0,0 +1,67 @@
+{
+ "ships": [
+ {
+ "url": "https://github.blog/changelog/2026-03-05-hierarchy-view-improvements-and-file-uploads-in-issue-forms/",
+ "title": "Hierarchy view improvements and file uploads in issue forms",
+ "description": "Issue forms now support file uploads, and the hierarchy view for sub-issues has been improved with better navigation and visibility.",
+ "date": "2026-03-05",
+ "category": "Issues"
+ },
+ {
+ "url": "https://github.blog/changelog/2026-02-26-improved-search-on-the-issues-dashboard",
+ "title": "Improved search on the issues dashboard",
+ "description": "The issues dashboard search now supports more filters and delivers faster, more relevant results.",
+ "date": "2026-02-26",
+ "category": "Issues"
+ },
+ {
+ "url": "https://github.blog/changelog/2026-02-25-github-copilot-cli-is-now-generally-available",
+ "title": "GitHub Copilot CLI is now generally available",
+ "description": "Copilot CLI brings AI-powered coding assistance directly to your terminal with agentic capabilities and MCP extensibility.",
+ "date": "2026-02-25",
+ "category": "Copilot"
+ },
+ {
+ "url": "https://github.blog/changelog/2026-02-19-access-all-pull-request-comments-without-leaving-the-new-files-changed-page",
+ "title": "Access all pull request comments without leaving the Files Changed page",
+ "description": "View and navigate all PR comments inline on the Files Changed page without switching tabs.",
+ "date": "2026-02-19",
+ "category": "Pull Requests"
+ },
+ {
+ "url": "https://github.blog/changelog/2026-02-13-new-repository-settings-for-configuring-pull-request-access/",
+ "title": "New repository settings for configuring pull request access",
+ "description": "Maintainers can now configure who has access to create and manage pull requests directly from repository settings.",
+ "date": "2026-02-13",
+ "category": "Repository Management"
+ },
+ {
+ "url": "https://github.blog/changelog/2026-02-13-github-agentic-workflows-are-now-in-technical-preview",
+ "title": "GitHub agentic workflows are now in technical preview",
+ "description": "Agentic workflows let AI agents autonomously plan, execute, and iterate on tasks across your repositories.",
+ "date": "2026-02-13",
+ "category": "Copilot"
+ },
+ {
+ "url": "https://github.blog/changelog/2026-02-05-improved-pull-request-files-changed-february-5-updates",
+ "title": "Improved pull request Files Changed page",
+ "description": "The Files Changed experience has been redesigned with better performance, navigation, and review tools.",
+ "date": "2026-02-05",
+ "category": "Pull Requests"
+ },
+ {
+ "url": "https://github.blog/changelog/2026-02-05-pinned-comments-on-github-issues",
+ "title": "Pinned comments on GitHub Issues",
+ "description": "Maintainers can now pin important comments to the top of an issue for better visibility and context.",
+ "date": "2026-02-05",
+ "category": "Issues"
+ },
+ {
+ "url": "https://github.blog/changelog/2026-01-22-faster-loading-for-github-issues",
+ "title": "Faster loading for GitHub Issues",
+ "description": "Issues now load significantly faster with improved rendering and data fetching.",
+ "date": "2026-01-22",
+ "category": "Issues"
+ }
+ ]
+}
diff --git a/next.config.js b/next.config.js
index c2ca0342..52f66c1a 100644
--- a/next.config.js
+++ b/next.config.js
@@ -3,6 +3,7 @@
const nextConfig = {
output: 'export',
reactStrictMode: true,
+ outputFileTracingRoot: __dirname,
}
module.exports = nextConfig
diff --git a/package-lock.json b/package-lock.json
index 9bce98d8..8b9f7359 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -12,26 +12,28 @@
"dayjs": "^1.11.10",
"fathom-client": "^3.6.0",
"gray-matter": "^4.0.3",
+ "ics": "^3.8.1",
"jimp": "^1.6.0",
"markdown-it": "^14.1.1",
"marked": "^15.0.11",
"next": "^15.5.14",
"react": "18.2.0",
- "react-dom": "18.2.0",
- "smoothscroll-polyfill": "^0.4.4"
+ "react-dom": "18.2.0"
},
"devDependencies": {
"@babel/preset-env": "^7.23.3",
"@testing-library/jest-dom": "^6.1.4",
"@testing-library/react": "^14.1.0",
"babel-jest": "^29.7.0",
+ "cross-env": "^10.1.0",
"eslint": "8.53.0",
"eslint-config-next": "^15.5.12",
"jest": "^29.7.0",
"jest-css-modules": "^2.1.0",
"jest-environment-jsdom": "^30.3.0",
"sass": "^1.69.5",
- "sass-loader": "^13.3.2"
+ "sass-loader": "^13.3.2",
+ "serve": "^14.2.6"
}
},
"node_modules/@aashutoshrathi/word-wrap": {
@@ -1816,14 +1818,11 @@
"license": "MIT"
},
"node_modules/@babel/runtime": {
- "version": "7.23.2",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz",
- "integrity": "sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.6.tgz",
+ "integrity": "sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==",
"dev": true,
"license": "MIT",
- "dependencies": {
- "regenerator-runtime": "^0.14.0"
- },
"engines": {
"node": ">=6.9.0"
}
@@ -2008,6 +2007,13 @@
"tslib": "^2.4.0"
}
},
+ "node_modules/@epic-web/invariant": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@epic-web/invariant/-/invariant-1.0.0.tgz",
+ "integrity": "sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/@eslint-community/eslint-utils": {
"version": "4.9.1",
"resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz",
@@ -4716,6 +4722,13 @@
"license": "Apache-2.0",
"peer": true
},
+ "node_modules/@zeit/schemas": {
+ "version": "2.36.0",
+ "resolved": "https://registry.npmjs.org/@zeit/schemas/-/schemas-2.36.0.tgz",
+ "integrity": "sha512-7kjMwcChYEzMKjeex9ZFXkt1AyNov9R5HZtjBKVsmVpw7pa7ZtlCGvCBC2vnnXctaYN+aRI61HjIqeetZW5ROg==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/acorn": {
"version": "8.16.0",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz",
@@ -4764,9 +4777,9 @@
}
},
"node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "version": "6.14.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz",
+ "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4800,9 +4813,9 @@
}
},
"node_modules/ajv-formats/node_modules/ajv": {
- "version": "8.17.1",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
- "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
+ "version": "8.18.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz",
+ "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==",
"dev": true,
"license": "MIT",
"peer": true,
@@ -4825,6 +4838,16 @@
"license": "MIT",
"peer": 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==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^4.1.0"
+ }
+ },
"node_modules/ansi-escapes": {
"version": "4.3.2",
"resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
@@ -4887,6 +4910,34 @@
"node": ">= 8"
}
},
+ "node_modules/arch": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz",
+ "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/arg": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
+ "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/argparse": {
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
@@ -5319,10 +5370,150 @@
"integrity": "sha512-cTEHk2jLrPyi+12M3dhpEbnnPOsaZuq7C45ylbbQIiWgDFZq4UVYPEY5mlqjvsj/6gJv9qX5sa+ebDzLXT28Vw==",
"license": "MIT"
},
+ "node_modules/boxen": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.0.0.tgz",
+ "integrity": "sha512-j//dBVuyacJbvW+tvZ9HuH03fZ46QcaKvvhZickZqtB271DxJ7SNRSNxrV/dZX0085m7hISRZWbzWlJvx/rHSg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-align": "^3.0.1",
+ "camelcase": "^7.0.0",
+ "chalk": "^5.0.1",
+ "cli-boxes": "^3.0.0",
+ "string-width": "^5.1.2",
+ "type-fest": "^2.13.0",
+ "widest-line": "^4.0.1",
+ "wrap-ansi": "^8.0.1"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/boxen/node_modules/ansi-regex": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/boxen/node_modules/ansi-styles": {
+ "version": "6.2.3",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
+ "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/boxen/node_modules/camelcase": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz",
+ "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/boxen/node_modules/chalk": {
+ "version": "5.6.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz",
+ "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^12.17.0 || ^14.13 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/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==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/boxen/node_modules/strip-ansi": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz",
+ "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.2.2"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/boxen/node_modules/type-fest": {
+ "version": "2.19.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz",
+ "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==",
+ "dev": true,
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=12.20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/boxen/node_modules/wrap-ansi": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
+ "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^6.1.0",
+ "string-width": "^5.0.1",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
"node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
+ "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5394,6 +5585,16 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/bytes": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
"node_modules/call-bind": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz",
@@ -5498,6 +5699,39 @@
"node": ">=8"
}
},
+ "node_modules/chalk-template": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/chalk-template/-/chalk-template-0.4.0.tgz",
+ "integrity": "sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "chalk": "^4.1.2"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk-template?sponsor=1"
+ }
+ },
+ "node_modules/chalk-template/node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
"node_modules/char-regex": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz",
@@ -5583,12 +5817,43 @@
"dev": true,
"license": "MIT"
},
+ "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==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/client-only": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz",
"integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==",
"license": "MIT"
},
+ "node_modules/clipboardy": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-3.0.0.tgz",
+ "integrity": "sha512-Su+uU5sr1jkUy1sGRpLKjKrvEOVXgSgiSInwa/qeID6aJ07yh+5NWc3h2QfjHjBnfX4LhtFcuAWKUsJ3r+fjbg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "arch": "^2.2.0",
+ "execa": "^5.1.1",
+ "is-wsl": "^2.2.0"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/cliui": {
"version": "8.0.1",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
@@ -5659,6 +5924,55 @@
"license": "MIT",
"peer": true
},
+ "node_modules/compressible": {
+ "version": "2.0.18",
+ "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
+ "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mime-db": ">= 1.43.0 < 2"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/compression": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz",
+ "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "bytes": "3.1.2",
+ "compressible": "~2.0.18",
+ "debug": "2.6.9",
+ "negotiator": "~0.6.4",
+ "on-headers": "~1.1.0",
+ "safe-buffer": "5.2.1",
+ "vary": "~1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/compression/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/compression/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
@@ -5666,6 +5980,16 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/content-disposition": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
+ "integrity": "sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
"node_modules/convert-source-map": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
@@ -5726,6 +6050,24 @@
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
+ "node_modules/cross-env": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-10.1.0.tgz",
+ "integrity": "sha512-GsYosgnACZTADcmEyJctkJIoqAhHjttw7RsFrVoJNXbsWWqaq6Ym+7kZjq6mS45O0jij6vtiReppKQEtqWy6Dw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@epic-web/invariant": "^1.0.0",
+ "cross-spawn": "^7.0.6"
+ },
+ "bin": {
+ "cross-env": "dist/bin/cross-env.js",
+ "cross-env-shell": "dist/bin/cross-env-shell.js"
+ },
+ "engines": {
+ "node": ">=20"
+ }
+ },
"node_modules/cross-spawn": {
"version": "7.0.6",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
@@ -5923,6 +6265,16 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "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==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4.0.0"
+ }
+ },
"node_modules/deep-is": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
@@ -6041,6 +6393,13 @@
"node": ">= 0.4"
}
},
+ "node_modules/eastasianwidth": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
+ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/electron-to-chromium": {
"version": "1.5.313",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.313.tgz",
@@ -7280,8 +7639,7 @@
"url": "https://opencollective.com/fastify"
}
],
- "license": "BSD-3-Clause",
- "peer": true
+ "license": "BSD-3-Clause"
},
"node_modules/fastq": {
"version": "1.15.0",
@@ -7382,9 +7740,9 @@
}
},
"node_modules/flatted": {
- "version": "3.2.9",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz",
- "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==",
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.1.tgz",
+ "integrity": "sha512-IxfVbRFVlV8V/yRaGzk0UVIcsKKHMSfYw66T/u4nTwlWteQePsxe//LjudR1AMX4tZW3WFCh3Zqa/sjlqpbURQ==",
"dev": true,
"license": "ISC"
},
@@ -7880,6 +8238,17 @@
"node": ">=0.10.0"
}
},
+ "node_modules/ics": {
+ "version": "3.8.1",
+ "resolved": "https://registry.npmjs.org/ics/-/ics-3.8.1.tgz",
+ "integrity": "sha512-UqQlfkajfhrS4pUGQfGIJMYz/Jsl/ob3LqcfEhUmLbwumg+ZNkU0/6S734Vsjq3/FYNpEcZVKodLBoe+zBM69g==",
+ "license": "ISC",
+ "dependencies": {
+ "nanoid": "^3.1.23",
+ "runes2": "^1.1.2",
+ "yup": "^1.2.0"
+ }
+ },
"node_modules/identity-obj-proxy": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz",
@@ -7939,9 +8308,9 @@
"license": "MIT"
},
"node_modules/immutable": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz",
- "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==",
+ "version": "4.3.8",
+ "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.8.tgz",
+ "integrity": "sha512-d/Ld9aLbKpNwyl0KiM2CT1WYvkitQ1TSvmRtkcV8FKStiDoA7Slzgjmb/1G2yhKM1p0XeNOieaTbFZmU1d3Xuw==",
"devOptional": true,
"license": "MIT"
},
@@ -8030,6 +8399,13 @@
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
"license": "ISC"
},
+ "node_modules/ini": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
+ "dev": true,
+ "license": "ISC"
+ },
"node_modules/internal-slot": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz",
@@ -8217,6 +8593,22 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/is-docker": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
+ "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "is-docker": "cli.js"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/is-extendable": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
@@ -8368,6 +8760,19 @@
"node": ">=8"
}
},
+ "node_modules/is-port-reachable": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/is-port-reachable/-/is-port-reachable-4.0.0.tgz",
+ "integrity": "sha512-9UoipoxYmSk6Xy7QFgRv2HDyaysmgSG75TFQs6S+3pDM7ZhKTF/bskZV+0UlABHzKjNVhPjYCLfeZUEg1wXxig==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/is-potential-custom-element-name": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz",
@@ -8533,6 +8938,19 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/is-wsl": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
+ "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-docker": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/isarray": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
@@ -10350,9 +10768,9 @@
}
},
"node_modules/lodash": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "version": "4.17.23",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz",
+ "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==",
"dev": true,
"license": "MIT"
},
@@ -10564,7 +10982,6 @@
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
"dev": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">= 0.6"
}
@@ -10658,6 +11075,16 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/negotiator": {
+ "version": "0.6.4",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz",
+ "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
"node_modules/neo-async": {
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
@@ -10907,6 +11334,16 @@
"integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==",
"license": "MIT"
},
+ "node_modules/on-headers": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz",
+ "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
"node_modules/once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
@@ -11130,6 +11567,13 @@
"node": ">=0.10.0"
}
},
+ "node_modules/path-is-inside": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
+ "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==",
+ "dev": true,
+ "license": "(WTFPL OR MIT)"
+ },
"node_modules/path-key": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
@@ -11147,6 +11591,13 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/path-to-regexp": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.3.0.tgz",
+ "integrity": "sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/peek-readable": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-4.1.0.tgz",
@@ -11341,6 +11792,12 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/property-expr": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-2.0.6.tgz",
+ "integrity": "sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA==",
+ "license": "MIT"
+ },
"node_modules/punycode": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
@@ -11398,6 +11855,42 @@
],
"license": "MIT"
},
+ "node_modules/range-parser": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
+ "integrity": "sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/rc": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
+ "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
+ "dev": true,
+ "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/rc/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==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/react": {
"version": "18.2.0",
"resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
@@ -11530,13 +12023,6 @@
"node": ">=4"
}
},
- "node_modules/regenerator-runtime": {
- "version": "0.14.0",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz",
- "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/regenerator-transform": {
"version": "0.15.2",
"resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz",
@@ -11586,6 +12072,30 @@
"node": ">=4"
}
},
+ "node_modules/registry-auth-token": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz",
+ "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "rc": "^1.1.6",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "node_modules/registry-url": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz",
+ "integrity": "sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "rc": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/regjsparser": {
"version": "0.9.1",
"resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz",
@@ -11624,7 +12134,6 @@
"integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
"dev": true,
"license": "MIT",
- "peer": true,
"engines": {
"node": ">=0.10.0"
}
@@ -11749,6 +12258,12 @@
"queue-microtask": "^1.2.2"
}
},
+ "node_modules/runes2": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/runes2/-/runes2-1.1.4.tgz",
+ "integrity": "sha512-LNPnEDPOOU4ehF71m5JoQyzT2yxwD6ZreFJ7MxZUAoMKNMY1XrAo60H1CUoX5ncSm0rIuKlqn9JZNRrRkNou2g==",
+ "license": "MIT"
+ },
"node_modules/safe-array-concat": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz",
@@ -11937,9 +12452,9 @@
}
},
"node_modules/schema-utils/node_modules/ajv": {
- "version": "8.17.1",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
- "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
+ "version": "8.18.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz",
+ "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==",
"dev": true,
"license": "MIT",
"peer": true,
@@ -11999,6 +12514,118 @@
"semver": "bin/semver.js"
}
},
+ "node_modules/serve": {
+ "version": "14.2.6",
+ "resolved": "https://registry.npmjs.org/serve/-/serve-14.2.6.tgz",
+ "integrity": "sha512-QEjUSA+sD4Rotm1znR8s50YqA3kYpRGPmtd5GlFxbaL9n/FdUNbqMhxClqdditSk0LlZyA/dhud6XNRTOC9x2Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@zeit/schemas": "2.36.0",
+ "ajv": "8.18.0",
+ "arg": "5.0.2",
+ "boxen": "7.0.0",
+ "chalk": "5.0.1",
+ "chalk-template": "0.4.0",
+ "clipboardy": "3.0.0",
+ "compression": "1.8.1",
+ "is-port-reachable": "4.0.0",
+ "serve-handler": "6.1.7",
+ "update-check": "1.5.4"
+ },
+ "bin": {
+ "serve": "build/main.js"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/serve-handler": {
+ "version": "6.1.7",
+ "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.7.tgz",
+ "integrity": "sha512-CinAq1xWb0vR3twAv9evEU8cNWkXCb9kd5ePAHUKJBkOsUpR1wt/CvGdeca7vqumL1U5cSaeVQ6zZMxiJ3yWsg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "bytes": "3.0.0",
+ "content-disposition": "0.5.2",
+ "mime-types": "2.1.18",
+ "minimatch": "3.1.5",
+ "path-is-inside": "1.0.2",
+ "path-to-regexp": "3.3.0",
+ "range-parser": "1.2.0"
+ }
+ },
+ "node_modules/serve-handler/node_modules/bytes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
+ "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/serve-handler/node_modules/mime-db": {
+ "version": "1.33.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz",
+ "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/serve-handler/node_modules/mime-types": {
+ "version": "2.1.18",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz",
+ "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mime-db": "~1.33.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/serve/node_modules/ajv": {
+ "version": "8.18.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz",
+ "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==",
+ "dev": true,
+ "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/serve/node_modules/chalk": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.0.1.tgz",
+ "integrity": "sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^12.17.0 || ^14.13 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/serve/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/set-function-length": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
@@ -12238,12 +12865,6 @@
"node": ">=8"
}
},
- "node_modules/smoothscroll-polyfill": {
- "version": "0.4.4",
- "resolved": "https://registry.npmjs.org/smoothscroll-polyfill/-/smoothscroll-polyfill-0.4.4.tgz",
- "integrity": "sha512-TK5ZA9U5RqCwMpfoMq/l1mrH0JAR7y7KRvOBx0n2869aLxch+gT9GhN3yUfjiw+d/DiF1mKo14+hd62JyMmoBg==",
- "license": "MIT"
- },
"node_modules/source-map": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
@@ -12752,6 +13373,12 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/tiny-case": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/tiny-case/-/tiny-case-1.0.3.tgz",
+ "integrity": "sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==",
+ "license": "MIT"
+ },
"node_modules/tinycolor2": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz",
@@ -12863,6 +13490,12 @@
"url": "https://github.com/sponsors/Borewit"
}
},
+ "node_modules/toposort": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz",
+ "integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==",
+ "license": "MIT"
+ },
"node_modules/tough-cookie": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.2.tgz",
@@ -13167,6 +13800,17 @@
"browserslist": ">= 4.21.0"
}
},
+ "node_modules/update-check": {
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/update-check/-/update-check-1.5.4.tgz",
+ "integrity": "sha512-5YHsflzHP4t1G+8WGPlvKbJEbAJGCgw+Em+dGR1KmBUbr1J36SJBqlHLjR7oob7sco5hWHGQVcr9B2poIVDDTQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "registry-auth-token": "3.3.2",
+ "registry-url": "3.1.0"
+ }
+ },
"node_modules/uri-js": {
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
@@ -13207,6 +13851,16 @@
"node": ">=10.12.0"
}
},
+ "node_modules/vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
"node_modules/w3c-xmlserializer": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz",
@@ -13485,6 +14139,69 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "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==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "string-width": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/widest-line/node_modules/ansi-regex": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "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==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/widest-line/node_modules/strip-ansi": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz",
+ "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.2.2"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
"node_modules/wrap-ansi": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
@@ -13650,6 +14367,30 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/yup": {
+ "version": "1.7.1",
+ "resolved": "https://registry.npmjs.org/yup/-/yup-1.7.1.tgz",
+ "integrity": "sha512-GKHFX2nXul2/4Dtfxhozv701jLQHdf6J34YDh2cEkpqoo8le5Mg6/LrdseVLrFarmFygZTlfIhHx/QKfb/QWXw==",
+ "license": "MIT",
+ "dependencies": {
+ "property-expr": "^2.0.5",
+ "tiny-case": "^1.0.3",
+ "toposort": "^2.0.2",
+ "type-fest": "^2.19.0"
+ }
+ },
+ "node_modules/yup/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==",
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=12.20"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/zod": {
"version": "3.23.8",
"resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz",
diff --git a/package.json b/package.json
index 862bd56f..b9ea945b 100644
--- a/package.json
+++ b/package.json
@@ -4,8 +4,8 @@
"private": true,
"scripts": {
"dev": "next dev",
- "build": "NODE_ENV=production next build",
- "start": "next start",
+ "build": "cross-env NODE_ENV=production next build",
+ "start": "serve out",
"lint": "next lint",
"test": "jest"
},
@@ -14,29 +14,32 @@
"dayjs": "^1.11.10",
"fathom-client": "^3.6.0",
"gray-matter": "^4.0.3",
+ "ics": "^3.8.1",
"jimp": "^1.6.0",
"markdown-it": "^14.1.1",
"marked": "^15.0.11",
"next": "^15.5.14",
"react": "18.2.0",
- "react-dom": "18.2.0",
- "smoothscroll-polyfill": "^0.4.4"
+ "react-dom": "18.2.0"
},
"devDependencies": {
"@babel/preset-env": "^7.23.3",
"@testing-library/jest-dom": "^6.1.4",
"@testing-library/react": "^14.1.0",
"babel-jest": "^29.7.0",
+ "cross-env": "^10.1.0",
"eslint": "8.53.0",
"eslint-config-next": "^15.5.12",
"jest": "^29.7.0",
"jest-css-modules": "^2.1.0",
"jest-environment-jsdom": "^30.3.0",
"sass": "^1.69.5",
- "sass-loader": "^13.3.2"
+ "sass-loader": "^13.3.2",
+ "serve": "^14.2.6"
},
"overrides": {
- "xml2js": "^0.6.0"
+ "xml2js": "^0.6.0",
+ "file-type": ">=21.3.1"
},
"resolutions": {
"jimp/@jimp/plugins/@jimp/plugin-print/load-bmfont/parse-bmfont-xml/xml2js": "^0.6.0"
diff --git a/pages/2022/schedule/[slug].js b/pages/2022/schedule/[slug].js
index 1c8f7cac..6c72e04e 100644
--- a/pages/2022/schedule/[slug].js
+++ b/pages/2022/schedule/[slug].js
@@ -12,9 +12,7 @@ export default function EventDetailPage({ event, ogImage }) {
return (
<>
-
- {event.title} - {getLiteral('meta:title')}
-
+
{`${event.title} - ${getLiteral('meta:title')}`}
-
- {getLiteral('schedule:title')} - {getLiteral('meta:title')}
-
+
{`${getLiteral('schedule:title')} - ${getLiteral('meta:title')}`}
{/* */}
diff --git a/pages/2023/index.js b/pages/2023/index.js
index efdd620f..b5594864 100644
--- a/pages/2023/index.js
+++ b/pages/2023/index.js
@@ -62,7 +62,7 @@ export default function Home({ hero, about, getInvolved, events, connection }) {
date={hero.date}
title={hero.title}
buttonText={hero.buttonText}
- buttonLink={ROUTES.SCHEDULE.getPath("2022")}
+ buttonLink={ROUTES.SCHEDULE.getPath("2023")}
/>
-
- {event.title} - {getLiteral('meta:title')}
-
+ {`${event.title} - ${getLiteral('meta:title')}`}
({
params: {
@@ -55,7 +53,7 @@ export async function getStaticPaths() {
}
export async function getStaticProps({ params: { slug } }) {
- const event = getEventBySlug(slug, '2022')
+ const event = getEventBySlug(slug, '2023')
const parsedEvent = parseEvent(event)
const ogImage = await getOgImage({
diff --git a/pages/2023/schedule/index.js b/pages/2023/schedule/index.js
index f8547e5f..0961e77a 100644
--- a/pages/2023/schedule/index.js
+++ b/pages/2023/schedule/index.js
@@ -17,9 +17,7 @@ export default function Schedule({ events }) {
return (
-
- {getLiteral('schedule:title')} - {getLiteral('meta:title')}
-
+
{`${getLiteral('schedule:title')} - ${getLiteral('meta:title')}`}
{/* */}
@@ -52,7 +50,7 @@ export default function Schedule({ events }) {
}
export async function getStaticProps() {
- const events = parseEvents(getEvents('2022'))
+ const events = parseEvents(getEvents('2023'))
return {
props: {
diff --git a/pages/2024/index.js b/pages/2024/index.js
index efdd620f..369fbfca 100644
--- a/pages/2024/index.js
+++ b/pages/2024/index.js
@@ -62,7 +62,7 @@ export default function Home({ hero, about, getInvolved, events, connection }) {
date={hero.date}
title={hero.title}
buttonText={hero.buttonText}
- buttonLink={ROUTES.SCHEDULE.getPath("2022")}
+ buttonLink={ROUTES.SCHEDULE.getPath("2024")}
/>
-
- {event.title} - {getLiteral('meta:title')}
-
+ {`${event.title} - ${getLiteral('meta:title')}`}
({
params: {
@@ -55,7 +53,7 @@ export async function getStaticPaths() {
}
export async function getStaticProps({ params: { slug } }) {
- const event = getEventBySlug(slug, '2022')
+ const event = getEventBySlug(slug, '2024')
const parsedEvent = parseEvent(event)
const ogImage = await getOgImage({
diff --git a/pages/2024/schedule/index.js b/pages/2024/schedule/index.js
index f8547e5f..f496ddd6 100644
--- a/pages/2024/schedule/index.js
+++ b/pages/2024/schedule/index.js
@@ -17,9 +17,7 @@ export default function Schedule({ events }) {
return (
-
- {getLiteral('schedule:title')} - {getLiteral('meta:title')}
-
+
{`${getLiteral('schedule:title')} - ${getLiteral('meta:title')}`}
{/* */}
@@ -52,7 +50,7 @@ export default function Schedule({ events }) {
}
export async function getStaticProps() {
- const events = parseEvents(getEvents('2022'))
+ const events = parseEvents(getEvents('2024'))
return {
props: {
diff --git a/pages/2025/schedule/[slug].js b/pages/2025/schedule/[slug].js
new file mode 100644
index 00000000..d958fa65
--- /dev/null
+++ b/pages/2025/schedule/[slug].js
@@ -0,0 +1,71 @@
+import fs from 'fs'
+import Head from 'next/head'
+
+import { getEventBySlug, parseEvent } from '../../../api/events'
+import { getLiteral } from '../../../common/i18n'
+
+import EventDetail from '../../../components/event-detail/EventDetail'
+import EventDetailWrapper from '../../../components/event-detail/EventDetailWrapper'
+import getOgImage from '../../../components/og-image/getOgImage'
+
+export default function EventDetailPage({ event, ogImage }) {
+ return (
+ <>
+
+
{`${event.title} - ${getLiteral('meta:title')}`}
+
+
+ {/* */}
+
+
+
+
+ {/* */}
+
+
+
+
+
+
+
+
+
+ >
+ )
+}
+
+export async function getStaticPaths() {
+ const files = fs.readdirSync('content/2025/events')
+
+ const paths = files.map((fileName) => ({
+ params: {
+ slug: fileName.replace('.md', ''),
+ },
+ }))
+
+ return {
+ paths,
+ fallback: false,
+ }
+}
+
+export async function getStaticProps({ params: { slug } }) {
+ const event = getEventBySlug(slug, '2025')
+ const parsedEvent = parseEvent(event)
+
+ const ogImage = await getOgImage({
+ title: parsedEvent.title,
+ user: parsedEvent.userName,
+ type: parsedEvent.type,
+ })
+
+ return {
+ props: {
+ event: parsedEvent,
+ ogImage,
+ },
+ }
+}
diff --git a/pages/2025/schedule/index.js b/pages/2025/schedule/index.js
new file mode 100644
index 00000000..278d3739
--- /dev/null
+++ b/pages/2025/schedule/index.js
@@ -0,0 +1,60 @@
+import { useEffect } from 'react'
+import Head from 'next/head'
+
+import { getLiteral } from '../../../common/i18n'
+import { getEvents, parseEvents } from '../../../api/events'
+import { useBackground } from '../../../contexts/BackgroundContext'
+
+import EventsList from '../../../components/events-list/EventsList'
+
+export default function Schedule({ events }) {
+ const { setAnimationStep } = useBackground()
+
+ useEffect(() => {
+ setAnimationStep(6)
+ }, [setAnimationStep])
+
+ return (
+
+
+
{`${getLiteral('schedule:title')} - ${getLiteral('meta:title')}`}
+
+
+ {/* */}
+
+
+
+
+ {/* */}
+
+
+
+
+
+
+
+
+ )
+}
+
+export async function getStaticProps() {
+ const events = parseEvents(getEvents('2025'))
+
+ return {
+ props: {
+ events,
+ },
+ }
+}
diff --git a/pages/_app.js b/pages/_app.js
index 91e7357f..3d4787a8 100644
--- a/pages/_app.js
+++ b/pages/_app.js
@@ -3,8 +3,6 @@ import { useEffect } from 'react'
import { useRouter } from 'next/router'
import * as Fathom from 'fathom-client';
-import smoothscroll from 'smoothscroll-polyfill'
-
import Layout from '../components/layout/Layout'
import { BackgroundProvider } from '../contexts/BackgroundContext'
import useViewportHeight from '../hooks/useViewportHeight'
@@ -20,8 +18,6 @@ function App({ Component, pageProps }) {
includedDomains: ['maintainermonth.github.com'],
});
- smoothscroll.polyfill()
-
const handleRouteChange = () => {
Fathom.trackPageview();
window.scroll({
diff --git a/pages/news.js b/pages/news.js
index e1a4fa8f..908a4dd2 100644
--- a/pages/news.js
+++ b/pages/news.js
@@ -45,6 +45,11 @@ export default function News({ data }) {
+
+
+ News content will be updated for Maintainer Month 2026. The entries below are from previous years.
+
+
diff --git a/pages/partner-pack.js b/pages/partner-pack.js
index 43431f7d..384aab74 100644
--- a/pages/partner-pack.js
+++ b/pages/partner-pack.js
@@ -50,8 +50,9 @@ export default function PartnerPack({ content, frontmatter, partnerOffers, addit
{/* Offers component commented out until Maintainer Month 2026
*/}
-
Partner Pack Offers
-
Thank you for your interest! Maintainer Month 2025 has concluded. Please check back next year for new partner offers and opportunities.
+
Become a Maintainer Month 2026 Partner
+
We're looking for partners to offer exclusive perks, tools, and resources to open source maintainers during Maintainer Month 2026. If your company wants to support the maintainers behind the software we all depend on, we'd love to hear from you.
+
Get in touch at maintainermonth@github.com.
diff --git a/pages/schedule/[slug].js b/pages/schedule/[slug].js
index 454353b3..2cf2b644 100644
--- a/pages/schedule/[slug].js
+++ b/pages/schedule/[slug].js
@@ -1,7 +1,6 @@
-import fs from 'fs'
import Head from 'next/head'
-import { getEventBySlug, parseEvent } from '../../api/events'
+import { getEvents, getEventBySlug, parseEvent } from '../../api/events'
import { getLiteral } from '../../common/i18n'
import EventDetail from '../../components/event-detail/EventDetail'
@@ -12,9 +11,7 @@ export default function EventDetailPage({ event, ogImage }) {
return (
<>
-
({
+ const paths = events.map((event) => ({
params: {
- slug: fileName.replace('.md', ''),
+ slug: event.slug,
},
}))
diff --git a/pages/schedule/index.js b/pages/schedule/index.js
index f222a802..cd7b8328 100644
--- a/pages/schedule/index.js
+++ b/pages/schedule/index.js
@@ -3,6 +3,7 @@ import Head from 'next/head'
import { getLiteral } from '../../common/i18n'
import { getEvents, parseEvents } from '../../api/events'
+import { generateICS } from '../../api/calendar'
import { useBackground } from '../../contexts/BackgroundContext'
import EventsList from '../../components/events-list/EventsList'
@@ -17,9 +18,7 @@ export default function Schedule({ events }) {
return (