diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..b6a3197 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,13 @@ +# editorconfig.org +root = true + +[*] +indent_style = tab +indent_size = 4 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.{yml,yaml}] +indent_size = 2 diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 0000000..53fdcb1 --- /dev/null +++ b/.eslintrc @@ -0,0 +1,66 @@ +{ + "root": true, + "parser": "@typescript-eslint/parser", + "plugins": ["@typescript-eslint", "no-only-tests", "eslint-comments"], + "ignorePatterns": ["node_modules", "dist"], + "parserOptions": { + "project": ["./tsconfig.json", "./tsconfig.node.json"], + "tsconfigRootDir": ".", + "sourceType": "module" + }, + "rules": { + /* + forgot to remove/implement + */ + "no-console": "warn", + "no-debugger": "warn", + "prefer-const": "warn", + "require-await": "warn", + "@typescript-eslint/no-unused-vars": [ + "warn", + { + "argsIgnorePattern": "^_", + "varsIgnorePattern": "^_", + "caughtErrorsIgnorePattern": "^_" + } + ], + "@typescript-eslint/no-unnecessary-boolean-literal-compare": "warn", + "@typescript-eslint/no-unnecessary-condition": "warn", + "@typescript-eslint/no-unnecessary-qualifier": "warn", + "@typescript-eslint/no-unnecessary-type-arguments": "warn", + "@typescript-eslint/no-unnecessary-type-assertion": "warn", + "@typescript-eslint/no-unnecessary-type-constraint": "warn", + "@typescript-eslint/no-useless-empty-export": "warn", + "@typescript-eslint/no-empty-function": "warn", + "no-empty": "warn", + "@typescript-eslint/no-unused-expressions": [ + "warn", + {"allowShortCircuit": true, "allowTernary": true} + ], + "eslint-comments/no-unused-disable": "warn", + /* + code style | readability + */ + "@typescript-eslint/explicit-function-return-type": [ + "warn", + { + "allowExpressions": true, + "allowTypedFunctionExpressions": true, + "allowHigherOrderFunctions": true, + "allowDirectConstAssertionInArrowFunctions": true, + "allowConciseArrowFunctionExpressionsStartingWithVoid": true, + "allowIIFEs": true + } + ], + /* + prevent unexpected behavior + */ + "@typescript-eslint/ban-types": "warn", + "@typescript-eslint/switch-exhaustiveness-check": "warn", + "no-fallthrough": ["warn", {"allowEmptyCase": true}], + /* + tests + */ + "no-only-tests/no-only-tests": "warn" + } +} diff --git a/.github/workflows/format.yml b/.github/workflows/format.yml new file mode 100644 index 0000000..236f9c1 --- /dev/null +++ b/.github/workflows/format.yml @@ -0,0 +1,46 @@ +name: Format + +on: + push: + branches: [main] + +jobs: + format: + runs-on: ubuntu-latest + + permissions: + # Give the default GITHUB_TOKEN write permission to commit and push the + # added or changed files to the repository. + contents: write + + steps: + - uses: actions/checkout@v3 + + - uses: pnpm/action-setup@v2.2.4 + + - name: Setup Node.js environment + uses: actions/setup-node@v3 + with: + node-version: 20 + cache: pnpm + + - name: Install dependencies + run: | + pnpm install --no-frozen-lockfile --ignore-scripts + git restore . + + - name: Setup prettier cache + uses: actions/cache@v3 + with: + path: node_modules/.cache/prettier + key: prettier-${{ github.sha }} + restore-keys: | + prettier- + + - name: Format + run: pnpm run format + + - name: Add, Commit and Push + uses: stefanzweifel/git-auto-commit-action@v4 + with: + commit_message: "Format" diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..1706a59 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,38 @@ +name: Build and Test + +on: + push: + branches: [main] + pull_request: + branches: [main] + +concurrency: ${{ github.workflow }}-${{ github.ref }} + +jobs: + build_test: + name: Build and Test + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - uses: pnpm/action-setup@v2.2.4 + with: + version: 8 + + - name: Setup Node.js environment + uses: actions/setup-node@v3 + with: + node-version: 20 + cache: pnpm + + - name: Install dependencies + run: pnpm install --no-frozen-lockfile --ignore-scripts + + - name: Build package + run: pnpm run build + + - name: Test + run: pnpm run test + + - name: Lint + run: pnpm lint diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..981d64c --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.vscode/settings.json + +dist +node_modules diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..3a872e3 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,20 @@ +{ + "trailingComma": "all", + "tabWidth": 4, + "printWidth": 100, + "semi": false, + "singleQuote": false, + "useTabs": true, + "arrowParens": "avoid", + "bracketSpacing": false, + "endOfLine": "lf", + "plugins": [], + "overrides": [ + { + "files": ["*.yml", "*.yaml"], + "options": { + "tabWidth": 2 + } + } + ] +} diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..b971559 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Damian Tarnawski, David Di Biase + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index 8cc0069..dc08d71 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,3 @@ # motionone + A repository containing the Solid MotionOne implementation. diff --git a/package.json b/package.json new file mode 100644 index 0000000..bc0249c --- /dev/null +++ b/package.json @@ -0,0 +1,74 @@ +{ + "name": "solid-motionone", + "version": "1.0.0", + "description": "A tiny, performant animation library for SolidJS", + "license": "MIT", + "author": "Damian Tarnawski ; David Di Biase ", + "contributors": [], + "private": false, + "sideEffects": false, + "scripts": { + "prepublishOnly": "pnpm build", + "build": "tsup", + "test": "pnpm run test:client & pnpm run test:ssr", + "test:client": "vitest", + "test:ssr": "vitest --mode ssr", + "format": "prettier --cache --ignore-path .gitignore -w .", + "lint": "pnpm run lint:code & pnpm run lint:types", + "lint:code": "eslint --ignore-path .gitignore --max-warnings 0 src/**/*.{js,ts,tsx,jsx}", + "lint:types": "tsc --noEmit" + }, + "type": "module", + "files": [ + "dist" + ], + "main": "./dist/index.cjs", + "module": "./dist/index.js", + "types": "./dist/index.d.ts", + "browser": {}, + "exports": { + "solid": "./dist/index.jsx", + "import": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + }, + "require": { + "types": "./dist/index.d.cts", + "default": "./dist/index.cjs" + } + }, + "typesVersions": {}, + "dependencies": { + "@motionone/dom": "^10.16.4", + "@motionone/utils": "^10.16.3", + "@solid-primitives/props": "^3.1.8", + "@solid-primitives/refs": "^1.0.5", + "@solid-primitives/transition-group": "^1.0.3", + "csstype": "^3.1.0" + }, + "devDependencies": { + "@solidjs/testing-library": "^0.8.5", + "@types/node": "^20.10.6", + "@typescript-eslint/eslint-plugin": "^6.17.0", + "@typescript-eslint/parser": "^6.17.0", + "eslint": "^8.56.0", + "eslint-plugin-eslint-comments": "^3.2.0", + "eslint-plugin-no-only-tests": "^3.1.0", + "jsdom": "^23.0.1", + "prettier": "^3.1.1", + "solid-js": "^1.8.7", + "tsup": "^8.0.1", + "tsup-preset-solid": "^2.2.0", + "typescript": "^5.3.3", + "vite-plugin-solid": "^2.8.0", + "vitest": "^1.1.1" + }, + "peerDependencies": { + "solid-js": "^1.8.0" + }, + "packageManager": "pnpm@8.13.0", + "engines": { + "node": ">=18", + "pnpm": ">=8.12.0" + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..44b6f01 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,3702 @@ +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +dependencies: + '@motionone/dom': + specifier: ^10.16.4 + version: 10.16.4 + '@motionone/utils': + specifier: ^10.16.3 + version: 10.16.3 + '@solid-primitives/props': + specifier: ^3.1.8 + version: 3.1.8(solid-js@1.8.7) + '@solid-primitives/refs': + specifier: ^1.0.5 + version: 1.0.5(solid-js@1.8.7) + '@solid-primitives/transition-group': + specifier: ^1.0.3 + version: 1.0.3(solid-js@1.8.7) + csstype: + specifier: ^3.1.0 + version: 3.1.3 + +devDependencies: + '@solidjs/testing-library': + specifier: ^0.8.5 + version: 0.8.5(@solidjs/router@0.10.5)(solid-js@1.8.7) + '@types/node': + specifier: ^20.10.6 + version: 20.10.6 + '@typescript-eslint/eslint-plugin': + specifier: ^6.17.0 + version: 6.17.0(@typescript-eslint/parser@6.17.0)(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/parser': + specifier: ^6.17.0 + version: 6.17.0(eslint@8.56.0)(typescript@5.3.3) + eslint: + specifier: ^8.56.0 + version: 8.56.0 + eslint-plugin-eslint-comments: + specifier: ^3.2.0 + version: 3.2.0(eslint@8.56.0) + eslint-plugin-no-only-tests: + specifier: ^3.1.0 + version: 3.1.0 + jsdom: + specifier: ^23.0.1 + version: 23.0.1 + prettier: + specifier: ^3.1.1 + version: 3.1.1 + solid-js: + specifier: ^1.8.7 + version: 1.8.7 + tsup: + specifier: ^8.0.1 + version: 8.0.1(typescript@5.3.3) + tsup-preset-solid: + specifier: ^2.2.0 + version: 2.2.0(esbuild@0.19.11)(solid-js@1.8.7)(tsup@8.0.1) + typescript: + specifier: ^5.3.3 + version: 5.3.3 + vite-plugin-solid: + specifier: ^2.8.0 + version: 2.8.0(solid-js@1.8.7)(vite@5.0.10) + vitest: + specifier: ^1.1.1 + version: 1.1.1(@types/node@20.10.6)(jsdom@23.0.1) + +packages: + + /@aashutoshrathi/word-wrap@1.2.6: + resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} + engines: {node: '>=0.10.0'} + dev: true + + /@ampproject/remapping@2.2.1: + resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.20 + 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/compat-data@7.23.5: + resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/core@7.23.7: + resolution: {integrity: sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.6 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.7) + '@babel/helpers': 7.23.7 + '@babel/parser': 7.23.6 + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.7 + '@babel/types': 7.23.6 + convert-source-map: 2.0.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/generator@7.23.6: + resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.6 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.20 + jsesc: 2.5.2 + dev: true + + /@babel/helper-annotate-as-pure@7.22.5: + resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.6 + dev: true + + /@babel/helper-compilation-targets@7.23.6: + resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/compat-data': 7.23.5 + '@babel/helper-validator-option': 7.23.5 + browserslist: 4.22.2 + lru-cache: 5.1.1 + semver: 6.3.1 + dev: true + + /@babel/helper-create-class-features-plugin@7.23.7(@babel/core@7.23.7): + resolution: {integrity: sha512-xCoqR/8+BoNnXOY7RVSgv6X+o7pmT5q1d+gGcRlXYkI+9B31glE4jeejhKVpA04O1AtzOt7OSQ6VYKP5FcRl9g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.7) + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + semver: 6.3.1 + dev: true + + /@babel/helper-environment-visitor@7.22.20: + resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-function-name@7.23.0: + resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.15 + '@babel/types': 7.23.6 + dev: true + + /@babel/helper-hoist-variables@7.22.5: + resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.6 + dev: true + + /@babel/helper-member-expression-to-functions@7.23.0: + resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.6 + dev: true + + /@babel/helper-module-imports@7.18.6: + resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.6 + dev: true + + /@babel/helper-module-imports@7.22.15: + resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.6 + dev: true + + /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.20 + dev: true + + /@babel/helper-optimise-call-expression@7.22.5: + resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.6 + dev: true + + /@babel/helper-plugin-utils@7.22.5: + resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-replace-supers@7.22.20(@babel/core@7.23.7): + resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-member-expression-to-functions': 7.23.0 + '@babel/helper-optimise-call-expression': 7.22.5 + dev: true + + /@babel/helper-simple-access@7.22.5: + resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.6 + dev: true + + /@babel/helper-skip-transparent-expression-wrappers@7.22.5: + resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.6 + dev: true + + /@babel/helper-split-export-declaration@7.22.6: + resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.6 + dev: true + + /@babel/helper-string-parser@7.23.4: + resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} + engines: {node: '>=6.9.0'} + 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/helper-validator-option@7.23.5: + resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helpers@7.23.7: + resolution: {integrity: sha512-6AMnjCoC8wjqBzDHkuqpa7jAKwvMo4dC+lr/TFBz+ucfulO1XMpDnwWPGBNwClOKZ8h6xn5N81W/R5OrcKtCbQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.15 + '@babel/traverse': 7.23.7 + '@babel/types': 7.23.6 + transitivePeerDependencies: + - supports-color + 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/parser@7.23.6: + resolution: {integrity: sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.23.6 + dev: true + + /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.7) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-simple-access': 7.22.5 + dev: true + + /@babel/plugin-transform-typescript@7.23.6(@babel/core@7.23.7): + resolution: {integrity: sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.23.7(@babel/core@7.23.7) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.7) + dev: true + + /@babel/preset-typescript@7.23.3(@babel/core@7.23.7): + resolution: {integrity: sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.23.5 + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-typescript': 7.23.6(@babel/core@7.23.7) + dev: true + + /@babel/runtime@7.23.7: + resolution: {integrity: sha512-w06OXVOFso7LcbzMiDGt+3X7Rh7Ho8MmgPoWU3rarH+8upf+wSU/grlGbWzQyr3DkdN6ZeuMFjpdwW0Q+HxobA==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.1 + dev: true + + /@babel/template@7.22.15: + resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/parser': 7.23.6 + '@babel/types': 7.23.6 + dev: true + + /@babel/traverse@7.23.7: + resolution: {integrity: sha512-tY3mM8rH9jM0YHFGyfC0/xf+SB5eKUu7HPj7/k3fpi9dAlsMc5YbQvDi0Sh2QTPXqMhyaAtzAr807TIyfQrmyg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.6 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.23.6 + '@babel/types': 7.23.6 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/types@7.23.6: + resolution: {integrity: sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.23.4 + '@babel/helper-validator-identifier': 7.22.20 + to-fast-properties: 2.0.0 + dev: true + + /@esbuild/aix-ppc64@0.19.11: + resolution: {integrity: sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm64@0.19.11: + resolution: {integrity: sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm@0.19.11: + resolution: {integrity: sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64@0.19.11: + resolution: {integrity: sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64@0.19.11: + resolution: {integrity: sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64@0.19.11: + resolution: {integrity: sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64@0.19.11: + resolution: {integrity: sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64@0.19.11: + resolution: {integrity: sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64@0.19.11: + resolution: {integrity: sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm@0.19.11: + resolution: {integrity: sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32@0.19.11: + resolution: {integrity: sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64@0.19.11: + resolution: {integrity: sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el@0.19.11: + resolution: {integrity: sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64@0.19.11: + resolution: {integrity: sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64@0.19.11: + resolution: {integrity: sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x@0.19.11: + resolution: {integrity: sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64@0.19.11: + resolution: {integrity: sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64@0.19.11: + resolution: {integrity: sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64@0.19.11: + resolution: {integrity: sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64@0.19.11: + resolution: {integrity: sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64@0.19.11: + resolution: {integrity: sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32@0.19.11: + resolution: {integrity: sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64@0.19.11: + resolution: {integrity: sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@eslint-community/eslint-utils@4.4.0(eslint@8.56.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.56.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@eslint-community/regexpp@4.10.0: + resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: true + + /@eslint/eslintrc@2.1.4: + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.6.1 + globals: 13.24.0 + ignore: 5.3.0 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@eslint/js@8.56.0: + resolution: {integrity: sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@humanwhocodes/config-array@0.11.13: + resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 2.0.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/module-importer@1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + dev: true + + /@humanwhocodes/object-schema@2.0.1: + resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} + dev: true + + /@isaacs/cliui@8.0.2: + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + dependencies: + string-width: 5.1.2 + string-width-cjs: /string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: /strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: /wrap-ansi@7.0.0 + 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 + + /@jridgewell/gen-mapping@0.3.3: + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.20 + dev: true + + /@jridgewell/resolve-uri@3.1.1: + resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/set-array@1.1.2: + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + dev: true + + /@jridgewell/trace-mapping@0.3.20: + resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==} + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + + /@motionone/animation@10.16.3: + resolution: {integrity: sha512-QUGWpLbMFLhyqKlngjZhjtxM8IqiJQjLK0DF+XOF6od9nhSvlaeEpOY/UMCRVcZn/9Tr2rZO22EkuCIjYdI74g==} + dependencies: + '@motionone/easing': 10.16.3 + '@motionone/types': 10.16.3 + '@motionone/utils': 10.16.3 + tslib: 2.6.2 + dev: false + + /@motionone/dom@10.16.4: + resolution: {integrity: sha512-HPHlVo/030qpRj9R8fgY50KTN4Ko30moWRTA3L3imrsRBmob93cTYmodln49HYFbQm01lFF7X523OkKY0DX6UA==} + dependencies: + '@motionone/animation': 10.16.3 + '@motionone/generators': 10.16.4 + '@motionone/types': 10.16.3 + '@motionone/utils': 10.16.3 + hey-listen: 1.0.8 + tslib: 2.6.2 + dev: false + + /@motionone/easing@10.16.3: + resolution: {integrity: sha512-HWTMZbTmZojzwEuKT/xCdvoMPXjYSyQvuVM6jmM0yoGU6BWzsmYMeB4bn38UFf618fJCNtP9XeC/zxtKWfbr0w==} + dependencies: + '@motionone/utils': 10.16.3 + tslib: 2.6.2 + dev: false + + /@motionone/generators@10.16.4: + resolution: {integrity: sha512-geFZ3w0Rm0ZXXpctWsSf3REGywmLLujEjxPYpBR0j+ymYwof0xbV6S5kGqqsDKgyWKVWpUInqQYvQfL6fRbXeg==} + dependencies: + '@motionone/types': 10.16.3 + '@motionone/utils': 10.16.3 + tslib: 2.6.2 + dev: false + + /@motionone/types@10.16.3: + resolution: {integrity: sha512-W4jkEGFifDq73DlaZs3HUfamV2t1wM35zN/zX7Q79LfZ2sc6C0R1baUHZmqc/K5F3vSw3PavgQ6HyHLd/MXcWg==} + dev: false + + /@motionone/utils@10.16.3: + resolution: {integrity: sha512-WNWDksJIxQkaI9p9Z9z0+K27xdqISGNFy1SsWVGaiedTHq0iaT6iZujby8fT/ZnZxj1EOaxJtSfUPCFNU5CRoA==} + dependencies: + '@motionone/types': 10.16.3 + hey-listen: 1.0.8 + tslib: 2.6.2 + dev: false + + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + dev: true + + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + dev: true + + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.16.0 + dev: true + + /@pkgjs/parseargs@0.11.0: + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-android-arm-eabi@4.9.2: + resolution: {integrity: sha512-RKzxFxBHq9ysZ83fn8Iduv3A283K7zPPYuhL/z9CQuyFrjwpErJx0h4aeb/bnJ+q29GRLgJpY66ceQ/Wcsn3wA==} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-android-arm64@4.9.2: + resolution: {integrity: sha512-yZ+MUbnwf3SHNWQKJyWh88ii2HbuHCFQnAYTeeO1Nb8SyEiWASEi5dQUygt3ClHWtA9My9RQAYkjvrsZ0WK8Xg==} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-darwin-arm64@4.9.2: + resolution: {integrity: sha512-vqJ/pAUh95FLc/G/3+xPqlSBgilPnauVf2EXOQCZzhZJCXDXt/5A8mH/OzU6iWhb3CNk5hPJrh8pqJUPldN5zw==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-darwin-x64@4.9.2: + resolution: {integrity: sha512-otPHsN5LlvedOprd3SdfrRNhOahhVBwJpepVKUN58L0RnC29vOAej1vMEaVU6DadnpjivVsNTM5eNt0CcwTahw==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm-gnueabihf@4.9.2: + resolution: {integrity: sha512-ewG5yJSp+zYKBYQLbd1CUA7b1lSfIdo9zJShNTyc2ZP1rcPrqyZcNlsHgs7v1zhgfdS+kW0p5frc0aVqhZCiYQ==} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm64-gnu@4.9.2: + resolution: {integrity: sha512-pL6QtV26W52aCWTG1IuFV3FMPL1m4wbsRG+qijIvgFO/VBsiXJjDPE/uiMdHBAO6YcpV4KvpKtd0v3WFbaxBtg==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm64-musl@4.9.2: + resolution: {integrity: sha512-On+cc5EpOaTwPSNetHXBuqylDW+765G/oqB9xGmWU3npEhCh8xu0xqHGUA+4xwZLqBbIZNcBlKSIYfkBm6ko7g==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-riscv64-gnu@4.9.2: + resolution: {integrity: sha512-Wnx/IVMSZ31D/cO9HSsU46FjrPWHqtdF8+0eyZ1zIB5a6hXaZXghUKpRrC4D5DcRTZOjml2oBhXoqfGYyXKipw==} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-gnu@4.9.2: + resolution: {integrity: sha512-ym5x1cj4mUAMBummxxRkI4pG5Vht1QMsJexwGP8547TZ0sox9fCLDHw9KCH9c1FO5d9GopvkaJsBIOkTKxksdw==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-musl@4.9.2: + resolution: {integrity: sha512-m0hYELHGXdYx64D6IDDg/1vOJEaiV8f1G/iO+tejvRCJNSwK4jJ15e38JQy5Q6dGkn1M/9KcyEOwqmlZ2kqaZg==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-arm64-msvc@4.9.2: + resolution: {integrity: sha512-x1CWburlbN5JjG+juenuNa4KdedBdXLjZMp56nHFSHTOsb/MI2DYiGzLtRGHNMyydPGffGId+VgjOMrcltOksA==} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-ia32-msvc@4.9.2: + resolution: {integrity: sha512-VVzCB5yXR1QlfsH1Xw1zdzQ4Pxuzv+CPr5qpElpKhVxlxD3CRdfubAG9mJROl6/dmj5gVYDDWk8sC+j9BI9/kQ==} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-x64-msvc@4.9.2: + resolution: {integrity: sha512-SYRedJi+mweatroB+6TTnJYLts0L0bosg531xnQWtklOI6dezEagx4Q0qDyvRdK+qgdA3YZpjjGuPFtxBmddBA==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@sinclair/typebox@0.27.8: + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + dev: true + + /@solid-primitives/props@3.1.8(solid-js@1.8.7): + resolution: {integrity: sha512-38ERNFhl87emUDPRlYvCmlbvEcK2mOJB38SU22YS2QXFDK7TQf/7P46XZacs7oODc/fckhfZTitht71FMEDe2g==} + peerDependencies: + solid-js: ^1.6.12 + dependencies: + '@solid-primitives/utils': 6.2.1(solid-js@1.8.7) + solid-js: 1.8.7 + dev: false + + /@solid-primitives/refs@1.0.5(solid-js@1.8.7): + resolution: {integrity: sha512-5hmYmYbm6rs43nMHHozyyUngGA7P7q2WtlaCLJEfmlUJf67GWI1PZmqAiol6m9F37XSMZRuvZLoQ7HA/0q3GYg==} + peerDependencies: + solid-js: ^1.6.12 + dependencies: + '@solid-primitives/utils': 6.2.1(solid-js@1.8.7) + solid-js: 1.8.7 + dev: false + + /@solid-primitives/transition-group@1.0.3(solid-js@1.8.7): + resolution: {integrity: sha512-TnFADZhx9sibdoW5gxkU1QmLabzV2H2OBKYGS2aR5IC61Q/+7v8wlxOJEevxXNbPiRo6qlE3STLU3L9XS8hDbA==} + peerDependencies: + solid-js: ^1.6.12 + dependencies: + solid-js: 1.8.7 + dev: false + + /@solid-primitives/utils@6.2.1(solid-js@1.8.7): + resolution: {integrity: sha512-TsecNzxiO5bLfzqb4OOuzfUmdOROcssuGqgh5rXMMaasoFZ3GoveUgdY1wcf17frMJM7kCNGNuK34EjErneZkg==} + peerDependencies: + solid-js: ^1.6.12 + dependencies: + solid-js: 1.8.7 + dev: false + + /@solidjs/router@0.10.5(solid-js@1.8.7): + resolution: {integrity: sha512-gxDeiyc97j8/UqzuuasZsQYA7jpmlwjkfpcay11Q2xfzoKR50eBM1AaxAPtf0MlBAdPsdPV3h/k8t5/XQCuebA==} + peerDependencies: + solid-js: ^1.8.6 + dependencies: + solid-js: 1.8.7 + dev: true + + /@solidjs/testing-library@0.8.5(@solidjs/router@0.10.5)(solid-js@1.8.7): + resolution: {integrity: sha512-L9TowCoqdRQGB8ikODh9uHXrYTjCUZseVUG0tIVa836//qeSqXP4m0BKG66v9Zp1y1wRxok5qUW97GwrtEBMcw==} + engines: {node: '>= 14'} + peerDependencies: + '@solidjs/router': '>=0.6.0' + solid-js: '>=1.0.0' + dependencies: + '@solidjs/router': 0.10.5(solid-js@1.8.7) + '@testing-library/dom': 9.3.3 + solid-js: 1.8.7 + dev: true + + /@testing-library/dom@9.3.3: + resolution: {integrity: sha512-fB0R+fa3AUqbLHWyxXa2kGVtf1Fe1ZZFr0Zp6AIbIAzXb2mKbEXl+PCQNUOaq5lbTab5tfctfXRNsWXxa2f7Aw==} + engines: {node: '>=14'} + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/runtime': 7.23.7 + '@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 + + /@types/aria-query@5.0.4: + resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} + dev: true + + /@types/babel__core@7.20.5: + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + dependencies: + '@babel/parser': 7.23.6 + '@babel/types': 7.23.6 + '@types/babel__generator': 7.6.8 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.5 + dev: true + + /@types/babel__generator@7.6.8: + resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} + dependencies: + '@babel/types': 7.23.6 + dev: true + + /@types/babel__template@7.4.4: + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + dependencies: + '@babel/parser': 7.23.6 + '@babel/types': 7.23.6 + dev: true + + /@types/babel__traverse@7.20.5: + resolution: {integrity: sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==} + dependencies: + '@babel/types': 7.23.6 + dev: true + + /@types/json-schema@7.0.15: + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + dev: true + + /@types/node@20.10.6: + resolution: {integrity: sha512-Vac8H+NlRNNlAmDfGUP7b5h/KA+AtWIzuXy0E6OyP8f1tCLYAtPvKRRDJjAPqhpCb0t6U2j7/xqAuLEebW2kiw==} + dependencies: + undici-types: 5.26.5 + dev: true + + /@types/semver@7.5.6: + resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==} + dev: true + + /@typescript-eslint/eslint-plugin@6.17.0(@typescript-eslint/parser@6.17.0)(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-Vih/4xLXmY7V490dGwBQJTpIZxH4ZFH6eCVmQ4RFkB+wmaCTDAx4dtgoWwMNGKLkqRY1L6rPqzEbjorRnDo4rQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.10.0 + '@typescript-eslint/parser': 6.17.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/scope-manager': 6.17.0 + '@typescript-eslint/type-utils': 6.17.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/utils': 6.17.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 6.17.0 + debug: 4.3.4 + eslint: 8.56.0 + graphemer: 1.4.0 + ignore: 5.3.0 + natural-compare: 1.4.0 + semver: 7.5.4 + ts-api-utils: 1.0.3(typescript@5.3.3) + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser@6.17.0(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-C4bBaX2orvhK+LlwrY8oWGmSl4WolCfYm513gEccdWZj0CwGadbIADb0FtVEcI+WzUyjyoBj2JRP8g25E6IB8A==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 6.17.0 + '@typescript-eslint/types': 6.17.0 + '@typescript-eslint/typescript-estree': 6.17.0(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 6.17.0 + debug: 4.3.4 + eslint: 8.56.0 + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/scope-manager@6.17.0: + resolution: {integrity: sha512-RX7a8lwgOi7am0k17NUO0+ZmMOX4PpjLtLRgLmT1d3lBYdWH4ssBUbwdmc5pdRX8rXon8v9x8vaoOSpkHfcXGA==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.17.0 + '@typescript-eslint/visitor-keys': 6.17.0 + dev: true + + /@typescript-eslint/type-utils@6.17.0(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-hDXcWmnbtn4P2B37ka3nil3yi3VCQO2QEB9gBiHJmQp5wmyQWqnjA85+ZcE8c4FqnaB6lBwMrPkgd4aBYz3iNg==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 6.17.0(typescript@5.3.3) + '@typescript-eslint/utils': 6.17.0(eslint@8.56.0)(typescript@5.3.3) + debug: 4.3.4 + eslint: 8.56.0 + ts-api-utils: 1.0.3(typescript@5.3.3) + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/types@6.17.0: + resolution: {integrity: sha512-qRKs9tvc3a4RBcL/9PXtKSehI/q8wuU9xYJxe97WFxnzH8NWWtcW3ffNS+EWg8uPvIerhjsEZ+rHtDqOCiH57A==} + engines: {node: ^16.0.0 || >=18.0.0} + dev: true + + /@typescript-eslint/typescript-estree@6.17.0(typescript@5.3.3): + resolution: {integrity: sha512-gVQe+SLdNPfjlJn5VNGhlOhrXz4cajwFd5kAgWtZ9dCZf4XJf8xmgCTLIqec7aha3JwgLI2CK6GY1043FRxZwg==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 6.17.0 + '@typescript-eslint/visitor-keys': 6.17.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.3 + semver: 7.5.4 + ts-api-utils: 1.0.3(typescript@5.3.3) + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/utils@6.17.0(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-LofsSPjN/ITNkzV47hxas2JCsNCEnGhVvocfyOcLzT9c/tSZE7SfhS/iWtzP1lKNOEfLhRTZz6xqI8N2RzweSQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.6 + '@typescript-eslint/scope-manager': 6.17.0 + '@typescript-eslint/types': 6.17.0 + '@typescript-eslint/typescript-estree': 6.17.0(typescript@5.3.3) + eslint: 8.56.0 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/visitor-keys@6.17.0: + resolution: {integrity: sha512-H6VwB/k3IuIeQOyYczyyKN8wH6ed8EwliaYHLxOIhyF0dYEIsN8+Bk3GE19qafeMKyZJJHP8+O1HiFhFLUNKSg==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.17.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@ungap/structured-clone@1.2.0: + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + dev: true + + /@vitest/expect@1.1.1: + resolution: {integrity: sha512-Qpw01C2Hyb3085jBkOJLQ7HRX0Ncnh2qV4p+xWmmhcIUlMykUF69zsnZ1vPmAjZpomw9+5tWEGOQ0GTfR8U+kA==} + dependencies: + '@vitest/spy': 1.1.1 + '@vitest/utils': 1.1.1 + chai: 4.3.10 + dev: true + + /@vitest/runner@1.1.1: + resolution: {integrity: sha512-8HokyJo1SnSi3uPFKfWm/Oq1qDwLC4QDcVsqpXIXwsRPAg3gIDh8EbZ1ri8cmQkBxdOu62aOF9B4xcqJhvt4xQ==} + dependencies: + '@vitest/utils': 1.1.1 + p-limit: 5.0.0 + pathe: 1.1.1 + dev: true + + /@vitest/snapshot@1.1.1: + resolution: {integrity: sha512-WnMHjv4VdHLbFGgCdVVvyRkRPnOKN75JJg+LLTdr6ah7YnL75W+7CTIMdzPEPzaDxA8r5yvSVlc1d8lH3yE28w==} + dependencies: + magic-string: 0.30.5 + pathe: 1.1.1 + pretty-format: 29.7.0 + dev: true + + /@vitest/spy@1.1.1: + resolution: {integrity: sha512-hDU2KkOTfFp4WFFPWwHFauddwcKuGQ7gF6Un/ZZkCogoAiTMN7/7YKvUDbywPZZ754iCQGjdUmXN3t4k0jm1IQ==} + dependencies: + tinyspy: 2.2.0 + dev: true + + /@vitest/utils@1.1.1: + resolution: {integrity: sha512-E9LedH093vST/JuBSyHLFMpxJKW3dLhe/flUSPFedoyj4wKiFX7Jm8gYLtOIiin59dgrssfmFv0BJ1u8P/LC/A==} + dependencies: + diff-sequences: 29.6.3 + loupe: 2.3.7 + pretty-format: 29.7.0 + dev: true + + /acorn-jsx@5.3.2(acorn@8.11.3): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.11.3 + dev: true + + /acorn-walk@8.3.1: + resolution: {integrity: sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw==} + engines: {node: '>=0.4.0'} + dev: true + + /acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + engines: {node: '>=0.4.0'} + hasBin: true + dev: true + + /agent-base@7.1.0: + resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} + engines: {node: '>= 14'} + dependencies: + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + dev: true + + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + dev: true + + /ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + 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'} + dependencies: + color-convert: 2.0.1 + dev: true + + /ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + dev: true + + /ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + dev: true + + /any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + dev: true + + /anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: true + + /argparse@2.0.1: + 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 + + /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 + + /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 + + /babel-plugin-jsx-dom-expressions@0.37.9(@babel/core@7.23.7): + resolution: {integrity: sha512-6w+zs2i14fVanj4e1hXCU5cp+x0U0LJ5jScknpMZZUteHhwFRGJflHMVJ+xAcW7ku41FYjr7DgtK9mnc2SXlJg==} + peerDependencies: + '@babel/core': ^7.20.12 + dependencies: + '@babel/core': 7.23.7 + '@babel/helper-module-imports': 7.18.6 + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.7) + '@babel/types': 7.23.6 + html-entities: 2.3.3 + validate-html-nesting: 1.2.2 + dev: true + + /babel-preset-solid@1.8.6(@babel/core@7.23.7): + resolution: {integrity: sha512-Ened42CHjU4EFkvNeS042/3Pm21yvMWn8p4G4ddzQTlKaMwSGGD1VciA/e7EshBVHJCcBj9vHiUd/r3A4qLPZA==} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.7 + babel-plugin-jsx-dom-expressions: 0.37.9(@babel/core@7.23.7) + dev: true + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: true + + /binary-extensions@2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} + dev: true + + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: true + + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + dev: true + + /braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + dev: true + + /browserslist@4.22.2: + resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001572 + electron-to-chromium: 1.4.616 + node-releases: 2.0.14 + update-browserslist-db: 1.0.13(browserslist@4.22.2) + dev: true + + /bundle-require@4.0.2(esbuild@0.19.11): + resolution: {integrity: sha512-jwzPOChofl67PSTW2SGubV9HBQAhhR2i6nskiOThauo9dzwDUgOWQScFVaJkjEfYX+UXiD+LEx8EblQMc2wIag==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + peerDependencies: + esbuild: '>=0.17' + dependencies: + esbuild: 0.19.11 + load-tsconfig: 0.2.5 + dev: true + + /cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + 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 + + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + dev: true + + /caniuse-lite@1.0.30001572: + resolution: {integrity: sha512-1Pbh5FLmn5y4+QhNyJE9j3/7dK44dGB83/ZMjv/qJk86TvDbjk0LosiZo0i0WB0Vx607qMX9jYrn1VLHCkN4rw==} + 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@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /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 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + 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'} + dependencies: + 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 + + /combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: 1.0.0 + dev: true + + /commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + dev: true + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: true + + /convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + dev: true + + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + dev: true + + /cssstyle@3.0.0: + resolution: {integrity: sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==} + engines: {node: '>=14'} + dependencies: + rrweb-cssom: 0.6.0 + dev: true + + /csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + /data-urls@5.0.0: + resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} + engines: {node: '>=18'} + dependencies: + whatwg-mimetype: 4.0.0 + whatwg-url: 14.0.0 + dev: true + + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: true + + /decimal.js@10.4.3: + resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} + 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 + + /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 + + /delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + 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'} + dependencies: + path-type: 4.0.0 + dev: true + + /doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dependencies: + esutils: 2.0.3 + dev: true + + /dom-accessibility-api@0.5.16: + resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} + dev: true + + /eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + dev: true + + /electron-to-chromium@1.4.616: + resolution: {integrity: sha512-1n7zWYh8eS0L9Uy+GskE0lkBUNK83cXTVJI0pU3mGprFsbfSdAc15VTFbo+A+Bq4pwstmL30AVcEU3Fo463lNg==} + dev: true + + /emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + dev: true + + /emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + dev: true + + /entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + 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 + + /esbuild-plugin-solid@0.5.0(esbuild@0.19.11)(solid-js@1.8.7): + resolution: {integrity: sha512-ITK6n+0ayGFeDVUZWNMxX+vLsasEN1ILrg4pISsNOQ+mq4ljlJJiuXotInd+HE0MzwTcA9wExT1yzDE2hsqPsg==} + peerDependencies: + esbuild: '>=0.12' + solid-js: '>= 1.0' + dependencies: + '@babel/core': 7.23.7 + '@babel/preset-typescript': 7.23.3(@babel/core@7.23.7) + babel-preset-solid: 1.8.6(@babel/core@7.23.7) + esbuild: 0.19.11 + solid-js: 1.8.7 + transitivePeerDependencies: + - supports-color + dev: true + + /esbuild@0.19.11: + resolution: {integrity: sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/aix-ppc64': 0.19.11 + '@esbuild/android-arm': 0.19.11 + '@esbuild/android-arm64': 0.19.11 + '@esbuild/android-x64': 0.19.11 + '@esbuild/darwin-arm64': 0.19.11 + '@esbuild/darwin-x64': 0.19.11 + '@esbuild/freebsd-arm64': 0.19.11 + '@esbuild/freebsd-x64': 0.19.11 + '@esbuild/linux-arm': 0.19.11 + '@esbuild/linux-arm64': 0.19.11 + '@esbuild/linux-ia32': 0.19.11 + '@esbuild/linux-loong64': 0.19.11 + '@esbuild/linux-mips64el': 0.19.11 + '@esbuild/linux-ppc64': 0.19.11 + '@esbuild/linux-riscv64': 0.19.11 + '@esbuild/linux-s390x': 0.19.11 + '@esbuild/linux-x64': 0.19.11 + '@esbuild/netbsd-x64': 0.19.11 + '@esbuild/openbsd-x64': 0.19.11 + '@esbuild/sunos-x64': 0.19.11 + '@esbuild/win32-arm64': 0.19.11 + '@esbuild/win32-ia32': 0.19.11 + '@esbuild/win32-x64': 0.19.11 + 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@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + dev: true + + /eslint-plugin-eslint-comments@3.2.0(eslint@8.56.0): + resolution: {integrity: sha512-0jkOl0hfojIHHmEHgmNdqv4fmh7300NdpA9FFpF7zaoLvB/QeXOGNLIo86oAveJFrfB1p05kC8hpEMHM8DwWVQ==} + engines: {node: '>=6.5.0'} + peerDependencies: + eslint: '>=4.19.1' + dependencies: + escape-string-regexp: 1.0.5 + eslint: 8.56.0 + ignore: 5.3.0 + dev: true + + /eslint-plugin-no-only-tests@3.1.0: + resolution: {integrity: sha512-Lf4YW/bL6Un1R6A76pRZyE1dl1vr31G/ev8UzIc/geCgFWyrKil8hVjYqWVKGB/UIGmb6Slzs9T0wNezdSVegw==} + engines: {node: '>=5.0.0'} + dev: true + + /eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: true + + /eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /eslint@8.56.0: + resolution: {integrity: sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@eslint-community/regexpp': 4.10.0 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.56.0 + '@humanwhocodes/config-array': 0.11.13 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.24.0 + graphemer: 1.4.0 + ignore: 5.3.0 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.3 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.11.3 + acorn-jsx: 5.3.2(acorn@8.11.3) + eslint-visitor-keys: 3.4.3 + dev: true + + /esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + dependencies: + estraverse: 5.3.0 + dev: true + + /esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.0 + dev: true + + /estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + dev: true + + /esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + dev: true + + /execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + dev: true + + /execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.2.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + dev: true + + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + dev: true + + /fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + dev: true + + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: true + + /fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + dev: true + + /fastq@1.16.0: + resolution: {integrity: sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==} + dependencies: + reusify: 1.0.4 + dev: true + + /file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flat-cache: 3.2.0 + dev: true + + /fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + dev: true + + /find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + dev: true + + /flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flatted: 3.2.9 + keyv: 4.5.4 + rimraf: 3.0.2 + dev: true + + /flatted@3.2.9: + resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} + dev: true + + /for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + dependencies: + is-callable: 1.2.7 + dev: true + + /foreground-child@3.1.1: + resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + engines: {node: '>=14'} + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + 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.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: 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 + + /functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + dev: true + + /gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + 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-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + dev: true + + /get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + dev: true + + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + dependencies: + is-glob: 4.0.3 + dev: true + + /glob@10.3.10: + resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + dependencies: + foreground-child: 3.1.1 + jackspeak: 2.3.6 + minimatch: 9.0.3 + minipass: 7.0.4 + path-scurry: 1.10.1 + dev: true + + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + dev: true + + /globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + dev: true + + /globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.0 + merge2: 1.4.1 + slash: 3.0.0 + dev: true + + /gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + dependencies: + get-intrinsic: 1.2.2 + dev: true + + /graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + 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 + + /hey-listen@1.0.8: + resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==} + dev: false + + /html-encoding-sniffer@4.0.0: + resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} + engines: {node: '>=18'} + dependencies: + whatwg-encoding: 3.1.1 + dev: true + + /html-entities@2.3.3: + resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==} + dev: true + + /http-proxy-agent@7.0.0: + resolution: {integrity: sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==} + engines: {node: '>= 14'} + dependencies: + agent-base: 7.1.0 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /https-proxy-agent@7.0.2: + resolution: {integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==} + engines: {node: '>= 14'} + dependencies: + agent-base: 7.1.0 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + dev: true + + /human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + 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@5.3.0: + resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==} + engines: {node: '>= 4'} + dev: true + + /import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + dev: true + + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + dev: true + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + + /inherits@2.0.4: + 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-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'} + dependencies: + 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-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'} + dependencies: + is-extglob: 2.1.1 + dev: true + + /is-map@2.0.2: + resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} + 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 + + /is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + dev: true + + /is-potential-custom-element-name@1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + 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-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + dev: true + + /is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + + /is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 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-weakset@2.0.2: + resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + dev: true + + /is-what@4.1.16: + resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==} + engines: {node: '>=12.13'} + 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 + + /jackspeak@2.3.6: + resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} + engines: {node: '>=14'} + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + dev: true + + /joycon@3.1.1: + resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} + engines: {node: '>=10'} + dev: true + + /js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + dev: true + + /js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + dev: true + + /jsdom@23.0.1: + resolution: {integrity: sha512-2i27vgvlUsGEBO9+/kJQRbtqtm+191b5zAZrU/UezVmnC2dlDAFLgDYJvAEi94T4kjsRKkezEtLQTgsNEsW2lQ==} + engines: {node: '>=18'} + peerDependencies: + canvas: ^2.11.2 + peerDependenciesMeta: + canvas: + optional: true + dependencies: + cssstyle: 3.0.0 + data-urls: 5.0.0 + decimal.js: 10.4.3 + form-data: 4.0.0 + html-encoding-sniffer: 4.0.0 + http-proxy-agent: 7.0.0 + https-proxy-agent: 7.0.2 + 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: 5.0.0 + webidl-conversions: 7.0.0 + whatwg-encoding: 3.1.1 + whatwg-mimetype: 4.0.0 + whatwg-url: 14.0.0 + ws: 8.16.0 + xml-name-validator: 5.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + dev: true + + /jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + dev: true + + /json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + dev: true + + /json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + dev: true + + /json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + dev: true + + /json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + dev: true + + /jsonc-parser@3.2.0: + resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + dev: true + + /keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + dependencies: + json-buffer: 3.0.1 + dev: true + + /levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /lilconfig@3.0.0: + resolution: {integrity: sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==} + engines: {node: '>=14'} + dev: true + + /lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + dev: true + + /load-tsconfig@0.2.5: + resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + + /local-pkg@0.5.0: + resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} + engines: {node: '>=14'} + dependencies: + mlly: 1.4.2 + pkg-types: 1.0.3 + dev: true + + /locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + dependencies: + p-locate: 5.0.0 + dev: true + + /lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + dev: true + + /lodash.sortby@4.7.0: + resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} + dev: true + + /loupe@2.3.7: + resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} + dependencies: + get-func-name: 2.0.2 + dev: true + + /lru-cache@10.1.0: + resolution: {integrity: sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==} + engines: {node: 14 || >=16.14} + dev: true + + /lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + dependencies: + yallist: 3.1.1 + dev: true + + /lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + 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.30.5: + resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + + /merge-anything@5.1.7: + resolution: {integrity: sha512-eRtbOb1N5iyH0tkQDAoQ4Ipsp/5qSR79Dzrz8hEPxRX10RWWR/iQXdoKmBSRCThY1Fh5EhISDtpSc93fpxUniQ==} + engines: {node: '>=12.13'} + dependencies: + is-what: 4.1.16 + dev: true + + /merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + dev: true + + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + dev: true + + /micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + 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 + + /mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + dev: true + + /mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + dev: true + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + dev: true + + /minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: true + + /minipass@7.0.4: + resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} + engines: {node: '>=16 || 14 >=14.17'} + dev: true + + /mlly@1.4.2: + resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==} + dependencies: + acorn: 8.11.3 + pathe: 1.1.1 + pkg-types: 1.0.3 + ufo: 1.3.2 + dev: true + + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: true + + /mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + dev: true + + /nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + dev: true + + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + dev: true + + /node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + dev: true + + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + dev: true + + /npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + dependencies: + path-key: 3.1.1 + dev: true + + /npm-run-path@5.2.0: + resolution: {integrity: sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + path-key: 4.0.0 + dev: true + + /nwsapi@2.2.7: + resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} + dev: true + + /object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + 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 + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + dev: true + + /onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + dependencies: + mimic-fn: 2.1.0 + dev: true + + /onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + dependencies: + mimic-fn: 4.0.0 + dev: true + + /optionator@0.9.3: + resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + engines: {node: '>= 0.8.0'} + dependencies: + '@aashutoshrathi/word-wrap': 1.2.6 + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + dev: true + + /p-limit@5.0.0: + resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} + engines: {node: '>=18'} + dependencies: + yocto-queue: 1.0.0 + dev: true + + /p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + dependencies: + p-limit: 3.1.0 + dev: true + + /parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 + dev: true + + /parse5@7.1.2: + resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} + dependencies: + entities: 4.5.0 + dev: true + + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + dev: true + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + dev: true + + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + dev: true + + /path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + dev: true + + /path-scurry@1.10.1: + resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + lru-cache: 10.1.0 + minipass: 7.0.4 + dev: true + + /path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + dev: true + + /pathe@1.1.1: + resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==} + dev: true + + /pathval@1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + dev: true + + /picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + dev: true + + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + dev: true + + /pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + dev: true + + /pkg-types@1.0.3: + resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} + dependencies: + jsonc-parser: 3.2.0 + mlly: 1.4.2 + pathe: 1.1.1 + dev: true + + /postcss-load-config@4.0.2: + resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + dependencies: + lilconfig: 3.0.0 + yaml: 2.3.4 + dev: true + + /postcss@8.4.32: + resolution: {integrity: sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.0 + source-map-js: 1.0.2 + dev: true + + /prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + 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 + + /psl@1.9.0: + resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} + dev: true + + /punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + 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 + + /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 + + /readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + dependencies: + picomatch: 2.3.1 + 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 + + /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 + + /reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + dev: true + + /rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + + /rollup@4.9.2: + resolution: {integrity: sha512-66RB8OtFKUTozmVEh3qyNfH+b+z2RXBVloqO2KCC/pjFaGaHtxP9fVfOQKPSGXg2mElmjmxjW/fZ7iKrEpMH5Q==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.9.2 + '@rollup/rollup-android-arm64': 4.9.2 + '@rollup/rollup-darwin-arm64': 4.9.2 + '@rollup/rollup-darwin-x64': 4.9.2 + '@rollup/rollup-linux-arm-gnueabihf': 4.9.2 + '@rollup/rollup-linux-arm64-gnu': 4.9.2 + '@rollup/rollup-linux-arm64-musl': 4.9.2 + '@rollup/rollup-linux-riscv64-gnu': 4.9.2 + '@rollup/rollup-linux-x64-gnu': 4.9.2 + '@rollup/rollup-linux-x64-musl': 4.9.2 + '@rollup/rollup-win32-arm64-msvc': 4.9.2 + '@rollup/rollup-win32-ia32-msvc': 4.9.2 + '@rollup/rollup-win32-x64-msvc': 4.9.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: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + dev: true + + /safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + dev: true + + /saxes@6.0.0: + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} + dependencies: + xmlchars: 2.2.0 + dev: true + + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + dev: true + + /semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + + /seroval@0.15.1: + resolution: {integrity: sha512-OPVtf0qmeC7RW+ScVX+7aOS+xoIM7pWcZ0jOWg2aTZigCydgRB04adfteBRbecZnnrO1WuGQ+C3tLeBBzX2zSQ==} + engines: {node: '>=10'} + + /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@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + dev: true + + /shebang-regex@3.0.0: + 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 + + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + dev: true + + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: true + + /solid-js@1.8.7: + resolution: {integrity: sha512-9dzrSVieh2zj3SnJ02II6xZkonR6c+j/91b7XZUNcC6xSaldlqjjGh98F1fk5cRJ8ZTkzqF5fPIWDxEOs6QZXA==} + dependencies: + csstype: 3.1.3 + seroval: 0.15.1 + + /solid-refresh@0.5.3(solid-js@1.8.7): + resolution: {integrity: sha512-Otg5it5sjOdZbQZJnvo99TEBAr6J7PQ5AubZLNU6szZzg3RQQ5MX04oteBIIGDs0y2Qv8aXKm9e44V8z+UnFdw==} + peerDependencies: + solid-js: ^1.3 + dependencies: + '@babel/generator': 7.23.6 + '@babel/helper-module-imports': 7.22.15 + '@babel/types': 7.23.6 + solid-js: 1.8.7 + dev: true + + /source-map-js@1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} + dev: true + + /source-map@0.8.0-beta.0: + resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} + engines: {node: '>= 8'} + dependencies: + whatwg-url: 7.1.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 + + /string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + dev: true + + /string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + dev: true + + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + dev: true + + /strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + dependencies: + ansi-regex: 6.0.1 + dev: true + + /strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + dev: true + + /strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + dev: true + + /strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: true + + /strip-literal@1.3.0: + resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} + dependencies: + acorn: 8.11.3 + dev: true + + /sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + commander: 4.1.1 + glob: 10.3.10 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.6 + ts-interface-checker: 0.1.13 + 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'} + dependencies: + has-flag: 4.0.0 + dev: true + + /symbol-tree@3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + dev: true + + /text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + dev: true + + /thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + dependencies: + thenify: 3.3.1 + dev: true + + /thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + dependencies: + any-promise: 1.3.0 + dev: true + + /tinybench@2.5.1: + resolution: {integrity: sha512-65NKvSuAVDP/n4CqH+a9w2kTlLReS9vhsAP06MWx+/89nMinJyB2icyl58RIcqCmIggpojIGeuJGhjU1aGMBSg==} + dev: true + + /tinypool@0.8.1: + resolution: {integrity: sha512-zBTCK0cCgRROxvs9c0CGK838sPkeokNGdQVUUwHAbynHFlmyJYj825f/oRs528HaIJ97lo0pLIlDUzwN+IorWg==} + 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 + + /to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + dev: true + + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + dev: true + + /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.1 + universalify: 0.2.0 + url-parse: 1.5.10 + dev: true + + /tr46@1.0.1: + resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} + dependencies: + punycode: 2.3.1 + dev: true + + /tr46@5.0.0: + resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==} + engines: {node: '>=18'} + dependencies: + punycode: 2.3.1 + dev: true + + /tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + dev: true + + /ts-api-utils@1.0.3(typescript@5.3.3): + resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} + engines: {node: '>=16.13.0'} + peerDependencies: + typescript: '>=4.2.0' + dependencies: + typescript: 5.3.3 + dev: true + + /ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + dev: true + + /tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + dev: false + + /tsup-preset-solid@2.2.0(esbuild@0.19.11)(solid-js@1.8.7)(tsup@8.0.1): + resolution: {integrity: sha512-sPAzeArmYkVAZNRN+m4tkiojdd0GzW/lCwd4+TQDKMENe8wr2uAuro1s0Z59ASmdBbkXoxLgCiNcuQMyiidMZg==} + peerDependencies: + tsup: ^8.0.0 + dependencies: + esbuild-plugin-solid: 0.5.0(esbuild@0.19.11)(solid-js@1.8.7) + tsup: 8.0.1(typescript@5.3.3) + transitivePeerDependencies: + - esbuild + - solid-js + - supports-color + dev: true + + /tsup@8.0.1(typescript@5.3.3): + resolution: {integrity: sha512-hvW7gUSG96j53ZTSlT4j/KL0q1Q2l6TqGBFc6/mu/L46IoNWqLLUzLRLP1R8Q7xrJTmkDxxDoojV5uCVs1sVOg==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + '@microsoft/api-extractor': ^7.36.0 + '@swc/core': ^1 + postcss: ^8.4.12 + typescript: '>=4.5.0' + peerDependenciesMeta: + '@microsoft/api-extractor': + optional: true + '@swc/core': + optional: true + postcss: + optional: true + typescript: + optional: true + dependencies: + bundle-require: 4.0.2(esbuild@0.19.11) + cac: 6.7.14 + chokidar: 3.5.3 + debug: 4.3.4 + esbuild: 0.19.11 + execa: 5.1.1 + globby: 11.1.0 + joycon: 3.1.1 + postcss-load-config: 4.0.2 + resolve-from: 5.0.0 + rollup: 4.9.2 + source-map: 0.8.0-beta.0 + sucrase: 3.35.0 + tree-kill: 1.2.2 + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + - ts-node + dev: true + + /type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + dev: true + + /type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + dev: true + + /type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + dev: true + + /typescript@5.3.3: + resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} + engines: {node: '>=14.17'} + hasBin: true + dev: true + + /ufo@1.3.2: + resolution: {integrity: sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==} + dev: true + + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + dev: true + + /universalify@0.2.0: + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} + engines: {node: '>= 4.0.0'} + dev: true + + /update-browserslist-db@1.0.13(browserslist@4.22.2): + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.22.2 + escalade: 3.1.1 + picocolors: 1.0.0 + dev: true + + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.3.1 + 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 + + /validate-html-nesting@1.2.2: + resolution: {integrity: sha512-hGdgQozCsQJMyfK5urgFcWEqsSSrK63Awe0t/IMR0bZ0QMtnuaiHzThW81guu3qx9abLi99NEuiaN6P9gVYsNg==} + dev: true + + /vite-node@1.1.1(@types/node@20.10.6): + resolution: {integrity: sha512-2bGE5w4jvym5v8llF6Gu1oBrmImoNSs4WmRVcavnG2me6+8UQntTqLiAMFyiAobp+ZXhj5ZFhI7SmLiFr/jrow==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + dependencies: + cac: 6.7.14 + debug: 4.3.4 + pathe: 1.1.1 + picocolors: 1.0.0 + vite: 5.0.10(@types/node@20.10.6) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + + /vite-plugin-solid@2.8.0(solid-js@1.8.7)(vite@5.0.10): + resolution: {integrity: sha512-n5FAm7ZmTl94VWUoiJCgG7bouF2NlC9CA1wY/qbVnkFbYDWk++bFWyNoU48aLJ+lMtzNeYzJypJXOHzFKxL9xA==} + peerDependencies: + solid-js: ^1.7.2 + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 + dependencies: + '@babel/core': 7.23.7 + '@babel/preset-typescript': 7.23.3(@babel/core@7.23.7) + '@types/babel__core': 7.20.5 + babel-preset-solid: 1.8.6(@babel/core@7.23.7) + merge-anything: 5.1.7 + solid-js: 1.8.7 + solid-refresh: 0.5.3(solid-js@1.8.7) + vite: 5.0.10(@types/node@20.10.6) + vitefu: 0.2.5(vite@5.0.10) + transitivePeerDependencies: + - supports-color + dev: true + + /vite@5.0.10(@types/node@20.10.6): + resolution: {integrity: sha512-2P8J7WWgmc355HUMlFrwofacvr98DAjoE52BfdbwQtyLH06XKwaL/FMnmKM2crF0iX4MpmMKoDlNCB1ok7zHCw==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + '@types/node': 20.10.6 + esbuild: 0.19.11 + postcss: 8.4.32 + rollup: 4.9.2 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /vitefu@0.2.5(vite@5.0.10): + resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} + peerDependencies: + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 + peerDependenciesMeta: + vite: + optional: true + dependencies: + vite: 5.0.10(@types/node@20.10.6) + dev: true + + /vitest@1.1.1(@types/node@20.10.6)(jsdom@23.0.1): + resolution: {integrity: sha512-Ry2qs4UOu/KjpXVfOCfQkTnwSXYGrqTbBZxw6reIYEFjSy1QUARRg5pxiI5BEXy+kBVntxUYNMlq4Co+2vD3fQ==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/node': ^18.0.0 || >=20.0.0 + '@vitest/browser': ^1.0.0 + '@vitest/ui': ^1.0.0 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + dependencies: + '@types/node': 20.10.6 + '@vitest/expect': 1.1.1 + '@vitest/runner': 1.1.1 + '@vitest/snapshot': 1.1.1 + '@vitest/spy': 1.1.1 + '@vitest/utils': 1.1.1 + acorn-walk: 8.3.1 + cac: 6.7.14 + chai: 4.3.10 + debug: 4.3.4 + execa: 8.0.1 + jsdom: 23.0.1 + local-pkg: 0.5.0 + 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.8.1 + vite: 5.0.10(@types/node@20.10.6) + vite-node: 1.1.1(@types/node@20.10.6) + why-is-node-running: 2.2.2 + transitivePeerDependencies: + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + + /w3c-xmlserializer@5.0.0: + resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} + engines: {node: '>=18'} + dependencies: + xml-name-validator: 5.0.0 + dev: true + + /webidl-conversions@4.0.2: + resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} + dev: true + + /webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + dev: true + + /whatwg-encoding@3.1.1: + resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} + engines: {node: '>=18'} + dependencies: + iconv-lite: 0.6.3 + dev: true + + /whatwg-mimetype@4.0.0: + resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} + engines: {node: '>=18'} + dev: true + + /whatwg-url@14.0.0: + resolution: {integrity: sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==} + engines: {node: '>=18'} + dependencies: + tr46: 5.0.0 + webidl-conversions: 7.0.0 + dev: true + + /whatwg-url@7.1.0: + resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} + dependencies: + lodash.sortby: 4.7.0 + tr46: 1.0.1 + webidl-conversions: 4.0.2 + dev: true + + /which-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-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@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + 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@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: true + + /wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + 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@5.0.0: + resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} + engines: {node: '>=18'} + dev: true + + /xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + dev: true + + /yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + dev: true + + /yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + dev: true + + /yaml@2.3.4: + resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} + engines: {node: '>= 14'} + 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/src/index.tsx b/src/index.tsx new file mode 100644 index 0000000..8485c64 --- /dev/null +++ b/src/index.tsx @@ -0,0 +1,4 @@ +export * from "./types.js" +export {Motion} from "./motion.jsx" +export {Presence, PresenceContext} from "./presence.jsx" +export {createMotion, motion} from "./primitives.js" diff --git a/src/motion.tsx b/src/motion.tsx new file mode 100644 index 0000000..1800ea0 --- /dev/null +++ b/src/motion.tsx @@ -0,0 +1,89 @@ +import {Dynamic} from "solid-js/web" +import {useContext, splitProps, JSX, createContext} from "solid-js" +import {combineStyle} from "@solid-primitives/props" +import {MotionState} from "@motionone/dom" + +import type {MotionComponentProps, MotionProxy, MotionProxyComponent} from "./types.js" +import {createAndBindMotionState} from "./primitives.js" +import {PresenceContext} from "./presence.jsx" + +const OPTION_KEYS = [ + "initial", + "animate", + "inView", + "inViewOptions", + "hover", + "press", + "variants", + "transition", + "exit", +] as const + +const ATTR_KEYS = ["tag"] as const + +export const ParentContext = createContext() + +/** @internal */ +export const MotionComponent = ( + props: MotionComponentProps & { + tag?: string + ref?: any + style?: JSX.CSSProperties | string + }, +): JSX.Element => { + const [options, , attrs] = splitProps(props, OPTION_KEYS, ATTR_KEYS) + + const [state, style] = createAndBindMotionState( + () => root, + () => ({...options}), + useContext(PresenceContext), + useContext(ParentContext), + ) + + let root!: Element + return ( + + { + root = el + props.ref?.(el) + }} + component={props.tag || "div"} + style={combineStyle(props.style, style)} + /> + + ) +} + +/** + * Renders an animatable HTML or SVG element. + * + * @component + * Animation props: + * - `animate` a target of values to animate to. Accepts all the same values and keyframes as Motion One's [animate function](https://motion.dev/dom/animate). This prop is **reactive** – changing it will animate the transition element to the new state. + * - `transition` for changing type of animation + * - `initial` a target of values to animate from when the element is first rendered. + * - `exit` a target of values to animate to when the element is removed. The element must be a direct child of the `` component. + * + * @example + * ```tsx + * + * ``` + * + * Interaction animation props: + * + * - `inView` animation target for when the element is in view + * - `hover` animate when hovered + * - `press` animate when pressed + * + * @example + * ```tsx + * + * ``` + */ +export const Motion = new Proxy(MotionComponent, { + get: + (_, tag: string): MotionProxyComponent => + props => , +}) as MotionProxy diff --git a/src/presence.tsx b/src/presence.tsx new file mode 100644 index 0000000..79e137f --- /dev/null +++ b/src/presence.tsx @@ -0,0 +1,78 @@ +import {mountedStates} from "@motionone/dom" +import {resolveFirst} from "@solid-primitives/refs" +import {createSwitchTransition} from "@solid-primitives/transition-group" +import { + createContext, + createSignal, + batch, + type FlowComponent, + type JSX, + type Accessor, +} from "solid-js" + +import {onCompleteExit} from "./primitives.js" +import type {Options} from "./types.js" + +export type PresenceContextState = { + initial: boolean + mount: Accessor +} +export const PresenceContext = createContext() + +/** + * Perform exit/enter trantisions of children `` components. + * + * accepts props: + * - `initial` – *(Defaults to `true`)* – If `false`, will disable the first animation on all child `Motion` elements the first time `Presence` is rendered. + * - `exitBeforeEnter` – *(Defaults to `false`)* – If `true`, `Presence` will wait for the exiting element to finish animating out before animating in the next one. + * + * @example + * ```tsx + * + * + * + * + * + * ``` + */ +export const Presence: FlowComponent<{ + initial?: boolean + exitBeforeEnter?: boolean +}> = props => { + const [mount, setMount] = createSignal(true), + state = {initial: props.initial ?? true, mount}, + render = ( + + { + createSwitchTransition( + resolveFirst(() => props.children), + { + appear: state.initial, + mode: props.exitBeforeEnter ? "out-in" : "parallel", + onExit(el, done) { + batch(() => { + setMount(false) + ;(mountedStates.get(el)?.getOptions() as Options).exit + ? onCompleteExit(el, done) + : done() + }) + }, + onEnter(_, done) { + batch(() => { + setMount(true) + done() + }) + }, + }, + ) as any as JSX.Element + } + + ) + + state.initial = true + return render +} diff --git a/src/primitives.ts b/src/primitives.ts new file mode 100644 index 0000000..39bb241 --- /dev/null +++ b/src/primitives.ts @@ -0,0 +1,80 @@ +import {createMotionState, createStyles, MotionState, style} from "@motionone/dom" +import {Accessor, createEffect, onCleanup, useContext} from "solid-js" + +import {PresenceContext, PresenceContextState} from "./presence.jsx" +import {Options} from "./types.js" + +export function onCompleteExit(el: Element, fn: VoidFunction): void { + el.addEventListener("motioncomplete", fn) +} + +/** @internal */ +export function createAndBindMotionState( + el: () => Element, + options: Accessor, + presence_state?: PresenceContextState, + parent_state?: MotionState, +): [MotionState, ReturnType] { + const state = createMotionState( + presence_state?.initial === false ? {...options(), initial: false} : options(), + parent_state, + ) + + createEffect(() => { + /* + Motion components under should wait before animating in + this is done with additional signal, because effects will still run immediately + */ + if (presence_state && !presence_state.mount()) return + + const el_ref = el(), + unmount = state.mount(el_ref) + + createEffect(() => state.update(options())) + + onCleanup(() => { + if (presence_state && options().exit) { + state.setActive("exit", true) + onCompleteExit(el_ref, unmount) + } else unmount() + }) + }) + + return [state, createStyles(state.getTarget())] as const +} + +/** + * createMotion provides MotionOne as a compact Solid primitive. + * + * @param target Target Element to animate. + * @param options Options to effect the animation. + * @param presenceState Optional PresenceContext override, defaults to current parent. + * @returns Object to access MotionState + */ +export function createMotion( + target: Element, + options: Accessor | Options, + presenceState?: PresenceContextState, +): MotionState { + const [state, styles] = createAndBindMotionState( + () => target, + typeof options === "function" ? options : () => options, + presenceState, + ) + + for (const key in styles) { + style.set(target, key, styles[key]) + } + + return state +} + +/** + * motion is a Solid directive that makes binding to elements easier. + * + * @param el Target Element to bind to. + * @param props Options to effect the animation. + */ +export function motion(el: Element, props: Accessor): void { + createMotion(el, props, useContext(PresenceContext)) +} diff --git a/src/types.ts b/src/types.ts new file mode 100644 index 0000000..6ae1753 --- /dev/null +++ b/src/types.ts @@ -0,0 +1,57 @@ +import type * as motionone from "@motionone/dom" +import type {PropertiesHyphen} from "csstype" +import type {JSX, ParentProps} from "solid-js" + +export type VariantDefinition = motionone.VariantDefinition + +export interface MotionEventHandlers { + onMotionStart?: (event: motionone.MotionEvent) => void + onMotionComplete?: (event: motionone.MotionEvent) => void + onHoverStart?: (event: motionone.CustomPointerEvent) => void + onHoverEnd?: (event: motionone.CustomPointerEvent) => void + onPressStart?: (event: motionone.CustomPointerEvent) => void + onPressEnd?: (event: motionone.CustomPointerEvent) => void + onViewEnter?: (event: motionone.ViewEvent) => void + onViewLeave?: (event: motionone.ViewEvent) => void +} + +/* + Solid style attribute supports only kebab-case properties. + While @motionone/dom supports both camelCase and kebab-case, + but provides only camelCase properties in the types. +*/ +declare module "@motionone/dom" { + interface CSSStyleDeclarationWithTransform + extends Omit {} +} + +export type Options = motionone.Options & {exit?: VariantDefinition} + +export type MotionComponentProps = ParentProps + +export type MotionComponent = { + // + (props: JSX.IntrinsicElements["div"] & MotionComponentProps): JSX.Element + // + ( + props: JSX.IntrinsicElements[T] & MotionComponentProps & {tag: T}, + ): JSX.Element +} + +export type MotionProxyComponent = (props: T & MotionComponentProps) => JSX.Element + +export type MotionProxy = MotionComponent & { + // + [K in keyof JSX.IntrinsicElements]: MotionProxyComponent +} + +declare module "solid-js" { + namespace JSX { + interface Directives { + motion: Options + } + } +} + +// export only here so the `JSX` import won't be shaken off the tree: +export type E = JSX.Element diff --git a/test/motion.test.tsx b/test/motion.test.tsx new file mode 100644 index 0000000..a0459d6 --- /dev/null +++ b/test/motion.test.tsx @@ -0,0 +1,191 @@ +import "../src/waapi.polyfill.js" +// import {render, screen, fireEvent} from "@solidjs/testing-library" + +import {describe, expect, test} from "vitest" +import * as s from "solid-js" +import * as sweb from "solid-js/web" + +import {Motion} from "../src/index.js" + +const duration = 0.001 + +function render(jsx: () => s.JSX.Element): () => void { + const container = document.createElement("div") + document.body.appendChild(container) + const dispose = sweb.render(jsx, container) + return () => { + dispose() + document.body.removeChild(container) + } +} + +function makePromise( + timout = 200, +): [promise: Promise, resolve: (value: T) => void, reject: (error: Error) => void] { + let resolve!: (value: T) => void + let reject!: (error: Error) => void + const promise = new Promise((res, rej) => { + resolve = res + reject = rej + setTimeout(() => rej(new Error("Timout passed")), timout) + }) + return [promise, resolve, reject] +} + +describe("Motion", () => { + test("Renders element as Div by default to HTML", () => { + let el!: HTMLDivElement + const dispose = render(() => ) + expect(el).toBeInstanceOf(HTMLDivElement) + expect(el.className).toBe("hello") + dispose() + }) + test("Renders element as proxy Motion.Tag to HTML", () => { + let el!: HTMLSpanElement + const dispose = render(() => ) + expect(el).toBeInstanceOf(HTMLSpanElement) + expect(el.className).toBe("hello") + dispose() + }) + test("Renders element as 'tag' prop to HTML", () => { + let el!: HTMLSpanElement + const dispose = render(() => ) + expect(el).toBeInstanceOf(HTMLSpanElement) + expect(el.className).toBe("hello") + dispose() + }) + test("renders children to HTML", () => { + let el!: HTMLDivElement + const dispose = render(() => ( + + + + + )) + + expect(el.innerHTML).toEqual(``) + dispose() + }) + + test("Applies initial as style to DOM node", () => { + let el!: HTMLDivElement + const dispose = render(() => ) + + expect(el.style.opacity).toBe("0.5") + expect(el.style.getPropertyValue("--motion-translateX")).toBe("100px") + expect(el.style.transform).toBe("translateX(var(--motion-translateX))") + dispose() + }) + + test("Animation runs on mount if initial and animate differ", async () => { + // const [promise, resolve] = makePromise() + + let el!: HTMLDivElement + const dispose = render(() => ( + + )) + + await new Promise(res => setTimeout(res, 500)) + expect(el.style.opacity).toBe("0.8") + dispose() + }) + + test("Animation doesn't run on mount if initial and animate are the same", async () => { + let reject: () => void + const promise = new Promise((res, rej) => { + reject = rej + setTimeout(res, 200) + }) + + const animate = {opacity: 0.4} + const dispose = render(() => ( + reject()} + onMotionStart={() => reject()} + transition={{duration}} + /> + )) + + await promise + dispose() + }) + + test("Animation runs when target changes", async () => { + const [promise, resolve] = makePromise() + const [animate, setAnimate] = s.createSignal({opacity: 0.5}) + + let el!: HTMLDivElement + const dispose = render(() => ( + { + if (detail.target.opacity === 0.8) resolve(true) + }} + transition={{duration}} + /> + )) + + setAnimate({opacity: 0.8}) + expect(el.style.opacity).not.toBe("0.8") + await promise + expect(el.style.opacity).toBe("0.8") + dispose() + }) + + test("Accepts default transition", async () => { + let el!: HTMLDivElement + const dispose = render(() => ( + + )) + + await new Promise(res => setTimeout(res, 500)) + + expect(el.style.opacity).not.toBe("0.5") + expect(el.style.opacity).not.toBe("0.9") + dispose() + }) + + test("animate default transition", async () => { + const element = await new Promise(resolve => { + let ref!: HTMLDivElement + render(() => ( + + )) + setTimeout(() => resolve(ref), 500) + }) + expect(element.style.opacity).not.toEqual("0.9") + }) + + test("Passes event handlers", async () => { + const captured: any[] = [] + const element = await new Promise(resolve => { + let ref!: HTMLDivElement + render(() => ( + captured.push(0)} /> + )) + setTimeout(() => resolve(ref), 1) + }) + const ev = new MouseEvent("mouseenter") + element.dispatchEvent(ev) + expect(captured).toEqual([0]) + }) +}) diff --git a/test/presence.test.tsx b/test/presence.test.tsx new file mode 100644 index 0000000..fb1f39b --- /dev/null +++ b/test/presence.test.tsx @@ -0,0 +1,184 @@ +import "../src/waapi.polyfill.js" +import {mountedStates} from "@motionone/dom" +import {children, createRoot, createSignal, Show} from "solid-js" +import {screen, render} from "@solidjs/testing-library" +import {Presence, Motion, VariantDefinition} from "../src/index.js" +import type {RefProps} from "@solid-primitives/refs" + +const TestComponent = ( + props: { + initial?: boolean + show?: boolean + animate?: VariantDefinition + exit?: VariantDefinition + } = {}, +) => { + return ( + + + + + + ) +} + +describe("Presence", () => { + test("Renders element", async () => { + render(TestComponent) + const component = await screen.findByTestId("child") + expect(component).toBeTruthy() + }) + + test("On initial Presence render, initial: false applies to children", () => { + const wrapper = render(() => ( + + )) + expect(wrapper.container.outerHTML).toEqual( + `
`, + ) + }) + + test("Animates element out", () => + createRoot(async () => { + const [show, setShow] = createSignal(true) + render(() => ( + + )) + const component = await screen.findByTestId("child") + expect(component.style.opacity).toBe("") + expect(component.isConnected).toBeTruthy() + + setShow(false) + + expect(component.style.opacity).toBe("") + expect(component.isConnected).toBeTruthy() + + return new Promise(resolve => { + setTimeout(() => { + expect(component.style.opacity).toBe("0") + expect(component.isConnected).toBeFalsy() + resolve() + }, 100) + }) + })) + + test("All children run their exit animation", async () => { + const [show, setShow] = createSignal(true) + + let ref_1!: HTMLDivElement, ref_2!: HTMLDivElement + let resolve_1: () => void, resolve_2: () => void + + const exit_animation: VariantDefinition = { + opacity: 0, + transition: {duration: 0.001}, + } + + const rendered = createRoot(() => + children(() => ( + + + resolve_1()} + > + resolve_2()} + /> + + + + )), + ) + + expect(rendered()).toContain(ref_1) + expect(ref_1).toContainElement(ref_2) + expect(ref_1.style.opacity).toBe("") + expect(ref_2.style.opacity).toBe("") + expect(mountedStates.has(ref_1)).toBeTruthy() + expect(mountedStates.has(ref_2)).toBeTruthy() + + setShow(false) + + expect(rendered()).toContain(ref_1) + expect(ref_1.style.opacity).toBe("") + expect(ref_2.style.opacity).toBe("") + + await new Promise(resolve => { + let count = 0 + resolve_1 = resolve_2 = () => { + if (++count === 2) resolve() + } + }) + + expect(rendered()).toHaveLength(0) + expect(ref_1.style.opacity).toBe("0") + expect(ref_2.style.opacity).toBe("0") + expect(mountedStates.has(ref_1)).toBeFalsy() + expect(mountedStates.has(ref_2)).toBeFalsy() + }) + + test("exitBeforeEnter delays enter animation until exit animation is complete", async () => { + const [condition, setCondition] = createSignal(true) + + let ref_1!: HTMLDivElement, ref_2!: HTMLDivElement + let resolve_last: (() => void) | undefined + + const El = (props: RefProps) => ( + resolve_last?.()} + /> + ) + + const rendered = createRoot(() => + children(() => ( + + } + fallback={} + /> + + )), + ) + + expect(rendered()).toContain(ref_1) + expect(ref_1.style.opacity).toBe("0") + + // enter 1 + await new Promise(resolve => (resolve_last = resolve)) + + expect(rendered()).toContain(ref_1) + expect(ref_1.style.opacity).toBe("1") + + setCondition(false) + + expect(rendered()).toContain(ref_1) + expect(rendered()).not.toContain(ref_2) + expect(ref_1.style.opacity).toBe("1") + expect(ref_2.style.opacity).toBe("0") + + // exit 1 + await new Promise(resolve => (resolve_last = resolve)) + + expect(rendered()).toContain(ref_2) + expect(rendered()).not.toContain(ref_1) + expect(ref_1.style.opacity).toBe("0") + expect(ref_2.style.opacity).toBe("0") + + // enter 2 + await new Promise(resolve => (resolve_last = resolve)) + + expect(rendered()).toContain(ref_2) + expect(rendered()).not.toContain(ref_1) + expect(ref_1.style.opacity).toBe("0") + expect(ref_2.style.opacity).toBe("1") + }) +}) diff --git a/test/primitives.test.tsx b/test/primitives.test.tsx new file mode 100644 index 0000000..5fad60d --- /dev/null +++ b/test/primitives.test.tsx @@ -0,0 +1,145 @@ +import "../src/waapi.polyfill.js" +import {createRoot, createSignal, Show} from "solid-js" +import {screen, render} from "@solidjs/testing-library" +import {Presence, VariantDefinition, motion} from "../src/index.js" +motion + +const duration = 0.001 + +const sleep = (ms: number) => new Promise(resolve => setTimeout(resolve, ms)) + +describe("motion directive", () => { + test("Applies initial as style to DOM node", async () => { + await render(() => ( +
+ )) + const component = await screen.findByTestId("box") + expect(component.style.opacity).toBe("0.5") + expect(component.style.getPropertyValue("--motion-translateX")).toBe("100px") + expect(component.style.transform).toBe("translateX(var(--motion-translateX))") + }) + + test("Animation runs on mount if initial and animate differ", async () => { + const element = await new Promise(resolve => { + const Component = () => { + let ref!: HTMLDivElement + setTimeout(() => resolve(ref), 60) + return ( +
+ ) + } + render(Component) + }) + expect(element).toHaveStyle("opacity: 0.8") + }) + + test("Animation runs when target changes", async () => { + const [opacity, setOpacity] = createSignal(0.5) + + const element = createRoot(() => ( +
+ )) as HTMLDivElement + + expect(element.style.opacity).toBe("0") + + await sleep(100) + + expect(element.style.opacity).toBe("0.5") + + setOpacity(0.8) + + expect(element.style.opacity).toBe("0.5") + + await sleep(100) + + expect(element.style.opacity).toBe("0.8") + }) + + test("Accepts default transition", async () => { + const element = await new Promise(resolve => { + let ref!: HTMLDivElement + render(() => ( +
+ )) + setTimeout(() => resolve(ref), 500) + }) + expect(element.style.opacity).not.toEqual("0.9") + }) + + describe("with Presence", () => { + const TestComponent = ( + props: { + initial?: boolean + show?: boolean + animate?: VariantDefinition + exit?: VariantDefinition + } = {}, + ) => { + return ( + + +
+ + + ) + } + + test("Animates element out", () => + createRoot(async () => { + const [show, setShow] = createSignal(true) + render(() => ( + + )) + const component = await screen.findByTestId("child") + expect(component.style.opacity).toBe("") + expect(component.isConnected).toBeTruthy() + + setShow(false) + + expect(component.style.opacity).toBe("") + expect(component.isConnected).toBeTruthy() + + return new Promise(resolve => { + setTimeout(() => { + expect(component.style.opacity).toBe("0") + expect(component.isConnected).toBeFalsy() + resolve() + }, 100) + }) + })) + }) +}) diff --git a/test/ssr.test.tsx b/test/ssr.test.tsx new file mode 100644 index 0000000..caefd36 --- /dev/null +++ b/test/ssr.test.tsx @@ -0,0 +1,119 @@ +import {describe, expect, test} from "vitest" +import {renderToString} from "solid-js/web" +import {Motion, Presence} from "../src/index.js" + +describe("ssr", () => { + test("Renders", () => { + const html = renderToString(() => ) + expect(html).toBe('
') + }) + + test("Renders style", () => { + const html = renderToString(() => ) + expect(html).toBe(`
`) + }) + + test("Renders initial as style", () => { + const html = renderToString(() => ) + expect(html).toBe( + `
`, + ) + }) + + test("Renders initial and style", () => { + const html1 = renderToString(() => ( + + )) + expect(html1).toBe( + `
`, + ) + + const html2 = renderToString(() => ( + + )) + expect(html2).toBe( + `
`, + ) + }) + + test("Renders svg with attrs", () => { + const html = renderToString(() => ( + + )) + expect(html).toBe( + ``, + ) + }) + + test("Children render inherited initial", () => { + const html = renderToString(() => ( + + + + + + )) + expect(html).toBe( + `
`, + ) + }) + + test("Renders expected markup from style as keyframes", () => { + const div = renderToString(() => ) + expect(div).toBe(`
`) + }) + + test("Renders expected CSS variables", () => { + const div = renderToString(() => ( + + )) + expect(div).toBe(`
`) + }) + + test("Renders expected transform", () => { + const div = renderToString(() => ) + expect(div).toBe( + `
`, + ) + }) + + test("Filters out all props", () => { + const div = renderToString(() => ( + + )) + expect(div).toBe('
') + }) + + test("Renders Presence", () => { + const html = renderToString(() => ( + + + + )) + expect(html).toBe('
') + }) + + test("Renders Presence with initial styles", () => { + const html = renderToString(() => ( + + + + )) + expect(html).toBe('
') + }) + + test("Renders Presence without initial styles", () => { + const html = renderToString(() => ( + + + + )) + expect(html).toBe('
') + }) +}) diff --git a/test/waapi.polyfill.js b/test/waapi.polyfill.js new file mode 100644 index 0000000..ed83202 --- /dev/null +++ b/test/waapi.polyfill.js @@ -0,0 +1,2877 @@ +// Copyright 2014 Google Inc. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +/** + * This is an edited version of the WAAPI polyfill + * that adds support for value and offset arrays. + */ + +/* eslint-disable */ + +!(function () { + var a = {}, + b = {} + !(function (a, b) { + function c(a) { + if ("number" == typeof a) return a + var b = {} + for (var c in a) b[c] = a[c] + return b + } + function d() { + ;(this._delay = 0), + (this._endDelay = 0), + (this._fill = "none"), + (this._iterationStart = 0), + (this._iterations = 1), + (this._duration = 0), + (this._playbackRate = 1), + (this._direction = "normal"), + (this._easing = "linear"), + (this._easingFunction = x) + } + function e() { + return a.isDeprecated( + "Invalid timing inputs", + "2016-03-02", + "TypeError exceptions will be thrown instead.", + !0, + ) + } + function f(b, c, e) { + var f = new d() + return ( + c && ((f.fill = "both"), (f.duration = "auto")), + "number" != typeof b || isNaN(b) + ? void 0 !== b && + Object.getOwnPropertyNames(b).forEach(function (c) { + if ("auto" != b[c]) { + if ( + ("number" == typeof f[c] || "duration" == c) && + ("number" != typeof b[c] || isNaN(b[c])) + ) + return + if ("fill" == c && -1 == v.indexOf(b[c])) return + if ("direction" == c && -1 == w.indexOf(b[c])) return + if ( + "playbackRate" == c && + 1 !== b[c] && + a.isDeprecated( + "AnimationEffectTiming.playbackRate", + "2014-11-28", + "Use Animation.playbackRate instead.", + ) + ) + return + f[c] = b[c] + } + }) + : (f.duration = b), + f + ) + } + function g(a) { + return "number" == typeof a && (a = isNaN(a) ? {duration: 0} : {duration: a}), a + } + function h(b, c) { + return (b = a.numericTimingToObject(b)), f(b, c) + } + function i(a, b, c, d) { + return a < 0 || a > 1 || c < 0 || c > 1 + ? x + : function (e) { + function f(a, b, c) { + return ( + 3 * a * (1 - c) * (1 - c) * c + 3 * b * (1 - c) * c * c + c * c * c + ) + } + if (e <= 0) { + var g = 0 + return a > 0 ? (g = b / a) : !b && c > 0 && (g = d / c), g * e + } + if (e >= 1) { + var h = 0 + return ( + c < 1 + ? (h = (d - 1) / (c - 1)) + : 1 == c && a < 1 && (h = (b - 1) / (a - 1)), + 1 + h * (e - 1) + ) + } + for (var i = 0, j = 1; i < j; ) { + var k = (i + j) / 2, + l = f(a, c, k) + if (Math.abs(e - l) < 1e-5) return f(b, d, k) + l < e ? (i = k) : (j = k) + } + return f(b, d, k) + } + } + function j(a, b) { + return function (c) { + if (c >= 1) return 1 + var d = 1 / a + return (c += b * d) - (c % d) + } + } + function k(a) { + C || (C = document.createElement("div").style), + (C.animationTimingFunction = ""), + (C.animationTimingFunction = a) + var b = C.animationTimingFunction + if ("" == b && e()) throw new TypeError(a + " is not a valid value for easing") + return b + } + function l(a) { + if ("linear" == a) return x + var b = E.exec(a) + if (b) return i.apply(this, b.slice(1).map(Number)) + var c = F.exec(a) + if (c) return j(Number(c[1]), A) + var d = G.exec(a) + return d ? j(Number(d[1]), {start: y, middle: z, end: A}[d[2]]) : B[a] || x + } + function m(a) { + return Math.abs(n(a) / a.playbackRate) + } + function n(a) { + return 0 === a.duration || 0 === a.iterations ? 0 : a.duration * a.iterations + } + function o(a, b, c) { + if (null == b) return H + var d = c.delay + a + c.endDelay + return b < Math.min(c.delay, d) ? I : b >= Math.min(c.delay + a, d) ? J : K + } + function p(a, b, c, d, e) { + switch (d) { + case I: + return "backwards" == b || "both" == b ? 0 : null + case K: + return c - e + case J: + return "forwards" == b || "both" == b ? a : null + case H: + return null + } + } + function q(a, b, c, d, e) { + var f = e + return 0 === a ? b !== I && (f += c) : (f += d / a), f + } + function r(a, b, c, d, e, f) { + var g = a === 1 / 0 ? b % 1 : a % 1 + return 0 !== g || c !== J || 0 === d || (0 === e && 0 !== f) || (g = 1), g + } + function s(a, b, c, d) { + return a === J && b === 1 / 0 ? 1 / 0 : 1 === c ? Math.floor(d) - 1 : Math.floor(d) + } + function t(a, b, c) { + var d = a + if ("normal" !== a && "reverse" !== a) { + var e = b + "alternate-reverse" === a && (e += 1), + (d = "normal"), + e !== 1 / 0 && e % 2 != 0 && (d = "reverse") + } + return "normal" === d ? c : 1 - c + } + function u(a, b, c) { + var d = o(a, b, c), + e = p(a, c.fill, b, d, c.delay) + if (null === e) return null + var f = q(c.duration, d, c.iterations, e, c.iterationStart), + g = r(f, c.iterationStart, d, c.iterations, e, c.duration), + h = s(d, c.iterations, g, f), + i = t(c.direction, h, g) + return c._easingFunction(i) + } + var v = "backwards|forwards|both|none".split("|"), + w = "reverse|alternate|alternate-reverse".split("|"), + x = function (a) { + return a + } + d.prototype = { + _setMember: function (b, c) { + ;(this["_" + b] = c), + this._effect && + ((this._effect._timingInput[b] = c), + (this._effect._timing = a.normalizeTimingInput(this._effect._timingInput)), + (this._effect.activeDuration = a.calculateActiveDuration( + this._effect._timing, + )), + this._effect._animation && + this._effect._animation._rebuildUnderlyingAnimation()) + }, + get playbackRate() { + return this._playbackRate + }, + set delay(a) { + this._setMember("delay", a) + }, + get delay() { + return this._delay + }, + set endDelay(a) { + this._setMember("endDelay", a) + }, + get endDelay() { + return this._endDelay + }, + set fill(a) { + this._setMember("fill", a) + }, + get fill() { + return this._fill + }, + set iterationStart(a) { + if ((isNaN(a) || a < 0) && e()) + throw new TypeError( + "iterationStart must be a non-negative number, received: " + a, + ) + this._setMember("iterationStart", a) + }, + get iterationStart() { + return this._iterationStart + }, + set duration(a) { + if ("auto" != a && (isNaN(a) || a < 0) && e()) + throw new TypeError("duration must be non-negative or auto, received: " + a) + this._setMember("duration", a) + }, + get duration() { + return this._duration + }, + set direction(a) { + this._setMember("direction", a) + }, + get direction() { + return this._direction + }, + set easing(a) { + ;(this._easingFunction = l(k(a))), this._setMember("easing", a) + }, + get easing() { + return this._easing + }, + set iterations(a) { + if ((isNaN(a) || a < 0) && e()) + throw new TypeError("iterations must be non-negative, received: " + a) + this._setMember("iterations", a) + }, + get iterations() { + return this._iterations + }, + } + var y = 1, + z = 0.5, + A = 0, + B = { + ease: i(0.25, 0.1, 0.25, 1), + "ease-in": i(0.42, 0, 1, 1), + "ease-out": i(0, 0, 0.58, 1), + "ease-in-out": i(0.42, 0, 0.58, 1), + "step-start": j(1, y), + "step-middle": j(1, z), + "step-end": j(1, A), + }, + C = null, + D = "\\s*(-?\\d+\\.?\\d*|-?\\.\\d+)\\s*", + E = new RegExp("cubic-bezier\\(" + D + "," + D + "," + D + "," + D + "\\)"), + F = /steps\(\s*(\d+)\s*\)/, + G = /steps\(\s*(\d+)\s*,\s*(start|middle|end)\s*\)/, + H = 0, + I = 1, + J = 2, + K = 3 + ;(a.cloneTimingInput = c), + (a.makeTiming = f), + (a.numericTimingToObject = g), + (a.normalizeTimingInput = h), + (a.calculateActiveDuration = m), + (a.calculateIterationProgress = u), + (a.calculatePhase = o), + (a.normalizeEasing = k), + (a.parseEasingFunction = l) + })(a), + (function (a, b) { + function c(a, b) { + return a in k ? k[a][b] || b : b + } + function d(a) { + return ( + "display" === a || + 0 === a.lastIndexOf("animation", 0) || + 0 === a.lastIndexOf("transition", 0) + ) + } + function e(a, b, e) { + if (!d(a)) { + var f = h[a] + if (f) { + i.style[a] = b + for (var g in f) { + var j = f[g], + k = i.style[j] + e[j] = c(j, k) + } + } else e[a] = c(a, b) + } + } + function f(a) { + var b = [] + for (var c in a) + if (!(c in ["easing", "offset", "composite"])) { + var d = a[c] + Array.isArray(d) || (d = [d]) + for (var e, f = d.length, g = 0; g < f; g++) + (e = {}), + (e.offset = "offset" in a ? a.offset : 1 == f ? 1 : g / (f - 1)), + "easing" in a && (e.easing = a.easing), + "composite" in a && (e.composite = a.composite), + (e[c] = d[g]), + b.push(e) + } + return ( + b.sort(function (a, b) { + return a.offset - b.offset + }), + b + ) + } + function g(b) { + function c() { + var a = d.length + null == d[a - 1].offset && (d[a - 1].offset = 1), + a > 1 && null == d[0].offset && (d[0].offset = 0) + for (var b = 0, c = d[0].offset, e = 1; e < a; e++) { + var f = d[e].offset + if (null != f) { + for (var g = 1; g < e - b; g++) + d[b + g].offset = c + ((f - c) * g) / (e - b) + ;(b = e), (c = f) + } + } + } + if (null == b) return [] + window.Symbol && + Symbol.iterator && + Array.prototype.from && + b[Symbol.iterator] && + (b = Array.from(b)), + Array.isArray(b) || (b = f(b)) + for ( + var d = b.map(function (b) { + var c = {} + for (var d in b) { + var f = b[d] + if ("offset" == d) { + if (null != f) { + if (((f = Number(f)), !isFinite(f))) + throw new TypeError("Keyframe offsets must be numbers.") + if (f < 0 || f > 1) + throw new TypeError( + "Keyframe offsets must be between 0 and 1.", + ) + } + } else if ("composite" == d) { + if ("add" == f || "accumulate" == f) + throw { + type: DOMException.NOT_SUPPORTED_ERR, + name: "NotSupportedError", + message: "add compositing is not supported", + } + if ("replace" != f) + throw new TypeError("Invalid composite mode " + f + ".") + } else f = "easing" == d ? a.normalizeEasing(f) : "" + f + e(d, f, c) + } + return ( + void 0 == c.offset && (c.offset = null), + void 0 == c.easing && (c.easing = "linear"), + c + ) + }), + g = !0, + h = -1 / 0, + i = 0; + i < d.length; + i++ + ) { + var j = d[i].offset + if (null != j) { + if (j < h) + throw new TypeError( + "Keyframes are not loosely sorted by offset. Sort or specify offsets.", + ) + h = j + } else g = !1 + } + return ( + (d = d.filter(function (a) { + return a.offset >= 0 && a.offset <= 1 + })), + g || c(), + d + ) + } + var h = { + background: [ + "backgroundImage", + "backgroundPosition", + "backgroundSize", + "backgroundRepeat", + "backgroundAttachment", + "backgroundOrigin", + "backgroundClip", + "backgroundColor", + ], + border: [ + "borderTopColor", + "borderTopStyle", + "borderTopWidth", + "borderRightColor", + "borderRightStyle", + "borderRightWidth", + "borderBottomColor", + "borderBottomStyle", + "borderBottomWidth", + "borderLeftColor", + "borderLeftStyle", + "borderLeftWidth", + ], + borderBottom: ["borderBottomWidth", "borderBottomStyle", "borderBottomColor"], + borderColor: [ + "borderTopColor", + "borderRightColor", + "borderBottomColor", + "borderLeftColor", + ], + borderLeft: ["borderLeftWidth", "borderLeftStyle", "borderLeftColor"], + borderRadius: [ + "borderTopLeftRadius", + "borderTopRightRadius", + "borderBottomRightRadius", + "borderBottomLeftRadius", + ], + borderRight: ["borderRightWidth", "borderRightStyle", "borderRightColor"], + borderTop: ["borderTopWidth", "borderTopStyle", "borderTopColor"], + borderWidth: [ + "borderTopWidth", + "borderRightWidth", + "borderBottomWidth", + "borderLeftWidth", + ], + flex: ["flexGrow", "flexShrink", "flexBasis"], + font: [ + "fontFamily", + "fontSize", + "fontStyle", + "fontVariant", + "fontWeight", + "lineHeight", + ], + margin: ["marginTop", "marginRight", "marginBottom", "marginLeft"], + outline: ["outlineColor", "outlineStyle", "outlineWidth"], + padding: ["paddingTop", "paddingRight", "paddingBottom", "paddingLeft"], + }, + i = document.createElementNS("http://www.w3.org/1999/xhtml", "div"), + j = {thin: "1px", medium: "3px", thick: "5px"}, + k = { + borderBottomWidth: j, + borderLeftWidth: j, + borderRightWidth: j, + borderTopWidth: j, + fontSize: { + "xx-small": "60%", + "x-small": "75%", + small: "89%", + medium: "100%", + large: "120%", + "x-large": "150%", + "xx-large": "200%", + }, + fontWeight: {normal: "400", bold: "700"}, + outlineWidth: j, + textShadow: {none: "0px 0px 0px transparent"}, + boxShadow: {none: "0px 0px 0px 0px transparent"}, + } + ;(a.convertToArrayForm = f), (a.normalizeKeyframes = g) + })(a), + (function (a) { + var b = {} + ;(a.isDeprecated = function (a, c, d, e) { + var f = e ? "are" : "is", + g = new Date(), + h = new Date(c) + return ( + h.setMonth(h.getMonth() + 3), + !( + g < h && + (a in b || + console.warn( + "Web Animations: " + + a + + " " + + f + + " deprecated and will stop working on " + + h.toDateString() + + ". " + + d, + ), + (b[a] = !0), + 1) + ) + ) + }), + (a.deprecated = function (b, c, d, e) { + var f = e ? "are" : "is" + if (a.isDeprecated(b, c, d, e)) + throw new Error(b + " " + f + " no longer supported. " + d) + }) + })(a), + (function () { + if (document.documentElement.animate) { + var c = document.documentElement.animate([], 0), + d = !0 + if ( + (c && + ((d = !1), + "play|currentTime|pause|reverse|playbackRate|cancel|finish|startTime|playState" + .split("|") + .forEach(function (a) { + void 0 === c[a] && (d = !0) + })), + !d) + ) + return + } + !(function (a, b, c) { + function d(a) { + for (var b = {}, c = 0; c < a.length; c++) + for (var d in a[c]) + if ("offset" != d && "easing" != d && "composite" != d) { + var e = { + offset: a[c].offset, + easing: a[c].easing, + value: a[c][d], + } + ;(b[d] = b[d] || []), b[d].push(e) + } + for (var f in b) { + var g = b[f] + + /** + * EDIT: + * First offset should be 0, last should be 1 + */ + + if (0 != g[0].offset || 1 != g[g.length - 1].offset) + throw { + type: DOMException.NOT_SUPPORTED_ERR, + name: "NotSupportedError", + message: "Partial keyframes are not supported", + } + } + return b + } + function e(c) { + var d = [] + for (var e in c) + for (var f = c[e], g = 0; g < f.length - 1; g++) { + var h = g, + i = g + 1, + j = f[h].offset, + k = f[i].offset, + l = j, + m = k + 0 == g && ((l = -1 / 0), 0 == k && (i = h)), + g == f.length - 2 && ((m = 1 / 0), 1 == j && (h = i)), + d.push({ + applyFrom: l, + applyTo: m, + startOffset: f[h].offset, + endOffset: f[i].offset, + easingFunction: a.parseEasingFunction(f[h].easing), + property: e, + interpolation: b.propertyInterpolation( + e, + f[h].value, + f[i].value, + ), + }) + } + return ( + d.sort(function (a, b) { + return a.startOffset - b.startOffset + }), + d + ) + } + b.convertEffectInput = function (c) { + var f = a.normalizeKeyframes(c), + g = d(f), + h = e(g) + return function (a, c) { + if (null != c) + h.filter(function (a) { + return c >= a.applyFrom && c < a.applyTo + }).forEach(function (d) { + var e = c - d.startOffset, + f = d.endOffset - d.startOffset, + g = 0 == f ? 0 : d.easingFunction(e / f) + b.apply(a, d.property, d.interpolation(g)) + }) + else + for (var d in g) + "offset" != d && "easing" != d && "composite" != d && b.clear(a, d) + } + } + })(a, b), + (function (a, b, c) { + function d(a) { + return a.replace(/-(.)/g, function (a, b) { + return b.toUpperCase() + }) + } + function e(a, b, c) { + ;(h[c] = h[c] || []), h[c].push([a, b]) + } + function f(a, b, c) { + for (var f = 0; f < c.length; f++) { + e(a, b, d(c[f])) + } + } + function g(c, e, f) { + var g = c + ;/-/.test(c) && + !a.isDeprecated( + "Hyphenated property names", + "2016-03-22", + "Use camelCase instead.", + !0, + ) && + (g = d(c)), + ("initial" != e && "initial" != f) || + ("initial" == e && (e = i[g]), "initial" == f && (f = i[g])) + for (var j = e == f ? [] : h[g], k = 0; j && k < j.length; k++) { + var l = j[k][0](e), + m = j[k][0](f) + if (void 0 !== l && void 0 !== m) { + var n = j[k][1](l, m) + if (n) { + var o = b.Interpolation.apply(null, n) + return function (a) { + return 0 == a ? e : 1 == a ? f : o(a) + } + } + } + } + return b.Interpolation(!1, !0, function (a) { + return a ? f : e + }) + } + var h = {} + b.addPropertiesHandler = f + var i = { + backgroundColor: "transparent", + backgroundPosition: "0% 0%", + borderBottomColor: "currentColor", + borderBottomLeftRadius: "0px", + borderBottomRightRadius: "0px", + borderBottomWidth: "3px", + borderLeftColor: "currentColor", + borderLeftWidth: "3px", + borderRightColor: "currentColor", + borderRightWidth: "3px", + borderSpacing: "2px", + borderTopColor: "currentColor", + borderTopLeftRadius: "0px", + borderTopRightRadius: "0px", + borderTopWidth: "3px", + bottom: "auto", + clip: "rect(0px, 0px, 0px, 0px)", + color: "black", + fontSize: "100%", + fontWeight: "400", + height: "auto", + left: "auto", + letterSpacing: "normal", + lineHeight: "120%", + marginBottom: "0px", + marginLeft: "0px", + marginRight: "0px", + marginTop: "0px", + maxHeight: "none", + maxWidth: "none", + minHeight: "0px", + minWidth: "0px", + opacity: "1.0", + outlineColor: "invert", + outlineOffset: "0px", + outlineWidth: "3px", + paddingBottom: "0px", + paddingLeft: "0px", + paddingRight: "0px", + paddingTop: "0px", + right: "auto", + strokeDasharray: "none", + strokeDashoffset: "0px", + textIndent: "0px", + textShadow: "0px 0px 0px transparent", + top: "auto", + transform: "", + verticalAlign: "0px", + visibility: "visible", + width: "auto", + wordSpacing: "normal", + zIndex: "auto", + } + b.propertyInterpolation = g + })(a, b), + (function (a, b, c) { + function d(b) { + var c = a.calculateActiveDuration(b), + d = function (d) { + return a.calculateIterationProgress(c, d, b) + } + return (d._totalDuration = b.delay + c + b.endDelay), d + } + b.KeyframeEffect = function (c, e, f, g) { + var h, + i = d(a.normalizeTimingInput(f)), + j = b.convertEffectInput(e), + k = function () { + j(c, h) + } + return ( + (k._update = function (a) { + return null !== (h = i(a)) + }), + (k._clear = function () { + j(c, null) + }), + (k._hasSameTarget = function (a) { + return c === a + }), + (k._target = c), + (k._totalDuration = i._totalDuration), + (k._id = g), + k + ) + } + })(a, b), + (function (a, b) { + function c(a, b) { + return ( + !(!b.namespaceURI || -1 == b.namespaceURI.indexOf("/svg")) && + (g in a || + (a[g] = /Trident|MSIE|IEMobile|Edge|Android 4/i.test( + a.navigator.userAgent, + )), + a[g]) + ) + } + function d(a, b, c) { + ;(c.enumerable = !0), (c.configurable = !0), Object.defineProperty(a, b, c) + } + function e(a) { + ;(this._element = a), + (this._surrogateStyle = document.createElementNS( + "http://www.w3.org/1999/xhtml", + "div", + ).style), + (this._style = a.style), + (this._length = 0), + (this._isAnimatedProperty = {}), + (this._updateSvgTransformAttr = c(window, a)), + (this._savedTransformAttr = null) + for (var b = 0; b < this._style.length; b++) { + var d = this._style[b] + this._surrogateStyle[d] = this._style[d] + } + this._updateIndices() + } + function f(a) { + if (!a._webAnimationsPatchedStyle) { + var b = new e(a) + try { + d(a, "style", { + get: function () { + return b + }, + }) + } catch (b) { + ;(a.style._set = function (b, c) { + a.style[b] = c + }), + (a.style._clear = function (b) { + a.style[b] = "" + }) + } + a._webAnimationsPatchedStyle = a.style + } + } + var g = "_webAnimationsUpdateSvgTransformAttr", + h = {cssText: 1, length: 1, parentRule: 1}, + i = { + getPropertyCSSValue: 1, + getPropertyPriority: 1, + getPropertyValue: 1, + item: 1, + removeProperty: 1, + setProperty: 1, + }, + j = {removeProperty: 1, setProperty: 1} + e.prototype = { + get cssText() { + return this._surrogateStyle.cssText + }, + set cssText(a) { + for (var b = {}, c = 0; c < this._surrogateStyle.length; c++) + b[this._surrogateStyle[c]] = !0 + ;(this._surrogateStyle.cssText = a), this._updateIndices() + for (var c = 0; c < this._surrogateStyle.length; c++) + b[this._surrogateStyle[c]] = !0 + for (var d in b) + this._isAnimatedProperty[d] || + this._style.setProperty( + d, + this._surrogateStyle.getPropertyValue(d), + ) + }, + get length() { + return this._surrogateStyle.length + }, + get parentRule() { + return this._style.parentRule + }, + _updateIndices: function () { + for (; this._length < this._surrogateStyle.length; ) + Object.defineProperty(this, this._length, { + configurable: !0, + enumerable: !1, + get: (function (a) { + return function () { + return this._surrogateStyle[a] + } + })(this._length), + }), + this._length++ + for (; this._length > this._surrogateStyle.length; ) + this._length--, + Object.defineProperty(this, this._length, { + configurable: !0, + enumerable: !1, + value: void 0, + }) + }, + _set: function (b, c) { + ;(this._style[b] = c), + (this._isAnimatedProperty[b] = !0), + this._updateSvgTransformAttr && + "transform" == a.unprefixedPropertyName(b) && + (null == this._savedTransformAttr && + (this._savedTransformAttr = + this._element.getAttribute("transform")), + this._element.setAttribute( + "transform", + a.transformToSvgMatrix(c), + )) + }, + _clear: function (b) { + ;(this._style[b] = this._surrogateStyle[b]), + this._updateSvgTransformAttr && + "transform" == a.unprefixedPropertyName(b) && + (this._savedTransformAttr + ? this._element.setAttribute( + "transform", + this._savedTransformAttr, + ) + : this._element.removeAttribute("transform"), + (this._savedTransformAttr = null)), + delete this._isAnimatedProperty[b] + }, + } + for (var k in i) + e.prototype[k] = (function (a, b) { + return function () { + var c = this._surrogateStyle[a].apply( + this._surrogateStyle, + arguments, + ) + return ( + b && + (this._isAnimatedProperty[arguments[0]] || + this._style[a].apply(this._style, arguments), + this._updateIndices()), + c + ) + } + })(k, k in j) + for (var l in document.documentElement.style) + l in h || + l in i || + (function (a) { + d(e.prototype, a, { + get: function () { + return this._surrogateStyle[a] + }, + set: function (b) { + if (a === "_length") return + this._surrogateStyle[a] = b + this._updateIndices() + + this._isAnimatedProperty[a] || (this._style[a] = b) + }, + }) + })(l) + ;(a.apply = function (b, c, d) { + f(b), b.style._set(a.propertyName(c), d) + }), + (a.clear = function (b, c) { + b._webAnimationsPatchedStyle && b.style._clear(a.propertyName(c)) + }) + })(b), + (function (a) { + window.Element.prototype.animate = function (b, c) { + /** + * EDIT: Polyfill doesn't support values as arrays + * or offset as arrays, so converting these here + */ + const keyframes = [] + for (const key in b) { + if (key === "easing" || key === "offset") continue + + const valueKeyframes = b[key] + for (let i = 0; i < valueKeyframes.length; i++) { + keyframes[i] = {...keyframes[i], [key]: valueKeyframes[i]} + if (b.easing && b.easing[i]) { + keyframes.easing = b.easing[i] + } + if (b.offset && b.offset[i]) { + keyframes.offset = b.offset[i] + } + } + } + + var d = "" + return ( + c && c.id && (d = c.id), + a.timeline._play(a.KeyframeEffect(this, keyframes, c, d)) + ) + } + })(b), + (function (a, b) { + function c(a, b, d) { + if ("number" == typeof a && "number" == typeof b) return a * (1 - d) + b * d + if ("boolean" == typeof a && "boolean" == typeof b) return d < 0.5 ? a : b + if (a.length == b.length) { + for (var e = [], f = 0; f < a.length; f++) e.push(c(a[f], b[f], d)) + return e + } + throw "Mismatched interpolation arguments " + a + ":" + b + } + a.Interpolation = function (a, b, d) { + return function (e) { + return d(c(a, b, e)) + } + } + })(b), + (function (a, b) { + function c(a, b, c) { + return Math.max(Math.min(a, c), b) + } + function d(b, d, e) { + var f = a.dot(b, d) + f = c(f, -1, 1) + var g = [] + if (1 === f) g = b + else + for ( + var h = Math.acos(f), + i = (1 * Math.sin(e * h)) / Math.sqrt(1 - f * f), + j = 0; + j < 4; + j++ + ) + g.push(b[j] * (Math.cos(e * h) - f * i) + d[j] * i) + return g + } + var e = (function () { + function a(a, b) { + for ( + var c = [ + [0, 0, 0, 0], + [0, 0, 0, 0], + [0, 0, 0, 0], + [0, 0, 0, 0], + ], + d = 0; + d < 4; + d++ + ) + for (var e = 0; e < 4; e++) + for (var f = 0; f < 4; f++) c[d][e] += b[d][f] * a[f][e] + return c + } + function b(a) { + return ( + 0 == a[0][2] && + 0 == a[0][3] && + 0 == a[1][2] && + 0 == a[1][3] && + 0 == a[2][0] && + 0 == a[2][1] && + 1 == a[2][2] && + 0 == a[2][3] && + 0 == a[3][2] && + 1 == a[3][3] + ) + } + function c(c, d, e, f, g) { + for ( + var h = [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [0, 0, 0, 1], + ], + i = 0; + i < 4; + i++ + ) + h[i][3] = g[i] + for (var i = 0; i < 3; i++) + for (var j = 0; j < 3; j++) h[3][i] += c[j] * h[j][i] + var k = f[0], + l = f[1], + m = f[2], + n = f[3], + o = [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [0, 0, 0, 1], + ] + ;(o[0][0] = 1 - 2 * (l * l + m * m)), + (o[0][1] = 2 * (k * l - m * n)), + (o[0][2] = 2 * (k * m + l * n)), + (o[1][0] = 2 * (k * l + m * n)), + (o[1][1] = 1 - 2 * (k * k + m * m)), + (o[1][2] = 2 * (l * m - k * n)), + (o[2][0] = 2 * (k * m - l * n)), + (o[2][1] = 2 * (l * m + k * n)), + (o[2][2] = 1 - 2 * (k * k + l * l)), + (h = a(h, o)) + var p = [ + [1, 0, 0, 0], + [0, 1, 0, 0], + [0, 0, 1, 0], + [0, 0, 0, 1], + ] + e[2] && ((p[2][1] = e[2]), (h = a(h, p))), + e[1] && ((p[2][1] = 0), (p[2][0] = e[0]), (h = a(h, p))), + e[0] && ((p[2][0] = 0), (p[1][0] = e[0]), (h = a(h, p))) + for (var i = 0; i < 3; i++) for (var j = 0; j < 3; j++) h[i][j] *= d[i] + return b(h) + ? [h[0][0], h[0][1], h[1][0], h[1][1], h[3][0], h[3][1]] + : h[0].concat(h[1], h[2], h[3]) + } + return c + })() + ;(a.composeMatrix = e), (a.quat = d) + })(b), + (function (a, b, c) { + a.sequenceNumber = 0 + var d = function (a, b, c) { + ;(this.target = a), + (this.currentTime = b), + (this.timelineTime = c), + (this.type = "finish"), + (this.bubbles = !1), + (this.cancelable = !1), + (this.currentTarget = a), + (this.defaultPrevented = !1), + (this.eventPhase = Event.AT_TARGET), + (this.timeStamp = Date.now()) + } + ;(b.Animation = function (b) { + ;(this.id = ""), + b && b._id && (this.id = b._id), + (this._sequenceNumber = a.sequenceNumber++), + (this._currentTime = 0), + (this._startTime = null), + (this._paused = !1), + (this._playbackRate = 1), + (this._inTimeline = !0), + (this._finishedFlag = !0), + (this.onfinish = null), + (this._finishHandlers = []), + (this._effect = b), + (this._inEffect = this._effect._update(0)), + (this._idle = !0), + (this._currentTimePending = !1) + }), + (b.Animation.prototype = { + _ensureAlive: function () { + this.playbackRate < 0 && 0 === this.currentTime + ? (this._inEffect = this._effect._update(-1)) + : (this._inEffect = this._effect._update(this.currentTime)), + this._inTimeline || + (!this._inEffect && this._finishedFlag) || + ((this._inTimeline = !0), b.timeline._animations.push(this)) + }, + _tickCurrentTime: function (a, b) { + a != this._currentTime && + ((this._currentTime = a), + this._isFinished && + !b && + (this._currentTime = + this._playbackRate > 0 ? this._totalDuration : 0), + this._ensureAlive()) + }, + get currentTime() { + return this._idle || this._currentTimePending + ? null + : this._currentTime + }, + set currentTime(a) { + ;(a = +a), + isNaN(a) || + (b.restart(), + this._paused || + null == this._startTime || + (this._startTime = + this._timeline.currentTime - + a / this._playbackRate), + (this._currentTimePending = !1), + this._currentTime != a && + (this._idle && ((this._idle = !1), (this._paused = !0)), + this._tickCurrentTime(a, !0), + b.applyDirtiedAnimation(this))) + }, + get startTime() { + return this._startTime + }, + set startTime(a) { + ;(a = +a), + isNaN(a) || + this._paused || + this._idle || + ((this._startTime = a), + this._tickCurrentTime( + (this._timeline.currentTime - this._startTime) * + this.playbackRate, + ), + b.applyDirtiedAnimation(this)) + }, + get playbackRate() { + return this._playbackRate + }, + set playbackRate(a) { + if (a != this._playbackRate) { + var c = this.currentTime + ;(this._playbackRate = a), + (this._startTime = null), + "paused" != this.playState && + "idle" != this.playState && + ((this._finishedFlag = !1), + (this._idle = !1), + this._ensureAlive(), + b.applyDirtiedAnimation(this)), + null != c && (this.currentTime = c) + } + }, + get _isFinished() { + return ( + !this._idle && + ((this._playbackRate > 0 && + this._currentTime >= this._totalDuration) || + (this._playbackRate < 0 && this._currentTime <= 0)) + ) + }, + get _totalDuration() { + return this._effect._totalDuration + }, + get playState() { + return this._idle + ? "idle" + : (null == this._startTime && + !this._paused && + 0 != this.playbackRate) || + this._currentTimePending + ? "pending" + : this._paused + ? "paused" + : this._isFinished + ? "finished" + : "running" + }, + _rewind: function () { + if (this._playbackRate >= 0) this._currentTime = 0 + else { + if (!(this._totalDuration < 1 / 0)) + throw new DOMException( + "Unable to rewind negative playback rate animation with infinite duration", + "InvalidStateError", + ) + this._currentTime = this._totalDuration + } + }, + play: function () { + ;(this._paused = !1), + (this._isFinished || this._idle) && + (this._rewind(), (this._startTime = null)), + (this._finishedFlag = !1), + (this._idle = !1), + this._ensureAlive(), + b.applyDirtiedAnimation(this) + }, + pause: function () { + this._isFinished || this._paused || this._idle + ? this._idle && (this._rewind(), (this._idle = !1)) + : (this._currentTimePending = !0), + (this._startTime = null), + (this._paused = !0) + }, + /** + * EDIT: Adding commitStyles + */ + commitStyles: function () {}, + finish: function () { + this._idle || + ((this.currentTime = + this._playbackRate > 0 ? this._totalDuration : 0), + (this._startTime = this._totalDuration - this.currentTime), + (this._currentTimePending = !1), + b.applyDirtiedAnimation(this)) + }, + cancel: function () { + this._inEffect && + ((this._inEffect = !1), + (this._idle = !0), + (this._paused = !1), + (this._finishedFlag = !0), + (this._currentTime = 0), + (this._startTime = null), + this._effect._update(null), + b.applyDirtiedAnimation(this)) + }, + reverse: function () { + ;(this.playbackRate *= -1), this.play() + }, + addEventListener: function (a, b) { + "function" == typeof b && + "finish" == a && + this._finishHandlers.push(b) + }, + removeEventListener: function (a, b) { + if ("finish" == a) { + var c = this._finishHandlers.indexOf(b) + c >= 0 && this._finishHandlers.splice(c, 1) + } + }, + _fireEvents: function (a) { + if (this._isFinished) { + if (!this._finishedFlag) { + var b = new d(this, this._currentTime, a), + c = this._finishHandlers.concat( + this.onfinish ? [this.onfinish] : [], + ) + setTimeout(function () { + c.forEach(function (a) { + a.call(b.target, b) + }) + }, 0), + (this._finishedFlag = !0) + } + } else this._finishedFlag = !1 + }, + _tick: function (a, b) { + this._idle || + this._paused || + (null == this._startTime + ? b && + (this.startTime = + a - this._currentTime / this.playbackRate) + : this._isFinished || + this._tickCurrentTime( + (a - this._startTime) * this.playbackRate, + )), + b && ((this._currentTimePending = !1), this._fireEvents(a)) + }, + get _needsTick() { + return ( + this.playState in {pending: 1, running: 1} || + !this._finishedFlag + ) + }, + _targetAnimations: function () { + var a = this._effect._target + return a._animations || (a._animations = []), a._animations + }, + _markTarget: function () { + var a = this._targetAnimations() + ;-1 === a.indexOf(this) && a.push(this) + }, + _unmarkTarget: function () { + var a = this._targetAnimations(), + b = a.indexOf(this) + ;-1 !== b && a.splice(b, 1) + }, + }) + })(a, b), + (function (a, b, c) { + function d(a) { + var b = j + ;(j = []), + a < q.currentTime && (a = q.currentTime), + q._animations.sort(e), + (q._animations = h(a, !0, q._animations)[0]), + b.forEach(function (b) { + b[1](a) + }), + g(), + (l = void 0) + } + function e(a, b) { + return a._sequenceNumber - b._sequenceNumber + } + function f() { + ;(this._animations = []), + (this.currentTime = + window.performance && performance.now ? performance.now() : 0) + } + function g() { + o.forEach(function (a) { + a() + }), + (o.length = 0) + } + function h(a, c, d) { + ;(p = !0), (n = !1), (b.timeline.currentTime = a), (m = !1) + var e = [], + f = [], + g = [], + h = [] + return ( + d.forEach(function (b) { + b._tick(a, c), + b._inEffect + ? (f.push(b._effect), b._markTarget()) + : (e.push(b._effect), b._unmarkTarget()), + b._needsTick && (m = !0) + var d = b._inEffect || b._needsTick + ;(b._inTimeline = d), d ? g.push(b) : h.push(b) + }), + o.push.apply(o, e), + o.push.apply(o, f), + m && requestAnimationFrame(function () {}), + (p = !1), + [g, h] + ) + } + var i = window.requestAnimationFrame, + j = [], + k = 0 + ;(window.requestAnimationFrame = function (a) { + var b = k++ + return 0 == j.length && i(d), j.push([b, a]), b + }), + (window.cancelAnimationFrame = function (a) { + j.forEach(function (b) { + b[0] == a && (b[1] = function () {}) + }) + }), + (f.prototype = { + _play: function (c) { + c._timing = a.normalizeTimingInput(c.timing) + var d = new b.Animation(c) + return ( + (d._idle = !1), + (d._timeline = this), + this._animations.push(d), + b.restart(), + b.applyDirtiedAnimation(d), + d + ) + }, + }) + var l = void 0, + m = !1, + n = !1 + ;(b.restart = function () { + return m || ((m = !0), requestAnimationFrame(function () {}), (n = !0)), n + }), + (b.applyDirtiedAnimation = function (a) { + if (!p) { + a._markTarget() + var c = a._targetAnimations() + c.sort(e), + h(b.timeline.currentTime, !1, c.slice())[1].forEach( + function (a) { + var b = q._animations.indexOf(a) + ;-1 !== b && q._animations.splice(b, 1) + }, + ), + g() + } + }) + var o = [], + p = !1, + q = new f() + b.timeline = q + })(a, b), + (function (a, b) { + function c(a, b) { + for (var c = 0, d = 0; d < a.length; d++) c += a[d] * b[d] + return c + } + function d(a, b) { + return [ + a[0] * b[0] + a[4] * b[1] + a[8] * b[2] + a[12] * b[3], + a[1] * b[0] + a[5] * b[1] + a[9] * b[2] + a[13] * b[3], + a[2] * b[0] + a[6] * b[1] + a[10] * b[2] + a[14] * b[3], + a[3] * b[0] + a[7] * b[1] + a[11] * b[2] + a[15] * b[3], + a[0] * b[4] + a[4] * b[5] + a[8] * b[6] + a[12] * b[7], + a[1] * b[4] + a[5] * b[5] + a[9] * b[6] + a[13] * b[7], + a[2] * b[4] + a[6] * b[5] + a[10] * b[6] + a[14] * b[7], + a[3] * b[4] + a[7] * b[5] + a[11] * b[6] + a[15] * b[7], + a[0] * b[8] + a[4] * b[9] + a[8] * b[10] + a[12] * b[11], + a[1] * b[8] + a[5] * b[9] + a[9] * b[10] + a[13] * b[11], + a[2] * b[8] + a[6] * b[9] + a[10] * b[10] + a[14] * b[11], + a[3] * b[8] + a[7] * b[9] + a[11] * b[10] + a[15] * b[11], + a[0] * b[12] + a[4] * b[13] + a[8] * b[14] + a[12] * b[15], + a[1] * b[12] + a[5] * b[13] + a[9] * b[14] + a[13] * b[15], + a[2] * b[12] + a[6] * b[13] + a[10] * b[14] + a[14] * b[15], + a[3] * b[12] + a[7] * b[13] + a[11] * b[14] + a[15] * b[15], + ] + } + function e(a) { + var b = a.rad || 0 + return ( + ((a.deg || 0) / 360 + (a.grad || 0) / 400 + (a.turn || 0)) * + (2 * Math.PI) + + b + ) + } + function f(a) { + switch (a.t) { + case "rotatex": + var b = e(a.d[0]) + return [ + 1, + 0, + 0, + 0, + 0, + Math.cos(b), + Math.sin(b), + 0, + 0, + -Math.sin(b), + Math.cos(b), + 0, + 0, + 0, + 0, + 1, + ] + case "rotatey": + var b = e(a.d[0]) + return [ + Math.cos(b), + 0, + -Math.sin(b), + 0, + 0, + 1, + 0, + 0, + Math.sin(b), + 0, + Math.cos(b), + 0, + 0, + 0, + 0, + 1, + ] + case "rotate": + case "rotatez": + var b = e(a.d[0]) + return [ + Math.cos(b), + Math.sin(b), + 0, + 0, + -Math.sin(b), + Math.cos(b), + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1, + ] + case "rotate3d": + var c = a.d[0], + d = a.d[1], + f = a.d[2], + b = e(a.d[3]), + g = c * c + d * d + f * f + if (0 === g) (c = 1), (d = 0), (f = 0) + else if (1 !== g) { + var h = Math.sqrt(g) + ;(c /= h), (d /= h), (f /= h) + } + var i = Math.sin(b / 2), + j = i * Math.cos(b / 2), + k = i * i + return [ + 1 - 2 * (d * d + f * f) * k, + 2 * (c * d * k + f * j), + 2 * (c * f * k - d * j), + 0, + 2 * (c * d * k - f * j), + 1 - 2 * (c * c + f * f) * k, + 2 * (d * f * k + c * j), + 0, + 2 * (c * f * k + d * j), + 2 * (d * f * k - c * j), + 1 - 2 * (c * c + d * d) * k, + 0, + 0, + 0, + 0, + 1, + ] + case "scale": + return [a.d[0], 0, 0, 0, 0, a.d[1], 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] + case "scalex": + return [a.d[0], 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] + case "scaley": + return [1, 0, 0, 0, 0, a.d[0], 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] + case "scalez": + return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, a.d[0], 0, 0, 0, 0, 1] + case "scale3d": + return [ + a.d[0], + 0, + 0, + 0, + 0, + a.d[1], + 0, + 0, + 0, + 0, + a.d[2], + 0, + 0, + 0, + 0, + 1, + ] + case "skew": + var l = e(a.d[0]), + m = e(a.d[1]) + return [ + 1, + Math.tan(m), + 0, + 0, + Math.tan(l), + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1, + ] + case "skewx": + var b = e(a.d[0]) + return [1, 0, 0, 0, Math.tan(b), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] + case "skewy": + var b = e(a.d[0]) + return [1, Math.tan(b), 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] + case "translate": + var c = a.d[0].px || 0, + d = a.d[1].px || 0 + return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, c, d, 0, 1] + case "translatex": + var c = a.d[0].px || 0 + return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, c, 0, 0, 1] + case "translatey": + var d = a.d[0].px || 0 + return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, d, 0, 1] + case "translatez": + var f = a.d[0].px || 0 + return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, f, 1] + case "translate3d": + var c = a.d[0].px || 0, + d = a.d[1].px || 0, + f = a.d[2].px || 0 + return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, c, d, f, 1] + case "perspective": + return [ + 1, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 0, + 1, + a.d[0].px ? -1 / a.d[0].px : 0, + 0, + 0, + 0, + 1, + ] + case "matrix": + return [ + a.d[0], + a.d[1], + 0, + 0, + a.d[2], + a.d[3], + 0, + 0, + 0, + 0, + 1, + 0, + a.d[4], + a.d[5], + 0, + 1, + ] + case "matrix3d": + return a.d + } + } + function g(a) { + return 0 === a.length + ? [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1] + : a.map(f).reduce(d) + } + function h(a) { + return [i(g(a))] + } + var i = (function () { + function a(a) { + return ( + a[0][0] * a[1][1] * a[2][2] + + a[1][0] * a[2][1] * a[0][2] + + a[2][0] * a[0][1] * a[1][2] - + a[0][2] * a[1][1] * a[2][0] - + a[1][2] * a[2][1] * a[0][0] - + a[2][2] * a[0][1] * a[1][0] + ) + } + function b(b) { + for ( + var c = 1 / a(b), + d = b[0][0], + e = b[0][1], + f = b[0][2], + g = b[1][0], + h = b[1][1], + i = b[1][2], + j = b[2][0], + k = b[2][1], + l = b[2][2], + m = [ + [ + (h * l - i * k) * c, + (f * k - e * l) * c, + (e * i - f * h) * c, + 0, + ], + [ + (i * j - g * l) * c, + (d * l - f * j) * c, + (f * g - d * i) * c, + 0, + ], + [ + (g * k - h * j) * c, + (j * e - d * k) * c, + (d * h - e * g) * c, + 0, + ], + ], + n = [], + o = 0; + o < 3; + o++ + ) { + for (var p = 0, q = 0; q < 3; q++) p += b[3][q] * m[q][o] + n.push(p) + } + return n.push(1), m.push(n), m + } + function d(a) { + return [ + [a[0][0], a[1][0], a[2][0], a[3][0]], + [a[0][1], a[1][1], a[2][1], a[3][1]], + [a[0][2], a[1][2], a[2][2], a[3][2]], + [a[0][3], a[1][3], a[2][3], a[3][3]], + ] + } + function e(a, b) { + for (var c = [], d = 0; d < 4; d++) { + for (var e = 0, f = 0; f < 4; f++) e += a[f] * b[f][d] + c.push(e) + } + return c + } + function f(a) { + var b = g(a) + return [a[0] / b, a[1] / b, a[2] / b] + } + function g(a) { + return Math.sqrt(a[0] * a[0] + a[1] * a[1] + a[2] * a[2]) + } + function h(a, b, c, d) { + return [c * a[0] + d * b[0], c * a[1] + d * b[1], c * a[2] + d * b[2]] + } + function i(a, b) { + return [ + a[1] * b[2] - a[2] * b[1], + a[2] * b[0] - a[0] * b[2], + a[0] * b[1] - a[1] * b[0], + ] + } + function j(j) { + var k = [j.slice(0, 4), j.slice(4, 8), j.slice(8, 12), j.slice(12, 16)] + if (1 !== k[3][3]) return null + for (var l = [], m = 0; m < 4; m++) l.push(k[m].slice()) + for (var m = 0; m < 3; m++) l[m][3] = 0 + if (0 === a(l)) return null + var n, + o = [] + k[0][3] || k[1][3] || k[2][3] + ? (o.push(k[0][3]), + o.push(k[1][3]), + o.push(k[2][3]), + o.push(k[3][3]), + (n = e(o, d(b(l))))) + : (n = [0, 0, 0, 1]) + var p = k[3].slice(0, 3), + q = [] + q.push(k[0].slice(0, 3)) + var r = [] + r.push(g(q[0])), (q[0] = f(q[0])) + var s = [] + q.push(k[1].slice(0, 3)), + s.push(c(q[0], q[1])), + (q[1] = h(q[1], q[0], 1, -s[0])), + r.push(g(q[1])), + (q[1] = f(q[1])), + (s[0] /= r[1]), + q.push(k[2].slice(0, 3)), + s.push(c(q[0], q[2])), + (q[2] = h(q[2], q[0], 1, -s[1])), + s.push(c(q[1], q[2])), + (q[2] = h(q[2], q[1], 1, -s[2])), + r.push(g(q[2])), + (q[2] = f(q[2])), + (s[1] /= r[2]), + (s[2] /= r[2]) + var t = i(q[1], q[2]) + if (c(q[0], t) < 0) + for (var m = 0; m < 3; m++) + (r[m] *= -1), (q[m][0] *= -1), (q[m][1] *= -1), (q[m][2] *= -1) + var u, + v, + w = q[0][0] + q[1][1] + q[2][2] + 1 + return ( + w > 1e-4 + ? ((u = 0.5 / Math.sqrt(w)), + (v = [ + (q[2][1] - q[1][2]) * u, + (q[0][2] - q[2][0]) * u, + (q[1][0] - q[0][1]) * u, + 0.25 / u, + ])) + : q[0][0] > q[1][1] && q[0][0] > q[2][2] + ? ((u = 2 * Math.sqrt(1 + q[0][0] - q[1][1] - q[2][2])), + (v = [ + 0.25 * u, + (q[0][1] + q[1][0]) / u, + (q[0][2] + q[2][0]) / u, + (q[2][1] - q[1][2]) / u, + ])) + : q[1][1] > q[2][2] + ? ((u = 2 * Math.sqrt(1 + q[1][1] - q[0][0] - q[2][2])), + (v = [ + (q[0][1] + q[1][0]) / u, + 0.25 * u, + (q[1][2] + q[2][1]) / u, + (q[0][2] - q[2][0]) / u, + ])) + : ((u = 2 * Math.sqrt(1 + q[2][2] - q[0][0] - q[1][1])), + (v = [ + (q[0][2] + q[2][0]) / u, + (q[1][2] + q[2][1]) / u, + 0.25 * u, + (q[1][0] - q[0][1]) / u, + ])), + [p, r, s, v, n] + ) + } + return j + })() + ;(a.dot = c), (a.makeMatrixDecomposition = h), (a.transformListToMatrix = g) + })(b), + (function (a) { + function b(a, b) { + var c = a.exec(b) + if (c) + return ( + (c = a.ignoreCase ? c[0].toLowerCase() : c[0]), + [c, b.substr(c.length)] + ) + } + function c(a, b) { + b = b.replace(/^\s*/, "") + var c = a(b) + if (c) return [c[0], c[1].replace(/^\s*/, "")] + } + function d(a, d, e) { + a = c.bind(null, a) + for (var f = []; ; ) { + var g = a(e) + if (!g) return [f, e] + if ((f.push(g[0]), (e = g[1]), !(g = b(d, e)) || "" == g[1])) + return [f, e] + e = g[1] + } + } + function e(a, b) { + for (var c = 0, d = 0; d < b.length && (!/\s|,/.test(b[d]) || 0 != c); d++) + if ("(" == b[d]) c++ + else if (")" == b[d] && (c--, 0 == c && d++, c <= 0)) break + var e = a(b.substr(0, d)) + return void 0 == e ? void 0 : [e, b.substr(d)] + } + function f(a, b) { + for (var c = a, d = b; c && d; ) c > d ? (c %= d) : (d %= c) + return (c = (a * b) / (c + d)) + } + function g(a) { + return function (b) { + var c = a(b) + return c && (c[0] = void 0), c + } + } + function h(a, b) { + return function (c) { + return a(c) || [b, c] + } + } + function i(b, c) { + for (var d = [], e = 0; e < b.length; e++) { + var f = a.consumeTrimmed(b[e], c) + if (!f || "" == f[0]) return + void 0 !== f[0] && d.push(f[0]), (c = f[1]) + } + if ("" == c) return d + } + function j(a, b, c, d, e) { + for ( + var g = [], h = [], i = [], j = f(d.length, e.length), k = 0; + k < j; + k++ + ) { + var l = b(d[k % d.length], e[k % e.length]) + if (!l) return + g.push(l[0]), h.push(l[1]), i.push(l[2]) + } + return [ + g, + h, + function (b) { + var d = b + .map(function (a, b) { + return i[b](a) + }) + .join(c) + return a ? a(d) : d + }, + ] + } + function k(a, b, c) { + for (var d = [], e = [], f = [], g = 0, h = 0; h < c.length; h++) + if ("function" == typeof c[h]) { + var i = c[h](a[g], b[g++]) + d.push(i[0]), e.push(i[1]), f.push(i[2]) + } else + !(function (a) { + d.push(!1), + e.push(!1), + f.push(function () { + return c[a] + }) + })(h) + return [ + d, + e, + function (a) { + for (var b = "", c = 0; c < a.length; c++) b += f[c](a[c]) + return b + }, + ] + } + ;(a.consumeToken = b), + (a.consumeTrimmed = c), + (a.consumeRepeated = d), + (a.consumeParenthesised = e), + (a.ignore = g), + (a.optional = h), + (a.consumeList = i), + (a.mergeNestedRepeated = j.bind(null, null)), + (a.mergeWrappedNestedRepeated = j), + (a.mergeList = k) + })(b), + (function (a) { + function b(b) { + function c(b) { + var c = a.consumeToken(/^inset/i, b) + return c + ? ((d.inset = !0), c) + : (c = a.consumeLengthOrPercent(b)) + ? (d.lengths.push(c[0]), c) + : ((c = a.consumeColor(b)), c ? ((d.color = c[0]), c) : void 0) + } + var d = {inset: !1, lengths: [], color: null}, + e = a.consumeRepeated(c, /^/, b) + if (e && e[0].length) return [d, e[1]] + } + function c(c) { + var d = a.consumeRepeated(b, /^,/, c) + if (d && "" == d[1]) return d[0] + } + function d(b, c) { + for (; b.lengths.length < Math.max(b.lengths.length, c.lengths.length); ) + b.lengths.push({px: 0}) + for (; c.lengths.length < Math.max(b.lengths.length, c.lengths.length); ) + c.lengths.push({px: 0}) + if (b.inset == c.inset && !!b.color == !!c.color) { + for ( + var d, e = [], f = [[], 0], g = [[], 0], h = 0; + h < b.lengths.length; + h++ + ) { + var i = a.mergeDimensions(b.lengths[h], c.lengths[h], 2 == h) + f[0].push(i[0]), g[0].push(i[1]), e.push(i[2]) + } + if (b.color && c.color) { + var j = a.mergeColors(b.color, c.color) + ;(f[1] = j[0]), (g[1] = j[1]), (d = j[2]) + } + return [ + f, + g, + function (a) { + for (var c = b.inset ? "inset " : " ", f = 0; f < e.length; f++) + c += e[f](a[0][f]) + " " + return d && (c += d(a[1])), c + }, + ] + } + } + function e(b, c, d, e) { + function f(a) { + return { + inset: a, + color: [0, 0, 0, 0], + lengths: [{px: 0}, {px: 0}, {px: 0}, {px: 0}], + } + } + for (var g = [], h = [], i = 0; i < d.length || i < e.length; i++) { + var j = d[i] || f(e[i].inset), + k = e[i] || f(d[i].inset) + g.push(j), h.push(k) + } + return a.mergeNestedRepeated(b, c, g, h) + } + var f = e.bind(null, d, ", ") + a.addPropertiesHandler(c, f, ["box-shadow", "text-shadow"]) + })(b), + (function (a, b) { + function c(a) { + return a.toFixed(3).replace(/0+$/, "").replace(/\.$/, "") + } + function d(a, b, c) { + return Math.min(b, Math.max(a, c)) + } + function e(a) { + if (/^\s*[-+]?(\d*\.)?\d+\s*$/.test(a)) return Number(a) + } + function f(a, b) { + return [a, b, c] + } + function g(a, b) { + if (0 != a) return i(0, 1 / 0)(a, b) + } + function h(a, b) { + return [ + a, + b, + function (a) { + return Math.round(d(1, 1 / 0, a)) + }, + ] + } + function i(a, b) { + return function (e, f) { + return [ + e, + f, + function (e) { + return c(d(a, b, e)) + }, + ] + } + } + function j(a) { + var b = a.trim().split(/\s*[\s,]\s*/) + if (0 !== b.length) { + for (var c = [], d = 0; d < b.length; d++) { + var f = e(b[d]) + if (void 0 === f) return + c.push(f) + } + return c + } + } + function k(a, b) { + if (a.length == b.length) + return [ + a, + b, + function (a) { + return a.map(c).join(" ") + }, + ] + } + function l(a, b) { + return [a, b, Math.round] + } + ;(a.clamp = d), + a.addPropertiesHandler(j, k, ["stroke-dasharray"]), + a.addPropertiesHandler(e, i(0, 1 / 0), [ + "border-image-width", + "line-height", + ]), + a.addPropertiesHandler(e, i(0, 1), ["opacity", "shape-image-threshold"]), + a.addPropertiesHandler(e, g, ["flex-grow", "flex-shrink"]), + a.addPropertiesHandler(e, h, ["orphans", "widows"]), + a.addPropertiesHandler(e, l, ["z-index"]), + (a.parseNumber = e), + (a.parseNumberList = j), + (a.mergeNumbers = f), + (a.numberToString = c) + })(b), + (function (a, b) { + function c(a, b) { + if ("visible" == a || "visible" == b) + return [ + 0, + 1, + function (c) { + return c <= 0 ? a : c >= 1 ? b : "visible" + }, + ] + } + a.addPropertiesHandler(String, c, ["visibility"]) + })(b), + (function (a, b) { + function c(a) { + return [255, 255, 255, 1] + } + function d(b, c) { + return [ + b, + c, + function (b) { + function c(a) { + return Math.max(0, Math.min(255, a)) + } + if (b[3]) + for (var d = 0; d < 3; d++) b[d] = Math.round(c(b[d] / b[3])) + return ( + (b[3] = a.numberToString(a.clamp(0, 1, b[3]))), + "rgba(" + b.join(",") + ")" + ) + }, + ] + } + var e = document.createElementNS("http://www.w3.org/1999/xhtml", "canvas") + e.width = e.height = 1 + a.addPropertiesHandler(c, d, [ + "background-color", + "border-bottom-color", + "border-left-color", + "border-right-color", + "border-top-color", + "color", + "fill", + "flood-color", + "lighting-color", + "outline-color", + "stop-color", + "stroke", + "text-decoration-color", + ]), + (a.consumeColor = a.consumeParenthesised.bind(null, c)), + (a.mergeColors = d) + })(b), + (function (a, b) { + function c(a) { + function b() { + var b = h.exec(a) + g = b ? b[0] : void 0 + } + function c() { + var a = Number(g) + return b(), a + } + function d() { + if ("(" !== g) return c() + b() + var a = f() + return ")" !== g ? NaN : (b(), a) + } + function e() { + for (var a = d(); "*" === g || "/" === g; ) { + var c = g + b() + var e = d() + "*" === c ? (a *= e) : (a /= e) + } + return a + } + function f() { + for (var a = e(); "+" === g || "-" === g; ) { + var c = g + b() + var d = e() + "+" === c ? (a += d) : (a -= d) + } + return a + } + var g, + h = /([\+\-\w\.]+|[\(\)\*\/])/g + return b(), f() + } + function d(a, b) { + if ("0" == (b = b.trim().toLowerCase()) && "px".search(a) >= 0) + return {px: 0} + if (/^[^(]*$|^calc/.test(b)) { + b = b.replace(/calc\(/g, "(") + var d = {} + b = b.replace(a, function (a) { + return (d[a] = null), "U" + a + }) + for ( + var e = "U(" + a.source + ")", + f = b + .replace(/[-+]?(\d*\.)?\d+([Ee][-+]?\d+)?/g, "N") + .replace(new RegExp("N" + e, "g"), "D") + .replace(/\s[+-]\s/g, "O") + .replace(/\s/g, ""), + g = [/N\*(D)/g, /(N|D)[*\/]N/g, /(N|D)O\1/g, /\((N|D)\)/g], + h = 0; + h < g.length; + + ) + g[h].test(f) ? ((f = f.replace(g[h], "$1")), (h = 0)) : h++ + if ("D" == f) { + for (var i in d) { + var j = c( + b + .replace(new RegExp("U" + i, "g"), "") + .replace(new RegExp(e, "g"), "*0"), + ) + if (!isFinite(j)) return + d[i] = j + } + return d + } + } + } + function e(a, b) { + return f(a, b, !0) + } + function f(b, c, d) { + var e, + f = [] + for (e in b) f.push(e) + for (e in c) f.indexOf(e) < 0 && f.push(e) + return ( + (b = f.map(function (a) { + return b[a] || 0 + })), + (c = f.map(function (a) { + return c[a] || 0 + })), + [ + b, + c, + function (b) { + var c = b + .map(function (c, e) { + return ( + 1 == b.length && d && (c = Math.max(c, 0)), + a.numberToString(c) + f[e] + ) + }) + .join(" + ") + return b.length > 1 ? "calc(" + c + ")" : c + }, + ] + ) + } + var g = "px|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc", + h = d.bind(null, new RegExp(g, "g")), + i = d.bind(null, new RegExp(g + "|%", "g")), + j = d.bind(null, /deg|rad|grad|turn/g) + ;(a.parseLength = h), + (a.parseLengthOrPercent = i), + (a.consumeLengthOrPercent = a.consumeParenthesised.bind(null, i)), + (a.parseAngle = j), + (a.mergeDimensions = f) + var k = a.consumeParenthesised.bind(null, h), + l = a.consumeRepeated.bind(void 0, k, /^/), + m = a.consumeRepeated.bind(void 0, l, /^,/) + a.consumeSizePairList = m + var n = function (a) { + var b = m(a) + if (b && "" == b[1]) return b[0] + }, + o = a.mergeNestedRepeated.bind(void 0, e, " "), + p = a.mergeNestedRepeated.bind(void 0, o, ",") + ;(a.mergeNonNegativeSizePair = o), + a.addPropertiesHandler(n, p, ["background-size"]), + a.addPropertiesHandler(i, e, [ + "border-bottom-width", + "border-image-width", + "border-left-width", + "border-right-width", + "border-top-width", + "flex-basis", + "font-size", + "height", + "line-height", + "max-height", + "max-width", + "outline-width", + "width", + ]), + a.addPropertiesHandler(i, f, [ + "border-bottom-left-radius", + "border-bottom-right-radius", + "border-top-left-radius", + "border-top-right-radius", + "bottom", + "left", + "letter-spacing", + "margin-bottom", + "margin-left", + "margin-right", + "margin-top", + "min-height", + "min-width", + "outline-offset", + "padding-bottom", + "padding-left", + "padding-right", + "padding-top", + "perspective", + "right", + "shape-margin", + "stroke-dashoffset", + "text-indent", + "top", + "vertical-align", + "word-spacing", + ]) + })(b), + (function (a, b) { + function c(b) { + return a.consumeLengthOrPercent(b) || a.consumeToken(/^auto/, b) + } + function d(b) { + var d = a.consumeList( + [ + a.ignore(a.consumeToken.bind(null, /^rect/)), + a.ignore(a.consumeToken.bind(null, /^\(/)), + a.consumeRepeated.bind(null, c, /^,/), + a.ignore(a.consumeToken.bind(null, /^\)/)), + ], + b, + ) + if (d && 4 == d[0].length) return d[0] + } + function e(b, c) { + return "auto" == b || "auto" == c + ? [ + !0, + !1, + function (d) { + var e = d ? b : c + if ("auto" == e) return "auto" + var f = a.mergeDimensions(e, e) + return f[2](f[0]) + }, + ] + : a.mergeDimensions(b, c) + } + function f(a) { + return "rect(" + a + ")" + } + var g = a.mergeWrappedNestedRepeated.bind(null, f, e, ", ") + ;(a.parseBox = d), (a.mergeBoxes = g), a.addPropertiesHandler(d, g, ["clip"]) + })(b), + (function (a, b) { + function c(a) { + return function (b) { + var c = 0 + return a.map(function (a) { + return a === k ? b[c++] : a + }) + } + } + function d(a) { + return a + } + function e(b) { + if ("none" == (b = b.toLowerCase().trim())) return [] + for (var c, d = /\s*(\w+)\(([^)]*)\)/g, e = [], f = 0; (c = d.exec(b)); ) { + if (c.index != f) return + f = c.index + c[0].length + var g = c[1], + h = n[g] + if (!h) return + var i = c[2].split(","), + j = h[0] + if (j.length < i.length) return + for (var k = [], o = 0; o < j.length; o++) { + var p, + q = i[o], + r = j[o] + if ( + void 0 === + (p = q + ? { + A: function (b) { + return "0" == b.trim() ? m : a.parseAngle(b) + }, + N: a.parseNumber, + T: a.parseLengthOrPercent, + L: a.parseLength, + }[r.toUpperCase()](q) + : {a: m, n: k[0], t: l}[r]) + ) + return + k.push(p) + } + if ((e.push({t: g, d: k}), d.lastIndex == b.length)) return e + } + } + function f(a) { + return a.toFixed(6).replace(".000000", "") + } + function g(b, c) { + if (b.decompositionPair !== c) { + b.decompositionPair = c + var d = a.makeMatrixDecomposition(b) + } + if (c.decompositionPair !== b) { + c.decompositionPair = b + var e = a.makeMatrixDecomposition(c) + } + return null == d[0] || null == e[0] + ? [ + [!1], + [!0], + function (a) { + return a ? c[0].d : b[0].d + }, + ] + : (d[0].push(0), + e[0].push(1), + [ + d, + e, + function (b) { + var c = a.quat(d[0][3], e[0][3], b[5]) + return a + .composeMatrix(b[0], b[1], b[2], c, b[4]) + .map(f) + .join(",") + }, + ]) + } + function h(a) { + return a.replace(/[xy]/, "") + } + function i(a) { + return a.replace(/(x|y|z|3d)?$/, "3d") + } + function j(b, c) { + var d = a.makeMatrixDecomposition && !0, + e = !1 + if (!b.length || !c.length) { + b.length || ((e = !0), (b = c), (c = [])) + for (var f = 0; f < b.length; f++) { + var j = b[f].t, + k = b[f].d, + l = "scale" == j.substr(0, 5) ? 1 : 0 + c.push({ + t: j, + d: k.map(function (a) { + if ("number" == typeof a) return l + var b = {} + for (var c in a) b[c] = l + return b + }), + }) + } + } + var m = function (a, b) { + return ( + ("perspective" == a && "perspective" == b) || + (("matrix" == a || "matrix3d" == a) && + ("matrix" == b || "matrix3d" == b)) + ) + }, + o = [], + p = [], + q = [] + if (b.length != c.length) { + if (!d) return + var r = g(b, c) + ;(o = [r[0]]), (p = [r[1]]), (q = [["matrix", [r[2]]]]) + } else + for (var f = 0; f < b.length; f++) { + var j, + s = b[f].t, + t = c[f].t, + u = b[f].d, + v = c[f].d, + w = n[s], + x = n[t] + if (m(s, t)) { + if (!d) return + var r = g([b[f]], [c[f]]) + o.push(r[0]), p.push(r[1]), q.push(["matrix", [r[2]]]) + } else { + if (s == t) j = s + else if (w[2] && x[2] && h(s) == h(t)) + (j = h(s)), (u = w[2](u)), (v = x[2](v)) + else { + if (!w[1] || !x[1] || i(s) != i(t)) { + if (!d) return + var r = g(b, c) + ;(o = [r[0]]), (p = [r[1]]), (q = [["matrix", [r[2]]]]) + break + } + ;(j = i(s)), (u = w[1](u)), (v = x[1](v)) + } + for (var y = [], z = [], A = [], B = 0; B < u.length; B++) { + var C = + "number" == typeof u[B] + ? a.mergeNumbers + : a.mergeDimensions, + r = C(u[B], v[B]) + ;(y[B] = r[0]), (z[B] = r[1]), A.push(r[2]) + } + o.push(y), p.push(z), q.push([j, A]) + } + } + if (e) { + var D = o + ;(o = p), (p = D) + } + return [ + o, + p, + function (a) { + return a + .map(function (a, b) { + var c = a + .map(function (a, c) { + return q[b][1][c](a) + }) + .join(",") + return ( + "matrix" == q[b][0] && + 16 == c.split(",").length && + (q[b][0] = "matrix3d"), + q[b][0] + "(" + c + ")" + ) + }) + .join(" ") + }, + ] + } + var k = null, + l = {px: 0}, + m = {deg: 0}, + n = { + matrix: ["NNNNNN", [k, k, 0, 0, k, k, 0, 0, 0, 0, 1, 0, k, k, 0, 1], d], + matrix3d: ["NNNNNNNNNNNNNNNN", d], + rotate: ["A"], + rotatex: ["A"], + rotatey: ["A"], + rotatez: ["A"], + rotate3d: ["NNNA"], + perspective: ["L"], + scale: ["Nn", c([k, k, 1]), d], + scalex: ["N", c([k, 1, 1]), c([k, 1])], + scaley: ["N", c([1, k, 1]), c([1, k])], + scalez: ["N", c([1, 1, k])], + scale3d: ["NNN", d], + skew: ["Aa", null, d], + skewx: ["A", null, c([k, m])], + skewy: ["A", null, c([m, k])], + translate: ["Tt", c([k, k, l]), d], + translatex: ["T", c([k, l, l]), c([k, l])], + translatey: ["T", c([l, k, l]), c([l, k])], + translatez: ["L", c([l, l, k])], + translate3d: ["TTL", d], + } + a.addPropertiesHandler(e, j, ["transform"]), + (a.transformToSvgMatrix = function (b) { + var c = a.transformListToMatrix(e(b)) + return ( + "matrix(" + + f(c[0]) + + " " + + f(c[1]) + + " " + + f(c[4]) + + " " + + f(c[5]) + + " " + + f(c[12]) + + " " + + f(c[13]) + + ")" + ) + }) + })(b), + (function (a) { + function b(a) { + var b = Number(a) + if (!(isNaN(b) || b < 100 || b > 900 || b % 100 != 0)) return b + } + function c(b) { + return ( + (b = 100 * Math.round(b / 100)), + (b = a.clamp(100, 900, b)), + 400 === b ? "normal" : 700 === b ? "bold" : String(b) + ) + } + function d(a, b) { + return [a, b, c] + } + a.addPropertiesHandler(b, d, ["font-weight"]) + })(b), + (function (a) { + function b(a) { + var b = {} + for (var c in a) b[c] = -a[c] + return b + } + function c(b) { + return ( + a.consumeToken(/^(left|center|right|top|bottom)\b/i, b) || + a.consumeLengthOrPercent(b) + ) + } + function d(b, d) { + var e = a.consumeRepeated(c, /^/, d) + if (e && "" == e[1]) { + var f = e[0] + if ( + ((f[0] = f[0] || "center"), + (f[1] = f[1] || "center"), + 3 == b && (f[2] = f[2] || {px: 0}), + f.length == b) + ) { + if (/top|bottom/.test(f[0]) || /left|right/.test(f[1])) { + var h = f[0] + ;(f[0] = f[1]), (f[1] = h) + } + if ( + /left|right|center|Object/.test(f[0]) && + /top|bottom|center|Object/.test(f[1]) + ) + return f.map(function (a) { + return "object" == typeof a ? a : g[a] + }) + } + } + } + function e(d) { + var e = a.consumeRepeated(c, /^/, d) + if (e) { + for ( + var f = e[0], h = [{"%": 50}, {"%": 50}], i = 0, j = !1, k = 0; + k < f.length; + k++ + ) { + var l = f[k] + "string" == typeof l + ? ((j = /bottom|right/.test(l)), + (i = {left: 0, right: 0, center: i, top: 1, bottom: 1}[l]), + (h[i] = g[l]), + "center" == l && i++) + : (j && ((l = b(l)), (l["%"] = (l["%"] || 0) + 100)), + (h[i] = l), + i++, + (j = !1)) + } + return [h, e[1]] + } + } + function f(b) { + var c = a.consumeRepeated(e, /^,/, b) + if (c && "" == c[1]) return c[0] + } + var g = { + left: {"%": 0}, + center: {"%": 50}, + right: {"%": 100}, + top: {"%": 0}, + bottom: {"%": 100}, + }, + h = a.mergeNestedRepeated.bind(null, a.mergeDimensions, " ") + a.addPropertiesHandler(d.bind(null, 3), h, ["transform-origin"]), + a.addPropertiesHandler(d.bind(null, 2), h, ["perspective-origin"]), + (a.consumePosition = e), + (a.mergeOffsetList = h) + var i = a.mergeNestedRepeated.bind(null, h, ", ") + a.addPropertiesHandler(f, i, ["background-position", "object-position"]) + })(b), + (function (a) { + function b(b) { + var c = a.consumeToken(/^circle/, b) + if (c && c[0]) + return ["circle"].concat( + a.consumeList( + [ + a.ignore(a.consumeToken.bind(void 0, /^\(/)), + d, + a.ignore(a.consumeToken.bind(void 0, /^at/)), + a.consumePosition, + a.ignore(a.consumeToken.bind(void 0, /^\)/)), + ], + c[1], + ), + ) + var f = a.consumeToken(/^ellipse/, b) + if (f && f[0]) + return ["ellipse"].concat( + a.consumeList( + [ + a.ignore(a.consumeToken.bind(void 0, /^\(/)), + e, + a.ignore(a.consumeToken.bind(void 0, /^at/)), + a.consumePosition, + a.ignore(a.consumeToken.bind(void 0, /^\)/)), + ], + f[1], + ), + ) + var g = a.consumeToken(/^polygon/, b) + return g && g[0] + ? ["polygon"].concat( + a.consumeList( + [ + a.ignore(a.consumeToken.bind(void 0, /^\(/)), + a.optional( + a.consumeToken.bind( + void 0, + /^nonzero\s*,|^evenodd\s*,/, + ), + "nonzero,", + ), + a.consumeSizePairList, + a.ignore(a.consumeToken.bind(void 0, /^\)/)), + ], + g[1], + ), + ) + : void 0 + } + function c(b, c) { + if (b[0] === c[0]) + return "circle" == b[0] + ? a.mergeList(b.slice(1), c.slice(1), [ + "circle(", + a.mergeDimensions, + " at ", + a.mergeOffsetList, + ")", + ]) + : "ellipse" == b[0] + ? a.mergeList(b.slice(1), c.slice(1), [ + "ellipse(", + a.mergeNonNegativeSizePair, + " at ", + a.mergeOffsetList, + ")", + ]) + : "polygon" == b[0] && b[1] == c[1] + ? a.mergeList(b.slice(2), c.slice(2), [ + "polygon(", + b[1], + g, + ")", + ]) + : void 0 + } + var d = a.consumeParenthesised.bind(null, a.parseLengthOrPercent), + e = a.consumeRepeated.bind(void 0, d, /^/), + f = a.mergeNestedRepeated.bind(void 0, a.mergeDimensions, " "), + g = a.mergeNestedRepeated.bind(void 0, f, ",") + a.addPropertiesHandler(b, c, ["shape-outside"]) + })(b), + (function (a, b) { + function c(a, b) { + b.concat([a]).forEach(function (b) { + b in document.documentElement.style && (d[a] = b), (e[b] = a) + }) + } + var d = {}, + e = {} + c("transform", ["webkitTransform", "msTransform"]), + c("transformOrigin", ["webkitTransformOrigin"]), + c("perspective", ["webkitPerspective"]), + c("perspectiveOrigin", ["webkitPerspectiveOrigin"]), + (a.propertyName = function (a) { + return d[a] || a + }), + (a.unprefixedPropertyName = function (a) { + return e[a] || a + }) + })(b) + })(), + (function () { + if (void 0 === document.createElement("div").animate([]).oncancel) { + var a + if (window.performance && performance.now) + var a = function () { + return performance.now() + } + else + var a = function () { + return Date.now() + } + var b = function (a, b, c) { + ;(this.target = a), + (this.currentTime = b), + (this.timelineTime = c), + (this.type = "cancel"), + (this.bubbles = !1), + (this.cancelable = !1), + (this.currentTarget = a), + (this.defaultPrevented = !1), + (this.eventPhase = Event.AT_TARGET), + (this.timeStamp = Date.now()) + }, + c = window.Element.prototype.animate + window.Element.prototype.animate = function (d, e) { + var f = c.call(this, d, e) + ;(f._cancelHandlers = []), (f.oncancel = null) + var g = f.cancel + f.cancel = function () { + g.call(this) + var c = new b(this, null, a()), + d = this._cancelHandlers.concat(this.oncancel ? [this.oncancel] : []) + setTimeout(function () { + d.forEach(function (a) { + a.call(c.target, c) + }) + }, 0) + } + var h = f.addEventListener + f.addEventListener = function (a, b) { + "function" == typeof b && "cancel" == a + ? this._cancelHandlers.push(b) + : h.call(this, a, b) + } + var i = f.removeEventListener + return ( + (f.removeEventListener = function (a, b) { + if ("cancel" == a) { + var c = this._cancelHandlers.indexOf(b) + c >= 0 && this._cancelHandlers.splice(c, 1) + } else i.call(this, a, b) + }), + f + ) + } + } + })(), + (function (a) { + var b = document.documentElement, + c = null, + d = !1 + try { + var e = getComputedStyle(b).getPropertyValue("opacity"), + f = "0" == e ? "1" : "0" + ;(c = b.animate({opacity: [f, f]}, {duration: 1})), + (c.currentTime = 0), + (d = getComputedStyle(b).getPropertyValue("opacity") == f) + } catch (a) { + } finally { + c && c.cancel() + } + if (!d) { + var g = window.Element.prototype.animate + window.Element.prototype.animate = function (b, c) { + return ( + window.Symbol && + Symbol.iterator && + Array.prototype.from && + b[Symbol.iterator] && + (b = Array.from(b)), + Array.isArray(b) || null === b || (b = a.convertToArrayForm(b)), + g.call(this, b, c) + ) + } + } + })(a) +})() diff --git a/tsconfig.base.json b/tsconfig.base.json new file mode 100644 index 0000000..285c8e1 --- /dev/null +++ b/tsconfig.base.json @@ -0,0 +1,19 @@ +{ + "compilerOptions": { + "target": "ESNext", + "module": "NodeNext", + "moduleResolution": "NodeNext", + "lib": ["ESNext"], + "newLine": "LF", + "types": [], + "strict": true, + "isolatedModules": true, + "allowSyntheticDefaultImports": true, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "noPropertyAccessFromIndexSignature": true, + "noUncheckedIndexedAccess": true + }, + "exclude": ["node_modules", "dist"] +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..436735b --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.base.json", + "compilerOptions": { + "lib": ["ESNext", "DOM"], + "jsx": "preserve", + "jsxImportSource": "solid-js" + }, + "include": ["src", "test"], + "references": [{"path": "./tsconfig.node.json"}] +} diff --git a/tsconfig.node.json b/tsconfig.node.json new file mode 100644 index 0000000..6847340 --- /dev/null +++ b/tsconfig.node.json @@ -0,0 +1,8 @@ +{ + "extends": "./tsconfig.base.json", + "compilerOptions": { + "composite": true, + "types": ["node"] + }, + "include": ["./tsup.config.ts", "./vitest.config.ts"] +} diff --git a/tsup.config.ts b/tsup.config.ts new file mode 100644 index 0000000..d66dd8c --- /dev/null +++ b/tsup.config.ts @@ -0,0 +1,28 @@ +import * as tsup from "tsup" +import * as preset from "tsup-preset-solid" + +const preset_options: preset.PresetOptions = { + entries: {entry: "src/index.tsx"}, + drop_console: true, + cjs: true, +} + +export default tsup.defineConfig(config => { + const watching = !!config.watch + + const parsed_data = preset.parsePresetOptions(preset_options, watching) + + if (!watching) { + const package_fields = preset.generatePackageExports(parsed_data) + + // eslint-disable-next-line no-console + console.log(`package.json: \n\n${JSON.stringify(package_fields, null, 2)}\n\n`) + + /* + will update ./package.json with the correct export fields + */ + preset.writePackageJson(package_fields) + } + + return preset.generateTsupOptions(parsed_data) +}) diff --git a/vitest.config.ts b/vitest.config.ts new file mode 100644 index 0000000..ec68a5a --- /dev/null +++ b/vitest.config.ts @@ -0,0 +1,41 @@ +import {defineConfig} from "vitest/config" +import solidPlugin from "vite-plugin-solid" + +export default defineConfig(({mode}) => { + // to test in server environment, run with "--mode ssr" or "--mode test:ssr" flag + // loads only server.test.ts file + const testSSR = mode === "test:ssr" || mode === "ssr" + + return { + plugins: [ + solidPlugin({ + hot: false, + // For testing SSR we need to do a SSR JSX transform + solid: {generate: testSSR ? "ssr" : "dom", omitNestedClosingTags: false}, + }), + ], + test: { + watch: false, + isolate: !testSSR, + env: { + NODE_ENV: testSSR ? "production" : "development", + DEV: testSSR ? "" : "1", + SSR: testSSR ? "1" : "", + PROD: testSSR ? "1" : "", + }, + environment: testSSR ? "node" : "jsdom", + transformMode: {web: [/\.[jt]sx$/]}, + ...(testSSR + ? { + include: ["src/ssr.test.{ts,tsx}"], + } + : { + include: ["src/*.test.{ts,tsx}"], + exclude: ["src/ssr.test.{ts,tsx}"], + }), + }, + resolve: { + conditions: testSSR ? ["node"] : ["browser", "development"], + }, + } +})