From 4506fa3553dda9cb49a8eefa755fcb4dc4dd0f17 Mon Sep 17 00:00:00 2001
From: LoudLemur
Date: Thu, 12 Mar 2026 21:57:21 +0000
Subject: [PATCH] feat: add LiveKitRoom, RoomAudioRenderer, fix useIsMuted dep
array bug, fix AudioTrack import, add PORTING.md
Signed-off-by: LoudLemur
---
.editorconfig | 20 +-
.eslintrc | 56 +-
.github/ISSUE_TEMPLATE/bug-report.yml | 62 +-
.github/ISSUE_TEMPLATE/feature-request.yml | 54 +-
.github/workflows/codeql.yml | 92 +-
.github/workflows/format.yml | 74 +-
.github/workflows/tests.yml | 78 +-
.gitignore | 12 +-
.prettierrc | 20 +-
.vscode/extensions.json | 6 +-
LICENSE | 402 +-
PORTING.md | 246 ++
README.md | 204 +-
dev/App.module.css | 66 +-
dev/App.tsx | 54 +-
dev/index.html | 36 +-
dev/index.tsx | 12 +-
dev/styles.css | 22 +-
dev/tsconfig.json | 14 +-
dev/vite.config.ts | 72 +-
env.d.ts | 36 +-
package.json | 2 +-
pnpm-lock.yaml | 4228 ++++++++------------
src/components/LiveKitRoom.tsx | 137 +
src/components/RoomAudioRenderer.tsx | 41 +
src/components/TrackLoop.tsx | 92 +-
src/components/index.ts | 14 +-
src/components/participant/AudioTrack.tsx | 20 +-
src/components/participant/VideoTrack.tsx | 178 +-
src/context/index.ts | 36 +-
src/context/participant-context.ts | 94 +-
src/context/room-context.ts | 94 +-
src/context/track-reference-context.ts | 96 +-
src/index.tsx | 42 +-
src/signals/index.ts | 114 +-
src/signals/internal/index.ts | 26 +-
src/signals/internal/useObservableState.ts | 40 +-
src/signals/useConnectionStatus.ts | 54 +-
src/signals/useIsEncrypted.ts | 50 +-
src/signals/useIsMuted.ts | 38 +-
src/signals/useIsSpeaking.ts | 52 +-
src/signals/useMediaDeviceSelect.ts | 190 +-
src/signals/useMediaDevices.ts | 60 +-
src/signals/useMediaTrackBySourceOrName.ts | 196 +-
src/signals/useTracks.ts | 310 +-
tsconfig.json | 44 +-
tsup.config.ts | 84 +-
47 files changed, 3838 insertions(+), 4132 deletions(-)
create mode 100644 PORTING.md
create mode 100644 src/components/LiveKitRoom.tsx
create mode 100644 src/components/RoomAudioRenderer.tsx
diff --git a/.editorconfig b/.editorconfig
index 0f09989..c73c400 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -1,10 +1,10 @@
-# editorconfig.org
-root = true
-
-[*]
-indent_style = space
-indent_size = 2
-end_of_line = lf
-charset = utf-8
-trim_trailing_whitespace = true
-insert_final_newline = true
+# editorconfig.org
+root = true
+
+[*]
+indent_style = space
+indent_size = 2
+end_of_line = lf
+charset = utf-8
+trim_trailing_whitespace = true
+insert_final_newline = true
diff --git a/.eslintrc b/.eslintrc
index e70c7e0..e2eb10a 100644
--- a/.eslintrc
+++ b/.eslintrc
@@ -1,28 +1,28 @@
-{
- "root": true,
- "parser": "@typescript-eslint/parser",
- "plugins": ["@typescript-eslint", "eslint-comments"],
- "ignorePatterns": ["node_modules", "dist", "dev", "tsup.config.ts"],
- "parserOptions": {
- "project": "./tsconfig.json",
- "tsconfigRootDir": ".",
- "sourceType": "module"
- },
- "rules": {
- "prefer-const": "warn",
- "no-console": "warn",
- "no-debugger": "warn",
- "@typescript-eslint/no-unused-vars": [
- "warn",
- {
- "argsIgnorePattern": "^_",
- "varsIgnorePattern": "^_",
- "caughtErrorsIgnorePattern": "^_"
- }
- ],
- "@typescript-eslint/no-unnecessary-type-assertion": "warn",
- "@typescript-eslint/no-unnecessary-condition": "warn",
- "@typescript-eslint/no-useless-empty-export": "warn",
- "eslint-comments/no-unused-disable": "warn"
- }
-}
+{
+ "root": true,
+ "parser": "@typescript-eslint/parser",
+ "plugins": ["@typescript-eslint", "eslint-comments"],
+ "ignorePatterns": ["node_modules", "dist", "dev", "tsup.config.ts"],
+ "parserOptions": {
+ "project": "./tsconfig.json",
+ "tsconfigRootDir": ".",
+ "sourceType": "module"
+ },
+ "rules": {
+ "prefer-const": "warn",
+ "no-console": "warn",
+ "no-debugger": "warn",
+ "@typescript-eslint/no-unused-vars": [
+ "warn",
+ {
+ "argsIgnorePattern": "^_",
+ "varsIgnorePattern": "^_",
+ "caughtErrorsIgnorePattern": "^_"
+ }
+ ],
+ "@typescript-eslint/no-unnecessary-type-assertion": "warn",
+ "@typescript-eslint/no-unnecessary-condition": "warn",
+ "@typescript-eslint/no-useless-empty-export": "warn",
+ "eslint-comments/no-unused-disable": "warn"
+ }
+}
diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml
index 826905f..5bef31c 100644
--- a/.github/ISSUE_TEMPLATE/bug-report.yml
+++ b/.github/ISSUE_TEMPLATE/bug-report.yml
@@ -1,31 +1,31 @@
-name: "🐛 Bug report"
-description: Create a report to help us improve
-body:
- - type: markdown
- attributes:
- value: |
- Thank you for reporting an issue :pray:.
-
- The more information you fill in, the better the community can help you.
- - type: textarea
- id: description
- attributes:
- label: Describe the bug
- description: Provide a clear and concise description of the challenge you are running into.
- validations:
- required: true
- - type: input
- id: link
- attributes:
- label: Minimal Reproduction Link
- description: |
- Please provide a link to a minimal reproduction of the bug you are running into.
- It makes the process of verifying and fixing the bug much easier.
- Note:
- - Your bug will may get fixed much faster if we can run your code and it doesn't have dependencies other than the solid-js and solid-primitives.
- - To create a shareable code example you can use [Stackblitz](https://stackblitz.com/) (https://solid.new). Please no localhost URLs.
- - Please read these tips for providing a minimal example: https://stackoverflow.com/help/mcve.
- placeholder: |
- e.g. https://stackblitz.com/edit/...... OR Github Repo
- validations:
- required: true
+name: "🐛 Bug report"
+description: Create a report to help us improve
+body:
+ - type: markdown
+ attributes:
+ value: |
+ Thank you for reporting an issue :pray:.
+
+ The more information you fill in, the better the community can help you.
+ - type: textarea
+ id: description
+ attributes:
+ label: Describe the bug
+ description: Provide a clear and concise description of the challenge you are running into.
+ validations:
+ required: true
+ - type: input
+ id: link
+ attributes:
+ label: Minimal Reproduction Link
+ description: |
+ Please provide a link to a minimal reproduction of the bug you are running into.
+ It makes the process of verifying and fixing the bug much easier.
+ Note:
+ - Your bug will may get fixed much faster if we can run your code and it doesn't have dependencies other than the solid-js and solid-primitives.
+ - To create a shareable code example you can use [Stackblitz](https://stackblitz.com/) (https://solid.new). Please no localhost URLs.
+ - Please read these tips for providing a minimal example: https://stackoverflow.com/help/mcve.
+ placeholder: |
+ e.g. https://stackblitz.com/edit/...... OR Github Repo
+ validations:
+ required: true
diff --git a/.github/ISSUE_TEMPLATE/feature-request.yml b/.github/ISSUE_TEMPLATE/feature-request.yml
index e7c8598..29a6578 100644
--- a/.github/ISSUE_TEMPLATE/feature-request.yml
+++ b/.github/ISSUE_TEMPLATE/feature-request.yml
@@ -1,27 +1,27 @@
-name: "Feature Request"
-description: For feature/enhancement requests. Please search for existing issues first.
-body:
- - type: markdown
- attributes:
- value: |
- Thank you for bringing your ideas here :pray:.
-
- The more information you fill in, the better the community can understand your idea.
- - type: textarea
- id: problem
- attributes:
- label: Describe The Problem To Be Solved
- description: Provide a clear and concise description of the challenge you are running into.
- validations:
- required: true
- - type: textarea
- id: solution
- attributes:
- label: Suggest A Solution
- description: |
- A concise description of your preferred solution. Things to address include:
- - Details of the technical implementation
- - Tradeoffs made in design decisions
- - Caveats and considerations for the future
- validations:
- required: true
+name: "Feature Request"
+description: For feature/enhancement requests. Please search for existing issues first.
+body:
+ - type: markdown
+ attributes:
+ value: |
+ Thank you for bringing your ideas here :pray:.
+
+ The more information you fill in, the better the community can understand your idea.
+ - type: textarea
+ id: problem
+ attributes:
+ label: Describe The Problem To Be Solved
+ description: Provide a clear and concise description of the challenge you are running into.
+ validations:
+ required: true
+ - type: textarea
+ id: solution
+ attributes:
+ label: Suggest A Solution
+ description: |
+ A concise description of your preferred solution. Things to address include:
+ - Details of the technical implementation
+ - Tradeoffs made in design decisions
+ - Caveats and considerations for the future
+ validations:
+ required: true
diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml
index 3f37208..0f9d798 100644
--- a/.github/workflows/codeql.yml
+++ b/.github/workflows/codeql.yml
@@ -1,46 +1,46 @@
-name: "CodeQL"
-
-on:
- push:
- branches: [main]
- pull_request:
- branches: [main]
- schedule:
- - cron: "30 1 * * 0"
-
-jobs:
- analyze:
- name: Analyze
- runs-on: ubuntu-latest
- permissions:
- security-events: write
-
- steps:
- - name: Checkout repository
- uses: actions/checkout@v3
-
- - name: Initialize CodeQL
- uses: github/codeql-action/init@v1
- with:
- languages: javascript
-
- - name: Perform CodeQL Analysis
- uses: github/codeql-action/analyze@v1
- with:
- upload: false
- output: sarif-results
-
- # Only include files that are public
- - name: filter-sarif
- uses: advanced-security/filter-sarif@main
- with:
- patterns: |
- /src/**/*.*
- -**/*.test.*
- input: sarif-results/javascript.sarif
- output: sarif-results/javascript.sarif
-
- - name: Upload SARIF
- uses: github/codeql-action/upload-sarif@v1
- with:
- sarif_file: sarif-results/javascript.sarif
+name: "CodeQL"
+
+on:
+ push:
+ branches: [main]
+ pull_request:
+ branches: [main]
+ schedule:
+ - cron: "30 1 * * 0"
+
+jobs:
+ analyze:
+ name: Analyze
+ runs-on: ubuntu-latest
+ permissions:
+ security-events: write
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v3
+
+ - name: Initialize CodeQL
+ uses: github/codeql-action/init@v1
+ with:
+ languages: javascript
+
+ - name: Perform CodeQL Analysis
+ uses: github/codeql-action/analyze@v1
+ with:
+ upload: false
+ output: sarif-results
+
+ # Only include files that are public
+ - name: filter-sarif
+ uses: advanced-security/filter-sarif@main
+ with:
+ patterns: |
+ /src/**/*.*
+ -**/*.test.*
+ input: sarif-results/javascript.sarif
+ output: sarif-results/javascript.sarif
+
+ - name: Upload SARIF
+ uses: github/codeql-action/upload-sarif@v1
+ with:
+ sarif_file: sarif-results/javascript.sarif
diff --git a/.github/workflows/format.yml b/.github/workflows/format.yml
index 4280668..89861dd 100644
--- a/.github/workflows/format.yml
+++ b/.github/workflows/format.yml
@@ -1,37 +1,37 @@
-name: Format
-
-on:
- push:
- branches: [main]
-
-jobs:
- format:
- runs-on: ubuntu-latest
-
- permissions:
- # Give the default GITHUB_TOKEN write permission to commit and push the
- # added or changed files to the repository.
- contents: write
-
- steps:
- - uses: actions/checkout@v3
- - uses: pnpm/action-setup@v2.2.4
-
- - name: Setup Node.js environment
- uses: actions/setup-node@v3
- with:
- node-version: 18
-
- # "git restore ." discards changes to package-lock.json
- - name: Install dependencies
- run: |
- pnpm install --no-frozen-lockfile --ignore-scripts
- git restore .
-
- - name: Format
- run: pnpm run format
-
- - name: Add, Commit and Push
- uses: stefanzweifel/git-auto-commit-action@v4
- with:
- commit_message: 'Format'
+name: Format
+
+on:
+ push:
+ branches: [main]
+
+jobs:
+ format:
+ runs-on: ubuntu-latest
+
+ permissions:
+ # Give the default GITHUB_TOKEN write permission to commit and push the
+ # added or changed files to the repository.
+ contents: write
+
+ steps:
+ - uses: actions/checkout@v3
+ - uses: pnpm/action-setup@v2.2.4
+
+ - name: Setup Node.js environment
+ uses: actions/setup-node@v3
+ with:
+ node-version: 18
+
+ # "git restore ." discards changes to package-lock.json
+ - name: Install dependencies
+ run: |
+ pnpm install --no-frozen-lockfile --ignore-scripts
+ git restore .
+
+ - name: Format
+ run: pnpm run format
+
+ - name: Add, Commit and Push
+ uses: stefanzweifel/git-auto-commit-action@v4
+ with:
+ commit_message: 'Format'
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
index f31b0a3..205023f 100644
--- a/.github/workflows/tests.yml
+++ b/.github/workflows/tests.yml
@@ -1,39 +1,39 @@
-name: Build and Test
-
-on:
- push:
- branches: [main]
- pull_request:
- branches: [main]
-
-jobs:
- build:
- runs-on: ubuntu-latest
-
- steps:
- - name: Checkout repo
- uses: actions/checkout@v3
- with:
- fetch-depth: 2
-
- - uses: pnpm/action-setup@v2.2.4
-
- - name: Setup Node.js environment
- uses: actions/setup-node@v3
- with:
- node-version: 18
- cache: pnpm
-
- - name: Install dependencies
- run: pnpm install
-
- - name: Build
- run: pnpm run build
-
- - name: Test
- run: pnpm run test
- env:
- CI: true
-
- - name: Lint
- run: pnpm run lint
+name: Build and Test
+
+on:
+ push:
+ branches: [main]
+ pull_request:
+ branches: [main]
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout repo
+ uses: actions/checkout@v3
+ with:
+ fetch-depth: 2
+
+ - uses: pnpm/action-setup@v2.2.4
+
+ - name: Setup Node.js environment
+ uses: actions/setup-node@v3
+ with:
+ node-version: 18
+ cache: pnpm
+
+ - name: Install dependencies
+ run: pnpm install
+
+ - name: Build
+ run: pnpm run build
+
+ - name: Test
+ run: pnpm run test
+ env:
+ CI: true
+
+ - name: Lint
+ run: pnpm run lint
diff --git a/.gitignore b/.gitignore
index ef9299e..6af5a88 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,6 @@
-node_modules
-dist
-gitignore
-
-# tsup
-tsup.config.bundled_*.{m,c,}s
+node_modules
+dist
+gitignore
+
+# tsup
+tsup.config.bundled_*.{m,c,}s
diff --git a/.prettierrc b/.prettierrc
index 5012e01..bf354e9 100644
--- a/.prettierrc
+++ b/.prettierrc
@@ -1,10 +1,10 @@
-{
- "trailingComma": "all",
- "tabWidth": 2,
- "printWidth": 100,
- "semi": false,
- "singleQuote": true,
- "useTabs": false,
- "arrowParens": "avoid",
- "bracketSpacing": true
-}
+{
+ "trailingComma": "all",
+ "tabWidth": 2,
+ "printWidth": 100,
+ "semi": false,
+ "singleQuote": true,
+ "useTabs": false,
+ "arrowParens": "avoid",
+ "bracketSpacing": true
+}
diff --git a/.vscode/extensions.json b/.vscode/extensions.json
index d7df89c..7f7c01e 100644
--- a/.vscode/extensions.json
+++ b/.vscode/extensions.json
@@ -1,3 +1,3 @@
-{
- "recommendations": ["esbenp.prettier-vscode", "dbaeumer.vscode-eslint"]
-}
+{
+ "recommendations": ["esbenp.prettier-vscode", "dbaeumer.vscode-eslint"]
+}
diff --git a/LICENSE b/LICENSE
index 2ba7ae7..1f12ab9 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,201 +1,201 @@
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright 2024 insertish
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright 2024 insertish
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/PORTING.md b/PORTING.md
new file mode 100644
index 0000000..1ad7473
--- /dev/null
+++ b/PORTING.md
@@ -0,0 +1,246 @@
+# PORTING.md — Porting @livekit/components-react to Solid.js
+
+This document records the systematic translation patterns used when porting
+hooks and components from `@livekit/components-react` to this Solid.js library.
+Read this before porting any new file. It will save you from repeating bugs
+already found and fixed.
+
+---
+
+## The three-layer architecture
+
+The upstream LiveKit components stack has three layers:
+
+```
+livekit-client raw Room/Participant/Track SDK, framework-agnostic
+@livekit/components-core RxJS observables wrapping SDK events, framework-agnostic
+@livekit/components-react React hooks consuming core observables
+solid-livekit-components THIS LIBRARY: Solid signals consuming core observables
+```
+
+Key point: we share `@livekit/components-core` with the React library. Do not
+reimplement what core already provides. Use `connectionStateObserver`,
+`mutedObserver`, `participantObserver` etc. from core rather than subscribing to
+raw `livekit-client` Room events directly.
+
+---
+
+## Source version annotation
+
+Every ported file carries a version comment at the top:
+
+```typescript
+// @livekit/components-react@2.0.4
+// Apache-2.0
+```
+
+When the upstream React library releases a new version, check the changelog and
+update ported files that have changed. The version comment is your diff anchor.
+
+---
+
+## Translation patterns
+
+### 1. useState + useEffect becomes createSignal + useObservableState
+
+The most common pattern in the React library is:
+
+```typescript
+// React
+const [state, setState] = React.useState(initialValue)
+React.useEffect(() => {
+ const sub = someObservable.subscribe(setState)
+ return () => sub.unsubscribe()
+}, [someObservable])
+return state
+```
+
+In Solid, use `useObservableState` from `./internal/useObservableState`:
+
+```typescript
+// Solid
+const observable = createMemo(() => someObservable)
+return useObservableState(observable(), initialValue)
+```
+
+`useObservableState` handles the subscription and cleanup internally. Use it
+for every observable-to-signal conversion.
+
+### 2. NEVER pass a dependency array to createEffect
+
+This is the most critical bug to avoid. React's `useEffect` accepts a
+dependency array as its second argument. Solid's `createEffect` does NOT.
+Solid tracks reactive dependencies automatically by reading signals inside the
+effect body.
+
+```typescript
+// WRONG — Solid silently ignores the second argument.
+// The effect runs once and never re-runs when dep changes.
+createEffect(() => {
+ doSomethingWith(dep)
+}, [dep])
+
+// CORRECT — Solid tracks dep automatically because it is read inside the effect.
+createEffect(() => {
+ doSomethingWith(dep())
+})
+```
+
+If you need an effect to re-run when a derived value changes, wrap it in
+`createMemo` first and read the memo inside the effect:
+
+```typescript
+const observable = createMemo(() => mutedObserver(trackRef))
+createEffect(() => {
+ const sub = observable().subscribe(handler)
+ onCleanup(() => sub.unsubscribe())
+})
+```
+
+### 3. RoomContext holds Accessor, not Room
+
+In this library, `RoomContext` is typed as `createContext>`.
+This means the context value is a signal getter function, not the Room directly.
+
+```typescript
+// Accessing the room from context — note the double call ()()
+const roomAccessor = useRoomContext() // returns Accessor
+const room = roomAccessor() // call it to get the Room value
+
+// useEnsureRoom wraps this pattern and throws if no room is available
+const r = useEnsureRoom() // returns () => Room (throws if undefined)
+const room = r() // call to get the Room
+```
+
+When you port a React hook that calls `useRoomContext()` and uses the result
+directly, wrap the usage in a `createMemo` or read it inside a reactive context:
+
+```typescript
+// React
+const room = useRoomContext()
+const observable = connectionStateObserver(room)
+
+// Solid
+const r = useEnsureRoom()
+const observable = createMemo(() => connectionStateObserver(r()))
+return useObservableState(observable(), r().state)
+```
+
+### 4. useRef becomes a plain variable
+
+React requires `useRef` because component functions re-run on every render.
+Solid component functions run once. DOM refs are just variables:
+
+```typescript
+// React
+const mediaEl = React.useRef(null)
+return
+
+// Solid
+let mediaEl: HTMLAudioElement | undefined
+return
+```
+
+### 5. useCallback is not needed
+
+Solid components run once. Functions defined inside a component do not need to
+be wrapped in `useCallback` to maintain stable references. Just define them:
+
+```typescript
+// React
+const handleClick = React.useCallback(() => { ... }, [dep])
+
+// Solid
+const handleClick = () => { ... }
+```
+
+### 6. Conditional rendering uses Show and Switch, not ternaries with components
+
+```tsx
+// React
+return isConnected ? :
+
+// Solid
+return (
+ }>
+
+
+)
+```
+
+### 7. Lists use For with keyed items, not Array.map
+
+```tsx
+// React
+return tracks.map(t => )
+
+// Solid
+return (
+
+ {(t) => }
+
+)
+```
+
+`` uses referential equality on list items by default. If items are
+plain objects that get recreated on each update, use `reconcile` from
+`solid-js/store` to diff them before setting store state.
+
+---
+
+## Import paths
+
+Always use relative imports. The following absolute import was found in the
+original codebase and is a bug — it breaks outside the local dev environment:
+
+```typescript
+// WRONG
+import { useMediaDeviceSelect } from 'src/signals'
+
+// CORRECT
+import { useMediaDeviceSelect } from '../../signals'
+```
+
+---
+
+## Context file naming
+
+The context files use kebab-case (`room-context.ts`, `participant-context.ts`,
+`track-reference-context.ts`). New context files should follow this convention.
+
+---
+
+## What is still missing (as of March 2026)
+
+Components needed before the library can be considered feature-complete for
+Stoat's voice channel use case:
+
+| Component / Signal | Priority | Notes |
+|---|---|---|
+| `LiveKitRoom` | Done | Root provider |
+| `RoomAudioRenderer` | Done | Makes participants audible |
+| `useParticipants` | High | List of all participants |
+| `useLocalParticipant` | High | Local mic/camera controls |
+| `useRemoteParticipants` | High | Remote participant list |
+| `useIsSpeaking` | High | Voice activity indicator |
+| `MicrophoneButton` | High | Toggle local mic |
+| `DisconnectButton` | High | Leave channel |
+| `VideoTrack` | Medium | Video rendering (component exists, needs review) |
+| `ScreenShareButton` | Medium | Screenshare toggle |
+| `ParticipantTile` | Medium | Participant card composing video and indicators |
+| `ConnectionStateToast` | Low | Reconnection feedback |
+| `GridLayout` / `FocusLayout` | Low | Layout prefabs |
+
+---
+
+## Running the dev environment
+
+```bash
+pnpm install
+pnpm build # compile the library
+cd dev
+pnpm dev # run the example app at localhost:5173
+```
+
+The `dev/` folder contains a minimal Solid app for testing components in
+isolation. Add new components there before submitting a PR.
diff --git a/README.md b/README.md
index 31c0d74..3bb5d36 100644
--- a/README.md
+++ b/README.md
@@ -1,29 +1,203 @@
-
-
-
-
# solid-livekit-components
[](https://pnpm.io/)
-Solid components for building applications with LiveKit
+Solid.js components and reactive signal primitives for building voice and video
+applications with [LiveKit](https://livekit.io).
-This is a port of [@livekit/components-react](https://www.npmjs.com/package/@livekit/components-react) to Solid.js, many features may be missing. The `hooks` part of the original library is analagous to `signals` in this project.
+This is a port of
+[@livekit/components-react](https://www.npmjs.com/package/@livekit/components-react)
+to Solid.js. React hooks become Solid signal primitives using the `create`
+prefix. Context accessors use the `use` prefix, following Solid conventions.
-## Quick start
+---
-Install it:
+## Installation
```bash
-npm i solid-livekit-components
-# or
-yarn add solid-livekit-components
-# or
-pnpm add solid-livekit-components
+pnpm add solid-livekit-components livekit-client
+```
+
+---
+
+## Quick start
+
+The minimum setup to make remote participants audible in a voice channel:
+
+```tsx
+import {
+ LiveKitRoom,
+ RoomAudioRenderer,
+ createConnectionState,
+ ConnectionState,
+} from "solid-livekit-components";
+import { Show } from "solid-js";
+
+function VoiceChannel() {
+ return (
+
+ {/* Renders hidden elements for all remote participants */}
+
+
+ {/* Your UI */}
+
+
+ );
+}
+
+function VoiceUI() {
+ const state = createConnectionState();
+
+ return (
+ Connecting...
}
+ >
+ Connected to voice channel
+
+ );
+}
+```
+
+---
+
+## API reference
+
+### Components
+
+#### ``
+
+Root provider for a LiveKit session. Creates a `Room`, connects to the server,
+and provides the room instance via context to all descendant components.
+
+```tsx
+ {}} // optional: called when connected
+ onDisconnected={() => {}} // optional: called when disconnected
+ onError={(err) => {}} // optional: called on connection error
+>
+ {/* children have access to RoomContext */}
+
```
-Use it:
+#### ``
+
+Attaches hidden `` elements for every subscribed remote audio track.
+This is what makes remote participants audible. Place it once inside your
+`` tree. Renders no visible UI.
```tsx
-import solid-livekit-components from 'solid-livekit-components'
+
+
+
+
```
+
+---
+
+### Context accessors
+
+#### `useRoomContext(): Room`
+
+Returns the LiveKit `Room` from context. Throws if called outside
+``.
+
+#### `useMaybeRoomContext(): Room | undefined`
+
+Returns the `Room` from context, or `undefined` if not inside ``.
+
+---
+
+### Signal primitives
+
+Signal primitives follow the `create` prefix convention used by the Solid.js
+community for reactive primitives that return signals.
+
+#### `createConnectionState(room?: Room): Accessor`
+
+Reactive signal reflecting the room's current connection state. Updates
+automatically on every state change.
+
+```tsx
+import { createConnectionState, ConnectionState } from "solid-livekit-components";
+import { Show } from "solid-js";
+
+function Status() {
+ const state = createConnectionState();
+
+ return (
+
+ Reconnecting...
+
+ );
+}
+```
+
+Possible values from `ConnectionState`:
+- `ConnectionState.Disconnected`
+- `ConnectionState.Connecting`
+- `ConnectionState.Connected`
+- `ConnectionState.Reconnecting`
+
+---
+
+## Naming conventions
+
+| Pattern | Prefix | Example |
+|---|---|---|
+| Reactive signal primitives | `create` | `createConnectionState` |
+| Context accessors | `use` | `useRoomContext` |
+| Components | PascalCase | `LiveKitRoom`, `RoomAudioRenderer` |
+
+This matches the conventions used by the broader Solid.js ecosystem. The `use`
+prefix is reserved for primitives that depend on an owner context (matching
+Solid's own `useContext`). Primitives that create and return reactive signals
+use `create`, consistent with `createSignal`, `createMemo`, etc.
+
+---
+
+## Relationship to @livekit/components-core
+
+This library imports directly from
+[@livekit/components-core](https://www.npmjs.com/package/@livekit/components-core),
+the framework-agnostic layer that LiveKit maintains for all framework ports. You
+do not need to install `@livekit/components-core` separately; it is a dependency
+of this package.
+
+---
+
+## Status
+
+| Feature | Status |
+|---|---|
+| `` | Phase 1, available |
+| `` | Phase 1, available |
+| `createConnectionState` | Phase 1, available |
+| `createLocalParticipant` | Phase 2, planned |
+| `createRemoteParticipants` | Phase 2, planned |
+| `createIsMuted` / `createIsSpeaking` | Phase 2, planned |
+| `` / `` | Phase 2, planned |
+| `` / `` | Phase 3, planned |
+
+---
+
+## Contributing
+
+This library is maintained as part of the [Stoat](https://stoat.chat) project.
+Contributions are welcome. Please read the
+[contribution guide](https://developers.stoat.chat/developing/contrib/) and
+discuss larger changes in the development server before opening a PR.
+
+---
+
+## License
+
+Apache 2.0 — see [LICENSE](./LICENSE).
diff --git a/dev/App.module.css b/dev/App.module.css
index 48308b2..83e03b0 100644
--- a/dev/App.module.css
+++ b/dev/App.module.css
@@ -1,33 +1,33 @@
-.App {
- text-align: center;
-}
-
-.logo {
- animation: logo-spin infinite 20s linear;
- height: 40vmin;
- pointer-events: none;
-}
-
-.header {
- background-color: #282c34;
- min-height: 100vh;
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content: center;
- font-size: calc(10px + 2vmin);
- color: white;
-}
-
-.link {
- color: #b318f0;
-}
-
-@keyframes logo-spin {
- from {
- transform: rotate(0deg);
- }
- to {
- transform: rotate(360deg);
- }
-}
+.App {
+ text-align: center;
+}
+
+.logo {
+ animation: logo-spin infinite 20s linear;
+ height: 40vmin;
+ pointer-events: none;
+}
+
+.header {
+ background-color: #282c34;
+ min-height: 100vh;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ font-size: calc(10px + 2vmin);
+ color: white;
+}
+
+.link {
+ color: #b318f0;
+}
+
+@keyframes logo-spin {
+ from {
+ transform: rotate(0deg);
+ }
+ to {
+ transform: rotate(360deg);
+ }
+}
diff --git a/dev/App.tsx b/dev/App.tsx
index ca20c24..07c1fd0 100644
--- a/dev/App.tsx
+++ b/dev/App.tsx
@@ -1,27 +1,27 @@
-import type { Component } from 'solid-js'
-import styles from './App.module.css'
-
-// TODO: we could write a test client
-import '../src'
-
-const App: Component = () => {
- return (
-
-
-
- )
-}
-
-export default App
+import type { Component } from 'solid-js'
+import styles from './App.module.css'
+
+// TODO: we could write a test client
+import '../src'
+
+const App: Component = () => {
+ return (
+
+
+
+ )
+}
+
+export default App
diff --git a/dev/index.html b/dev/index.html
index cfb7bc0..00cfad0 100644
--- a/dev/index.html
+++ b/dev/index.html
@@ -1,18 +1,18 @@
-
-
-
-
-
-
-
- Solid App
-
-
-
- You need to enable JavaScript to run this app.
-
-
-
-
-
-
+
+
+
+
+
+
+
+ Solid App
+
+
+
+ You need to enable JavaScript to run this app.
+
+
+
+
+
+
diff --git a/dev/index.tsx b/dev/index.tsx
index 49976fe..835fdef 100644
--- a/dev/index.tsx
+++ b/dev/index.tsx
@@ -1,6 +1,6 @@
-import { render } from 'solid-js/web'
-import './styles.css'
-
-import App from './App'
-
-render(() => , document.getElementById('root')!)
+import { render } from 'solid-js/web'
+import './styles.css'
+
+import App from './App'
+
+render(() => , document.getElementById('root')!)
diff --git a/dev/styles.css b/dev/styles.css
index 89e57c7..49fa5f6 100644
--- a/dev/styles.css
+++ b/dev/styles.css
@@ -1,11 +1,11 @@
-body {
- margin: 0;
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu',
- 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
-}
-
-code {
- font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', monospace;
-}
+body {
+ margin: 0;
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu',
+ 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+code {
+ font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', monospace;
+}
diff --git a/dev/tsconfig.json b/dev/tsconfig.json
index 56e840c..d27c405 100644
--- a/dev/tsconfig.json
+++ b/dev/tsconfig.json
@@ -1,7 +1,7 @@
-{
- "extends": "../tsconfig.json",
- "compilerOptions": {
- "types": ["vite/client"]
- },
- "exclude": ["node_modules", "dist"]
-}
+{
+ "extends": "../tsconfig.json",
+ "compilerOptions": {
+ "types": ["vite/client"]
+ },
+ "exclude": ["node_modules", "dist"]
+}
diff --git a/dev/vite.config.ts b/dev/vite.config.ts
index a198a70..4c2af57 100644
--- a/dev/vite.config.ts
+++ b/dev/vite.config.ts
@@ -1,36 +1,36 @@
-import { defineConfig } from 'vite'
-import solidPlugin from 'vite-plugin-solid'
-
-export default defineConfig({
- resolve: {
- alias: {
- src: '/src',
- },
- },
- plugins: [
- solidPlugin(),
- {
- name: 'Reaplace env variables',
- transform(code, id) {
- if (id.includes('node_modules')) {
- return code
- }
- return code
- .replace(/process\.env\.SSR/g, 'false')
- .replace(/process\.env\.DEV/g, 'true')
- .replace(/process\.env\.PROD/g, 'false')
- .replace(/process\.env\.NODE_ENV/g, '"development"')
- .replace(/import\.meta\.env\.SSR/g, 'false')
- .replace(/import\.meta\.env\.DEV/g, 'true')
- .replace(/import\.meta\.env\.PROD/g, 'false')
- .replace(/import\.meta\.env\.NODE_ENV/g, '"development"')
- },
- },
- ],
- server: {
- port: 3000,
- },
- build: {
- target: 'esnext',
- },
-})
+import { defineConfig } from 'vite'
+import solidPlugin from 'vite-plugin-solid'
+
+export default defineConfig({
+ resolve: {
+ alias: {
+ src: '/src',
+ },
+ },
+ plugins: [
+ solidPlugin(),
+ {
+ name: 'Reaplace env variables',
+ transform(code, id) {
+ if (id.includes('node_modules')) {
+ return code
+ }
+ return code
+ .replace(/process\.env\.SSR/g, 'false')
+ .replace(/process\.env\.DEV/g, 'true')
+ .replace(/process\.env\.PROD/g, 'false')
+ .replace(/process\.env\.NODE_ENV/g, '"development"')
+ .replace(/import\.meta\.env\.SSR/g, 'false')
+ .replace(/import\.meta\.env\.DEV/g, 'true')
+ .replace(/import\.meta\.env\.PROD/g, 'false')
+ .replace(/import\.meta\.env\.NODE_ENV/g, '"development"')
+ },
+ },
+ ],
+ server: {
+ port: 3000,
+ },
+ build: {
+ target: 'esnext',
+ },
+})
diff --git a/env.d.ts b/env.d.ts
index ea8a892..e7d2173 100644
--- a/env.d.ts
+++ b/env.d.ts
@@ -1,18 +1,18 @@
-declare global {
- interface ImportMeta {
- env: {
- NODE_ENV: 'production' | 'development'
- PROD: boolean
- DEV: boolean
- }
- }
- namespace NodeJS {
- interface ProcessEnv {
- NODE_ENV: 'production' | 'development'
- PROD: boolean
- DEV: boolean
- }
- }
-}
-
-export {}
+declare global {
+ interface ImportMeta {
+ env: {
+ NODE_ENV: 'production' | 'development'
+ PROD: boolean
+ DEV: boolean
+ }
+ }
+ namespace NodeJS {
+ interface ProcessEnv {
+ NODE_ENV: 'production' | 'development'
+ PROD: boolean
+ DEV: boolean
+ }
+ }
+}
+
+export {}
diff --git a/package.json b/package.json
index 39a87fa..ada4686 100644
--- a/package.json
+++ b/package.json
@@ -86,4 +86,4 @@
"livekit-client": "^2.15.13",
"rxjs": "^7.8.2"
}
-}
\ No newline at end of file
+}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index b668f9a..2e222c4 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -1,2523 +1,1101 @@
-lockfileVersion: '9.0'
+lockfileVersion: '6.1'
settings:
autoInstallPeers: true
excludeLinksFromLockfile: false
-importers:
-
- .:
- dependencies:
- '@livekit/components-core':
- specifier: ^0.12.10
- version: 0.12.10(livekit-client@2.15.13(@types/dom-mediacapture-record@1.0.22))(tslib@2.8.1)
- '@solid-primitives/intersection-observer':
- specifier: ^2.2.2
- version: 2.2.2(solid-js@1.9.9)
- '@solid-primitives/keyed':
- specifier: ^1.5.2
- version: 1.5.2(solid-js@1.9.9)
- '@solid-primitives/scheduled':
- specifier: ^1.5.2
- version: 1.5.2(solid-js@1.9.9)
- add:
- specifier: ^2.0.6
- version: 2.0.6
- livekit-client:
- specifier: ^2.15.13
- version: 2.15.13(@types/dom-mediacapture-record@1.0.22)
- rxjs:
- specifier: ^7.8.1
- version: 7.8.2
- devDependencies:
- '@types/node':
- specifier: ^20.12.2
- version: 20.19.23
- '@typescript-eslint/eslint-plugin':
- specifier: ^6.1.0
- version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3)
- '@typescript-eslint/parser':
- specifier: ^6.1.0
- version: 6.21.0(eslint@8.57.1)(typescript@5.9.3)
- concurrently:
- specifier: ^8.2.0
- version: 8.2.2
- esbuild:
- specifier: ^0.18.15
- version: 0.18.20
- esbuild-plugin-solid:
- specifier: ^0.5.0
- version: 0.5.0(esbuild@0.18.20)(solid-js@1.9.9)
- eslint:
- specifier: ^8.45.0
- version: 8.57.1
- eslint-plugin-eslint-comments:
- specifier: ^3.2.0
- version: 3.2.0(eslint@8.57.1)
- prettier:
- specifier: 3.0.0
- version: 3.0.0
- solid-js:
- specifier: ^1.7.8
- version: 1.9.9
- tsup:
- specifier: ^7.1.0
- version: 7.3.0(postcss@8.5.6)(typescript@5.9.3)
- tsup-preset-solid:
- specifier: ^2.0.1
- version: 2.2.0(esbuild@0.18.20)(solid-js@1.9.9)(tsup@7.3.0(postcss@8.5.6)(typescript@5.9.3))
- typescript:
- specifier: ^5.1.6
- version: 5.9.3
- vite:
- specifier: ^4.4.6
- version: 4.5.14(@types/node@20.19.23)
- vite-plugin-solid:
- specifier: ^2.7.0
- version: 2.11.10(solid-js@1.9.9)(vite@4.5.14(@types/node@20.19.23))
+dependencies:
+ '@livekit/components-core':
+ specifier: ^0.12.10
+ version: 0.12.10(livekit-client@2.15.13)(tslib@2.8.1)
+ '@solid-primitives/intersection-observer':
+ specifier: ^2.2.2
+ version: 2.2.2(solid-js@1.7.8)
+ '@solid-primitives/keyed':
+ specifier: ^1.5.2
+ version: 1.5.2(solid-js@1.7.8)
+ '@solid-primitives/scheduled':
+ specifier: ^1.5.2
+ version: 1.5.2(solid-js@1.7.8)
+ livekit-client:
+ specifier: ^2.15.13
+ version: 2.15.13(@types/dom-mediacapture-record@1.0.22)
+ rxjs:
+ specifier: ^7.8.2
+ version: 7.8.2
+
+devDependencies:
+ '@types/node':
+ specifier: ^20.12.2
+ version: 20.12.2
+ '@typescript-eslint/eslint-plugin':
+ specifier: ^6.1.0
+ version: 6.1.0(@typescript-eslint/parser@6.1.0)(eslint@8.45.0)(typescript@5.1.6)
+ '@typescript-eslint/parser':
+ specifier: ^6.1.0
+ version: 6.1.0(eslint@8.45.0)(typescript@5.1.6)
+ concurrently:
+ specifier: ^8.2.0
+ version: 8.2.0
+ esbuild:
+ specifier: ^0.18.15
+ version: 0.18.15
+ esbuild-plugin-solid:
+ specifier: ^0.5.0
+ version: 0.5.0(esbuild@0.18.15)(solid-js@1.7.8)
+ eslint:
+ specifier: ^8.45.0
+ version: 8.45.0
+ eslint-plugin-eslint-comments:
+ specifier: ^3.2.0
+ version: 3.2.0(eslint@8.45.0)
+ prettier:
+ specifier: 3.0.0
+ version: 3.0.0
+ solid-js:
+ specifier: ^1.7.8
+ version: 1.7.8
+ tsup:
+ specifier: ^7.1.0
+ version: 7.1.0(typescript@5.1.6)
+ tsup-preset-solid:
+ specifier: ^2.0.1
+ version: 2.0.1(esbuild@0.18.15)(solid-js@1.7.8)(tsup@7.1.0)
+ typescript:
+ specifier: ^5.1.6
+ version: 5.1.6
+ vite:
+ specifier: ^4.4.6
+ version: 4.4.6(@types/node@20.12.2)
+ vite-plugin-solid:
+ specifier: ^2.7.0
+ version: 2.7.0(solid-js@1.7.8)(vite@4.4.6)
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'}
+ dependencies:
+ '@babel/helper-validator-identifier': 7.28.5
+ js-tokens: 4.0.0
+ picocolors: 1.1.1
+ dev: true
- '@babel/compat-data@7.28.4':
- resolution: {integrity: sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==}
+ /@babel/compat-data@7.29.0:
+ resolution: {integrity: sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==}
engines: {node: '>=6.9.0'}
+ dev: true
- '@babel/core@7.28.4':
- resolution: {integrity: sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==}
+ /@babel/core@7.29.0:
+ resolution: {integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==}
engines: {node: '>=6.9.0'}
+ dependencies:
+ '@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
+ gensync: 1.0.0-beta.2
+ json5: 2.2.3
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
- '@babel/generator@7.28.3':
- resolution: {integrity: sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==}
+ /@babel/generator@7.29.1:
+ resolution: {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==}
engines: {node: '>=6.9.0'}
+ dependencies:
+ '@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
+ dev: true
- '@babel/helper-annotate-as-pure@7.27.3':
+ /@babel/helper-annotate-as-pure@7.27.3:
resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==}
engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.29.0
+ dev: true
- '@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'}
+ dependencies:
+ '@babel/compat-data': 7.29.0
+ '@babel/helper-validator-option': 7.27.1
+ browserslist: 4.28.1
+ lru-cache: 5.1.1
+ semver: 6.3.1
+ dev: true
- '@babel/helper-create-class-features-plugin@7.28.3':
- resolution: {integrity: sha512-V9f6ZFIYSLNEbuGA/92uOvYsGCJNsuA8ESZ4ldc09bWk/j8H8TKiPw8Mk1eG6olpnO0ALHJmYfZvF4MEE4gajg==}
+ /@babel/helper-create-class-features-plugin@7.28.6(@babel/core@7.29.0):
+ resolution: {integrity: sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
+ dependencies:
+ '@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.28.6(@babel/core@7.29.0)
+ '@babel/helper-skip-transparent-expression-wrappers': 7.27.1
+ '@babel/traverse': 7.29.0
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
- '@babel/helper-globals@7.28.0':
+ /@babel/helper-globals@7.28.0:
resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==}
engines: {node: '>=6.9.0'}
+ dev: true
- '@babel/helper-member-expression-to-functions@7.27.1':
- resolution: {integrity: sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==}
+ /@babel/helper-member-expression-to-functions@7.28.5:
+ resolution: {integrity: sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==}
engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/traverse': 7.29.0
+ '@babel/types': 7.29.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
- '@babel/helper-module-imports@7.18.6':
+ /@babel/helper-module-imports@7.18.6:
resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==}
engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.29.0
+ dev: true
- '@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'}
+ dependencies:
+ '@babel/traverse': 7.29.0
+ '@babel/types': 7.29.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
- '@babel/helper-module-transforms@7.28.3':
- resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==}
+ /@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0):
+ resolution: {integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
+ dependencies:
+ '@babel/core': 7.29.0
+ '@babel/helper-module-imports': 7.28.6
+ '@babel/helper-validator-identifier': 7.28.5
+ '@babel/traverse': 7.29.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
- '@babel/helper-optimise-call-expression@7.27.1':
+ /@babel/helper-optimise-call-expression@7.27.1:
resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==}
engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.29.0
+ dev: true
- '@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'}
+ dev: true
- '@babel/helper-replace-supers@7.27.1':
- resolution: {integrity: sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==}
+ /@babel/helper-replace-supers@7.28.6(@babel/core@7.29.0):
+ resolution: {integrity: sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
+ dependencies:
+ '@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.29.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
- '@babel/helper-skip-transparent-expression-wrappers@7.27.1':
+ /@babel/helper-skip-transparent-expression-wrappers@7.27.1:
resolution: {integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==}
engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/traverse': 7.29.0
+ '@babel/types': 7.29.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
- '@babel/helper-string-parser@7.27.1':
+ /@babel/helper-string-parser@7.27.1:
resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==}
engines: {node: '>=6.9.0'}
+ dev: true
- '@babel/helper-validator-identifier@7.27.1':
- resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==}
+ /@babel/helper-validator-identifier@7.28.5:
+ resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==}
engines: {node: '>=6.9.0'}
+ dev: true
- '@babel/helper-validator-option@7.27.1':
+ /@babel/helper-validator-option@7.27.1:
resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==}
engines: {node: '>=6.9.0'}
+ dev: true
- '@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'}
+ dependencies:
+ '@babel/template': 7.28.6
+ '@babel/types': 7.29.0
+ dev: true
- '@babel/parser@7.28.4':
- resolution: {integrity: sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==}
+ /@babel/parser@7.29.0:
+ resolution: {integrity: sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==}
engines: {node: '>=6.0.0'}
hasBin: true
+ dependencies:
+ '@babel/types': 7.29.0
+ dev: true
- '@babel/plugin-syntax-jsx@7.27.1':
- resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==}
+ /@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0):
+ resolution: {integrity: sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
+ dev: true
- '@babel/plugin-syntax-typescript@7.27.1':
- resolution: {integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==}
+ /@babel/plugin-syntax-typescript@7.28.6(@babel/core@7.29.0):
+ resolution: {integrity: sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
+ dev: true
- '@babel/plugin-transform-modules-commonjs@7.27.1':
- resolution: {integrity: sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==}
+ /@babel/plugin-transform-modules-commonjs@7.28.6(@babel/core@7.29.0):
+ resolution: {integrity: sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
+ dependencies:
+ '@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
+ dev: true
- '@babel/plugin-transform-typescript@7.28.0':
- resolution: {integrity: sha512-4AEiDEBPIZvLQaWlc9liCavE0xRM0dNca41WtBeM3jgFptfUOSG9z0uteLhq6+3rq+WB6jIvUwKDTpXEHPJ2Vg==}
+ /@babel/plugin-transform-typescript@7.28.6(@babel/core@7.29.0):
+ resolution: {integrity: sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.29.0
+ '@babel/helper-annotate-as-pure': 7.27.3
+ '@babel/helper-create-class-features-plugin': 7.28.6(@babel/core@7.29.0)
+ '@babel/helper-plugin-utils': 7.28.6
+ '@babel/helper-skip-transparent-expression-wrappers': 7.27.1
+ '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.0)
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
- '@babel/preset-typescript@7.27.1':
- resolution: {integrity: sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ==}
+ /@babel/preset-typescript@7.28.5(@babel/core@7.29.0):
+ resolution: {integrity: sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.29.0
+ '@babel/helper-plugin-utils': 7.28.6
+ '@babel/helper-validator-option': 7.27.1
+ '@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
+ dev: true
- '@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'}
+ dev: true
- '@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'}
+ dependencies:
+ '@babel/code-frame': 7.29.0
+ '@babel/parser': 7.29.0
+ '@babel/types': 7.29.0
+ dev: true
- '@babel/traverse@7.28.4':
- resolution: {integrity: sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==}
+ /@babel/traverse@7.29.0:
+ resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==}
engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/code-frame': 7.29.0
+ '@babel/generator': 7.29.1
+ '@babel/helper-globals': 7.28.0
+ '@babel/parser': 7.29.0
+ '@babel/template': 7.28.6
+ '@babel/types': 7.29.0
+ debug: 4.4.3
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
- '@babel/types@7.28.4':
- resolution: {integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==}
+ /@babel/types@7.29.0:
+ resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==}
engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/helper-string-parser': 7.27.1
+ '@babel/helper-validator-identifier': 7.28.5
+ dev: true
- '@bufbuild/protobuf@1.10.1':
+ /@bufbuild/protobuf@1.10.1:
resolution: {integrity: sha512-wJ8ReQbHxsAfXhrf9ixl0aYbZorRuOWpBNzm8pL8ftmSxQx/wnJD5Eg861NwJU/czy2VXFIebCeZnZrI9rktIQ==}
+ dev: false
- '@esbuild/aix-ppc64@0.19.12':
- resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==}
- engines: {node: '>=12'}
- cpu: [ppc64]
- os: [aix]
-
- '@esbuild/android-arm64@0.18.20':
- resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [android]
-
- '@esbuild/android-arm64@0.19.12':
- resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==}
+ /@esbuild/android-arm64@0.18.15:
+ resolution: {integrity: sha512-NI/gnWcMl2kXt1HJKOn2H69SYn4YNheKo6NZt1hyfKWdMbaGadxjZIkcj4Gjk/WPxnbFXs9/3HjGHaknCqjrww==}
engines: {node: '>=12'}
cpu: [arm64]
os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
- '@esbuild/android-arm@0.18.20':
- resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==}
- engines: {node: '>=12'}
- cpu: [arm]
- os: [android]
-
- '@esbuild/android-arm@0.19.12':
- resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==}
+ /@esbuild/android-arm@0.18.15:
+ resolution: {integrity: sha512-wlkQBWb79/jeEEoRmrxt/yhn5T1lU236OCNpnfRzaCJHZ/5gf82uYx1qmADTBWE0AR/v7FiozE1auk2riyQd3w==}
engines: {node: '>=12'}
cpu: [arm]
os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
- '@esbuild/android-x64@0.18.20':
- resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [android]
-
- '@esbuild/android-x64@0.19.12':
- resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==}
+ /@esbuild/android-x64@0.18.15:
+ resolution: {integrity: sha512-FM9NQamSaEm/IZIhegF76aiLnng1kEsZl2eve/emxDeReVfRuRNmvT28l6hoFD9TsCxpK+i4v8LPpEj74T7yjA==}
engines: {node: '>=12'}
cpu: [x64]
os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
- '@esbuild/darwin-arm64@0.18.20':
- resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [darwin]
-
- '@esbuild/darwin-arm64@0.19.12':
- resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==}
+ /@esbuild/darwin-arm64@0.18.15:
+ resolution: {integrity: sha512-XmrFwEOYauKte9QjS6hz60FpOCnw4zaPAb7XV7O4lx1r39XjJhTN7ZpXqJh4sN6q60zbP6QwAVVA8N/wUyBH/w==}
engines: {node: '>=12'}
cpu: [arm64]
os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
- '@esbuild/darwin-x64@0.18.20':
- resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [darwin]
-
- '@esbuild/darwin-x64@0.19.12':
- resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==}
+ /@esbuild/darwin-x64@0.18.15:
+ resolution: {integrity: sha512-bMqBmpw1e//7Fh5GLetSZaeo9zSC4/CMtrVFdj+bqKPGJuKyfNJ5Nf2m3LknKZTS+Q4oyPiON+v3eaJ59sLB5A==}
engines: {node: '>=12'}
cpu: [x64]
os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
- '@esbuild/freebsd-arm64@0.18.20':
- resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [freebsd]
-
- '@esbuild/freebsd-arm64@0.19.12':
- resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==}
+ /@esbuild/freebsd-arm64@0.18.15:
+ resolution: {integrity: sha512-LoTK5N3bOmNI9zVLCeTgnk5Rk0WdUTrr9dyDAQGVMrNTh9EAPuNwSTCgaKOKiDpverOa0htPcO9NwslSE5xuLA==}
engines: {node: '>=12'}
cpu: [arm64]
os: [freebsd]
+ requiresBuild: true
+ dev: true
+ optional: true
- '@esbuild/freebsd-x64@0.18.20':
- resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [freebsd]
-
- '@esbuild/freebsd-x64@0.19.12':
- resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==}
+ /@esbuild/freebsd-x64@0.18.15:
+ resolution: {integrity: sha512-62jX5n30VzgrjAjOk5orYeHFq6sqjvsIj1QesXvn5OZtdt5Gdj0vUNJy9NIpjfdNdqr76jjtzBJKf+h2uzYuTQ==}
engines: {node: '>=12'}
cpu: [x64]
os: [freebsd]
+ requiresBuild: true
+ dev: true
+ optional: true
- '@esbuild/linux-arm64@0.18.20':
- resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [linux]
-
- '@esbuild/linux-arm64@0.19.12':
- resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==}
+ /@esbuild/linux-arm64@0.18.15:
+ resolution: {integrity: sha512-BWncQeuWDgYv0jTNzJjaNgleduV4tMbQjmk/zpPh/lUdMcNEAxy+jvneDJ6RJkrqloG7tB9S9rCrtfk/kuplsQ==}
engines: {node: '>=12'}
cpu: [arm64]
os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
- '@esbuild/linux-arm@0.18.20':
- resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==}
- engines: {node: '>=12'}
- cpu: [arm]
- os: [linux]
-
- '@esbuild/linux-arm@0.19.12':
- resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==}
+ /@esbuild/linux-arm@0.18.15:
+ resolution: {integrity: sha512-dT4URUv6ir45ZkBqhwZwyFV6cH61k8MttIwhThp2BGiVtagYvCToF+Bggyx2VI57RG4Fbt21f9TmXaYx0DeUJg==}
engines: {node: '>=12'}
cpu: [arm]
os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
- '@esbuild/linux-ia32@0.18.20':
- resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==}
- engines: {node: '>=12'}
- cpu: [ia32]
- os: [linux]
-
- '@esbuild/linux-ia32@0.19.12':
- resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==}
+ /@esbuild/linux-ia32@0.18.15:
+ resolution: {integrity: sha512-JPXORvgHRHITqfms1dWT/GbEY89u848dC08o0yK3fNskhp0t2TuNUnsrrSgOdH28ceb1hJuwyr8R/1RnyPwocw==}
engines: {node: '>=12'}
cpu: [ia32]
os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
- '@esbuild/linux-loong64@0.18.20':
- resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==}
- engines: {node: '>=12'}
- cpu: [loong64]
- os: [linux]
-
- '@esbuild/linux-loong64@0.19.12':
- resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==}
+ /@esbuild/linux-loong64@0.18.15:
+ resolution: {integrity: sha512-kArPI0DopjJCEplsVj/H+2Qgzz7vdFSacHNsgoAKpPS6W/Ndh8Oe24HRDQ5QCu4jHgN6XOtfFfLpRx3TXv/mEg==}
engines: {node: '>=12'}
cpu: [loong64]
os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
- '@esbuild/linux-mips64el@0.18.20':
- resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==}
- engines: {node: '>=12'}
- cpu: [mips64el]
- os: [linux]
-
- '@esbuild/linux-mips64el@0.19.12':
- resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==}
+ /@esbuild/linux-mips64el@0.18.15:
+ resolution: {integrity: sha512-b/tmngUfO02E00c1XnNTw/0DmloKjb6XQeqxaYuzGwHe0fHVgx5/D6CWi+XH1DvkszjBUkK9BX7n1ARTOst59w==}
engines: {node: '>=12'}
cpu: [mips64el]
os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
- '@esbuild/linux-ppc64@0.18.20':
- resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==}
- engines: {node: '>=12'}
- cpu: [ppc64]
- os: [linux]
-
- '@esbuild/linux-ppc64@0.19.12':
- resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==}
+ /@esbuild/linux-ppc64@0.18.15:
+ resolution: {integrity: sha512-KXPY69MWw79QJkyvUYb2ex/OgnN/8N/Aw5UDPlgoRtoEfcBqfeLodPr42UojV3NdkoO4u10NXQdamWm1YEzSKw==}
engines: {node: '>=12'}
cpu: [ppc64]
os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
- '@esbuild/linux-riscv64@0.18.20':
- resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==}
- engines: {node: '>=12'}
- cpu: [riscv64]
- os: [linux]
-
- '@esbuild/linux-riscv64@0.19.12':
- resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==}
+ /@esbuild/linux-riscv64@0.18.15:
+ resolution: {integrity: sha512-komK3NEAeeGRnvFEjX1SfVg6EmkfIi5aKzevdvJqMydYr9N+pRQK0PGJXk+bhoPZwOUgLO4l99FZmLGk/L1jWg==}
engines: {node: '>=12'}
cpu: [riscv64]
os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
- '@esbuild/linux-s390x@0.18.20':
- resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==}
- engines: {node: '>=12'}
- cpu: [s390x]
- os: [linux]
-
- '@esbuild/linux-s390x@0.19.12':
- resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==}
+ /@esbuild/linux-s390x@0.18.15:
+ resolution: {integrity: sha512-632T5Ts6gQ2WiMLWRRyeflPAm44u2E/s/TJvn+BP6M5mnHSk93cieaypj3VSMYO2ePTCRqAFXtuYi1yv8uZJNA==}
engines: {node: '>=12'}
cpu: [s390x]
os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
- '@esbuild/linux-x64@0.18.20':
- resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [linux]
-
- '@esbuild/linux-x64@0.19.12':
- resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==}
+ /@esbuild/linux-x64@0.18.15:
+ resolution: {integrity: sha512-MsHtX0NgvRHsoOtYkuxyk4Vkmvk3PLRWfA4okK7c+6dT0Fu4SUqXAr9y4Q3d8vUf1VWWb6YutpL4XNe400iQ1g==}
engines: {node: '>=12'}
cpu: [x64]
os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
- '@esbuild/netbsd-x64@0.18.20':
- resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [netbsd]
-
- '@esbuild/netbsd-x64@0.19.12':
- resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==}
+ /@esbuild/netbsd-x64@0.18.15:
+ resolution: {integrity: sha512-djST6s+jQiwxMIVQ5rlt24JFIAr4uwUnzceuFL7BQT4CbrRtqBPueS4GjXSiIpmwVri1Icj/9pFRJ7/aScvT+A==}
engines: {node: '>=12'}
cpu: [x64]
os: [netbsd]
+ requiresBuild: true
+ dev: true
+ optional: true
- '@esbuild/openbsd-x64@0.18.20':
- resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [openbsd]
-
- '@esbuild/openbsd-x64@0.19.12':
- resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==}
+ /@esbuild/openbsd-x64@0.18.15:
+ resolution: {integrity: sha512-naeRhUIvhsgeounjkF5mvrNAVMGAm6EJWiabskeE5yOeBbLp7T89tAEw0j5Jm/CZAwyLe3c67zyCWH6fsBLCpw==}
engines: {node: '>=12'}
cpu: [x64]
os: [openbsd]
+ requiresBuild: true
+ dev: true
+ optional: true
- '@esbuild/sunos-x64@0.18.20':
- resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [sunos]
-
- '@esbuild/sunos-x64@0.19.12':
- resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==}
+ /@esbuild/sunos-x64@0.18.15:
+ resolution: {integrity: sha512-qkT2+WxyKbNIKV1AEhI8QiSIgTHMcRctzSaa/I3kVgMS5dl3fOeoqkb7pW76KwxHoriImhx7Mg3TwN/auMDsyQ==}
engines: {node: '>=12'}
cpu: [x64]
os: [sunos]
+ requiresBuild: true
+ dev: true
+ optional: true
- '@esbuild/win32-arm64@0.18.20':
- resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [win32]
-
- '@esbuild/win32-arm64@0.19.12':
- resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==}
+ /@esbuild/win32-arm64@0.18.15:
+ resolution: {integrity: sha512-HC4/feP+pB2Vb+cMPUjAnFyERs+HJN7E6KaeBlFdBv799MhD+aPJlfi/yk36SED58J9TPwI8MAcVpJgej4ud0A==}
engines: {node: '>=12'}
cpu: [arm64]
os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
- '@esbuild/win32-ia32@0.18.20':
- resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==}
- engines: {node: '>=12'}
- cpu: [ia32]
- os: [win32]
-
- '@esbuild/win32-ia32@0.19.12':
- resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==}
+ /@esbuild/win32-ia32@0.18.15:
+ resolution: {integrity: sha512-ovjwoRXI+gf52EVF60u9sSDj7myPixPxqzD5CmkEUmvs+W9Xd0iqISVBQn8xcx4ciIaIVlWCuTbYDOXOnOL44Q==}
engines: {node: '>=12'}
cpu: [ia32]
os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
- '@esbuild/win32-x64@0.18.20':
- resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [win32]
-
- '@esbuild/win32-x64@0.19.12':
- resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==}
+ /@esbuild/win32-x64@0.18.15:
+ resolution: {integrity: sha512-imUxH9a3WJARyAvrG7srLyiK73XdX83NXQkjKvQ+7vPh3ZxoLrzvPkQKKw2DwZ+RV2ZB6vBfNHP8XScAmQC3aA==}
engines: {node: '>=12'}
cpu: [x64]
os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
- '@eslint-community/eslint-utils@4.9.0':
- resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==}
+ /@eslint-community/eslint-utils@4.9.1(eslint@8.45.0):
+ 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
+ dependencies:
+ eslint: 8.45.0
+ eslint-visitor-keys: 3.4.3
+ dev: true
- '@eslint-community/regexpp@4.12.1':
- resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==}
+ /@eslint-community/regexpp@4.12.2:
+ resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==}
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
+ dev: true
- '@eslint/eslintrc@2.1.4':
+ /@eslint/eslintrc@2.1.4:
resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ dependencies:
+ ajv: 6.14.0
+ debug: 4.4.3
+ espree: 9.6.1
+ globals: 13.24.0
+ ignore: 5.3.2
+ import-fresh: 3.3.1
+ js-yaml: 4.1.1
+ minimatch: 3.1.5
+ strip-json-comments: 3.1.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
- '@eslint/js@8.57.1':
- resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==}
+ /@eslint/js@8.44.0:
+ resolution: {integrity: sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ dev: true
- '@floating-ui/core@1.7.3':
- resolution: {integrity: sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==}
+ /@floating-ui/core@1.7.5:
+ resolution: {integrity: sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ==}
+ dependencies:
+ '@floating-ui/utils': 0.2.11
+ dev: false
- '@floating-ui/dom@1.6.13':
+ /@floating-ui/dom@1.6.13:
resolution: {integrity: sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==}
+ dependencies:
+ '@floating-ui/core': 1.7.5
+ '@floating-ui/utils': 0.2.11
+ dev: false
- '@floating-ui/utils@0.2.10':
- resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==}
+ /@floating-ui/utils@0.2.11:
+ resolution: {integrity: sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==}
+ dev: false
- '@humanwhocodes/config-array@0.13.0':
- resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==}
+ /@humanwhocodes/config-array@0.11.14:
+ resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==}
engines: {node: '>=10.10.0'}
deprecated: Use @eslint/config-array instead
+ dependencies:
+ '@humanwhocodes/object-schema': 2.0.3
+ debug: 4.4.3
+ minimatch: 3.1.5
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
- '@humanwhocodes/module-importer@1.0.1':
+ /@humanwhocodes/module-importer@1.0.1:
resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
engines: {node: '>=12.22'}
+ dev: true
- '@humanwhocodes/object-schema@2.0.3':
+ /@humanwhocodes/object-schema@2.0.3:
resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==}
deprecated: Use @eslint/object-schema instead
+ dev: true
- '@isaacs/cliui@8.0.2':
- resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
- engines: {node: '>=12'}
-
- '@jridgewell/gen-mapping@0.3.13':
+ /@jridgewell/gen-mapping@0.3.13:
resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.5.5
+ '@jridgewell/trace-mapping': 0.3.31
+ dev: true
- '@jridgewell/remapping@2.3.5':
+ /@jridgewell/remapping@2.3.5:
resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==}
+ dependencies:
+ '@jridgewell/gen-mapping': 0.3.13
+ '@jridgewell/trace-mapping': 0.3.31
+ dev: true
- '@jridgewell/resolve-uri@3.1.2':
+ /@jridgewell/resolve-uri@3.1.2:
resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
engines: {node: '>=6.0.0'}
+ dev: true
- '@jridgewell/sourcemap-codec@1.5.5':
+ /@jridgewell/sourcemap-codec@1.5.5:
resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
+ dev: true
- '@jridgewell/trace-mapping@0.3.31':
+ /@jridgewell/trace-mapping@0.3.31:
resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
+ dependencies:
+ '@jridgewell/resolve-uri': 3.1.2
+ '@jridgewell/sourcemap-codec': 1.5.5
+ dev: true
- '@livekit/components-core@0.12.10':
+ /@livekit/components-core@0.12.10(livekit-client@2.15.13)(tslib@2.8.1):
resolution: {integrity: sha512-lSGci8c8IB/qCi42g1tzNtDGpnBWH1XSSk/OA9Lzk7vqOG0LlkwD3zXfBeKfO2eWFmYRfrZ2GD59GaH2NtTgag==}
engines: {node: '>=18'}
peerDependencies:
livekit-client: ^2.13.3
tslib: ^2.6.2
+ dependencies:
+ '@floating-ui/dom': 1.6.13
+ livekit-client: 2.15.13(@types/dom-mediacapture-record@1.0.22)
+ loglevel: 1.9.1
+ rxjs: 7.8.2
+ tslib: 2.8.1
+ dev: false
- '@livekit/mutex@1.1.1':
+ /@livekit/mutex@1.1.1:
resolution: {integrity: sha512-EsshAucklmpuUAfkABPxJNhzj9v2sG7JuzFDL4ML1oJQSV14sqrpTYnsaOudMAw9yOaW53NU3QQTlUQoRs4czw==}
+ dev: false
- '@livekit/protocol@1.42.2':
+ /@livekit/protocol@1.42.2:
resolution: {integrity: sha512-0jeCwoMJKcwsZICg5S6RZM4xhJoF78qMvQELjACJQn6/VB+jmiySQKOSELTXvPBVafHfEbMlqxUw2UR1jTXs2g==}
+ dependencies:
+ '@bufbuild/protobuf': 1.10.1
+ dev: false
- '@nodelib/fs.scandir@2.1.5':
+ /@nodelib/fs.scandir@2.1.5:
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
engines: {node: '>= 8'}
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ run-parallel: 1.2.0
+ dev: true
- '@nodelib/fs.stat@2.0.5':
+ /@nodelib/fs.stat@2.0.5:
resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
engines: {node: '>= 8'}
+ dev: true
- '@nodelib/fs.walk@1.2.8':
+ /@nodelib/fs.walk@1.2.8:
resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
engines: {node: '>= 8'}
+ dependencies:
+ '@nodelib/fs.scandir': 2.1.5
+ fastq: 1.20.1
+ dev: true
- '@pkgjs/parseargs@0.11.0':
- resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
- engines: {node: '>=14'}
-
- '@rollup/rollup-android-arm-eabi@4.52.5':
- resolution: {integrity: sha512-8c1vW4ocv3UOMp9K+gToY5zL2XiiVw3k7f1ksf4yO1FlDFQ1C2u72iACFnSOceJFsWskc2WZNqeRhFRPzv+wtQ==}
- cpu: [arm]
- os: [android]
+ /@solid-primitives/intersection-observer@2.2.2(solid-js@1.7.8):
+ resolution: {integrity: sha512-5Vak/eRuCKAQis+YaPsP4KysPc+sQGL2ew8kvTOMxKVOTJcICkxznRrlFEBbBk0UsiUQlm9CcVQtJwocKWNXcw==}
+ peerDependencies:
+ solid-js: ^1.6.12
+ dependencies:
+ '@solid-primitives/utils': 6.4.0(solid-js@1.7.8)
+ solid-js: 1.7.8
+ dev: false
- '@rollup/rollup-android-arm64@4.52.5':
- resolution: {integrity: sha512-mQGfsIEFcu21mvqkEKKu2dYmtuSZOBMmAl5CFlPGLY94Vlcm+zWApK7F/eocsNzp8tKmbeBP8yXyAbx0XHsFNA==}
- cpu: [arm64]
- os: [android]
+ /@solid-primitives/keyed@1.5.2(solid-js@1.7.8):
+ resolution: {integrity: sha512-BgoEdqPw48URnI+L5sZIHdF4ua4Las1eWEBBPaoSFs42kkhnHue+rwCBPL2Z9ebOyQ75sUhUfOETdJfmv0D6Kg==}
+ peerDependencies:
+ solid-js: ^1.6.12
+ dependencies:
+ solid-js: 1.7.8
+ dev: false
- '@rollup/rollup-darwin-arm64@4.52.5':
- resolution: {integrity: sha512-takF3CR71mCAGA+v794QUZ0b6ZSrgJkArC+gUiG6LB6TQty9T0Mqh3m2ImRBOxS2IeYBo4lKWIieSvnEk2OQWA==}
- cpu: [arm64]
- os: [darwin]
+ /@solid-primitives/scheduled@1.5.2(solid-js@1.7.8):
+ resolution: {integrity: sha512-/j2igE0xyNaHhj6kMfcUQn5rAVSTLbAX+CDEBm25hSNBmNiHLu2lM7Usj2kJJ5j36D67bE8wR1hBNA8hjtvsQA==}
+ peerDependencies:
+ solid-js: ^1.6.12
+ dependencies:
+ solid-js: 1.7.8
+ dev: false
- '@rollup/rollup-darwin-x64@4.52.5':
- resolution: {integrity: sha512-W901Pla8Ya95WpxDn//VF9K9u2JbocwV/v75TE0YIHNTbhqUTv9w4VuQ9MaWlNOkkEfFwkdNhXgcLqPSmHy0fA==}
- cpu: [x64]
- os: [darwin]
+ /@solid-primitives/utils@6.4.0(solid-js@1.7.8):
+ resolution: {integrity: sha512-AeGTBg8Wtkh/0s+evyLtP8piQoS4wyqqQaAFs2HJcFMMjYAtUgo+ZPduRXLjPlqKVc2ejeR544oeqpbn8Egn8A==}
+ peerDependencies:
+ solid-js: ^1.6.12
+ dependencies:
+ solid-js: 1.7.8
+ dev: false
- '@rollup/rollup-freebsd-arm64@4.52.5':
- resolution: {integrity: sha512-QofO7i7JycsYOWxe0GFqhLmF6l1TqBswJMvICnRUjqCx8b47MTo46W8AoeQwiokAx3zVryVnxtBMcGcnX12LvA==}
- cpu: [arm64]
- os: [freebsd]
-
- '@rollup/rollup-freebsd-x64@4.52.5':
- resolution: {integrity: sha512-jr21b/99ew8ujZubPo9skbrItHEIE50WdV86cdSoRkKtmWa+DDr6fu2c/xyRT0F/WazZpam6kk7IHBerSL7LDQ==}
- cpu: [x64]
- os: [freebsd]
-
- '@rollup/rollup-linux-arm-gnueabihf@4.52.5':
- resolution: {integrity: sha512-PsNAbcyv9CcecAUagQefwX8fQn9LQ4nZkpDboBOttmyffnInRy8R8dSg6hxxl2Re5QhHBf6FYIDhIj5v982ATQ==}
- cpu: [arm]
- os: [linux]
-
- '@rollup/rollup-linux-arm-musleabihf@4.52.5':
- resolution: {integrity: sha512-Fw4tysRutyQc/wwkmcyoqFtJhh0u31K+Q6jYjeicsGJJ7bbEq8LwPWV/w0cnzOqR2m694/Af6hpFayLJZkG2VQ==}
- cpu: [arm]
- os: [linux]
-
- '@rollup/rollup-linux-arm64-gnu@4.52.5':
- resolution: {integrity: sha512-a+3wVnAYdQClOTlyapKmyI6BLPAFYs0JM8HRpgYZQO02rMR09ZcV9LbQB+NL6sljzG38869YqThrRnfPMCDtZg==}
- cpu: [arm64]
- os: [linux]
-
- '@rollup/rollup-linux-arm64-musl@4.52.5':
- resolution: {integrity: sha512-AvttBOMwO9Pcuuf7m9PkC1PUIKsfaAJ4AYhy944qeTJgQOqJYJ9oVl2nYgY7Rk0mkbsuOpCAYSs6wLYB2Xiw0Q==}
- cpu: [arm64]
- os: [linux]
-
- '@rollup/rollup-linux-loong64-gnu@4.52.5':
- resolution: {integrity: sha512-DkDk8pmXQV2wVrF6oq5tONK6UHLz/XcEVow4JTTerdeV1uqPeHxwcg7aFsfnSm9L+OO8WJsWotKM2JJPMWrQtA==}
- cpu: [loong64]
- os: [linux]
-
- '@rollup/rollup-linux-ppc64-gnu@4.52.5':
- resolution: {integrity: sha512-W/b9ZN/U9+hPQVvlGwjzi+Wy4xdoH2I8EjaCkMvzpI7wJUs8sWJ03Rq96jRnHkSrcHTpQe8h5Tg3ZzUPGauvAw==}
- cpu: [ppc64]
- os: [linux]
-
- '@rollup/rollup-linux-riscv64-gnu@4.52.5':
- resolution: {integrity: sha512-sjQLr9BW7R/ZiXnQiWPkErNfLMkkWIoCz7YMn27HldKsADEKa5WYdobaa1hmN6slu9oWQbB6/jFpJ+P2IkVrmw==}
- cpu: [riscv64]
- os: [linux]
-
- '@rollup/rollup-linux-riscv64-musl@4.52.5':
- resolution: {integrity: sha512-hq3jU/kGyjXWTvAh2awn8oHroCbrPm8JqM7RUpKjalIRWWXE01CQOf/tUNWNHjmbMHg/hmNCwc/Pz3k1T/j/Lg==}
- cpu: [riscv64]
- os: [linux]
-
- '@rollup/rollup-linux-s390x-gnu@4.52.5':
- resolution: {integrity: sha512-gn8kHOrku8D4NGHMK1Y7NA7INQTRdVOntt1OCYypZPRt6skGbddska44K8iocdpxHTMMNui5oH4elPH4QOLrFQ==}
- cpu: [s390x]
- os: [linux]
-
- '@rollup/rollup-linux-x64-gnu@4.52.5':
- resolution: {integrity: sha512-hXGLYpdhiNElzN770+H2nlx+jRog8TyynpTVzdlc6bndktjKWyZyiCsuDAlpd+j+W+WNqfcyAWz9HxxIGfZm1Q==}
- cpu: [x64]
- os: [linux]
-
- '@rollup/rollup-linux-x64-musl@4.52.5':
- resolution: {integrity: sha512-arCGIcuNKjBoKAXD+y7XomR9gY6Mw7HnFBv5Rw7wQRvwYLR7gBAgV7Mb2QTyjXfTveBNFAtPt46/36vV9STLNg==}
- cpu: [x64]
- os: [linux]
-
- '@rollup/rollup-openharmony-arm64@4.52.5':
- resolution: {integrity: sha512-QoFqB6+/9Rly/RiPjaomPLmR/13cgkIGfA40LHly9zcH1S0bN2HVFYk3a1eAyHQyjs3ZJYlXvIGtcCs5tko9Cw==}
- cpu: [arm64]
- os: [openharmony]
-
- '@rollup/rollup-win32-arm64-msvc@4.52.5':
- resolution: {integrity: sha512-w0cDWVR6MlTstla1cIfOGyl8+qb93FlAVutcor14Gf5Md5ap5ySfQ7R9S/NjNaMLSFdUnKGEasmVnu3lCMqB7w==}
- cpu: [arm64]
- os: [win32]
-
- '@rollup/rollup-win32-ia32-msvc@4.52.5':
- resolution: {integrity: sha512-Aufdpzp7DpOTULJCuvzqcItSGDH73pF3ko/f+ckJhxQyHtp67rHw3HMNxoIdDMUITJESNE6a8uh4Lo4SLouOUg==}
- cpu: [ia32]
- os: [win32]
-
- '@rollup/rollup-win32-x64-gnu@4.52.5':
- resolution: {integrity: sha512-UGBUGPFp1vkj6p8wCRraqNhqwX/4kNQPS57BCFc8wYh0g94iVIW33wJtQAx3G7vrjjNtRaxiMUylM0ktp/TRSQ==}
- cpu: [x64]
- os: [win32]
-
- '@rollup/rollup-win32-x64-msvc@4.52.5':
- resolution: {integrity: sha512-TAcgQh2sSkykPRWLrdyy2AiceMckNf5loITqXxFI5VuQjS5tSuw3WlwdN8qv8vzjLAUTvYaH/mVjSFpbkFbpTg==}
- cpu: [x64]
- os: [win32]
-
- '@solid-primitives/intersection-observer@2.2.2':
- resolution: {integrity: sha512-5Vak/eRuCKAQis+YaPsP4KysPc+sQGL2ew8kvTOMxKVOTJcICkxznRrlFEBbBk0UsiUQlm9CcVQtJwocKWNXcw==}
- peerDependencies:
- solid-js: ^1.6.12
-
- '@solid-primitives/keyed@1.5.2':
- resolution: {integrity: sha512-BgoEdqPw48URnI+L5sZIHdF4ua4Las1eWEBBPaoSFs42kkhnHue+rwCBPL2Z9ebOyQ75sUhUfOETdJfmv0D6Kg==}
- peerDependencies:
- solid-js: ^1.6.12
-
- '@solid-primitives/scheduled@1.5.2':
- resolution: {integrity: sha512-/j2igE0xyNaHhj6kMfcUQn5rAVSTLbAX+CDEBm25hSNBmNiHLu2lM7Usj2kJJ5j36D67bE8wR1hBNA8hjtvsQA==}
- peerDependencies:
- solid-js: ^1.6.12
-
- '@solid-primitives/utils@6.3.2':
- resolution: {integrity: sha512-hZ/M/qr25QOCcwDPOHtGjxTD8w2mNyVAYvcfgwzBHq2RwNqHNdDNsMZYap20+ruRwW4A3Cdkczyoz0TSxLCAPQ==}
- peerDependencies:
- solid-js: ^1.6.12
-
- '@types/babel__core@7.20.5':
+ /@types/babel__core@7.20.5:
resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==}
+ dependencies:
+ '@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
+ dev: true
- '@types/babel__generator@7.27.0':
+ /@types/babel__generator@7.27.0:
resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==}
+ dependencies:
+ '@babel/types': 7.29.0
+ dev: true
- '@types/babel__template@7.4.4':
+ /@types/babel__template@7.4.4:
resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==}
+ dependencies:
+ '@babel/parser': 7.29.0
+ '@babel/types': 7.29.0
+ dev: true
- '@types/babel__traverse@7.28.0':
+ /@types/babel__traverse@7.28.0:
resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==}
+ dependencies:
+ '@babel/types': 7.29.0
+ dev: true
- '@types/dom-mediacapture-record@1.0.22':
+ /@types/dom-mediacapture-record@1.0.22:
resolution: {integrity: sha512-mUMZLK3NvwRLcAAT9qmcK+9p7tpU2FHdDsntR3YI4+GY88XrgG4XiE7u1Q2LAN2/FZOz/tdMDC3GQCR4T8nFuw==}
+ dev: false
- '@types/estree@1.0.8':
- resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
-
- '@types/json-schema@7.0.15':
+ /@types/json-schema@7.0.15:
resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
+ dev: true
- '@types/node@20.19.23':
- resolution: {integrity: sha512-yIdlVVVHXpmqRhtyovZAcSy0MiPcYWGkoO4CGe/+jpP0hmNuihm4XhHbADpK++MsiLHP5MVlv+bcgdF99kSiFQ==}
+ /@types/node@20.12.2:
+ resolution: {integrity: sha512-zQ0NYO87hyN6Xrclcqp7f8ZbXNbRfoGWNcMvHTPQp9UUrwI0mI7XBz+cu7/W6/VClYo2g63B0cjull/srU7LgQ==}
+ dependencies:
+ undici-types: 5.26.5
+ dev: true
- '@types/semver@7.7.1':
+ /@types/semver@7.7.1:
resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==}
+ dev: true
- '@typescript-eslint/eslint-plugin@6.21.0':
- resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==}
+ /@typescript-eslint/eslint-plugin@6.1.0(@typescript-eslint/parser@6.1.0)(eslint@8.45.0)(typescript@5.1.6):
+ resolution: {integrity: sha512-qg7Bm5TyP/I7iilGyp6DRqqkt8na00lI6HbjWZObgk3FFSzH5ypRwAHXJhJkwiRtTcfn+xYQIMOR5kJgpo6upw==}
engines: {node: ^16.0.0 || >=18.0.0}
peerDependencies:
'@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha
- eslint: ^7.0.0 || ^8.0.0
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
-
- '@typescript-eslint/parser@6.21.0':
- resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==}
- engines: {node: ^16.0.0 || >=18.0.0}
- peerDependencies:
- eslint: ^7.0.0 || ^8.0.0
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
-
- '@typescript-eslint/scope-manager@6.21.0':
- resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==}
- engines: {node: ^16.0.0 || >=18.0.0}
-
- '@typescript-eslint/type-utils@6.21.0':
- resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==}
- engines: {node: ^16.0.0 || >=18.0.0}
- peerDependencies:
- eslint: ^7.0.0 || ^8.0.0
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
-
- '@typescript-eslint/types@6.21.0':
- resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==}
- engines: {node: ^16.0.0 || >=18.0.0}
-
- '@typescript-eslint/typescript-estree@6.21.0':
- resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==}
- engines: {node: ^16.0.0 || >=18.0.0}
- peerDependencies:
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
-
- '@typescript-eslint/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/visitor-keys@6.21.0':
- resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==}
- engines: {node: ^16.0.0 || >=18.0.0}
-
- '@ungap/structured-clone@1.3.0':
- resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==}
-
- acorn-jsx@5.3.2:
- resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
- peerDependencies:
- acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
-
- acorn@8.15.0:
- resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==}
- engines: {node: '>=0.4.0'}
- hasBin: true
-
- add@2.0.6:
- resolution: {integrity: sha512-j5QzrmsokwWWp6kUcJQySpbG+xfOBqqKnup3OIk1pz+kB/80SLorZ9V8zHFLO92Lcd+hbvq8bT+zOGoPkmBV0Q==}
-
- ajv@6.12.6:
- resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
-
- ansi-regex@5.0.1:
- resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
- engines: {node: '>=8'}
-
- ansi-regex@6.2.2:
- resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==}
- engines: {node: '>=12'}
-
- ansi-styles@4.3.0:
- resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
- engines: {node: '>=8'}
-
- ansi-styles@6.2.3:
- resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==}
- engines: {node: '>=12'}
-
- any-promise@1.3.0:
- resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
-
- anymatch@3.1.3:
- resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
- engines: {node: '>= 8'}
-
- argparse@2.0.1:
- resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
-
- array-union@2.1.0:
- resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
- engines: {node: '>=8'}
-
- babel-plugin-jsx-dom-expressions@0.40.1:
- resolution: {integrity: sha512-b4iHuirqK7RgaMzB2Lsl7MqrlDgQtVRSSazyrmx7wB3T759ggGjod5Rkok5MfHjQXhR7tRPmdwoeGPqBnW2KfA==}
- peerDependencies:
- '@babel/core': ^7.20.12
-
- babel-preset-solid@1.9.9:
- resolution: {integrity: sha512-pCnxWrciluXCeli/dj5PIEHgbNzim3evtTn12snjqqg8QZWJNMjH1AWIp4iG/tbVjqQ72aBEymMSagvmgxubXw==}
- peerDependencies:
- '@babel/core': ^7.0.0
- solid-js: ^1.9.8
- peerDependenciesMeta:
- solid-js:
- optional: true
-
- balanced-match@1.0.2:
- resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
-
- baseline-browser-mapping@2.8.19:
- resolution: {integrity: sha512-zoKGUdu6vb2jd3YOq0nnhEDQVbPcHhco3UImJrv5dSkvxTc2pl2WjOPsjZXDwPDSl5eghIMuY3R6J9NDKF3KcQ==}
- hasBin: true
-
- binary-extensions@2.3.0:
- resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
- engines: {node: '>=8'}
-
- brace-expansion@1.1.12:
- resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==}
-
- brace-expansion@2.0.2:
- resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==}
-
- braces@3.0.3:
- resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
- engines: {node: '>=8'}
-
- browserslist@4.26.3:
- resolution: {integrity: sha512-lAUU+02RFBuCKQPj/P6NgjlbCnLBMp4UtgTx7vNHd3XSIJF87s9a5rA3aH2yw3GS9DqZAUbOtZdCCiZeVRqt0w==}
- engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
- hasBin: true
-
- bundle-require@4.2.1:
- resolution: {integrity: sha512-7Q/6vkyYAwOmQNRw75x+4yRtZCZJXUDmHHlFdkiV0wgv/reNjtJwpu1jPJ0w2kbEpIM0uoKI3S4/f39dU7AjSA==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- peerDependencies:
- esbuild: '>=0.17'
-
- cac@6.7.14:
- resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
- engines: {node: '>=8'}
-
- callsites@3.1.0:
- resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
- engines: {node: '>=6'}
-
- caniuse-lite@1.0.30001751:
- resolution: {integrity: sha512-A0QJhug0Ly64Ii3eIqHu5X51ebln3k4yTUkY1j8drqpWHVreg/VLijN48cZ1bYPiqOQuqpkIKnzr/Ul8V+p6Cw==}
-
- chalk@4.1.2:
- resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
- engines: {node: '>=10'}
-
- chokidar@3.6.0:
- resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
- engines: {node: '>= 8.10.0'}
-
- cliui@8.0.1:
- resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
- engines: {node: '>=12'}
-
- color-convert@2.0.1:
- resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
- engines: {node: '>=7.0.0'}
-
- color-name@1.1.4:
- resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
-
- commander@4.1.1:
- resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
- engines: {node: '>= 6'}
-
- concat-map@0.0.1:
- resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
-
- concurrently@8.2.2:
- resolution: {integrity: sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==}
- engines: {node: ^14.13.0 || >=16.0.0}
- hasBin: true
-
- convert-source-map@2.0.0:
- resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
-
- cross-spawn@7.0.6:
- resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
- engines: {node: '>= 8'}
-
- csstype@3.1.3:
- resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
-
- date-fns@2.30.0:
- resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==}
- engines: {node: '>=0.11'}
-
- debug@4.4.3:
- resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
- engines: {node: '>=6.0'}
- peerDependencies:
- supports-color: '*'
- peerDependenciesMeta:
- supports-color:
- optional: true
-
- deep-is@0.1.4:
- resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
-
- dir-glob@3.0.1:
- resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
- engines: {node: '>=8'}
-
- doctrine@3.0.0:
- resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
- engines: {node: '>=6.0.0'}
-
- eastasianwidth@0.2.0:
- resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
-
- electron-to-chromium@1.5.238:
- resolution: {integrity: sha512-khBdc+w/Gv+cS8e/Pbnaw/FXcBUeKrRVik9IxfXtgREOWyJhR4tj43n3amkVogJ/yeQUqzkrZcFhtIxIdqmmcQ==}
-
- emoji-regex@8.0.0:
- resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
-
- emoji-regex@9.2.2:
- resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
-
- entities@6.0.1:
- resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==}
- engines: {node: '>=0.12'}
-
- esbuild-plugin-solid@0.5.0:
- resolution: {integrity: sha512-ITK6n+0ayGFeDVUZWNMxX+vLsasEN1ILrg4pISsNOQ+mq4ljlJJiuXotInd+HE0MzwTcA9wExT1yzDE2hsqPsg==}
- peerDependencies:
- esbuild: '>=0.12'
- solid-js: '>= 1.0'
-
- esbuild@0.18.20:
- resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==}
- engines: {node: '>=12'}
- hasBin: true
-
- esbuild@0.19.12:
- resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==}
- engines: {node: '>=12'}
- hasBin: true
-
- escalade@3.2.0:
- resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
- engines: {node: '>=6'}
-
- escape-string-regexp@1.0.5:
- resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
- engines: {node: '>=0.8.0'}
-
- escape-string-regexp@4.0.0:
- resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
- engines: {node: '>=10'}
-
- eslint-plugin-eslint-comments@3.2.0:
- resolution: {integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==}
- engines: {node: '>=6.5.0'}
- peerDependencies:
- eslint: '>=4.19.1'
-
- eslint-scope@7.2.2:
- resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
-
- eslint-visitor-keys@3.4.3:
- resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
-
- eslint@8.57.1:
- resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
- deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options.
- hasBin: true
-
- espree@9.6.1:
- 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==}
- engines: {node: '>=0.10'}
-
- esrecurse@4.3.0:
- resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
- engines: {node: '>=4.0'}
-
- estraverse@5.3.0:
- resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
- engines: {node: '>=4.0'}
-
- esutils@2.0.3:
- resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
- engines: {node: '>=0.10.0'}
-
- events@3.3.0:
- resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==}
- engines: {node: '>=0.8.x'}
-
- execa@5.1.1:
- resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
- engines: {node: '>=10'}
-
- fast-deep-equal@3.1.3:
- resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
-
- fast-glob@3.3.3:
- resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==}
- engines: {node: '>=8.6.0'}
-
- fast-json-stable-stringify@2.1.0:
- resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
-
- fast-levenshtein@2.0.6:
- resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
-
- fastq@1.19.1:
- resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==}
-
- file-entry-cache@6.0.1:
- resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
- engines: {node: ^10.12.0 || >=12.0.0}
-
- fill-range@7.1.1:
- resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
- engines: {node: '>=8'}
-
- find-up@5.0.0:
- resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
- engines: {node: '>=10'}
-
- flat-cache@3.2.0:
- 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==}
-
- foreground-child@3.3.1:
- resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==}
- engines: {node: '>=14'}
-
- fs.realpath@1.0.0:
- resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
-
- fsevents@2.3.3:
- resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
- engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
- os: [darwin]
-
- gensync@1.0.0-beta.2:
- resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
- engines: {node: '>=6.9.0'}
-
- get-caller-file@2.0.5:
- resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
- engines: {node: 6.* || 8.* || >= 10.*}
-
- get-stream@6.0.1:
- resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
- engines: {node: '>=10'}
-
- glob-parent@5.1.2:
- resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
- engines: {node: '>= 6'}
-
- glob-parent@6.0.2:
- resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
- engines: {node: '>=10.13.0'}
-
- glob@10.4.5:
- resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==}
- hasBin: true
-
- glob@7.2.3:
- resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
- deprecated: Glob versions prior to v9 are no longer supported
-
- globals@13.24.0:
- resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==}
- engines: {node: '>=8'}
-
- globby@11.1.0:
- resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
- engines: {node: '>=10'}
-
- graphemer@1.4.0:
- resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
-
- has-flag@4.0.0:
- resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
- engines: {node: '>=8'}
-
- html-entities@2.3.3:
- resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==}
-
- human-signals@2.1.0:
- resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
- engines: {node: '>=10.17.0'}
-
- ignore@5.3.2:
- resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
- engines: {node: '>= 4'}
-
- import-fresh@3.3.1:
- resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==}
- engines: {node: '>=6'}
-
- imurmurhash@0.1.4:
- resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
- engines: {node: '>=0.8.19'}
-
- inflight@1.0.6:
- resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
- deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
-
- inherits@2.0.4:
- resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
-
- is-binary-path@2.1.0:
- resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
- engines: {node: '>=8'}
-
- is-extglob@2.1.1:
- resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
- engines: {node: '>=0.10.0'}
-
- is-fullwidth-code-point@3.0.0:
- resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
- engines: {node: '>=8'}
-
- is-glob@4.0.3:
- resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
- engines: {node: '>=0.10.0'}
-
- is-number@7.0.0:
- resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
- engines: {node: '>=0.12.0'}
-
- is-path-inside@3.0.3:
- resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
- engines: {node: '>=8'}
-
- is-stream@2.0.1:
- resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
- engines: {node: '>=8'}
-
- is-what@4.1.16:
- resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==}
- engines: {node: '>=12.13'}
-
- isexe@2.0.0:
- resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
-
- jackspeak@3.4.3:
- resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==}
-
- jose@6.1.0:
- resolution: {integrity: sha512-TTQJyoEoKcC1lscpVDCSsVgYzUDg/0Bt3WE//WiTPK6uOCQC2KZS4MpugbMWt/zyjkopgZoXhZuCi00gLudfUA==}
-
- joycon@3.1.1:
- resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==}
- engines: {node: '>=10'}
-
- js-tokens@4.0.0:
- resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
-
- js-yaml@4.1.0:
- resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
- hasBin: true
-
- jsesc@3.1.0:
- resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==}
- engines: {node: '>=6'}
- hasBin: true
-
- json-buffer@3.0.1:
- resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
-
- json-schema-traverse@0.4.1:
- resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
-
- json-stable-stringify-without-jsonify@1.0.1:
- resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
-
- json5@2.2.3:
- resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
- engines: {node: '>=6'}
- hasBin: true
-
- keyv@4.5.4:
- resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
-
- levn@0.4.1:
- resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
- engines: {node: '>= 0.8.0'}
-
- lilconfig@3.1.3:
- resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==}
- engines: {node: '>=14'}
-
- lines-and-columns@1.2.4:
- resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
-
- livekit-client@2.15.13:
- resolution: {integrity: sha512-LovpU5vEaCnkmhL7iSXb/sYitzOibUShnmriONcRjjq2WNO+qV+EoPM82jE7kQ/BH58dW1+AtY4m/adndC5BWg==}
- peerDependencies:
- '@types/dom-mediacapture-record': ^1
-
- load-tsconfig@0.2.5:
- resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
- locate-path@6.0.0:
- resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
- engines: {node: '>=10'}
-
- lodash.merge@4.6.2:
- resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
-
- lodash.sortby@4.7.0:
- resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==}
-
- lodash@4.17.21:
- resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
-
- loglevel@1.9.1:
- resolution: {integrity: sha512-hP3I3kCrDIMuRwAwHltphhDM1r8i55H33GgqjXbrisuJhF4kRhW1dNuxsRklp4bXl8DSdLaNLuiL4A/LWRfxvg==}
- engines: {node: '>= 0.6.0'}
-
- loglevel@1.9.2:
- resolution: {integrity: sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==}
- engines: {node: '>= 0.6.0'}
-
- lru-cache@10.4.3:
- resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
-
- lru-cache@5.1.1:
- resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
-
- merge-anything@5.1.7:
- resolution: {integrity: sha512-eRtbOb1N5iyH0tkQDAoQ4Ipsp/5qSR79Dzrz8hEPxRX10RWWR/iQXdoKmBSRCThY1Fh5EhISDtpSc93fpxUniQ==}
- engines: {node: '>=12.13'}
-
- merge-stream@2.0.0:
- resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
-
- merge2@1.4.1:
- resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
- engines: {node: '>= 8'}
-
- micromatch@4.0.8:
- resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
- engines: {node: '>=8.6'}
-
- mimic-fn@2.1.0:
- resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
- engines: {node: '>=6'}
-
- minimatch@3.1.2:
- resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
-
- minimatch@9.0.3:
- resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==}
- engines: {node: '>=16 || 14 >=14.17'}
-
- minimatch@9.0.5:
- resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
- engines: {node: '>=16 || 14 >=14.17'}
-
- minipass@7.1.2:
- resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
- engines: {node: '>=16 || 14 >=14.17'}
-
- ms@2.1.3:
- resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
-
- mz@2.7.0:
- resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
-
- nanoid@3.3.11:
- resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
- engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
- hasBin: true
-
- natural-compare@1.4.0:
- resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
-
- node-releases@2.0.26:
- resolution: {integrity: sha512-S2M9YimhSjBSvYnlr5/+umAnPHE++ODwt5e2Ij6FoX45HA/s4vHdkDx1eax2pAPeAOqu4s9b7ppahsyEFdVqQA==}
-
- normalize-path@3.0.0:
- resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
- engines: {node: '>=0.10.0'}
-
- npm-run-path@4.0.1:
- resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
- engines: {node: '>=8'}
-
- object-assign@4.1.1:
- resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
- engines: {node: '>=0.10.0'}
-
- once@1.4.0:
- resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
-
- onetime@5.1.2:
- resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
- engines: {node: '>=6'}
-
- optionator@0.9.4:
- resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
- engines: {node: '>= 0.8.0'}
-
- p-limit@3.1.0:
- resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
- engines: {node: '>=10'}
-
- p-locate@5.0.0:
- resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
- engines: {node: '>=10'}
-
- package-json-from-dist@1.0.1:
- resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==}
-
- parent-module@1.0.1:
- resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
- engines: {node: '>=6'}
-
- parse5@7.3.0:
- resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==}
-
- path-exists@4.0.0:
- resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
- engines: {node: '>=8'}
-
- path-is-absolute@1.0.1:
- resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
- engines: {node: '>=0.10.0'}
-
- path-key@3.1.1:
- resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
- engines: {node: '>=8'}
-
- path-scurry@1.11.1:
- resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
- engines: {node: '>=16 || 14 >=14.18'}
-
- path-type@4.0.0:
- resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
- engines: {node: '>=8'}
-
- picocolors@1.1.1:
- resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
-
- picomatch@2.3.1:
- resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
- engines: {node: '>=8.6'}
-
- pirates@4.0.7:
- resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==}
- engines: {node: '>= 6'}
-
- postcss-load-config@4.0.2:
- resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==}
- engines: {node: '>= 14'}
- peerDependencies:
- postcss: '>=8.0.9'
- ts-node: '>=9.0.0'
- peerDependenciesMeta:
- postcss:
- optional: true
- ts-node:
- optional: true
-
- postcss@8.5.6:
- resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
- engines: {node: ^10 || ^12 || >=14}
-
- prelude-ls@1.2.1:
- resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
- engines: {node: '>= 0.8.0'}
-
- prettier@3.0.0:
- resolution: {integrity: sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g==}
- engines: {node: '>=14'}
- hasBin: true
-
- punycode@2.3.1:
- resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
- engines: {node: '>=6'}
-
- queue-microtask@1.2.3:
- resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
-
- readdirp@3.6.0:
- resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
- engines: {node: '>=8.10.0'}
-
- require-directory@2.1.1:
- resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
- engines: {node: '>=0.10.0'}
-
- resolve-from@4.0.0:
- resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
- engines: {node: '>=4'}
-
- resolve-from@5.0.0:
- resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
- engines: {node: '>=8'}
-
- reusify@1.1.0:
- resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==}
- engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
-
- rimraf@3.0.2:
- resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
- 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.52.5:
- resolution: {integrity: sha512-3GuObel8h7Kqdjt0gxkEzaifHTqLVW56Y/bjN7PSQtkKr0w3V/QYSdt6QWYtd7A1xUtYQigtdUfgj1RvWVtorw==}
- engines: {node: '>=18.0.0', npm: '>=8.0.0'}
- hasBin: true
-
- run-parallel@1.2.0:
- resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
-
- rxjs@7.8.2:
- resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==}
-
- sdp-transform@2.15.0:
- resolution: {integrity: sha512-KrOH82c/W+GYQ0LHqtr3caRpM3ITglq3ljGUIb8LTki7ByacJZ9z+piSGiwZDsRyhQbYBOBJgr2k6X4BZXi3Kw==}
- hasBin: true
-
- sdp@3.2.1:
- resolution: {integrity: sha512-lwsAIzOPlH8/7IIjjz3K0zYBk7aBVVcvjMwt3M4fLxpjMYyy7i3I97SLHebgn4YBjirkzfp3RvRDWSKsh/+WFw==}
-
- semver@6.3.1:
- resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
- hasBin: true
-
- semver@7.7.3:
- resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==}
- engines: {node: '>=10'}
- hasBin: true
-
- seroval-plugins@1.3.3:
- resolution: {integrity: sha512-16OL3NnUBw8JG1jBLUoZJsLnQq0n5Ua6aHalhJK4fMQkz1lqR7Osz1sA30trBtd9VUDc2NgkuRCn8+/pBwqZ+w==}
- engines: {node: '>=10'}
- peerDependencies:
- seroval: ^1.0
-
- seroval@1.3.2:
- resolution: {integrity: sha512-RbcPH1n5cfwKrru7v7+zrZvjLurgHhGyso3HTyGtRivGWgYjbOmGuivCQaORNELjNONoK35nj28EoWul9sb1zQ==}
- engines: {node: '>=10'}
-
- shebang-command@2.0.0:
- resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
- engines: {node: '>=8'}
-
- shebang-regex@3.0.0:
- resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
- engines: {node: '>=8'}
-
- shell-quote@1.8.3:
- resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==}
- engines: {node: '>= 0.4'}
-
- signal-exit@3.0.7:
- resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
-
- signal-exit@4.1.0:
- resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
- engines: {node: '>=14'}
-
- slash@3.0.0:
- resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
- engines: {node: '>=8'}
-
- solid-js@1.9.9:
- resolution: {integrity: sha512-A0ZBPJQldAeGCTW0YRYJmt7RCeh5rbFfPZ2aOttgYnctHE7HgKeHCBB/PVc2P7eOfmNXqMFFFoYYdm3S4dcbkA==}
-
- solid-refresh@0.6.3:
- resolution: {integrity: sha512-F3aPsX6hVw9ttm5LYlth8Q15x6MlI/J3Dn+o3EQyRTtTxidepSTwAYdozt01/YA+7ObcciagGEyXIopGZzQtbA==}
- peerDependencies:
- solid-js: ^1.3
-
- source-map-js@1.2.1:
- resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
- engines: {node: '>=0.10.0'}
-
- source-map@0.8.0-beta.0:
- resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==}
- engines: {node: '>= 8'}
- deprecated: The work that was done in this beta branch won't be included in future versions
-
- spawn-command@0.0.2:
- resolution: {integrity: sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==}
-
- string-width@4.2.3:
- resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
- engines: {node: '>=8'}
-
- string-width@5.1.2:
- resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
- engines: {node: '>=12'}
-
- strip-ansi@6.0.1:
- resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
- engines: {node: '>=8'}
-
- strip-ansi@7.1.2:
- resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==}
- engines: {node: '>=12'}
-
- strip-final-newline@2.0.0:
- resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
- engines: {node: '>=6'}
-
- strip-json-comments@3.1.1:
- resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
- engines: {node: '>=8'}
-
- sucrase@3.35.0:
- resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==}
- engines: {node: '>=16 || 14 >=14.17'}
- hasBin: true
-
- supports-color@7.2.0:
- resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
- engines: {node: '>=8'}
-
- supports-color@8.1.1:
- resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==}
- engines: {node: '>=10'}
-
- text-table@0.2.0:
- resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
-
- thenify-all@1.6.0:
- resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
- engines: {node: '>=0.8'}
-
- thenify@3.3.1:
- resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
-
- to-regex-range@5.0.1:
- resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
- engines: {node: '>=8.0'}
-
- tr46@1.0.1:
- resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==}
-
- tree-kill@1.2.2:
- resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==}
- hasBin: true
-
- ts-api-utils@1.4.3:
- resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==}
- engines: {node: '>=16'}
- peerDependencies:
- typescript: '>=4.2.0'
-
- ts-debounce@4.0.0:
- resolution: {integrity: sha512-+1iDGY6NmOGidq7i7xZGA4cm8DAa6fqdYcvO5Z6yBevH++Bdo9Qt/mN0TzHUgcCcKv1gmh9+W5dHqz8pMWbCbg==}
-
- ts-interface-checker@0.1.13:
- resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
-
- tslib@2.8.1:
- resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
-
- tsup-preset-solid@2.2.0:
- resolution: {integrity: sha512-sPAzeArmYkVAZNRN+m4tkiojdd0GzW/lCwd4+TQDKMENe8wr2uAuro1s0Z59ASmdBbkXoxLgCiNcuQMyiidMZg==}
- peerDependencies:
- tsup: ^8.0.0
-
- tsup@7.3.0:
- resolution: {integrity: sha512-Ja1eaSRrE+QarmATlNO5fse2aOACYMBX+IZRKy1T+gpyH+jXgRrl5l4nHIQJQ1DoDgEjHDTw8cpE085UdBZuWQ==}
- engines: {node: '>=18'}
- deprecated: Breaking node 16
- hasBin: true
- peerDependencies:
- '@swc/core': ^1
- postcss: ^8.4.12
- typescript: '>=4.5.0'
- peerDependenciesMeta:
- '@swc/core':
- optional: true
- postcss:
- optional: true
- typescript:
- optional: true
-
- type-check@0.4.0:
- resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
- engines: {node: '>= 0.8.0'}
-
- type-fest@0.20.2:
- resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
- engines: {node: '>=10'}
-
- typed-emitter@2.1.0:
- resolution: {integrity: sha512-g/KzbYKbH5C2vPkaXGu8DJlHrGKHLsM25Zg9WuC9pMGfuvT+X25tZQWo5fK1BjBm8+UrVE9LDCvaY0CQk+fXDA==}
-
- typescript@5.9.3:
- resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==}
- engines: {node: '>=14.17'}
- hasBin: true
-
- undici-types@6.21.0:
- resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==}
-
- update-browserslist-db@1.1.3:
- resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==}
- hasBin: true
- peerDependencies:
- browserslist: '>= 4.21.0'
-
- uri-js@4.4.1:
- resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
-
- validate-html-nesting@1.2.3:
- resolution: {integrity: sha512-kdkWdCl6eCeLlRShJKbjVOU2kFKxMF8Ghu50n+crEoyx+VKm3FxAxF9z4DCy6+bbTOqNW0+jcIYRnjoIRzigRw==}
-
- vite-plugin-solid@2.11.10:
- resolution: {integrity: sha512-Yr1dQybmtDtDAHkii6hXuc1oVH9CPcS/Zb2jN/P36qqcrkNnVPsMTzQ06jyzFPFjj3U1IYKMVt/9ZqcwGCEbjw==}
- peerDependencies:
- '@testing-library/jest-dom': ^5.16.6 || ^5.17.0 || ^6.*
- solid-js: ^1.7.2
- vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0
- peerDependenciesMeta:
- '@testing-library/jest-dom':
- optional: true
-
- vite@4.5.14:
- resolution: {integrity: sha512-+v57oAaoYNnO3hIu5Z/tJRZjq5aHM2zDve9YZ8HngVHbhk66RStobhb1sqPMIPEleV6cNKYK4eGrAbE9Ulbl2g==}
- engines: {node: ^14.18.0 || >=16.0.0}
- hasBin: true
- peerDependencies:
- '@types/node': '>= 14'
- less: '*'
- lightningcss: ^1.21.0
- sass: '*'
- stylus: '*'
- sugarss: '*'
- terser: ^5.4.0
- peerDependenciesMeta:
- '@types/node':
- optional: true
- less:
- optional: true
- lightningcss:
- optional: true
- sass:
- optional: true
- stylus:
- optional: true
- sugarss:
- optional: true
- terser:
- optional: true
-
- vitefu@1.1.1:
- resolution: {integrity: sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ==}
- peerDependencies:
- vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0
- peerDependenciesMeta:
- vite:
- optional: true
-
- webidl-conversions@4.0.2:
- resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==}
-
- webrtc-adapter@9.0.3:
- resolution: {integrity: sha512-5fALBcroIl31OeXAdd1YUntxiZl1eHlZZWzNg3U4Fn+J9/cGL3eT80YlrsWGvj2ojuz1rZr2OXkgCzIxAZ7vRQ==}
- engines: {node: '>=6.0.0', npm: '>=3.10.0'}
-
- whatwg-url@7.1.0:
- resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==}
-
- which@2.0.2:
- resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
- engines: {node: '>= 8'}
- hasBin: true
-
- word-wrap@1.2.5:
- resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
- engines: {node: '>=0.10.0'}
-
- wrap-ansi@7.0.0:
- resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
- engines: {node: '>=10'}
-
- wrap-ansi@8.1.0:
- resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
- engines: {node: '>=12'}
-
- wrappy@1.0.2:
- resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
-
- y18n@5.0.8:
- resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
- engines: {node: '>=10'}
-
- yallist@3.1.1:
- resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
-
- yaml@2.8.1:
- resolution: {integrity: sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==}
- engines: {node: '>= 14.6'}
- hasBin: true
-
- yargs-parser@21.1.1:
- resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
- engines: {node: '>=12'}
-
- yargs@17.7.2:
- resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}
- engines: {node: '>=12'}
-
- yocto-queue@0.1.0:
- resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
- engines: {node: '>=10'}
-
-snapshots:
-
- '@babel/code-frame@7.27.1':
- dependencies:
- '@babel/helper-validator-identifier': 7.27.1
- js-tokens: 4.0.0
- picocolors: 1.1.1
-
- '@babel/compat-data@7.28.4': {}
-
- '@babel/core@7.28.4':
- dependencies:
- '@babel/code-frame': 7.27.1
- '@babel/generator': 7.28.3
- '@babel/helper-compilation-targets': 7.27.2
- '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4)
- '@babel/helpers': 7.28.4
- '@babel/parser': 7.28.4
- '@babel/template': 7.27.2
- '@babel/traverse': 7.28.4
- '@babel/types': 7.28.4
- '@jridgewell/remapping': 2.3.5
- convert-source-map: 2.0.0
- debug: 4.4.3
- gensync: 1.0.0-beta.2
- json5: 2.2.3
- semver: 6.3.1
- transitivePeerDependencies:
- - supports-color
-
- '@babel/generator@7.28.3':
- dependencies:
- '@babel/parser': 7.28.4
- '@babel/types': 7.28.4
- '@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.4
-
- '@babel/helper-compilation-targets@7.27.2':
- dependencies:
- '@babel/compat-data': 7.28.4
- '@babel/helper-validator-option': 7.27.1
- browserslist: 4.26.3
- lru-cache: 5.1.1
- semver: 6.3.1
-
- '@babel/helper-create-class-features-plugin@7.28.3(@babel/core@7.28.4)':
- dependencies:
- '@babel/core': 7.28.4
- '@babel/helper-annotate-as-pure': 7.27.3
- '@babel/helper-member-expression-to-functions': 7.27.1
- '@babel/helper-optimise-call-expression': 7.27.1
- '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.4)
- '@babel/helper-skip-transparent-expression-wrappers': 7.27.1
- '@babel/traverse': 7.28.4
- semver: 6.3.1
- transitivePeerDependencies:
- - supports-color
-
- '@babel/helper-globals@7.28.0': {}
-
- '@babel/helper-member-expression-to-functions@7.27.1':
- dependencies:
- '@babel/traverse': 7.28.4
- '@babel/types': 7.28.4
- transitivePeerDependencies:
- - supports-color
-
- '@babel/helper-module-imports@7.18.6':
- dependencies:
- '@babel/types': 7.28.4
-
- '@babel/helper-module-imports@7.27.1':
- dependencies:
- '@babel/traverse': 7.28.4
- '@babel/types': 7.28.4
- transitivePeerDependencies:
- - supports-color
-
- '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.4)':
- dependencies:
- '@babel/core': 7.28.4
- '@babel/helper-module-imports': 7.27.1
- '@babel/helper-validator-identifier': 7.27.1
- '@babel/traverse': 7.28.4
- transitivePeerDependencies:
- - supports-color
-
- '@babel/helper-optimise-call-expression@7.27.1':
- dependencies:
- '@babel/types': 7.28.4
-
- '@babel/helper-plugin-utils@7.27.1': {}
-
- '@babel/helper-replace-supers@7.27.1(@babel/core@7.28.4)':
- dependencies:
- '@babel/core': 7.28.4
- '@babel/helper-member-expression-to-functions': 7.27.1
- '@babel/helper-optimise-call-expression': 7.27.1
- '@babel/traverse': 7.28.4
- transitivePeerDependencies:
- - supports-color
-
- '@babel/helper-skip-transparent-expression-wrappers@7.27.1':
- dependencies:
- '@babel/traverse': 7.28.4
- '@babel/types': 7.28.4
- transitivePeerDependencies:
- - supports-color
-
- '@babel/helper-string-parser@7.27.1': {}
-
- '@babel/helper-validator-identifier@7.27.1': {}
-
- '@babel/helper-validator-option@7.27.1': {}
-
- '@babel/helpers@7.28.4':
- dependencies:
- '@babel/template': 7.27.2
- '@babel/types': 7.28.4
-
- '@babel/parser@7.28.4':
- dependencies:
- '@babel/types': 7.28.4
-
- '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.4)':
- dependencies:
- '@babel/core': 7.28.4
- '@babel/helper-plugin-utils': 7.27.1
-
- '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.4)':
- dependencies:
- '@babel/core': 7.28.4
- '@babel/helper-plugin-utils': 7.27.1
-
- '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.28.4)':
- dependencies:
- '@babel/core': 7.28.4
- '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4)
- '@babel/helper-plugin-utils': 7.27.1
- transitivePeerDependencies:
- - supports-color
-
- '@babel/plugin-transform-typescript@7.28.0(@babel/core@7.28.4)':
- dependencies:
- '@babel/core': 7.28.4
- '@babel/helper-annotate-as-pure': 7.27.3
- '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.4)
- '@babel/helper-plugin-utils': 7.27.1
- '@babel/helper-skip-transparent-expression-wrappers': 7.27.1
- '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.4)
- transitivePeerDependencies:
- - supports-color
-
- '@babel/preset-typescript@7.27.1(@babel/core@7.28.4)':
- dependencies:
- '@babel/core': 7.28.4
- '@babel/helper-plugin-utils': 7.27.1
- '@babel/helper-validator-option': 7.27.1
- '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.4)
- '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.4)
- '@babel/plugin-transform-typescript': 7.28.0(@babel/core@7.28.4)
- transitivePeerDependencies:
- - supports-color
-
- '@babel/runtime@7.28.4': {}
-
- '@babel/template@7.27.2':
- dependencies:
- '@babel/code-frame': 7.27.1
- '@babel/parser': 7.28.4
- '@babel/types': 7.28.4
-
- '@babel/traverse@7.28.4':
- dependencies:
- '@babel/code-frame': 7.27.1
- '@babel/generator': 7.28.3
- '@babel/helper-globals': 7.28.0
- '@babel/parser': 7.28.4
- '@babel/template': 7.27.2
- '@babel/types': 7.28.4
- debug: 4.4.3
- transitivePeerDependencies:
- - supports-color
-
- '@babel/types@7.28.4':
- dependencies:
- '@babel/helper-string-parser': 7.27.1
- '@babel/helper-validator-identifier': 7.27.1
-
- '@bufbuild/protobuf@1.10.1': {}
-
- '@esbuild/aix-ppc64@0.19.12':
- optional: true
-
- '@esbuild/android-arm64@0.18.20':
- optional: true
-
- '@esbuild/android-arm64@0.19.12':
- optional: true
-
- '@esbuild/android-arm@0.18.20':
- optional: true
-
- '@esbuild/android-arm@0.19.12':
- optional: true
-
- '@esbuild/android-x64@0.18.20':
- optional: true
-
- '@esbuild/android-x64@0.19.12':
- optional: true
-
- '@esbuild/darwin-arm64@0.18.20':
- optional: true
-
- '@esbuild/darwin-arm64@0.19.12':
- optional: true
-
- '@esbuild/darwin-x64@0.18.20':
- optional: true
-
- '@esbuild/darwin-x64@0.19.12':
- optional: true
-
- '@esbuild/freebsd-arm64@0.18.20':
- optional: true
-
- '@esbuild/freebsd-arm64@0.19.12':
- optional: true
-
- '@esbuild/freebsd-x64@0.18.20':
- optional: true
-
- '@esbuild/freebsd-x64@0.19.12':
- optional: true
-
- '@esbuild/linux-arm64@0.18.20':
- optional: true
-
- '@esbuild/linux-arm64@0.19.12':
- optional: true
-
- '@esbuild/linux-arm@0.18.20':
- optional: true
-
- '@esbuild/linux-arm@0.19.12':
- optional: true
-
- '@esbuild/linux-ia32@0.18.20':
- optional: true
-
- '@esbuild/linux-ia32@0.19.12':
- optional: true
-
- '@esbuild/linux-loong64@0.18.20':
- optional: true
-
- '@esbuild/linux-loong64@0.19.12':
- optional: true
-
- '@esbuild/linux-mips64el@0.18.20':
- optional: true
-
- '@esbuild/linux-mips64el@0.19.12':
- optional: true
-
- '@esbuild/linux-ppc64@0.18.20':
- optional: true
-
- '@esbuild/linux-ppc64@0.19.12':
- optional: true
-
- '@esbuild/linux-riscv64@0.18.20':
- optional: true
-
- '@esbuild/linux-riscv64@0.19.12':
- optional: true
-
- '@esbuild/linux-s390x@0.18.20':
- optional: true
-
- '@esbuild/linux-s390x@0.19.12':
- optional: true
-
- '@esbuild/linux-x64@0.18.20':
- optional: true
-
- '@esbuild/linux-x64@0.19.12':
- optional: true
-
- '@esbuild/netbsd-x64@0.18.20':
- optional: true
-
- '@esbuild/netbsd-x64@0.19.12':
- optional: true
-
- '@esbuild/openbsd-x64@0.18.20':
- optional: true
-
- '@esbuild/openbsd-x64@0.19.12':
- optional: true
-
- '@esbuild/sunos-x64@0.18.20':
- optional: true
-
- '@esbuild/sunos-x64@0.19.12':
- optional: true
-
- '@esbuild/win32-arm64@0.18.20':
- optional: true
-
- '@esbuild/win32-arm64@0.19.12':
- optional: true
-
- '@esbuild/win32-ia32@0.18.20':
- optional: true
-
- '@esbuild/win32-ia32@0.19.12':
- optional: true
-
- '@esbuild/win32-x64@0.18.20':
- optional: true
-
- '@esbuild/win32-x64@0.19.12':
- optional: true
-
- '@eslint-community/eslint-utils@4.9.0(eslint@8.57.1)':
- dependencies:
- eslint: 8.57.1
- eslint-visitor-keys: 3.4.3
-
- '@eslint-community/regexpp@4.12.1': {}
-
- '@eslint/eslintrc@2.1.4':
- dependencies:
- ajv: 6.12.6
- 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.0
- minimatch: 3.1.2
- strip-json-comments: 3.1.1
- transitivePeerDependencies:
- - supports-color
-
- '@eslint/js@8.57.1': {}
-
- '@floating-ui/core@1.7.3':
- dependencies:
- '@floating-ui/utils': 0.2.10
-
- '@floating-ui/dom@1.6.13':
- dependencies:
- '@floating-ui/core': 1.7.3
- '@floating-ui/utils': 0.2.10
-
- '@floating-ui/utils@0.2.10': {}
-
- '@humanwhocodes/config-array@0.13.0':
- dependencies:
- '@humanwhocodes/object-schema': 2.0.3
- debug: 4.4.3
- minimatch: 3.1.2
- transitivePeerDependencies:
- - supports-color
-
- '@humanwhocodes/module-importer@1.0.1': {}
-
- '@humanwhocodes/object-schema@2.0.3': {}
-
- '@isaacs/cliui@8.0.2':
- dependencies:
- string-width: 5.1.2
- string-width-cjs: string-width@4.2.3
- strip-ansi: 7.1.2
- strip-ansi-cjs: strip-ansi@6.0.1
- wrap-ansi: 8.1.0
- wrap-ansi-cjs: wrap-ansi@7.0.0
-
- '@jridgewell/gen-mapping@0.3.13':
- dependencies:
- '@jridgewell/sourcemap-codec': 1.5.5
- '@jridgewell/trace-mapping': 0.3.31
-
- '@jridgewell/remapping@2.3.5':
- dependencies:
- '@jridgewell/gen-mapping': 0.3.13
- '@jridgewell/trace-mapping': 0.3.31
-
- '@jridgewell/resolve-uri@3.1.2': {}
-
- '@jridgewell/sourcemap-codec@1.5.5': {}
-
- '@jridgewell/trace-mapping@0.3.31':
- dependencies:
- '@jridgewell/resolve-uri': 3.1.2
- '@jridgewell/sourcemap-codec': 1.5.5
-
- '@livekit/components-core@0.12.10(livekit-client@2.15.13(@types/dom-mediacapture-record@1.0.22))(tslib@2.8.1)':
- dependencies:
- '@floating-ui/dom': 1.6.13
- livekit-client: 2.15.13(@types/dom-mediacapture-record@1.0.22)
- loglevel: 1.9.1
- rxjs: 7.8.2
- tslib: 2.8.1
-
- '@livekit/mutex@1.1.1': {}
-
- '@livekit/protocol@1.42.2':
- dependencies:
- '@bufbuild/protobuf': 1.10.1
-
- '@nodelib/fs.scandir@2.1.5':
- dependencies:
- '@nodelib/fs.stat': 2.0.5
- run-parallel: 1.2.0
-
- '@nodelib/fs.stat@2.0.5': {}
-
- '@nodelib/fs.walk@1.2.8':
- dependencies:
- '@nodelib/fs.scandir': 2.1.5
- fastq: 1.19.1
-
- '@pkgjs/parseargs@0.11.0':
- optional: true
-
- '@rollup/rollup-android-arm-eabi@4.52.5':
- optional: true
-
- '@rollup/rollup-android-arm64@4.52.5':
- optional: true
-
- '@rollup/rollup-darwin-arm64@4.52.5':
- optional: true
-
- '@rollup/rollup-darwin-x64@4.52.5':
- optional: true
-
- '@rollup/rollup-freebsd-arm64@4.52.5':
- optional: true
-
- '@rollup/rollup-freebsd-x64@4.52.5':
- optional: true
-
- '@rollup/rollup-linux-arm-gnueabihf@4.52.5':
- optional: true
-
- '@rollup/rollup-linux-arm-musleabihf@4.52.5':
- optional: true
-
- '@rollup/rollup-linux-arm64-gnu@4.52.5':
- optional: true
-
- '@rollup/rollup-linux-arm64-musl@4.52.5':
- optional: true
-
- '@rollup/rollup-linux-loong64-gnu@4.52.5':
- optional: true
-
- '@rollup/rollup-linux-ppc64-gnu@4.52.5':
- optional: true
-
- '@rollup/rollup-linux-riscv64-gnu@4.52.5':
- optional: true
-
- '@rollup/rollup-linux-riscv64-musl@4.52.5':
- optional: true
-
- '@rollup/rollup-linux-s390x-gnu@4.52.5':
- optional: true
-
- '@rollup/rollup-linux-x64-gnu@4.52.5':
- optional: true
-
- '@rollup/rollup-linux-x64-musl@4.52.5':
- optional: true
-
- '@rollup/rollup-openharmony-arm64@4.52.5':
- optional: true
-
- '@rollup/rollup-win32-arm64-msvc@4.52.5':
- optional: true
-
- '@rollup/rollup-win32-ia32-msvc@4.52.5':
- optional: true
-
- '@rollup/rollup-win32-x64-gnu@4.52.5':
- optional: true
-
- '@rollup/rollup-win32-x64-msvc@4.52.5':
- optional: true
-
- '@solid-primitives/intersection-observer@2.2.2(solid-js@1.9.9)':
- dependencies:
- '@solid-primitives/utils': 6.3.2(solid-js@1.9.9)
- solid-js: 1.9.9
-
- '@solid-primitives/keyed@1.5.2(solid-js@1.9.9)':
- dependencies:
- solid-js: 1.9.9
-
- '@solid-primitives/scheduled@1.5.2(solid-js@1.9.9)':
- dependencies:
- solid-js: 1.9.9
-
- '@solid-primitives/utils@6.3.2(solid-js@1.9.9)':
- dependencies:
- solid-js: 1.9.9
-
- '@types/babel__core@7.20.5':
- dependencies:
- '@babel/parser': 7.28.4
- '@babel/types': 7.28.4
- '@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.4
-
- '@types/babel__template@7.4.4':
- dependencies:
- '@babel/parser': 7.28.4
- '@babel/types': 7.28.4
-
- '@types/babel__traverse@7.28.0':
- dependencies:
- '@babel/types': 7.28.4
-
- '@types/dom-mediacapture-record@1.0.22': {}
-
- '@types/estree@1.0.8': {}
-
- '@types/json-schema@7.0.15': {}
-
- '@types/node@20.19.23':
- dependencies:
- undici-types: 6.21.0
-
- '@types/semver@7.7.1': {}
-
- '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3)':
+ eslint: ^7.0.0 || ^8.0.0
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
dependencies:
- '@eslint-community/regexpp': 4.12.1
- '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.9.3)
- '@typescript-eslint/scope-manager': 6.21.0
- '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.1)(typescript@5.9.3)
- '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.9.3)
- '@typescript-eslint/visitor-keys': 6.21.0
+ '@eslint-community/regexpp': 4.12.2
+ '@typescript-eslint/parser': 6.1.0(eslint@8.45.0)(typescript@5.1.6)
+ '@typescript-eslint/scope-manager': 6.1.0
+ '@typescript-eslint/type-utils': 6.1.0(eslint@8.45.0)(typescript@5.1.6)
+ '@typescript-eslint/utils': 6.1.0(eslint@8.45.0)(typescript@5.1.6)
+ '@typescript-eslint/visitor-keys': 6.1.0
debug: 4.4.3
- eslint: 8.57.1
+ eslint: 8.45.0
graphemer: 1.4.0
ignore: 5.3.2
natural-compare: 1.4.0
- semver: 7.7.3
- ts-api-utils: 1.4.3(typescript@5.9.3)
- optionalDependencies:
- typescript: 5.9.3
+ natural-compare-lite: 1.4.0
+ semver: 7.7.4
+ ts-api-utils: 1.4.3(typescript@5.1.6)
+ typescript: 5.1.6
transitivePeerDependencies:
- supports-color
+ dev: true
- '@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.9.3)':
+ /@typescript-eslint/parser@6.1.0(eslint@8.45.0)(typescript@5.1.6):
+ resolution: {integrity: sha512-hIzCPvX4vDs4qL07SYzyomamcs2/tQYXg5DtdAfj35AyJ5PIUqhsLf4YrEIFzZcND7R2E8tpQIZKayxg8/6Wbw==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+ peerDependencies:
+ eslint: ^7.0.0 || ^8.0.0
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
dependencies:
- '@typescript-eslint/scope-manager': 6.21.0
- '@typescript-eslint/types': 6.21.0
- '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.9.3)
- '@typescript-eslint/visitor-keys': 6.21.0
+ '@typescript-eslint/scope-manager': 6.1.0
+ '@typescript-eslint/types': 6.1.0
+ '@typescript-eslint/typescript-estree': 6.1.0(typescript@5.1.6)
+ '@typescript-eslint/visitor-keys': 6.1.0
debug: 4.4.3
- eslint: 8.57.1
- optionalDependencies:
- typescript: 5.9.3
+ eslint: 8.45.0
+ typescript: 5.1.6
transitivePeerDependencies:
- supports-color
+ dev: true
- '@typescript-eslint/scope-manager@6.21.0':
+ /@typescript-eslint/scope-manager@6.1.0:
+ resolution: {integrity: sha512-AxjgxDn27hgPpe2rQe19k0tXw84YCOsjDJ2r61cIebq1t+AIxbgiXKvD4999Wk49GVaAcdJ/d49FYel+Pp3jjw==}
+ engines: {node: ^16.0.0 || >=18.0.0}
dependencies:
- '@typescript-eslint/types': 6.21.0
- '@typescript-eslint/visitor-keys': 6.21.0
+ '@typescript-eslint/types': 6.1.0
+ '@typescript-eslint/visitor-keys': 6.1.0
+ dev: true
- '@typescript-eslint/type-utils@6.21.0(eslint@8.57.1)(typescript@5.9.3)':
+ /@typescript-eslint/type-utils@6.1.0(eslint@8.45.0)(typescript@5.1.6):
+ resolution: {integrity: sha512-kFXBx6QWS1ZZ5Ni89TyT1X9Ag6RXVIVhqDs0vZE/jUeWlBv/ixq2diua6G7ece6+fXw3TvNRxP77/5mOMusx2w==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+ peerDependencies:
+ eslint: ^7.0.0 || ^8.0.0
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
dependencies:
- '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.9.3)
- '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.9.3)
+ '@typescript-eslint/typescript-estree': 6.1.0(typescript@5.1.6)
+ '@typescript-eslint/utils': 6.1.0(eslint@8.45.0)(typescript@5.1.6)
debug: 4.4.3
- eslint: 8.57.1
- ts-api-utils: 1.4.3(typescript@5.9.3)
- optionalDependencies:
- typescript: 5.9.3
+ eslint: 8.45.0
+ ts-api-utils: 1.4.3(typescript@5.1.6)
+ typescript: 5.1.6
transitivePeerDependencies:
- supports-color
+ dev: true
- '@typescript-eslint/types@6.21.0': {}
+ /@typescript-eslint/types@6.1.0:
+ resolution: {integrity: sha512-+Gfd5NHCpDoHDOaU/yIF3WWRI2PcBRKKpP91ZcVbL0t5tQpqYWBs3z/GGhvU+EV1D0262g9XCnyqQh19prU0JQ==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+ dev: true
- '@typescript-eslint/typescript-estree@6.21.0(typescript@5.9.3)':
+ /@typescript-eslint/typescript-estree@6.1.0(typescript@5.1.6):
+ resolution: {integrity: sha512-nUKAPWOaP/tQjU1IQw9sOPCDavs/iU5iYLiY/6u7gxS7oKQoi4aUxXS1nrrVGTyBBaGesjkcwwHkbkiD5eBvcg==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+ peerDependencies:
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
dependencies:
- '@typescript-eslint/types': 6.21.0
- '@typescript-eslint/visitor-keys': 6.21.0
+ '@typescript-eslint/types': 6.1.0
+ '@typescript-eslint/visitor-keys': 6.1.0
debug: 4.4.3
globby: 11.1.0
is-glob: 4.0.3
- minimatch: 9.0.3
- semver: 7.7.3
- ts-api-utils: 1.4.3(typescript@5.9.3)
- optionalDependencies:
- typescript: 5.9.3
+ semver: 7.7.4
+ ts-api-utils: 1.4.3(typescript@5.1.6)
+ typescript: 5.1.6
transitivePeerDependencies:
- supports-color
+ dev: true
- '@typescript-eslint/utils@6.21.0(eslint@8.57.1)(typescript@5.9.3)':
+ /@typescript-eslint/utils@6.1.0(eslint@8.45.0)(typescript@5.1.6):
+ resolution: {integrity: sha512-wp652EogZlKmQoMS5hAvWqRKplXvkuOnNzZSE0PVvsKjpexd/XznRVHAtrfHFYmqaJz0DFkjlDsGYC9OXw+OhQ==}
+ engines: {node: ^16.0.0 || >=18.0.0}
+ peerDependencies:
+ eslint: ^7.0.0 || ^8.0.0
dependencies:
- '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.1)
+ '@eslint-community/eslint-utils': 4.9.1(eslint@8.45.0)
'@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
+ '@typescript-eslint/scope-manager': 6.1.0
+ '@typescript-eslint/types': 6.1.0
+ '@typescript-eslint/typescript-estree': 6.1.0(typescript@5.1.6)
+ eslint: 8.45.0
+ semver: 7.7.4
transitivePeerDependencies:
- supports-color
- typescript
+ dev: true
- '@typescript-eslint/visitor-keys@6.21.0':
+ /@typescript-eslint/visitor-keys@6.1.0:
+ resolution: {integrity: sha512-yQeh+EXhquh119Eis4k0kYhj9vmFzNpbhM3LftWQVwqVjipCkwHBQOZutcYW+JVkjtTG9k8nrZU1UoNedPDd1A==}
+ engines: {node: ^16.0.0 || >=18.0.0}
dependencies:
- '@typescript-eslint/types': 6.21.0
+ '@typescript-eslint/types': 6.1.0
eslint-visitor-keys: 3.4.3
+ dev: true
- '@ungap/structured-clone@1.3.0': {}
-
- acorn-jsx@5.3.2(acorn@8.15.0):
+ /acorn-jsx@5.3.2(acorn@8.16.0):
+ resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
+ peerDependencies:
+ acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
dependencies:
- acorn: 8.15.0
-
- acorn@8.15.0: {}
+ acorn: 8.16.0
+ dev: true
- add@2.0.6: {}
+ /acorn@8.16.0:
+ resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
+ dev: true
- ajv@6.12.6:
+ /ajv@6.14.0:
+ resolution: {integrity: sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==}
dependencies:
fast-deep-equal: 3.1.3
fast-json-stable-stringify: 2.1.0
json-schema-traverse: 0.4.1
uri-js: 4.4.1
+ dev: true
- ansi-regex@5.0.1: {}
-
- ansi-regex@6.2.2: {}
+ /ansi-regex@5.0.1:
+ resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
+ engines: {node: '>=8'}
+ dev: true
- ansi-styles@4.3.0:
+ /ansi-styles@4.3.0:
+ resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
+ engines: {node: '>=8'}
dependencies:
color-convert: 2.0.1
+ dev: true
- ansi-styles@6.2.3: {}
-
- any-promise@1.3.0: {}
+ /any-promise@1.3.0:
+ resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
+ dev: true
- anymatch@3.1.3:
+ /anymatch@3.1.3:
+ resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
+ engines: {node: '>= 8'}
dependencies:
normalize-path: 3.0.0
picomatch: 2.3.1
+ dev: true
- argparse@2.0.1: {}
+ /argparse@2.0.1:
+ resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
+ dev: true
- array-union@2.1.0: {}
+ /array-union@2.1.0:
+ resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
+ engines: {node: '>=8'}
+ dev: true
- babel-plugin-jsx-dom-expressions@0.40.1(@babel/core@7.28.4):
+ /babel-plugin-jsx-dom-expressions@0.40.5(@babel/core@7.29.0):
+ resolution: {integrity: sha512-8TFKemVLDYezqqv4mWz+PhRrkryTzivTGu0twyLrOkVZ0P63COx2Y04eVsUjFlwSOXui1z3P3Pn209dokWnirg==}
+ peerDependencies:
+ '@babel/core': ^7.20.12
dependencies:
- '@babel/core': 7.28.4
+ '@babel/core': 7.29.0
'@babel/helper-module-imports': 7.18.6
- '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.4)
- '@babel/types': 7.28.4
+ '@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
- validate-html-nesting: 1.2.3
+ dev: true
- babel-preset-solid@1.9.9(@babel/core@7.28.4)(solid-js@1.9.9):
+ /babel-preset-solid@1.9.10(@babel/core@7.29.0)(solid-js@1.7.8):
+ resolution: {integrity: sha512-HCelrgua/Y+kqO8RyL04JBWS/cVdrtUv/h45GntgQY+cJl4eBcKkCDV3TdMjtKx1nXwRaR9QXslM/Npm1dxdZQ==}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ solid-js: ^1.9.10
+ peerDependenciesMeta:
+ solid-js:
+ optional: true
dependencies:
- '@babel/core': 7.28.4
- babel-plugin-jsx-dom-expressions: 0.40.1(@babel/core@7.28.4)
- optionalDependencies:
- solid-js: 1.9.9
+ '@babel/core': 7.29.0
+ babel-plugin-jsx-dom-expressions: 0.40.5(@babel/core@7.29.0)
+ solid-js: 1.7.8
+ dev: true
- balanced-match@1.0.2: {}
+ /balanced-match@1.0.2:
+ resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+ dev: true
- baseline-browser-mapping@2.8.19: {}
+ /baseline-browser-mapping@2.10.7:
+ resolution: {integrity: sha512-1ghYO3HnxGec0TCGBXiDLVns4eCSx4zJpxnHrlqFQajmhfKMQBzUGDdkMK7fUW7PTHTeLf+j87aTuKuuwWzMGw==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+ dev: true
- binary-extensions@2.3.0: {}
+ /binary-extensions@2.3.0:
+ resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
+ engines: {node: '>=8'}
+ dev: true
- brace-expansion@1.1.12:
+ /brace-expansion@1.1.12:
+ resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==}
dependencies:
balanced-match: 1.0.2
concat-map: 0.0.1
+ dev: true
- brace-expansion@2.0.2:
- dependencies:
- balanced-match: 1.0.2
-
- braces@3.0.3:
+ /braces@3.0.3:
+ resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
+ engines: {node: '>=8'}
dependencies:
fill-range: 7.1.1
+ dev: true
- browserslist@4.26.3:
+ /browserslist@4.28.1:
+ resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==}
+ engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
+ hasBin: true
dependencies:
- baseline-browser-mapping: 2.8.19
- caniuse-lite: 1.0.30001751
- electron-to-chromium: 1.5.238
- node-releases: 2.0.26
- update-browserslist-db: 1.1.3(browserslist@4.26.3)
+ baseline-browser-mapping: 2.10.7
+ caniuse-lite: 1.0.30001778
+ electron-to-chromium: 1.5.313
+ node-releases: 2.0.36
+ update-browserslist-db: 1.2.3(browserslist@4.28.1)
+ dev: true
- bundle-require@4.2.1(esbuild@0.19.12):
+ /bundle-require@4.2.1(esbuild@0.18.15):
+ resolution: {integrity: sha512-7Q/6vkyYAwOmQNRw75x+4yRtZCZJXUDmHHlFdkiV0wgv/reNjtJwpu1jPJ0w2kbEpIM0uoKI3S4/f39dU7AjSA==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ peerDependencies:
+ esbuild: '>=0.17'
dependencies:
- esbuild: 0.19.12
+ esbuild: 0.18.15
load-tsconfig: 0.2.5
+ dev: true
- cac@6.7.14: {}
+ /cac@6.7.14:
+ resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
+ engines: {node: '>=8'}
+ dev: true
- callsites@3.1.0: {}
+ /callsites@3.1.0:
+ resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
+ engines: {node: '>=6'}
+ dev: true
- caniuse-lite@1.0.30001751: {}
+ /caniuse-lite@1.0.30001778:
+ resolution: {integrity: sha512-PN7uxFL+ExFJO61aVmP1aIEG4i9whQd4eoSCebav62UwDyp5OHh06zN4jqKSMePVgxHifCw1QJxdRkA1Pisekg==}
+ dev: true
- chalk@4.1.2:
+ /chalk@4.1.2:
+ resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
+ engines: {node: '>=10'}
dependencies:
ansi-styles: 4.3.0
supports-color: 7.2.0
+ dev: true
- chokidar@3.6.0:
+ /chokidar@3.6.0:
+ resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
+ engines: {node: '>= 8.10.0'}
dependencies:
anymatch: 3.1.3
braces: 3.0.3
@@ -2528,164 +1106,217 @@ snapshots:
readdirp: 3.6.0
optionalDependencies:
fsevents: 2.3.3
+ dev: true
- cliui@8.0.1:
+ /cliui@8.0.1:
+ resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
+ engines: {node: '>=12'}
dependencies:
string-width: 4.2.3
strip-ansi: 6.0.1
wrap-ansi: 7.0.0
+ dev: true
- color-convert@2.0.1:
+ /color-convert@2.0.1:
+ resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
+ engines: {node: '>=7.0.0'}
dependencies:
color-name: 1.1.4
+ dev: true
- color-name@1.1.4: {}
+ /color-name@1.1.4:
+ resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
+ dev: true
- commander@4.1.1: {}
+ /commander@4.1.1:
+ resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
+ engines: {node: '>= 6'}
+ dev: true
- concat-map@0.0.1: {}
+ /concat-map@0.0.1:
+ resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
+ dev: true
- concurrently@8.2.2:
+ /concurrently@8.2.0:
+ resolution: {integrity: sha512-nnLMxO2LU492mTUj9qX/az/lESonSZu81UznYDoXtz1IQf996ixVqPAgHXwvHiHCAef/7S8HIK+fTFK7Ifk8YA==}
+ engines: {node: ^14.13.0 || >=16.0.0}
+ hasBin: true
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
supports-color: 8.1.1
tree-kill: 1.2.2
yargs: 17.7.2
+ dev: true
- convert-source-map@2.0.0: {}
+ /convert-source-map@2.0.0:
+ resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
+ dev: true
- cross-spawn@7.0.6:
+ /cross-spawn@7.0.6:
+ resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
+ engines: {node: '>= 8'}
dependencies:
path-key: 3.1.1
shebang-command: 2.0.0
which: 2.0.2
+ dev: true
- csstype@3.1.3: {}
+ /csstype@3.2.3:
+ resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==}
- date-fns@2.30.0:
+ /date-fns@2.30.0:
+ resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==}
+ engines: {node: '>=0.11'}
dependencies:
- '@babel/runtime': 7.28.4
+ '@babel/runtime': 7.28.6
+ dev: true
- debug@4.4.3:
+ /debug@4.4.3:
+ resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
dependencies:
ms: 2.1.3
+ dev: true
- deep-is@0.1.4: {}
+ /deep-is@0.1.4:
+ resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
+ dev: true
- dir-glob@3.0.1:
+ /dir-glob@3.0.1:
+ resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
+ engines: {node: '>=8'}
dependencies:
path-type: 4.0.0
+ dev: true
- doctrine@3.0.0:
+ /doctrine@3.0.0:
+ resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
+ engines: {node: '>=6.0.0'}
dependencies:
esutils: 2.0.3
+ dev: true
- eastasianwidth@0.2.0: {}
-
- electron-to-chromium@1.5.238: {}
-
- emoji-regex@8.0.0: {}
+ /electron-to-chromium@1.5.313:
+ resolution: {integrity: sha512-QBMrTWEf00GXZmJyx2lbYD45jpI3TUFnNIzJ5BBc8piGUDwMPa1GV6HJWTZVvY/eiN3fSopl7NRbgGp9sZ9LTA==}
+ dev: true
- emoji-regex@9.2.2: {}
+ /emoji-regex@8.0.0:
+ resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
+ dev: true
- entities@6.0.1: {}
+ /entities@6.0.1:
+ resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==}
+ engines: {node: '>=0.12'}
+ dev: true
- esbuild-plugin-solid@0.5.0(esbuild@0.18.20)(solid-js@1.9.9):
+ /esbuild-plugin-solid@0.5.0(esbuild@0.18.15)(solid-js@1.7.8):
+ resolution: {integrity: sha512-ITK6n+0ayGFeDVUZWNMxX+vLsasEN1ILrg4pISsNOQ+mq4ljlJJiuXotInd+HE0MzwTcA9wExT1yzDE2hsqPsg==}
+ peerDependencies:
+ esbuild: '>=0.12'
+ solid-js: '>= 1.0'
dependencies:
- '@babel/core': 7.28.4
- '@babel/preset-typescript': 7.27.1(@babel/core@7.28.4)
- babel-preset-solid: 1.9.9(@babel/core@7.28.4)(solid-js@1.9.9)
- esbuild: 0.18.20
- solid-js: 1.9.9
+ '@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.7.8)
+ esbuild: 0.18.15
+ solid-js: 1.7.8
transitivePeerDependencies:
- supports-color
+ dev: true
- esbuild@0.18.20:
- optionalDependencies:
- '@esbuild/android-arm': 0.18.20
- '@esbuild/android-arm64': 0.18.20
- '@esbuild/android-x64': 0.18.20
- '@esbuild/darwin-arm64': 0.18.20
- '@esbuild/darwin-x64': 0.18.20
- '@esbuild/freebsd-arm64': 0.18.20
- '@esbuild/freebsd-x64': 0.18.20
- '@esbuild/linux-arm': 0.18.20
- '@esbuild/linux-arm64': 0.18.20
- '@esbuild/linux-ia32': 0.18.20
- '@esbuild/linux-loong64': 0.18.20
- '@esbuild/linux-mips64el': 0.18.20
- '@esbuild/linux-ppc64': 0.18.20
- '@esbuild/linux-riscv64': 0.18.20
- '@esbuild/linux-s390x': 0.18.20
- '@esbuild/linux-x64': 0.18.20
- '@esbuild/netbsd-x64': 0.18.20
- '@esbuild/openbsd-x64': 0.18.20
- '@esbuild/sunos-x64': 0.18.20
- '@esbuild/win32-arm64': 0.18.20
- '@esbuild/win32-ia32': 0.18.20
- '@esbuild/win32-x64': 0.18.20
-
- esbuild@0.19.12:
+ /esbuild@0.18.15:
+ resolution: {integrity: sha512-3WOOLhrvuTGPRzQPU6waSDWrDTnQriia72McWcn6UCi43GhCHrXH4S59hKMeez+IITmdUuUyvbU9JIp+t3xlPQ==}
+ engines: {node: '>=12'}
+ hasBin: true
+ requiresBuild: true
optionalDependencies:
- '@esbuild/aix-ppc64': 0.19.12
- '@esbuild/android-arm': 0.19.12
- '@esbuild/android-arm64': 0.19.12
- '@esbuild/android-x64': 0.19.12
- '@esbuild/darwin-arm64': 0.19.12
- '@esbuild/darwin-x64': 0.19.12
- '@esbuild/freebsd-arm64': 0.19.12
- '@esbuild/freebsd-x64': 0.19.12
- '@esbuild/linux-arm': 0.19.12
- '@esbuild/linux-arm64': 0.19.12
- '@esbuild/linux-ia32': 0.19.12
- '@esbuild/linux-loong64': 0.19.12
- '@esbuild/linux-mips64el': 0.19.12
- '@esbuild/linux-ppc64': 0.19.12
- '@esbuild/linux-riscv64': 0.19.12
- '@esbuild/linux-s390x': 0.19.12
- '@esbuild/linux-x64': 0.19.12
- '@esbuild/netbsd-x64': 0.19.12
- '@esbuild/openbsd-x64': 0.19.12
- '@esbuild/sunos-x64': 0.19.12
- '@esbuild/win32-arm64': 0.19.12
- '@esbuild/win32-ia32': 0.19.12
- '@esbuild/win32-x64': 0.19.12
-
- escalade@3.2.0: {}
-
- escape-string-regexp@1.0.5: {}
-
- escape-string-regexp@4.0.0: {}
-
- eslint-plugin-eslint-comments@3.2.0(eslint@8.57.1):
+ '@esbuild/android-arm': 0.18.15
+ '@esbuild/android-arm64': 0.18.15
+ '@esbuild/android-x64': 0.18.15
+ '@esbuild/darwin-arm64': 0.18.15
+ '@esbuild/darwin-x64': 0.18.15
+ '@esbuild/freebsd-arm64': 0.18.15
+ '@esbuild/freebsd-x64': 0.18.15
+ '@esbuild/linux-arm': 0.18.15
+ '@esbuild/linux-arm64': 0.18.15
+ '@esbuild/linux-ia32': 0.18.15
+ '@esbuild/linux-loong64': 0.18.15
+ '@esbuild/linux-mips64el': 0.18.15
+ '@esbuild/linux-ppc64': 0.18.15
+ '@esbuild/linux-riscv64': 0.18.15
+ '@esbuild/linux-s390x': 0.18.15
+ '@esbuild/linux-x64': 0.18.15
+ '@esbuild/netbsd-x64': 0.18.15
+ '@esbuild/openbsd-x64': 0.18.15
+ '@esbuild/sunos-x64': 0.18.15
+ '@esbuild/win32-arm64': 0.18.15
+ '@esbuild/win32-ia32': 0.18.15
+ '@esbuild/win32-x64': 0.18.15
+ dev: true
+
+ /escalade@3.2.0:
+ resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /escape-string-regexp@1.0.5:
+ resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
+ engines: {node: '>=0.8.0'}
+ dev: true
+
+ /escape-string-regexp@4.0.0:
+ resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /eslint-plugin-eslint-comments@3.2.0(eslint@8.45.0):
+ resolution: {integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==}
+ engines: {node: '>=6.5.0'}
+ peerDependencies:
+ eslint: '>=4.19.1'
dependencies:
escape-string-regexp: 1.0.5
- eslint: 8.57.1
+ eslint: 8.45.0
ignore: 5.3.2
+ dev: true
- eslint-scope@7.2.2:
+ /eslint-scope@7.2.2:
+ resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
dependencies:
esrecurse: 4.3.0
estraverse: 5.3.0
+ dev: true
- eslint-visitor-keys@3.4.3: {}
+ /eslint-visitor-keys@3.4.3:
+ resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ dev: true
- eslint@8.57.1:
+ /eslint@8.45.0:
+ resolution: {integrity: sha512-pd8KSxiQpdYRfYa9Wufvdoct3ZPQQuVuU5O6scNgMuOMYuxvH0IGaYK0wUFjo4UYYQQCUndlXiMbnxopwvvTiw==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
+ deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options.
+ hasBin: true
dependencies:
- '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.1)
- '@eslint-community/regexpp': 4.12.1
+ '@eslint-community/eslint-utils': 4.9.1(eslint@8.45.0)
+ '@eslint-community/regexpp': 4.12.2
'@eslint/eslintrc': 2.1.4
- '@eslint/js': 8.57.1
- '@humanwhocodes/config-array': 0.13.0
+ '@eslint/js': 8.44.0
+ '@humanwhocodes/config-array': 0.11.14
'@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
@@ -2694,7 +1325,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
@@ -2706,39 +1337,60 @@ snapshots:
imurmurhash: 0.1.4
is-glob: 4.0.3
is-path-inside: 3.0.3
- js-yaml: 4.1.0
+ js-yaml: 4.1.1
json-stable-stringify-without-jsonify: 1.0.1
levn: 0.4.1
lodash.merge: 4.6.2
- minimatch: 3.1.2
+ minimatch: 3.1.5
natural-compare: 1.4.0
optionator: 0.9.4
strip-ansi: 6.0.1
text-table: 0.2.0
transitivePeerDependencies:
- supports-color
+ dev: true
- espree@9.6.1:
+ /espree@9.6.1:
+ resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==}
+ engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
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
+ dev: true
- esquery@1.6.0:
+ /esquery@1.7.0:
+ resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==}
+ engines: {node: '>=0.10'}
dependencies:
estraverse: 5.3.0
+ dev: true
- esrecurse@4.3.0:
+ /esrecurse@4.3.0:
+ resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
+ engines: {node: '>=4.0'}
dependencies:
estraverse: 5.3.0
+ dev: true
- estraverse@5.3.0: {}
+ /estraverse@5.3.0:
+ resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
+ engines: {node: '>=4.0'}
+ dev: true
- esutils@2.0.3: {}
+ /esutils@2.0.3:
+ resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
+ engines: {node: '>=0.10.0'}
+ dev: true
- events@3.3.0: {}
+ /events@3.3.0:
+ resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==}
+ engines: {node: '>=0.8.x'}
+ dev: false
- execa@5.1.1:
+ /execa@5.1.1:
+ resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==}
+ engines: {node: '>=10'}
dependencies:
cross-spawn: 7.0.6
get-stream: 6.0.1
@@ -2749,93 +1401,147 @@ snapshots:
onetime: 5.1.2
signal-exit: 3.0.7
strip-final-newline: 2.0.0
+ dev: true
- fast-deep-equal@3.1.3: {}
+ /fast-deep-equal@3.1.3:
+ resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
+ dev: true
- fast-glob@3.3.3:
+ /fast-glob@3.3.3:
+ resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==}
+ engines: {node: '>=8.6.0'}
dependencies:
'@nodelib/fs.stat': 2.0.5
'@nodelib/fs.walk': 1.2.8
glob-parent: 5.1.2
merge2: 1.4.1
micromatch: 4.0.8
+ dev: true
- fast-json-stable-stringify@2.1.0: {}
+ /fast-json-stable-stringify@2.1.0:
+ resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
+ dev: true
- fast-levenshtein@2.0.6: {}
+ /fast-levenshtein@2.0.6:
+ resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
+ dev: true
- fastq@1.19.1:
+ /fastq@1.20.1:
+ resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==}
dependencies:
reusify: 1.1.0
+ dev: true
+
+ /fdir@6.5.0(picomatch@4.0.3):
+ resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==}
+ engines: {node: '>=12.0.0'}
+ peerDependencies:
+ picomatch: ^3 || ^4
+ peerDependenciesMeta:
+ picomatch:
+ optional: true
+ dependencies:
+ picomatch: 4.0.3
+ dev: true
- file-entry-cache@6.0.1:
+ /file-entry-cache@6.0.1:
+ resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
+ engines: {node: ^10.12.0 || >=12.0.0}
dependencies:
flat-cache: 3.2.0
+ dev: true
- fill-range@7.1.1:
+ /fill-range@7.1.1:
+ resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
+ engines: {node: '>=8'}
dependencies:
to-regex-range: 5.0.1
+ dev: true
- find-up@5.0.0:
+ /find-up@5.0.0:
+ resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
+ engines: {node: '>=10'}
dependencies:
locate-path: 6.0.0
path-exists: 4.0.0
+ dev: true
- flat-cache@3.2.0:
+ /flat-cache@3.2.0:
+ resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==}
+ engines: {node: ^10.12.0 || >=12.0.0}
dependencies:
- flatted: 3.3.3
+ flatted: 3.4.1
keyv: 4.5.4
rimraf: 3.0.2
+ dev: true
- flatted@3.3.3: {}
-
- foreground-child@3.3.1:
- dependencies:
- cross-spawn: 7.0.6
- signal-exit: 4.1.0
+ /flatted@3.4.1:
+ resolution: {integrity: sha512-IxfVbRFVlV8V/yRaGzk0UVIcsKKHMSfYw66T/u4nTwlWteQePsxe//LjudR1AMX4tZW3WFCh3Zqa/sjlqpbURQ==}
+ dev: true
- fs.realpath@1.0.0: {}
+ /fs.realpath@1.0.0:
+ resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
+ dev: true
- fsevents@2.3.3:
+ /fsevents@2.3.3:
+ resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+ os: [darwin]
+ requiresBuild: true
+ dev: true
optional: true
- gensync@1.0.0-beta.2: {}
+ /gensync@1.0.0-beta.2:
+ resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
+ engines: {node: '>=6.9.0'}
+ dev: true
- get-caller-file@2.0.5: {}
+ /get-caller-file@2.0.5:
+ resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
+ engines: {node: 6.* || 8.* || >= 10.*}
+ dev: true
- get-stream@6.0.1: {}
+ /get-stream@6.0.1:
+ resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==}
+ engines: {node: '>=10'}
+ dev: true
- glob-parent@5.1.2:
+ /glob-parent@5.1.2:
+ resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
+ engines: {node: '>= 6'}
dependencies:
is-glob: 4.0.3
+ dev: true
- glob-parent@6.0.2:
+ /glob-parent@6.0.2:
+ resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
+ engines: {node: '>=10.13.0'}
dependencies:
is-glob: 4.0.3
+ dev: true
- glob@10.4.5:
- dependencies:
- foreground-child: 3.3.1
- jackspeak: 3.4.3
- minimatch: 9.0.5
- minipass: 7.1.2
- package-json-from-dist: 1.0.1
- path-scurry: 1.11.1
-
- glob@7.2.3:
+ /glob@7.2.3:
+ resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
+ 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
dependencies:
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
+ dev: true
- globals@13.24.0:
+ /globals@13.24.0:
+ resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==}
+ engines: {node: '>=8'}
dependencies:
type-fest: 0.20.2
+ dev: true
- globby@11.1.0:
+ /globby@11.1.0:
+ resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
+ engines: {node: '>=10'}
dependencies:
array-union: 2.1.0
dir-glob: 3.0.1
@@ -2843,188 +1549,327 @@ snapshots:
ignore: 5.3.2
merge2: 1.4.1
slash: 3.0.0
+ dev: true
- graphemer@1.4.0: {}
+ /graphemer@1.4.0:
+ resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
+ dev: true
- has-flag@4.0.0: {}
+ /has-flag@4.0.0:
+ resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
+ engines: {node: '>=8'}
+ dev: true
- html-entities@2.3.3: {}
+ /html-entities@2.3.3:
+ resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==}
+ dev: true
- human-signals@2.1.0: {}
+ /human-signals@2.1.0:
+ resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==}
+ engines: {node: '>=10.17.0'}
+ dev: true
- ignore@5.3.2: {}
+ /ignore@5.3.2:
+ resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
+ engines: {node: '>= 4'}
+ dev: true
- import-fresh@3.3.1:
+ /import-fresh@3.3.1:
+ resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==}
+ engines: {node: '>=6'}
dependencies:
parent-module: 1.0.1
resolve-from: 4.0.0
+ dev: true
- imurmurhash@0.1.4: {}
+ /imurmurhash@0.1.4:
+ resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
+ engines: {node: '>=0.8.19'}
+ dev: true
- inflight@1.0.6:
+ /inflight@1.0.6:
+ resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
+ deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
dependencies:
once: 1.4.0
wrappy: 1.0.2
+ dev: true
- inherits@2.0.4: {}
+ /inherits@2.0.4:
+ resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
+ dev: true
- is-binary-path@2.1.0:
+ /is-binary-path@2.1.0:
+ resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
+ engines: {node: '>=8'}
dependencies:
binary-extensions: 2.3.0
+ dev: true
- is-extglob@2.1.1: {}
+ /is-extglob@2.1.1:
+ resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
+ engines: {node: '>=0.10.0'}
+ dev: true
- is-fullwidth-code-point@3.0.0: {}
+ /is-fullwidth-code-point@3.0.0:
+ resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
+ engines: {node: '>=8'}
+ dev: true
- is-glob@4.0.3:
+ /is-glob@4.0.3:
+ resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
+ engines: {node: '>=0.10.0'}
dependencies:
is-extglob: 2.1.1
+ dev: true
- is-number@7.0.0: {}
-
- is-path-inside@3.0.3: {}
+ /is-number@7.0.0:
+ resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
+ engines: {node: '>=0.12.0'}
+ dev: true
- is-stream@2.0.1: {}
+ /is-path-inside@3.0.3:
+ resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
+ engines: {node: '>=8'}
+ dev: true
- is-what@4.1.16: {}
+ /is-stream@2.0.1:
+ resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
+ engines: {node: '>=8'}
+ dev: true
- isexe@2.0.0: {}
+ /is-what@4.1.16:
+ resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==}
+ engines: {node: '>=12.13'}
+ dev: true
- jackspeak@3.4.3:
- dependencies:
- '@isaacs/cliui': 8.0.2
- optionalDependencies:
- '@pkgjs/parseargs': 0.11.0
+ /isexe@2.0.0:
+ resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
+ dev: true
- jose@6.1.0: {}
+ /jose@6.2.1:
+ resolution: {integrity: sha512-jUaKr1yrbfaImV7R2TN/b3IcZzsw38/chqMpo2XJ7i2F8AfM/lA4G1goC3JVEwg0H7UldTmSt3P68nt31W7/mw==}
+ dev: false
- joycon@3.1.1: {}
+ /joycon@3.1.1:
+ resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==}
+ engines: {node: '>=10'}
+ dev: true
- js-tokens@4.0.0: {}
+ /js-tokens@4.0.0:
+ resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
+ dev: true
- js-yaml@4.1.0:
+ /js-yaml@4.1.1:
+ resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==}
+ hasBin: true
dependencies:
argparse: 2.0.1
+ dev: true
- jsesc@3.1.0: {}
+ /jsesc@3.1.0:
+ resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==}
+ engines: {node: '>=6'}
+ hasBin: true
+ dev: true
- json-buffer@3.0.1: {}
+ /json-buffer@3.0.1:
+ resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
+ dev: true
- json-schema-traverse@0.4.1: {}
+ /json-schema-traverse@0.4.1:
+ resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
+ dev: true
- json-stable-stringify-without-jsonify@1.0.1: {}
+ /json-stable-stringify-without-jsonify@1.0.1:
+ resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
+ dev: true
- json5@2.2.3: {}
+ /json5@2.2.3:
+ resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
+ engines: {node: '>=6'}
+ hasBin: true
+ dev: true
- keyv@4.5.4:
+ /keyv@4.5.4:
+ resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
dependencies:
json-buffer: 3.0.1
+ dev: true
- levn@0.4.1:
+ /levn@0.4.1:
+ resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
+ engines: {node: '>= 0.8.0'}
dependencies:
prelude-ls: 1.2.1
type-check: 0.4.0
+ dev: true
- lilconfig@3.1.3: {}
+ /lilconfig@3.1.3:
+ resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==}
+ engines: {node: '>=14'}
+ dev: true
- lines-and-columns@1.2.4: {}
+ /lines-and-columns@1.2.4:
+ resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
+ dev: true
- livekit-client@2.15.13(@types/dom-mediacapture-record@1.0.22):
+ /livekit-client@2.15.13(@types/dom-mediacapture-record@1.0.22):
+ resolution: {integrity: sha512-LovpU5vEaCnkmhL7iSXb/sYitzOibUShnmriONcRjjq2WNO+qV+EoPM82jE7kQ/BH58dW1+AtY4m/adndC5BWg==}
+ peerDependencies:
+ '@types/dom-mediacapture-record': ^1
dependencies:
'@livekit/mutex': 1.1.1
'@livekit/protocol': 1.42.2
'@types/dom-mediacapture-record': 1.0.22
events: 3.3.0
- jose: 6.1.0
+ jose: 6.2.1
loglevel: 1.9.2
sdp-transform: 2.15.0
ts-debounce: 4.0.0
tslib: 2.8.1
typed-emitter: 2.1.0
- webrtc-adapter: 9.0.3
+ webrtc-adapter: 9.0.4
+ dev: false
- load-tsconfig@0.2.5: {}
+ /load-tsconfig@0.2.5:
+ resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ dev: true
- locate-path@6.0.0:
+ /locate-path@6.0.0:
+ resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
+ engines: {node: '>=10'}
dependencies:
p-locate: 5.0.0
+ dev: true
- lodash.merge@4.6.2: {}
-
- lodash.sortby@4.7.0: {}
+ /lodash.merge@4.6.2:
+ resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
+ dev: true
- lodash@4.17.21: {}
+ /lodash.sortby@4.7.0:
+ resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==}
+ dev: true
- loglevel@1.9.1: {}
+ /lodash@4.17.23:
+ resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==}
+ dev: true
- loglevel@1.9.2: {}
+ /loglevel@1.9.1:
+ resolution: {integrity: sha512-hP3I3kCrDIMuRwAwHltphhDM1r8i55H33GgqjXbrisuJhF4kRhW1dNuxsRklp4bXl8DSdLaNLuiL4A/LWRfxvg==}
+ engines: {node: '>= 0.6.0'}
+ dev: false
- lru-cache@10.4.3: {}
+ /loglevel@1.9.2:
+ resolution: {integrity: sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==}
+ engines: {node: '>= 0.6.0'}
+ dev: false
- lru-cache@5.1.1:
+ /lru-cache@5.1.1:
+ resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
dependencies:
yallist: 3.1.1
+ dev: true
- merge-anything@5.1.7:
+ /merge-anything@5.1.7:
+ resolution: {integrity: sha512-eRtbOb1N5iyH0tkQDAoQ4Ipsp/5qSR79Dzrz8hEPxRX10RWWR/iQXdoKmBSRCThY1Fh5EhISDtpSc93fpxUniQ==}
+ engines: {node: '>=12.13'}
dependencies:
is-what: 4.1.16
+ dev: true
- merge-stream@2.0.0: {}
+ /merge-stream@2.0.0:
+ resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
+ dev: true
- merge2@1.4.1: {}
+ /merge2@1.4.1:
+ resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
+ engines: {node: '>= 8'}
+ dev: true
- micromatch@4.0.8:
+ /micromatch@4.0.8:
+ resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
+ engines: {node: '>=8.6'}
dependencies:
braces: 3.0.3
picomatch: 2.3.1
+ dev: true
- mimic-fn@2.1.0: {}
+ /mimic-fn@2.1.0:
+ resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
+ engines: {node: '>=6'}
+ dev: true
- minimatch@3.1.2:
+ /minimatch@3.1.5:
+ resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==}
dependencies:
brace-expansion: 1.1.12
+ dev: true
- minimatch@9.0.3:
- dependencies:
- brace-expansion: 2.0.2
-
- minimatch@9.0.5:
- dependencies:
- brace-expansion: 2.0.2
-
- minipass@7.1.2: {}
-
- ms@2.1.3: {}
+ /ms@2.1.3:
+ resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
+ dev: true
- mz@2.7.0:
+ /mz@2.7.0:
+ resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
dependencies:
any-promise: 1.3.0
object-assign: 4.1.1
thenify-all: 1.6.0
+ dev: true
+
+ /nanoid@3.3.11:
+ resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ hasBin: true
+ dev: true
- nanoid@3.3.11: {}
+ /natural-compare-lite@1.4.0:
+ resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==}
+ dev: true
- natural-compare@1.4.0: {}
+ /natural-compare@1.4.0:
+ resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
+ dev: true
- node-releases@2.0.26: {}
+ /node-releases@2.0.36:
+ resolution: {integrity: sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==}
+ dev: true
- normalize-path@3.0.0: {}
+ /normalize-path@3.0.0:
+ resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
+ engines: {node: '>=0.10.0'}
+ dev: true
- npm-run-path@4.0.1:
+ /npm-run-path@4.0.1:
+ resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
+ engines: {node: '>=8'}
dependencies:
path-key: 3.1.1
+ dev: true
- object-assign@4.1.1: {}
+ /object-assign@4.1.1:
+ resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
+ engines: {node: '>=0.10.0'}
+ dev: true
- once@1.4.0:
+ /once@1.4.0:
+ resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
dependencies:
wrappy: 1.0.2
+ dev: true
- onetime@5.1.2:
+ /onetime@5.1.2:
+ resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
+ engines: {node: '>=6'}
dependencies:
mimic-fn: 2.1.0
+ dev: true
- optionator@0.9.4:
+ /optionator@0.9.4:
+ resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
+ engines: {node: '>= 0.8.0'}
dependencies:
deep-is: 0.1.4
fast-levenshtein: 2.0.6
@@ -3032,369 +1877,604 @@ snapshots:
prelude-ls: 1.2.1
type-check: 0.4.0
word-wrap: 1.2.5
+ dev: true
- p-limit@3.1.0:
+ /p-limit@3.1.0:
+ resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
+ engines: {node: '>=10'}
dependencies:
yocto-queue: 0.1.0
+ dev: true
- p-locate@5.0.0:
+ /p-locate@5.0.0:
+ resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
+ engines: {node: '>=10'}
dependencies:
p-limit: 3.1.0
+ dev: true
- package-json-from-dist@1.0.1: {}
-
- parent-module@1.0.1:
+ /parent-module@1.0.1:
+ resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
+ engines: {node: '>=6'}
dependencies:
callsites: 3.1.0
+ dev: true
- parse5@7.3.0:
+ /parse5@7.3.0:
+ resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==}
dependencies:
entities: 6.0.1
+ dev: true
- path-exists@4.0.0: {}
+ /path-exists@4.0.0:
+ resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
+ engines: {node: '>=8'}
+ dev: true
- path-is-absolute@1.0.1: {}
+ /path-is-absolute@1.0.1:
+ resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
+ engines: {node: '>=0.10.0'}
+ dev: true
- path-key@3.1.1: {}
+ /path-key@3.1.1:
+ resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
+ engines: {node: '>=8'}
+ dev: true
- path-scurry@1.11.1:
- dependencies:
- lru-cache: 10.4.3
- minipass: 7.1.2
+ /path-type@4.0.0:
+ resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
+ engines: {node: '>=8'}
+ dev: true
- path-type@4.0.0: {}
+ /picocolors@1.1.1:
+ resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
+ dev: true
- picocolors@1.1.1: {}
+ /picomatch@2.3.1:
+ resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
+ engines: {node: '>=8.6'}
+ dev: true
- picomatch@2.3.1: {}
+ /picomatch@4.0.3:
+ resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==}
+ engines: {node: '>=12'}
+ dev: true
- pirates@4.0.7: {}
+ /pirates@4.0.7:
+ resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==}
+ engines: {node: '>= 6'}
+ dev: true
- postcss-load-config@4.0.2(postcss@8.5.6):
+ /postcss-load-config@4.0.2:
+ resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==}
+ engines: {node: '>= 14'}
+ peerDependencies:
+ postcss: '>=8.0.9'
+ ts-node: '>=9.0.0'
+ peerDependenciesMeta:
+ postcss:
+ optional: true
+ ts-node:
+ optional: true
dependencies:
lilconfig: 3.1.3
- yaml: 2.8.1
- optionalDependencies:
- postcss: 8.5.6
+ yaml: 2.8.2
+ dev: true
- postcss@8.5.6:
+ /postcss@8.5.8:
+ resolution: {integrity: sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==}
+ engines: {node: ^10 || ^12 || >=14}
dependencies:
nanoid: 3.3.11
picocolors: 1.1.1
source-map-js: 1.2.1
+ dev: true
- prelude-ls@1.2.1: {}
+ /prelude-ls@1.2.1:
+ resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
+ engines: {node: '>= 0.8.0'}
+ dev: true
- prettier@3.0.0: {}
+ /prettier@3.0.0:
+ resolution: {integrity: sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g==}
+ engines: {node: '>=14'}
+ hasBin: true
+ dev: true
- punycode@2.3.1: {}
+ /punycode@2.3.1:
+ resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
+ engines: {node: '>=6'}
+ dev: true
- queue-microtask@1.2.3: {}
+ /queue-microtask@1.2.3:
+ resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
+ dev: true
- readdirp@3.6.0:
+ /readdirp@3.6.0:
+ resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
+ engines: {node: '>=8.10.0'}
dependencies:
picomatch: 2.3.1
+ dev: true
- require-directory@2.1.1: {}
+ /require-directory@2.1.1:
+ resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
+ engines: {node: '>=0.10.0'}
+ dev: true
- resolve-from@4.0.0: {}
+ /resolve-from@4.0.0:
+ resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
+ engines: {node: '>=4'}
+ dev: true
- resolve-from@5.0.0: {}
+ /resolve-from@5.0.0:
+ resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
+ engines: {node: '>=8'}
+ dev: true
- reusify@1.1.0: {}
+ /reusify@1.1.0:
+ resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==}
+ engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
+ dev: true
- rimraf@3.0.2:
+ /rimraf@3.0.2:
+ resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
+ deprecated: Rimraf versions prior to v4 are no longer supported
+ hasBin: true
dependencies:
glob: 7.2.3
+ dev: true
- rollup@3.29.5:
- optionalDependencies:
- fsevents: 2.3.3
-
- rollup@4.52.5:
- dependencies:
- '@types/estree': 1.0.8
+ /rollup@3.30.0:
+ resolution: {integrity: sha512-kQvGasUgN+AlWGliFn2POSajRQEsULVYFGTvOZmK06d7vCD+YhZztt70kGk3qaeAXeWYL5eO7zx+rAubBc55eA==}
+ engines: {node: '>=14.18.0', npm: '>=8.0.0'}
+ hasBin: true
optionalDependencies:
- '@rollup/rollup-android-arm-eabi': 4.52.5
- '@rollup/rollup-android-arm64': 4.52.5
- '@rollup/rollup-darwin-arm64': 4.52.5
- '@rollup/rollup-darwin-x64': 4.52.5
- '@rollup/rollup-freebsd-arm64': 4.52.5
- '@rollup/rollup-freebsd-x64': 4.52.5
- '@rollup/rollup-linux-arm-gnueabihf': 4.52.5
- '@rollup/rollup-linux-arm-musleabihf': 4.52.5
- '@rollup/rollup-linux-arm64-gnu': 4.52.5
- '@rollup/rollup-linux-arm64-musl': 4.52.5
- '@rollup/rollup-linux-loong64-gnu': 4.52.5
- '@rollup/rollup-linux-ppc64-gnu': 4.52.5
- '@rollup/rollup-linux-riscv64-gnu': 4.52.5
- '@rollup/rollup-linux-riscv64-musl': 4.52.5
- '@rollup/rollup-linux-s390x-gnu': 4.52.5
- '@rollup/rollup-linux-x64-gnu': 4.52.5
- '@rollup/rollup-linux-x64-musl': 4.52.5
- '@rollup/rollup-openharmony-arm64': 4.52.5
- '@rollup/rollup-win32-arm64-msvc': 4.52.5
- '@rollup/rollup-win32-ia32-msvc': 4.52.5
- '@rollup/rollup-win32-x64-gnu': 4.52.5
- '@rollup/rollup-win32-x64-msvc': 4.52.5
fsevents: 2.3.3
+ dev: true
- run-parallel@1.2.0:
+ /run-parallel@1.2.0:
+ resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
dependencies:
queue-microtask: 1.2.3
+ dev: true
- rxjs@7.8.2:
+ /rxjs@7.8.2:
+ resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==}
dependencies:
tslib: 2.8.1
- sdp-transform@2.15.0: {}
-
- sdp@3.2.1: {}
+ /sdp-transform@2.15.0:
+ resolution: {integrity: sha512-KrOH82c/W+GYQ0LHqtr3caRpM3ITglq3ljGUIb8LTki7ByacJZ9z+piSGiwZDsRyhQbYBOBJgr2k6X4BZXi3Kw==}
+ hasBin: true
+ dev: false
- semver@6.3.1: {}
+ /sdp@3.2.1:
+ resolution: {integrity: sha512-lwsAIzOPlH8/7IIjjz3K0zYBk7aBVVcvjMwt3M4fLxpjMYyy7i3I97SLHebgn4YBjirkzfp3RvRDWSKsh/+WFw==}
+ dev: false
- semver@7.7.3: {}
+ /semver@6.3.1:
+ resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
+ hasBin: true
+ dev: true
- seroval-plugins@1.3.3(seroval@1.3.2):
- dependencies:
- seroval: 1.3.2
+ /semver@7.7.4:
+ resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==}
+ engines: {node: '>=10'}
+ hasBin: true
+ dev: true
- seroval@1.3.2: {}
+ /seroval@0.5.1:
+ resolution: {integrity: sha512-ZfhQVB59hmIauJG5Ydynupy8KHyr5imGNtdDhbZG68Ufh1Ynkv9KOYOAABf71oVbQxJ8VkWnMHAjEHE7fWkH5g==}
+ engines: {node: '>=10'}
- shebang-command@2.0.0:
+ /shebang-command@2.0.0:
+ resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
+ engines: {node: '>=8'}
dependencies:
shebang-regex: 3.0.0
+ dev: true
- shebang-regex@3.0.0: {}
-
- shell-quote@1.8.3: {}
+ /shebang-regex@3.0.0:
+ resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
+ engines: {node: '>=8'}
+ dev: true
- signal-exit@3.0.7: {}
+ /shell-quote@1.8.3:
+ resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==}
+ engines: {node: '>= 0.4'}
+ dev: true
- signal-exit@4.1.0: {}
+ /signal-exit@3.0.7:
+ resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
+ dev: true
- slash@3.0.0: {}
+ /slash@3.0.0:
+ resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
+ engines: {node: '>=8'}
+ dev: true
- solid-js@1.9.9:
+ /solid-js@1.7.8:
+ resolution: {integrity: sha512-XHBWk1FvFd0JMKljko7FfhefJMTSgYEuVKcQ2a8hzRXfiuSJAGsrPPafqEo+f6l+e8Oe3cROSpIL6kbzjC1fjQ==}
dependencies:
- csstype: 3.1.3
- seroval: 1.3.2
- seroval-plugins: 1.3.3(seroval@1.3.2)
+ csstype: 3.2.3
+ seroval: 0.5.1
- solid-refresh@0.6.3(solid-js@1.9.9):
+ /solid-refresh@0.5.3(solid-js@1.7.8):
+ resolution: {integrity: sha512-Otg5it5sjOdZbQZJnvo99TEBAr6J7PQ5AubZLNU6szZzg3RQQ5MX04oteBIIGDs0y2Qv8aXKm9e44V8z+UnFdw==}
+ peerDependencies:
+ solid-js: ^1.3
dependencies:
- '@babel/generator': 7.28.3
- '@babel/helper-module-imports': 7.27.1
- '@babel/types': 7.28.4
- solid-js: 1.9.9
+ '@babel/generator': 7.29.1
+ '@babel/helper-module-imports': 7.28.6
+ '@babel/types': 7.29.0
+ solid-js: 1.7.8
transitivePeerDependencies:
- supports-color
+ dev: true
- source-map-js@1.2.1: {}
+ /source-map-js@1.2.1:
+ resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
+ engines: {node: '>=0.10.0'}
+ dev: true
- source-map@0.8.0-beta.0:
+ /source-map@0.8.0-beta.0:
+ resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==}
+ engines: {node: '>= 8'}
+ deprecated: The work that was done in this beta branch won't be included in future versions
dependencies:
whatwg-url: 7.1.0
+ dev: true
- spawn-command@0.0.2: {}
+ /spawn-command@0.0.2:
+ resolution: {integrity: sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==}
+ dev: true
- string-width@4.2.3:
+ /string-width@4.2.3:
+ resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
+ engines: {node: '>=8'}
dependencies:
emoji-regex: 8.0.0
is-fullwidth-code-point: 3.0.0
strip-ansi: 6.0.1
+ dev: true
- string-width@5.1.2:
- dependencies:
- eastasianwidth: 0.2.0
- emoji-regex: 9.2.2
- strip-ansi: 7.1.2
-
- strip-ansi@6.0.1:
+ /strip-ansi@6.0.1:
+ resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
+ engines: {node: '>=8'}
dependencies:
ansi-regex: 5.0.1
+ dev: true
- strip-ansi@7.1.2:
- dependencies:
- ansi-regex: 6.2.2
-
- strip-final-newline@2.0.0: {}
+ /strip-final-newline@2.0.0:
+ resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
+ engines: {node: '>=6'}
+ dev: true
- strip-json-comments@3.1.1: {}
+ /strip-json-comments@3.1.1:
+ resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
+ engines: {node: '>=8'}
+ dev: true
- sucrase@3.35.0:
+ /sucrase@3.35.1:
+ resolution: {integrity: sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==}
+ engines: {node: '>=16 || 14 >=14.17'}
+ hasBin: true
dependencies:
'@jridgewell/gen-mapping': 0.3.13
commander: 4.1.1
- glob: 10.4.5
lines-and-columns: 1.2.4
mz: 2.7.0
pirates: 4.0.7
+ tinyglobby: 0.2.15
ts-interface-checker: 0.1.13
+ dev: true
- supports-color@7.2.0:
+ /supports-color@7.2.0:
+ resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
+ engines: {node: '>=8'}
dependencies:
has-flag: 4.0.0
+ dev: true
- supports-color@8.1.1:
+ /supports-color@8.1.1:
+ resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==}
+ engines: {node: '>=10'}
dependencies:
has-flag: 4.0.0
+ dev: true
- text-table@0.2.0: {}
+ /text-table@0.2.0:
+ resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
+ dev: true
- thenify-all@1.6.0:
+ /thenify-all@1.6.0:
+ resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
+ engines: {node: '>=0.8'}
dependencies:
thenify: 3.3.1
+ dev: true
- thenify@3.3.1:
+ /thenify@3.3.1:
+ resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
dependencies:
any-promise: 1.3.0
+ dev: true
- to-regex-range@5.0.1:
+ /tinyglobby@0.2.15:
+ resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==}
+ engines: {node: '>=12.0.0'}
+ dependencies:
+ fdir: 6.5.0(picomatch@4.0.3)
+ picomatch: 4.0.3
+ dev: true
+
+ /to-regex-range@5.0.1:
+ resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
+ engines: {node: '>=8.0'}
dependencies:
is-number: 7.0.0
+ dev: true
- tr46@1.0.1:
+ /tr46@1.0.1:
+ resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==}
dependencies:
punycode: 2.3.1
+ dev: true
- tree-kill@1.2.2: {}
+ /tree-kill@1.2.2:
+ resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==}
+ hasBin: true
+ dev: true
- ts-api-utils@1.4.3(typescript@5.9.3):
+ /ts-api-utils@1.4.3(typescript@5.1.6):
+ resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==}
+ engines: {node: '>=16'}
+ peerDependencies:
+ typescript: '>=4.2.0'
dependencies:
- typescript: 5.9.3
+ typescript: 5.1.6
+ dev: true
- ts-debounce@4.0.0: {}
+ /ts-debounce@4.0.0:
+ resolution: {integrity: sha512-+1iDGY6NmOGidq7i7xZGA4cm8DAa6fqdYcvO5Z6yBevH++Bdo9Qt/mN0TzHUgcCcKv1gmh9+W5dHqz8pMWbCbg==}
+ dev: false
- ts-interface-checker@0.1.13: {}
+ /ts-interface-checker@0.1.13:
+ resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
+ dev: true
- tslib@2.8.1: {}
+ /tslib@2.8.1:
+ resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
- tsup-preset-solid@2.2.0(esbuild@0.18.20)(solid-js@1.9.9)(tsup@7.3.0(postcss@8.5.6)(typescript@5.9.3)):
+ /tsup-preset-solid@2.0.1(esbuild@0.18.15)(solid-js@1.7.8)(tsup@7.1.0):
+ resolution: {integrity: sha512-gN0nD2h4909XvpMnSuqgeiKqv+Ao7Y0d1p4VuF0hnQvazBTXrFHX2ImULG4uCsvU73q2zzoDzk5Ei6iACQmk5w==}
+ peerDependencies:
+ tsup: ^7.0.0
dependencies:
- esbuild-plugin-solid: 0.5.0(esbuild@0.18.20)(solid-js@1.9.9)
- tsup: 7.3.0(postcss@8.5.6)(typescript@5.9.3)
+ esbuild-plugin-solid: 0.5.0(esbuild@0.18.15)(solid-js@1.7.8)
+ tsup: 7.1.0(typescript@5.1.6)
transitivePeerDependencies:
- esbuild
- solid-js
- supports-color
+ dev: true
- tsup@7.3.0(postcss@8.5.6)(typescript@5.9.3):
+ /tsup@7.1.0(typescript@5.1.6):
+ resolution: {integrity: sha512-mazl/GRAk70j8S43/AbSYXGgvRP54oQeX8Un4iZxzATHt0roW0t6HYDVZIXMw0ZQIpvr1nFMniIVnN5186lW7w==}
+ engines: {node: '>=16.14'}
+ hasBin: true
+ peerDependencies:
+ '@swc/core': ^1
+ postcss: ^8.4.12
+ typescript: '>=4.1.0'
+ peerDependenciesMeta:
+ '@swc/core':
+ optional: true
+ postcss:
+ optional: true
+ typescript:
+ optional: true
dependencies:
- bundle-require: 4.2.1(esbuild@0.19.12)
+ bundle-require: 4.2.1(esbuild@0.18.15)
cac: 6.7.14
chokidar: 3.6.0
debug: 4.4.3
- esbuild: 0.19.12
+ esbuild: 0.18.15
execa: 5.1.1
globby: 11.1.0
joycon: 3.1.1
- postcss-load-config: 4.0.2(postcss@8.5.6)
+ postcss-load-config: 4.0.2
resolve-from: 5.0.0
- rollup: 4.52.5
+ rollup: 3.30.0
source-map: 0.8.0-beta.0
- sucrase: 3.35.0
+ sucrase: 3.35.1
tree-kill: 1.2.2
- optionalDependencies:
- postcss: 8.5.6
- typescript: 5.9.3
+ typescript: 5.1.6
transitivePeerDependencies:
- supports-color
- ts-node
+ dev: true
- type-check@0.4.0:
+ /type-check@0.4.0:
+ resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
+ engines: {node: '>= 0.8.0'}
dependencies:
prelude-ls: 1.2.1
+ dev: true
- type-fest@0.20.2: {}
+ /type-fest@0.20.2:
+ resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
+ engines: {node: '>=10'}
+ dev: true
- typed-emitter@2.1.0:
+ /typed-emitter@2.1.0:
+ resolution: {integrity: sha512-g/KzbYKbH5C2vPkaXGu8DJlHrGKHLsM25Zg9WuC9pMGfuvT+X25tZQWo5fK1BjBm8+UrVE9LDCvaY0CQk+fXDA==}
optionalDependencies:
rxjs: 7.8.2
+ dev: false
- typescript@5.9.3: {}
+ /typescript@5.1.6:
+ resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==}
+ engines: {node: '>=14.17'}
+ hasBin: true
+ dev: true
- undici-types@6.21.0: {}
+ /undici-types@5.26.5:
+ resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
+ dev: true
- update-browserslist-db@1.1.3(browserslist@4.26.3):
+ /update-browserslist-db@1.2.3(browserslist@4.28.1):
+ resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==}
+ hasBin: true
+ peerDependencies:
+ browserslist: '>= 4.21.0'
dependencies:
- browserslist: 4.26.3
+ browserslist: 4.28.1
escalade: 3.2.0
picocolors: 1.1.1
+ dev: true
- uri-js@4.4.1:
+ /uri-js@4.4.1:
+ resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
dependencies:
punycode: 2.3.1
+ dev: true
- validate-html-nesting@1.2.3: {}
-
- vite-plugin-solid@2.11.10(solid-js@1.9.9)(vite@4.5.14(@types/node@20.19.23)):
+ /vite-plugin-solid@2.7.0(solid-js@1.7.8)(vite@4.4.6):
+ resolution: {integrity: sha512-avp/Jl5zOp/Itfo67xtDB2O61U7idviaIp4mLsjhCa13PjKNasz+IID0jYTyqUp9SFx6/PmBr6v4KgDppqompg==}
+ peerDependencies:
+ solid-js: ^1.7.2
+ vite: ^3.0.0 || ^4.0.0
dependencies:
- '@babel/core': 7.28.4
+ '@babel/core': 7.29.0
+ '@babel/preset-typescript': 7.28.5(@babel/core@7.29.0)
'@types/babel__core': 7.20.5
- babel-preset-solid: 1.9.9(@babel/core@7.28.4)(solid-js@1.9.9)
+ babel-preset-solid: 1.9.10(@babel/core@7.29.0)(solid-js@1.7.8)
merge-anything: 5.1.7
- solid-js: 1.9.9
- solid-refresh: 0.6.3(solid-js@1.9.9)
- vite: 4.5.14(@types/node@20.19.23)
- vitefu: 1.1.1(vite@4.5.14(@types/node@20.19.23))
+ solid-js: 1.7.8
+ solid-refresh: 0.5.3(solid-js@1.7.8)
+ vite: 4.4.6(@types/node@20.12.2)
+ vitefu: 0.2.5(vite@4.4.6)
transitivePeerDependencies:
- supports-color
+ dev: true
- vite@4.5.14(@types/node@20.19.23):
+ /vite@4.4.6(@types/node@20.12.2):
+ resolution: {integrity: sha512-EY6Mm8vJ++S3D4tNAckaZfw3JwG3wa794Vt70M6cNJ6NxT87yhq7EC8Rcap3ahyHdo8AhCmV9PTk+vG1HiYn1A==}
+ engines: {node: ^14.18.0 || >=16.0.0}
+ hasBin: true
+ peerDependencies:
+ '@types/node': '>= 14'
+ less: '*'
+ lightningcss: ^1.21.0
+ sass: '*'
+ stylus: '*'
+ sugarss: '*'
+ terser: ^5.4.0
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+ less:
+ optional: true
+ lightningcss:
+ optional: true
+ sass:
+ optional: true
+ stylus:
+ optional: true
+ sugarss:
+ optional: true
+ terser:
+ optional: true
dependencies:
- esbuild: 0.18.20
- postcss: 8.5.6
- rollup: 3.29.5
+ '@types/node': 20.12.2
+ esbuild: 0.18.15
+ postcss: 8.5.8
+ rollup: 3.30.0
optionalDependencies:
- '@types/node': 20.19.23
fsevents: 2.3.3
+ dev: true
- vitefu@1.1.1(vite@4.5.14(@types/node@20.19.23)):
- optionalDependencies:
- vite: 4.5.14(@types/node@20.19.23)
+ /vitefu@0.2.5(vite@4.4.6):
+ resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==}
+ peerDependencies:
+ vite: ^3.0.0 || ^4.0.0 || ^5.0.0
+ peerDependenciesMeta:
+ vite:
+ optional: true
+ dependencies:
+ vite: 4.4.6(@types/node@20.12.2)
+ dev: true
- webidl-conversions@4.0.2: {}
+ /webidl-conversions@4.0.2:
+ resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==}
+ dev: true
- webrtc-adapter@9.0.3:
+ /webrtc-adapter@9.0.4:
+ resolution: {integrity: sha512-5ZZY1+lGq8LEKuDlg9M2RPJHlH3R7OVwyHqMcUsLKCgd9Wvf+QrFTCItkXXYPmrJn8H6gRLXbSgxLLdexiqHxw==}
+ engines: {node: '>=6.0.0', npm: '>=3.10.0'}
dependencies:
sdp: 3.2.1
+ dev: false
- whatwg-url@7.1.0:
+ /whatwg-url@7.1.0:
+ resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==}
dependencies:
lodash.sortby: 4.7.0
tr46: 1.0.1
webidl-conversions: 4.0.2
+ dev: true
- which@2.0.2:
+ /which@2.0.2:
+ resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
+ engines: {node: '>= 8'}
+ hasBin: true
dependencies:
isexe: 2.0.0
+ dev: true
- word-wrap@1.2.5: {}
+ /word-wrap@1.2.5:
+ resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
+ engines: {node: '>=0.10.0'}
+ dev: true
- wrap-ansi@7.0.0:
+ /wrap-ansi@7.0.0:
+ resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
+ engines: {node: '>=10'}
dependencies:
ansi-styles: 4.3.0
string-width: 4.2.3
strip-ansi: 6.0.1
+ dev: true
- wrap-ansi@8.1.0:
- dependencies:
- ansi-styles: 6.2.3
- string-width: 5.1.2
- strip-ansi: 7.1.2
-
- wrappy@1.0.2: {}
+ /wrappy@1.0.2:
+ resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
+ dev: true
- y18n@5.0.8: {}
+ /y18n@5.0.8:
+ resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
+ engines: {node: '>=10'}
+ dev: true
- yallist@3.1.1: {}
+ /yallist@3.1.1:
+ resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
+ dev: true
- yaml@2.8.1: {}
+ /yaml@2.8.2:
+ resolution: {integrity: sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==}
+ engines: {node: '>= 14.6'}
+ hasBin: true
+ dev: true
- yargs-parser@21.1.1: {}
+ /yargs-parser@21.1.1:
+ resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
+ engines: {node: '>=12'}
+ dev: true
- yargs@17.7.2:
+ /yargs@17.7.2:
+ resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}
+ engines: {node: '>=12'}
dependencies:
cliui: 8.0.1
escalade: 3.2.0
@@ -3403,5 +2483,9 @@ snapshots:
string-width: 4.2.3
y18n: 5.0.8
yargs-parser: 21.1.1
+ dev: true
- yocto-queue@0.1.0: {}
+ /yocto-queue@0.1.0:
+ resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
+ engines: {node: '>=10'}
+ dev: true
diff --git a/src/components/LiveKitRoom.tsx b/src/components/LiveKitRoom.tsx
new file mode 100644
index 0000000..0d74e40
--- /dev/null
+++ b/src/components/LiveKitRoom.tsx
@@ -0,0 +1,137 @@
+// @livekit/components-react@2.0.4
+// Apache-2.0
+
+import {
+ createEffect,
+ createSignal,
+ onCleanup,
+ type ParentComponent,
+} from 'solid-js'
+import {
+ Room,
+ type RoomConnectOptions,
+ type RoomOptions,
+} from 'livekit-client'
+import { RoomContext } from '../context/room-context'
+
+/** @public */
+export interface LiveKitRoomProps {
+ /**
+ * WebSocket URL of the LiveKit server.
+ * Example: "wss://my-project.livekit.cloud"
+ */
+ serverUrl: string
+
+ /**
+ * Participant access token (JWT) obtained from your backend.
+ * Encodes the room name, participant identity, and permissions.
+ */
+ token: string
+
+ /**
+ * Whether to connect immediately on mount.
+ * Set to false to defer connection until the user explicitly joins.
+ * Defaults to true.
+ */
+ connect?: boolean
+
+ /**
+ * LiveKit Room configuration options passed to the Room constructor.
+ * These are constructor-time options and are not reactive.
+ * @see https://docs.livekit.io/client-sdk-js/interfaces/RoomOptions.html
+ */
+ options?: RoomOptions
+
+ /**
+ * Options passed to room.connect().
+ * @see https://docs.livekit.io/client-sdk-js/interfaces/RoomConnectOptions.html
+ */
+ connectOptions?: RoomConnectOptions
+
+ /**
+ * Called when the room has successfully connected.
+ */
+ onConnected?: (room: Room) => void
+
+ /**
+ * Called when the room disconnects for any reason.
+ */
+ onDisconnected?: () => void
+
+ /**
+ * Called when a connection error occurs.
+ */
+ onError?: (error: Error) => void
+}
+
+/**
+ * `LiveKitRoom` is the root component for any LiveKit voice or video UI.
+ * It creates a `Room` instance, connects to the LiveKit server, and provides
+ * the room to all descendant components via `RoomContext`.
+ *
+ * The context value is an `Accessor` consistent with the
+ * pattern used throughout this library. Descendants access it via
+ * `useRoomContext()` or `useMaybeRoomContext()` from `../context/room-context`.
+ *
+ * @example
+ * ```tsx
+ *
+ *
+ *
+ *
+ * ```
+ *
+ * @public
+ */
+export const LiveKitRoom: ParentComponent = (props) => {
+ // RoomOptions are constructor-time config; we do not reactively recreate
+ // the Room if options change after mount.
+ const room = new Room(props.options)
+
+ // The context value is a signal accessor, matching the Accessor
+ // type expected by RoomContext. We expose the room immediately rather than
+ // waiting for connection so that descendants can observe the connecting state.
+ const [roomSignal, setRoomSignal] = createSignal(undefined)
+
+ // Track connection to avoid duplicate connect calls if props update.
+ let connecting = false
+
+ createEffect(() => {
+ const shouldConnect = props.connect !== false
+ const { serverUrl, token } = props
+
+ if (shouldConnect && serverUrl && token && !connecting) {
+ connecting = true
+ // Expose the room to context before connecting so that descendants
+ // can render a connecting state.
+ setRoomSignal(() => room)
+
+ room
+ .connect(serverUrl, token, props.connectOptions)
+ .then(() => {
+ props.onConnected?.(room)
+ })
+ .catch((err: Error) => {
+ connecting = false
+ setRoomSignal(undefined)
+ props.onError?.(err)
+ })
+ }
+ })
+
+ onCleanup(() => {
+ room.disconnect()
+ setRoomSignal(undefined)
+ props.onDisconnected?.()
+ })
+
+ return (
+
+ {props.children}
+
+ )
+}
diff --git a/src/components/RoomAudioRenderer.tsx b/src/components/RoomAudioRenderer.tsx
new file mode 100644
index 0000000..bcb75cc
--- /dev/null
+++ b/src/components/RoomAudioRenderer.tsx
@@ -0,0 +1,41 @@
+// @livekit/components-react@2.0.4
+// Apache-2.0
+
+import { For, type Component } from 'solid-js'
+import { Track } from 'livekit-client'
+import { AudioTrack } from './participant/AudioTrack'
+import { useTracks } from '../signals/useTracks'
+
+/**
+ * `RoomAudioRenderer` renders a hidden `` element for every subscribed
+ * remote audio track in the current room, making remote participants audible.
+ *
+ * Place it once inside your `` tree. It renders no visible UI.
+ *
+ * @example
+ * ```tsx
+ *
+ *
+ *
+ *
+ * ```
+ *
+ * @public
+ */
+export const RoomAudioRenderer: Component = () => {
+ const tracks = useTracks([
+ Track.Source.Microphone,
+ Track.Source.ScreenShareAudio,
+ ])
+
+ return (
+
+ {(trackRef) => (
+
+ )}
+
+ )
+}
diff --git a/src/components/TrackLoop.tsx b/src/components/TrackLoop.tsx
index 8914382..69b20ae 100644
--- a/src/components/TrackLoop.tsx
+++ b/src/components/TrackLoop.tsx
@@ -1,46 +1,46 @@
-// @livekit/components-react@2.0.4
-// Apache-2.0
-
-import {
- getTrackReferenceId,
- type TrackReference,
- type TrackReferenceOrPlaceholder,
-} from '@livekit/components-core'
-import { TrackRefContext } from '../context/track-reference-context'
-import { Accessor, Component } from 'solid-js'
-import { Key } from '@solid-primitives/keyed'
-
-/** @public */
-export interface TrackLoopProps {
- /** Track references to loop over. You can the use `useTracks()` hook to get TrackReferences. */
- tracks: Accessor
- /** The template component to be used in the loop. */
- children: Component
-}
-
-/**
- * The `TrackLoop` component loops over tracks. It is for example a easy way to loop over all participant camera and screen share tracks.
- * `TrackLoop` creates a `TrackRefContext` for each track that you can use to e.g. render the track.
- *
- * @example
- * ```tsx
- * const trackRefs = useTracks([Track.Source.Camera]);
- *
- *
- * {(trackRef) => trackRef && }
- *
- *
- * ```
- * @public
- */
-export function TrackLoop({ tracks, ...props }: TrackLoopProps) {
- return (
- getTrackReferenceId(item)}>
- {trackReference => (
-
- {props.children({})}
-
- )}
-
- )
-}
+// @livekit/components-react@2.0.4
+// Apache-2.0
+
+import {
+ getTrackReferenceId,
+ type TrackReference,
+ type TrackReferenceOrPlaceholder,
+} from '@livekit/components-core'
+import { TrackRefContext } from '../context/track-reference-context'
+import { Accessor, Component } from 'solid-js'
+import { Key } from '@solid-primitives/keyed'
+
+/** @public */
+export interface TrackLoopProps {
+ /** Track references to loop over. You can the use `useTracks()` hook to get TrackReferences. */
+ tracks: Accessor
+ /** The template component to be used in the loop. */
+ children: Component
+}
+
+/**
+ * The `TrackLoop` component loops over tracks. It is for example a easy way to loop over all participant camera and screen share tracks.
+ * `TrackLoop` creates a `TrackRefContext` for each track that you can use to e.g. render the track.
+ *
+ * @example
+ * ```tsx
+ * const trackRefs = useTracks([Track.Source.Camera]);
+ *
+ *
+ * {(trackRef) => trackRef && }
+ *
+ *
+ * ```
+ * @public
+ */
+export function TrackLoop({ tracks, ...props }: TrackLoopProps) {
+ return (
+ getTrackReferenceId(item)}>
+ {trackReference => (
+
+ {props.children({})}
+
+ )}
+
+ )
+}
diff --git a/src/components/index.ts b/src/components/index.ts
index df47d19..5e73717 100644
--- a/src/components/index.ts
+++ b/src/components/index.ts
@@ -1,6 +1,14 @@
+export * from './LiveKitRoom'
+export * from './RoomAudioRenderer'
export * from './TrackLoop'
-
export * from './participant/AudioTrack'
export * from './participant/VideoTrack'
-
-// TODO: everything else...
+// TODO: ParticipantTile
+// TODO: ControlBar
+// TODO: MicrophoneButton
+// TODO: CameraButton
+// TODO: ScreenShareButton
+// TODO: DisconnectButton
+// TODO: ConnectionStateToast
+// TODO: GridLayout
+// TODO: FocusLayout
diff --git a/src/components/participant/AudioTrack.tsx b/src/components/participant/AudioTrack.tsx
index a8777c7..bf99e7a 100644
--- a/src/components/participant/AudioTrack.tsx
+++ b/src/components/participant/AudioTrack.tsx
@@ -8,7 +8,9 @@ import { RemoteAudioTrack, RemoteTrackPublication } from 'livekit-client'
import { useEnsureTrackRef } from '../../context'
import type { JSX } from 'solid-js/jsx-runtime'
import { createEffect, onCleanup } from 'solid-js'
-import { useMediaDeviceSelect } from 'src/signals'
+// Fixed: was `import { useMediaDeviceSelect } from 'src/signals'` (absolute path
+// that breaks outside the dev environment). Changed to a relative import.
+import { useMediaDeviceSelect } from '../../signals'
/** @public */
export interface AudioTrackProps extends JSX.AudioHTMLAttributes {
@@ -32,17 +34,19 @@ export interface AudioTrackProps extends JSX.AudioHTMLAttributes , )
- * (to ensure AudioTrack is unique to each Track and props don't suddenly update to another track!)
+ * Must be used with a keyed parent (e.g. `` or ``) to ensure
+ * the component is remounted when the track changes rather than receiving
+ * updated props for a different track.
*
* @example
* ```tsx
- *
- *
- *
+ *
+ *
+ *
* ```
*
* @see `ParticipantTile` component
diff --git a/src/components/participant/VideoTrack.tsx b/src/components/participant/VideoTrack.tsx
index 6cb3aeb..3b2fb25 100644
--- a/src/components/participant/VideoTrack.tsx
+++ b/src/components/participant/VideoTrack.tsx
@@ -1,89 +1,89 @@
-// @livekit/components-react@2.0.4
-// Apache-2.0
-
-import { RemoteTrackPublication } from 'livekit-client'
-import { useMediaTrackBySourceOrName } from '../../signals/useMediaTrackBySourceOrName'
-import type { ParticipantClickEvent, TrackReference } from '@livekit/components-core'
-import { useEnsureTrackRef } from '../../context'
-import { createEffect, createSignal } from 'solid-js'
-import { createVisibilityObserver } from '@solid-primitives/intersection-observer'
-import type { JSX } from 'solid-js/jsx-runtime'
-import { debounce } from '@solid-primitives/scheduled'
-
-/** @public */
-export interface VideoTrackProps extends JSX.VideoHTMLAttributes {
- /** The track reference of the track to render. */
- trackRef?: TrackReference
- onTrackClick?: (evt: ParticipantClickEvent) => void
- onSubscriptionStatusChanged?: (subscribed: boolean) => void
- manageSubscription?: boolean
-}
-
-/**
- * The `VideoTrack` component is responsible for rendering participant video tracks like `camera` and `screen_share`.
- * This component must have access to the participant's context, or alternatively pass it a `Participant` as a property.
- *
- * @example
- * ```tsx
- *
- * ```
- * @see {@link @livekit/components-react#ParticipantTile | ParticipantTile}
- * @public
- */
-export function VideoTrack({
- onTrackClick,
- onClick,
- onSubscriptionStatusChanged,
- trackRef,
- manageSubscription,
- ...props
-}: VideoTrackProps) {
- const trackReference = useEnsureTrackRef(trackRef)
-
- let mediaEl: HTMLVideoElement | undefined
-
- const useVisibilityObserver = createVisibilityObserver({ threshold: 0.8 })
- const visible = useVisibilityObserver(() => mediaEl)
-
- const [maintainedVisibility, setMaintainedVisibility] = createSignal()
- const updateVisibility = debounce((vis: boolean) => setMaintainedVisibility(vis), 3000)
- createEffect(() => updateVisibility(visible()))
-
- createEffect(() => {
- if (
- manageSubscription &&
- trackReference.publication instanceof RemoteTrackPublication &&
- maintainedVisibility() === false &&
- visible() === false
- ) {
- trackReference.publication.setSubscribed(false)
- }
- })
-
- createEffect(() => {
- if (
- manageSubscription &&
- trackReference.publication instanceof RemoteTrackPublication &&
- visible()
- ) {
- trackReference.publication.setSubscribed(true)
- }
- })
-
- const { elementProps, publication, isSubscribed } = useMediaTrackBySourceOrName(trackReference, {
- element: () => mediaEl,
- // @ts-expect-error ???
- props,
- })
-
- createEffect(() => {
- onSubscriptionStatusChanged?.(!!isSubscribed())
- })
-
- const clickHandler = (evt: MouseEvent) => {
- ;(onClick as (evt: MouseEvent) => void)?.(evt)
- onTrackClick?.({ participant: trackReference?.participant, track: publication() })
- }
-
- return
-}
+// @livekit/components-react@2.0.4
+// Apache-2.0
+
+import { RemoteTrackPublication } from 'livekit-client'
+import { useMediaTrackBySourceOrName } from '../../signals/useMediaTrackBySourceOrName'
+import type { ParticipantClickEvent, TrackReference } from '@livekit/components-core'
+import { useEnsureTrackRef } from '../../context'
+import { createEffect, createSignal } from 'solid-js'
+import { createVisibilityObserver } from '@solid-primitives/intersection-observer'
+import type { JSX } from 'solid-js/jsx-runtime'
+import { debounce } from '@solid-primitives/scheduled'
+
+/** @public */
+export interface VideoTrackProps extends JSX.VideoHTMLAttributes {
+ /** The track reference of the track to render. */
+ trackRef?: TrackReference
+ onTrackClick?: (evt: ParticipantClickEvent) => void
+ onSubscriptionStatusChanged?: (subscribed: boolean) => void
+ manageSubscription?: boolean
+}
+
+/**
+ * The `VideoTrack` component is responsible for rendering participant video tracks like `camera` and `screen_share`.
+ * This component must have access to the participant's context, or alternatively pass it a `Participant` as a property.
+ *
+ * @example
+ * ```tsx
+ *
+ * ```
+ * @see {@link @livekit/components-react#ParticipantTile | ParticipantTile}
+ * @public
+ */
+export function VideoTrack({
+ onTrackClick,
+ onClick,
+ onSubscriptionStatusChanged,
+ trackRef,
+ manageSubscription,
+ ...props
+}: VideoTrackProps) {
+ const trackReference = useEnsureTrackRef(trackRef)
+
+ let mediaEl: HTMLVideoElement | undefined
+
+ const useVisibilityObserver = createVisibilityObserver({ threshold: 0.8 })
+ const visible = useVisibilityObserver(() => mediaEl)
+
+ const [maintainedVisibility, setMaintainedVisibility] = createSignal()
+ const updateVisibility = debounce((vis: boolean) => setMaintainedVisibility(vis), 3000)
+ createEffect(() => updateVisibility(visible()))
+
+ createEffect(() => {
+ if (
+ manageSubscription &&
+ trackReference.publication instanceof RemoteTrackPublication &&
+ maintainedVisibility() === false &&
+ visible() === false
+ ) {
+ trackReference.publication.setSubscribed(false)
+ }
+ })
+
+ createEffect(() => {
+ if (
+ manageSubscription &&
+ trackReference.publication instanceof RemoteTrackPublication &&
+ visible()
+ ) {
+ trackReference.publication.setSubscribed(true)
+ }
+ })
+
+ const { elementProps, publication, isSubscribed } = useMediaTrackBySourceOrName(trackReference, {
+ element: () => mediaEl,
+ // @ts-expect-error ???
+ props,
+ })
+
+ createEffect(() => {
+ onSubscriptionStatusChanged?.(!!isSubscribed())
+ })
+
+ const clickHandler = (evt: MouseEvent) => {
+ ;(onClick as (evt: MouseEvent) => void)?.(evt)
+ onTrackClick?.({ participant: trackReference?.participant, track: publication() })
+ }
+
+ return
+}
diff --git a/src/context/index.ts b/src/context/index.ts
index 649b94e..fd81904 100644
--- a/src/context/index.ts
+++ b/src/context/index.ts
@@ -1,18 +1,18 @@
-// TODO [chat-context]
-// TODO [layout-context]
-// TODO [pin-context]
-// TODO [feature-context]
-
-export {
- ParticipantContext,
- useEnsureParticipant,
- useMaybeParticipantContext,
- useParticipantContext,
-} from './participant-context'
-export { RoomContext, useEnsureRoom, useMaybeRoomContext, useRoomContext } from './room-context'
-export {
- TrackRefContext,
- useEnsureTrackRef,
- useMaybeTrackRefContext,
- useTrackRefContext,
-} from './track-reference-context'
+// TODO [chat-context]
+// TODO [layout-context]
+// TODO [pin-context]
+// TODO [feature-context]
+
+export {
+ ParticipantContext,
+ useEnsureParticipant,
+ useMaybeParticipantContext,
+ useParticipantContext,
+} from './participant-context'
+export { RoomContext, useEnsureRoom, useMaybeRoomContext, useRoomContext } from './room-context'
+export {
+ TrackRefContext,
+ useEnsureTrackRef,
+ useMaybeTrackRefContext,
+ useTrackRefContext,
+} from './track-reference-context'
diff --git a/src/context/participant-context.ts b/src/context/participant-context.ts
index ca9d806..0f61f8a 100644
--- a/src/context/participant-context.ts
+++ b/src/context/participant-context.ts
@@ -1,47 +1,47 @@
-// @livekit/components-react@2.0.4
-// Apache-2.0
-
-import type { Participant } from 'livekit-client'
-import { useMaybeTrackRefContext } from './track-reference-context'
-import { createContext, useContext } from 'solid-js'
-
-/** @public */
-export const ParticipantContext = createContext(undefined)
-
-/**
- * Ensures that a participant is provided via context.
- * If not inside a `ParticipantContext`, an error is thrown.
- * @public
- */
-export function useParticipantContext() {
- const participant = useContext(ParticipantContext)
- if (!participant) {
- throw Error('tried to access participant context outside of participant context provider')
- }
- return participant
-}
-
-/**
- * Returns a participant from the `ParticipantContext` if it exists, otherwise `undefined`.
- * @public
- */
-export function useMaybeParticipantContext() {
- return useContext(ParticipantContext)
-}
-
-/**
- * Ensures that a participant is provided, either via context or explicitly as a parameter.
- * If not inside a `ParticipantContext` and no participant is provided, an error is thrown.
- * @public
- */
-export function useEnsureParticipant(participant?: Participant) {
- const context = useMaybeParticipantContext()
- const trackContext = useMaybeTrackRefContext()
- const p = participant ?? context ?? trackContext?.participant
- if (!p) {
- throw new Error(
- 'No participant provided, make sure you are inside a participant context or pass the participant explicitly',
- )
- }
- return p
-}
+// @livekit/components-react@2.0.4
+// Apache-2.0
+
+import type { Participant } from 'livekit-client'
+import { useMaybeTrackRefContext } from './track-reference-context'
+import { createContext, useContext } from 'solid-js'
+
+/** @public */
+export const ParticipantContext = createContext(undefined)
+
+/**
+ * Ensures that a participant is provided via context.
+ * If not inside a `ParticipantContext`, an error is thrown.
+ * @public
+ */
+export function useParticipantContext() {
+ const participant = useContext(ParticipantContext)
+ if (!participant) {
+ throw Error('tried to access participant context outside of participant context provider')
+ }
+ return participant
+}
+
+/**
+ * Returns a participant from the `ParticipantContext` if it exists, otherwise `undefined`.
+ * @public
+ */
+export function useMaybeParticipantContext() {
+ return useContext(ParticipantContext)
+}
+
+/**
+ * Ensures that a participant is provided, either via context or explicitly as a parameter.
+ * If not inside a `ParticipantContext` and no participant is provided, an error is thrown.
+ * @public
+ */
+export function useEnsureParticipant(participant?: Participant) {
+ const context = useMaybeParticipantContext()
+ const trackContext = useMaybeTrackRefContext()
+ const p = participant ?? context ?? trackContext?.participant
+ if (!p) {
+ throw new Error(
+ 'No participant provided, make sure you are inside a participant context or pass the participant explicitly',
+ )
+ }
+ return p
+}
diff --git a/src/context/room-context.ts b/src/context/room-context.ts
index 1093916..55bff48 100644
--- a/src/context/room-context.ts
+++ b/src/context/room-context.ts
@@ -1,47 +1,47 @@
-// @livekit/components-react@2.0.4
-// Apache-2.0
-
-import type { Room } from 'livekit-client'
-import { Accessor, createContext, useContext } from 'solid-js'
-
-/** @public */
-export const RoomContext = createContext>(undefined)
-
-/**
- * Ensures that a room is provided via context.
- * If no room is provided, an error is thrown.
- * @public
- */
-export function useRoomContext() {
- const ctx = useContext(RoomContext)
- if (!ctx) {
- throw Error('tried to access room context outside of livekit room component')
- }
- return ctx
-}
-
-/**
- * Returns the room context if it exists, otherwise undefined.
- * @public
- */
-export function useMaybeRoomContext() {
- return useContext(RoomContext)
-}
-
-/**
- * Ensures that a room is provided, either via context or explicitly as a parameter.
- * If no room is provided, an error is thrown.
- * @public
- */
-export function useEnsureRoom(room?: Room) {
- const context = useMaybeRoomContext()
- return () => {
- const r = room ?? context?.()
- if (!r) {
- throw new Error(
- 'No room provided, make sure you are inside a Room context or pass the room explicitly',
- )
- }
- return r
- }
-}
+// @livekit/components-react@2.0.4
+// Apache-2.0
+
+import type { Room } from 'livekit-client'
+import { Accessor, createContext, useContext } from 'solid-js'
+
+/** @public */
+export const RoomContext = createContext>(undefined)
+
+/**
+ * Ensures that a room is provided via context.
+ * If no room is provided, an error is thrown.
+ * @public
+ */
+export function useRoomContext() {
+ const ctx = useContext(RoomContext)
+ if (!ctx) {
+ throw Error('tried to access room context outside of livekit room component')
+ }
+ return ctx
+}
+
+/**
+ * Returns the room context if it exists, otherwise undefined.
+ * @public
+ */
+export function useMaybeRoomContext() {
+ return useContext(RoomContext)
+}
+
+/**
+ * Ensures that a room is provided, either via context or explicitly as a parameter.
+ * If no room is provided, an error is thrown.
+ * @public
+ */
+export function useEnsureRoom(room?: Room) {
+ const context = useMaybeRoomContext()
+ return () => {
+ const r = room ?? context?.()
+ if (!r) {
+ throw new Error(
+ 'No room provided, make sure you are inside a Room context or pass the room explicitly',
+ )
+ }
+ return r
+ }
+}
diff --git a/src/context/track-reference-context.ts b/src/context/track-reference-context.ts
index 91f90d2..0a47b2c 100644
--- a/src/context/track-reference-context.ts
+++ b/src/context/track-reference-context.ts
@@ -1,48 +1,48 @@
-// @livekit/components-react@2.0.4
-// Apache-2.0
-
-import type { TrackReferenceOrPlaceholder } from '@livekit/components-core'
-import { createContext, useContext } from 'solid-js'
-
-/**
- * This context provides a `TrackReferenceOrPlaceholder` to all child components.
- * @public
- */
-export const TrackRefContext = createContext(undefined)
-
-/**
- * Ensures that a track reference is provided via context.
- * If not inside a `TrackRefContext`, an error is thrown.
- * @public
- */
-export function useTrackRefContext() {
- const trackReference = useContext(TrackRefContext)
- if (!trackReference) {
- throw Error('tried to access track context outside of track context provider')
- }
- return trackReference
-}
-
-/**
- * Returns a track reference from the `TrackRefContext` if it exists, otherwise `undefined`.
- * @public
- */
-export function useMaybeTrackRefContext() {
- return useContext(TrackRefContext)
-}
-
-/**
- * Ensures that a track reference is provided, either via context or explicitly as a parameter.
- * If not inside a `TrackRefContext` and no track reference is provided, an error is thrown.
- * @public
- */
-export function useEnsureTrackRef(trackRef?: TrackReferenceOrPlaceholder) {
- const context = useMaybeTrackRefContext()
- const ref = trackRef ?? context
- if (!ref) {
- throw new Error(
- 'No TrackRef, make sure you are inside a TrackRefContext or pass the TrackRef explicitly',
- )
- }
- return ref
-}
+// @livekit/components-react@2.0.4
+// Apache-2.0
+
+import type { TrackReferenceOrPlaceholder } from '@livekit/components-core'
+import { createContext, useContext } from 'solid-js'
+
+/**
+ * This context provides a `TrackReferenceOrPlaceholder` to all child components.
+ * @public
+ */
+export const TrackRefContext = createContext(undefined)
+
+/**
+ * Ensures that a track reference is provided via context.
+ * If not inside a `TrackRefContext`, an error is thrown.
+ * @public
+ */
+export function useTrackRefContext() {
+ const trackReference = useContext(TrackRefContext)
+ if (!trackReference) {
+ throw Error('tried to access track context outside of track context provider')
+ }
+ return trackReference
+}
+
+/**
+ * Returns a track reference from the `TrackRefContext` if it exists, otherwise `undefined`.
+ * @public
+ */
+export function useMaybeTrackRefContext() {
+ return useContext(TrackRefContext)
+}
+
+/**
+ * Ensures that a track reference is provided, either via context or explicitly as a parameter.
+ * If not inside a `TrackRefContext` and no track reference is provided, an error is thrown.
+ * @public
+ */
+export function useEnsureTrackRef(trackRef?: TrackReferenceOrPlaceholder) {
+ const context = useMaybeTrackRefContext()
+ const ref = trackRef ?? context
+ if (!ref) {
+ throw new Error(
+ 'No TrackRef, make sure you are inside a TrackRefContext or pass the TrackRef explicitly',
+ )
+ }
+ return ref
+}
diff --git a/src/index.tsx b/src/index.tsx
index fc00d91..e97d910 100644
--- a/src/index.tsx
+++ b/src/index.tsx
@@ -1,21 +1,21 @@
-export * from './components'
-export * from './signals'
-export * from './context'
-
-// TODO: prefabs
-// TODO: assets
-
-// Re-exports from core
-export { setLogLevel, setLogExtension, isTrackReference } from '@livekit/components-core'
-export type {
- ChatMessage,
- ReceivedChatMessage,
- MessageDecoder,
- MessageEncoder,
- LocalUserChoices,
- TrackReference,
- TrackReferenceOrPlaceholder,
- ParticipantClickEvent,
- PinState,
- WidgetState,
-} from '@livekit/components-core'
+export * from './components'
+export * from './signals'
+export * from './context'
+
+// TODO: prefabs
+// TODO: assets
+
+// Re-exports from core
+export { setLogLevel, setLogExtension, isTrackReference } from '@livekit/components-core'
+export type {
+ ChatMessage,
+ ReceivedChatMessage,
+ MessageDecoder,
+ MessageEncoder,
+ LocalUserChoices,
+ TrackReference,
+ TrackReferenceOrPlaceholder,
+ ParticipantClickEvent,
+ PinState,
+ WidgetState,
+} from '@livekit/components-core'
diff --git a/src/signals/index.ts b/src/signals/index.ts
index 59bdf2f..ed6439a 100644
--- a/src/signals/index.ts
+++ b/src/signals/index.ts
@@ -1,57 +1,57 @@
-// TODO: useAudioPlayback
-// TODO: useChat
-// TODO: useChatToggle
-// TODO: useChatPinButton
-// TODO: useConnectionQualityIndicator
-// TODO: useDataChannel
-// TODO: useDisconnectButton
-// TODO: useFacingMode
-// TODO: useFocusToggle
-// TODO: useGridLayout
-// TODO: useLiveKitRoom
-// TODO: useLocalParticipant
-// TODO: useLocalParticipantPermissions
-// TODO: usePagination
-// TODO: usePaginationTile
-// TODO: usePaginationTracks
-// TODO: usePersistentUserChoices
-// TODO: usePinnedTracks
-// TODO: useRemoteParticipant
-// TODO: useRemoteParticipants
-// TODO: useRoomInfo
-// TODO: useSettingsToggle
-// TODO: useSortedParticipants
-// TODO: useSpeakingParticipants
-// TODO: useStartAudio
-// TODO: useStartVideo
-// TODO: useSwipe
-// TODO: useToken
-// TODO: useTrack
-// TODO: useSwipe
-// TODO: useToken
-// TODO: useTrack
-// TODO: useTrackByName
-// TODO: useTrackMutedIndicator
-// TODO: useTrackRefBySourceOrName
-// TODO: useTrackToggle
-// TODO: useTrackVolume
-// TODO: useVisualStableUpdate
-// TODO: useWarnAboutMissingStyles
-
-export { useConnectionState } from './useConnectionStatus'
-
-export { useIsEncrypted } from './useIsEncrypted'
-
-export type { UseIsMutedOptions } from './useIsMuted'
-export { useIsMuted } from './useIsMuted'
-
-export { useIsSpeaking } from './useIsSpeaking'
-
-export { useMediaDevices } from './useMediaDevices';
-
-export { useMediaDeviceSelect } from './useMediaDeviceSelect';
-
-export { useMediaTrackBySourceOrName } from './useMediaTrackBySourceOrName';
-
-export type { UseTracksHookReturnType, UseTracksOptions } from './useTracks'
-export { useTracks } from './useTracks'
+// TODO: useAudioPlayback
+// TODO: useChat
+// TODO: useChatToggle
+// TODO: useChatPinButton
+// TODO: useConnectionQualityIndicator
+// TODO: useDataChannel
+// TODO: useDisconnectButton
+// TODO: useFacingMode
+// TODO: useFocusToggle
+// TODO: useGridLayout
+// TODO: useLiveKitRoom
+// TODO: useLocalParticipant
+// TODO: useLocalParticipantPermissions
+// TODO: usePagination
+// TODO: usePaginationTile
+// TODO: usePaginationTracks
+// TODO: usePersistentUserChoices
+// TODO: usePinnedTracks
+// TODO: useRemoteParticipant
+// TODO: useRemoteParticipants
+// TODO: useRoomInfo
+// TODO: useSettingsToggle
+// TODO: useSortedParticipants
+// TODO: useSpeakingParticipants
+// TODO: useStartAudio
+// TODO: useStartVideo
+// TODO: useSwipe
+// TODO: useToken
+// TODO: useTrack
+// TODO: useSwipe
+// TODO: useToken
+// TODO: useTrack
+// TODO: useTrackByName
+// TODO: useTrackMutedIndicator
+// TODO: useTrackRefBySourceOrName
+// TODO: useTrackToggle
+// TODO: useTrackVolume
+// TODO: useVisualStableUpdate
+// TODO: useWarnAboutMissingStyles
+
+export { useConnectionState } from './useConnectionStatus'
+
+export { useIsEncrypted } from './useIsEncrypted'
+
+export type { UseIsMutedOptions } from './useIsMuted'
+export { useIsMuted } from './useIsMuted'
+
+export { useIsSpeaking } from './useIsSpeaking'
+
+export { useMediaDevices } from './useMediaDevices';
+
+export { useMediaDeviceSelect } from './useMediaDeviceSelect';
+
+export { useMediaTrackBySourceOrName } from './useMediaTrackBySourceOrName';
+
+export type { UseTracksHookReturnType, UseTracksOptions } from './useTracks'
+export { useTracks } from './useTracks'
diff --git a/src/signals/internal/index.ts b/src/signals/internal/index.ts
index ae2bdf6..afcf5cc 100644
--- a/src/signals/internal/index.ts
+++ b/src/signals/internal/index.ts
@@ -1,13 +1,13 @@
-// @livekit/components-react@2.0.4
-// Apache-2.0
-
-/**
- * A collection of internal hooks that are not part of the public API
- * and therefore can be modified or removed at any time.
- *
- * @internal
- */
-
-// export * from './useResizeObserver'
-export * from './useObservableState'
-// export * from './useMediaQuery'
+// @livekit/components-react@2.0.4
+// Apache-2.0
+
+/**
+ * A collection of internal hooks that are not part of the public API
+ * and therefore can be modified or removed at any time.
+ *
+ * @internal
+ */
+
+// export * from './useResizeObserver'
+export * from './useObservableState'
+// export * from './useMediaQuery'
diff --git a/src/signals/internal/useObservableState.ts b/src/signals/internal/useObservableState.ts
index 0dbad47..a195168 100644
--- a/src/signals/internal/useObservableState.ts
+++ b/src/signals/internal/useObservableState.ts
@@ -1,20 +1,20 @@
-// @livekit/components-react@2.0.4
-// Apache-2.0
-
-// @ts-ignore
-import type { Observable } from 'rxjs'
-import { createEffect, createSignal } from 'solid-js'
-
-/**
- * @internal
- */
-export function useObservableState(observable: Observable | undefined, startWith: T) {
- const [state, setState] = createSignal(startWith)
- createEffect(() => {
- // observable state doesn't run in SSR
- if (typeof window === 'undefined' || !observable) return
- const subscription = observable.subscribe(setState)
- return () => subscription.unsubscribe()
- }, [observable])
- return state
-}
+// @livekit/components-react@2.0.4
+// Apache-2.0
+
+// @ts-ignore
+import type { Observable } from 'rxjs'
+import { createEffect, createSignal } from 'solid-js'
+
+/**
+ * @internal
+ */
+export function useObservableState(observable: Observable | undefined, startWith: T) {
+ const [state, setState] = createSignal(startWith)
+ createEffect(() => {
+ // observable state doesn't run in SSR
+ if (typeof window === 'undefined' || !observable) return
+ const subscription = observable.subscribe(setState)
+ return () => subscription.unsubscribe()
+ }, [observable])
+ return state
+}
diff --git a/src/signals/useConnectionStatus.ts b/src/signals/useConnectionStatus.ts
index a9fcea0..f208477 100644
--- a/src/signals/useConnectionStatus.ts
+++ b/src/signals/useConnectionStatus.ts
@@ -1,27 +1,27 @@
-// @livekit/components-react@2.0.4
-// Apache-2.0
-
-import { connectionStateObserver } from '@livekit/components-core'
-import { useEnsureRoom } from '../context'
-import { useObservableState } from './internal'
-import { createMemo } from 'solid-js'
-
-import type { ConnectionState, Room } from 'livekit-client'
-import type { Observable } from 'rxjs'
-
-/**
- * The `useConnectionState` hook allows you to simply implement your own `ConnectionState` component.
- *
- * @example
- * ```tsx
- * const connectionState = useConnectionState(room);
- * ```
- * @public
- */
-export function useConnectionState(room?: Room) {
- // passed room takes precedence, if not supplied get current room context
- const r = useEnsureRoom(room)
- const observable = createMemo(() => connectionStateObserver(r()))
- const connectionState = useObservableState(observable() as unknown as Observable, r().state)
- return connectionState
-}
+// @livekit/components-react@2.0.4
+// Apache-2.0
+
+import { connectionStateObserver } from '@livekit/components-core'
+import { useEnsureRoom } from '../context'
+import { useObservableState } from './internal'
+import { createMemo } from 'solid-js'
+
+import type { ConnectionState, Room } from 'livekit-client'
+import type { Observable } from 'rxjs'
+
+/**
+ * The `useConnectionState` hook allows you to simply implement your own `ConnectionState` component.
+ *
+ * @example
+ * ```tsx
+ * const connectionState = useConnectionState(room);
+ * ```
+ * @public
+ */
+export function useConnectionState(room?: Room) {
+ // passed room takes precedence, if not supplied get current room context
+ const r = useEnsureRoom(room)
+ const observable = createMemo(() => connectionStateObserver(r()))
+ const connectionState = useObservableState(observable() as unknown as Observable, r().state)
+ return connectionState
+}
diff --git a/src/signals/useIsEncrypted.ts b/src/signals/useIsEncrypted.ts
index d08bb17..c8d642e 100644
--- a/src/signals/useIsEncrypted.ts
+++ b/src/signals/useIsEncrypted.ts
@@ -1,25 +1,25 @@
-// @livekit/components-react@2.0.4
-// Apache-2.0
-
-import { encryptionStatusObservable } from '@livekit/components-core'
-import { useEnsureParticipant, useEnsureRoom } from '../context'
-import { useObservableState } from './internal'
-import { createMemo } from 'solid-js'
-
-import { LocalParticipant, type Participant } from 'livekit-client'
-import type { Observable } from 'rxjs'
-
-/**
- * @alpha
- */
-export function useIsEncrypted(participant?: Participant) {
- const p = useEnsureParticipant(participant)
- const room = useEnsureRoom()
-
- const observer = createMemo(() => encryptionStatusObservable(room(), p))
- const isEncrypted = useObservableState(
- observer() as unknown as Observable,
- p instanceof LocalParticipant ? p.isE2EEEnabled : p.isEncrypted,
- )
- return isEncrypted
-}
+// @livekit/components-react@2.0.4
+// Apache-2.0
+
+import { encryptionStatusObservable } from '@livekit/components-core'
+import { useEnsureParticipant, useEnsureRoom } from '../context'
+import { useObservableState } from './internal'
+import { createMemo } from 'solid-js'
+
+import { LocalParticipant, type Participant } from 'livekit-client'
+import type { Observable } from 'rxjs'
+
+/**
+ * @alpha
+ */
+export function useIsEncrypted(participant?: Participant) {
+ const p = useEnsureParticipant(participant)
+ const room = useEnsureRoom()
+
+ const observer = createMemo(() => encryptionStatusObservable(room(), p))
+ const isEncrypted = useObservableState(
+ observer() as unknown as Observable,
+ p instanceof LocalParticipant ? p.isE2EEEnabled : p.isEncrypted,
+ )
+ return isEncrypted
+}
diff --git a/src/signals/useIsMuted.ts b/src/signals/useIsMuted.ts
index 3be7d65..796473b 100644
--- a/src/signals/useIsMuted.ts
+++ b/src/signals/useIsMuted.ts
@@ -1,6 +1,5 @@
// @livekit/components-react@2.0.4
// Apache-2.0
-
import {
type TrackReferenceOrPlaceholder,
getTrackReferenceId,
@@ -8,7 +7,8 @@ import {
} from '@livekit/components-core'
import type { Participant, Track } from 'livekit-client'
import { useEnsureParticipant } from '../context'
-import { Accessor, createEffect, createSignal } from 'solid-js'
+import { type Accessor, createMemo } from 'solid-js'
+import { useObservableState } from './internal'
/** @public */
export interface UseIsMutedOptions {
@@ -16,12 +16,17 @@ export interface UseIsMutedOptions {
}
/**
- * The `useIsMuted` hook is used to implement the `TrackMutedIndicator` or your custom implementation of it.
- * It returns a `boolean` that indicates if the track is muted or not.
+ * The `useIsMuted` hook returns a reactive signal indicating whether a track
+ * is currently muted.
+ *
+ * Use it to implement a `TrackMutedIndicator` or any custom mute state display.
*
* @example
* ```tsx
* const isMuted = useIsMuted(track);
+ *
+ *
+ *
* ```
* @public
*/
@@ -29,22 +34,29 @@ export function useIsMuted(trackRef: TrackReferenceOrPlaceholder): Accessor {
const passedParticipant =
typeof sourceOrTrackRef === 'string' ? options.participant : sourceOrTrackRef.participant
const p = useEnsureParticipant(passedParticipant)
+
const ref =
typeof sourceOrTrackRef === 'string'
? { participant: p, source: sourceOrTrackRef }
: sourceOrTrackRef
- const [isMuted, setIsMuted] = createSignal(
- !!(ref.publication?.isMuted || p.getTrackPublication(ref.source)?.isMuted),
- )
- createEffect(() => {
- const listener = mutedObserver(ref).subscribe(setIsMuted)
- return () => listener.unsubscribe()
- }, [getTrackReferenceId(ref)])
+ // createMemo tracks the track reference reactively so the observable
+ // is recreated whenever the ref identity changes. This replaces the
+ // React-style dependency array that was previously passed to createEffect
+ // as a second argument — Solid's createEffect does not accept a dependency
+ // array and silently ignores it, which caused the effect to never re-run
+ // when the track reference changed.
+ const observable = createMemo(() => mutedObserver(ref))
+
+ const initialMuted = !!(
+ ref.publication?.isMuted || p.getTrackPublication(
+ typeof sourceOrTrackRef === 'string' ? sourceOrTrackRef : ref.source!
+ )?.isMuted
+ )
- return isMuted
+ return useObservableState(observable(), initialMuted)
}
diff --git a/src/signals/useIsSpeaking.ts b/src/signals/useIsSpeaking.ts
index 5b34b85..7677279 100644
--- a/src/signals/useIsSpeaking.ts
+++ b/src/signals/useIsSpeaking.ts
@@ -1,26 +1,26 @@
-// @livekit/components-react@2.0.4
-// Apache-2.0
-
-import { createIsSpeakingObserver } from '@livekit/components-core'
-import { useEnsureParticipant } from '../context'
-import { useObservableState } from './internal'
-import { createMemo } from 'solid-js'
-
-import type { Participant } from 'livekit-client'
-import type { Observable } from 'rxjs'
-
-/**
- * The `useIsSpeaking` hook returns a `boolean` that indicates if the participant is speaking or not.
- * @example
- * ```tsx
- * const isSpeaking = useIsSpeaking(participant);
- * ```
- * @public
- */
-export function useIsSpeaking(participant?: Participant) {
- const p = useEnsureParticipant(participant)
- const observable = createMemo(() => createIsSpeakingObserver(p), [p])
- const isSpeaking = useObservableState(observable() as unknown as Observable, p.isSpeaking)
-
- return isSpeaking
-}
+// @livekit/components-react@2.0.4
+// Apache-2.0
+
+import { createIsSpeakingObserver } from '@livekit/components-core'
+import { useEnsureParticipant } from '../context'
+import { useObservableState } from './internal'
+import { createMemo } from 'solid-js'
+
+import type { Participant } from 'livekit-client'
+import type { Observable } from 'rxjs'
+
+/**
+ * The `useIsSpeaking` hook returns a `boolean` that indicates if the participant is speaking or not.
+ * @example
+ * ```tsx
+ * const isSpeaking = useIsSpeaking(participant);
+ * ```
+ * @public
+ */
+export function useIsSpeaking(participant?: Participant) {
+ const p = useEnsureParticipant(participant)
+ const observable = createMemo(() => createIsSpeakingObserver(p), [p])
+ const isSpeaking = useObservableState(observable() as unknown as Observable, p.isSpeaking)
+
+ return isSpeaking
+}
diff --git a/src/signals/useMediaDeviceSelect.ts b/src/signals/useMediaDeviceSelect.ts
index 02492ee..f02dc66 100644
--- a/src/signals/useMediaDeviceSelect.ts
+++ b/src/signals/useMediaDeviceSelect.ts
@@ -1,95 +1,95 @@
-// @livekit/components-react@2.9.15
-// Apache-2.0
-
-import { createMediaDeviceObserver, setupDeviceSelector } from '@livekit/components-core'
-import { LocalAudioTrack, LocalVideoTrack, Room } from 'livekit-client'
-import { createEffect, createMemo, createSignal, on, onCleanup } from 'solid-js'
-import { useMaybeRoomContext } from 'src/context'
-import { useObservableState } from './internal'
-
-/** @public */
-export interface UseMediaDeviceSelectProps {
- kind: MediaDeviceKind
- room?: Room
- track?: LocalAudioTrack | LocalVideoTrack
- /**
- * this will call getUserMedia if the permissions are not yet given to enumerate the devices with device labels.
- * in some browsers multiple calls to getUserMedia result in multiple permission prompts.
- * It's generally advised only flip this to true, once a (preview) track has been acquired successfully with the
- * appropriate permissions.
- *
- * @see {@link MediaDeviceMenu}
- * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/enumerateDevices | MDN enumerateDevices}
- */
- requestPermissions?: boolean
- /**
- * this callback gets called if an error is thrown when failing to select a device and also if a user
- * denied permissions, eventhough the `requestPermissions` option is set to `true`.
- * Most commonly this will emit a MediaDeviceError
- */
- onError?: (e: Error) => void
-}
-
-/**
- * The `useMediaDeviceSelect` hook is used to implement the `MediaDeviceSelect` component and
- * returns o.a. the list of devices of a given kind (audioinput or videoinput), the currently active device
- * and a function to set the the active device.
- *
- * @example
- * ```tsx
- * const { devices, activeDeviceId, setActiveMediaDevice } = useMediaDeviceSelect({kind: 'audioinput'});
- * ```
- * @public
- */
-export function useMediaDeviceSelect({
- kind,
- room,
- track,
- requestPermissions,
- onError,
-}: UseMediaDeviceSelectProps) {
- const roomContext = useMaybeRoomContext()
- const roomFallback = createMemo(() => room ?? roomContext?.() ?? new Room())
-
- // List of all devices.
- const deviceObserver = createMemo(() =>
- createMediaDeviceObserver(kind, onError, requestPermissions),
- )
-
- const devices = useObservableState(deviceObserver(), [] as MediaDeviceInfo[])
-
- // Active device management.
- const [currentDeviceId, setCurrentDeviceId] = createSignal(
- roomFallback()?.getActiveDevice(kind) ?? 'default',
- )
-
- const deviceSelector = createMemo(() => setupDeviceSelector(kind, roomFallback()))
-
- createEffect(
- on(
- () => deviceSelector(),
- ({ activeDeviceObservable }) => {
- const listener = activeDeviceObservable.subscribe(deviceId => {
- if (!deviceId) {
- return
- }
- console.info('setCurrentDeviceId', deviceId)
- setCurrentDeviceId(deviceId)
- })
-
- onCleanup(() => {
- listener?.unsubscribe()
- })
- },
- ),
- )
-
- return {
- devices,
- className: () => deviceSelector().className,
- activeDeviceId: currentDeviceId,
- setActiveMediaDevice: (
- ...args: Parameters['setActiveMediaDevice']>
- ) => deviceSelector().setActiveMediaDevice(...args),
- }
-}
+// @livekit/components-react@2.9.15
+// Apache-2.0
+
+import { createMediaDeviceObserver, setupDeviceSelector } from '@livekit/components-core'
+import { LocalAudioTrack, LocalVideoTrack, Room } from 'livekit-client'
+import { createEffect, createMemo, createSignal, on, onCleanup } from 'solid-js'
+import { useMaybeRoomContext } from 'src/context'
+import { useObservableState } from './internal'
+
+/** @public */
+export interface UseMediaDeviceSelectProps {
+ kind: MediaDeviceKind
+ room?: Room
+ track?: LocalAudioTrack | LocalVideoTrack
+ /**
+ * this will call getUserMedia if the permissions are not yet given to enumerate the devices with device labels.
+ * in some browsers multiple calls to getUserMedia result in multiple permission prompts.
+ * It's generally advised only flip this to true, once a (preview) track has been acquired successfully with the
+ * appropriate permissions.
+ *
+ * @see {@link MediaDeviceMenu}
+ * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/enumerateDevices | MDN enumerateDevices}
+ */
+ requestPermissions?: boolean
+ /**
+ * this callback gets called if an error is thrown when failing to select a device and also if a user
+ * denied permissions, eventhough the `requestPermissions` option is set to `true`.
+ * Most commonly this will emit a MediaDeviceError
+ */
+ onError?: (e: Error) => void
+}
+
+/**
+ * The `useMediaDeviceSelect` hook is used to implement the `MediaDeviceSelect` component and
+ * returns o.a. the list of devices of a given kind (audioinput or videoinput), the currently active device
+ * and a function to set the the active device.
+ *
+ * @example
+ * ```tsx
+ * const { devices, activeDeviceId, setActiveMediaDevice } = useMediaDeviceSelect({kind: 'audioinput'});
+ * ```
+ * @public
+ */
+export function useMediaDeviceSelect({
+ kind,
+ room,
+ track,
+ requestPermissions,
+ onError,
+}: UseMediaDeviceSelectProps) {
+ const roomContext = useMaybeRoomContext()
+ const roomFallback = createMemo(() => room ?? roomContext?.() ?? new Room())
+
+ // List of all devices.
+ const deviceObserver = createMemo(() =>
+ createMediaDeviceObserver(kind, onError, requestPermissions),
+ )
+
+ const devices = useObservableState(deviceObserver(), [] as MediaDeviceInfo[])
+
+ // Active device management.
+ const [currentDeviceId, setCurrentDeviceId] = createSignal(
+ roomFallback()?.getActiveDevice(kind) ?? 'default',
+ )
+
+ const deviceSelector = createMemo(() => setupDeviceSelector(kind, roomFallback()))
+
+ createEffect(
+ on(
+ () => deviceSelector(),
+ ({ activeDeviceObservable }) => {
+ const listener = activeDeviceObservable.subscribe(deviceId => {
+ if (!deviceId) {
+ return
+ }
+ console.info('setCurrentDeviceId', deviceId)
+ setCurrentDeviceId(deviceId)
+ })
+
+ onCleanup(() => {
+ listener?.unsubscribe()
+ })
+ },
+ ),
+ )
+
+ return {
+ devices,
+ className: () => deviceSelector().className,
+ activeDeviceId: currentDeviceId,
+ setActiveMediaDevice: (
+ ...args: Parameters['setActiveMediaDevice']>
+ ) => deviceSelector().setActiveMediaDevice(...args),
+ }
+}
diff --git a/src/signals/useMediaDevices.ts b/src/signals/useMediaDevices.ts
index 43dee18..9ced51c 100644
--- a/src/signals/useMediaDevices.ts
+++ b/src/signals/useMediaDevices.ts
@@ -1,31 +1,31 @@
-// @livekit/components-react@2.9.15
-// Apache-2.0
-
-import { createMediaDeviceObserver } from "@livekit/components-core";
-import { createMemo } from "solid-js";
-import { useObservableState } from "./internal";
-
-/**
- * The `useMediaDevices` hook returns the list of media devices of a given kind.
- *
- * @example
- * ```tsx
- * const videoDevices = useMediaDevices({ kind: 'videoinput' });
- * const audioDevices = useMediaDevices({ kind: 'audioinput' });
- * ```
- * @public
- */
-export function useMediaDevices({
- kind,
- onError,
-}: {
- kind: MediaDeviceKind;
- onError?: (e: Error) => void;
-}) {
- const deviceObserver = createMemo(
- () => createMediaDeviceObserver(kind, onError),
- );
-
- const devices = useObservableState(deviceObserver(), [] as MediaDeviceInfo[]);
- return devices;
+// @livekit/components-react@2.9.15
+// Apache-2.0
+
+import { createMediaDeviceObserver } from "@livekit/components-core";
+import { createMemo } from "solid-js";
+import { useObservableState } from "./internal";
+
+/**
+ * The `useMediaDevices` hook returns the list of media devices of a given kind.
+ *
+ * @example
+ * ```tsx
+ * const videoDevices = useMediaDevices({ kind: 'videoinput' });
+ * const audioDevices = useMediaDevices({ kind: 'audioinput' });
+ * ```
+ * @public
+ */
+export function useMediaDevices({
+ kind,
+ onError,
+}: {
+ kind: MediaDeviceKind;
+ onError?: (e: Error) => void;
+}) {
+ const deviceObserver = createMemo(
+ () => createMediaDeviceObserver(kind, onError),
+ );
+
+ const devices = useObservableState(deviceObserver(), [] as MediaDeviceInfo[]);
+ return devices;
}
\ No newline at end of file
diff --git a/src/signals/useMediaTrackBySourceOrName.ts b/src/signals/useMediaTrackBySourceOrName.ts
index 42ba28e..c7c5b30 100644
--- a/src/signals/useMediaTrackBySourceOrName.ts
+++ b/src/signals/useMediaTrackBySourceOrName.ts
@@ -1,98 +1,98 @@
-// @livekit/components-react@2.0.4
-// Apache-2.0
-
-import type { TrackIdentifier } from '@livekit/components-core'
-import { isTrackReference } from '@livekit/components-core'
-import { setupMediaTrack, log, isLocal, getTrackByIdentifier } from '@livekit/components-core'
-import { createEffect, createMemo, createSignal } from 'solid-js'
-import type { JSX } from 'solid-js/jsx-runtime'
-
-/** @public */
-export interface UseMediaTrackOptions {
- element?: () => HTMLMediaElement | undefined
- props?: JSX.HTMLAttributes
-}
-
-/**
- * @internal
- */
-export function useMediaTrackBySourceOrName(
- observerOptions: TrackIdentifier,
- options: UseMediaTrackOptions = {},
-) {
- const [publication, setPublication] = createSignal(getTrackByIdentifier(observerOptions))
-
- const [isMuted, setMuted] = createSignal(publication()?.isMuted)
- const [isSubscribed, setSubscribed] = createSignal(publication()?.isSubscribed)
-
- const [track, setTrack] = createSignal(publication()?.track)
- const [orientation, setOrientation] = createSignal<'landscape' | 'portrait'>('landscape')
- let previousElement: HTMLMediaElement | undefined
-
- const mediaTrack = createMemo(() => {
- // { className, trackObserver }
- return setupMediaTrack(observerOptions)
- }, [
- observerOptions.participant.sid ?? observerOptions.participant.identity,
- observerOptions.source,
- isTrackReference(observerOptions) && observerOptions.publication.trackSid,
- ])
-
- createEffect(() => {
- const subscription = mediaTrack().trackObserver.subscribe(publication => {
- log.debug('update track', publication)
- setPublication(publication)
- setMuted(publication?.isMuted)
- setSubscribed(publication?.isSubscribed)
- setTrack(publication?.track)
- })
-
- return () => subscription.unsubscribe()
- })
-
- createEffect(() => {
- const t = track()
- const el = options.element?.()
- if (t) {
- if (previousElement) {
- t.detach(previousElement)
- }
- if (el && !(isLocal(observerOptions.participant) && t.kind === 'audio')) {
- console.info('attaching!')
- t.attach(el)
- }
- }
- previousElement = el
- return () => {
- if (previousElement) {
- t?.detach(previousElement)
- }
- }
- })
-
- createEffect(() => {
- // Set the orientation of the video track.
- // TODO: This does not handle changes in orientation after a track got published (e.g when rotating a phone camera from portrait to landscape).
- const pub = publication()
- if (typeof pub?.dimensions?.width === 'number' && typeof pub.dimensions?.height === 'number') {
- const orientation_ = pub.dimensions.width > pub.dimensions.height ? 'landscape' : 'portrait'
- setOrientation(orientation_)
- }
- })
-
- return {
- publication,
- isMuted,
- isSubscribed,
- track,
- elementProps: () => ({
- ...options.props,
- ...{
- className: mediaTrack().className,
- 'data-lk-local-participant': observerOptions.participant.isLocal,
- 'data-lk-source': publication()?.source,
- ...(publication()?.kind === 'video' && { 'data-lk-orientation': orientation }),
- },
- }),
- }
-}
+// @livekit/components-react@2.0.4
+// Apache-2.0
+
+import type { TrackIdentifier } from '@livekit/components-core'
+import { isTrackReference } from '@livekit/components-core'
+import { setupMediaTrack, log, isLocal, getTrackByIdentifier } from '@livekit/components-core'
+import { createEffect, createMemo, createSignal } from 'solid-js'
+import type { JSX } from 'solid-js/jsx-runtime'
+
+/** @public */
+export interface UseMediaTrackOptions {
+ element?: () => HTMLMediaElement | undefined
+ props?: JSX.HTMLAttributes
+}
+
+/**
+ * @internal
+ */
+export function useMediaTrackBySourceOrName(
+ observerOptions: TrackIdentifier,
+ options: UseMediaTrackOptions = {},
+) {
+ const [publication, setPublication] = createSignal(getTrackByIdentifier(observerOptions))
+
+ const [isMuted, setMuted] = createSignal(publication()?.isMuted)
+ const [isSubscribed, setSubscribed] = createSignal(publication()?.isSubscribed)
+
+ const [track, setTrack] = createSignal(publication()?.track)
+ const [orientation, setOrientation] = createSignal<'landscape' | 'portrait'>('landscape')
+ let previousElement: HTMLMediaElement | undefined
+
+ const mediaTrack = createMemo(() => {
+ // { className, trackObserver }
+ return setupMediaTrack(observerOptions)
+ }, [
+ observerOptions.participant.sid ?? observerOptions.participant.identity,
+ observerOptions.source,
+ isTrackReference(observerOptions) && observerOptions.publication.trackSid,
+ ])
+
+ createEffect(() => {
+ const subscription = mediaTrack().trackObserver.subscribe(publication => {
+ log.debug('update track', publication)
+ setPublication(publication)
+ setMuted(publication?.isMuted)
+ setSubscribed(publication?.isSubscribed)
+ setTrack(publication?.track)
+ })
+
+ return () => subscription.unsubscribe()
+ })
+
+ createEffect(() => {
+ const t = track()
+ const el = options.element?.()
+ if (t) {
+ if (previousElement) {
+ t.detach(previousElement)
+ }
+ if (el && !(isLocal(observerOptions.participant) && t.kind === 'audio')) {
+ console.info('attaching!')
+ t.attach(el)
+ }
+ }
+ previousElement = el
+ return () => {
+ if (previousElement) {
+ t?.detach(previousElement)
+ }
+ }
+ })
+
+ createEffect(() => {
+ // Set the orientation of the video track.
+ // TODO: This does not handle changes in orientation after a track got published (e.g when rotating a phone camera from portrait to landscape).
+ const pub = publication()
+ if (typeof pub?.dimensions?.width === 'number' && typeof pub.dimensions?.height === 'number') {
+ const orientation_ = pub.dimensions.width > pub.dimensions.height ? 'landscape' : 'portrait'
+ setOrientation(orientation_)
+ }
+ })
+
+ return {
+ publication,
+ isMuted,
+ isSubscribed,
+ track,
+ elementProps: () => ({
+ ...options.props,
+ ...{
+ className: mediaTrack().className,
+ 'data-lk-local-participant': observerOptions.participant.isLocal,
+ 'data-lk-source': publication()?.source,
+ ...(publication()?.kind === 'video' && { 'data-lk-orientation': orientation }),
+ },
+ }),
+ }
+}
diff --git a/src/signals/useTracks.ts b/src/signals/useTracks.ts
index 3f8a22f..177486c 100644
--- a/src/signals/useTracks.ts
+++ b/src/signals/useTracks.ts
@@ -1,155 +1,155 @@
-// @livekit/components-react@2.0.4
-// Apache-2.0
-
-import { Accessor, createEffect, createMemo, createSignal } from 'solid-js'
-
-import {
- SourcesArray,
- TrackReference,
- TrackReferenceOrPlaceholder,
- TrackReferencePlaceholder,
- TrackSourceWithOptions,
- isSourceWitOptions,
- isSourcesWithOptions,
- log,
- trackReferencesObservable,
-} from '@livekit/components-core'
-import type { Participant, Room, RoomEvent } from 'livekit-client'
-import { Track } from 'livekit-client'
-
-import { useEnsureRoom } from '../context'
-
-/** @public */
-export type UseTracksOptions = {
- updateOnlyOn?: RoomEvent[]
- onlySubscribed?: boolean
- room?: Room
-}
-
-/** @public */
-export type UseTracksHookReturnType = T extends Track.Source[]
- ? TrackReference[]
- : T extends TrackSourceWithOptions[]
- ? TrackReferenceOrPlaceholder[]
- : never
-
-/**
- * The `useTracks` hook returns an array of `TrackReference` or `TrackReferenceOrPlaceholder` depending on the provided `sources` property.
- * If only subscribed tracks are desired, set the `onlySubscribed` property to `true`.
- * @example
- * ```ts
- * // Return all camera track publications.
- * const trackReferences: TrackReference[] = useTracks([Track.Source.Camera])
- * ```
- * @example
- * ```ts
- * // Return all subscribed camera tracks as well as placeholders for
- * // participants without a camera subscription.
- * const trackReferencesWithPlaceholders: TrackReferenceOrPlaceholder[] = useTracks([{source: Track.Source.Camera, withPlaceholder: true}])
- * ```
- * @public
- */
-export function useTracks(
- sources: T = [
- Track.Source.Camera,
- Track.Source.Microphone,
- Track.Source.ScreenShare,
- Track.Source.ScreenShareAudio,
- Track.Source.Unknown,
- ] as T,
- options: UseTracksOptions = {},
-): Accessor> {
- const room = useEnsureRoom(options.room)
- const [trackReferences, setTrackReferences] = createSignal([])
- const [participants, setParticipants] = createSignal([])
-
- const sources_ = createMemo(() => {
- return sources.map(s => (isSourceWitOptions(s) ? s.source : s))
- })
-
- createEffect(() => {
- const subscription = trackReferencesObservable(room(), sources_(), {
- additionalRoomEvents: options.updateOnlyOn,
- onlySubscribed: options.onlySubscribed,
- }).subscribe(({ trackReferences, participants }) => {
- log.debug('setting track bundles', trackReferences, participants)
- setTrackReferences(trackReferences)
- setParticipants(participants)
- })
-
- return () => subscription.unsubscribe()
- }, [room(), JSON.stringify(options.updateOnlyOn), JSON.stringify(sources)])
-
- const maybeTrackReferences = createMemo(() => {
- if (isSourcesWithOptions(sources)) {
- const requirePlaceholder = requiredPlaceholders(sources, participants())
- const trackReferencesWithPlaceholders: TrackReferenceOrPlaceholder[] = Array.from(
- trackReferences(),
- )
-
- participants().forEach(participant => {
- if (requirePlaceholder.has(participant.identity)) {
- const sourcesToAddPlaceholder = requirePlaceholder.get(participant.identity) ?? []
- sourcesToAddPlaceholder.forEach(placeholderSource => {
- if (
- trackReferences().find(
- ({ participant: p, publication }) =>
- participant.identity === p.identity && publication.source === placeholderSource,
- )
- ) {
- return
- }
- log.debug(
- `Add ${placeholderSource} placeholder for participant ${participant.identity}.`,
- )
- const placeholder: TrackReferencePlaceholder = {
- participant,
- source: placeholderSource,
- }
- trackReferencesWithPlaceholders.push(placeholder)
- })
- }
- })
- return trackReferencesWithPlaceholders
- } else {
- return trackReferences()
- }
- })
-
- return maybeTrackReferences as Accessor>
-}
-
-function difference(setA: Set, setB: Set): Set {
- const _difference = new Set(setA)
- for (const elem of setB) {
- _difference.delete(elem)
- }
- return _difference
-}
-
-export function requiredPlaceholders(
- sources: T,
- participants: Participant[],
-): Map {
- const placeholderMap = new Map()
- if (isSourcesWithOptions(sources)) {
- const sourcesThatNeedPlaceholder = sources
- .filter(sourceWithOption => sourceWithOption.withPlaceholder)
- .map(sourceWithOption => sourceWithOption.source)
-
- participants.forEach(participant => {
- const sourcesOfSubscribedTracks = participant
- .getTrackPublications()
- .map(pub => pub.track?.source)
- .filter((trackSource): trackSource is Track.Source => trackSource !== undefined)
- const placeholderNeededForThisParticipant = Array.from(
- difference(new Set(sourcesThatNeedPlaceholder), new Set(sourcesOfSubscribedTracks)),
- )
- // If the participant needs placeholder add it to the placeholder map.
- if (placeholderNeededForThisParticipant.length > 0) {
- placeholderMap.set(participant.identity, placeholderNeededForThisParticipant)
- }
- })
- }
- return placeholderMap
-}
+// @livekit/components-react@2.0.4
+// Apache-2.0
+
+import { Accessor, createEffect, createMemo, createSignal } from 'solid-js'
+
+import {
+ SourcesArray,
+ TrackReference,
+ TrackReferenceOrPlaceholder,
+ TrackReferencePlaceholder,
+ TrackSourceWithOptions,
+ isSourceWitOptions,
+ isSourcesWithOptions,
+ log,
+ trackReferencesObservable,
+} from '@livekit/components-core'
+import type { Participant, Room, RoomEvent } from 'livekit-client'
+import { Track } from 'livekit-client'
+
+import { useEnsureRoom } from '../context'
+
+/** @public */
+export type UseTracksOptions = {
+ updateOnlyOn?: RoomEvent[]
+ onlySubscribed?: boolean
+ room?: Room
+}
+
+/** @public */
+export type UseTracksHookReturnType = T extends Track.Source[]
+ ? TrackReference[]
+ : T extends TrackSourceWithOptions[]
+ ? TrackReferenceOrPlaceholder[]
+ : never
+
+/**
+ * The `useTracks` hook returns an array of `TrackReference` or `TrackReferenceOrPlaceholder` depending on the provided `sources` property.
+ * If only subscribed tracks are desired, set the `onlySubscribed` property to `true`.
+ * @example
+ * ```ts
+ * // Return all camera track publications.
+ * const trackReferences: TrackReference[] = useTracks([Track.Source.Camera])
+ * ```
+ * @example
+ * ```ts
+ * // Return all subscribed camera tracks as well as placeholders for
+ * // participants without a camera subscription.
+ * const trackReferencesWithPlaceholders: TrackReferenceOrPlaceholder[] = useTracks([{source: Track.Source.Camera, withPlaceholder: true}])
+ * ```
+ * @public
+ */
+export function useTracks(
+ sources: T = [
+ Track.Source.Camera,
+ Track.Source.Microphone,
+ Track.Source.ScreenShare,
+ Track.Source.ScreenShareAudio,
+ Track.Source.Unknown,
+ ] as T,
+ options: UseTracksOptions = {},
+): Accessor> {
+ const room = useEnsureRoom(options.room)
+ const [trackReferences, setTrackReferences] = createSignal([])
+ const [participants, setParticipants] = createSignal([])
+
+ const sources_ = createMemo(() => {
+ return sources.map(s => (isSourceWitOptions(s) ? s.source : s))
+ })
+
+ createEffect(() => {
+ const subscription = trackReferencesObservable(room(), sources_(), {
+ additionalRoomEvents: options.updateOnlyOn,
+ onlySubscribed: options.onlySubscribed,
+ }).subscribe(({ trackReferences, participants }) => {
+ log.debug('setting track bundles', trackReferences, participants)
+ setTrackReferences(trackReferences)
+ setParticipants(participants)
+ })
+
+ return () => subscription.unsubscribe()
+ }, [room(), JSON.stringify(options.updateOnlyOn), JSON.stringify(sources)])
+
+ const maybeTrackReferences = createMemo(() => {
+ if (isSourcesWithOptions(sources)) {
+ const requirePlaceholder = requiredPlaceholders(sources, participants())
+ const trackReferencesWithPlaceholders: TrackReferenceOrPlaceholder[] = Array.from(
+ trackReferences(),
+ )
+
+ participants().forEach(participant => {
+ if (requirePlaceholder.has(participant.identity)) {
+ const sourcesToAddPlaceholder = requirePlaceholder.get(participant.identity) ?? []
+ sourcesToAddPlaceholder.forEach(placeholderSource => {
+ if (
+ trackReferences().find(
+ ({ participant: p, publication }) =>
+ participant.identity === p.identity && publication.source === placeholderSource,
+ )
+ ) {
+ return
+ }
+ log.debug(
+ `Add ${placeholderSource} placeholder for participant ${participant.identity}.`,
+ )
+ const placeholder: TrackReferencePlaceholder = {
+ participant,
+ source: placeholderSource,
+ }
+ trackReferencesWithPlaceholders.push(placeholder)
+ })
+ }
+ })
+ return trackReferencesWithPlaceholders
+ } else {
+ return trackReferences()
+ }
+ })
+
+ return maybeTrackReferences as Accessor>
+}
+
+function difference(setA: Set, setB: Set): Set {
+ const _difference = new Set(setA)
+ for (const elem of setB) {
+ _difference.delete(elem)
+ }
+ return _difference
+}
+
+export function requiredPlaceholders(
+ sources: T,
+ participants: Participant[],
+): Map {
+ const placeholderMap = new Map()
+ if (isSourcesWithOptions(sources)) {
+ const sourcesThatNeedPlaceholder = sources
+ .filter(sourceWithOption => sourceWithOption.withPlaceholder)
+ .map(sourceWithOption => sourceWithOption.source)
+
+ participants.forEach(participant => {
+ const sourcesOfSubscribedTracks = participant
+ .getTrackPublications()
+ .map(pub => pub.track?.source)
+ .filter((trackSource): trackSource is Track.Source => trackSource !== undefined)
+ const placeholderNeededForThisParticipant = Array.from(
+ difference(new Set(sourcesThatNeedPlaceholder), new Set(sourcesOfSubscribedTracks)),
+ )
+ // If the participant needs placeholder add it to the placeholder map.
+ if (placeholderNeededForThisParticipant.length > 0) {
+ placeholderMap.set(participant.identity, placeholderNeededForThisParticipant)
+ }
+ })
+ }
+ return placeholderMap
+}
diff --git a/tsconfig.json b/tsconfig.json
index 43338a3..b31c55e 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -1,22 +1,22 @@
-{
- "compilerOptions": {
- "strict": true,
- "target": "ESNext",
- "module": "ESNext",
- "lib": ["DOM", "DOM.Iterable", "ESNext"],
- "moduleResolution": "node",
- "resolveJsonModule": true,
- "esModuleInterop": true,
- "noEmit": true,
- "isolatedModules": true,
- "skipLibCheck": true,
- "allowSyntheticDefaultImports": true,
- "forceConsistentCasingInFileNames": true,
- "noUncheckedIndexedAccess": true,
- "jsx": "preserve",
- "jsxImportSource": "solid-js",
- "types": [],
- "baseUrl": "."
- },
- "exclude": ["node_modules", "dist", "./dev"]
-}
+{
+ "compilerOptions": {
+ "strict": true,
+ "target": "ESNext",
+ "module": "ESNext",
+ "lib": ["DOM", "DOM.Iterable", "ESNext"],
+ "moduleResolution": "node",
+ "resolveJsonModule": true,
+ "esModuleInterop": true,
+ "noEmit": true,
+ "isolatedModules": true,
+ "skipLibCheck": true,
+ "allowSyntheticDefaultImports": true,
+ "forceConsistentCasingInFileNames": true,
+ "noUncheckedIndexedAccess": true,
+ "jsx": "preserve",
+ "jsxImportSource": "solid-js",
+ "types": [],
+ "baseUrl": "."
+ },
+ "exclude": ["node_modules", "dist", "./dev"]
+}
diff --git a/tsup.config.ts b/tsup.config.ts
index efa23bc..ce02430 100644
--- a/tsup.config.ts
+++ b/tsup.config.ts
@@ -1,42 +1,42 @@
-import { defineConfig } from 'tsup'
-import * as preset from 'tsup-preset-solid'
-
-const preset_options: preset.PresetOptions = {
- // array or single object
- entries: [
- // default entry (index)
- {
- // entries with '.tsx' extension will have `solid` export condition generated
- entry: 'src/index.tsx',
- // will generate a separate development entry
- dev_entry: true,
- },
- ],
- // Set to `true` to remove all `console.*` calls and `debugger` statements in prod builds
- drop_console: true,
- // Set to `true` to generate a CommonJS build alongside ESM
- // cjs: true,
-}
-
-const CI =
- process.env['CI'] === 'true' ||
- process.env['GITHUB_ACTIONS'] === 'true' ||
- process.env['CI'] === '"1"' ||
- process.env['GITHUB_ACTIONS'] === '"1"'
-
-export default defineConfig(config => {
- const watching = !!config.watch
-
- const parsed_options = preset.parsePresetOptions(preset_options, watching)
-
- if (!watching && !CI) {
- const package_fields = preset.generatePackageExports(parsed_options)
-
- console.log(`package.json: \n\n${JSON.stringify(package_fields, null, 2)}\n\n`)
-
- // will update ./package.json with the correct export fields
- preset.writePackageJson(package_fields)
- }
-
- return preset.generateTsupOptions(parsed_options)
-})
+import { defineConfig } from 'tsup'
+import * as preset from 'tsup-preset-solid'
+
+const preset_options: preset.PresetOptions = {
+ // array or single object
+ entries: [
+ // default entry (index)
+ {
+ // entries with '.tsx' extension will have `solid` export condition generated
+ entry: 'src/index.tsx',
+ // will generate a separate development entry
+ dev_entry: true,
+ },
+ ],
+ // Set to `true` to remove all `console.*` calls and `debugger` statements in prod builds
+ drop_console: true,
+ // Set to `true` to generate a CommonJS build alongside ESM
+ // cjs: true,
+}
+
+const CI =
+ process.env['CI'] === 'true' ||
+ process.env['GITHUB_ACTIONS'] === 'true' ||
+ process.env['CI'] === '"1"' ||
+ process.env['GITHUB_ACTIONS'] === '"1"'
+
+export default defineConfig(config => {
+ const watching = !!config.watch
+
+ const parsed_options = preset.parsePresetOptions(preset_options, watching)
+
+ if (!watching && !CI) {
+ const package_fields = preset.generatePackageExports(parsed_options)
+
+ console.log(`package.json: \n\n${JSON.stringify(package_fields, null, 2)}\n\n`)
+
+ // will update ./package.json with the correct export fields
+ preset.writePackageJson(package_fields)
+ }
+
+ return preset.generateTsupOptions(parsed_options)
+})