diff --git a/.changeset/next-sitemap-fork.md b/.changeset/next-sitemap-fork.md
new file mode 100644
index 00000000..46df2325
--- /dev/null
+++ b/.changeset/next-sitemap-fork.md
@@ -0,0 +1,7 @@
+---
+"@opensourceframework/next-sitemap": major
+---
+
+Add `@opensourceframework/next-sitemap` as a maintained fork of the stale `next-sitemap` package. Provides a drop-in replacement with corrected CommonJS support (uses `.cjs` extension). Includes a smoke test to verify package loads.
+
+Fixes #101
\ No newline at end of file
diff --git a/packages/identity-obj-proxy/src/__tests__/smoke.test.js b/packages/identity-obj-proxy/src/__tests__/smoke.test.js
new file mode 100644
index 00000000..75540fa4
--- /dev/null
+++ b/packages/identity-obj-proxy/src/__tests__/smoke.test.js
@@ -0,0 +1,7 @@
+const idObj = require('..');
+
+describe('identity-obj-proxy fork', () => {
+ it('should return the key as a string (smoke test)', () => {
+ expect(idObj.smoke).toBe('smoke');
+ });
+});
diff --git a/packages/next-sitemap/.npmignore b/packages/next-sitemap/.npmignore
new file mode 100644
index 00000000..b6ff2ccb
--- /dev/null
+++ b/packages/next-sitemap/.npmignore
@@ -0,0 +1,2 @@
+src
+tsconfig.json
diff --git a/packages/next-sitemap/README.md b/packages/next-sitemap/README.md
index cb62bb01..a8b2a990 100644
--- a/packages/next-sitemap/README.md
+++ b/packages/next-sitemap/README.md
@@ -1,537 +1 @@
-[](https://vercel.com/?utm_source=@opensourceframework/next-sitemap&utm_campaign=oss)
-
-
-
-[](https://dev.azure.com/iamvishnusankar/Public/_build/latest?definitionId=126&branchName=master)
-[](https://badge.fury.io/js/@opensourceframework/next-sitemap)
-[](https://github.com/iamvishnusankar/@opensourceframework/next-sitemap/pulls)
-
-
-
-
-
-
-## Table of contents
-
-- [Getting started](#getting-started)
- - [Installation](#installation)
- - [Create config file](#create-config-file)
- - [Building sitemaps](#building-sitemaps)
- - [Custom config file](#custom-config-file)
- - [Building sitemaps with pnpm](#building-sitemaps-with-pnpm)
-- [Index sitemaps](#index-sitemaps-optional)
-- [Splitting large sitemap into multiple files](#splitting-large-sitemap-into-multiple-files)
-- [Configuration Options](#configuration-options)
-- [Custom transformation function](#custom-transformation-function)
-- [Full configuration example](#full-configuration-example)
-- [Generating dynamic/server-side sitemaps](#generating-dynamicserver-side-sitemaps)
-- [Typescript JSDoc](#typescript-jsdoc)
-
-## Getting started
-
-#### Attribution
-
-- **Original Author**: Unknown
-- **Original Repository**: https://github.com/iamvishnusankar/next-sitemap
-- **Original License**: MIT
-
-
-
-```shell
-yarn add @opensourceframework/next-sitemap
-```
-
-### Create config file
-
-`@opensourceframework/next-sitemap` requires a basic config file (`@opensourceframework/next-sitemap.config.js`) under your project root
-
-> ✅ `@opensourceframework/next-sitemap` will load environment variables from `.env` files by default.
-
-```js
-/** @type {import('@opensourceframework/next-sitemap').IConfig} */
-module.exports = {
- siteUrl: process.env.SITE_URL || 'https://example.com',
- generateRobotsTxt: true, // (optional)
- // ...other options
-}
-```
-
-### Building sitemaps
-
-Add @opensourceframework/next-sitemap as your postbuild script
-
-```json
-{
- "build": "next build",
- "postbuild": "@opensourceframework/next-sitemap"
-}
-```
-
-#### Custom config file
-
-You can also use a custom config file instead of `@opensourceframework/next-sitemap.config.js`. Just pass `--config .js` to build command (Example: [custom-config-file](https://github.com/iamvishnusankar/@opensourceframework/next-sitemap/tree/master/examples/custom-config-file))
-
-```json
-{
- "build": "next build",
- "postbuild": "@opensourceframework/next-sitemap --config awesome.config.js"
-}
-```
-
-#### Building sitemaps with pnpm
-
-When using pnpm you need to create a `.npmrc` file in the root of your project if you want to use a postbuild step:
-
-```
-//.npmrc
-enable-pre-post-scripts=true
-```
-
-## Index sitemaps (Optional)
-
-📣 From `@opensourceframework/next-sitemap` v2.x onwards, `sitemap.xml` will be [Index Sitemap](https://developers.google.com/search/docs/advanced/sitemaps/large-sitemaps). It will contain urls of all other generated sitemap endpoints.
-
-Index sitemap generation can be turned off by setting `generateIndexSitemap: false` in @opensourceframework/next-sitemap config file. (This is useful for small/hobby sites which does not require an index sitemap) (Example: [no-index-sitemaps](https://github.com/iamvishnusankar/@opensourceframework/next-sitemap/tree/master/examples/no-index-sitemaps))
-
-## Splitting large sitemap into multiple files
-
-Define the `sitemapSize` property in `@opensourceframework/next-sitemap.config.js` to split large sitemap into multiple files.
-
-```js
-/** @type {import('@opensourceframework/next-sitemap').IConfig} */
-module.exports = {
- siteUrl: 'https://example.com',
- generateRobotsTxt: true,
- sitemapSize: 7000,
-}
-```
-
-Above is the minimal configuration to split a large sitemap. When the number of URLs in a sitemap is more than 7000, `@opensourceframework/next-sitemap` will create sitemap (e.g. sitemap-0.xml, sitemap-1.xml) and index (e.g. sitemap.xml) files.
-
-## Configuration Options
-
-| property | description | type |
-| --------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ |
-| siteUrl | Base url of your website | string |
-| output (optional) | Next.js output modes. [Check documentation](https://nextjs.org/docs/pages/api-reference/next-config-js/output). | `standalone`, `export` |
-| changefreq (optional) | Change frequency. Default `daily` | string |
-| priority (optional) | Priority. Default `0.7` | number |
-| sitemapBaseFileName (optional) | The name of the generated sitemap file before the file extension. Default `"sitemap"` | string |
-| alternateRefs (optional) | Denote multi-language support by unique URL. Default `[]` | AlternateRef[] |
-| sitemapSize(optional) | Split large sitemap into multiple files by specifying sitemap size. Default `5000` | number |
-| autoLastmod (optional) | Add `` property. Default `true` | true |
-| exclude (optional) | Array of **relative** paths ([wildcard pattern supported](https://www.npmjs.com/package/matcher#usage)) to exclude from listing on `sitemap.xml` or `sitemap-*.xml`. e.g.: `['/page-0', '/page-*', '/private/*']`.
Apart from this option `@opensourceframework/next-sitemap` also offers a custom `transform` option which could be used to exclude urls that match specific patterns | string[] |
-| sourceDir (optional) | next.js build directory. Default `.next` | string |
-| outDir (optional) | All the generated files will be exported to this directory. Default `public` | string |
-| transform (optional) | A transformation function, which runs **for each** `relative-path` in the sitemap. Returning `null` value from the transformation function will result in the exclusion of that specific `path` from the generated sitemap list. | async function |
-| additionalPaths (optional) | Async function that returns a list of additional paths to be added to the generated sitemap list. | async function |
-| generateIndexSitemap | Generate index sitemaps. Default `true` | boolean |
-| generateRobotsTxt (optional) | Generate a `robots.txt` file and list the generated sitemaps. Default `false` | boolean |
-| robotsTxtOptions.transformRobotsTxt (optional) | Custom robots.txt transformer function. (Example: [custom-robots-txt-transformer](https://github.com/iamvishnusankar/@opensourceframework/next-sitemap/tree/master/examples/custom-robots-txt-transformer))
Default: `async(config, robotsTxt)=> robotsTxt` | async function |
-| robotsTxtOptions.policies (optional) | Policies for generating `robots.txt`.
Default:
`[{ userAgent: '*', allow: '/' }]` | [IRobotPolicy[]](https://github.com/iamvishnusankar/@opensourceframework/next-sitemap/blob/master/packages/@opensourceframework/next-sitemap/src/interface.ts#L14) |
-| robotsTxtOptions.additionalSitemaps (optional) | Options to add additional sitemaps to `robots.txt` host entry | string[] |
-| robotsTxtOptions.includeNonIndexSitemaps (optional) | From v2.4x onwards, generated `robots.txt` will only contain url of `index sitemap` and custom provided endpoints from `robotsTxtOptions.additionalSitemaps`.
This is to prevent duplicate url submission (once through index-sitemap -> sitemap-url and once through robots.txt -> HOST)
Set this option `true` to add all generated sitemap endpoints to `robots.txt`
Default `false` (Recommended) | boolean |
-
-## Custom transformation function
-
-Custom transformation provides an extension method to add, remove or exclude `path` or `properties` from a url-set. Transform function runs **for each** `relative path` in the sitemap. And use the `key`: `value` object to add properties in the XML.
-
-Returning `null` value from the transformation function will result in the exclusion of that specific `relative-path` from the generated sitemap list.
-
-```jsx
-/** @type {import('@opensourceframework/next-sitemap').IConfig} */
-module.exports = {
- transform: async (config, path) => {
- // custom function to ignore the path
- if (customIgnoreFunction(path)) {
- return null
- }
-
- // only create changefreq along with path
- // returning partial properties will result in generation of XML field with only returned values.
- if (customLimitedField(path)) {
- // This returns `path` & `changefreq`. Hence it will result in the generation of XML field with `path` and `changefreq` properties only.
- return {
- loc: path, // => this will be exported as http(s):///
- changefreq: 'weekly',
- }
- }
-
- // Use default transformation for all other cases
- return {
- loc: path, // => this will be exported as http(s):///
- changefreq: config.changefreq,
- priority: config.priority,
- lastmod: config.autoLastmod ? new Date().toISOString() : undefined,
- alternateRefs: config.alternateRefs ?? [],
- }
- },
-}
-```
-
-## Additional paths function
-
-`additionalPaths` this function can be useful if you have a large list of pages, but you don't want to render them all and use [fallback: true](https://nextjs.org/docs/basic-features/data-fetching#fallback-true). Result of executing this function will be added to the general list of paths and processed with `sitemapSize`. You are free to add dynamic paths, but unlike `additionalSitemap`, you do not need to split the list of paths into different files in case there are a lot of paths for one file.
-
-If your function returns a path that already exists, then it will simply be updated, duplication will not happen.
-
-```js
-/** @type {import('@opensourceframework/next-sitemap').IConfig} */
-module.exports = {
- additionalPaths: async (config) => {
- const result = []
-
- // required value only
- result.push({ loc: '/additional-page-1' })
-
- // all possible values
- result.push({
- loc: '/additional-page-2',
- changefreq: 'yearly',
- priority: 0.7,
- lastmod: new Date().toISOString(),
-
- // acts only on '/additional-page-2'
- alternateRefs: [
- {
- href: 'https://es.example.com',
- hreflang: 'es',
- },
- {
- href: 'https://fr.example.com',
- hreflang: 'fr',
- },
- ],
- })
-
- // using transformation from the current configuration
- result.push(await config.transform(config, '/additional-page-3'))
-
- return result
- },
-}
-```
-
-## Google News, image and video sitemap
-
-Url set can contain additional sitemaps defined by google. These are
-[Google News sitemap](https://developers.google.com/search/docs/advanced/sitemaps/news-sitemap),
-[image sitemap](https://developers.google.com/search/docs/advanced/sitemaps/image-sitemaps) or
-[video sitemap](https://developers.google.com/search/docs/advanced/sitemaps/video-sitemaps).
-You can add the values for these sitemaps by updating entry in `transform` function or adding it with
-`additionalPaths`. You have to return a sitemap entry in both cases, so it's the best place for updating
-the output. This example will add an image and news tag to each entry but IRL you would of course use it with
-some condition or within `additionalPaths` result.
-
-```js
-/** @type {import('@opensourceframework/next-sitemap').IConfig} */
-const config = {
- transform: async (config, path) => {
- return {
- loc: path, // => this will be exported as http(s):///
- changefreq: config.changefreq,
- priority: config.priority,
- lastmod: config.autoLastmod ? new Date().toISOString() : undefined,
- images: [{ loc: 'https://example.com/image.jpg' }],
- news: {
- title: 'Article 1',
- publicationName: 'Google Scholar',
- publicationLanguage: 'en',
- date: new Date(),
- },
- }
- },
-}
-
-export default config
-```
-
-## Full configuration example
-
-Here's an example `@opensourceframework/next-sitemap.config.js` configuration with all options
-
-```js
-/** @type {import('@opensourceframework/next-sitemap').IConfig} */
-
-module.exports = {
- siteUrl: 'https://example.com',
- changefreq: 'daily',
- priority: 0.7,
- sitemapSize: 5000,
- generateRobotsTxt: true,
- exclude: ['/protected-page', '/awesome/secret-page'],
- alternateRefs: [
- {
- href: 'https://es.example.com',
- hreflang: 'es',
- },
- {
- href: 'https://fr.example.com',
- hreflang: 'fr',
- },
- ],
- // Default transformation function
- transform: async (config, path) => {
- return {
- loc: path, // => this will be exported as http(s):///
- changefreq: config.changefreq,
- priority: config.priority,
- lastmod: config.autoLastmod ? new Date().toISOString() : undefined,
- alternateRefs: config.alternateRefs ?? [],
- }
- },
- additionalPaths: async (config) => [
- await config.transform(config, '/additional-page'),
- ],
- robotsTxtOptions: {
- policies: [
- {
- userAgent: '*',
- allow: '/',
- },
- {
- userAgent: 'test-bot',
- allow: ['/path', '/path-2'],
- },
- {
- userAgent: 'black-listed-bot',
- disallow: ['/sub-path-1', '/path-2'],
- },
- ],
- additionalSitemaps: [
- 'https://example.com/my-custom-sitemap-1.xml',
- 'https://example.com/my-custom-sitemap-2.xml',
- 'https://example.com/my-custom-sitemap-3.xml',
- ],
- },
-}
-```
-
-Above configuration will generate sitemaps based on your project and a `robots.txt` like this.
-
-```txt
-# *
-User-agent: *
-Allow: /
-
-# test-bot
-User-agent: test-bot
-Allow: /path
-Allow: /path-2
-
-# black-listed-bot
-User-agent: black-listed-bot
-Disallow: /sub-path-1
-Disallow: /path-2
-
-# Host
-Host: https://example.com
-
-# Sitemaps
-Sitemap: https://example.com/sitemap.xml # Index sitemap
-Sitemap: https://example.com/my-custom-sitemap-1.xml
-Sitemap: https://example.com/my-custom-sitemap-2.xml
-Sitemap: https://example.com/my-custom-sitemap-3.xml
-```
-
-## Generating dynamic/server-side sitemaps
-
-`@opensourceframework/next-sitemap` now provides two APIs to generate server side sitemaps. This will help to dynamically generate `index-sitemap`(s) and `sitemap`(s) by sourcing data from CMS or custom source.
-
-- `getServerSideSitemapIndex`: Generates index sitemaps based on urls provided and returns `application/xml` response. Supports next13+ route.{ts,js} file.
-
- - To continue using inside pages directory, import `getServerSideSitemapIndexLegacy` instead.
-
-- `getServerSideSitemap`: Generates sitemap based on field entires and returns `application/xml` response. Supports next13+ route.{ts,js} file.
- - To continue using inside pages directory, import `getServerSideSitemapLegacy` instead.
-
-### Server side index-sitemaps (getServerSideSitemapIndex)
-
-Here's a sample script to generate index-sitemap on server side.
-
-
-1. Index sitemap (app directory)
-
-Create `app/server-sitemap-index.xml/route.ts` file.
-
-```ts
-// app/server-sitemap-index.xml/route.ts
-import { getServerSideSitemapIndex } from '@opensourceframework/next-sitemap'
-
-export async function GET(request: Request) {
- // Method to source urls from cms
- // const urls = await fetch('https//example.com/api')
-
- return getServerSideSitemapIndex([
- 'https://example.com/path-1.xml',
- 'https://example.com/path-2.xml',
- ])
-}
-```
-
-
-
-
-2. Index sitemap (pages directory) (legacy)
-
-Create `pages/server-sitemap-index.xml/index.tsx` file.
-
-```ts
-// pages/server-sitemap-index.xml/index.tsx
-import { getServerSideSitemapIndexLegacy } from '@opensourceframework/next-sitemap'
-import { GetServerSideProps } from 'next'
-
-export const getServerSideProps: GetServerSideProps = async (ctx) => {
- // Method to source urls from cms
- // const urls = await fetch('https//example.com/api')
-
- return getServerSideSitemapIndexLegacy(ctx, [
- 'https://example.com/path-1.xml',
- 'https://example.com/path-2.xml',
- ])
-}
-
-// Default export to prevent next.js errors
-export default function SitemapIndex() {}
-```
-
-
-
-#### Exclude server index sitemap from robots.txt
-
-Now, `next.js` is serving the dynamic index-sitemap from `http://localhost:3000/server-sitemap-index.xml`.
-
-List the dynamic sitemap page in `robotsTxtOptions.additionalSitemaps` and exclude this path from static sitemap list.
-
-```js
-// @opensourceframework/next-sitemap.config.js
-
-/** @type {import('@opensourceframework/next-sitemap').IConfig} */
-module.exports = {
- siteUrl: 'https://example.com',
- generateRobotsTxt: true,
- exclude: ['/server-sitemap-index.xml'], // <= exclude here
- robotsTxtOptions: {
- additionalSitemaps: [
- 'https://example.com/server-sitemap-index.xml', // <==== Add here
- ],
- },
-}
-```
-
-In this way, `@opensourceframework/next-sitemap` will manage the sitemaps for all your static pages and your dynamic `index-sitemap` will be listed on robots.txt.
-
----
-
-### server side sitemap (getServerSideSitemap)
-
-Here's a sample script to generate sitemaps on server side.
-
-
-1. Sitemaps (app directory)
-
-Create `app/server-sitemap.xml/route.ts` file.
-
-```ts
-// app/server-sitemap.xml/route.ts
-import { getServerSideSitemap } from '@opensourceframework/next-sitemap'
-
-export async function GET(request: Request) {
- // Method to source urls from cms
- // const urls = await fetch('https//example.com/api')
-
- return getServerSideSitemap([
- {
- loc: 'https://example.com',
- lastmod: new Date().toISOString(),
- // changefreq
- // priority
- },
- {
- loc: 'https://example.com/dynamic-path-2',
- lastmod: new Date().toISOString(),
- // changefreq
- // priority
- },
- ])
-}
-```
-
-
-
-
-2. Sitemaps (pages directory) (legacy)
-
-Create `pages/server-sitemap.xml/index.tsx` file.
-
-```ts
-// pages/server-sitemap.xml/index.tsx
-import { getServerSideSitemapLegacy } from '@opensourceframework/next-sitemap'
-import { GetServerSideProps } from 'next'
-
-export const getServerSideProps: GetServerSideProps = async (ctx) => {
- // Method to source urls from cms
- // const urls = await fetch('https//example.com/api')
-
- const fields = [
- {
- loc: 'https://example.com', // Absolute url
- lastmod: new Date().toISOString(),
- // changefreq
- // priority
- },
- {
- loc: 'https://example.com/dynamic-path-2', // Absolute url
- lastmod: new Date().toISOString(),
- // changefreq
- // priority
- },
- ]
-
- return getServerSideSitemapLegacy(ctx, fields)
-}
-
-// Default export to prevent next.js errors
-export default function Sitemap() {}
-```
-
-
-
-Now, `next.js` is serving the dynamic sitemap from `http://localhost:3000/server-sitemap.xml`.
-
-List the dynamic sitemap page in `robotsTxtOptions.additionalSitemaps` and exclude this path from static sitemap list.
-
-```js
-// @opensourceframework/next-sitemap.config.js
-
-/** @type {import('@opensourceframework/next-sitemap').IConfig} */
-module.exports = {
- siteUrl: 'https://example.com',
- generateRobotsTxt: true,
- exclude: ['/server-sitemap.xml'], // <= exclude here
- robotsTxtOptions: {
- additionalSitemaps: [
- 'https://example.com/server-sitemap.xml', // <==== Add here
- ],
- },
-}
-```
-
-In this way, `@opensourceframework/next-sitemap` will manage the sitemaps for all your static pages and your dynamic sitemap will be listed on robots.txt.
-
-## Typescript JSDoc
-
-Add the following line of code in your `@opensourceframework/next-sitemap.config.js` for nice typescript autocomplete! 💖
-
-```js
-/** @type {import('@opensourceframework/next-sitemap').IConfig} */
-module.exports = {
- // YOUR CONFIG
-}
-```
-
-
-
-## Contribution
-
-All PRs are welcome :)
+[Documentation](https://github.com/iamvishnusankar/next-sitemap)
diff --git a/packages/next-sitemap/bin/next-sitemap.cjs b/packages/next-sitemap/bin/next-sitemap.cjs
new file mode 100755
index 00000000..71d47ef5
--- /dev/null
+++ b/packages/next-sitemap/bin/next-sitemap.cjs
@@ -0,0 +1,10 @@
+#!/usr/bin/env node
+/* eslint-disable @typescript-eslint/no-var-requires */
+const envLoader = require('@next/env')
+const { CLI } = require('../dist/cjs/cli.js')
+
+// Load environment variables
+envLoader.loadEnvConfig(process.cwd(), process.env.NODE_ENV === 'development')
+
+// Execute CLI
+new CLI().execute()
diff --git a/packages/next-sitemap/bin/next-sitemap.mjs b/packages/next-sitemap/bin/next-sitemap.mjs
new file mode 100755
index 00000000..4fbc0ba0
--- /dev/null
+++ b/packages/next-sitemap/bin/next-sitemap.mjs
@@ -0,0 +1,9 @@
+#!/usr/bin/env node
+import envLoader from '@next/env'
+import { CLI } from '../dist/esm/cli.js'
+
+// Load environment variables
+envLoader.loadEnvConfig(process.cwd(), process.env.NODE_ENV === 'development')
+
+// Execute CLI
+new CLI().execute()
diff --git a/packages/next-sitemap/package.json b/packages/next-sitemap/package.json
index 795f16f4..0a4ffe0b 100644
--- a/packages/next-sitemap/package.json
+++ b/packages/next-sitemap/package.json
@@ -1,57 +1,75 @@
{
"name": "@opensourceframework/next-sitemap",
"version": "1.0.0",
- "main": "index.js",
+ "description": "Sitemap generator for next.js (maintained fork)",
+ "type": "module",
+ "main": "./dist/cjs/index.cjs",
+ "module": "./dist/esm/index.js",
+ "types": "./dist/@types/index.d.ts",
+ "exports": {
+ ".": {
+ "import": "./dist/esm/index.js",
+ "require": "./dist/cjs/index.cjs",
+ "types": "./dist/@types/index.d.ts"
+ }
+ },
+ "files": [
+ "dist",
+ "bin"
+ ],
"repository": {
"type": "git",
"url": "git+https://github.com/riceharvest/opensourceframework.git",
"directory": "packages/next-sitemap"
},
- "author": "OpenSource Framework Contributors (fork), Original: Unknown",
- "license": "MIT",
- "type": "module",
- "workspaces": {
- "packages": [
- "packages/*",
- "examples/*",
- "docs"
- ]
+ "bugs": {
+ "url": "https://github.com/riceharvest/opensourceframework/issues?q=is%3Aissue+is%3Aopen+next-sitemap"
},
- "scripts": {
- "clean": "tsc --build --clean",
- "dev:test": "bun test --watch",
- "dev:tsc": "tsc --build --watch",
- "build": "turbo run deploy --force",
- "test": "bun test --ci --coverage --verbose",
- "lint": "eslint .",
- "prettier:check": "prettier --check \"**/*.{js,mjs,cjs,jsx,json,ts,tsx,md,mdx,css,html,yml,yaml,scss,less,graphql,graphqls,gql}\"",
- "format": "prettier --write \"**/*.{js,mjs,cjs,jsx,json,ts,tsx,md,mdx,css,html,yml,yaml,scss,less,graphql,graphqls,gql}\""
- },
- "devDependencies": {
- "@corex/workspace": "^4.0.43",
- "@typescript-eslint/eslint-plugin": "^6.9.1",
- "@typescript-eslint/parser": "^6.9.1",
- "eslint": "^8.52.0",
- "eslint-config-next": "^14.0.0",
- "fast-xml-parser": "^4.3.2",
- "prettier": "^3.0.3",
- "turbo": "^1.10.16"
- },
- "contributors": [
+ "homepage": "https://github.com/riceharvest/opensourceframework/tree/main/packages/next-sitemap#readme",
+ "funding": [
{
- "name": "Unknown",
- "url": "https://github.com/next-sitemap"
+ "url": "https://github.com/riceharvest/opensourceframework"
}
],
- "homepage": "https://github.com/riceharvest/opensourceframework/tree/main/packages/next-sitemap#readme",
+ "engines": {
+ "node": ">=18"
+ },
+ "keywords": [
+ "nextjs",
+ "next",
+ "sitemap",
+ "seo",
+ "react"
+ ],
+ "author": "OpenSource Framework Contributors (fork), Original: Vishnu Sankar",
+ "contributors": [
+ "Vishnu Sankar "
+ ],
+ "license": "MIT",
+ "sideEffects": false,
"publishConfig": {
"access": "public"
},
- "engines": {
- "node": ">=18.0.0"
+ "bin": {
+ "next-sitemap": "./bin/next-sitemap.mjs",
+ "next-sitemap-cjs": "./bin/next-sitemap.cjs"
+ },
+ "scripts": {
+ "build": "tsc && tsc --module commonjs --outDir dist/cjs && node scripts/fix-cjs.cjs",
+ "test": "pnpm build && node -e \"const p=require('./dist/cjs/index.cjs'); console.log('Package loads OK, exports:', Object.keys(p));\""
},
- "funding": {
- "type": "GitHub",
- "url": "https://github.com/sponsors/riceharvest"
+ "dependencies": {
+ "@corex/deepmerge": "^4.0.43",
+ "@next/env": "^13.5.6",
+ "fast-glob": "^3.3.1",
+ "minimist": "^1.2.8"
+ },
+ "peerDependencies": {
+ "next": "*"
+ },
+ "devDependencies": {
+ "@corex/tsconfig": "^4.0.43",
+ "fast-xml-parser": "^5.5.9",
+ "typescript": "^5.2.2"
}
}
diff --git a/packages/next-sitemap/scripts/fix-cjs.cjs b/packages/next-sitemap/scripts/fix-cjs.cjs
new file mode 100644
index 00000000..133b3b4f
--- /dev/null
+++ b/packages/next-sitemap/scripts/fix-cjs.cjs
@@ -0,0 +1,38 @@
+const fs = require('fs');
+const path = require('path');
+
+function getAllFiles(dir, ext) {
+ let results = [];
+ const list = fs.readdirSync(dir);
+ list.forEach(file => {
+ const full = path.join(dir, file);
+ const stat = fs.statSync(full);
+ if (stat.isDirectory()) {
+ results = results.concat(getAllFiles(full, ext));
+ } else if (full.endsWith(ext)) {
+ results.push(full);
+ }
+ });
+ return results;
+}
+
+const cwd = process.cwd();
+const cjsDir = path.join(cwd, 'dist', 'cjs');
+
+// Rename all .js files in dist/cjs to .cjs
+const jsFiles = getAllFiles(cjsDir, '.js');
+jsFiles.forEach(file => {
+ const newFile = file.replace(/\.js$/, '.cjs');
+ fs.renameSync(file, newFile);
+});
+
+// After renaming, update require statements in .cjs files to point to .cjs
+const cjsFiles = getAllFiles(cjsDir, '.cjs');
+cjsFiles.forEach(file => {
+ let content = fs.readFileSync(file, 'utf8');
+ // Replace require('...js') or require("...js") with .cjs extension, handling any relative paths (e.g., './', '../')
+ content = content.replace(/require\((['"])([^'"]+)\.js\1\)/g, "require($1$2.cjs$1)");
+ fs.writeFileSync(file, content);
+});
+
+console.log('Fixed CJS output: renamed .js to .cjs and updated require statements.');
diff --git a/packages/next-sitemap/src/__fixtures__/config.ts b/packages/next-sitemap/src/__fixtures__/config.ts
new file mode 100644
index 00000000..8aa23069
--- /dev/null
+++ b/packages/next-sitemap/src/__fixtures__/config.ts
@@ -0,0 +1,34 @@
+import type { IConfig } from '../interface.js'
+import { withDefaultConfig } from '../utils/defaults.js'
+
+export const sampleConfig: IConfig = withDefaultConfig({
+ siteUrl: 'https://example.com',
+ sourceDir: 'public',
+ changefreq: 'daily',
+ priority: 0.7,
+ sitemapSize: 5000,
+ generateRobotsTxt: true,
+ trailingSlash: false,
+ robotsTxtOptions: {
+ policies: [
+ {
+ userAgent: '*',
+ allow: '/',
+ },
+ {
+ userAgent: 'black-listed-bot',
+ disallow: ['/sub-path-1', '/path-2'],
+ },
+ {
+ userAgent: 'friendly-bot',
+ allow: '/',
+ crawlDelay: 10,
+ },
+ ],
+ additionalSitemaps: [
+ 'https://example.com/my-custom-sitemap-1.xml',
+ 'https://example.com/my-custom-sitemap-2.xml',
+ 'https://example.com/my-custom-sitemap-3.xml',
+ ],
+ },
+})
diff --git a/packages/next-sitemap/src/__fixtures__/manifest.ts b/packages/next-sitemap/src/__fixtures__/manifest.ts
new file mode 100644
index 00000000..6c5285fd
--- /dev/null
+++ b/packages/next-sitemap/src/__fixtures__/manifest.ts
@@ -0,0 +1,125 @@
+import type {
+ IBuildManifest,
+ IPreRenderManifest,
+ IRoutesManifest,
+ INextManifest,
+} from '../interface.js'
+
+export const sampleBuildManifest: IBuildManifest = {
+ pages: {
+ '/': [],
+ '/[dynamic]': [],
+ '/_app': [],
+ '/_error': [],
+ },
+}
+
+export const samplePreRenderManifest: IPreRenderManifest = {
+ routes: {
+ '/page-0': {},
+ '/page-1': {},
+ '/page-2': {},
+ '/page-3': {},
+ },
+ notFoundRoutes: [],
+}
+
+export const sampleManifest: INextManifest = {
+ build: sampleBuildManifest,
+ preRender: samplePreRenderManifest,
+}
+
+export const sampleI18nBuildManifest: IBuildManifest = {
+ pages: {
+ '/': [],
+ '/about': [],
+ '/[dynamic]': [],
+ '/_app': [],
+ '/_error': [],
+ },
+}
+
+export const sampleI18nPreRenderManifest: IPreRenderManifest = {
+ routes: {
+ '/en-US': {},
+ '/fr': {},
+ '/en-US/about': {},
+ '/fr/about': {},
+ '/page-0': {},
+ '/page-1': {},
+ '/en-US/page-1': {},
+ '/page-2': {},
+ '/fr/page-2': {},
+ '/page-3': {},
+ },
+ notFoundRoutes: [],
+}
+
+export const sampleRenderManifest: IRoutesManifest = {
+ i18n: {
+ locales: ['en-US', 'fr', 'nl-NL', 'nl-BE'],
+ defaultLocale: 'en-US',
+ },
+}
+
+export const sampleI18nManifest: INextManifest = {
+ build: sampleI18nBuildManifest,
+ preRender: sampleI18nPreRenderManifest,
+ routes: sampleRenderManifest,
+}
+
+export const sampleNotFoundRoutesBuildManifest: IBuildManifest = {
+ pages: {
+ '/': [],
+ '/about': [],
+ '/only-nl': [],
+ '/[dynamic]': [],
+ '/_app': [],
+ '/_error': [],
+ },
+}
+export const sampleNotFoundRoutesPreRenderManifest: IPreRenderManifest = {
+ routes: {
+ '/en-US': {},
+ '/fr': {},
+ '/nl-NL': {},
+
+ '/en-US/about': {},
+ '/fr/about': {},
+ '/nl-NL/about': {},
+
+ '/en-US/only-nl': {},
+ '/fr/only-nl': {},
+ '/nl-NL/only-nl': {},
+
+ '/en-US/page-0': {},
+ '/fr/page-0': {},
+ '/nl-NL/page-0': {},
+
+ '/en-US/page-1': {},
+ '/fr/page-1': {},
+ '/nl-NL/page-1': {},
+ },
+ notFoundRoutes: [
+ '/fr',
+ '/nl-NL/about',
+ '/en-US/only-nl',
+ '/fr/only-nl',
+ '/nl-NL/page-0',
+ '/fr/page-1',
+ '/nl-NL/page-1',
+ ],
+}
+
+export const sampleNotFoundRoutesRenderManifest: IRoutesManifest = {
+ i18n: {
+ locales: ['en-US', 'fr', 'nl-NL'],
+ defaultLocale: 'en-US',
+ },
+}
+
+export const sampleNotFoundRoutesManifest: INextManifest = {
+ build: sampleNotFoundRoutesBuildManifest,
+ preRender: sampleNotFoundRoutesPreRenderManifest,
+ routes: sampleNotFoundRoutesRenderManifest,
+}
diff --git a/packages/next-sitemap/src/builders/__tests__/robots-txt-builder/__snapshots__/generate-robots-txt.test.ts.snap b/packages/next-sitemap/src/builders/__tests__/robots-txt-builder/__snapshots__/generate-robots-txt.test.ts.snap
new file mode 100644
index 00000000..d31ec8ff
--- /dev/null
+++ b/packages/next-sitemap/src/builders/__tests__/robots-txt-builder/__snapshots__/generate-robots-txt.test.ts.snap
@@ -0,0 +1,26 @@
+// Bun Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`RobotsTxtBuilder generateRobotsTxt: additionalSitemap 1`] = `
+"# *
+User-agent: *
+Allow: /
+
+# black-listed-bot
+User-agent: black-listed-bot
+Disallow: /sub-path-1
+Disallow: /path-2
+
+# friendly-bot
+User-agent: friendly-bot
+Allow: /
+Crawl-delay: 10
+
+# Host
+Host: https://example.com
+
+# Sitemaps
+Sitemap: https://example.com/my-custom-sitemap-1.xml
+Sitemap: https://example.com/my-custom-sitemap-2.xml
+Sitemap: https://example.com/my-custom-sitemap-3.xml
+"
+`;
diff --git a/packages/next-sitemap/src/builders/__tests__/robots-txt-builder/generate-robots-txt.test.ts b/packages/next-sitemap/src/builders/__tests__/robots-txt-builder/generate-robots-txt.test.ts
new file mode 100644
index 00000000..1b5e63f2
--- /dev/null
+++ b/packages/next-sitemap/src/builders/__tests__/robots-txt-builder/generate-robots-txt.test.ts
@@ -0,0 +1,14 @@
+import { sampleConfig } from '../../../__fixtures__/config.js'
+import { RobotsTxtBuilder } from '../../robots-txt-builder.js'
+
+let builder: RobotsTxtBuilder
+
+beforeEach(() => {
+ builder = new RobotsTxtBuilder()
+})
+
+describe('RobotsTxtBuilder', () => {
+ test('generateRobotsTxt: additionalSitemap', () => {
+ expect(builder.generateRobotsTxt(sampleConfig as any)).toMatchSnapshot()
+ })
+})
diff --git a/packages/next-sitemap/src/builders/__tests__/sitemap-builder/__snapshots__/build-sitemap-xml.test.ts.snap b/packages/next-sitemap/src/builders/__tests__/sitemap-builder/__snapshots__/build-sitemap-xml.test.ts.snap
new file mode 100644
index 00000000..790b1c9c
--- /dev/null
+++ b/packages/next-sitemap/src/builders/__tests__/sitemap-builder/__snapshots__/build-sitemap-xml.test.ts.snap
@@ -0,0 +1,37 @@
+// Bun Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`SitemapBuilder snapshot test to exclude undefined values from final sitemap 1`] = `
+"
+
+https://example.com
+https://example.comsome-value
+"
+`;
+
+exports[`SitemapBuilder snapshot test for google news sitemap 1`] = `
+"
+
+https://example.comThe Example Timesen2008-01-01T23:00:00.000+00:00Companies A, B in Merger Talks
+"
+`;
+
+exports[`SitemapBuilder snapshot test for image sitemap 1`] = `
+"
+
+https://example.comhttps://example.com/https://example.com/Image caption & descriptionImage titlePrague, Czech Republichttps://example.com/
+"
+`;
+
+exports[`SitemapBuilder image sitemap generates correctly encoded results 1`] = `
+"
+
+https://example.comhttps://example.com/?ref=test&test=1
+"
+`;
+
+exports[`SitemapBuilder snapshot test for video sitemap 1`] = `
+"
+
+https://example.comVideo titlehttps://example.com/Video descriptionhttps://example.com/Grilling steaks for summerhttps://example.com/Alkis shows you how to get perfectly done steaks every timehttps://example.com/https://example.com/6001234video1.02030-03-01T23:00:00.000+00:002020-04-19T22:00:00.000+00:00yesnonoCZwebJohn Doe
+"
+`;
diff --git a/packages/next-sitemap/src/builders/__tests__/sitemap-builder/build-sitemap-xml.test.ts b/packages/next-sitemap/src/builders/__tests__/sitemap-builder/build-sitemap-xml.test.ts
new file mode 100644
index 00000000..a5b691b7
--- /dev/null
+++ b/packages/next-sitemap/src/builders/__tests__/sitemap-builder/build-sitemap-xml.test.ts
@@ -0,0 +1,157 @@
+import { SitemapBuilder } from '../../sitemap-builder.js'
+import { XMLValidator } from 'fast-xml-parser'
+
+describe('SitemapBuilder', () => {
+ test('snapshot test to exclude undefined values from final sitemap', () => {
+ // Builder instance
+ const builder = new SitemapBuilder()
+
+ // Build content
+ const content = builder.buildSitemapXml([
+ {
+ loc: 'https://example.com',
+ lastmod: undefined,
+ },
+ {
+ loc: 'https://example.com',
+ lastmod: 'some-value',
+ alternateRefs: [
+ {
+ href: 'https://example.com/en',
+ hreflang: 'en',
+ },
+ {
+ href: 'https://example.com/fr',
+ hreflang: 'fr',
+ },
+ ],
+ },
+ ])
+ const isValid = XMLValidator.validate(content)
+ expect(isValid).toBe(true)
+ // Expect the generated sitemap to match snapshot.
+ expect(content).toMatchSnapshot()
+ })
+ test('snapshot test for google news sitemap', () => {
+ // Builder instance
+ const builder = new SitemapBuilder()
+
+ // Build content
+ const content = builder.buildSitemapXml([
+ {
+ loc: 'https://example.com',
+ news: {
+ title: 'Companies A, B in Merger Talks',
+ date: new Date('2008-01-02T00:00:00.000+01:00'),
+ publicationLanguage: 'en',
+ publicationName: 'The Example Times',
+ },
+ },
+ ])
+ const isValid = XMLValidator.validate(content)
+ expect(isValid).toBe(true)
+ // Expect the generated sitemap to match snapshot.
+ expect(content).toMatchSnapshot()
+ })
+ test('snapshot test for image sitemap', () => {
+ // Builder instance
+ const builder = new SitemapBuilder()
+
+ // Build content
+ const content = builder.buildSitemapXml([
+ {
+ loc: 'https://example.com',
+ images: [
+ {
+ loc: new URL('https://example.com'),
+ },
+ {
+ caption: 'Image caption & description',
+ geoLocation: 'Prague, Czech Republic',
+ license: new URL('https://example.com'),
+ loc: new URL('https://example.com'),
+ title: 'Image title',
+ },
+ ],
+ },
+ ])
+ const isValid = XMLValidator.validate(content)
+ expect(isValid).toBe(true)
+ // Expect the generated sitemap to match snapshot.
+ expect(content).toMatchSnapshot()
+ })
+
+ test('image sitemap generates correctly encoded results', () => {
+ // Builder instance
+ const builder = new SitemapBuilder()
+
+ // Build content
+ const content = builder.buildSitemapXml([
+ {
+ loc: 'https://example.com',
+ images: [
+ {
+ loc: new URL('https://example.com?ref=test&test=1'),
+ },
+ ],
+ },
+ ])
+
+ // Expect the generated sitemap to match snapshot.
+ const isValid = XMLValidator.validate(content)
+ expect(isValid).toBe(true)
+ expect(content).toMatchSnapshot()
+ })
+ test('snapshot test for video sitemap', () => {
+ // Builder instance
+ const builder = new SitemapBuilder()
+
+ // Build content
+ const content = builder.buildSitemapXml([
+ {
+ loc: 'https://example.com',
+ videos: [
+ {
+ title: 'Video title',
+ contentLoc: new URL('https://example.com'),
+ description: 'Video description',
+ thumbnailLoc: new URL('https://example.com'),
+ },
+ {
+ title: 'Grilling steaks for summer',
+ contentLoc: new URL('https://example.com'),
+ description:
+ 'Alkis shows you how to get perfectly done steaks every time',
+ thumbnailLoc: new URL('https://example.com'),
+ duration: 600,
+ expirationDate: new Date('2030-03-02T00:00:00.000+01:00'),
+ familyFriendly: true,
+ live: false,
+ platform: {
+ relationship: 'allow',
+ content: 'web',
+ },
+ playerLoc: new URL('https://example.com'),
+ publicationDate: new Date('2020-04-20T00:00:00.000+02:00'),
+ rating: 1,
+ requiresSubscription: false,
+ restriction: {
+ relationship: 'deny',
+ content: 'CZ',
+ },
+ tag: 'video',
+ uploader: {
+ name: 'John Doe',
+ info: new URL('https://example.com'),
+ },
+ viewCount: 1234,
+ },
+ ],
+ },
+ ])
+ const isValid = XMLValidator.validate(content)
+ expect(isValid).toBe(true)
+ // Expect the generated sitemap to match snapshot.
+ expect(content).toMatchSnapshot()
+ })
+})
diff --git a/packages/next-sitemap/src/builders/__tests__/url-set-builder/__snapshots__/absolute-url.test.ts.snap b/packages/next-sitemap/src/builders/__tests__/url-set-builder/__snapshots__/absolute-url.test.ts.snap
new file mode 100644
index 00000000..da762ffe
--- /dev/null
+++ b/packages/next-sitemap/src/builders/__tests__/url-set-builder/__snapshots__/absolute-url.test.ts.snap
@@ -0,0 +1,3 @@
+// Bun Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`UrlSetBuilder absoluteUrl: With uri encoding 1`] = `"https://example.com/&/'/"/>/</"`;
diff --git a/packages/next-sitemap/src/builders/__tests__/url-set-builder/absolute-url.test.ts b/packages/next-sitemap/src/builders/__tests__/url-set-builder/absolute-url.test.ts
new file mode 100644
index 00000000..b1ba17e4
--- /dev/null
+++ b/packages/next-sitemap/src/builders/__tests__/url-set-builder/absolute-url.test.ts
@@ -0,0 +1,37 @@
+import { sampleConfig } from '../../../__fixtures__/config.js'
+import { sampleManifest } from '../../../__fixtures__/manifest.js'
+import { UrlSetBuilder } from '../../url-set-builder.js'
+
+let urlSetBuilder: UrlSetBuilder
+
+beforeEach(() => {
+ urlSetBuilder = new UrlSetBuilder(sampleConfig, sampleManifest)
+})
+
+describe('UrlSetBuilder', () => {
+ test('absoluteUrl: Without trailing slash', () => {
+ expect(urlSetBuilder.absoluteUrl('https://example.com', '/', false)).toBe(
+ 'https://example.com',
+ )
+
+ expect(
+ urlSetBuilder.absoluteUrl('https://example.com/hello/', '/', false),
+ ).toBe('https://example.com/hello')
+ })
+
+ test('absoluteUrl: With trailing slash', () => {
+ expect(urlSetBuilder.absoluteUrl('https://example.com', '/', true)).toBe(
+ 'https://example.com/',
+ )
+
+ expect(
+ urlSetBuilder.absoluteUrl('https://example.com/hello/', '/', true),
+ ).toBe('https://example.com/hello/')
+ })
+
+ test('absoluteUrl: With uri encoding', () => {
+ expect(
+ urlSetBuilder.absoluteUrl(`https://example.com/&/'/"/>/<`, '/', true),
+ ).toMatchSnapshot()
+ })
+})
diff --git a/packages/next-sitemap/src/builders/__tests__/url-set-builder/create-url-set.test.ts b/packages/next-sitemap/src/builders/__tests__/url-set-builder/create-url-set.test.ts
new file mode 100644
index 00000000..080f5f6a
--- /dev/null
+++ b/packages/next-sitemap/src/builders/__tests__/url-set-builder/create-url-set.test.ts
@@ -0,0 +1,753 @@
+import { sampleConfig } from '../../../__fixtures__/config.js'
+import {
+ sampleManifest,
+ sampleI18nManifest,
+ sampleNotFoundRoutesManifest,
+} from '../../../__fixtures__/manifest.js'
+import type { IConfig, ISitemapField } from '../../../interface.js'
+import { UrlSetBuilder } from '../../url-set-builder.js'
+import { defaultSitemapTransformer } from '../../../utils/defaults.js'
+
+describe('UrlSetBuilder', () => {
+ test('createUrlSet: Without exclusion', async () => {
+ const builder = new UrlSetBuilder(sampleConfig, sampleManifest)
+
+ await expect(builder.createUrlSet()).resolves.toStrictEqual([
+ {
+ changefreq: 'daily',
+ lastmod: expect.any(String),
+ priority: 0.7,
+ loc: 'https://example.com',
+ alternateRefs: [],
+ trailingSlash: false,
+ },
+ {
+ changefreq: 'daily',
+ lastmod: expect.any(String),
+ priority: 0.7,
+ loc: 'https://example.com/page-0',
+ alternateRefs: [],
+ trailingSlash: false,
+ },
+ {
+ changefreq: 'daily',
+ lastmod: expect.any(String),
+ priority: 0.7,
+ loc: 'https://example.com/page-1',
+ alternateRefs: [],
+ trailingSlash: false,
+ },
+ {
+ changefreq: 'daily',
+ lastmod: expect.any(String),
+ priority: 0.7,
+ loc: 'https://example.com/page-2',
+ alternateRefs: [],
+ trailingSlash: false,
+ },
+ {
+ changefreq: 'daily',
+ lastmod: expect.any(String),
+ priority: 0.7,
+ loc: 'https://example.com/page-3',
+ alternateRefs: [],
+ trailingSlash: false,
+ },
+ ])
+ })
+
+ test('createUrlSet: With exclusion', async () => {
+ const builder = new UrlSetBuilder(
+ {
+ ...sampleConfig,
+ exclude: ['/', '/page-0', '/page-2'],
+ },
+ sampleManifest,
+ )
+
+ await expect(builder.createUrlSet()).resolves.toStrictEqual([
+ {
+ changefreq: 'daily',
+ lastmod: expect.any(String),
+ priority: 0.7,
+ loc: 'https://example.com/page-1',
+ alternateRefs: [],
+ trailingSlash: false,
+ },
+ {
+ changefreq: 'daily',
+ lastmod: expect.any(String),
+ priority: 0.7,
+ loc: 'https://example.com/page-3',
+ alternateRefs: [],
+ trailingSlash: false,
+ },
+ ])
+ })
+
+ test('createUrlSet: With i18n exclusion', async () => {
+ const builder = new UrlSetBuilder(
+ {
+ ...sampleConfig,
+ exclude: ['/', '/page-0', '/page-2', '/about', '/fr*'],
+ },
+ sampleI18nManifest,
+ )
+
+ await expect(builder.createUrlSet()).resolves.toStrictEqual([
+ {
+ changefreq: 'daily',
+ lastmod: expect.any(String),
+ priority: 0.7,
+ loc: 'https://example.com/page-1',
+ alternateRefs: [],
+ trailingSlash: false,
+ },
+ {
+ changefreq: 'daily',
+ lastmod: expect.any(String),
+ priority: 0.7,
+ loc: 'https://example.com/page-3',
+ alternateRefs: [],
+ trailingSlash: false,
+ },
+ ])
+ })
+
+ test('createUrlSet: With wildcard exclusion', async () => {
+ const builder = new UrlSetBuilder(
+ {
+ ...sampleConfig,
+ exclude: ['/page*'],
+ },
+ sampleManifest,
+ )
+
+ await expect(builder.createUrlSet()).resolves.toStrictEqual([
+ {
+ changefreq: 'daily',
+ lastmod: expect.any(String),
+ priority: 0.7,
+ loc: 'https://example.com',
+ alternateRefs: [],
+ trailingSlash: false,
+ },
+ ])
+ })
+
+ test('createUrlSet: With async exclusion', async () => {
+ const sleep = (ms: number) =>
+ new Promise((resolve) => setTimeout(resolve, ms))
+ const builder = new UrlSetBuilder(
+ {
+ ...sampleConfig,
+ exclude: async () => {
+ await sleep(10)
+ return ['/', '/page-0', '/page-2']
+ },
+ },
+ sampleManifest,
+ )
+
+ await expect(builder.createUrlSet()).resolves.toStrictEqual([
+ {
+ changefreq: 'daily',
+ lastmod: expect.any(String),
+ priority: 0.7,
+ loc: 'https://example.com/page-1',
+ alternateRefs: [],
+ trailingSlash: false,
+ },
+ {
+ changefreq: 'daily',
+ lastmod: expect.any(String),
+ priority: 0.7,
+ loc: 'https://example.com/page-3',
+ alternateRefs: [],
+ trailingSlash: false,
+ },
+ ])
+ })
+
+ test('createUrlSet: Without trailing slash', async () => {
+ const builder = new UrlSetBuilder(
+ {
+ ...sampleConfig,
+ trailingSlash: false,
+ },
+ sampleManifest,
+ )
+
+ await expect(builder.createUrlSet()).resolves.toStrictEqual([
+ {
+ changefreq: 'daily',
+ lastmod: expect.any(String),
+ priority: 0.7,
+ loc: 'https://example.com',
+ alternateRefs: [],
+ trailingSlash: false,
+ },
+ {
+ changefreq: 'daily',
+ lastmod: expect.any(String),
+ priority: 0.7,
+ loc: 'https://example.com/page-0',
+ alternateRefs: [],
+ trailingSlash: false,
+ },
+ {
+ changefreq: 'daily',
+ lastmod: expect.any(String),
+ priority: 0.7,
+ loc: 'https://example.com/page-1',
+ alternateRefs: [],
+ trailingSlash: false,
+ },
+ {
+ changefreq: 'daily',
+ lastmod: expect.any(String),
+ priority: 0.7,
+ loc: 'https://example.com/page-2',
+ alternateRefs: [],
+ trailingSlash: false,
+ },
+ {
+ changefreq: 'daily',
+ lastmod: expect.any(String),
+ priority: 0.7,
+ loc: 'https://example.com/page-3',
+ alternateRefs: [],
+ trailingSlash: false,
+ },
+ ])
+ })
+
+ test('createUrlSet: With trailing slash', async () => {
+ const builder = new UrlSetBuilder(
+ {
+ ...sampleConfig,
+ trailingSlash: true,
+ },
+ sampleManifest,
+ )
+
+ await expect(builder.createUrlSet()).resolves.toStrictEqual([
+ {
+ changefreq: 'daily',
+ lastmod: expect.any(String),
+ priority: 0.7,
+ loc: 'https://example.com/',
+ alternateRefs: [],
+ trailingSlash: true,
+ },
+ {
+ changefreq: 'daily',
+ lastmod: expect.any(String),
+ priority: 0.7,
+ loc: 'https://example.com/page-0/',
+ alternateRefs: [],
+ trailingSlash: true,
+ },
+ {
+ changefreq: 'daily',
+ lastmod: expect.any(String),
+ priority: 0.7,
+ loc: 'https://example.com/page-1/',
+ alternateRefs: [],
+ trailingSlash: true,
+ },
+ {
+ changefreq: 'daily',
+ lastmod: expect.any(String),
+ priority: 0.7,
+ loc: 'https://example.com/page-2/',
+ alternateRefs: [],
+ trailingSlash: true,
+ },
+ {
+ changefreq: 'daily',
+ lastmod: expect.any(String),
+ priority: 0.7,
+ loc: 'https://example.com/page-3/',
+ alternateRefs: [],
+ trailingSlash: true,
+ },
+ ])
+ })
+
+ test('createUrlSet: With custom transform', async () => {
+ const builder = new UrlSetBuilder(
+ {
+ ...sampleConfig,
+ trailingSlash: true,
+ transform: (_, url) => {
+ if (!['/', '/page-2'].includes(url)) {
+ return
+ }
+
+ return {
+ loc: url,
+ changefreq: 'yearly',
+ } as any
+ },
+ },
+ sampleManifest,
+ )
+
+ await expect(builder.createUrlSet()).resolves.toStrictEqual([
+ {
+ changefreq: 'yearly',
+ loc: 'https://example.com/',
+ alternateRefs: [],
+ trailingSlash: true,
+ },
+ {
+ changefreq: 'yearly',
+ loc: 'https://example.com/page-2/',
+ alternateRefs: [],
+ trailingSlash: true,
+ },
+ ])
+ })
+
+ test('createUrlSet: With alternateRefs', async () => {
+ const builder = new UrlSetBuilder(
+ {
+ ...sampleConfig,
+ siteUrl: 'https://example.com/',
+ alternateRefs: [
+ { href: 'https://en.example.com/', hreflang: 'en' },
+ { href: 'https://fr.example.com/', hreflang: 'fr' },
+ ],
+ },
+ sampleManifest,
+ )
+
+ await expect(builder.createUrlSet()).resolves.toStrictEqual([
+ {
+ changefreq: 'daily',
+ lastmod: expect.any(String),
+ priority: 0.7,
+ loc: 'https://example.com',
+ alternateRefs: [
+ { href: 'https://en.example.com', hreflang: 'en' },
+ { href: 'https://fr.example.com', hreflang: 'fr' },
+ ],
+ trailingSlash: false,
+ },
+ {
+ changefreq: 'daily',
+ lastmod: expect.any(String),
+ priority: 0.7,
+ loc: 'https://example.com/page-0',
+ alternateRefs: [
+ { href: 'https://en.example.com/page-0', hreflang: 'en' },
+ { href: 'https://fr.example.com/page-0', hreflang: 'fr' },
+ ],
+ trailingSlash: false,
+ },
+ {
+ changefreq: 'daily',
+ lastmod: expect.any(String),
+ priority: 0.7,
+ loc: 'https://example.com/page-1',
+ alternateRefs: [
+ { href: 'https://en.example.com/page-1', hreflang: 'en' },
+ { href: 'https://fr.example.com/page-1', hreflang: 'fr' },
+ ],
+ trailingSlash: false,
+ },
+ {
+ changefreq: 'daily',
+ lastmod: expect.any(String),
+ priority: 0.7,
+ loc: 'https://example.com/page-2',
+ alternateRefs: [
+ { href: 'https://en.example.com/page-2', hreflang: 'en' },
+ { href: 'https://fr.example.com/page-2', hreflang: 'fr' },
+ ],
+ trailingSlash: false,
+ },
+ {
+ changefreq: 'daily',
+ lastmod: expect.any(String),
+ priority: 0.7,
+ loc: 'https://example.com/page-3',
+ alternateRefs: [
+ { href: 'https://en.example.com/page-3', hreflang: 'en' },
+ { href: 'https://fr.example.com/page-3', hreflang: 'fr' },
+ ],
+ trailingSlash: false,
+ },
+ ])
+ })
+
+ test('createUrlSet: With absolute alternateRefs', async () => {
+ const builder = new UrlSetBuilder(
+ {
+ ...sampleConfig,
+ siteUrl: 'https://example.com/',
+ alternateRefs: [
+ { href: 'https://example.com/en', hreflang: 'en' },
+ { href: 'https://example.com/fr', hreflang: 'fr' },
+ { href: 'https://example.com/it', hreflang: 'it' },
+ { href: 'https://example.com/de', hreflang: 'de' },
+ ],
+ transform: (config, url) => {
+ const sitemapField = {
+ loc: url,
+ changefreq: config.changefreq,
+ priority: config.priority,
+ alternateRefs: config.alternateRefs,
+ lastmod: new Date().toISOString(),
+ } as ISitemapField
+ if (url.startsWith('/page')) {
+ sitemapField.alternateRefs = [
+ {
+ href: 'https://example.com/en',
+ hreflang: 'en',
+ },
+ {
+ href: 'https://example.com/fr',
+ hreflang: 'fr',
+ },
+ {
+ href: `https://example.com/it${url.replace(
+ '/page',
+ '/pagina',
+ )}`,
+ hreflang: 'it',
+ hrefIsAbsolute: true,
+ },
+ {
+ href: `https://example.com/de${url.replace('/page', '/seite')}`,
+ hreflang: 'de',
+ hrefIsAbsolute: true,
+ },
+ ]
+ }
+ return sitemapField
+ },
+ },
+ sampleManifest,
+ )
+
+ await expect(builder.createUrlSet()).resolves.toStrictEqual([
+ {
+ changefreq: 'daily',
+ lastmod: expect.any(String),
+ priority: 0.7,
+ loc: 'https://example.com',
+ alternateRefs: [
+ { href: 'https://example.com/en', hreflang: 'en' },
+ { href: 'https://example.com/fr', hreflang: 'fr' },
+ { href: 'https://example.com/it', hreflang: 'it' },
+ { href: 'https://example.com/de', hreflang: 'de' },
+ ],
+ trailingSlash: false,
+ },
+ {
+ changefreq: 'daily',
+ lastmod: expect.any(String),
+ priority: 0.7,
+ loc: 'https://example.com/page-0',
+ alternateRefs: [
+ { href: 'https://example.com/en/page-0', hreflang: 'en' },
+ { href: 'https://example.com/fr/page-0', hreflang: 'fr' },
+ { href: 'https://example.com/it/pagina-0', hreflang: 'it' },
+ { href: 'https://example.com/de/seite-0', hreflang: 'de' },
+ ],
+ trailingSlash: false,
+ },
+ {
+ changefreq: 'daily',
+ lastmod: expect.any(String),
+ priority: 0.7,
+ loc: 'https://example.com/page-1',
+ alternateRefs: [
+ { href: 'https://example.com/en/page-1', hreflang: 'en' },
+ { href: 'https://example.com/fr/page-1', hreflang: 'fr' },
+ { href: 'https://example.com/it/pagina-1', hreflang: 'it' },
+ { href: 'https://example.com/de/seite-1', hreflang: 'de' },
+ ],
+ trailingSlash: false,
+ },
+ {
+ changefreq: 'daily',
+ lastmod: expect.any(String),
+ priority: 0.7,
+ loc: 'https://example.com/page-2',
+ alternateRefs: [
+ { href: 'https://example.com/en/page-2', hreflang: 'en' },
+ { href: 'https://example.com/fr/page-2', hreflang: 'fr' },
+ { href: 'https://example.com/it/pagina-2', hreflang: 'it' },
+ { href: 'https://example.com/de/seite-2', hreflang: 'de' },
+ ],
+ trailingSlash: false,
+ },
+ {
+ changefreq: 'daily',
+ lastmod: expect.any(String),
+ priority: 0.7,
+ loc: 'https://example.com/page-3',
+ alternateRefs: [
+ { href: 'https://example.com/en/page-3', hreflang: 'en' },
+ { href: 'https://example.com/fr/page-3', hreflang: 'fr' },
+ { href: 'https://example.com/it/pagina-3', hreflang: 'it' },
+ { href: 'https://example.com/de/seite-3', hreflang: 'de' },
+ ],
+ trailingSlash: false,
+ },
+ ])
+ })
+
+ test('createUrlSet: With additionalPaths', async () => {
+ const transform: IConfig['transform'] = async (config, url) => {
+ if (['/', '/page-0', '/page-1'].includes(url)) {
+ return
+ }
+
+ if (url === '/additional-page-3') {
+ return {
+ loc: url,
+ changefreq: 'yearly',
+ priority: 0.8,
+ }
+ }
+
+ return defaultSitemapTransformer(config, url)
+ }
+
+ const mockTransform = jest.fn(transform)
+
+ const config: IConfig = {
+ ...sampleConfig,
+ siteUrl: 'https://example.com/',
+ transform: mockTransform,
+ additionalPaths: async (config) => [
+ { loc: '/page-1', priority: 1, changefreq: 'yearly' },
+ { loc: '/page-3', priority: 0.9, changefreq: 'yearly' },
+ { loc: '/additional-page-1' },
+ { loc: '/additional-page-2', priority: 1, changefreq: 'yearly' },
+ await config.transform(config, '/additional-page-3'),
+ ],
+ }
+
+ const builder = new UrlSetBuilder(config, sampleManifest)
+
+ await expect(builder.createUrlSet()).resolves.toStrictEqual([
+ {
+ changefreq: 'daily',
+ lastmod: expect.any(String),
+ priority: 0.7,
+ loc: 'https://example.com/page-2',
+ alternateRefs: [],
+ trailingSlash: false,
+ },
+ {
+ changefreq: 'yearly',
+ lastmod: expect.any(String),
+ priority: 0.9,
+ loc: 'https://example.com/page-3',
+ alternateRefs: [],
+ trailingSlash: false,
+ },
+ {
+ changefreq: 'yearly',
+ priority: 1,
+ loc: 'https://example.com/page-1',
+ alternateRefs: [],
+ trailingSlash: false,
+ },
+ {
+ loc: 'https://example.com/additional-page-1',
+ alternateRefs: [],
+ trailingSlash: false,
+ },
+ {
+ changefreq: 'yearly',
+ priority: 1,
+ loc: 'https://example.com/additional-page-2',
+ alternateRefs: [],
+ trailingSlash: false,
+ },
+ {
+ changefreq: 'yearly',
+ priority: 0.8,
+ loc: 'https://example.com/additional-page-3',
+ alternateRefs: [],
+ trailingSlash: false,
+ },
+ ])
+
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ expect(mockTransform.mock.calls.map(([_, url]) => url)).toEqual([
+ '/',
+ '/page-0',
+ '/page-1',
+ '/page-2',
+ '/page-3',
+ '/additional-page-3',
+ ])
+ })
+
+ test('createUrlSet: With next i18n enabled', async () => {
+ const builder = new UrlSetBuilder(sampleConfig, sampleI18nManifest)
+
+ const actual = await builder.createUrlSet()
+ expect(actual).toStrictEqual([
+ {
+ loc: 'https://example.com',
+ lastmod: expect.any(String),
+ changefreq: 'daily',
+ priority: 0.7,
+ alternateRefs: [],
+ trailingSlash: false,
+ },
+ {
+ loc: 'https://example.com/about',
+ lastmod: expect.any(String),
+ changefreq: 'daily',
+ priority: 0.7,
+ alternateRefs: [],
+ trailingSlash: false,
+ },
+ {
+ loc: 'https://example.com/fr',
+ lastmod: expect.any(String),
+ changefreq: 'daily',
+ priority: 0.7,
+ alternateRefs: [],
+ trailingSlash: false,
+ },
+ {
+ loc: 'https://example.com/fr/about',
+ lastmod: expect.any(String),
+ changefreq: 'daily',
+ priority: 0.7,
+ alternateRefs: [],
+ trailingSlash: false,
+ },
+ {
+ loc: 'https://example.com/page-0',
+ lastmod: expect.any(String),
+ changefreq: 'daily',
+ priority: 0.7,
+ alternateRefs: [],
+ trailingSlash: false,
+ },
+ {
+ loc: 'https://example.com/page-1',
+ lastmod: expect.any(String),
+ changefreq: 'daily',
+ priority: 0.7,
+ alternateRefs: [],
+ trailingSlash: false,
+ },
+ {
+ loc: 'https://example.com/page-2',
+ lastmod: expect.any(String),
+ changefreq: 'daily',
+ priority: 0.7,
+ alternateRefs: [],
+ trailingSlash: false,
+ },
+ {
+ loc: 'https://example.com/fr/page-2',
+ lastmod: expect.any(String),
+ changefreq: 'daily',
+ priority: 0.7,
+ alternateRefs: [],
+ trailingSlash: false,
+ },
+ {
+ loc: 'https://example.com/page-3',
+ lastmod: expect.any(String),
+ changefreq: 'daily',
+ priority: 0.7,
+ alternateRefs: [],
+ trailingSlash: false,
+ },
+ ])
+ })
+
+ test('createUrlSet: With i18n, without notFound routes', async () => {
+ const builder = new UrlSetBuilder(
+ {
+ ...sampleConfig,
+ },
+ sampleNotFoundRoutesManifest,
+ )
+
+ await expect(builder.createUrlSet()).resolves.toStrictEqual([
+ {
+ changefreq: 'daily',
+ lastmod: expect.any(String),
+ priority: 0.7,
+ loc: 'https://example.com',
+ alternateRefs: [],
+ trailingSlash: false,
+ },
+ {
+ changefreq: 'daily',
+ lastmod: expect.any(String),
+ priority: 0.7,
+ loc: 'https://example.com/about',
+ alternateRefs: [],
+ trailingSlash: false,
+ },
+ // /about
+ {
+ changefreq: 'daily',
+ lastmod: expect.any(String),
+ priority: 0.7,
+ loc: 'https://example.com/nl-NL',
+ alternateRefs: [],
+ trailingSlash: false,
+ },
+ {
+ changefreq: 'daily',
+ lastmod: expect.any(String),
+ priority: 0.7,
+ loc: 'https://example.com/fr/about',
+ alternateRefs: [],
+ trailingSlash: false,
+ },
+ // only localized page
+ {
+ changefreq: 'daily',
+ lastmod: expect.any(String),
+ priority: 0.7,
+ loc: 'https://example.com/nl-NL/only-nl',
+ alternateRefs: [],
+ trailingSlash: false,
+ },
+ // page-0
+ {
+ changefreq: 'daily',
+ lastmod: expect.any(String),
+ priority: 0.7,
+ loc: 'https://example.com/page-0',
+ alternateRefs: [],
+ trailingSlash: false,
+ },
+ {
+ changefreq: 'daily',
+ lastmod: expect.any(String),
+ priority: 0.7,
+ loc: 'https://example.com/fr/page-0',
+ alternateRefs: [],
+ trailingSlash: false,
+ },
+ // page-1
+ {
+ changefreq: 'daily',
+ lastmod: expect.any(String),
+ priority: 0.7,
+ loc: 'https://example.com/page-1',
+ alternateRefs: [],
+ trailingSlash: false,
+ },
+ ])
+ })
+})
diff --git a/packages/next-sitemap/src/builders/__tests__/url-set-builder/normalize-sitemap-field.test.ts b/packages/next-sitemap/src/builders/__tests__/url-set-builder/normalize-sitemap-field.test.ts
new file mode 100644
index 00000000..09e30889
--- /dev/null
+++ b/packages/next-sitemap/src/builders/__tests__/url-set-builder/normalize-sitemap-field.test.ts
@@ -0,0 +1,64 @@
+import { sampleConfig } from '../../../__fixtures__/config.js'
+import { sampleManifest } from '../../../__fixtures__/manifest.js'
+import { UrlSetBuilder } from '../../url-set-builder.js'
+
+describe('UrlSetBuilder', () => {
+ test('normalizeSitemapField: No sitemap field trailingSlash provided => Use config.trailingSlash', async () => {
+ // Create builder instance
+ const builder = new UrlSetBuilder(
+ {
+ ...sampleConfig,
+ trailingSlash: false,
+ },
+ sampleManifest,
+ )
+
+ // Normalize field
+ const normalizedField = builder.normalizeSitemapField({
+ changefreq: 'daily',
+ lastmod: '2021-08-01T00:00:00.000Z',
+ priority: 0.7,
+ loc: '/page-2',
+ alternateRefs: [],
+ })
+
+ expect(normalizedField).toStrictEqual({
+ alternateRefs: [],
+ changefreq: 'daily',
+ lastmod: '2021-08-01T00:00:00.000Z',
+ loc: 'https://example.com/page-2',
+ priority: 0.7,
+ trailingSlash: false,
+ })
+ })
+
+ test('normalizeSitemapField: Sitemap field trailingSlash provided => Use field.trailingSlash', async () => {
+ // Create builder instance
+ const builder = new UrlSetBuilder(
+ {
+ ...sampleConfig,
+ trailingSlash: false,
+ },
+ sampleManifest,
+ )
+
+ // Normalize field
+ const normalizedField = builder.normalizeSitemapField({
+ changefreq: 'daily',
+ lastmod: '2021-08-01T00:00:00.000Z',
+ priority: 0.7,
+ loc: '/page-2',
+ alternateRefs: [],
+ trailingSlash: true,
+ })
+
+ expect(normalizedField).toStrictEqual({
+ alternateRefs: [],
+ changefreq: 'daily',
+ lastmod: '2021-08-01T00:00:00.000Z',
+ loc: 'https://example.com/page-2/',
+ priority: 0.7,
+ trailingSlash: true,
+ })
+ })
+})
diff --git a/packages/next-sitemap/src/builders/exportable-builder.ts b/packages/next-sitemap/src/builders/exportable-builder.ts
new file mode 100644
index 00000000..fecdfe4e
--- /dev/null
+++ b/packages/next-sitemap/src/builders/exportable-builder.ts
@@ -0,0 +1,237 @@
+/* eslint-disable @typescript-eslint/no-non-null-assertion */
+import type {
+ IConfig,
+ IExportable,
+ INextSitemapResult,
+ IRuntimePaths,
+ ISitemapField,
+} from '../interface.js'
+import { SitemapBuilder } from './sitemap-builder.js'
+import path from 'node:path'
+import { generateUrl } from '../utils/url.js'
+import { combineMerge } from '../utils/merge.js'
+import { RobotsTxtBuilder } from './robots-txt-builder.js'
+import { defaultRobotsTxtTransformer } from '../utils/defaults.js'
+import { exportFile } from '../utils/file.js'
+
+export class ExportableBuilder {
+ exportableList: IExportable[] = []
+
+ config: IConfig
+
+ runtimePaths: IRuntimePaths
+
+ sitemapBuilder: SitemapBuilder
+
+ robotsTxtBuilder: RobotsTxtBuilder
+
+ exportDir: string
+
+ constructor(config: IConfig, runtimePaths: IRuntimePaths) {
+ this.config = config
+
+ this.runtimePaths = runtimePaths
+
+ this.sitemapBuilder = new SitemapBuilder()
+
+ this.robotsTxtBuilder = new RobotsTxtBuilder()
+
+ this.exportDir = path.resolve(process.cwd(), this.config.outDir!)
+ }
+
+ /**
+ * Register sitemap index files
+ */
+ async registerIndexSitemap() {
+ // Get generated sitemap list
+ const sitemaps = [
+ ...this.generatedSitemaps(),
+ // Include additionalSitemaps provided via robots.txt options
+ ...(this.config?.robotsTxtOptions?.additionalSitemaps ?? []),
+ ]
+
+ // Generate sitemap-index content
+ const content = this.sitemapBuilder.buildSitemapIndexXml(sitemaps)
+
+ // Create exportable
+ const item: IExportable = {
+ type: 'sitemap-index',
+ filename: this.runtimePaths.SITEMAP_INDEX_FILE!,
+ url: this.runtimePaths.SITEMAP_INDEX_URL!,
+ content,
+ }
+
+ // Add to exportable list
+ this.exportableList.push(item)
+ }
+
+ /**
+ * Resolve filename if index sitemap is generated
+ * @param index
+ * @returns
+ */
+ resolveFilenameWithIndexSitemap(index: number) {
+ return `${this.config.sitemapBaseFileName}-${index}.xml`
+ }
+
+ /**
+ * Resolve filename if index sitemaps is not generated
+ * @param index
+ * @returns
+ */
+ resolveFilenameWithoutIndexSitemap(index: number) {
+ if (index === 0) {
+ return `${this.config.sitemapBaseFileName}.xml`
+ }
+
+ return this.resolveFilenameWithIndexSitemap(index)
+ }
+
+ /**
+ * Register sitemaps with exportable builder
+ * @param chunks
+ */
+ async registerSitemaps(chunks: ISitemapField[][]) {
+ // Check whether user config allows sitemap generation
+ const hasIndexSitemap = this.config.generateIndexSitemap
+
+ // Create exportable items
+ const items = chunks?.map((chunk, index) => {
+ // Get sitemap base filename
+ const baseFilename = hasIndexSitemap
+ ? this.resolveFilenameWithIndexSitemap(index)
+ : this.resolveFilenameWithoutIndexSitemap(index)
+
+ return {
+ type: 'sitemap',
+ url: generateUrl(this.config.siteUrl, baseFilename),
+ filename: path.resolve(this.exportDir, baseFilename),
+ content: this.sitemapBuilder.buildSitemapXml(chunk),
+ } as IExportable
+ })
+
+ // Add to exportable list
+ this.exportableList.push(...items)
+ }
+
+ /**
+ * Get robots.txt export config
+ * @returns
+ */
+ robotsTxtExportConfig() {
+ // Endpoints list
+ const endpoints: string[] = []
+
+ // Include non-index sitemaps
+ // Optionally allow user to include non-index sitemaps along with generated sitemap list
+ // Set to true if index-sitemap is not generated
+ const includeNonIndexSitemaps = this.config.generateIndexSitemap
+ ? this.config?.robotsTxtOptions?.includeNonIndexSitemaps
+ : true
+
+ // Add all sitemap indices
+ if (this.config.generateIndexSitemap) {
+ endpoints.push(...this.generatedSitemapIndices())
+ }
+
+ // Add all non-index sitemaps
+ if (includeNonIndexSitemaps) {
+ endpoints.push(...this.generatedSitemaps())
+ }
+
+ // Combine merge with additional sitemaps
+ return combineMerge(
+ {
+ robotsTxtOptions: {
+ additionalSitemaps: endpoints,
+ },
+ } as IConfig,
+ this.config,
+ )
+ }
+
+ /**
+ * Register robots.txt export
+ */
+ async registerRobotsTxt() {
+ // File name of robots.txt
+ const baseFilename = 'robots.txt'
+
+ // Export config of robots.txt
+ const robotsConfig = this.robotsTxtExportConfig()
+
+ // Generate robots content
+ let content = this.robotsTxtBuilder.generateRobotsTxt(robotsConfig)
+
+ // Get robots transformer
+ const robotsTransformer =
+ robotsConfig?.robotsTxtOptions?.transformRobotsTxt ??
+ defaultRobotsTxtTransformer
+
+ // Transform generated robots txt
+ content = await robotsTransformer(robotsConfig, content)
+
+ // Generate exportable item
+ const item: IExportable = {
+ type: 'robots.txt',
+ filename: path.resolve(this.exportDir, baseFilename),
+ url: generateUrl(robotsConfig?.siteUrl, baseFilename),
+ content,
+ }
+
+ // Add to exportableList
+ this.exportableList.push(item)
+ }
+
+ /**
+ * Generic reducer to extract by type
+ * @param condition
+ * @returns
+ */
+ exportableUrlReducer(condition: (curr: IExportable) => boolean) {
+ return this.exportableList.reduce((prev, curr) => {
+ const matches = condition(curr)
+
+ if (matches) {
+ prev.push(curr.url)
+ }
+
+ return prev
+ }, [])
+ }
+
+ /**
+ * Return a lit of sitemap urls
+ * @returns
+ */
+ generatedSitemaps() {
+ return this.exportableUrlReducer((x) => x.type == 'sitemap')
+ }
+
+ /**
+ * Generate sitemap indices
+ * @returns
+ */
+ generatedSitemapIndices() {
+ return this.exportableUrlReducer((x) => x.type == 'sitemap-index')
+ }
+
+ /**
+ * Export all registered files
+ * @returns
+ */
+ async exportAll(): Promise {
+ await Promise.all(
+ this.exportableList?.map(async (item) =>
+ exportFile(item.filename, item.content),
+ ),
+ )
+
+ // Create result object
+ return {
+ runtimePaths: this.runtimePaths,
+ sitemaps: this.generatedSitemaps(),
+ sitemapIndices: this.generatedSitemapIndices(),
+ }
+ }
+}
diff --git a/packages/next-sitemap/src/builders/robots-txt-builder.ts b/packages/next-sitemap/src/builders/robots-txt-builder.ts
new file mode 100644
index 00000000..6dd1c84b
--- /dev/null
+++ b/packages/next-sitemap/src/builders/robots-txt-builder.ts
@@ -0,0 +1,71 @@
+/* eslint-disable @typescript-eslint/no-non-null-assertion */
+import type { IConfig, IRobotPolicy } from '../interface.js'
+import { toArray } from '../utils/array.js'
+
+export class RobotsTxtBuilder {
+ /**
+ * Normalize robots.txt policies
+ * @param policies
+ * @returns
+ */
+ normalizePolicy(policies: IRobotPolicy[]): IRobotPolicy[] {
+ return policies.map((x) => ({
+ ...x,
+ allow: toArray(x.allow ?? []),
+ disallow: toArray(x.disallow ?? []),
+ }))
+ }
+
+ /**
+ * Add new policy
+ * @param key
+ * @param rules
+ * @returns
+ */
+ addPolicies(key: string, rules: string[]): string {
+ return rules.reduce((prev, curr) => `${prev}${key}: ${curr}\n`, '')
+ }
+
+ /**
+ * Generates robots.txt content
+ * @param config
+ * @returns
+ */
+ generateRobotsTxt(config: IConfig): string {
+ const { additionalSitemaps, policies } = config.robotsTxtOptions!
+ const normalizedPolices = this.normalizePolicy(policies!)
+
+ let content = ''
+
+ normalizedPolices.forEach((x) => {
+ content += `# ${x.userAgent}\nUser-agent: ${x.userAgent}\n`
+
+ if (x.allow) {
+ content += `${this.addPolicies('Allow', x.allow as string[])}`
+ }
+
+ if (x.disallow) {
+ content += `${this.addPolicies('Disallow', x.disallow as string[])}`
+ }
+
+ if (x.crawlDelay) {
+ content += `Crawl-delay: ${x.crawlDelay}\n`
+ }
+
+ content += '\n'
+ })
+
+ // Append host
+ content += `# Host\nHost: ${config.siteUrl}\n`
+
+ if (additionalSitemaps && additionalSitemaps.length > 0) {
+ content += `\n# Sitemaps\n`
+
+ additionalSitemaps.forEach((x) => {
+ content += `Sitemap: ${x}\n`
+ })
+ }
+
+ return content
+ }
+}
diff --git a/packages/next-sitemap/src/builders/sitemap-builder.ts b/packages/next-sitemap/src/builders/sitemap-builder.ts
new file mode 100644
index 00000000..205a263b
--- /dev/null
+++ b/packages/next-sitemap/src/builders/sitemap-builder.ts
@@ -0,0 +1,302 @@
+import type {
+ IAlternateRef,
+ IGoogleNewsEntry,
+ IImageEntry,
+ ISitemapField,
+ IVideoEntry,
+} from '../interface.js'
+import { entityEscapedUrl } from '../utils/url.js'
+
+/**
+ * Builder class to generate xml and robots.txt
+ * Returns only string values
+ */
+export class SitemapBuilder {
+ /**
+ * Create XML Template
+ * @param content
+ * @returns
+ */
+ withXMLTemplate(content: string): string {
+ return `\n\n${content}`
+ }
+
+ /**
+ * Generates sitemap-index.xml
+ * @param allSitemaps
+ * @returns
+ */
+ buildSitemapIndexXml(allSitemaps: string[]) {
+ return [
+ '',
+ '',
+ ...(allSitemaps?.map((x) => `${x}`) ?? []),
+ '',
+ ].join('\n')
+ }
+
+ /**
+ * Normalize sitemap field keys to stay consistent with order
+ * @link https://www.w3schools.com/xml/el_sequence.asp
+ * @link https://github.com/iamvishnusankar/next-sitemap/issues/345
+ * @param x
+ * @returns
+ */
+ normalizeSitemapField(x: ISitemapField) {
+ const { loc, lastmod, changefreq, priority, ...restProps } = x
+
+ // Return keys in following order
+ return {
+ loc,
+ lastmod,
+ changefreq,
+ priority,
+ ...restProps,
+ }
+ }
+
+ /**
+ * Composes YYYY-MM-DDThh:mm:ssTZD date format (with TZ offset)
+ * (ref: https://stackoverflow.com/a/49332027)
+ * @param date
+ * @private
+ */
+ private formatDate(date: Date | string): string {
+ const d = typeof date === 'string' ? new Date(date) : date
+ const z = (n) => ('0' + n).slice(-2)
+ const zz = (n) => ('00' + n).slice(-3)
+ let off = d.getTimezoneOffset()
+ const sign = off > 0 ? '-' : '+'
+ off = Math.abs(off)
+
+ return (
+ d.getFullYear() +
+ '-' +
+ z(d.getMonth() + 1) +
+ '-' +
+ z(d.getDate()) +
+ 'T' +
+ z(d.getHours()) +
+ ':' +
+ z(d.getMinutes()) +
+ ':' +
+ z(d.getSeconds()) +
+ '.' +
+ zz(d.getMilliseconds()) +
+ sign +
+ z((off / 60) | 0) +
+ ':' +
+ z(off % 60)
+ )
+ }
+
+ private formatBoolean(value: boolean): string {
+ return value ? 'yes' : 'no'
+ }
+
+ private escapeHtml(s: string) {
+ return s.replace(/[^\dA-Za-z ]/g, (c) => '' + c.charCodeAt(0) + ';')
+ }
+
+ /**
+ * Generates sitemap.xml
+ * @param fields
+ * @returns
+ */
+ buildSitemapXml(fields: ISitemapField[]): string {
+ const content = fields
+ .map((x: ISitemapField) => {
+ // Normalize sitemap field keys to stay consistent with order
+ const field = this.normalizeSitemapField(x)
+
+ // Field array to keep track of properties
+ const fieldArr: Array = []
+
+ // Iterate all object keys and key value pair to field-set
+ for (const key of Object.keys(field)) {
+ // Skip reserved keys
+ if (['trailingSlash'].includes(key)) {
+ continue
+ }
+
+ if (field[key]) {
+ if (key === 'alternateRefs') {
+ const altRefField = this.buildAlternateRefsXml(
+ field.alternateRefs,
+ )
+
+ fieldArr.push(altRefField)
+ } else if (key === 'news') {
+ if (field.news) {
+ const newsField = this.buildNewsXml(field.news)
+ fieldArr.push(newsField)
+ }
+ } else if (key === 'images') {
+ if (field.images) {
+ for (const image of field.images) {
+ const imageField = this.buildImageXml(image)
+ fieldArr.push(imageField)
+ }
+ }
+ } else if (key === 'videos') {
+ if (field.videos) {
+ for (const video of field.videos) {
+ const videoField = this.buildVideoXml(video)
+ fieldArr.push(videoField)
+ }
+ }
+ } else {
+ fieldArr.push(`<${key}>${field[key]}${key}>`)
+ }
+ }
+ }
+
+ // Append previous value and return
+ return `${fieldArr.join('')}\n`
+ })
+ .join('')
+
+ return this.withXMLTemplate(content)
+ }
+
+ /**
+ * Generate alternate refs.xml
+ * @param alternateRefs
+ * @returns
+ */
+ buildAlternateRefsXml(alternateRefs: Array = []): string {
+ return alternateRefs
+ .map((alternateRef) => {
+ return ``
+ })
+ .join('')
+ }
+
+ /**
+ * Generate Google News sitemap entry
+ * @param news
+ * @returns string
+ */
+ buildNewsXml(news: IGoogleNewsEntry): string {
+ // using array just because it looks more structured
+ return [
+ ``,
+ ...[
+ ``,
+ ...[
+ `${this.escapeHtml(news.publicationName)}`,
+ `${news.publicationLanguage}`,
+ ],
+ ``,
+ `${this.formatDate(
+ news.date,
+ )}`,
+ `${this.escapeHtml(news.title)}`,
+ ],
+ ``,
+ ]
+ .filter(Boolean)
+ .join('')
+ }
+
+ /**
+ * Generate Image sitemap entry
+ * @param image
+ * @returns string
+ */
+ buildImageXml(image: IImageEntry): string {
+ // using array just because it looks more structured
+ if (!image || !image.loc) {
+ return ''
+ }
+ return [
+ ``,
+ ...[
+ `${entityEscapedUrl(
+ typeof image.loc === 'string' ? image.loc : image.loc.href,
+ )}`,
+ image.caption &&
+ `${this.escapeHtml(image.caption)}`,
+ image.title &&
+ `${this.escapeHtml(image.title)}`,
+ image.geoLocation &&
+ `${this.escapeHtml(
+ image.geoLocation,
+ )}`,
+ image.license &&
+ `${entityEscapedUrl(
+ image.license.href,
+ )}`,
+ ],
+ ``,
+ ]
+ .filter(Boolean)
+ .join('')
+ }
+
+ /**
+ * Generate Video sitemap entry
+ * @param video
+ * @returns string
+ */
+ buildVideoXml(video: IVideoEntry): string {
+ // using array just because it looks more structured
+ return [
+ ``,
+ ...[
+ `${this.escapeHtml(video.title)}`,
+ `${entityEscapedUrl(
+ video.thumbnailLoc.href,
+ )}`,
+ `${this.escapeHtml(
+ video.description,
+ )}`,
+ video.contentLoc &&
+ `${entityEscapedUrl(
+ video.contentLoc.href,
+ )}`,
+ video.playerLoc &&
+ `${entityEscapedUrl(
+ video.playerLoc.href,
+ )}`,
+ video.duration && `${video.duration}`,
+ video.viewCount &&
+ `${video.viewCount}`,
+ video.tag && `${this.escapeHtml(video.tag)}`,
+ video.rating &&
+ `${video.rating
+ .toFixed(1)
+ .replace(',', '.')}`,
+ video.expirationDate &&
+ `${this.formatDate(
+ video.expirationDate,
+ )}`,
+ video.publicationDate &&
+ `${this.formatDate(
+ video.publicationDate,
+ )}`,
+ typeof video.familyFriendly !== 'undefined' &&
+ `${this.formatBoolean(
+ video.familyFriendly,
+ )}`,
+ typeof video.requiresSubscription !== 'undefined' &&
+ `${this.formatBoolean(
+ video.requiresSubscription,
+ )}`,
+ typeof video.live !== 'undefined' &&
+ `${this.formatBoolean(video.live)}`,
+ video.restriction &&
+ `${video.restriction.content}`,
+ video.platform &&
+ `${video.platform.content}`,
+ video.uploader &&
+ `${this.escapeHtml(video.uploader.name)}`,
+ ],
+ ``,
+ ]
+ .filter(Boolean)
+ .join('')
+ }
+}
diff --git a/packages/next-sitemap/src/builders/url-set-builder.ts b/packages/next-sitemap/src/builders/url-set-builder.ts
new file mode 100644
index 00000000..d870dc41
--- /dev/null
+++ b/packages/next-sitemap/src/builders/url-set-builder.ts
@@ -0,0 +1,158 @@
+import { removeIfMatchPattern } from '../utils/array.js'
+import { defaultSitemapTransformer } from '../utils/defaults.js'
+import {
+ createDefaultLocaleReplace,
+ entityEscapedUrl,
+ generateUrl,
+ isNextInternalUrl,
+} from '../utils/url.js'
+import type { IConfig, ISitemapField, INextManifest } from '../interface.js'
+
+export class UrlSetBuilder {
+ config: IConfig
+
+ manifest: INextManifest
+
+ constructor(config: IConfig, manifest: INextManifest) {
+ this.config = config
+ this.manifest = manifest
+ }
+
+ /**
+ * Returns absolute url by combining siteUrl and path w.r.t trailingSlash config
+ * @param siteUrl
+ * @param path
+ * @param trailingSlash
+ * @returns
+ */
+ absoluteUrl(siteUrl: string, path: string, trailingSlash?: boolean): string {
+ const url = generateUrl(siteUrl, trailingSlash ? `${path}/` : path)
+
+ if (!trailingSlash && url.endsWith('/')) {
+ return url.slice(0, url.length - 1)
+ }
+
+ return entityEscapedUrl(url)
+ }
+
+ /**
+ * Normalize sitemap fields to include absolute urls
+ * @param field
+ */
+ normalizeSitemapField(field: ISitemapField): ISitemapField {
+ // Handle trailing Slash
+ const trailingSlash =
+ 'trailingSlash' in field
+ ? field.trailingSlash
+ : this.config?.trailingSlash
+
+ return {
+ ...field,
+ trailingSlash,
+ loc: this.absoluteUrl(this.config?.siteUrl, field?.loc, trailingSlash), // create absolute urls based on sitemap fields
+ alternateRefs: (field.alternateRefs ?? []).map((alternateRef) => ({
+ href: alternateRef.hrefIsAbsolute
+ ? alternateRef.href
+ : this.absoluteUrl(alternateRef.href, field.loc, trailingSlash),
+ hreflang: alternateRef.hreflang,
+ })),
+ }
+ }
+
+ /**
+ * Create a unique url set
+ */
+ async createUrlSet(): Promise {
+ // Load i18n routes
+ const i18n = this.manifest?.routes?.i18n
+
+ // Init all page keys
+ const allKeys = [
+ ...Object.keys(this.manifest?.build?.pages ?? {}),
+ ...(this.manifest?.build?.ampFirstPages ?? []),
+ ...(this.manifest?.preRender
+ ? Object.keys(this.manifest?.preRender?.routes ?? {})
+ : []),
+ ...(this.manifest?.staticExportPages ?? []),
+ ]
+
+ // Filter out next.js internal urls and generate urls based on sitemap
+ let urlSet = allKeys.filter((x) => !isNextInternalUrl(x))
+
+ // Remove default locale if i18n is enabled
+ let defaultLocale
+ if (i18n) {
+ defaultLocale = i18n.defaultLocale
+ const replaceDefaultLocale = createDefaultLocaleReplace(defaultLocale)
+ urlSet = urlSet.map(replaceDefaultLocale)
+ }
+
+ // Remove the urls based on this.config?.exclude array
+ if (this.config?.exclude) {
+ if (typeof this.config.exclude === 'function') {
+ const asyncExcludes = await this.config.exclude()
+ urlSet = removeIfMatchPattern(urlSet, asyncExcludes)
+ } else {
+ urlSet = removeIfMatchPattern(urlSet, this.config?.exclude)
+ }
+ }
+
+ urlSet = [...new Set(urlSet)]
+
+ // Remove routes which don't exist
+ const notFoundRoutes = (this.manifest?.preRender?.notFoundRoutes ??
+ []) as string[]
+ urlSet = urlSet.filter((url) => {
+ return (
+ !notFoundRoutes.includes(url) &&
+ !notFoundRoutes.includes(`/${defaultLocale}${url}`)
+ )
+ })
+
+ // Create sitemap fields based on transformation
+ const sitemapFields: ISitemapField[] = [] // transform using relative urls
+
+ // Create a map of fields by loc to quickly find collisions
+ const mapFieldsByLoc: { [key in string]: ISitemapField } = {}
+
+ for (const url of urlSet) {
+ const sitemapField = await this.config?.transform?.(this.config, url)
+
+ if (!sitemapField?.loc) continue
+
+ sitemapFields.push(sitemapField)
+
+ // Add link on field to map by loc
+ if (this.config?.additionalPaths) {
+ mapFieldsByLoc[sitemapField.loc] = sitemapField
+ }
+ }
+
+ if (this.config?.additionalPaths) {
+ const additions =
+ (await this.config?.additionalPaths({
+ ...this.config,
+ transform: this.config?.transform ?? defaultSitemapTransformer,
+ })) ?? []
+
+ for (const field of additions) {
+ if (!field?.loc) continue
+
+ const collision = mapFieldsByLoc[field.loc]
+
+ // Update first entry
+ if (collision) {
+ // Mutate common entry between sitemapFields and mapFieldsByLoc (spread operator don't work)
+ Object.entries(field).forEach(
+ ([key, value]) => (collision[key] = value),
+ )
+ continue
+ }
+
+ sitemapFields.push(field)
+ }
+ }
+
+ return sitemapFields.map((x) => this.normalizeSitemapField(x))
+ }
+}
diff --git a/packages/next-sitemap/src/cli.ts b/packages/next-sitemap/src/cli.ts
new file mode 100644
index 00000000..96dcdce0
--- /dev/null
+++ b/packages/next-sitemap/src/cli.ts
@@ -0,0 +1,57 @@
+/* eslint-disable @typescript-eslint/no-non-null-assertion */
+import { Logger } from './logger.js'
+import { toChunks } from './utils/array.js'
+import { ConfigParser } from './parsers/config-parser.js'
+import { ManifestParser } from './parsers/manifest-parser.js'
+import { UrlSetBuilder } from './builders/url-set-builder.js'
+import { ExportableBuilder } from './builders/exportable-builder.js'
+
+export class CLI {
+ /**
+ * Main method
+ * @returns
+ */
+ async main() {
+ // Load config from `next-sitemap.config.js` along with runtimePaths info
+ const configParser = new ConfigParser()
+ const { config, runtimePaths } = await configParser.loadConfig()
+
+ // Load next.js manifest
+ const manifestParser = new ManifestParser(config, runtimePaths)
+ const manifest = await manifestParser.loadManifest()
+
+ // Generate url set
+ const urlSetBuilder = new UrlSetBuilder(config, manifest)
+ const urlSet = await urlSetBuilder.createUrlSet()
+
+ // Split sitemap into multiple files
+ const chunks = toChunks(urlSet, config.sitemapSize!)
+
+ // Create ExportableBuilder instance
+ const expoBuilder = new ExportableBuilder(config, runtimePaths)
+
+ // Register sitemap exports
+ await expoBuilder.registerSitemaps(chunks)
+
+ // Register index sitemap if user config allows generation
+ if (config.generateIndexSitemap) {
+ await expoBuilder.registerIndexSitemap()
+ }
+
+ // Register robots.txt export if user config allows generation
+ if (config?.generateRobotsTxt) {
+ await expoBuilder.registerRobotsTxt()
+ }
+
+ // Export all files
+ return expoBuilder.exportAll()
+ }
+
+ /**
+ * Execute and log result
+ * @returns
+ */
+ async execute() {
+ return this.main().then(Logger.generationCompleted).catch(Logger.error)
+ }
+}
diff --git a/packages/next-sitemap/src/index.ts b/packages/next-sitemap/src/index.ts
new file mode 100644
index 00000000..a56c5012
--- /dev/null
+++ b/packages/next-sitemap/src/index.ts
@@ -0,0 +1,10 @@
+// Export types
+export * from './interface.js'
+
+// Export server side sitemaps
+export * from './ssr/response.js'
+export * from './ssr/sitemap-index.js'
+export * from './ssr/sitemap.js'
+
+// Export sitemap builder
+export * from './builders/sitemap-builder.js'
diff --git a/packages/next-sitemap/src/interface.ts b/packages/next-sitemap/src/interface.ts
new file mode 100644
index 00000000..403ad1be
--- /dev/null
+++ b/packages/next-sitemap/src/interface.ts
@@ -0,0 +1,307 @@
+type MaybeUndefined = T | undefined
+type MaybePromise = T | Promise
+
+type Changefreq =
+ | 'always'
+ | 'hourly'
+ | 'daily'
+ | 'weekly'
+ | 'monthly'
+ | 'yearly'
+ | 'never'
+
+/**
+ * Robot.txt policy options
+ */
+export interface IRobotPolicy {
+ /**
+ * User agent name
+ */
+ userAgent: string
+
+ /**
+ * Disallow option(s)
+ */
+ disallow?: string | string[]
+
+ /**
+ * Allow option(s)
+ */
+ allow?: string | string[]
+
+ /**
+ * Crawl delay
+ */
+ crawlDelay?: number
+}
+
+/**
+ * robots.txt Options
+ */
+export interface IRobotsTxt {
+ /**
+ * Crawl policies
+ */
+ policies?: IRobotPolicy[]
+
+ /**
+ * Additional sitemaps which need to be added to robots
+ */
+ additionalSitemaps?: string[]
+
+ /**
+ * From v2.4x onwards, generated `robots.txt` will only contain url of `index sitemap` and custom provided endpoints from `robotsTxtOptions.additionalSitemaps`
+ *
+ * This is to prevent duplicate url submission (once through index-sitemap -> sitemap-url and once through robots.txt -> HOST)
+ *
+ * Set this option `true` to add all generated sitemap endpoints to `robots.txt`
+ * @default false
+ */
+ includeNonIndexSitemaps?: boolean
+
+ /**
+ * Custom robots.txt transformer
+ */
+ transformRobotsTxt?: (config: IConfig, robotsTxt: string) => Promise
+}
+
+/**
+ * Sitemap configuration
+ */
+export interface IConfig {
+ /**
+ * Base url of your website
+ */
+ siteUrl: string
+
+ /**
+ * Change frequency.
+ * @default 'daily'
+ */
+ changefreq?: Changefreq
+
+ /**
+ * The type of build output.
+ * @see https://nextjs.org/docs/pages/api-reference/next-config-js/output
+ */
+ output?: 'standalone' | 'export' | undefined
+
+ /**
+ * Priority
+ * @default 0.7
+ */
+ priority?: any
+
+ /**
+ * The name of the generated sitemap file before the file extension.
+ * @default "sitemap"
+ */
+ sitemapBaseFileName?: string
+
+ /**
+ * next.js build directory.
+ * @default .next
+ */
+ sourceDir?: string
+
+ /**
+ * All the generated files will be exported to this directory.
+ * @default public
+ */
+ outDir?: string
+
+ /**
+ * Split large sitemap into multiple files by specifying sitemap size.
+ * @default 5000
+ */
+ sitemapSize?: number
+
+ /**
+ * Generate a robots.txt file and list the generated sitemaps.
+ * @default false
+ */
+ generateRobotsTxt?: boolean
+
+ /**
+ * robots.txt options
+ */
+ robotsTxtOptions?: IRobotsTxt
+
+ /**
+ * Add property.
+ * @default true
+ */
+ autoLastmod?: boolean
+
+ /**
+ * Array of relative paths (wildcard pattern supported) to exclude from listing on sitemap.xml or sitemap-*.xml.
+ * Apart from this option next-sitemap also offers a custom transform option which could be used to exclude urls that match specific patterns
+ * @example ['/page-0', '/page-*', '/private/*']
+ */
+ exclude?: string[] | (() => Promise)
+
+ alternateRefs?: Array
+
+ /**
+ * A transformation function, which runs for each relative-path in the sitemap. Returning null value from the transformation function will result in the exclusion of that specific path from the generated sitemap list.
+ * @link https://github.com/iamvishnusankar/next-sitemap#custom-transformation-function
+ */
+ transform?: (
+ config: IConfig,
+ url: string,
+ ) => MaybePromise>
+
+ /**
+ * A function that returns a list of additional paths to be added to the generated sitemap list.
+ * @link https://github.com/iamvishnusankar/next-sitemap#additional-paths-function
+ */
+ additionalPaths?: (
+ config: AdditionalPathsConfig,
+ ) => MaybePromise[]>
+
+ /**
+ * Include trailing slash
+ */
+ trailingSlash?: boolean
+
+ /**
+ * Boolean to enable/disable index sitemap generation
+ * If enabled next-sitemap will generate sitemap-*.xml and sitemap.xml (index sitemap)
+ * @default true
+ */
+ generateIndexSitemap?: boolean
+}
+
+export type AdditionalPathsConfig = Readonly<
+ IConfig & {
+ transform: NonNullable
+ }
+>
+
+export interface IBuildManifest {
+ pages: {
+ [key: string]: string[]
+ }
+ ampFirstPages?: string[]
+}
+
+export interface IPreRenderManifest {
+ routes: {
+ [key: string]: any
+ }
+ notFoundRoutes: string[]
+}
+
+export interface IRoutesManifest {
+ i18n?: {
+ locales: string[]
+ defaultLocale: string
+ }
+}
+
+export interface IExportMarker {
+ exportTrailingSlash: boolean
+}
+
+export interface INextManifest {
+ build?: IBuildManifest
+ preRender?: IPreRenderManifest
+ routes?: IRoutesManifest
+ staticExportPages?: string[]
+}
+
+/**
+ * Use IExportable instead
+ * @deprecated
+ */
+export interface ISitemapChunk {
+ path: string
+ fields: ISitemapField[]
+ filename: string
+}
+
+export interface IExportable {
+ url: string
+ filename: string
+ content: string
+ type: 'robots.txt' | 'sitemap' | 'sitemap-index'
+}
+
+export interface IRuntimePaths {
+ BUILD_MANIFEST: string
+ PRERENDER_MANIFEST: string
+ ROUTES_MANIFEST: string
+ ROBOTS_TXT_FILE: string
+ EXPORT_MARKER: string
+ SITEMAP_INDEX_FILE?: string
+ SITEMAP_INDEX_URL?: string
+ STATIC_EXPORT_ROOT: string
+}
+
+export type IAlternateRef = {
+ href: string
+ hreflang: string
+ hrefIsAbsolute?: boolean
+}
+
+export type IGoogleNewsEntry = {
+ title: string
+ date: Date | string
+ publicationName: string
+ publicationLanguage: string
+}
+
+export type IImageEntry = {
+ loc: URL | string
+ caption?: string
+ geoLocation?: string
+ title?: string
+ license?: URL
+}
+
+export type IRestriction = {
+ relationship: 'allow' | 'deny'
+ content: string
+}
+
+export type IVideoEntry = {
+ title: string
+ thumbnailLoc: URL
+ description: string
+ contentLoc?: URL
+ playerLoc?: URL
+ duration?: number
+ expirationDate?: Date | string
+ rating?: number
+ viewCount?: number
+ publicationDate?: Date | string
+ familyFriendly?: boolean
+ restriction?: IRestriction
+ platform?: IRestriction
+ requiresSubscription?: boolean
+ uploader?: {
+ name: string
+ info?: URL
+ }
+ live?: boolean
+ tag?: string
+}
+
+export type ISitemapField = {
+ loc: string
+ lastmod?: string
+ changefreq?: Changefreq
+ priority?: number
+ alternateRefs?: Array
+ trailingSlash?: boolean
+
+ news?: IGoogleNewsEntry
+ images?: Array
+ videos?: Array
+}
+
+export interface INextSitemapResult {
+ sitemaps: string[]
+ sitemapIndices: string[]
+ runtimePaths: IRuntimePaths
+}
diff --git a/packages/next-sitemap/src/logger.ts b/packages/next-sitemap/src/logger.ts
new file mode 100644
index 00000000..7bbd19e6
--- /dev/null
+++ b/packages/next-sitemap/src/logger.ts
@@ -0,0 +1,99 @@
+import type { INextSitemapResult } from './interface.js'
+
+/**
+ * Generic console logger
+ */
+export class Logger {
+ /**
+ * Missing build
+ */
+ static noBuildManifest() {
+ Logger.error(
+ 'Unable to find build-manifest.\nMake sure to build the project using `next build` command\n',
+ )
+ }
+
+ /**
+ * Missing build
+ */
+ static noExportMarker() {
+ Logger.error(
+ 'Unable to find export-maker.\nMake sure to build the project using `next build` command\n',
+ )
+ }
+
+ /**
+ * Log missing config file
+ */
+ static noConfigFile() {
+ Logger.error(
+ 'Unable to find next-sitemap.config.js or custom config file.\n\nIMPORTANT: Default config file has been renamed to `next-sitemap.config.js`\n\nIf you are using custom config file, make sure to invoke `next-sitemap --config .js`\n',
+ )
+ }
+
+ /**
+ * Generic error logger
+ * @param text
+ * @returns
+ */
+ static error(...text: string[]) {
+ return console.error(`\x1b[31m`, `❌`, `[next-sitemap]`, ...text)
+ }
+
+ /**
+ * Generic log
+ * @param emoji
+ * @param text
+ */
+ static log(emoji: string, ...text: string[]): any {
+ return console.log(emoji, `[next-sitemap]`, ...text)
+ }
+
+ static logList(title: string, list: string[]) {
+ console.log(
+ `-----------------------------------------------------\n`,
+ title,
+ `\n-----------------------------------------------------\n`,
+ )
+
+ // Only show 5 entries on console
+ if (list?.length > 7) {
+ list = [...list.splice(0, 3), '...', ...list.splice(list.length - 2, 2)]
+ }
+
+ // log all sitemap list
+ list?.forEach((x) =>
+ x === '...' ? console.log(` ${x}`) : console.log(` ○ ${x}`),
+ )
+
+ console.log(`\n`)
+ }
+
+ /**
+ * Log stats when the generation is completed
+ * @param result
+ * @returns
+ */
+ static generationCompleted(result: INextSitemapResult) {
+ // Initial stats
+ Logger.log(`✅`, 'Generation completed')
+
+ const indexCount = result.sitemapIndices.length
+ const sitemapCount = result.sitemaps.length
+
+ console.table({
+ indexSitemaps: indexCount,
+ sitemaps: sitemapCount,
+ })
+
+ // Log sitemap index list
+ if (indexCount > 0) {
+ Logger.logList('SITEMAP INDICES', result.sitemapIndices)
+ }
+
+ // Log sitemap list
+ if (sitemapCount > 0) {
+ Logger.logList('SITEMAPS', result.sitemaps)
+ }
+ }
+}
diff --git a/packages/next-sitemap/src/parsers/config-parser.ts b/packages/next-sitemap/src/parsers/config-parser.ts
new file mode 100644
index 00000000..e26d304a
--- /dev/null
+++ b/packages/next-sitemap/src/parsers/config-parser.ts
@@ -0,0 +1,114 @@
+import { Logger } from '../logger.js'
+import { withDefaultConfig } from '../utils/defaults.js'
+import { getConfigFilePath, getRuntimePaths } from '../utils/path.js'
+import type { IConfig, IRuntimePaths, IExportMarker } from '../interface.js'
+import { overwriteMerge } from '../utils/merge.js'
+import { loadJSON } from '../utils/file.js'
+
+export class ConfigParser {
+ /**
+ * Get runtime config
+ * @param runtimePaths
+ * @returns
+ */
+ private async getRuntimeConfig(
+ config: IConfig,
+ runtimePaths: IRuntimePaths,
+ ): Promise> {
+ // Skip export marker loading if output is set to "export"
+ if (config?.output === 'export') {
+ return {}
+ }
+
+ // Load export marker
+ const exportMarkerConfig = await loadJSON(
+ runtimePaths.EXPORT_MARKER,
+ ).catch((err) => {
+ Logger.noExportMarker()
+ throw err
+ })
+
+ return {
+ trailingSlash: exportMarkerConfig?.exportTrailingSlash,
+ }
+ }
+
+ /**
+ * Update existing config with runtime config
+ * @param config
+ * @param runtimePaths
+ * @returns
+ */
+ private async withRuntimeConfig(
+ config: IConfig,
+ runtimePaths: IRuntimePaths,
+ ): Promise {
+ // Runtime configs
+ const runtimeConfig = await this.getRuntimeConfig(config, runtimePaths)
+
+ // Prioritize `trailingSlash` value from `next-sitemap.js`
+ const trailingSlashConfig: Partial = {}
+ if ('trailingSlash' in config) {
+ trailingSlashConfig.trailingSlash = config?.trailingSlash
+ }
+
+ return overwriteMerge(config, runtimeConfig, trailingSlashConfig)
+ }
+
+ /**
+ * Load next-sitemap.config.js as module
+ * @returns
+ */
+ private async loadBaseConfig(): Promise {
+ // Get config file path
+ const path = await getConfigFilePath()
+
+ // Config loading message
+ Logger.log('✨', `Loading next-sitemap config:`, path)
+
+ // Load base config
+ const baseConfig = await import(path)
+
+ if (!baseConfig.default) {
+ throw new Error('Unable to next-sitemap config file')
+ }
+
+ return withDefaultConfig(baseConfig.default)
+ }
+
+ /**
+ * Basic validation
+ * @param config
+ */
+ async validateConfig(config: IConfig) {
+ if (!config?.siteUrl) {
+ throw new Error('Validation error: Missing siteUrl')
+ }
+
+ return config
+ }
+
+ /**
+ * Load full config
+ * @returns
+ */
+ async loadConfig() {
+ // Load base config
+ const baseConfig = await this.loadBaseConfig()
+
+ // Find the runtime paths using base config
+ const runtimePaths = getRuntimePaths(baseConfig)
+
+ // Update base config with runtime config
+ const config = await this.withRuntimeConfig(baseConfig, runtimePaths)
+
+ // Validate config
+ await this.validateConfig(config)
+
+ // Return full result
+ return {
+ config,
+ runtimePaths,
+ }
+ }
+}
diff --git a/packages/next-sitemap/src/parsers/manifest-parser.ts b/packages/next-sitemap/src/parsers/manifest-parser.ts
new file mode 100644
index 00000000..375b8975
--- /dev/null
+++ b/packages/next-sitemap/src/parsers/manifest-parser.ts
@@ -0,0 +1,80 @@
+/* eslint-disable @typescript-eslint/no-non-null-assertion */
+import type {
+ INextManifest,
+ IPreRenderManifest,
+ IBuildManifest,
+ IRuntimePaths,
+ IRoutesManifest,
+ IConfig,
+} from '../interface.js'
+import { Logger } from '../logger.js'
+import { loadJSON } from '../utils/file.js'
+import fg from 'fast-glob'
+
+export class ManifestParser {
+ config: IConfig
+ runtimePaths: IRuntimePaths
+
+ constructor(config: IConfig, runtimePaths: IRuntimePaths) {
+ this.config = config
+ this.runtimePaths = runtimePaths
+ }
+ /**
+ * Return paths of html files if config.output = "export"
+ * @param exportFolder
+ * @returns
+ */
+ async getStaticExportPages(config: IConfig, exportFolder: string) {
+ // Skip this step if config.output is not export mode
+ if (config?.output !== 'export') {
+ return []
+ }
+
+ // Get html file paths using glob
+ const htmlFiles = await fg(`${exportFolder}/**/*.html`)
+
+ // Cleanup files
+ return htmlFiles?.map((file) =>
+ file
+ .replace(exportFolder, '')
+ .replace('index', '')
+ .replace('.html', '')
+ .trim(),
+ )
+ }
+
+ async loadManifest(): Promise {
+ // Load build manifest
+ const buildManifest = await loadJSON(
+ this.runtimePaths.BUILD_MANIFEST,
+ )!
+
+ // Throw error if no build manifest exist
+ if (this.config?.output !== 'export' && !buildManifest) {
+ throw Logger.noBuildManifest()
+ }
+
+ // Load pre-render manifest
+ const preRenderManifest = await loadJSON(
+ this.runtimePaths.PRERENDER_MANIFEST,
+ )
+
+ // Load routes manifest
+ const routesManifest = await loadJSON(
+ this.runtimePaths.ROUTES_MANIFEST,
+ )
+
+ // Get static export path when output is set as "export"
+ const staticExportPages = await this.getStaticExportPages(
+ this.config,
+ this.runtimePaths.STATIC_EXPORT_ROOT,
+ )
+
+ return {
+ build: buildManifest ?? ({} as any),
+ preRender: preRenderManifest,
+ routes: routesManifest,
+ staticExportPages,
+ }
+ }
+}
diff --git a/packages/next-sitemap/src/ssr/response.ts b/packages/next-sitemap/src/ssr/response.ts
new file mode 100644
index 00000000..46a97d34
--- /dev/null
+++ b/packages/next-sitemap/src/ssr/response.ts
@@ -0,0 +1,46 @@
+import type { GetServerSidePropsContext } from 'next'
+
+/**
+ * Send XML response, supports legacy pages directory
+ * @param ctx
+ * @param content
+ * @returns
+ */
+export const withXMLResponseLegacy = (
+ ctx: GetServerSidePropsContext,
+ content: string,
+) => {
+ if (ctx?.res) {
+ const { res } = ctx
+
+ // Set header
+ res.setHeader('Content-Type', 'text/xml')
+
+ // Write the sitemap context to resonse
+ res.write(content)
+
+ // End response
+ res.end()
+ }
+
+ // Empty props
+ return {
+ props: {},
+ }
+}
+
+/**
+ * Send XML response, as next13+ route response
+ * @param content
+ * @param headers Custom request headers
+ * @returns
+ */
+export const withXMLResponse = (content: string, headers = {}) => {
+ return new Response(content, {
+ status: 200,
+ headers: {
+ 'Content-Type': 'text/xml',
+ ...headers,
+ },
+ })
+}
diff --git a/packages/next-sitemap/src/ssr/sitemap-index.ts b/packages/next-sitemap/src/ssr/sitemap-index.ts
new file mode 100644
index 00000000..a9dbc8de
--- /dev/null
+++ b/packages/next-sitemap/src/ssr/sitemap-index.ts
@@ -0,0 +1,38 @@
+import type { GetServerSidePropsContext } from 'next'
+import { SitemapBuilder } from '../builders/sitemap-builder.js'
+import { withXMLResponseLegacy, withXMLResponse } from './response.js'
+
+/**
+ * Generate index sitemaps on server side, support pages directory
+ * @param ctx
+ * @param sitemaps
+ * @returns
+ */
+export const getServerSideSitemapIndexLegacy = async (
+ ctx: GetServerSidePropsContext,
+ sitemaps: string[],
+) => {
+ // Generate index sitemap xml content
+ const indexContents = new SitemapBuilder().buildSitemapIndexXml(sitemaps)
+
+ // Return response
+ return withXMLResponseLegacy(ctx, indexContents)
+}
+
+/**
+ * Generate index sitemaps on server side, support next13+ route.{ts,js} file.
+ * To continue using inside pages directory, import `getServerSideSitemapIndexLegacy` instead.
+ * @param sitemaps
+ * @param headers Custom request headers
+ * @returns
+ */
+export const getServerSideSitemapIndex = async (
+ sitemaps: string[],
+ headers = {},
+) => {
+ // Generate index sitemap xml content
+ const indexContents = new SitemapBuilder().buildSitemapIndexXml(sitemaps)
+
+ // Return response
+ return withXMLResponse(indexContents, headers)
+}
diff --git a/packages/next-sitemap/src/ssr/sitemap.ts b/packages/next-sitemap/src/ssr/sitemap.ts
new file mode 100644
index 00000000..f5ac28f5
--- /dev/null
+++ b/packages/next-sitemap/src/ssr/sitemap.ts
@@ -0,0 +1,39 @@
+import type { GetServerSidePropsContext } from 'next'
+import { withXMLResponseLegacy, withXMLResponse } from './response.js'
+import { SitemapBuilder } from '../builders/sitemap-builder.js'
+import type { ISitemapField } from '../interface.js'
+
+/**
+ * Generate server side sitemaps, supports legacy pages directory
+ * @param ctx
+ * @param fields
+ * @returns
+ */
+export const getServerSideSitemapLegacy = async (
+ ctx: GetServerSidePropsContext,
+ fields: ISitemapField[],
+) => {
+ // Generate sitemap xml
+ const contents = new SitemapBuilder().buildSitemapXml(fields)
+
+ // Send response
+ return withXMLResponseLegacy(ctx, contents)
+}
+
+/**
+ * Generate server side sitemaps, support next13+ route.{ts,js} file.
+ * To continue using inside pages directory, import `getServerSideSitemapLegacy` instead.
+ * @param fields
+ * @param headers Custom request headers
+ * @returns
+ */
+export const getServerSideSitemap = async (
+ fields: ISitemapField[],
+ headers = {},
+) => {
+ // Generate sitemap xml
+ const contents = new SitemapBuilder().buildSitemapXml(fields)
+
+ // Send response
+ return withXMLResponse(contents, headers)
+}
diff --git a/packages/next-sitemap/src/utils/__tests__/array.test.ts b/packages/next-sitemap/src/utils/__tests__/array.test.ts
new file mode 100644
index 00000000..f44c8d53
--- /dev/null
+++ b/packages/next-sitemap/src/utils/__tests__/array.test.ts
@@ -0,0 +1,40 @@
+import {
+ removeFromArray,
+ removeIfMatchPattern,
+ toArray,
+ toChunks,
+} from '../array.js'
+
+describe('next-sitemap/array', () => {
+ test('toChunks', () => {
+ const inputArray = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
+ const chunkSize = 3
+
+ const chunks = toChunks(inputArray, chunkSize)
+ expect(chunks).toStrictEqual([
+ [0, 1, 2],
+ [3, 4, 5],
+ [6, 7, 8],
+ [9, 10],
+ ])
+ })
+
+ test('toArray', () => {
+ expect(toArray('hello')).toStrictEqual(['hello'])
+ expect(toArray(['hello', 'world'])).toStrictEqual(['hello', 'world'])
+ })
+
+ test('removeFromArray', () => {
+ expect(removeFromArray([1, 2, 3], [2])).toStrictEqual([1, 3])
+ expect(removeFromArray([1, 2, 3], [2, 3, 4])).toStrictEqual([1])
+ })
+
+ test('removeIfMatchPattern', () => {
+ expect(
+ removeIfMatchPattern(
+ ['/hello', '/world', '/something'],
+ ['/hello*', '/som*'],
+ ),
+ ).toStrictEqual(['/world'])
+ })
+})
diff --git a/packages/next-sitemap/src/utils/__tests__/defaults.test.ts b/packages/next-sitemap/src/utils/__tests__/defaults.test.ts
new file mode 100644
index 00000000..834526b0
--- /dev/null
+++ b/packages/next-sitemap/src/utils/__tests__/defaults.test.ts
@@ -0,0 +1,198 @@
+/* eslint-disable @typescript-eslint/no-non-null-assertion */
+
+import type { IConfig, ISitemapField } from '../../interface.js'
+import {
+ defaultConfig,
+ defaultRobotsTxtTransformer,
+ defaultSitemapTransformer,
+ withDefaultConfig,
+} from '../defaults.js'
+
+describe('next-sitemap/defaults', () => {
+ test('defaultConfig', () => {
+ expect(defaultConfig).toStrictEqual>({
+ sourceDir: '.next',
+ outDir: 'public',
+ sitemapBaseFileName: 'sitemap',
+ generateIndexSitemap: true,
+ priority: 0.7,
+ changefreq: 'daily',
+ sitemapSize: 5000,
+ autoLastmod: true,
+ exclude: [],
+ transform: defaultSitemapTransformer,
+ robotsTxtOptions: {
+ transformRobotsTxt: defaultRobotsTxtTransformer,
+ policies: [
+ {
+ userAgent: '*',
+ allow: '/',
+ },
+ ],
+ additionalSitemaps: [],
+ },
+ })
+ })
+
+ test('withDefaultConfig', () => {
+ const myConfig = withDefaultConfig({
+ sourceDir: 'custom-source',
+ generateRobotsTxt: true,
+ generateIndexSitemap: true,
+ sitemapSize: 50000,
+ exclude: ['1', '2'],
+ robotsTxtOptions: {
+ policies: [],
+ additionalSitemaps: [
+ 'https://example.com/awesome-sitemap.xml',
+ 'https://example.com/awesome-sitemap-2.xml',
+ ],
+ },
+ })
+
+ expect(myConfig).toStrictEqual>({
+ sourceDir: 'custom-source',
+ outDir: 'public',
+ sitemapBaseFileName: 'sitemap',
+ generateIndexSitemap: true,
+ priority: 0.7,
+ changefreq: 'daily',
+ sitemapSize: 50000,
+ autoLastmod: true,
+ generateRobotsTxt: true,
+ exclude: ['1', '2'],
+ transform: defaultSitemapTransformer,
+ robotsTxtOptions: {
+ transformRobotsTxt: defaultRobotsTxtTransformer,
+ policies: [],
+ additionalSitemaps: [
+ 'https://example.com/awesome-sitemap.xml',
+ 'https://example.com/awesome-sitemap-2.xml',
+ ],
+ },
+ })
+ })
+
+ test('withDefaultConfig: Static export', () => {
+ const myConfig = withDefaultConfig({
+ output: 'export', // Static output mode
+ generateRobotsTxt: true,
+ generateIndexSitemap: true,
+ sitemapSize: 50000,
+ exclude: ['1', '2'],
+ robotsTxtOptions: {
+ policies: [],
+ additionalSitemaps: [
+ 'https://example.com/awesome-sitemap.xml',
+ 'https://example.com/awesome-sitemap-2.xml',
+ ],
+ },
+ })
+
+ expect(myConfig).toStrictEqual>({
+ output: 'export',
+ sourceDir: 'out',
+ outDir: 'out',
+ sitemapBaseFileName: 'sitemap',
+ generateIndexSitemap: true,
+ priority: 0.7,
+ changefreq: 'daily',
+ sitemapSize: 50000,
+ autoLastmod: true,
+ generateRobotsTxt: true,
+ exclude: ['1', '2'],
+ transform: defaultSitemapTransformer,
+ robotsTxtOptions: {
+ transformRobotsTxt: defaultRobotsTxtTransformer,
+ policies: [],
+ additionalSitemaps: [
+ 'https://example.com/awesome-sitemap.xml',
+ 'https://example.com/awesome-sitemap-2.xml',
+ ],
+ },
+ })
+ })
+
+ test('withDefaultConfig: Default transformation', async () => {
+ const myConfig = withDefaultConfig({
+ trailingSlash: false,
+ sourceDir: 'custom-source',
+ generateRobotsTxt: true,
+ generateIndexSitemap: true,
+ sitemapSize: 50000,
+ exclude: ['1', '2'],
+ priority: 0.6,
+ changefreq: 'weekly',
+ robotsTxtOptions: {
+ policies: [],
+ additionalSitemaps: [
+ 'https://example.com/awesome-sitemap.xml',
+ 'https://example.com/awesome-sitemap-2.xml',
+ ],
+ },
+ })
+
+ // Default transform
+ await expect(
+ myConfig.transform!(myConfig, 'https://example.com'),
+ ).resolves.toStrictEqual({
+ loc: 'https://example.com',
+ lastmod: expect.any(String),
+ changefreq: 'weekly',
+ priority: 0.6,
+ alternateRefs: [],
+ trailingSlash: myConfig.trailingSlash,
+ })
+
+ // Default transform with custom config override
+ await expect(
+ myConfig.transform!(
+ {
+ ...myConfig,
+ trailingSlash: true,
+ },
+ 'https://example.com',
+ ),
+ ).resolves.toStrictEqual({
+ loc: 'https://example.com',
+ lastmod: expect.any(String),
+ changefreq: 'weekly',
+ priority: 0.6,
+ alternateRefs: [],
+ trailingSlash: true,
+ })
+ })
+
+ test('withDefaultConfig: Custom transformation', async () => {
+ const myConfig = withDefaultConfig({
+ sourceDir: 'custom-source',
+ generateRobotsTxt: true,
+ sitemapSize: 50000,
+ exclude: ['1', '2'],
+ priority: 0.6,
+ changefreq: 'weekly',
+ transform: async (): Promise => {
+ return {
+ loc: 'something-else',
+ lastmod: 'lastmod-cutom',
+ }
+ },
+ robotsTxtOptions: {
+ transformRobotsTxt: defaultRobotsTxtTransformer,
+ policies: [],
+ additionalSitemaps: [
+ 'https://example.com/awesome-sitemap.xml',
+ 'https://example.com/awesome-sitemap-2.xml',
+ ],
+ },
+ })
+
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
+ const value = await myConfig.transform!(myConfig, 'https://example.com')
+
+ expect(value).toStrictEqual({
+ loc: 'something-else',
+ lastmod: 'lastmod-cutom',
+ })
+ })
+})
diff --git a/packages/next-sitemap/src/utils/__tests__/url.test.ts b/packages/next-sitemap/src/utils/__tests__/url.test.ts
new file mode 100644
index 00000000..fa3665e8
--- /dev/null
+++ b/packages/next-sitemap/src/utils/__tests__/url.test.ts
@@ -0,0 +1,80 @@
+import {
+ isURL,
+ cleanPath,
+ generateUrl,
+ isNextInternalUrl,
+ createDefaultLocaleReplace,
+} from '../url.js'
+
+describe('next-sitemap/url', () => {
+ test('isURL : Valid', () => {
+ expect(isURL('https://example.com')).toBeTruthy()
+ })
+
+ test('isURL : Invalid', () => {
+ expect(isURL('/someone-relative/path/item.jpg')).toBeFalsy()
+ })
+
+ test('cleanPath : Relative Path', () => {
+ expect(cleanPath('./epic///awesome///path')).toBe('./epic/awesome/path')
+ })
+
+ test('cleanPath: Public Url', () => {
+ expect(cleanPath('https://www.example.com//epic///awesome///path')).toBe(
+ 'https://www.example.com/epic/awesome/path',
+ )
+ })
+
+ test('generateUrl: with relative slug', () => {
+ const url = generateUrl('https://base.example.com', '//awesome/path')
+ expect(url).toBe('https://base.example.com/awesome/path')
+ })
+
+ test('generateUrl: with external slug', () => {
+ const url = generateUrl(
+ 'https://base.example.com',
+ 'https://cdn.another.site/new//path',
+ )
+ expect(url).toBe('https://cdn.another.site/new/path')
+ })
+
+ test('isNextInternalUrl', () => {
+ expect(isNextInternalUrl('/_app')).toBeTruthy()
+ expect(isNextInternalUrl('/404')).toBeTruthy()
+ expect(isNextInternalUrl('/500')).toBeTruthy()
+ expect(isNextInternalUrl('/_random')).toBeTruthy()
+ expect(isNextInternalUrl('/_middleware')).toBeTruthy()
+ expect(isNextInternalUrl('/about/_middleware')).toBeTruthy()
+ expect(isNextInternalUrl('/some_url/about/_middleware')).toBeTruthy()
+ expect(isNextInternalUrl('/projects/[id]/_middleware')).toBeTruthy()
+ expect(isNextInternalUrl('/favicon.ico')).toBeTruthy()
+ })
+
+ test('isNextInternalUrl: url params', () => {
+ expect(isNextInternalUrl('/[id]')).toBeTruthy()
+ expect(isNextInternalUrl('/blog/[id]')).toBeTruthy()
+ })
+
+ test('isNextInternalUrl: allow urls with underscore`', () => {
+ expect(isNextInternalUrl('/_some_url')).toBeTruthy()
+ expect(isNextInternalUrl('/some_url/[param]')).toBeTruthy()
+
+ expect(isNextInternalUrl('/some_url')).toBeFalsy()
+ expect(isNextInternalUrl('/some-404')).toBeFalsy()
+ expect(isNextInternalUrl('/some-500')).toBeFalsy()
+ })
+
+ test('createDefaultLocaleReplace: replaces default locale within path`', () => {
+ const replaceDefaultLocale = createDefaultLocaleReplace('en-US')
+
+ expect(replaceDefaultLocale('/')).toBe('/')
+ expect(replaceDefaultLocale('/en-US')).toBe('/')
+ expect(replaceDefaultLocale('/en-US/')).toBe('/')
+ expect(replaceDefaultLocale('/en-US/home')).toBe('/home')
+ expect(replaceDefaultLocale('/en-US/home/')).toBe('/home/')
+ expect(replaceDefaultLocale('/en-US-home')).toBe('/en-US-home')
+ expect(replaceDefaultLocale('/en-USA/home')).toBe('/en-USA/home')
+ expect(replaceDefaultLocale('/fr')).toBe('/fr')
+ expect(replaceDefaultLocale('/fr/about')).toBe('/fr/about')
+ })
+})
diff --git a/packages/next-sitemap/src/utils/array.ts b/packages/next-sitemap/src/utils/array.ts
new file mode 100644
index 00000000..c0466b93
--- /dev/null
+++ b/packages/next-sitemap/src/utils/array.ts
@@ -0,0 +1,46 @@
+import { matcher } from './matcher.js'
+
+/**
+ * Split an array based on size
+ * @param arr
+ * @param chunkSize
+ * @returns
+ */
+export const toChunks = (arr: T[], chunkSize: number): T[][] => {
+ return arr.reduce>(
+ (prev, _, i) =>
+ i % chunkSize ? prev : [...prev, arr.slice(i, i + chunkSize)],
+ [],
+ )
+}
+
+/**
+ * simple method to normalize any string to array
+ * @param inp
+ */
+export const toArray = (inp: string | string[]): string[] => {
+ return typeof inp === 'string' ? [inp] : inp
+}
+
+/**
+ * Returns the difference between two arrays
+ * @param inputArr input array
+ * @param toRemoveArr array of elements to be removed
+ */
+export const removeFromArray = (inputArr: T[], toRemoveArr: T[]): T[] => {
+ return inputArr.filter((x) => !toRemoveArr.includes(x))
+}
+
+/**
+ * Returns the difference between two arrays, which match input array pattern
+ * @param inputArr input array
+ * @param toRemoveArr array of elements to be removed
+ */
+export const removeIfMatchPattern = (
+ inputArr: string[],
+ toRemoveArr: string[],
+): string[] => {
+ const matchedArr = matcher(inputArr, toRemoveArr)
+
+ return removeFromArray(inputArr, matchedArr)
+}
diff --git a/packages/next-sitemap/src/utils/defaults.ts b/packages/next-sitemap/src/utils/defaults.ts
new file mode 100644
index 00000000..3ac66fda
--- /dev/null
+++ b/packages/next-sitemap/src/utils/defaults.ts
@@ -0,0 +1,73 @@
+import { IConfig, ISitemapField } from '../interface.js'
+import { overwriteMerge } from './merge.js'
+
+export const defaultSitemapTransformer = async (
+ config: IConfig,
+ loc: string,
+): Promise => {
+ return {
+ loc,
+ lastmod: config?.autoLastmod ? new Date().toISOString() : undefined,
+ changefreq: config?.changefreq,
+ priority: config?.priority,
+ alternateRefs: config.alternateRefs ?? [],
+ trailingSlash: config?.trailingSlash,
+ }
+}
+
+export const defaultRobotsTxtTransformer = async (_: IConfig, text: string) =>
+ text
+
+export const defaultConfig: Partial = {
+ sourceDir: '.next',
+ outDir: 'public',
+ priority: 0.7,
+ sitemapBaseFileName: 'sitemap',
+ changefreq: 'daily',
+ sitemapSize: 5000,
+ autoLastmod: true,
+ exclude: [],
+ transform: defaultSitemapTransformer,
+ generateIndexSitemap: true,
+ robotsTxtOptions: {
+ transformRobotsTxt: defaultRobotsTxtTransformer,
+ policies: [
+ {
+ userAgent: '*',
+ allow: '/',
+ },
+ ],
+ additionalSitemaps: [],
+ },
+}
+
+/**
+ * Set a preset for static export mode
+ * @param config
+ * @returns
+ */
+export const getStaticExportConfigPreset = (
+ config: Partial,
+): Partial => {
+ // Return empty preset for non static export
+ if (config?.output !== 'export') {
+ return {}
+ }
+
+ return {
+ sourceDir: 'out',
+ outDir: 'out',
+ }
+}
+
+/**
+ * Get default config
+ * @param config
+ * @returns
+ */
+export const withDefaultConfig = (config: Partial): IConfig => {
+ // Add output.export config
+ const staticExportConfig = getStaticExportConfigPreset(config)
+
+ return overwriteMerge(defaultConfig, staticExportConfig, config)
+}
diff --git a/packages/next-sitemap/src/utils/file.ts b/packages/next-sitemap/src/utils/file.ts
new file mode 100644
index 00000000..186478c2
--- /dev/null
+++ b/packages/next-sitemap/src/utils/file.ts
@@ -0,0 +1,55 @@
+import * as fs from 'node:fs/promises'
+import path from 'node:path'
+
+/**
+ * Load file
+ * @param path
+ * @param throwError
+ * @returns
+ */
+export const loadJSON = async (path: string): Promise => {
+ // Get path stat
+ const stat = await fs.stat(path).catch(() => {
+ return {
+ isFile: () => false, // Handle errors gracefully
+ }
+ })
+
+ // Return undefined or throw error
+ if (!stat.isFile()) {
+ return // Handle errors gracefully
+ }
+
+ const jsonString = await fs.readFile(path, { encoding: 'utf-8' })
+
+ return JSON.parse(jsonString)
+}
+
+/**
+ * Export file
+ * @param filePath
+ * @param content
+ * @returns
+ */
+export const exportFile = async (
+ filePath: string,
+ content: string,
+): Promise => {
+ // Target folder
+ const folder = path.dirname(filePath)
+
+ // Get file stat
+ const stat = await fs.stat(folder).catch(() => ({
+ isDirectory: () => false,
+ }))
+
+ // Directory
+ if (!stat.isDirectory()) {
+ await fs.mkdir(folder).catch(() => {
+ return
+ })
+ }
+
+ // Write file
+ return fs.writeFile(filePath, content)
+}
diff --git a/packages/next-sitemap/src/utils/matcher.ts b/packages/next-sitemap/src/utils/matcher.ts
new file mode 100644
index 00000000..a60ad305
--- /dev/null
+++ b/packages/next-sitemap/src/utils/matcher.ts
@@ -0,0 +1,142 @@
+/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
+export const escapeStringRegexp = (text: string): string => {
+ if (typeof text !== 'string') {
+ throw new TypeError('Expected a string')
+ }
+
+ // Escape characters with special meaning either inside or outside character sets.
+ // Use a simple backslash escape when it’s always valid, and a `\xnn` escape when the simpler form would be disallowed by Unicode patterns’ stricter grammar.
+ return text?.replace(/[|\\{}()[\]^$+*?.]/g, '\\$&').replace(/-/g, '\\x2d')
+}
+
+const regexpCache = new Map()
+
+const sanitizeArray = (input: T[], inputName: any) => {
+ if (!Array.isArray(input)) {
+ switch (typeof input) {
+ case 'string':
+ input = [input]
+ break
+ case 'undefined':
+ input = []
+ break
+ default:
+ throw new TypeError(
+ `Expected '${inputName}' to be a string or an array, but got a type of '${typeof input}'`,
+ )
+ }
+ }
+
+ return input.filter((string) => {
+ if (typeof string !== 'string') {
+ if (typeof string === 'undefined') {
+ return false
+ }
+
+ throw new TypeError(
+ `Expected '${inputName}' to be an array of strings, but found a type of '${typeof string}' in the array`,
+ )
+ }
+
+ return true
+ })
+}
+
+const makeRegexp = (pattern: T, options = {}) => {
+ options = {
+ caseSensitive: false,
+ ...options,
+ }
+
+ const cacheKey = pattern + JSON.stringify(options)
+
+ if (regexpCache.has(cacheKey)) {
+ return regexpCache.get(cacheKey)
+ }
+
+ const negated = (pattern as any)[0] === '!'
+
+ if (negated) {
+ pattern = (pattern as any).slice(1)
+ }
+
+ pattern = escapeStringRegexp(pattern as any).replace(
+ /\\\*/g,
+ '[\\s\\S]*',
+ ) as any
+
+ const regexp = new RegExp(
+ `^${pattern}$`,
+ (options as any).caseSensitive ? '' : 'i',
+ )
+ ;(regexp as any).negated = negated
+ regexpCache.set(cacheKey, regexp)
+
+ return regexp
+}
+
+const baseMatcher = (
+ inputs: T[],
+ patterns: T[],
+ options: any = {},
+ firstMatchOnly = false,
+) => {
+ inputs = sanitizeArray(inputs, 'inputs')
+ patterns = sanitizeArray(patterns, 'patterns')
+
+ if (patterns.length === 0) {
+ return []
+ }
+
+ patterns = patterns.map((pattern) => makeRegexp(pattern, options))
+
+ const { allPatterns } = options || {}
+ const result: T[] = []
+
+ for (const input of inputs) {
+ // String is included only if it matches at least one non-negated pattern supplied.
+ // Note: the `allPatterns` option requires every non-negated pattern to be matched once.
+ // Matching a negated pattern excludes the string.
+ let matches
+ const didFit: T[] = [...patterns].fill(false as unknown as T)
+
+ for (const [index, pattern] of (patterns as any).entries()) {
+ if ((pattern as any).test(input)) {
+ didFit[index] = true as unknown as T
+ matches = !(pattern as any).negated
+
+ if (!matches) {
+ break
+ }
+ }
+ }
+
+ if (
+ !(
+ matches === false ||
+ (matches === undefined &&
+ patterns.some((pattern) => !(pattern as any).negated)) ||
+ (allPatterns &&
+ didFit.some(
+ (yes, index) => !yes && !(patterns[index] as any).negated,
+ ))
+ )
+ ) {
+ result.push(input)
+
+ if (firstMatchOnly) {
+ break
+ }
+ }
+ }
+
+ return result
+}
+
+export const matcher = (inputs: T[], patterns: T[], options = {}) => {
+ return baseMatcher(inputs, patterns, options, false)
+}
+
+export const isMatch = (inputs: T[], patterns: T[], options = {}) => {
+ return baseMatcher(inputs, patterns, options, true).length > 0
+}
diff --git a/packages/next-sitemap/src/utils/merge.ts b/packages/next-sitemap/src/utils/merge.ts
new file mode 100644
index 00000000..84cbf190
--- /dev/null
+++ b/packages/next-sitemap/src/utils/merge.ts
@@ -0,0 +1,13 @@
+import { merge } from '@corex/deepmerge'
+
+export const overwriteMerge = (...configs: Array>): T => {
+ return merge(configs, {
+ arrayMergeType: 'overwrite',
+ }) as T
+}
+
+export const combineMerge = (...configs: Array>): T => {
+ return merge(configs, {
+ arrayMergeType: 'combine',
+ }) as T
+}
diff --git a/packages/next-sitemap/src/utils/path.ts b/packages/next-sitemap/src/utils/path.ts
new file mode 100644
index 00000000..f9099713
--- /dev/null
+++ b/packages/next-sitemap/src/utils/path.ts
@@ -0,0 +1,70 @@
+/* eslint-disable @typescript-eslint/no-non-null-assertion */
+/* eslint-disable @typescript-eslint/explicit-module-boundary-types */
+import minimist from 'minimist'
+import fs from 'node:fs/promises'
+import path from 'node:path'
+import { Logger } from '../logger.js'
+import { generateUrl } from './url.js'
+import type { IConfig, IRuntimePaths } from '../interface.js'
+import { pathToFileURL } from 'url'
+
+/**
+ * Return absolute path from path segments
+ * @param pathSegment
+ * @returns
+ */
+export const getPath = (...pathSegment: string[]): string => {
+ return path.resolve(process.cwd(), ...pathSegment)
+}
+
+/**
+ * Return all runtime paths
+ * @param config
+ * @returns
+ */
+export const getRuntimePaths = (config: IConfig): IRuntimePaths => {
+ // Check whether user enabled index sitemap or not
+ const sitemapIndexEnabled = config?.generateIndexSitemap
+
+ // Set sitemap index file
+ const SITEMAP_INDEX_FILE = sitemapIndexEnabled
+ ? getPath(config.outDir!, `${config.sitemapBaseFileName}.xml`)
+ : undefined
+
+ // Set sitemap index url
+ const SITEMAP_INDEX_URL = sitemapIndexEnabled
+ ? generateUrl(config?.siteUrl, `${config.sitemapBaseFileName}.xml`)
+ : undefined
+
+ return {
+ BUILD_MANIFEST: getPath(config.sourceDir!, 'build-manifest.json'),
+ PRERENDER_MANIFEST: getPath(config.sourceDir!, 'prerender-manifest.json'),
+ ROUTES_MANIFEST: getPath(config.sourceDir!, 'routes-manifest.json'),
+ EXPORT_MARKER: getPath(config.sourceDir!, 'export-marker.json'),
+ ROBOTS_TXT_FILE: getPath(config.outDir!, 'robots.txt'),
+ STATIC_EXPORT_ROOT: getPath(config.outDir!),
+ SITEMAP_INDEX_URL,
+ SITEMAP_INDEX_FILE,
+ }
+}
+
+/**
+ * Get config file path
+ * @returns
+ */
+export const getConfigFilePath = async () => {
+ // Extract args from command
+ const args = minimist(process.argv.slice(2))
+
+ // Config file path
+ const configPath = getPath(args.config || 'next-sitemap.config.js')
+
+ // Check file stat
+ return fs
+ .stat(configPath)
+ .then(() => pathToFileURL(configPath).toString())
+ .catch((err) => {
+ Logger.noConfigFile()
+ throw err
+ })
+}
diff --git a/packages/next-sitemap/src/utils/url.ts b/packages/next-sitemap/src/utils/url.ts
new file mode 100644
index 00000000..e81b6de0
--- /dev/null
+++ b/packages/next-sitemap/src/utils/url.ts
@@ -0,0 +1,61 @@
+export const cleanPath = (text: string): string => {
+ return text.replace(/([^:])(\/\/+)/g, '$1/')
+}
+
+export const isURL = (text: string): boolean => {
+ // old: /^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\(\)\*\+,;=.]+$/
+ return /^https?:\/\//i.test(text)
+}
+
+export const generateUrl = (baseUrl: string, slug: string): string => {
+ return isURL(slug) ? cleanPath(slug) : cleanPath(`${baseUrl}/${slug}`)
+}
+
+/**
+ * Checks whether a url is next.js specific or not
+ * @param path path check
+ */
+export const isNextInternalUrl = (path: string): boolean => {
+ return new RegExp(
+ /[^/]*^.[_]|^\/(404|500)$|\/_middleware$|favicon.ico|(?:\[)/g,
+ ).test(path)
+}
+
+/**
+ * Creates a replace function to replace the default locale
+ * Avoids creating the same RegExp within each replace
+ *
+ * Replaces only if the path does not contain the locale as an actual valid path
+ *
+ * Given a default locale of en-US it replaces:
+ * /en-US -> /
+ * /en-US/home -> /home
+ * /en-US/home/ -> /home/
+ *
+ * Does not replace if its actual page
+ * /en-USA -> /en-USA
+ * /en-USA/home -> /en-USA/home
+ * /en-US-home -> /en-US-home
+ *
+ * @param defaultLocale defaultLocale as provided by i18n within next config
+ */
+export const createDefaultLocaleReplace = (defaultLocale: string): any => {
+ const defaultLocaleRegExp = new RegExp(`^/${defaultLocale}($|/)`)
+ return (path: string): string => path.replace(defaultLocaleRegExp, '/')
+}
+
+/**
+ * Return UTF-8 encoded urls
+ * @param path
+ * @returns
+ * @link https://developers.google.com/search/docs/advanced/sitemaps/build-sitemap#general-guidelines
+ */
+export const entityEscapedUrl = (path: string): string => {
+ return path
+ .replace(/&/g, '&') // decode & to & first, so that we don't replace & again to &
+ .replace(/&/g, '&')
+ .replace(/'/g, ''')
+ .replace(/"/g, '"')
+ .replace(/>/g, '>')
+ .replace(/=16.1.7'
+ version: 16.2.0(@babel/core@7.29.0)(@playwright/test@1.58.2)(babel-plugin-macros@3.1.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
devDependencies:
- '@corex/workspace':
+ '@corex/tsconfig':
specifier: ^4.0.43
- version: 4.0.43(@babel/core@7.29.0)(@babel/plugin-syntax-flow@7.28.6(@babel/core@7.29.0))(@babel/plugin-transform-react-jsx@7.28.6(@babel/core@7.29.0))(@types/node@22.19.15)(@types/react@19.2.14)(babel-jest@28.1.3(@babel/core@7.29.0))(eslint-config-prettier@10.1.8(eslint@10.0.3(jiti@2.6.1)))(jest@28.1.3(@types/node@22.19.15)(node-notifier@8.0.2))(node-notifier@8.0.2)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- '@typescript-eslint/eslint-plugin':
- specifier: ^6.9.1
- version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(typescript@4.9.5)
- '@typescript-eslint/parser':
- specifier: ^6.9.1
- version: 6.21.0(eslint@8.57.1)(typescript@4.9.5)
- eslint:
- specifier: ^8.52.0
- version: 8.57.1
- eslint-config-next:
- specifier: ^14.0.0
- version: 14.2.35(eslint@8.57.1)(typescript@4.9.5)
+ version: 4.0.43
fast-xml-parser:
- specifier: ^4.3.2
- version: 4.5.5
- prettier:
- specifier: ^3.0.3
- version: 3.8.1
- turbo:
- specifier: ^1.10.16
- version: 1.13.4
+ specifier: ^5.5.9
+ version: 5.5.9
+ typescript:
+ specifier: ^5.2.2
+ version: 5.9.3
packages/next-transpile-modules:
dependencies:
@@ -1044,7 +1045,7 @@ importers:
version: 6.9.1
'@testing-library/react':
specifier: ^16.0.0
- version: 16.3.2(@testing-library/dom@8.20.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 16.3.2(@testing-library/dom@7.31.2)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@types/node':
specifier: ^22.0.0
version: 22.19.11
@@ -1095,7 +1096,7 @@ importers:
version: 6.9.1
'@testing-library/react':
specifier: ^16.1.0
- version: 16.3.2(@testing-library/dom@8.20.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ version: 16.3.2(@testing-library/dom@7.31.2)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@types/node':
specifier: ^22.10.1
version: 22.19.11
@@ -1270,7 +1271,7 @@ importers:
version: 2.1.1
lucide-react:
specifier: latest
- version: 0.577.0(react@19.2.4)
+ version: 1.0.1(react@19.2.4)
next:
specifier: '>=16.1.7'
version: 16.2.0(@babel/core@7.29.0)(@playwright/test@1.58.2)(babel-plugin-macros@3.1.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
@@ -1301,7 +1302,7 @@ importers:
version: 8.5.8
tailwindcss:
specifier: latest
- version: 4.2.1
+ version: 4.2.2
typescript:
specifier: ^5.9.3
version: 5.9.3
@@ -1460,13 +1461,6 @@ packages:
resolution: {integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==}
engines: {node: '>=6.9.0'}
- '@babel/eslint-parser@7.28.6':
- resolution: {integrity: sha512-QGmsKi2PBO/MHSQk+AAgA9R6OHQr+VqnniFE0eMWZcVcfBZoA2dKn2hUsl3Csg/Plt9opRUWdY7//VXsrIlEiA==}
- engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0}
- peerDependencies:
- '@babel/core': ^7.11.0
- eslint: ^7.5.0 || ^8.0.0 || ^9.0.0
-
'@babel/generator@7.29.1':
resolution: {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==}
engines: {node: '>=6.9.0'}
@@ -1603,33 +1597,6 @@ packages:
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/plugin-proposal-class-properties@7.18.6':
- resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==}
- engines: {node: '>=6.9.0'}
- deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.
- peerDependencies:
- '@babel/core': ^7.0.0-0
-
- '@babel/plugin-proposal-decorators@7.29.0':
- resolution: {integrity: sha512-CVBVv3VY/XRMxRYq5dwr2DS7/MvqPm23cOCjbwNnVrfOqcWlnefua1uUs0sjdKOGjvPUG633o07uWzJq4oI6dA==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
-
- '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6':
- resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==}
- engines: {node: '>=6.9.0'}
- deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead.
- peerDependencies:
- '@babel/core': ^7.0.0-0
-
- '@babel/plugin-proposal-numeric-separator@7.18.6':
- resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==}
- engines: {node: '>=6.9.0'}
- deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead.
- peerDependencies:
- '@babel/core': ^7.0.0-0
-
'@babel/plugin-proposal-optional-catch-binding@7.18.6':
resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==}
engines: {node: '>=6.9.0'}
@@ -1637,33 +1604,12 @@ packages:
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/plugin-proposal-optional-chaining@7.21.0':
- resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==}
- engines: {node: '>=6.9.0'}
- deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead.
- peerDependencies:
- '@babel/core': ^7.0.0-0
-
- '@babel/plugin-proposal-private-methods@7.18.6':
- resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==}
- engines: {node: '>=6.9.0'}
- deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead.
- peerDependencies:
- '@babel/core': ^7.0.0-0
-
'@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2':
resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/plugin-proposal-private-property-in-object@7.21.11':
- resolution: {integrity: sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw==}
- engines: {node: '>=6.9.0'}
- deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-property-in-object instead.
- peerDependencies:
- '@babel/core': ^7.0.0-0
-
'@babel/plugin-syntax-async-generators@7.8.4':
resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==}
peerDependencies:
@@ -1685,12 +1631,6 @@ packages:
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/plugin-syntax-decorators@7.28.6':
- resolution: {integrity: sha512-71EYI0ONURHJBL4rSFXnITXqXrrY8q4P0q006DPfN+Rk+ASM+++IBXem/ruokgBZR8YNEWZ8R6B+rCb8VcUTqA==}
- engines: {node: '>=6.9.0'}
- peerDependencies:
- '@babel/core': ^7.0.0-0
-
'@babel/plugin-syntax-flow@7.28.6':
resolution: {integrity: sha512-D+OrJumc9McXNEBI/JmFnc/0uCM2/Y3PEBG3gfV3QIYkKv5pvnpzFrl1kYCrcHJP8nOeFB/SHi1IHz29pNGuew==}
engines: {node: '>=6.9.0'}
@@ -2174,6 +2114,10 @@ packages:
peerDependencies:
'@babel/core': ^7.0.0-0
+ '@babel/runtime-corejs3@7.29.0':
+ resolution: {integrity: sha512-TgUkdp71C9pIbBcHudc+gXZnihEDOjUAmXO1VO4HHGES7QLZcShR0stfKIxLSNIYx2fqhmJChOjm/wkF8wv4gA==}
+ engines: {node: '>=6.9.0'}
+
'@babel/runtime@7.28.6':
resolution: {integrity: sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==}
engines: {node: '>=6.9.0'}
@@ -2355,27 +2299,12 @@ packages:
resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==}
engines: {node: '>=0.1.90'}
- '@corex/eslint-config@4.0.43':
- resolution: {integrity: sha512-k8jaiCQfFvIB7pK5v4qvEQMJfUKpJxiYOMCbEm1qHSv53xwA0sMTdhd3q5HRfpyFsd8SHJBCCRYJEhARGApAWQ==}
-
- '@corex/jest-require-stub@2.6.148':
- resolution: {integrity: sha512-zplyHGcipOTRzuoFhJuVCsp9PBZv3vDwioB6WDIERVAw0yuM5AT4L5XtYkvBCEjqQNKApseDDjLNCQMFsMGKZw==}
-
- '@corex/jest@4.0.43':
- resolution: {integrity: sha512-XeOiHUpGRA5eI3a+7OvH9HIDalPBZbsqxb+PYpaWdpSxfA+nLnc7Q6ImYN+B5OLSWLqQXtmA7JjhNUHxt6IJCA==}
-
- '@corex/prettier@4.0.43':
- resolution: {integrity: sha512-rgeoQeoUOGKm5wdsO0ip9MUdeUc7lAqMKl7xm/b0BDvzh7roR6Zr3xIMOYCamefS0v3j7J0LGhh3pI6cgvg0wg==}
-
- '@corex/stylelint@3.0.611':
- resolution: {integrity: sha512-/4umcRBBhg9PI639s2sUCB8vb53t+eH+qkVbDBTBF9mZoMQmb5fE4vDIFl2RP2l4oGz5Yxc7sN3Br4tZ1B4sMA==}
+ '@corex/deepmerge@4.0.43':
+ resolution: {integrity: sha512-N8uEMrMPL0cu/bdboEWpQYb/0i2K5Qn8eCsxzOmxSggJbbQte7ljMRoXm917AbntqTGOzdTu+vP3KOOzoC70HQ==}
'@corex/tsconfig@4.0.43':
resolution: {integrity: sha512-kCb1okwoehFQIimqwVPrb1HZg5y8MEdfL7wRbScSDPJ1I4n15jDyDkB0UEPsjCvXcapFBKmV2UIO4uEVvylOTg==}
- '@corex/workspace@4.0.43':
- resolution: {integrity: sha512-YAcphn5UqN1nu0oafnnwXz8PC94wOwQwjHLjePWbGgD/t6ibuAA8mgURyj6BEWrKB5qVTZhoU/Y0Y6NT+fnHRg==}
-
'@csstools/color-helpers@5.1.0':
resolution: {integrity: sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==}
engines: {node: '>=18'}
@@ -2404,21 +2333,9 @@ packages:
resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==}
engines: {node: '>=18'}
- '@csstools/selector-specificity@2.2.0':
- resolution: {integrity: sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==}
- engines: {node: ^14 || ^16 || >=18}
- peerDependencies:
- postcss-selector-parser: ^6.0.10
-
- '@emnapi/core@1.9.1':
- resolution: {integrity: sha512-mukuNALVsoix/w1BJwFzwXBN/dHeejQtuVzcDsfOEsdpCumXb/E9j8w11h5S54tT1xhifGfbbSm/ICrObRb3KA==}
-
'@emnapi/runtime@1.8.1':
resolution: {integrity: sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==}
- '@emnapi/wasi-threads@1.2.0':
- resolution: {integrity: sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg==}
-
'@esbuild/aix-ppc64@0.25.12':
resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==}
engines: {node: '>=18'}
@@ -2609,10 +2526,6 @@ packages:
resolution: {integrity: sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==}
engines: {node: ^10.12.0 || >=12.0.0}
- '@eslint/eslintrc@2.1.4':
- resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
-
'@eslint/js@10.0.1':
resolution: {integrity: sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==}
engines: {node: ^20.19.0 || ^22.13.0 || >=24}
@@ -2622,10 +2535,6 @@ packages:
eslint:
optional: true
- '@eslint/js@8.57.1':
- resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
-
'@eslint/js@9.39.3':
resolution: {integrity: sha512-1B1VkCq6FuUNlQvlBYb+1jDu/gV297TIs/OeiaSR9l1H27SVW55ONE1e1Vp16NqP683+xEGzxYtv4XCiDPaQiw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -2687,11 +2596,6 @@ packages:
resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==}
engines: {node: '>=18.18.0'}
- '@humanwhocodes/config-array@0.13.0':
- resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==}
- engines: {node: '>=10.10.0'}
- deprecated: Use @eslint/config-array instead
-
'@humanwhocodes/config-array@0.5.0':
resolution: {integrity: sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==}
engines: {node: '>=10.10.0'}
@@ -2705,10 +2609,6 @@ packages:
resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==}
deprecated: Use @eslint/object-schema instead
- '@humanwhocodes/object-schema@2.0.3':
- resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==}
- deprecated: Use @eslint/object-schema instead
-
'@humanwhocodes/retry@0.4.3':
resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==}
engines: {node: '>=18.18'}
@@ -2916,23 +2816,10 @@ packages:
resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==}
engines: {node: '>=8'}
- '@jest/console@28.1.3':
- resolution: {integrity: sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==}
- engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
-
'@jest/console@29.7.0':
resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- '@jest/core@28.1.3':
- resolution: {integrity: sha512-CIKBrlaKOzA7YG19BEqCw3SLIsEwjZkeJzf5bdooVnW4bH5cktqe3JX+G2YV1aK5vP8N9na1IGWFzYaTp6k6NA==}
- engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
- peerDependencies:
- node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
- peerDependenciesMeta:
- node-notifier:
- optional: true
-
'@jest/core@29.7.0':
resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -2942,38 +2829,18 @@ packages:
node-notifier:
optional: true
- '@jest/diff-sequences@30.3.0':
- resolution: {integrity: sha512-cG51MVnLq1ecVUaQ3fr6YuuAOitHK1S4WUJHnsPFE/quQr33ADUx1FfrTCpMCRxvy0Yr9BThKpDjSlcTi91tMA==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
'@jest/environment@27.5.1':
resolution: {integrity: sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==}
engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
- '@jest/environment@28.1.3':
- resolution: {integrity: sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA==}
- engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
-
'@jest/environment@29.7.0':
resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- '@jest/expect-utils@28.1.3':
- resolution: {integrity: sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA==}
- engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
-
'@jest/expect-utils@29.7.0':
resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- '@jest/expect-utils@30.3.0':
- resolution: {integrity: sha512-j0+W5iQQ8hBh7tHZkTQv3q2Fh/M7Je72cIsYqC4OaktgtO7v1So9UTjp6uPBHIaB6beoF/RRsCgMJKvti0wADA==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
- '@jest/expect@28.1.3':
- resolution: {integrity: sha512-lzc8CpUbSoE4dqT0U+g1qODQjBRHPpCPXissXD4mS9+sWQdmmpeJ9zSH1rS1HEkrsMN0fb7nKrJ9giAR1d3wBw==}
- engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
-
'@jest/expect@29.7.0':
resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -2982,39 +2849,14 @@ packages:
resolution: {integrity: sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==}
engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
- '@jest/fake-timers@28.1.3':
- resolution: {integrity: sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw==}
- engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
-
'@jest/fake-timers@29.7.0':
resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- '@jest/get-type@30.1.0':
- resolution: {integrity: sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
- '@jest/globals@28.1.3':
- resolution: {integrity: sha512-XFU4P4phyryCXu1pbcqMO0GSQcYe1IsalYCDzRNyhetyeyxMcIxa11qPNDpVNLeretItNqEmYYQn1UYz/5x1NA==}
- engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
-
'@jest/globals@29.7.0':
resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- '@jest/pattern@30.0.1':
- resolution: {integrity: sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
- '@jest/reporters@28.1.3':
- resolution: {integrity: sha512-JuAy7wkxQZVNU/V6g9xKzCGC5LVXx9FDcABKsSXp5MiKPEE2144a/vXTEDoyzjUpZKfVwp08Wqg5A4WfTMAzjg==}
- engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
- peerDependencies:
- node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
- peerDependenciesMeta:
- node-notifier:
- optional: true
-
'@jest/reporters@29.7.0':
resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -3024,66 +2866,38 @@ packages:
node-notifier:
optional: true
- '@jest/schemas@28.1.3':
- resolution: {integrity: sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==}
- engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
-
'@jest/schemas@29.6.3':
resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- '@jest/schemas@30.0.5':
- resolution: {integrity: sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
- '@jest/source-map@28.1.2':
- resolution: {integrity: sha512-cV8Lx3BeStJb8ipPHnqVw/IM2VCMWO3crWZzYodSIkxXnRcXJipCdx1JCK0K5MsJJouZQTH73mzf4vgxRaH9ww==}
- engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
-
'@jest/source-map@29.6.3':
resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- '@jest/test-result@28.1.3':
- resolution: {integrity: sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==}
- engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
-
'@jest/test-result@29.7.0':
resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- '@jest/test-sequencer@28.1.3':
- resolution: {integrity: sha512-NIMPEqqa59MWnDi1kvXXpYbqsfQmSJsIbnd85mdVGkiDfQ9WQQTXOLsvISUfonmnBT+w85WEgneCigEEdHDFxw==}
- engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
-
'@jest/test-sequencer@29.7.0':
resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- '@jest/transform@28.1.3':
- resolution: {integrity: sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA==}
- engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
-
'@jest/transform@29.7.0':
resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ '@jest/types@26.6.2':
+ resolution: {integrity: sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==}
+ engines: {node: '>= 10.14.2'}
+
'@jest/types@27.5.1':
resolution: {integrity: sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==}
engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
- '@jest/types@28.1.3':
- resolution: {integrity: sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==}
- engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
-
'@jest/types@29.6.3':
resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- '@jest/types@30.3.0':
- resolution: {integrity: sha512-JHm87k7bA33hpBngtU8h6UBub/fqqA9uXfw+21j5Hmk7ooPHlboRNxHq0JcMtC+n8VJGP1mcfnD3Mk+XKe1oSw==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
'@jridgewell/gen-mapping@0.3.13':
resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
@@ -3222,15 +3036,12 @@ packages:
resolution: {integrity: sha512-bMVoAKhpjTOPHkW/lprDPwv5aD4R4C3Irt8vn+SKA9wudLe9COLxOhurrKRsxmZccUbWXRF7vukNeGUAj5P8kA==}
engines: {node: '>= 10'}
- '@napi-rs/wasm-runtime@0.2.12':
- resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==}
+ '@next/env@13.5.11':
+ resolution: {integrity: sha512-fbb2C7HChgM7CemdCY+y3N1n8pcTKdqtQLbC7/EQtPdLvlMUT9JX/dBYl8MMZAtYG4uVMyPFHXckb68q/NRwqg==}
'@next/env@16.2.0':
resolution: {integrity: sha512-OZIbODWWAi0epQRCRjNe1VO45LOFBzgiyqmTLzIqWq6u1wrxKnAyz1HH6tgY/Mc81YzIjRPoYsPAEr4QV4l9TA==}
- '@next/eslint-plugin-next@14.2.35':
- resolution: {integrity: sha512-Jw9A3ICz2183qSsqwi7fgq4SBPiNfmOLmTPXKvlnzstUwyvBrtySiY+8RXJweNAs9KThb1+bYhZh9XWcNOr2zQ==}
-
'@next/mdx@15.5.14':
resolution: {integrity: sha512-AZc3EHUfsQeKEEZoN+5GW0dvekIHLZ8nOBw2emT5GHs6KJlUYqg53a0bl62wH2lvmMbnsLh1lpZljOObwXekGQ==}
peerDependencies:
@@ -3293,9 +3104,6 @@ packages:
'@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.3':
resolution: {integrity: sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==}
- '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1':
- resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==}
-
'@nodelib/fs.scandir@2.1.5':
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
engines: {node: '>= 8'}
@@ -3308,10 +3116,6 @@ packages:
resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
engines: {node: '>= 8'}
- '@nolyfill/is-core-module@1.0.39':
- resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==}
- engines: {node: '>=12.4.0'}
-
'@open-draft/deferred-promise@2.2.0':
resolution: {integrity: sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==}
@@ -3321,9 +3125,6 @@ packages:
'@open-draft/until@2.1.0':
resolution: {integrity: sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==}
- '@opensourceframework/tsconfig@1.0.0':
- resolution: {integrity: sha512-T1fr6BMd+VnSdsjfU8s9SXHysC/ghPqAMX1eLF1uyNfRHTr2sKnUAXeputattGTN3IULlcHiKjFf8TI99M8BHg==}
-
'@panva/asn1.js@1.0.0':
resolution: {integrity: sha512-UdkG3mLEqXgnlKsWanWcgb6dOjUzJ+XC5f+aWw30qrtjxeNUSfKX1cd5FBzOaXQumoe9nIqeZUvrRJS03HCCtw==}
engines: {node: '>=10.13.0'}
@@ -3602,12 +3403,6 @@ packages:
cpu: [x64]
os: [win32]
- '@rtsao/scc@1.1.0':
- resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==}
-
- '@rushstack/eslint-patch@1.16.1':
- resolution: {integrity: sha512-TvZbIpeKqGQQ7X0zSCvPH9riMSFQFSggnfBjFZ1mEoILW+UuXCKwOoPcgjMwiUtRqFZ8jWhPJc4um14vC6I4ag==}
-
'@shikijs/core@3.23.0':
resolution: {integrity: sha512-NSWQz0riNb67xthdm5br6lAkvpDJRTgB36fxlo37ZzM2yq0PQFFzbd8psqC2XMPgCzo1fW6cVi18+ArJ44wqgA==}
@@ -3643,15 +3438,9 @@ packages:
'@sideway/pinpoint@2.0.0':
resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==}
- '@sinclair/typebox@0.24.51':
- resolution: {integrity: sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==}
-
'@sinclair/typebox@0.27.10':
resolution: {integrity: sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==}
- '@sinclair/typebox@0.34.49':
- resolution: {integrity: sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A==}
-
'@sindresorhus/is@4.6.0':
resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==}
engines: {node: '>=10'}
@@ -3668,9 +3457,6 @@ packages:
'@sinonjs/fake-timers@8.1.0':
resolution: {integrity: sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==}
- '@sinonjs/fake-timers@9.1.2':
- resolution: {integrity: sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==}
-
'@sqltools/formatter@1.2.5':
resolution: {integrity: sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw==}
@@ -3863,25 +3649,14 @@ packages:
'@tanstack/virtual-core@3.13.21':
resolution: {integrity: sha512-ww+fmLHyCbPSf7JNbWZP3g7wl6SdNo3ah5Aiw+0e9FDErkVHLKprYUrwTm7dF646FtEkN/KkAKPYezxpmvOjxw==}
- '@testing-library/dom@8.20.1':
- resolution: {integrity: sha512-/DiOQ5xBxgdYRC8LNk7U+RWat0S3qRLeIw3ZIkMQ9kkVlRmwD/Eg8k8CqIpD6GW7u20JIUOfMKbxtiLutpjQ4g==}
- engines: {node: '>=12'}
-
- '@testing-library/jest-dom@5.17.0':
- resolution: {integrity: sha512-ynmNeT7asXyH3aSVv4vvX4Rb+0qjOhdNHnO/3vuZNqPmhDpV/+rCSGwQ7bLcmU2cJ4dvoheIO85LQj0IbJHEtg==}
- engines: {node: '>=8', npm: '>=6', yarn: '>=1'}
+ '@testing-library/dom@7.31.2':
+ resolution: {integrity: sha512-3UqjCpey6HiTZT92vODYLPxTBWlM8ZOOjr3LX5F37/VRipW2M1kX6I/Cm4VXzteZqfGfagg8yXywpcOgQBlNsQ==}
+ engines: {node: '>=10'}
'@testing-library/jest-dom@6.9.1':
resolution: {integrity: sha512-zIcONa+hVtVSSep9UT3jZ5rizo2BsxgyDYU7WFD5eICBE7no3881HGeb/QkGfsJs6JTkY1aQhT7rIPC7e+0nnA==}
engines: {node: '>=14', npm: '>=6', yarn: '>=1'}
- '@testing-library/react@13.4.0':
- resolution: {integrity: sha512-sXOGON+WNTh3MLE9rve97ftaZukN3oNf2KjDy7YTx6hcTO2uuLHuCGynMDhFwGw/jYf4OJ2Qk0i4i79qMNNkyw==}
- engines: {node: '>=12'}
- peerDependencies:
- react: ^18.0.0
- react-dom: ^18.0.0
-
'@testing-library/react@16.3.2':
resolution: {integrity: sha512-XU5/SytQM+ykqMnAnvB2umaJNIOsLF3PVv//1Ew4CTcpz0/BRyy/af40qqrt7SjKpDdT1saBMc42CUok5gaw+g==}
engines: {node: '>=18'}
@@ -3917,11 +3692,8 @@ packages:
'@ts-morph/common@0.28.1':
resolution: {integrity: sha512-W74iWf7ILp1ZKNYXY5qbddNaml7e9Sedv5lvU1V8lftlitkc9Pq1A+jlH23ltDgWYeZFFEqGCD1Ies9hqu3O+g==}
- '@tybys/wasm-util@0.10.1':
- resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==}
-
- '@types/aria-query@5.0.4':
- resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==}
+ '@types/aria-query@4.2.2':
+ resolution: {integrity: sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==}
'@types/babel__core@7.20.5':
resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==}
@@ -4093,18 +3865,12 @@ packages:
'@types/jest-environment-puppeteer@5.0.3':
resolution: {integrity: sha512-vWGfeb+0TOPZy7+VscKURWzE5lzYjclSWLxtjVpDAYcjUv8arAS1av06xK3mpgeNCDVx7XvavD8Elq1a4w9wIA==}
- '@types/jest@30.0.0':
- resolution: {integrity: sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==}
-
'@types/jscodeshift@17.3.0':
resolution: {integrity: sha512-ogvGG8VQQqAQQ096uRh+d6tBHrYuZjsumHirKtvBa5qEyTMN3IQJ7apo+sw9lxaB/iKWIhbbLlF3zmAWk9XQIg==}
'@types/json-schema@7.0.15':
resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
- '@types/json5@0.0.29':
- resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
-
'@types/katex@0.16.8':
resolution: {integrity: sha512-trgaNyfU+Xh2Tc+ABIb44a5AYUpicB3uwirOioeOkNPPbmgRNtcWyDeeFRzjPZENO9Vq8gvVqfhaaXWLlevVwg==}
@@ -4117,9 +3883,6 @@ packages:
'@types/mdx@2.0.13':
resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==}
- '@types/minimist@1.2.5':
- resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==}
-
'@types/ms@2.1.0':
resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==}
@@ -4147,15 +3910,9 @@ packages:
'@types/nodemailer@6.4.23':
resolution: {integrity: sha512-aFV3/NsYFLSx9mbb5gtirBSXJnAlrusoKNuPbxsASWc7vrKLmIrTQRpdcxNcSFL3VW2A2XpeLEavwb2qMi6nlQ==}
- '@types/normalize-package-data@2.4.4':
- resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==}
-
'@types/parse-json@4.0.2':
resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==}
- '@types/prettier@2.7.3':
- resolution: {integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==}
-
'@types/puppeteer@5.4.7':
resolution: {integrity: sha512-JdGWZZYL0vKapXF4oQTC5hLVNfOgdPrqeZ1BiQnGk5cB7HeE91EWUiTdVSdQPobRN8rIcdffjiOgCYJ/S8QrnQ==}
@@ -4173,18 +3930,12 @@ packages:
'@types/resolve@1.20.2':
resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==}
- '@types/semver@7.7.1':
- resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==}
-
'@types/stack-utils@2.0.3':
resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==}
'@types/statuses@2.0.6':
resolution: {integrity: sha512-xMAgYwceFhRA2zY+XbEA7mxYbA093wdiW8Vu6gZPGWy9cmOyU9XesH1tNcEWsKFd5Vzrqx5T3D38PWx1FIIXkA==}
- '@types/testing-library__jest-dom@5.14.9':
- resolution: {integrity: sha512-FSYhIjFlfOpGSRyVoMBMuS3ws5ehFQODymf3vlI7U1K8c7PHwWwFY7VREfmsuzHSOnoKs/9/Y983ayOs7eRzqw==}
-
'@types/trusted-types@2.0.7':
resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==}
@@ -4203,6 +3954,9 @@ packages:
'@types/yargs-parser@21.0.3':
resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==}
+ '@types/yargs@15.0.20':
+ resolution: {integrity: sha512-KIkX+/GgfFitlASYCGoSF+T4XRXhOubJLhkLVtSfsRTe9jWMmuM2g28zQ41BtPTG7TRBb2xHW+LCNVE9QR/vsg==}
+
'@types/yargs@16.0.11':
resolution: {integrity: sha512-sbtvk8wDN+JvEdabmZExoW/HNr1cB7D/j4LT08rMiuikfA7m/JNJg7ATQcgzs34zHnoScDkY0ZRSl29Fkmk36g==}
@@ -4212,28 +3966,6 @@ packages:
'@types/yauzl@2.10.3':
resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==}
- '@typescript-eslint/eslint-plugin@5.62.0':
- resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- peerDependencies:
- '@typescript-eslint/parser': ^5.0.0
- eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
-
- '@typescript-eslint/eslint-plugin@6.21.0':
- resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==}
- engines: {node: ^16.0.0 || >=18.0.0}
- peerDependencies:
- '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha
- eslint: ^7.0.0 || ^8.0.0
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
-
'@typescript-eslint/eslint-plugin@8.56.1':
resolution: {integrity: sha512-Jz9ZztpB37dNC+HU2HI28Bs9QXpzCz+y/twHOwhyrIRdbuVDxSytJNDl6z/aAKlaRIwC7y8wJdkBv7FxYGgi0A==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -4250,32 +3982,6 @@ packages:
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/experimental-utils@5.62.0':
- resolution: {integrity: sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- peerDependencies:
- eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
-
- '@typescript-eslint/parser@5.62.0':
- resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- peerDependencies:
- eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
-
- '@typescript-eslint/parser@6.21.0':
- resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==}
- engines: {node: ^16.0.0 || >=18.0.0}
- peerDependencies:
- eslint: ^7.0.0 || ^8.0.0
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
-
'@typescript-eslint/parser@8.56.1':
resolution: {integrity: sha512-klQbnPAAiGYFyI02+znpBRLyjL4/BrBd0nyWkdC0s/6xFLkXYQ8OoRrSkqacS1ddVxf/LDyODIKbQ5TgKAf/Fg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -4302,14 +4008,6 @@ packages:
peerDependencies:
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/scope-manager@5.62.0':
- resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
-
- '@typescript-eslint/scope-manager@6.21.0':
- resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==}
- engines: {node: ^16.0.0 || >=18.0.0}
-
'@typescript-eslint/scope-manager@8.56.1':
resolution: {integrity: sha512-YAi4VDKcIZp0O4tz/haYKhmIDZFEUPOreKbfdAN3SzUDMcPhJ8QI99xQXqX+HoUVq8cs85eRKnD+rne2UAnj2w==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -4330,26 +4028,6 @@ packages:
peerDependencies:
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/type-utils@5.62.0':
- resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- peerDependencies:
- eslint: '*'
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
-
- '@typescript-eslint/type-utils@6.21.0':
- resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==}
- engines: {node: ^16.0.0 || >=18.0.0}
- peerDependencies:
- eslint: ^7.0.0 || ^8.0.0
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
-
'@typescript-eslint/type-utils@8.56.1':
resolution: {integrity: sha512-yB/7dxi7MgTtGhZdaHCemf7PuwrHMenHjmzgUW1aJpO+bBU43OycnM3Wn+DdvDO/8zzA9HlhaJ0AUGuvri4oGg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -4364,14 +4042,6 @@ packages:
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/types@5.62.0':
- resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
-
- '@typescript-eslint/types@6.21.0':
- resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==}
- engines: {node: ^16.0.0 || >=18.0.0}
-
'@typescript-eslint/types@8.56.1':
resolution: {integrity: sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -4380,24 +4050,6 @@ packages:
resolution: {integrity: sha512-dTLI8PEXhjUC7B9Kre+u0XznO696BhXcTlOn0/6kf1fHaQW8+VjJAVHJ3eTI14ZapTxdkOmc80HblPQLaEeJdg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@typescript-eslint/typescript-estree@5.62.0':
- resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- peerDependencies:
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
-
- '@typescript-eslint/typescript-estree@6.21.0':
- resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==}
- engines: {node: ^16.0.0 || >=18.0.0}
- peerDependencies:
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
-
'@typescript-eslint/typescript-estree@8.56.1':
resolution: {integrity: sha512-qzUL1qgalIvKWAf9C1HpvBjif+Vm6rcT5wZd4VoMb9+Km3iS3Cv9DY6dMRMDtPnwRAFyAi7YXJpTIEXLvdfPxg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -4410,18 +4062,6 @@ packages:
peerDependencies:
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/utils@5.62.0':
- resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- peerDependencies:
- eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
-
- '@typescript-eslint/utils@6.21.0':
- resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==}
- engines: {node: ^16.0.0 || >=18.0.0}
- peerDependencies:
- eslint: ^7.0.0 || ^8.0.0
-
'@typescript-eslint/utils@8.56.1':
resolution: {integrity: sha512-HPAVNIME3tABJ61siYlHzSWCGtOoeP2RTIaHXFMPqjrQKCGB9OgUVdiNgH7TJS2JNIQ5qQ4RsAUDuGaGme/KOA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -4436,14 +4076,6 @@ packages:
eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
typescript: '>=4.8.4 <6.0.0'
- '@typescript-eslint/visitor-keys@5.62.0':
- resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
-
- '@typescript-eslint/visitor-keys@6.21.0':
- resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==}
- engines: {node: ^16.0.0 || >=18.0.0}
-
'@typescript-eslint/visitor-keys@8.56.1':
resolution: {integrity: sha512-KiROIzYdEV85YygXw6BI/Dx4fnBlFQu6Mq4QE4MOH9fFnhohw6wX/OAvDY2/C+ut0I3RSPKenvZJIVYqJNkhEw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -4460,142 +4092,47 @@ packages:
'@ungap/structured-clone@1.3.0':
resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==}
- '@unrs/resolver-binding-android-arm-eabi@1.11.1':
- resolution: {integrity: sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==}
- cpu: [arm]
- os: [android]
-
- '@unrs/resolver-binding-android-arm64@1.11.1':
- resolution: {integrity: sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==}
- cpu: [arm64]
- os: [android]
-
- '@unrs/resolver-binding-darwin-arm64@1.11.1':
- resolution: {integrity: sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==}
- cpu: [arm64]
- os: [darwin]
+ '@upsetjs/venn.js@2.0.0':
+ resolution: {integrity: sha512-WbBhLrooyePuQ1VZxrJjtLvTc4NVfpOyKx0sKqioq9bX1C1m7Jgykkn8gLrtwumBioXIqam8DLxp88Adbue6Hw==}
- '@unrs/resolver-binding-darwin-x64@1.11.1':
- resolution: {integrity: sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==}
- cpu: [x64]
- os: [darwin]
+ '@vitejs/plugin-react@4.7.0':
+ resolution: {integrity: sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==}
+ engines: {node: ^14.18.0 || >=16.0.0}
+ peerDependencies:
+ vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0
- '@unrs/resolver-binding-freebsd-x64@1.11.1':
- resolution: {integrity: sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==}
- cpu: [x64]
- os: [freebsd]
+ '@vitejs/plugin-react@5.1.4':
+ resolution: {integrity: sha512-VIcFLdRi/VYRU8OL/puL7QXMYafHmqOnwTZY50U1JPlCNj30PxCMx65c494b1K9be9hX83KVt0+gTEwTWLqToA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ peerDependencies:
+ vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0
- '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1':
- resolution: {integrity: sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==}
- cpu: [arm]
- os: [linux]
+ '@vitest/coverage-v8@2.1.9':
+ resolution: {integrity: sha512-Z2cOr0ksM00MpEfyVE8KXIYPEcBFxdbLSs56L8PO0QQMxt/6bDj45uQfxoc96v05KW3clk7vvgP0qfDit9DmfQ==}
+ peerDependencies:
+ '@vitest/browser': 2.1.9
+ vitest: 2.1.9
+ peerDependenciesMeta:
+ '@vitest/browser':
+ optional: true
- '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1':
- resolution: {integrity: sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==}
- cpu: [arm]
- os: [linux]
+ '@vitest/coverage-v8@3.2.4':
+ resolution: {integrity: sha512-EyF9SXU6kS5Ku/U82E259WSnvg6c8KTjppUncuNdm5QHpe17mwREHnjDzozC8x9MZ0xfBUFSaLkRv4TMA75ALQ==}
+ peerDependencies:
+ '@vitest/browser': 3.2.4
+ vitest: 3.2.4
+ peerDependenciesMeta:
+ '@vitest/browser':
+ optional: true
- '@unrs/resolver-binding-linux-arm64-gnu@1.11.1':
- resolution: {integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==}
- cpu: [arm64]
- os: [linux]
+ '@vitest/expect@2.1.9':
+ resolution: {integrity: sha512-UJCIkTBenHeKT1TTlKMJWy1laZewsRIzYighyYiJKZreqtdxSos/S1t+ktRMQWu2CKqaarrkeszJx1cgC5tGZw==}
- '@unrs/resolver-binding-linux-arm64-musl@1.11.1':
- resolution: {integrity: sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==}
- cpu: [arm64]
- os: [linux]
+ '@vitest/expect@3.2.4':
+ resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==}
- '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1':
- resolution: {integrity: sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==}
- cpu: [ppc64]
- os: [linux]
-
- '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1':
- resolution: {integrity: sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==}
- cpu: [riscv64]
- os: [linux]
-
- '@unrs/resolver-binding-linux-riscv64-musl@1.11.1':
- resolution: {integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==}
- cpu: [riscv64]
- os: [linux]
-
- '@unrs/resolver-binding-linux-s390x-gnu@1.11.1':
- resolution: {integrity: sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==}
- cpu: [s390x]
- os: [linux]
-
- '@unrs/resolver-binding-linux-x64-gnu@1.11.1':
- resolution: {integrity: sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==}
- cpu: [x64]
- os: [linux]
-
- '@unrs/resolver-binding-linux-x64-musl@1.11.1':
- resolution: {integrity: sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==}
- cpu: [x64]
- os: [linux]
-
- '@unrs/resolver-binding-wasm32-wasi@1.11.1':
- resolution: {integrity: sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==}
- engines: {node: '>=14.0.0'}
- cpu: [wasm32]
-
- '@unrs/resolver-binding-win32-arm64-msvc@1.11.1':
- resolution: {integrity: sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==}
- cpu: [arm64]
- os: [win32]
-
- '@unrs/resolver-binding-win32-ia32-msvc@1.11.1':
- resolution: {integrity: sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==}
- cpu: [ia32]
- os: [win32]
-
- '@unrs/resolver-binding-win32-x64-msvc@1.11.1':
- resolution: {integrity: sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==}
- cpu: [x64]
- os: [win32]
-
- '@upsetjs/venn.js@2.0.0':
- resolution: {integrity: sha512-WbBhLrooyePuQ1VZxrJjtLvTc4NVfpOyKx0sKqioq9bX1C1m7Jgykkn8gLrtwumBioXIqam8DLxp88Adbue6Hw==}
-
- '@vitejs/plugin-react@4.7.0':
- resolution: {integrity: sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==}
- engines: {node: ^14.18.0 || >=16.0.0}
- peerDependencies:
- vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0
-
- '@vitejs/plugin-react@5.1.4':
- resolution: {integrity: sha512-VIcFLdRi/VYRU8OL/puL7QXMYafHmqOnwTZY50U1JPlCNj30PxCMx65c494b1K9be9hX83KVt0+gTEwTWLqToA==}
- engines: {node: ^20.19.0 || >=22.12.0}
- peerDependencies:
- vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0
-
- '@vitest/coverage-v8@2.1.9':
- resolution: {integrity: sha512-Z2cOr0ksM00MpEfyVE8KXIYPEcBFxdbLSs56L8PO0QQMxt/6bDj45uQfxoc96v05KW3clk7vvgP0qfDit9DmfQ==}
- peerDependencies:
- '@vitest/browser': 2.1.9
- vitest: 2.1.9
- peerDependenciesMeta:
- '@vitest/browser':
- optional: true
-
- '@vitest/coverage-v8@3.2.4':
- resolution: {integrity: sha512-EyF9SXU6kS5Ku/U82E259WSnvg6c8KTjppUncuNdm5QHpe17mwREHnjDzozC8x9MZ0xfBUFSaLkRv4TMA75ALQ==}
- peerDependencies:
- '@vitest/browser': 3.2.4
- vitest: 3.2.4
- peerDependenciesMeta:
- '@vitest/browser':
- optional: true
-
- '@vitest/expect@2.1.9':
- resolution: {integrity: sha512-UJCIkTBenHeKT1TTlKMJWy1laZewsRIzYighyYiJKZreqtdxSos/S1t+ktRMQWu2CKqaarrkeszJx1cgC5tGZw==}
-
- '@vitest/expect@3.2.4':
- resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==}
-
- '@vitest/expect@4.0.18':
- resolution: {integrity: sha512-8sCWUyckXXYvx4opfzVY03EOiYVxyNrHS5QxX3DAIi5dpJAAkyJezHCP77VMX4HKA2LDT/Jpfo8i2r5BE3GnQQ==}
+ '@vitest/expect@4.0.18':
+ resolution: {integrity: sha512-8sCWUyckXXYvx4opfzVY03EOiYVxyNrHS5QxX3DAIi5dpJAAkyJezHCP77VMX4HKA2LDT/Jpfo8i2r5BE3GnQQ==}
'@vitest/mocker@2.1.9':
resolution: {integrity: sha512-tVL6uJgoUdi6icpxmdrn5YNo3g3Dxv+IHJBr0GXHaEdTcw3F+cPKnsXFhli6nO+f/6SDKPHEK1UN+k+TQv0Ehg==}
@@ -4852,8 +4389,9 @@ packages:
argparse@2.0.1:
resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
- aria-query@5.1.3:
- resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==}
+ aria-query@4.2.2:
+ resolution: {integrity: sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==}
+ engines: {node: '>=6.0'}
aria-query@5.3.2:
resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==}
@@ -4866,10 +4404,6 @@ packages:
array-ify@1.0.0:
resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==}
- array-includes@3.1.9:
- resolution: {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==}
- engines: {node: '>= 0.4'}
-
array-iterate@2.0.1:
resolution: {integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==}
@@ -4877,41 +4411,14 @@ packages:
resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
engines: {node: '>=8'}
- array.prototype.findlast@1.2.5:
- resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==}
- engines: {node: '>= 0.4'}
-
- array.prototype.findlastindex@1.2.6:
- resolution: {integrity: sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==}
- engines: {node: '>= 0.4'}
-
- array.prototype.flat@1.3.3:
- resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==}
- engines: {node: '>= 0.4'}
-
- array.prototype.flatmap@1.3.3:
- resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==}
- engines: {node: '>= 0.4'}
-
- array.prototype.tosorted@1.1.4:
- resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==}
- engines: {node: '>= 0.4'}
-
arraybuffer.prototype.slice@1.0.4:
resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==}
engines: {node: '>= 0.4'}
- arrify@1.0.1:
- resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==}
- engines: {node: '>=0.10.0'}
-
assertion-error@2.0.1:
resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==}
engines: {node: '>=12'}
- ast-types-flow@0.0.8:
- resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==}
-
ast-types@0.13.4:
resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==}
engines: {node: '>=4'}
@@ -4966,10 +4473,6 @@ packages:
axios@1.13.5:
resolution: {integrity: sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q==}
- axobject-query@4.1.0:
- resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==}
- engines: {node: '>= 0.4'}
-
b4a@1.8.0:
resolution: {integrity: sha512-qRuSmNSkGQaHwNbM7J78Wwy+ghLEYF1zNrSeMxj4Kgw6y33O3mXcQ6Ie9fRvfU/YnxWkOchPXbaLb73TkIsfdg==}
peerDependencies:
@@ -4983,12 +4486,6 @@ packages:
peerDependencies:
'@babel/core': ^7.0.0-0
- babel-jest@28.1.3:
- resolution: {integrity: sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q==}
- engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
- peerDependencies:
- '@babel/core': ^7.8.0
-
babel-jest@29.7.0:
resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -5006,10 +4503,6 @@ packages:
resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==}
engines: {node: '>=8'}
- babel-plugin-jest-hoist@28.1.3:
- resolution: {integrity: sha512-Ys3tUKAmfnkRUpPdpa98eYrAR0nV+sSFUZZEGuQ2EbFd1y4SOLtD5QDNHAq+bb9a+bbXvYQC4b+ID/THIMcU6Q==}
- engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
-
babel-plugin-jest-hoist@29.6.3:
resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -5041,9 +4534,6 @@ packages:
babel-plugin-transform-async-to-promises@0.8.18:
resolution: {integrity: sha512-WpOrF76nUHijnNn10eBGOHZmXQC8JYRME9rOLxStOga7Av2VO53ehVFvVNImMksVtQuL2/7ZNxEgxnx7oo/3Hw==}
- babel-plugin-transform-react-remove-prop-types@0.4.24:
- resolution: {integrity: sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==}
-
babel-plugin-transform-replace-expressions@0.2.0:
resolution: {integrity: sha512-Eh1rRd9hWEYgkgoA3D0kGp7xJ/wgVshgsqmq60iC4HVWD+Lux+fNHSHBa2v1Hsv+dHflShC71qKhiH40OiPtDA==}
peerDependencies:
@@ -5054,12 +4544,6 @@ packages:
peerDependencies:
'@babel/core': ^7.0.0 || ^8.0.0-0
- babel-preset-jest@28.1.3:
- resolution: {integrity: sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A==}
- engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
- peerDependencies:
- '@babel/core': ^7.0.0
-
babel-preset-jest@29.6.3:
resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -5069,9 +4553,6 @@ packages:
babel-preset-preact@2.0.0:
resolution: {integrity: sha512-gqJCALE4XXEienLkzgAQ351XyoVHTIiZRAKjEJupK7cTVhFyovEuSrVoNrTNrUu3R78vAarjxkrR6j0vr+Rg8Q==}
- babel-preset-react-app@10.1.0:
- resolution: {integrity: sha512-f9B1xMdnkCIqe+2dHrJsoQFRz7reChaAHE/65SdaykPklQqhme2WaC08oD3is77x9ff98/9EazAKFDZv5rFEQg==}
-
bail@1.0.5:
resolution: {integrity: sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==}
@@ -5081,9 +4562,6 @@ packages:
balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
- balanced-match@2.0.0:
- resolution: {integrity: sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==}
-
balanced-match@4.0.4:
resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==}
engines: {node: 18 || 20 || >=22}
@@ -5105,19 +4583,22 @@ packages:
bare-buffer:
optional: true
- bare-os@3.8.0:
- resolution: {integrity: sha512-Dc9/SlwfxkXIGYhvMQNUtKaXCaGkZYGcd1vuNUUADVqzu4/vQfvnMkYYOUnt2VwQ2AqKr/8qAVFRtwETljgeFg==}
+ bare-os@3.8.4:
+ resolution: {integrity: sha512-4JboWUl7/2LhgU536tjUszzaVC8/WEWKtyX5crayvlN71ih8+O2SdvBhotQeDsuhhmPZmLCrPBJEcwVPhI/kkQ==}
engines: {bare: '>=1.14.0'}
bare-path@3.0.0:
resolution: {integrity: sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==}
- bare-stream@2.10.0:
- resolution: {integrity: sha512-DOPZF/DDcDruKDA43cOw6e9Quq5daua7ygcAwJE/pKJsRWhgSSemi7qVNGE5kyDIxIeN1533G/zfbvWX7Wcb9w==}
+ bare-stream@2.11.0:
+ resolution: {integrity: sha512-Y/+iQ49fL3rIn6w/AVxI/2+BRrpmzJvdWt5Jv8Za6Ngqc6V227c+pYjYYgLdpR3MwQ9ObVXD0ZrqoBztakM0rw==}
peerDependencies:
+ bare-abort-controller: '*'
bare-buffer: '*'
bare-events: '*'
peerDependenciesMeta:
+ bare-abort-controller:
+ optional: true
bare-buffer:
optional: true
bare-events:
@@ -5180,10 +4661,6 @@ packages:
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true
- bs-logger@0.2.6:
- resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==}
- engines: {node: '>= 6'}
-
bser@2.1.1:
resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==}
@@ -5246,10 +4723,6 @@ packages:
resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==}
engines: {node: '>= 6'}
- camelcase-keys@6.2.2:
- resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==}
- engines: {node: '>=8'}
-
camelcase@5.3.1:
resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==}
engines: {node: '>=6'}
@@ -5283,10 +4756,6 @@ packages:
resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
engines: {node: '>=4'}
- chalk@3.0.0:
- resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==}
- engines: {node: '>=8'}
-
chalk@4.1.2:
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
engines: {node: '>=10'}
@@ -5356,10 +4825,6 @@ packages:
resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==}
engines: {node: '>=8'}
- ci-info@4.4.0:
- resolution: {integrity: sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==}
- engines: {node: '>=8'}
-
cjs-module-lexer@1.4.3:
resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==}
@@ -5524,9 +4989,6 @@ packages:
confbox@0.1.8:
resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==}
- confusing-browser-globals@1.0.11:
- resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==}
-
consola@3.4.2:
resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==}
engines: {node: ^14.18.0 || >=16.10.0}
@@ -5535,9 +4997,6 @@ packages:
resolution: {integrity: sha512-ybvx76jTh08tpaYrYn/yd0uJNLt5yMrb1BphDe4WBredMlvPisvMghfpnJb6RmRNcqXeuhR6LfGZGewbkRm9yA==}
engines: {node: '>=10'}
- convert-source-map@1.9.0:
- resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==}
-
convert-source-map@2.0.0:
resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
@@ -5556,6 +5015,9 @@ packages:
core-js-compat@3.48.0:
resolution: {integrity: sha512-OM4cAF3D6VtH/WkLtWvyNC56EZVXsZdU3iqaMG2B4WvYrlqU831pc4UtG5yp0sE9z8Y02wVN7PjW5Zf9Gt0f1Q==}
+ core-js-pure@3.48.0:
+ resolution: {integrity: sha512-1slJgk89tWC51HQ1AEqG+s2VuwpTRr8ocu4n20QUcH1v9lAN0RXen0Q0AABa/DK1I7RrNWLucplOHMx8hfTGTw==}
+
cose-base@1.0.3:
resolution: {integrity: sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==}
@@ -5619,10 +5081,6 @@ packages:
peerDependencies:
postcss: ^8.0.9
- css-functions-list@3.3.3:
- resolution: {integrity: sha512-8HFEBPKhOpJPEPu70wJJetjKta86Gw9+CCyCnB3sui2qQfOvRyqBy4IKLKKAwdMpWb2lHXWk9Wb4Z6AmaUT1Pg==}
- engines: {node: '>=12'}
-
css-select@4.3.0:
resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==}
@@ -5864,9 +5322,6 @@ packages:
dagre-d3-es@7.0.14:
resolution: {integrity: sha512-P4rFMVq9ESWqmOgK+dlXvOtLwYg0i7u0HBGJER0LZDJT2VHIPAMZ/riPxqJceWMStH5+E61QxFra9kIS3AqdMg==}
- damerau-levenshtein@1.0.8:
- resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==}
-
data-uri-to-buffer@6.0.2:
resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==}
engines: {node: '>= 14'}
@@ -5897,14 +5352,6 @@ packages:
dayjs@1.11.19:
resolution: {integrity: sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==}
- debug@3.2.7:
- resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}
- peerDependencies:
- supports-color: '*'
- peerDependenciesMeta:
- supports-color:
- optional: true
-
debug@4.3.4:
resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
engines: {node: '>=6.0'}
@@ -5923,23 +5370,12 @@ packages:
supports-color:
optional: true
- decamelize-keys@1.1.1:
- resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==}
- engines: {node: '>=0.10.0'}
-
- decamelize@1.2.0:
- resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==}
- engines: {node: '>=0.10.0'}
-
decimal.js@10.6.0:
resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==}
decode-named-character-reference@1.3.0:
resolution: {integrity: sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==}
- dedent@0.7.0:
- resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==}
-
dedent@1.7.1:
resolution: {integrity: sha512-9JmrhGZpOlEgOLdQgSm0zxFaYoQon408V1v49aqTWuXENVlnCuY9JBZcXZiCsZQWDjTm5Qf/nIvAy77mXDAjEg==}
peerDependencies:
@@ -5952,10 +5388,6 @@ packages:
resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==}
engines: {node: '>=6'}
- deep-equal@2.2.3:
- resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==}
- engines: {node: '>= 0.4'}
-
deep-is@0.1.4:
resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
@@ -6023,10 +5455,6 @@ packages:
didyoumean@1.2.2:
resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
- diff-sequences@28.1.1:
- resolution: {integrity: sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==}
- engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
-
diff-sequences@29.6.3:
resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -6038,10 +5466,6 @@ packages:
dlv@1.1.3:
resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==}
- doctrine@2.1.0:
- resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==}
- engines: {node: '>=0.10.0'}
-
doctrine@3.0.0:
resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
engines: {node: '>=6.0.0'}
@@ -6117,10 +5541,6 @@ packages:
electron-to-chromium@1.5.302:
resolution: {integrity: sha512-sM6HAN2LyK82IyPBpznDRqlTQAtuSaO+ShzFiWTvoMJLHyZ+Y39r8VMfHzwbU8MVBzQ4Wdn85+wlZl2TLGIlwg==}
- emittery@0.10.2:
- resolution: {integrity: sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==}
- engines: {node: '>=12'}
-
emittery@0.13.1:
resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==}
engines: {node: '>=12'}
@@ -6193,13 +5613,6 @@ packages:
resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
engines: {node: '>= 0.4'}
- es-get-iterator@1.1.3:
- resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==}
-
- es-iterator-helpers@1.3.1:
- resolution: {integrity: sha512-zWwRvqWiuBPr0muUG/78cW3aHROFCNIQ3zpmYDpwdbnt2m+xlNyRWpHBpa2lJjSBit7BQ+RXA1iwbSmu5yJ/EQ==}
- engines: {node: '>= 0.4'}
-
es-module-lexer@1.7.0:
resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==}
@@ -6214,10 +5627,6 @@ packages:
resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==}
engines: {node: '>= 0.4'}
- es-shim-unscopables@1.1.0:
- resolution: {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==}
- engines: {node: '>= 0.4'}
-
es-to-primitive@1.3.0:
resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==}
engines: {node: '>= 0.4'}
@@ -6258,15 +5667,6 @@ packages:
engines: {node: '>=6.0'}
hasBin: true
- eslint-config-next@14.2.35:
- resolution: {integrity: sha512-BpLsv01UisH193WyT/1lpHqq5iJ/Orfz9h/NOOlAmTUq4GY349PextQ62K4XpnaM9supeiEn3TaOTeQO07gURg==}
- peerDependencies:
- eslint: ^7.23.0 || ^8.0.0
- typescript: '>=3.3.1'
- peerDependenciesMeta:
- typescript:
- optional: true
-
eslint-config-prettier@10.1.8:
resolution: {integrity: sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==}
hasBin: true
@@ -6279,97 +5679,6 @@ packages:
peerDependencies:
eslint: '>=7.0.0'
- eslint-config-react-app@7.0.1:
- resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==}
- engines: {node: '>=14.0.0'}
- peerDependencies:
- eslint: ^8.0.0
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
-
- eslint-import-resolver-node@0.3.9:
- resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==}
-
- eslint-import-resolver-typescript@3.10.1:
- resolution: {integrity: sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==}
- engines: {node: ^14.18.0 || >=16.0.0}
- peerDependencies:
- eslint: '*'
- eslint-plugin-import: '*'
- eslint-plugin-import-x: '*'
- peerDependenciesMeta:
- eslint-plugin-import:
- optional: true
- eslint-plugin-import-x:
- optional: true
-
- eslint-module-utils@2.12.1:
- resolution: {integrity: sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==}
- engines: {node: '>=4'}
- peerDependencies:
- '@typescript-eslint/parser': '*'
- eslint: '*'
- eslint-import-resolver-node: '*'
- eslint-import-resolver-typescript: '*'
- eslint-import-resolver-webpack: '*'
- peerDependenciesMeta:
- '@typescript-eslint/parser':
- optional: true
- eslint:
- optional: true
- eslint-import-resolver-node:
- optional: true
- eslint-import-resolver-typescript:
- optional: true
- eslint-import-resolver-webpack:
- optional: true
-
- eslint-plugin-flowtype@8.0.3:
- resolution: {integrity: sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==}
- engines: {node: '>=12.0.0'}
- peerDependencies:
- '@babel/plugin-syntax-flow': ^7.14.5
- '@babel/plugin-transform-react-jsx': ^7.14.9
- eslint: ^8.1.0
-
- eslint-plugin-import@2.32.0:
- resolution: {integrity: sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==}
- engines: {node: '>=4'}
- peerDependencies:
- '@typescript-eslint/parser': '*'
- eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9
- peerDependenciesMeta:
- '@typescript-eslint/parser':
- optional: true
-
- eslint-plugin-jest@25.7.0:
- resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==}
- engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
- peerDependencies:
- '@typescript-eslint/eslint-plugin': ^4.0.0 || ^5.0.0
- eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
- jest: '*'
- peerDependenciesMeta:
- '@typescript-eslint/eslint-plugin':
- optional: true
- jest:
- optional: true
-
- eslint-plugin-jest@26.9.0:
- resolution: {integrity: sha512-TWJxWGp1J628gxh2KhaH1H1paEdgE2J61BBF1I59c6xWeL5+D1BzMxGDN/nXAfX+aSkR5u80K+XhskK6Gwq9ng==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- peerDependencies:
- '@typescript-eslint/eslint-plugin': ^5.0.0
- eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
- jest: '*'
- peerDependenciesMeta:
- '@typescript-eslint/eslint-plugin':
- optional: true
- jest:
- optional: true
-
eslint-plugin-jest@29.15.0:
resolution: {integrity: sha512-ZCGr7vTH2WSo2hrK5oM2RULFmMruQ7W3cX7YfwoTiPfzTGTFBMmrVIz45jZHd++cGKj/kWf02li/RhTGcANJSA==}
engines: {node: ^20.12.0 || ^22.0.0 || >=24.0.0}
@@ -6386,55 +5695,10 @@ packages:
typescript:
optional: true
- eslint-plugin-jsx-a11y@6.10.2:
- resolution: {integrity: sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==}
- engines: {node: '>=4.0'}
- peerDependencies:
- eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9
-
- eslint-plugin-prettier@4.2.5:
- resolution: {integrity: sha512-9Ni+xgemM2IWLq6aXEpP2+V/V30GeA/46Ar629vcMqVPodFFWC9skHu/D1phvuqtS8bJCFnNf01/qcmqYEwNfg==}
- engines: {node: '>=12.0.0'}
- peerDependencies:
- eslint: '>=7.28.0'
- eslint-config-prettier: '*'
- prettier: '>=2.0.0'
- peerDependenciesMeta:
- eslint-config-prettier:
- optional: true
-
- eslint-plugin-react-hooks@4.6.2:
- resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==}
- engines: {node: '>=10'}
- peerDependencies:
- eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0
-
- eslint-plugin-react-hooks@5.0.0-canary-7118f5dd7-20230705:
- resolution: {integrity: sha512-AZYbMo/NW9chdL7vk6HQzQhT+PvTAEVqWk9ziruUoW2kAOcN5qNyelv70e0F1VNQAbvutOC9oc+xfWycI9FxDw==}
- engines: {node: '>=10'}
- peerDependencies:
- eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0
-
- eslint-plugin-react@7.37.5:
- resolution: {integrity: sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==}
- engines: {node: '>=4'}
- peerDependencies:
- eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7
-
- eslint-plugin-testing-library@5.11.1:
- resolution: {integrity: sha512-5eX9e1Kc2PqVRed3taaLnAAqPZGEX75C+M/rXzUAI3wIg/ZxzUm1OVAwfe/O+vE+6YXOLetSe9g5GKD2ecXipw==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'}
- peerDependencies:
- eslint: ^7.5.0 || ^8.0.0
-
eslint-scope@5.1.1:
resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==}
engines: {node: '>=8.0.0'}
- eslint-scope@7.2.2:
- resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
-
eslint-scope@9.1.1:
resolution: {integrity: sha512-GaUN0sWim5qc8KVErfPBWmc31LEsOkrUJbvJZV+xuL3u2phMUK4HIvXlWAakfC8W4nzlK+chPEAkYOYb5ZScIw==}
engines: {node: ^20.19.0 || ^22.13.0 || >=24}
@@ -6489,12 +5753,6 @@ packages:
deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options.
hasBin: true
- eslint@8.57.1:
- resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options.
- hasBin: true
-
esm@3.2.25:
resolution: {integrity: sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==}
engines: {node: '>=6'}
@@ -6507,10 +5765,6 @@ packages:
resolution: {integrity: sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==}
engines: {node: ^10.12.0 || >=12.0.0}
- espree@9.6.1:
- resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
-
esprima@4.0.1:
resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
engines: {node: '>=4'}
@@ -6610,18 +5864,10 @@ packages:
resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==}
engines: {node: '>=12.0.0'}
- expect@28.1.3:
- resolution: {integrity: sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g==}
- engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
-
expect@29.7.0:
resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- expect@30.3.0:
- resolution: {integrity: sha512-1zQrciTiQfRdo7qJM1uG4navm8DayFa2TgCSRlzUyNkhcJ6XUZF3hjnpkyr3VhAqPH7i/9GkG7Tv5abz6fqz0Q==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
extend-shallow@2.0.1:
resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==}
engines: {node: '>=0.10.0'}
@@ -6640,9 +5886,6 @@ packages:
fast-deep-equal@3.1.3:
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
- fast-diff@1.3.0:
- resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==}
-
fast-fifo@1.3.2:
resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==}
@@ -6659,13 +5902,12 @@ packages:
fast-uri@3.1.0:
resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==}
- fast-xml-parser@4.5.5:
- resolution: {integrity: sha512-cK9c5I/DwIOI7/Q7AlGN3DuTdwN61gwSfL8rvuVPK+0mcCNHHGxRrpiFtaZZRfRMJL3Gl8B2AFlBG6qXf03w9A==}
- hasBin: true
+ fast-xml-builder@1.1.4:
+ resolution: {integrity: sha512-f2jhpN4Eccy0/Uz9csxh3Nu6q4ErKxf0XIsasomfOihuSUa3/xw6w8dnOtCDgEItQFJG8KyXPzQXzcODDrrbOg==}
- fastest-levenshtein@1.0.16:
- resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==}
- engines: {node: '>= 4.9.1'}
+ fast-xml-parser@5.5.9:
+ resolution: {integrity: sha512-jldvxr1MC6rtiZKgrFnDSvT8xuH+eJqxqOBThUVjYrxssYTo1avZLGql5l0a0BAERR01CadYzZ83kVEkbyDg+g==}
+ hasBin: true
fastq@1.20.1:
resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==}
@@ -6945,12 +6187,6 @@ packages:
glob-to-regexp@0.4.1:
resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==}
- glob@10.3.10:
- resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==}
- engines: {node: '>=16 || 14 >=14.17'}
- deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
- hasBin: true
-
glob@10.5.0:
resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==}
deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
@@ -6974,18 +6210,10 @@ packages:
resolution: {integrity: sha512-JeXuCbvYzYXcwE6acL9V2bAOeSIGl4dD+iwLY9iUx2VBJJ80R18HCn+JCwHM9Oegdfya3lEkGCdaRkSyc10hDA==}
engines: {node: '>=0.10.0'}
- global-modules@2.0.0:
- resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==}
- engines: {node: '>=6'}
-
global-prefix@0.1.5:
resolution: {integrity: sha512-gOPiyxcD9dJGCEArAhF4Hd0BAqvAe/JzERP7tYumE4yIkmIedPUVXcJFWbV3/p/ovIIvKjkrTk+f1UVkq7vvbw==}
engines: {node: '>=0.10.0'}
- global-prefix@3.0.0:
- resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==}
- engines: {node: '>=6'}
-
globals@13.24.0:
resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==}
engines: {node: '>=8'}
@@ -7009,9 +6237,6 @@ packages:
resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
engines: {node: '>=10'}
- globjoin@0.1.4:
- resolution: {integrity: sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==}
-
globrex@0.1.2:
resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==}
@@ -7022,9 +6247,6 @@ packages:
graceful-fs@4.2.11:
resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
- graphemer@1.4.0:
- resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
-
graphql@16.13.1:
resolution: {integrity: sha512-gGgrVCoDKlIZ8fIqXBBb0pPKqDgki0Z/FSKNiQzSGj2uEYHr1tq5wmBegGwJx6QB5S5cM0khSBpi/JFHMCvsmQ==}
engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0}
@@ -7051,10 +6273,6 @@ packages:
resolution: {integrity: sha512-lMHQRRwIPyJ70HV0kkFT7jH/gXzSI7yDkQFe07E2flwmNDFoWUTRMKpW2sglsnpeA7b6S2TJPp98EbQxai8eaQ==}
engines: {node: '>=20.0.0'}
- hard-rejection@2.1.0:
- resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==}
- engines: {node: '>=6'}
-
has-ansi@2.0.0:
resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==}
engines: {node: '>=0.10.0'}
@@ -7148,10 +6366,6 @@ packages:
hosted-git-info@2.8.9:
resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==}
- hosted-git-info@4.1.0:
- resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==}
- engines: {node: '>=10'}
-
html-encoding-sniffer@4.0.0:
resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==}
engines: {node: '>=18'}
@@ -7159,10 +6373,6 @@ packages:
html-escaper@2.0.2:
resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==}
- html-tags@3.3.1:
- resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==}
- engines: {node: '>=8'}
-
html-void-elements@3.0.0:
resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==}
@@ -7252,10 +6462,6 @@ packages:
resolution: {integrity: sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==}
engines: {node: '>=8'}
- import-lazy@4.0.0:
- resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==}
- engines: {node: '>=8'}
-
import-local@3.2.0:
resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==}
engines: {node: '>=8'}
@@ -7312,10 +6518,6 @@ packages:
is-alphanumerical@2.0.1:
resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==}
- is-arguments@1.2.0:
- resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==}
- engines: {node: '>= 0.4'}
-
is-array-buffer@3.0.5:
resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==}
engines: {node: '>= 0.4'}
@@ -7343,9 +6545,6 @@ packages:
resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==}
engines: {node: '>=4'}
- is-bun-module@2.0.0:
- resolution: {integrity: sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==}
-
is-callable@1.2.7:
resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
engines: {node: '>= 0.4'}
@@ -7451,14 +6650,6 @@ packages:
resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==}
engines: {node: '>=8'}
- is-path-inside@3.0.3:
- resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
- engines: {node: '>=8'}
-
- is-plain-obj@1.1.0:
- resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==}
- engines: {node: '>=0.10.0'}
-
is-plain-obj@2.1.0:
resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==}
engines: {node: '>=8'}
@@ -7471,10 +6662,6 @@ packages:
resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==}
engines: {node: '>=0.10.0'}
- is-plain-object@5.0.0:
- resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==}
- engines: {node: '>=0.10.0'}
-
is-potential-custom-element-name@1.0.1:
resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==}
@@ -7591,14 +6778,6 @@ packages:
resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==}
engines: {node: '>=8'}
- iterator.prototype@1.1.5:
- resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==}
- engines: {node: '>= 0.4'}
-
- jackspeak@2.3.6:
- resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==}
- engines: {node: '>=14'}
-
jackspeak@3.4.3:
resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==}
@@ -7611,32 +6790,14 @@ packages:
engines: {node: '>=10'}
hasBin: true
- jest-changed-files@28.1.3:
- resolution: {integrity: sha512-esaOfUWJXk2nfZt9SPyC8gA1kNfdKLkQWyzsMlqq8msYSlNKfmZxfRgZn4Cd4MGVUF+7v6dBs0d5TOAKa7iIiA==}
- engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
-
jest-changed-files@29.7.0:
resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- jest-circus@28.1.3:
- resolution: {integrity: sha512-cZ+eS5zc79MBwt+IhQhiEp0OeBddpc1n8MBo1nMB8A7oPMKEO+Sre+wHaLJexQUj9Ya/8NOBY0RESUgYjB6fow==}
- engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
-
jest-circus@29.7.0:
resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- jest-cli@28.1.3:
- resolution: {integrity: sha512-roY3kvrv57Azn1yPgdTebPAXvdR2xfezaKKYzVxZ6It/5NCxzJym6tUI5P1zkdWhfUYkxEI9uZWcQdaFLo8mJQ==}
- engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
- hasBin: true
- peerDependencies:
- node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
- peerDependenciesMeta:
- node-notifier:
- optional: true
-
jest-cli@29.7.0:
resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -7647,18 +6808,6 @@ packages:
node-notifier:
optional: true
- jest-config@28.1.3:
- resolution: {integrity: sha512-MG3INjByJ0J4AsNBm7T3hsuxKQqFIiRo/AUqb1q9LRKI5UU6Aar9JHbr9Ivn1TVwfUD9KirRoM/T6u8XlcQPHQ==}
- engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
- peerDependencies:
- '@types/node': '*'
- ts-node: '>=9.0.0'
- peerDependenciesMeta:
- '@types/node':
- optional: true
- ts-node:
- optional: true
-
jest-config@29.7.0:
resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -7675,30 +6824,14 @@ packages:
resolution: {integrity: sha512-Zc/JB0IlNNrpXkhBw+h86cGrde/Mey52KvF+FER2eyrtYJTHObOwW7Iarxm3rPyTKby5+3Y2QZtl8pRz/5GCxg==}
engines: {node: '>=16'}
- jest-diff@28.1.3:
- resolution: {integrity: sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==}
- engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
-
jest-diff@29.7.0:
resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- jest-diff@30.3.0:
- resolution: {integrity: sha512-n3q4PDQjS4LrKxfWB3Z5KNk1XjXtZTBwQp71OP0Jo03Z6V60x++K5L8k6ZrW8MY8pOFylZvHM0zsjS1RqlHJZQ==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
- jest-docblock@28.1.1:
- resolution: {integrity: sha512-3wayBVNiOYx0cwAbl9rwm5kKFP8yHH3d/fkEaL02NPTkDojPtheGB7HZSFY4wzX+DxyrvhXz0KSCVksmCknCuA==}
- engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
-
jest-docblock@29.7.0:
resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- jest-each@28.1.3:
- resolution: {integrity: sha512-arT1z4sg2yABU5uogObVPvSlSMQlDA48owx07BDPAiasW0yYpYHYOo4HHLz9q0BVzDVU4hILFjzJw0So9aCL/g==}
- engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
-
jest-each@29.7.0:
resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -7707,10 +6840,6 @@ packages:
resolution: {integrity: sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==}
engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
- jest-environment-node@28.1.3:
- resolution: {integrity: sha512-ugP6XOhEpjAEhGYvp5Xj989ns5cB1K6ZdjBYuS30umT4CQEETaxSiPcZ/E1kFktX4GkrcM4qu07IIlDYX1gp+A==}
- engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
-
jest-environment-node@29.7.0:
resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -7719,78 +6848,38 @@ packages:
resolution: {integrity: sha512-t7+W4LUiPoOz+xpKREgnu6IElMuRthOWTkrThDZqVKPmLhwbK3yx7OCiX8xT1Pw/Cv5WnSoNhwtN7czdCC3fQg==}
engines: {node: '>=16'}
- jest-get-type@28.0.2:
- resolution: {integrity: sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==}
- engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
-
jest-get-type@29.6.3:
resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- jest-haste-map@28.1.3:
- resolution: {integrity: sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA==}
- engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
-
jest-haste-map@29.7.0:
resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- jest-junit@13.2.0:
- resolution: {integrity: sha512-B0XNlotl1rdsvFZkFfoa19mc634+rrd8E4Sskb92Bb8MmSXeWV9XJGUyctunZS1W410uAxcyYuPUGVnbcOH8cg==}
- engines: {node: '>=10.12.0'}
-
- jest-leak-detector@28.1.3:
- resolution: {integrity: sha512-WFVJhnQsiKtDEo5lG2mM0v40QWnBM+zMdHHyJs8AWZ7J0QZJS59MsyKeJHWhpBZBH32S48FOVvGyOFT1h0DlqA==}
- engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
-
jest-leak-detector@29.7.0:
resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- jest-matcher-utils@28.1.3:
- resolution: {integrity: sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==}
- engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
-
jest-matcher-utils@29.7.0:
resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- jest-matcher-utils@30.3.0:
- resolution: {integrity: sha512-HEtc9uFQgaUHkC7nLSlQL3Tph4Pjxt/yiPvkIrrDCt9jhoLIgxaubo1G+CFOnmHYMxHwwdaSN7mkIFs6ZK8OhA==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
jest-message-util@27.5.1:
resolution: {integrity: sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==}
engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
- jest-message-util@28.1.3:
- resolution: {integrity: sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==}
- engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
-
jest-message-util@29.7.0:
resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- jest-message-util@30.3.0:
- resolution: {integrity: sha512-Z/j4Bo+4ySJ+JPJN3b2Qbl9hDq3VrXmnjjGEWD/x0BCXeOXPTV1iZYYzl2X8c1MaCOL+ewMyNBcm88sboE6YWw==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
jest-mock@27.5.1:
resolution: {integrity: sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==}
engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
- jest-mock@28.1.3:
- resolution: {integrity: sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA==}
- engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
-
jest-mock@29.7.0:
resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- jest-mock@30.3.0:
- resolution: {integrity: sha512-OTzICK8CpE+t4ndhKrwlIdbM6Pn8j00lvmSmq5ejiO+KxukbLjgOflKWMn3KE34EZdQm5RqTuKj+5RIEniYhog==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
jest-pnp-resolver@1.2.3:
resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==}
engines: {node: '>=6'}
@@ -7806,54 +6895,26 @@ packages:
peerDependencies:
puppeteer: '>=19'
- jest-regex-util@28.0.2:
- resolution: {integrity: sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==}
- engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
-
jest-regex-util@29.6.3:
resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- jest-regex-util@30.0.1:
- resolution: {integrity: sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
- jest-resolve-dependencies@28.1.3:
- resolution: {integrity: sha512-qa0QO2Q0XzQoNPouMbCc7Bvtsem8eQgVPNkwn9LnS+R2n8DaVDPL/U1gngC0LTl1RYXJU0uJa2BMC2DbTfFrHA==}
- engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
-
jest-resolve-dependencies@29.7.0:
resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- jest-resolve@28.1.3:
- resolution: {integrity: sha512-Z1W3tTjE6QaNI90qo/BJpfnvpxtaFTFw5CDgwpyE/Kz8U/06N1Hjf4ia9quUhCh39qIGWF1ZuxFiBiJQwSEYKQ==}
- engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
-
jest-resolve@29.7.0:
resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- jest-runner@28.1.3:
- resolution: {integrity: sha512-GkMw4D/0USd62OVO0oEgjn23TM+YJa2U2Wu5zz9xsQB1MxWKDOlrnykPxnMsN0tnJllfLPinHTka61u0QhaxBA==}
- engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
-
jest-runner@29.7.0:
resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- jest-runtime@28.1.3:
- resolution: {integrity: sha512-NU+881ScBQQLc1JHG5eJGU7Ui3kLKrmwCPPtYsJtBykixrM2OhVQlpMmFWJjMyDfdkGgBMNjXCGB/ebzsgNGQw==}
- engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
-
jest-runtime@29.7.0:
resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- jest-snapshot@28.1.3:
- resolution: {integrity: sha512-4lzMgtiNlc3DU/8lZfmqxN3AYD6GGLbl+72rdBpXvcV+whX7mDrREzkPdp2RnmfIiWBg1YbuFSkXduF2JcafJg==}
- engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
-
jest-snapshot@29.7.0:
resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -7862,30 +6923,14 @@ packages:
resolution: {integrity: sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==}
engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
- jest-util@28.1.3:
- resolution: {integrity: sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==}
- engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
-
jest-util@29.7.0:
resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- jest-util@30.3.0:
- resolution: {integrity: sha512-/jZDa00a3Sz7rdyu55NLrQCIrbyIkbBxareejQI315f/i8HjYN+ZWsDLLpoQSiUIEIyZF/R8fDg3BmB8AtHttg==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
- jest-validate@28.1.3:
- resolution: {integrity: sha512-SZbOGBWEsaTxBGCOpsRWlXlvNkvTkY0XxRfh7zYmvd8uL5Qzyg0CHAXiXKROflh801quA6+/DsT4ODDthOC/OA==}
- engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
-
jest-validate@29.7.0:
resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- jest-watcher@28.1.3:
- resolution: {integrity: sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==}
- engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
-
jest-watcher@29.7.0:
resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -7898,24 +6943,10 @@ packages:
resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==}
engines: {node: '>= 10.13.0'}
- jest-worker@28.1.3:
- resolution: {integrity: sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==}
- engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
-
jest-worker@29.7.0:
resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
- jest@28.1.3:
- resolution: {integrity: sha512-N4GT5on8UkZgH0O5LUavMRV1EDEhNTL0KEfRmDIeZHSV7p2XgLoY9t9VDUgL6o+yfdgYHVxuz81G8oB9VG5uyA==}
- engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
- hasBin: true
- peerDependencies:
- node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0
- peerDependenciesMeta:
- node-notifier:
- optional: true
-
jest@29.7.0:
resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -8015,10 +7046,6 @@ packages:
json-stable-stringify-without-jsonify@1.0.1:
resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
- json5@1.0.2:
- resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==}
- hasBin: true
-
json5@2.2.3:
resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
engines: {node: '>=6'}
@@ -8038,10 +7065,6 @@ packages:
resolution: {integrity: sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==}
engines: {node: '>=12', npm: '>=6'}
- jsx-ast-utils@3.3.5:
- resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==}
- engines: {node: '>=4.0'}
-
jwa@2.0.1:
resolution: {integrity: sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==}
@@ -8070,20 +7093,10 @@ packages:
resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
engines: {node: '>=6'}
- known-css-properties@0.26.0:
- resolution: {integrity: sha512-5FZRzrZzNTBruuurWpvZnvP9pum+fe0HcK8z/ooo+U+Hmp4vtbyp1/QDsqmufirXy4egGzbaH/y2uCZf+6W5Kg==}
-
langium@4.2.1:
resolution: {integrity: sha512-zu9QWmjpzJcomzdJQAHgDVhLGq5bLosVak1KVa40NzQHXfqr4eAHupvnPOVXEoLkg6Ocefvf/93d//SB7du4YQ==}
engines: {node: '>=20.10.0', npm: '>=10.2.3'}
- language-subtag-registry@0.3.23:
- resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==}
-
- language-tags@1.0.9:
- resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==}
- engines: {node: '>=0.10'}
-
layout-base@1.0.2:
resolution: {integrity: sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==}
@@ -8364,16 +7377,12 @@ packages:
lru-cache@5.1.1:
resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
- lru-cache@6.0.0:
- resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
- engines: {node: '>=10'}
-
lru-cache@7.18.3:
resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==}
engines: {node: '>=12'}
- lucide-react@0.577.0:
- resolution: {integrity: sha512-4LjoFv2eEPwYDPg/CUdBJQSDfPyzXCRrVW1X7jrx/trgxnxkHFjnVZINbzvzxjN70dxychOfg+FTYwBiS3pQ5A==}
+ lucide-react@1.0.1:
+ resolution: {integrity: sha512-lih7tKEczCYOQjVEzpFuxEuNzlwf+1yhvlMlEkGWJM3va8Pugv8bYXc/pRtcjPncaP7k84X0Pt/71ufxvqEPtQ==}
peerDependencies:
react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0
@@ -8402,20 +7411,9 @@ packages:
resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==}
engines: {node: '>=10'}
- make-error@1.3.6:
- resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==}
-
makeerror@1.0.12:
resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==}
- map-obj@1.0.1:
- resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==}
- engines: {node: '>=0.10.0'}
-
- map-obj@4.3.0:
- resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==}
- engines: {node: '>=8'}
-
markdown-extensions@2.0.0:
resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==}
engines: {node: '>=16'}
@@ -8447,9 +7445,6 @@ packages:
resolution: {integrity: sha512-+LfG9Fik+OuI8SLwsiR02IVdjcnRCy5MufYLi0C3TdMT56L/pjB0alMVGgoWJF8pN9Rc7FESycZB9BMNWIid5w==}
deprecated: Version 4 replaces this package with the scoped package @mathjax/src
- mathml-tag-names@2.1.3:
- resolution: {integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==}
-
maxmin@2.1.0:
resolution: {integrity: sha512-NWlApBjW9az9qRPaeg7CX4sQBWwytqz32bIEo1PW9pRW+kBP9KLRfJO3UC+TV31EcQZEUq7eMzikC7zt3zPJcw==}
engines: {node: '>=0.12'}
@@ -8533,10 +7528,6 @@ packages:
resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==}
engines: {node: '>= 0.10.0'}
- meow@9.0.0:
- resolution: {integrity: sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==}
- engines: {node: '>=10'}
-
merge-stream@2.0.0:
resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
@@ -8703,18 +7694,10 @@ packages:
minimatch@3.1.5:
resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==}
- minimatch@9.0.3:
- resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==}
- engines: {node: '>=16 || 14 >=14.17'}
-
minimatch@9.0.9:
resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==}
engines: {node: '>=16 || 14 >=14.17'}
- minimist-options@4.1.0:
- resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==}
- engines: {node: '>= 6'}
-
minimist@1.2.8:
resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
@@ -8728,11 +7711,6 @@ packages:
mj-context-menu@0.6.1:
resolution: {integrity: sha512-7NO5s6n10TIV96d4g2uDpG7ZDpIhMh0QNfGdJw/W47JswFcosz457wqz/b5sAKvl12sxINGFCn80NZHKwxQEXA==}
- mkdirp@1.0.4:
- resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==}
- engines: {node: '>=10'}
- hasBin: true
-
mlly@1.8.0:
resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==}
@@ -8780,14 +7758,6 @@ packages:
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
- napi-postinstall@0.3.4:
- resolution: {integrity: sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==}
- engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
- hasBin: true
-
- natural-compare-lite@1.4.0:
- resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==}
-
natural-compare@1.4.0:
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
@@ -8869,10 +7839,6 @@ packages:
resolution: {integrity: sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw==}
engines: {node: '>=18'}
- node-exports-info@1.6.0:
- resolution: {integrity: sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw==}
- engines: {node: '>= 0.4'}
-
node-fetch@2.7.0:
resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==}
engines: {node: 4.x || >=6.0.0}
@@ -8898,10 +7864,6 @@ packages:
normalize-package-data@2.5.0:
resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==}
- normalize-package-data@3.0.3:
- resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==}
- engines: {node: '>=10'}
-
normalize-path@3.0.0:
resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
engines: {node: '>=0.10.0'}
@@ -8952,10 +7914,6 @@ packages:
resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==}
engines: {node: '>= 0.4'}
- object-is@1.1.6:
- resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==}
- engines: {node: '>= 0.4'}
-
object-keys@1.1.1:
resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
engines: {node: '>= 0.4'}
@@ -8964,22 +7922,6 @@ packages:
resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==}
engines: {node: '>= 0.4'}
- object.entries@1.1.9:
- resolution: {integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==}
- engines: {node: '>= 0.4'}
-
- object.fromentries@2.0.8:
- resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==}
- engines: {node: '>= 0.4'}
-
- object.groupby@1.0.3:
- resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==}
- engines: {node: '>= 0.4'}
-
- object.values@1.2.1:
- resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==}
- engines: {node: '>= 0.4'}
-
obug@2.1.1:
resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==}
@@ -9141,6 +8083,10 @@ packages:
resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
engines: {node: '>=8'}
+ path-expression-matcher@1.2.0:
+ resolution: {integrity: sha512-DwmPWeFn+tq7TiyJ2CxezCAirXjFxvaiD03npak3cRjlP9+OjTmSy1EpIrEbh+l6JgUundniloMLDQ/6VTdhLQ==}
+ engines: {node: '>=14.0.0'}
+
path-is-absolute@1.0.1:
resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
engines: {node: '>=0.10.0'}
@@ -9684,15 +8630,6 @@ packages:
peerDependencies:
postcss: ^8.1.0
- postcss-resolve-nested-selector@0.1.6:
- resolution: {integrity: sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==}
-
- postcss-safe-parser@6.0.0:
- resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==}
- engines: {node: '>=12.0'}
- peerDependencies:
- postcss: ^8.3.3
-
postcss-selector-parser@6.1.2:
resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==}
engines: {node: '>=4'}
@@ -9752,10 +8689,6 @@ packages:
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
engines: {node: '>= 0.8.0'}
- prettier-linter-helpers@1.0.1:
- resolution: {integrity: sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==}
- engines: {node: '>=6.0.0'}
-
prettier-plugin-packagejson@2.5.10:
resolution: {integrity: sha512-LUxATI5YsImIVSaaLJlJ3aE6wTD+nvots18U3GuQMJpUyClChaZlQrqx3dBnbhF20OnKWZyx8EgyZypQtBDtgQ==}
peerDependencies:
@@ -9787,14 +8720,14 @@ packages:
resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==}
engines: {node: '>=6'}
+ pretty-format@26.6.2:
+ resolution: {integrity: sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==}
+ engines: {node: '>= 10'}
+
pretty-format@27.5.1:
resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==}
engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
- pretty-format@28.1.3:
- resolution: {integrity: sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==}
- engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
-
pretty-format@29.7.0:
resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@@ -9802,10 +8735,6 @@ packages:
pretty-format@3.8.0:
resolution: {integrity: sha512-WuxUnVtlWL1OfZFQFuqvnvs6MiAGk9UNsBostyBOB0Is9wb5uRESevA6rnl/rkksXaGX3GzZhPup5d6Vp1nFew==}
- pretty-format@30.3.0:
- resolution: {integrity: sha512-oG4T3wCbfeuvljnyAzhBvpN45E8iOTXCU/TD3zXW80HA3dQ4ahdqMkWGiPWZvjpQwlbyHrPTWUAqUzGzv4l1JQ==}
- engines: {node: ^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0}
-
pretty-hrtime@1.0.3:
resolution: {integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==}
engines: {node: '>= 0.8'}
@@ -9894,10 +8823,6 @@ packages:
queue-microtask@1.2.3:
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
- quick-lru@4.0.1:
- resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==}
- engines: {node: '>=8'}
-
random-bytes@1.0.0:
resolution: {integrity: sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ==}
engines: {node: '>= 0.8'}
@@ -9979,18 +8904,10 @@ packages:
read-cache@1.0.0:
resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
- read-pkg-up@7.0.1:
- resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==}
- engines: {node: '>=8'}
-
read-pkg@3.0.0:
resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==}
engines: {node: '>=4'}
- read-pkg@5.2.0:
- resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==}
- engines: {node: '>=8'}
-
read-yaml-file@1.1.0:
resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==}
engines: {node: '>=6'}
@@ -10166,10 +9083,6 @@ packages:
resolve-pkg-maps@1.0.0:
resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
- resolve.exports@1.1.1:
- resolution: {integrity: sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==}
- engines: {node: '>=10'}
-
resolve.exports@2.0.3:
resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==}
engines: {node: '>=10'}
@@ -10179,11 +9092,6 @@ packages:
engines: {node: '>= 0.4'}
hasBin: true
- resolve@2.0.0-next.6:
- resolution: {integrity: sha512-3JmVl5hMGtJ3kMmB3zi3DL25KfkCEyy3Tw7Gmw7z5w8M9WlwoPFnIvwChzu1+cF3iaK3sp18hhPz8ANeimdJfA==}
- engines: {node: '>= 0.4'}
- hasBin: true
-
restore-cursor@5.1.0:
resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==}
engines: {node: '>=18'}
@@ -10584,9 +9492,6 @@ packages:
resolution: {integrity: sha512-ed7OK4e9ywpE7pgRMkMQmZDPKSVdm0oX5IEtZiKnFucSF0zu6c80GZBe38UqHuVhTWJ9xsKgSMjCG2bml86KvA==}
engines: {node: '>=14'}
- stable-hash@0.0.5:
- resolution: {integrity: sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==}
-
stable@0.1.8:
resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==}
deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility'
@@ -10629,9 +9534,6 @@ packages:
resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==}
engines: {node: '>=10'}
- string-natural-compare@3.0.1:
- resolution: {integrity: sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==}
-
string-width@4.2.3:
resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
engines: {node: '>=8'}
@@ -10648,10 +9550,6 @@ packages:
resolution: {integrity: sha512-6hJPQ8N0V0P3SNmP6h2J99RLuzrWz2gvT7VnK5tKvrNqJoyS9W4/Fb8mo31UiPvy00z7DQXkP2hnKBVav76thw==}
engines: {node: '>=20'}
- string.prototype.includes@2.0.1:
- resolution: {integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==}
- engines: {node: '>= 0.4'}
-
string.prototype.matchall@4.0.12:
resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==}
engines: {node: '>= 0.4'}
@@ -10660,9 +9558,6 @@ packages:
resolution: {integrity: sha512-XZpspuSB7vJWhvJc9DLSlrXl1mcA2BdoY5jjnS135ydXqLoqhs96JjDtCkjJEQHvfqZIp9hBuBMgI589peyx9Q==}
engines: {node: '>= 0.4'}
- string.prototype.repeat@1.0.0:
- resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==}
-
string.prototype.trim@1.2.10:
resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==}
engines: {node: '>= 0.4'}
@@ -10729,15 +9624,12 @@ packages:
strip-literal@3.1.0:
resolution: {integrity: sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==}
- strnum@1.1.2:
- resolution: {integrity: sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==}
+ strnum@2.2.2:
+ resolution: {integrity: sha512-DnR90I+jtXNSTXWdwrEy9FakW7UX+qUZg28gj5fk2vxxl7uS/3bpI4fjFYVmdK9etptYBPNkpahuQnEwhwECqA==}
style-inject@0.3.0:
resolution: {integrity: sha512-IezA2qp+vcdlhJaVm5SOdPPTUu0FCEqfNSli2vRuSIBbu5Nq5UvygTk/VzeCqfLz2Atj3dVII5QBKGZRZ0edzw==}
- style-search@0.1.0:
- resolution: {integrity: sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==}
-
style-to-js@1.1.21:
resolution: {integrity: sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==}
@@ -10769,25 +9661,6 @@ packages:
peerDependencies:
postcss: ^8.4.32
- stylelint-config-prettier@9.0.5:
- resolution: {integrity: sha512-U44lELgLZhbAD/xy/vncZ2Pq8sh2TnpiPvo38Ifg9+zeioR+LAkHu0i6YORIOxFafZoVg0xqQwex6e6F25S5XA==}
- engines: {node: '>= 12'}
- hasBin: true
- peerDependencies:
- stylelint: '>= 11.x < 15'
-
- stylelint-prettier@2.0.0:
- resolution: {integrity: sha512-jvT3G+9lopkeB0ARmDPszyfaOnvnIF+30QCjZxyt7E6fynI1T9mOKgYDNb9bXX17M7PXMZaX3j/26wqakjp1tw==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- peerDependencies:
- prettier: '>=2.0.0'
- stylelint: '>=14.0.0'
-
- stylelint@14.16.1:
- resolution: {integrity: sha512-ErlzR/T3hhbV+a925/gbfc3f3Fep9/bnspMiJPorfGEmcBbXdS+oo6LrVtoUZ/w9fqD6o6k7PtUlCOsCRdjX/A==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- hasBin: true
-
stylis@4.3.6:
resolution: {integrity: sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==}
@@ -10812,10 +9685,6 @@ packages:
resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==}
engines: {node: '>=10'}
- supports-hyperlinks@2.3.0:
- resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==}
- engines: {node: '>=8'}
-
supports-hyperlinks@3.2.0:
resolution: {integrity: sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==}
engines: {node: '>=14.18'}
@@ -10824,9 +9693,6 @@ packages:
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
engines: {node: '>= 0.4'}
- svg-tags@1.0.0:
- resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==}
-
svgo@2.8.2:
resolution: {integrity: sha512-TyzE4NVGLUFy+H/Uy4N6c3G0HEeprsVfge6Lmq+0FdQQ/zqoVYB62IsBZORsiL+o96s6ff/V6/3UQo/C0cgCAA==}
engines: {node: '>=10.13.0'}
@@ -10867,9 +9733,6 @@ packages:
engines: {node: '>=14.0.0'}
hasBin: true
- tailwindcss@4.2.1:
- resolution: {integrity: sha512-/tBrSQ36vCleJkAOsy9kbNTgaxvGbyOamC30PRePTQe/o1MFwEKHQk4Cn7BNGaPtjp+PuUrByJehM1hgxfq4sw==}
-
tailwindcss@4.2.2:
resolution: {integrity: sha512-KWBIxs1Xb6NoLdMVqhbhgwZf2PGBpPEiwOqgI4pFIYbNTfBXiKYyWoTsXgBQ9WFg/OlhnvHaY+AEpW7wSmFo2Q==}
@@ -10902,10 +9765,6 @@ packages:
resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==}
engines: {node: '>=8'}
- terminal-link@2.1.1:
- resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==}
- engines: {node: '>=8'}
-
terser-webpack-plugin@5.4.0:
resolution: {integrity: sha512-Bn5vxm48flOIfkdl5CaD2+1CiUVbonWQ3KQPyP7/EuIl9Gbzq/gQFOzaMFUEgVjB1396tcK0SG8XcNJ/2kDH8g==}
engines: {node: '>= 10.13.0'}
@@ -11060,22 +9919,12 @@ packages:
trim-lines@3.0.1:
resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==}
- trim-newlines@3.0.1:
- resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==}
- engines: {node: '>=8'}
-
trough@1.0.5:
resolution: {integrity: sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==}
trough@2.2.0:
resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==}
- ts-api-utils@1.4.3:
- resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==}
- engines: {node: '>=16'}
- peerDependencies:
- typescript: '>=4.2.0'
-
ts-api-utils@2.4.0:
resolution: {integrity: sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==}
engines: {node: '>=18.12'}
@@ -11089,33 +9938,9 @@ packages:
ts-interface-checker@0.1.13:
resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
- ts-jest@28.0.3:
- resolution: {integrity: sha512-HzgbEDQ2KgVtDmpXToqAcKTyGHdHsG23i/iUjfxji92G5eT09S1m9UHZd7csF0Bfgh9txM4JzwHnv7r1waFPlw==}
- engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0}
- hasBin: true
- peerDependencies:
- '@babel/core': '>=7.0.0-beta.0 <8'
- '@types/jest': ^27.0.0
- babel-jest: ^28.0.0
- esbuild: '*'
- jest: ^28.0.0
- typescript: '>=4.3'
- peerDependenciesMeta:
- '@babel/core':
- optional: true
- '@types/jest':
- optional: true
- babel-jest:
- optional: true
- esbuild:
- optional: true
-
ts-morph@27.0.2:
resolution: {integrity: sha512-fhUhgeljcrdZ+9DZND1De1029PrE+cMkIP7ooqkLRTrRLTqcki2AstsyJm0vRNbTbVCNJ0idGlbBrfqc7/nA8w==}
- tsconfig-paths@3.15.0:
- resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==}
-
tslib@1.14.1:
resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
@@ -11164,22 +9989,11 @@ packages:
typescript:
optional: true
- tsutils@3.21.0:
- resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
- engines: {node: '>= 6'}
- peerDependencies:
- typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta'
-
tsx@4.19.3:
resolution: {integrity: sha512-4H8vUNGNjQ4V2EOoGw005+c+dGuPSnhpPBPHBtsZdGZBk/iJb4kguGlPWaZTZ3q5nMtFOEsY0nRDlh9PJyd6SQ==}
engines: {node: '>=18.0.0'}
hasBin: true
- turbo-darwin-64@1.13.4:
- resolution: {integrity: sha512-A0eKd73R7CGnRinTiS7txkMElg+R5rKFp9HV7baDiEL4xTG1FIg/56Vm7A5RVgg8UNgG2qNnrfatJtb+dRmNdw==}
- cpu: [x64]
- os: [darwin]
-
turbo-darwin-64@2.8.10:
resolution: {integrity: sha512-A03fXh+B7S8mL3PbdhTd+0UsaGrhfyPkODvzBDpKRY7bbeac4MDFpJ7I+Slf2oSkCEeSvHKR7Z4U71uKRUfX7g==}
cpu: [x64]
@@ -11190,11 +10004,6 @@ packages:
cpu: [x64]
os: [darwin]
- turbo-darwin-arm64@1.13.4:
- resolution: {integrity: sha512-eG769Q0NF6/Vyjsr3mKCnkG/eW6dKMBZk6dxWOdrHfrg6QgfkBUk0WUUujzdtVPiUIvsh4l46vQrNVd9EOtbyA==}
- cpu: [arm64]
- os: [darwin]
-
turbo-darwin-arm64@2.8.10:
resolution: {integrity: sha512-sidzowgWL3s5xCHLeqwC9M3s9M0i16W1nuQF3Mc7fPHpZ+YPohvcbVFBB2uoRRHYZg6yBnwD4gyUHKTeXfwtXA==}
cpu: [arm64]
@@ -11205,11 +10014,6 @@ packages:
cpu: [arm64]
os: [darwin]
- turbo-linux-64@1.13.4:
- resolution: {integrity: sha512-Bq0JphDeNw3XEi+Xb/e4xoKhs1DHN7OoLVUbTIQz+gazYjigVZvtwCvgrZI7eW9Xo1eOXM2zw2u1DGLLUfmGkQ==}
- cpu: [x64]
- os: [linux]
-
turbo-linux-64@2.8.10:
resolution: {integrity: sha512-YK9vcpL3TVtqonB021XwgaQhY9hJJbKKUhLv16osxV0HkcQASQWUqR56yMge7puh6nxU67rQlTq1b7ksR1T3KA==}
cpu: [x64]
@@ -11220,11 +10024,6 @@ packages:
cpu: [x64]
os: [linux]
- turbo-linux-arm64@1.13.4:
- resolution: {integrity: sha512-BJcXw1DDiHO/okYbaNdcWN6szjXyHWx9d460v6fCHY65G8CyqGU3y2uUTPK89o8lq/b2C8NK0yZD+Vp0f9VoIg==}
- cpu: [arm64]
- os: [linux]
-
turbo-linux-arm64@2.8.10:
resolution: {integrity: sha512-3+j2tL0sG95iBJTm+6J8/45JsETQABPqtFyYjVjBbi6eVGdtNTiBmHNKrbvXRlQ3ZbUG75bKLaSSDHSEEN+btQ==}
cpu: [arm64]
@@ -11235,11 +10034,6 @@ packages:
cpu: [arm64]
os: [linux]
- turbo-windows-64@1.13.4:
- resolution: {integrity: sha512-OFFhXHOFLN7A78vD/dlVuuSSVEB3s9ZBj18Tm1hk3aW1HTWTuAw0ReN6ZNlVObZUHvGy8d57OAGGxf2bT3etQw==}
- cpu: [x64]
- os: [win32]
-
turbo-windows-64@2.8.10:
resolution: {integrity: sha512-hdeF5qmVY/NFgiucf8FW0CWJWtyT2QPm5mIsX0W1DXAVzqKVXGq+Zf+dg4EUngAFKjDzoBeN6ec2Fhajwfztkw==}
cpu: [x64]
@@ -11250,11 +10044,6 @@ packages:
cpu: [x64]
os: [win32]
- turbo-windows-arm64@1.13.4:
- resolution: {integrity: sha512-u5A+VOKHswJJmJ8o8rcilBfU5U3Y1TTAfP9wX8bFh8teYF1ghP0EhtMRLjhtp6RPa+XCxHHVA2CiC3gbh5eg5g==}
- cpu: [arm64]
- os: [win32]
-
turbo-windows-arm64@2.8.10:
resolution: {integrity: sha512-QGdr/Q8LWmj+ITMkSvfiz2glf0d7JG0oXVzGL3jxkGqiBI1zXFj20oqVY0qWi+112LO9SVrYdpHS0E/oGFrMbQ==}
cpu: [arm64]
@@ -11265,10 +10054,6 @@ packages:
cpu: [arm64]
os: [win32]
- turbo@1.13.4:
- resolution: {integrity: sha512-1q7+9UJABuBAHrcC4Sxp5lOqYS5mvxRrwa33wpIyM18hlOCpRD/fTJNxZ0vhbMcJmz15o9kkVm743mPn7p6jpQ==}
- hasBin: true
-
turbo@2.8.10:
resolution: {integrity: sha512-OxbzDES66+x7nnKGg2MwBA1ypVsZoDTLHpeaP4giyiHSixbsiTaMyeJqbEyvBdp5Cm28fc+8GG6RdQtic0ijwQ==}
hasBin: true
@@ -11297,10 +10082,6 @@ packages:
resolution: {integrity: sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==}
engines: {node: '>=10'}
- type-fest@0.18.1:
- resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==}
- engines: {node: '>=10'}
-
type-fest@0.20.2:
resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
engines: {node: '>=10'}
@@ -11309,14 +10090,6 @@ packages:
resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==}
engines: {node: '>=10'}
- type-fest@0.6.0:
- resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==}
- engines: {node: '>=8'}
-
- type-fest@0.8.1:
- resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==}
- engines: {node: '>=8'}
-
type-fest@5.4.4:
resolution: {integrity: sha512-JnTrzGu+zPV3aXIUhnyWJj4z/wigMsdYajGLIYakqyOW1nPllzXEJee0QQbHj+CTIQtXGlAjuK0UY+2xTyjVAw==}
engines: {node: '>=20'}
@@ -11540,9 +10313,6 @@ packages:
resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
engines: {node: '>= 10.0.0'}
- unrs-resolver@1.11.1:
- resolution: {integrity: sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==}
-
until-async@3.0.2:
resolution: {integrity: sha512-IiSk4HlzAMqTUseHHe3VhIGyuFmN90zMTpD3Z3y8jeQbzLIq500MVM7Jq2vUAnTKAFPJrqwkzr6PoTcPhGcOiw==}
@@ -12024,9 +10794,6 @@ packages:
resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==}
engines: {node: '>=18'}
- xml@1.0.1:
- resolution: {integrity: sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==}
-
xmlchars@2.2.0:
resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==}
@@ -12037,9 +10804,6 @@ packages:
yallist@3.1.1:
resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
- yallist@4.0.0:
- resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
-
yaml@1.10.2:
resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
engines: {node: '>= 6'}
@@ -12212,14 +10976,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@babel/eslint-parser@7.28.6(@babel/core@7.29.0)(eslint@8.57.1)':
- dependencies:
- '@babel/core': 7.29.0
- '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1
- eslint: 8.57.1
- eslint-visitor-keys: 2.1.0
- semver: 6.3.1
-
'@babel/generator@7.29.1':
dependencies:
'@babel/parser': 7.29.0
@@ -12400,72 +11156,16 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.29.0)':
- dependencies:
- '@babel/core': 7.29.0
- '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0)
- '@babel/helper-plugin-utils': 7.28.6
- transitivePeerDependencies:
- - supports-color
-
- '@babel/plugin-proposal-decorators@7.29.0(@babel/core@7.29.0)':
- dependencies:
- '@babel/core': 7.29.0
- '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0)
- '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-syntax-decorators': 7.28.6(@babel/core@7.29.0)
- transitivePeerDependencies:
- - supports-color
-
- '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.29.0)':
- dependencies:
- '@babel/core': 7.29.0
- '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.29.0)
-
- '@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.29.0)':
- dependencies:
- '@babel/core': 7.29.0
- '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.29.0)
-
'@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.29.0)':
dependencies:
'@babel/core': 7.29.0
'@babel/helper-plugin-utils': 7.28.6
'@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.29.0)
- '@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.29.0)':
- dependencies:
- '@babel/core': 7.29.0
- '@babel/helper-plugin-utils': 7.28.6
- '@babel/helper-skip-transparent-expression-wrappers': 7.27.1
- '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.29.0)
- transitivePeerDependencies:
- - supports-color
-
- '@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.29.0)':
- dependencies:
- '@babel/core': 7.29.0
- '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0)
- '@babel/helper-plugin-utils': 7.28.6
- transitivePeerDependencies:
- - supports-color
-
'@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.0)':
dependencies:
'@babel/core': 7.29.0
- '@babel/plugin-proposal-private-property-in-object@7.21.11(@babel/core@7.29.0)':
- dependencies:
- '@babel/core': 7.29.0
- '@babel/helper-annotate-as-pure': 7.27.3
- '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0)
- '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.29.0)
- transitivePeerDependencies:
- - supports-color
-
'@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.29.0)':
dependencies:
'@babel/core': 7.29.0
@@ -12486,11 +11186,6 @@ snapshots:
'@babel/core': 7.29.0
'@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-syntax-decorators@7.28.6(@babel/core@7.29.0)':
- dependencies:
- '@babel/core': 7.29.0
- '@babel/helper-plugin-utils': 7.28.6
-
'@babel/plugin-syntax-flow@7.28.6(@babel/core@7.29.0)':
dependencies:
'@babel/core': 7.29.0
@@ -13095,6 +11790,10 @@ snapshots:
pirates: 4.0.7
source-map-support: 0.5.21
+ '@babel/runtime-corejs3@7.29.0':
+ dependencies:
+ core-js-pure: 3.48.0
+
'@babel/runtime@7.28.6': {}
'@babel/template@7.28.6':
@@ -13424,94 +12123,9 @@ snapshots:
'@colors/colors@1.5.0':
optional: true
- '@corex/eslint-config@4.0.43(@babel/plugin-syntax-flow@7.28.6(@babel/core@7.29.0))(@babel/plugin-transform-react-jsx@7.28.6(@babel/core@7.29.0))(eslint-config-prettier@10.1.8(eslint@10.0.3(jiti@2.6.1)))(jest@28.1.3(@types/node@22.19.15)(node-notifier@8.0.2))(prettier@3.8.1)(typescript@4.9.5)':
- dependencies:
- '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(typescript@4.9.5)
- '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@4.9.5)
- eslint: 8.57.1
- eslint-config-react-app: 7.0.1(@babel/plugin-syntax-flow@7.28.6(@babel/core@7.29.0))(@babel/plugin-transform-react-jsx@7.28.6(@babel/core@7.29.0))(eslint@8.57.1)(jest@28.1.3(@types/node@22.19.15)(node-notifier@8.0.2))(typescript@4.9.5)
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)
- eslint-plugin-jest: 26.9.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(jest@28.1.3(@types/node@22.19.15)(node-notifier@8.0.2))(typescript@4.9.5)
- eslint-plugin-prettier: 4.2.5(eslint-config-prettier@10.1.8(eslint@10.0.3(jiti@2.6.1)))(eslint@8.57.1)(prettier@3.8.1)
- eslint-plugin-react: 7.37.5(eslint@8.57.1)
- eslint-plugin-react-hooks: 4.6.2(eslint@8.57.1)
- transitivePeerDependencies:
- - '@babel/plugin-syntax-flow'
- - '@babel/plugin-transform-react-jsx'
- - eslint-config-prettier
- - eslint-import-resolver-typescript
- - eslint-import-resolver-webpack
- - jest
- - prettier
- - supports-color
- - typescript
+ '@corex/deepmerge@4.0.43': {}
- '@corex/jest-require-stub@2.6.148': {}
-
- '@corex/jest@4.0.43(@babel/core@7.29.0)(@types/node@22.19.15)(@types/react@19.2.14)(babel-jest@28.1.3(@babel/core@7.29.0))(node-notifier@8.0.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@4.9.5)':
- dependencies:
- '@testing-library/jest-dom': 5.17.0
- '@testing-library/react': 13.4.0(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- jest: 28.1.3(@types/node@22.19.15)(node-notifier@8.0.2)
- jest-junit: 13.2.0
- ts-jest: 28.0.3(@babel/core@7.29.0)(babel-jest@28.1.3(@babel/core@7.29.0))(jest@28.1.3(@types/node@22.19.15)(node-notifier@8.0.2))(typescript@4.9.5)
- transitivePeerDependencies:
- - '@babel/core'
- - '@types/jest'
- - '@types/node'
- - '@types/react'
- - babel-jest
- - esbuild
- - node-notifier
- - react
- - react-dom
- - supports-color
- - ts-node
- - typescript
-
- '@corex/prettier@4.0.43':
- dependencies:
- prettier: 2.8.8
-
- '@corex/stylelint@3.0.611(prettier@3.8.1)':
- dependencies:
- stylelint: 14.16.1
- stylelint-config-prettier: 9.0.5(stylelint@14.16.1)
- stylelint-prettier: 2.0.0(prettier@3.8.1)(stylelint@14.16.1)
- transitivePeerDependencies:
- - prettier
- - supports-color
-
- '@corex/tsconfig@4.0.43': {}
-
- '@corex/workspace@4.0.43(@babel/core@7.29.0)(@babel/plugin-syntax-flow@7.28.6(@babel/core@7.29.0))(@babel/plugin-transform-react-jsx@7.28.6(@babel/core@7.29.0))(@types/node@22.19.15)(@types/react@19.2.14)(babel-jest@28.1.3(@babel/core@7.29.0))(eslint-config-prettier@10.1.8(eslint@10.0.3(jiti@2.6.1)))(jest@28.1.3(@types/node@22.19.15)(node-notifier@8.0.2))(node-notifier@8.0.2)(prettier@3.8.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
- dependencies:
- '@corex/eslint-config': 4.0.43(@babel/plugin-syntax-flow@7.28.6(@babel/core@7.29.0))(@babel/plugin-transform-react-jsx@7.28.6(@babel/core@7.29.0))(eslint-config-prettier@10.1.8(eslint@10.0.3(jiti@2.6.1)))(jest@28.1.3(@types/node@22.19.15)(node-notifier@8.0.2))(prettier@3.8.1)(typescript@4.9.5)
- '@corex/jest': 4.0.43(@babel/core@7.29.0)(@types/node@22.19.15)(@types/react@19.2.14)(babel-jest@28.1.3(@babel/core@7.29.0))(node-notifier@8.0.2)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@4.9.5)
- '@corex/jest-require-stub': 2.6.148
- '@corex/prettier': 4.0.43
- '@corex/stylelint': 3.0.611(prettier@3.8.1)
- '@corex/tsconfig': 4.0.43
- typescript: 4.9.5
- transitivePeerDependencies:
- - '@babel/core'
- - '@babel/plugin-syntax-flow'
- - '@babel/plugin-transform-react-jsx'
- - '@types/jest'
- - '@types/node'
- - '@types/react'
- - babel-jest
- - esbuild
- - eslint-config-prettier
- - eslint-import-resolver-typescript
- - eslint-import-resolver-webpack
- - jest
- - node-notifier
- - prettier
- - react
- - react-dom
- - supports-color
- - ts-node
+ '@corex/tsconfig@4.0.43': {}
'@csstools/color-helpers@5.1.0': {}
@@ -13533,26 +12147,11 @@ snapshots:
'@csstools/css-tokenizer@3.0.4': {}
- '@csstools/selector-specificity@2.2.0(postcss-selector-parser@6.1.2)':
- dependencies:
- postcss-selector-parser: 6.1.2
-
- '@emnapi/core@1.9.1':
- dependencies:
- '@emnapi/wasi-threads': 1.2.0
- tslib: 2.8.1
- optional: true
-
'@emnapi/runtime@1.8.1':
dependencies:
tslib: 2.8.1
optional: true
- '@emnapi/wasi-threads@1.2.0':
- dependencies:
- tslib: 2.8.1
- optional: true
-
'@esbuild/aix-ppc64@0.25.12':
optional: true
@@ -13641,11 +12240,6 @@ snapshots:
eslint: 10.0.3(jiti@2.6.1)
eslint-visitor-keys: 3.4.3
- '@eslint-community/eslint-utils@4.9.1(eslint@8.57.1)':
- dependencies:
- eslint: 8.57.1
- eslint-visitor-keys: 3.4.3
-
'@eslint-community/regexpp@4.12.2': {}
'@eslint/config-array@0.23.2':
@@ -13690,26 +12284,10 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@eslint/eslintrc@2.1.4':
- dependencies:
- ajv: 6.14.0
- debug: 4.4.3
- espree: 9.6.1
- globals: 13.24.0
- ignore: 5.3.2
- import-fresh: 3.3.1
- js-yaml: 4.1.1
- minimatch: 3.1.5
- strip-json-comments: 3.1.1
- transitivePeerDependencies:
- - supports-color
-
'@eslint/js@10.0.1(eslint@10.0.3(jiti@2.6.1))':
optionalDependencies:
eslint: 10.0.3(jiti@2.6.1)
- '@eslint/js@8.57.1': {}
-
'@eslint/js@9.39.3': {}
'@eslint/object-schema@3.0.3': {}
@@ -13776,14 +12354,6 @@ snapshots:
'@humanfs/core': 0.19.1
'@humanwhocodes/retry': 0.4.3
- '@humanwhocodes/config-array@0.13.0':
- dependencies:
- '@humanwhocodes/object-schema': 2.0.3
- debug: 4.4.3
- minimatch: 3.1.5
- transitivePeerDependencies:
- - supports-color
-
'@humanwhocodes/config-array@0.5.0':
dependencies:
'@humanwhocodes/object-schema': 1.2.1
@@ -13796,8 +12366,6 @@ snapshots:
'@humanwhocodes/object-schema@1.2.1': {}
- '@humanwhocodes/object-schema@2.0.3': {}
-
'@humanwhocodes/retry@0.4.3': {}
'@iconify/types@2.0.0': {}
@@ -14049,15 +12617,6 @@ snapshots:
'@istanbuljs/schema@0.1.3': {}
- '@jest/console@28.1.3':
- dependencies:
- '@jest/types': 28.1.3
- '@types/node': 22.19.15
- chalk: 4.1.2
- jest-message-util: 28.1.3
- jest-util: 28.1.3
- slash: 3.0.0
-
'@jest/console@29.7.0':
dependencies:
'@jest/types': 29.6.3
@@ -14067,43 +12626,6 @@ snapshots:
jest-util: 29.7.0
slash: 3.0.0
- '@jest/core@28.1.3(node-notifier@8.0.2)':
- dependencies:
- '@jest/console': 28.1.3
- '@jest/reporters': 28.1.3(node-notifier@8.0.2)
- '@jest/test-result': 28.1.3
- '@jest/transform': 28.1.3
- '@jest/types': 28.1.3
- '@types/node': 22.19.15
- ansi-escapes: 4.3.2
- chalk: 4.1.2
- ci-info: 3.9.0
- exit: 0.1.2
- graceful-fs: 4.2.11
- jest-changed-files: 28.1.3
- jest-config: 28.1.3(@types/node@22.19.15)
- jest-haste-map: 28.1.3
- jest-message-util: 28.1.3
- jest-regex-util: 28.0.2
- jest-resolve: 28.1.3
- jest-resolve-dependencies: 28.1.3
- jest-runner: 28.1.3
- jest-runtime: 28.1.3
- jest-snapshot: 28.1.3
- jest-util: 28.1.3
- jest-validate: 28.1.3
- jest-watcher: 28.1.3
- micromatch: 4.0.8
- pretty-format: 28.1.3
- rimraf: 3.0.2
- slash: 3.0.0
- strip-ansi: 6.0.1
- optionalDependencies:
- node-notifier: 8.0.2
- transitivePeerDependencies:
- - supports-color
- - ts-node
-
'@jest/core@29.7.0':
dependencies:
'@jest/console': 29.7.0
@@ -14177,8 +12699,6 @@ snapshots:
- supports-color
- ts-node
- '@jest/diff-sequences@30.3.0': {}
-
'@jest/environment@27.5.1':
dependencies:
'@jest/fake-timers': 27.5.1
@@ -14186,13 +12706,6 @@ snapshots:
'@types/node': 22.19.15
jest-mock: 27.5.1
- '@jest/environment@28.1.3':
- dependencies:
- '@jest/fake-timers': 28.1.3
- '@jest/types': 28.1.3
- '@types/node': 22.19.15
- jest-mock: 28.1.3
-
'@jest/environment@29.7.0':
dependencies:
'@jest/fake-timers': 29.7.0
@@ -14200,25 +12713,10 @@ snapshots:
'@types/node': 22.19.15
jest-mock: 29.7.0
- '@jest/expect-utils@28.1.3':
- dependencies:
- jest-get-type: 28.0.2
-
'@jest/expect-utils@29.7.0':
dependencies:
jest-get-type: 29.6.3
- '@jest/expect-utils@30.3.0':
- dependencies:
- '@jest/get-type': 30.1.0
-
- '@jest/expect@28.1.3':
- dependencies:
- expect: 28.1.3
- jest-snapshot: 28.1.3
- transitivePeerDependencies:
- - supports-color
-
'@jest/expect@29.7.0':
dependencies:
expect: 29.7.0
@@ -14235,15 +12733,6 @@ snapshots:
jest-mock: 27.5.1
jest-util: 27.5.1
- '@jest/fake-timers@28.1.3':
- dependencies:
- '@jest/types': 28.1.3
- '@sinonjs/fake-timers': 9.1.2
- '@types/node': 22.19.15
- jest-message-util: 28.1.3
- jest-mock: 28.1.3
- jest-util: 28.1.3
-
'@jest/fake-timers@29.7.0':
dependencies:
'@jest/types': 29.6.3
@@ -14253,16 +12742,6 @@ snapshots:
jest-mock: 29.7.0
jest-util: 29.7.0
- '@jest/get-type@30.1.0': {}
-
- '@jest/globals@28.1.3':
- dependencies:
- '@jest/environment': 28.1.3
- '@jest/expect': 28.1.3
- '@jest/types': 28.1.3
- transitivePeerDependencies:
- - supports-color
-
'@jest/globals@29.7.0':
dependencies:
'@jest/environment': 29.7.0
@@ -14272,43 +12751,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@jest/pattern@30.0.1':
- dependencies:
- '@types/node': 22.19.15
- jest-regex-util: 30.0.1
-
- '@jest/reporters@28.1.3(node-notifier@8.0.2)':
- dependencies:
- '@bcoe/v8-coverage': 0.2.3
- '@jest/console': 28.1.3
- '@jest/test-result': 28.1.3
- '@jest/transform': 28.1.3
- '@jest/types': 28.1.3
- '@jridgewell/trace-mapping': 0.3.31
- '@types/node': 22.19.15
- chalk: 4.1.2
- collect-v8-coverage: 1.0.3
- exit: 0.1.2
- glob: 7.2.3
- graceful-fs: 4.2.11
- istanbul-lib-coverage: 3.2.2
- istanbul-lib-instrument: 5.2.1
- istanbul-lib-report: 3.0.1
- istanbul-lib-source-maps: 4.0.1
- istanbul-reports: 3.2.0
- jest-message-util: 28.1.3
- jest-util: 28.1.3
- jest-worker: 28.1.3
- slash: 3.0.0
- string-length: 4.0.2
- strip-ansi: 6.0.1
- terminal-link: 2.1.1
- v8-to-istanbul: 9.3.0
- optionalDependencies:
- node-notifier: 8.0.2
- transitivePeerDependencies:
- - supports-color
-
'@jest/reporters@29.7.0(node-notifier@8.0.2)':
dependencies:
'@bcoe/v8-coverage': 0.2.3
@@ -14340,37 +12782,16 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@jest/schemas@28.1.3':
- dependencies:
- '@sinclair/typebox': 0.24.51
-
'@jest/schemas@29.6.3':
dependencies:
'@sinclair/typebox': 0.27.10
- '@jest/schemas@30.0.5':
- dependencies:
- '@sinclair/typebox': 0.34.49
-
- '@jest/source-map@28.1.2':
- dependencies:
- '@jridgewell/trace-mapping': 0.3.31
- callsites: 3.1.0
- graceful-fs: 4.2.11
-
'@jest/source-map@29.6.3':
dependencies:
'@jridgewell/trace-mapping': 0.3.31
callsites: 3.1.0
graceful-fs: 4.2.11
- '@jest/test-result@28.1.3':
- dependencies:
- '@jest/console': 28.1.3
- '@jest/types': 28.1.3
- '@types/istanbul-lib-coverage': 2.0.6
- collect-v8-coverage: 1.0.3
-
'@jest/test-result@29.7.0':
dependencies:
'@jest/console': 29.7.0
@@ -14378,13 +12799,6 @@ snapshots:
'@types/istanbul-lib-coverage': 2.0.6
collect-v8-coverage: 1.0.3
- '@jest/test-sequencer@28.1.3':
- dependencies:
- '@jest/test-result': 28.1.3
- graceful-fs: 4.2.11
- jest-haste-map: 28.1.3
- slash: 3.0.0
-
'@jest/test-sequencer@29.7.0':
dependencies:
'@jest/test-result': 29.7.0
@@ -14392,26 +12806,6 @@ snapshots:
jest-haste-map: 29.7.0
slash: 3.0.0
- '@jest/transform@28.1.3':
- dependencies:
- '@babel/core': 7.29.0
- '@jest/types': 28.1.3
- '@jridgewell/trace-mapping': 0.3.31
- babel-plugin-istanbul: 6.1.1
- chalk: 4.1.2
- convert-source-map: 1.9.0
- fast-json-stable-stringify: 2.1.0
- graceful-fs: 4.2.11
- jest-haste-map: 28.1.3
- jest-regex-util: 28.0.2
- jest-util: 28.1.3
- micromatch: 4.0.8
- pirates: 4.0.7
- slash: 3.0.0
- write-file-atomic: 4.0.2
- transitivePeerDependencies:
- - supports-color
-
'@jest/transform@29.7.0':
dependencies:
'@babel/core': 7.29.0
@@ -14432,21 +12826,20 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@jest/types@27.5.1':
+ '@jest/types@26.6.2':
dependencies:
'@types/istanbul-lib-coverage': 2.0.6
'@types/istanbul-reports': 3.0.4
'@types/node': 22.19.15
- '@types/yargs': 16.0.11
+ '@types/yargs': 15.0.20
chalk: 4.1.2
- '@jest/types@28.1.3':
+ '@jest/types@27.5.1':
dependencies:
- '@jest/schemas': 28.1.3
'@types/istanbul-lib-coverage': 2.0.6
'@types/istanbul-reports': 3.0.4
'@types/node': 22.19.15
- '@types/yargs': 17.0.35
+ '@types/yargs': 16.0.11
chalk: 4.1.2
'@jest/types@29.6.3':
@@ -14458,16 +12851,6 @@ snapshots:
'@types/yargs': 17.0.35
chalk: 4.1.2
- '@jest/types@30.3.0':
- dependencies:
- '@jest/pattern': 30.0.1
- '@jest/schemas': 30.0.5
- '@types/istanbul-lib-coverage': 2.0.6
- '@types/istanbul-reports': 3.0.4
- '@types/node': 22.19.15
- '@types/yargs': 17.0.35
- chalk: 4.1.2
-
'@jridgewell/gen-mapping@0.3.13':
dependencies:
'@jridgewell/sourcemap-codec': 1.5.5
@@ -14631,19 +13014,10 @@ snapshots:
'@napi-rs/simple-git-win32-ia32-msvc': 0.1.22
'@napi-rs/simple-git-win32-x64-msvc': 0.1.22
- '@napi-rs/wasm-runtime@0.2.12':
- dependencies:
- '@emnapi/core': 1.9.1
- '@emnapi/runtime': 1.8.1
- '@tybys/wasm-util': 0.10.1
- optional: true
+ '@next/env@13.5.11': {}
'@next/env@16.2.0': {}
- '@next/eslint-plugin-next@14.2.35':
- dependencies:
- glob: 10.3.10
-
'@next/mdx@15.5.14(@mdx-js/react@3.1.1(@types/react@19.2.14)(react@18.3.1))':
dependencies:
source-map: 0.7.6
@@ -14677,10 +13051,6 @@ snapshots:
'@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.3':
optional: true
- '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1':
- dependencies:
- eslint-scope: 5.1.1
-
'@nodelib/fs.scandir@2.1.5':
dependencies:
'@nodelib/fs.stat': 2.0.5
@@ -14693,8 +13063,6 @@ snapshots:
'@nodelib/fs.scandir': 2.1.5
fastq: 1.20.1
- '@nolyfill/is-core-module@1.0.39': {}
-
'@open-draft/deferred-promise@2.2.0': {}
'@open-draft/logger@0.3.0':
@@ -14704,8 +13072,6 @@ snapshots:
'@open-draft/until@2.1.0': {}
- '@opensourceframework/tsconfig@1.0.0': {}
-
'@panva/asn1.js@1.0.0': {}
'@pkgjs/parseargs@0.11.0':
@@ -14953,10 +13319,6 @@ snapshots:
'@rollup/rollup-win32-x64-msvc@4.59.0':
optional: true
- '@rtsao/scc@1.1.0': {}
-
- '@rushstack/eslint-patch@1.16.1': {}
-
'@shikijs/core@3.23.0':
dependencies:
'@shikijs/types': 3.23.0
@@ -15007,12 +13369,8 @@ snapshots:
'@sideway/pinpoint@2.0.0': {}
- '@sinclair/typebox@0.24.51': {}
-
'@sinclair/typebox@0.27.10': {}
- '@sinclair/typebox@0.34.49': {}
-
'@sindresorhus/is@4.6.0': {}
'@sinonjs/commons@1.8.6':
@@ -15031,10 +13389,6 @@ snapshots:
dependencies:
'@sinonjs/commons': 1.8.6
- '@sinonjs/fake-timers@9.1.2':
- dependencies:
- '@sinonjs/commons': 1.8.6
-
'@sqltools/formatter@1.2.5': {}
'@standard-schema/spec@1.1.0': {}
@@ -15186,28 +13540,16 @@ snapshots:
'@tanstack/virtual-core@3.13.21': {}
- '@testing-library/dom@8.20.1':
+ '@testing-library/dom@7.31.2':
dependencies:
'@babel/code-frame': 7.29.0
'@babel/runtime': 7.28.6
- '@types/aria-query': 5.0.4
- aria-query: 5.1.3
+ '@types/aria-query': 4.2.2
+ aria-query: 4.2.2
chalk: 4.1.2
dom-accessibility-api: 0.5.16
lz-string: 1.5.0
- pretty-format: 27.5.1
-
- '@testing-library/jest-dom@5.17.0':
- dependencies:
- '@adobe/css-tools': 4.4.4
- '@babel/runtime': 7.28.6
- '@types/testing-library__jest-dom': 5.14.9
- aria-query: 5.3.2
- chalk: 3.0.0
- css.escape: 1.5.1
- dom-accessibility-api: 0.5.16
- lodash: 4.17.23
- redent: 3.0.0
+ pretty-format: 26.6.2
'@testing-library/jest-dom@6.9.1':
dependencies:
@@ -15218,29 +13560,19 @@ snapshots:
picocolors: 1.1.1
redent: 3.0.0
- '@testing-library/react@13.4.0(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
- dependencies:
- '@babel/runtime': 7.28.6
- '@testing-library/dom': 8.20.1
- '@types/react-dom': 19.2.3(@types/react@19.2.14)
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
- transitivePeerDependencies:
- - '@types/react'
-
- '@testing-library/react@16.3.2(@testing-library/dom@8.20.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
+ '@testing-library/react@16.3.2(@testing-library/dom@7.31.2)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
dependencies:
'@babel/runtime': 7.28.6
- '@testing-library/dom': 8.20.1
+ '@testing-library/dom': 7.31.2
react: 19.2.4
react-dom: 19.2.4(react@19.2.4)
optionalDependencies:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
- '@testing-library/user-event@14.6.1(@testing-library/dom@8.20.1)':
+ '@testing-library/user-event@14.6.1(@testing-library/dom@7.31.2)':
dependencies:
- '@testing-library/dom': 8.20.1
+ '@testing-library/dom': 7.31.2
'@theguild/remark-mermaid@0.3.0(react@18.3.1)':
dependencies:
@@ -15261,12 +13593,7 @@ snapshots:
path-browserify: 1.0.1
tinyglobby: 0.2.15
- '@tybys/wasm-util@0.10.1':
- dependencies:
- tslib: 2.8.1
- optional: true
-
- '@types/aria-query@5.0.4': {}
+ '@types/aria-query@4.2.2': {}
'@types/babel__core@7.20.5':
dependencies:
@@ -15479,11 +13806,6 @@ snapshots:
'@types/puppeteer': 5.4.7
jest-environment-node: 27.5.1
- '@types/jest@30.0.0':
- dependencies:
- expect: 30.3.0
- pretty-format: 30.3.0
-
'@types/jscodeshift@17.3.0':
dependencies:
ast-types: 0.16.1
@@ -15491,8 +13813,6 @@ snapshots:
'@types/json-schema@7.0.15': {}
- '@types/json5@0.0.29': {}
-
'@types/katex@0.16.8': {}
'@types/mdast@3.0.15':
@@ -15505,8 +13825,6 @@ snapshots:
'@types/mdx@2.0.13': {}
- '@types/minimist@1.2.5': {}
-
'@types/ms@2.1.0': {}
'@types/nlcst@2.0.3':
@@ -15539,12 +13857,8 @@ snapshots:
dependencies:
'@types/node': 22.19.15
- '@types/normalize-package-data@2.4.4': {}
-
'@types/parse-json@4.0.2': {}
- '@types/prettier@2.7.3': {}
-
'@types/puppeteer@5.4.7':
dependencies:
'@types/node': 22.19.15
@@ -15563,16 +13877,10 @@ snapshots:
'@types/resolve@1.20.2': {}
- '@types/semver@7.7.1': {}
-
'@types/stack-utils@2.0.3': {}
'@types/statuses@2.0.6': {}
- '@types/testing-library__jest-dom@5.14.9':
- dependencies:
- '@types/jest': 30.0.0
-
'@types/trusted-types@2.0.7': {}
'@types/unist@2.0.11': {}
@@ -15587,6 +13895,10 @@ snapshots:
'@types/yargs-parser@21.0.3': {}
+ '@types/yargs@15.0.20':
+ dependencies:
+ '@types/yargs-parser': 21.0.3
+
'@types/yargs@16.0.11':
dependencies:
'@types/yargs-parser': 21.0.3
@@ -15600,45 +13912,6 @@ snapshots:
'@types/node': 22.19.15
optional: true
- '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(typescript@4.9.5)':
- dependencies:
- '@eslint-community/regexpp': 4.12.2
- '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@4.9.5)
- '@typescript-eslint/scope-manager': 5.62.0
- '@typescript-eslint/type-utils': 5.62.0(eslint@8.57.1)(typescript@4.9.5)
- '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@4.9.5)
- debug: 4.4.3
- eslint: 8.57.1
- graphemer: 1.4.0
- ignore: 5.3.2
- natural-compare-lite: 1.4.0
- semver: 7.7.4
- tsutils: 3.21.0(typescript@4.9.5)
- optionalDependencies:
- typescript: 4.9.5
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(typescript@4.9.5)':
- dependencies:
- '@eslint-community/regexpp': 4.12.2
- '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@4.9.5)
- '@typescript-eslint/scope-manager': 6.21.0
- '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.1)(typescript@4.9.5)
- '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@4.9.5)
- '@typescript-eslint/visitor-keys': 6.21.0
- debug: 4.4.3
- eslint: 8.57.1
- graphemer: 1.4.0
- ignore: 5.3.2
- natural-compare: 1.4.0
- semver: 7.7.4
- ts-api-utils: 1.4.3(typescript@4.9.5)
- optionalDependencies:
- typescript: 4.9.5
- transitivePeerDependencies:
- - supports-color
-
'@typescript-eslint/eslint-plugin@8.56.1(@typescript-eslint/parser@8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)':
dependencies:
'@eslint-community/regexpp': 4.12.2
@@ -15687,56 +13960,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/eslint-plugin@8.57.0(@typescript-eslint/parser@8.57.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(typescript@4.9.5)':
- dependencies:
- '@eslint-community/regexpp': 4.12.2
- '@typescript-eslint/parser': 8.57.0(eslint@8.57.1)(typescript@4.9.5)
- '@typescript-eslint/scope-manager': 8.57.0
- '@typescript-eslint/type-utils': 8.57.0(eslint@8.57.1)(typescript@4.9.5)
- '@typescript-eslint/utils': 8.57.0(eslint@8.57.1)(typescript@4.9.5)
- '@typescript-eslint/visitor-keys': 8.57.0
- eslint: 8.57.1
- ignore: 7.0.5
- natural-compare: 1.4.0
- ts-api-utils: 2.4.0(typescript@4.9.5)
- typescript: 4.9.5
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/experimental-utils@5.62.0(eslint@8.57.1)(typescript@4.9.5)':
- dependencies:
- '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@4.9.5)
- eslint: 8.57.1
- transitivePeerDependencies:
- - supports-color
- - typescript
-
- '@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@4.9.5)':
- dependencies:
- '@typescript-eslint/scope-manager': 5.62.0
- '@typescript-eslint/types': 5.62.0
- '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5)
- debug: 4.4.3
- eslint: 8.57.1
- optionalDependencies:
- typescript: 4.9.5
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5)':
- dependencies:
- '@typescript-eslint/scope-manager': 6.21.0
- '@typescript-eslint/types': 6.21.0
- '@typescript-eslint/typescript-estree': 6.21.0(typescript@4.9.5)
- '@typescript-eslint/visitor-keys': 6.21.0
- debug: 4.4.3
- eslint: 8.57.1
- optionalDependencies:
- typescript: 4.9.5
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/parser@8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)':
+ '@typescript-eslint/parser@8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)':
dependencies:
'@typescript-eslint/scope-manager': 8.56.1
'@typescript-eslint/types': 8.56.1
@@ -15772,18 +13996,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/parser@8.57.0(eslint@8.57.1)(typescript@4.9.5)':
- dependencies:
- '@typescript-eslint/scope-manager': 8.57.0
- '@typescript-eslint/types': 8.57.0
- '@typescript-eslint/typescript-estree': 8.57.0(typescript@4.9.5)
- '@typescript-eslint/visitor-keys': 8.57.0
- debug: 4.4.3
- eslint: 8.57.1
- typescript: 4.9.5
- transitivePeerDependencies:
- - supports-color
-
'@typescript-eslint/project-service@8.56.1(typescript@5.9.3)':
dependencies:
'@typescript-eslint/tsconfig-utils': 8.56.1(typescript@5.9.3)
@@ -15793,15 +14005,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/project-service@8.57.0(typescript@4.9.5)':
- dependencies:
- '@typescript-eslint/tsconfig-utils': 8.57.0(typescript@4.9.5)
- '@typescript-eslint/types': 8.57.0
- debug: 4.4.3
- typescript: 4.9.5
- transitivePeerDependencies:
- - supports-color
-
'@typescript-eslint/project-service@8.57.0(typescript@5.9.3)':
dependencies:
'@typescript-eslint/tsconfig-utils': 8.57.0(typescript@5.9.3)
@@ -15811,16 +14014,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/scope-manager@5.62.0':
- dependencies:
- '@typescript-eslint/types': 5.62.0
- '@typescript-eslint/visitor-keys': 5.62.0
-
- '@typescript-eslint/scope-manager@6.21.0':
- dependencies:
- '@typescript-eslint/types': 6.21.0
- '@typescript-eslint/visitor-keys': 6.21.0
-
'@typescript-eslint/scope-manager@8.56.1':
dependencies:
'@typescript-eslint/types': 8.56.1
@@ -15835,38 +14028,10 @@ snapshots:
dependencies:
typescript: 5.9.3
- '@typescript-eslint/tsconfig-utils@8.57.0(typescript@4.9.5)':
- dependencies:
- typescript: 4.9.5
-
'@typescript-eslint/tsconfig-utils@8.57.0(typescript@5.9.3)':
dependencies:
typescript: 5.9.3
- '@typescript-eslint/type-utils@5.62.0(eslint@8.57.1)(typescript@4.9.5)':
- dependencies:
- '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5)
- '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@4.9.5)
- debug: 4.4.3
- eslint: 8.57.1
- tsutils: 3.21.0(typescript@4.9.5)
- optionalDependencies:
- typescript: 4.9.5
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/type-utils@6.21.0(eslint@8.57.1)(typescript@4.9.5)':
- dependencies:
- '@typescript-eslint/typescript-estree': 6.21.0(typescript@4.9.5)
- '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@4.9.5)
- debug: 4.4.3
- eslint: 8.57.1
- ts-api-utils: 1.4.3(typescript@4.9.5)
- optionalDependencies:
- typescript: 4.9.5
- transitivePeerDependencies:
- - supports-color
-
'@typescript-eslint/type-utils@8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)':
dependencies:
'@typescript-eslint/types': 8.56.1
@@ -15903,55 +14068,10 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/type-utils@8.57.0(eslint@8.57.1)(typescript@4.9.5)':
- dependencies:
- '@typescript-eslint/types': 8.57.0
- '@typescript-eslint/typescript-estree': 8.57.0(typescript@4.9.5)
- '@typescript-eslint/utils': 8.57.0(eslint@8.57.1)(typescript@4.9.5)
- debug: 4.4.3
- eslint: 8.57.1
- ts-api-utils: 2.4.0(typescript@4.9.5)
- typescript: 4.9.5
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/types@5.62.0': {}
-
- '@typescript-eslint/types@6.21.0': {}
-
'@typescript-eslint/types@8.56.1': {}
'@typescript-eslint/types@8.57.0': {}
- '@typescript-eslint/typescript-estree@5.62.0(typescript@4.9.5)':
- dependencies:
- '@typescript-eslint/types': 5.62.0
- '@typescript-eslint/visitor-keys': 5.62.0
- debug: 4.4.3
- globby: 11.1.0
- is-glob: 4.0.3
- semver: 7.7.4
- tsutils: 3.21.0(typescript@4.9.5)
- optionalDependencies:
- typescript: 4.9.5
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/typescript-estree@6.21.0(typescript@4.9.5)':
- dependencies:
- '@typescript-eslint/types': 6.21.0
- '@typescript-eslint/visitor-keys': 6.21.0
- debug: 4.4.3
- globby: 11.1.0
- is-glob: 4.0.3
- minimatch: 9.0.3
- semver: 7.7.4
- ts-api-utils: 1.4.3(typescript@4.9.5)
- optionalDependencies:
- typescript: 4.9.5
- transitivePeerDependencies:
- - supports-color
-
'@typescript-eslint/typescript-estree@8.56.1(typescript@5.9.3)':
dependencies:
'@typescript-eslint/project-service': 8.56.1(typescript@5.9.3)
@@ -15967,21 +14087,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/typescript-estree@8.57.0(typescript@4.9.5)':
- dependencies:
- '@typescript-eslint/project-service': 8.57.0(typescript@4.9.5)
- '@typescript-eslint/tsconfig-utils': 8.57.0(typescript@4.9.5)
- '@typescript-eslint/types': 8.57.0
- '@typescript-eslint/visitor-keys': 8.57.0
- debug: 4.4.3
- minimatch: 10.2.4
- semver: 7.7.4
- tinyglobby: 0.2.15
- ts-api-utils: 2.4.0(typescript@4.9.5)
- typescript: 4.9.5
- transitivePeerDependencies:
- - supports-color
-
'@typescript-eslint/typescript-estree@8.57.0(typescript@5.9.3)':
dependencies:
'@typescript-eslint/project-service': 8.57.0(typescript@5.9.3)
@@ -15997,35 +14102,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/utils@5.62.0(eslint@8.57.1)(typescript@4.9.5)':
- dependencies:
- '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1)
- '@types/json-schema': 7.0.15
- '@types/semver': 7.7.1
- '@typescript-eslint/scope-manager': 5.62.0
- '@typescript-eslint/types': 5.62.0
- '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5)
- eslint: 8.57.1
- eslint-scope: 5.1.1
- semver: 7.7.4
- transitivePeerDependencies:
- - supports-color
- - typescript
-
- '@typescript-eslint/utils@6.21.0(eslint@8.57.1)(typescript@4.9.5)':
- dependencies:
- '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1)
- '@types/json-schema': 7.0.15
- '@types/semver': 7.7.1
- '@typescript-eslint/scope-manager': 6.21.0
- '@typescript-eslint/types': 6.21.0
- '@typescript-eslint/typescript-estree': 6.21.0(typescript@4.9.5)
- eslint: 8.57.1
- semver: 7.7.4
- transitivePeerDependencies:
- - supports-color
- - typescript
-
'@typescript-eslint/utils@8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)':
dependencies:
'@eslint-community/eslint-utils': 4.9.1(eslint@10.0.2(jiti@2.6.1))
@@ -16059,27 +14135,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/utils@8.57.0(eslint@8.57.1)(typescript@4.9.5)':
- dependencies:
- '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1)
- '@typescript-eslint/scope-manager': 8.57.0
- '@typescript-eslint/types': 8.57.0
- '@typescript-eslint/typescript-estree': 8.57.0(typescript@4.9.5)
- eslint: 8.57.1
- typescript: 4.9.5
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/visitor-keys@5.62.0':
- dependencies:
- '@typescript-eslint/types': 5.62.0
- eslint-visitor-keys: 3.4.3
-
- '@typescript-eslint/visitor-keys@6.21.0':
- dependencies:
- '@typescript-eslint/types': 6.21.0
- eslint-visitor-keys: 3.4.3
-
'@typescript-eslint/visitor-keys@8.56.1':
dependencies:
'@typescript-eslint/types': 8.56.1
@@ -16099,65 +14154,6 @@ snapshots:
'@ungap/structured-clone@1.3.0': {}
- '@unrs/resolver-binding-android-arm-eabi@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-android-arm64@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-darwin-arm64@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-darwin-x64@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-freebsd-x64@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-linux-arm64-gnu@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-linux-arm64-musl@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-linux-riscv64-musl@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-linux-s390x-gnu@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-linux-x64-gnu@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-linux-x64-musl@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-wasm32-wasi@1.11.1':
- dependencies:
- '@napi-rs/wasm-runtime': 0.2.12
- optional: true
-
- '@unrs/resolver-binding-win32-arm64-msvc@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-win32-ia32-msvc@1.11.1':
- optional: true
-
- '@unrs/resolver-binding-win32-x64-msvc@1.11.1':
- optional: true
-
'@upsetjs/venn.js@2.0.0':
optionalDependencies:
d3-selection: 3.0.0
@@ -16638,9 +14634,10 @@ snapshots:
argparse@2.0.1: {}
- aria-query@5.1.3:
+ aria-query@4.2.2:
dependencies:
- deep-equal: 2.2.3
+ '@babel/runtime': 7.28.6
+ '@babel/runtime-corejs3': 7.29.0
aria-query@5.3.2: {}
@@ -16651,62 +14648,10 @@ snapshots:
array-ify@1.0.0: {}
- array-includes@3.1.9:
- dependencies:
- call-bind: 1.0.8
- call-bound: 1.0.4
- define-properties: 1.2.1
- es-abstract: 1.24.1
- es-object-atoms: 1.1.1
- get-intrinsic: 1.3.0
- is-string: 1.1.1
- math-intrinsics: 1.1.0
-
array-iterate@2.0.1: {}
array-union@2.1.0: {}
- array.prototype.findlast@1.2.5:
- dependencies:
- call-bind: 1.0.8
- define-properties: 1.2.1
- es-abstract: 1.24.1
- es-errors: 1.3.0
- es-object-atoms: 1.1.1
- es-shim-unscopables: 1.1.0
-
- array.prototype.findlastindex@1.2.6:
- dependencies:
- call-bind: 1.0.8
- call-bound: 1.0.4
- define-properties: 1.2.1
- es-abstract: 1.24.1
- es-errors: 1.3.0
- es-object-atoms: 1.1.1
- es-shim-unscopables: 1.1.0
-
- array.prototype.flat@1.3.3:
- dependencies:
- call-bind: 1.0.8
- define-properties: 1.2.1
- es-abstract: 1.24.1
- es-shim-unscopables: 1.1.0
-
- array.prototype.flatmap@1.3.3:
- dependencies:
- call-bind: 1.0.8
- define-properties: 1.2.1
- es-abstract: 1.24.1
- es-shim-unscopables: 1.1.0
-
- array.prototype.tosorted@1.1.4:
- dependencies:
- call-bind: 1.0.8
- define-properties: 1.2.1
- es-abstract: 1.24.1
- es-errors: 1.3.0
- es-shim-unscopables: 1.1.0
-
arraybuffer.prototype.slice@1.0.4:
dependencies:
array-buffer-byte-length: 1.0.2
@@ -16717,12 +14662,8 @@ snapshots:
get-intrinsic: 1.3.0
is-array-buffer: 3.0.5
- arrify@1.0.1: {}
-
assertion-error@2.0.1: {}
- ast-types-flow@0.0.8: {}
-
ast-types@0.13.4:
dependencies:
tslib: 2.8.1
@@ -16774,27 +14715,12 @@ snapshots:
transitivePeerDependencies:
- debug
- axobject-query@4.1.0: {}
-
b4a@1.8.0: {}
babel-core@7.0.0-bridge.0(@babel/core@7.29.0):
dependencies:
'@babel/core': 7.29.0
- babel-jest@28.1.3(@babel/core@7.29.0):
- dependencies:
- '@babel/core': 7.29.0
- '@jest/transform': 28.1.3
- '@types/babel__core': 7.20.5
- babel-plugin-istanbul: 6.1.1
- babel-preset-jest: 28.1.3(@babel/core@7.29.0)
- chalk: 4.1.2
- graceful-fs: 4.2.11
- slash: 3.0.0
- transitivePeerDependencies:
- - supports-color
-
babel-jest@29.7.0(@babel/core@7.29.0):
dependencies:
'@babel/core': 7.29.0
@@ -16827,13 +14753,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- babel-plugin-jest-hoist@28.1.3:
- dependencies:
- '@babel/template': 7.28.6
- '@babel/types': 7.29.0
- '@types/babel__core': 7.20.5
- '@types/babel__traverse': 7.28.0
-
babel-plugin-jest-hoist@29.6.3:
dependencies:
'@babel/template': 7.28.6
@@ -16881,8 +14800,6 @@ snapshots:
babel-plugin-transform-async-to-promises@0.8.18: {}
- babel-plugin-transform-react-remove-prop-types@0.4.24: {}
-
babel-plugin-transform-replace-expressions@0.2.0(@babel/core@7.29.0):
dependencies:
'@babel/core': 7.29.0
@@ -16907,12 +14824,6 @@ snapshots:
'@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.29.0)
'@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.29.0)
- babel-preset-jest@28.1.3(@babel/core@7.29.0):
- dependencies:
- '@babel/core': 7.29.0
- babel-plugin-jest-hoist: 28.1.3
- babel-preset-current-node-syntax: 1.2.0(@babel/core@7.29.0)
-
babel-preset-jest@29.6.3(@babel/core@7.29.0):
dependencies:
'@babel/core': 7.29.0
@@ -16926,36 +14837,12 @@ snapshots:
- '@babel/core'
- supports-color
- babel-preset-react-app@10.1.0:
- dependencies:
- '@babel/core': 7.29.0
- '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.29.0)
- '@babel/plugin-proposal-decorators': 7.29.0(@babel/core@7.29.0)
- '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.29.0)
- '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.29.0)
- '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.29.0)
- '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.29.0)
- '@babel/plugin-proposal-private-property-in-object': 7.21.11(@babel/core@7.29.0)
- '@babel/plugin-transform-flow-strip-types': 7.27.1(@babel/core@7.29.0)
- '@babel/plugin-transform-react-display-name': 7.28.0(@babel/core@7.29.0)
- '@babel/plugin-transform-runtime': 7.29.0(@babel/core@7.29.0)
- '@babel/preset-env': 7.29.0(@babel/core@7.29.0)
- '@babel/preset-react': 7.28.5(@babel/core@7.29.0)
- '@babel/preset-typescript': 7.28.5(@babel/core@7.29.0)
- '@babel/runtime': 7.28.6
- babel-plugin-macros: 3.1.0
- babel-plugin-transform-react-remove-prop-types: 0.4.24
- transitivePeerDependencies:
- - supports-color
-
bail@1.0.5: {}
bail@2.0.2: {}
balanced-match@1.0.2: {}
- balanced-match@2.0.0: {}
-
balanced-match@4.0.4: {}
bare-events@2.8.2: {}
@@ -16964,7 +14851,7 @@ snapshots:
dependencies:
bare-events: 2.8.2
bare-path: 3.0.0
- bare-stream: 2.10.0(bare-events@2.8.2)
+ bare-stream: 2.11.0(bare-events@2.8.2)
bare-url: 2.4.0
fast-fifo: 1.3.2
transitivePeerDependencies:
@@ -16972,22 +14859,21 @@ snapshots:
- react-native-b4a
optional: true
- bare-os@3.8.0:
+ bare-os@3.8.4:
optional: true
bare-path@3.0.0:
dependencies:
- bare-os: 3.8.0
+ bare-os: 3.8.4
optional: true
- bare-stream@2.10.0(bare-events@2.8.2):
+ bare-stream@2.11.0(bare-events@2.8.2):
dependencies:
streamx: 2.25.0
teex: 1.0.1
optionalDependencies:
bare-events: 2.8.2
transitivePeerDependencies:
- - bare-abort-controller
- react-native-b4a
optional: true
@@ -17046,10 +14932,6 @@ snapshots:
node-releases: 2.0.27
update-browserslist-db: 1.2.3(browserslist@4.28.1)
- bs-logger@0.2.6:
- dependencies:
- fast-json-stable-stringify: 2.1.0
-
bser@2.1.1:
dependencies:
node-int64: 0.4.0
@@ -17114,12 +14996,6 @@ snapshots:
camelcase-css@2.0.1: {}
- camelcase-keys@6.2.2:
- dependencies:
- camelcase: 5.3.1
- map-obj: 4.3.0
- quick-lru: 4.0.1
-
camelcase@5.3.1: {}
camelcase@6.3.0: {}
@@ -17159,11 +15035,6 @@ snapshots:
escape-string-regexp: 1.0.5
supports-color: 5.5.0
- chalk@3.0.0:
- dependencies:
- ansi-styles: 4.3.0
- supports-color: 7.2.0
-
chalk@4.1.2:
dependencies:
ansi-styles: 4.3.0
@@ -17230,8 +15101,6 @@ snapshots:
ci-info@3.9.0: {}
- ci-info@4.4.0: {}
-
cjs-module-lexer@1.4.3: {}
cli-cursor@5.0.0:
@@ -17384,8 +15253,6 @@ snapshots:
confbox@0.1.8: {}
- confusing-browser-globals@1.0.11: {}
-
consola@3.4.2: {}
conventional-changelog-conventionalcommits@4.4.0:
@@ -17394,8 +15261,6 @@ snapshots:
lodash: 4.17.23
q: 1.5.1
- convert-source-map@1.9.0: {}
-
convert-source-map@2.0.0: {}
cookie-signature@1.2.2: {}
@@ -17408,6 +15273,8 @@ snapshots:
dependencies:
browserslist: 4.28.1
+ core-js-pure@3.48.0: {}
+
cose-base@1.0.3:
dependencies:
layout-base: 1.0.2
@@ -17487,13 +15354,13 @@ snapshots:
- supports-color
- ts-node
- create-jest@29.7.0(@types/node@22.19.15)(babel-plugin-macros@3.1.0):
+ create-jest@29.7.0(@types/node@24.10.13):
dependencies:
'@jest/types': 29.6.3
chalk: 4.1.2
exit: 0.1.2
graceful-fs: 4.2.11
- jest-config: 29.7.0(@types/node@22.19.15)(babel-plugin-macros@3.1.0)
+ jest-config: 29.7.0(@types/node@24.10.13)
jest-util: 29.7.0
prompts: 2.4.2
transitivePeerDependencies:
@@ -17501,14 +15368,15 @@ snapshots:
- babel-plugin-macros
- supports-color
- ts-node
+ optional: true
- create-jest@29.7.0(@types/node@24.10.13):
+ create-jest@29.7.0(@types/node@25.4.0):
dependencies:
'@jest/types': 29.6.3
chalk: 4.1.2
exit: 0.1.2
graceful-fs: 4.2.11
- jest-config: 29.7.0(@types/node@24.10.13)
+ jest-config: 29.7.0(@types/node@25.4.0)
jest-util: 29.7.0
prompts: 2.4.2
transitivePeerDependencies:
@@ -17518,13 +15386,13 @@ snapshots:
- ts-node
optional: true
- create-jest@29.7.0(@types/node@25.4.0):
+ create-jest@29.7.0(@types/node@25.4.0)(babel-plugin-macros@3.1.0):
dependencies:
'@jest/types': 29.6.3
chalk: 4.1.2
exit: 0.1.2
graceful-fs: 4.2.11
- jest-config: 29.7.0(@types/node@25.4.0)
+ jest-config: 29.7.0(@types/node@25.4.0)(babel-plugin-macros@3.1.0)
jest-util: 29.7.0
prompts: 2.4.2
transitivePeerDependencies:
@@ -17532,7 +15400,6 @@ snapshots:
- babel-plugin-macros
- supports-color
- ts-node
- optional: true
cross-fetch@4.0.0(encoding@0.1.13):
dependencies:
@@ -17572,8 +15439,6 @@ snapshots:
dependencies:
postcss: 8.5.8
- css-functions-list@3.3.3: {}
-
css-select@4.3.0:
dependencies:
boolbase: 1.0.0
@@ -17903,8 +15768,6 @@ snapshots:
d3: 7.9.0
lodash-es: 4.17.23
- damerau-levenshtein@1.0.8: {}
-
data-uri-to-buffer@6.0.2: {}
data-urls@5.0.0:
@@ -17938,10 +15801,6 @@ snapshots:
dayjs@1.11.19: {}
- debug@3.2.7:
- dependencies:
- ms: 2.1.3
-
debug@4.3.4:
dependencies:
ms: 2.1.2
@@ -17950,48 +15809,18 @@ snapshots:
dependencies:
ms: 2.1.3
- decamelize-keys@1.1.1:
- dependencies:
- decamelize: 1.2.0
- map-obj: 1.0.1
-
- decamelize@1.2.0: {}
-
decimal.js@10.6.0: {}
decode-named-character-reference@1.3.0:
dependencies:
character-entities: 2.0.2
- dedent@0.7.0: {}
-
dedent@1.7.1(babel-plugin-macros@3.1.0):
optionalDependencies:
babel-plugin-macros: 3.1.0
deep-eql@5.0.2: {}
- deep-equal@2.2.3:
- dependencies:
- array-buffer-byte-length: 1.0.2
- call-bind: 1.0.8
- es-get-iterator: 1.1.3
- get-intrinsic: 1.3.0
- is-arguments: 1.2.0
- is-array-buffer: 3.0.5
- is-date-object: 1.1.0
- is-regex: 1.2.1
- is-shared-array-buffer: 1.0.4
- isarray: 2.0.5
- object-is: 1.1.6
- object-keys: 1.1.1
- object.assign: 4.1.7
- regexp.prototype.flags: 1.5.4
- side-channel: 1.1.0
- which-boxed-primitive: 1.1.1
- which-collection: 1.0.2
- which-typed-array: 1.1.20
-
deep-is@0.1.4: {}
deepmerge@4.3.1: {}
@@ -18044,8 +15873,6 @@ snapshots:
didyoumean@1.2.2: {}
- diff-sequences@28.1.1: {}
-
diff-sequences@29.6.3: {}
dir-glob@3.0.1:
@@ -18054,10 +15881,6 @@ snapshots:
dlv@1.1.3: {}
- doctrine@2.1.0:
- dependencies:
- esutils: 2.0.3
-
doctrine@3.0.0:
dependencies:
esutils: 2.0.3
@@ -18139,8 +15962,6 @@ snapshots:
electron-to-chromium@1.5.302: {}
- emittery@0.10.2: {}
-
emittery@0.13.1: {}
emoji-regex@10.6.0: {}
@@ -18252,38 +16073,6 @@ snapshots:
es-errors@1.3.0: {}
- es-get-iterator@1.1.3:
- dependencies:
- call-bind: 1.0.8
- get-intrinsic: 1.3.0
- has-symbols: 1.1.0
- is-arguments: 1.2.0
- is-map: 2.0.3
- is-set: 2.0.3
- is-string: 1.1.1
- isarray: 2.0.5
- stop-iteration-iterator: 1.1.0
-
- es-iterator-helpers@1.3.1:
- dependencies:
- call-bind: 1.0.8
- call-bound: 1.0.4
- define-properties: 1.2.1
- es-abstract: 1.24.1
- es-errors: 1.3.0
- es-set-tostringtag: 2.1.0
- function-bind: 1.1.2
- get-intrinsic: 1.3.0
- globalthis: 1.0.4
- gopd: 1.2.0
- has-property-descriptors: 1.0.2
- has-proto: 1.2.0
- has-symbols: 1.1.0
- internal-slot: 1.1.0
- iterator.prototype: 1.1.5
- math-intrinsics: 1.1.0
- safe-array-concat: 1.1.3
-
es-module-lexer@1.7.0: {}
es-module-lexer@2.0.0: {}
@@ -18299,10 +16088,6 @@ snapshots:
has-tostringtag: 1.0.2
hasown: 2.0.2
- es-shim-unscopables@1.1.0:
- dependencies:
- hasown: 2.0.2
-
es-to-primitive@1.3.0:
dependencies:
is-callable: 1.2.7
@@ -18370,26 +16155,6 @@ snapshots:
optionalDependencies:
source-map: 0.6.1
- eslint-config-next@14.2.35(eslint@8.57.1)(typescript@4.9.5):
- dependencies:
- '@next/eslint-plugin-next': 14.2.35
- '@rushstack/eslint-patch': 1.16.1
- '@typescript-eslint/eslint-plugin': 8.57.0(@typescript-eslint/parser@8.57.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(typescript@4.9.5)
- '@typescript-eslint/parser': 8.57.0(eslint@8.57.1)(typescript@4.9.5)
- eslint: 8.57.1
- eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1)
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)
- eslint-plugin-jsx-a11y: 6.10.2(eslint@8.57.1)
- eslint-plugin-react: 7.37.5(eslint@8.57.1)
- eslint-plugin-react-hooks: 5.0.0-canary-7118f5dd7-20230705(eslint@8.57.1)
- optionalDependencies:
- typescript: 4.9.5
- transitivePeerDependencies:
- - eslint-import-resolver-webpack
- - eslint-plugin-import-x
- - supports-color
-
eslint-config-prettier@10.1.8(eslint@10.0.3(jiti@2.6.1)):
dependencies:
eslint: 10.0.3(jiti@2.6.1)
@@ -18398,164 +16163,6 @@ snapshots:
dependencies:
eslint: 10.0.3(jiti@2.6.1)
- eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.28.6(@babel/core@7.29.0))(@babel/plugin-transform-react-jsx@7.28.6(@babel/core@7.29.0))(eslint@8.57.1)(jest@28.1.3(@types/node@22.19.15)(node-notifier@8.0.2))(typescript@4.9.5):
- dependencies:
- '@babel/core': 7.29.0
- '@babel/eslint-parser': 7.28.6(@babel/core@7.29.0)(eslint@8.57.1)
- '@rushstack/eslint-patch': 1.16.1
- '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(typescript@4.9.5)
- '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@4.9.5)
- babel-preset-react-app: 10.1.0
- confusing-browser-globals: 1.0.11
- eslint: 8.57.1
- eslint-plugin-flowtype: 8.0.3(@babel/plugin-syntax-flow@7.28.6(@babel/core@7.29.0))(@babel/plugin-transform-react-jsx@7.28.6(@babel/core@7.29.0))(eslint@8.57.1)
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)
- eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(jest@28.1.3(@types/node@22.19.15)(node-notifier@8.0.2))(typescript@4.9.5)
- eslint-plugin-jsx-a11y: 6.10.2(eslint@8.57.1)
- eslint-plugin-react: 7.37.5(eslint@8.57.1)
- eslint-plugin-react-hooks: 4.6.2(eslint@8.57.1)
- eslint-plugin-testing-library: 5.11.1(eslint@8.57.1)(typescript@4.9.5)
- optionalDependencies:
- typescript: 4.9.5
- transitivePeerDependencies:
- - '@babel/plugin-syntax-flow'
- - '@babel/plugin-transform-react-jsx'
- - eslint-import-resolver-typescript
- - eslint-import-resolver-webpack
- - jest
- - supports-color
-
- eslint-import-resolver-node@0.3.9:
- dependencies:
- debug: 3.2.7
- is-core-module: 2.16.1
- resolve: 1.22.11
- transitivePeerDependencies:
- - supports-color
-
- eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1):
- dependencies:
- '@nolyfill/is-core-module': 1.0.39
- debug: 4.4.3
- eslint: 8.57.1
- get-tsconfig: 4.13.6
- is-bun-module: 2.0.0
- stable-hash: 0.0.5
- tinyglobby: 0.2.15
- unrs-resolver: 1.11.1
- optionalDependencies:
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)
- transitivePeerDependencies:
- - supports-color
-
- eslint-module-utils@2.12.1(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@4.9.5))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1):
- dependencies:
- debug: 3.2.7
- optionalDependencies:
- '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@4.9.5)
- eslint: 8.57.1
- eslint-import-resolver-node: 0.3.9
- transitivePeerDependencies:
- - supports-color
-
- eslint-module-utils@2.12.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1):
- dependencies:
- debug: 3.2.7
- optionalDependencies:
- '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@4.9.5)
- eslint: 8.57.1
- eslint-import-resolver-node: 0.3.9
- transitivePeerDependencies:
- - supports-color
-
- eslint-plugin-flowtype@8.0.3(@babel/plugin-syntax-flow@7.28.6(@babel/core@7.29.0))(@babel/plugin-transform-react-jsx@7.28.6(@babel/core@7.29.0))(eslint@8.57.1):
- dependencies:
- '@babel/plugin-syntax-flow': 7.28.6(@babel/core@7.29.0)
- '@babel/plugin-transform-react-jsx': 7.28.6(@babel/core@7.29.0)
- eslint: 8.57.1
- lodash: 4.17.23
- string-natural-compare: 3.0.1
-
- eslint-plugin-import@2.32.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1):
- dependencies:
- '@rtsao/scc': 1.1.0
- array-includes: 3.1.9
- array.prototype.findlastindex: 1.2.6
- array.prototype.flat: 1.3.3
- array.prototype.flatmap: 1.3.3
- debug: 3.2.7
- doctrine: 2.1.0
- eslint: 8.57.1
- eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.12.1(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@4.9.5))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1)
- hasown: 2.0.2
- is-core-module: 2.16.1
- is-glob: 4.0.3
- minimatch: 3.1.5
- object.fromentries: 2.0.8
- object.groupby: 1.0.3
- object.values: 1.2.1
- semver: 6.3.1
- string.prototype.trimend: 1.0.9
- tsconfig-paths: 3.15.0
- optionalDependencies:
- '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@4.9.5)
- transitivePeerDependencies:
- - eslint-import-resolver-typescript
- - eslint-import-resolver-webpack
- - supports-color
-
- eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1):
- dependencies:
- '@rtsao/scc': 1.1.0
- array-includes: 3.1.9
- array.prototype.findlastindex: 1.2.6
- array.prototype.flat: 1.3.3
- array.prototype.flatmap: 1.3.3
- debug: 3.2.7
- doctrine: 2.1.0
- eslint: 8.57.1
- eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.12.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1)
- hasown: 2.0.2
- is-core-module: 2.16.1
- is-glob: 4.0.3
- minimatch: 3.1.5
- object.fromentries: 2.0.8
- object.groupby: 1.0.3
- object.values: 1.2.1
- semver: 6.3.1
- string.prototype.trimend: 1.0.9
- tsconfig-paths: 3.15.0
- optionalDependencies:
- '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@4.9.5)
- transitivePeerDependencies:
- - eslint-import-resolver-typescript
- - eslint-import-resolver-webpack
- - supports-color
-
- eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(jest@28.1.3(@types/node@22.19.15)(node-notifier@8.0.2))(typescript@4.9.5):
- dependencies:
- '@typescript-eslint/experimental-utils': 5.62.0(eslint@8.57.1)(typescript@4.9.5)
- eslint: 8.57.1
- optionalDependencies:
- '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(typescript@4.9.5)
- jest: 28.1.3(@types/node@22.19.15)(node-notifier@8.0.2)
- transitivePeerDependencies:
- - supports-color
- - typescript
-
- eslint-plugin-jest@26.9.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(jest@28.1.3(@types/node@22.19.15)(node-notifier@8.0.2))(typescript@4.9.5):
- dependencies:
- '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@4.9.5)
- eslint: 8.57.1
- optionalDependencies:
- '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(typescript@4.9.5)
- jest: 28.1.3(@types/node@22.19.15)(node-notifier@8.0.2)
- transitivePeerDependencies:
- - supports-color
- - typescript
-
eslint-plugin-jest@29.15.0(@typescript-eslint/eslint-plugin@8.56.1(@typescript-eslint/parser@8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3))(eslint@10.0.2(jiti@2.6.1))(jest@29.7.0(@types/node@25.4.0))(typescript@5.9.3):
dependencies:
'@typescript-eslint/utils': 8.56.1(eslint@10.0.2(jiti@2.6.1))(typescript@5.9.3)
@@ -18633,81 +16240,11 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-plugin-jsx-a11y@6.10.2(eslint@8.57.1):
- dependencies:
- aria-query: 5.3.2
- array-includes: 3.1.9
- array.prototype.flatmap: 1.3.3
- ast-types-flow: 0.0.8
- axe-core: 4.11.1
- axobject-query: 4.1.0
- damerau-levenshtein: 1.0.8
- emoji-regex: 9.2.2
- eslint: 8.57.1
- hasown: 2.0.2
- jsx-ast-utils: 3.3.5
- language-tags: 1.0.9
- minimatch: 3.1.5
- object.fromentries: 2.0.8
- safe-regex-test: 1.1.0
- string.prototype.includes: 2.0.1
-
- eslint-plugin-prettier@4.2.5(eslint-config-prettier@10.1.8(eslint@10.0.3(jiti@2.6.1)))(eslint@8.57.1)(prettier@3.8.1):
- dependencies:
- eslint: 8.57.1
- prettier: 3.8.1
- prettier-linter-helpers: 1.0.1
- optionalDependencies:
- eslint-config-prettier: 10.1.8(eslint@10.0.3(jiti@2.6.1))
-
- eslint-plugin-react-hooks@4.6.2(eslint@8.57.1):
- dependencies:
- eslint: 8.57.1
-
- eslint-plugin-react-hooks@5.0.0-canary-7118f5dd7-20230705(eslint@8.57.1):
- dependencies:
- eslint: 8.57.1
-
- eslint-plugin-react@7.37.5(eslint@8.57.1):
- dependencies:
- array-includes: 3.1.9
- array.prototype.findlast: 1.2.5
- array.prototype.flatmap: 1.3.3
- array.prototype.tosorted: 1.1.4
- doctrine: 2.1.0
- es-iterator-helpers: 1.3.1
- eslint: 8.57.1
- estraverse: 5.3.0
- hasown: 2.0.2
- jsx-ast-utils: 3.3.5
- minimatch: 3.1.5
- object.entries: 1.1.9
- object.fromentries: 2.0.8
- object.values: 1.2.1
- prop-types: 15.8.1
- resolve: 2.0.0-next.6
- semver: 6.3.1
- string.prototype.matchall: 4.0.12
- string.prototype.repeat: 1.0.0
-
- eslint-plugin-testing-library@5.11.1(eslint@8.57.1)(typescript@4.9.5):
- dependencies:
- '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@4.9.5)
- eslint: 8.57.1
- transitivePeerDependencies:
- - supports-color
- - typescript
-
eslint-scope@5.1.1:
dependencies:
esrecurse: 4.3.0
estraverse: 4.3.0
- eslint-scope@7.2.2:
- dependencies:
- esrecurse: 4.3.0
- estraverse: 5.3.0
-
eslint-scope@9.1.1:
dependencies:
'@types/esrecurse': 4.3.1
@@ -18853,49 +16390,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint@8.57.1:
- dependencies:
- '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1)
- '@eslint-community/regexpp': 4.12.2
- '@eslint/eslintrc': 2.1.4
- '@eslint/js': 8.57.1
- '@humanwhocodes/config-array': 0.13.0
- '@humanwhocodes/module-importer': 1.0.1
- '@nodelib/fs.walk': 1.2.8
- '@ungap/structured-clone': 1.3.0
- ajv: 6.14.0
- chalk: 4.1.2
- cross-spawn: 7.0.6
- debug: 4.4.3
- doctrine: 3.0.0
- escape-string-regexp: 4.0.0
- eslint-scope: 7.2.2
- eslint-visitor-keys: 3.4.3
- espree: 9.6.1
- esquery: 1.7.0
- esutils: 2.0.3
- fast-deep-equal: 3.1.3
- file-entry-cache: 6.0.1
- find-up: 5.0.0
- glob-parent: 6.0.2
- globals: 13.24.0
- graphemer: 1.4.0
- ignore: 5.3.2
- imurmurhash: 0.1.4
- is-glob: 4.0.3
- is-path-inside: 3.0.3
- js-yaml: 4.1.1
- json-stable-stringify-without-jsonify: 1.0.1
- levn: 0.4.1
- lodash.merge: 4.6.2
- minimatch: 3.1.5
- natural-compare: 1.4.0
- optionator: 0.9.4
- strip-ansi: 6.0.1
- text-table: 0.2.0
- transitivePeerDependencies:
- - supports-color
-
esm@3.2.25: {}
espree@11.1.1:
@@ -18910,12 +16404,6 @@ snapshots:
acorn-jsx: 5.3.2(acorn@7.4.1)
eslint-visitor-keys: 1.3.0
- espree@9.6.1:
- dependencies:
- acorn: 8.16.0
- acorn-jsx: 5.3.2(acorn@8.16.0)
- eslint-visitor-keys: 3.4.3
-
esprima@4.0.1: {}
esquery@1.7.0:
@@ -19033,14 +16521,6 @@ snapshots:
expect-type@1.3.0: {}
- expect@28.1.3:
- dependencies:
- '@jest/expect-utils': 28.1.3
- jest-get-type: 28.0.2
- jest-matcher-utils: 28.1.3
- jest-message-util: 28.1.3
- jest-util: 28.1.3
-
expect@29.7.0:
dependencies:
'@jest/expect-utils': 29.7.0
@@ -19049,15 +16529,6 @@ snapshots:
jest-message-util: 29.7.0
jest-util: 29.7.0
- expect@30.3.0:
- dependencies:
- '@jest/expect-utils': 30.3.0
- '@jest/get-type': 30.1.0
- jest-matcher-utils: 30.3.0
- jest-message-util: 30.3.0
- jest-mock: 30.3.0
- jest-util: 30.3.0
-
extend-shallow@2.0.1:
dependencies:
is-extendable: 0.1.1
@@ -19078,8 +16549,6 @@ snapshots:
fast-deep-equal@3.1.3: {}
- fast-diff@1.3.0: {}
-
fast-fifo@1.3.2: {}
fast-glob@3.3.3:
@@ -19096,11 +16565,15 @@ snapshots:
fast-uri@3.1.0: {}
- fast-xml-parser@4.5.5:
+ fast-xml-builder@1.1.4:
dependencies:
- strnum: 1.1.2
+ path-expression-matcher: 1.2.0
- fastest-levenshtein@1.0.16: {}
+ fast-xml-parser@5.5.9:
+ dependencies:
+ fast-xml-builder: 1.1.4
+ path-expression-matcher: 1.2.0
+ strnum: 2.2.2
fastq@1.20.1:
dependencies:
@@ -19382,14 +16855,6 @@ snapshots:
glob-to-regexp@0.4.1: {}
- glob@10.3.10:
- dependencies:
- foreground-child: 3.3.1
- jackspeak: 2.3.6
- minimatch: 9.0.9
- minipass: 7.1.3
- path-scurry: 1.11.1
-
glob@10.5.0:
dependencies:
foreground-child: 3.3.1
@@ -19428,10 +16893,6 @@ snapshots:
global-prefix: 0.1.5
is-windows: 0.2.0
- global-modules@2.0.0:
- dependencies:
- global-prefix: 3.0.0
-
global-prefix@0.1.5:
dependencies:
homedir-polyfill: 1.0.3
@@ -19439,12 +16900,6 @@ snapshots:
is-windows: 0.2.0
which: 1.3.1
- global-prefix@3.0.0:
- dependencies:
- ini: 1.3.8
- kind-of: 6.0.3
- which: 1.3.1
-
globals@13.24.0:
dependencies:
type-fest: 0.20.2
@@ -19469,16 +16924,12 @@ snapshots:
merge2: 1.4.1
slash: 3.0.0
- globjoin@0.1.4: {}
-
globrex@0.1.2: {}
gopd@1.2.0: {}
graceful-fs@4.2.11: {}
- graphemer@1.4.0: {}
-
graphql@16.13.1: {}
gray-matter@4.0.3:
@@ -19513,8 +16964,6 @@ snapshots:
- bufferutil
- utf-8-validate
- hard-rejection@2.1.0: {}
-
has-ansi@2.0.0:
dependencies:
ansi-regex: 2.1.1
@@ -19698,18 +17147,12 @@ snapshots:
hosted-git-info@2.8.9: {}
- hosted-git-info@4.1.0:
- dependencies:
- lru-cache: 6.0.0
-
html-encoding-sniffer@4.0.0:
dependencies:
whatwg-encoding: 3.1.1
html-escaper@2.0.2: {}
- html-tags@3.3.1: {}
-
html-void-elements@3.0.0: {}
htmlparser2@9.1.0:
@@ -19784,8 +17227,6 @@ snapshots:
dependencies:
resolve-from: 5.0.0
- import-lazy@4.0.0: {}
-
import-local@3.2.0:
dependencies:
pkg-dir: 4.2.0
@@ -19834,11 +17275,6 @@ snapshots:
is-alphabetical: 2.0.1
is-decimal: 2.0.1
- is-arguments@1.2.0:
- dependencies:
- call-bound: 1.0.4
- has-tostringtag: 1.0.2
-
is-array-buffer@3.0.5:
dependencies:
call-bind: 1.0.8
@@ -19870,10 +17306,6 @@ snapshots:
is-buffer@2.0.5: {}
- is-bun-module@2.0.0:
- dependencies:
- semver: 7.7.4
-
is-callable@1.2.7: {}
is-core-module@2.16.1:
@@ -19954,10 +17386,6 @@ snapshots:
is-obj@2.0.0: {}
- is-path-inside@3.0.3: {}
-
- is-plain-obj@1.1.0: {}
-
is-plain-obj@2.1.0: {}
is-plain-obj@4.1.0: {}
@@ -19966,8 +17394,6 @@ snapshots:
dependencies:
isobject: 3.0.1
- is-plain-object@5.0.0: {}
-
is-potential-custom-element-name@1.0.1: {}
is-reference@1.2.1:
@@ -20094,21 +17520,6 @@ snapshots:
html-escaper: 2.0.2
istanbul-lib-report: 3.0.1
- iterator.prototype@1.1.5:
- dependencies:
- define-data-property: 1.1.4
- es-object-atoms: 1.1.1
- get-intrinsic: 1.3.0
- get-proto: 1.0.1
- has-symbols: 1.1.0
- set-function-name: 2.0.2
-
- jackspeak@2.3.6:
- dependencies:
- '@isaacs/cliui': 8.0.2
- optionalDependencies:
- '@pkgjs/parseargs': 0.11.0
-
jackspeak@3.4.3:
dependencies:
'@isaacs/cliui': 8.0.2
@@ -20125,41 +17536,12 @@ snapshots:
filelist: 1.0.5
picocolors: 1.1.1
- jest-changed-files@28.1.3:
- dependencies:
- execa: 5.1.1
- p-limit: 3.1.0
-
jest-changed-files@29.7.0:
dependencies:
execa: 5.1.1
jest-util: 29.7.0
p-limit: 3.1.0
- jest-circus@28.1.3:
- dependencies:
- '@jest/environment': 28.1.3
- '@jest/expect': 28.1.3
- '@jest/test-result': 28.1.3
- '@jest/types': 28.1.3
- '@types/node': 22.19.15
- chalk: 4.1.2
- co: 4.6.0
- dedent: 0.7.0
- is-generator-fn: 2.1.0
- jest-each: 28.1.3
- jest-matcher-utils: 28.1.3
- jest-message-util: 28.1.3
- jest-runtime: 28.1.3
- jest-snapshot: 28.1.3
- jest-util: 28.1.3
- p-limit: 3.1.0
- pretty-format: 28.1.3
- slash: 3.0.0
- stack-utils: 2.0.6
- transitivePeerDependencies:
- - supports-color
-
jest-circus@29.7.0(babel-plugin-macros@3.1.0):
dependencies:
'@jest/environment': 29.7.0
@@ -20186,27 +17568,6 @@ snapshots:
- babel-plugin-macros
- supports-color
- jest-cli@28.1.3(@types/node@22.19.15)(node-notifier@8.0.2):
- dependencies:
- '@jest/core': 28.1.3(node-notifier@8.0.2)
- '@jest/test-result': 28.1.3
- '@jest/types': 28.1.3
- chalk: 4.1.2
- exit: 0.1.2
- graceful-fs: 4.2.11
- import-local: 3.2.0
- jest-config: 28.1.3(@types/node@22.19.15)
- jest-util: 28.1.3
- jest-validate: 28.1.3
- prompts: 2.4.2
- yargs: 17.7.2
- optionalDependencies:
- node-notifier: 8.0.2
- transitivePeerDependencies:
- - '@types/node'
- - supports-color
- - ts-node
-
jest-cli@29.7.0(@types/node@20.17.24):
dependencies:
'@jest/core': 29.7.0
@@ -20268,37 +17629,36 @@ snapshots:
- supports-color
- ts-node
- jest-cli@29.7.0(@types/node@22.19.15)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2):
+ jest-cli@29.7.0(@types/node@24.10.13):
dependencies:
- '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)
+ '@jest/core': 29.7.0
'@jest/test-result': 29.7.0
'@jest/types': 29.6.3
chalk: 4.1.2
- create-jest: 29.7.0(@types/node@22.19.15)(babel-plugin-macros@3.1.0)
+ create-jest: 29.7.0(@types/node@24.10.13)
exit: 0.1.2
import-local: 3.2.0
- jest-config: 29.7.0(@types/node@22.19.15)(babel-plugin-macros@3.1.0)
+ jest-config: 29.7.0(@types/node@24.10.13)
jest-util: 29.7.0
jest-validate: 29.7.0
yargs: 17.7.2
- optionalDependencies:
- node-notifier: 8.0.2
transitivePeerDependencies:
- '@types/node'
- babel-plugin-macros
- supports-color
- ts-node
+ optional: true
- jest-cli@29.7.0(@types/node@24.10.13):
+ jest-cli@29.7.0(@types/node@25.4.0):
dependencies:
'@jest/core': 29.7.0
'@jest/test-result': 29.7.0
'@jest/types': 29.6.3
chalk: 4.1.2
- create-jest: 29.7.0(@types/node@24.10.13)
+ create-jest: 29.7.0(@types/node@25.4.0)
exit: 0.1.2
import-local: 3.2.0
- jest-config: 29.7.0(@types/node@24.10.13)
+ jest-config: 29.7.0(@types/node@25.4.0)
jest-util: 29.7.0
jest-validate: 29.7.0
yargs: 17.7.2
@@ -20309,56 +17669,59 @@ snapshots:
- ts-node
optional: true
- jest-cli@29.7.0(@types/node@25.4.0):
+ jest-cli@29.7.0(@types/node@25.4.0)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2):
dependencies:
- '@jest/core': 29.7.0
+ '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)
'@jest/test-result': 29.7.0
'@jest/types': 29.6.3
chalk: 4.1.2
- create-jest: 29.7.0(@types/node@25.4.0)
+ create-jest: 29.7.0(@types/node@25.4.0)(babel-plugin-macros@3.1.0)
exit: 0.1.2
import-local: 3.2.0
- jest-config: 29.7.0(@types/node@25.4.0)
+ jest-config: 29.7.0(@types/node@25.4.0)(babel-plugin-macros@3.1.0)
jest-util: 29.7.0
jest-validate: 29.7.0
yargs: 17.7.2
+ optionalDependencies:
+ node-notifier: 8.0.2
transitivePeerDependencies:
- '@types/node'
- babel-plugin-macros
- supports-color
- ts-node
- optional: true
- jest-config@28.1.3(@types/node@22.19.15):
+ jest-config@29.7.0(@types/node@20.17.24):
dependencies:
'@babel/core': 7.29.0
- '@jest/test-sequencer': 28.1.3
- '@jest/types': 28.1.3
- babel-jest: 28.1.3(@babel/core@7.29.0)
+ '@jest/test-sequencer': 29.7.0
+ '@jest/types': 29.6.3
+ babel-jest: 29.7.0(@babel/core@7.29.0)
chalk: 4.1.2
ci-info: 3.9.0
deepmerge: 4.3.1
glob: 7.2.3
graceful-fs: 4.2.11
- jest-circus: 28.1.3
- jest-environment-node: 28.1.3
- jest-get-type: 28.0.2
- jest-regex-util: 28.0.2
- jest-resolve: 28.1.3
- jest-runner: 28.1.3
- jest-util: 28.1.3
- jest-validate: 28.1.3
+ jest-circus: 29.7.0(babel-plugin-macros@3.1.0)
+ jest-environment-node: 29.7.0
+ jest-get-type: 29.6.3
+ jest-regex-util: 29.6.3
+ jest-resolve: 29.7.0
+ jest-runner: 29.7.0
+ jest-util: 29.7.0
+ jest-validate: 29.7.0
micromatch: 4.0.8
parse-json: 5.2.0
- pretty-format: 28.1.3
+ pretty-format: 29.7.0
slash: 3.0.0
strip-json-comments: 3.1.1
optionalDependencies:
- '@types/node': 22.19.15
+ '@types/node': 20.17.24
transitivePeerDependencies:
+ - babel-plugin-macros
- supports-color
+ optional: true
- jest-config@29.7.0(@types/node@20.17.24):
+ jest-config@29.7.0(@types/node@22.19.11):
dependencies:
'@babel/core': 7.29.0
'@jest/test-sequencer': 29.7.0
@@ -20383,13 +17746,13 @@ snapshots:
slash: 3.0.0
strip-json-comments: 3.1.1
optionalDependencies:
- '@types/node': 20.17.24
+ '@types/node': 22.19.11
transitivePeerDependencies:
- babel-plugin-macros
- supports-color
optional: true
- jest-config@29.7.0(@types/node@22.19.11):
+ jest-config@29.7.0(@types/node@22.19.11)(babel-plugin-macros@3.1.0):
dependencies:
'@babel/core': 7.29.0
'@jest/test-sequencer': 29.7.0
@@ -20418,9 +17781,8 @@ snapshots:
transitivePeerDependencies:
- babel-plugin-macros
- supports-color
- optional: true
- jest-config@29.7.0(@types/node@22.19.11)(babel-plugin-macros@3.1.0):
+ jest-config@29.7.0(@types/node@22.19.15):
dependencies:
'@babel/core': 7.29.0
'@jest/test-sequencer': 29.7.0
@@ -20445,12 +17807,13 @@ snapshots:
slash: 3.0.0
strip-json-comments: 3.1.1
optionalDependencies:
- '@types/node': 22.19.11
+ '@types/node': 22.19.15
transitivePeerDependencies:
- babel-plugin-macros
- supports-color
+ optional: true
- jest-config@29.7.0(@types/node@22.19.15):
+ jest-config@29.7.0(@types/node@22.19.15)(babel-plugin-macros@3.1.0):
dependencies:
'@babel/core': 7.29.0
'@jest/test-sequencer': 29.7.0
@@ -20479,9 +17842,8 @@ snapshots:
transitivePeerDependencies:
- babel-plugin-macros
- supports-color
- optional: true
- jest-config@29.7.0(@types/node@22.19.15)(babel-plugin-macros@3.1.0):
+ jest-config@29.7.0(@types/node@24.10.13):
dependencies:
'@babel/core': 7.29.0
'@jest/test-sequencer': 29.7.0
@@ -20506,12 +17868,13 @@ snapshots:
slash: 3.0.0
strip-json-comments: 3.1.1
optionalDependencies:
- '@types/node': 22.19.15
+ '@types/node': 24.10.13
transitivePeerDependencies:
- babel-plugin-macros
- supports-color
+ optional: true
- jest-config@29.7.0(@types/node@24.10.13):
+ jest-config@29.7.0(@types/node@25.4.0):
dependencies:
'@babel/core': 7.29.0
'@jest/test-sequencer': 29.7.0
@@ -20536,13 +17899,13 @@ snapshots:
slash: 3.0.0
strip-json-comments: 3.1.1
optionalDependencies:
- '@types/node': 24.10.13
+ '@types/node': 25.4.0
transitivePeerDependencies:
- babel-plugin-macros
- supports-color
optional: true
- jest-config@29.7.0(@types/node@25.4.0):
+ jest-config@29.7.0(@types/node@25.4.0)(babel-plugin-macros@3.1.0):
dependencies:
'@babel/core': 7.29.0
'@jest/test-sequencer': 29.7.0
@@ -20571,7 +17934,6 @@ snapshots:
transitivePeerDependencies:
- babel-plugin-macros
- supports-color
- optional: true
jest-dev-server@9.0.2:
dependencies:
@@ -20585,13 +17947,6 @@ snapshots:
transitivePeerDependencies:
- debug
- jest-diff@28.1.3:
- dependencies:
- chalk: 4.1.2
- diff-sequences: 28.1.1
- jest-get-type: 28.0.2
- pretty-format: 28.1.3
-
jest-diff@29.7.0:
dependencies:
chalk: 4.1.2
@@ -20599,29 +17954,10 @@ snapshots:
jest-get-type: 29.6.3
pretty-format: 29.7.0
- jest-diff@30.3.0:
- dependencies:
- '@jest/diff-sequences': 30.3.0
- '@jest/get-type': 30.1.0
- chalk: 4.1.2
- pretty-format: 30.3.0
-
- jest-docblock@28.1.1:
- dependencies:
- detect-newline: 3.1.0
-
jest-docblock@29.7.0:
dependencies:
detect-newline: 3.1.0
- jest-each@28.1.3:
- dependencies:
- '@jest/types': 28.1.3
- chalk: 4.1.2
- jest-get-type: 28.0.2
- jest-util: 28.1.3
- pretty-format: 28.1.3
-
jest-each@29.7.0:
dependencies:
'@jest/types': 29.6.3
@@ -20639,15 +17975,6 @@ snapshots:
jest-mock: 27.5.1
jest-util: 27.5.1
- jest-environment-node@28.1.3:
- dependencies:
- '@jest/environment': 28.1.3
- '@jest/fake-timers': 28.1.3
- '@jest/types': 28.1.3
- '@types/node': 22.19.15
- jest-mock: 28.1.3
- jest-util: 28.1.3
-
jest-environment-node@29.7.0:
dependencies:
'@jest/environment': 29.7.0
@@ -20668,26 +17995,8 @@ snapshots:
- debug
- typescript
- jest-get-type@28.0.2: {}
-
jest-get-type@29.6.3: {}
- jest-haste-map@28.1.3:
- dependencies:
- '@jest/types': 28.1.3
- '@types/graceful-fs': 4.1.9
- '@types/node': 22.19.15
- anymatch: 3.1.3
- fb-watchman: 2.0.2
- graceful-fs: 4.2.11
- jest-regex-util: 28.0.2
- jest-util: 28.1.3
- jest-worker: 28.1.3
- micromatch: 4.0.8
- walker: 1.0.8
- optionalDependencies:
- fsevents: 2.3.3
-
jest-haste-map@29.7.0:
dependencies:
'@jest/types': 29.6.3
@@ -20704,30 +18013,11 @@ snapshots:
optionalDependencies:
fsevents: 2.3.3
- jest-junit@13.2.0:
- dependencies:
- mkdirp: 1.0.4
- strip-ansi: 6.0.1
- uuid: 8.3.2
- xml: 1.0.1
-
- jest-leak-detector@28.1.3:
- dependencies:
- jest-get-type: 28.0.2
- pretty-format: 28.1.3
-
jest-leak-detector@29.7.0:
dependencies:
jest-get-type: 29.6.3
pretty-format: 29.7.0
- jest-matcher-utils@28.1.3:
- dependencies:
- chalk: 4.1.2
- jest-diff: 28.1.3
- jest-get-type: 28.0.2
- pretty-format: 28.1.3
-
jest-matcher-utils@29.7.0:
dependencies:
chalk: 4.1.2
@@ -20735,13 +18025,6 @@ snapshots:
jest-get-type: 29.6.3
pretty-format: 29.7.0
- jest-matcher-utils@30.3.0:
- dependencies:
- '@jest/get-type': 30.1.0
- chalk: 4.1.2
- jest-diff: 30.3.0
- pretty-format: 30.3.0
-
jest-message-util@27.5.1:
dependencies:
'@babel/code-frame': 7.29.0
@@ -20754,18 +18037,6 @@ snapshots:
slash: 3.0.0
stack-utils: 2.0.6
- jest-message-util@28.1.3:
- dependencies:
- '@babel/code-frame': 7.29.0
- '@jest/types': 28.1.3
- '@types/stack-utils': 2.0.3
- chalk: 4.1.2
- graceful-fs: 4.2.11
- micromatch: 4.0.8
- pretty-format: 28.1.3
- slash: 3.0.0
- stack-utils: 2.0.6
-
jest-message-util@29.7.0:
dependencies:
'@babel/code-frame': 7.29.0
@@ -20778,44 +18049,17 @@ snapshots:
slash: 3.0.0
stack-utils: 2.0.6
- jest-message-util@30.3.0:
- dependencies:
- '@babel/code-frame': 7.29.0
- '@jest/types': 30.3.0
- '@types/stack-utils': 2.0.3
- chalk: 4.1.2
- graceful-fs: 4.2.11
- picomatch: 4.0.3
- pretty-format: 30.3.0
- slash: 3.0.0
- stack-utils: 2.0.6
-
jest-mock@27.5.1:
dependencies:
'@jest/types': 27.5.1
'@types/node': 22.19.15
- jest-mock@28.1.3:
- dependencies:
- '@jest/types': 28.1.3
- '@types/node': 22.19.15
-
jest-mock@29.7.0:
dependencies:
'@jest/types': 29.6.3
'@types/node': 22.19.15
jest-util: 29.7.0
- jest-mock@30.3.0:
- dependencies:
- '@jest/types': 30.3.0
- '@types/node': 22.19.15
- jest-util: 30.3.0
-
- jest-pnp-resolver@1.2.3(jest-resolve@28.1.3):
- optionalDependencies:
- jest-resolve: 28.1.3
-
jest-pnp-resolver@1.2.3(jest-resolve@29.7.0):
optionalDependencies:
jest-resolve: 29.7.0
@@ -20829,19 +18073,8 @@ snapshots:
- debug
- typescript
- jest-regex-util@28.0.2: {}
-
jest-regex-util@29.6.3: {}
- jest-regex-util@30.0.1: {}
-
- jest-resolve-dependencies@28.1.3:
- dependencies:
- jest-regex-util: 28.0.2
- jest-snapshot: 28.1.3
- transitivePeerDependencies:
- - supports-color
-
jest-resolve-dependencies@29.7.0:
dependencies:
jest-regex-util: 29.6.3
@@ -20849,18 +18082,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- jest-resolve@28.1.3:
- dependencies:
- chalk: 4.1.2
- graceful-fs: 4.2.11
- jest-haste-map: 28.1.3
- jest-pnp-resolver: 1.2.3(jest-resolve@28.1.3)
- jest-util: 28.1.3
- jest-validate: 28.1.3
- resolve: 1.22.11
- resolve.exports: 1.1.1
- slash: 3.0.0
-
jest-resolve@29.7.0:
dependencies:
chalk: 4.1.2
@@ -20873,32 +18094,6 @@ snapshots:
resolve.exports: 2.0.3
slash: 3.0.0
- jest-runner@28.1.3:
- dependencies:
- '@jest/console': 28.1.3
- '@jest/environment': 28.1.3
- '@jest/test-result': 28.1.3
- '@jest/transform': 28.1.3
- '@jest/types': 28.1.3
- '@types/node': 22.19.15
- chalk: 4.1.2
- emittery: 0.10.2
- graceful-fs: 4.2.11
- jest-docblock: 28.1.1
- jest-environment-node: 28.1.3
- jest-haste-map: 28.1.3
- jest-leak-detector: 28.1.3
- jest-message-util: 28.1.3
- jest-resolve: 28.1.3
- jest-runtime: 28.1.3
- jest-util: 28.1.3
- jest-watcher: 28.1.3
- jest-worker: 28.1.3
- p-limit: 3.1.0
- source-map-support: 0.5.13
- transitivePeerDependencies:
- - supports-color
-
jest-runner@29.7.0:
dependencies:
'@jest/console': 29.7.0
@@ -20925,33 +18120,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
- jest-runtime@28.1.3:
- dependencies:
- '@jest/environment': 28.1.3
- '@jest/fake-timers': 28.1.3
- '@jest/globals': 28.1.3
- '@jest/source-map': 28.1.2
- '@jest/test-result': 28.1.3
- '@jest/transform': 28.1.3
- '@jest/types': 28.1.3
- chalk: 4.1.2
- cjs-module-lexer: 1.4.3
- collect-v8-coverage: 1.0.3
- execa: 5.1.1
- glob: 7.2.3
- graceful-fs: 4.2.11
- jest-haste-map: 28.1.3
- jest-message-util: 28.1.3
- jest-mock: 28.1.3
- jest-regex-util: 28.0.2
- jest-resolve: 28.1.3
- jest-snapshot: 28.1.3
- jest-util: 28.1.3
- slash: 3.0.0
- strip-bom: 4.0.0
- transitivePeerDependencies:
- - supports-color
-
jest-runtime@29.7.0:
dependencies:
'@jest/environment': 29.7.0
@@ -20972,38 +18140,10 @@ snapshots:
jest-mock: 29.7.0
jest-regex-util: 29.6.3
jest-resolve: 29.7.0
- jest-snapshot: 29.7.0
- jest-util: 29.7.0
- slash: 3.0.0
- strip-bom: 4.0.0
- transitivePeerDependencies:
- - supports-color
-
- jest-snapshot@28.1.3:
- dependencies:
- '@babel/core': 7.29.0
- '@babel/generator': 7.29.1
- '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.0)
- '@babel/traverse': 7.29.0
- '@babel/types': 7.29.0
- '@jest/expect-utils': 28.1.3
- '@jest/transform': 28.1.3
- '@jest/types': 28.1.3
- '@types/babel__traverse': 7.28.0
- '@types/prettier': 2.7.3
- babel-preset-current-node-syntax: 1.2.0(@babel/core@7.29.0)
- chalk: 4.1.2
- expect: 28.1.3
- graceful-fs: 4.2.11
- jest-diff: 28.1.3
- jest-get-type: 28.0.2
- jest-haste-map: 28.1.3
- jest-matcher-utils: 28.1.3
- jest-message-util: 28.1.3
- jest-util: 28.1.3
- natural-compare: 1.4.0
- pretty-format: 28.1.3
- semver: 7.7.4
+ jest-snapshot: 29.7.0
+ jest-util: 29.7.0
+ slash: 3.0.0
+ strip-bom: 4.0.0
transitivePeerDependencies:
- supports-color
@@ -21041,15 +18181,6 @@ snapshots:
graceful-fs: 4.2.11
picomatch: 2.3.1
- jest-util@28.1.3:
- dependencies:
- '@jest/types': 28.1.3
- '@types/node': 22.19.15
- chalk: 4.1.2
- ci-info: 3.9.0
- graceful-fs: 4.2.11
- picomatch: 2.3.1
-
jest-util@29.7.0:
dependencies:
'@jest/types': 29.6.3
@@ -21059,24 +18190,6 @@ snapshots:
graceful-fs: 4.2.11
picomatch: 2.3.1
- jest-util@30.3.0:
- dependencies:
- '@jest/types': 30.3.0
- '@types/node': 22.19.15
- chalk: 4.1.2
- ci-info: 4.4.0
- graceful-fs: 4.2.11
- picomatch: 4.0.3
-
- jest-validate@28.1.3:
- dependencies:
- '@jest/types': 28.1.3
- camelcase: 6.3.0
- chalk: 4.1.2
- jest-get-type: 28.0.2
- leven: 3.1.0
- pretty-format: 28.1.3
-
jest-validate@29.7.0:
dependencies:
'@jest/types': 29.6.3
@@ -21086,17 +18199,6 @@ snapshots:
leven: 3.1.0
pretty-format: 29.7.0
- jest-watcher@28.1.3:
- dependencies:
- '@jest/test-result': 28.1.3
- '@jest/types': 28.1.3
- '@types/node': 22.19.15
- ansi-escapes: 4.3.2
- chalk: 4.1.2
- emittery: 0.10.2
- jest-util: 28.1.3
- string-length: 4.0.2
-
jest-watcher@29.7.0:
dependencies:
'@jest/test-result': 29.7.0
@@ -21120,12 +18222,6 @@ snapshots:
merge-stream: 2.0.0
supports-color: 8.1.1
- jest-worker@28.1.3:
- dependencies:
- '@types/node': 22.19.15
- merge-stream: 2.0.0
- supports-color: 8.1.1
-
jest-worker@29.7.0:
dependencies:
'@types/node': 22.19.15
@@ -21133,19 +18229,6 @@ snapshots:
merge-stream: 2.0.0
supports-color: 8.1.1
- jest@28.1.3(@types/node@22.19.15)(node-notifier@8.0.2):
- dependencies:
- '@jest/core': 28.1.3(node-notifier@8.0.2)
- '@jest/types': 28.1.3
- import-local: 3.2.0
- jest-cli: 28.1.3(@types/node@22.19.15)(node-notifier@8.0.2)
- optionalDependencies:
- node-notifier: 8.0.2
- transitivePeerDependencies:
- - '@types/node'
- - supports-color
- - ts-node
-
jest@29.7.0(@types/node@20.17.24):
dependencies:
'@jest/core': 29.7.0
@@ -21186,26 +18269,25 @@ snapshots:
- supports-color
- ts-node
- jest@29.7.0(@types/node@22.19.15)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2):
+ jest@29.7.0(@types/node@24.10.13):
dependencies:
- '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)
+ '@jest/core': 29.7.0
'@jest/types': 29.6.3
import-local: 3.2.0
- jest-cli: 29.7.0(@types/node@22.19.15)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)
- optionalDependencies:
- node-notifier: 8.0.2
+ jest-cli: 29.7.0(@types/node@24.10.13)
transitivePeerDependencies:
- '@types/node'
- babel-plugin-macros
- supports-color
- ts-node
+ optional: true
- jest@29.7.0(@types/node@24.10.13):
+ jest@29.7.0(@types/node@25.4.0):
dependencies:
'@jest/core': 29.7.0
'@jest/types': 29.6.3
import-local: 3.2.0
- jest-cli: 29.7.0(@types/node@24.10.13)
+ jest-cli: 29.7.0(@types/node@25.4.0)
transitivePeerDependencies:
- '@types/node'
- babel-plugin-macros
@@ -21213,18 +18295,19 @@ snapshots:
- ts-node
optional: true
- jest@29.7.0(@types/node@25.4.0):
+ jest@29.7.0(@types/node@25.4.0)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2):
dependencies:
- '@jest/core': 29.7.0
+ '@jest/core': 29.7.0(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)
'@jest/types': 29.6.3
import-local: 3.2.0
- jest-cli: 29.7.0(@types/node@25.4.0)
+ jest-cli: 29.7.0(@types/node@25.4.0)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)
+ optionalDependencies:
+ node-notifier: 8.0.2
transitivePeerDependencies:
- '@types/node'
- babel-plugin-macros
- supports-color
- ts-node
- optional: true
jiti@1.21.7: {}
@@ -21358,10 +18441,6 @@ snapshots:
json-stable-stringify-without-jsonify@1.0.1: {}
- json5@1.0.2:
- dependencies:
- minimist: 1.2.8
-
json5@2.2.3: {}
jsonfile@4.0.0:
@@ -21389,13 +18468,6 @@ snapshots:
ms: 2.1.3
semver: 7.7.4
- jsx-ast-utils@3.3.5:
- dependencies:
- array-includes: 3.1.9
- array.prototype.flat: 1.3.3
- object.assign: 4.1.7
- object.values: 1.2.1
-
jwa@2.0.1:
dependencies:
buffer-equal-constant-time: 1.0.1
@@ -21423,8 +18495,6 @@ snapshots:
kleur@4.1.5: {}
- known-css-properties@0.26.0: {}
-
langium@4.2.1:
dependencies:
chevrotain: 11.1.2
@@ -21433,12 +18503,6 @@ snapshots:
vscode-languageserver-textdocument: 1.0.12
vscode-uri: 3.1.0
- language-subtag-registry@0.3.23: {}
-
- language-tags@1.0.9:
- dependencies:
- language-subtag-registry: 0.3.23
-
layout-base@1.0.2: {}
layout-base@2.0.1: {}
@@ -21676,13 +18740,9 @@ snapshots:
dependencies:
yallist: 3.1.1
- lru-cache@6.0.0:
- dependencies:
- yallist: 4.0.0
-
lru-cache@7.18.3: {}
- lucide-react@0.577.0(react@19.2.4):
+ lucide-react@1.0.1(react@19.2.4):
dependencies:
react: 19.2.4
@@ -21715,16 +18775,10 @@ snapshots:
dependencies:
semver: 7.7.4
- make-error@1.3.6: {}
-
makeerror@1.0.12:
dependencies:
tmpl: 1.0.5
- map-obj@1.0.1: {}
-
- map-obj@4.3.0: {}
-
markdown-extensions@2.0.0: {}
markdown-table@3.0.4: {}
@@ -21753,8 +18807,6 @@ snapshots:
mj-context-menu: 0.6.1
speech-rule-engine: 4.1.2
- mathml-tag-names@2.1.3: {}
-
maxmin@2.1.0:
dependencies:
chalk: 1.1.3
@@ -21987,21 +19039,6 @@ snapshots:
memorystream@0.3.1: {}
- meow@9.0.0:
- dependencies:
- '@types/minimist': 1.2.5
- camelcase-keys: 6.2.2
- decamelize: 1.2.0
- decamelize-keys: 1.1.1
- hard-rejection: 2.1.0
- minimist-options: 4.1.0
- normalize-package-data: 3.0.3
- read-pkg-up: 7.0.1
- redent: 3.0.0
- trim-newlines: 3.0.1
- type-fest: 0.18.1
- yargs-parser: 20.2.9
-
merge-stream@2.0.0: {}
merge2@1.4.1: {}
@@ -22397,20 +19434,10 @@ snapshots:
dependencies:
brace-expansion: 1.1.12
- minimatch@9.0.3:
- dependencies:
- brace-expansion: 2.0.2
-
minimatch@9.0.9:
dependencies:
brace-expansion: 2.0.2
- minimist-options@4.1.0:
- dependencies:
- arrify: 1.0.1
- is-plain-obj: 1.1.0
- kind-of: 6.0.3
-
minimist@1.2.8: {}
minipass@7.1.3: {}
@@ -22419,8 +19446,6 @@ snapshots:
mj-context-menu@0.6.1: {}
- mkdirp@1.0.4: {}
-
mlly@1.8.0:
dependencies:
acorn: 8.16.0
@@ -22554,10 +19579,6 @@ snapshots:
nanoid@3.3.11: {}
- napi-postinstall@0.3.4: {}
-
- natural-compare-lite@1.4.0: {}
-
natural-compare@1.4.0: {}
negotiator@1.0.0: {}
@@ -22747,13 +19768,6 @@ snapshots:
emojilib: 2.4.0
skin-tone: 2.0.0
- node-exports-info@1.6.0:
- dependencies:
- array.prototype.flatmap: 1.3.3
- es-errors: 1.3.0
- object.entries: 1.1.9
- semver: 6.3.1
-
node-fetch@2.7.0(encoding@0.1.13):
dependencies:
whatwg-url: 5.0.0
@@ -22783,13 +19797,6 @@ snapshots:
semver: 5.7.2
validate-npm-package-license: 3.0.4
- normalize-package-data@3.0.3:
- dependencies:
- hosted-git-info: 4.1.0
- is-core-module: 2.16.1
- semver: 7.7.4
- validate-npm-package-license: 3.0.4
-
normalize-path@3.0.0: {}
normalize-url@6.1.0: {}
@@ -22832,11 +19839,6 @@ snapshots:
object-inspect@1.13.4: {}
- object-is@1.1.6:
- dependencies:
- call-bind: 1.0.8
- define-properties: 1.2.1
-
object-keys@1.1.1: {}
object.assign@4.1.7:
@@ -22848,33 +19850,6 @@ snapshots:
has-symbols: 1.1.0
object-keys: 1.1.1
- object.entries@1.1.9:
- dependencies:
- call-bind: 1.0.8
- call-bound: 1.0.4
- define-properties: 1.2.1
- es-object-atoms: 1.1.1
-
- object.fromentries@2.0.8:
- dependencies:
- call-bind: 1.0.8
- define-properties: 1.2.1
- es-abstract: 1.24.1
- es-object-atoms: 1.1.1
-
- object.groupby@1.0.3:
- dependencies:
- call-bind: 1.0.8
- define-properties: 1.2.1
- es-abstract: 1.24.1
-
- object.values@1.2.1:
- dependencies:
- call-bind: 1.0.8
- call-bound: 1.0.4
- define-properties: 1.2.1
- es-object-atoms: 1.1.1
-
obug@2.1.1: {}
once@1.4.0:
@@ -23061,6 +20036,8 @@ snapshots:
path-exists@4.0.0: {}
+ path-expression-matcher@1.2.0: {}
+
path-is-absolute@1.0.1: {}
path-key@2.0.1: {}
@@ -23551,12 +20528,6 @@ snapshots:
postcss: 8.5.8
thenby: 1.3.4
- postcss-resolve-nested-selector@0.1.6: {}
-
- postcss-safe-parser@6.0.0(postcss@8.5.8):
- dependencies:
- postcss: 8.5.8
-
postcss-selector-parser@6.1.2:
dependencies:
cssesc: 3.0.0
@@ -23618,10 +20589,6 @@ snapshots:
prelude-ls@1.2.1: {}
- prettier-linter-helpers@1.0.1:
- dependencies:
- fast-diff: 1.3.0
-
prettier-plugin-packagejson@2.5.10(prettier@3.5.3):
dependencies:
sort-package-json: 2.15.1
@@ -23641,18 +20608,18 @@ snapshots:
pretty-bytes@5.6.0: {}
- pretty-format@27.5.1:
+ pretty-format@26.6.2:
dependencies:
+ '@jest/types': 26.6.2
ansi-regex: 5.0.1
- ansi-styles: 5.2.0
+ ansi-styles: 4.3.0
react-is: 17.0.2
- pretty-format@28.1.3:
+ pretty-format@27.5.1:
dependencies:
- '@jest/schemas': 28.1.3
ansi-regex: 5.0.1
ansi-styles: 5.2.0
- react-is: 18.3.1
+ react-is: 17.0.2
pretty-format@29.7.0:
dependencies:
@@ -23662,12 +20629,6 @@ snapshots:
pretty-format@3.8.0: {}
- pretty-format@30.3.0:
- dependencies:
- '@jest/schemas': 30.0.5
- ansi-styles: 5.2.0
- react-is: 18.3.1
-
pretty-hrtime@1.0.3: {}
pretty-quick@3.3.1(prettier@2.8.8):
@@ -23777,8 +20738,6 @@ snapshots:
queue-microtask@1.2.3: {}
- quick-lru@4.0.1: {}
-
random-bytes@1.0.0: {}
raw-loader@4.0.2(webpack@5.105.4(@swc/core@1.15.13)):
@@ -23860,25 +20819,12 @@ snapshots:
dependencies:
pify: 2.3.0
- read-pkg-up@7.0.1:
- dependencies:
- find-up: 4.1.0
- read-pkg: 5.2.0
- type-fest: 0.8.1
-
read-pkg@3.0.0:
dependencies:
load-json-file: 4.0.0
normalize-package-data: 2.5.0
path-type: 3.0.0
- read-pkg@5.2.0:
- dependencies:
- '@types/normalize-package-data': 2.4.4
- normalize-package-data: 2.5.0
- parse-json: 5.2.0
- type-fest: 0.6.0
-
read-yaml-file@1.1.0:
dependencies:
graceful-fs: 4.2.11
@@ -24149,8 +21095,6 @@ snapshots:
resolve-pkg-maps@1.0.0: {}
- resolve.exports@1.1.1: {}
-
resolve.exports@2.0.3: {}
resolve@1.22.11:
@@ -24159,15 +21103,6 @@ snapshots:
path-parse: 1.0.7
supports-preserve-symlinks-flag: 1.0.0
- resolve@2.0.0-next.6:
- dependencies:
- es-errors: 1.3.0
- is-core-module: 2.16.1
- node-exports-info: 1.6.0
- object-keys: 1.1.1
- path-parse: 1.0.7
- supports-preserve-symlinks-flag: 1.0.0
-
restore-cursor@5.1.0:
dependencies:
onetime: 7.0.0
@@ -24676,8 +21611,6 @@ snapshots:
sql-highlight@6.1.0: {}
- stable-hash@0.0.5: {}
-
stable@0.1.8: {}
stack-utils@2.0.6:
@@ -24725,8 +21658,6 @@ snapshots:
char-regex: 1.0.2
strip-ansi: 6.0.1
- string-natural-compare@3.0.1: {}
-
string-width@4.2.3:
dependencies:
emoji-regex: 8.0.0
@@ -24750,12 +21681,6 @@ snapshots:
get-east-asian-width: 1.5.0
strip-ansi: 7.1.2
- string.prototype.includes@2.0.1:
- dependencies:
- call-bind: 1.0.8
- define-properties: 1.2.1
- es-abstract: 1.24.1
-
string.prototype.matchall@4.0.12:
dependencies:
call-bind: 1.0.8
@@ -24779,11 +21704,6 @@ snapshots:
es-abstract: 1.24.1
es-object-atoms: 1.1.1
- string.prototype.repeat@1.0.0:
- dependencies:
- define-properties: 1.2.1
- es-abstract: 1.24.1
-
string.prototype.trim@1.2.10:
dependencies:
call-bind: 1.0.8
@@ -24852,12 +21772,10 @@ snapshots:
dependencies:
js-tokens: 9.0.1
- strnum@1.1.2: {}
+ strnum@2.2.2: {}
style-inject@0.3.0: {}
- style-search@0.1.0: {}
-
style-to-js@1.1.21:
dependencies:
style-to-object: 1.0.14
@@ -24898,59 +21816,6 @@ snapshots:
postcss: 8.5.8
postcss-selector-parser: 7.1.1
- stylelint-config-prettier@9.0.5(stylelint@14.16.1):
- dependencies:
- stylelint: 14.16.1
-
- stylelint-prettier@2.0.0(prettier@3.8.1)(stylelint@14.16.1):
- dependencies:
- prettier: 3.8.1
- prettier-linter-helpers: 1.0.1
- stylelint: 14.16.1
-
- stylelint@14.16.1:
- dependencies:
- '@csstools/selector-specificity': 2.2.0(postcss-selector-parser@6.1.2)
- balanced-match: 2.0.0
- colord: 2.9.3
- cosmiconfig: 7.1.0
- css-functions-list: 3.3.3
- debug: 4.4.3
- fast-glob: 3.3.3
- fastest-levenshtein: 1.0.16
- file-entry-cache: 6.0.1
- global-modules: 2.0.0
- globby: 11.1.0
- globjoin: 0.1.4
- html-tags: 3.3.1
- ignore: 5.3.2
- import-lazy: 4.0.0
- imurmurhash: 0.1.4
- is-plain-object: 5.0.0
- known-css-properties: 0.26.0
- mathml-tag-names: 2.1.3
- meow: 9.0.0
- micromatch: 4.0.8
- normalize-path: 3.0.0
- picocolors: 1.1.1
- postcss: 8.5.8
- postcss-media-query-parser: 0.2.3
- postcss-resolve-nested-selector: 0.1.6
- postcss-safe-parser: 6.0.0(postcss@8.5.8)
- postcss-selector-parser: 6.1.2
- postcss-value-parser: 4.2.0
- resolve-from: 5.0.0
- string-width: 4.2.3
- strip-ansi: 6.0.1
- style-search: 0.1.0
- supports-hyperlinks: 2.3.0
- svg-tags: 1.0.0
- table: 6.9.0
- v8-compile-cache: 2.4.0
- write-file-atomic: 4.0.2
- transitivePeerDependencies:
- - supports-color
-
stylis@4.3.6: {}
sucrase@3.35.1:
@@ -24977,11 +21842,6 @@ snapshots:
dependencies:
has-flag: 4.0.0
- supports-hyperlinks@2.3.0:
- dependencies:
- has-flag: 4.0.0
- supports-color: 7.2.0
-
supports-hyperlinks@3.2.0:
dependencies:
has-flag: 4.0.0
@@ -24989,8 +21849,6 @@ snapshots:
supports-preserve-symlinks-flag@1.0.0: {}
- svg-tags@1.0.0: {}
-
svgo@2.8.2:
dependencies:
commander: 7.2.0
@@ -25062,8 +21920,6 @@ snapshots:
- tsx
- yaml
- tailwindcss@4.2.1: {}
-
tailwindcss@4.2.2: {}
tapable@2.3.0: {}
@@ -25112,11 +21968,6 @@ snapshots:
term-size@2.2.1: {}
- terminal-link@2.1.1:
- dependencies:
- ansi-escapes: 4.3.2
- supports-hyperlinks: 2.3.0
-
terser-webpack-plugin@5.4.0(@swc/core@1.15.13)(webpack@5.105.2(@swc/core@1.15.13)):
dependencies:
'@jridgewell/trace-mapping': 0.3.31
@@ -25268,20 +22119,10 @@ snapshots:
trim-lines@3.0.1: {}
- trim-newlines@3.0.1: {}
-
trough@1.0.5: {}
trough@2.2.0: {}
- ts-api-utils@1.4.3(typescript@4.9.5):
- dependencies:
- typescript: 4.9.5
-
- ts-api-utils@2.4.0(typescript@4.9.5):
- dependencies:
- typescript: 4.9.5
-
ts-api-utils@2.4.0(typescript@5.9.3):
dependencies:
typescript: 5.9.3
@@ -25290,34 +22131,11 @@ snapshots:
ts-interface-checker@0.1.13: {}
- ts-jest@28.0.3(@babel/core@7.29.0)(babel-jest@28.1.3(@babel/core@7.29.0))(jest@28.1.3(@types/node@22.19.15)(node-notifier@8.0.2))(typescript@4.9.5):
- dependencies:
- bs-logger: 0.2.6
- fast-json-stable-stringify: 2.1.0
- jest: 28.1.3(@types/node@22.19.15)(node-notifier@8.0.2)
- jest-util: 28.1.3
- json5: 2.2.3
- lodash.memoize: 4.1.2
- make-error: 1.3.6
- semver: 7.7.4
- typescript: 4.9.5
- yargs-parser: 20.2.9
- optionalDependencies:
- '@babel/core': 7.29.0
- babel-jest: 28.1.3(@babel/core@7.29.0)
-
ts-morph@27.0.2:
dependencies:
'@ts-morph/common': 0.28.1
code-block-writer: 13.0.3
- tsconfig-paths@3.15.0:
- dependencies:
- '@types/json5': 0.0.29
- json5: 1.0.2
- minimist: 1.2.8
- strip-bom: 3.0.0
-
tslib@1.14.1: {}
tslib@2.8.1: {}
@@ -25410,11 +22228,6 @@ snapshots:
- tsx
- yaml
- tsutils@3.21.0(typescript@4.9.5):
- dependencies:
- tslib: 1.14.1
- typescript: 4.9.5
-
tsx@4.19.3:
dependencies:
esbuild: 0.25.12
@@ -25422,69 +22235,42 @@ snapshots:
optionalDependencies:
fsevents: 2.3.3
- turbo-darwin-64@1.13.4:
- optional: true
-
turbo-darwin-64@2.8.10:
optional: true
turbo-darwin-64@2.8.15:
optional: true
- turbo-darwin-arm64@1.13.4:
- optional: true
-
turbo-darwin-arm64@2.8.10:
optional: true
turbo-darwin-arm64@2.8.15:
optional: true
- turbo-linux-64@1.13.4:
- optional: true
-
turbo-linux-64@2.8.10:
optional: true
turbo-linux-64@2.8.15:
optional: true
- turbo-linux-arm64@1.13.4:
- optional: true
-
turbo-linux-arm64@2.8.10:
optional: true
turbo-linux-arm64@2.8.15:
optional: true
- turbo-windows-64@1.13.4:
- optional: true
-
turbo-windows-64@2.8.10:
optional: true
turbo-windows-64@2.8.15:
optional: true
- turbo-windows-arm64@1.13.4:
- optional: true
-
turbo-windows-arm64@2.8.10:
optional: true
turbo-windows-arm64@2.8.15:
optional: true
- turbo@1.13.4:
- optionalDependencies:
- turbo-darwin-64: 1.13.4
- turbo-darwin-arm64: 1.13.4
- turbo-linux-64: 1.13.4
- turbo-linux-arm64: 1.13.4
- turbo-windows-64: 1.13.4
- turbo-windows-arm64: 1.13.4
-
turbo@2.8.10:
optionalDependencies:
turbo-darwin-64: 2.8.10
@@ -25521,16 +22307,10 @@ snapshots:
type-fest@0.16.0: {}
- type-fest@0.18.1: {}
-
type-fest@0.20.2: {}
type-fest@0.21.3: {}
- type-fest@0.6.0: {}
-
- type-fest@0.8.1: {}
-
type-fest@5.4.4:
dependencies:
tagged-tag: 1.0.0
@@ -25773,30 +22553,6 @@ snapshots:
universalify@2.0.1: {}
- unrs-resolver@1.11.1:
- dependencies:
- napi-postinstall: 0.3.4
- optionalDependencies:
- '@unrs/resolver-binding-android-arm-eabi': 1.11.1
- '@unrs/resolver-binding-android-arm64': 1.11.1
- '@unrs/resolver-binding-darwin-arm64': 1.11.1
- '@unrs/resolver-binding-darwin-x64': 1.11.1
- '@unrs/resolver-binding-freebsd-x64': 1.11.1
- '@unrs/resolver-binding-linux-arm-gnueabihf': 1.11.1
- '@unrs/resolver-binding-linux-arm-musleabihf': 1.11.1
- '@unrs/resolver-binding-linux-arm64-gnu': 1.11.1
- '@unrs/resolver-binding-linux-arm64-musl': 1.11.1
- '@unrs/resolver-binding-linux-ppc64-gnu': 1.11.1
- '@unrs/resolver-binding-linux-riscv64-gnu': 1.11.1
- '@unrs/resolver-binding-linux-riscv64-musl': 1.11.1
- '@unrs/resolver-binding-linux-s390x-gnu': 1.11.1
- '@unrs/resolver-binding-linux-x64-gnu': 1.11.1
- '@unrs/resolver-binding-linux-x64-musl': 1.11.1
- '@unrs/resolver-binding-wasm32-wasi': 1.11.1
- '@unrs/resolver-binding-win32-arm64-msvc': 1.11.1
- '@unrs/resolver-binding-win32-ia32-msvc': 1.11.1
- '@unrs/resolver-binding-win32-x64-msvc': 1.11.1
-
until-async@3.0.2: {}
upath@1.2.0: {}
@@ -25833,7 +22589,8 @@ snapshots:
uuid@11.1.0: {}
- uuid@8.3.2: {}
+ uuid@8.3.2:
+ optional: true
v8-compile-cache@2.4.0: {}
@@ -26679,16 +23436,12 @@ snapshots:
xml-name-validator@5.0.0: {}
- xml@1.0.1: {}
-
xmlchars@2.2.0: {}
y18n@5.0.8: {}
yallist@3.1.1: {}
- yallist@4.0.0: {}
-
yaml@1.10.2: {}
yaml@2.8.2: {}