diff --git a/.eslintrc b/.eslintrc
index fc85453..4fd0f9d 100644
--- a/.eslintrc
+++ b/.eslintrc
@@ -13,5 +13,8 @@
"ecmaVersion": "latest",
"sourceType": "module"
},
- "plugins": ["solid"]
+ "plugins": ["solid"],
+ "rules": {
+ "no-unused-vars": "off"
+ }
}
diff --git a/PR_DRAFT.md b/PR_DRAFT.md
new file mode 100644
index 0000000..fb65fbe
--- /dev/null
+++ b/PR_DRAFT.md
@@ -0,0 +1,58 @@
+# Title
+
+Align `solid-markdown` with `react-markdown` 10.1.0 and add Solid-native async rendering
+
+# Summary
+
+This update moves `solid-markdown` from an older compatibility-focused API to an upstream-aligned `react-markdown` 10.1.0 style API, adapted for Solid. The rendering pipeline now follows the upstream `remark -> rehype -> JSX runtime` model, the public options match current upstream concepts, and async unified plugins are supported both on the server and on the client.
+
+# What changed
+
+- Replaced the custom renderer/filter pipeline with an upstream-style processor flow and `hast-util-to-jsx-runtime`.
+- Aligned the public API around `Markdown`, `MarkdownAsync`, `MarkdownResource`, `remarkRehypeOptions`, and `urlTransform`.
+- Simplified custom component typing so overrides receive normal Solid intrinsic props plus `node`.
+- Removed legacy wrapper-element behavior and made removed pre-v9 props fail explicitly at runtime instead of lingering as soft compatibility.
+- Added a Solid-native client async path through `MarkdownResource`.
+- Expanded SSR and client coverage to include rendering parity, URL safety, removed-prop runtime errors, plugin/property passthrough, and async lifecycle behavior.
+
+# Why this is valuable
+
+- It makes the package easier to understand for anyone already using modern `react-markdown`.
+- It removes older behavior that was diverging from upstream semantics and complicating maintenance.
+- It gives Solid users a clear story for async plugins on both the server and the client.
+- It tightens the package surface area and types instead of preserving multiple generations of API compatibility.
+- It raises confidence in the port with a much broader regression suite across SSR and browser rendering.
+
+# Compatibility and migration
+
+This change is intentionally breaking in the same places where upstream has already moved on:
+
+- `SolidMarkdown` is removed in favor of the default `Markdown` export.
+- Wrapper props such as `class`/`className` are removed; callers should wrap the component themselves.
+- Legacy props such as `source`, `plugins`, `renderers`, `allowNode`, `allowedTypes`, `disallowedTypes`, `transformLinkUri`, and `transformImageUri` now throw.
+- `urlTransform` replaces the older link/image transform props.
+- `renderingStrategy` remains temporarily for the sync component only, but it is deprecated and intended for removal in the next major release.
+
+# Verification
+
+Verified locally with:
+
+```bash
+pnpm lint
+pnpm test
+pnpm build
+```
+
+Current test coverage includes:
+
+- SSR rendering coverage
+- Browser rendering coverage
+- URL sanitization and transform behavior
+- Removed-prop runtime error coverage
+- Async plugin behavior for both `MarkdownAsync` and `MarkdownResource`
+
+# Notes for review
+
+- The goal here is not to preserve every historical `solid-markdown` API quirk. The goal is to make this package a clean Solid port of modern `react-markdown`.
+- The only intentional short-term compatibility holdout is the deprecated `renderingStrategy` prop on `Markdown`.
+- The README and demo docs were updated to describe the new API and the current verification story so users do not have to infer behavior from source alone.
diff --git a/README.md b/README.md
index 6f17b74..6e7ab3f 100644
--- a/README.md
+++ b/README.md
@@ -4,27 +4,25 @@
# `solid-markdown`
-Render markdown as solid components.
+Render markdown to Solid components.
-The implementation is 90% shamelessly copied from https://github.com/remarkjs/react-markdown.
+`solid-markdown` now tracks the `react-markdown` 10.x API closely and keeps the rendering pipeline upstream-aligned while adapting the JSX output to Solid.
-Changes include:
+## Why this update matters
-- Replacing React specific component creation with SolidJS components
-- Porting the implementation from javascript with JSDoc types to typescript
-
-Please check the original repo for in-depth details on how to use.
+This package is now a real Solid port of modern `react-markdown`, not a compatibility wrapper around older behavior. The public API matches upstream concepts such as `components`, `remarkRehypeOptions`, `urlTransform`, and async plugin support, while Solid gets one extra client-side helper: `MarkdownResource`.
## Installation
+
```bash
-npm install solid-markdown
+pnpm add solid-markdown
```
-
## Usage
-```jsx
-import { SolidMarkdown } from "solid-markdown";
+```tsx
+import Markdown from "solid-markdown";
+import remarkGfm from "remark-gfm";
const markdown = `
# This is a title
@@ -33,25 +31,202 @@ const markdown = `
- a
- list
`;
-const App = () => {
- return ;
+
+export default function App() {
+ return {markdown} ;
+}
+```
+
+## API reference
+
+| Export | Type | Purpose |
+| --- | --- | --- |
+| `Markdown` | component | Synchronous markdown renderer. |
+| `MarkdownAsync` | function | Async/server renderer for async unified plugins. |
+| `MarkdownResource` | component | Solid client wrapper for async plugin pipelines. |
+| `defaultUrlTransform` | function | Default URL sanitizer used for links and images. |
+| `AllowElement` | type | Per-element allow/deny callback. |
+| `Components` | type | Custom tag-to-component overrides. |
+| `ExtraProps` | type | Extra props passed to custom components (`node`). |
+| `Options` | type | Shared renderer options. |
+| `MarkdownResourceOptions` | type | `Options` plus `fallback`. |
+| `UrlTransform` | type | URL rewrite/sanitization hook. |
+
+### `Markdown`
+
+Synchronous markdown renderer.
+
+```tsx
+import Markdown from "solid-markdown";
+import remarkGfm from "remark-gfm";
+
+{value()} ;
+```
+
+### `MarkdownAsync`
+
+Async/server helper for async unified plugins.
+
+```tsx
+import { MarkdownAsync } from "solid-markdown";
+import rehypeStarryNight from "rehype-starry-night";
+
+const content = await MarkdownAsync({
+ children: "```js\nconsole.log(3.14)\n```",
+ rehypePlugins: [rehypeStarryNight],
+});
+
+return
{content}
;
+```
+
+### `MarkdownResource`
+
+Solid-native client wrapper for async plugins.
+
+```tsx
+import { MarkdownResource } from "solid-markdown";
+import rehypeStarryNight from "rehype-starry-night";
+
+Rendering…}
+ rehypePlugins={[rehypeStarryNight]}
+/>;
+```
+
+### `defaultUrlTransform`
+
+By default, unsafe protocols such as `javascript:` are removed while standard URLs, fragments, and paths are preserved.
+
+```tsx
+import Markdown, { defaultUrlTransform } from "solid-markdown";
+
+ {
+ const safe = defaultUrlTransform(url);
+ if (!safe) return safe;
+ return key === "href" && node.tagName === "a" ? `/out?url=${encodeURIComponent(safe)}` : safe;
+ }}
+>
+ {"[OpenAI](https://openai.com)"}
+ ;
+```
+
+## Options
+
+Supported options match upstream `react-markdown` 10.x semantics:
+
+| Option | Purpose |
+| --- | --- |
+| `allowElement` | Decide per HAST element whether it should render. |
+| `allowedElements` | Allowlist tag names. |
+| `children` | Markdown source string. `null` and `undefined` render nothing. |
+| `components` | Override specific HTML tags with Solid components or tag names. |
+| `disallowedElements` | Blocklist tag names. |
+| `rehypePlugins` | Rehype plugins applied after markdown is converted to HAST. |
+| `remarkPlugins` | Remark plugins applied while parsing markdown. |
+| `remarkRehypeOptions` | Extra `remark-rehype` options merged with the safe defaults used by upstream. |
+| `skipHtml` | Ignore raw HTML in the markdown source. |
+| `unwrapDisallowed` | Keep children of removed nodes instead of dropping the whole subtree. |
+| `urlTransform` | Rewrite or sanitize link and image URLs. |
+
+## Components
+
+Custom components receive normal Solid intrinsic props plus `node`.
+
+```tsx
+import Markdown, { type Components } from "solid-markdown";
+
+const components: Components = {
+ code(props) {
+ return {props.children};
+ },
};
+
+{"`example`"} ;
+```
+
+## Migration
+
+### Default import
+
+Before:
+
+```tsx
+import { SolidMarkdown } from "solid-markdown";
+
+ ;
+```
+
+After:
+
+```tsx
+import Markdown from "solid-markdown";
+
+{markdown} ;
```
-## Rendering strategy
-There's an extra option you can pass to the markdown component: `renderingStrategy: "memo" | "reconcile"`.
+### Wrapper ownership
-The default value is `"memo"`, which means that the markdown parser will generate a new full AST tree each time (inside a `useMemo`), and use that.
-As a consequence, the full DOM will be re-rendered, even the markdown nodes that haven't changed. (Should be fine 90% of the time).
+Before:
-Using `reconcile` will switch the strategy to using a solid store with the `reconcile` function (https://docs.solidjs.com/reference/store-utilities/reconcile). This will diff the previous and next markdown ASTs and only trigger re-renders for the parts that have changed.
-This will help with cases like streaming partial content and updating the markdown gradually (see https://github.com/andi23rosca/solid-markdown/issues/32).
+```tsx
+{markdown} ;
+```
+
+After:
+
+```tsx
+
+ {markdown}
+
+```
+
+### URL transforms
+
+Before:
+
+```tsx
+ href} transformImageUri={(src) => src}>
+ {markdown}
+ ;
+```
+After:
```tsx
- ;
+ {
+ if (key === "href") return url;
+ if (key === "src") return url;
+ return url;
+ }}
+>
+ {markdown}
+ ;
+```
+
+### Removed and deprecated behavior
+
+- `SolidMarkdown` is gone. Use the default export instead.
+- Wrapper props such as `class` and `className` are gone. Wrap `Markdown` in your own element.
+- Legacy pre-v9 props now throw at runtime instead of being silently accepted. This includes deprecated names such as `source`, `plugins`, `renderers`, `allowNode`, `allowedTypes`, `disallowedTypes`, `transformLinkUri`, `transformImageUri`, `linkTarget`, and the old source-position props.
+- `urlTransform` replaces `transformLinkUri` and `transformImageUri`.
+- `renderingStrategy="memo" | "reconcile"` still exists temporarily on `Markdown`, but it is deprecated and will be removed in the next major release.
+
+## Testing and status
+
+Local verification for this port currently runs through:
+
+```bash
+pnpm lint
+pnpm test
+pnpm build
```
-## TODO
+Current status:
-- [ ] Port unit tests from from original library
+- Sync rendering is supported through `Markdown`.
+- Async unified plugins are supported on the server through `MarkdownAsync`.
+- Async unified plugins are supported on the client through `MarkdownResource`.
+- SSR and DOM behavior are covered by the package test suite.
diff --git a/dev/README.md b/dev/README.md
index 9337430..964b427 100644
--- a/dev/README.md
+++ b/dev/README.md
@@ -1,32 +1,29 @@
-# SolidStart
+# Dev playground
-Everything you need to build a Solid project, powered by [`solid-start`](https://start.solidjs.com);
+This app is the local playground for the synchronous `Markdown` API. It renders markdown with `remark-gfm`, lets you edit the source live, and exercises custom component overrides against the package source in this repo.
-## Creating a project
+## What it covers
-```bash
-# create a new project in the current directory
-npm init solid@latest
-
-# create a new project in my-app
-npm init solid@latest my-app
-```
+- Default `Markdown` import
+- `remarkPlugins={[remarkGfm]}`
+- Live markdown editing
+- Custom component mapping for headings
-## Developing
+## Running it
Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server:
```bash
-npm run dev
-
-# or start the server and open the app in a new browser tab
-npm run dev -- --open
+cd dev
+pnpm install
+pnpm dev
```
-## Building
+The demo imports the local package source directly, so it is useful for checking API ergonomics while working on the library.
-Solid apps are built with _presets_, which optimise your project for deployment to different environments.
-
-By default, `npm run build` will generate a Node app that you can run with `npm start`. To use a different preset, add it to the `devDependencies` in `package.json` and specify in your `app.config.js`.
+## Building
-## This project was created with the [Solid CLI](https://github.com/solidjs-community/solid-cli)
+```bash
+cd dev
+pnpm build
+```
diff --git a/dev/src/routes/index.tsx b/dev/src/routes/index.tsx
index fe72406..9b8b91b 100644
--- a/dev/src/routes/index.tsx
+++ b/dev/src/routes/index.tsx
@@ -1,8 +1,7 @@
// solid-refresh
-import { createSignal, type Component, For, Show, onMount } from "solid-js";
+import { createSignal, type Component, Show } from "solid-js";
import remarkGfm from "remark-gfm";
-import { SolidMarkdown } from "../../../src";
-import type { Components } from "../../../src/types";
+import Markdown, { type Components } from "../../../src";
const initial = `# 🚀 solid-markdown demo
@@ -49,15 +48,14 @@ const App: Component = () => {
{md()}
-
{md()}
-
+
>
@@ -68,8 +66,4 @@ const Heading2: Components["h2"] = (props) => {
return {props.children}
;
};
-const Text: Components["text"] = (props) => (
- {(char) => {char} }
-);
-
export default App;
diff --git a/package.json b/package.json
index c8d18d4..3a7a5bb 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "solid-markdown",
"version": "2.1.1",
- "description": "Markdown renderer for solid-js",
+ "description": "Solid component to render markdown",
"license": "MIT",
"keywords": [
"remark",
@@ -113,50 +113,57 @@
"prepublishOnly": "pnpm build",
"format": "prettier --ignore-path .gitignore -w \"src/**/*.{js,ts,json,css,tsx,jsx}\" \"dev/**/*.{js,ts,json,css,tsx,jsx}\"",
"lint": "concurrently pnpm:lint:*",
- "lint:code": "eslint --ignore-path .gitignore --max-warnings 0 src/**/*.{js,ts,tsx,jsx}",
+ "lint:code": "eslint --ignore-path .gitignore --max-warnings 0 \"src/**/*.{ts,tsx}\"",
"lint:types": "tsc --noEmit",
"update-deps": "pnpm up -Li"
},
"dependencies": {
- "comma-separated-tokens": "^2.0.3",
- "property-information": "^6.5.0",
+ "devlop": "^1.1.0",
+ "hast-util-to-jsx-runtime": "^2.3.6",
+ "html-url-attributes": "^3.0.1",
"remark-parse": "^11.0.0",
"remark-rehype": "^11.1.2",
- "space-separated-tokens": "^2.0.2",
- "style-to-object": "^0.3.0",
+ "solid-jsx": "^1.1.4",
"unified": "^11.0.5",
- "unist-util-visit": "^4.1.2",
+ "unist-util-visit": "^5.1.0",
"vfile": "^6.0.3"
},
"peerDependencies": {
- "solid-js": "^1.6.0"
+ "solid-js": "^1.8.0"
},
"devDependencies": {
"@biomejs/biome": "^1.9.4",
- "@types/hast": "^2.3.10",
+ "@solidjs/testing-library": "^0.8.10",
+ "@types/hast": "^3.0.4",
"@types/unist": "^3.0.3",
"@typescript-eslint/eslint-plugin": "^6.21.0",
"@typescript-eslint/parser": "^6.21.0",
+ "baseline-browser-mapping": "^2.10.0",
"concurrently": "^8.2.2",
"esbuild": "^0.18.20",
"esbuild-plugin-solid": "^0.5.0",
"eslint": "^8.57.1",
+ "eslint-config-prettier": "^9.1.2",
"eslint-plugin-eslint-comments": "^3.2.0",
"eslint-plugin-no-only-tests": "^3.3.0",
+ "eslint-plugin-solid": "^0.14.5",
"jsdom": "^22.1.0",
"prettier": "3.0.0",
+ "rehype-raw": "^7.0.0",
+ "rehype-starry-night": "^2.2.0",
"remark-gfm": "^4.0.1",
- "solid-js": "^1.9.10",
+ "remark-toc": "^9.0.0",
+ "solid-js": "^1.9.11",
"tsup": "^8.5.1",
"tsup-preset-solid": "^2.2.0",
"typescript": "^5.9.3",
- "vite": "^7.2.4",
+ "vite": "^7.3.1",
"vite-plugin-solid": "^2.11.10",
- "vitest": "^0.33.0"
+ "vitest": "^4.0.18"
},
"packageManager": "pnpm@9.15.9",
"engines": {
"node": ">=18",
"pnpm": ">=9.15.9"
}
-}
\ No newline at end of file
+}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 4fdf145..f65973c 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -8,30 +8,30 @@ importers:
.:
dependencies:
- comma-separated-tokens:
- specifier: ^2.0.3
- version: 2.0.3
- property-information:
- specifier: ^6.5.0
- version: 6.5.0
+ devlop:
+ specifier: ^1.1.0
+ version: 1.1.0
+ hast-util-to-jsx-runtime:
+ specifier: ^2.3.6
+ version: 2.3.6
+ html-url-attributes:
+ specifier: ^3.0.1
+ version: 3.0.1
remark-parse:
specifier: ^11.0.0
version: 11.0.0
remark-rehype:
specifier: ^11.1.2
version: 11.1.2
- space-separated-tokens:
- specifier: ^2.0.2
- version: 2.0.2
- style-to-object:
- specifier: ^0.3.0
- version: 0.3.0
+ solid-jsx:
+ specifier: ^1.1.4
+ version: 1.1.4(solid-js@1.9.11)
unified:
specifier: ^11.0.5
version: 11.0.5
unist-util-visit:
- specifier: ^4.1.2
- version: 4.1.2
+ specifier: ^5.1.0
+ version: 5.1.0
vfile:
specifier: ^6.0.3
version: 6.0.3
@@ -39,9 +39,12 @@ importers:
'@biomejs/biome':
specifier: ^1.9.4
version: 1.9.4
+ '@solidjs/testing-library':
+ specifier: ^0.8.10
+ version: 0.8.10(solid-js@1.9.11)
'@types/hast':
- specifier: ^2.3.10
- version: 2.3.10
+ specifier: ^3.0.4
+ version: 3.0.4
'@types/unist':
specifier: ^3.0.3
version: 3.0.3
@@ -51,6 +54,9 @@ importers:
'@typescript-eslint/parser':
specifier: ^6.21.0
version: 6.21.0(eslint@8.57.1)(typescript@5.9.3)
+ baseline-browser-mapping:
+ specifier: ^2.10.0
+ version: 2.10.0
concurrently:
specifier: ^8.2.2
version: 8.2.2
@@ -59,75 +65,90 @@ importers:
version: 0.18.20
esbuild-plugin-solid:
specifier: ^0.5.0
- version: 0.5.0(esbuild@0.18.20)(solid-js@1.9.10)
+ version: 0.5.0(esbuild@0.18.20)(solid-js@1.9.11)
eslint:
specifier: ^8.57.1
version: 8.57.1
+ eslint-config-prettier:
+ specifier: ^9.1.2
+ version: 9.1.2(eslint@8.57.1)
eslint-plugin-eslint-comments:
specifier: ^3.2.0
version: 3.2.0(eslint@8.57.1)
eslint-plugin-no-only-tests:
specifier: ^3.3.0
version: 3.3.0
+ eslint-plugin-solid:
+ specifier: ^0.14.5
+ version: 0.14.5(eslint@8.57.1)(typescript@5.9.3)
jsdom:
specifier: ^22.1.0
version: 22.1.0
prettier:
specifier: 3.0.0
version: 3.0.0
+ rehype-raw:
+ specifier: ^7.0.0
+ version: 7.0.0
+ rehype-starry-night:
+ specifier: ^2.2.0
+ version: 2.2.0
remark-gfm:
specifier: ^4.0.1
version: 4.0.1
+ remark-toc:
+ specifier: ^9.0.0
+ version: 9.0.0
solid-js:
- specifier: ^1.9.10
- version: 1.9.10
+ specifier: ^1.9.11
+ version: 1.9.11
tsup:
specifier: ^8.5.1
- version: 8.5.1(postcss@8.5.6)(typescript@5.9.3)(yaml@2.4.2)
+ version: 8.5.1(postcss@8.5.8)(typescript@5.9.3)(yaml@2.4.2)
tsup-preset-solid:
specifier: ^2.2.0
- version: 2.2.0(esbuild@0.18.20)(solid-js@1.9.10)(tsup@8.5.1(postcss@8.5.6)(typescript@5.9.3)(yaml@2.4.2))
+ version: 2.2.0(esbuild@0.18.20)(solid-js@1.9.11)(tsup@8.5.1(postcss@8.5.8)(typescript@5.9.3)(yaml@2.4.2))
typescript:
specifier: ^5.9.3
version: 5.9.3
vite:
- specifier: ^7.2.4
- version: 7.2.4(@types/node@24.10.1)(yaml@2.4.2)
+ specifier: ^7.3.1
+ version: 7.3.1(@types/node@24.10.1)(yaml@2.4.2)
vite-plugin-solid:
specifier: ^2.11.10
- version: 2.11.10(solid-js@1.9.10)(vite@7.2.4(@types/node@24.10.1)(yaml@2.4.2))
+ version: 2.11.10(solid-js@1.9.11)(vite@7.3.1(@types/node@24.10.1)(yaml@2.4.2))
vitest:
- specifier: ^0.33.0
- version: 0.33.0(jsdom@22.1.0)
+ specifier: ^4.0.18
+ version: 4.0.18(@types/node@24.10.1)(jsdom@22.1.0)(yaml@2.4.2)
packages:
- '@babel/code-frame@7.27.1':
- resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==}
+ '@babel/code-frame@7.29.0':
+ resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==}
engines: {node: '>=6.9.0'}
- '@babel/compat-data@7.28.5':
- resolution: {integrity: sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==}
+ '@babel/compat-data@7.29.0':
+ resolution: {integrity: sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==}
engines: {node: '>=6.9.0'}
- '@babel/core@7.28.5':
- resolution: {integrity: sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==}
+ '@babel/core@7.29.0':
+ resolution: {integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==}
engines: {node: '>=6.9.0'}
- '@babel/generator@7.28.5':
- resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==}
+ '@babel/generator@7.29.1':
+ resolution: {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==}
engines: {node: '>=6.9.0'}
'@babel/helper-annotate-as-pure@7.27.3':
resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==}
engines: {node: '>=6.9.0'}
- '@babel/helper-compilation-targets@7.27.2':
- resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==}
+ '@babel/helper-compilation-targets@7.28.6':
+ resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==}
engines: {node: '>=6.9.0'}
- '@babel/helper-create-class-features-plugin@7.28.5':
- resolution: {integrity: sha512-q3WC4JfdODypvxArsJQROfupPBq9+lMwjKq7C33GhbFYJsufD0yd/ziwD+hJucLeWsnFPWZjsU2DNFqBPE7jwQ==}
+ '@babel/helper-create-class-features-plugin@7.28.6':
+ resolution: {integrity: sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
@@ -144,12 +165,12 @@ packages:
resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==}
engines: {node: '>=6.9.0'}
- '@babel/helper-module-imports@7.27.1':
- resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==}
+ '@babel/helper-module-imports@7.28.6':
+ resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==}
engines: {node: '>=6.9.0'}
- '@babel/helper-module-transforms@7.28.3':
- resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==}
+ '@babel/helper-module-transforms@7.28.6':
+ resolution: {integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
@@ -158,12 +179,12 @@ packages:
resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==}
engines: {node: '>=6.9.0'}
- '@babel/helper-plugin-utils@7.27.1':
- resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==}
+ '@babel/helper-plugin-utils@7.28.6':
+ resolution: {integrity: sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==}
engines: {node: '>=6.9.0'}
- '@babel/helper-replace-supers@7.27.1':
- resolution: {integrity: sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==}
+ '@babel/helper-replace-supers@7.28.6':
+ resolution: {integrity: sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
@@ -184,35 +205,35 @@ packages:
resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==}
engines: {node: '>=6.9.0'}
- '@babel/helpers@7.28.4':
- resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==}
+ '@babel/helpers@7.28.6':
+ resolution: {integrity: sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==}
engines: {node: '>=6.9.0'}
- '@babel/parser@7.28.5':
- resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==}
+ '@babel/parser@7.29.0':
+ resolution: {integrity: sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==}
engines: {node: '>=6.0.0'}
hasBin: true
- '@babel/plugin-syntax-jsx@7.27.1':
- resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==}
+ '@babel/plugin-syntax-jsx@7.28.6':
+ resolution: {integrity: sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/plugin-syntax-typescript@7.27.1':
- resolution: {integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==}
+ '@babel/plugin-syntax-typescript@7.28.6':
+ resolution: {integrity: sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/plugin-transform-modules-commonjs@7.27.1':
- resolution: {integrity: sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==}
+ '@babel/plugin-transform-modules-commonjs@7.28.6':
+ resolution: {integrity: sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/plugin-transform-typescript@7.28.5':
- resolution: {integrity: sha512-x2Qa+v/CuEoX7Dr31iAfr0IhInrVOWZU/2vJMJ00FOR/2nM0BcBEclpaf9sWCDc+v5e9dMrhSH8/atq/kX7+bA==}
+ '@babel/plugin-transform-typescript@7.28.6':
+ resolution: {integrity: sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
@@ -223,20 +244,20 @@ packages:
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/runtime@7.28.4':
- resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==}
+ '@babel/runtime@7.28.6':
+ resolution: {integrity: sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==}
engines: {node: '>=6.9.0'}
- '@babel/template@7.27.2':
- resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==}
+ '@babel/template@7.28.6':
+ resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==}
engines: {node: '>=6.9.0'}
- '@babel/traverse@7.28.5':
- resolution: {integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==}
+ '@babel/traverse@7.29.0':
+ resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==}
engines: {node: '>=6.9.0'}
- '@babel/types@7.28.5':
- resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==}
+ '@babel/types@7.29.0':
+ resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==}
engines: {node: '>=6.9.0'}
'@biomejs/biome@1.9.4':
@@ -292,14 +313,8 @@ packages:
cpu: [x64]
os: [win32]
- '@esbuild/aix-ppc64@0.25.12':
- resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==}
- engines: {node: '>=18'}
- cpu: [ppc64]
- os: [aix]
-
- '@esbuild/aix-ppc64@0.27.0':
- resolution: {integrity: sha512-KuZrd2hRjz01y5JK9mEBSD3Vj3mbCvemhT466rSuJYeE/hjuBrHfjjcjMdTm/sz7au+++sdbJZJmuBwQLuw68A==}
+ '@esbuild/aix-ppc64@0.27.3':
+ resolution: {integrity: sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==}
engines: {node: '>=18'}
cpu: [ppc64]
os: [aix]
@@ -310,14 +325,8 @@ packages:
cpu: [arm64]
os: [android]
- '@esbuild/android-arm64@0.25.12':
- resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [android]
-
- '@esbuild/android-arm64@0.27.0':
- resolution: {integrity: sha512-CC3vt4+1xZrs97/PKDkl0yN7w8edvU2vZvAFGD16n9F0Cvniy5qvzRXjfO1l94efczkkQE6g1x0i73Qf5uthOQ==}
+ '@esbuild/android-arm64@0.27.3':
+ resolution: {integrity: sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==}
engines: {node: '>=18'}
cpu: [arm64]
os: [android]
@@ -328,14 +337,8 @@ packages:
cpu: [arm]
os: [android]
- '@esbuild/android-arm@0.25.12':
- resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==}
- engines: {node: '>=18'}
- cpu: [arm]
- os: [android]
-
- '@esbuild/android-arm@0.27.0':
- resolution: {integrity: sha512-j67aezrPNYWJEOHUNLPj9maeJte7uSMM6gMoxfPC9hOg8N02JuQi/T7ewumf4tNvJadFkvLZMlAq73b9uwdMyQ==}
+ '@esbuild/android-arm@0.27.3':
+ resolution: {integrity: sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==}
engines: {node: '>=18'}
cpu: [arm]
os: [android]
@@ -346,14 +349,8 @@ packages:
cpu: [x64]
os: [android]
- '@esbuild/android-x64@0.25.12':
- resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [android]
-
- '@esbuild/android-x64@0.27.0':
- resolution: {integrity: sha512-wurMkF1nmQajBO1+0CJmcN17U4BP6GqNSROP8t0X/Jiw2ltYGLHpEksp9MpoBqkrFR3kv2/te6Sha26k3+yZ9Q==}
+ '@esbuild/android-x64@0.27.3':
+ resolution: {integrity: sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==}
engines: {node: '>=18'}
cpu: [x64]
os: [android]
@@ -364,14 +361,8 @@ packages:
cpu: [arm64]
os: [darwin]
- '@esbuild/darwin-arm64@0.25.12':
- resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [darwin]
-
- '@esbuild/darwin-arm64@0.27.0':
- resolution: {integrity: sha512-uJOQKYCcHhg07DL7i8MzjvS2LaP7W7Pn/7uA0B5S1EnqAirJtbyw4yC5jQ5qcFjHK9l6o/MX9QisBg12kNkdHg==}
+ '@esbuild/darwin-arm64@0.27.3':
+ resolution: {integrity: sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==}
engines: {node: '>=18'}
cpu: [arm64]
os: [darwin]
@@ -382,14 +373,8 @@ packages:
cpu: [x64]
os: [darwin]
- '@esbuild/darwin-x64@0.25.12':
- resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [darwin]
-
- '@esbuild/darwin-x64@0.27.0':
- resolution: {integrity: sha512-8mG6arH3yB/4ZXiEnXof5MK72dE6zM9cDvUcPtxhUZsDjESl9JipZYW60C3JGreKCEP+p8P/72r69m4AZGJd5g==}
+ '@esbuild/darwin-x64@0.27.3':
+ resolution: {integrity: sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==}
engines: {node: '>=18'}
cpu: [x64]
os: [darwin]
@@ -400,14 +385,8 @@ packages:
cpu: [arm64]
os: [freebsd]
- '@esbuild/freebsd-arm64@0.25.12':
- resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [freebsd]
-
- '@esbuild/freebsd-arm64@0.27.0':
- resolution: {integrity: sha512-9FHtyO988CwNMMOE3YIeci+UV+x5Zy8fI2qHNpsEtSF83YPBmE8UWmfYAQg6Ux7Gsmd4FejZqnEUZCMGaNQHQw==}
+ '@esbuild/freebsd-arm64@0.27.3':
+ resolution: {integrity: sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==}
engines: {node: '>=18'}
cpu: [arm64]
os: [freebsd]
@@ -418,14 +397,8 @@ packages:
cpu: [x64]
os: [freebsd]
- '@esbuild/freebsd-x64@0.25.12':
- resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [freebsd]
-
- '@esbuild/freebsd-x64@0.27.0':
- resolution: {integrity: sha512-zCMeMXI4HS/tXvJz8vWGexpZj2YVtRAihHLk1imZj4efx1BQzN76YFeKqlDr3bUWI26wHwLWPd3rwh6pe4EV7g==}
+ '@esbuild/freebsd-x64@0.27.3':
+ resolution: {integrity: sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==}
engines: {node: '>=18'}
cpu: [x64]
os: [freebsd]
@@ -436,14 +409,8 @@ packages:
cpu: [arm64]
os: [linux]
- '@esbuild/linux-arm64@0.25.12':
- resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [linux]
-
- '@esbuild/linux-arm64@0.27.0':
- resolution: {integrity: sha512-AS18v0V+vZiLJyi/4LphvBE+OIX682Pu7ZYNsdUHyUKSoRwdnOsMf6FDekwoAFKej14WAkOef3zAORJgAtXnlQ==}
+ '@esbuild/linux-arm64@0.27.3':
+ resolution: {integrity: sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==}
engines: {node: '>=18'}
cpu: [arm64]
os: [linux]
@@ -454,14 +421,8 @@ packages:
cpu: [arm]
os: [linux]
- '@esbuild/linux-arm@0.25.12':
- resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==}
- engines: {node: '>=18'}
- cpu: [arm]
- os: [linux]
-
- '@esbuild/linux-arm@0.27.0':
- resolution: {integrity: sha512-t76XLQDpxgmq2cNXKTVEB7O7YMb42atj2Re2Haf45HkaUpjM2J0UuJZDuaGbPbamzZ7bawyGFUkodL+zcE+jvQ==}
+ '@esbuild/linux-arm@0.27.3':
+ resolution: {integrity: sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==}
engines: {node: '>=18'}
cpu: [arm]
os: [linux]
@@ -472,14 +433,8 @@ packages:
cpu: [ia32]
os: [linux]
- '@esbuild/linux-ia32@0.25.12':
- resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==}
- engines: {node: '>=18'}
- cpu: [ia32]
- os: [linux]
-
- '@esbuild/linux-ia32@0.27.0':
- resolution: {integrity: sha512-Mz1jxqm/kfgKkc/KLHC5qIujMvnnarD9ra1cEcrs7qshTUSksPihGrWHVG5+osAIQ68577Zpww7SGapmzSt4Nw==}
+ '@esbuild/linux-ia32@0.27.3':
+ resolution: {integrity: sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==}
engines: {node: '>=18'}
cpu: [ia32]
os: [linux]
@@ -490,14 +445,8 @@ packages:
cpu: [loong64]
os: [linux]
- '@esbuild/linux-loong64@0.25.12':
- resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==}
- engines: {node: '>=18'}
- cpu: [loong64]
- os: [linux]
-
- '@esbuild/linux-loong64@0.27.0':
- resolution: {integrity: sha512-QbEREjdJeIreIAbdG2hLU1yXm1uu+LTdzoq1KCo4G4pFOLlvIspBm36QrQOar9LFduavoWX2msNFAAAY9j4BDg==}
+ '@esbuild/linux-loong64@0.27.3':
+ resolution: {integrity: sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==}
engines: {node: '>=18'}
cpu: [loong64]
os: [linux]
@@ -508,14 +457,8 @@ packages:
cpu: [mips64el]
os: [linux]
- '@esbuild/linux-mips64el@0.25.12':
- resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==}
- engines: {node: '>=18'}
- cpu: [mips64el]
- os: [linux]
-
- '@esbuild/linux-mips64el@0.27.0':
- resolution: {integrity: sha512-sJz3zRNe4tO2wxvDpH/HYJilb6+2YJxo/ZNbVdtFiKDufzWq4JmKAiHy9iGoLjAV7r/W32VgaHGkk35cUXlNOg==}
+ '@esbuild/linux-mips64el@0.27.3':
+ resolution: {integrity: sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==}
engines: {node: '>=18'}
cpu: [mips64el]
os: [linux]
@@ -526,14 +469,8 @@ packages:
cpu: [ppc64]
os: [linux]
- '@esbuild/linux-ppc64@0.25.12':
- resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==}
- engines: {node: '>=18'}
- cpu: [ppc64]
- os: [linux]
-
- '@esbuild/linux-ppc64@0.27.0':
- resolution: {integrity: sha512-z9N10FBD0DCS2dmSABDBb5TLAyF1/ydVb+N4pi88T45efQ/w4ohr/F/QYCkxDPnkhkp6AIpIcQKQ8F0ANoA2JA==}
+ '@esbuild/linux-ppc64@0.27.3':
+ resolution: {integrity: sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==}
engines: {node: '>=18'}
cpu: [ppc64]
os: [linux]
@@ -544,14 +481,8 @@ packages:
cpu: [riscv64]
os: [linux]
- '@esbuild/linux-riscv64@0.25.12':
- resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==}
- engines: {node: '>=18'}
- cpu: [riscv64]
- os: [linux]
-
- '@esbuild/linux-riscv64@0.27.0':
- resolution: {integrity: sha512-pQdyAIZ0BWIC5GyvVFn5awDiO14TkT/19FTmFcPdDec94KJ1uZcmFs21Fo8auMXzD4Tt+diXu1LW1gHus9fhFQ==}
+ '@esbuild/linux-riscv64@0.27.3':
+ resolution: {integrity: sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==}
engines: {node: '>=18'}
cpu: [riscv64]
os: [linux]
@@ -562,14 +493,8 @@ packages:
cpu: [s390x]
os: [linux]
- '@esbuild/linux-s390x@0.25.12':
- resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==}
- engines: {node: '>=18'}
- cpu: [s390x]
- os: [linux]
-
- '@esbuild/linux-s390x@0.27.0':
- resolution: {integrity: sha512-hPlRWR4eIDDEci953RI1BLZitgi5uqcsjKMxwYfmi4LcwyWo2IcRP+lThVnKjNtk90pLS8nKdroXYOqW+QQH+w==}
+ '@esbuild/linux-s390x@0.27.3':
+ resolution: {integrity: sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==}
engines: {node: '>=18'}
cpu: [s390x]
os: [linux]
@@ -580,26 +505,14 @@ packages:
cpu: [x64]
os: [linux]
- '@esbuild/linux-x64@0.25.12':
- resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [linux]
-
- '@esbuild/linux-x64@0.27.0':
- resolution: {integrity: sha512-1hBWx4OUJE2cab++aVZ7pObD6s+DK4mPGpemtnAORBvb5l/g5xFGk0vc0PjSkrDs0XaXj9yyob3d14XqvnQ4gw==}
+ '@esbuild/linux-x64@0.27.3':
+ resolution: {integrity: sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==}
engines: {node: '>=18'}
cpu: [x64]
os: [linux]
- '@esbuild/netbsd-arm64@0.25.12':
- resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [netbsd]
-
- '@esbuild/netbsd-arm64@0.27.0':
- resolution: {integrity: sha512-6m0sfQfxfQfy1qRuecMkJlf1cIzTOgyaeXaiVaaki8/v+WB+U4hc6ik15ZW6TAllRlg/WuQXxWj1jx6C+dfy3w==}
+ '@esbuild/netbsd-arm64@0.27.3':
+ resolution: {integrity: sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==}
engines: {node: '>=18'}
cpu: [arm64]
os: [netbsd]
@@ -610,26 +523,14 @@ packages:
cpu: [x64]
os: [netbsd]
- '@esbuild/netbsd-x64@0.25.12':
- resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [netbsd]
-
- '@esbuild/netbsd-x64@0.27.0':
- resolution: {integrity: sha512-xbbOdfn06FtcJ9d0ShxxvSn2iUsGd/lgPIO2V3VZIPDbEaIj1/3nBBe1AwuEZKXVXkMmpr6LUAgMkLD/4D2PPA==}
+ '@esbuild/netbsd-x64@0.27.3':
+ resolution: {integrity: sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==}
engines: {node: '>=18'}
cpu: [x64]
os: [netbsd]
- '@esbuild/openbsd-arm64@0.25.12':
- resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [openbsd]
-
- '@esbuild/openbsd-arm64@0.27.0':
- resolution: {integrity: sha512-fWgqR8uNbCQ/GGv0yhzttj6sU/9Z5/Sv/VGU3F5OuXK6J6SlriONKrQ7tNlwBrJZXRYk5jUhuWvF7GYzGguBZQ==}
+ '@esbuild/openbsd-arm64@0.27.3':
+ resolution: {integrity: sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==}
engines: {node: '>=18'}
cpu: [arm64]
os: [openbsd]
@@ -640,26 +541,14 @@ packages:
cpu: [x64]
os: [openbsd]
- '@esbuild/openbsd-x64@0.25.12':
- resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [openbsd]
-
- '@esbuild/openbsd-x64@0.27.0':
- resolution: {integrity: sha512-aCwlRdSNMNxkGGqQajMUza6uXzR/U0dIl1QmLjPtRbLOx3Gy3otfFu/VjATy4yQzo9yFDGTxYDo1FfAD9oRD2A==}
+ '@esbuild/openbsd-x64@0.27.3':
+ resolution: {integrity: sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==}
engines: {node: '>=18'}
cpu: [x64]
os: [openbsd]
- '@esbuild/openharmony-arm64@0.25.12':
- resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [openharmony]
-
- '@esbuild/openharmony-arm64@0.27.0':
- resolution: {integrity: sha512-nyvsBccxNAsNYz2jVFYwEGuRRomqZ149A39SHWk4hV0jWxKM0hjBPm3AmdxcbHiFLbBSwG6SbpIcUbXjgyECfA==}
+ '@esbuild/openharmony-arm64@0.27.3':
+ resolution: {integrity: sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==}
engines: {node: '>=18'}
cpu: [arm64]
os: [openharmony]
@@ -670,14 +559,8 @@ packages:
cpu: [x64]
os: [sunos]
- '@esbuild/sunos-x64@0.25.12':
- resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [sunos]
-
- '@esbuild/sunos-x64@0.27.0':
- resolution: {integrity: sha512-Q1KY1iJafM+UX6CFEL+F4HRTgygmEW568YMqDA5UV97AuZSm21b7SXIrRJDwXWPzr8MGr75fUZPV67FdtMHlHA==}
+ '@esbuild/sunos-x64@0.27.3':
+ resolution: {integrity: sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==}
engines: {node: '>=18'}
cpu: [x64]
os: [sunos]
@@ -688,14 +571,8 @@ packages:
cpu: [arm64]
os: [win32]
- '@esbuild/win32-arm64@0.25.12':
- resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==}
- engines: {node: '>=18'}
- cpu: [arm64]
- os: [win32]
-
- '@esbuild/win32-arm64@0.27.0':
- resolution: {integrity: sha512-W1eyGNi6d+8kOmZIwi/EDjrL9nxQIQ0MiGqe/AWc6+IaHloxHSGoeRgDRKHFISThLmsewZ5nHFvGFWdBYlgKPg==}
+ '@esbuild/win32-arm64@0.27.3':
+ resolution: {integrity: sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==}
engines: {node: '>=18'}
cpu: [arm64]
os: [win32]
@@ -706,14 +583,8 @@ packages:
cpu: [ia32]
os: [win32]
- '@esbuild/win32-ia32@0.25.12':
- resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==}
- engines: {node: '>=18'}
- cpu: [ia32]
- os: [win32]
-
- '@esbuild/win32-ia32@0.27.0':
- resolution: {integrity: sha512-30z1aKL9h22kQhilnYkORFYt+3wp7yZsHWus+wSKAJR8JtdfI76LJ4SBdMsCopTR3z/ORqVu5L1vtnHZWVj4cQ==}
+ '@esbuild/win32-ia32@0.27.3':
+ resolution: {integrity: sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==}
engines: {node: '>=18'}
cpu: [ia32]
os: [win32]
@@ -724,20 +595,14 @@ packages:
cpu: [x64]
os: [win32]
- '@esbuild/win32-x64@0.25.12':
- resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==}
- engines: {node: '>=18'}
- cpu: [x64]
- os: [win32]
-
- '@esbuild/win32-x64@0.27.0':
- resolution: {integrity: sha512-aIitBcjQeyOhMTImhLZmtxfdOcuNRpwlPNmlFKPcHQYPhEssw75Cl1TSXJXpMkzaua9FUetx/4OQKq7eJul5Cg==}
+ '@esbuild/win32-x64@0.27.3':
+ resolution: {integrity: sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==}
engines: {node: '>=18'}
cpu: [x64]
os: [win32]
- '@eslint-community/eslint-utils@4.9.0':
- resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==}
+ '@eslint-community/eslint-utils@4.9.1':
+ resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
@@ -767,10 +632,6 @@ packages:
resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==}
deprecated: Use @eslint/object-schema instead
- '@jest/schemas@29.6.3':
- resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
-
'@jridgewell/gen-mapping@0.3.13':
resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
@@ -799,123 +660,155 @@ packages:
resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
engines: {node: '>= 8'}
- '@rollup/rollup-android-arm-eabi@4.53.3':
- resolution: {integrity: sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w==}
+ '@rollup/rollup-android-arm-eabi@4.59.0':
+ resolution: {integrity: sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==}
cpu: [arm]
os: [android]
- '@rollup/rollup-android-arm64@4.53.3':
- resolution: {integrity: sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w==}
+ '@rollup/rollup-android-arm64@4.59.0':
+ resolution: {integrity: sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==}
cpu: [arm64]
os: [android]
- '@rollup/rollup-darwin-arm64@4.53.3':
- resolution: {integrity: sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA==}
+ '@rollup/rollup-darwin-arm64@4.59.0':
+ resolution: {integrity: sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==}
cpu: [arm64]
os: [darwin]
- '@rollup/rollup-darwin-x64@4.53.3':
- resolution: {integrity: sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ==}
+ '@rollup/rollup-darwin-x64@4.59.0':
+ resolution: {integrity: sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==}
cpu: [x64]
os: [darwin]
- '@rollup/rollup-freebsd-arm64@4.53.3':
- resolution: {integrity: sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w==}
+ '@rollup/rollup-freebsd-arm64@4.59.0':
+ resolution: {integrity: sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==}
cpu: [arm64]
os: [freebsd]
- '@rollup/rollup-freebsd-x64@4.53.3':
- resolution: {integrity: sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q==}
+ '@rollup/rollup-freebsd-x64@4.59.0':
+ resolution: {integrity: sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==}
cpu: [x64]
os: [freebsd]
- '@rollup/rollup-linux-arm-gnueabihf@4.53.3':
- resolution: {integrity: sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw==}
+ '@rollup/rollup-linux-arm-gnueabihf@4.59.0':
+ resolution: {integrity: sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==}
cpu: [arm]
os: [linux]
- '@rollup/rollup-linux-arm-musleabihf@4.53.3':
- resolution: {integrity: sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg==}
+ '@rollup/rollup-linux-arm-musleabihf@4.59.0':
+ resolution: {integrity: sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==}
cpu: [arm]
os: [linux]
- '@rollup/rollup-linux-arm64-gnu@4.53.3':
- resolution: {integrity: sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w==}
+ '@rollup/rollup-linux-arm64-gnu@4.59.0':
+ resolution: {integrity: sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==}
cpu: [arm64]
os: [linux]
- '@rollup/rollup-linux-arm64-musl@4.53.3':
- resolution: {integrity: sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A==}
+ '@rollup/rollup-linux-arm64-musl@4.59.0':
+ resolution: {integrity: sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==}
cpu: [arm64]
os: [linux]
- '@rollup/rollup-linux-loong64-gnu@4.53.3':
- resolution: {integrity: sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g==}
+ '@rollup/rollup-linux-loong64-gnu@4.59.0':
+ resolution: {integrity: sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==}
+ cpu: [loong64]
+ os: [linux]
+
+ '@rollup/rollup-linux-loong64-musl@4.59.0':
+ resolution: {integrity: sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==}
cpu: [loong64]
os: [linux]
- '@rollup/rollup-linux-ppc64-gnu@4.53.3':
- resolution: {integrity: sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw==}
+ '@rollup/rollup-linux-ppc64-gnu@4.59.0':
+ resolution: {integrity: sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==}
+ cpu: [ppc64]
+ os: [linux]
+
+ '@rollup/rollup-linux-ppc64-musl@4.59.0':
+ resolution: {integrity: sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==}
cpu: [ppc64]
os: [linux]
- '@rollup/rollup-linux-riscv64-gnu@4.53.3':
- resolution: {integrity: sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g==}
+ '@rollup/rollup-linux-riscv64-gnu@4.59.0':
+ resolution: {integrity: sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==}
cpu: [riscv64]
os: [linux]
- '@rollup/rollup-linux-riscv64-musl@4.53.3':
- resolution: {integrity: sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A==}
+ '@rollup/rollup-linux-riscv64-musl@4.59.0':
+ resolution: {integrity: sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==}
cpu: [riscv64]
os: [linux]
- '@rollup/rollup-linux-s390x-gnu@4.53.3':
- resolution: {integrity: sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg==}
+ '@rollup/rollup-linux-s390x-gnu@4.59.0':
+ resolution: {integrity: sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==}
cpu: [s390x]
os: [linux]
- '@rollup/rollup-linux-x64-gnu@4.53.3':
- resolution: {integrity: sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==}
+ '@rollup/rollup-linux-x64-gnu@4.59.0':
+ resolution: {integrity: sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==}
cpu: [x64]
os: [linux]
- '@rollup/rollup-linux-x64-musl@4.53.3':
- resolution: {integrity: sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q==}
+ '@rollup/rollup-linux-x64-musl@4.59.0':
+ resolution: {integrity: sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==}
cpu: [x64]
os: [linux]
- '@rollup/rollup-openharmony-arm64@4.53.3':
- resolution: {integrity: sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw==}
+ '@rollup/rollup-openbsd-x64@4.59.0':
+ resolution: {integrity: sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==}
+ cpu: [x64]
+ os: [openbsd]
+
+ '@rollup/rollup-openharmony-arm64@4.59.0':
+ resolution: {integrity: sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==}
cpu: [arm64]
os: [openharmony]
- '@rollup/rollup-win32-arm64-msvc@4.53.3':
- resolution: {integrity: sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw==}
+ '@rollup/rollup-win32-arm64-msvc@4.59.0':
+ resolution: {integrity: sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==}
cpu: [arm64]
os: [win32]
- '@rollup/rollup-win32-ia32-msvc@4.53.3':
- resolution: {integrity: sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA==}
+ '@rollup/rollup-win32-ia32-msvc@4.59.0':
+ resolution: {integrity: sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==}
cpu: [ia32]
os: [win32]
- '@rollup/rollup-win32-x64-gnu@4.53.3':
- resolution: {integrity: sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg==}
+ '@rollup/rollup-win32-x64-gnu@4.59.0':
+ resolution: {integrity: sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==}
cpu: [x64]
os: [win32]
- '@rollup/rollup-win32-x64-msvc@4.53.3':
- resolution: {integrity: sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ==}
+ '@rollup/rollup-win32-x64-msvc@4.59.0':
+ resolution: {integrity: sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==}
cpu: [x64]
os: [win32]
- '@sinclair/typebox@0.27.8':
- resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
+ '@solidjs/testing-library@0.8.10':
+ resolution: {integrity: sha512-qdeuIerwyq7oQTIrrKvV0aL9aFeuwTd86VYD3afdq5HYEwoox1OBTJy4y8A3TFZr8oAR0nujYgCzY/8wgHGfeQ==}
+ engines: {node: '>= 14'}
+ peerDependencies:
+ '@solidjs/router': '>=0.9.0'
+ solid-js: '>=1.0.0'
+ peerDependenciesMeta:
+ '@solidjs/router':
+ optional: true
+
+ '@standard-schema/spec@1.1.0':
+ resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==}
+
+ '@testing-library/dom@10.4.1':
+ resolution: {integrity: sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==}
+ engines: {node: '>=18'}
'@tootallnate/once@2.0.0':
resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==}
engines: {node: '>= 10'}
+ '@types/aria-query@5.0.4':
+ resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==}
+
'@types/babel__core@7.20.5':
resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==}
@@ -928,23 +821,21 @@ packages:
'@types/babel__traverse@7.28.0':
resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==}
- '@types/chai-subset@1.3.6':
- resolution: {integrity: sha512-m8lERkkQj+uek18hXOZuec3W/fCRTrU4hrnXjH3qhHy96ytuPaPiWGgu7sJb7tZxZonO75vYAjCvpe/e4VUwRw==}
- peerDependencies:
- '@types/chai': <5.2.0
-
- '@types/chai@4.3.20':
- resolution: {integrity: sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==}
+ '@types/chai@5.2.3':
+ resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==}
'@types/debug@4.1.12':
resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==}
+ '@types/deep-eql@4.0.2':
+ resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==}
+
+ '@types/estree-jsx@1.0.5':
+ resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==}
+
'@types/estree@1.0.8':
resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
- '@types/hast@2.3.10':
- resolution: {integrity: sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==}
-
'@types/hast@3.0.4':
resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==}
@@ -963,6 +854,9 @@ packages:
'@types/semver@7.7.1':
resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==}
+ '@types/ungap__structured-clone@1.2.0':
+ resolution: {integrity: sha512-ZoaihZNLeZSxESbk9PUAPZOlSpcKx81I1+4emtULDVmBLkYutTcMlCj2K9VNlf9EWODxdO6gkAqEaLorXwZQVA==}
+
'@types/unist@2.0.11':
resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==}
@@ -990,10 +884,26 @@ packages:
typescript:
optional: true
+ '@typescript-eslint/project-service@8.56.1':
+ resolution: {integrity: sha512-TAdqQTzHNNvlVFfR+hu2PDJrURiwKsUvxFn1M0h95BB8ah5jejas08jUWG4dBA68jDMI988IvtfdAI53JzEHOQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ typescript: '>=4.8.4 <6.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}
+
+ '@typescript-eslint/tsconfig-utils@8.56.1':
+ resolution: {integrity: sha512-qOtCYzKEeyr3aR9f28mPJqBty7+DBqsdd63eO0yyDwc6vgThj2UjWfJIcsFeSucYydqcuudMOprZ+x1SpF3ZuQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ typescript: '>=4.8.4 <6.0.0'
+
'@typescript-eslint/type-utils@6.21.0':
resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==}
engines: {node: ^16.0.0 || >=18.0.0}
@@ -1008,6 +918,10 @@ packages:
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}
+
'@typescript-eslint/typescript-estree@6.21.0':
resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==}
engines: {node: ^16.0.0 || >=18.0.0}
@@ -1017,33 +931,67 @@ packages:
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}
+ peerDependencies:
+ typescript: '>=4.8.4 <6.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}
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0 || ^10.0.0
+ typescript: '>=4.8.4 <6.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}
+
'@ungap/structured-clone@1.3.0':
resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==}
- '@vitest/expect@0.33.0':
- resolution: {integrity: sha512-sVNf+Gla3mhTCxNJx+wJLDPp/WcstOe0Ksqz4Vec51MmgMth/ia0MGFEkIZmVGeTL5HtjYR4Wl/ZxBxBXZJTzQ==}
+ '@vitest/expect@4.0.18':
+ resolution: {integrity: sha512-8sCWUyckXXYvx4opfzVY03EOiYVxyNrHS5QxX3DAIi5dpJAAkyJezHCP77VMX4HKA2LDT/Jpfo8i2r5BE3GnQQ==}
+
+ '@vitest/mocker@4.0.18':
+ resolution: {integrity: sha512-HhVd0MDnzzsgevnOWCBj5Otnzobjy5wLBe4EdeeFGv8luMsGcYqDuFRMcttKWZA5vVO8RFjexVovXvAM4JoJDQ==}
+ peerDependencies:
+ msw: ^2.4.9
+ vite: ^6.0.0 || ^7.0.0-0
+ peerDependenciesMeta:
+ msw:
+ optional: true
+ vite:
+ optional: true
+
+ '@vitest/pretty-format@4.0.18':
+ resolution: {integrity: sha512-P24GK3GulZWC5tz87ux0m8OADrQIUVDPIjjj65vBXYG17ZeU3qD7r+MNZ1RNv4l8CGU2vtTRqixrOi9fYk/yKw==}
+
+ '@vitest/runner@4.0.18':
+ resolution: {integrity: sha512-rpk9y12PGa22Jg6g5M3UVVnTS7+zycIGk9ZNGN+m6tZHKQb7jrP7/77WfZy13Y/EUDd52NDsLRQhYKtv7XfPQw==}
- '@vitest/runner@0.33.0':
- resolution: {integrity: sha512-UPfACnmCB6HKRHTlcgCoBh6ppl6fDn+J/xR8dTufWiKt/74Y9bHci5CKB8tESSV82zKYtkBJo9whU3mNvfaisg==}
+ '@vitest/snapshot@4.0.18':
+ resolution: {integrity: sha512-PCiV0rcl7jKQjbgYqjtakly6T1uwv/5BQ9SwBLekVg/EaYeQFPiXcgrC2Y7vDMA8dM1SUEAEV82kgSQIlXNMvA==}
- '@vitest/snapshot@0.33.0':
- resolution: {integrity: sha512-tJjrl//qAHbyHajpFvr8Wsk8DIOODEebTu7pgBrP07iOepR5jYkLFiqLq2Ltxv+r0uptUb4izv1J8XBOwKkVYA==}
+ '@vitest/spy@4.0.18':
+ resolution: {integrity: sha512-cbQt3PTSD7P2OARdVW3qWER5EGq7PHlvE+QfzSC0lbwO+xnt7+XH06ZzFjFRgzUX//JmpxrCu92VdwvEPlWSNw==}
- '@vitest/spy@0.33.0':
- resolution: {integrity: sha512-Kv+yZ4hnH1WdiAkPUQTpRxW8kGtH8VRTnus7ZTGovFYM1ZezJpvGtb9nPIjPnptHbsyIAxYZsEpVPYgtpjGnrg==}
+ '@vitest/utils@4.0.18':
+ resolution: {integrity: sha512-msMRKLMVLWygpK3u2Hybgi4MNjcYJvwTb0Ru09+fOyCXIgT5raYP041DRRdiJiI3k/2U6SEbAETB3YtBrUkCFA==}
- '@vitest/utils@0.33.0':
- resolution: {integrity: sha512-pF1w22ic965sv+EN6uoePkAOTkAPWM03Ri/jXNyMIKBb/XHLDPfhLvf/Fa9g0YECevAIz56oVYXhodLvLQ/awA==}
+ '@wooorm/starry-night@3.9.0':
+ resolution: {integrity: sha512-LXVGKfYhTuFhoRuPAHz2XolS/J45L4lI/lCSIBugDpklXYDUPrJyA8tk17u7G32fcFaGODJXH/YDwQDfUXdPRw==}
abab@2.0.6:
resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==}
@@ -1054,12 +1002,8 @@ packages:
peerDependencies:
acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
- acorn-walk@8.3.4:
- resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==}
- engines: {node: '>=0.4.0'}
-
- acorn@8.15.0:
- resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==}
+ acorn@8.16.0:
+ resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==}
engines: {node: '>=0.4.0'}
hasBin: true
@@ -1067,8 +1011,8 @@ packages:
resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==}
engines: {node: '>= 6.0.0'}
- ajv@6.12.6:
- resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
+ ajv@6.14.0:
+ resolution: {integrity: sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==}
ansi-regex@5.0.1:
resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
@@ -1088,18 +1032,22 @@ packages:
argparse@2.0.1:
resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
+ aria-query@5.3.0:
+ resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==}
+
array-union@2.1.0:
resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
engines: {node: '>=8'}
- assertion-error@1.1.0:
- resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==}
+ assertion-error@2.0.1:
+ resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==}
+ engines: {node: '>=12'}
asynckit@0.4.0:
resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
- babel-plugin-jsx-dom-expressions@0.40.3:
- resolution: {integrity: sha512-5HOwwt0BYiv/zxl7j8Pf2bGL6rDXfV6nUhLs8ygBX+EFJXzBPHM/euj9j/6deMZ6wa52Wb2PBaAV5U/jKwIY1w==}
+ babel-plugin-jsx-dom-expressions@0.40.5:
+ resolution: {integrity: sha512-8TFKemVLDYezqqv4mWz+PhRrkryTzivTGu0twyLrOkVZ0P63COx2Y04eVsUjFlwSOXui1z3P3Pn209dokWnirg==}
peerDependencies:
'@babel/core': ^7.20.12
@@ -1118,8 +1066,13 @@ packages:
balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
- baseline-browser-mapping@2.8.32:
- resolution: {integrity: sha512-OPz5aBThlyLFgxyhdwf/s2+8ab3OvT7AdTNvKHBwpXomIYeXqpUUuT8LrdtxZSsWJ4R4CU1un4XGh5Ez3nlTpw==}
+ balanced-match@4.0.4:
+ resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==}
+ engines: {node: 18 || 20 || >=22}
+
+ baseline-browser-mapping@2.10.0:
+ resolution: {integrity: sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA==}
+ engines: {node: '>=6.0.0'}
hasBin: true
brace-expansion@1.1.12:
@@ -1128,12 +1081,16 @@ packages:
brace-expansion@2.0.2:
resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==}
+ brace-expansion@5.0.4:
+ resolution: {integrity: sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==}
+ engines: {node: 18 || 20 || >=22}
+
braces@3.0.3:
resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
engines: {node: '>=8'}
- browserslist@4.28.0:
- resolution: {integrity: sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==}
+ browserslist@4.28.1:
+ resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==}
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true
@@ -1155,25 +1112,31 @@ packages:
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
engines: {node: '>=6'}
- caniuse-lite@1.0.30001757:
- resolution: {integrity: sha512-r0nnL/I28Zi/yjk1el6ilj27tKcdjLsNqAOZr0yVjWPrSQyHgKI2INaEWw21bAQSv2LXRt1XuCS/GomNpWOxsQ==}
+ caniuse-lite@1.0.30001777:
+ resolution: {integrity: sha512-tmN+fJxroPndC74efCdp12j+0rk0RHwV5Jwa1zWaFVyw2ZxAuPeG8ZgWC3Wz7uSjT3qMRQ5XHZ4COgQmsCMJAQ==}
ccount@2.0.1:
resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
- chai@4.5.0:
- resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==}
- engines: {node: '>=4'}
+ chai@6.2.2:
+ resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==}
+ engines: {node: '>=18'}
chalk@4.1.2:
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
engines: {node: '>=10'}
+ character-entities-html4@2.1.0:
+ resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==}
+
+ character-entities-legacy@3.0.0:
+ resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==}
+
character-entities@2.0.2:
resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==}
- check-error@1.0.3:
- resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==}
+ character-reference-invalid@2.0.1:
+ resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==}
chokidar@4.0.3:
resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==}
@@ -1250,12 +1213,8 @@ packages:
decimal.js@10.6.0:
resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==}
- decode-named-character-reference@1.2.0:
- resolution: {integrity: sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==}
-
- deep-eql@4.1.4:
- resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==}
- engines: {node: '>=6'}
+ decode-named-character-reference@1.3.0:
+ resolution: {integrity: sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==}
deep-is@0.1.4:
resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
@@ -1271,10 +1230,6 @@ packages:
devlop@1.1.0:
resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==}
- diff-sequences@29.6.3:
- resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
-
dir-glob@3.0.1:
resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
engines: {node: '>=8'}
@@ -1283,6 +1238,9 @@ packages:
resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
engines: {node: '>=6.0.0'}
+ dom-accessibility-api@0.5.16:
+ resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==}
+
domexception@4.0.0:
resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==}
engines: {node: '>=12'}
@@ -1292,8 +1250,8 @@ packages:
resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
engines: {node: '>= 0.4'}
- electron-to-chromium@1.5.262:
- resolution: {integrity: sha512-NlAsMteRHek05jRUxUR0a5jpjYq9ykk6+kO0yRaMi5moe7u0fVIOeQ3Y30A8dIiWFBNUoQGi1ljb1i5VtS9WQQ==}
+ electron-to-chromium@1.5.307:
+ resolution: {integrity: sha512-5z3uFKBWjiNR44nFcYdkcXjKMbg5KXNdciu7mhTPo9tB7NbqSNP2sSnGR+fqknZSCwKkBN+oxiiajWs4dT6ORg==}
emoji-regex@8.0.0:
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
@@ -1310,6 +1268,9 @@ packages:
resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
engines: {node: '>= 0.4'}
+ es-module-lexer@1.7.0:
+ resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==}
+
es-object-atoms@1.1.1:
resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
engines: {node: '>= 0.4'}
@@ -1329,13 +1290,8 @@ packages:
engines: {node: '>=12'}
hasBin: true
- esbuild@0.25.12:
- resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==}
- engines: {node: '>=18'}
- hasBin: true
-
- esbuild@0.27.0:
- resolution: {integrity: sha512-jd0f4NHbD6cALCyGElNpGAOtWxSq46l9X/sWB0Nzd5er4Kz2YTm+Vl0qKFT9KUJvD8+fiO8AvoHhFvEatfVixA==}
+ esbuild@0.27.3:
+ resolution: {integrity: sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==}
engines: {node: '>=18'}
hasBin: true
@@ -1355,6 +1311,12 @@ packages:
resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
engines: {node: '>=12'}
+ eslint-config-prettier@9.1.2:
+ resolution: {integrity: sha512-iI1f+D2ViGn+uvv5HuHVUamg8ll4tN+JRHGc6IJi4TP9Kl976C57fzPXgseXNs8v0iA8aSJpHsTWjDb9QJamGQ==}
+ hasBin: true
+ peerDependencies:
+ eslint: '>=7.0.0'
+
eslint-plugin-eslint-comments@3.2.0:
resolution: {integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==}
engines: {node: '>=6.5.0'}
@@ -1365,6 +1327,13 @@ packages:
resolution: {integrity: sha512-brcKcxGnISN2CcVhXJ/kEQlNa0MEfGRtwKtWA16SkqXHKitaKIMrfemJKLKX1YqDU5C/5JY3PvZXd5jEW04e0Q==}
engines: {node: '>=5.0.0'}
+ eslint-plugin-solid@0.14.5:
+ resolution: {integrity: sha512-nfuYK09ah5aJG/oEN6P1qziy1zLgW4PDWe75VNPi4CEFYk1x2AEqwFeQfEPR7gNn0F2jOeqKhx2E+5oNCOBYWQ==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0
+ typescript: '>=4.8.4'
+
eslint-scope@7.2.2:
resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -1373,6 +1342,10 @@ packages:
resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ eslint-visitor-keys@5.0.1:
+ resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==}
+ engines: {node: ^20.19.0 || ^22.13.0 || >=24}
+
eslint@8.57.1:
resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@@ -1383,8 +1356,8 @@ packages:
resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- esquery@1.6.0:
- resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==}
+ esquery@1.7.0:
+ resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==}
engines: {node: '>=0.10'}
esrecurse@4.3.0:
@@ -1395,10 +1368,20 @@ packages:
resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
engines: {node: '>=4.0'}
+ estree-util-is-identifier-name@3.0.0:
+ resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==}
+
+ estree-walker@3.0.3:
+ resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}
+
esutils@2.0.3:
resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
engines: {node: '>=0.10.0'}
+ expect-type@1.3.0:
+ resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==}
+ engines: {node: '>=12.0.0'}
+
extend@3.0.2:
resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}
@@ -1415,8 +1398,8 @@ packages:
fast-levenshtein@2.0.6:
resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
- fastq@1.19.1:
- resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==}
+ fastq@1.20.1:
+ resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==}
fdir@6.5.0:
resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==}
@@ -1446,8 +1429,8 @@ packages:
resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==}
engines: {node: ^10.12.0 || >=12.0.0}
- flatted@3.3.3:
- resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==}
+ flatted@3.3.4:
+ resolution: {integrity: sha512-3+mMldrTAPdta5kjX2G2J7iX4zxtnwpdA8Tr2ZSjkyPSanvbZAcy6flmtnXbEybHrDcU9641lxrMfFuUxVz9vA==}
form-data@4.0.5:
resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==}
@@ -1472,9 +1455,6 @@ packages:
resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
engines: {node: 6.* || 8.* || >= 10.*}
- get-func-name@2.0.2:
- resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==}
-
get-intrinsic@1.3.0:
resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
engines: {node: '>= 0.4'}
@@ -1483,6 +1463,9 @@ packages:
resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
engines: {node: '>= 0.4'}
+ github-slugger@2.0.0:
+ resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==}
+
glob-parent@5.1.2:
resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
engines: {node: '>= 6'}
@@ -1493,7 +1476,7 @@ packages:
glob@7.2.3:
resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
- deprecated: Glob versions prior to v9 are no longer supported
+ 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
globals@13.24.0:
resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==}
@@ -1526,6 +1509,30 @@ packages:
resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
engines: {node: '>= 0.4'}
+ hast-util-from-parse5@8.0.3:
+ resolution: {integrity: sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==}
+
+ hast-util-parse-selector@4.0.0:
+ resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==}
+
+ hast-util-raw@9.1.0:
+ resolution: {integrity: sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==}
+
+ hast-util-to-jsx-runtime@2.3.6:
+ resolution: {integrity: sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==}
+
+ hast-util-to-parse5@8.0.1:
+ resolution: {integrity: sha512-MlWT6Pjt4CG9lFCjiz4BH7l9wmrMkfkJYCxFwKQic8+RTZgWPuWxwAfjJElsXkex7DJjfSJsQIt931ilUgmwdA==}
+
+ hast-util-to-string@3.0.1:
+ resolution: {integrity: sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==}
+
+ hast-util-whitespace@3.0.0:
+ resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==}
+
+ hastscript@9.0.1:
+ resolution: {integrity: sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==}
+
html-encoding-sniffer@3.0.0:
resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==}
engines: {node: '>=12'}
@@ -1533,6 +1540,16 @@ packages:
html-entities@2.3.3:
resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==}
+ html-tags@3.3.1:
+ resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==}
+ engines: {node: '>=8'}
+
+ html-url-attributes@3.0.1:
+ resolution: {integrity: sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==}
+
+ html-void-elements@3.0.0:
+ resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==}
+
http-proxy-agent@5.0.0:
resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==}
engines: {node: '>= 6'}
@@ -1553,6 +1570,9 @@ packages:
resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==}
engines: {node: '>=6'}
+ import-meta-resolve@4.2.0:
+ resolution: {integrity: sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==}
+
imurmurhash@0.1.4:
resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
engines: {node: '>=0.8.19'}
@@ -1564,8 +1584,17 @@ packages:
inherits@2.0.4:
resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
- inline-style-parser@0.1.1:
- resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==}
+ inline-style-parser@0.2.7:
+ resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==}
+
+ is-alphabetical@2.0.1:
+ resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==}
+
+ is-alphanumerical@2.0.1:
+ resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==}
+
+ is-decimal@2.0.1:
+ resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==}
is-extglob@2.1.1:
resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
@@ -1579,6 +1608,13 @@ packages:
resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
engines: {node: '>=0.10.0'}
+ is-hexadecimal@2.0.1:
+ resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==}
+
+ is-html@2.0.0:
+ resolution: {integrity: sha512-S+OpgB5i7wzIue/YSE5hg0e5ZYfG3hhpNh9KGl6ayJ38p7ED6wxQLd1TV91xHpcTvw90KMJ9EwN3F/iNflHBVg==}
+ engines: {node: '>=8'}
+
is-number@7.0.0:
resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
engines: {node: '>=0.12.0'}
@@ -1640,9 +1676,19 @@ packages:
engines: {node: '>=6'}
hasBin: true
+ kebab-case@1.0.2:
+ resolution: {integrity: sha512-7n6wXq4gNgBELfDCpzKc+mRrZFs7D+wgfF5WRFLNAr4DA/qtr9Js8uOAVAfHhuLMfAcQ0pRKqbpjx+TcJVdE1Q==}
+
keyv@4.5.4:
resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
+ known-css-properties@0.30.0:
+ resolution: {integrity: sha512-VSWXYUnsPu9+WYKkfmJyLKtIvaRJi1kXUqVmBACORXZQxT5oZDsoZ2vQP+bQFDnWtpI/4eq3MLoRMjI2fnLzTQ==}
+
+ levenshtein-edit-distance@3.0.1:
+ resolution: {integrity: sha512-/qMCkZbrAF7jZP/voqlkfNrBtEn0TMdhCK7OEBh/zb39t/c3wCnTjwU1ZvrMfQ3OxB8sBQXIpWRMM6FiQJVG3g==}
+ hasBin: true
+
levn@0.4.1:
resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
engines: {node: '>= 0.8.0'}
@@ -1658,10 +1704,6 @@ packages:
resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- local-pkg@0.4.3:
- resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==}
- engines: {node: '>=14'}
-
locate-path@6.0.0:
resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
engines: {node: '>=10'}
@@ -1669,18 +1711,19 @@ packages:
lodash.merge@4.6.2:
resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
- lodash@4.17.21:
- resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
+ lodash@4.17.23:
+ resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==}
longest-streak@3.1.0:
resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==}
- loupe@2.3.7:
- resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==}
-
lru-cache@5.1.1:
resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
+ lz-string@1.5.0:
+ resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==}
+ hasBin: true
+
magic-string@0.30.21:
resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==}
@@ -1694,8 +1737,8 @@ packages:
mdast-util-find-and-replace@3.0.2:
resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==}
- mdast-util-from-markdown@2.0.2:
- resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==}
+ mdast-util-from-markdown@2.0.3:
+ resolution: {integrity: sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q==}
mdast-util-gfm-autolink-literal@2.0.1:
resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==}
@@ -1715,6 +1758,15 @@ packages:
mdast-util-gfm@3.1.0:
resolution: {integrity: sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==}
+ mdast-util-mdx-expression@2.0.1:
+ resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==}
+
+ mdast-util-mdx-jsx@3.2.0:
+ resolution: {integrity: sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==}
+
+ mdast-util-mdxjs-esm@2.0.1:
+ resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==}
+
mdast-util-phrasing@4.1.0:
resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==}
@@ -1727,6 +1779,9 @@ packages:
mdast-util-to-string@4.0.0:
resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==}
+ mdast-util-toc@7.1.0:
+ resolution: {integrity: sha512-2TVKotOQzqdY7THOdn2gGzS9d1Sdd66bvxUyw3aNpWfcPXCLYSJCCgfPy30sEtuzkDraJgqF35dzgmz6xlvH/w==}
+
merge-anything@5.1.7:
resolution: {integrity: sha512-eRtbOb1N5iyH0tkQDAoQ4Ipsp/5qSR79Dzrz8hEPxRX10RWWR/iQXdoKmBSRCThY1Fh5EhISDtpSc93fpxUniQ==}
engines: {node: '>=12.13'}
@@ -1831,15 +1886,19 @@ packages:
resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
engines: {node: '>= 0.6'}
- minimatch@3.1.2:
- resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
+ minimatch@10.2.4:
+ resolution: {integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==}
+ engines: {node: 18 || 20 || >=22}
+
+ 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'}
- mlly@1.8.0:
- resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==}
+ mlly@1.8.1:
+ resolution: {integrity: sha512-SnL6sNutTwRWWR/vcmCYHSADjiEesp5TGQQ0pXyLhW5IoeibRlF/CbSLailbB3CNqJUk9cVJ9dUDnbD7GrcHBQ==}
ms@2.1.3:
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
@@ -1855,16 +1914,19 @@ packages:
natural-compare@1.4.0:
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
- node-releases@2.0.27:
- resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==}
+ node-releases@2.0.36:
+ resolution: {integrity: sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==}
- nwsapi@2.2.22:
- resolution: {integrity: sha512-ujSMe1OWVn55euT1ihwCI1ZcAaAU3nxUiDwfDQldc51ZXaB9m2AyOn6/jh1BLe2t/G8xd6uKG1UBF2aZJeg2SQ==}
+ nwsapi@2.2.23:
+ resolution: {integrity: sha512-7wfH4sLbt4M0gCDzGE6vzQBo0bfTKjU7Sfpqy/7gs1qBfYz2vEJH6vXcBKpO3+6Yu1telwd0t9HpyOoLEQQbIQ==}
object-assign@4.1.1:
resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
engines: {node: '>=0.10.0'}
+ obug@2.1.1:
+ resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==}
+
once@1.4.0:
resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
@@ -1876,10 +1938,6 @@ packages:
resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
engines: {node: '>=10'}
- p-limit@4.0.0:
- resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
p-locate@5.0.0:
resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
engines: {node: '>=10'}
@@ -1888,6 +1946,9 @@ packages:
resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
engines: {node: '>=6'}
+ parse-entities@4.0.2:
+ resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==}
+
parse5@7.3.0:
resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==}
@@ -1907,15 +1968,9 @@ packages:
resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
engines: {node: '>=8'}
- pathe@1.1.2:
- resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==}
-
pathe@2.0.3:
resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==}
- pathval@1.1.1:
- resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==}
-
picocolors@1.1.1:
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
@@ -1952,8 +2007,8 @@ packages:
yaml:
optional: true
- postcss@8.5.6:
- resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
+ postcss@8.5.8:
+ resolution: {integrity: sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==}
engines: {node: ^10 || ^12 || >=14}
prelude-ls@1.2.1:
@@ -1965,12 +2020,12 @@ packages:
engines: {node: '>=14'}
hasBin: true
- pretty-format@29.7.0:
- resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ 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}
- property-information@6.5.0:
- resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==}
+ property-information@7.1.0:
+ resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==}
psl@1.15.0:
resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==}
@@ -1985,13 +2040,19 @@ packages:
queue-microtask@1.2.3:
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
- react-is@18.3.1:
- resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==}
+ react-is@17.0.2:
+ resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==}
readdirp@4.1.2:
resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==}
engines: {node: '>= 14.18.0'}
+ rehype-raw@7.0.0:
+ resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==}
+
+ rehype-starry-night@2.2.0:
+ resolution: {integrity: sha512-hAdJb/14aNHPEAsP37Rt1X8HbkTsQb/2pAyL0inJn+VnXqdM714MBAL/9zC5CObCM3/zIjpwOsXMETTayx2iaw==}
+
remark-gfm@4.0.1:
resolution: {integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==}
@@ -2004,6 +2065,9 @@ packages:
remark-stringify@11.0.0:
resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==}
+ remark-toc@9.0.0:
+ resolution: {integrity: sha512-KJ9txbo33GjDAV1baHFze7ij4G8c7SGYoY8Kzsm2gzFpbhL/bSoVpMMzGa3vrNDSWASNd/3ppAqL7cP2zD6JIA==}
+
require-directory@2.1.1:
resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
engines: {node: '>=0.10.0'}
@@ -2028,13 +2092,8 @@ packages:
deprecated: Rimraf versions prior to v4 are no longer supported
hasBin: true
- rollup@3.29.5:
- resolution: {integrity: sha512-GVsDdsbJzzy4S/v3dqWPJ7EfvZJfCHiDqe80IyrF59LYuP+e6U1LJoUqeuqRbwAWoMNoXivMNeNAOf5E22VA1w==}
- engines: {node: '>=14.18.0', npm: '>=8.0.0'}
- hasBin: true
-
- rollup@4.53.3:
- resolution: {integrity: sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==}
+ rollup@4.59.0:
+ resolution: {integrity: sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
@@ -2058,19 +2117,19 @@ packages:
resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
hasBin: true
- semver@7.7.3:
- resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==}
+ semver@7.7.4:
+ resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==}
engines: {node: '>=10'}
hasBin: true
- seroval-plugins@1.3.3:
- resolution: {integrity: sha512-16OL3NnUBw8JG1jBLUoZJsLnQq0n5Ua6aHalhJK4fMQkz1lqR7Osz1sA30trBtd9VUDc2NgkuRCn8+/pBwqZ+w==}
+ seroval-plugins@1.5.0:
+ resolution: {integrity: sha512-EAHqADIQondwRZIdeW2I636zgsODzoBDwb3PT/+7TLDWyw1Dy/Xv7iGUIEXXav7usHDE9HVhOU61irI3EnyyHA==}
engines: {node: '>=10'}
peerDependencies:
seroval: ^1.0
- seroval@1.3.2:
- resolution: {integrity: sha512-RbcPH1n5cfwKrru7v7+zrZvjLurgHhGyso3HTyGtRivGWgYjbOmGuivCQaORNELjNONoK35nj28EoWul9sb1zQ==}
+ seroval@1.5.0:
+ resolution: {integrity: sha512-OE4cvmJ1uSPrKorFIH9/w/Qwuvi/IMcGbv5RKgcJ/zjA/IohDLU6SVaxFN9FwajbP7nsX0dQqMDes1whk3y+yw==}
engines: {node: '>=10'}
shebang-command@2.0.0:
@@ -2092,8 +2151,14 @@ packages:
resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
engines: {node: '>=8'}
- solid-js@1.9.10:
- resolution: {integrity: sha512-Coz956cos/EPDlhs6+jsdTxKuJDPT7B5SVIWgABwROyxjY7Xbr8wkzD68Et+NxnV7DLJ3nJdAC2r9InuV/4Jew==}
+ solid-js@1.9.11:
+ resolution: {integrity: sha512-WEJtcc5mkh/BnHA6Yrg4whlF8g6QwpmXXRg4P2ztPmcKeHHlH4+djYecBLhSpecZY2RRECXYUwIc/C2r3yzQ4Q==}
+
+ solid-jsx@1.1.4:
+ resolution: {integrity: sha512-A4E9cB+wZpHZrXzv3+OWr6zaGS0FjD/UAKqbI38R1JwogjlBXdSGC2PgaIMisnGYKL3oJ55FPLv4QRkENmdbWQ==}
+ engines: {node: '>=16'}
+ peerDependencies:
+ solid-js: '>=1.4.0'
solid-refresh@0.6.3:
resolution: {integrity: sha512-F3aPsX6hVw9ttm5LYlth8Q15x6MlI/J3Dn+o3EQyRTtTxidepSTwAYdozt01/YA+7ObcciagGEyXIopGZzQtbA==}
@@ -2124,6 +2189,9 @@ packages:
resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
engines: {node: '>=8'}
+ stringify-entities@4.0.4:
+ resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==}
+
strip-ansi@6.0.1:
resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
engines: {node: '>=8'}
@@ -2132,11 +2200,11 @@ packages:
resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
engines: {node: '>=8'}
- strip-literal@1.3.0:
- resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==}
+ style-to-js@1.1.21:
+ resolution: {integrity: sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==}
- style-to-object@0.3.0:
- resolution: {integrity: sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==}
+ style-to-object@1.0.14:
+ resolution: {integrity: sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==}
sucrase@3.35.1:
resolution: {integrity: sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==}
@@ -2170,16 +2238,16 @@ packages:
tinyexec@0.3.2:
resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==}
+ tinyexec@1.0.2:
+ resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==}
+ engines: {node: '>=18'}
+
tinyglobby@0.2.15:
resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==}
engines: {node: '>=12.0.0'}
- tinypool@0.6.0:
- resolution: {integrity: sha512-FdswUUo5SxRizcBc6b1GSuLpLjisa8N8qMyYoP3rl+bym+QauhtJP5bvZY1ytt8krKGmMLYIRl36HBZfeAoqhQ==}
- engines: {node: '>=14.0.0'}
-
- tinyspy@2.2.1:
- resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==}
+ tinyrainbow@3.0.3:
+ resolution: {integrity: sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q==}
engines: {node: '>=14.0.0'}
to-regex-range@5.0.1:
@@ -2210,6 +2278,12 @@ packages:
peerDependencies:
typescript: '>=4.2.0'
+ ts-api-utils@2.4.0:
+ resolution: {integrity: sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==}
+ engines: {node: '>=18.12'}
+ peerDependencies:
+ typescript: '>=4.8.4'
+
ts-interface-checker@0.1.13:
resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
@@ -2244,10 +2318,6 @@ packages:
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
engines: {node: '>= 0.8.0'}
- type-detect@4.1.0:
- resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==}
- engines: {node: '>=4'}
-
type-fest@0.20.2:
resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
engines: {node: '>=10'}
@@ -2257,8 +2327,8 @@ packages:
engines: {node: '>=14.17'}
hasBin: true
- ufo@1.6.1:
- resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==}
+ ufo@1.6.3:
+ resolution: {integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==}
undici-types@7.16.0:
resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==}
@@ -2266,9 +2336,6 @@ packages:
unified@11.0.5:
resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==}
- unist-util-is@5.2.1:
- resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==}
-
unist-util-is@6.0.1:
resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==}
@@ -2278,24 +2345,18 @@ packages:
unist-util-stringify-position@4.0.0:
resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==}
- unist-util-visit-parents@5.1.3:
- resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==}
-
unist-util-visit-parents@6.0.2:
resolution: {integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==}
- unist-util-visit@4.1.2:
- resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==}
-
- unist-util-visit@5.0.0:
- resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==}
+ unist-util-visit@5.1.0:
+ resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==}
universalify@0.2.0:
resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==}
engines: {node: '>= 4.0.0'}
- update-browserslist-db@1.1.4:
- resolution: {integrity: sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==}
+ update-browserslist-db@1.2.3:
+ resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==}
hasBin: true
peerDependencies:
browserslist: '>= 4.21.0'
@@ -2306,17 +2367,15 @@ packages:
url-parse@1.5.10:
resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==}
+ vfile-location@5.0.3:
+ resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==}
+
vfile-message@4.0.3:
resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==}
vfile@6.0.3:
resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==}
- vite-node@0.33.0:
- resolution: {integrity: sha512-19FpHYbwWWxDr73ruNahC+vtEdza52kA90Qb3La98yZ0xULqV8A5JLNPUff0f5zID4984tW7l3DH2przTJUZSw==}
- engines: {node: '>=v14.18.0'}
- hasBin: true
-
vite-plugin-solid@2.11.10:
resolution: {integrity: sha512-Yr1dQybmtDtDAHkii6hXuc1oVH9CPcS/Zb2jN/P36qqcrkNnVPsMTzQ06jyzFPFjj3U1IYKMVt/9ZqcwGCEbjw==}
peerDependencies:
@@ -2327,62 +2386,34 @@ packages:
'@testing-library/jest-dom':
optional: true
- vite@4.5.14:
- resolution: {integrity: sha512-+v57oAaoYNnO3hIu5Z/tJRZjq5aHM2zDve9YZ8HngVHbhk66RStobhb1sqPMIPEleV6cNKYK4eGrAbE9Ulbl2g==}
- engines: {node: ^14.18.0 || >=16.0.0}
+ vite@7.3.1:
+ resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true
peerDependencies:
- '@types/node': '>= 14'
- less: '*'
+ '@types/node': ^20.19.0 || >=22.12.0
+ jiti: '>=1.21.0'
+ less: ^4.0.0
lightningcss: ^1.21.0
- sass: '*'
- stylus: '*'
- sugarss: '*'
- terser: ^5.4.0
+ sass: ^1.70.0
+ sass-embedded: ^1.70.0
+ stylus: '>=0.54.8'
+ sugarss: ^5.0.0
+ terser: ^5.16.0
+ tsx: ^4.8.1
+ yaml: ^2.4.2
peerDependenciesMeta:
'@types/node':
optional: true
+ jiti:
+ optional: true
less:
optional: true
lightningcss:
optional: true
sass:
- optional: true
- stylus:
- optional: true
- sugarss:
- optional: true
- terser:
- optional: true
-
- vite@7.2.4:
- resolution: {integrity: sha512-NL8jTlbo0Tn4dUEXEsUg8KeyG/Lkmc4Fnzb8JXN/Ykm9G4HNImjtABMJgkQoVjOBN/j2WAwDTRytdqJbZsah7w==}
- engines: {node: ^20.19.0 || >=22.12.0}
- hasBin: true
- peerDependencies:
- '@types/node': ^20.19.0 || >=22.12.0
- jiti: '>=1.21.0'
- less: ^4.0.0
- lightningcss: ^1.21.0
- sass: ^1.70.0
- sass-embedded: ^1.70.0
- stylus: '>=0.54.8'
- sugarss: ^5.0.0
- terser: ^5.16.0
- tsx: ^4.8.1
- yaml: ^2.4.2
- peerDependenciesMeta:
- '@types/node':
- optional: true
- jiti:
- optional: true
- less:
- optional: true
- lightningcss:
- optional: true
- sass:
- optional: true
- sass-embedded:
+ optional: true
+ sass-embedded:
optional: true
stylus:
optional: true
@@ -2395,49 +2426,61 @@ packages:
yaml:
optional: true
- vitefu@1.1.1:
- resolution: {integrity: sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ==}
+ vitefu@1.1.2:
+ resolution: {integrity: sha512-zpKATdUbzbsycPFBN71nS2uzBUQiVnFoOrr2rvqv34S1lcAgMKKkjWleLGeiJlZ8lwCXvtWaRn7R3ZC16SYRuw==}
peerDependencies:
- vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0
+ vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-beta.0
peerDependenciesMeta:
vite:
optional: true
- vitest@0.33.0:
- resolution: {integrity: sha512-1CxaugJ50xskkQ0e969R/hW47za4YXDUfWJDxip1hwbnhUjYolpfUn2AMOulqG/Dtd9WYAtkHmM/m3yKVrEejQ==}
- engines: {node: '>=v14.18.0'}
+ vitest@4.0.18:
+ resolution: {integrity: sha512-hOQuK7h0FGKgBAas7v0mSAsnvrIgAvWmRFjmzpJ7SwFHH3g1k2u37JtYwOwmEKhK6ZO3v9ggDBBm0La1LCK4uQ==}
+ engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0}
hasBin: true
peerDependencies:
'@edge-runtime/vm': '*'
- '@vitest/browser': '*'
- '@vitest/ui': '*'
+ '@opentelemetry/api': ^1.9.0
+ '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0
+ '@vitest/browser-playwright': 4.0.18
+ '@vitest/browser-preview': 4.0.18
+ '@vitest/browser-webdriverio': 4.0.18
+ '@vitest/ui': 4.0.18
happy-dom: '*'
jsdom: '*'
- playwright: '*'
- safaridriver: '*'
- webdriverio: '*'
peerDependenciesMeta:
'@edge-runtime/vm':
optional: true
- '@vitest/browser':
+ '@opentelemetry/api':
optional: true
- '@vitest/ui':
+ '@types/node':
optional: true
- happy-dom:
+ '@vitest/browser-playwright':
optional: true
- jsdom:
+ '@vitest/browser-preview':
+ optional: true
+ '@vitest/browser-webdriverio':
optional: true
- playwright:
+ '@vitest/ui':
optional: true
- safaridriver:
+ happy-dom:
optional: true
- webdriverio:
+ jsdom:
optional: true
+ vscode-oniguruma@2.0.1:
+ resolution: {integrity: sha512-poJU8iHIWnC3vgphJnrLZyI3YdqRlR27xzqDmpPXYzA93R4Gk8z7T6oqDzDoHjoikA2aS82crdXFkjELCdJsjQ==}
+
+ vscode-textmate@9.3.2:
+ resolution: {integrity: sha512-n2uGbUcrjhUEBH16uGA0TvUfhWwliFZ1e3+pTjrkim1Mt7ydB41lV08aUvsi70OlzDWp6X7Bx3w/x3fAXIsN0Q==}
+
w3c-xmlserializer@4.0.0:
resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==}
engines: {node: '>=14'}
+ web-namespaces@2.0.1:
+ resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==}
+
webidl-conversions@7.0.0:
resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==}
engines: {node: '>=12'}
@@ -2445,6 +2488,7 @@ packages:
whatwg-encoding@2.0.0:
resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==}
engines: {node: '>=12'}
+ deprecated: Use @exodus/bytes instead for a more spec-conformant and faster implementation
whatwg-mimetype@3.0.0:
resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==}
@@ -2475,8 +2519,8 @@ packages:
wrappy@1.0.2:
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
- ws@8.18.3:
- resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==}
+ ws@8.19.0:
+ resolution: {integrity: sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==}
engines: {node: '>=10.0.0'}
peerDependencies:
bufferutil: ^4.0.1
@@ -2518,34 +2562,30 @@ packages:
resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
engines: {node: '>=10'}
- yocto-queue@1.2.2:
- resolution: {integrity: sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==}
- engines: {node: '>=12.20'}
-
zwitch@2.0.4:
resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
snapshots:
- '@babel/code-frame@7.27.1':
+ '@babel/code-frame@7.29.0':
dependencies:
'@babel/helper-validator-identifier': 7.28.5
js-tokens: 4.0.0
picocolors: 1.1.1
- '@babel/compat-data@7.28.5': {}
+ '@babel/compat-data@7.29.0': {}
- '@babel/core@7.28.5':
+ '@babel/core@7.29.0':
dependencies:
- '@babel/code-frame': 7.27.1
- '@babel/generator': 7.28.5
- '@babel/helper-compilation-targets': 7.27.2
- '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5)
- '@babel/helpers': 7.28.4
- '@babel/parser': 7.28.5
- '@babel/template': 7.27.2
- '@babel/traverse': 7.28.5
- '@babel/types': 7.28.5
+ '@babel/code-frame': 7.29.0
+ '@babel/generator': 7.29.1
+ '@babel/helper-compilation-targets': 7.28.6
+ '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0)
+ '@babel/helpers': 7.28.6
+ '@babel/parser': 7.29.0
+ '@babel/template': 7.28.6
+ '@babel/traverse': 7.29.0
+ '@babel/types': 7.29.0
'@jridgewell/remapping': 2.3.5
convert-source-map: 2.0.0
debug: 4.4.3
@@ -2555,35 +2595,35 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@babel/generator@7.28.5':
+ '@babel/generator@7.29.1':
dependencies:
- '@babel/parser': 7.28.5
- '@babel/types': 7.28.5
+ '@babel/parser': 7.29.0
+ '@babel/types': 7.29.0
'@jridgewell/gen-mapping': 0.3.13
'@jridgewell/trace-mapping': 0.3.31
jsesc: 3.1.0
'@babel/helper-annotate-as-pure@7.27.3':
dependencies:
- '@babel/types': 7.28.5
+ '@babel/types': 7.29.0
- '@babel/helper-compilation-targets@7.27.2':
+ '@babel/helper-compilation-targets@7.28.6':
dependencies:
- '@babel/compat-data': 7.28.5
+ '@babel/compat-data': 7.29.0
'@babel/helper-validator-option': 7.27.1
- browserslist: 4.28.0
+ browserslist: 4.28.1
lru-cache: 5.1.1
semver: 6.3.1
- '@babel/helper-create-class-features-plugin@7.28.5(@babel/core@7.28.5)':
+ '@babel/helper-create-class-features-plugin@7.28.6(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
+ '@babel/core': 7.29.0
'@babel/helper-annotate-as-pure': 7.27.3
'@babel/helper-member-expression-to-functions': 7.28.5
'@babel/helper-optimise-call-expression': 7.27.1
- '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.5)
+ '@babel/helper-replace-supers': 7.28.6(@babel/core@7.29.0)
'@babel/helper-skip-transparent-expression-wrappers': 7.27.1
- '@babel/traverse': 7.28.5
+ '@babel/traverse': 7.29.0
semver: 6.3.1
transitivePeerDependencies:
- supports-color
@@ -2592,50 +2632,50 @@ snapshots:
'@babel/helper-member-expression-to-functions@7.28.5':
dependencies:
- '@babel/traverse': 7.28.5
- '@babel/types': 7.28.5
+ '@babel/traverse': 7.29.0
+ '@babel/types': 7.29.0
transitivePeerDependencies:
- supports-color
'@babel/helper-module-imports@7.18.6':
dependencies:
- '@babel/types': 7.28.5
+ '@babel/types': 7.29.0
- '@babel/helper-module-imports@7.27.1':
+ '@babel/helper-module-imports@7.28.6':
dependencies:
- '@babel/traverse': 7.28.5
- '@babel/types': 7.28.5
+ '@babel/traverse': 7.29.0
+ '@babel/types': 7.29.0
transitivePeerDependencies:
- supports-color
- '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.5)':
+ '@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-module-imports': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-module-imports': 7.28.6
'@babel/helper-validator-identifier': 7.28.5
- '@babel/traverse': 7.28.5
+ '@babel/traverse': 7.29.0
transitivePeerDependencies:
- supports-color
'@babel/helper-optimise-call-expression@7.27.1':
dependencies:
- '@babel/types': 7.28.5
+ '@babel/types': 7.29.0
- '@babel/helper-plugin-utils@7.27.1': {}
+ '@babel/helper-plugin-utils@7.28.6': {}
- '@babel/helper-replace-supers@7.27.1(@babel/core@7.28.5)':
+ '@babel/helper-replace-supers@7.28.6(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
+ '@babel/core': 7.29.0
'@babel/helper-member-expression-to-functions': 7.28.5
'@babel/helper-optimise-call-expression': 7.27.1
- '@babel/traverse': 7.28.5
+ '@babel/traverse': 7.29.0
transitivePeerDependencies:
- supports-color
'@babel/helper-skip-transparent-expression-wrappers@7.27.1':
dependencies:
- '@babel/traverse': 7.28.5
- '@babel/types': 7.28.5
+ '@babel/traverse': 7.29.0
+ '@babel/types': 7.29.0
transitivePeerDependencies:
- supports-color
@@ -2645,76 +2685,76 @@ snapshots:
'@babel/helper-validator-option@7.27.1': {}
- '@babel/helpers@7.28.4':
+ '@babel/helpers@7.28.6':
dependencies:
- '@babel/template': 7.27.2
- '@babel/types': 7.28.5
+ '@babel/template': 7.28.6
+ '@babel/types': 7.29.0
- '@babel/parser@7.28.5':
+ '@babel/parser@7.29.0':
dependencies:
- '@babel/types': 7.28.5
+ '@babel/types': 7.29.0
- '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-syntax-typescript@7.28.6(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
- '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.28.5)':
+ '@babel/plugin-transform-modules-commonjs@7.28.6(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5)
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0)
+ '@babel/helper-plugin-utils': 7.28.6
transitivePeerDependencies:
- supports-color
- '@babel/plugin-transform-typescript@7.28.5(@babel/core@7.28.5)':
+ '@babel/plugin-transform-typescript@7.28.6(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
+ '@babel/core': 7.29.0
'@babel/helper-annotate-as-pure': 7.27.3
- '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.5)
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0)
+ '@babel/helper-plugin-utils': 7.28.6
'@babel/helper-skip-transparent-expression-wrappers': 7.27.1
- '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.5)
+ '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.0)
transitivePeerDependencies:
- supports-color
- '@babel/preset-typescript@7.28.5(@babel/core@7.28.5)':
+ '@babel/preset-typescript@7.28.5(@babel/core@7.29.0)':
dependencies:
- '@babel/core': 7.28.5
- '@babel/helper-plugin-utils': 7.27.1
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
'@babel/helper-validator-option': 7.27.1
- '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.5)
- '@babel/plugin-transform-typescript': 7.28.5(@babel/core@7.28.5)
+ '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.29.0)
+ '@babel/plugin-transform-typescript': 7.28.6(@babel/core@7.29.0)
transitivePeerDependencies:
- supports-color
- '@babel/runtime@7.28.4': {}
+ '@babel/runtime@7.28.6': {}
- '@babel/template@7.27.2':
+ '@babel/template@7.28.6':
dependencies:
- '@babel/code-frame': 7.27.1
- '@babel/parser': 7.28.5
- '@babel/types': 7.28.5
+ '@babel/code-frame': 7.29.0
+ '@babel/parser': 7.29.0
+ '@babel/types': 7.29.0
- '@babel/traverse@7.28.5':
+ '@babel/traverse@7.29.0':
dependencies:
- '@babel/code-frame': 7.27.1
- '@babel/generator': 7.28.5
+ '@babel/code-frame': 7.29.0
+ '@babel/generator': 7.29.1
'@babel/helper-globals': 7.28.0
- '@babel/parser': 7.28.5
- '@babel/template': 7.27.2
- '@babel/types': 7.28.5
+ '@babel/parser': 7.29.0
+ '@babel/template': 7.28.6
+ '@babel/types': 7.29.0
debug: 4.4.3
transitivePeerDependencies:
- supports-color
- '@babel/types@7.28.5':
+ '@babel/types@7.29.0':
dependencies:
'@babel/helper-string-parser': 7.27.1
'@babel/helper-validator-identifier': 7.28.5
@@ -2754,229 +2794,151 @@ snapshots:
'@biomejs/cli-win32-x64@1.9.4':
optional: true
- '@esbuild/aix-ppc64@0.25.12':
- optional: true
-
- '@esbuild/aix-ppc64@0.27.0':
+ '@esbuild/aix-ppc64@0.27.3':
optional: true
'@esbuild/android-arm64@0.18.20':
optional: true
- '@esbuild/android-arm64@0.25.12':
- optional: true
-
- '@esbuild/android-arm64@0.27.0':
+ '@esbuild/android-arm64@0.27.3':
optional: true
'@esbuild/android-arm@0.18.20':
optional: true
- '@esbuild/android-arm@0.25.12':
- optional: true
-
- '@esbuild/android-arm@0.27.0':
+ '@esbuild/android-arm@0.27.3':
optional: true
'@esbuild/android-x64@0.18.20':
optional: true
- '@esbuild/android-x64@0.25.12':
- optional: true
-
- '@esbuild/android-x64@0.27.0':
+ '@esbuild/android-x64@0.27.3':
optional: true
'@esbuild/darwin-arm64@0.18.20':
optional: true
- '@esbuild/darwin-arm64@0.25.12':
- optional: true
-
- '@esbuild/darwin-arm64@0.27.0':
+ '@esbuild/darwin-arm64@0.27.3':
optional: true
'@esbuild/darwin-x64@0.18.20':
optional: true
- '@esbuild/darwin-x64@0.25.12':
- optional: true
-
- '@esbuild/darwin-x64@0.27.0':
+ '@esbuild/darwin-x64@0.27.3':
optional: true
'@esbuild/freebsd-arm64@0.18.20':
optional: true
- '@esbuild/freebsd-arm64@0.25.12':
- optional: true
-
- '@esbuild/freebsd-arm64@0.27.0':
+ '@esbuild/freebsd-arm64@0.27.3':
optional: true
'@esbuild/freebsd-x64@0.18.20':
optional: true
- '@esbuild/freebsd-x64@0.25.12':
- optional: true
-
- '@esbuild/freebsd-x64@0.27.0':
+ '@esbuild/freebsd-x64@0.27.3':
optional: true
'@esbuild/linux-arm64@0.18.20':
optional: true
- '@esbuild/linux-arm64@0.25.12':
- optional: true
-
- '@esbuild/linux-arm64@0.27.0':
+ '@esbuild/linux-arm64@0.27.3':
optional: true
'@esbuild/linux-arm@0.18.20':
optional: true
- '@esbuild/linux-arm@0.25.12':
- optional: true
-
- '@esbuild/linux-arm@0.27.0':
+ '@esbuild/linux-arm@0.27.3':
optional: true
'@esbuild/linux-ia32@0.18.20':
optional: true
- '@esbuild/linux-ia32@0.25.12':
- optional: true
-
- '@esbuild/linux-ia32@0.27.0':
+ '@esbuild/linux-ia32@0.27.3':
optional: true
'@esbuild/linux-loong64@0.18.20':
optional: true
- '@esbuild/linux-loong64@0.25.12':
- optional: true
-
- '@esbuild/linux-loong64@0.27.0':
+ '@esbuild/linux-loong64@0.27.3':
optional: true
'@esbuild/linux-mips64el@0.18.20':
optional: true
- '@esbuild/linux-mips64el@0.25.12':
- optional: true
-
- '@esbuild/linux-mips64el@0.27.0':
+ '@esbuild/linux-mips64el@0.27.3':
optional: true
'@esbuild/linux-ppc64@0.18.20':
optional: true
- '@esbuild/linux-ppc64@0.25.12':
- optional: true
-
- '@esbuild/linux-ppc64@0.27.0':
+ '@esbuild/linux-ppc64@0.27.3':
optional: true
'@esbuild/linux-riscv64@0.18.20':
optional: true
- '@esbuild/linux-riscv64@0.25.12':
- optional: true
-
- '@esbuild/linux-riscv64@0.27.0':
+ '@esbuild/linux-riscv64@0.27.3':
optional: true
'@esbuild/linux-s390x@0.18.20':
optional: true
- '@esbuild/linux-s390x@0.25.12':
- optional: true
-
- '@esbuild/linux-s390x@0.27.0':
+ '@esbuild/linux-s390x@0.27.3':
optional: true
'@esbuild/linux-x64@0.18.20':
optional: true
- '@esbuild/linux-x64@0.25.12':
- optional: true
-
- '@esbuild/linux-x64@0.27.0':
+ '@esbuild/linux-x64@0.27.3':
optional: true
- '@esbuild/netbsd-arm64@0.25.12':
- optional: true
-
- '@esbuild/netbsd-arm64@0.27.0':
+ '@esbuild/netbsd-arm64@0.27.3':
optional: true
'@esbuild/netbsd-x64@0.18.20':
optional: true
- '@esbuild/netbsd-x64@0.25.12':
+ '@esbuild/netbsd-x64@0.27.3':
optional: true
- '@esbuild/netbsd-x64@0.27.0':
- optional: true
-
- '@esbuild/openbsd-arm64@0.25.12':
- optional: true
-
- '@esbuild/openbsd-arm64@0.27.0':
+ '@esbuild/openbsd-arm64@0.27.3':
optional: true
'@esbuild/openbsd-x64@0.18.20':
optional: true
- '@esbuild/openbsd-x64@0.25.12':
+ '@esbuild/openbsd-x64@0.27.3':
optional: true
- '@esbuild/openbsd-x64@0.27.0':
- optional: true
-
- '@esbuild/openharmony-arm64@0.25.12':
- optional: true
-
- '@esbuild/openharmony-arm64@0.27.0':
+ '@esbuild/openharmony-arm64@0.27.3':
optional: true
'@esbuild/sunos-x64@0.18.20':
optional: true
- '@esbuild/sunos-x64@0.25.12':
- optional: true
-
- '@esbuild/sunos-x64@0.27.0':
+ '@esbuild/sunos-x64@0.27.3':
optional: true
'@esbuild/win32-arm64@0.18.20':
optional: true
- '@esbuild/win32-arm64@0.25.12':
- optional: true
-
- '@esbuild/win32-arm64@0.27.0':
+ '@esbuild/win32-arm64@0.27.3':
optional: true
'@esbuild/win32-ia32@0.18.20':
optional: true
- '@esbuild/win32-ia32@0.25.12':
- optional: true
-
- '@esbuild/win32-ia32@0.27.0':
+ '@esbuild/win32-ia32@0.27.3':
optional: true
'@esbuild/win32-x64@0.18.20':
optional: true
- '@esbuild/win32-x64@0.25.12':
- optional: true
-
- '@esbuild/win32-x64@0.27.0':
+ '@esbuild/win32-x64@0.27.3':
optional: true
- '@eslint-community/eslint-utils@4.9.0(eslint@8.57.1)':
+ '@eslint-community/eslint-utils@4.9.1(eslint@8.57.1)':
dependencies:
eslint: 8.57.1
eslint-visitor-keys: 3.4.3
@@ -2985,14 +2947,14 @@ snapshots:
'@eslint/eslintrc@2.1.4':
dependencies:
- ajv: 6.12.6
+ 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.2
+ minimatch: 3.1.5
strip-json-comments: 3.1.1
transitivePeerDependencies:
- supports-color
@@ -3003,7 +2965,7 @@ snapshots:
dependencies:
'@humanwhocodes/object-schema': 2.0.3
debug: 4.4.3
- minimatch: 3.1.2
+ minimatch: 3.1.5
transitivePeerDependencies:
- supports-color
@@ -3011,10 +2973,6 @@ snapshots:
'@humanwhocodes/object-schema@2.0.3': {}
- '@jest/schemas@29.6.3':
- dependencies:
- '@sinclair/typebox': 0.27.8
-
'@jridgewell/gen-mapping@0.3.13':
dependencies:
'@jridgewell/sourcemap-codec': 1.5.5
@@ -3044,114 +3002,142 @@ snapshots:
'@nodelib/fs.walk@1.2.8':
dependencies:
'@nodelib/fs.scandir': 2.1.5
- fastq: 1.19.1
+ fastq: 1.20.1
+
+ '@rollup/rollup-android-arm-eabi@4.59.0':
+ optional: true
+
+ '@rollup/rollup-android-arm64@4.59.0':
+ optional: true
+
+ '@rollup/rollup-darwin-arm64@4.59.0':
+ optional: true
- '@rollup/rollup-android-arm-eabi@4.53.3':
+ '@rollup/rollup-darwin-x64@4.59.0':
optional: true
- '@rollup/rollup-android-arm64@4.53.3':
+ '@rollup/rollup-freebsd-arm64@4.59.0':
optional: true
- '@rollup/rollup-darwin-arm64@4.53.3':
+ '@rollup/rollup-freebsd-x64@4.59.0':
optional: true
- '@rollup/rollup-darwin-x64@4.53.3':
+ '@rollup/rollup-linux-arm-gnueabihf@4.59.0':
optional: true
- '@rollup/rollup-freebsd-arm64@4.53.3':
+ '@rollup/rollup-linux-arm-musleabihf@4.59.0':
optional: true
- '@rollup/rollup-freebsd-x64@4.53.3':
+ '@rollup/rollup-linux-arm64-gnu@4.59.0':
optional: true
- '@rollup/rollup-linux-arm-gnueabihf@4.53.3':
+ '@rollup/rollup-linux-arm64-musl@4.59.0':
optional: true
- '@rollup/rollup-linux-arm-musleabihf@4.53.3':
+ '@rollup/rollup-linux-loong64-gnu@4.59.0':
optional: true
- '@rollup/rollup-linux-arm64-gnu@4.53.3':
+ '@rollup/rollup-linux-loong64-musl@4.59.0':
optional: true
- '@rollup/rollup-linux-arm64-musl@4.53.3':
+ '@rollup/rollup-linux-ppc64-gnu@4.59.0':
optional: true
- '@rollup/rollup-linux-loong64-gnu@4.53.3':
+ '@rollup/rollup-linux-ppc64-musl@4.59.0':
optional: true
- '@rollup/rollup-linux-ppc64-gnu@4.53.3':
+ '@rollup/rollup-linux-riscv64-gnu@4.59.0':
optional: true
- '@rollup/rollup-linux-riscv64-gnu@4.53.3':
+ '@rollup/rollup-linux-riscv64-musl@4.59.0':
optional: true
- '@rollup/rollup-linux-riscv64-musl@4.53.3':
+ '@rollup/rollup-linux-s390x-gnu@4.59.0':
optional: true
- '@rollup/rollup-linux-s390x-gnu@4.53.3':
+ '@rollup/rollup-linux-x64-gnu@4.59.0':
optional: true
- '@rollup/rollup-linux-x64-gnu@4.53.3':
+ '@rollup/rollup-linux-x64-musl@4.59.0':
optional: true
- '@rollup/rollup-linux-x64-musl@4.53.3':
+ '@rollup/rollup-openbsd-x64@4.59.0':
optional: true
- '@rollup/rollup-openharmony-arm64@4.53.3':
+ '@rollup/rollup-openharmony-arm64@4.59.0':
optional: true
- '@rollup/rollup-win32-arm64-msvc@4.53.3':
+ '@rollup/rollup-win32-arm64-msvc@4.59.0':
optional: true
- '@rollup/rollup-win32-ia32-msvc@4.53.3':
+ '@rollup/rollup-win32-ia32-msvc@4.59.0':
optional: true
- '@rollup/rollup-win32-x64-gnu@4.53.3':
+ '@rollup/rollup-win32-x64-gnu@4.59.0':
optional: true
- '@rollup/rollup-win32-x64-msvc@4.53.3':
+ '@rollup/rollup-win32-x64-msvc@4.59.0':
optional: true
- '@sinclair/typebox@0.27.8': {}
+ '@solidjs/testing-library@0.8.10(solid-js@1.9.11)':
+ dependencies:
+ '@testing-library/dom': 10.4.1
+ solid-js: 1.9.11
+
+ '@standard-schema/spec@1.1.0': {}
+
+ '@testing-library/dom@10.4.1':
+ dependencies:
+ '@babel/code-frame': 7.29.0
+ '@babel/runtime': 7.28.6
+ '@types/aria-query': 5.0.4
+ aria-query: 5.3.0
+ dom-accessibility-api: 0.5.16
+ lz-string: 1.5.0
+ picocolors: 1.1.1
+ pretty-format: 27.5.1
'@tootallnate/once@2.0.0': {}
+ '@types/aria-query@5.0.4': {}
+
'@types/babel__core@7.20.5':
dependencies:
- '@babel/parser': 7.28.5
- '@babel/types': 7.28.5
+ '@babel/parser': 7.29.0
+ '@babel/types': 7.29.0
'@types/babel__generator': 7.27.0
'@types/babel__template': 7.4.4
'@types/babel__traverse': 7.28.0
'@types/babel__generator@7.27.0':
dependencies:
- '@babel/types': 7.28.5
+ '@babel/types': 7.29.0
'@types/babel__template@7.4.4':
dependencies:
- '@babel/parser': 7.28.5
- '@babel/types': 7.28.5
+ '@babel/parser': 7.29.0
+ '@babel/types': 7.29.0
'@types/babel__traverse@7.28.0':
dependencies:
- '@babel/types': 7.28.5
+ '@babel/types': 7.29.0
- '@types/chai-subset@1.3.6(@types/chai@4.3.20)':
+ '@types/chai@5.2.3':
dependencies:
- '@types/chai': 4.3.20
-
- '@types/chai@4.3.20': {}
+ '@types/deep-eql': 4.0.2
+ assertion-error: 2.0.1
'@types/debug@4.1.12':
dependencies:
'@types/ms': 2.1.0
- '@types/estree@1.0.8': {}
+ '@types/deep-eql@4.0.2': {}
- '@types/hast@2.3.10':
+ '@types/estree-jsx@1.0.5':
dependencies:
- '@types/unist': 2.0.11
+ '@types/estree': 1.0.8
+
+ '@types/estree@1.0.8': {}
'@types/hast@3.0.4':
dependencies:
@@ -3168,9 +3154,12 @@ snapshots:
'@types/node@24.10.1':
dependencies:
undici-types: 7.16.0
+ optional: true
'@types/semver@7.7.1': {}
+ '@types/ungap__structured-clone@1.2.0': {}
+
'@types/unist@2.0.11': {}
'@types/unist@3.0.3': {}
@@ -3188,7 +3177,7 @@ snapshots:
graphemer: 1.4.0
ignore: 5.3.2
natural-compare: 1.4.0
- semver: 7.7.3
+ semver: 7.7.4
ts-api-utils: 1.4.3(typescript@5.9.3)
optionalDependencies:
typescript: 5.9.3
@@ -3208,11 +3197,29 @@ snapshots:
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)
+ '@typescript-eslint/types': 8.56.1
+ debug: 4.4.3
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - supports-color
+
'@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
+ '@typescript-eslint/visitor-keys': 8.56.1
+
+ '@typescript-eslint/tsconfig-utils@8.56.1(typescript@5.9.3)':
+ dependencies:
+ typescript: 5.9.3
+
'@typescript-eslint/type-utils@6.21.0(eslint@8.57.1)(typescript@5.9.3)':
dependencies:
'@typescript-eslint/typescript-estree': 6.21.0(typescript@5.9.3)
@@ -3227,6 +3234,8 @@ snapshots:
'@typescript-eslint/types@6.21.0': {}
+ '@typescript-eslint/types@8.56.1': {}
+
'@typescript-eslint/typescript-estree@6.21.0(typescript@5.9.3)':
dependencies:
'@typescript-eslint/types': 6.21.0
@@ -3235,73 +3244,118 @@ snapshots:
globby: 11.1.0
is-glob: 4.0.3
minimatch: 9.0.3
- semver: 7.7.3
+ semver: 7.7.4
ts-api-utils: 1.4.3(typescript@5.9.3)
optionalDependencies:
typescript: 5.9.3
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)
+ '@typescript-eslint/tsconfig-utils': 8.56.1(typescript@5.9.3)
+ '@typescript-eslint/types': 8.56.1
+ '@typescript-eslint/visitor-keys': 8.56.1
+ debug: 4.4.3
+ minimatch: 10.2.4
+ semver: 7.7.4
+ tinyglobby: 0.2.15
+ ts-api-utils: 2.4.0(typescript@5.9.3)
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - supports-color
+
'@typescript-eslint/utils@6.21.0(eslint@8.57.1)(typescript@5.9.3)':
dependencies:
- '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.1)
+ '@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@5.9.3)
eslint: 8.57.1
- semver: 7.7.3
+ semver: 7.7.4
transitivePeerDependencies:
- supports-color
- typescript
+ '@typescript-eslint/utils@8.56.1(eslint@8.57.1)(typescript@5.9.3)':
+ dependencies:
+ '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1)
+ '@typescript-eslint/scope-manager': 8.56.1
+ '@typescript-eslint/types': 8.56.1
+ '@typescript-eslint/typescript-estree': 8.56.1(typescript@5.9.3)
+ eslint: 8.57.1
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - supports-color
+
'@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
+ eslint-visitor-keys: 5.0.1
+
'@ungap/structured-clone@1.3.0': {}
- '@vitest/expect@0.33.0':
+ '@vitest/expect@4.0.18':
dependencies:
- '@vitest/spy': 0.33.0
- '@vitest/utils': 0.33.0
- chai: 4.5.0
+ '@standard-schema/spec': 1.1.0
+ '@types/chai': 5.2.3
+ '@vitest/spy': 4.0.18
+ '@vitest/utils': 4.0.18
+ chai: 6.2.2
+ tinyrainbow: 3.0.3
- '@vitest/runner@0.33.0':
+ '@vitest/mocker@4.0.18(vite@7.3.1(@types/node@24.10.1)(yaml@2.4.2))':
dependencies:
- '@vitest/utils': 0.33.0
- p-limit: 4.0.0
- pathe: 1.1.2
+ '@vitest/spy': 4.0.18
+ estree-walker: 3.0.3
+ magic-string: 0.30.21
+ optionalDependencies:
+ vite: 7.3.1(@types/node@24.10.1)(yaml@2.4.2)
- '@vitest/snapshot@0.33.0':
+ '@vitest/pretty-format@4.0.18':
dependencies:
- magic-string: 0.30.21
- pathe: 1.1.2
- pretty-format: 29.7.0
+ tinyrainbow: 3.0.3
- '@vitest/spy@0.33.0':
+ '@vitest/runner@4.0.18':
dependencies:
- tinyspy: 2.2.1
+ '@vitest/utils': 4.0.18
+ pathe: 2.0.3
- '@vitest/utils@0.33.0':
+ '@vitest/snapshot@4.0.18':
dependencies:
- diff-sequences: 29.6.3
- loupe: 2.3.7
- pretty-format: 29.7.0
+ '@vitest/pretty-format': 4.0.18
+ magic-string: 0.30.21
+ pathe: 2.0.3
- abab@2.0.6: {}
+ '@vitest/spy@4.0.18': {}
+
+ '@vitest/utils@4.0.18':
+ dependencies:
+ '@vitest/pretty-format': 4.0.18
+ tinyrainbow: 3.0.3
- acorn-jsx@5.3.2(acorn@8.15.0):
+ '@wooorm/starry-night@3.9.0':
dependencies:
- acorn: 8.15.0
+ '@types/hast': 3.0.4
+ import-meta-resolve: 4.2.0
+ vscode-oniguruma: 2.0.1
+ vscode-textmate: 9.3.2
+
+ abab@2.0.6: {}
- acorn-walk@8.3.4:
+ acorn-jsx@5.3.2(acorn@8.16.0):
dependencies:
- acorn: 8.15.0
+ acorn: 8.16.0
- acorn@8.15.0: {}
+ acorn@8.16.0: {}
agent-base@6.0.2:
dependencies:
@@ -3309,7 +3363,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- ajv@6.12.6:
+ ajv@6.14.0:
dependencies:
fast-deep-equal: 3.1.3
fast-json-stable-stringify: 2.1.0
@@ -3328,33 +3382,39 @@ snapshots:
argparse@2.0.1: {}
+ aria-query@5.3.0:
+ dependencies:
+ dequal: 2.0.3
+
array-union@2.1.0: {}
- assertion-error@1.1.0: {}
+ assertion-error@2.0.1: {}
asynckit@0.4.0: {}
- babel-plugin-jsx-dom-expressions@0.40.3(@babel/core@7.28.5):
+ babel-plugin-jsx-dom-expressions@0.40.5(@babel/core@7.29.0):
dependencies:
- '@babel/core': 7.28.5
+ '@babel/core': 7.29.0
'@babel/helper-module-imports': 7.18.6
- '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5)
- '@babel/types': 7.28.5
+ '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0)
+ '@babel/types': 7.29.0
html-entities: 2.3.3
parse5: 7.3.0
- babel-preset-solid@1.9.10(@babel/core@7.28.5)(solid-js@1.9.10):
+ babel-preset-solid@1.9.10(@babel/core@7.29.0)(solid-js@1.9.11):
dependencies:
- '@babel/core': 7.28.5
- babel-plugin-jsx-dom-expressions: 0.40.3(@babel/core@7.28.5)
+ '@babel/core': 7.29.0
+ babel-plugin-jsx-dom-expressions: 0.40.5(@babel/core@7.29.0)
optionalDependencies:
- solid-js: 1.9.10
+ solid-js: 1.9.11
bail@2.0.2: {}
balanced-match@1.0.2: {}
- baseline-browser-mapping@2.8.32: {}
+ balanced-match@4.0.4: {}
+
+ baseline-browser-mapping@2.10.0: {}
brace-expansion@1.1.12:
dependencies:
@@ -3365,21 +3425,25 @@ snapshots:
dependencies:
balanced-match: 1.0.2
+ brace-expansion@5.0.4:
+ dependencies:
+ balanced-match: 4.0.4
+
braces@3.0.3:
dependencies:
fill-range: 7.1.1
- browserslist@4.28.0:
+ browserslist@4.28.1:
dependencies:
- baseline-browser-mapping: 2.8.32
- caniuse-lite: 1.0.30001757
- electron-to-chromium: 1.5.262
- node-releases: 2.0.27
- update-browserslist-db: 1.1.4(browserslist@4.28.0)
+ baseline-browser-mapping: 2.10.0
+ caniuse-lite: 1.0.30001777
+ electron-to-chromium: 1.5.307
+ node-releases: 2.0.36
+ update-browserslist-db: 1.2.3(browserslist@4.28.1)
- bundle-require@5.1.0(esbuild@0.27.0):
+ bundle-require@5.1.0(esbuild@0.27.3):
dependencies:
- esbuild: 0.27.0
+ esbuild: 0.27.3
load-tsconfig: 0.2.5
cac@6.7.14: {}
@@ -3391,30 +3455,24 @@ snapshots:
callsites@3.1.0: {}
- caniuse-lite@1.0.30001757: {}
+ caniuse-lite@1.0.30001777: {}
ccount@2.0.1: {}
- chai@4.5.0:
- dependencies:
- assertion-error: 1.1.0
- check-error: 1.0.3
- deep-eql: 4.1.4
- get-func-name: 2.0.2
- loupe: 2.3.7
- pathval: 1.1.1
- type-detect: 4.1.0
+ chai@6.2.2: {}
chalk@4.1.2:
dependencies:
ansi-styles: 4.3.0
supports-color: 7.2.0
+ character-entities-html4@2.1.0: {}
+
+ character-entities-legacy@3.0.0: {}
+
character-entities@2.0.2: {}
- check-error@1.0.3:
- dependencies:
- get-func-name: 2.0.2
+ character-reference-invalid@2.0.1: {}
chokidar@4.0.3:
dependencies:
@@ -3446,7 +3504,7 @@ snapshots:
dependencies:
chalk: 4.1.2
date-fns: 2.30.0
- lodash: 4.17.21
+ lodash: 4.17.23
rxjs: 7.8.2
shell-quote: 1.8.3
spawn-command: 0.0.2
@@ -3480,7 +3538,7 @@ snapshots:
date-fns@2.30.0:
dependencies:
- '@babel/runtime': 7.28.4
+ '@babel/runtime': 7.28.6
debug@4.4.3:
dependencies:
@@ -3488,14 +3546,10 @@ snapshots:
decimal.js@10.6.0: {}
- decode-named-character-reference@1.2.0:
+ decode-named-character-reference@1.3.0:
dependencies:
character-entities: 2.0.2
- deep-eql@4.1.4:
- dependencies:
- type-detect: 4.1.0
-
deep-is@0.1.4: {}
delayed-stream@1.0.0: {}
@@ -3506,8 +3560,6 @@ snapshots:
dependencies:
dequal: 2.0.3
- diff-sequences@29.6.3: {}
-
dir-glob@3.0.1:
dependencies:
path-type: 4.0.0
@@ -3516,6 +3568,8 @@ snapshots:
dependencies:
esutils: 2.0.3
+ dom-accessibility-api@0.5.16: {}
+
domexception@4.0.0:
dependencies:
webidl-conversions: 7.0.0
@@ -3526,7 +3580,7 @@ snapshots:
es-errors: 1.3.0
gopd: 1.2.0
- electron-to-chromium@1.5.262: {}
+ electron-to-chromium@1.5.307: {}
emoji-regex@8.0.0: {}
@@ -3536,6 +3590,8 @@ snapshots:
es-errors@1.3.0: {}
+ es-module-lexer@1.7.0: {}
+
es-object-atoms@1.1.1:
dependencies:
es-errors: 1.3.0
@@ -3547,13 +3603,13 @@ snapshots:
has-tostringtag: 1.0.2
hasown: 2.0.2
- esbuild-plugin-solid@0.5.0(esbuild@0.18.20)(solid-js@1.9.10):
+ esbuild-plugin-solid@0.5.0(esbuild@0.18.20)(solid-js@1.9.11):
dependencies:
- '@babel/core': 7.28.5
- '@babel/preset-typescript': 7.28.5(@babel/core@7.28.5)
- babel-preset-solid: 1.9.10(@babel/core@7.28.5)(solid-js@1.9.10)
+ '@babel/core': 7.29.0
+ '@babel/preset-typescript': 7.28.5(@babel/core@7.29.0)
+ babel-preset-solid: 1.9.10(@babel/core@7.29.0)(solid-js@1.9.11)
esbuild: 0.18.20
- solid-js: 1.9.10
+ solid-js: 1.9.11
transitivePeerDependencies:
- supports-color
@@ -3582,63 +3638,34 @@ snapshots:
'@esbuild/win32-ia32': 0.18.20
'@esbuild/win32-x64': 0.18.20
- esbuild@0.25.12:
+ esbuild@0.27.3:
optionalDependencies:
- '@esbuild/aix-ppc64': 0.25.12
- '@esbuild/android-arm': 0.25.12
- '@esbuild/android-arm64': 0.25.12
- '@esbuild/android-x64': 0.25.12
- '@esbuild/darwin-arm64': 0.25.12
- '@esbuild/darwin-x64': 0.25.12
- '@esbuild/freebsd-arm64': 0.25.12
- '@esbuild/freebsd-x64': 0.25.12
- '@esbuild/linux-arm': 0.25.12
- '@esbuild/linux-arm64': 0.25.12
- '@esbuild/linux-ia32': 0.25.12
- '@esbuild/linux-loong64': 0.25.12
- '@esbuild/linux-mips64el': 0.25.12
- '@esbuild/linux-ppc64': 0.25.12
- '@esbuild/linux-riscv64': 0.25.12
- '@esbuild/linux-s390x': 0.25.12
- '@esbuild/linux-x64': 0.25.12
- '@esbuild/netbsd-arm64': 0.25.12
- '@esbuild/netbsd-x64': 0.25.12
- '@esbuild/openbsd-arm64': 0.25.12
- '@esbuild/openbsd-x64': 0.25.12
- '@esbuild/openharmony-arm64': 0.25.12
- '@esbuild/sunos-x64': 0.25.12
- '@esbuild/win32-arm64': 0.25.12
- '@esbuild/win32-ia32': 0.25.12
- '@esbuild/win32-x64': 0.25.12
-
- esbuild@0.27.0:
- optionalDependencies:
- '@esbuild/aix-ppc64': 0.27.0
- '@esbuild/android-arm': 0.27.0
- '@esbuild/android-arm64': 0.27.0
- '@esbuild/android-x64': 0.27.0
- '@esbuild/darwin-arm64': 0.27.0
- '@esbuild/darwin-x64': 0.27.0
- '@esbuild/freebsd-arm64': 0.27.0
- '@esbuild/freebsd-x64': 0.27.0
- '@esbuild/linux-arm': 0.27.0
- '@esbuild/linux-arm64': 0.27.0
- '@esbuild/linux-ia32': 0.27.0
- '@esbuild/linux-loong64': 0.27.0
- '@esbuild/linux-mips64el': 0.27.0
- '@esbuild/linux-ppc64': 0.27.0
- '@esbuild/linux-riscv64': 0.27.0
- '@esbuild/linux-s390x': 0.27.0
- '@esbuild/linux-x64': 0.27.0
- '@esbuild/netbsd-arm64': 0.27.0
- '@esbuild/netbsd-x64': 0.27.0
- '@esbuild/openbsd-arm64': 0.27.0
- '@esbuild/openbsd-x64': 0.27.0
- '@esbuild/openharmony-arm64': 0.27.0
- '@esbuild/sunos-x64': 0.27.0
- '@esbuild/win32-arm64': 0.27.0
- '@esbuild/win32-ia32': 0.27.0
- '@esbuild/win32-x64': 0.27.0
+ '@esbuild/aix-ppc64': 0.27.3
+ '@esbuild/android-arm': 0.27.3
+ '@esbuild/android-arm64': 0.27.3
+ '@esbuild/android-x64': 0.27.3
+ '@esbuild/darwin-arm64': 0.27.3
+ '@esbuild/darwin-x64': 0.27.3
+ '@esbuild/freebsd-arm64': 0.27.3
+ '@esbuild/freebsd-x64': 0.27.3
+ '@esbuild/linux-arm': 0.27.3
+ '@esbuild/linux-arm64': 0.27.3
+ '@esbuild/linux-ia32': 0.27.3
+ '@esbuild/linux-loong64': 0.27.3
+ '@esbuild/linux-mips64el': 0.27.3
+ '@esbuild/linux-ppc64': 0.27.3
+ '@esbuild/linux-riscv64': 0.27.3
+ '@esbuild/linux-s390x': 0.27.3
+ '@esbuild/linux-x64': 0.27.3
+ '@esbuild/netbsd-arm64': 0.27.3
+ '@esbuild/netbsd-x64': 0.27.3
+ '@esbuild/openbsd-arm64': 0.27.3
+ '@esbuild/openbsd-x64': 0.27.3
+ '@esbuild/openharmony-arm64': 0.27.3
+ '@esbuild/sunos-x64': 0.27.3
+ '@esbuild/win32-arm64': 0.27.3
+ '@esbuild/win32-ia32': 0.27.3
+ '@esbuild/win32-x64': 0.27.3
escalade@3.2.0: {}
@@ -3648,6 +3675,10 @@ snapshots:
escape-string-regexp@5.0.0: {}
+ eslint-config-prettier@9.1.2(eslint@8.57.1):
+ dependencies:
+ eslint: 8.57.1
+
eslint-plugin-eslint-comments@3.2.0(eslint@8.57.1):
dependencies:
escape-string-regexp: 1.0.5
@@ -3656,6 +3687,19 @@ snapshots:
eslint-plugin-no-only-tests@3.3.0: {}
+ eslint-plugin-solid@0.14.5(eslint@8.57.1)(typescript@5.9.3):
+ dependencies:
+ '@typescript-eslint/utils': 8.56.1(eslint@8.57.1)(typescript@5.9.3)
+ eslint: 8.57.1
+ estraverse: 5.3.0
+ is-html: 2.0.0
+ kebab-case: 1.0.2
+ known-css-properties: 0.30.0
+ style-to-object: 1.0.14
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - supports-color
+
eslint-scope@7.2.2:
dependencies:
esrecurse: 4.3.0
@@ -3663,9 +3707,11 @@ snapshots:
eslint-visitor-keys@3.4.3: {}
+ eslint-visitor-keys@5.0.1: {}
+
eslint@8.57.1:
dependencies:
- '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.1)
+ '@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
@@ -3673,7 +3719,7 @@ snapshots:
'@humanwhocodes/module-importer': 1.0.1
'@nodelib/fs.walk': 1.2.8
'@ungap/structured-clone': 1.3.0
- ajv: 6.12.6
+ ajv: 6.14.0
chalk: 4.1.2
cross-spawn: 7.0.6
debug: 4.4.3
@@ -3682,7 +3728,7 @@ snapshots:
eslint-scope: 7.2.2
eslint-visitor-keys: 3.4.3
espree: 9.6.1
- esquery: 1.6.0
+ esquery: 1.7.0
esutils: 2.0.3
fast-deep-equal: 3.1.3
file-entry-cache: 6.0.1
@@ -3698,7 +3744,7 @@ snapshots:
json-stable-stringify-without-jsonify: 1.0.1
levn: 0.4.1
lodash.merge: 4.6.2
- minimatch: 3.1.2
+ minimatch: 3.1.5
natural-compare: 1.4.0
optionator: 0.9.4
strip-ansi: 6.0.1
@@ -3708,11 +3754,11 @@ snapshots:
espree@9.6.1:
dependencies:
- acorn: 8.15.0
- acorn-jsx: 5.3.2(acorn@8.15.0)
+ acorn: 8.16.0
+ acorn-jsx: 5.3.2(acorn@8.16.0)
eslint-visitor-keys: 3.4.3
- esquery@1.6.0:
+ esquery@1.7.0:
dependencies:
estraverse: 5.3.0
@@ -3722,8 +3768,16 @@ snapshots:
estraverse@5.3.0: {}
+ estree-util-is-identifier-name@3.0.0: {}
+
+ estree-walker@3.0.3:
+ dependencies:
+ '@types/estree': 1.0.8
+
esutils@2.0.3: {}
+ expect-type@1.3.0: {}
+
extend@3.0.2: {}
fast-deep-equal@3.1.3: {}
@@ -3740,7 +3794,7 @@ snapshots:
fast-levenshtein@2.0.6: {}
- fastq@1.19.1:
+ fastq@1.20.1:
dependencies:
reusify: 1.1.0
@@ -3764,16 +3818,16 @@ snapshots:
fix-dts-default-cjs-exports@1.0.1:
dependencies:
magic-string: 0.30.21
- mlly: 1.8.0
- rollup: 4.53.3
+ mlly: 1.8.1
+ rollup: 4.59.0
flat-cache@3.2.0:
dependencies:
- flatted: 3.3.3
+ flatted: 3.3.4
keyv: 4.5.4
rimraf: 3.0.2
- flatted@3.3.3: {}
+ flatted@3.3.4: {}
form-data@4.0.5:
dependencies:
@@ -3794,8 +3848,6 @@ snapshots:
get-caller-file@2.0.5: {}
- get-func-name@2.0.2: {}
-
get-intrinsic@1.3.0:
dependencies:
call-bind-apply-helpers: 1.0.2
@@ -3814,6 +3866,8 @@ snapshots:
dunder-proto: 1.0.1
es-object-atoms: 1.1.1
+ github-slugger@2.0.0: {}
+
glob-parent@5.1.2:
dependencies:
is-glob: 4.0.3
@@ -3827,7 +3881,7 @@ snapshots:
fs.realpath: 1.0.0
inflight: 1.0.6
inherits: 2.0.4
- minimatch: 3.1.2
+ minimatch: 3.1.5
once: 1.4.0
path-is-absolute: 1.0.1
@@ -3860,12 +3914,95 @@ snapshots:
dependencies:
function-bind: 1.1.2
+ hast-util-from-parse5@8.0.3:
+ dependencies:
+ '@types/hast': 3.0.4
+ '@types/unist': 3.0.3
+ devlop: 1.1.0
+ hastscript: 9.0.1
+ property-information: 7.1.0
+ vfile: 6.0.3
+ vfile-location: 5.0.3
+ web-namespaces: 2.0.1
+
+ hast-util-parse-selector@4.0.0:
+ dependencies:
+ '@types/hast': 3.0.4
+
+ hast-util-raw@9.1.0:
+ dependencies:
+ '@types/hast': 3.0.4
+ '@types/unist': 3.0.3
+ '@ungap/structured-clone': 1.3.0
+ hast-util-from-parse5: 8.0.3
+ hast-util-to-parse5: 8.0.1
+ html-void-elements: 3.0.0
+ mdast-util-to-hast: 13.2.1
+ parse5: 7.3.0
+ unist-util-position: 5.0.0
+ unist-util-visit: 5.1.0
+ vfile: 6.0.3
+ web-namespaces: 2.0.1
+ zwitch: 2.0.4
+
+ hast-util-to-jsx-runtime@2.3.6:
+ dependencies:
+ '@types/estree': 1.0.8
+ '@types/hast': 3.0.4
+ '@types/unist': 3.0.3
+ comma-separated-tokens: 2.0.3
+ devlop: 1.1.0
+ estree-util-is-identifier-name: 3.0.0
+ hast-util-whitespace: 3.0.0
+ mdast-util-mdx-expression: 2.0.1
+ mdast-util-mdx-jsx: 3.2.0
+ mdast-util-mdxjs-esm: 2.0.1
+ property-information: 7.1.0
+ space-separated-tokens: 2.0.2
+ style-to-js: 1.1.21
+ unist-util-position: 5.0.0
+ vfile-message: 4.0.3
+ transitivePeerDependencies:
+ - supports-color
+
+ hast-util-to-parse5@8.0.1:
+ dependencies:
+ '@types/hast': 3.0.4
+ comma-separated-tokens: 2.0.3
+ devlop: 1.1.0
+ property-information: 7.1.0
+ space-separated-tokens: 2.0.2
+ web-namespaces: 2.0.1
+ zwitch: 2.0.4
+
+ hast-util-to-string@3.0.1:
+ dependencies:
+ '@types/hast': 3.0.4
+
+ hast-util-whitespace@3.0.0:
+ dependencies:
+ '@types/hast': 3.0.4
+
+ hastscript@9.0.1:
+ dependencies:
+ '@types/hast': 3.0.4
+ comma-separated-tokens: 2.0.3
+ hast-util-parse-selector: 4.0.0
+ property-information: 7.1.0
+ space-separated-tokens: 2.0.2
+
html-encoding-sniffer@3.0.0:
dependencies:
whatwg-encoding: 2.0.0
html-entities@2.3.3: {}
+ html-tags@3.3.1: {}
+
+ html-url-attributes@3.0.1: {}
+
+ html-void-elements@3.0.0: {}
+
http-proxy-agent@5.0.0:
dependencies:
'@tootallnate/once': 2.0.0
@@ -3892,6 +4029,8 @@ snapshots:
parent-module: 1.0.1
resolve-from: 4.0.0
+ import-meta-resolve@4.2.0: {}
+
imurmurhash@0.1.4: {}
inflight@1.0.6:
@@ -3901,7 +4040,16 @@ snapshots:
inherits@2.0.4: {}
- inline-style-parser@0.1.1: {}
+ inline-style-parser@0.2.7: {}
+
+ is-alphabetical@2.0.1: {}
+
+ is-alphanumerical@2.0.1:
+ dependencies:
+ is-alphabetical: 2.0.1
+ is-decimal: 2.0.1
+
+ is-decimal@2.0.1: {}
is-extglob@2.1.1: {}
@@ -3911,6 +4059,12 @@ snapshots:
dependencies:
is-extglob: 2.1.1
+ is-hexadecimal@2.0.1: {}
+
+ is-html@2.0.0:
+ dependencies:
+ html-tags: 3.3.1
+
is-number@7.0.0: {}
is-path-inside@3.0.3: {}
@@ -3943,7 +4097,7 @@ snapshots:
http-proxy-agent: 5.0.0
https-proxy-agent: 5.0.1
is-potential-custom-element-name: 1.0.1
- nwsapi: 2.2.22
+ nwsapi: 2.2.23
parse5: 7.3.0
rrweb-cssom: 0.6.0
saxes: 6.0.0
@@ -3954,7 +4108,7 @@ snapshots:
whatwg-encoding: 2.0.0
whatwg-mimetype: 3.0.0
whatwg-url: 12.0.1
- ws: 8.18.3
+ ws: 8.19.0
xml-name-validator: 4.0.0
transitivePeerDependencies:
- bufferutil
@@ -3971,10 +4125,16 @@ snapshots:
json5@2.2.3: {}
+ kebab-case@1.0.2: {}
+
keyv@4.5.4:
dependencies:
json-buffer: 3.0.1
+ known-css-properties@0.30.0: {}
+
+ levenshtein-edit-distance@3.0.1: {}
+
levn@0.4.1:
dependencies:
prelude-ls: 1.2.1
@@ -3986,26 +4146,22 @@ snapshots:
load-tsconfig@0.2.5: {}
- local-pkg@0.4.3: {}
-
locate-path@6.0.0:
dependencies:
p-locate: 5.0.0
lodash.merge@4.6.2: {}
- lodash@4.17.21: {}
+ lodash@4.17.23: {}
longest-streak@3.1.0: {}
- loupe@2.3.7:
- dependencies:
- get-func-name: 2.0.2
-
lru-cache@5.1.1:
dependencies:
yallist: 3.1.1
+ lz-string@1.5.0: {}
+
magic-string@0.30.21:
dependencies:
'@jridgewell/sourcemap-codec': 1.5.5
@@ -4021,11 +4177,11 @@ snapshots:
unist-util-is: 6.0.1
unist-util-visit-parents: 6.0.2
- mdast-util-from-markdown@2.0.2:
+ mdast-util-from-markdown@2.0.3:
dependencies:
'@types/mdast': 4.0.4
'@types/unist': 3.0.3
- decode-named-character-reference: 1.2.0
+ decode-named-character-reference: 1.3.0
devlop: 1.1.0
mdast-util-to-string: 4.0.0
micromark: 4.0.2
@@ -4050,7 +4206,7 @@ snapshots:
dependencies:
'@types/mdast': 4.0.4
devlop: 1.1.0
- mdast-util-from-markdown: 2.0.2
+ mdast-util-from-markdown: 2.0.3
mdast-util-to-markdown: 2.1.2
micromark-util-normalize-identifier: 2.0.1
transitivePeerDependencies:
@@ -4059,7 +4215,7 @@ snapshots:
mdast-util-gfm-strikethrough@2.0.0:
dependencies:
'@types/mdast': 4.0.4
- mdast-util-from-markdown: 2.0.2
+ mdast-util-from-markdown: 2.0.3
mdast-util-to-markdown: 2.1.2
transitivePeerDependencies:
- supports-color
@@ -4069,7 +4225,7 @@ snapshots:
'@types/mdast': 4.0.4
devlop: 1.1.0
markdown-table: 3.0.4
- mdast-util-from-markdown: 2.0.2
+ mdast-util-from-markdown: 2.0.3
mdast-util-to-markdown: 2.1.2
transitivePeerDependencies:
- supports-color
@@ -4078,14 +4234,14 @@ snapshots:
dependencies:
'@types/mdast': 4.0.4
devlop: 1.1.0
- mdast-util-from-markdown: 2.0.2
+ mdast-util-from-markdown: 2.0.3
mdast-util-to-markdown: 2.1.2
transitivePeerDependencies:
- supports-color
mdast-util-gfm@3.1.0:
dependencies:
- mdast-util-from-markdown: 2.0.2
+ mdast-util-from-markdown: 2.0.3
mdast-util-gfm-autolink-literal: 2.0.1
mdast-util-gfm-footnote: 2.1.0
mdast-util-gfm-strikethrough: 2.0.0
@@ -4095,6 +4251,45 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ mdast-util-mdx-expression@2.0.1:
+ dependencies:
+ '@types/estree-jsx': 1.0.5
+ '@types/hast': 3.0.4
+ '@types/mdast': 4.0.4
+ devlop: 1.1.0
+ mdast-util-from-markdown: 2.0.3
+ mdast-util-to-markdown: 2.1.2
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-mdx-jsx@3.2.0:
+ dependencies:
+ '@types/estree-jsx': 1.0.5
+ '@types/hast': 3.0.4
+ '@types/mdast': 4.0.4
+ '@types/unist': 3.0.3
+ ccount: 2.0.1
+ devlop: 1.1.0
+ mdast-util-from-markdown: 2.0.3
+ mdast-util-to-markdown: 2.1.2
+ parse-entities: 4.0.2
+ stringify-entities: 4.0.4
+ unist-util-stringify-position: 4.0.0
+ vfile-message: 4.0.3
+ transitivePeerDependencies:
+ - supports-color
+
+ mdast-util-mdxjs-esm@2.0.1:
+ dependencies:
+ '@types/estree-jsx': 1.0.5
+ '@types/hast': 3.0.4
+ '@types/mdast': 4.0.4
+ devlop: 1.1.0
+ mdast-util-from-markdown: 2.0.3
+ mdast-util-to-markdown: 2.1.2
+ transitivePeerDependencies:
+ - supports-color
+
mdast-util-phrasing@4.1.0:
dependencies:
'@types/mdast': 4.0.4
@@ -4109,7 +4304,7 @@ snapshots:
micromark-util-sanitize-uri: 2.0.1
trim-lines: 3.0.1
unist-util-position: 5.0.0
- unist-util-visit: 5.0.0
+ unist-util-visit: 5.1.0
vfile: 6.0.3
mdast-util-to-markdown@2.1.2:
@@ -4121,13 +4316,23 @@ snapshots:
mdast-util-to-string: 4.0.0
micromark-util-classify-character: 2.0.1
micromark-util-decode-string: 2.0.1
- unist-util-visit: 5.0.0
+ unist-util-visit: 5.1.0
zwitch: 2.0.4
mdast-util-to-string@4.0.0:
dependencies:
'@types/mdast': 4.0.4
+ mdast-util-toc@7.1.0:
+ dependencies:
+ '@types/mdast': 4.0.4
+ '@types/ungap__structured-clone': 1.2.0
+ '@ungap/structured-clone': 1.3.0
+ github-slugger: 2.0.0
+ mdast-util-to-string: 4.0.0
+ unist-util-is: 6.0.1
+ unist-util-visit: 5.1.0
+
merge-anything@5.1.7:
dependencies:
is-what: 4.1.16
@@ -4136,7 +4341,7 @@ snapshots:
micromark-core-commonmark@2.0.3:
dependencies:
- decode-named-character-reference: 1.2.0
+ decode-named-character-reference: 1.3.0
devlop: 1.1.0
micromark-factory-destination: 2.0.1
micromark-factory-label: 2.0.1
@@ -4269,7 +4474,7 @@ snapshots:
micromark-util-decode-string@2.0.1:
dependencies:
- decode-named-character-reference: 1.2.0
+ decode-named-character-reference: 1.3.0
micromark-util-character: 2.1.1
micromark-util-decode-numeric-character-reference: 2.0.2
micromark-util-symbol: 2.0.1
@@ -4307,7 +4512,7 @@ snapshots:
dependencies:
'@types/debug': 4.1.12
debug: 4.4.3
- decode-named-character-reference: 1.2.0
+ decode-named-character-reference: 1.3.0
devlop: 1.1.0
micromark-core-commonmark: 2.0.3
micromark-factory-space: 2.0.1
@@ -4336,7 +4541,11 @@ snapshots:
dependencies:
mime-db: 1.52.0
- minimatch@3.1.2:
+ minimatch@10.2.4:
+ dependencies:
+ brace-expansion: 5.0.4
+
+ minimatch@3.1.5:
dependencies:
brace-expansion: 1.1.12
@@ -4344,12 +4553,12 @@ snapshots:
dependencies:
brace-expansion: 2.0.2
- mlly@1.8.0:
+ mlly@1.8.1:
dependencies:
- acorn: 8.15.0
+ acorn: 8.16.0
pathe: 2.0.3
pkg-types: 1.3.1
- ufo: 1.6.1
+ ufo: 1.6.3
ms@2.1.3: {}
@@ -4363,12 +4572,14 @@ snapshots:
natural-compare@1.4.0: {}
- node-releases@2.0.27: {}
+ node-releases@2.0.36: {}
- nwsapi@2.2.22: {}
+ nwsapi@2.2.23: {}
object-assign@4.1.1: {}
+ obug@2.1.1: {}
+
once@1.4.0:
dependencies:
wrappy: 1.0.2
@@ -4386,10 +4597,6 @@ snapshots:
dependencies:
yocto-queue: 0.1.0
- p-limit@4.0.0:
- dependencies:
- yocto-queue: 1.2.2
-
p-locate@5.0.0:
dependencies:
p-limit: 3.1.0
@@ -4398,6 +4605,16 @@ snapshots:
dependencies:
callsites: 3.1.0
+ parse-entities@4.0.2:
+ dependencies:
+ '@types/unist': 2.0.11
+ character-entities-legacy: 3.0.0
+ character-reference-invalid: 2.0.1
+ decode-named-character-reference: 1.3.0
+ is-alphanumerical: 2.0.1
+ is-decimal: 2.0.1
+ is-hexadecimal: 2.0.1
+
parse5@7.3.0:
dependencies:
entities: 6.0.1
@@ -4410,12 +4627,8 @@ snapshots:
path-type@4.0.0: {}
- pathe@1.1.2: {}
-
pathe@2.0.3: {}
- pathval@1.1.1: {}
-
picocolors@1.1.1: {}
picomatch@2.3.1: {}
@@ -4427,17 +4640,17 @@ snapshots:
pkg-types@1.3.1:
dependencies:
confbox: 0.1.8
- mlly: 1.8.0
+ mlly: 1.8.1
pathe: 2.0.3
- postcss-load-config@6.0.1(postcss@8.5.6)(yaml@2.4.2):
+ postcss-load-config@6.0.1(postcss@8.5.8)(yaml@2.4.2):
dependencies:
lilconfig: 3.1.3
optionalDependencies:
- postcss: 8.5.6
+ postcss: 8.5.8
yaml: 2.4.2
- postcss@8.5.6:
+ postcss@8.5.8:
dependencies:
nanoid: 3.3.11
picocolors: 1.1.1
@@ -4447,13 +4660,13 @@ snapshots:
prettier@3.0.0: {}
- pretty-format@29.7.0:
+ pretty-format@27.5.1:
dependencies:
- '@jest/schemas': 29.6.3
+ ansi-regex: 5.0.1
ansi-styles: 5.2.0
- react-is: 18.3.1
+ react-is: 17.0.2
- property-information@6.5.0: {}
+ property-information@7.1.0: {}
psl@1.15.0:
dependencies:
@@ -4465,10 +4678,25 @@ snapshots:
queue-microtask@1.2.3: {}
- react-is@18.3.1: {}
+ react-is@17.0.2: {}
readdirp@4.1.2: {}
+ rehype-raw@7.0.0:
+ dependencies:
+ '@types/hast': 3.0.4
+ hast-util-raw: 9.1.0
+ vfile: 6.0.3
+
+ rehype-starry-night@2.2.0:
+ dependencies:
+ '@types/hast': 3.0.4
+ '@wooorm/starry-night': 3.9.0
+ hast-util-to-string: 3.0.1
+ levenshtein-edit-distance: 3.0.1
+ unist-util-visit-parents: 6.0.2
+ vfile: 6.0.3
+
remark-gfm@4.0.1:
dependencies:
'@types/mdast': 4.0.4
@@ -4483,7 +4711,7 @@ snapshots:
remark-parse@11.0.0:
dependencies:
'@types/mdast': 4.0.4
- mdast-util-from-markdown: 2.0.2
+ mdast-util-from-markdown: 2.0.3
micromark-util-types: 2.0.2
unified: 11.0.5
transitivePeerDependencies:
@@ -4503,6 +4731,11 @@ snapshots:
mdast-util-to-markdown: 2.1.2
unified: 11.0.5
+ remark-toc@9.0.0:
+ dependencies:
+ '@types/mdast': 4.0.4
+ mdast-util-toc: 7.1.0
+
require-directory@2.1.1: {}
requires-port@1.0.0: {}
@@ -4517,36 +4750,35 @@ snapshots:
dependencies:
glob: 7.2.3
- rollup@3.29.5:
- optionalDependencies:
- fsevents: 2.3.3
-
- rollup@4.53.3:
+ rollup@4.59.0:
dependencies:
'@types/estree': 1.0.8
optionalDependencies:
- '@rollup/rollup-android-arm-eabi': 4.53.3
- '@rollup/rollup-android-arm64': 4.53.3
- '@rollup/rollup-darwin-arm64': 4.53.3
- '@rollup/rollup-darwin-x64': 4.53.3
- '@rollup/rollup-freebsd-arm64': 4.53.3
- '@rollup/rollup-freebsd-x64': 4.53.3
- '@rollup/rollup-linux-arm-gnueabihf': 4.53.3
- '@rollup/rollup-linux-arm-musleabihf': 4.53.3
- '@rollup/rollup-linux-arm64-gnu': 4.53.3
- '@rollup/rollup-linux-arm64-musl': 4.53.3
- '@rollup/rollup-linux-loong64-gnu': 4.53.3
- '@rollup/rollup-linux-ppc64-gnu': 4.53.3
- '@rollup/rollup-linux-riscv64-gnu': 4.53.3
- '@rollup/rollup-linux-riscv64-musl': 4.53.3
- '@rollup/rollup-linux-s390x-gnu': 4.53.3
- '@rollup/rollup-linux-x64-gnu': 4.53.3
- '@rollup/rollup-linux-x64-musl': 4.53.3
- '@rollup/rollup-openharmony-arm64': 4.53.3
- '@rollup/rollup-win32-arm64-msvc': 4.53.3
- '@rollup/rollup-win32-ia32-msvc': 4.53.3
- '@rollup/rollup-win32-x64-gnu': 4.53.3
- '@rollup/rollup-win32-x64-msvc': 4.53.3
+ '@rollup/rollup-android-arm-eabi': 4.59.0
+ '@rollup/rollup-android-arm64': 4.59.0
+ '@rollup/rollup-darwin-arm64': 4.59.0
+ '@rollup/rollup-darwin-x64': 4.59.0
+ '@rollup/rollup-freebsd-arm64': 4.59.0
+ '@rollup/rollup-freebsd-x64': 4.59.0
+ '@rollup/rollup-linux-arm-gnueabihf': 4.59.0
+ '@rollup/rollup-linux-arm-musleabihf': 4.59.0
+ '@rollup/rollup-linux-arm64-gnu': 4.59.0
+ '@rollup/rollup-linux-arm64-musl': 4.59.0
+ '@rollup/rollup-linux-loong64-gnu': 4.59.0
+ '@rollup/rollup-linux-loong64-musl': 4.59.0
+ '@rollup/rollup-linux-ppc64-gnu': 4.59.0
+ '@rollup/rollup-linux-ppc64-musl': 4.59.0
+ '@rollup/rollup-linux-riscv64-gnu': 4.59.0
+ '@rollup/rollup-linux-riscv64-musl': 4.59.0
+ '@rollup/rollup-linux-s390x-gnu': 4.59.0
+ '@rollup/rollup-linux-x64-gnu': 4.59.0
+ '@rollup/rollup-linux-x64-musl': 4.59.0
+ '@rollup/rollup-openbsd-x64': 4.59.0
+ '@rollup/rollup-openharmony-arm64': 4.59.0
+ '@rollup/rollup-win32-arm64-msvc': 4.59.0
+ '@rollup/rollup-win32-ia32-msvc': 4.59.0
+ '@rollup/rollup-win32-x64-gnu': 4.59.0
+ '@rollup/rollup-win32-x64-msvc': 4.59.0
fsevents: 2.3.3
rrweb-cssom@0.6.0: {}
@@ -4567,13 +4799,13 @@ snapshots:
semver@6.3.1: {}
- semver@7.7.3: {}
+ semver@7.7.4: {}
- seroval-plugins@1.3.3(seroval@1.3.2):
+ seroval-plugins@1.5.0(seroval@1.5.0):
dependencies:
- seroval: 1.3.2
+ seroval: 1.5.0
- seroval@1.3.2: {}
+ seroval@1.5.0: {}
shebang-command@2.0.0:
dependencies:
@@ -4587,18 +4819,22 @@ snapshots:
slash@3.0.0: {}
- solid-js@1.9.10:
+ solid-js@1.9.11:
dependencies:
csstype: 3.2.3
- seroval: 1.3.2
- seroval-plugins: 1.3.3(seroval@1.3.2)
+ seroval: 1.5.0
+ seroval-plugins: 1.5.0(seroval@1.5.0)
+
+ solid-jsx@1.1.4(solid-js@1.9.11):
+ dependencies:
+ solid-js: 1.9.11
- solid-refresh@0.6.3(solid-js@1.9.10):
+ solid-refresh@0.6.3(solid-js@1.9.11):
dependencies:
- '@babel/generator': 7.28.5
- '@babel/helper-module-imports': 7.27.1
- '@babel/types': 7.28.5
- solid-js: 1.9.10
+ '@babel/generator': 7.29.1
+ '@babel/helper-module-imports': 7.28.6
+ '@babel/types': 7.29.0
+ solid-js: 1.9.11
transitivePeerDependencies:
- supports-color
@@ -4620,19 +4856,24 @@ snapshots:
is-fullwidth-code-point: 3.0.0
strip-ansi: 6.0.1
+ stringify-entities@4.0.4:
+ dependencies:
+ character-entities-html4: 2.1.0
+ character-entities-legacy: 3.0.0
+
strip-ansi@6.0.1:
dependencies:
ansi-regex: 5.0.1
strip-json-comments@3.1.1: {}
- strip-literal@1.3.0:
+ style-to-js@1.1.21:
dependencies:
- acorn: 8.15.0
+ style-to-object: 1.0.14
- style-to-object@0.3.0:
+ style-to-object@1.0.14:
dependencies:
- inline-style-parser: 0.1.1
+ inline-style-parser: 0.2.7
sucrase@3.35.1:
dependencies:
@@ -4668,14 +4909,14 @@ snapshots:
tinyexec@0.3.2: {}
+ tinyexec@1.0.2: {}
+
tinyglobby@0.2.15:
dependencies:
fdir: 6.5.0(picomatch@4.0.3)
picomatch: 4.0.3
- tinypool@0.6.0: {}
-
- tinyspy@2.2.1: {}
+ tinyrainbow@3.0.3: {}
to-regex-range@5.0.1:
dependencies:
@@ -4702,40 +4943,44 @@ snapshots:
dependencies:
typescript: 5.9.3
+ ts-api-utils@2.4.0(typescript@5.9.3):
+ dependencies:
+ typescript: 5.9.3
+
ts-interface-checker@0.1.13: {}
tslib@2.8.1: {}
- tsup-preset-solid@2.2.0(esbuild@0.18.20)(solid-js@1.9.10)(tsup@8.5.1(postcss@8.5.6)(typescript@5.9.3)(yaml@2.4.2)):
+ tsup-preset-solid@2.2.0(esbuild@0.18.20)(solid-js@1.9.11)(tsup@8.5.1(postcss@8.5.8)(typescript@5.9.3)(yaml@2.4.2)):
dependencies:
- esbuild-plugin-solid: 0.5.0(esbuild@0.18.20)(solid-js@1.9.10)
- tsup: 8.5.1(postcss@8.5.6)(typescript@5.9.3)(yaml@2.4.2)
+ esbuild-plugin-solid: 0.5.0(esbuild@0.18.20)(solid-js@1.9.11)
+ tsup: 8.5.1(postcss@8.5.8)(typescript@5.9.3)(yaml@2.4.2)
transitivePeerDependencies:
- esbuild
- solid-js
- supports-color
- tsup@8.5.1(postcss@8.5.6)(typescript@5.9.3)(yaml@2.4.2):
+ tsup@8.5.1(postcss@8.5.8)(typescript@5.9.3)(yaml@2.4.2):
dependencies:
- bundle-require: 5.1.0(esbuild@0.27.0)
+ bundle-require: 5.1.0(esbuild@0.27.3)
cac: 6.7.14
chokidar: 4.0.3
consola: 3.4.2
debug: 4.4.3
- esbuild: 0.27.0
+ esbuild: 0.27.3
fix-dts-default-cjs-exports: 1.0.1
joycon: 3.1.1
picocolors: 1.1.1
- postcss-load-config: 6.0.1(postcss@8.5.6)(yaml@2.4.2)
+ postcss-load-config: 6.0.1(postcss@8.5.8)(yaml@2.4.2)
resolve-from: 5.0.0
- rollup: 4.53.3
+ rollup: 4.59.0
source-map: 0.7.6
sucrase: 3.35.1
tinyexec: 0.3.2
tinyglobby: 0.2.15
tree-kill: 1.2.2
optionalDependencies:
- postcss: 8.5.6
+ postcss: 8.5.8
typescript: 5.9.3
transitivePeerDependencies:
- jiti
@@ -4747,15 +4992,14 @@ snapshots:
dependencies:
prelude-ls: 1.2.1
- type-detect@4.1.0: {}
-
type-fest@0.20.2: {}
typescript@5.9.3: {}
- ufo@1.6.1: {}
+ ufo@1.6.3: {}
- undici-types@7.16.0: {}
+ undici-types@7.16.0:
+ optional: true
unified@11.0.5:
dependencies:
@@ -4767,10 +5011,6 @@ snapshots:
trough: 2.2.0
vfile: 6.0.3
- unist-util-is@5.2.1:
- dependencies:
- '@types/unist': 2.0.11
-
unist-util-is@6.0.1:
dependencies:
'@types/unist': 3.0.3
@@ -4783,23 +5023,12 @@ snapshots:
dependencies:
'@types/unist': 3.0.3
- unist-util-visit-parents@5.1.3:
- dependencies:
- '@types/unist': 2.0.11
- unist-util-is: 5.2.1
-
unist-util-visit-parents@6.0.2:
dependencies:
'@types/unist': 3.0.3
unist-util-is: 6.0.1
- unist-util-visit@4.1.2:
- dependencies:
- '@types/unist': 2.0.11
- unist-util-is: 5.2.1
- unist-util-visit-parents: 5.1.3
-
- unist-util-visit@5.0.0:
+ unist-util-visit@5.1.0:
dependencies:
'@types/unist': 3.0.3
unist-util-is: 6.0.1
@@ -4807,9 +5036,9 @@ snapshots:
universalify@0.2.0: {}
- update-browserslist-db@1.1.4(browserslist@4.28.0):
+ update-browserslist-db@1.2.3(browserslist@4.28.1):
dependencies:
- browserslist: 4.28.0
+ browserslist: 4.28.1
escalade: 3.2.0
picocolors: 1.1.1
@@ -4822,6 +5051,11 @@ snapshots:
querystringify: 2.2.0
requires-port: 1.0.0
+ vfile-location@5.0.3:
+ dependencies:
+ '@types/unist': 3.0.3
+ vfile: 6.0.3
+
vfile-message@4.0.3:
dependencies:
'@types/unist': 3.0.3
@@ -4832,104 +5066,84 @@ snapshots:
'@types/unist': 3.0.3
vfile-message: 4.0.3
- vite-node@0.33.0(@types/node@24.10.1):
- dependencies:
- cac: 6.7.14
- debug: 4.4.3
- mlly: 1.8.0
- pathe: 1.1.2
- picocolors: 1.1.1
- vite: 4.5.14(@types/node@24.10.1)
- transitivePeerDependencies:
- - '@types/node'
- - less
- - lightningcss
- - sass
- - stylus
- - sugarss
- - supports-color
- - terser
-
- vite-plugin-solid@2.11.10(solid-js@1.9.10)(vite@7.2.4(@types/node@24.10.1)(yaml@2.4.2)):
+ vite-plugin-solid@2.11.10(solid-js@1.9.11)(vite@7.3.1(@types/node@24.10.1)(yaml@2.4.2)):
dependencies:
- '@babel/core': 7.28.5
+ '@babel/core': 7.29.0
'@types/babel__core': 7.20.5
- babel-preset-solid: 1.9.10(@babel/core@7.28.5)(solid-js@1.9.10)
+ babel-preset-solid: 1.9.10(@babel/core@7.29.0)(solid-js@1.9.11)
merge-anything: 5.1.7
- solid-js: 1.9.10
- solid-refresh: 0.6.3(solid-js@1.9.10)
- vite: 7.2.4(@types/node@24.10.1)(yaml@2.4.2)
- vitefu: 1.1.1(vite@7.2.4(@types/node@24.10.1)(yaml@2.4.2))
+ solid-js: 1.9.11
+ solid-refresh: 0.6.3(solid-js@1.9.11)
+ vite: 7.3.1(@types/node@24.10.1)(yaml@2.4.2)
+ vitefu: 1.1.2(vite@7.3.1(@types/node@24.10.1)(yaml@2.4.2))
transitivePeerDependencies:
- supports-color
- vite@4.5.14(@types/node@24.10.1):
+ vite@7.3.1(@types/node@24.10.1)(yaml@2.4.2):
dependencies:
- esbuild: 0.18.20
- postcss: 8.5.6
- rollup: 3.29.5
- optionalDependencies:
- '@types/node': 24.10.1
- fsevents: 2.3.3
-
- vite@7.2.4(@types/node@24.10.1)(yaml@2.4.2):
- dependencies:
- esbuild: 0.25.12
+ esbuild: 0.27.3
fdir: 6.5.0(picomatch@4.0.3)
picomatch: 4.0.3
- postcss: 8.5.6
- rollup: 4.53.3
+ postcss: 8.5.8
+ rollup: 4.59.0
tinyglobby: 0.2.15
optionalDependencies:
'@types/node': 24.10.1
fsevents: 2.3.3
yaml: 2.4.2
- vitefu@1.1.1(vite@7.2.4(@types/node@24.10.1)(yaml@2.4.2)):
+ vitefu@1.1.2(vite@7.3.1(@types/node@24.10.1)(yaml@2.4.2)):
optionalDependencies:
- vite: 7.2.4(@types/node@24.10.1)(yaml@2.4.2)
-
- vitest@0.33.0(jsdom@22.1.0):
- dependencies:
- '@types/chai': 4.3.20
- '@types/chai-subset': 1.3.6(@types/chai@4.3.20)
- '@types/node': 24.10.1
- '@vitest/expect': 0.33.0
- '@vitest/runner': 0.33.0
- '@vitest/snapshot': 0.33.0
- '@vitest/spy': 0.33.0
- '@vitest/utils': 0.33.0
- acorn: 8.15.0
- acorn-walk: 8.3.4
- cac: 6.7.14
- chai: 4.5.0
- debug: 4.4.3
- local-pkg: 0.4.3
+ vite: 7.3.1(@types/node@24.10.1)(yaml@2.4.2)
+
+ vitest@4.0.18(@types/node@24.10.1)(jsdom@22.1.0)(yaml@2.4.2):
+ dependencies:
+ '@vitest/expect': 4.0.18
+ '@vitest/mocker': 4.0.18(vite@7.3.1(@types/node@24.10.1)(yaml@2.4.2))
+ '@vitest/pretty-format': 4.0.18
+ '@vitest/runner': 4.0.18
+ '@vitest/snapshot': 4.0.18
+ '@vitest/spy': 4.0.18
+ '@vitest/utils': 4.0.18
+ es-module-lexer: 1.7.0
+ expect-type: 1.3.0
magic-string: 0.30.21
- pathe: 1.1.2
- picocolors: 1.1.1
+ obug: 2.1.1
+ pathe: 2.0.3
+ picomatch: 4.0.3
std-env: 3.10.0
- strip-literal: 1.3.0
tinybench: 2.9.0
- tinypool: 0.6.0
- vite: 4.5.14(@types/node@24.10.1)
- vite-node: 0.33.0(@types/node@24.10.1)
+ tinyexec: 1.0.2
+ tinyglobby: 0.2.15
+ tinyrainbow: 3.0.3
+ vite: 7.3.1(@types/node@24.10.1)(yaml@2.4.2)
why-is-node-running: 2.3.0
optionalDependencies:
+ '@types/node': 24.10.1
jsdom: 22.1.0
transitivePeerDependencies:
+ - jiti
- less
- lightningcss
+ - msw
- sass
+ - sass-embedded
- stylus
- sugarss
- - supports-color
- terser
+ - tsx
+ - yaml
+
+ vscode-oniguruma@2.0.1: {}
+
+ vscode-textmate@9.3.2: {}
w3c-xmlserializer@4.0.0:
dependencies:
xml-name-validator: 4.0.0
+ web-namespaces@2.0.1: {}
+
webidl-conversions@7.0.0: {}
whatwg-encoding@2.0.0:
@@ -4962,7 +5176,7 @@ snapshots:
wrappy@1.0.2: {}
- ws@8.18.3: {}
+ ws@8.19.0: {}
xml-name-validator@4.0.0: {}
@@ -4989,6 +5203,4 @@ snapshots:
yocto-queue@0.1.0: {}
- yocto-queue@1.2.2: {}
-
zwitch@2.0.4: {}
diff --git a/src/index.tsx b/src/index.tsx
index 9c3797e..ded7472 100644
--- a/src/index.tsx
+++ b/src/index.tsx
@@ -1,108 +1,403 @@
-import remarkParse from "remark-parse";
-import remarkRehype from "remark-rehype";
+import { unreachable } from "devlop";
+import type { Element, Nodes, Parents } from "hast";
+import { toJsxRuntime } from "hast-util-to-jsx-runtime";
+import { urlAttributes } from "html-url-attributes";
import {
- type Component,
createMemo,
createRenderEffect,
- mergeProps,
+ createSignal,
+ type JSX,
} from "solid-js";
import { createStore, reconcile } from "solid-js/store";
-import { html } from "property-information";
-import { type PluggableList, unified } from "unified";
+import { Fragment, jsx, jsxs } from "solid-jsx/jsx-runtime";
+import remarkParse from "remark-parse";
+import type { Options as RemarkRehypeOptions } from "remark-rehype";
+import remarkRehype from "remark-rehype";
+import { unified, type PluggableList } from "unified";
+import type { Node } from "unist";
+import { visit } from "unist-util-visit";
import { VFile } from "vfile";
-import type { Options as TransformOptions } from "./types";
+import type {
+ Components,
+ MarkdownResourceOptions,
+ Options,
+} from "./types";
-import rehypeFilter, { type Options as FilterOptions } from "./rehype-filter";
-import { MarkdownNode, MarkdownRoot } from "./renderer";
-import type { Root } from "hast";
+const changelog =
+ "https://github.com/remarkjs/react-markdown/blob/main/changelog.md";
-type CoreOptions = {
- children: string;
- renderingStrategy: "memo" | "reconcile";
-};
-type PluginOptions = {
- remarkPlugins: PluggableList;
- rehypePlugins: PluggableList;
+const emptyPlugins: PluggableList = [];
+const emptyRemarkRehypeOptions: Readonly = {
+ allowDangerousHtml: true,
};
-type LayoutOptions = {
- class: string;
+const safeProtocol = /^(https?|ircs?|mailto|xmpp)$/i;
+
+type DeprecatedSyncOptions = {
+ /**
+ * @deprecated Solid-specific compatibility prop. It will be removed in the
+ * next major release.
+ */
+ renderingStrategy?: "memo" | "reconcile" | null | undefined;
};
-export type SolidMarkdownOptions = CoreOptions &
- PluginOptions &
- LayoutOptions &
- FilterOptions &
- TransformOptions;
-
-export type SolidMarkdownComponents = TransformOptions["components"];
-
-const defaults: SolidMarkdownOptions = {
- renderingStrategy: "memo",
- remarkPlugins: [],
- rehypePlugins: [],
- class: "",
- unwrapDisallowed: false,
- disallowedElements: undefined,
- allowedElements: undefined,
- allowElement: undefined,
- children: "",
- sourcePos: false,
- rawSourcePos: false,
- skipHtml: false,
- includeElementIndex: false,
- transformLinkUri: null,
- transformImageUri: undefined,
- linkTarget: "_self",
- components: {},
+type MarkdownOptions = Options & DeprecatedSyncOptions;
+
+type Deprecation = {
+ from: string;
+ id: string;
+ to?: string;
};
-export const SolidMarkdown: Component> = (
- opts,
-) => {
- const options: SolidMarkdownOptions = mergeProps(defaults, opts);
- const [node, setNode] = createStore({ type: "root", children: [] });
-
- const generateNode = createMemo(() => {
- const children = options.children;
- const processor = unified()
- .use(remarkParse)
- .use(options.remarkPlugins || [])
- .use(remarkRehype, { allowDangerousHtml: true })
- .use(options.rehypePlugins || [])
- .use(rehypeFilter, options);
-
- const file = new VFile();
-
- if (typeof children === "string") {
- file.value = children;
- } else if (children !== undefined && options.children !== null) {
- console.warn(
- `[solid-markdown] Warning: please pass a string as \`children\` (not: \`${typeof children}\`)`,
- );
+
+const deprecations: ReadonlyArray> = [
+ { from: "astPlugins", id: "remove-buggy-html-in-markdown-parser" },
+ { from: "allowDangerousHtml", id: "remove-buggy-html-in-markdown-parser" },
+ {
+ from: "allowNode",
+ id: "replace-allownode-allowedtypes-and-disallowedtypes",
+ to: "allowElement",
+ },
+ {
+ from: "allowedTypes",
+ id: "replace-allownode-allowedtypes-and-disallowedtypes",
+ to: "allowedElements",
+ },
+ { from: "class", id: "remove-classname" },
+ { from: "className", id: "remove-classname" },
+ {
+ from: "disallowedTypes",
+ id: "replace-allownode-allowedtypes-and-disallowedtypes",
+ to: "disallowedElements",
+ },
+ { from: "escapeHtml", id: "remove-buggy-html-in-markdown-parser" },
+ { from: "includeElementIndex", id: "#remove-includeelementindex" },
+ {
+ from: "includeNodeIndex",
+ id: "change-includenodeindex-to-includeelementindex",
+ },
+ { from: "linkTarget", id: "remove-linktarget" },
+ { from: "plugins", id: "change-plugins-to-remarkplugins", to: "remarkPlugins" },
+ { from: "rawSourcePos", id: "#remove-rawsourcepos" },
+ { from: "renderers", id: "change-renderers-to-components", to: "components" },
+ { from: "source", id: "change-source-to-children", to: "children" },
+ { from: "sourcePos", id: "#remove-sourcepos" },
+ { from: "transformImageUri", id: "#add-urltransform", to: "urlTransform" },
+ { from: "transformLinkUri", id: "#add-urltransform", to: "urlTransform" },
+];
+
+let renderingStrategyWarned = false;
+
+export type {
+ AllowElement,
+ Components,
+ ExtraProps,
+ MarkdownResourceOptions,
+ Options,
+ UrlTransform,
+} from "./types";
+
+export default function Markdown(options: Readonly): JSX.Element {
+ checkOptions(options);
+ warnForRenderingStrategy(options);
+
+ const processor = createMemo(() => createProcessor(options));
+ const tree = createMemo(() => {
+ const file = createFile(options);
+ return processor().runSync(processor().parse(file), file);
+ });
+ const [reconciledTree, setReconciledTree] = createStore({
+ type: "root",
+ children: [],
+ } as Node);
+
+ createRenderEffect(() => {
+ if (options.renderingStrategy === "reconcile") {
+ setReconciledTree(reconcile(cloneTree(tree())));
}
+ });
+
+ const rendered = createMemo(() => {
+ const nextTree =
+ options.renderingStrategy === "reconcile"
+ ? cloneReconciledTree(reconciledTree as unknown as Node)
+ : cloneTree(tree());
+
+ return post(nextTree, options);
+ });
+
+ return <>{rendered()}>;
+}
- const hastNode = processor.runSync(processor.parse(file), file);
+export async function MarkdownAsync(
+ options: Readonly,
+): Promise {
+ checkOptions(options);
- if (hastNode.type !== "root") {
- throw new TypeError("Expected a `root` node");
+ const processor = createProcessor(options);
+ const file = createFile(options);
+ const tree = await processor.run(processor.parse(file), file);
+
+ return post(tree, options);
+}
+
+export function MarkdownResource(
+ options: Readonly,
+): JSX.Element {
+ checkOptions(options);
+
+ const snapshot = createMemo(() => ({
+ allowElement: options.allowElement,
+ allowedElements: options.allowedElements,
+ children: options.children,
+ components: options.components,
+ disallowedElements: options.disallowedElements,
+ rehypePlugins: options.rehypePlugins,
+ remarkPlugins: options.remarkPlugins,
+ remarkRehypeOptions: options.remarkRehypeOptions,
+ skipHtml: options.skipHtml,
+ unwrapDisallowed: options.unwrapDisallowed,
+ urlTransform: options.urlTransform,
+ }));
+ const [content, setContent] = createSignal(undefined);
+ const [resourceError, setResourceError] = createSignal(undefined);
+ let requestId = 0;
+
+ createRenderEffect(() => {
+ const currentOptions = snapshot();
+ const currentRequestId = ++requestId;
+
+ setResourceError(undefined);
+
+ void (async () => {
+ try {
+ const processor = createProcessor(currentOptions);
+ const file = createFile(currentOptions);
+ const tree = await processor.run(processor.parse(file), file);
+
+ if (currentRequestId === requestId) {
+ setContent(tree);
+ }
+ } catch (error) {
+ if (currentRequestId === requestId) {
+ setResourceError(error);
+ }
+ }
+ })();
+ });
+
+ const rendered = createMemo(() => {
+ const error = resourceError();
+
+ if (error) {
+ throw error;
}
- return hastNode;
+ const tree = content();
+
+ return tree ? post(cloneTree(tree), options) : options.fallback ?? null;
});
- if (options.renderingStrategy === "reconcile") {
- createRenderEffect(() => {
- setNode(reconcile(generateNode()));
- });
+ return <>{rendered()}>;
+}
+
+export function defaultUrlTransform(value: string): string {
+ const colon = value.indexOf(":");
+ const questionMark = value.indexOf("?");
+ const numberSign = value.indexOf("#");
+ const slash = value.indexOf("/");
+
+ if (
+ colon === -1 ||
+ (slash !== -1 && colon > slash) ||
+ (questionMark !== -1 && colon > questionMark) ||
+ (numberSign !== -1 && colon > numberSign) ||
+ safeProtocol.test(value.slice(0, colon))
+ ) {
+ return value;
}
- return (
- <>
-
-
-
- >
+ return "";
+}
+
+function createProcessor(
+ options: Readonly,
+) {
+ const rehypePlugins = options.rehypePlugins || emptyPlugins;
+ const remarkPlugins = options.remarkPlugins || emptyPlugins;
+ const remarkRehypeOptions = options.remarkRehypeOptions
+ ? { ...options.remarkRehypeOptions, ...emptyRemarkRehypeOptions }
+ : emptyRemarkRehypeOptions;
+
+ return unified()
+ .use(remarkParse)
+ .use(remarkPlugins)
+ .use(remarkRehype, remarkRehypeOptions)
+ .use(rehypePlugins);
+}
+
+function createFile(options: Readonly): VFile {
+ const children = options.children ?? "";
+ const file = new VFile();
+
+ if (typeof children === "string") {
+ file.value = children;
+ return file;
+ }
+
+ unreachable(
+ "Unexpected value `" +
+ String(children) +
+ "` for `children` prop, expected `string`",
);
-};
+
+ throw new TypeError("Unreachable");
+}
+
+function post(tree: Node, options: Readonly): JSX.Element {
+ const allowedElements = options.allowedElements;
+ const allowElement = options.allowElement;
+ const components = options.components;
+ const disallowedElements = options.disallowedElements;
+ const skipHtml = options.skipHtml;
+ const unwrapDisallowed = options.unwrapDisallowed;
+ const urlTransform = options.urlTransform || defaultUrlTransform;
+
+ if (allowedElements && disallowedElements) {
+ unreachable(
+ "Unexpected combined `allowedElements` and `disallowedElements`, expected one or the other",
+ );
+ }
+
+ visit(tree, transform);
+
+ return toJsxRuntime(tree as Nodes, {
+ Fragment,
+ components: components as Partial,
+ elementAttributeNameCase: "html",
+ ignoreInvalidStyle: true,
+ jsx,
+ jsxs,
+ passKeys: true,
+ passNode: true,
+ stylePropertyNameCase: "css",
+ tableCellAlignToStyle: true,
+ });
+
+ function transform(
+ node: Node,
+ index: number | undefined,
+ parent: Parents | undefined,
+ ) {
+ if (isRaw(node) && parent && typeof index === "number") {
+ if (skipHtml) {
+ parent.children.splice(index, 1);
+ } else {
+ parent.children[index] = { type: "text", value: node.value };
+ }
+
+ return index;
+ }
+
+ if (isElement(node)) {
+ for (const key in urlAttributes) {
+ if (
+ hasOwn(urlAttributes, key) &&
+ hasOwn(node.properties, key)
+ ) {
+ const value = node.properties[key];
+ const test = urlAttributes[key as keyof typeof urlAttributes];
+
+ if (test === null || (test !== undefined && test.includes(node.tagName))) {
+ node.properties[key] = urlTransform(String(value || ""), key, node);
+ }
+ }
+ }
+ }
+
+ if (isElement(node)) {
+ let remove = allowedElements
+ ? !allowedElements.includes(node.tagName)
+ : disallowedElements
+ ? disallowedElements.includes(node.tagName)
+ : false;
+
+ if (!remove && allowElement && typeof index === "number") {
+ remove = !allowElement(node, index, parent);
+ }
+
+ if (remove && parent && typeof index === "number") {
+ if (unwrapDisallowed && node.children) {
+ parent.children.splice(index, 1, ...node.children);
+ } else {
+ parent.children.splice(index, 1);
+ }
+
+ return index;
+ }
+ }
+ }
+}
+
+function checkOptions(options: unknown): asserts options is Readonly> {
+ for (const deprecation of deprecations) {
+ if (hasOwn(options, deprecation.from)) {
+ unreachable(
+ "Unexpected `" +
+ deprecation.from +
+ "` prop, " +
+ (deprecation.to
+ ? "use `" + deprecation.to + "` instead"
+ : "remove it") +
+ " (see <" +
+ changelog +
+ "#" +
+ deprecation.id +
+ "> for more info)",
+ );
+ }
+ }
+}
+
+function warnForRenderingStrategy(options: Readonly): void {
+ if (
+ renderingStrategyWarned ||
+ getNodeEnv() === "production" ||
+ !hasOwn(options, "renderingStrategy") ||
+ options.renderingStrategy === undefined
+ ) {
+ return;
+ }
+
+ renderingStrategyWarned = true;
+
+ console.warn(
+ "[solid-markdown] `renderingStrategy` is deprecated and will be removed in the next major release.",
+ );
+}
+
+function cloneTree(tree: T): T {
+ return structuredClone(tree);
+}
+
+function cloneReconciledTree(tree: T): T {
+ return JSON.parse(JSON.stringify(tree)) as T;
+}
+
+function getNodeEnv(): string | undefined {
+ return (
+ globalThis as typeof globalThis & {
+ process?: { env?: Record };
+ }
+ ).process?.env?.NODE_ENV;
+}
+
+function hasOwn(value: unknown, key: string): value is Record {
+ return Object.prototype.hasOwnProperty.call(value, key);
+}
+
+function isElement(node: Node): node is Element {
+ return node.type === "element";
+}
+
+function isRaw(node: Node): node is Node & { type: "raw"; value: string } {
+ return node.type === "raw";
+}
diff --git a/src/rehype-filter.ts b/src/rehype-filter.ts
deleted file mode 100644
index fc301c1..0000000
--- a/src/rehype-filter.ts
+++ /dev/null
@@ -1,68 +0,0 @@
-/* eslint-disable no-unused-vars */
-import { visit } from "unist-util-visit";
-import type { Element as HElement, Root as HRoot } from "hast";
-import type { Plugin } from "unified";
-
-type AllowElement = (
- element: HElement,
- index: number,
- parent: HElement | HRoot,
-) => boolean | undefined;
-
-export type Options = {
- allowedElements?: string[];
- disallowedElements?: string[];
- allowElement?: AllowElement;
- unwrapDisallowed: boolean;
-};
-
-const rehypeFilter: Plugin<[Options], HRoot> = (options: Options) => {
- if (options.allowedElements && options.disallowedElements) {
- throw new TypeError(
- "Only one of `allowedElements` and `disallowedElements` should be defined",
- );
- }
-
- if (
- options.allowedElements ||
- options.disallowedElements ||
- options.allowElement
- ) {
- return (tree) => {
- visit(tree, "element", (node, index, parent_) => {
- const parent = parent_;
- if (parent === null) return;
-
- let remove: boolean | undefined;
-
- if (options.allowedElements) {
- remove = !options.allowedElements.includes(node.tagName);
- } else if (options.disallowedElements) {
- remove = options.disallowedElements.includes(node.tagName);
- }
-
- if (
- !remove &&
- options.allowElement &&
- typeof index === "number" &&
- parent
- ) {
- remove = !options.allowElement(node, index, parent);
- }
-
- if (remove && typeof index === "number" && parent) {
- if (options.unwrapDisallowed && node.children) {
- parent.children.splice(index, 1, ...node.children);
- } else {
- parent.children.splice(index, 1);
- }
-
- return index;
- }
-
- return undefined;
- });
- };
- }
-};
-export default rehypeFilter;
diff --git a/src/renderer.tsx b/src/renderer.tsx
deleted file mode 100644
index cfa64a8..0000000
--- a/src/renderer.tsx
+++ /dev/null
@@ -1,286 +0,0 @@
-import { type Component, For, Match, Switch, createMemo, Show } from "solid-js";
-import type { Context, SolidMarkdownNames } from "./types";
-import type { Root, Element, Text } from "hast";
-import { svg } from "property-information";
-import { Dynamic } from "solid-js/web";
-import {
- addProperty,
- getInputElement,
- getElementsBeforeCount,
- flattenPosition,
-} from "./utils";
-const own = {}.hasOwnProperty;
-
-export const MarkdownRoot: Component<{
- context: Context;
- node: Root;
-}> = (props) => ;
-
-export const MarkdownChildren: Component<{
- context: Context;
- node: Element | Root;
-}> = (props) => (
-
- {(child, index) => (
-
-
-
-
-
-
-
-
- )}
-
-);
-
-export const MarkdownText: Component<{
- context: Context;
- node: Text;
- index: number;
- parent: Element | Root;
-}> = (props) => {
- const childProps = createMemo(() => {
- const context = { ...props.context };
- const options = context.options;
- const node = props.node;
- const parent = props.parent;
-
- const properties: Record = {
- parent,
- };
-
- // Nodes created by plugins do not have positional info, in which case we use
- // an object that matches the position interface.
- const position = node.position || {
- start: { line: null, column: null, offset: null },
- end: { line: null, column: null, offset: null },
- };
-
- const component =
- options.components && own.call(options.components, "text")
- ? options.components.text
- : null;
- const basic = typeof component === "string"; //|| component === React.Fragment;
-
- properties.key = [
- "text",
- position.start.line,
- position.start.column,
- props.index,
- ].join("-");
-
- // If `sourcePos` is given, pass source information (line/column info from markdown source).
- if (options.sourcePos) {
- properties["data-sourcepos"] = flattenPosition(position);
- }
-
- if (!basic && options.rawSourcePos) {
- properties.sourcePosition = node.position;
- }
-
- // // If `includeElementIndex` is given, pass node index info to components.
- // if (!basic && options.includeElementIndex) {
- // properties.index = getElementsBeforeCount(parent, node);
- // properties.siblingCount = getElementsBeforeCount(parent);
- // }
-
- if (!basic) {
- properties.node = node;
- }
-
- return { properties, context, component };
- });
-
- return (
-
-
-
- );
-};
-
-export const MarkdownNode: Component<{
- context: Context;
- node: Element;
- index: number;
- parent: Element | Root;
-}> = (props) => {
- const childProps = createMemo(() => {
- const context = { ...props.context };
- const options = context.options;
- const parentSchema = context.schema;
- const node = props.node;
- const name = node.tagName as SolidMarkdownNames;
- const parent = props.parent;
-
- const properties: Record = {};
- let schema = parentSchema;
- let property: string;
-
- if (parentSchema.space === "html" && name === "svg") {
- schema = svg;
- context.schema = schema;
- }
-
- if (node.properties) {
- for (property in node.properties) {
- if (own.call(node.properties, property)) {
- addProperty(properties, property, node.properties[property], context);
- }
- }
- }
-
- if (name === "ol" || name === "ul") {
- context.listDepth++;
- }
-
- if (name === "ol" || name === "ul") {
- context.listDepth--;
- }
-
- // Restore parent schema.
- context.schema = parentSchema;
-
- // Nodes created by plugins do not have positional info, in which case we use
- // an object that matches the position interface.
- const position = node.position || {
- start: { line: null, column: null, offset: null },
- end: { line: null, column: null, offset: null },
- };
-
- const component =
- options.components && own.call(options.components, name)
- ? options.components[name]
- : name;
- const basic = typeof component === "string"; //|| component === React.Fragment;
-
- properties.key = [
- name,
- position.start.line,
- position.start.column,
- props.index,
- ].join("-");
-
- if (name === "a" && options.linkTarget) {
- properties.target =
- typeof options.linkTarget === "function"
- ? options.linkTarget(
- String(properties.href || ""),
- node.children,
- typeof properties.title === "string"
- ? properties.title
- : undefined,
- )
- : options.linkTarget;
- }
-
- if (name === "a" && options.transformLinkUri) {
- properties.href = options.transformLinkUri(
- String(properties.href || ""),
- node.children,
- typeof properties.title === "string" ? properties.title : undefined,
- );
- }
-
- if (
- !basic &&
- name === "code" &&
- parent.type === "element" &&
- parent.tagName !== "pre"
- ) {
- properties.inline = true;
- }
-
- if (
- !basic &&
- (name === "h1" ||
- name === "h2" ||
- name === "h3" ||
- name === "h4" ||
- name === "h5" ||
- name === "h6")
- ) {
- properties.level = Number.parseInt(name.charAt(1), 10);
- }
-
- if (name === "img" && options.transformImageUri) {
- properties.src = options.transformImageUri(
- String(properties.src || ""),
- String(properties.alt || ""),
- typeof properties.title === "string" ? properties.title : undefined,
- );
- }
-
- if (!basic && name === "li" && parent.type === "element") {
- const input = getInputElement(node);
- properties.checked = input?.properties
- ? Boolean(input.properties.checked)
- : null;
- properties.index = getElementsBeforeCount(parent, node);
- properties.ordered = parent.tagName === "ol";
- }
-
- if (!basic && (name === "ol" || name === "ul")) {
- properties.ordered = name === "ol";
- properties.depth = context.listDepth;
- }
-
- if (name === "td" || name === "th") {
- if (properties.align) {
- if (!properties.style) properties.style = {};
- // @ts-expect-error assume `style` is an object
- properties.style.textAlign = properties.align;
- // biome-ignore lint/performance/noDelete:
- delete properties.align;
- }
-
- if (!basic) {
- properties.isHeader = name === "th";
- }
- }
-
- if (!basic && name === "tr" && parent.type === "element") {
- properties.isHeader = Boolean(parent.tagName === "thead");
- }
-
- // If `sourcePos` is given, pass source information (line/column info from markdown source).
- if (options.sourcePos) {
- properties["data-sourcepos"] = flattenPosition(position);
- }
-
- if (!basic && options.rawSourcePos) {
- properties.sourcePosition = node.position;
- }
-
- // If `includeElementIndex` is given, pass node index info to components.
- if (!basic && options.includeElementIndex) {
- properties.index = getElementsBeforeCount(parent, node);
- properties.siblingCount = getElementsBeforeCount(parent);
- }
-
- if (!basic) {
- properties.node = node;
- }
-
- return { properties, context, component };
- });
-
- return (
-
-
-
- );
-};
diff --git a/src/types.ts b/src/types.ts
index cadc23c..0b7486a 100644
--- a/src/types.ts
+++ b/src/types.ts
@@ -1,120 +1,44 @@
-import type { Component, JSX } from "solid-js";
-import type { Position } from "unist";
-import type { Element, ElementContent, Text } from "hast";
-import type { Schema } from "property-information";
+import type { Element, Parents } from "hast";
+import type { JSX } from "solid-js";
+import type { Options as RemarkRehypeOptions } from "remark-rehype";
+import type { PluggableList } from "unified";
-/* File for types which are not handled correctly in JSDoc mode */
+export type AllowElement = (
+ element: Readonly,
+ index: number,
+ parent: Readonly | undefined,
+) => boolean | null | undefined;
-export interface SolidMarkdownProps {
- node: Element;
- children: Component[];
- /**
- * Passed when `options.rawSourcePos` is given
- */
- sourcePosition?: Position;
- /**
- * Passed when `options.includeElementIndex` is given
- */
- index?: number;
- /**
- * Passed when `options.includeElementIndex` is given
- */
- siblingCount?: number;
-}
-
-export type NormalComponents = {
- [TagName in keyof JSX.IntrinsicElements]:
- | keyof JSX.IntrinsicElements
- | Component;
-};
-export type Raw = {
- type: "raw";
- value: string;
-};
-export type Context = {
- options: Options;
- schema: Schema;
- listDepth: number;
-};
-type TransformLink = (
- href: string,
- children: ElementContent[],
- title?: string,
-) => string;
-type TransformImage = (src: string, alt: string, title?: string) => string;
-type TransformLinkTargetType =
- | "_self"
- | "_blank"
- | "_parent"
- | "_top"
- | (string & {});
-type TransformLinkTarget = (
- href: string,
- children: ElementContent[],
- title?: string,
-) => TransformLinkTargetType | undefined;
-export type SolidMarkdownNames = keyof JSX.IntrinsicElements;
-type CodeComponent = Component<
- JSX.IntrinsicElements["code"] & SolidMarkdownProps & { inline?: boolean }
->;
-type HeadingComponent = Component<
- JSX.IntrinsicElements["h1"] & SolidMarkdownProps & { level: number }
->;
-type LiComponent = Component<
- JSX.IntrinsicElements["li"] &
- SolidMarkdownProps & {
- checked: boolean | null;
- index: number;
- ordered: boolean;
- }
->;
-type OrderedListComponent = Component<
- JSX.IntrinsicElements["ol"] &
- SolidMarkdownProps & { depth: number; ordered: true }
->;
-type TableCellComponent = Component<
- JSX.IntrinsicElements["table"] &
- SolidMarkdownProps & { style?: Record; isHeader: boolean }
->;
-type TableRowComponent = Component<
- JSX.IntrinsicElements["tr"] & SolidMarkdownProps & { isHeader: boolean }
->;
-type UnorderedListComponent = Component<
- JSX.IntrinsicElements["ul"] &
- SolidMarkdownProps & { depth: number; ordered: false }
->;
-type SpecialComponents = {
- code: CodeComponent | SolidMarkdownNames;
- h1: HeadingComponent | SolidMarkdownNames;
- h2: HeadingComponent | SolidMarkdownNames;
- h3: HeadingComponent | SolidMarkdownNames;
- h4: HeadingComponent | SolidMarkdownNames;
- h5: HeadingComponent | SolidMarkdownNames;
- h6: HeadingComponent | SolidMarkdownNames;
- li: LiComponent | SolidMarkdownNames;
- ol: OrderedListComponent | SolidMarkdownNames;
- td: TableCellComponent | SolidMarkdownNames;
- th: TableCellComponent | SolidMarkdownNames;
- tr: TableRowComponent | SolidMarkdownNames;
- ul: UnorderedListComponent | SolidMarkdownNames;
+export type ExtraProps = {
+ node?: Element | undefined;
};
-export type Components = Omit<
- Partial> &
- Partial,
- "text"
-> & {
- text?: Component<{
- node: Text;
- }>;
+
+export type Components = {
+ [Key in keyof JSX.IntrinsicElements]?:
+ | ((props: JSX.IntrinsicElements[Key] & ExtraProps) => JSX.Element)
+ | keyof JSX.IntrinsicElements;
};
+export type UrlTransform = (
+ url: string,
+ key: string,
+ node: Readonly,
+) => string | null | undefined;
+
export type Options = {
- sourcePos: boolean;
- rawSourcePos: boolean;
- skipHtml: boolean;
- includeElementIndex: boolean;
- transformLinkUri: null | false | TransformLink;
- transformImageUri?: TransformImage;
- linkTarget: TransformLinkTargetType | TransformLinkTarget;
- components: Components;
+ allowElement?: AllowElement | null | undefined;
+ allowedElements?: ReadonlyArray | null | undefined;
+ children?: string | null | undefined;
+ components?: Components | null | undefined;
+ disallowedElements?: ReadonlyArray | null | undefined;
+ rehypePlugins?: PluggableList | null | undefined;
+ remarkPlugins?: PluggableList | null | undefined;
+ remarkRehypeOptions?: Readonly | null | undefined;
+ skipHtml?: boolean | null | undefined;
+ unwrapDisallowed?: boolean | null | undefined;
+ urlTransform?: UrlTransform | null | undefined;
+};
+
+export type MarkdownResourceOptions = Options & {
+ fallback?: JSX.Element | null | undefined;
};
diff --git a/src/utils.ts b/src/utils.ts
deleted file mode 100644
index df7acfb..0000000
--- a/src/utils.ts
+++ /dev/null
@@ -1,86 +0,0 @@
-import { stringify as commas } from "comma-separated-tokens";
-import type { Root, Element } from "hast";
-import { find } from "property-information";
-import { stringify as spaces } from "space-separated-tokens";
-import type { Position } from "unist";
-import type { Context } from "./types";
-
-export function getInputElement(node: Element | Root): Element | null {
- let index = -1;
-
- while (++index < node.children.length) {
- const child = node.children[index];
-
- if (child?.type === "element" && child?.tagName === "input") {
- return child;
- }
- }
-
- return null;
-}
-export function getElementsBeforeCount(
- parent: Element | Root,
- node?: Element,
-): number {
- let index = -1;
- let count = 0;
-
- while (++index < parent.children.length) {
- if (parent.children[index] === node) break;
- if (parent.children[index]?.type === "element") count++;
- }
-
- return count;
-}
-export function addProperty(
- props: Record,
- prop: string,
- value: unknown,
- ctx: Context,
-) {
- const info = find(ctx.schema, prop);
- let result = value;
-
- if (info.property === "className") {
- info.property = "class";
- }
-
- // Ignore nullish and `NaN` values.
- // eslint-disable-next-line no-self-compare
- // biome-ignore lint/suspicious/noSelfCompare:
- if (result === null || result === undefined || result !== result) {
- return;
- }
-
- // Accept `array`.
- // Most props are space-separated.
- if (Array.isArray(result)) {
- result = info.commaSeparated ? commas(result) : spaces(result);
- }
-
- if (info.space && info.property) {
- props[info.property] = result;
- } else if (info.attribute) {
- props[info.attribute] = result;
- }
-}
-export function flattenPosition(
- pos:
- | Position
- | {
- start: { line: null; column: null; offset: null };
- end: { line: null; column: null; offset: null };
- },
-): string {
- return [
- pos.start.line,
- ":",
- pos.start.column,
- "-",
- pos.end.line,
- ":",
- pos.end.column,
- ]
- .map((d) => String(d))
- .join("");
-}
diff --git a/ssr-demo/README.md b/ssr-demo/README.md
index 01282bf..a83d1b3 100644
--- a/ssr-demo/README.md
+++ b/ssr-demo/README.md
@@ -1,30 +1,28 @@
-# SolidStart
+# SSR demo
-Everything you need to build a Solid project, powered by [`solid-start`](https://start.solidjs.com);
+This app is the server-rendered demo for `solid-markdown`. It provides a simple SolidStart environment for checking markdown rendering in an SSR context.
-## Creating a project
+## What it covers
-```bash
-# create a new project in the current directory
-npm init solid@latest
-
-# create a new project in my-app
-npm init solid@latest my-app
-```
+- Rendering markdown in a SolidStart app
+- `remark-gfm` behavior in SSR
+- End-to-end integration in a server-rendered Solid environment
-## Developing
+## Running it
Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server:
```bash
-npm run dev
-
-# or start the server and open the app in a new browser tab
-npm run dev -- --open
+cd ssr-demo
+pnpm install
+pnpm dev
```
-## Building
+If you want to validate the current repo changes instead of the published npm package, link the local package into this demo before running it.
-Solid apps are built with _adapters_, which optimise your project for deployment to different environments.
+## Building
-By default, `npm run build` will generate a Node app that you can run with `npm start`. To use a different adapter, add it to the `devDependencies` in `package.json` and specify in your `vite.config.js`.
+```bash
+cd ssr-demo
+pnpm build
+```
diff --git a/ssr-demo/src/routes/index.tsx b/ssr-demo/src/routes/index.tsx
index e261ffb..2ec514d 100644
--- a/ssr-demo/src/routes/index.tsx
+++ b/ssr-demo/src/routes/index.tsx
@@ -1,7 +1,7 @@
// solid-refresh
import { createSignal, type Component } from "solid-js";
import remarkGfm from "remark-gfm";
-import { SolidMarkdown } from "solid-markdown";
+import Markdown from "solid-markdown";
const initial = `# 🚀 solid-markdown demo
@@ -45,9 +45,9 @@ const App: Component = () => {
{md()}
-
+
{md()}
-
+
);
};
diff --git a/test/client.test.tsx b/test/client.test.tsx
new file mode 100644
index 0000000..6ce94f1
--- /dev/null
+++ b/test/client.test.tsx
@@ -0,0 +1,260 @@
+import { render, waitFor } from "@solidjs/testing-library";
+import type { Plugin } from "unified";
+import type { Root } from "hast";
+import rehypeStarryNight from "rehype-starry-night";
+import remarkGfm from "remark-gfm";
+import { ErrorBoundary, batch, createSignal, type JSX } from "solid-js";
+import { afterEach, describe, expect, it, vi } from "vitest";
+import Markdown, { MarkdownResource } from "../src";
+import { deferPlugin, normalizeHtml } from "./helpers";
+
+afterEach(() => {
+ vi.restoreAllMocks();
+});
+
+describe("solid-markdown (client)", () => {
+ describe("core rendering", () => {
+ it("renders markdown in the browser", () => {
+ const result = render(() => );
+ expect(result.container.innerHTML).toBe("a
");
+ });
+
+ it("matches representative SSR output", () => {
+ const markdown = "# a\n\n* b\n\n[a](https://example.com)";
+ const result = render(() => );
+
+ expect(normalizeHtml(result.container.innerHTML)).toBe(
+ 'a \n\na
',
+ );
+ });
+ });
+
+ describe("renderingStrategy compatibility", () => {
+ it("warns once and renders correctly across memo and reconcile updates", async () => {
+ const warn = vi.spyOn(console, "warn").mockImplementation(() => undefined);
+ let setValue!: (value: string) => void;
+ let setStrategy!: (value: "memo" | "reconcile") => void;
+ const result = render(() => {
+ const [value, updateValue] = createSignal("*a*");
+ const [strategy, updateStrategy] = createSignal<"memo" | "reconcile">(
+ "memo",
+ );
+
+ setValue = updateValue;
+ setStrategy = updateStrategy;
+
+ return (
+
+ );
+ });
+
+ expect(result.container.innerHTML).toBe("a
");
+
+ setValue("**b**");
+ await waitFor(() => {
+ expect(result.container.innerHTML).toBe("b
");
+ });
+
+ batch(() => {
+ setStrategy("reconcile");
+ setValue("c");
+ });
+ await waitFor(() => {
+ expect(result.container.innerHTML).toBe("c
");
+ });
+
+ render(() => (
+
+ ));
+
+ expect(warn).toHaveBeenCalledTimes(1);
+ });
+ });
+
+ describe("async behavior", () => {
+ it("supports MarkdownResource fallback and resolution", async () => {
+ const plugin = deferPlugin();
+ const result = render(() => (
+
+ ));
+
+ expect(result.container.innerHTML).toBe("Loading");
+
+ plugin.resolve();
+
+ await waitFor(() => {
+ expect(result.container.innerHTML).toBe("a
");
+ });
+ });
+
+ it("supports async plugins in MarkdownResource", async () => {
+ const plugin = deferPlugin();
+ const result = render(() => (
+
+ ));
+
+ expect(result.container.innerHTML).toBe("Loading");
+
+ plugin.resolve();
+
+ await waitFor(() => {
+ expect(result.container.innerHTML).toContain('class="pl-en"');
+ expect(result.container.innerHTML).toContain("console");
+ });
+ });
+
+ it("surfaces initial MarkdownResource errors through ErrorBoundary", async () => {
+ const plugin = deferPlugin();
+ const result = render(() => (
+ Error: {error.message} }>
+
+
+ ));
+
+ expect(result.container.innerHTML).toBe("");
+
+ plugin.reject(new Error("rejected"));
+
+ await waitFor(() => {
+ expect(result.container.innerHTML).toBe("Error: rejected ");
+ });
+ });
+
+ it("keeps the latest rerender when async work overlaps before first success", async () => {
+ const pluginA = deferPlugin();
+ const pluginB = deferPlugin();
+ const harness = renderResourceHarness({
+ children: "a",
+ fallback: "Loading",
+ plugin: pluginA.plugin,
+ });
+
+ expect(harness.result.container.innerHTML).toBe("Loading");
+
+ batch(() => {
+ harness.setChildren("b");
+ harness.setPlugin(pluginB.plugin);
+ });
+
+ expect(harness.result.container.innerHTML).toBe("Loading");
+
+ pluginA.resolve();
+ pluginB.resolve();
+
+ await waitFor(() => {
+ expect(harness.result.container.innerHTML).toBe("b
");
+ });
+ });
+
+ it("keeps previous content visible while a refresh is pending, then replaces it", async () => {
+ const pluginA = deferPlugin();
+ const pluginB = deferPlugin();
+ const harness = renderResourceHarness({
+ children: "a",
+ fallback: "Loading",
+ plugin: pluginA.plugin,
+ });
+
+ pluginA.resolve();
+
+ await waitFor(() => {
+ expect(harness.result.container.innerHTML).toBe("a
");
+ });
+
+ batch(() => {
+ harness.setChildren("b");
+ harness.setPlugin(pluginB.plugin);
+ });
+
+ expect(harness.result.container.innerHTML).toBe("a
");
+
+ pluginB.resolve();
+
+ await waitFor(() => {
+ expect(harness.result.container.innerHTML).toBe("b
");
+ });
+ });
+
+ it("supports switching from async to sync rendering after prior success", async () => {
+ const plugin = deferPlugin();
+ const harness = renderResourceHarness({
+ children: "a",
+ fallback: "Loading",
+ plugin: plugin.plugin,
+ });
+
+ plugin.resolve();
+
+ await waitFor(() => {
+ expect(harness.result.container.innerHTML).toBe("a
");
+ });
+
+ batch(() => {
+ harness.setChildren("b");
+ harness.setPlugin(undefined);
+ });
+
+ await waitFor(() => {
+ expect(harness.result.container.innerHTML).toBe("b
");
+ });
+ });
+
+ it("supports empty markdown rerenders", async () => {
+ const harness = renderResourceHarness({ children: "a" });
+
+ await waitFor(() => {
+ expect(harness.result.container.innerHTML).toBe("a
");
+ });
+
+ harness.setChildren("");
+
+ await waitFor(() => {
+ expect(harness.result.container.innerHTML).toBe("");
+ });
+ });
+ });
+});
+
+function renderResourceHarness(initial: {
+ children: string;
+ fallback?: JSX.Element;
+ plugin?: Plugin<[], Root>;
+}) {
+ let setChildren!: (value: string) => void;
+ let setFallback!: (value: JSX.Element | undefined) => void;
+ let setPlugin!: (value: Plugin<[], Root> | undefined) => void;
+
+ const result = render(() => {
+ const [children, updateChildren] = createSignal(initial.children);
+ const [fallback, updateFallback] = createSignal(initial.fallback);
+ const [plugin, updatePlugin] = createSignal | undefined>(
+ initial.plugin,
+ );
+
+ setChildren = updateChildren;
+ setFallback = updateFallback;
+ setPlugin = updatePlugin;
+
+ return (
+
+ );
+ });
+
+ return { result, setChildren, setFallback, setPlugin };
+}
diff --git a/test/helpers.ts b/test/helpers.ts
new file mode 100644
index 0000000..aa76723
--- /dev/null
+++ b/test/helpers.ts
@@ -0,0 +1,76 @@
+import type { Root, RootContent } from "hast";
+import type { JSX } from "solid-js";
+import { renderToString } from "solid-js/web";
+import type { Plugin } from "unified";
+
+type DeferredPlugin = {
+ plugin: Plugin<[], Root>;
+ reject: (error: Error) => void;
+ resolve: () => void;
+};
+
+const decoder = new TextDecoder();
+
+export function normalizeHtml(value: string): string {
+ return value
+ .replace(/\sdata-hk="[^"]*"/g, "")
+ .replace(/ class="([^"]*?)\s+"/g, ' class="$1"')
+ .replace(/\s+>/g, ">")
+ .trim();
+}
+
+export function renderSync(input: JSX.Element): string {
+ return normalizeHtml(renderToString(() => input));
+}
+
+export async function readStream(stream: {
+ pipeTo: (writable: WritableStream) => Promise | void;
+}): Promise {
+ let result = "";
+
+ await Promise.resolve(
+ stream.pipeTo(
+ new WritableStream({
+ write(chunk) {
+ result +=
+ typeof chunk === "string" ? chunk : decoder.decode(chunk, { stream: true });
+ },
+ }),
+ ),
+ );
+
+ return normalizeHtml(result + decoder.decode());
+}
+
+export function prependNodes(...nodes: RootContent[]): Plugin<[], Root> {
+ return function plugin() {
+ return function (tree) {
+ tree.children.unshift(...nodes);
+ };
+ };
+}
+
+export function deferPlugin(): DeferredPlugin {
+ let resolvePromise!: () => void;
+ let rejectPromise!: (error: Error) => void;
+ const promise = new Promise((resolve, reject) => {
+ resolvePromise = resolve;
+ rejectPromise = reject;
+ });
+ void promise.catch(() => undefined);
+
+ return {
+ plugin() {
+ return async function (tree) {
+ await promise;
+ return tree;
+ };
+ },
+ reject(error) {
+ rejectPromise(error);
+ },
+ resolve() {
+ resolvePromise();
+ },
+ };
+}
diff --git a/test/server.test.tsx b/test/server.test.tsx
new file mode 100644
index 0000000..df07444
--- /dev/null
+++ b/test/server.test.tsx
@@ -0,0 +1,709 @@
+import type { RootContent } from "hast";
+import rehypeRaw from "rehype-raw";
+import rehypeStarryNight from "rehype-starry-night";
+import remarkGfm from "remark-gfm";
+import remarkToc from "remark-toc";
+import type { Component, JSX } from "solid-js";
+import { renderToStream } from "solid-js/web";
+import { describe, expect, it } from "vitest";
+import { visit } from "unist-util-visit";
+import Markdown, { MarkdownAsync, defaultUrlTransform } from "../src";
+import { prependNodes, readStream, renderSync } from "./helpers";
+
+describe("solid-markdown (server)", () => {
+ it("exposes the public api", async () => {
+ expect(Object.keys(await import("../src")).sort()).toEqual([
+ "MarkdownAsync",
+ "MarkdownResource",
+ "default",
+ "defaultUrlTransform",
+ ]);
+ });
+
+ describe("core rendering", () => {
+ it("renders basic markdown and nullish children", () => {
+ expect(renderSync(a )).toBe("a
");
+ expect(renderSync( )).toBe("");
+ expect(renderSync( )).toBe("");
+ });
+
+ it("throws on invalid children", () => {
+ expect(() => renderSync( )).toThrow(
+ /Unexpected value `1` for `children` prop, expected `string`/,
+ );
+ expect(() => renderSync( )).toThrow(
+ /Unexpected value `true` for `children` prop, expected `string`/,
+ );
+ });
+
+ it("supports markdown syntax parity cases", () => {
+ expect(renderSync( )).toBe(
+ "\na
\n ",
+ );
+ expect(renderSync( )).toBe(
+ "a \nb
",
+ );
+ expect(renderSync( )).toBe(
+ "a\n ",
+ );
+ expect(renderSync( )).toBe(
+ 'a\n ',
+ );
+ expect(
+ renderSync( ),
+ ).toBe("a
");
+ expect(renderSync( )).toBe("a
");
+ expect(renderSync( )).toBe("a ");
+ expect(renderSync( )).toBe("a
");
+ expect(renderSync( )).toBe("");
+ expect(renderSync( )).toBe("\na \n ");
+ expect(renderSync( )).toBe(
+ "a
",
+ );
+ expect(renderSync( )).toBe(" ");
+ });
+
+ it("supports footnotes, images, links, and definitions", () => {
+ expect(
+ renderSync(
+ ,
+ ),
+ ).toContain('href="#user-content-fn-x"');
+ expect(renderSync( )).toBe(
+ '
',
+ );
+ expect(renderSync( )).toBe(
+ '
',
+ );
+ expect(renderSync( )).toBe(
+ '
',
+ );
+ expect(renderSync( )).toBe(
+ 'a
',
+ );
+ expect(renderSync( )).toBe(
+ 'a
',
+ );
+ expect(renderSync( )).toBe(
+ 'a
',
+ );
+ expect(
+ renderSync(
+ ,
+ ),
+ ).toBe('
');
+ expect(
+ renderSync( ),
+ ).toBe('a
');
+ });
+
+ it("supports raw html behavior and tables", () => {
+ expect(renderSync( )).toBe(
+ "<i>a</i>
",
+ );
+ expect(
+ renderSync( ),
+ ).toBe("a
");
+ expect(renderSync( )).toBe(
+ "abc
",
+ );
+ expect(
+ renderSync(
+ ,
+ ),
+ ).toBe(
+ "",
+ );
+ expect(
+ renderSync(
+ ,
+ ),
+ ).toBe(
+ '',
+ );
+ });
+ });
+
+ describe("url safety", () => {
+ it("supports safe URLs and sanitizes unsafe ones", () => {
+ expect(renderSync( )).toBe(
+ '
',
+ );
+ expect(renderSync( )).toBe(
+ '
',
+ );
+ expect(renderSync( )).toBe(
+ '
',
+ );
+ expect(renderSync( )).toBe(
+ '
',
+ );
+ expect(renderSync( )).toBe(
+ '
',
+ );
+ expect(renderSync( )).toBe(
+ '
',
+ );
+ expect(renderSync( )).toBe(
+ '
',
+ );
+ expect(renderSync( )).toBe(
+ '
',
+ );
+ expect(renderSync( )).toBe(
+ '
',
+ );
+ expect(renderSync( )).toBe(
+ '
',
+ );
+ expect(renderSync( )).toBe(
+ '
',
+ );
+ });
+
+ it("supports urlTransform for href, empty URLs, and src", () => {
+ expect(
+ renderSync(
+ {
+ expect(url).toBe("https://b.com");
+ expect(key).toBe("href");
+ expect(node.tagName).toBe("a");
+ return "";
+ }}
+ />,
+ ),
+ ).toBe('a
');
+ expect(
+ renderSync(
+ {
+ expect(url).toBe("");
+ expect(key).toBe("href");
+ expect(node.tagName).toBe("a");
+ return "";
+ }}
+ />,
+ ),
+ ).toBe('
');
+ expect(
+ renderSync(
+ {
+ expect(url).toBe("https://b.com");
+ expect(key).toBe("src");
+ expect(node.tagName).toBe("img");
+ return null;
+ }}
+ />,
+ ),
+ ).toBe('
');
+ });
+
+ it("covers defaultUrlTransform edge cases directly", () => {
+ expect(defaultUrlTransform("javascript:alert(1)")).toBe("");
+ expect(defaultUrlTransform("vbscript:alert(1)")).toBe("");
+ expect(defaultUrlTransform("file:///etc/passwd")).toBe("");
+ expect(defaultUrlTransform("HTTPS://A.COM")).toBe("HTTPS://A.COM");
+ expect(defaultUrlTransform("/a")).toBe("/a");
+ expect(defaultUrlTransform("a?javascript:alert(1)")).toBe(
+ "a?javascript:alert(1)",
+ );
+ });
+ });
+
+ describe("removed props", () => {
+ it("throws for removed props with migration messages", () => {
+ const cases: ReadonlyArray<[string, Record, RegExp]> = [
+ [
+ "source",
+ { source: "a" },
+ /Unexpected `source` prop, use `children` instead/,
+ ],
+ [
+ "class",
+ { class: "markdown-body", children: "a" },
+ /Unexpected `class` prop, remove it/,
+ ],
+ [
+ "className",
+ { className: "markdown-body", children: "a" },
+ /Unexpected `className` prop, remove it/,
+ ],
+ [
+ "allowDangerousHtml",
+ { allowDangerousHtml: true, children: "a" },
+ /Unexpected `allowDangerousHtml` prop, remove it/,
+ ],
+ [
+ "plugins",
+ { plugins: [], children: "a" },
+ /Unexpected `plugins` prop, use `remarkPlugins` instead/,
+ ],
+ [
+ "renderers",
+ { renderers: {}, children: "a" },
+ /Unexpected `renderers` prop, use `components` instead/,
+ ],
+ [
+ "allowNode",
+ { allowNode: () => true, children: "a" },
+ /Unexpected `allowNode` prop, use `allowElement` instead/,
+ ],
+ [
+ "allowedTypes",
+ { allowedTypes: ["p"], children: "a" },
+ /Unexpected `allowedTypes` prop, use `allowedElements` instead/,
+ ],
+ [
+ "disallowedTypes",
+ { disallowedTypes: ["em"], children: "a" },
+ /Unexpected `disallowedTypes` prop, use `disallowedElements` instead/,
+ ],
+ [
+ "linkTarget",
+ { linkTarget: "_blank", children: "a" },
+ /Unexpected `linkTarget` prop, remove it/,
+ ],
+ [
+ "transformImageUri",
+ { transformImageUri: () => "", children: "a" },
+ /Unexpected `transformImageUri` prop, use `urlTransform` instead/,
+ ],
+ [
+ "transformLinkUri",
+ { transformLinkUri: () => "", children: "a" },
+ /Unexpected `transformLinkUri` prop, use `urlTransform` instead/,
+ ],
+ [
+ "includeElementIndex",
+ { includeElementIndex: true, children: "a" },
+ /Unexpected `includeElementIndex` prop, remove it/,
+ ],
+ [
+ "rawSourcePos",
+ { rawSourcePos: true, children: "a" },
+ /Unexpected `rawSourcePos` prop, remove it/,
+ ],
+ [
+ "sourcePos",
+ { sourcePos: true, children: "a" },
+ /Unexpected `sourcePos` prop, remove it/,
+ ],
+ ];
+
+ for (const [name, props, expected] of cases) {
+ expect(() => renderWithProps(props), name).toThrow(expected);
+ }
+ });
+ });
+
+ describe("components", () => {
+ it("supports replacing tags and generic component functions", () => {
+ expect(renderSync( )).toBe(
+ "a ",
+ );
+ expect(
+ renderSync(
+ ;
+ },
+ }}
+ />,
+ ),
+ ).toBe("a
");
+ });
+
+ it("throws on an invalid component override", () => {
+ expect(() =>
+ renderWithProps({
+ children: "# a",
+ components: { h1: 123 },
+ }),
+ ).toThrow(/charAt is not a function/);
+ });
+
+ it("passes node to component overrides for headings, code, list, and table tags", () => {
+ let headingCalls = 0;
+ let codeCalls = 0;
+ let liCalls = 0;
+ let olCalls = 0;
+ let ulCalls = 0;
+ let trCalls = 0;
+ let tdCalls = 0;
+ let thCalls = 0;
+
+ expect(
+ renderSync(
+ {props.children};
+ },
+ h2(props) {
+ headingCalls += 1;
+ expect(props.node?.tagName).toBe("h2");
+ return {props.children} ;
+ },
+ code(props) {
+ codeCalls += 1;
+ expect(props.node?.tagName).toBe("code");
+ return {props.children};
+ },
+ li(props) {
+ liCalls += 1;
+ expect(props.node?.tagName).toBe("li");
+ return {props.children} ;
+ },
+ ol(props) {
+ olCalls += 1;
+ expect(props.node?.tagName).toBe("ol");
+ return {props.children} ;
+ },
+ ul(props) {
+ ulCalls += 1;
+ expect(props.node?.tagName).toBe("ul");
+ return ;
+ },
+ tr(props) {
+ trCalls += 1;
+ expect(props.node?.tagName).toBe("tr");
+ return {props.children} ;
+ },
+ td(props) {
+ tdCalls += 1;
+ expect(props.node?.tagName).toBe("td");
+ return {props.children} ;
+ },
+ th(props) {
+ thCalls += 1;
+ expect(props.node?.tagName).toBe("th");
+ return {props.children} ;
+ },
+ }}
+ remarkPlugins={[remarkGfm]}
+ />,
+ ),
+ ).toContain("");
+
+ expect(headingCalls).toBe(2);
+ expect(codeCalls).toBe(1);
+ expect(liCalls).toBe(2);
+ expect(olCalls).toBe(1);
+ expect(ulCalls).toBe(1);
+ expect(trCalls).toBe(2);
+ expect(tdCalls).toBe(1);
+ expect(thCalls).toBe(1);
+ });
+ });
+
+ describe("plugin and property passthrough", () => {
+ it("supports allow/disallow filters and unwrapDisallowed", () => {
+ expect(
+ renderSync(
+ ,
+ ),
+ ).toBe(" \n");
+ expect(
+ renderSync(
+ element.tagName !== "em"}
+ />,
+ ),
+ ).toBe(" b
");
+ expect(
+ renderSync( ),
+ ).toBe(" \n");
+ expect(
+ renderSync(
+ ,
+ ),
+ ).toBe("a ");
+ expect(
+ renderSync(
+ ,
+ ),
+ ).toBe("a ");
+ expect(() =>
+ renderSync(
+ ,
+ ),
+ ).toThrow(
+ /Unexpected combined `allowedElements` and `disallowedElements`, expected one or the other/,
+ );
+ });
+
+ it("supports remarkRehypeOptions and other remark plugins", () => {
+ expect(
+ renderSync(
+ ,
+ ),
+ ).toContain('href="#b-fn-x"');
+ expect(
+ renderSync(
+ ,
+ ),
+ ).toBe(`a
+Contents
+
+b
+c
+d `);
+ });
+
+ it("supports aria, data, comma-separated, style, svg, and comment plugin output", () => {
+ expect(
+ renderSync(
+ ,
+ ),
+ ).toBe('c
');
+ expect(
+ renderSync(
+ ,
+ ),
+ ).toBe('b
');
+ expect(
+ renderSync(
+ ,
+ ),
+ ).toBe('c
');
+ expect(
+ renderSync(
+ ,
+ ),
+ ).toBe('a
');
+ expect(
+ renderSync(
+ ,
+ ),
+ ).toBe('a
');
+ expect(
+ renderSync(
+ ,
+ ),
+ ).toBe('a
');
+ expect(
+ renderSync(
+ ` element" }],
+ },
+ {
+ type: "element",
+ tagName: "circle",
+ properties: { cx: 120, cy: 120, r: 100 },
+ children: [],
+ },
+ {
+ type: "element",
+ tagName: "path",
+ properties: { strokeMiterLimit: -1 },
+ children: [],
+ },
+ ],
+ }),
+ ]}
+ />,
+ ),
+ ).toBe(
+ 'SVG `<circle>` element a
',
+ );
+ expect(
+ renderSync(
+ ,
+ ),
+ ).toBe("a
");
+ });
+
+ it("merges table cell style with alignment", () => {
+ expect(
+ renderSync(
+ ,
+ ),
+ ).toBe(
+ '',
+ );
+ });
+
+ it("returns empty output when a plugin replaces the root", () => {
+ expect(
+ renderSync(
+ ,
+ ),
+ ).toBe("");
+ });
+ });
+
+ describe("async behavior", () => {
+ it("supports MarkdownAsync with SSR and streaming", async () => {
+ const rendered = await MarkdownAsync({ children: "a" });
+
+ expect(renderSync(rendered)).toBe("a
");
+ expect(await readStream(renderToStream(() => rendered))).toBe("a
");
+ });
+
+ it("supports async plugins in MarkdownAsync", async () => {
+ const rendered = await MarkdownAsync({
+ children: "```js\nconsole.log(3.14)\n```",
+ rehypePlugins: [rehypeStarryNight],
+ });
+ const html = renderSync(rendered);
+
+ expect(html).toContain('console ');
+ expect(html).toContain('3.14 ');
+ });
+ });
+});
+
+function renderWithProps(props: Record): string {
+ const MarkdownAny = Markdown as unknown as Component>;
+ return renderSync( );
+}
diff --git a/tsconfig.json b/tsconfig.json
index 43338a3..55618c5 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -4,7 +4,7 @@
"target": "ESNext",
"module": "ESNext",
"lib": ["DOM", "DOM.Iterable", "ESNext"],
- "moduleResolution": "node",
+ "moduleResolution": "bundler",
"resolveJsonModule": true,
"esModuleInterop": true,
"noEmit": true,
@@ -18,5 +18,5 @@
"types": [],
"baseUrl": "."
},
- "exclude": ["node_modules", "dist", "./dev"]
+ "exclude": ["node_modules", "dist", "./dev", "./ssr-demo", "tsup.config.ts", "vitest.config.ts"]
}