diff --git a/.changeset/README.md b/.changeset/README.md
new file mode 100644
index 0000000..e5b6d8d
--- /dev/null
+++ b/.changeset/README.md
@@ -0,0 +1,8 @@
+# Changesets
+
+Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works
+with multi-package repos, or single-package repos to help you version and publish your code. You can
+find the full documentation for it [in our repository](https://github.com/changesets/changesets)
+
+We have a quick list of common questions to get you started engaging with this project in
+[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md)
diff --git a/.changeset/config.json b/.changeset/config.json
new file mode 100644
index 0000000..fce1c26
--- /dev/null
+++ b/.changeset/config.json
@@ -0,0 +1,11 @@
+{
+ "$schema": "https://unpkg.com/@changesets/config@3.0.0/schema.json",
+ "changelog": "@changesets/cli/changelog",
+ "commit": false,
+ "fixed": [],
+ "linked": [],
+ "access": "public",
+ "baseBranch": "main",
+ "updateInternalDependencies": "patch",
+ "ignore": []
+}
diff --git a/.eslintignore b/.eslintignore
index 0a3702c..24903e6 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -13,3 +13,4 @@ package-lock.json
yarn.lock
package.json
+dist
\ No newline at end of file
diff --git a/.eslintrc.cjs b/.eslintrc.cjs
index c65b562..6562cf7 100644
--- a/.eslintrc.cjs
+++ b/.eslintrc.cjs
@@ -3,7 +3,8 @@ module.exports = {
extends: [
'eslint:recommended',
'plugin:@typescript-eslint/recommended',
- 'plugin:svelte/recommended'
+ 'plugin:svelte/recommended',
+ 'prettier'
],
parser: '@typescript-eslint/parser',
plugins: ['@typescript-eslint'],
@@ -23,10 +24,19 @@ module.exports = {
parser: 'svelte-eslint-parser',
parserOptions: {
parser: '@typescript-eslint/parser'
+ },
+ rules: {
+ '@typescript-eslint/no-unused-vars': [
+ 'warn',
+ {
+ argsIgnorePattern: '^_',
+ varsIgnorePattern: '^\\$\\$(Props|Events|Slots|Generic)$'
+ }
+ ]
}
}
- ],
- rules: {
- 'quotes': [2, 'single', { 'avoidEscape': true }]
- }
+ ]
+ // rules: {
+ // quotes: [2, 'single', { avoidEscape: true }]
+ // }
};
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 0000000..bcf60d2
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,114 @@
+name: CI
+
+on:
+ push:
+ branches:
+ - main
+ pull_request:
+
+concurrency:
+ group: ${{ github.workflow }}-${{ github.event.number || github.sha }}
+ cancel-in-progress: true
+
+jobs:
+ Check:
+ name: Run svelte-check
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ with:
+ fetch-depth: 0
+
+ - uses: pnpm/action-setup@v2
+ with:
+ version: 8
+
+ - uses: actions/setup-node@v3
+ with:
+ node-version: 18
+
+ # PNPM Store cache setup
+ - name: Get pnpm store directory
+ id: pnpm-cache
+ run: |
+ echo "pnpm_cache_dir=$(pnpm store path)" >> $GITHUB_OUTPUT
+ - name: Setup pnpm cache
+ uses: actions/cache@v3
+ with:
+ path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }}
+ key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
+ restore-keys: |
+ ${{ runner.os }}-pnpm-store-
+
+ - name: Install dependencies
+ run: pnpm install
+
+ - name: Run svelte-check
+ run: pnpm check
+
+ Lint:
+ runs-on: ubuntu-latest
+ name: Lint
+ steps:
+ - uses: actions/checkout@v3
+ with:
+ fetch-depth: 0
+
+ - name: Install Node.JS
+ uses: actions/setup-node@v3
+ with:
+ node-version: 18
+
+ - uses: pnpm/action-setup@v2
+ name: Install pnpm
+ id: pnpm-install
+ with:
+ version: 8
+
+ # PNPM Store cache setup
+ - name: Get pnpm store directory
+ id: pnpm-cache
+ run: |
+ echo "pnpm_cache_dir=$(pnpm store path)" >> $GITHUB_OUTPUT
+
+ - name: Setup pnpm cache
+ uses: actions/cache@v3
+ with:
+ path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }}
+ key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
+ restore-keys: |
+ ${{ runner.os }}-pnpm-store-
+
+ - name: Install dependencies
+ run: pnpm install
+
+ - run: pnpm lint
+
+ Tests:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - uses: pnpm/action-setup@v2
+ with:
+ version: 8.6.3
+ run_install: true
+ - run: pnpm run test:unit
+
+ Playwright:
+ timeout-minutes: 60
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - uses: oven-sh/setup-bun@v1
+ with:
+ bun-version: latest
+ - run: bun install
+ - run: bun run build
+ - run: bun run playwright install --with-deps
+ - run: bun run test || exit 1
+ - uses: actions/upload-artifact@v3
+ if: always()
+ with:
+ name: playwright-report
+ path: playwright-report/
+ retention-days: 30
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 0000000..8e4635d
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,41 @@
+name: Release
+
+on:
+ push:
+ branches:
+ - main
+
+concurrency: ${{ github.workflow }}-${{ github.ref }}
+
+jobs:
+ release:
+ permissions:
+ contents: write # to create release (changesets/action)
+ pull-requests: write # to create pull request (changesets/action)
+ name: Release
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout Repo
+ uses: actions/checkout@v3
+ with:
+ # This makes Actions fetch all Git history so that Changesets can generate changelogs with the correct commits
+ fetch-depth: 0
+ - uses: pnpm/action-setup@v2.2.4
+ with:
+ version: 8.6.3
+ - name: Setup Node.js
+ uses: actions/setup-node@v3
+ with:
+ node-version: '18.x'
+ cache: pnpm
+
+ - run: pnpm install --frozen-lockfile
+
+ - name: Create Release Pull Request or Publish to npm
+ id: changesets
+ uses: changesets/action@v1
+ with:
+ publish: pnpm release
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
diff --git a/.prettierignore b/.prettierignore
new file mode 100644
index 0000000..a0203a9
--- /dev/null
+++ b/.prettierignore
@@ -0,0 +1,22 @@
+.DS_Store
+node_modules
+/build
+/.svelte-kit
+/package
+.env
+.env.*
+!.env.example
+
+# Ignore files for PNPM, NPM and YARN
+pnpm-lock.yaml
+package-lock.json
+yarn.lock
+.changeset/
+.prettierrc
+package.json
+.vercel
+.contentlayer
+dist
+
+vite.config.js.timestamp-*
+vite.config.ts.timestamp-*
diff --git a/.prettierrc b/.prettierrc
new file mode 100644
index 0000000..3089de2
--- /dev/null
+++ b/.prettierrc
@@ -0,0 +1,19 @@
+{
+ "useTabs": true,
+ "singleQuote": true,
+ "trailingComma": "none",
+ "tabWidth": 4,
+ "printWidth": 100,
+ "plugins": [
+ "prettier-plugin-svelte"
+ ],
+ "overrides": [
+ {
+ "files": "*.svelte",
+ "options": {
+ "parser": "svelte",
+ "printWidth": 80
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/README.md b/README.md
index 8842943..e00eaee 100644
--- a/README.md
+++ b/README.md
@@ -24,7 +24,7 @@ Add `` to your app, it will be the place where all your toasts will b
```svelte
@@ -38,18 +38,18 @@ import { Toaster, toast } from 'svelte-sonner'
Most basic toast. You can customize it (and any other type) by passing an options object as the second argument.
```js
-toast('Event has been created')
+toast('Event has been created');
```
With custom icon and description:
```js
-import Icon from './Icon.svelte'
+import Icon from './Icon.svelte';
toast('Event has been created', {
- description: 'Monday, January 3rd at 6:00pm',
- icon: Icon,
-})
+ description: 'Monday, January 3rd at 6:00pm',
+ icon: Icon
+});
```
### Success
@@ -57,7 +57,7 @@ toast('Event has been created', {
Renders a checkmark icon in front of the message.
```js
-toast.success('Event has been created')
+toast.success('Event has been created');
```
### Info
@@ -65,7 +65,7 @@ toast.success('Event has been created')
Renders a question mark icon in front of the message.
```js
-toast.success('Event has new information')
+toast.success('Event has new information');
```
### Warning
@@ -73,7 +73,7 @@ toast.success('Event has new information')
Renders a warning icon in front of the message.
```js
-toast.success('Event has warning')
+toast.success('Event has warning');
```
### Error
@@ -81,7 +81,7 @@ toast.success('Event has warning')
Renders an error icon in front of the message.
```js
-toast.error('Event has not been created')
+toast.error('Event has not been created');
```
### Action
@@ -90,11 +90,11 @@ Renders a button.
```js
toast('Event has been created', {
- action: {
- label: 'Undo',
- onClick: () => console.log('Undo'),
- },
-})
+ action: {
+ label: 'Undo',
+ onClick: () => console.log('Undo')
+ }
+});
```
### Promise
@@ -102,23 +102,23 @@ toast('Event has been created', {
Starts in a loading state and will update automatically after the promise resolves or fails.
```js
-toast.promise(() => new Promise(resolve => setTimeout(resolve, 2000)), {
- loading: 'Loading',
- success: 'Success',
- error: 'Error',
-})
+toast.promise(() => new Promise((resolve) => setTimeout(resolve, 2000)), {
+ loading: 'Loading',
+ success: 'Success',
+ error: 'Error'
+});
```
You can pass a function to the success/error messages to incorporate the result/error of the promise.
```js
toast.promise(promise, {
- loading: 'Loading...',
- success: (data) => {
- return `${data.name} has been added!`
- },
- error: 'Error',
-})
+ loading: 'Loading...',
+ success: (data) => {
+ return `${data.name} has been added!`;
+ },
+ error: 'Error'
+});
```
### Custom Component
@@ -126,7 +126,7 @@ toast.promise(promise, {
You can pass a component as the first argument instead of a string to render custom component while maintaining default styling. You can use the headless version below for a custom, unstyled toast.
```js
-toast(CustomComponent)
+toast(CustomComponent);
```
### Updating a toast
@@ -134,11 +134,11 @@ toast(CustomComponent)
You can update a toast by using the `toast` function and passing it the id of the toast you want to update, the rest stays the same.
```js
-const toastId = toast('Sonner')
+const toastId = toast('Sonner');
toast.success('Toast has been updated', {
- id: toastId,
-})
+ id: toastId
+});
```
## Customization
@@ -149,20 +149,20 @@ You can use `toast.custom` to render an unstyled toast with custom component whi
```svelte
-
- This is a custom component
+
+ This is a custom component
```
```js
-import HeadlessToast from './HeadlessToast.svelte'
+import HeadlessToast from './HeadlessToast.svelte';
-toast.custom(HeadlessToast)
+toast.custom(HeadlessToast);
```
### Theme
@@ -198,7 +198,11 @@ You can style your toasts globally with the `toastOptions` prop in the `Toaster`
```svelte
```
@@ -206,10 +210,10 @@ You can style your toasts globally with the `toastOptions` prop in the `Toaster`
```js
toast('Event has been created', {
- style: 'background: red;',
- class: 'my-toast',
- descriptionClass: 'my-toast-description',
-})
+ style: 'background: red;',
+ class: 'my-toast',
+ descriptionClass: 'my-toast-description'
+});
```
### Close button
@@ -241,25 +245,25 @@ Offset from the edges of the screen.
To remove a toast programmatically use `toast.dismiss(id)`.
```js
-const toastId = toast('Event has been created')
+const toastId = toast('Event has been created');
-toast.dismiss(toastId)
+toast.dismiss(toastId);
```
To remove a toast from inside a custom component, dispatch `closeToast`:
```js
-import { createEventDispatcher } from 'svelte'
+import { createEventDispatcher } from 'svelte';
-const dispatch = createEventDispatcher()
+const dispatch = createEventDispatcher();
-dispatch('closeToast')
+dispatch('closeToast');
```
You can also dismiss all toasts at once by calling `toast.dismiss()` without an id.
```js
-toast.dismiss()
+toast.dismiss();
```
### Duration
@@ -272,13 +276,13 @@ You can change the duration of each toast by using the `duration` property, or c
```js
toast('Event has been created', {
- duration: 10000,
-})
+ duration: 10000
+});
// Persisent toast
toast('Event has been created', {
- duration: Number.POSITIVE_INFINITY,
-})
+ duration: Number.POSITIVE_INFINITY
+});
```
### On Close Callback
@@ -287,9 +291,9 @@ You can pass `onDismiss` and `onAutoClose` callbacks. `onDismiss` gets fired whe
```js
toast('Event has been created', {
- onDismiss: t => console.log(`Toast with id ${t.id} has been dismissed`),
- onAutoClose: t => console.log(`Toast with id ${t.id} has been closed automatically`),
-})
+ onDismiss: (t) => console.log(`Toast with id ${t.id} has been dismissed`),
+ onAutoClose: (t) => console.log(`Toast with id ${t.id} has been closed automatically`)
+});
```
## Keyboard focus
diff --git a/package.json b/package.json
index 275a72d..da20ddd 100644
--- a/package.json
+++ b/package.json
@@ -14,10 +14,12 @@
"package": "svelte-kit sync && svelte-package && publint",
"prepublishOnly": "npm run build",
"test": "playwright test",
+ "test:unit": "vitest",
"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
"check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
- "release": "bumpp && npm publish",
- "lint": "eslint ."
+ "release": "pnpm run package && changeset publish",
+ "lint": "eslint .",
+ "format": "prettier --write ."
},
"exports": {
".": {
@@ -35,17 +37,30 @@
"svelte": ">=3 <5"
},
"devDependencies": {
+ "@changesets/cli": "^2.27.1",
"@playwright/test": "^1.38.0",
"@sveltejs/adapter-auto": "^2.1.0",
"@sveltejs/kit": "^1.25.0",
"@sveltejs/package": "^2.2.2",
+ "@svitejs/changesets-changelog-github-compact": "^1.1.0",
+ "@testing-library/dom": "9.3.1",
+ "@testing-library/jest-dom": "5.17.0",
+ "@testing-library/svelte": "4.0.5",
+ "@testing-library/user-event": "14.4.3",
+ "@types/jest-axe": "^3.5.9",
+ "@types/testing-library__jest-dom": "^5.14.9",
"@typescript-eslint/eslint-plugin": "^6.7.2",
"@typescript-eslint/parser": "^6.7.2",
"bumpp": "^9.2.0",
"copy-to-clipboard": "^3.3.3",
"eslint": "^8.49.0",
+ "eslint-config-prettier": "^9.1.0",
"eslint-plugin-svelte": "^2.33.2",
"highlight.js": "^11.8.0",
+ "jsdom": "22.1.0",
+ "mode-watcher": "^0.1.2",
+ "prettier": "^3.1.1",
+ "prettier-plugin-svelte": "^3.1.2",
"publint": "^0.2.2",
"sass": "^1.67.0",
"svelte": "^4.2.0",
@@ -53,7 +68,8 @@
"svelte-preprocess": "^5.0.4",
"tslib": "^2.6.2",
"typescript": "^5.2.2",
- "vite": "^4.4.9"
+ "vite": "^4.4.9",
+ "vitest": "^1.1.0"
},
"svelte": "./dist/index.js",
"types": "./dist/index.d.ts",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 0b6180e..e15d754 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -5,6 +5,9 @@ settings:
excludeLinksFromLockfile: false
devDependencies:
+ '@changesets/cli':
+ specifier: ^2.27.1
+ version: 2.27.1
'@playwright/test':
specifier: ^1.38.0
version: 1.38.0
@@ -17,6 +20,27 @@ devDependencies:
'@sveltejs/package':
specifier: ^2.2.2
version: 2.2.2(svelte@4.2.0)(typescript@5.2.2)
+ '@svitejs/changesets-changelog-github-compact':
+ specifier: ^1.1.0
+ version: 1.1.0
+ '@testing-library/dom':
+ specifier: 9.3.1
+ version: 9.3.1
+ '@testing-library/jest-dom':
+ specifier: 5.17.0
+ version: 5.17.0
+ '@testing-library/svelte':
+ specifier: 4.0.5
+ version: 4.0.5(svelte@4.2.0)
+ '@testing-library/user-event':
+ specifier: 14.4.3
+ version: 14.4.3(@testing-library/dom@9.3.1)
+ '@types/jest-axe':
+ specifier: ^3.5.9
+ version: 3.5.9
+ '@types/testing-library__jest-dom':
+ specifier: ^5.14.9
+ version: 5.14.9
'@typescript-eslint/eslint-plugin':
specifier: ^6.7.2
version: 6.7.2(@typescript-eslint/parser@6.7.2)(eslint@8.49.0)(typescript@5.2.2)
@@ -32,12 +56,27 @@ devDependencies:
eslint:
specifier: ^8.49.0
version: 8.49.0
+ eslint-config-prettier:
+ specifier: ^9.1.0
+ version: 9.1.0(eslint@8.49.0)
eslint-plugin-svelte:
specifier: ^2.33.2
version: 2.33.2(eslint@8.49.0)(svelte@4.2.0)
highlight.js:
specifier: ^11.8.0
version: 11.8.0
+ jsdom:
+ specifier: 22.1.0
+ version: 22.1.0
+ mode-watcher:
+ specifier: ^0.1.2
+ version: 0.1.2(svelte@4.2.0)
+ prettier:
+ specifier: ^3.1.1
+ version: 3.1.1
+ prettier-plugin-svelte:
+ specifier: ^3.1.2
+ version: 3.1.2(prettier@3.1.1)(svelte@4.2.0)
publint:
specifier: ^0.2.2
version: 0.2.2
@@ -61,7 +100,10 @@ devDependencies:
version: 5.2.2
vite:
specifier: ^4.4.9
- version: 4.4.9(sass@1.67.0)
+ version: 4.4.9(@types/node@20.10.5)(sass@1.67.0)
+ vitest:
+ specifier: ^0.33.0
+ version: 0.33.0(jsdom@22.1.0)(sass@1.67.0)
packages:
@@ -70,6 +112,10 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
+ /@adobe/css-tools@4.3.2:
+ resolution: {integrity: sha512-DA5a1C0gD/pLOvhv33YMrbf2FK3oUzwNl9oOJqE4XVjuEtt6XIakRcsd7eLiOSPkp1kTRQGICTA8cKra/vFbjw==}
+ dev: true
+
/@ampproject/remapping@2.2.1:
resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==}
engines: {node: '>=6.0.0'}
@@ -78,6 +124,227 @@ packages:
'@jridgewell/trace-mapping': 0.3.18
dev: true
+ /@babel/code-frame@7.23.5:
+ resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/highlight': 7.23.4
+ chalk: 2.4.2
+ dev: true
+
+ /@babel/helper-validator-identifier@7.22.20:
+ resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==}
+ engines: {node: '>=6.9.0'}
+ dev: true
+
+ /@babel/highlight@7.23.4:
+ resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/helper-validator-identifier': 7.22.20
+ chalk: 2.4.2
+ js-tokens: 4.0.0
+ dev: true
+
+ /@babel/runtime@7.23.6:
+ resolution: {integrity: sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ regenerator-runtime: 0.14.1
+ dev: true
+
+ /@changesets/apply-release-plan@7.0.0:
+ resolution: {integrity: sha512-vfi69JR416qC9hWmFGSxj7N6wA5J222XNBmezSVATPWDVPIF7gkd4d8CpbEbXmRWbVrkoli3oerGS6dcL/BGsQ==}
+ dependencies:
+ '@babel/runtime': 7.23.6
+ '@changesets/config': 3.0.0
+ '@changesets/get-version-range-type': 0.4.0
+ '@changesets/git': 3.0.0
+ '@changesets/types': 6.0.0
+ '@manypkg/get-packages': 1.1.3
+ detect-indent: 6.1.0
+ fs-extra: 7.0.1
+ lodash.startcase: 4.4.0
+ outdent: 0.5.0
+ prettier: 2.8.8
+ resolve-from: 5.0.0
+ semver: 7.5.4
+ dev: true
+
+ /@changesets/assemble-release-plan@6.0.0:
+ resolution: {integrity: sha512-4QG7NuisAjisbW4hkLCmGW2lRYdPrKzro+fCtZaILX+3zdUELSvYjpL4GTv0E4aM9Mef3PuIQp89VmHJ4y2bfw==}
+ dependencies:
+ '@babel/runtime': 7.23.6
+ '@changesets/errors': 0.2.0
+ '@changesets/get-dependents-graph': 2.0.0
+ '@changesets/types': 6.0.0
+ '@manypkg/get-packages': 1.1.3
+ semver: 7.5.4
+ dev: true
+
+ /@changesets/changelog-git@0.2.0:
+ resolution: {integrity: sha512-bHOx97iFI4OClIT35Lok3sJAwM31VbUM++gnMBV16fdbtBhgYu4dxsphBF/0AZZsyAHMrnM0yFcj5gZM1py6uQ==}
+ dependencies:
+ '@changesets/types': 6.0.0
+ dev: true
+
+ /@changesets/cli@2.27.1:
+ resolution: {integrity: sha512-iJ91xlvRnnrJnELTp4eJJEOPjgpF3NOh4qeQehM6Ugiz9gJPRZ2t+TsXun6E3AMN4hScZKjqVXl0TX+C7AB3ZQ==}
+ hasBin: true
+ dependencies:
+ '@babel/runtime': 7.23.6
+ '@changesets/apply-release-plan': 7.0.0
+ '@changesets/assemble-release-plan': 6.0.0
+ '@changesets/changelog-git': 0.2.0
+ '@changesets/config': 3.0.0
+ '@changesets/errors': 0.2.0
+ '@changesets/get-dependents-graph': 2.0.0
+ '@changesets/get-release-plan': 4.0.0
+ '@changesets/git': 3.0.0
+ '@changesets/logger': 0.1.0
+ '@changesets/pre': 2.0.0
+ '@changesets/read': 0.6.0
+ '@changesets/types': 6.0.0
+ '@changesets/write': 0.3.0
+ '@manypkg/get-packages': 1.1.3
+ '@types/semver': 7.5.0
+ ansi-colors: 4.1.3
+ chalk: 2.4.2
+ ci-info: 3.9.0
+ enquirer: 2.4.1
+ external-editor: 3.1.0
+ fs-extra: 7.0.1
+ human-id: 1.0.2
+ meow: 6.1.1
+ outdent: 0.5.0
+ p-limit: 2.3.0
+ preferred-pm: 3.1.2
+ resolve-from: 5.0.0
+ semver: 7.5.4
+ spawndamnit: 2.0.0
+ term-size: 2.2.1
+ tty-table: 4.2.3
+ dev: true
+
+ /@changesets/config@3.0.0:
+ resolution: {integrity: sha512-o/rwLNnAo/+j9Yvw9mkBQOZySDYyOr/q+wptRLcAVGlU6djOeP9v1nlalbL9MFsobuBVQbZCTp+dIzdq+CLQUA==}
+ dependencies:
+ '@changesets/errors': 0.2.0
+ '@changesets/get-dependents-graph': 2.0.0
+ '@changesets/logger': 0.1.0
+ '@changesets/types': 6.0.0
+ '@manypkg/get-packages': 1.1.3
+ fs-extra: 7.0.1
+ micromatch: 4.0.5
+ dev: true
+
+ /@changesets/errors@0.2.0:
+ resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==}
+ dependencies:
+ extendable-error: 0.1.7
+ dev: true
+
+ /@changesets/get-dependents-graph@2.0.0:
+ resolution: {integrity: sha512-cafUXponivK4vBgZ3yLu944mTvam06XEn2IZGjjKc0antpenkYANXiiE6GExV/yKdsCnE8dXVZ25yGqLYZmScA==}
+ dependencies:
+ '@changesets/types': 6.0.0
+ '@manypkg/get-packages': 1.1.3
+ chalk: 2.4.2
+ fs-extra: 7.0.1
+ semver: 7.5.4
+ dev: true
+
+ /@changesets/get-github-info@0.5.2:
+ resolution: {integrity: sha512-JppheLu7S114aEs157fOZDjFqUDpm7eHdq5E8SSR0gUBTEK0cNSHsrSR5a66xs0z3RWuo46QvA3vawp8BxDHvg==}
+ dependencies:
+ dataloader: 1.4.0
+ node-fetch: 2.7.0
+ transitivePeerDependencies:
+ - encoding
+ dev: true
+
+ /@changesets/get-release-plan@4.0.0:
+ resolution: {integrity: sha512-9L9xCUeD/Tb6L/oKmpm8nyzsOzhdNBBbt/ZNcjynbHC07WW4E1eX8NMGC5g5SbM5z/V+MOrYsJ4lRW41GCbg3w==}
+ dependencies:
+ '@babel/runtime': 7.23.6
+ '@changesets/assemble-release-plan': 6.0.0
+ '@changesets/config': 3.0.0
+ '@changesets/pre': 2.0.0
+ '@changesets/read': 0.6.0
+ '@changesets/types': 6.0.0
+ '@manypkg/get-packages': 1.1.3
+ dev: true
+
+ /@changesets/get-version-range-type@0.4.0:
+ resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==}
+ dev: true
+
+ /@changesets/git@3.0.0:
+ resolution: {integrity: sha512-vvhnZDHe2eiBNRFHEgMiGd2CT+164dfYyrJDhwwxTVD/OW0FUD6G7+4DIx1dNwkwjHyzisxGAU96q0sVNBns0w==}
+ dependencies:
+ '@babel/runtime': 7.23.6
+ '@changesets/errors': 0.2.0
+ '@changesets/types': 6.0.0
+ '@manypkg/get-packages': 1.1.3
+ is-subdir: 1.2.0
+ micromatch: 4.0.5
+ spawndamnit: 2.0.0
+ dev: true
+
+ /@changesets/logger@0.1.0:
+ resolution: {integrity: sha512-pBrJm4CQm9VqFVwWnSqKEfsS2ESnwqwH+xR7jETxIErZcfd1u2zBSqrHbRHR7xjhSgep9x2PSKFKY//FAshA3g==}
+ dependencies:
+ chalk: 2.4.2
+ dev: true
+
+ /@changesets/parse@0.4.0:
+ resolution: {integrity: sha512-TS/9KG2CdGXS27S+QxbZXgr8uPsP4yNJYb4BC2/NeFUj80Rni3TeD2qwWmabymxmrLo7JEsytXH1FbpKTbvivw==}
+ dependencies:
+ '@changesets/types': 6.0.0
+ js-yaml: 3.14.1
+ dev: true
+
+ /@changesets/pre@2.0.0:
+ resolution: {integrity: sha512-HLTNYX/A4jZxc+Sq8D1AMBsv+1qD6rmmJtjsCJa/9MSRybdxh0mjbTvE6JYZQ/ZiQ0mMlDOlGPXTm9KLTU3jyw==}
+ dependencies:
+ '@babel/runtime': 7.23.6
+ '@changesets/errors': 0.2.0
+ '@changesets/types': 6.0.0
+ '@manypkg/get-packages': 1.1.3
+ fs-extra: 7.0.1
+ dev: true
+
+ /@changesets/read@0.6.0:
+ resolution: {integrity: sha512-ZypqX8+/im1Fm98K4YcZtmLKgjs1kDQ5zHpc2U1qdtNBmZZfo/IBiG162RoP0CUF05tvp2y4IspH11PLnPxuuw==}
+ dependencies:
+ '@babel/runtime': 7.23.6
+ '@changesets/git': 3.0.0
+ '@changesets/logger': 0.1.0
+ '@changesets/parse': 0.4.0
+ '@changesets/types': 6.0.0
+ chalk: 2.4.2
+ fs-extra: 7.0.1
+ p-filter: 2.1.0
+ dev: true
+
+ /@changesets/types@4.1.0:
+ resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==}
+ dev: true
+
+ /@changesets/types@6.0.0:
+ resolution: {integrity: sha512-b1UkfNulgKoWfqyHtzKS5fOZYSJO+77adgL7DLRDr+/7jhChN+QcHnbjiQVOz/U+Ts3PGNySq7diAItzDgugfQ==}
+ dev: true
+
+ /@changesets/write@0.3.0:
+ resolution: {integrity: sha512-slGLb21fxZVUYbyea+94uFiD6ntQW0M2hIKNznFizDhZPDgn2c/fv1UzzlW43RVzh1BEDuIqW6hzlJ1OflNmcw==}
+ dependencies:
+ '@babel/runtime': 7.23.6
+ '@changesets/types': 6.0.0
+ fs-extra: 7.0.1
+ human-id: 1.0.2
+ prettier: 2.8.8
+ dev: true
+
/@esbuild/android-arm64@0.18.20:
resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==}
engines: {node: '>=12'}
@@ -338,6 +605,32 @@ packages:
resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==}
dev: true
+ /@jest/expect-utils@29.7.0:
+ resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ jest-get-type: 29.6.3
+ dev: true
+
+ /@jest/schemas@29.6.3:
+ resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@sinclair/typebox': 0.27.8
+ dev: true
+
+ /@jest/types@29.6.3:
+ resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/schemas': 29.6.3
+ '@types/istanbul-lib-coverage': 2.0.6
+ '@types/istanbul-reports': 3.0.4
+ '@types/node': 20.10.5
+ '@types/yargs': 17.0.32
+ chalk: 4.1.2
+ dev: true
+
/@jridgewell/gen-mapping@0.3.3:
resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==}
engines: {node: '>=6.0.0'}
@@ -382,6 +675,26 @@ packages:
type-detect: 4.0.8
dev: true
+ /@manypkg/find-root@1.1.0:
+ resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==}
+ dependencies:
+ '@babel/runtime': 7.23.6
+ '@types/node': 12.20.55
+ find-up: 4.1.0
+ fs-extra: 8.1.0
+ dev: true
+
+ /@manypkg/get-packages@1.1.3:
+ resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==}
+ dependencies:
+ '@babel/runtime': 7.23.6
+ '@changesets/types': 4.1.0
+ '@manypkg/find-root': 1.1.0
+ fs-extra: 8.1.0
+ globby: 11.1.0
+ read-yaml-file: 1.1.0
+ dev: true
+
/@nodelib/fs.scandir@2.1.5:
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
engines: {node: '>= 8'}
@@ -415,6 +728,10 @@ packages:
resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==}
dev: true
+ /@sinclair/typebox@0.27.8:
+ resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
+ dev: true
+
/@sveltejs/adapter-auto@2.1.0(@sveltejs/kit@1.25.0):
resolution: {integrity: sha512-o2pZCfATFtA/Gw/BB0Xm7k4EYaekXxaPGER3xGSY3FvzFJGTlJlZjBseaXwYSM94lZ0HniOjTokN3cWaLX6fow==}
peerDependencies:
@@ -447,7 +764,7 @@ packages:
svelte: 4.2.0
tiny-glob: 0.2.9
undici: 5.23.0
- vite: 4.4.9(sass@1.67.0)
+ vite: 4.4.9(@types/node@20.10.5)(sass@1.67.0)
transitivePeerDependencies:
- supports-color
dev: true
@@ -480,7 +797,7 @@ packages:
'@sveltejs/vite-plugin-svelte': 2.4.2(svelte@4.2.0)(vite@4.4.9)
debug: 4.3.4
svelte: 4.2.0
- vite: 4.4.9(sass@1.67.0)
+ vite: 4.4.9(@types/node@20.10.5)(sass@1.67.0)
transitivePeerDependencies:
- supports-color
dev: true
@@ -499,12 +816,89 @@ packages:
magic-string: 0.30.0
svelte: 4.2.0
svelte-hmr: 0.15.2(svelte@4.2.0)
- vite: 4.4.9(sass@1.67.0)
+ vite: 4.4.9(@types/node@20.10.5)(sass@1.67.0)
vitefu: 0.2.4(vite@4.4.9)
transitivePeerDependencies:
- supports-color
dev: true
+ /@svitejs/changesets-changelog-github-compact@1.1.0:
+ resolution: {integrity: sha512-qhUGGDHcpbY2zpjW3SwqchuW8J/5EzlPFud7xNntHKA7f3a/mx5+g+ruJKFHSAiVZYo30PALt+AyhmPUNKH/Og==}
+ engines: {node: ^14.13.1 || ^16.0.0 || >=18}
+ dependencies:
+ '@changesets/get-github-info': 0.5.2
+ dotenv: 16.3.1
+ transitivePeerDependencies:
+ - encoding
+ dev: true
+
+ /@testing-library/dom@9.3.1:
+ resolution: {integrity: sha512-0DGPd9AR3+iDTjGoMpxIkAsUihHZ3Ai6CneU6bRRrffXMgzCdlNk43jTrD2/5LT6CBb3MWTP8v510JzYtahD2w==}
+ engines: {node: '>=14'}
+ dependencies:
+ '@babel/code-frame': 7.23.5
+ '@babel/runtime': 7.23.6
+ '@types/aria-query': 5.0.4
+ aria-query: 5.1.3
+ chalk: 4.1.2
+ dom-accessibility-api: 0.5.16
+ lz-string: 1.5.0
+ pretty-format: 27.5.1
+ dev: true
+
+ /@testing-library/jest-dom@5.17.0:
+ resolution: {integrity: sha512-ynmNeT7asXyH3aSVv4vvX4Rb+0qjOhdNHnO/3vuZNqPmhDpV/+rCSGwQ7bLcmU2cJ4dvoheIO85LQj0IbJHEtg==}
+ engines: {node: '>=8', npm: '>=6', yarn: '>=1'}
+ dependencies:
+ '@adobe/css-tools': 4.3.2
+ '@babel/runtime': 7.23.6
+ '@types/testing-library__jest-dom': 5.14.9
+ aria-query: 5.3.0
+ chalk: 3.0.0
+ css.escape: 1.5.1
+ dom-accessibility-api: 0.5.16
+ lodash: 4.17.21
+ redent: 3.0.0
+ dev: true
+
+ /@testing-library/svelte@4.0.5(svelte@4.2.0):
+ resolution: {integrity: sha512-P7X3mpYv/My4hBZfxVxTFV5KcA+EoWfRCguWP7WQdYj6HMdg/L+LiwG4ocvLe+hupedrC7dwcy85JlxKplJp2g==}
+ engines: {node: '>= 10'}
+ peerDependencies:
+ svelte: ^3 || ^4
+ dependencies:
+ '@testing-library/dom': 9.3.1
+ svelte: 4.2.0
+ dev: true
+
+ /@testing-library/user-event@14.4.3(@testing-library/dom@9.3.1):
+ resolution: {integrity: sha512-kCUc5MEwaEMakkO5x7aoD+DLi02ehmEM2QCGWvNqAS1dV/fAvORWEjnjsEIvml59M7Y5kCkWN6fCCyPOe8OL6Q==}
+ engines: {node: '>=12', npm: '>=6'}
+ peerDependencies:
+ '@testing-library/dom': '>=7.21.4'
+ dependencies:
+ '@testing-library/dom': 9.3.1
+ dev: true
+
+ /@tootallnate/once@2.0.0:
+ resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==}
+ engines: {node: '>= 10'}
+ dev: true
+
+ /@types/aria-query@5.0.4:
+ resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==}
+ dev: true
+
+ /@types/chai-subset@1.3.5:
+ resolution: {integrity: sha512-c2mPnw+xHtXDoHmdtcCXGwyLMiauiAyxWMzhGpqHC4nqI/Y5G2XhTampslK2rb59kpcuHon03UH8W6iYUzw88A==}
+ dependencies:
+ '@types/chai': 4.3.11
+ dev: true
+
+ /@types/chai@4.3.11:
+ resolution: {integrity: sha512-qQR1dr2rGIHYlJulmr8Ioq3De0Le9E4MJ5AiaeAETJJpndT1uUNHsGFK3L/UIu+rbkQSdj8J/w2bCsBZc/Y5fQ==}
+ dev: true
+
/@types/cookie@0.5.1:
resolution: {integrity: sha512-COUnqfB2+ckwXXSFInsFdOAWQzCCx+a5hq2ruyj+Vjund94RJQd4LG2u9hnvJrTgunKAaax7ancBYlDrNYxA0g==}
dev: true
@@ -513,10 +907,58 @@ packages:
resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==}
dev: true
+ /@types/istanbul-lib-coverage@2.0.6:
+ resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==}
+ dev: true
+
+ /@types/istanbul-lib-report@3.0.3:
+ resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==}
+ dependencies:
+ '@types/istanbul-lib-coverage': 2.0.6
+ dev: true
+
+ /@types/istanbul-reports@3.0.4:
+ resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==}
+ dependencies:
+ '@types/istanbul-lib-report': 3.0.3
+ dev: true
+
+ /@types/jest-axe@3.5.9:
+ resolution: {integrity: sha512-z98CzR0yVDalCEuhGXXO4/zN4HHuSebAukXDjTLJyjEAgoUf1H1i+sr7SUB/mz8CRS/03/XChsx0dcLjHkndoQ==}
+ dependencies:
+ '@types/jest': 29.5.11
+ axe-core: 3.5.6
+ dev: true
+
+ /@types/jest@29.5.11:
+ resolution: {integrity: sha512-S2mHmYIVe13vrm6q4kN6fLYYAka15ALQki/vgDC3mIukEOx8WJlv0kQPM+d4w8Gp6u0uSdKND04IlTXBv0rwnQ==}
+ dependencies:
+ expect: 29.7.0
+ pretty-format: 29.7.0
+ dev: true
+
/@types/json-schema@7.0.12:
resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==}
dev: true
+ /@types/minimist@1.2.5:
+ resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==}
+ dev: true
+
+ /@types/node@12.20.55:
+ resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==}
+ dev: true
+
+ /@types/node@20.10.5:
+ resolution: {integrity: sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw==}
+ dependencies:
+ undici-types: 5.26.5
+ dev: true
+
+ /@types/normalize-package-data@2.4.4:
+ resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==}
+ dev: true
+
/@types/pug@2.0.6:
resolution: {integrity: sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==}
dev: true
@@ -525,6 +967,26 @@ packages:
resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==}
dev: true
+ /@types/stack-utils@2.0.3:
+ resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==}
+ dev: true
+
+ /@types/testing-library__jest-dom@5.14.9:
+ resolution: {integrity: sha512-FSYhIjFlfOpGSRyVoMBMuS3ws5ehFQODymf3vlI7U1K8c7PHwWwFY7VREfmsuzHSOnoKs/9/Y983ayOs7eRzqw==}
+ dependencies:
+ '@types/jest': 29.5.11
+ dev: true
+
+ /@types/yargs-parser@21.0.3:
+ resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==}
+ dev: true
+
+ /@types/yargs@17.0.32:
+ resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==}
+ dependencies:
+ '@types/yargs-parser': 21.0.3
+ dev: true
+
/@typescript-eslint/eslint-plugin@6.7.2(@typescript-eslint/parser@6.7.2)(eslint@8.49.0)(typescript@5.2.2):
resolution: {integrity: sha512-ooaHxlmSgZTM6CHYAFRlifqh1OAr3PAQEwi7lhYhaegbnXrnh7CDcHmc3+ihhbQC7H0i4JF0psI5ehzkF6Yl6Q==}
engines: {node: ^16.0.0 || >=18.0.0}
@@ -656,6 +1118,49 @@ packages:
eslint-visitor-keys: 3.4.1
dev: true
+ /@vitest/expect@0.33.0:
+ resolution: {integrity: sha512-sVNf+Gla3mhTCxNJx+wJLDPp/WcstOe0Ksqz4Vec51MmgMth/ia0MGFEkIZmVGeTL5HtjYR4Wl/ZxBxBXZJTzQ==}
+ dependencies:
+ '@vitest/spy': 0.33.0
+ '@vitest/utils': 0.33.0
+ chai: 4.3.10
+ dev: true
+
+ /@vitest/runner@0.33.0:
+ resolution: {integrity: sha512-UPfACnmCB6HKRHTlcgCoBh6ppl6fDn+J/xR8dTufWiKt/74Y9bHci5CKB8tESSV82zKYtkBJo9whU3mNvfaisg==}
+ dependencies:
+ '@vitest/utils': 0.33.0
+ p-limit: 4.0.0
+ pathe: 1.1.1
+ dev: true
+
+ /@vitest/snapshot@0.33.0:
+ resolution: {integrity: sha512-tJjrl//qAHbyHajpFvr8Wsk8DIOODEebTu7pgBrP07iOepR5jYkLFiqLq2Ltxv+r0uptUb4izv1J8XBOwKkVYA==}
+ dependencies:
+ magic-string: 0.30.5
+ pathe: 1.1.1
+ pretty-format: 29.7.0
+ dev: true
+
+ /@vitest/spy@0.33.0:
+ resolution: {integrity: sha512-Kv+yZ4hnH1WdiAkPUQTpRxW8kGtH8VRTnus7ZTGovFYM1ZezJpvGtb9nPIjPnptHbsyIAxYZsEpVPYgtpjGnrg==}
+ dependencies:
+ tinyspy: 2.2.0
+ dev: true
+
+ /@vitest/utils@0.33.0:
+ resolution: {integrity: sha512-pF1w22ic965sv+EN6uoePkAOTkAPWM03Ri/jXNyMIKBb/XHLDPfhLvf/Fa9g0YECevAIz56oVYXhodLvLQ/awA==}
+ dependencies:
+ diff-sequences: 29.6.3
+ loupe: 2.3.7
+ pretty-format: 29.7.0
+ dev: true
+
+ /abab@2.0.6:
+ resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==}
+ deprecated: Use your platform's native atob() and btoa() methods instead
+ dev: true
+
/acorn-jsx@5.3.2(acorn@8.9.0):
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
peerDependencies:
@@ -664,6 +1169,17 @@ packages:
acorn: 8.9.0
dev: true
+ /acorn-walk@8.3.1:
+ resolution: {integrity: sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw==}
+ engines: {node: '>=0.4.0'}
+ dev: true
+
+ /acorn@8.11.2:
+ resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
+ dev: true
+
/acorn@8.9.0:
resolution: {integrity: sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==}
engines: {node: '>=0.4.0'}
@@ -688,11 +1204,23 @@ packages:
uri-js: 4.4.1
dev: true
+ /ansi-colors@4.1.3:
+ resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==}
+ engines: {node: '>=6'}
+ dev: true
+
/ansi-regex@5.0.1:
resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
engines: {node: '>=8'}
dev: true
+ /ansi-styles@3.2.1:
+ resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
+ engines: {node: '>=4'}
+ dependencies:
+ color-convert: 1.9.3
+ dev: true
+
/ansi-styles@4.3.0:
resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
engines: {node: '>=8'}
@@ -700,6 +1228,11 @@ packages:
color-convert: 2.0.1
dev: true
+ /ansi-styles@5.2.0:
+ resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==}
+ engines: {node: '>=10'}
+ dev: true
+
/anymatch@3.1.3:
resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
engines: {node: '>= 8'}
@@ -708,21 +1241,86 @@ packages:
picomatch: 2.3.1
dev: true
+ /argparse@1.0.10:
+ resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
+ dependencies:
+ sprintf-js: 1.0.3
+ dev: true
+
/argparse@2.0.1:
resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
dev: true
+ /aria-query@5.1.3:
+ resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==}
+ dependencies:
+ deep-equal: 2.2.3
+ dev: true
+
/aria-query@5.3.0:
resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==}
dependencies:
dequal: 2.0.3
dev: true
+ /array-buffer-byte-length@1.0.0:
+ resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==}
+ dependencies:
+ call-bind: 1.0.5
+ is-array-buffer: 3.0.2
+ dev: true
+
/array-union@2.1.0:
resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
engines: {node: '>=8'}
dev: true
+ /array.prototype.flat@1.3.2:
+ resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.5
+ define-properties: 1.2.1
+ es-abstract: 1.22.3
+ es-shim-unscopables: 1.0.2
+ dev: true
+
+ /arraybuffer.prototype.slice@1.0.2:
+ resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ array-buffer-byte-length: 1.0.0
+ call-bind: 1.0.5
+ define-properties: 1.2.1
+ es-abstract: 1.22.3
+ get-intrinsic: 1.2.2
+ is-array-buffer: 3.0.2
+ is-shared-array-buffer: 1.0.2
+ dev: true
+
+ /arrify@1.0.1:
+ resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /assertion-error@1.1.0:
+ resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==}
+ dev: true
+
+ /asynckit@0.4.0:
+ resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
+ dev: true
+
+ /available-typed-arrays@1.0.5:
+ resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /axe-core@3.5.6:
+ resolution: {integrity: sha512-LEUDjgmdJoA3LqklSTwKYqkjcZ4HKc4ddIYGSAiSkr46NTjzg2L9RNB+lekO9P7Dlpa87+hBtzc2Fzn/+GUWMQ==}
+ engines: {node: '>=4'}
+ dev: true
+
/axobject-query@3.2.1:
resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==}
dependencies:
@@ -733,6 +1331,13 @@ packages:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
dev: true
+ /better-path-resolve@1.0.0:
+ resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==}
+ engines: {node: '>=4'}
+ dependencies:
+ is-windows: 1.0.2
+ dev: true
+
/binary-extensions@2.2.0:
resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
engines: {node: '>=8'}
@@ -758,6 +1363,12 @@ packages:
fill-range: 7.0.1
dev: true
+ /breakword@1.0.6:
+ resolution: {integrity: sha512-yjxDAYyK/pBvws9H4xKYpLDpYKEH6CzrBPAuXq3x18I+c/2MkVtT3qAr7Oloi6Dss9qNhPVueAAVU1CSeNDIXw==}
+ dependencies:
+ wcwidth: 1.0.1
+ dev: true
+
/buffer-crc32@0.2.13:
resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==}
dev: true
@@ -807,6 +1418,14 @@ packages:
engines: {node: '>=8'}
dev: true
+ /call-bind@1.0.5:
+ resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==}
+ dependencies:
+ function-bind: 1.1.2
+ get-intrinsic: 1.2.2
+ set-function-length: 1.1.1
+ dev: true
+
/call-me-maybe@1.0.2:
resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==}
dev: true
@@ -816,6 +1435,50 @@ packages:
engines: {node: '>=6'}
dev: true
+ /camelcase-keys@6.2.2:
+ resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==}
+ engines: {node: '>=8'}
+ dependencies:
+ camelcase: 5.3.1
+ map-obj: 4.3.0
+ quick-lru: 4.0.1
+ dev: true
+
+ /camelcase@5.3.1:
+ resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /chai@4.3.10:
+ resolution: {integrity: sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==}
+ engines: {node: '>=4'}
+ dependencies:
+ assertion-error: 1.1.0
+ check-error: 1.0.3
+ deep-eql: 4.1.3
+ get-func-name: 2.0.2
+ loupe: 2.3.7
+ pathval: 1.1.1
+ type-detect: 4.0.8
+ dev: true
+
+ /chalk@2.4.2:
+ resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
+ engines: {node: '>=4'}
+ dependencies:
+ ansi-styles: 3.2.1
+ escape-string-regexp: 1.0.5
+ supports-color: 5.5.0
+ dev: true
+
+ /chalk@3.0.0:
+ resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==}
+ engines: {node: '>=8'}
+ dependencies:
+ ansi-styles: 4.3.0
+ supports-color: 7.2.0
+ dev: true
+
/chalk@4.1.2:
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
engines: {node: '>=10'}
@@ -824,8 +1487,18 @@ packages:
supports-color: 7.2.0
dev: true
- /chokidar@3.5.3:
- resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
+ /chardet@0.7.0:
+ resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==}
+ dev: true
+
+ /check-error@1.0.3:
+ resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==}
+ dependencies:
+ get-func-name: 2.0.2
+ dev: true
+
+ /chokidar@3.5.3:
+ resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
engines: {node: '>= 8.10.0'}
dependencies:
anymatch: 3.1.3
@@ -836,7 +1509,7 @@ packages:
normalize-path: 3.0.0
readdirp: 3.6.0
optionalDependencies:
- fsevents: 2.3.2
+ fsevents: 2.3.3
dev: true
/chownr@2.0.0:
@@ -844,6 +1517,33 @@ packages:
engines: {node: '>=10'}
dev: true
+ /ci-info@3.9.0:
+ resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /cliui@6.0.0:
+ resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==}
+ dependencies:
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ wrap-ansi: 6.2.0
+ dev: true
+
+ /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
+
+ /clone@1.0.4:
+ resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==}
+ engines: {node: '>=0.8'}
+ dev: true
+
/code-red@1.0.3:
resolution: {integrity: sha512-kVwJELqiILQyG5aeuyKFbdsI1fmQy1Cmf7dQ8eGmVuJoaRVdwey7WaMknr2ZFeVSYSKT0rExsa8EGw0aoI/1QQ==}
dependencies:
@@ -854,6 +1554,12 @@ packages:
periscopic: 3.1.0
dev: true
+ /color-convert@1.9.3:
+ resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
+ dependencies:
+ color-name: 1.1.3
+ dev: true
+
/color-convert@2.0.1:
resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
engines: {node: '>=7.0.0'}
@@ -861,6 +1567,10 @@ packages:
color-name: 1.1.4
dev: true
+ /color-name@1.1.3:
+ resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
+ dev: true
+
/color-name@1.1.4:
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
dev: true
@@ -869,6 +1579,13 @@ packages:
resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==}
dev: true
+ /combined-stream@1.0.8:
+ resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
+ engines: {node: '>= 0.8'}
+ dependencies:
+ delayed-stream: 1.0.0
+ dev: true
+
/concat-map@0.0.1:
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
dev: true
@@ -884,6 +1601,14 @@ packages:
toggle-selection: 1.0.6
dev: true
+ /cross-spawn@5.1.0:
+ resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==}
+ dependencies:
+ lru-cache: 4.1.5
+ shebang-command: 1.2.0
+ which: 1.3.1
+ dev: true
+
/cross-spawn@7.0.3:
resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
engines: {node: '>= 8'}
@@ -901,12 +1626,58 @@ packages:
source-map-js: 1.0.2
dev: true
+ /css.escape@1.5.1:
+ resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==}
+ dev: true
+
/cssesc@3.0.0:
resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
engines: {node: '>=4'}
hasBin: true
dev: true
+ /cssstyle@3.0.0:
+ resolution: {integrity: sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==}
+ engines: {node: '>=14'}
+ dependencies:
+ rrweb-cssom: 0.6.0
+ dev: true
+
+ /csv-generate@3.4.3:
+ resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==}
+ dev: true
+
+ /csv-parse@4.16.3:
+ resolution: {integrity: sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==}
+ dev: true
+
+ /csv-stringify@5.6.5:
+ resolution: {integrity: sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==}
+ dev: true
+
+ /csv@5.5.3:
+ resolution: {integrity: sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g==}
+ engines: {node: '>= 0.1.90'}
+ dependencies:
+ csv-generate: 3.4.3
+ csv-parse: 4.16.3
+ csv-stringify: 5.6.5
+ stream-transform: 2.1.3
+ dev: true
+
+ /data-urls@4.0.0:
+ resolution: {integrity: sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==}
+ engines: {node: '>=14'}
+ dependencies:
+ abab: 2.0.6
+ whatwg-mimetype: 3.0.0
+ whatwg-url: 12.0.1
+ dev: true
+
+ /dataloader@1.4.0:
+ resolution: {integrity: sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==}
+ dev: true
+
/debug@4.3.4:
resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
engines: {node: '>=6.0'}
@@ -919,10 +1690,58 @@ packages:
ms: 2.1.2
dev: true
+ /decamelize-keys@1.1.1:
+ resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ decamelize: 1.2.0
+ map-obj: 1.0.1
+ dev: true
+
+ /decamelize@1.2.0:
+ resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /decimal.js@10.4.3:
+ resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==}
+ dev: true
+
/dedent-js@1.0.1:
resolution: {integrity: sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==}
dev: true
+ /deep-eql@4.1.3:
+ resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==}
+ engines: {node: '>=6'}
+ dependencies:
+ type-detect: 4.0.8
+ dev: true
+
+ /deep-equal@2.2.3:
+ resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ array-buffer-byte-length: 1.0.0
+ call-bind: 1.0.5
+ es-get-iterator: 1.1.3
+ get-intrinsic: 1.2.2
+ is-arguments: 1.1.1
+ is-array-buffer: 3.0.2
+ is-date-object: 1.0.5
+ is-regex: 1.1.4
+ is-shared-array-buffer: 1.0.2
+ isarray: 2.0.5
+ object-is: 1.1.5
+ object-keys: 1.1.1
+ object.assign: 4.1.5
+ regexp.prototype.flags: 1.5.1
+ side-channel: 1.0.4
+ which-boxed-primitive: 1.0.2
+ which-collection: 1.0.1
+ which-typed-array: 1.1.13
+ dev: true
+
/deep-is@0.1.4:
resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
dev: true
@@ -932,10 +1751,39 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
+ /defaults@1.0.4:
+ resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==}
+ dependencies:
+ clone: 1.0.4
+ dev: true
+
+ /define-data-property@1.1.1:
+ resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ get-intrinsic: 1.2.2
+ gopd: 1.0.1
+ has-property-descriptors: 1.0.1
+ dev: true
+
+ /define-properties@1.2.1:
+ resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ define-data-property: 1.1.1
+ has-property-descriptors: 1.0.1
+ object-keys: 1.1.1
+ dev: true
+
/defu@6.1.2:
resolution: {integrity: sha512-+uO4+qr7msjNNWKYPHqN/3+Dx3NFkmIzayk2L1MyZQlvgZb/J1A0fo410dpKrN2SnqFjt8n4JL8fDJE0wIgjFQ==}
dev: true
+ /delayed-stream@1.0.0:
+ resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
+ engines: {node: '>=0.4.0'}
+ dev: true
+
/dequal@2.0.3:
resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
engines: {node: '>=6'}
@@ -954,6 +1802,11 @@ packages:
resolution: {integrity: sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==}
dev: true
+ /diff-sequences@29.6.3:
+ resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dev: true
+
/dir-glob@3.0.1:
resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
engines: {node: '>=8'}
@@ -968,11 +1821,129 @@ packages:
esutils: 2.0.3
dev: true
+ /dom-accessibility-api@0.5.16:
+ resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==}
+ dev: true
+
+ /domexception@4.0.0:
+ resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==}
+ engines: {node: '>=12'}
+ deprecated: Use your platform's native DOMException instead
+ dependencies:
+ webidl-conversions: 7.0.0
+ dev: true
+
/dotenv@16.3.1:
resolution: {integrity: sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==}
engines: {node: '>=12'}
dev: true
+ /emoji-regex@8.0.0:
+ resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
+ dev: true
+
+ /enquirer@2.4.1:
+ resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==}
+ engines: {node: '>=8.6'}
+ dependencies:
+ ansi-colors: 4.1.3
+ strip-ansi: 6.0.1
+ dev: true
+
+ /entities@4.5.0:
+ resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
+ engines: {node: '>=0.12'}
+ dev: true
+
+ /error-ex@1.3.2:
+ resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
+ dependencies:
+ is-arrayish: 0.2.1
+ dev: true
+
+ /es-abstract@1.22.3:
+ resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ array-buffer-byte-length: 1.0.0
+ arraybuffer.prototype.slice: 1.0.2
+ available-typed-arrays: 1.0.5
+ call-bind: 1.0.5
+ es-set-tostringtag: 2.0.2
+ es-to-primitive: 1.2.1
+ function.prototype.name: 1.1.6
+ get-intrinsic: 1.2.2
+ get-symbol-description: 1.0.0
+ globalthis: 1.0.3
+ gopd: 1.0.1
+ has-property-descriptors: 1.0.1
+ has-proto: 1.0.1
+ has-symbols: 1.0.3
+ hasown: 2.0.0
+ internal-slot: 1.0.6
+ is-array-buffer: 3.0.2
+ is-callable: 1.2.7
+ is-negative-zero: 2.0.2
+ is-regex: 1.1.4
+ is-shared-array-buffer: 1.0.2
+ is-string: 1.0.7
+ is-typed-array: 1.1.12
+ is-weakref: 1.0.2
+ object-inspect: 1.13.1
+ object-keys: 1.1.1
+ object.assign: 4.1.5
+ regexp.prototype.flags: 1.5.1
+ safe-array-concat: 1.0.1
+ safe-regex-test: 1.0.0
+ string.prototype.trim: 1.2.8
+ string.prototype.trimend: 1.0.7
+ string.prototype.trimstart: 1.0.7
+ typed-array-buffer: 1.0.0
+ typed-array-byte-length: 1.0.0
+ typed-array-byte-offset: 1.0.0
+ typed-array-length: 1.0.4
+ unbox-primitive: 1.0.2
+ which-typed-array: 1.1.13
+ dev: true
+
+ /es-get-iterator@1.1.3:
+ resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==}
+ dependencies:
+ call-bind: 1.0.5
+ get-intrinsic: 1.2.2
+ has-symbols: 1.0.3
+ is-arguments: 1.1.1
+ is-map: 2.0.2
+ is-set: 2.0.2
+ is-string: 1.0.7
+ isarray: 2.0.5
+ stop-iteration-iterator: 1.0.0
+ dev: true
+
+ /es-set-tostringtag@2.0.2:
+ resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ get-intrinsic: 1.2.2
+ has-tostringtag: 1.0.0
+ hasown: 2.0.0
+ dev: true
+
+ /es-shim-unscopables@1.0.2:
+ resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==}
+ dependencies:
+ hasown: 2.0.0
+ dev: true
+
+ /es-to-primitive@1.2.1:
+ resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ is-callable: 1.2.7
+ is-date-object: 1.0.5
+ is-symbol: 1.0.4
+ dev: true
+
/es6-promise@3.3.1:
resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==}
dev: true
@@ -1007,11 +1978,35 @@ packages:
'@esbuild/win32-x64': 0.18.20
dev: true
+ /escalade@3.1.1:
+ resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
+ 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@2.0.0:
+ resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==}
+ engines: {node: '>=8'}
+ dev: true
+
/escape-string-regexp@4.0.0:
resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
engines: {node: '>=10'}
dev: true
+ /eslint-config-prettier@9.1.0(eslint@8.49.0):
+ resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==}
+ hasBin: true
+ peerDependencies:
+ eslint: '>=7.0.0'
+ dependencies:
+ eslint: 8.49.0
+ dev: true
+
/eslint-plugin-svelte@2.33.2(eslint@8.49.0)(svelte@4.2.0):
resolution: {integrity: sha512-knWmauax+E/jvQ9CmuX5dAhQKP9P4eGQZxWa5RMutEJVCcy0wFmiUvOeDND2jR4vUkbDlX4khKjaceY7QzbkYw==}
engines: {node: ^14.17.0 || >=16.0.0}
@@ -1134,6 +2129,12 @@ packages:
eslint-visitor-keys: 3.4.3
dev: true
+ /esprima@4.0.1:
+ resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
+ engines: {node: '>=4'}
+ hasBin: true
+ dev: true
+
/esquery@1.5.0:
resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==}
engines: {node: '>=0.10'}
@@ -1164,6 +2165,30 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
+ /expect@29.7.0:
+ resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/expect-utils': 29.7.0
+ jest-get-type: 29.6.3
+ jest-matcher-utils: 29.7.0
+ jest-message-util: 29.7.0
+ jest-util: 29.7.0
+ dev: true
+
+ /extendable-error@0.1.7:
+ resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==}
+ dev: true
+
+ /external-editor@3.1.0:
+ resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==}
+ engines: {node: '>=4'}
+ dependencies:
+ chardet: 0.7.0
+ iconv-lite: 0.4.24
+ tmp: 0.0.33
+ dev: true
+
/fast-deep-equal@3.1.3:
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
dev: true
@@ -1218,6 +2243,14 @@ packages:
to-regex-range: 5.0.1
dev: true
+ /find-up@4.1.0:
+ resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==}
+ engines: {node: '>=8'}
+ dependencies:
+ locate-path: 5.0.0
+ path-exists: 4.0.0
+ dev: true
+
/find-up@5.0.0:
resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
engines: {node: '>=10'}
@@ -1226,6 +2259,13 @@ packages:
path-exists: 4.0.0
dev: true
+ /find-yarn-workspace-root2@1.2.16:
+ resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==}
+ dependencies:
+ micromatch: 4.0.5
+ pkg-dir: 4.2.0
+ dev: true
+
/flat-cache@3.0.4:
resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==}
engines: {node: ^10.12.0 || >=12.0.0}
@@ -1243,6 +2283,39 @@ packages:
resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==}
dev: true
+ /for-each@0.3.3:
+ resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==}
+ dependencies:
+ is-callable: 1.2.7
+ dev: true
+
+ /form-data@4.0.0:
+ resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==}
+ engines: {node: '>= 6'}
+ dependencies:
+ asynckit: 0.4.0
+ combined-stream: 1.0.8
+ mime-types: 2.1.35
+ dev: true
+
+ /fs-extra@7.0.1:
+ resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==}
+ engines: {node: '>=6 <7 || >=8'}
+ dependencies:
+ graceful-fs: 4.2.11
+ jsonfile: 4.0.0
+ universalify: 0.1.2
+ dev: true
+
+ /fs-extra@8.1.0:
+ resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==}
+ engines: {node: '>=6 <7 || >=8'}
+ dependencies:
+ graceful-fs: 4.2.11
+ jsonfile: 4.0.0
+ universalify: 0.1.2
+ dev: true
+
/fs-minipass@2.1.0:
resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==}
engines: {node: '>= 8'}
@@ -1262,6 +2335,58 @@ packages:
dev: true
optional: true
+ /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
+
+ /function-bind@1.1.2:
+ resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
+ dev: true
+
+ /function.prototype.name@1.1.6:
+ resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.5
+ define-properties: 1.2.1
+ es-abstract: 1.22.3
+ functions-have-names: 1.2.3
+ dev: true
+
+ /functions-have-names@1.2.3:
+ resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
+ dev: true
+
+ /get-caller-file@2.0.5:
+ resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
+ engines: {node: 6.* || 8.* || >= 10.*}
+ dev: true
+
+ /get-func-name@2.0.2:
+ resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==}
+ dev: true
+
+ /get-intrinsic@1.2.2:
+ resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==}
+ dependencies:
+ function-bind: 1.1.2
+ has-proto: 1.0.1
+ has-symbols: 1.0.3
+ hasown: 2.0.0
+ dev: true
+
+ /get-symbol-description@1.0.0:
+ resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.5
+ get-intrinsic: 1.2.2
+ dev: true
+
/giget@1.1.2:
resolution: {integrity: sha512-HsLoS07HiQ5oqvObOI+Qb2tyZH4Gj5nYGfF9qQcZNrPw+uEFhdXtgJr01aO2pWadGHucajYDLxxbtQkm97ON2A==}
hasBin: true
@@ -1320,6 +2445,13 @@ packages:
type-fest: 0.20.2
dev: true
+ /globalthis@1.0.3:
+ resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ define-properties: 1.2.1
+ dev: true
+
/globalyzer@0.1.0:
resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==}
dev: true
@@ -1340,24 +2472,100 @@ packages:
resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==}
dev: true
+ /gopd@1.0.1:
+ resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
+ dependencies:
+ get-intrinsic: 1.2.2
+ dev: true
+
/graceful-fs@4.2.11:
resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
dev: true
+ /grapheme-splitter@1.0.4:
+ resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==}
+ dev: true
+
/graphemer@1.4.0:
resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
dev: true
+ /hard-rejection@2.1.0:
+ resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /has-bigints@1.0.2:
+ resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==}
+ dev: true
+
+ /has-flag@3.0.0:
+ resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
+ engines: {node: '>=4'}
+ dev: true
+
/has-flag@4.0.0:
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
engines: {node: '>=8'}
dev: true
+ /has-property-descriptors@1.0.1:
+ resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==}
+ dependencies:
+ get-intrinsic: 1.2.2
+ dev: true
+
+ /has-proto@1.0.1:
+ resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /has-symbols@1.0.3:
+ resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /has-tostringtag@1.0.0:
+ resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ has-symbols: 1.0.3
+ dev: true
+
+ /hasown@2.0.0:
+ resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ function-bind: 1.1.2
+ dev: true
+
/highlight.js@11.8.0:
resolution: {integrity: sha512-MedQhoqVdr0U6SSnWPzfiadUcDHfN/Wzq25AkXiQv9oiOO/sG0S7XkvpFIqWBl9Yq1UYyYOOVORs5UW2XlPyzg==}
engines: {node: '>=12.0.0'}
dev: true
+ /hosted-git-info@2.8.9:
+ resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==}
+ dev: true
+
+ /html-encoding-sniffer@3.0.0:
+ resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==}
+ engines: {node: '>=12'}
+ dependencies:
+ whatwg-encoding: 2.0.0
+ dev: true
+
+ /http-proxy-agent@5.0.0:
+ resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==}
+ engines: {node: '>= 6'}
+ dependencies:
+ '@tootallnate/once': 2.0.0
+ agent-base: 6.0.2
+ debug: 4.3.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/https-proxy-agent@5.0.1:
resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==}
engines: {node: '>= 6'}
@@ -1368,6 +2576,24 @@ packages:
- supports-color
dev: true
+ /human-id@1.0.2:
+ resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==}
+ dev: true
+
+ /iconv-lite@0.4.24:
+ resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ safer-buffer: 2.1.2
+ dev: true
+
+ /iconv-lite@0.6.3:
+ resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ safer-buffer: 2.1.2
+ dev: true
+
/ignore-walk@5.0.1:
resolution: {integrity: sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==}
engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
@@ -1401,6 +2627,11 @@ packages:
engines: {node: '>=0.8.19'}
dev: true
+ /indent-string@4.0.0:
+ resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==}
+ engines: {node: '>=8'}
+ dev: true
+
/inflight@1.0.6:
resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
dependencies:
@@ -1412,6 +2643,41 @@ packages:
resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
dev: true
+ /internal-slot@1.0.6:
+ resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ get-intrinsic: 1.2.2
+ hasown: 2.0.0
+ side-channel: 1.0.4
+ dev: true
+
+ /is-arguments@1.1.1:
+ resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.5
+ has-tostringtag: 1.0.0
+ dev: true
+
+ /is-array-buffer@3.0.2:
+ resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==}
+ dependencies:
+ call-bind: 1.0.5
+ get-intrinsic: 1.2.2
+ is-typed-array: 1.1.12
+ dev: true
+
+ /is-arrayish@0.2.1:
+ resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
+ dev: true
+
+ /is-bigint@1.0.4:
+ resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==}
+ dependencies:
+ has-bigints: 1.0.2
+ dev: true
+
/is-binary-path@2.1.0:
resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
engines: {node: '>=8'}
@@ -1419,11 +2685,42 @@ packages:
binary-extensions: 2.2.0
dev: true
+ /is-boolean-object@1.1.2:
+ resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.5
+ has-tostringtag: 1.0.0
+ dev: true
+
+ /is-callable@1.2.7:
+ resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /is-core-module@2.13.1:
+ resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==}
+ dependencies:
+ hasown: 2.0.0
+ dev: true
+
+ /is-date-object@1.0.5:
+ resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ has-tostringtag: 1.0.0
+ dev: true
+
/is-extglob@2.1.1:
resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
engines: {node: '>=0.10.0'}
dev: true
+ /is-fullwidth-code-point@3.0.0:
+ resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
+ engines: {node: '>=8'}
+ dev: true
+
/is-glob@4.0.3:
resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
engines: {node: '>=0.10.0'}
@@ -1431,7 +2728,23 @@ packages:
is-extglob: 2.1.1
dev: true
- /is-number@7.0.0:
+ /is-map@2.0.2:
+ resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==}
+ dev: true
+
+ /is-negative-zero@2.0.2:
+ resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /is-number-object@1.0.7:
+ resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ has-tostringtag: 1.0.0
+ dev: true
+
+ /is-number@7.0.0:
resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
engines: {node: '>=0.12.0'}
dev: true
@@ -1441,21 +2754,166 @@ packages:
engines: {node: '>=8'}
dev: true
+ /is-plain-obj@1.1.0:
+ resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /is-potential-custom-element-name@1.0.1:
+ resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==}
+ dev: true
+
/is-reference@3.0.1:
resolution: {integrity: sha512-baJJdQLiYaJdvFbJqXrcGv3WU3QCzBlUcI5QhbesIm6/xPsvmO+2CDoi/GMOFBQEQm+PXkwOPrp9KK5ozZsp2w==}
dependencies:
'@types/estree': 1.0.1
dev: true
+ /is-regex@1.1.4:
+ resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.5
+ has-tostringtag: 1.0.0
+ dev: true
+
+ /is-set@2.0.2:
+ resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==}
+ dev: true
+
+ /is-shared-array-buffer@1.0.2:
+ resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==}
+ dependencies:
+ call-bind: 1.0.5
+ dev: true
+
+ /is-string@1.0.7:
+ resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ has-tostringtag: 1.0.0
+ dev: true
+
+ /is-subdir@1.2.0:
+ resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==}
+ engines: {node: '>=4'}
+ dependencies:
+ better-path-resolve: 1.0.0
+ dev: true
+
+ /is-symbol@1.0.4:
+ resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ has-symbols: 1.0.3
+ dev: true
+
+ /is-typed-array@1.1.12:
+ resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ which-typed-array: 1.1.13
+ dev: true
+
+ /is-weakmap@2.0.1:
+ resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==}
+ dev: true
+
+ /is-weakref@1.0.2:
+ resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==}
+ dependencies:
+ call-bind: 1.0.5
+ dev: true
+
+ /is-weakset@2.0.2:
+ resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==}
+ dependencies:
+ call-bind: 1.0.5
+ get-intrinsic: 1.2.2
+ dev: true
+
+ /is-windows@1.0.2:
+ resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /isarray@2.0.5:
+ resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
+ dev: true
+
/isexe@2.0.0:
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
dev: true
+ /jest-diff@29.7.0:
+ resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ chalk: 4.1.2
+ diff-sequences: 29.6.3
+ jest-get-type: 29.6.3
+ pretty-format: 29.7.0
+ dev: true
+
+ /jest-get-type@29.6.3:
+ resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dev: true
+
+ /jest-matcher-utils@29.7.0:
+ resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ chalk: 4.1.2
+ jest-diff: 29.7.0
+ jest-get-type: 29.6.3
+ pretty-format: 29.7.0
+ dev: true
+
+ /jest-message-util@29.7.0:
+ resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@babel/code-frame': 7.23.5
+ '@jest/types': 29.6.3
+ '@types/stack-utils': 2.0.3
+ chalk: 4.1.2
+ graceful-fs: 4.2.11
+ micromatch: 4.0.5
+ pretty-format: 29.7.0
+ slash: 3.0.0
+ stack-utils: 2.0.6
+ dev: true
+
+ /jest-util@29.7.0:
+ resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/types': 29.6.3
+ '@types/node': 20.10.5
+ chalk: 4.1.2
+ ci-info: 3.9.0
+ graceful-fs: 4.2.11
+ picomatch: 2.3.1
+ dev: true
+
/jiti@1.18.2:
resolution: {integrity: sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==}
hasBin: true
dev: true
+ /js-tokens@4.0.0:
+ resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
+ dev: true
+
+ /js-yaml@3.14.1:
+ resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==}
+ hasBin: true
+ dependencies:
+ argparse: 1.0.10
+ esprima: 4.0.1
+ dev: true
+
/js-yaml@4.1.0:
resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
hasBin: true
@@ -1463,6 +2921,48 @@ packages:
argparse: 2.0.1
dev: true
+ /jsdom@22.1.0:
+ resolution: {integrity: sha512-/9AVW7xNbsBv6GfWho4TTNjEo9fe6Zhf9O7s0Fhhr3u+awPwAJMKwAMXnkk5vBxflqLW9hTHX/0cs+P3gW+cQw==}
+ engines: {node: '>=16'}
+ peerDependencies:
+ canvas: ^2.5.0
+ peerDependenciesMeta:
+ canvas:
+ optional: true
+ dependencies:
+ abab: 2.0.6
+ cssstyle: 3.0.0
+ data-urls: 4.0.0
+ decimal.js: 10.4.3
+ domexception: 4.0.0
+ form-data: 4.0.0
+ html-encoding-sniffer: 3.0.0
+ http-proxy-agent: 5.0.0
+ https-proxy-agent: 5.0.1
+ is-potential-custom-element-name: 1.0.1
+ nwsapi: 2.2.7
+ parse5: 7.1.2
+ rrweb-cssom: 0.6.0
+ saxes: 6.0.0
+ symbol-tree: 3.2.4
+ tough-cookie: 4.1.3
+ w3c-xmlserializer: 4.0.0
+ webidl-conversions: 7.0.0
+ whatwg-encoding: 2.0.0
+ whatwg-mimetype: 3.0.0
+ whatwg-url: 12.0.1
+ ws: 8.16.0
+ xml-name-validator: 4.0.0
+ transitivePeerDependencies:
+ - bufferutil
+ - supports-color
+ - utf-8-validate
+ dev: true
+
+ /json-parse-even-better-errors@2.3.1:
+ resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
+ dev: true
+
/json-schema-traverse@0.4.1:
resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
dev: true
@@ -1475,6 +2975,17 @@ packages:
resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==}
dev: true
+ /jsonfile@4.0.0:
+ resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==}
+ optionalDependencies:
+ graceful-fs: 4.2.11
+ dev: true
+
+ /kind-of@6.0.3:
+ resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
/kleur@3.0.3:
resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==}
engines: {node: '>=6'}
@@ -1502,10 +3013,36 @@ packages:
engines: {node: '>=10'}
dev: true
+ /lines-and-columns@1.2.4:
+ resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
+ dev: true
+
+ /load-yaml-file@0.2.0:
+ resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==}
+ engines: {node: '>=6'}
+ dependencies:
+ graceful-fs: 4.2.11
+ js-yaml: 3.14.1
+ pify: 4.0.1
+ strip-bom: 3.0.0
+ dev: true
+
+ /local-pkg@0.4.3:
+ resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==}
+ engines: {node: '>=14'}
+ dev: true
+
/locate-character@3.0.0:
resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==}
dev: true
+ /locate-path@5.0.0:
+ resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
+ engines: {node: '>=8'}
+ dependencies:
+ p-locate: 4.1.0
+ dev: true
+
/locate-path@6.0.0:
resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
engines: {node: '>=10'}
@@ -1517,12 +3054,33 @@ packages:
resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
dev: true
+ /lodash.startcase@4.4.0:
+ resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==}
+ dev: true
+
+ /lodash@4.17.21:
+ resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
+ dev: true
+
+ /loupe@2.3.7:
+ resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==}
+ dependencies:
+ get-func-name: 2.0.2
+ dev: true
+
/lower-case@2.0.2:
resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==}
dependencies:
tslib: 2.6.2
dev: true
+ /lru-cache@4.1.5:
+ resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==}
+ dependencies:
+ pseudomap: 1.0.2
+ yallist: 2.1.2
+ dev: true
+
/lru-cache@6.0.0:
resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
engines: {node: '>=10'}
@@ -1530,6 +3088,11 @@ packages:
yallist: 4.0.0
dev: true
+ /lz-string@1.5.0:
+ resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==}
+ hasBin: true
+ dev: true
+
/magic-string@0.27.0:
resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==}
engines: {node: '>=12'}
@@ -1544,10 +3107,44 @@ packages:
'@jridgewell/sourcemap-codec': 1.4.15
dev: true
+ /magic-string@0.30.5:
+ resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==}
+ engines: {node: '>=12'}
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.4.15
+ dev: true
+
+ /map-obj@1.0.1:
+ resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /map-obj@4.3.0:
+ resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==}
+ engines: {node: '>=8'}
+ dev: true
+
/mdn-data@2.0.30:
resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==}
dev: true
+ /meow@6.1.1:
+ resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==}
+ engines: {node: '>=8'}
+ dependencies:
+ '@types/minimist': 1.2.5
+ camelcase-keys: 6.2.2
+ decamelize-keys: 1.1.1
+ hard-rejection: 2.1.0
+ minimist-options: 4.1.0
+ normalize-package-data: 2.5.0
+ read-pkg-up: 7.0.1
+ redent: 3.0.0
+ trim-newlines: 3.0.1
+ type-fest: 0.13.1
+ yargs-parser: 18.1.3
+ dev: true
+
/merge2@1.4.1:
resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
engines: {node: '>= 8'}
@@ -1561,6 +3158,18 @@ packages:
picomatch: 2.3.1
dev: true
+ /mime-db@1.52.0:
+ resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
+ engines: {node: '>= 0.6'}
+ dev: true
+
+ /mime-types@2.1.35:
+ resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
+ engines: {node: '>= 0.6'}
+ dependencies:
+ mime-db: 1.52.0
+ dev: true
+
/mime@3.0.0:
resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==}
engines: {node: '>=10.0.0'}
@@ -1585,6 +3194,15 @@ packages:
brace-expansion: 2.0.1
dev: true
+ /minimist-options@4.1.0:
+ resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==}
+ engines: {node: '>= 6'}
+ dependencies:
+ arrify: 1.0.1
+ is-plain-obj: 1.1.0
+ kind-of: 6.0.3
+ dev: true
+
/minimist@1.2.8:
resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
dev: true
@@ -1609,6 +3227,11 @@ packages:
yallist: 4.0.0
dev: true
+ /mixme@0.5.10:
+ resolution: {integrity: sha512-5H76ANWinB1H3twpJ6JY8uvAtpmFvHNArpilJAjXRKXSDDLPIMoZArw5SH0q9z+lLs8IrMw7Q2VWpWimFKFT1Q==}
+ engines: {node: '>= 8.0.0'}
+ dev: true
+
/mkdirp@0.5.6:
resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==}
hasBin: true
@@ -1631,6 +3254,23 @@ packages:
ufo: 1.1.2
dev: true
+ /mlly@1.4.2:
+ resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==}
+ dependencies:
+ acorn: 8.11.2
+ pathe: 1.1.1
+ pkg-types: 1.0.3
+ ufo: 1.3.2
+ dev: true
+
+ /mode-watcher@0.1.2(svelte@4.2.0):
+ resolution: {integrity: sha512-XTdPCdqC3kqSvB+Q262Kor983YJkkB2Z3vj9uqg5IqKQpOdiz+xB99Jihp8sWbyM67drC7KKp0Nt5FzCypZi2g==}
+ peerDependencies:
+ svelte: ^4.0.0
+ dependencies:
+ svelte: 4.2.0
+ dev: true
+
/mri@1.2.0:
resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
engines: {node: '>=4'}
@@ -1666,6 +3306,27 @@ packages:
resolution: {integrity: sha512-5IAMBTl9p6PaAjYCnMv5FmqIF6GcZnawAVnzaCG0rX2aYZJ4CxEkZNtVPuTRug7fL7wyM5BQYTlAzcyMPi6oTQ==}
dev: true
+ /node-fetch@2.7.0:
+ resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==}
+ engines: {node: 4.x || >=6.0.0}
+ peerDependencies:
+ encoding: ^0.1.0
+ peerDependenciesMeta:
+ encoding:
+ optional: true
+ dependencies:
+ whatwg-url: 5.0.0
+ dev: true
+
+ /normalize-package-data@2.5.0:
+ resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==}
+ dependencies:
+ hosted-git-info: 2.8.9
+ resolve: 1.22.8
+ semver: 5.7.2
+ validate-npm-package-license: 3.0.4
+ dev: true
+
/normalize-path@3.0.0:
resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
engines: {node: '>=0.10.0'}
@@ -1694,6 +3355,37 @@ packages:
npm-normalize-package-bin: 2.0.0
dev: true
+ /nwsapi@2.2.7:
+ resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==}
+ dev: true
+
+ /object-inspect@1.13.1:
+ resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==}
+ dev: true
+
+ /object-is@1.1.5:
+ resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.5
+ define-properties: 1.2.1
+ dev: true
+
+ /object-keys@1.1.1:
+ resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /object.assign@4.1.5:
+ resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.5
+ define-properties: 1.2.1
+ has-symbols: 1.0.3
+ object-keys: 1.1.1
+ dev: true
+
/ohash@1.1.2:
resolution: {integrity: sha512-9CIOSq5945rI045GFtcO3uudyOkYVY1nyfFxVQp+9BRgslr8jPNiSSrsFGg/BNTUFOLqx0P5tng6G32brIPw0w==}
dev: true
@@ -1716,6 +3408,29 @@ packages:
type-check: 0.4.0
dev: true
+ /os-tmpdir@1.0.2:
+ resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /outdent@0.5.0:
+ resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==}
+ dev: true
+
+ /p-filter@2.1.0:
+ resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==}
+ engines: {node: '>=8'}
+ dependencies:
+ p-map: 2.1.0
+ dev: true
+
+ /p-limit@2.3.0:
+ resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
+ engines: {node: '>=6'}
+ dependencies:
+ p-try: 2.2.0
+ dev: true
+
/p-limit@3.1.0:
resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
engines: {node: '>=10'}
@@ -1723,6 +3438,20 @@ packages:
yocto-queue: 0.1.0
dev: true
+ /p-limit@4.0.0:
+ resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ dependencies:
+ yocto-queue: 1.0.0
+ dev: true
+
+ /p-locate@4.1.0:
+ resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==}
+ engines: {node: '>=8'}
+ dependencies:
+ p-limit: 2.3.0
+ dev: true
+
/p-locate@5.0.0:
resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
engines: {node: '>=10'}
@@ -1730,6 +3459,16 @@ packages:
p-limit: 3.1.0
dev: true
+ /p-map@2.1.0:
+ resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /p-try@2.2.0:
+ resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
+ engines: {node: '>=6'}
+ dev: true
+
/parent-module@1.0.1:
resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
engines: {node: '>=6'}
@@ -1737,6 +3476,22 @@ packages:
callsites: 3.1.0
dev: true
+ /parse-json@5.2.0:
+ resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
+ engines: {node: '>=8'}
+ dependencies:
+ '@babel/code-frame': 7.23.5
+ error-ex: 1.3.2
+ json-parse-even-better-errors: 2.3.1
+ lines-and-columns: 1.2.4
+ dev: true
+
+ /parse5@7.1.2:
+ resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==}
+ dependencies:
+ entities: 4.5.0
+ dev: true
+
/pascal-case@3.1.2:
resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==}
dependencies:
@@ -1759,6 +3514,10 @@ packages:
engines: {node: '>=8'}
dev: true
+ /path-parse@1.0.7:
+ resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
+ dev: true
+
/path-type@4.0.0:
resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
engines: {node: '>=8'}
@@ -1768,6 +3527,10 @@ packages:
resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==}
dev: true
+ /pathval@1.1.1:
+ resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==}
+ dev: true
+
/perfect-debounce@1.0.0:
resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==}
dev: true
@@ -1789,6 +3552,18 @@ packages:
engines: {node: '>=8.6'}
dev: true
+ /pify@4.0.1:
+ resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /pkg-dir@4.2.0:
+ resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ find-up: 4.1.0
+ dev: true
+
/pkg-types@1.0.3:
resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==}
dependencies:
@@ -1874,11 +3649,61 @@ packages:
source-map-js: 1.0.2
dev: true
+ /preferred-pm@3.1.2:
+ resolution: {integrity: sha512-nk7dKrcW8hfCZ4H6klWcdRknBOXWzNQByJ0oJyX97BOupsYD+FzLS4hflgEu/uPUEHZCuRfMxzCBsuWd7OzT8Q==}
+ engines: {node: '>=10'}
+ dependencies:
+ find-up: 5.0.0
+ find-yarn-workspace-root2: 1.2.16
+ path-exists: 4.0.0
+ which-pm: 2.0.0
+ dev: true
+
/prelude-ls@1.2.1:
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
engines: {node: '>= 0.8.0'}
dev: true
+ /prettier-plugin-svelte@3.1.2(prettier@3.1.1)(svelte@4.2.0):
+ resolution: {integrity: sha512-7xfMZtwgAWHMT0iZc8jN4o65zgbAQ3+O32V6W7pXrqNvKnHnkoyQCGCbKeUyXKZLbYE0YhFRnamfxfkEGxm8qA==}
+ peerDependencies:
+ prettier: ^3.0.0
+ svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0
+ dependencies:
+ prettier: 3.1.1
+ svelte: 4.2.0
+ dev: true
+
+ /prettier@2.8.8:
+ resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==}
+ engines: {node: '>=10.13.0'}
+ hasBin: true
+ dev: true
+
+ /prettier@3.1.1:
+ resolution: {integrity: sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==}
+ engines: {node: '>=14'}
+ hasBin: true
+ dev: true
+
+ /pretty-format@27.5.1:
+ resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==}
+ engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
+ dependencies:
+ ansi-regex: 5.0.1
+ ansi-styles: 5.2.0
+ react-is: 17.0.2
+ dev: true
+
+ /pretty-format@29.7.0:
+ resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==}
+ engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
+ dependencies:
+ '@jest/schemas': 29.6.3
+ ansi-styles: 5.2.0
+ react-is: 18.2.0
+ dev: true
+
/prompts@2.4.2:
resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==}
engines: {node: '>= 6'}
@@ -1887,6 +3712,14 @@ packages:
sisteransi: 1.0.5
dev: true
+ /pseudomap@1.0.2:
+ resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==}
+ dev: true
+
+ /psl@1.9.0:
+ resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==}
+ dev: true
+
/publint@0.2.2:
resolution: {integrity: sha512-2t2IO6Y8Z+QBNLG89bpRhTQH7Ifn/83Kr0dVVdmOybq7GAT6+M4YGZd5AhtfMJbYPmbT7YD469pDKLCK94Q2+Q==}
engines: {node: '>=16'}
@@ -1902,11 +3735,20 @@ packages:
engines: {node: '>=6'}
dev: true
+ /querystringify@2.2.0:
+ resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==}
+ dev: true
+
/queue-microtask@1.2.3:
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
dev: true
- /rc9@2.1.1:
+ /quick-lru@4.0.1:
+ resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /rc9@2.1.1:
resolution: {integrity: sha512-lNeOl38Ws0eNxpO3+wD1I9rkHGQyj1NU1jlzv4go2CtEnEQEUfqnIvZG7W+bC/aXdJ27n5x/yUjb6RoT9tko+Q==}
dependencies:
defu: 6.1.2
@@ -1914,6 +3756,43 @@ packages:
flat: 5.0.2
dev: true
+ /react-is@17.0.2:
+ resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==}
+ dev: true
+
+ /react-is@18.2.0:
+ resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==}
+ dev: true
+
+ /read-pkg-up@7.0.1:
+ resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==}
+ engines: {node: '>=8'}
+ dependencies:
+ find-up: 4.1.0
+ read-pkg: 5.2.0
+ type-fest: 0.8.1
+ dev: true
+
+ /read-pkg@5.2.0:
+ resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==}
+ engines: {node: '>=8'}
+ dependencies:
+ '@types/normalize-package-data': 2.4.4
+ normalize-package-data: 2.5.0
+ parse-json: 5.2.0
+ type-fest: 0.6.0
+ dev: true
+
+ /read-yaml-file@1.1.0:
+ resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==}
+ engines: {node: '>=6'}
+ dependencies:
+ graceful-fs: 4.2.11
+ js-yaml: 3.14.1
+ pify: 4.0.1
+ strip-bom: 3.0.0
+ dev: true
+
/readdirp@3.6.0:
resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
engines: {node: '>=8.10.0'}
@@ -1921,11 +3800,59 @@ packages:
picomatch: 2.3.1
dev: true
+ /redent@3.0.0:
+ resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==}
+ engines: {node: '>=8'}
+ dependencies:
+ indent-string: 4.0.0
+ strip-indent: 3.0.0
+ dev: true
+
+ /regenerator-runtime@0.14.1:
+ resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==}
+ dev: true
+
+ /regexp.prototype.flags@1.5.1:
+ resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.5
+ define-properties: 1.2.1
+ set-function-name: 2.0.1
+ dev: true
+
+ /require-directory@2.1.1:
+ resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /require-main-filename@2.0.0:
+ resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==}
+ dev: true
+
+ /requires-port@1.0.0:
+ resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==}
+ dev: true
+
/resolve-from@4.0.0:
resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
engines: {node: '>=4'}
dev: true
+ /resolve-from@5.0.0:
+ resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /resolve@1.22.8:
+ resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
+ hasBin: true
+ dependencies:
+ is-core-module: 2.13.1
+ path-parse: 1.0.7
+ supports-preserve-symlinks-flag: 1.0.0
+ dev: true
+
/reusify@1.0.4:
resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
@@ -1950,7 +3877,11 @@ packages:
engines: {node: '>=14.18.0', npm: '>=8.0.0'}
hasBin: true
optionalDependencies:
- fsevents: 2.3.2
+ fsevents: 2.3.3
+ dev: true
+
+ /rrweb-cssom@0.6.0:
+ resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==}
dev: true
/run-parallel@1.2.0:
@@ -1966,6 +3897,28 @@ packages:
mri: 1.2.0
dev: true
+ /safe-array-concat@1.0.1:
+ resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==}
+ engines: {node: '>=0.4'}
+ dependencies:
+ call-bind: 1.0.5
+ get-intrinsic: 1.2.2
+ has-symbols: 1.0.3
+ isarray: 2.0.5
+ dev: true
+
+ /safe-regex-test@1.0.0:
+ resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==}
+ dependencies:
+ call-bind: 1.0.5
+ get-intrinsic: 1.2.2
+ is-regex: 1.1.4
+ dev: true
+
+ /safer-buffer@2.1.2:
+ resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
+ dev: true
+
/sander@0.5.1:
resolution: {integrity: sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==}
dependencies:
@@ -1985,6 +3938,18 @@ packages:
source-map-js: 1.0.2
dev: true
+ /saxes@6.0.0:
+ resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==}
+ engines: {node: '>=v12.22.7'}
+ dependencies:
+ xmlchars: 2.2.0
+ dev: true
+
+ /semver@5.7.2:
+ resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==}
+ hasBin: true
+ dev: true
+
/semver@7.5.3:
resolution: {integrity: sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==}
engines: {node: '>=10'}
@@ -2001,10 +3966,40 @@ packages:
lru-cache: 6.0.0
dev: true
+ /set-blocking@2.0.0:
+ resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==}
+ dev: true
+
/set-cookie-parser@2.6.0:
resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==}
dev: true
+ /set-function-length@1.1.1:
+ resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ define-data-property: 1.1.1
+ get-intrinsic: 1.2.2
+ gopd: 1.0.1
+ has-property-descriptors: 1.0.1
+ dev: true
+
+ /set-function-name@2.0.1:
+ resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ define-data-property: 1.1.1
+ functions-have-names: 1.2.3
+ has-property-descriptors: 1.0.1
+ dev: true
+
+ /shebang-command@1.2.0:
+ resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ shebang-regex: 1.0.0
+ dev: true
+
/shebang-command@2.0.0:
resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
engines: {node: '>=8'}
@@ -2012,11 +4007,32 @@ packages:
shebang-regex: 3.0.0
dev: true
+ /shebang-regex@1.0.0:
+ resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
/shebang-regex@3.0.0:
resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
engines: {node: '>=8'}
dev: true
+ /side-channel@1.0.4:
+ resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==}
+ dependencies:
+ call-bind: 1.0.5
+ get-intrinsic: 1.2.2
+ object-inspect: 1.13.1
+ dev: true
+
+ /siginfo@2.0.0:
+ resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==}
+ dev: true
+
+ /signal-exit@3.0.7:
+ resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
+ dev: true
+
/sirv@2.0.3:
resolution: {integrity: sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==}
engines: {node: '>= 10'}
@@ -2035,6 +4051,19 @@ packages:
engines: {node: '>=8'}
dev: true
+ /smartwrap@2.0.2:
+ resolution: {integrity: sha512-vCsKNQxb7PnCNd2wY1WClWifAc2lwqsG8OaswpJkVJsvMGcnEntdTCDajZCkk93Ay1U3t/9puJmb525Rg5MZBA==}
+ engines: {node: '>=6'}
+ hasBin: true
+ dependencies:
+ array.prototype.flat: 1.3.2
+ breakword: 1.0.6
+ grapheme-splitter: 1.0.4
+ strip-ansi: 6.0.1
+ wcwidth: 1.0.1
+ yargs: 15.4.1
+ dev: true
+
/sorcery@0.11.0:
resolution: {integrity: sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw==}
hasBin: true
@@ -2050,6 +4079,67 @@ packages:
engines: {node: '>=0.10.0'}
dev: true
+ /spawndamnit@2.0.0:
+ resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==}
+ dependencies:
+ cross-spawn: 5.1.0
+ signal-exit: 3.0.7
+ dev: true
+
+ /spdx-correct@3.2.0:
+ resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==}
+ dependencies:
+ spdx-expression-parse: 3.0.1
+ spdx-license-ids: 3.0.16
+ dev: true
+
+ /spdx-exceptions@2.3.0:
+ resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==}
+ dev: true
+
+ /spdx-expression-parse@3.0.1:
+ resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==}
+ dependencies:
+ spdx-exceptions: 2.3.0
+ spdx-license-ids: 3.0.16
+ dev: true
+
+ /spdx-license-ids@3.0.16:
+ resolution: {integrity: sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==}
+ dev: true
+
+ /sprintf-js@1.0.3:
+ resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
+ dev: true
+
+ /stack-utils@2.0.6:
+ resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==}
+ engines: {node: '>=10'}
+ dependencies:
+ escape-string-regexp: 2.0.0
+ dev: true
+
+ /stackback@0.0.2:
+ resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==}
+ dev: true
+
+ /std-env@3.7.0:
+ resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==}
+ dev: true
+
+ /stop-iteration-iterator@1.0.0:
+ resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ internal-slot: 1.0.6
+ dev: true
+
+ /stream-transform@2.1.3:
+ resolution: {integrity: sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==}
+ dependencies:
+ mixme: 0.5.10
+ dev: true
+
/streamsearch@1.1.0:
resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==}
engines: {node: '>=10.0.0'}
@@ -2060,6 +4150,40 @@ packages:
engines: {node: '>=0.6.19'}
dev: true
+ /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.prototype.trim@1.2.8:
+ resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.5
+ define-properties: 1.2.1
+ es-abstract: 1.22.3
+ dev: true
+
+ /string.prototype.trimend@1.0.7:
+ resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==}
+ dependencies:
+ call-bind: 1.0.5
+ define-properties: 1.2.1
+ es-abstract: 1.22.3
+ dev: true
+
+ /string.prototype.trimstart@1.0.7:
+ resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==}
+ dependencies:
+ call-bind: 1.0.5
+ define-properties: 1.2.1
+ es-abstract: 1.22.3
+ dev: true
+
/strip-ansi@6.0.1:
resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
engines: {node: '>=8'}
@@ -2067,6 +4191,11 @@ packages:
ansi-regex: 5.0.1
dev: true
+ /strip-bom@3.0.0:
+ resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
+ engines: {node: '>=4'}
+ dev: true
+
/strip-indent@3.0.0:
resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==}
engines: {node: '>=8'}
@@ -2079,6 +4208,19 @@ packages:
engines: {node: '>=8'}
dev: true
+ /strip-literal@1.3.0:
+ resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==}
+ dependencies:
+ acorn: 8.11.2
+ dev: true
+
+ /supports-color@5.5.0:
+ resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
+ engines: {node: '>=4'}
+ dependencies:
+ has-flag: 3.0.0
+ dev: true
+
/supports-color@7.2.0:
resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
engines: {node: '>=8'}
@@ -2086,6 +4228,11 @@ packages:
has-flag: 4.0.0
dev: true
+ /supports-preserve-symlinks-flag@1.0.0:
+ resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
/svelte-check@3.5.2(postcss@8.4.24)(sass@1.67.0)(svelte@4.2.0):
resolution: {integrity: sha512-5a/YWbiH4c+AqAUP+0VneiV5bP8YOk9JL3jwvN+k2PEPLgpu85bjQc5eE67+eIZBBwUEJzmO3I92OqKcqbp3fw==}
hasBin: true
@@ -2219,6 +4366,10 @@ packages:
periscopic: 3.1.0
dev: true
+ /symbol-tree@3.2.4:
+ resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==}
+ dev: true
+
/tar@6.1.15:
resolution: {integrity: sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A==}
engines: {node: '>=10'}
@@ -2231,6 +4382,11 @@ packages:
yallist: 4.0.0
dev: true
+ /term-size@2.2.1:
+ resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==}
+ engines: {node: '>=8'}
+ dev: true
+
/text-table@0.2.0:
resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
dev: true
@@ -2242,6 +4398,27 @@ packages:
globrex: 0.1.2
dev: true
+ /tinybench@2.5.1:
+ resolution: {integrity: sha512-65NKvSuAVDP/n4CqH+a9w2kTlLReS9vhsAP06MWx+/89nMinJyB2icyl58RIcqCmIggpojIGeuJGhjU1aGMBSg==}
+ dev: true
+
+ /tinypool@0.6.0:
+ resolution: {integrity: sha512-FdswUUo5SxRizcBc6b1GSuLpLjisa8N8qMyYoP3rl+bym+QauhtJP5bvZY1ytt8krKGmMLYIRl36HBZfeAoqhQ==}
+ engines: {node: '>=14.0.0'}
+ dev: true
+
+ /tinyspy@2.2.0:
+ resolution: {integrity: sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==}
+ engines: {node: '>=14.0.0'}
+ dev: true
+
+ /tmp@0.0.33:
+ resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==}
+ engines: {node: '>=0.6.0'}
+ dependencies:
+ os-tmpdir: 1.0.2
+ dev: true
+
/to-regex-range@5.0.1:
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
engines: {node: '>=8.0'}
@@ -2258,6 +4435,32 @@ packages:
engines: {node: '>=6'}
dev: true
+ /tough-cookie@4.1.3:
+ resolution: {integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==}
+ engines: {node: '>=6'}
+ dependencies:
+ psl: 1.9.0
+ punycode: 2.3.0
+ universalify: 0.2.0
+ url-parse: 1.5.10
+ dev: true
+
+ /tr46@0.0.3:
+ resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
+ dev: true
+
+ /tr46@4.1.1:
+ resolution: {integrity: sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==}
+ engines: {node: '>=14'}
+ dependencies:
+ punycode: 2.3.0
+ dev: true
+
+ /trim-newlines@3.0.1:
+ resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==}
+ engines: {node: '>=8'}
+ dev: true
+
/ts-api-utils@1.0.3(typescript@5.2.2):
resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==}
engines: {node: '>=16.13.0'}
@@ -2271,6 +4474,20 @@ packages:
resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
dev: true
+ /tty-table@4.2.3:
+ resolution: {integrity: sha512-Fs15mu0vGzCrj8fmJNP7Ynxt5J7praPXqFN0leZeZBXJwkMxv9cb2D454k1ltrtUSJbZ4yH4e0CynsHLxmUfFA==}
+ engines: {node: '>=8.0.0'}
+ hasBin: true
+ dependencies:
+ chalk: 4.1.2
+ csv: 5.5.3
+ kleur: 4.1.5
+ smartwrap: 2.0.2
+ strip-ansi: 6.0.1
+ wcwidth: 1.0.1
+ yargs: 17.7.2
+ dev: true
+
/type-check@0.4.0:
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
engines: {node: '>= 0.8.0'}
@@ -2283,11 +4500,64 @@ packages:
engines: {node: '>=4'}
dev: true
+ /type-fest@0.13.1:
+ resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==}
+ engines: {node: '>=10'}
+ dev: true
+
/type-fest@0.20.2:
resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
engines: {node: '>=10'}
dev: true
+ /type-fest@0.6.0:
+ resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /type-fest@0.8.1:
+ resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /typed-array-buffer@1.0.0:
+ resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.5
+ get-intrinsic: 1.2.2
+ is-typed-array: 1.1.12
+ dev: true
+
+ /typed-array-byte-length@1.0.0:
+ resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.5
+ for-each: 0.3.3
+ has-proto: 1.0.1
+ is-typed-array: 1.1.12
+ dev: true
+
+ /typed-array-byte-offset@1.0.0:
+ resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ available-typed-arrays: 1.0.5
+ call-bind: 1.0.5
+ for-each: 0.3.3
+ has-proto: 1.0.1
+ is-typed-array: 1.1.12
+ dev: true
+
+ /typed-array-length@1.0.4:
+ resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==}
+ dependencies:
+ call-bind: 1.0.5
+ for-each: 0.3.3
+ is-typed-array: 1.1.12
+ dev: true
+
/typescript@5.2.2:
resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==}
engines: {node: '>=14.17'}
@@ -2298,6 +4568,23 @@ packages:
resolution: {integrity: sha512-TrY6DsjTQQgyS3E3dBaOXf0TpPD8u9FVrVYmKVegJuFw51n/YB9XPt+U6ydzFG5ZIN7+DIjPbNmXoBj9esYhgQ==}
dev: true
+ /ufo@1.3.2:
+ resolution: {integrity: sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==}
+ dev: true
+
+ /unbox-primitive@1.0.2:
+ resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==}
+ dependencies:
+ call-bind: 1.0.5
+ has-bigints: 1.0.2
+ has-symbols: 1.0.3
+ which-boxed-primitive: 1.0.2
+ dev: true
+
+ /undici-types@5.26.5:
+ resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
+ dev: true
+
/undici@5.23.0:
resolution: {integrity: sha512-1D7w+fvRsqlQ9GscLBwcAJinqcZGHUKjbOmXdlE/v8BvEGXjeWAax+341q44EuTcHXXnfyKNbKRq4Lg7OzhMmg==}
engines: {node: '>=14.0'}
@@ -2305,17 +4592,63 @@ packages:
busboy: 1.6.0
dev: true
+ /universalify@0.1.2:
+ resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==}
+ engines: {node: '>= 4.0.0'}
+ dev: true
+
+ /universalify@0.2.0:
+ resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==}
+ engines: {node: '>= 4.0.0'}
+ dev: true
+
/uri-js@4.4.1:
resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
dependencies:
punycode: 2.3.0
dev: true
+ /url-parse@1.5.10:
+ resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==}
+ dependencies:
+ querystringify: 2.2.0
+ requires-port: 1.0.0
+ dev: true
+
/util-deprecate@1.0.2:
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
dev: true
- /vite@4.4.9(sass@1.67.0):
+ /validate-npm-package-license@3.0.4:
+ resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==}
+ dependencies:
+ spdx-correct: 3.2.0
+ spdx-expression-parse: 3.0.1
+ dev: true
+
+ /vite-node@0.33.0(@types/node@20.10.5)(sass@1.67.0):
+ resolution: {integrity: sha512-19FpHYbwWWxDr73ruNahC+vtEdza52kA90Qb3La98yZ0xULqV8A5JLNPUff0f5zID4984tW7l3DH2przTJUZSw==}
+ engines: {node: '>=v14.18.0'}
+ hasBin: true
+ dependencies:
+ cac: 6.7.14
+ debug: 4.3.4
+ mlly: 1.4.2
+ pathe: 1.1.1
+ picocolors: 1.0.0
+ vite: 4.4.9(@types/node@20.10.5)(sass@1.67.0)
+ transitivePeerDependencies:
+ - '@types/node'
+ - less
+ - lightningcss
+ - sass
+ - stylus
+ - sugarss
+ - supports-color
+ - terser
+ dev: true
+
+ /vite@4.4.9(@types/node@20.10.5)(sass@1.67.0):
resolution: {integrity: sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==}
engines: {node: ^14.18.0 || >=16.0.0}
hasBin: true
@@ -2343,12 +4676,13 @@ packages:
terser:
optional: true
dependencies:
+ '@types/node': 20.10.5
esbuild: 0.18.20
postcss: 8.4.30
rollup: 3.29.2
sass: 1.67.0
optionalDependencies:
- fsevents: 2.3.2
+ fsevents: 2.3.3
dev: true
/vitefu@0.2.4(vite@4.4.9):
@@ -2359,7 +4693,171 @@ packages:
vite:
optional: true
dependencies:
- vite: 4.4.9(sass@1.67.0)
+ vite: 4.4.9(@types/node@20.10.5)(sass@1.67.0)
+ dev: true
+
+ /vitest@0.33.0(jsdom@22.1.0)(sass@1.67.0):
+ resolution: {integrity: sha512-1CxaugJ50xskkQ0e969R/hW47za4YXDUfWJDxip1hwbnhUjYolpfUn2AMOulqG/Dtd9WYAtkHmM/m3yKVrEejQ==}
+ engines: {node: '>=v14.18.0'}
+ hasBin: true
+ peerDependencies:
+ '@edge-runtime/vm': '*'
+ '@vitest/browser': '*'
+ '@vitest/ui': '*'
+ happy-dom: '*'
+ jsdom: '*'
+ playwright: '*'
+ safaridriver: '*'
+ webdriverio: '*'
+ peerDependenciesMeta:
+ '@edge-runtime/vm':
+ optional: true
+ '@vitest/browser':
+ optional: true
+ '@vitest/ui':
+ optional: true
+ happy-dom:
+ optional: true
+ jsdom:
+ optional: true
+ playwright:
+ optional: true
+ safaridriver:
+ optional: true
+ webdriverio:
+ optional: true
+ dependencies:
+ '@types/chai': 4.3.11
+ '@types/chai-subset': 1.3.5
+ '@types/node': 20.10.5
+ '@vitest/expect': 0.33.0
+ '@vitest/runner': 0.33.0
+ '@vitest/snapshot': 0.33.0
+ '@vitest/spy': 0.33.0
+ '@vitest/utils': 0.33.0
+ acorn: 8.11.2
+ acorn-walk: 8.3.1
+ cac: 6.7.14
+ chai: 4.3.10
+ debug: 4.3.4
+ jsdom: 22.1.0
+ local-pkg: 0.4.3
+ magic-string: 0.30.5
+ pathe: 1.1.1
+ picocolors: 1.0.0
+ std-env: 3.7.0
+ strip-literal: 1.3.0
+ tinybench: 2.5.1
+ tinypool: 0.6.0
+ vite: 4.4.9(@types/node@20.10.5)(sass@1.67.0)
+ vite-node: 0.33.0(@types/node@20.10.5)(sass@1.67.0)
+ why-is-node-running: 2.2.2
+ transitivePeerDependencies:
+ - less
+ - lightningcss
+ - sass
+ - stylus
+ - sugarss
+ - supports-color
+ - terser
+ dev: true
+
+ /w3c-xmlserializer@4.0.0:
+ resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==}
+ engines: {node: '>=14'}
+ dependencies:
+ xml-name-validator: 4.0.0
+ dev: true
+
+ /wcwidth@1.0.1:
+ resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==}
+ dependencies:
+ defaults: 1.0.4
+ dev: true
+
+ /webidl-conversions@3.0.1:
+ resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
+ dev: true
+
+ /webidl-conversions@7.0.0:
+ resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==}
+ engines: {node: '>=12'}
+ dev: true
+
+ /whatwg-encoding@2.0.0:
+ resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==}
+ engines: {node: '>=12'}
+ dependencies:
+ iconv-lite: 0.6.3
+ dev: true
+
+ /whatwg-mimetype@3.0.0:
+ resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==}
+ engines: {node: '>=12'}
+ dev: true
+
+ /whatwg-url@12.0.1:
+ resolution: {integrity: sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==}
+ engines: {node: '>=14'}
+ dependencies:
+ tr46: 4.1.1
+ webidl-conversions: 7.0.0
+ dev: true
+
+ /whatwg-url@5.0.0:
+ resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
+ dependencies:
+ tr46: 0.0.3
+ webidl-conversions: 3.0.1
+ dev: true
+
+ /which-boxed-primitive@1.0.2:
+ resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==}
+ dependencies:
+ is-bigint: 1.0.4
+ is-boolean-object: 1.1.2
+ is-number-object: 1.0.7
+ is-string: 1.0.7
+ is-symbol: 1.0.4
+ dev: true
+
+ /which-collection@1.0.1:
+ resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==}
+ dependencies:
+ is-map: 2.0.2
+ is-set: 2.0.2
+ is-weakmap: 2.0.1
+ is-weakset: 2.0.2
+ dev: true
+
+ /which-module@2.0.1:
+ resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==}
+ dev: true
+
+ /which-pm@2.0.0:
+ resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==}
+ engines: {node: '>=8.15'}
+ dependencies:
+ load-yaml-file: 0.2.0
+ path-exists: 4.0.0
+ dev: true
+
+ /which-typed-array@1.1.13:
+ resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ available-typed-arrays: 1.0.5
+ call-bind: 1.0.5
+ for-each: 0.3.3
+ gopd: 1.0.1
+ has-tostringtag: 1.0.0
+ dev: true
+
+ /which@1.3.1:
+ resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==}
+ hasBin: true
+ dependencies:
+ isexe: 2.0.0
dev: true
/which@2.0.2:
@@ -2370,10 +4868,72 @@ packages:
isexe: 2.0.0
dev: true
+ /why-is-node-running@2.2.2:
+ resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==}
+ engines: {node: '>=8'}
+ hasBin: true
+ dependencies:
+ siginfo: 2.0.0
+ stackback: 0.0.2
+ dev: true
+
+ /wrap-ansi@6.2.0:
+ resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==}
+ engines: {node: '>=8'}
+ dependencies:
+ ansi-styles: 4.3.0
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ dev: true
+
+ /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
+
/wrappy@1.0.2:
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
dev: true
+ /ws@8.16.0:
+ resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==}
+ engines: {node: '>=10.0.0'}
+ peerDependencies:
+ bufferutil: ^4.0.1
+ utf-8-validate: '>=5.0.2'
+ peerDependenciesMeta:
+ bufferutil:
+ optional: true
+ utf-8-validate:
+ optional: true
+ dev: true
+
+ /xml-name-validator@4.0.0:
+ resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==}
+ engines: {node: '>=12'}
+ dev: true
+
+ /xmlchars@2.2.0:
+ resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==}
+ dev: true
+
+ /y18n@4.0.3:
+ resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==}
+ dev: true
+
+ /y18n@5.0.8:
+ resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /yallist@2.1.2:
+ resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==}
+ dev: true
+
/yallist@4.0.0:
resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
dev: true
@@ -2383,7 +4943,55 @@ packages:
engines: {node: '>= 6'}
dev: true
+ /yargs-parser@18.1.3:
+ resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==}
+ engines: {node: '>=6'}
+ dependencies:
+ camelcase: 5.3.1
+ decamelize: 1.2.0
+ dev: true
+
+ /yargs-parser@21.1.1:
+ resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
+ engines: {node: '>=12'}
+ dev: true
+
+ /yargs@15.4.1:
+ resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==}
+ engines: {node: '>=8'}
+ dependencies:
+ cliui: 6.0.0
+ decamelize: 1.2.0
+ find-up: 4.1.0
+ get-caller-file: 2.0.5
+ require-directory: 2.1.1
+ require-main-filename: 2.0.0
+ set-blocking: 2.0.0
+ string-width: 4.2.3
+ which-module: 2.0.1
+ y18n: 4.0.3
+ yargs-parser: 18.1.3
+ dev: true
+
+ /yargs@17.7.2:
+ resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==}
+ engines: {node: '>=12'}
+ dependencies:
+ cliui: 8.0.1
+ escalade: 3.1.1
+ get-caller-file: 2.0.5
+ require-directory: 2.1.1
+ string-width: 4.2.3
+ y18n: 5.0.8
+ yargs-parser: 21.1.1
+ dev: true
+
/yocto-queue@0.1.0:
resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
engines: {node: '>=10'}
dev: true
+
+ /yocto-queue@1.0.0:
+ resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==}
+ engines: {node: '>=12.20'}
+ dev: true
diff --git a/scripts/setupTest.ts b/scripts/setupTest.ts
new file mode 100644
index 0000000..241bb2e
--- /dev/null
+++ b/scripts/setupTest.ts
@@ -0,0 +1,123 @@
+// setupTest.ts
+/* eslint-disable @typescript-eslint/no-empty-function */
+import matchers from '@testing-library/jest-dom/matchers';
+import { expect, vi } from 'vitest';
+import type { Navigation, Page } from '@sveltejs/kit';
+import { readable } from 'svelte/store';
+import * as environment from '$app/environment';
+import * as navigation from '$app/navigation';
+import * as stores from '$app/stores';
+import { configure } from '@testing-library/dom';
+
+// Add custom jest matchers
+expect.extend(matchers);
+
+configure({
+ asyncUtilTimeout: 1500
+});
+
+// Mock SvelteKit runtime module $app/environment
+vi.mock('$app/environment', (): typeof environment => ({
+ browser: false,
+ dev: true,
+ building: false,
+ version: 'any'
+}));
+
+// Mock SvelteKit runtime module $app/navigation
+vi.mock('$app/navigation', (): typeof navigation => ({
+ afterNavigate: () => {},
+ beforeNavigate: () => {},
+ disableScrollHandling: () => {},
+ goto: () => Promise.resolve(),
+ invalidate: () => Promise.resolve(),
+ invalidateAll: () => Promise.resolve(),
+ preloadData: () => Promise.resolve(),
+ preloadCode: () => Promise.resolve(),
+ onNavigate: () => {}
+}));
+
+// Mock SvelteKit runtime module $app/stores
+vi.mock('$app/stores', (): typeof stores => {
+ const getStores: typeof stores.getStores = () => {
+ const navigating = readable
(null);
+ const page = readable({
+ url: new URL('http://localhost'),
+ params: {},
+ route: {
+ id: null
+ },
+ status: 200,
+ error: null,
+ data: {},
+ form: undefined
+ });
+ const updated = { subscribe: readable(false).subscribe, check: async () => false };
+
+ return { navigating, page, updated };
+ };
+
+ const page: typeof stores.page = {
+ subscribe(fn) {
+ return getStores().page.subscribe(fn);
+ }
+ };
+ const navigating: typeof stores.navigating = {
+ subscribe(fn) {
+ return getStores().navigating.subscribe(fn);
+ }
+ };
+ const updated: typeof stores.updated = {
+ subscribe(fn) {
+ return getStores().updated.subscribe(fn);
+ },
+ check: async () => false
+ };
+
+ return {
+ getStores,
+ navigating,
+ page,
+ updated
+ };
+});
+
+Element.prototype.scrollIntoView = () => {};
+
+export const mediaQueryState = {
+ matches: false
+};
+
+const listeners: ((event: unknown) => void)[] = [];
+
+Object.defineProperty(window, 'matchMedia', {
+ writable: true,
+ value: vi.fn().mockImplementation((query) => ({
+ matches: mediaQueryState.matches,
+ media: query,
+ onchange: null,
+ addListener: vi.fn(),
+ removeListener: vi.fn(),
+ addEventListener: vi.fn((type, callback) => {
+ if (type === 'change') {
+ listeners.push(callback);
+ }
+ }),
+ removeEventListener: vi.fn((type, callback) => {
+ const index = listeners.indexOf(callback);
+ if (index !== -1) {
+ listeners.splice(index, 1);
+ }
+ }),
+ dispatchEvent: vi.fn((event) => {
+ if (event.type === 'change') {
+ for (const callback of listeners) {
+ callback({
+ matches: mediaQueryState.matches,
+ media: '(prefers-color-scheme: light)'
+ });
+ }
+ }
+ })
+ }))
+});
diff --git a/src/app.html b/src/app.html
index d2fc6b0..f22aeaa 100644
--- a/src/app.html
+++ b/src/app.html
@@ -1,4 +1,4 @@
-
+
diff --git a/src/components/CodeBlock.svelte b/src/components/CodeBlock.svelte
index ca878e2..0f94e79 100644
--- a/src/components/CodeBlock.svelte
+++ b/src/components/CodeBlock.svelte
@@ -1,170 +1,176 @@
-
-
-
+
+
+
diff --git a/src/components/Expand.svelte b/src/components/Expand.svelte
index 88f46d9..579d8d1 100644
--- a/src/components/Expand.svelte
+++ b/src/components/Expand.svelte
@@ -1,43 +1,45 @@
-
Expand
-
- You can change the amount of toasts visible through the visibleToasts
prop.
-
-
-
-
-
-
`} />
+
Expand
+
+ You can change the amount of toasts visible through the visibleToasts
prop.
+
+
+
+
+
+
`} />
diff --git a/src/components/Footer.svelte b/src/components/Footer.svelte
index a0c185e..adb0bf3 100644
--- a/src/components/Footer.svelte
+++ b/src/components/Footer.svelte
@@ -1,51 +1,51 @@
diff --git a/src/components/Hero.svelte b/src/components/Hero.svelte
index 15caf5a..f7c2e15 100644
--- a/src/components/Hero.svelte
+++ b/src/components/Hero.svelte
@@ -1,166 +1,186 @@
-
-
Svelte Sonner
-
An opinionated toast component for Svelte.
-
+
+
Svelte Sonner
+
+ An opinionated toast component for Svelte.
+
+
diff --git a/src/components/Installation.svelte b/src/components/Installation.svelte
index ea37d6c..88525f1 100644
--- a/src/components/Installation.svelte
+++ b/src/components/Installation.svelte
@@ -1,96 +1,98 @@
-
Installation
-
-
-
- npm install svelte-sonner{' '}
-
-
+
Installation
+
+
+
+ npm install svelte-sonner{' '}
+
+
diff --git a/src/components/Other.svelte b/src/components/Other.svelte
index d012fe5..133eb51 100644
--- a/src/components/Other.svelte
+++ b/src/components/Other.svelte
@@ -1,59 +1,60 @@
-
-
-
Other
-
- {#each allTypes as type}
-
- {/each}
-
-
-${activeType?.snippet || ''}
+ $: richColorsActive = activeType?.name?.includes('Rich');
+ $: closeButtonActive = activeType?.name?.includes('Close');
-
-
-`}
- />
+
+
Other
+
+ {#each allTypes as type}
+
+ {/each}
+
+
diff --git a/src/components/Position.svelte b/src/components/Position.svelte
index af11039..c6fc1cb 100644
--- a/src/components/Position.svelte
+++ b/src/components/Position.svelte
@@ -1,39 +1,47 @@
-
Position
-
Swipe direction changes depending on the position.
-
+
`} />
diff --git a/src/components/Test.svelte b/src/components/Test.svelte
index cf462c4..d3f31c4 100644
--- a/src/components/Test.svelte
+++ b/src/components/Test.svelte
@@ -1,67 +1,71 @@
-
Event Created
-
Today at 4:00pm - "{eventName}"
-
+
Event Created
+
Today at 4:00pm - "{eventName}"
+
diff --git a/src/components/Types.svelte b/src/components/Types.svelte
index 9757def..c71b90e 100644
--- a/src/components/Types.svelte
+++ b/src/components/Types.svelte
@@ -1,66 +1,64 @@
-
Types
-
- You can customize the type of toast you want to render, and pass an options
- object as the second argument.
-
-
- {#each allTypes as type}
-
- {/each}
-
-
+
Types
+
+ You can customize the type of toast you want to render, and pass an
+ options object as the second argument.
+
+
+ {#each allTypes as type}
+
+ {/each}
+
+
diff --git a/src/components/Usage.svelte b/src/components/Usage.svelte
index 4c0ad78..be16675 100644
--- a/src/components/Usage.svelte
+++ b/src/components/Usage.svelte
@@ -1,22 +1,10 @@
-
Usage
-
Render the toaster in the root of your app.
-
-import { Toaster, toast } from 'svelte-sonner'
-
-
-
-
-
-`}
- />
+ Usage
+ Render the toaster in the root of your app.
+
diff --git a/src/components/code-snippets.ts b/src/components/code-snippets.ts
new file mode 100644
index 0000000..d5e874b
--- /dev/null
+++ b/src/components/code-snippets.ts
@@ -0,0 +1,26 @@
+export function getOtherCodeSnippet(
+ snippet: string,
+ richColorsActive: boolean,
+ closeButtonActive: boolean
+) {
+ return `
+
+
+
+`;
+}
+
+export const usageSnippet = `
+
+
+
+
+`;
diff --git a/src/lib/Icon.svelte b/src/lib/Icon.svelte
index 677f656..96c69cd 100644
--- a/src/lib/Icon.svelte
+++ b/src/lib/Icon.svelte
@@ -1,56 +1,66 @@
{#if type === 'success'}
-
+
{:else if type === 'error'}
-
+
{:else if type === 'info'}
-
+
{:else if type === 'warning'}
-
+
{:else}
-
+
{/if}
diff --git a/src/lib/Loader.svelte b/src/lib/Loader.svelte
index 30c60d5..40ca221 100644
--- a/src/lib/Loader.svelte
+++ b/src/lib/Loader.svelte
@@ -1,12 +1,12 @@
-
- {#each bars as _bar, i (i)}
-
- {/each}
-
+
+ {#each bars as _, i (i)}
+
+ {/each}
+
diff --git a/src/lib/Toast.svelte b/src/lib/Toast.svelte
index 76ba07c..6a091d0 100644
--- a/src/lib/Toast.svelte
+++ b/src/lib/Toast.svelte
@@ -1,321 +1,380 @@
- {#if closeButton && !toast.component}
-
- {/if}
-
- {#if toast.component}
-
- {:else if toast.title && typeof toast.title !== 'string'}
-
- {:else}
- {#if toastType || toast.icon || toast.promise}
-
- {#if (toast.promise || toastType === 'loading') && !toast.icon}
-
- {/if}
- {#if toast.icon}
-
- {:else}
-
- {/if}
-
- {/if}
-
-
{toast.title}
- {#if toast.description}
-
- {toast.description}
-
- {/if}
-
- {#if toast.cancel}
-
- {/if}
- {#if toast.action}
-
- {/if}
- {/if}
+ {#if closeButton && !toast.component}
+
+ {/if}
+
+ {#if toast.component}
+
+ {:else if toast.title && typeof toast.title !== 'string'}
+
+ {:else}
+ {#if toastType !== 'default' || toast.icon || toast.promise}
+
+ {#if (toast.promise || toastType === 'loading') && !toast.icon}
+
+ {/if}
+ {#if toast.icon}
+
+ {:else}
+
+ {/if}
+
+ {/if}
+
+
+ {toast.title}
+
+ {#if toast.description}
+
+ {toast.description}
+
+ {/if}
+
+ {#if toast.cancel}
+
+ {/if}
+ {#if toast.action}
+
+ {/if}
+ {/if}
diff --git a/src/lib/Toaster.svelte b/src/lib/Toaster.svelte
index 30eb164..52563fc 100644
--- a/src/lib/Toaster.svelte
+++ b/src/lib/Toaster.svelte
@@ -1,841 +1,887 @@
-{#if toasts.length > 0}
-
- {#each possiblePositions as position, index}
- expanded = true}
- on:mousemove={() => expanded = true}
- on:mouseleave={() => {
- if (!interacting) {
- expanded = false
- }
- }}
- on:pointerdown={() => interacting = true}
- on:pointerup={() => interacting = false}
- style:--front-toast-height={`${heights[0]?.height}px`}
- style:--offset={typeof offset === 'number' ? `${offset}px` : offset || VIEWPORT_OFFSET}
- style:--width={`${TOAST_WIDTH}px`}
- style:--gap={`${GAP}px`}
- style={$$props.style}
- >
- {#each toasts.filter((toast) => (!toast.position && index === 0) || toast.position === position) as toast, index (toast.id)}
-
- {/each}
-
- {/each}
-
+{#if $toasts.length > 0}
+
+ {#each possiblePositions as position, index}
+ (expanded = true)}
+ on:mousemove={() => (expanded = true)}
+ on:mouseleave={() => {
+ if (!interacting) {
+ expanded = false;
+ }
+ }}
+ on:pointerdown={() => (interacting = true)}
+ on:pointerup={() => (interacting = false)}
+ style:--front-toast-height={`${$heights[0]?.height}px`}
+ style:--offset={typeof offset === 'number'
+ ? `${offset}px`
+ : offset || VIEWPORT_OFFSET}
+ style:--width={`${TOAST_WIDTH}px`}
+ style:--gap={`${GAP}px`}
+ style={$$props.style}
+ {...$$restProps}
+ >
+ {#each $toasts.filter((toast) => (!toast.position && index === 0) || toast.position === position) as toast, index (toast.id)}
+
+ {/each}
+
+ {/each}
+
{/if}
-
diff --git a/src/lib/index.ts b/src/lib/index.ts
index fee389a..8be6355 100644
--- a/src/lib/index.ts
+++ b/src/lib/index.ts
@@ -1,7 +1,7 @@
-import Toaster from './Toaster.svelte'
+import Toaster from './Toaster.svelte';
-export { toast } from './state.js'
+export { toast } from './state.js';
-export { Toaster }
+export { Toaster };
-export type { ToastT, ExternalToast } from './types.js'
+export type { ToastT, ExternalToast, ToasterProps, ToastOptions } from './types.js';
diff --git a/src/lib/internal/helpers.ts b/src/lib/internal/helpers.ts
new file mode 100644
index 0000000..f083891
--- /dev/null
+++ b/src/lib/internal/helpers.ts
@@ -0,0 +1,3 @@
+export function cn(...classes: (string | undefined)[]) {
+ return classes.filter(Boolean).join(' ');
+}
diff --git a/src/lib/internal/index.ts b/src/lib/internal/index.ts
new file mode 100644
index 0000000..0712428
--- /dev/null
+++ b/src/lib/internal/index.ts
@@ -0,0 +1,2 @@
+export * from './types.js';
+export * from './helpers.js';
diff --git a/src/lib/internal/types.ts b/src/lib/internal/types.ts
new file mode 100644
index 0000000..95aa91d
--- /dev/null
+++ b/src/lib/internal/types.ts
@@ -0,0 +1,5 @@
+export type Expand = T extends object
+ ? T extends infer O
+ ? { [K in keyof O]: O[K] }
+ : never
+ : T;
diff --git a/src/lib/state.ts b/src/lib/state.ts
index c550725..af18209 100644
--- a/src/lib/state.ts
+++ b/src/lib/state.ts
@@ -1,197 +1,219 @@
-import type { ComponentType } from 'svelte'
-import type { ExternalToast, PromiseData, PromiseT, ToastT, ToastToDismiss, ToastTypes } from './types.js'
-
-let toastsCounter = 0
-
-class Observer {
- subscribers: Array<(toast: ExternalToast | ToastToDismiss) => void>
- toasts: Array
-
- constructor() {
- this.subscribers = []
- this.toasts = []
- }
-
- // We use arrow functions to maintain the correct `this` reference
- subscribe = (subscriber: (toast: ToastT | ToastToDismiss | ExternalToast) => void) => {
- this.subscribers.push(subscriber)
-
- return () => {
- const index = this.subscribers.indexOf(subscriber)
- this.subscribers.splice(index, 1)
- }
- }
-
- publish = (data: ToastT) => {
- this.subscribers.forEach(subscriber => subscriber(data))
- }
-
- addToast = (data: ToastT) => {
- this.publish(data)
- this.toasts = [...this.toasts, data]
- }
-
- create = (data: ExternalToast & { message?: string | ComponentType; type?: ToastTypes; promise?: PromiseT }) => {
- /**
- * If we're not in the browser (e.g. in an SSR context), don't do
- * anything. This ensures we aren't leaking data between requests with
- * the same global `ToastState` instance.
- *
- * @see https://kit.svelte.dev/docs/state-management
- */
- if (typeof document === 'undefined') return
-
- const { message, ...rest } = data
- const id = typeof data?.id === 'number' || (data.id && data.id?.length > 0) ? data.id : toastsCounter++
-
- const alreadyExists = this.toasts.find((toast) => {
- return toast.id === id
- })
-
- if (alreadyExists) {
- this.toasts = this.toasts.map((toast) => {
- if (toast.id === id) {
- this.publish({ ...toast, ...data, id, title: message })
- return { ...toast, ...data, id, title: message }
- }
-
- return toast
- })
- }
- else {
- this.addToast({ title: message, ...rest, id })
- }
-
- return id
- }
-
- dismiss = (id?: number | string) => {
- if (!id) {
- this.toasts.forEach((toast) => {
- this.subscribers.forEach(subscriber => subscriber({ id: toast.id, dismiss: true }))
- })
- }
-
- this.subscribers.forEach(subscriber => subscriber({ id, dismiss: true }))
- return id
- }
-
- message = (message: string | ComponentType, data?: ExternalToast) => {
- return this.create({ ...data, message })
- }
-
- error = (message: string | ComponentType, data?: ExternalToast) => {
- return this.create({ ...data, message, type: 'error' })
- }
-
- success = (message: string | ComponentType, data?: ExternalToast) => {
- return this.create({ ...data, type: 'success', message })
- }
-
- info = (message: string | ComponentType, data?: ExternalToast) => {
- return this.create({ ...data, type: 'info', message })
- }
-
- warning = (message: string | ComponentType, data?: ExternalToast) => {
- return this.create({ ...data, type: 'warning', message })
- }
-
- loading = (message: string | ComponentType, data?: ExternalToast) => {
- return this.create({ ...data, type: 'loading', message })
- }
-
- promise = (promise: PromiseT, data?: PromiseData) => {
- if (!data) {
- // Nothing to show
- return
- }
-
- let id: string | number | undefined = undefined;
- if (data.loading !== undefined) {
- id = this.create({
- ...data,
- promise,
- type: 'loading',
- message: data.loading,
- });
- }
-
- const p = promise instanceof Promise ? promise : promise();
-
- let shouldDismiss = id !== undefined;
-
- p.then((response) => {
- // TODO: Clean up TS here, response has incorrect type
- // @ts-expect-error: Incorrect response type
- if (response && typeof response.ok === 'boolean' && !response.ok) {
- shouldDismiss = false;
- const message =
- // @ts-expect-error: Incorrect response type
- typeof data.error === 'function' ? data.error(`HTTP error! status: ${response.status}`) : data.error;
- this.create({ id, type: 'error', message });
- } else if (data.success !== undefined) {
- shouldDismiss = false;
- // @ts-expect-error: TODO: Better function checking
- const message = typeof data.success === 'function' ? data.success(response) : data.success;
- this.create({ id, type: 'success', message });
- }
- })
- .catch((error) => {
- if (data.error !== undefined) {
- shouldDismiss = false;
- // @ts-expect-error: TODO: Better function checking
- const message = typeof data.error === 'function' ? data.error(error) : data.error;
- this.create({ id, type: 'error', message });
- }
- })
- .finally(() => {
- if (shouldDismiss) {
- // Toast is still in load state (and will be indefinitely — dismiss it)
- this.dismiss(id);
- id = undefined;
- }
-
- data.finally?.();
- });
-
- return id;
- }
-
- custom = (component: T, data?: ExternalToast) => {
- const id = data?.id || toastsCounter++
- this.create({ component, id, ...data })
-
- return id
- }
+import type { ComponentType } from 'svelte';
+import type { HeightT, ExternalToast, PromiseData, PromiseT, ToastT, ToastTypes } from './types.js';
+import { get, writable } from 'svelte/store';
+
+let toastsCounter = 0;
+
+function createToastState() {
+ const toasts = writable>([]);
+ const heights = writable([]);
+
+ function addToast(data: ToastT) {
+ if (typeof document !== 'undefined') {
+ toasts.update((prev) => [data, ...prev]);
+ }
+ }
+
+ function create(
+ data: ExternalToast & {
+ message?: string | ComponentType;
+ type?: ToastTypes;
+ promise?: PromiseT;
+ }
+ ) {
+ const { message, ...rest } = data;
+ const id =
+ typeof data?.id === 'number' || (data.id && data.id?.length > 0)
+ ? data.id
+ : toastsCounter++;
+ const dismissable = data.dismissable === undefined ? true : data.dismissable;
+ const type = data.type === undefined ? 'default' : data.type;
+
+ const $toasts = get(toasts);
+
+ const alreadyExists = $toasts.find((toast) => {
+ return toast.id === id;
+ });
+
+ if (alreadyExists) {
+ toasts.update((prev) =>
+ prev.map((toast) => {
+ if (toast.id === id) {
+ return { ...toast, ...data, id, title: message, dismissable, type };
+ }
+ return toast;
+ })
+ );
+ } else {
+ addToast({ ...rest, id, title: message, dismissable, type });
+ }
+
+ return id;
+ }
+
+ function dismiss(id?: number | string) {
+ if (!id) {
+ toasts.set([]);
+ return;
+ }
+ toasts.update((prev) => prev.filter((toast) => toast.id !== id));
+
+ return id;
+ }
+
+ function message(message: string | ComponentType, data?: ExternalToast) {
+ return create({ ...data, type: 'default', message });
+ }
+
+ function error(message: string | ComponentType, data?: ExternalToast) {
+ return create({ ...data, type: 'error', message });
+ }
+
+ function success(message: string | ComponentType, data?: ExternalToast) {
+ return create({ ...data, type: 'success', message });
+ }
+
+ function info(message: string | ComponentType, data?: ExternalToast) {
+ return create({ ...data, type: 'info', message });
+ }
+
+ function warning(message: string | ComponentType, data?: ExternalToast) {
+ return create({ ...data, type: 'warning', message });
+ }
+
+ function loading(message: string | ComponentType, data?: ExternalToast) {
+ return create({ ...data, type: 'loading', message });
+ }
+
+ function promise(promise: PromiseT, data?: PromiseData) {
+ if (!data) {
+ // Nothing to show
+ return;
+ }
+
+ let id: string | number | undefined = undefined;
+ if (data.loading !== undefined) {
+ id = create({
+ ...data,
+ promise,
+ type: 'loading',
+ message: data.loading
+ });
+ }
+
+ const p = promise instanceof Promise ? promise : promise();
+
+ let shouldDismiss = id !== undefined;
+
+ p.then((response) => {
+ // TODO: Clean up TS here, response has incorrect type
+ // @ts-expect-error: Incorrect response type
+ if (response && typeof response.ok === 'boolean' && !response.ok) {
+ shouldDismiss = false;
+ const message =
+ typeof data.error === 'function'
+ ? // @ts-expect-error: Incorrect response type
+ data.error(`HTTP error! status: ${response.status}`)
+ : data.error;
+ create({ id, type: 'error', message });
+ } else if (data.success !== undefined) {
+ shouldDismiss = false;
+ const message =
+ // @ts-expect-error: TODO: Better function checking
+ typeof data.success === 'function' ? data.success(response) : data.success;
+ create({ id, type: 'success', message });
+ }
+ })
+ .catch((error) => {
+ if (data.error !== undefined) {
+ shouldDismiss = false;
+ const message =
+ // @ts-expect-error: TODO: Better function checking
+ typeof data.error === 'function' ? data.error(error) : data.error;
+ create({ id, type: 'error', message });
+ }
+ })
+ .finally(() => {
+ if (shouldDismiss) {
+ // Toast is still in load state (and will be indefinitely — dismiss it)
+ dismiss(id);
+ id = undefined;
+ }
+
+ data.finally?.();
+ });
+
+ return id;
+ }
+
+ function custom(
+ component: T,
+ data?: ExternalToast
+ ) {
+ const id = data?.id || toastsCounter++;
+ create({ component, id, ...data });
+
+ return id;
+ }
+
+ function removeHeight(id: number | string) {
+ heights.update((prev) => prev.filter((height) => height.toastId !== id));
+ }
+
+ function addHeight(height: HeightT) {
+ heights.update((prev) => [height, ...prev]);
+ }
+
+ function reset() {
+ toasts.set([]);
+ heights.set([]);
+ }
+
+ return {
+ // methods
+ create,
+ addToast,
+ dismiss,
+ message,
+ error,
+ success,
+ info,
+ warning,
+ loading,
+ promise,
+ custom,
+ removeHeight,
+ addHeight,
+ reset,
+ // stores
+ toasts,
+ heights
+ };
}
-export const ToastState = new Observer()
+export const toastState = createToastState();
// bind this to the toast function
function toastFunction(message: string | ComponentType, data?: ExternalToast) {
- const id = data?.id || toastsCounter++
-
- ToastState.addToast({
- title: message,
- ...data,
- id,
- })
- return id
+ return toastState.create({
+ message,
+ ...data
+ });
}
-const basicToast = toastFunction
+const basicToast = toastFunction;
// We use `Object.assign` to maintain the correct types as we would lose them otherwise
export const toast = Object.assign(basicToast, {
- success: ToastState.success,
- info: ToastState.info,
- warning: ToastState.warning,
- error: ToastState.error,
- custom: ToastState.custom,
- message: ToastState.message,
- promise: ToastState.promise,
- dismiss: ToastState.dismiss,
- loading: ToastState.loading,
-})
-
-export const useEffect = (subscribe: unknown) => ({ subscribe })
+ success: toastState.success,
+ info: toastState.info,
+ warning: toastState.warning,
+ error: toastState.error,
+ custom: toastState.custom,
+ message: toastState.message,
+ promise: toastState.promise,
+ dismiss: toastState.dismiss,
+ loading: toastState.loading
+});
+
+export const useEffect = (subscribe: unknown) => ({ subscribe });
diff --git a/src/lib/types.ts b/src/lib/types.ts
index 9538a83..2ea8a68 100644
--- a/src/lib/types.ts
+++ b/src/lib/types.ts
@@ -1,69 +1,259 @@
-import type { ComponentProps, ComponentType } from 'svelte'
+import type { ComponentProps, ComponentType } from 'svelte';
+import type { Expand } from '$lib/internal/types.js';
+import type { HTMLOlAttributes } from 'svelte/elements';
-export type FixMe = unknown
+export type FixMe = unknown;
-export type ToastTypes = 'normal' | 'action' | 'success' | 'info' | 'warning' | 'error' | 'loading'
+export type ToastTypes =
+ | 'action'
+ | 'success'
+ | 'info'
+ | 'warning'
+ | 'error'
+ | 'loading'
+ | 'default';
-export type PromiseT = Promise | (() => Promise)
+export type PromiseT = Promise | (() => Promise);
export type PromiseData = ExternalToast & {
- loading?: string | ComponentType
- success?: string | ComponentType | ((data: ToastData) => ComponentType | string)
- error?: string | ComponentType | ((error: unknown) => ComponentType | string)
- finally?: () => void | Promise
-}
+ loading?: string | ComponentType;
+ success?: string | ComponentType | ((data: ToastData) => ComponentType | string);
+ error?: string | ComponentType | ((error: unknown) => ComponentType | string);
+ finally?: () => void | Promise;
+};
-export interface ToastT {
- id: number | string
- title?: string | ComponentType
- type?: ToastTypes
- icon?: ComponentType
- component?: T
- componentProps?: ComponentProps>
- invert?: boolean
- description?: string | ComponentType
- cancelButtonStyle?: string
- actionButtonStyle?: string
- duration?: number
- delete?: boolean
- important?: boolean
- action?: {
- label: string
- onClick: (event: MouseEvent) => void
- }
- cancel?: {
- label: string
- onClick?: () => void
- }
- onDismiss?: (toast: ToastT) => void
- onAutoClose?: (toast: ToastT) => void
- promise?: PromiseT
- style?: string
- class?: string
- descriptionClass?: string
- position?: Position;
-}
+export type ToastT = {
+ id: number | string;
+ title?: string | ComponentType;
+ type?: ToastTypes;
+ icon?: ComponentType;
+ component?: T;
+ componentProps?: ComponentProps>;
+ invert?: boolean;
+ description?: string | ComponentType;
+ cancelButtonStyle?: string;
+ actionButtonStyle?: string;
+ duration?: number;
+ delete?: boolean;
+ important?: boolean;
+ action?: {
+ label: string;
+ onClick: (event: MouseEvent) => void;
+ };
+ cancel?: {
+ label: string;
+ onClick?: () => void;
+ };
+ onDismiss?: (toast: ToastT) => void;
+ onAutoClose?: (toast: ToastT) => void;
+ dismissable?: boolean;
+ promise?: PromiseT;
+ style?: string;
+ class?: string;
+ classes?: ToastClassnames;
+ descriptionClass?: string;
+ position?: Position;
+ unstyled?: boolean;
+};
-export type Position = 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'top-center' | 'bottom-center'
+export type Position =
+ | 'top-left'
+ | 'top-right'
+ | 'bottom-left'
+ | 'bottom-right'
+ | 'top-center'
+ | 'bottom-center';
-export interface HeightT {
- height: number
- toastId: number | string
-}
+export type HeightT = {
+ height: number;
+ toastId: number | string;
+};
export enum SwipeStateTypes {
- SwipedOut = 'SwipedOut',
- SwipedBack = 'SwipedBack',
- NotSwiped = 'NotSwiped',
+ SwipedOut = 'SwipedOut',
+ SwipedBack = 'SwipedBack',
+ NotSwiped = 'NotSwiped'
}
-export type Theme = 'light' | 'dark'
+export type Theme = 'light' | 'dark';
-export interface ToastToDismiss {
- id: number | string
- dismiss: boolean
-}
+export type ToastToDismiss = {
+ id: number | string;
+ dismiss: boolean;
+};
-export type ExternalToast = Omit, 'id' | 'type' | 'title' | 'promise'> & {
- id?: number | string
-}
+export type ExternalToast = Omit<
+ ToastT,
+ 'id' | 'type' | 'title' | 'promise'
+> & {
+ id?: number | string;
+};
+
+export type ToasterProps = Partial<{
+ /**
+ * Dark toasts in light mode and vice versa.
+ *
+ * @default false
+ */
+ invert: boolean;
+
+ /**
+ * Toast's theme, either light, dark, or system
+ *
+ * @default 'light'
+ */
+ theme: 'light' | 'dark' | 'system';
+
+ /**
+ * Place where the toasts will be rendered
+ *
+ * @default 'bottom-right'
+ */
+ position: Position;
+
+ /**
+ * Keyboard shortcut that will move focus to the toaster area.
+ *
+ * @default '⌥/alt + T'
+ */
+ hotkey: string[];
+
+ /**
+ * Makes error and success state more colorful
+ *
+ * @default false
+ */
+ richColors: boolean;
+
+ /**
+ * Toasts will be expanded by default
+ *
+ * @default false
+ */
+ expand: boolean;
+
+ /**
+ * Amount of visible toasts
+ *
+ * @default 3
+ */
+ visibleToasts: number;
+
+ /**
+ * Adds a close button to all toasts, shows on hover
+ *
+ * @default false
+ */
+ closeButton: boolean;
+
+ /**
+ * These will act as default options for all toasts.
+ *
+ * @default {}
+ */
+ toastOptions: ToastOptions;
+
+ /**
+ * Offset from the edges of the screen.
+ *
+ * @default '32px'
+ */
+ offset: string | number | null;
+
+ /**
+ * Directionality of toast's text
+ *
+ * @default 'ltr'
+ */
+ dir: 'ltr' | 'rtl';
+
+ /**
+ * Gap between toasts when expanded, in pixels.
+ *
+ * @default '14px'
+ */
+ gap: number;
+
+ /**
+ * Changes the default loading icon
+ *
+ * @default -
+ */
+ loadingIcon: ComponentType;
+}> &
+ HTMLOlAttributes;
+
+export type ToastOptions = {
+ /**
+ * The classes applied to the toast element.
+ */
+ class?: string;
+
+ /**
+ * The classes applied to the toast description element.
+ */
+ descriptionClass?: string;
+
+ /**
+ * The CSS styles applied to the toast element.
+ */
+ style?: string;
+
+ /**
+ * The CSS styles applied to the cancel button element.
+ */
+ cancelButtonStyle?: string;
+
+ /**
+ * The CSS styles applied to the action button element.
+ */
+ actionButtonStyle?: string;
+
+ /**
+ * The duration of the toast in milliseconds.
+ */
+ duration?: number;
+
+ /**
+ * Whether the toast should be unstyled or not.
+ */
+ unstyled?: boolean;
+
+ /**
+ * Classes to apply to the various elements of the toast.
+ */
+ classes?: Expand;
+};
+
+/**
+ * The classes applied to the various elements of the toast.
+ */
+export type ToastClassnames = {
+ toast?: string;
+ title?: string;
+ description?: string;
+ loader?: string;
+ closeButton?: string;
+ cancelButton?: string;
+ actionButton?: string;
+} & ToastTypeClasses;
+
+type ToastTypeClasses = Partial>;
+
+export type ToastProps = {
+ toast: ToastT;
+ index: number;
+ expanded: boolean;
+ invert: boolean;
+ position: Position;
+ visibleToasts: number;
+ expandByDefault: boolean;
+ closeButton: boolean;
+ interacting: boolean;
+ cancelButtonStyle: string;
+ actionButtonStyle: string;
+ duration: number | null;
+ descriptionClass: string;
+ classes: ToastClassnames;
+ unstyled: boolean;
+};
diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte
index 05501dc..3c8c5ca 100644
--- a/src/routes/+layout.svelte
+++ b/src/routes/+layout.svelte
@@ -1,5 +1,5 @@
diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte
index 416e088..b8473b3 100644
--- a/src/routes/+page.svelte
+++ b/src/routes/+page.svelte
@@ -1,50 +1,71 @@
- Svelte Sonner
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ Svelte Sonner
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
position = detail} />
- expand = detail} />
- closeButton = !closeButton} on:setRichColors={({ detail }) => richColors = detail} />
-
+
+
+
+
+
+
(position = detail)}
+ />
+ (expand = detail)} />
+ (closeButton = !closeButton)}
+ on:setRichColors={({ detail }) => (richColors = detail)}
+ />
+
diff --git a/src/routes/styles.css b/src/routes/styles.css
index 2707b4a..1871b97 100644
--- a/src/routes/styles.css
+++ b/src/routes/styles.css
@@ -1,136 +1,151 @@
:root {
- --gray0: #fff;
- --gray1: hsl(0, 0%, 99%);
- --gray2: hsl(0, 0%, 97.3%);
- --gray3: hsl(0, 0%, 95.1%);
- --gray4: hsl(0, 0%, 93%);
- --gray5: hsl(0, 0%, 90.9%);
- --gray6: hsl(0, 0%, 88.7%);
- --gray7: hsl(0, 0%, 85.8%);
- --gray8: hsl(0, 0%, 78%);
- --gray9: hsl(0, 0%, 56.1%);
- --gray10: hsl(0, 0%, 52.3%);
- --gray11: hsl(0, 0%, 43.5%);
- --gray12: hsl(0, 0%, 9%);
- --hover: rgb(40, 40, 40);
- --border-radius: 6px;
- --font-sans: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial,
- Noto Sans, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji;
- --font-mono: 'SF Mono', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace;
+ --gray0: #fff;
+ --gray1: hsl(0, 0%, 99%);
+ --gray2: hsl(0, 0%, 97.3%);
+ --gray3: hsl(0, 0%, 95.1%);
+ --gray4: hsl(0, 0%, 93%);
+ --gray5: hsl(0, 0%, 90.9%);
+ --gray6: hsl(0, 0%, 88.7%);
+ --gray7: hsl(0, 0%, 85.8%);
+ --gray8: hsl(0, 0%, 78%);
+ --gray9: hsl(0, 0%, 56.1%);
+ --gray10: hsl(0, 0%, 52.3%);
+ --gray11: hsl(0, 0%, 43.5%);
+ --gray12: hsl(0, 0%, 9%);
+ --hover: rgb(40, 40, 40);
+ --border-radius: 6px;
+ --font-sans: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto,
+ Helvetica Neue, Arial, Noto Sans, sans-serif, Apple Color Emoji, Segoe UI Emoji,
+ Segoe UI Symbol, Noto Color Emoji;
+ --font-mono: 'SF Mono', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono,
+ Courier New, monospace;
}
::selection {
- background: var(--gray7);
+ background: var(--gray7);
}
.container {
- max-width: 610px;
- margin: 0 auto;
- padding-left: max(var(--side-padding), env(safe-area-inset-left));
- padding-right: max(var(--side-padding), env(safe-area-inset-right));
+ max-width: 610px;
+ margin: 0 auto;
+ padding-left: max(var(--side-padding), env(safe-area-inset-left));
+ padding-right: max(var(--side-padding), env(safe-area-inset-right));
}
body {
- --side-padding: 16px;
- margin: 0;
- padding: 0;
- padding-top: 100px;
- font-family: var(--font-sans);
- -webkit-font-smoothing: antialiased;
+ --side-padding: 16px;
+ margin: 0;
+ padding: 0;
+ padding-top: 100px;
+ font-family: var(--font-sans);
+ -webkit-font-smoothing: antialiased;
}
* {
- touch-action: manipulation;
+ touch-action: manipulation;
}
h1,
p {
- color: var(--gray12);
- line-height: 25px;
+ color: var(--gray12);
+ line-height: 25px;
}
h2 {
- font-size: 16px;
- color: var(--gray12);
- font-weight: 500;
+ font-size: 16px;
+ color: var(--gray12);
+ font-weight: 500;
}
h2 + p {
- margin-top: -4px;
+ margin-top: -4px;
}
p {
- font-size: 16px;
+ font-size: 16px;
}
a {
- color: inherit;
- text-decoration-color: var(--gray10);
- text-underline-position: from-font;
- text-decoration-thickness: 1.25px;
+ color: inherit;
+ text-decoration-color: var(--gray10);
+ text-underline-position: from-font;
+ text-decoration-thickness: 1.25px;
}
code {
- font-size: 13px;
- line-height: 28px;
- padding: 2px 3.6px;
- /* border: 1px solid var(--gray3);
+ font-size: 13px;
+ line-height: 28px;
+ padding: 2px 3.6px;
+ /* border: 1px solid var(--gray3);
background: var(--gray4); */
- font-family: var(--font-mono);
- border-radius: 6px;
+ font-family: var(--font-mono);
+ border-radius: 6px;
}
.content {
- display: flex;
- flex-direction: column;
- gap: 48px;
- margin-top: 96px;
+ display: flex;
+ flex-direction: column;
+ gap: 48px;
+ margin-top: 96px;
}
.buttons {
- display: flex;
- flex-wrap: wrap;
- gap: 8px;
- overflow: auto;
- margin: 0 calc(-1 * var(--side-padding));
- padding: 4px var(--side-padding);
- position: relative;
+ display: flex;
+ flex-wrap: wrap;
+ gap: 8px;
+ overflow: auto;
+ margin: 0 calc(-1 * var(--side-padding));
+ padding: 4px var(--side-padding);
+ position: relative;
}
.button {
- padding: 8px 12px;
- margin: 0;
- background: var(--gray1);
- border: 1px solid var(--gray3);
- white-space: nowrap;
- border-radius: 6px;
- font-size: 13px;
- font-weight: 500;
- font-family: var(--font-sans);
- cursor: pointer;
- color: var(--gray12);
- transition: border-color 200ms, background 200ms, box-shadow 200ms;
+ padding: 8px 12px;
+ margin: 0;
+ background: var(--gray1);
+ border: 1px solid var(--gray3);
+ white-space: nowrap;
+ border-radius: 6px;
+ font-size: 13px;
+ font-weight: 500;
+ font-family: var(--font-sans);
+ cursor: pointer;
+ color: var(--gray12);
+ transition:
+ border-color 200ms,
+ background 200ms,
+ box-shadow 200ms;
}
.button:hover {
- background: var(--gray2);
- border-color: var(--gray4);
+ background: var(--gray2);
+ border-color: var(--gray4);
}
.button[data-active='true'] {
- background: var(--gray3);
- border-color: var(--gray7);
+ background: var(--gray3);
+ border-color: var(--gray7);
}
.button:focus-visible {
- outline: none;
- box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.06), 0px 1px 0px 0px rgba(0, 0, 0, 0.08),
- 0px 2px 2px 0px rgba(0, 0, 0, 0.04), 0px 3px 3px 0px rgba(0, 0, 0, 0.02), 0px 4px 4px 0px rgba(0, 0, 0, 0.01),
- 0 0 0 2px rgba(0, 0, 0, 0.15);
+ outline: none;
+ box-shadow:
+ 0px 0px 0px 1px rgba(0, 0, 0, 0.06),
+ 0px 1px 0px 0px rgba(0, 0, 0, 0.08),
+ 0px 2px 2px 0px rgba(0, 0, 0, 0.04),
+ 0px 3px 3px 0px rgba(0, 0, 0, 0.02),
+ 0px 4px 4px 0px rgba(0, 0, 0, 0.01),
+ 0 0 0 2px rgba(0, 0, 0, 0.15);
}
@media (max-width: 600px) {
- .buttons {
- mask-image: linear-gradient(to right, transparent, black 16px, black calc(100% - 16px), transparent);
- }
+ .buttons {
+ mask-image: linear-gradient(
+ to right,
+ transparent,
+ black 16px,
+ black calc(100% - 16px),
+ transparent
+ );
+ }
}
diff --git a/src/tests/ToastTest.svelte b/src/tests/ToastTest.svelte
new file mode 100644
index 0000000..021b4da
--- /dev/null
+++ b/src/tests/ToastTest.svelte
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
diff --git a/src/tests/toast.spec.ts b/src/tests/toast.spec.ts
new file mode 100644
index 0000000..202c0f9
--- /dev/null
+++ b/src/tests/toast.spec.ts
@@ -0,0 +1,64 @@
+import { describe, it } from 'vitest';
+import type { ToastTestProps } from './ToastTest.svelte';
+import ToastTest from './ToastTest.svelte';
+import { render, waitFor } from '@testing-library/svelte';
+import userEvent from '@testing-library/user-event';
+import { toastState } from '$lib/state';
+import { sleep } from './utils';
+
+function setup(props: ToastTestProps) {
+ const user = userEvent.setup();
+ const returned = render(ToastTest, { props });
+ const trigger = returned.getByTestId('trigger');
+
+ return {
+ trigger,
+ user,
+ ...returned
+ };
+}
+
+describe('Toast', () => {
+ beforeEach(() => {
+ toastState.reset();
+ });
+
+ it('should show a toast', async () => {
+ const { user, trigger, container, getByText } = setup({
+ cb: (toast) => toast('Hello world')
+ });
+
+ await user.click(trigger);
+ expect(getByText('Hello world')).toBeVisible();
+
+ const toasts = Array.from(container.querySelectorAll('[data-sonner-toast]'));
+ expect(toasts.length).toBe(1);
+ });
+
+ it('should show a toast with a custom duration', async () => {
+ const { user, trigger, queryByText } = setup({
+ cb: (toast) => toast('Hello world', { duration: 300 })
+ });
+
+ expect(queryByText('Hello world')).toBeNull();
+
+ await user.click(trigger);
+ waitFor(() => expect(queryByText('Hello world')).not.toBeNull());
+
+ await sleep(500);
+ expect(queryByText('Hello world')).toBeNull();
+ });
+
+ it('should focus the toast when hotkey is pressed', async () => {
+ const { user, trigger, getByText } = setup({
+ cb: (toast) => toast('Hello world', { duration: 5000 })
+ });
+
+ await user.click(trigger);
+ expect(getByText('Hello world')).toBeVisible();
+
+ await user.keyboard('{Alt>}T{/Alt}');
+ await sleep(100);
+ expect(document.activeElement).toBeInstanceOf(HTMLOListElement);
+ });
+});
diff --git a/src/tests/utils.ts b/src/tests/utils.ts
new file mode 100644
index 0000000..2df63d3
--- /dev/null
+++ b/src/tests/utils.ts
@@ -0,0 +1,3 @@
+export function sleep(ms: number) {
+ return new Promise((resolve) => setTimeout(resolve, ms));
+}
diff --git a/svelte.config.js b/svelte.config.js
index a87132f..2468057 100644
--- a/svelte.config.js
+++ b/svelte.config.js
@@ -6,7 +6,7 @@ const config = {
// Consult https://kit.svelte.dev/docs/integrations#preprocessors
// for more information about preprocessors
preprocess: preprocess({
- globalStyle: true,
+ globalStyle: true
}),
kit: {
diff --git a/tests/test.ts b/tests/test.ts
index aa55440..d9698c8 100644
--- a/tests/test.ts
+++ b/tests/test.ts
@@ -4,57 +4,57 @@ import { expect, test } from '@playwright/test';
test.describe.configure({ mode: 'parallel' });
test.beforeEach(async ({ page }) => {
- await page.goto('/')
-})
+ await page.goto('/');
+});
test('toast is rendered and disappears after the default timeout', async ({ page }) => {
- await page.getByTestId('default-button').click()
- await expect(page.locator('[data-sonner-toast]')).toHaveCount(0)
- await expect(page.locator('[data-sonner-toast]')).toHaveCount(0)
-})
+ await page.getByTestId('default-button').click();
+ await expect(page.locator('[data-sonner-toast]')).toHaveCount(0);
+ await expect(page.locator('[data-sonner-toast]')).toHaveCount(0);
+});
test('various toast types are rendered correctly', async ({ page }) => {
- await page.getByTestId('Success').click()
- await expect(page.getByText('Event has been created', { exact: true })).toHaveCount(1)
+ await page.getByTestId('Success').click();
+ await expect(page.getByText('Event has been created', { exact: true })).toHaveCount(1);
- await page.getByTestId('Error').click()
- await expect(page.getByText('Event has not been created', { exact: true })).toHaveCount(1)
+ await page.getByTestId('Error').click();
+ await expect(page.getByText('Event has not been created', { exact: true })).toHaveCount(1);
- await page.getByTestId('Action').click()
- await expect(page.locator('[data-button]')).toHaveCount(1)
-})
+ await page.getByTestId('Action').click();
+ await expect(page.locator('[data-button]')).toHaveCount(1);
+});
test('show correct toast content based on promise state', async ({ page }) => {
- await page.getByTestId('Promise').click()
- await expect(page.getByText('Loading...')).toHaveCount(1)
- await expect(page.getByText('Svelte Sonner toast has been added')).toHaveCount(1)
-})
+ await page.getByTestId('Promise').click();
+ await expect(page.getByText('Loading...')).toHaveCount(1);
+ await expect(page.getByText('Svelte Sonner toast has been added')).toHaveCount(1);
+});
test('render custom component in toast', async ({ page }) => {
- await page.getByTestId('Custom').click()
- await expect(page.getByText('A custom toast with default styling')).toHaveCount(1)
-})
+ await page.getByTestId('Custom').click();
+ await expect(page.getByText('A custom toast with default styling')).toHaveCount(1);
+});
test('toast is removed after swiping down', async ({ page }) => {
- await page.getByTestId('default-button').click()
- await page.hover('[data-sonner-toast]')
- await page.mouse.down()
- await page.mouse.move(0, 800)
- await page.mouse.up()
- await expect(page.locator('[data-sonner-toast]')).toHaveCount(0)
-})
+ await page.getByTestId('default-button').click();
+ await page.hover('[data-sonner-toast]');
+ await page.mouse.down();
+ await page.mouse.move(0, 800);
+ await page.mouse.up();
+ await expect(page.locator('[data-sonner-toast]')).toHaveCount(0);
+});
test('toast is not removed when hovered', async ({ page }) => {
- await page.getByTestId('default-button').click()
- await page.hover('[data-sonner-toast]')
- const timeout = new Promise(resolve => setTimeout(resolve, 5000))
- await timeout
- await expect(page.locator('[data-sonner-toast]')).toHaveCount(1)
-})
+ await page.getByTestId('default-button').click();
+ await page.hover('[data-sonner-toast]');
+ const timeout = new Promise((resolve) => setTimeout(resolve, 5000));
+ await timeout;
+ await expect(page.locator('[data-sonner-toast]')).toHaveCount(1);
+});
test('close a toast from inside a custom component', async ({ page }) => {
- await page.getByTestId('other-Headless').click()
- await expect(page.getByText('Event Created')).toHaveCount(1)
- await page.getByTestId('close-button').click()
- await expect(page.getByText('Event Created')).toHaveCount(0)
-})
+ await page.getByTestId('other-Headless').click();
+ await expect(page.getByText('Event Created')).toHaveCount(1);
+ await page.getByTestId('close-button').click();
+ await expect(page.getByText('Event Created')).toHaveCount(0);
+});
diff --git a/vite.config.ts b/vite.config.ts
index bbf8c7d..ea198c0 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -1,6 +1,21 @@
+///
import { sveltekit } from '@sveltejs/kit/vite';
-import { defineConfig } from 'vite';
+import { defineConfig } from 'vitest/config';
export default defineConfig({
- plugins: [sveltekit()]
+ plugins: [sveltekit()],
+ test: {
+ include: ['src/**/*.{test,spec}.{js,ts}'],
+ // jest like globals
+ globals: true,
+ environment: 'jsdom',
+ // in-source testing
+ includeSource: ['src/**/*.{js,ts,svelte}'],
+ // Add @testing-library/jest-dom's matchers & mocks of SvelteKit modules
+ setupFiles: ['./scripts/setupTest.ts'],
+ coverage: {
+ exclude: ['setupTest.ts']
+ },
+ alias: [{ find: /^svelte$/, replacement: 'svelte/internal' }]
+ }
});