From b6f9e2ae17acbb734db7f64471e2c1893d08a225 Mon Sep 17 00:00:00 2001 From: Garth Williams Date: Fri, 21 Jul 2023 10:10:25 +0200 Subject: [PATCH 1/5] Fix pnpm install & build --- demo/package.json | 2 +- pnpm-lock.yaml | 685 +++++++++++++++++++++++++++++++------------- spring/package.json | 3 +- 3 files changed, 486 insertions(+), 204 deletions(-) diff --git a/demo/package.json b/demo/package.json index f25aa56..6cfb48c 100644 --- a/demo/package.json +++ b/demo/package.json @@ -18,6 +18,6 @@ "@react-spring/animated": "^9.4.4", "@react-spring/core": "^9.4.4", "solid-js": "^1.3.13", - "solid-spring": "workspace:^0.0.0" + "solid-spring": "workspace:^0.1.0" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index dc377f4..2308f42 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,79 +1,98 @@ -lockfileVersion: 5.3 +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false importers: .: - specifiers: - '@rollup/plugin-alias': ^3.1.9 - '@rollup/plugin-commonjs': ^21.0.2 - '@rollup/plugin-json': ^4.1.0 - '@rollup/plugin-node-resolve': ^13.1.3 - esbuild: ^0.14.27 - rollup-plugin-esbuild: ^4.8.2 devDependencies: - '@rollup/plugin-alias': 3.1.9 - '@rollup/plugin-commonjs': 21.0.2 - '@rollup/plugin-json': 4.1.0 - '@rollup/plugin-node-resolve': 13.1.3 - esbuild: 0.14.27 - rollup-plugin-esbuild: 4.8.2_esbuild@0.14.27 + '@rollup/plugin-alias': + specifier: ^3.1.9 + version: 3.1.9(rollup@2.70.1) + '@rollup/plugin-commonjs': + specifier: ^21.0.2 + version: 21.0.2(rollup@2.70.1) + '@rollup/plugin-json': + specifier: ^4.1.0 + version: 4.1.0(rollup@2.70.1) + '@rollup/plugin-node-resolve': + specifier: ^13.1.3 + version: 13.1.3(rollup@2.70.1) + esbuild: + specifier: ^0.14.27 + version: 0.14.27 + rollup-plugin-esbuild: + specifier: ^4.8.2 + version: 4.8.2(esbuild@0.14.27)(rollup@2.70.1) demo: - specifiers: - '@react-spring/animated': ^9.4.4 - '@react-spring/core': ^9.4.4 - solid-js: ^1.3.13 - solid-spring: workspace:^0.0.0 - typescript: ^4.6.3 - vite: ^2.8.6 - vite-plugin-solid: ^2.2.6 - dependencies: - '@react-spring/animated': 9.4.4 - '@react-spring/core': 9.4.4 - solid-js: 1.3.13 - solid-spring: link:../spring + dependencies: + '@react-spring/animated': + specifier: ^9.4.4 + version: 9.4.4(react@17.0.2) + '@react-spring/core': + specifier: ^9.4.4 + version: 9.4.4(react@17.0.2) + solid-js: + specifier: ^1.3.13 + version: 1.3.13 + solid-spring: + specifier: workspace:^0.1.0 + version: link:../spring devDependencies: - typescript: 4.6.3 - vite: 2.9.1 - vite-plugin-solid: 2.2.6 + typescript: + specifier: ^4.6.3 + version: 4.6.3 + vite: + specifier: ^2.8.6 + version: 2.9.1 + vite-plugin-solid: + specifier: ^2.2.6 + version: 2.2.6 spring: - specifiers: - rollup-plugin-dts: ^4.2.0 - solid-js: ^1.3.13 devDependencies: - rollup-plugin-dts: 4.2.0 - solid-js: 1.3.13 + rimraf: + specifier: ^5.0.1 + version: 5.0.1 + rollup-plugin-dts: + specifier: ^4.2.0 + version: 4.2.0(rollup@2.70.1)(typescript@4.6.3) + solid-js: + specifier: ^1.3.13 + version: 1.3.13 packages: - /@ampproject/remapping/2.1.2: + /@ampproject/remapping@2.1.2: resolution: {integrity: sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==} engines: {node: '>=6.0.0'} dependencies: '@jridgewell/trace-mapping': 0.3.4 dev: true - /@babel/code-frame/7.16.7: + /@babel/code-frame@7.16.7: resolution: {integrity: sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==} engines: {node: '>=6.9.0'} dependencies: '@babel/highlight': 7.16.10 dev: true - /@babel/compat-data/7.17.7: + /@babel/compat-data@7.17.7: resolution: {integrity: sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==} engines: {node: '>=6.9.0'} dev: true - /@babel/core/7.17.8: + /@babel/core@7.17.8: resolution: {integrity: sha512-OdQDV/7cRBtJHLSOBqqbYNkOcydOgnX59TZx4puf41fzcVtN3e/4yqY8lMQsK+5X2lJtAdmA+6OHqsj1hBJ4IQ==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.1.2 '@babel/code-frame': 7.16.7 '@babel/generator': 7.17.7 - '@babel/helper-compilation-targets': 7.17.7_@babel+core@7.17.8 + '@babel/helper-compilation-targets': 7.17.7(@babel/core@7.17.8) '@babel/helper-module-transforms': 7.17.7 '@babel/helpers': 7.17.8 '@babel/parser': 7.17.8 @@ -89,7 +108,7 @@ packages: - supports-color dev: true - /@babel/generator/7.17.7: + /@babel/generator@7.17.7: resolution: {integrity: sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==} engines: {node: '>=6.9.0'} dependencies: @@ -98,14 +117,14 @@ packages: source-map: 0.5.7 dev: true - /@babel/helper-annotate-as-pure/7.16.7: + /@babel/helper-annotate-as-pure@7.16.7: resolution: {integrity: sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.17.0 dev: true - /@babel/helper-compilation-targets/7.17.7_@babel+core@7.17.8: + /@babel/helper-compilation-targets@7.17.7(@babel/core@7.17.8): resolution: {integrity: sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==} engines: {node: '>=6.9.0'} peerDependencies: @@ -118,7 +137,7 @@ packages: semver: 6.3.0 dev: true - /@babel/helper-create-class-features-plugin/7.17.6_@babel+core@7.17.8: + /@babel/helper-create-class-features-plugin@7.17.6(@babel/core@7.17.8): resolution: {integrity: sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg==} engines: {node: '>=6.9.0'} peerDependencies: @@ -136,14 +155,14 @@ packages: - supports-color dev: true - /@babel/helper-environment-visitor/7.16.7: + /@babel/helper-environment-visitor@7.16.7: resolution: {integrity: sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.17.0 dev: true - /@babel/helper-function-name/7.16.7: + /@babel/helper-function-name@7.16.7: resolution: {integrity: sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==} engines: {node: '>=6.9.0'} dependencies: @@ -152,42 +171,42 @@ packages: '@babel/types': 7.17.0 dev: true - /@babel/helper-get-function-arity/7.16.7: + /@babel/helper-get-function-arity@7.16.7: resolution: {integrity: sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.17.0 dev: true - /@babel/helper-hoist-variables/7.16.7: + /@babel/helper-hoist-variables@7.16.7: resolution: {integrity: sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.17.0 dev: true - /@babel/helper-member-expression-to-functions/7.17.7: + /@babel/helper-member-expression-to-functions@7.17.7: resolution: {integrity: sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.17.0 dev: true - /@babel/helper-module-imports/7.16.0: + /@babel/helper-module-imports@7.16.0: resolution: {integrity: sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.17.0 dev: true - /@babel/helper-module-imports/7.16.7: + /@babel/helper-module-imports@7.16.7: resolution: {integrity: sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.17.0 dev: true - /@babel/helper-module-transforms/7.17.7: + /@babel/helper-module-transforms@7.17.7: resolution: {integrity: sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==} engines: {node: '>=6.9.0'} dependencies: @@ -203,19 +222,19 @@ packages: - supports-color dev: true - /@babel/helper-optimise-call-expression/7.16.7: + /@babel/helper-optimise-call-expression@7.16.7: resolution: {integrity: sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.17.0 dev: true - /@babel/helper-plugin-utils/7.16.7: + /@babel/helper-plugin-utils@7.16.7: resolution: {integrity: sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-replace-supers/7.16.7: + /@babel/helper-replace-supers@7.16.7: resolution: {integrity: sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==} engines: {node: '>=6.9.0'} dependencies: @@ -228,31 +247,31 @@ packages: - supports-color dev: true - /@babel/helper-simple-access/7.17.7: + /@babel/helper-simple-access@7.17.7: resolution: {integrity: sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.17.0 dev: true - /@babel/helper-split-export-declaration/7.16.7: + /@babel/helper-split-export-declaration@7.16.7: resolution: {integrity: sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.17.0 dev: true - /@babel/helper-validator-identifier/7.16.7: + /@babel/helper-validator-identifier@7.16.7: resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-validator-option/7.16.7: + /@babel/helper-validator-option@7.16.7: resolution: {integrity: sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==} engines: {node: '>=6.9.0'} dev: true - /@babel/helpers/7.17.8: + /@babel/helpers@7.17.8: resolution: {integrity: sha512-QcL86FGxpfSJwGtAvv4iG93UL6bmqBdmoVY0CMCU2g+oD2ezQse3PT5Pa+jiD6LJndBQi0EDlpzOWNlLuhz5gw==} engines: {node: '>=6.9.0'} dependencies: @@ -263,7 +282,7 @@ packages: - supports-color dev: true - /@babel/highlight/7.16.10: + /@babel/highlight@7.16.10: resolution: {integrity: sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==} engines: {node: '>=6.9.0'} dependencies: @@ -272,13 +291,15 @@ packages: js-tokens: 4.0.0 dev: true - /@babel/parser/7.17.8: + /@babel/parser@7.17.8: resolution: {integrity: sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ==} engines: {node: '>=6.0.0'} hasBin: true + dependencies: + '@babel/types': 7.17.0 dev: true - /@babel/plugin-syntax-jsx/7.16.7_@babel+core@7.17.8: + /@babel/plugin-syntax-jsx@7.16.7(@babel/core@7.17.8): resolution: {integrity: sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==} engines: {node: '>=6.9.0'} peerDependencies: @@ -288,7 +309,7 @@ packages: '@babel/helper-plugin-utils': 7.16.7 dev: true - /@babel/plugin-syntax-typescript/7.16.7_@babel+core@7.17.8: + /@babel/plugin-syntax-typescript@7.16.7(@babel/core@7.17.8): resolution: {integrity: sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==} engines: {node: '>=6.9.0'} peerDependencies: @@ -298,21 +319,21 @@ packages: '@babel/helper-plugin-utils': 7.16.7 dev: true - /@babel/plugin-transform-typescript/7.16.8_@babel+core@7.17.8: + /@babel/plugin-transform-typescript@7.16.8(@babel/core@7.17.8): resolution: {integrity: sha512-bHdQ9k7YpBDO2d0NVfkj51DpQcvwIzIusJ7mEUaMlbZq3Kt/U47j24inXZHQ5MDiYpCs+oZiwnXyKedE8+q7AQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.17.8 - '@babel/helper-create-class-features-plugin': 7.17.6_@babel+core@7.17.8 + '@babel/helper-create-class-features-plugin': 7.17.6(@babel/core@7.17.8) '@babel/helper-plugin-utils': 7.16.7 - '@babel/plugin-syntax-typescript': 7.16.7_@babel+core@7.17.8 + '@babel/plugin-syntax-typescript': 7.16.7(@babel/core@7.17.8) transitivePeerDependencies: - supports-color dev: true - /@babel/preset-typescript/7.16.7_@babel+core@7.17.8: + /@babel/preset-typescript@7.16.7(@babel/core@7.17.8): resolution: {integrity: sha512-WbVEmgXdIyvzB77AQjGBEyYPZx+8tTsO50XtfozQrkW8QB2rLJpH2lgx0TRw5EJrBxOZQ+wCcyPVQvS8tjEHpQ==} engines: {node: '>=6.9.0'} peerDependencies: @@ -321,12 +342,12 @@ packages: '@babel/core': 7.17.8 '@babel/helper-plugin-utils': 7.16.7 '@babel/helper-validator-option': 7.16.7 - '@babel/plugin-transform-typescript': 7.16.8_@babel+core@7.17.8 + '@babel/plugin-transform-typescript': 7.16.8(@babel/core@7.17.8) transitivePeerDependencies: - supports-color dev: true - /@babel/template/7.16.7: + /@babel/template@7.16.7: resolution: {integrity: sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==} engines: {node: '>=6.9.0'} dependencies: @@ -335,7 +356,7 @@ packages: '@babel/types': 7.17.0 dev: true - /@babel/traverse/7.17.3: + /@babel/traverse@7.17.3: resolution: {integrity: sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==} engines: {node: '>=6.9.0'} dependencies: @@ -353,7 +374,7 @@ packages: - supports-color dev: true - /@babel/types/7.17.0: + /@babel/types@7.17.0: resolution: {integrity: sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==} engines: {node: '>=6.9.0'} dependencies: @@ -361,106 +382,132 @@ packages: to-fast-properties: 2.0.0 dev: true - /@jridgewell/resolve-uri/3.0.5: + /@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 + + /@jridgewell/resolve-uri@3.0.5: resolution: {integrity: sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==} engines: {node: '>=6.0.0'} dev: true - /@jridgewell/sourcemap-codec/1.4.11: + /@jridgewell/sourcemap-codec@1.4.11: resolution: {integrity: sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==} dev: true - /@jridgewell/trace-mapping/0.3.4: + /@jridgewell/trace-mapping@0.3.4: resolution: {integrity: sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==} dependencies: '@jridgewell/resolve-uri': 3.0.5 '@jridgewell/sourcemap-codec': 1.4.11 dev: true - /@react-spring/animated/9.4.4: + /@pkgjs/parseargs@0.11.0: + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + requiresBuild: true + dev: true + optional: true + + /@react-spring/animated@9.4.4(react@17.0.2): resolution: {integrity: sha512-e9xnuBaUTD+NolKikUmrGWjX8AVCPyj1GcEgjgq9E+0sXKv46UY7cm2EmB6mUDTxWIDVKebARY++xT4nGDraBQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 dependencies: - '@react-spring/shared': 9.4.4 + '@react-spring/shared': 9.4.4(react@17.0.2) '@react-spring/types': 9.4.4 + react: 17.0.2 dev: false - /@react-spring/core/9.4.4: + /@react-spring/core@9.4.4(react@17.0.2): resolution: {integrity: sha512-llgb0ljFyjMB0JhWsaFHOi9XFT8n1jBMVs1IFY2ipIBerWIRWrgUmIpakLPHTa4c4jwqTaDSwX90s2a0iN7dxQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 dependencies: - '@react-spring/animated': 9.4.4 + '@react-spring/animated': 9.4.4(react@17.0.2) '@react-spring/rafz': 9.4.4 - '@react-spring/shared': 9.4.4 + '@react-spring/shared': 9.4.4(react@17.0.2) '@react-spring/types': 9.4.4 + react: 17.0.2 dev: false - /@react-spring/rafz/9.4.4: + /@react-spring/rafz@9.4.4: resolution: {integrity: sha512-5ki/sQ06Mdf8AuFstSt5zbNNicRT4LZogiJttDAww1ozhuvemafNWEHxhzcULgCPCDu2s7HsroaISV7+GQWrhw==} dev: false - /@react-spring/shared/9.4.4: + /@react-spring/shared@9.4.4(react@17.0.2): resolution: {integrity: sha512-ySVgScDZlhm/+Iy2smY9i/DDrShArY0j6zjTS/Re1lasKnhq8qigoGiAxe8xMPJNlCaj3uczCqHy3TY9bKRtfQ==} peerDependencies: react: ^16.8.0 || ^17.0.0 dependencies: '@react-spring/rafz': 9.4.4 '@react-spring/types': 9.4.4 + react: 17.0.2 dev: false - /@react-spring/types/9.4.4: + /@react-spring/types@9.4.4: resolution: {integrity: sha512-KpxKt/D//q/t/6FBcde/RE36LKp8PpWu7kFEMLwpzMGl9RpcexunmYOQJWwmJWtkQjgE1YRr7DzBMryz6La1cQ==} dev: false - /@rollup/plugin-alias/3.1.9: + /@rollup/plugin-alias@3.1.9(rollup@2.70.1): resolution: {integrity: sha512-QI5fsEvm9bDzt32k39wpOwZhVzRcL5ydcffUHMyLVaVaLeC70I8TJZ17F1z1eMoLu4E/UOcH9BWVkKpIKdrfiw==} engines: {node: '>=8.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0 dependencies: + rollup: 2.70.1 slash: 3.0.0 dev: true - /@rollup/plugin-commonjs/21.0.2: + /@rollup/plugin-commonjs@21.0.2(rollup@2.70.1): resolution: {integrity: sha512-d/OmjaLVO4j/aQX69bwpWPpbvI3TJkQuxoAk7BH8ew1PyoMBLTOuvJTjzG8oEoW7drIIqB0KCJtfFLu/2GClWg==} engines: {node: '>= 8.0.0'} peerDependencies: rollup: ^2.38.3 dependencies: - '@rollup/pluginutils': 3.1.0 + '@rollup/pluginutils': 3.1.0(rollup@2.70.1) commondir: 1.0.1 estree-walker: 2.0.2 glob: 7.2.0 is-reference: 1.2.1 magic-string: 0.25.9 resolve: 1.22.0 + rollup: 2.70.1 dev: true - /@rollup/plugin-json/4.1.0: + /@rollup/plugin-json@4.1.0(rollup@2.70.1): resolution: {integrity: sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==} peerDependencies: rollup: ^1.20.0 || ^2.0.0 dependencies: - '@rollup/pluginutils': 3.1.0 + '@rollup/pluginutils': 3.1.0(rollup@2.70.1) + rollup: 2.70.1 dev: true - /@rollup/plugin-node-resolve/13.1.3: + /@rollup/plugin-node-resolve@13.1.3(rollup@2.70.1): resolution: {integrity: sha512-BdxNk+LtmElRo5d06MGY4zoepyrXX1tkzX2hrnPEZ53k78GuOMWLqmJDGIIOPwVRIFZrLQOo+Yr6KtCuLIA0AQ==} engines: {node: '>= 10.0.0'} peerDependencies: rollup: ^2.42.0 dependencies: - '@rollup/pluginutils': 3.1.0 + '@rollup/pluginutils': 3.1.0(rollup@2.70.1) '@types/resolve': 1.17.1 builtin-modules: 3.2.0 deepmerge: 4.2.2 is-module: 1.0.0 resolve: 1.22.0 + rollup: 2.70.1 dev: true - /@rollup/pluginutils/3.1.0: + /@rollup/pluginutils@3.1.0(rollup@2.70.1): resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} engines: {node: '>= 8.0.0'} peerDependencies: @@ -469,9 +516,10 @@ packages: '@types/estree': 0.0.39 estree-walker: 1.0.1 picomatch: 2.3.1 + rollup: 2.70.1 dev: true - /@rollup/pluginutils/4.2.0: + /@rollup/pluginutils@4.2.0: resolution: {integrity: sha512-2WUyJNRkyH5p487pGnn4tWAsxhEFKN/pT8CMgHshd5H+IXkOnKvKZwsz5ZWz+YCXkleZRAU5kwbfgF8CPfDRqA==} engines: {node: '>= 8.0.0'} dependencies: @@ -479,62 +527,90 @@ packages: picomatch: 2.3.1 dev: true - /@types/estree/0.0.39: + /@types/estree@0.0.39: resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} dev: true - /@types/estree/0.0.51: + /@types/estree@0.0.51: resolution: {integrity: sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==} dev: true - /@types/node/17.0.23: + /@types/node@17.0.23: resolution: {integrity: sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw==} dev: true - /@types/resolve/1.17.1: + /@types/resolve@1.17.1: resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} dependencies: '@types/node': 17.0.23 dev: true - /ansi-styles/3.2.1: + /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 - /babel-plugin-jsx-dom-expressions/0.32.11_@babel+core@7.17.8: + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + dev: true + + /ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + dev: true + + /babel-plugin-jsx-dom-expressions@0.32.11(@babel/core@7.17.8): resolution: {integrity: sha512-hytqY33SGW6B3obSLt8K5X510UwtNkTktCCWgwba+QOOV0CowDFiqeL+0ru895FLacFaYANHFTu1y76dg3GVtw==} dependencies: '@babel/helper-module-imports': 7.16.0 - '@babel/plugin-syntax-jsx': 7.16.7_@babel+core@7.17.8 + '@babel/plugin-syntax-jsx': 7.16.7(@babel/core@7.17.8) '@babel/types': 7.17.0 html-entities: 2.3.2 transitivePeerDependencies: - '@babel/core' dev: true - /babel-preset-solid/1.3.13_@babel+core@7.17.8: + /babel-preset-solid@1.3.13(@babel/core@7.17.8): resolution: {integrity: sha512-MZnmsceI9yiHlwwFCSALTJhadk2eea/+2UP4ec4jkPZFR+XRKTLoIwRkrBh7uLtvHF+3lHGyUaXtZukOmmUwhA==} dependencies: - babel-plugin-jsx-dom-expressions: 0.32.11_@babel+core@7.17.8 + babel-plugin-jsx-dom-expressions: 0.32.11(@babel/core@7.17.8) transitivePeerDependencies: - '@babel/core' dev: true - /balanced-match/1.0.2: + /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} dev: true - /brace-expansion/1.1.11: + /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 dev: true - /browserslist/4.20.2: + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + dev: true + + /browserslist@4.20.2: resolution: {integrity: sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -546,16 +622,16 @@ packages: picocolors: 1.0.0 dev: true - /builtin-modules/3.2.0: + /builtin-modules@3.2.0: resolution: {integrity: sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==} engines: {node: '>=6'} dev: true - /caniuse-lite/1.0.30001324: + /caniuse-lite@1.0.30001324: resolution: {integrity: sha512-/eYp1J6zYh1alySQB4uzYFkLmxxI8tk0kxldbNHXp8+v+rdMKdUBNjRLz7T7fz6Iox+1lIdYpc7rq6ZcXfTukg==} dev: true - /chalk/2.4.2: + /chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} dependencies: @@ -564,31 +640,51 @@ packages: supports-color: 5.5.0 dev: true - /color-convert/1.9.3: + /color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: color-name: 1.1.3 dev: true - /color-name/1.1.3: + /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: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=} dev: true - /commondir/1.0.1: + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + dev: true + + /commondir@1.0.1: resolution: {integrity: sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=} dev: true - /concat-map/0.0.1: + /concat-map@0.0.1: resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} dev: true - /convert-source-map/1.8.0: + /convert-source-map@1.8.0: resolution: {integrity: sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==} dependencies: safe-buffer: 5.1.2 dev: true - /debug/4.3.4: + /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 + + /debug@4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} peerDependencies: @@ -600,20 +696,32 @@ packages: ms: 2.1.2 dev: true - /deepmerge/4.2.2: + /deepmerge@4.2.2: resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} engines: {node: '>=0.10.0'} dev: true - /electron-to-chromium/1.4.103: + /eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + dev: true + + /electron-to-chromium@1.4.103: resolution: {integrity: sha512-c/uKWR1Z/W30Wy/sx3dkZoj4BijbXX85QKWu9jJfjho3LBAXNEGAEW3oWiGb+dotA6C6BzCTxL2/aLes7jlUeg==} dev: true - /es-module-lexer/0.9.3: + /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 + + /es-module-lexer@0.9.3: resolution: {integrity: sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==} dev: true - /esbuild-android-64/0.14.27: + /esbuild-android-64@0.14.27: resolution: {integrity: sha512-LuEd4uPuj/16Y8j6kqy3Z2E9vNY9logfq8Tq+oTE2PZVuNs3M1kj5Qd4O95ee66yDGb3isaOCV7sOLDwtMfGaQ==} engines: {node: '>=12'} cpu: [x64] @@ -622,7 +730,7 @@ packages: dev: true optional: true - /esbuild-android-arm64/0.14.27: + /esbuild-android-arm64@0.14.27: resolution: {integrity: sha512-E8Ktwwa6vX8q7QeJmg8yepBYXaee50OdQS3BFtEHKrzbV45H4foMOeEE7uqdjGQZFBap5VAqo7pvjlyA92wznQ==} engines: {node: '>=12'} cpu: [arm64] @@ -631,7 +739,7 @@ packages: dev: true optional: true - /esbuild-darwin-64/0.14.27: + /esbuild-darwin-64@0.14.27: resolution: {integrity: sha512-czw/kXl/1ZdenPWfw9jDc5iuIYxqUxgQ/Q+hRd4/3udyGGVI31r29LCViN2bAJgGvQkqyLGVcG03PJPEXQ5i2g==} engines: {node: '>=12'} cpu: [x64] @@ -640,7 +748,7 @@ packages: dev: true optional: true - /esbuild-darwin-arm64/0.14.27: + /esbuild-darwin-arm64@0.14.27: resolution: {integrity: sha512-BEsv2U2U4o672oV8+xpXNxN9bgqRCtddQC6WBh4YhXKDcSZcdNh7+6nS+DM2vu7qWIWNA4JbRG24LUUYXysimQ==} engines: {node: '>=12'} cpu: [arm64] @@ -649,7 +757,7 @@ packages: dev: true optional: true - /esbuild-freebsd-64/0.14.27: + /esbuild-freebsd-64@0.14.27: resolution: {integrity: sha512-7FeiFPGBo+ga+kOkDxtPmdPZdayrSzsV9pmfHxcyLKxu+3oTcajeZlOO1y9HW+t5aFZPiv7czOHM4KNd0tNwCA==} engines: {node: '>=12'} cpu: [x64] @@ -658,7 +766,7 @@ packages: dev: true optional: true - /esbuild-freebsd-arm64/0.14.27: + /esbuild-freebsd-arm64@0.14.27: resolution: {integrity: sha512-8CK3++foRZJluOWXpllG5zwAVlxtv36NpHfsbWS7TYlD8S+QruXltKlXToc/5ZNzBK++l6rvRKELu/puCLc7jA==} engines: {node: '>=12'} cpu: [arm64] @@ -667,7 +775,7 @@ packages: dev: true optional: true - /esbuild-linux-32/0.14.27: + /esbuild-linux-32@0.14.27: resolution: {integrity: sha512-qhNYIcT+EsYSBClZ5QhLzFzV5iVsP1YsITqblSaztr3+ZJUI+GoK8aXHyzKd7/CKKuK93cxEMJPpfi1dfsOfdw==} engines: {node: '>=12'} cpu: [ia32] @@ -676,7 +784,7 @@ packages: dev: true optional: true - /esbuild-linux-64/0.14.27: + /esbuild-linux-64@0.14.27: resolution: {integrity: sha512-ESjck9+EsHoTaKWlFKJpPZRN26uiav5gkI16RuI8WBxUdLrrAlYuYSndxxKgEn1csd968BX/8yQZATYf/9+/qg==} engines: {node: '>=12'} cpu: [x64] @@ -685,25 +793,25 @@ packages: dev: true optional: true - /esbuild-linux-arm/0.14.27: - resolution: {integrity: sha512-JnnmgUBdqLQO9hoNZQqNHFWlNpSX82vzB3rYuCJMhtkuaWQEmQz6Lec1UIxJdC38ifEghNTBsF9bbe8dFilnCw==} + /esbuild-linux-arm64@0.14.27: + resolution: {integrity: sha512-no6Mi17eV2tHlJnqBHRLekpZ2/VYx+NfGxKcBE/2xOMYwctsanCaXxw4zapvNrGE9X38vefVXLz6YCF8b1EHiQ==} engines: {node: '>=12'} - cpu: [arm] + cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /esbuild-linux-arm64/0.14.27: - resolution: {integrity: sha512-no6Mi17eV2tHlJnqBHRLekpZ2/VYx+NfGxKcBE/2xOMYwctsanCaXxw4zapvNrGE9X38vefVXLz6YCF8b1EHiQ==} + /esbuild-linux-arm@0.14.27: + resolution: {integrity: sha512-JnnmgUBdqLQO9hoNZQqNHFWlNpSX82vzB3rYuCJMhtkuaWQEmQz6Lec1UIxJdC38ifEghNTBsF9bbe8dFilnCw==} engines: {node: '>=12'} - cpu: [arm64] + cpu: [arm] os: [linux] requiresBuild: true dev: true optional: true - /esbuild-linux-mips64le/0.14.27: + /esbuild-linux-mips64le@0.14.27: resolution: {integrity: sha512-NolWP2uOvIJpbwpsDbwfeExZOY1bZNlWE/kVfkzLMsSgqeVcl5YMen/cedRe9mKnpfLli+i0uSp7N+fkKNU27A==} engines: {node: '>=12'} cpu: [mips64el] @@ -712,7 +820,7 @@ packages: dev: true optional: true - /esbuild-linux-ppc64le/0.14.27: + /esbuild-linux-ppc64le@0.14.27: resolution: {integrity: sha512-/7dTjDvXMdRKmsSxKXeWyonuGgblnYDn0MI1xDC7J1VQXny8k1qgNp6VmrlsawwnsymSUUiThhkJsI+rx0taNA==} engines: {node: '>=12'} cpu: [ppc64] @@ -721,7 +829,7 @@ packages: dev: true optional: true - /esbuild-linux-riscv64/0.14.27: + /esbuild-linux-riscv64@0.14.27: resolution: {integrity: sha512-D+aFiUzOJG13RhrSmZgrcFaF4UUHpqj7XSKrIiCXIj1dkIkFqdrmqMSOtSs78dOtObWiOrFCDDzB24UyeEiNGg==} engines: {node: '>=12'} cpu: [riscv64] @@ -730,7 +838,7 @@ packages: dev: true optional: true - /esbuild-linux-s390x/0.14.27: + /esbuild-linux-s390x@0.14.27: resolution: {integrity: sha512-CD/D4tj0U4UQjELkdNlZhQ8nDHU5rBn6NGp47Hiz0Y7/akAY5i0oGadhEIg0WCY/HYVXFb3CsSPPwaKcTOW3bg==} engines: {node: '>=12'} cpu: [s390x] @@ -739,7 +847,7 @@ packages: dev: true optional: true - /esbuild-netbsd-64/0.14.27: + /esbuild-netbsd-64@0.14.27: resolution: {integrity: sha512-h3mAld69SrO1VoaMpYl3a5FNdGRE/Nqc+E8VtHOag4tyBwhCQXxtvDDOAKOUQexBGca0IuR6UayQ4ntSX5ij1Q==} engines: {node: '>=12'} cpu: [x64] @@ -748,7 +856,7 @@ packages: dev: true optional: true - /esbuild-openbsd-64/0.14.27: + /esbuild-openbsd-64@0.14.27: resolution: {integrity: sha512-xwSje6qIZaDHXWoPpIgvL+7fC6WeubHHv18tusLYMwL+Z6bEa4Pbfs5IWDtQdHkArtfxEkIZz77944z8MgDxGw==} engines: {node: '>=12'} cpu: [x64] @@ -757,7 +865,7 @@ packages: dev: true optional: true - /esbuild-sunos-64/0.14.27: + /esbuild-sunos-64@0.14.27: resolution: {integrity: sha512-/nBVpWIDjYiyMhuqIqbXXsxBc58cBVH9uztAOIfWShStxq9BNBik92oPQPJ57nzWXRNKQUEFWr4Q98utDWz7jg==} engines: {node: '>=12'} cpu: [x64] @@ -766,7 +874,7 @@ packages: dev: true optional: true - /esbuild-windows-32/0.14.27: + /esbuild-windows-32@0.14.27: resolution: {integrity: sha512-Q9/zEjhZJ4trtWhFWIZvS/7RUzzi8rvkoaS9oiizkHTTKd8UxFwn/Mm2OywsAfYymgUYm8+y2b+BKTNEFxUekw==} engines: {node: '>=12'} cpu: [ia32] @@ -775,7 +883,7 @@ packages: dev: true optional: true - /esbuild-windows-64/0.14.27: + /esbuild-windows-64@0.14.27: resolution: {integrity: sha512-b3y3vTSl5aEhWHK66ngtiS/c6byLf6y/ZBvODH1YkBM+MGtVL6jN38FdHUsZasCz9gFwYs/lJMVY9u7GL6wfYg==} engines: {node: '>=12'} cpu: [x64] @@ -784,7 +892,7 @@ packages: dev: true optional: true - /esbuild-windows-arm64/0.14.27: + /esbuild-windows-arm64@0.14.27: resolution: {integrity: sha512-I/reTxr6TFMcR5qbIkwRGvldMIaiBu2+MP0LlD7sOlNXrfqIl9uNjsuxFPGEG4IRomjfQ5q8WT+xlF/ySVkqKg==} engines: {node: '>=12'} cpu: [arm64] @@ -793,7 +901,7 @@ packages: dev: true optional: true - /esbuild/0.14.27: + /esbuild@0.14.27: resolution: {integrity: sha512-MZQt5SywZS3hA9fXnMhR22dv0oPGh6QtjJRIYbgL1AeqAoQZE+Qn5ppGYQAoHv/vq827flj4tIJ79Mrdiwk46Q==} engines: {node: '>=12'} hasBin: true @@ -821,29 +929,37 @@ packages: esbuild-windows-arm64: 0.14.27 dev: true - /escalade/3.1.1: + /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} dev: true - /escape-string-regexp/1.0.5: + /escape-string-regexp@1.0.5: resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=} engines: {node: '>=0.8.0'} dev: true - /estree-walker/1.0.1: + /estree-walker@1.0.1: resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} dev: true - /estree-walker/2.0.2: + /estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} dev: true - /fs.realpath/1.0.0: + /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.0.2 + dev: true + + /fs.realpath@1.0.0: resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=} dev: true - /fsevents/2.3.2: + /fsevents@2.3.2: resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] @@ -851,16 +967,28 @@ packages: dev: true optional: true - /function-bind/1.1.1: + /function-bind@1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} dev: true - /gensync/1.0.0-beta.2: + /gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} dev: true - /glob/7.2.0: + /glob@10.3.3: + resolution: {integrity: sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + dependencies: + foreground-child: 3.1.1 + jackspeak: 2.2.1 + minimatch: 9.0.3 + minipass: 7.0.2 + path-scurry: 1.10.1 + dev: true + + /glob@7.2.0: resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} dependencies: fs.realpath: 1.0.0 @@ -871,98 +999,127 @@ packages: path-is-absolute: 1.0.1 dev: true - /globals/11.12.0: + /globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} dev: true - /has-flag/3.0.0: + /has-flag@3.0.0: resolution: {integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0=} engines: {node: '>=4'} dev: true - /has/1.0.3: + /has@1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} engines: {node: '>= 0.4.0'} dependencies: function-bind: 1.1.1 dev: true - /html-entities/2.3.2: + /html-entities@2.3.2: resolution: {integrity: sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==} dev: true - /inflight/1.0.6: + /inflight@1.0.6: resolution: {integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=} dependencies: once: 1.4.0 wrappy: 1.0.2 dev: true - /inherits/2.0.4: + /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} dev: true - /is-core-module/2.8.1: + /is-core-module@2.8.1: resolution: {integrity: sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==} dependencies: has: 1.0.3 dev: true - /is-module/1.0.0: + /is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + dev: true + + /is-module@1.0.0: resolution: {integrity: sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=} dev: true - /is-reference/1.2.1: + /is-reference@1.2.1: resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} dependencies: '@types/estree': 0.0.51 dev: true - /is-what/4.1.7: + /is-what@4.1.7: resolution: {integrity: sha512-DBVOQNiPKnGMxRMLIYSwERAS5MVY1B7xYiGnpgctsOFvVDz9f9PFXXxMcTOHuoqYp4NK9qFYQaIC1NRRxLMpBQ==} engines: {node: '>=12.13'} dev: true - /joycon/3.1.1: + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + dev: true + + /jackspeak@2.2.1: + resolution: {integrity: sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw==} + 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: + /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - dev: true - /jsesc/2.5.2: + /jsesc@2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} hasBin: true dev: true - /json5/2.2.1: + /json5@2.2.1: resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==} engines: {node: '>=6'} hasBin: true dev: true - /jsonc-parser/3.0.0: + /jsonc-parser@3.0.0: resolution: {integrity: sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==} dev: true - /magic-string/0.25.9: + /loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + dependencies: + js-tokens: 4.0.0 + dev: false + + /lru-cache@10.0.0: + resolution: {integrity: sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw==} + engines: {node: 14 || >=16.14} + dev: true + + /magic-string@0.25.9: resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} dependencies: sourcemap-codec: 1.4.8 dev: true - /magic-string/0.26.1: + /magic-string@0.26.1: resolution: {integrity: sha512-ndThHmvgtieXe8J/VGPjG+Apu7v7ItcD5mhEIvOscWjPF/ccOiLxHaSuCAS2G+3x4GKsAbT8u7zdyamupui8Tg==} engines: {node: '>=12'} dependencies: sourcemap-codec: 1.4.8 dev: true - /merge-anything/5.0.2: + /merge-anything@5.0.2: resolution: {integrity: sha512-POPQBWkBC0vxdgzRJ2Mkj4+2NTKbvkHo93ih+jGDhNMLzIw+rYKjO7949hOQM2X7DxMHH1uoUkwWFLIzImw7gA==} engines: {node: '>=12.13'} dependencies: @@ -970,51 +1127,81 @@ packages: ts-toolbelt: 9.6.0 dev: true - /minimatch/3.1.2: + /minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 dev: true - /ms/2.1.2: + /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.2: + resolution: {integrity: sha512-eL79dXrE1q9dBbDCLg7xfn/vl7MS4F1gvJAgjJrQli/jbQWdUttuVawphqpffoIYfRdq78LHx6GP4bU/EQ2ATA==} + engines: {node: '>=16 || 14 >=14.17'} + dev: true + + /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} dev: true - /nanoid/3.3.2: + /nanoid@3.3.2: resolution: {integrity: sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true dev: true - /node-releases/2.0.2: + /node-releases@2.0.2: resolution: {integrity: sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==} dev: true - /once/1.4.0: + /object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + dev: false + + /once@1.4.0: resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=} dependencies: wrappy: 1.0.2 dev: true - /path-is-absolute/1.0.1: + /path-is-absolute@1.0.1: resolution: {integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18=} engines: {node: '>=0.10.0'} dev: true - /path-parse/1.0.7: + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + dev: true + + /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} dev: true - /picocolors/1.0.0: + /path-scurry@1.10.1: + resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + lru-cache: 10.0.0 + minipass: 7.0.2 + dev: true + + /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} dev: true - /picomatch/2.3.1: + /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} dev: true - /postcss/8.4.12: + /postcss@8.4.12: resolution: {integrity: sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==} engines: {node: ^10 || ^12 || >=14} dependencies: @@ -1023,7 +1210,15 @@ packages: source-map-js: 1.0.2 dev: true - /resolve/1.22.0: + /react@17.0.2: + resolution: {integrity: sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==} + engines: {node: '>=0.10.0'} + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + dev: false + + /resolve@1.22.0: resolution: {integrity: sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==} hasBin: true dependencies: @@ -1032,7 +1227,15 @@ packages: supports-preserve-symlinks-flag: 1.0.0 dev: true - /rollup-plugin-dts/4.2.0: + /rimraf@5.0.1: + resolution: {integrity: sha512-OfFZdwtd3lZ+XZzYP/6gTACubwFcHdLRqS9UX3UwpU2dnGQYkPFISRwvM3w9IiB2w7bW5qGo/uAwE4SmXXSKvg==} + engines: {node: '>=14'} + hasBin: true + dependencies: + glob: 10.3.3 + dev: true + + /rollup-plugin-dts@4.2.0(rollup@2.70.1)(typescript@4.6.3): resolution: {integrity: sha512-lx6irWVhz/x4//tIqRhzk4FOqGQ0n37ZM2wpPCn4uafl/EmiV92om7ZdAsq7Bzho6C+Xh5GfsyuP9H+Udv72Lg==} engines: {node: '>=v12.22.10'} peerDependencies: @@ -1040,11 +1243,13 @@ packages: typescript: ^4.1 dependencies: magic-string: 0.26.1 + rollup: 2.70.1 + typescript: 4.6.3 optionalDependencies: '@babel/code-frame': 7.16.7 dev: true - /rollup-plugin-esbuild/4.8.2_esbuild@0.14.27: + /rollup-plugin-esbuild@4.8.2(esbuild@0.14.27)(rollup@2.70.1): resolution: {integrity: sha512-wsaYNOjzTb6dN1qCIZsMZ7Q0LWiPJklYs2TDI8vJA2LUbvtPUY+17TC8C0vSat3jPMInfR9XWKdA7ttuwkjsGQ==} engines: {node: '>=12'} peerDependencies: @@ -1057,11 +1262,12 @@ packages: esbuild: 0.14.27 joycon: 3.1.1 jsonc-parser: 3.0.0 + rollup: 2.70.1 transitivePeerDependencies: - supports-color dev: true - /rollup/2.70.1: + /rollup@2.70.1: resolution: {integrity: sha512-CRYsI5EuzLbXdxC6RnYhOuRdtz4bhejPMSWjsFLfVM/7w/85n2szZv6yExqUXsBdz5KT8eoubeyDUDjhLHEslA==} engines: {node: '>=10.0.0'} hasBin: true @@ -1069,24 +1275,41 @@ packages: fsevents: 2.3.2 dev: true - /safe-buffer/5.1.2: + /safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} dev: true - /semver/6.3.0: + /semver@6.3.0: resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} hasBin: true dev: true - /slash/3.0.0: + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + dev: true + + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + dev: true + + /signal-exit@4.0.2: + resolution: {integrity: sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==} + engines: {node: '>=14'} + dev: true + + /slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} dev: true - /solid-js/1.3.13: + /solid-js@1.3.13: resolution: {integrity: sha512-1EBEIW9u2yqT5QNjFdvz/tMAoKsDdaRA2Jbgykd2Dt13Ia0D4mV+BFvPkOaseSyu7DsMKS23+ZZofV8BVKmpuQ==} - /solid-refresh/0.4.0_solid-js@1.3.13: + /solid-refresh@0.4.0(solid-js@1.3.13): resolution: {integrity: sha512-5XCUz845n/sHPzKK2i2G2EeV61tAmzv6SqzqhXcPaYhrgzVy7nKTQaBpKK8InKrriq9Z2JFF/mguIU00t/73xw==} peerDependencies: solid-js: ^1.3.0 @@ -1097,56 +1320,88 @@ packages: solid-js: 1.3.13 dev: true - /source-map-js/1.0.2: + /source-map-js@1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} dev: true - /source-map/0.5.7: + /source-map@0.5.7: resolution: {integrity: sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=} engines: {node: '>=0.10.0'} dev: true - /sourcemap-codec/1.4.8: + /sourcemap-codec@1.4.8: resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} dev: true - /supports-color/5.5.0: + /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 + + /supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} dependencies: has-flag: 3.0.0 dev: true - /supports-preserve-symlinks-flag/1.0.0: + /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} dev: true - /to-fast-properties/2.0.0: + /to-fast-properties@2.0.0: resolution: {integrity: sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=} engines: {node: '>=4'} dev: true - /ts-toolbelt/9.6.0: + /ts-toolbelt@9.6.0: resolution: {integrity: sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==} dev: true - /typescript/4.6.3: + /typescript@4.6.3: resolution: {integrity: sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==} engines: {node: '>=4.2.0'} hasBin: true dev: true - /vite-plugin-solid/2.2.6: + /vite-plugin-solid@2.2.6: resolution: {integrity: sha512-J1RnmqkZZJSNYDW7vZj0giKKHLWGr9tS/gxR70WDSTYfhyXrgukbZdIfSEFbtrsg8ZiQ2t2zXcvkWoeefenqKw==} dependencies: '@babel/core': 7.17.8 - '@babel/preset-typescript': 7.16.7_@babel+core@7.17.8 - babel-preset-solid: 1.3.13_@babel+core@7.17.8 + '@babel/preset-typescript': 7.16.7(@babel/core@7.17.8) + babel-preset-solid: 1.3.13(@babel/core@7.17.8) merge-anything: 5.0.2 solid-js: 1.3.13 - solid-refresh: 0.4.0_solid-js@1.3.13 + solid-refresh: 0.4.0(solid-js@1.3.13) vite: 2.9.1 transitivePeerDependencies: - less @@ -1155,7 +1410,7 @@ packages: - supports-color dev: true - /vite/2.9.1: + /vite@2.9.1: resolution: {integrity: sha512-vSlsSdOYGcYEJfkQ/NeLXgnRv5zZfpAsdztkIrs7AZHV8RCMZQkwjo4DS5BnrYTqoWqLoUe1Cah4aVO4oNNqCQ==} engines: {node: '>=12.2.0'} hasBin: true @@ -1179,6 +1434,32 @@ packages: fsevents: 2.3.2 dev: true - /wrappy/1.0.2: + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + 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: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=} dev: true diff --git a/spring/package.json b/spring/package.json index a238c19..c97cf1f 100644 --- a/spring/package.json +++ b/spring/package.json @@ -1,6 +1,6 @@ { "name": "solid-spring", - "version": "0.0.7", + "version": "0.1.0", "type": "module", "description": "Like react-spring, but for SolidJS", "info": "solid-spring is a spring-physics first animation library for SolidJS based on react-spring/core", @@ -41,6 +41,7 @@ }, "homepage": "https://github.com/aslemammad/solid-spring#readme", "devDependencies": { + "rimraf": "^5.0.1", "rollup-plugin-dts": "^4.2.0", "solid-js": "^1.3.13" }, From faf890eb55d928dff2ce1c50b5d65fdb9ad4f8e5 Mon Sep 17 00:00:00 2001 From: Garth Williams Date: Fri, 21 Jul 2023 12:44:52 +0200 Subject: [PATCH 2/5] Update dependencies, add prettier and eslint, fix build --- .prettierrc.json | 6 + README.md | 11 +- demo/.gitignore | 2 +- demo/index.html | 2 +- demo/package.json | 24 +- demo/src/App.tsx | 23 +- demo/src/index.tsx | 6 +- demo/vite.config.ts | 10 +- package.json | 22 +- pnpm-lock.yaml | 3157 +++++++++++++---- spring/.eslintrc.cjs | 71 + spring/package.json | 50 +- spring/rollup.config.js | 46 +- spring/src/AnimatedArray.ts | 12 +- spring/src/AnimatedObject.ts | 18 +- spring/src/AnimatedString.ts | 8 +- spring/src/AnimatedStyle.ts | 58 +- spring/src/Animation.ts | 6 +- spring/src/AnimationConfig.ts | 16 +- spring/src/AnimationResult.ts | 12 +- spring/src/Controller.ts | 115 +- spring/src/FrameLoop.ts | 8 +- spring/src/FrameValue.ts | 84 +- spring/src/Interpolation.ts | 40 +- spring/src/SpringRef.ts | 47 +- spring/src/SpringValue.ts | 715 ++-- spring/src/animated.ts | 80 +- spring/src/applyAnimatedValues.ts | 75 +- spring/src/context.ts | 2 +- spring/src/createHost.ts | 157 +- spring/src/createInterpolator.ts | 67 +- spring/src/fluids.ts | 83 +- spring/src/globals.ts | 200 +- spring/src/index.ts | 24 +- spring/src/normalizeColor.ts | 111 +- spring/src/primitives.ts | 273 +- spring/src/rafz.ts | 48 +- spring/src/runAsync.ts | 200 +- spring/src/scheduleProps.ts | 22 +- spring/src/solid/createSpring.ts | 51 +- spring/src/solid/createSprings.ts | 145 +- spring/src/utils.ts | 686 ++-- .../src/{withAnimated.tsx => withAnimated.ts} | 78 +- 43 files changed, 4469 insertions(+), 2402 deletions(-) create mode 100644 .prettierrc.json create mode 100644 spring/.eslintrc.cjs rename spring/src/{withAnimated.tsx => withAnimated.ts} (57%) diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 0000000..23bf42c --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1,6 @@ +{ + "semi": false, + "singleQuote": true, + "bracketSameLine": true, + "tabWidth": 2 +} diff --git a/README.md b/README.md index 239d98b..8ed7819 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,3 @@ -

solid-spring

A port of react-spring, for SolidJS

@@ -24,8 +23,8 @@ const styles = createSpring({ The API is similar to what we have in react-spring, with small differences to make the library compatible with SolidJS ## Preview -Click on the below gifs for exploring the code of each preview (ported from Poimandres examples). +Click on the below gifs for exploring the code of each preview (ported from Poimandres examples).

@@ -37,6 +36,7 @@ Click on the below gifs for exploring the code of each preview (ported from Poim ```shell npm install solid-spring ``` + ## Examples [Hello (opacity animation)](https://codesandbox.io/s/hello-qe3eq5?file=/index.tsx) @@ -48,10 +48,11 @@ npm install solid-spring ## API ### `createSpring` + > Turns values into animated-values. ```jsx -import { createSpring, animated } from "solid-spring"; +import { createSpring, animated } from 'solid-spring' function ChainExample() { const styles = createSpring({ @@ -66,7 +67,9 @@ function ChainExample() { return I will fade in and out } ``` + `createSpring` also takes a function in case you want to pass a reactive value as a style! + ```jsx const [disabled, setDisabled] = createSignal(false) @@ -74,7 +77,9 @@ const styles = createSpring(() => ({ pause: disabled(), })) ``` + ### `createSprings` + > Creates multiple springs, each with its own config. Use it for static lists, etc. Similar to `useSprings` in react-spring, It takes number or a function that returns a number (for reactivity) as the first argument, and a list of springs or a function that returns a spring as the second argument. diff --git a/demo/.gitignore b/demo/.gitignore index 76add87..f06235c 100644 --- a/demo/.gitignore +++ b/demo/.gitignore @@ -1,2 +1,2 @@ node_modules -dist \ No newline at end of file +dist diff --git a/demo/index.html b/demo/index.html index 48c59fc..7d9b4f7 100644 --- a/demo/index.html +++ b/demo/index.html @@ -1,4 +1,4 @@ - + diff --git a/demo/package.json b/demo/package.json index 6cfb48c..834687c 100644 --- a/demo/package.json +++ b/demo/package.json @@ -2,22 +2,22 @@ "name": "vite-template-solid", "version": "0.0.0", "description": "", + "license": "MIT", "scripts": { "start": "vite", - "dev": "vite", + "dev": "vite --clearScreen=false", "build": "vite build", - "serve": "vite preview" - }, - "license": "MIT", - "devDependencies": { - "typescript": "^4.6.3", - "vite": "^2.8.6", - "vite-plugin-solid": "^2.2.6" + "serve": "vite preview", + "prettier": "prettier --write \"src/**/*.{js,json,ts,tsx,css,scss,html}\"" }, "dependencies": { - "@react-spring/animated": "^9.4.4", - "@react-spring/core": "^9.4.4", - "solid-js": "^1.3.13", - "solid-spring": "workspace:^0.1.0" + "solid-js": "^1.7.8", + "solid-spring": "workspace:^" + }, + "devDependencies": { + "prettier": "^3.0.0", + "typescript": "^5.1.6", + "vite": "^4.4.6", + "vite-plugin-solid": "^2.7.0" } } diff --git a/demo/src/App.tsx b/demo/src/App.tsx index d77e170..8bb35ef 100644 --- a/demo/src/App.tsx +++ b/demo/src/App.tsx @@ -1,11 +1,8 @@ -import { - Component, - createSignal, -} from "solid-js"; -import { createSpring, animated, config } from "solid-spring"; +import { Component, createSignal } from 'solid-js' +import { createSpring, animated, config } from 'solid-spring' function ChainExample() { - const [flip, set] = createSignal(false); + const [flip, set] = createSignal(false) const styles = createSpring(() => { return { @@ -16,16 +13,16 @@ function ChainExample() { delay: 200, config: config.molasses, onRest: () => { - set(!flip()); + set(!flip()) }, - }; - }); + } + }) - return hello; + return hello } const App: Component = () => { - return ; -}; + return +} -export default App; +export default App diff --git a/demo/src/index.tsx b/demo/src/index.tsx index 2006c75..2979cc8 100644 --- a/demo/src/index.tsx +++ b/demo/src/index.tsx @@ -1,6 +1,6 @@ /* @refresh reload */ -import { render } from 'solid-js/web'; +import { render } from 'solid-js/web' -import App from './App'; +import App from './App' -render(() => , document.getElementById('root') as HTMLElement); +render(() => , document.getElementById('root') as HTMLElement) diff --git a/demo/vite.config.ts b/demo/vite.config.ts index d52d794..22b9712 100644 --- a/demo/vite.config.ts +++ b/demo/vite.config.ts @@ -1,10 +1,12 @@ -import { defineConfig } from 'vite'; -import solidPlugin from 'vite-plugin-solid'; +import { defineConfig } from 'vite' +import solidPlugin from 'vite-plugin-solid' export default defineConfig({ plugins: [solidPlugin()], + server: { + port: 3000, + }, build: { target: 'esnext', - polyfillDynamicImport: false, }, -}); +}) diff --git a/package.json b/package.json index fc00aa1..375d8cf 100644 --- a/package.json +++ b/package.json @@ -1,33 +1,27 @@ { "name": "@monorepo/solid-spring", "version": "0.0.0", + "description": "Like react-spring, but for SolidJS", + "info": "solid-spring is a spring-physics first animation library for SolidJS based on react-spring/core", + "license": "MIT", + "author": "M. Bagher Abiat", + "contributors": [], + "homepage": "https://github.com/aslemammad/solid-spring#readme", "repository": { "type": "git", "url": "git+https://github.com/aslemammad/solid-spring.git" }, - "license": "MIT", "bugs": { "url": "https://github.com/aslemammad/solid-spring/issues" }, - "homepage": "https://github.com/aslemammad/solid-spring#readme", - "description": "Like react-spring, but for SolidJS", - "info": "solid-spring is a spring-physics first animation library for SolidJS based on react-spring/core", - "contributors": [], - "scripts": {}, "keywords": [ "best_ecosystem", "solidhack", "react-spring", "solid" ], - "author": "M. Bagher Abiat", - "license": "MIT", + "scripts": {}, "devDependencies": { - "@rollup/plugin-alias": "^3.1.9", - "@rollup/plugin-commonjs": "^21.0.2", - "@rollup/plugin-json": "^4.1.0", - "@rollup/plugin-node-resolve": "^13.1.3", - "esbuild": "^0.14.27", - "rollup-plugin-esbuild": "^4.8.2" + "prettier": "^3.0.0" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2308f42..32f9cef 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,642 +8,1300 @@ importers: .: devDependencies: - '@rollup/plugin-alias': - specifier: ^3.1.9 - version: 3.1.9(rollup@2.70.1) - '@rollup/plugin-commonjs': - specifier: ^21.0.2 - version: 21.0.2(rollup@2.70.1) - '@rollup/plugin-json': - specifier: ^4.1.0 - version: 4.1.0(rollup@2.70.1) - '@rollup/plugin-node-resolve': - specifier: ^13.1.3 - version: 13.1.3(rollup@2.70.1) - esbuild: - specifier: ^0.14.27 - version: 0.14.27 - rollup-plugin-esbuild: - specifier: ^4.8.2 - version: 4.8.2(esbuild@0.14.27)(rollup@2.70.1) + prettier: + specifier: ^3.0.0 + version: 3.0.0 demo: dependencies: - '@react-spring/animated': - specifier: ^9.4.4 - version: 9.4.4(react@17.0.2) - '@react-spring/core': - specifier: ^9.4.4 - version: 9.4.4(react@17.0.2) solid-js: - specifier: ^1.3.13 - version: 1.3.13 + specifier: ^1.7.8 + version: 1.7.8 solid-spring: - specifier: workspace:^0.1.0 + specifier: workspace:^ version: link:../spring devDependencies: + prettier: + specifier: ^3.0.0 + version: 3.0.0 typescript: - specifier: ^4.6.3 - version: 4.6.3 + specifier: ^5.1.6 + version: 5.1.6 vite: - specifier: ^2.8.6 - version: 2.9.1 + specifier: ^4.4.6 + version: 4.4.6 vite-plugin-solid: - specifier: ^2.2.6 - version: 2.2.6 + specifier: ^2.7.0 + version: 2.7.0(solid-js@1.7.8)(vite@4.4.6) spring: devDependencies: + '@rollup/plugin-alias': + specifier: ^5.0.0 + version: 5.0.0(rollup@3.26.3) + '@rollup/plugin-commonjs': + specifier: ^25.0.3 + version: 25.0.3(rollup@3.26.3) + '@rollup/plugin-json': + specifier: ^6.0.0 + version: 6.0.0(rollup@3.26.3) + '@rollup/plugin-node-resolve': + specifier: ^15.1.0 + version: 15.1.0(rollup@3.26.3) + '@typescript-eslint/eslint-plugin': + specifier: ^6.0.0 + version: 6.0.0(@typescript-eslint/parser@6.0.0)(eslint@8.45.0)(typescript@5.1.6) + '@typescript-eslint/parser': + specifier: ^6.0.0 + version: 6.0.0(eslint@8.45.0)(typescript@5.1.6) + esbuild: + specifier: ^0.18.15 + version: 0.18.15 + eslint-config-prettier: + specifier: ^8.8.0 + version: 8.8.0(eslint@8.45.0) + eslint-plugin-prettier: + specifier: ^5.0.0 + version: 5.0.0(eslint-config-prettier@8.8.0)(eslint@8.45.0)(prettier@3.0.0) + eslint-plugin-solid: + specifier: ^0.12.1 + version: 0.12.1(eslint@8.45.0)(typescript@5.1.6) + prettier: + specifier: ^3.0.0 + version: 3.0.0 rimraf: specifier: ^5.0.1 version: 5.0.1 rollup-plugin-dts: - specifier: ^4.2.0 - version: 4.2.0(rollup@2.70.1)(typescript@4.6.3) + specifier: ^5.3.0 + version: 5.3.0(rollup@3.26.3)(typescript@5.1.6) + rollup-plugin-esbuild: + specifier: ^5.0.0 + version: 5.0.0(esbuild@0.18.15)(rollup@3.26.3) solid-js: - specifier: ^1.3.13 - version: 1.3.13 + specifier: ^1.7.8 + version: 1.7.8 packages: - /@ampproject/remapping@2.1.2: - resolution: {integrity: sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==} + /@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/trace-mapping': 0.3.4 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.18 dev: true - /@babel/code-frame@7.16.7: - resolution: {integrity: sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==} + /@babel/code-frame@7.22.5: + resolution: {integrity: sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/highlight': 7.16.10 + '@babel/highlight': 7.22.5 dev: true - /@babel/compat-data@7.17.7: - resolution: {integrity: sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==} + /@babel/compat-data@7.22.9: + resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==} engines: {node: '>=6.9.0'} dev: true - /@babel/core@7.17.8: - resolution: {integrity: sha512-OdQDV/7cRBtJHLSOBqqbYNkOcydOgnX59TZx4puf41fzcVtN3e/4yqY8lMQsK+5X2lJtAdmA+6OHqsj1hBJ4IQ==} + /@babel/core@7.22.9: + resolution: {integrity: sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w==} engines: {node: '>=6.9.0'} dependencies: - '@ampproject/remapping': 2.1.2 - '@babel/code-frame': 7.16.7 - '@babel/generator': 7.17.7 - '@babel/helper-compilation-targets': 7.17.7(@babel/core@7.17.8) - '@babel/helper-module-transforms': 7.17.7 - '@babel/helpers': 7.17.8 - '@babel/parser': 7.17.8 - '@babel/template': 7.16.7 - '@babel/traverse': 7.17.3 - '@babel/types': 7.17.0 - convert-source-map: 1.8.0 + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.22.5 + '@babel/generator': 7.22.9 + '@babel/helper-compilation-targets': 7.22.9(@babel/core@7.22.9) + '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.9) + '@babel/helpers': 7.22.6 + '@babel/parser': 7.22.7 + '@babel/template': 7.22.5 + '@babel/traverse': 7.22.8 + '@babel/types': 7.22.5 + convert-source-map: 1.9.0 debug: 4.3.4 gensync: 1.0.0-beta.2 - json5: 2.2.1 - semver: 6.3.0 + json5: 2.2.3 + semver: 6.3.1 transitivePeerDependencies: - supports-color dev: true - /@babel/generator@7.17.7: - resolution: {integrity: sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==} + /@babel/generator@7.22.9: + resolution: {integrity: sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.17.0 + '@babel/types': 7.22.5 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.18 jsesc: 2.5.2 - source-map: 0.5.7 dev: true - /@babel/helper-annotate-as-pure@7.16.7: - resolution: {integrity: sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==} + /@babel/helper-annotate-as-pure@7.22.5: + resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.17.0 + '@babel/types': 7.22.5 dev: true - /@babel/helper-compilation-targets@7.17.7(@babel/core@7.17.8): - resolution: {integrity: sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==} + /@babel/helper-compilation-targets@7.22.9(@babel/core@7.22.9): + resolution: {integrity: sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/compat-data': 7.17.7 - '@babel/core': 7.17.8 - '@babel/helper-validator-option': 7.16.7 - browserslist: 4.20.2 - semver: 6.3.0 + '@babel/compat-data': 7.22.9 + '@babel/core': 7.22.9 + '@babel/helper-validator-option': 7.22.5 + browserslist: 4.21.9 + lru-cache: 5.1.1 + semver: 6.3.1 dev: true - /@babel/helper-create-class-features-plugin@7.17.6(@babel/core@7.17.8): - resolution: {integrity: sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg==} + /@babel/helper-create-class-features-plugin@7.22.9(@babel/core@7.22.9): + resolution: {integrity: sha512-Pwyi89uO4YrGKxL/eNJ8lfEH55DnRloGPOseaA8NFNL6jAUnn+KccaISiFazCj5IolPPDjGSdzQzXVzODVRqUQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.17.8 - '@babel/helper-annotate-as-pure': 7.16.7 - '@babel/helper-environment-visitor': 7.16.7 - '@babel/helper-function-name': 7.16.7 - '@babel/helper-member-expression-to-functions': 7.17.7 - '@babel/helper-optimise-call-expression': 7.16.7 - '@babel/helper-replace-supers': 7.16.7 - '@babel/helper-split-export-declaration': 7.16.7 - transitivePeerDependencies: - - supports-color + '@babel/core': 7.22.9 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-function-name': 7.22.5 + '@babel/helper-member-expression-to-functions': 7.22.5 + '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-replace-supers': 7.22.9(@babel/core@7.22.9) + '@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.16.7: - resolution: {integrity: sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==} + /@babel/helper-environment-visitor@7.22.5: + resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.17.0 dev: true - /@babel/helper-function-name@7.16.7: - resolution: {integrity: sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==} + /@babel/helper-function-name@7.22.5: + resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-get-function-arity': 7.16.7 - '@babel/template': 7.16.7 - '@babel/types': 7.17.0 + '@babel/template': 7.22.5 + '@babel/types': 7.22.5 dev: true - /@babel/helper-get-function-arity@7.16.7: - resolution: {integrity: sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==} + /@babel/helper-hoist-variables@7.22.5: + resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.17.0 + '@babel/types': 7.22.5 dev: true - /@babel/helper-hoist-variables@7.16.7: - resolution: {integrity: sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==} + /@babel/helper-member-expression-to-functions@7.22.5: + resolution: {integrity: sha512-aBiH1NKMG0H2cGZqspNvsaBe6wNGjbJjuLy29aU+eDZjSbbN53BaxlpB02xm9v34pLTZ1nIQPFYn2qMZoa5BQQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.17.0 + '@babel/types': 7.22.5 dev: true - /@babel/helper-member-expression-to-functions@7.17.7: - resolution: {integrity: sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==} + /@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.17.0 + '@babel/types': 7.22.5 dev: true - /@babel/helper-module-imports@7.16.0: - resolution: {integrity: sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==} + /@babel/helper-module-imports@7.22.5: + resolution: {integrity: sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.17.0 + '@babel/types': 7.22.5 dev: true - /@babel/helper-module-imports@7.16.7: - resolution: {integrity: sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==} + /@babel/helper-module-transforms@7.22.9(@babel/core@7.22.9): + resolution: {integrity: sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 dependencies: - '@babel/types': 7.17.0 + '@babel/core': 7.22.9 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-module-imports': 7.22.5 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.5 dev: true - /@babel/helper-module-transforms@7.17.7: - resolution: {integrity: sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==} + /@babel/helper-optimise-call-expression@7.22.5: + resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-environment-visitor': 7.16.7 - '@babel/helper-module-imports': 7.16.7 - '@babel/helper-simple-access': 7.17.7 - '@babel/helper-split-export-declaration': 7.16.7 - '@babel/helper-validator-identifier': 7.16.7 - '@babel/template': 7.16.7 - '@babel/traverse': 7.17.3 - '@babel/types': 7.17.0 - transitivePeerDependencies: - - supports-color + '@babel/types': 7.22.5 dev: true - /@babel/helper-optimise-call-expression@7.16.7: - resolution: {integrity: sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==} + /@babel/helper-plugin-utils@7.22.5: + resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.17.0 dev: true - /@babel/helper-plugin-utils@7.16.7: - resolution: {integrity: sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==} + /@babel/helper-replace-supers@7.22.9(@babel/core@7.22.9): + resolution: {integrity: sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==} engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-member-expression-to-functions': 7.22.5 + '@babel/helper-optimise-call-expression': 7.22.5 dev: true - /@babel/helper-replace-supers@7.16.7: - resolution: {integrity: sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==} + /@babel/helper-simple-access@7.22.5: + resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-environment-visitor': 7.16.7 - '@babel/helper-member-expression-to-functions': 7.17.7 - '@babel/helper-optimise-call-expression': 7.16.7 - '@babel/traverse': 7.17.3 - '@babel/types': 7.17.0 - transitivePeerDependencies: - - supports-color + '@babel/types': 7.22.5 dev: true - /@babel/helper-simple-access@7.17.7: - resolution: {integrity: sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==} + /@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.17.0 + '@babel/types': 7.22.5 dev: true - /@babel/helper-split-export-declaration@7.16.7: - resolution: {integrity: sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==} + /@babel/helper-split-export-declaration@7.22.6: + resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.17.0 + '@babel/types': 7.22.5 dev: true - /@babel/helper-validator-identifier@7.16.7: - resolution: {integrity: sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==} + /@babel/helper-string-parser@7.22.5: + resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-validator-option@7.16.7: - resolution: {integrity: sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==} + /@babel/helper-validator-identifier@7.22.5: + resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==} engines: {node: '>=6.9.0'} dev: true - /@babel/helpers@7.17.8: - resolution: {integrity: sha512-QcL86FGxpfSJwGtAvv4iG93UL6bmqBdmoVY0CMCU2g+oD2ezQse3PT5Pa+jiD6LJndBQi0EDlpzOWNlLuhz5gw==} + /@babel/helper-validator-option@7.22.5: + resolution: {integrity: sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/helpers@7.22.6: + resolution: {integrity: sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.16.7 - '@babel/traverse': 7.17.3 - '@babel/types': 7.17.0 + '@babel/template': 7.22.5 + '@babel/traverse': 7.22.8 + '@babel/types': 7.22.5 transitivePeerDependencies: - supports-color dev: true - /@babel/highlight@7.16.10: - resolution: {integrity: sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==} + /@babel/highlight@7.22.5: + resolution: {integrity: sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-validator-identifier': 7.16.7 + '@babel/helper-validator-identifier': 7.22.5 chalk: 2.4.2 js-tokens: 4.0.0 dev: true - /@babel/parser@7.17.8: - resolution: {integrity: sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ==} + /@babel/parser@7.22.7: + resolution: {integrity: sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.17.0 + '@babel/types': 7.22.5 dev: true - /@babel/plugin-syntax-jsx@7.16.7(@babel/core@7.17.8): - resolution: {integrity: sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==} + /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.16.7 + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-typescript@7.16.7(@babel/core@7.17.8): - resolution: {integrity: sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==} + /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.16.7 + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-typescript@7.16.8(@babel/core@7.17.8): - resolution: {integrity: sha512-bHdQ9k7YpBDO2d0NVfkj51DpQcvwIzIusJ7mEUaMlbZq3Kt/U47j24inXZHQ5MDiYpCs+oZiwnXyKedE8+q7AQ==} + /@babel/plugin-transform-modules-commonjs@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.8 - '@babel/helper-create-class-features-plugin': 7.17.6(@babel/core@7.17.8) - '@babel/helper-plugin-utils': 7.16.7 - '@babel/plugin-syntax-typescript': 7.16.7(@babel/core@7.17.8) - transitivePeerDependencies: - - supports-color + '@babel/core': 7.22.9 + '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.9) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-simple-access': 7.22.5 dev: true - /@babel/preset-typescript@7.16.7(@babel/core@7.17.8): - resolution: {integrity: sha512-WbVEmgXdIyvzB77AQjGBEyYPZx+8tTsO50XtfozQrkW8QB2rLJpH2lgx0TRw5EJrBxOZQ+wCcyPVQvS8tjEHpQ==} + /@babel/plugin-transform-typescript@7.22.9(@babel/core@7.22.9): + resolution: {integrity: sha512-BnVR1CpKiuD0iobHPaM1iLvcwPYN2uVFAqoLVSpEDKWuOikoCv5HbKLxclhKYUXlWkX86DoZGtqI4XhbOsyrMg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.17.8 - '@babel/helper-plugin-utils': 7.16.7 - '@babel/helper-validator-option': 7.16.7 - '@babel/plugin-transform-typescript': 7.16.8(@babel/core@7.17.8) - transitivePeerDependencies: - - supports-color + '@babel/core': 7.22.9 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-create-class-features-plugin': 7.22.9(@babel/core@7.22.9) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.22.9) + dev: true + + /@babel/preset-typescript@7.22.5(@babel/core@7.22.9): + resolution: {integrity: sha512-YbPaal9LxztSGhmndR46FmAbkJ/1fAsw293tSU+I5E5h+cnJ3d4GTwyUgGYmOXJYdGA+uNePle4qbaRzj2NISQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.22.5 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-modules-commonjs': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-typescript': 7.22.9(@babel/core@7.22.9) dev: true - /@babel/template@7.16.7: - resolution: {integrity: sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==} + /@babel/template@7.22.5: + resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.16.7 - '@babel/parser': 7.17.8 - '@babel/types': 7.17.0 + '@babel/code-frame': 7.22.5 + '@babel/parser': 7.22.7 + '@babel/types': 7.22.5 dev: true - /@babel/traverse@7.17.3: - resolution: {integrity: sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==} + /@babel/traverse@7.22.8: + resolution: {integrity: sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.16.7 - '@babel/generator': 7.17.7 - '@babel/helper-environment-visitor': 7.16.7 - '@babel/helper-function-name': 7.16.7 - '@babel/helper-hoist-variables': 7.16.7 - '@babel/helper-split-export-declaration': 7.16.7 - '@babel/parser': 7.17.8 - '@babel/types': 7.17.0 + '@babel/code-frame': 7.22.5 + '@babel/generator': 7.22.9 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-function-name': 7.22.5 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.22.7 + '@babel/types': 7.22.5 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color dev: true - /@babel/types@7.17.0: - resolution: {integrity: sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==} + /@babel/types@7.22.5: + resolution: {integrity: sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-validator-identifier': 7.16.7 + '@babel/helper-string-parser': 7.22.5 + '@babel/helper-validator-identifier': 7.22.5 to-fast-properties: 2.0.0 dev: true - /@isaacs/cliui@8.0.2: - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + /@esbuild/android-arm64@0.18.15: + resolution: {integrity: sha512-NI/gnWcMl2kXt1HJKOn2H69SYn4YNheKo6NZt1hyfKWdMbaGadxjZIkcj4Gjk/WPxnbFXs9/3HjGHaknCqjrww==} 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 + cpu: [arm64] + os: [android] + requiresBuild: true dev: true + optional: true - /@jridgewell/resolve-uri@3.0.5: - resolution: {integrity: sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==} - engines: {node: '>=6.0.0'} + /@esbuild/android-arm@0.18.15: + resolution: {integrity: sha512-wlkQBWb79/jeEEoRmrxt/yhn5T1lU236OCNpnfRzaCJHZ/5gf82uYx1qmADTBWE0AR/v7FiozE1auk2riyQd3w==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true dev: true + optional: true - /@jridgewell/sourcemap-codec@1.4.11: - resolution: {integrity: sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==} + /@esbuild/android-x64@0.18.15: + resolution: {integrity: sha512-FM9NQamSaEm/IZIhegF76aiLnng1kEsZl2eve/emxDeReVfRuRNmvT28l6hoFD9TsCxpK+i4v8LPpEj74T7yjA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true dev: true + optional: true - /@jridgewell/trace-mapping@0.3.4: - resolution: {integrity: sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==} - dependencies: - '@jridgewell/resolve-uri': 3.0.5 - '@jridgewell/sourcemap-codec': 1.4.11 + /@esbuild/darwin-arm64@0.18.15: + resolution: {integrity: sha512-XmrFwEOYauKte9QjS6hz60FpOCnw4zaPAb7XV7O4lx1r39XjJhTN7ZpXqJh4sN6q60zbP6QwAVVA8N/wUyBH/w==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true dev: true + optional: true - /@pkgjs/parseargs@0.11.0: - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} + /@esbuild/darwin-x64@0.18.15: + resolution: {integrity: sha512-bMqBmpw1e//7Fh5GLetSZaeo9zSC4/CMtrVFdj+bqKPGJuKyfNJ5Nf2m3LknKZTS+Q4oyPiON+v3eaJ59sLB5A==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] requiresBuild: true dev: true optional: true - /@react-spring/animated@9.4.4(react@17.0.2): - resolution: {integrity: sha512-e9xnuBaUTD+NolKikUmrGWjX8AVCPyj1GcEgjgq9E+0sXKv46UY7cm2EmB6mUDTxWIDVKebARY++xT4nGDraBQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 - dependencies: - '@react-spring/shared': 9.4.4(react@17.0.2) - '@react-spring/types': 9.4.4 - react: 17.0.2 - dev: false - - /@react-spring/core@9.4.4(react@17.0.2): - resolution: {integrity: sha512-llgb0ljFyjMB0JhWsaFHOi9XFT8n1jBMVs1IFY2ipIBerWIRWrgUmIpakLPHTa4c4jwqTaDSwX90s2a0iN7dxQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 - dependencies: - '@react-spring/animated': 9.4.4(react@17.0.2) - '@react-spring/rafz': 9.4.4 - '@react-spring/shared': 9.4.4(react@17.0.2) - '@react-spring/types': 9.4.4 - react: 17.0.2 - dev: false + /@esbuild/freebsd-arm64@0.18.15: + resolution: {integrity: sha512-LoTK5N3bOmNI9zVLCeTgnk5Rk0WdUTrr9dyDAQGVMrNTh9EAPuNwSTCgaKOKiDpverOa0htPcO9NwslSE5xuLA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true - /@react-spring/rafz@9.4.4: - resolution: {integrity: sha512-5ki/sQ06Mdf8AuFstSt5zbNNicRT4LZogiJttDAww1ozhuvemafNWEHxhzcULgCPCDu2s7HsroaISV7+GQWrhw==} - dev: false + /@esbuild/freebsd-x64@0.18.15: + resolution: {integrity: sha512-62jX5n30VzgrjAjOk5orYeHFq6sqjvsIj1QesXvn5OZtdt5Gdj0vUNJy9NIpjfdNdqr76jjtzBJKf+h2uzYuTQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true - /@react-spring/shared@9.4.4(react@17.0.2): - resolution: {integrity: sha512-ySVgScDZlhm/+Iy2smY9i/DDrShArY0j6zjTS/Re1lasKnhq8qigoGiAxe8xMPJNlCaj3uczCqHy3TY9bKRtfQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 - dependencies: - '@react-spring/rafz': 9.4.4 - '@react-spring/types': 9.4.4 - react: 17.0.2 - dev: false + /@esbuild/linux-arm64@0.18.15: + resolution: {integrity: sha512-BWncQeuWDgYv0jTNzJjaNgleduV4tMbQjmk/zpPh/lUdMcNEAxy+jvneDJ6RJkrqloG7tB9S9rCrtfk/kuplsQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true - /@react-spring/types@9.4.4: - resolution: {integrity: sha512-KpxKt/D//q/t/6FBcde/RE36LKp8PpWu7kFEMLwpzMGl9RpcexunmYOQJWwmJWtkQjgE1YRr7DzBMryz6La1cQ==} - dev: false + /@esbuild/linux-arm@0.18.15: + resolution: {integrity: sha512-dT4URUv6ir45ZkBqhwZwyFV6cH61k8MttIwhThp2BGiVtagYvCToF+Bggyx2VI57RG4Fbt21f9TmXaYx0DeUJg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true - /@rollup/plugin-alias@3.1.9(rollup@2.70.1): - resolution: {integrity: sha512-QI5fsEvm9bDzt32k39wpOwZhVzRcL5ydcffUHMyLVaVaLeC70I8TJZ17F1z1eMoLu4E/UOcH9BWVkKpIKdrfiw==} - engines: {node: '>=8.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0 - dependencies: - rollup: 2.70.1 - slash: 3.0.0 + /@esbuild/linux-ia32@0.18.15: + resolution: {integrity: sha512-JPXORvgHRHITqfms1dWT/GbEY89u848dC08o0yK3fNskhp0t2TuNUnsrrSgOdH28ceb1hJuwyr8R/1RnyPwocw==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true dev: true + optional: true - /@rollup/plugin-commonjs@21.0.2(rollup@2.70.1): - resolution: {integrity: sha512-d/OmjaLVO4j/aQX69bwpWPpbvI3TJkQuxoAk7BH8ew1PyoMBLTOuvJTjzG8oEoW7drIIqB0KCJtfFLu/2GClWg==} - engines: {node: '>= 8.0.0'} - peerDependencies: - rollup: ^2.38.3 - dependencies: - '@rollup/pluginutils': 3.1.0(rollup@2.70.1) - commondir: 1.0.1 - estree-walker: 2.0.2 - glob: 7.2.0 - is-reference: 1.2.1 - magic-string: 0.25.9 - resolve: 1.22.0 - rollup: 2.70.1 + /@esbuild/linux-loong64@0.18.15: + resolution: {integrity: sha512-kArPI0DopjJCEplsVj/H+2Qgzz7vdFSacHNsgoAKpPS6W/Ndh8Oe24HRDQ5QCu4jHgN6XOtfFfLpRx3TXv/mEg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true dev: true + optional: true - /@rollup/plugin-json@4.1.0(rollup@2.70.1): - resolution: {integrity: sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==} - peerDependencies: - rollup: ^1.20.0 || ^2.0.0 - dependencies: - '@rollup/pluginutils': 3.1.0(rollup@2.70.1) - rollup: 2.70.1 + /@esbuild/linux-mips64el@0.18.15: + resolution: {integrity: sha512-b/tmngUfO02E00c1XnNTw/0DmloKjb6XQeqxaYuzGwHe0fHVgx5/D6CWi+XH1DvkszjBUkK9BX7n1ARTOst59w==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true dev: true + optional: true - /@rollup/plugin-node-resolve@13.1.3(rollup@2.70.1): - resolution: {integrity: sha512-BdxNk+LtmElRo5d06MGY4zoepyrXX1tkzX2hrnPEZ53k78GuOMWLqmJDGIIOPwVRIFZrLQOo+Yr6KtCuLIA0AQ==} - engines: {node: '>= 10.0.0'} - peerDependencies: - rollup: ^2.42.0 - dependencies: - '@rollup/pluginutils': 3.1.0(rollup@2.70.1) - '@types/resolve': 1.17.1 - builtin-modules: 3.2.0 - deepmerge: 4.2.2 - is-module: 1.0.0 - resolve: 1.22.0 - rollup: 2.70.1 + /@esbuild/linux-ppc64@0.18.15: + resolution: {integrity: sha512-KXPY69MWw79QJkyvUYb2ex/OgnN/8N/Aw5UDPlgoRtoEfcBqfeLodPr42UojV3NdkoO4u10NXQdamWm1YEzSKw==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true dev: true + optional: true - /@rollup/pluginutils@3.1.0(rollup@2.70.1): - resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==} - engines: {node: '>= 8.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0 - dependencies: - '@types/estree': 0.0.39 - estree-walker: 1.0.1 - picomatch: 2.3.1 - rollup: 2.70.1 + /@esbuild/linux-riscv64@0.18.15: + resolution: {integrity: sha512-komK3NEAeeGRnvFEjX1SfVg6EmkfIi5aKzevdvJqMydYr9N+pRQK0PGJXk+bhoPZwOUgLO4l99FZmLGk/L1jWg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true dev: true + optional: true - /@rollup/pluginutils@4.2.0: - resolution: {integrity: sha512-2WUyJNRkyH5p487pGnn4tWAsxhEFKN/pT8CMgHshd5H+IXkOnKvKZwsz5ZWz+YCXkleZRAU5kwbfgF8CPfDRqA==} - engines: {node: '>= 8.0.0'} - dependencies: - estree-walker: 2.0.2 - picomatch: 2.3.1 + /@esbuild/linux-s390x@0.18.15: + resolution: {integrity: sha512-632T5Ts6gQ2WiMLWRRyeflPAm44u2E/s/TJvn+BP6M5mnHSk93cieaypj3VSMYO2ePTCRqAFXtuYi1yv8uZJNA==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true dev: true + optional: true - /@types/estree@0.0.39: - resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} + /@esbuild/linux-x64@0.18.15: + resolution: {integrity: sha512-MsHtX0NgvRHsoOtYkuxyk4Vkmvk3PLRWfA4okK7c+6dT0Fu4SUqXAr9y4Q3d8vUf1VWWb6YutpL4XNe400iQ1g==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true dev: true + optional: true - /@types/estree@0.0.51: - resolution: {integrity: sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==} + /@esbuild/netbsd-x64@0.18.15: + resolution: {integrity: sha512-djST6s+jQiwxMIVQ5rlt24JFIAr4uwUnzceuFL7BQT4CbrRtqBPueS4GjXSiIpmwVri1Icj/9pFRJ7/aScvT+A==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true dev: true + optional: true - /@types/node@17.0.23: - resolution: {integrity: sha512-UxDxWn7dl97rKVeVS61vErvw086aCYhDLyvRQZ5Rk65rZKepaFdm53GeqXaKBuOhED4e9uWq34IC3TdSdJJ2Gw==} + /@esbuild/openbsd-x64@0.18.15: + resolution: {integrity: sha512-naeRhUIvhsgeounjkF5mvrNAVMGAm6EJWiabskeE5yOeBbLp7T89tAEw0j5Jm/CZAwyLe3c67zyCWH6fsBLCpw==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true dev: true + optional: true - /@types/resolve@1.17.1: - resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} - dependencies: - '@types/node': 17.0.23 + /@esbuild/sunos-x64@0.18.15: + resolution: {integrity: sha512-qkT2+WxyKbNIKV1AEhI8QiSIgTHMcRctzSaa/I3kVgMS5dl3fOeoqkb7pW76KwxHoriImhx7Mg3TwN/auMDsyQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true dev: true + optional: true - /ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} + /@esbuild/win32-arm64@0.18.15: + resolution: {integrity: sha512-HC4/feP+pB2Vb+cMPUjAnFyERs+HJN7E6KaeBlFdBv799MhD+aPJlfi/yk36SED58J9TPwI8MAcVpJgej4ud0A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true dev: true + optional: true - /ansi-regex@6.0.1: - resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + /@esbuild/win32-ia32@0.18.15: + resolution: {integrity: sha512-ovjwoRXI+gf52EVF60u9sSDj7myPixPxqzD5CmkEUmvs+W9Xd0iqISVBQn8xcx4ciIaIVlWCuTbYDOXOnOL44Q==} engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true dev: true + optional: true - /ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - dependencies: - color-convert: 1.9.3 + /@esbuild/win32-x64@0.18.15: + resolution: {integrity: sha512-imUxH9a3WJARyAvrG7srLyiK73XdX83NXQkjKvQ+7vPh3ZxoLrzvPkQKKw2DwZ+RV2ZB6vBfNHP8XScAmQC3aA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true dev: true + optional: true - /ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} + /@eslint-community/eslint-utils@4.4.0(eslint@8.45.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: - color-convert: 2.0.1 + eslint: 8.45.0 + eslint-visitor-keys: 3.4.1 dev: true - /ansi-styles@6.2.1: - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} - engines: {node: '>=12'} + /@eslint-community/regexpp@4.5.1: + resolution: {integrity: sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true - /babel-plugin-jsx-dom-expressions@0.32.11(@babel/core@7.17.8): - resolution: {integrity: sha512-hytqY33SGW6B3obSLt8K5X510UwtNkTktCCWgwba+QOOV0CowDFiqeL+0ru895FLacFaYANHFTu1y76dg3GVtw==} + /@eslint/eslintrc@2.1.0: + resolution: {integrity: sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - '@babel/helper-module-imports': 7.16.0 - '@babel/plugin-syntax-jsx': 7.16.7(@babel/core@7.17.8) - '@babel/types': 7.17.0 - html-entities: 2.3.2 + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.6.1 + globals: 13.20.0 + ignore: 5.2.4 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 transitivePeerDependencies: - - '@babel/core' + - supports-color + dev: true + + /@eslint/js@8.44.0: + resolution: {integrity: sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /babel-preset-solid@1.3.13(@babel/core@7.17.8): - resolution: {integrity: sha512-MZnmsceI9yiHlwwFCSALTJhadk2eea/+2UP4ec4jkPZFR+XRKTLoIwRkrBh7uLtvHF+3lHGyUaXtZukOmmUwhA==} + /@humanwhocodes/config-array@0.11.10: + resolution: {integrity: sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==} + engines: {node: '>=10.10.0'} dependencies: - babel-plugin-jsx-dom-expressions: 0.32.11(@babel/core@7.17.8) + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.4 + minimatch: 3.1.2 transitivePeerDependencies: - - '@babel/core' + - supports-color dev: true - /balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + /@humanwhocodes/module-importer@1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} dev: true - /brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 + /@humanwhocodes/object-schema@1.2.1: + resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} dev: true - /brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + /@isaacs/cliui@8.0.2: + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} dependencies: - balanced-match: 1.0.2 + 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 - /browserslist@4.20.2: - resolution: {integrity: sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true + /@jridgewell/gen-mapping@0.3.3: + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} + engines: {node: '>=6.0.0'} dependencies: - caniuse-lite: 1.0.30001324 - electron-to-chromium: 1.4.103 - escalade: 3.1.1 - node-releases: 2.0.2 - picocolors: 1.0.0 + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.18 dev: true - /builtin-modules@3.2.0: - resolution: {integrity: sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==} - engines: {node: '>=6'} + /@jridgewell/resolve-uri@3.1.0: + resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} + engines: {node: '>=6.0.0'} dev: true - /caniuse-lite@1.0.30001324: - resolution: {integrity: sha512-/eYp1J6zYh1alySQB4uzYFkLmxxI8tk0kxldbNHXp8+v+rdMKdUBNjRLz7T7fz6Iox+1lIdYpc7rq6ZcXfTukg==} + /@jridgewell/set-array@1.1.2: + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} 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 + /@jridgewell/sourcemap-codec@1.4.14: + resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} dev: true - /color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - dependencies: - color-name: 1.1.3 + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + dev: true + + /@jridgewell/trace-mapping@0.3.18: + resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} + dependencies: + '@jridgewell/resolve-uri': 3.1.0 + '@jridgewell/sourcemap-codec': 1.4.14 + dev: true + + /@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.15.0 + dev: true + + /@pkgjs/parseargs@0.11.0: + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + requiresBuild: true + dev: true + optional: true + + /@pkgr/utils@2.4.2: + resolution: {integrity: sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + dependencies: + cross-spawn: 7.0.3 + fast-glob: 3.3.0 + is-glob: 4.0.3 + open: 9.1.0 + picocolors: 1.0.0 + tslib: 2.6.0 + dev: true + + /@rollup/plugin-alias@5.0.0(rollup@3.26.3): + resolution: {integrity: sha512-l9hY5chSCjuFRPsnRm16twWBiSApl2uYFLsepQYwtBuAxNMQ/1dJqADld40P0Jkqm65GRTLy/AC6hnpVebtLsA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + rollup: 3.26.3 + slash: 4.0.0 + dev: true + + /@rollup/plugin-commonjs@25.0.3(rollup@3.26.3): + resolution: {integrity: sha512-uBdtWr/H3BVcgm97MUdq2oJmqBR23ny1hOrWe2PKo9FTbjsGqg32jfasJUKYAI5ouqacjRnj65mBB/S79F+GQA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.68.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@rollup/pluginutils': 5.0.2(rollup@3.26.3) + commondir: 1.0.1 + estree-walker: 2.0.2 + glob: 8.1.0 + is-reference: 1.2.1 + magic-string: 0.27.0 + rollup: 3.26.3 + dev: true + + /@rollup/plugin-json@6.0.0(rollup@3.26.3): + resolution: {integrity: sha512-i/4C5Jrdr1XUarRhVu27EEwjt4GObltD7c+MkCIpO2QIbojw8MUs+CCTqOphQi3Qtg1FLmYt+l+6YeoIf51J7w==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@rollup/pluginutils': 5.0.2(rollup@3.26.3) + rollup: 3.26.3 + dev: true + + /@rollup/plugin-node-resolve@15.1.0(rollup@3.26.3): + resolution: {integrity: sha512-xeZHCgsiZ9pzYVgAo9580eCGqwh/XCEUM9q6iQfGNocjgkufHAqC3exA+45URvhiYV8sBF9RlBai650eNs7AsA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.78.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@rollup/pluginutils': 5.0.2(rollup@3.26.3) + '@types/resolve': 1.20.2 + deepmerge: 4.3.1 + is-builtin-module: 3.2.1 + is-module: 1.0.0 + resolve: 1.22.2 + rollup: 3.26.3 + dev: true + + /@rollup/pluginutils@5.0.2(rollup@3.26.3): + resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@types/estree': 1.0.1 + estree-walker: 2.0.2 + picomatch: 2.3.1 + rollup: 3.26.3 + dev: true + + /@types/babel__core@7.20.1: + resolution: {integrity: sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==} + dependencies: + '@babel/parser': 7.22.7 + '@babel/types': 7.22.5 + '@types/babel__generator': 7.6.4 + '@types/babel__template': 7.4.1 + '@types/babel__traverse': 7.20.1 + dev: true + + /@types/babel__generator@7.6.4: + resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} + dependencies: + '@babel/types': 7.22.5 + dev: true + + /@types/babel__template@7.4.1: + resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} + dependencies: + '@babel/parser': 7.22.7 + '@babel/types': 7.22.5 + dev: true + + /@types/babel__traverse@7.20.1: + resolution: {integrity: sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==} + dependencies: + '@babel/types': 7.22.5 + dev: true + + /@types/estree@1.0.1: + resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} + dev: true + + /@types/json-schema@7.0.12: + resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} + dev: true + + /@types/resolve@1.20.2: + resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} + dev: true + + /@types/semver@7.5.0: + resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} + dev: true + + /@typescript-eslint/eslint-plugin@6.0.0(@typescript-eslint/parser@6.0.0)(eslint@8.45.0)(typescript@5.1.6): + resolution: {integrity: sha512-xuv6ghKGoiq856Bww/yVYnXGsKa588kY3M0XK7uUW/3fJNNULKRfZfSBkMTSpqGG/8ZCXCadfh8G/z/B4aqS/A==} + 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.5.1 + '@typescript-eslint/parser': 6.0.0(eslint@8.45.0)(typescript@5.1.6) + '@typescript-eslint/scope-manager': 6.0.0 + '@typescript-eslint/type-utils': 6.0.0(eslint@8.45.0)(typescript@5.1.6) + '@typescript-eslint/utils': 6.0.0(eslint@8.45.0)(typescript@5.1.6) + '@typescript-eslint/visitor-keys': 6.0.0 + debug: 4.3.4 + eslint: 8.45.0 + grapheme-splitter: 1.0.4 + graphemer: 1.4.0 + ignore: 5.2.4 + natural-compare: 1.4.0 + natural-compare-lite: 1.4.0 + semver: 7.5.4 + ts-api-utils: 1.0.1(typescript@5.1.6) + typescript: 5.1.6 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser@6.0.0(eslint@8.45.0)(typescript@5.1.6): + resolution: {integrity: sha512-TNaufYSPrr1U8n+3xN+Yp9g31vQDJqhXzzPSHfQDLcaO4tU+mCfODPxCwf4H530zo7aUBE3QIdxCXamEnG04Tg==} + 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.0.0 + '@typescript-eslint/types': 6.0.0 + '@typescript-eslint/typescript-estree': 6.0.0(typescript@5.1.6) + '@typescript-eslint/visitor-keys': 6.0.0 + debug: 4.3.4 + eslint: 8.45.0 + typescript: 5.1.6 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/scope-manager@5.62.0: + resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + dev: true + + /@typescript-eslint/scope-manager@6.0.0: + resolution: {integrity: sha512-o4q0KHlgCZTqjuaZ25nw5W57NeykZT9LiMEG4do/ovwvOcPnDO1BI5BQdCsUkjxFyrCL0cSzLjvIMfR9uo7cWg==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.0.0 + '@typescript-eslint/visitor-keys': 6.0.0 + dev: true + + /@typescript-eslint/type-utils@6.0.0(eslint@8.45.0)(typescript@5.1.6): + resolution: {integrity: sha512-ah6LJvLgkoZ/pyJ9GAdFkzeuMZ8goV6BH7eC9FPmojrnX9yNCIsfjB+zYcnex28YO3RFvBkV6rMV6WpIqkPvoQ==} + 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.0.0(typescript@5.1.6) + '@typescript-eslint/utils': 6.0.0(eslint@8.45.0)(typescript@5.1.6) + debug: 4.3.4 + eslint: 8.45.0 + ts-api-utils: 1.0.1(typescript@5.1.6) + typescript: 5.1.6 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/types@5.62.0: + resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@typescript-eslint/types@6.0.0: + resolution: {integrity: sha512-Zk9KDggyZM6tj0AJWYYKgF0yQyrcnievdhG0g5FqyU3Y2DRxJn4yWY21sJC0QKBckbsdKKjYDV2yVrrEvuTgxg==} + engines: {node: ^16.0.0 || >=18.0.0} + dev: true + + /@typescript-eslint/typescript-estree@5.62.0(typescript@5.1.6): + resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.4 + tsutils: 3.21.0(typescript@5.1.6) + typescript: 5.1.6 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/typescript-estree@6.0.0(typescript@5.1.6): + resolution: {integrity: sha512-2zq4O7P6YCQADfmJ5OTDQTP3ktajnXIRrYAtHM9ofto/CJZV3QfJ89GEaM2BNGeSr1KgmBuLhEkz5FBkS2RQhQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 6.0.0 + '@typescript-eslint/visitor-keys': 6.0.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.4 + ts-api-utils: 1.0.1(typescript@5.1.6) + typescript: 5.1.6 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/utils@5.62.0(eslint@8.45.0)(typescript@5.1.6): + resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.45.0) + '@types/json-schema': 7.0.12 + '@types/semver': 7.5.0 + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.1.6) + eslint: 8.45.0 + eslint-scope: 5.1.1 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/utils@6.0.0(eslint@8.45.0)(typescript@5.1.6): + resolution: {integrity: sha512-SOr6l4NB6HE4H/ktz0JVVWNXqCJTOo/mHnvIte1ZhBQ0Cvd04x5uKZa3zT6tiodL06zf5xxdK8COiDvPnQ27JQ==} + 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.45.0) + '@types/json-schema': 7.0.12 + '@types/semver': 7.5.0 + '@typescript-eslint/scope-manager': 6.0.0 + '@typescript-eslint/types': 6.0.0 + '@typescript-eslint/typescript-estree': 6.0.0(typescript@5.1.6) + eslint: 8.45.0 + eslint-scope: 5.1.1 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/visitor-keys@5.62.0: + resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + '@typescript-eslint/types': 5.62.0 + eslint-visitor-keys: 3.4.1 + dev: true + + /@typescript-eslint/visitor-keys@6.0.0: + resolution: {integrity: sha512-cvJ63l8c0yXdeT5POHpL0Q1cZoRcmRKFCtSjNGJxPkcP571EfZMcNbzWAc7oK3D1dRzm/V5EwtkANTZxqvuuUA==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.0.0 + eslint-visitor-keys: 3.4.1 + dev: true + + /acorn-jsx@5.3.2(acorn@8.10.0): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.10.0 + dev: true + + /acorn@8.10.0: + resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} + engines: {node: '>=0.4.0'} + hasBin: true + 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@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + dev: true + + /argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: true + + /array-buffer-byte-length@1.0.0: + resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} + dependencies: + call-bind: 1.0.2 + is-array-buffer: 3.0.2 + dev: true + + /array-includes@3.1.6: + resolution: {integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + get-intrinsic: 1.2.1 + is-string: 1.0.7 + dev: true + + /array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + dev: true + + /array.prototype.flat@1.3.1: + resolution: {integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + es-shim-unscopables: 1.0.0 + dev: true + + /arraybuffer.prototype.slice@1.0.1: + resolution: {integrity: sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.0 + call-bind: 1.0.2 + define-properties: 1.2.0 + get-intrinsic: 1.2.1 + is-array-buffer: 3.0.2 + is-shared-array-buffer: 1.0.2 + 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.36.10(@babel/core@7.22.9): + resolution: {integrity: sha512-QA2k/14WGw+RgcGGnEuLWwnu4em6CGhjeXtjvgOYyFHYS2a+CzPeaVQHDOlfuiBcjq/3hWMspHMIMnPEOIzdBg==} + peerDependencies: + '@babel/core': ^7.20.12 + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-module-imports': 7.18.6 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.9) + '@babel/types': 7.22.5 + html-entities: 2.3.3 + validate-html-nesting: 1.2.2 + dev: true + + /babel-preset-solid@1.7.7(@babel/core@7.22.9): + resolution: {integrity: sha512-tdxVzx3kgcIjNXAOmGRbzIhFBPeJjSakiN9yM+IYdL/+LtXNnbGqb0Va5tJb8Sjbk+QVEriovCyuzB5T7jeTvg==} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.22.9 + babel-plugin-jsx-dom-expressions: 0.36.10(@babel/core@7.22.9) + dev: true + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + dev: true + + /big-integer@1.6.51: + resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==} + engines: {node: '>=0.6'} + dev: true + + /bplist-parser@0.2.0: + resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} + engines: {node: '>= 5.10.0'} + dependencies: + big-integer: 1.6.51 + 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.21.9: + resolution: {integrity: sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001517 + electron-to-chromium: 1.4.467 + node-releases: 2.0.13 + update-browserslist-db: 1.0.11(browserslist@4.21.9) + dev: true + + /builtin-modules@3.3.0: + resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} + engines: {node: '>=6'} + dev: true + + /bundle-name@3.0.0: + resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==} + engines: {node: '>=12'} + dependencies: + run-applescript: 5.0.0 + dev: true + + /call-bind@1.0.2: + resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} + dependencies: + function-bind: 1.1.1 + get-intrinsic: 1.2.1 + dev: true + + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + dev: true + + /caniuse-lite@1.0.30001517: + resolution: {integrity: sha512-Vdhm5S11DaFVLlyiKu4hiUTkpZu+y1KA/rZZqVQfOD5YdDT/eQKlkt7NaE0WGOFgX32diqt9MiP9CAiFeRklaA==} + 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 + + /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: @@ -654,7 +1312,7 @@ packages: dev: true /color-name@1.1.3: - resolution: {integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=} + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} dev: true /color-name@1.1.4: @@ -662,17 +1320,15 @@ packages: dev: true /commondir@1.0.1: - resolution: {integrity: sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=} + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} dev: true /concat-map@0.0.1: resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} dev: true - /convert-source-map@1.8.0: - resolution: {integrity: sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==} - dependencies: - safe-buffer: 5.1.2 + /convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} dev: true /cross-spawn@7.0.3: @@ -684,6 +1340,9 @@ packages: which: 2.0.2 dev: true + /csstype@3.1.2: + resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} + /debug@4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} @@ -696,17 +1355,66 @@ packages: ms: 2.1.2 dev: true - /deepmerge@4.2.2: - resolution: {integrity: sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==} + /deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + dev: true + + /deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} dev: true + /default-browser-id@3.0.0: + resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} + engines: {node: '>=12'} + dependencies: + bplist-parser: 0.2.0 + untildify: 4.0.0 + dev: true + + /default-browser@4.0.0: + resolution: {integrity: sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==} + engines: {node: '>=14.16'} + dependencies: + bundle-name: 3.0.0 + default-browser-id: 3.0.0 + execa: 7.1.1 + titleize: 3.0.0 + dev: true + + /define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} + dev: true + + /define-properties@1.2.0: + resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} + engines: {node: '>= 0.4'} + dependencies: + has-property-descriptors: 1.0.0 + object-keys: 1.1.1 + 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 + /eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} dev: true - /electron-to-chromium@1.4.103: - resolution: {integrity: sha512-c/uKWR1Z/W30Wy/sx3dkZoj4BijbXX85QKWu9jJfjho3LBAXNEGAEW3oWiGb+dotA6C6BzCTxL2/aLes7jlUeg==} + /electron-to-chromium@1.4.467: + resolution: {integrity: sha512-2qI70O+rR4poYeF2grcuS/bCps5KJh6y1jtZMDDEteyKJQrzLOEhFyXCLcHW6DTBjKjWkk26JhWoAi+Ux9A0fg==} dev: true /emoji-regex@8.0.0: @@ -717,234 +1425,382 @@ packages: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} dev: true - /es-module-lexer@0.9.3: - resolution: {integrity: sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==} + /es-abstract@1.22.1: + resolution: {integrity: sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.0 + arraybuffer.prototype.slice: 1.0.1 + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + es-set-tostringtag: 2.0.1 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.5 + get-intrinsic: 1.2.1 + get-symbol-description: 1.0.0 + globalthis: 1.0.3 + gopd: 1.0.1 + has: 1.0.3 + has-property-descriptors: 1.0.0 + has-proto: 1.0.1 + has-symbols: 1.0.3 + internal-slot: 1.0.5 + is-array-buffer: 3.0.2 + is-callable: 1.2.7 + is-negative-zero: 2.0.2 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.2 + is-string: 1.0.7 + is-typed-array: 1.1.12 + is-weakref: 1.0.2 + object-inspect: 1.12.3 + object-keys: 1.1.1 + object.assign: 4.1.4 + regexp.prototype.flags: 1.5.0 + safe-array-concat: 1.0.0 + safe-regex-test: 1.0.0 + string.prototype.trim: 1.2.7 + string.prototype.trimend: 1.0.6 + string.prototype.trimstart: 1.0.6 + typed-array-buffer: 1.0.0 + typed-array-byte-length: 1.0.0 + typed-array-byte-offset: 1.0.0 + typed-array-length: 1.0.4 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.11 + dev: true + + /es-module-lexer@1.3.0: + resolution: {integrity: sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==} + dev: true + + /es-set-tostringtag@2.0.1: + resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.1 + has: 1.0.3 + has-tostringtag: 1.0.0 dev: true - /esbuild-android-64@0.14.27: - resolution: {integrity: sha512-LuEd4uPuj/16Y8j6kqy3Z2E9vNY9logfq8Tq+oTE2PZVuNs3M1kj5Qd4O95ee66yDGb3isaOCV7sOLDwtMfGaQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true + /es-shim-unscopables@1.0.0: + resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} + dependencies: + has: 1.0.3 dev: true - optional: true - /esbuild-android-arm64@0.14.27: - resolution: {integrity: sha512-E8Ktwwa6vX8q7QeJmg8yepBYXaee50OdQS3BFtEHKrzbV45H4foMOeEE7uqdjGQZFBap5VAqo7pvjlyA92wznQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true + /es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + dependencies: + is-callable: 1.2.7 + is-date-object: 1.0.5 + is-symbol: 1.0.4 dev: true - optional: true - /esbuild-darwin-64@0.14.27: - resolution: {integrity: sha512-czw/kXl/1ZdenPWfw9jDc5iuIYxqUxgQ/Q+hRd4/3udyGGVI31r29LCViN2bAJgGvQkqyLGVcG03PJPEXQ5i2g==} + /esbuild@0.18.15: + resolution: {integrity: sha512-3WOOLhrvuTGPRzQPU6waSDWrDTnQriia72McWcn6UCi43GhCHrXH4S59hKMeez+IITmdUuUyvbU9JIp+t3xlPQ==} engines: {node: '>=12'} - cpu: [x64] - os: [darwin] + hasBin: true requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.18.15 + '@esbuild/android-arm64': 0.18.15 + '@esbuild/android-x64': 0.18.15 + '@esbuild/darwin-arm64': 0.18.15 + '@esbuild/darwin-x64': 0.18.15 + '@esbuild/freebsd-arm64': 0.18.15 + '@esbuild/freebsd-x64': 0.18.15 + '@esbuild/linux-arm': 0.18.15 + '@esbuild/linux-arm64': 0.18.15 + '@esbuild/linux-ia32': 0.18.15 + '@esbuild/linux-loong64': 0.18.15 + '@esbuild/linux-mips64el': 0.18.15 + '@esbuild/linux-ppc64': 0.18.15 + '@esbuild/linux-riscv64': 0.18.15 + '@esbuild/linux-s390x': 0.18.15 + '@esbuild/linux-x64': 0.18.15 + '@esbuild/netbsd-x64': 0.18.15 + '@esbuild/openbsd-x64': 0.18.15 + '@esbuild/sunos-x64': 0.18.15 + '@esbuild/win32-arm64': 0.18.15 + '@esbuild/win32-ia32': 0.18.15 + '@esbuild/win32-x64': 0.18.15 dev: true - optional: true - /esbuild-darwin-arm64@0.14.27: - resolution: {integrity: sha512-BEsv2U2U4o672oV8+xpXNxN9bgqRCtddQC6WBh4YhXKDcSZcdNh7+6nS+DM2vu7qWIWNA4JbRG24LUUYXysimQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true + /escalade@3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} dev: true - optional: true - /esbuild-freebsd-64@0.14.27: - resolution: {integrity: sha512-7FeiFPGBo+ga+kOkDxtPmdPZdayrSzsV9pmfHxcyLKxu+3oTcajeZlOO1y9HW+t5aFZPiv7czOHM4KNd0tNwCA==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true + /escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} dev: true - optional: true - /esbuild-freebsd-arm64@0.14.27: - resolution: {integrity: sha512-8CK3++foRZJluOWXpllG5zwAVlxtv36NpHfsbWS7TYlD8S+QruXltKlXToc/5ZNzBK++l6rvRKELu/puCLc7jA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true + /escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} dev: true - optional: true - /esbuild-linux-32@0.14.27: - resolution: {integrity: sha512-qhNYIcT+EsYSBClZ5QhLzFzV5iVsP1YsITqblSaztr3+ZJUI+GoK8aXHyzKd7/CKKuK93cxEMJPpfi1dfsOfdw==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true + /eslint-config-prettier@8.8.0(eslint@8.45.0): + resolution: {integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: 8.45.0 dev: true - optional: true - /esbuild-linux-64@0.14.27: - resolution: {integrity: sha512-ESjck9+EsHoTaKWlFKJpPZRN26uiav5gkI16RuI8WBxUdLrrAlYuYSndxxKgEn1csd968BX/8yQZATYf/9+/qg==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true + /eslint-plugin-prettier@5.0.0(eslint-config-prettier@8.8.0)(eslint@8.45.0)(prettier@3.0.0): + resolution: {integrity: sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + '@types/eslint': '>=8.0.0' + eslint: '>=8.0.0' + eslint-config-prettier: '*' + prettier: '>=3.0.0' + peerDependenciesMeta: + '@types/eslint': + optional: true + eslint-config-prettier: + optional: true + dependencies: + eslint: 8.45.0 + eslint-config-prettier: 8.8.0(eslint@8.45.0) + prettier: 3.0.0 + prettier-linter-helpers: 1.0.0 + synckit: 0.8.5 dev: true - optional: true - /esbuild-linux-arm64@0.14.27: - resolution: {integrity: sha512-no6Mi17eV2tHlJnqBHRLekpZ2/VYx+NfGxKcBE/2xOMYwctsanCaXxw4zapvNrGE9X38vefVXLz6YCF8b1EHiQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true + /eslint-plugin-solid@0.12.1(eslint@8.45.0)(typescript@5.1.6): + resolution: {integrity: sha512-fM0sEg9PcS1mcNbWklwc+W/lOv1/XyEwXf53HmFFy4GOA8E3u41h8JW+hc+Vv1m3kh01umKoTalOTET08zKdAQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@typescript-eslint/utils': 5.62.0(eslint@8.45.0)(typescript@5.1.6) + eslint: 8.45.0 + is-html: 2.0.0 + jsx-ast-utils: 3.3.4 + kebab-case: 1.0.2 + known-css-properties: 0.24.0 + style-to-object: 0.3.0 + transitivePeerDependencies: + - supports-color + - typescript dev: true - optional: true - /esbuild-linux-arm@0.14.27: - resolution: {integrity: sha512-JnnmgUBdqLQO9hoNZQqNHFWlNpSX82vzB3rYuCJMhtkuaWQEmQz6Lec1UIxJdC38ifEghNTBsF9bbe8dFilnCw==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true + /eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 dev: true - optional: true - /esbuild-linux-mips64le@0.14.27: - resolution: {integrity: sha512-NolWP2uOvIJpbwpsDbwfeExZOY1bZNlWE/kVfkzLMsSgqeVcl5YMen/cedRe9mKnpfLli+i0uSp7N+fkKNU27A==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true + /eslint-scope@7.2.1: + resolution: {integrity: sha512-CvefSOsDdaYYvxChovdrPo/ZGt8d5lrJWleAc1diXRKhHGiTYEI26cvo8Kle/wGnsizoCJjK73FMg1/IkIwiNA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 dev: true - optional: true - /esbuild-linux-ppc64le@0.14.27: - resolution: {integrity: sha512-/7dTjDvXMdRKmsSxKXeWyonuGgblnYDn0MI1xDC7J1VQXny8k1qgNp6VmrlsawwnsymSUUiThhkJsI+rx0taNA==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true + /eslint-visitor-keys@3.4.1: + resolution: {integrity: sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - optional: true - /esbuild-linux-riscv64@0.14.27: - resolution: {integrity: sha512-D+aFiUzOJG13RhrSmZgrcFaF4UUHpqj7XSKrIiCXIj1dkIkFqdrmqMSOtSs78dOtObWiOrFCDDzB24UyeEiNGg==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true + /eslint@8.45.0: + resolution: {integrity: sha512-pd8KSxiQpdYRfYa9Wufvdoct3ZPQQuVuU5O6scNgMuOMYuxvH0IGaYK0wUFjo4UYYQQCUndlXiMbnxopwvvTiw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.45.0) + '@eslint-community/regexpp': 4.5.1 + '@eslint/eslintrc': 2.1.0 + '@eslint/js': 8.44.0 + '@humanwhocodes/config-array': 0.11.10 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + 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.1 + eslint-visitor-keys: 3.4.1 + 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.20.0 + graphemer: 1.4.0 + ignore: 5.2.4 + 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 - optional: true - /esbuild-linux-s390x@0.14.27: - resolution: {integrity: sha512-CD/D4tj0U4UQjELkdNlZhQ8nDHU5rBn6NGp47Hiz0Y7/akAY5i0oGadhEIg0WCY/HYVXFb3CsSPPwaKcTOW3bg==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: 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.10.0 + acorn-jsx: 5.3.2(acorn@8.10.0) + eslint-visitor-keys: 3.4.1 dev: true - optional: true - /esbuild-netbsd-64@0.14.27: - resolution: {integrity: sha512-h3mAld69SrO1VoaMpYl3a5FNdGRE/Nqc+E8VtHOag4tyBwhCQXxtvDDOAKOUQexBGca0IuR6UayQ4ntSX5ij1Q==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true + /esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + dependencies: + estraverse: 5.3.0 dev: true - optional: true - /esbuild-openbsd-64@0.14.27: - resolution: {integrity: sha512-xwSje6qIZaDHXWoPpIgvL+7fC6WeubHHv18tusLYMwL+Z6bEa4Pbfs5IWDtQdHkArtfxEkIZz77944z8MgDxGw==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: 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 - optional: true - /esbuild-sunos-64@0.14.27: - resolution: {integrity: sha512-/nBVpWIDjYiyMhuqIqbXXsxBc58cBVH9uztAOIfWShStxq9BNBik92oPQPJ57nzWXRNKQUEFWr4Q98utDWz7jg==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true + /estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} dev: true - optional: true - /esbuild-windows-32@0.14.27: - resolution: {integrity: sha512-Q9/zEjhZJ4trtWhFWIZvS/7RUzzi8rvkoaS9oiizkHTTKd8UxFwn/Mm2OywsAfYymgUYm8+y2b+BKTNEFxUekw==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true + /estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + dev: true + + /estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + 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@7.1.1: + resolution: {integrity: sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==} + engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 4.3.1 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.1.0 + onetime: 6.0.0 + signal-exit: 3.0.7 + strip-final-newline: 3.0.0 + dev: true + + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + dev: true + + /fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + dev: true + + /fast-glob@3.3.0: + resolution: {integrity: sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==} + 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 - optional: true - /esbuild-windows-64@0.14.27: - resolution: {integrity: sha512-b3y3vTSl5aEhWHK66ngtiS/c6byLf6y/ZBvODH1YkBM+MGtVL6jN38FdHUsZasCz9gFwYs/lJMVY9u7GL6wfYg==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true + /fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} dev: true - optional: true - /esbuild-windows-arm64@0.14.27: - resolution: {integrity: sha512-I/reTxr6TFMcR5qbIkwRGvldMIaiBu2+MP0LlD7sOlNXrfqIl9uNjsuxFPGEG4IRomjfQ5q8WT+xlF/ySVkqKg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true + /fastq@1.15.0: + resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} + dependencies: + reusify: 1.0.4 dev: true - optional: true - /esbuild@0.14.27: - resolution: {integrity: sha512-MZQt5SywZS3hA9fXnMhR22dv0oPGh6QtjJRIYbgL1AeqAoQZE+Qn5ppGYQAoHv/vq827flj4tIJ79Mrdiwk46Q==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - esbuild-android-64: 0.14.27 - esbuild-android-arm64: 0.14.27 - esbuild-darwin-64: 0.14.27 - esbuild-darwin-arm64: 0.14.27 - esbuild-freebsd-64: 0.14.27 - esbuild-freebsd-arm64: 0.14.27 - esbuild-linux-32: 0.14.27 - esbuild-linux-64: 0.14.27 - esbuild-linux-arm: 0.14.27 - esbuild-linux-arm64: 0.14.27 - esbuild-linux-mips64le: 0.14.27 - esbuild-linux-ppc64le: 0.14.27 - esbuild-linux-riscv64: 0.14.27 - esbuild-linux-s390x: 0.14.27 - esbuild-netbsd-64: 0.14.27 - esbuild-openbsd-64: 0.14.27 - esbuild-sunos-64: 0.14.27 - esbuild-windows-32: 0.14.27 - esbuild-windows-64: 0.14.27 - esbuild-windows-arm64: 0.14.27 + /file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flat-cache: 3.0.4 dev: true - /escalade@3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} - engines: {node: '>=6'} + /fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 dev: true - /escape-string-regexp@1.0.5: - resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=} - engines: {node: '>=0.8.0'} + /find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + dev: true + + /flat-cache@3.0.4: + resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flatted: 3.2.7 + rimraf: 3.0.2 dev: true - /estree-walker@1.0.1: - resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==} + /flatted@3.2.7: + resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} dev: true - /estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + /for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + dependencies: + is-callable: 1.2.7 dev: true /foreground-child@3.1.1: @@ -956,7 +1812,7 @@ packages: dev: true /fs.realpath@1.0.0: - resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=} + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} dev: true /fsevents@2.3.2: @@ -971,11 +1827,61 @@ packages: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} dev: true + /function.prototype.name@1.1.5: + resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + functions-have-names: 1.2.3 + 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-intrinsic@1.2.1: + resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} + dependencies: + function-bind: 1.1.1 + has: 1.0.3 + has-proto: 1.0.1 + has-symbols: 1.0.3 + dev: true + + /get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + dev: true + + /get-symbol-description@1.0.0: + resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + 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.3: resolution: {integrity: sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==} engines: {node: '>=16 || 14 >=14.17'} @@ -988,8 +1894,8 @@ packages: path-scurry: 1.10.1 dev: true - /glob@7.2.0: - resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} dependencies: fs.realpath: 1.0.0 inflight: 1.0.6 @@ -999,16 +1905,99 @@ packages: path-is-absolute: 1.0.1 dev: true + /glob@8.1.0: + resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} + engines: {node: '>=12'} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 5.1.6 + once: 1.4.0 + dev: true + /globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} dev: true + /globals@13.20.0: + resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + dev: true + + /globalthis@1.0.3: + resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + engines: {node: '>= 0.4'} + dependencies: + define-properties: 1.2.0 + 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.0 + ignore: 5.2.4 + merge2: 1.4.1 + slash: 3.0.0 + dev: true + + /gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + dependencies: + get-intrinsic: 1.2.1 + dev: true + + /grapheme-splitter@1.0.4: + resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} + dev: true + + /graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + dev: true + + /has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + dev: true + /has-flag@3.0.0: - resolution: {integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0=} + 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.0: + resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} + dependencies: + get-intrinsic: 1.2.1 + 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 + /has@1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} engines: {node: '>= 0.4.0'} @@ -1016,12 +2005,45 @@ packages: function-bind: 1.1.1 dev: true - /html-entities@2.3.2: - resolution: {integrity: sha512-c3Ab/url5ksaT0WyleslpBEthOzWhrjQbg75y7XUsfSzi3Dgzt0l8w5e7DylRn15MTlMMD58dTfzddNS2kcAjQ==} + /html-entities@2.3.3: + resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==} + dev: true + + /html-tags@3.3.1: + resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} + engines: {node: '>=8'} + dev: true + + /human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + dev: true + + /human-signals@4.3.1: + resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} + engines: {node: '>=14.18.0'} + dev: true + + /ignore@5.2.4: + resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} + 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: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=} + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: once: 1.4.0 wrappy: 1.0.2 @@ -1031,32 +2053,209 @@ packages: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} dev: true - /is-core-module@2.8.1: - resolution: {integrity: sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==} + /inline-style-parser@0.1.1: + resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} + dev: true + + /internal-slot@1.0.5: + resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.1 + has: 1.0.3 + side-channel: 1.0.4 + dev: true + + /is-array-buffer@3.0.2: + resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + 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-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + dev: true + + /is-builtin-module@3.2.1: + resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} + engines: {node: '>=6'} + dependencies: + builtin-modules: 3.3.0 + dev: true + + /is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + dev: true + + /is-core-module@2.12.1: + resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==} dependencies: has: 1.0.3 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-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + dev: true + + /is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + 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-html@2.0.0: + resolution: {integrity: sha512-S+OpgB5i7wzIue/YSE5hg0e5ZYfG3hhpNh9KGl6ayJ38p7ED6wxQLd1TV91xHpcTvw90KMJ9EwN3F/iNflHBVg==} + engines: {node: '>=8'} + dependencies: + html-tags: 3.3.1 + dev: true + + /is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + dependencies: + is-docker: 3.0.0 + dev: true + /is-module@1.0.0: - resolution: {integrity: sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=} + resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} + dev: true + + /is-negative-zero@2.0.2: + resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + engines: {node: '>= 0.4'} + dev: true + + /is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + dev: true + + /is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} dev: true /is-reference@1.2.1: resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} dependencies: - '@types/estree': 0.0.51 + '@types/estree': 1.0.1 + dev: true + + /is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + dev: true + + /is-shared-array-buffer@1.0.2: + resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + dependencies: + call-bind: 1.0.2 + 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-what@4.1.7: - resolution: {integrity: sha512-DBVOQNiPKnGMxRMLIYSwERAS5MVY1B7xYiGnpgctsOFvVDz9f9PFXXxMcTOHuoqYp4NK9qFYQaIC1NRRxLMpBQ==} + /is-typed-array@1.1.12: + resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} + engines: {node: '>= 0.4'} + dependencies: + which-typed-array: 1.1.11 + dev: true + + /is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + dependencies: + call-bind: 1.0.2 + dev: true + + /is-what@4.1.15: + resolution: {integrity: sha512-uKua1wfy3Yt+YqsD6mTUEa2zSi3G1oPlqTflgaPJ7z63vUGN5pxFpnQfeSLMFnJDEsdvOtkp1rUWkYjB4YfhgA==} engines: {node: '>=12.13'} dev: true + /is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + dependencies: + is-docker: 2.2.1 + 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 @@ -1077,6 +2276,14 @@ packages: /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 /jsesc@2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} @@ -1084,47 +2291,125 @@ packages: hasBin: true dev: true - /json5@2.2.1: - resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==} + /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.0.0: - resolution: {integrity: sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==} + /jsonc-parser@3.2.0: + resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + dev: true + + /jsx-ast-utils@3.3.4: + resolution: {integrity: sha512-fX2TVdCViod6HwKEtSWGHs57oFhVfCMwieb9PuRDgjDPh5XeqJiHFFFJCHxU5cnTc3Bu/GRL+kPiFmw8XWOfKw==} + engines: {node: '>=4.0'} + dependencies: + array-includes: 3.1.6 + array.prototype.flat: 1.3.1 + object.assign: 4.1.4 + object.values: 1.1.6 + dev: true + + /kebab-case@1.0.2: + resolution: {integrity: sha512-7n6wXq4gNgBELfDCpzKc+mRrZFs7D+wgfF5WRFLNAr4DA/qtr9Js8uOAVAfHhuLMfAcQ0pRKqbpjx+TcJVdE1Q==} + dev: true + + /known-css-properties@0.24.0: + resolution: {integrity: sha512-RTSoaUAfLvpR357vWzAz/50Q/BmHfmE6ETSWfutT0AJiw10e6CmcdYRQJlLRd95B53D0Y2aD1jSxD3V3ySF+PA==} + 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 + + /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 + + /lru-cache@10.0.0: + resolution: {integrity: sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw==} + 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 + + /magic-string@0.27.0: + resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + + /magic-string@0.30.1: + resolution: {integrity: sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 dev: true - /loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true + /merge-anything@5.1.7: + resolution: {integrity: sha512-eRtbOb1N5iyH0tkQDAoQ4Ipsp/5qSR79Dzrz8hEPxRX10RWWR/iQXdoKmBSRCThY1Fh5EhISDtpSc93fpxUniQ==} + engines: {node: '>=12.13'} dependencies: - js-tokens: 4.0.0 - dev: false + is-what: 4.1.15 + dev: true - /lru-cache@10.0.0: - resolution: {integrity: sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw==} - engines: {node: 14 || >=16.14} + /merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} dev: true - /magic-string@0.25.9: - resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} - dependencies: - sourcemap-codec: 1.4.8 + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} dev: true - /magic-string@0.26.1: - resolution: {integrity: sha512-ndThHmvgtieXe8J/VGPjG+Apu7v7ItcD5mhEIvOscWjPF/ccOiLxHaSuCAS2G+3x4GKsAbT8u7zdyamupui8Tg==} - engines: {node: '>=12'} + /micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} dependencies: - sourcemap-codec: 1.4.8 + braces: 3.0.2 + picomatch: 2.3.1 dev: true - /merge-anything@5.0.2: - resolution: {integrity: sha512-POPQBWkBC0vxdgzRJ2Mkj4+2NTKbvkHo93ih+jGDhNMLzIw+rYKjO7949hOQM2X7DxMHH1uoUkwWFLIzImw7gA==} - engines: {node: '>=12.13'} - dependencies: - is-what: 4.1.7 - ts-toolbelt: 9.6.0 + /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: @@ -1133,6 +2418,13 @@ packages: brace-expansion: 1.1.11 dev: true + /minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + dependencies: + brace-expansion: 2.0.1 + dev: true + /minimatch@9.0.3: resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} engines: {node: '>=16 || 14 >=14.17'} @@ -1149,29 +2441,136 @@ packages: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} dev: true - /nanoid@3.3.2: - resolution: {integrity: sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA==} + /nanoid@3.3.6: + resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true dev: true - /node-releases@2.0.2: - resolution: {integrity: sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==} + /natural-compare-lite@1.4.0: + resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} dev: true - /object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - dev: false + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + dev: true + + /node-releases@2.0.13: + resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} + 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.1.0: + resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + path-key: 4.0.0 + dev: true + + /object-inspect@1.12.3: + resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} + dev: true + + /object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + dev: true + + /object.assign@4.1.4: + resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + has-symbols: 1.0.3 + object-keys: 1.1.1 + dev: true + + /object.values@1.1.6: + resolution: {integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + dev: true /once@1.4.0: - resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=} + 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 + + /open@9.1.0: + resolution: {integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==} + engines: {node: '>=14.16'} + dependencies: + default-browser: 4.0.0 + define-lazy-prop: 3.0.0 + is-inside-container: 1.0.0 + is-wsl: 2.2.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-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 + + /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: sha1-F0uSaHNVNP+8es5r9TpanhtcX18=} + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} dev: true @@ -1180,6 +2579,11 @@ packages: engines: {node: '>=8'} dev: true + /path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + dev: true + /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} dev: true @@ -1192,6 +2596,11 @@ packages: minipass: 7.0.2 dev: true + /path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + dev: true + /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} dev: true @@ -1201,32 +2610,77 @@ packages: engines: {node: '>=8.6'} dev: true - /postcss@8.4.12: - resolution: {integrity: sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==} + /postcss@8.4.26: + resolution: {integrity: sha512-jrXHFF8iTloAenySjM/ob3gSj7pCu0Ji49hnjqzsgSRa50hkWCKD0HQ+gMNJkW38jBI68MpAAg7ZWwHwX8NMMw==} engines: {node: ^10 || ^12 || >=14} dependencies: - nanoid: 3.3.2 + nanoid: 3.3.6 picocolors: 1.0.0 source-map-js: 1.0.2 dev: true - /react@17.0.2: - resolution: {integrity: sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==} - engines: {node: '>=0.10.0'} + /prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + dev: true + + /prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} + dependencies: + fast-diff: 1.3.0 + dev: true + + /prettier@3.0.0: + resolution: {integrity: sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g==} + engines: {node: '>=14'} + hasBin: true + dev: true + + /punycode@2.3.0: + resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} + engines: {node: '>=6'} + dev: true + + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + dev: true + + /regexp.prototype.flags@1.5.0: + resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==} + engines: {node: '>= 0.4'} dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - dev: false + call-bind: 1.0.2 + define-properties: 1.2.0 + functions-have-names: 1.2.3 + dev: true + + /resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + dev: true - /resolve@1.22.0: - resolution: {integrity: sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==} + /resolve@1.22.2: + resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} hasBin: true dependencies: - is-core-module: 2.8.1 + is-core-module: 2.12.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 dev: true + /reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + dev: true + + /rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + /rimraf@5.0.1: resolution: {integrity: sha512-OfFZdwtd3lZ+XZzYP/6gTACubwFcHdLRqS9UX3UwpU2dnGQYkPFISRwvM3w9IiB2w7bW5qGo/uAwE4SmXXSKvg==} engines: {node: '>=14'} @@ -1235,55 +2689,94 @@ packages: glob: 10.3.3 dev: true - /rollup-plugin-dts@4.2.0(rollup@2.70.1)(typescript@4.6.3): - resolution: {integrity: sha512-lx6irWVhz/x4//tIqRhzk4FOqGQ0n37ZM2wpPCn4uafl/EmiV92om7ZdAsq7Bzho6C+Xh5GfsyuP9H+Udv72Lg==} - engines: {node: '>=v12.22.10'} + /rollup-plugin-dts@5.3.0(rollup@3.26.3)(typescript@5.1.6): + resolution: {integrity: sha512-8FXp0ZkyZj1iU5klkIJYLjIq/YZSwBoERu33QBDxm/1yw5UU4txrEtcmMkrq+ZiKu3Q4qvPCNqc3ovX6rjqzbQ==} + engines: {node: '>=v14'} peerDependencies: - rollup: ^2.55 - typescript: ^4.1 + rollup: ^3.0.0 + typescript: ^4.1 || ^5.0 dependencies: - magic-string: 0.26.1 - rollup: 2.70.1 - typescript: 4.6.3 + magic-string: 0.30.1 + rollup: 3.26.3 + typescript: 5.1.6 optionalDependencies: - '@babel/code-frame': 7.16.7 + '@babel/code-frame': 7.22.5 dev: true - /rollup-plugin-esbuild@4.8.2(esbuild@0.14.27)(rollup@2.70.1): - resolution: {integrity: sha512-wsaYNOjzTb6dN1qCIZsMZ7Q0LWiPJklYs2TDI8vJA2LUbvtPUY+17TC8C0vSat3jPMInfR9XWKdA7ttuwkjsGQ==} - engines: {node: '>=12'} + /rollup-plugin-esbuild@5.0.0(esbuild@0.18.15)(rollup@3.26.3): + resolution: {integrity: sha512-1cRIOHAPh8WQgdQQyyvFdeOdxuiyk+zB5zJ5+YOwrZP4cJ0MT3Fs48pQxrZeyZHcn+klFherytILVfE4aYrneg==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} peerDependencies: esbuild: '>=0.10.1' - rollup: ^1.20.0 || ^2.0.0 + rollup: ^1.20.0 || ^2.0.0 || ^3.0.0 dependencies: - '@rollup/pluginutils': 4.2.0 + '@rollup/pluginutils': 5.0.2(rollup@3.26.3) debug: 4.3.4 - es-module-lexer: 0.9.3 - esbuild: 0.14.27 + es-module-lexer: 1.3.0 + esbuild: 0.18.15 joycon: 3.1.1 - jsonc-parser: 3.0.0 - rollup: 2.70.1 + jsonc-parser: 3.2.0 + rollup: 3.26.3 transitivePeerDependencies: - supports-color dev: true - /rollup@2.70.1: - resolution: {integrity: sha512-CRYsI5EuzLbXdxC6RnYhOuRdtz4bhejPMSWjsFLfVM/7w/85n2szZv6yExqUXsBdz5KT8eoubeyDUDjhLHEslA==} - engines: {node: '>=10.0.0'} + /rollup@3.26.3: + resolution: {integrity: sha512-7Tin0C8l86TkpcMtXvQu6saWH93nhG3dGQ1/+l5V2TDMceTxO7kDiK6GzbfLWNNxqJXm591PcEZUozZm51ogwQ==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: fsevents: 2.3.2 dev: true - /safe-buffer@5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + /run-applescript@5.0.0: + resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==} + engines: {node: '>=12'} + dependencies: + execa: 5.1.1 + dev: true + + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + dev: true + + /safe-array-concat@1.0.0: + resolution: {integrity: sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==} + engines: {node: '>=0.4'} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + has-symbols: 1.0.3 + isarray: 2.0.5 + dev: true + + /safe-regex-test@1.0.0: + resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + is-regex: 1.1.4 dev: true - /semver@6.3.0: - resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} + /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.5.1: + resolution: {integrity: sha512-ZfhQVB59hmIauJG5Ydynupy8KHyr5imGNtdDhbZG68Ufh1Ynkv9KOYOAABf71oVbQxJ8VkWnMHAjEHE7fWkH5g==} + engines: {node: '>=10'} + /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -1296,6 +2789,18 @@ packages: engines: {node: '>=8'} dev: true + /side-channel@1.0.4: + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + object-inspect: 1.12.3 + dev: true + + /signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + dev: true + /signal-exit@4.0.2: resolution: {integrity: sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==} engines: {node: '>=14'} @@ -1306,18 +2811,26 @@ packages: engines: {node: '>=8'} dev: true - /solid-js@1.3.13: - resolution: {integrity: sha512-1EBEIW9u2yqT5QNjFdvz/tMAoKsDdaRA2Jbgykd2Dt13Ia0D4mV+BFvPkOaseSyu7DsMKS23+ZZofV8BVKmpuQ==} + /slash@4.0.0: + resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} + engines: {node: '>=12'} + dev: true + + /solid-js@1.7.8: + resolution: {integrity: sha512-XHBWk1FvFd0JMKljko7FfhefJMTSgYEuVKcQ2a8hzRXfiuSJAGsrPPafqEo+f6l+e8Oe3cROSpIL6kbzjC1fjQ==} + dependencies: + csstype: 3.1.2 + seroval: 0.5.1 - /solid-refresh@0.4.0(solid-js@1.3.13): - resolution: {integrity: sha512-5XCUz845n/sHPzKK2i2G2EeV61tAmzv6SqzqhXcPaYhrgzVy7nKTQaBpKK8InKrriq9Z2JFF/mguIU00t/73xw==} + /solid-refresh@0.5.3(solid-js@1.7.8): + resolution: {integrity: sha512-Otg5it5sjOdZbQZJnvo99TEBAr6J7PQ5AubZLNU6szZzg3RQQ5MX04oteBIIGDs0y2Qv8aXKm9e44V8z+UnFdw==} peerDependencies: - solid-js: ^1.3.0 + solid-js: ^1.3 dependencies: - '@babel/generator': 7.17.7 - '@babel/helper-module-imports': 7.16.7 - '@babel/types': 7.17.0 - solid-js: 1.3.13 + '@babel/generator': 7.22.9 + '@babel/helper-module-imports': 7.22.5 + '@babel/types': 7.22.5 + solid-js: 1.7.8 dev: true /source-map-js@1.0.2: @@ -1325,15 +2838,6 @@ packages: engines: {node: '>=0.10.0'} dev: true - /source-map@0.5.7: - resolution: {integrity: sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=} - engines: {node: '>=0.10.0'} - dev: true - - /sourcemap-codec@1.4.8: - resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} - dev: true - /string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -1352,6 +2856,31 @@ packages: strip-ansi: 7.1.0 dev: true + /string.prototype.trim@1.2.7: + resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + dev: true + + /string.prototype.trimend@1.0.6: + resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + dev: true + + /string.prototype.trimstart@1.0.6: + resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + dev: true + /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -1366,6 +2895,27 @@ packages: 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 + + /style-to-object@0.3.0: + resolution: {integrity: sha512-CzFnRRXhzWIdItT3OmF8SQfWyahHhjq3HwcMNCNLn+N7klOOqPjMeG/4JSu77D7ypZdGvSzvkrbyeTMizz2VrA==} + dependencies: + inline-style-parser: 0.1.1 + dev: true + /supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -1373,67 +2923,251 @@ packages: 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 + /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} dev: true + /synckit@0.8.5: + resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==} + engines: {node: ^14.18.0 || >=16.0.0} + dependencies: + '@pkgr/utils': 2.4.2 + tslib: 2.6.0 + dev: true + + /text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + dev: true + + /titleize@3.0.0: + resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==} + engines: {node: '>=12'} + dev: true + /to-fast-properties@2.0.0: - resolution: {integrity: sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=} + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} dev: true - /ts-toolbelt@9.6.0: - resolution: {integrity: sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==} + /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 + + /ts-api-utils@1.0.1(typescript@5.1.6): + resolution: {integrity: sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A==} + engines: {node: '>=16.13.0'} + peerDependencies: + typescript: '>=4.2.0' + dependencies: + typescript: 5.1.6 + dev: true + + /tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + dev: true + + /tslib@2.6.0: + resolution: {integrity: sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==} + dev: true + + /tsutils@3.21.0(typescript@5.1.6): + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + dependencies: + tslib: 1.14.1 + typescript: 5.1.6 + 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-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + dev: true + + /typed-array-buffer@1.0.0: + resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + is-typed-array: 1.1.12 + dev: true + + /typed-array-byte-length@1.0.0: + resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.2 + for-each: 0.3.3 + has-proto: 1.0.1 + is-typed-array: 1.1.12 + dev: true + + /typed-array-byte-offset@1.0.0: + resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + for-each: 0.3.3 + has-proto: 1.0.1 + is-typed-array: 1.1.12 + dev: true + + /typed-array-length@1.0.4: + resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} + dependencies: + call-bind: 1.0.2 + for-each: 0.3.3 + is-typed-array: 1.1.12 + dev: true + + /typescript@5.1.6: + resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} + engines: {node: '>=14.17'} + hasBin: true dev: true - /typescript@4.6.3: - resolution: {integrity: sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==} - engines: {node: '>=4.2.0'} + /unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + dependencies: + call-bind: 1.0.2 + has-bigints: 1.0.2 + has-symbols: 1.0.3 + which-boxed-primitive: 1.0.2 + dev: true + + /untildify@4.0.0: + resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} + engines: {node: '>=8'} + dev: true + + /update-browserslist-db@1.0.11(browserslist@4.21.9): + resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.21.9 + escalade: 3.1.1 + picocolors: 1.0.0 dev: true - /vite-plugin-solid@2.2.6: - resolution: {integrity: sha512-J1RnmqkZZJSNYDW7vZj0giKKHLWGr9tS/gxR70WDSTYfhyXrgukbZdIfSEFbtrsg8ZiQ2t2zXcvkWoeefenqKw==} + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: - '@babel/core': 7.17.8 - '@babel/preset-typescript': 7.16.7(@babel/core@7.17.8) - babel-preset-solid: 1.3.13(@babel/core@7.17.8) - merge-anything: 5.0.2 - solid-js: 1.3.13 - solid-refresh: 0.4.0(solid-js@1.3.13) - vite: 2.9.1 + punycode: 2.3.0 + dev: true + + /validate-html-nesting@1.2.2: + resolution: {integrity: sha512-hGdgQozCsQJMyfK5urgFcWEqsSSrK63Awe0t/IMR0bZ0QMtnuaiHzThW81guu3qx9abLi99NEuiaN6P9gVYsNg==} + dev: true + + /vite-plugin-solid@2.7.0(solid-js@1.7.8)(vite@4.4.6): + resolution: {integrity: sha512-avp/Jl5zOp/Itfo67xtDB2O61U7idviaIp4mLsjhCa13PjKNasz+IID0jYTyqUp9SFx6/PmBr6v4KgDppqompg==} + peerDependencies: + solid-js: ^1.7.2 + vite: ^3.0.0 || ^4.0.0 + dependencies: + '@babel/core': 7.22.9 + '@babel/preset-typescript': 7.22.5(@babel/core@7.22.9) + '@types/babel__core': 7.20.1 + babel-preset-solid: 1.7.7(@babel/core@7.22.9) + merge-anything: 5.1.7 + solid-js: 1.7.8 + solid-refresh: 0.5.3(solid-js@1.7.8) + vite: 4.4.6 + vitefu: 0.2.4(vite@4.4.6) transitivePeerDependencies: - - less - - sass - - stylus - supports-color dev: true - /vite@2.9.1: - resolution: {integrity: sha512-vSlsSdOYGcYEJfkQ/NeLXgnRv5zZfpAsdztkIrs7AZHV8RCMZQkwjo4DS5BnrYTqoWqLoUe1Cah4aVO4oNNqCQ==} - engines: {node: '>=12.2.0'} + /vite@4.4.6: + resolution: {integrity: sha512-EY6Mm8vJ++S3D4tNAckaZfw3JwG3wa794Vt70M6cNJ6NxT87yhq7EC8Rcap3ahyHdo8AhCmV9PTk+vG1HiYn1A==} + engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: + '@types/node': '>= 14' less: '*' + lightningcss: ^1.21.0 sass: '*' stylus: '*' + sugarss: '*' + terser: ^5.4.0 peerDependenciesMeta: + '@types/node': + optional: true less: optional: true + lightningcss: + optional: true sass: optional: true stylus: optional: true + sugarss: + optional: true + terser: + optional: true dependencies: - esbuild: 0.14.27 - postcss: 8.4.12 - resolve: 1.22.0 - rollup: 2.70.1 + esbuild: 0.18.15 + postcss: 8.4.26 + rollup: 3.26.3 optionalDependencies: fsevents: 2.3.2 dev: true + /vitefu@0.2.4(vite@4.4.6): + resolution: {integrity: sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==} + peerDependencies: + vite: ^3.0.0 || ^4.0.0 + peerDependenciesMeta: + vite: + optional: true + dependencies: + vite: 4.4.6 + 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-typed-array@1.1.11: + resolution: {integrity: sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + 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'} @@ -1461,5 +3195,18 @@ packages: dev: true /wrappy@1.0.2: - resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=} + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + 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 + + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} dev: true diff --git a/spring/.eslintrc.cjs b/spring/.eslintrc.cjs new file mode 100644 index 0000000..6f56058 --- /dev/null +++ b/spring/.eslintrc.cjs @@ -0,0 +1,71 @@ +module.exports = { + root: true, + env: { + browser: true, + es6: true, + }, + ignorePatterns: ['node_modules', 'dist'], + plugins: ['@typescript-eslint', 'solid'], + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended-type-checked', + 'plugin:@typescript-eslint/strict-type-checked', + 'plugin:@typescript-eslint/stylistic-type-checked', + 'plugin:solid/typescript', + 'prettier', + ], + parserOptions: { + tsconfigRootDir: __dirname, + ecmaVersion: 2022, + ecmaFeatures: { + jsx: true, + }, + project: 'tsconfig.json', + createDefaultProgram: true, + }, + rules: { + '@typescript-eslint/array-type': 'off', + '@typescript-eslint/ban-ts-comment': 'off', + '@typescript-eslint/ban-ts-ignore': 'off', + '@typescript-eslint/ban-types': 'off', + '@typescript-eslint/consistent-type-definitions': 'off', + '@typescript-eslint/consistent-type-imports': [ + 'error', + { fixStyle: 'inline-type-imports' }, + ], + '@typescript-eslint/explicit-function-return-type': 'off', + '@typescript-eslint/explicit-module-boundary-types': 'off', + '@typescript-eslint/no-confusing-void-expression': [ + 'warn', + { ignoreArrowShorthand: true }, + ], + '@typescript-eslint/no-empty-function': 'off', + '@typescript-eslint/no-empty-interface': 'off', + '@typescript-eslint/no-explicit-any': 'warn', + '@typescript-eslint/no-floating-promises': 'warn', + '@typescript-eslint/no-throw-literal': 'off', + '@typescript-eslint/no-unnecessary-boolean-literal-compare': 'off', + '@typescript-eslint/no-unnecessary-condition': 'off', + '@typescript-eslint/no-unnecessary-type-assertion': 'warn', + '@typescript-eslint/no-unsafe-argument': 'off', + '@typescript-eslint/no-unsafe-assignment': 'off', + '@typescript-eslint/no-unsafe-call': 'off', + '@typescript-eslint/no-unsafe-member-access': 'off', + '@typescript-eslint/no-unsafe-return': 'off', + '@typescript-eslint/no-unused-vars': 'off', + '@typescript-eslint/non-nullable-type-assertion-style': 'off', + '@typescript-eslint/prefer-nullish-coalescing': 'warn', + '@typescript-eslint/prefer-reduce-type-parameter': 'off', + '@typescript-eslint/require-await': 'warn', + '@typescript-eslint/restrict-plus-operands': 'warn', + '@typescript-eslint/restrict-template-expressions': 'off', + '@typescript-eslint/unbound-method': 'off', + curly: ['error', 'all'], + 'linebreak-style': ['error', 'unix'], + 'no-console': 'off', + 'no-eval': 'error', + 'no-implied-eval': 'error', + 'prefer-template': 'error', + 'require-atomic-updates': 'off', + }, +} diff --git a/spring/package.json b/spring/package.json index c97cf1f..94ea339 100644 --- a/spring/package.json +++ b/spring/package.json @@ -1,22 +1,25 @@ { "name": "solid-spring", "version": "0.1.0", - "type": "module", "description": "Like react-spring, but for SolidJS", "info": "solid-spring is a spring-physics first animation library for SolidJS based on react-spring/core", + "license": "MIT", "contributors": [], + "homepage": "https://github.com/aslemammad/solid-spring#readme", + "repository": { + "type": "git", + "url": "git+https://github.com/aslemammad/solid-spring.git" + }, + "bugs": { + "url": "https://github.com/aslemammad/solid-spring/issues" + }, "keywords": [ "best_ecosystem", "solidhack", "react-spring", "solid" ], - "scripts": { - "build": "rimraf dist && rollup -c", - "dev": "rollup -c --watch src", - "typecheck": "tsc --noEmit", - "test": "pnpm vitest" - }, + "type": "module", "main": "./dist/index.js", "module": "./dist/index.js", "types": "./dist/index.d.ts", @@ -31,21 +34,32 @@ "bin", "*.d.ts" ], - "repository": { - "type": "git", - "url": "git+https://github.com/aslemammad/solid-spring.git" - }, - "license": "MIT", - "bugs": { - "url": "https://github.com/aslemammad/solid-spring/issues" + "scripts": { + "build": "rimraf dist && rollup -c", + "dev": "rollup -c --watch src", + "typecheck": "tsc --noEmit", + "test": "pnpm vitest", + "lint": "pnpm eslint 'src/**/*.{ts,tsx}' && tsc --skipLibCheck", + "prettier": "prettier --write \"src/**/*.{js,json,ts,tsx,css,scss,html}\"" }, - "homepage": "https://github.com/aslemammad/solid-spring#readme", "devDependencies": { + "prettier": "^3.0.0", "rimraf": "^5.0.1", - "rollup-plugin-dts": "^4.2.0", - "solid-js": "^1.3.13" + "rollup-plugin-dts": "^5.3.0", + "solid-js": "^1.7.8", + "@rollup/plugin-alias": "^5.0.0", + "@rollup/plugin-commonjs": "^25.0.3", + "@rollup/plugin-json": "^6.0.0", + "@rollup/plugin-node-resolve": "^15.1.0", + "esbuild": "^0.18.15", + "rollup-plugin-esbuild": "^5.0.0", + "@typescript-eslint/eslint-plugin": "^6.0.0", + "@typescript-eslint/parser": "^6.0.0", + "eslint-config-prettier": "^8.8.0", + "eslint-plugin-prettier": "^5.0.0", + "eslint-plugin-solid": "^0.12.1" }, "peerDependencies": { - "solid-js": "^1.3.13" + "solid-js": "^1.7.8" } } diff --git a/spring/rollup.config.js b/spring/rollup.config.js index c611ac9..0b9e712 100644 --- a/spring/rollup.config.js +++ b/spring/rollup.config.js @@ -1,35 +1,35 @@ -import esbuild from "rollup-plugin-esbuild"; -import resolve from "@rollup/plugin-node-resolve"; -import commonjs from "@rollup/plugin-commonjs"; -import json from "@rollup/plugin-json"; -import alias from "@rollup/plugin-alias"; +import esbuild from 'rollup-plugin-esbuild' +import resolve from '@rollup/plugin-node-resolve' +import commonjs from '@rollup/plugin-commonjs' +import json from '@rollup/plugin-json' +import alias from '@rollup/plugin-alias' import dts from 'rollup-plugin-dts' -import pkg from "./package.json"; +import pkg from './package.json' assert { type: 'json' } -const entry = ["src/index.ts"]; +const entry = ['src/index.ts'] const external = [ ...Object.keys(pkg.dependencies || []), ...Object.keys(pkg.peerDependencies || []), - "worker_threads", - "esbuild", - "solid-js", - "solid-js/web", - "fs/promises", -]; + 'worker_threads', + 'esbuild', + 'solid-js', + 'solid-js/web', + 'fs/promises', +] export default [ { input: entry, output: { - dir: "dist", - format: "esm", + dir: 'dist', + format: 'esm', sourcemap: true, }, external, plugins: [ alias({ - entries: [{ find: /^node:(.+)$/, replacement: "$1" }], + entries: [{ find: /^node:(.+)$/, replacement: '$1' }], }), resolve({ preferBuiltins: true, @@ -38,23 +38,19 @@ export default [ commonjs(), esbuild({ define: { - "import.meta.vitest": 'false', + 'import.meta.vitest': 'false', }, - target: "node14", + target: 'node14', }), ], }, { - input: [ - 'src/index.ts', - ], + input: ['src/index.ts'], output: { file: 'dist/index.d.ts', format: 'esm', }, external, - plugins: [ - dts(), - ], + plugins: [dts()], }, -]; +] diff --git a/spring/src/AnimatedArray.ts b/spring/src/AnimatedArray.ts index 24b7fa0..3c6c479 100644 --- a/spring/src/AnimatedArray.ts +++ b/spring/src/AnimatedArray.ts @@ -1,14 +1,14 @@ -import { AnimatedValue } from "./animated" -import { AnimatedObject } from "./AnimatedObject" -import { AnimatedString } from "./AnimatedString" -import { isAnimatedString } from "./utils" +import { AnimatedValue } from './animated' +import { AnimatedObject } from './AnimatedObject' +import { AnimatedString } from './AnimatedString' +import { isAnimatedString } from './utils' type Value = number | string type Source = AnimatedValue[] /** An array of animated nodes */ export class AnimatedArray< - T extends ReadonlyArray = Value[] + T extends ReadonlyArray = Value[], > extends AnimatedObject { protected declare source: Source constructor(source: T) { @@ -21,7 +21,7 @@ export class AnimatedArray< } getValue(): T { - return this.source.map(node => node.getValue()) as any + return this.source.map((node) => node.getValue()) as any } setValue(source: T) { diff --git a/spring/src/AnimatedObject.ts b/spring/src/AnimatedObject.ts index 6524288..248fa2b 100644 --- a/spring/src/AnimatedObject.ts +++ b/spring/src/AnimatedObject.ts @@ -1,8 +1,12 @@ -import { Animated, AnimatedValue, getPayload, isAnimated } from "./animated" -import { TreeContext } from "./context" -import { getFluidValue, hasFluidValue } from "./fluids" -import { Lookup, eachProp, each } from "./utils" - +import { + Animated, + type AnimatedValue, + getPayload, + isAnimated, +} from './animated' +import { TreeContext } from './context' +import { getFluidValue, hasFluidValue } from './fluids' +import { type Lookup, eachProp, each } from './utils' /** An object containing `Animated` nodes */ export class AnimatedObject extends Animated { @@ -33,7 +37,7 @@ export class AnimatedObject extends Animated { reset() { if (this.payload) { - each(this.payload, node => node.reset()) + each(this.payload, (node) => node.reset()) } } @@ -53,7 +57,7 @@ export class AnimatedObject extends Animated { } const payload = getPayload(source) if (payload) { - each(payload, node => this.add(node)) + each(payload, (node) => this.add(node)) } } } diff --git a/spring/src/AnimatedString.ts b/spring/src/AnimatedString.ts index b535be3..b8d288e 100644 --- a/spring/src/AnimatedString.ts +++ b/spring/src/AnimatedString.ts @@ -1,6 +1,6 @@ -import { AnimatedValue } from "./animated" -import { createInterpolator } from "./createInterpolator" -import { is } from "./utils" +import { AnimatedValue } from './animated' +import { createInterpolator } from './createInterpolator' +import { is } from './utils' type Value = string | number @@ -22,7 +22,7 @@ export class AnimatedString extends AnimatedValue { } getValue() { - let value = this._string + const value = this._string return value == null ? (this._string = this._toString(this._value)) : value } diff --git a/spring/src/AnimatedStyle.ts b/spring/src/AnimatedStyle.ts index 4c284f6..e561e9e 100644 --- a/spring/src/AnimatedStyle.ts +++ b/spring/src/AnimatedStyle.ts @@ -1,6 +1,21 @@ -import { AnimatedObject } from "./AnimatedObject" -import { addFluidObserver, callFluidObservers, FluidEvent, FluidValue, getFluidValue, hasFluidValue, removeFluidObserver } from "./fluids" -import { is,each, Lookup, OneOrMore, eachProp, toArray } from "./utils" +import { AnimatedObject } from './AnimatedObject' +import { + addFluidObserver, + callFluidObservers, + type FluidEvent, + FluidValue, + getFluidValue, + hasFluidValue, + removeFluidObserver, +} from './fluids' +import { + is, + each, + type Lookup, + type OneOrMore, + eachProp, + toArray, +} from './utils' /** The transform-functions * (https://developer.mozilla.org/fr/docs/Web/CSS/transform-function) @@ -31,7 +46,7 @@ const addUnit = (value: Value, unit: string): string | 0 => */ const isValueIdentity = (value: OneOrMore, id: number): boolean => is.arr(value) - ? value.every(v => isValueIdentity(v, id)) + ? value.every((v) => isValueIdentity(v, id)) : is.num(value) ? value === id : parseFloat(value) === id @@ -74,7 +89,9 @@ export class AnimatedStyle extends AnimatedObject { transforms.push((transform: string) => [transform, transform === '']) } else if (domTransforms.test(key)) { delete style[key] - if (is.und(value)) return + if (is.und(value)) { + return + } const unit = pxTransforms.test(key) ? 'px' @@ -90,9 +107,9 @@ export class AnimatedStyle extends AnimatedObject { isValueIdentity(deg, 0), ] : (input: Value[]) => [ - `${key}(${input.map(v => addUnit(v, unit)).join(',')})`, + `${key}(${input.map((v) => addUnit(v, unit)).join(',')})`, isValueIdentity(input, key.startsWith('scale') ? 1 : 0), - ] + ], ) } }) @@ -109,7 +126,10 @@ export class AnimatedStyle extends AnimatedObject { class FluidTransform extends FluidValue { protected _value: string | null = null - constructor(readonly inputs: Inputs, readonly transforms: Transforms) { + constructor( + readonly inputs: Inputs, + readonly transforms: Transforms, + ) { super() } @@ -123,9 +143,9 @@ class FluidTransform extends FluidValue { each(this.inputs, (input, i) => { const arg1 = getFluidValue(input[0]) const [t, id] = this.transforms[i]( - is.arr(arg1) ? arg1 : input.map(getFluidValue) + is.arr(arg1) ? arg1 : input.map(getFluidValue), ) - transform += ' ' + t + transform += ` ${t}` identity = identity && id }) return identity ? 'none' : transform @@ -133,24 +153,26 @@ class FluidTransform extends FluidValue { // Start observing our inputs once we have an observer. protected observerAdded(count: number) { - if (count == 1) - each(this.inputs, input => + if (count == 1) { + each(this.inputs, (input) => each( input, - value => hasFluidValue(value) && addFluidObserver(value, this) - ) + (value) => hasFluidValue(value) && addFluidObserver(value, this), + ), ) + } } // Stop observing our inputs once we have no observers. protected observerRemoved(count: number) { - if (count == 0) - each(this.inputs, input => + if (count == 0) { + each(this.inputs, (input) => each( input, - value => hasFluidValue(value) && removeFluidObserver(value, this) - ) + (value) => hasFluidValue(value) && removeFluidObserver(value, this), + ), ) + } } eventObserved(event: FluidEvent) { diff --git a/spring/src/Animation.ts b/spring/src/Animation.ts index dd5b70c..4ccb934 100644 --- a/spring/src/Animation.ts +++ b/spring/src/Animation.ts @@ -1,6 +1,6 @@ -import { AnimatedValue } from "./animated" -import { FluidValue } from "./fluids" -import { AnimationConfig, PickEventFns, SpringProps } from "./utils" +import { type AnimatedValue } from './animated' +import { type FluidValue } from './fluids' +import { AnimationConfig, type PickEventFns, type SpringProps } from './utils' const emptyArray: readonly any[] = [] diff --git a/spring/src/AnimationConfig.ts b/spring/src/AnimationConfig.ts index 24f3f4c..f6bfc7d 100644 --- a/spring/src/AnimationConfig.ts +++ b/spring/src/AnimationConfig.ts @@ -1,4 +1,4 @@ -import { config, EasingFunction, easings, is } from "./utils" +import { config, type EasingFunction, easings, is } from './utils' const defaults: any = { ...config.default, @@ -141,13 +141,13 @@ export class AnimationConfig { export function mergeConfig( config: AnimationConfig, newConfig: Partial, - defaultConfig?: Partial + defaultConfig?: Partial, ): typeof config export function mergeConfig( config: any, newConfig: object, - defaultConfig?: object + defaultConfig?: object, ) { if (defaultConfig) { defaultConfig = { ...defaultConfig } @@ -166,8 +166,12 @@ export function mergeConfig( let { mass, frequency, damping } = config if (!is.und(frequency)) { - if (frequency < 0.01) frequency = 0.01 - if (damping < 0) damping = 0 + if (frequency < 0.01) { + frequency = 0.01 + } + if (damping < 0) { + damping = 0 + } config.tension = Math.pow((2 * Math.PI) / frequency, 2) * mass config.friction = (4 * Math.PI * damping * mass) / frequency } @@ -179,7 +183,7 @@ export function mergeConfig( // This depends on which "config" props take precedence when defined. function sanitizeConfig( config: Partial, - props: Partial + props: Partial, ) { if (!is.und(props.decay)) { config.duration = undefined diff --git a/spring/src/AnimationResult.ts b/spring/src/AnimationResult.ts index eaf45bb..61b0047 100644 --- a/spring/src/AnimationResult.ts +++ b/spring/src/AnimationResult.ts @@ -1,19 +1,19 @@ -import { AnimationResult, Readable } from "./utils" +import { type AnimationResult, type Readable } from './utils' /** @internal */ export const getCombinedResult = ( target: T, - results: AnimationResult[] + results: AnimationResult[], ): AnimationResult => results.length == 1 ? results[0] - : results.some(result => result.cancelled) + : results.some((result) => result.cancelled) ? getCancelledResult(target.get()) - : results.every(result => result.noop) + : results.every((result) => result.noop) ? getNoopResult(target.get()) : getFinishedResult( target.get(), - results.every(result => result.finished) + results.every((result) => result.finished), ) /** No-op results are for updates that never start an animation. */ @@ -27,7 +27,7 @@ export const getNoopResult = (value: any) => ({ export const getFinishedResult = ( value: any, finished: boolean, - cancelled: boolean = false + cancelled = false, ) => ({ value, finished, diff --git a/spring/src/Controller.ts b/spring/src/Controller.ts index 49432b5..c7f3aa8 100644 --- a/spring/src/Controller.ts +++ b/spring/src/Controller.ts @@ -1,12 +1,38 @@ -import { AnimationResult, each, eachProp, ControllerUpdate, Lookup, OnChange, OnRest, OnStart, SpringValues, toArray, UnknownProps, OneOrMore, is, flushCalls, AsyncResult, getDefaultProp, flush, Falsy, noop, ControllerFlushFn } from "./utils" -import { createLoopUpdate, createUpdate, SpringValue, } from './SpringValue' -import { SpringRef } from "./SpringRef" -import { FrameValue } from "./FrameValue" -import { addFluidObserver, FluidObserver } from "./fluids" -import { runAsync, RunAsyncState, stopAsync } from "./runAsync" -import { scheduleProps } from "./scheduleProps" -import { getCancelledResult, getCombinedResult } from "./AnimationResult" -import { raf } from "./rafz" +import { + type AnimationResult, + each, + eachProp, + type ControllerUpdate, + type Lookup, + type OnChange, + type OnRest, + type OnStart, + type SpringValues, + toArray, + type UnknownProps, + type OneOrMore, + is, + flushCalls, + type AsyncResult, + getDefaultProp, + flush, + type Falsy, + noop, + type ControllerFlushFn, +} from './utils' +import { createLoopUpdate, createUpdate, SpringValue } from './SpringValue' +import { type SpringRef } from './SpringRef' +import { type FrameValue } from './FrameValue' +import { addFluidObserver, type FluidObserver } from './fluids' +import { + type AsyncTo, + runAsync, + type RunAsyncState, + stopAsync, +} from './runAsync' +import { scheduleProps } from './scheduleProps' +import { getCancelledResult, getCombinedResult } from './AnimationResult' +import { raf } from './rafz' /** Events batched by the `Controller` class */ const BATCHED_EVENTS = ['onStart', 'onChange', 'onRest'] as const @@ -83,7 +109,7 @@ export class Controller { constructor( props?: ControllerUpdate | null, - flush?: ControllerFlushFn + flush?: ControllerFlushFn, ) { this._onFrame = this._onFrame.bind(this) if (flush) { @@ -101,7 +127,7 @@ export class Controller { get idle() { return ( !this._state.asyncTo && - Object.values(this.springs as Lookup).every(spring => { + Object.values(this.springs as Lookup).every((spring) => { return spring.idle && !spring.isDelayed && !spring.isPaused }) ) @@ -182,10 +208,10 @@ export class Controller { } if (keys) { const springs = this.springs as Lookup - each(toArray(keys) as string[], key => springs[key].stop(!!arg)) + each(toArray(keys) as string[], (key) => springs[key].stop(!!arg)) } else { stopAsync(this._state, this._lastAsyncId) - this.each(spring => spring.stop(!!arg)) + this.each((spring) => spring.stop(!!arg)) } return this } @@ -196,7 +222,7 @@ export class Controller { this.start({ pause: true }) } else { const springs = this.springs as Lookup - each(toArray(keys) as string[], key => springs[key].pause()) + each(toArray(keys) as string[], (key) => springs[key].pause()) } return this } @@ -207,7 +233,7 @@ export class Controller { this.start({ pause: false }) } else { const springs = this.springs as Lookup - each(toArray(keys) as string[], key => springs[key].resume()) + each(toArray(keys) as string[], (key) => springs[key].resume()) } return this } @@ -263,7 +289,9 @@ export class Controller { this._active.delete(event.parent) } // The `onFrame` handler runs when a parent is changed or idle. - else return + else { + return + } raf.onFrame(this._onFrame) } } @@ -273,10 +301,10 @@ export class Controller { */ export function flushUpdateQueue( ctrl: Controller, - queue: ControllerQueue + queue: ControllerQueue, ) { - return Promise.all(queue.map(props => flushUpdate(ctrl, props))).then( - results => getCombinedResult(ctrl, results) + return Promise.all(queue.map((props) => flushUpdate(ctrl, props))).then( + (results) => getCombinedResult(ctrl, results), ) } @@ -292,7 +320,7 @@ export function flushUpdateQueue( export async function flushUpdate( ctrl: Controller, props: ControllerQueue[number], - isLoop?: boolean + isLoop?: boolean, ): AsyncResult { const { keys, to, from, loop, onRest, onResolve } = props const defaults = is.obj(props.default) && props.default @@ -304,8 +332,12 @@ export async function flushUpdate( } // Treat false like null, which gets ignored. - if (to === false) props.to = null - if (from === false) props.from = null + if (to === false) { + props.to = null + } + if (from === false) { + props.from = null + } const asyncTo = is.arr(to) || is.fun(to) ? to : undefined if (asyncTo) { @@ -319,15 +351,19 @@ export async function flushUpdate( // However, batching is avoided when the `to` prop is async, because any // event props are used as default props instead. else { - each(BATCHED_EVENTS, key => { + each(BATCHED_EVENTS, (key) => { const handler: any = props[key] if (is.fun(handler)) { const queue = ctrl['_events'][key] props[key] = (({ finished, cancelled }: AnimationResult) => { const result = queue.get(handler) if (result) { - if (!finished) result.finished = false - if (cancelled) result.cancelled = true + if (!finished) { + result.finished = false + } + if (cancelled) { + result.cancelled = true + } } else { // The "value" is set before the "handler" is called. queue.set(handler, { @@ -358,8 +394,8 @@ export async function flushUpdate( props.pause = true } - const promises: AsyncResult[] = (keys || Object.keys(ctrl.springs)).map(key => - ctrl.springs[key]!.start(props as any) + const promises: AsyncResult[] = (keys || Object.keys(ctrl.springs)).map( + (key) => ctrl.springs[key]!.start(props as any), ) const cancel = @@ -379,11 +415,12 @@ export async function flushUpdate( resolve(getCancelledResult(ctrl)) } else { props.onRest = onRest - resolve(runAsync(asyncTo!, props, state, ctrl)) + resolve(runAsync(asyncTo! as AsyncTo, props, state, ctrl)) + // previously: resolve(runAsync(asyncTo!, props, state, ctrl)) } }, }, - }) + }), ) } @@ -392,7 +429,7 @@ export async function flushUpdate( if (state.paused) { // Ensure `this` must be resumed before the returned promise // is resolved and before starting the next `loop` repetition. - await new Promise(resume => { + await new Promise((resume) => { state.resumeQueue.add(resume) }) } @@ -420,8 +457,8 @@ export async function flushUpdate( * until they're given to `setSprings`. */ export function getSprings( - ctrl: Controller>, - props?: OneOrMore> + ctrl: Controller, + props?: OneOrMore>, ) { const springs = { ...ctrl.springs } if (props) { @@ -433,7 +470,7 @@ export function getSprings( // Avoid passing array/function to each spring. props = { ...props, to: undefined } } - prepareSprings(springs as any, props, key => { + prepareSprings(springs as any, props, (key) => { return createSpring(key) }) }) @@ -447,8 +484,8 @@ export function getSprings( * whose key is not already in use. */ export function setSprings( - ctrl: Controller>, - springs: SpringValues + ctrl: Controller, + springs: SpringValues, ) { eachProp(springs, (spring, key) => { if (!ctrl.springs[key]) { @@ -476,10 +513,10 @@ function createSpring(key: string, observer?: FluidObserver) { function prepareSprings( springs: SpringValues, props: ControllerQueue[number], - create: (key: string) => SpringValue + create: (key: string) => SpringValue, ) { if (props.keys) { - each(props.keys, key => { + each(props.keys, (key) => { const spring = springs[key] || (springs[key] = create(key)) spring['_prepareNode'](props) }) @@ -493,8 +530,8 @@ function prepareSprings( * The queue is expected to contain `createUpdate` results. */ function prepareKeys(ctrl: Controller, queue: ControllerQueue[number][]) { - each(queue, props => { - prepareSprings(ctrl.springs, props, key => { + each(queue, (props) => { + prepareSprings(ctrl.springs, props, (key) => { return createSpring(key, ctrl) }) }) diff --git a/spring/src/FrameLoop.ts b/spring/src/FrameLoop.ts index 4640eae..05d08d8 100644 --- a/spring/src/FrameLoop.ts +++ b/spring/src/FrameLoop.ts @@ -77,14 +77,16 @@ function flushStartQueue() { } function startSafely(animation: OpaqueAnimation) { - if (!currentFrame.includes(animation)) startUnsafely(animation) + if (!currentFrame.includes(animation)) { + startUnsafely(animation) + } } function startUnsafely(animation: OpaqueAnimation) { currentFrame.splice( - findIndex(currentFrame, other => other.priority > animation.priority), + findIndex(currentFrame, (other) => other.priority > animation.priority), 0, - animation + animation, ) } diff --git a/spring/src/FrameValue.ts b/spring/src/FrameValue.ts index a8ec5c5..21c7998 100644 --- a/spring/src/FrameValue.ts +++ b/spring/src/FrameValue.ts @@ -1,13 +1,13 @@ -import * as G from "./globals"; -import { getAnimated } from "./animated"; -import { FluidValue, callFluidObservers } from "./fluids"; -import { Interpolation, InterpolatorArgs } from "./Interpolation"; -import { frameLoop } from "./FrameLoop"; +import * as G from './globals' +import { getAnimated } from './animated' +import { FluidValue, callFluidObservers } from './fluids' +import { type Interpolation, type InterpolatorArgs } from './Interpolation' +import { frameLoop } from './FrameLoop' export const isFrameValue = (value: any): value is FrameValue => - value instanceof FrameValue; + value instanceof FrameValue -let nextId = 1; +let nextId = 1 /** * A kind of `FluidValue` that manages an `AnimatedValue` node. @@ -18,56 +18,60 @@ export abstract class FrameValue extends FluidValue< T, FrameValue.Event > { - readonly id = nextId++; + readonly id = nextId++ - abstract key?: string; - abstract get idle(): boolean; + abstract key?: string + abstract get idle(): boolean - protected _priority = 0; + protected _priority = 0 get priority() { - return this._priority; + return this._priority } set priority(priority: number) { if (this._priority != priority) { - this._priority = priority; - this._onPriorityChange(priority); + this._priority = priority + this._onPriorityChange(priority) } } /** Get the current value */ get(): T { - const node = getAnimated(this); - return node && node.getValue(); + const node = getAnimated(this) + return node?.getValue() } /** Create a spring that maps our value to another value */ - to(...args: InterpolatorArgs) { - return G.to(this, args) as Interpolation; + to(...args: InterpolatorArgs): any { + return G.to(this, args) } /** @deprecated Use the `to` method instead. */ - interpolate(...args: InterpolatorArgs) { - return G.to(this, args) as Interpolation; + interpolate(...args: InterpolatorArgs): any { + return G.to(this, args) } toJSON() { - return this.get(); + return this.get() } protected observerAdded(count: number) { - if (count == 1) this._attach(); + if (count == 1) { + this._attach() + } } protected observerRemoved(count: number) { - if (count == 0) this._detach(); + if (count == 0) { + this._detach() + } } /** @internal */ - abstract advance(dt: number): void; + abstract advance(dt: number): void /** @internal */ - abstract eventObserved(_event: FrameValue.Event): void; + abstract eventObserved(_event: FrameValue.Event): void /** Called when the first child is added. */ protected _attach() {} @@ -78,48 +82,48 @@ export abstract class FrameValue extends FluidValue< /** Tell our children about our new value */ protected _onChange(value: T, idle = false) { callFluidObservers(this, { - type: "change", + type: 'change', parent: this, value, idle, - }); + }) } /** Tell our children about our new priority */ protected _onPriorityChange(priority: number) { if (!this.idle) { - frameLoop.sort(this); + frameLoop.sort(this) } callFluidObservers(this, { - type: "priority", + type: 'priority', parent: this, priority, - }); + }) } } export declare namespace FrameValue { /** A parent changed its value */ interface ChangeEvent { - parent: FrameValue; - type: "change"; - value: T; - idle: boolean; + parent: FrameValue + type: 'change' + value: T + idle: boolean } /** A parent changed its priority */ interface PriorityEvent { - parent: FrameValue; - type: "priority"; - priority: number; + parent: FrameValue + type: 'priority' + priority: number } /** A parent is done animating */ interface IdleEvent { - parent: FrameValue; - type: "idle"; + parent: FrameValue + type: 'idle' } /** Events sent to children of `FrameValue` objects */ - export type Event = ChangeEvent | PriorityEvent | IdleEvent; + export type Event = ChangeEvent | PriorityEvent | IdleEvent } diff --git a/spring/src/Interpolation.ts b/spring/src/Interpolation.ts index 1560bd8..09d904d 100644 --- a/spring/src/Interpolation.ts +++ b/spring/src/Interpolation.ts @@ -1,11 +1,18 @@ import * as G from './globals' -import { getAnimated, getPayload, setAnimated } from "./animated" -import { createInterpolator } from "./createInterpolator" -import { addFluidObserver, callFluidObservers, FluidValue, getFluidValue, hasFluidValue, removeFluidObserver } from "./fluids" -import { frameLoop } from "./FrameLoop" -import { FrameValue, isFrameValue } from "./FrameValue" -import { raf } from "./rafz" -import { Any, toArray, each, getAnimatedType, isEqual, is } from "./utils" +import { getAnimated, getPayload, setAnimated } from './animated' +import { createInterpolator } from './createInterpolator' +import { + addFluidObserver, + callFluidObservers, + type FluidValue, + getFluidValue, + hasFluidValue, + removeFluidObserver, +} from './fluids' +import { frameLoop } from './FrameLoop' +import { FrameValue, isFrameValue } from './FrameValue' +import { raf } from './rafz' +import { type Any, toArray, each, getAnimatedType, isEqual, is } from './utils' export type Animatable = T extends number ? number @@ -101,7 +108,7 @@ export type InterpolatorArgs = | [ readonly number[], readonly Constrain[], - (ExtrapolateType | undefined)? + (ExtrapolateType | undefined)?, ] export type InterpolatorFn = (...inputs: Arrify) => Out @@ -129,7 +136,7 @@ export class Interpolation extends FrameValue { constructor( /** The source of input values */ readonly source: unknown, - args: InterpolatorArgs + args: InterpolatorArgs, ) { super() this.calc = createInterpolator(...args) @@ -166,7 +173,7 @@ export class Interpolation extends FrameValue { if (this.idle && !checkIdle(this._active)) { this.idle = false - each(getPayload(this)!, node => { + each(getPayload(this)!, (node) => { node.done = false }) @@ -182,7 +189,7 @@ export class Interpolation extends FrameValue { // Observe our sources only when we're observed. protected _attach() { let priority = 1 - each(toArray(this.source), source => { + each(toArray(this.source), (source) => { if (hasFluidValue(source)) { addFluidObserver(source, this) } @@ -199,7 +206,7 @@ export class Interpolation extends FrameValue { // Stop observing our sources once we have no observers. protected _detach() { - each(toArray(this.source), source => { + each(toArray(this.source), (source) => { if (hasFluidValue(source)) { removeFluidObserver(source, this) } @@ -231,27 +238,26 @@ export class Interpolation extends FrameValue { this.priority = toArray(this.source).reduce( (highest: number, parent) => Math.max(highest, (isFrameValue(parent) ? parent.priority : 0) + 1), - 0 + 0, ) } } } export interface InterpolatorFactory { - (interpolator: InterpolatorFn): typeof interpolator; + (interpolator: InterpolatorFn): typeof interpolator (config: InterpolatorConfig): (input: number) => Animatable ( range: readonly number[], output: readonly Constrain[], - extrapolate?: ExtrapolateType + extrapolate?: ExtrapolateType, ): (input: number) => Animatable (...args: InterpolatorArgs): InterpolatorFn } - /** Returns true for an idle source. */ function isIdle(source: any) { return source.idle !== false @@ -269,7 +275,7 @@ function becomeIdle(self: Interpolation) { if (!self.idle) { self.idle = true - each(getPayload(self)!, node => { + each(getPayload(self)!, (node) => { node.done = true }) diff --git a/spring/src/SpringRef.ts b/spring/src/SpringRef.ts index 8abe942..da81ed3 100644 --- a/spring/src/SpringRef.ts +++ b/spring/src/SpringRef.ts @@ -1,14 +1,23 @@ -import { Controller } from "./Controller" -import { AsyncResult, ControllerUpdate, Falsy, is, Lookup, OneOrMore, each } from "./utils" - -export interface ControllerUpdateFn { - (i: number, ctrl: Controller): ControllerUpdate | Falsy -} +import { type Controller } from './Controller' +import { + type AsyncResult, + type ControllerUpdate, + type Falsy, + is, + type Lookup, + type OneOrMore, + each, +} from './utils' + +export type ControllerUpdateFn = ( + i: number, + ctrl: Controller, +) => ControllerUpdate | Falsy export interface SpringRef { - (props?: ControllerUpdate | ControllerUpdateFn): AsyncResult< - Controller - >[] + ( + props?: ControllerUpdate | ControllerUpdateFn, + ): AsyncResult>[] current: Controller[] /** Add a controller to this ref */ @@ -42,7 +51,7 @@ export interface SpringRef { start(props: ControllerUpdateFn): AsyncResult>[] /** Start animating each controller. */ start( - props?: ControllerUpdate | ControllerUpdateFn + props?: ControllerUpdate | ControllerUpdateFn, ): AsyncResult>[] /** Stop all animations. */ @@ -68,12 +77,12 @@ export interface SpringRef { _getProps( arg: ControllerUpdate | ControllerUpdateFn, ctrl: Controller, - index: number + index: number, ): ControllerUpdate | Falsy } export const SpringRef = < - State extends Lookup = Lookup + State extends Lookup = Lookup, >(): SpringRef => { const current: Controller[] = [] @@ -106,24 +115,26 @@ export const SpringRef = < /** Remove a controller from this ref */ SpringRef.delete = function (ctrl: Controller) { const i = current.indexOf(ctrl) - if (~i) current.splice(i, 1) + if (~i) { + current.splice(i, 1) + } } /** Pause all animations. */ SpringRef.pause = function () { - each(current, ctrl => ctrl.pause(...arguments)) + each(current, (ctrl) => ctrl.pause(...arguments)) return this } /** Resume all animations. */ SpringRef.resume = function () { - each(current, ctrl => ctrl.resume(...arguments)) + each(current, (ctrl) => ctrl.resume(...arguments)) return this } /** Update the state of each controller without animating. */ SpringRef.set = function (values: Partial) { - each(current, ctrl => ctrl.set(values)) + each(current, (ctrl) => ctrl.set(values)) } SpringRef.start = function (props?: object | ControllerUpdateFn) { @@ -145,7 +156,7 @@ export const SpringRef = < /** Stop all animations. */ SpringRef.stop = function () { - each(current, ctrl => ctrl.stop(...arguments)) + each(current, (ctrl) => ctrl.stop(...arguments)) return this } @@ -158,7 +169,7 @@ export const SpringRef = < const _getProps = function ( arg: ControllerUpdate | ControllerUpdateFn, ctrl: Controller, - index: number + index: number, ): ControllerUpdate | Falsy { return is.fun(arg) ? arg(index, ctrl) : arg } diff --git a/spring/src/SpringValue.ts b/spring/src/SpringValue.ts index 000943d..b934829 100644 --- a/spring/src/SpringValue.ts +++ b/spring/src/SpringValue.ts @@ -1,19 +1,49 @@ import * as G from './globals' -import {scheduleProps} from './scheduleProps' -import { Animated, AnimatedValue, getAnimated, getPayload, setAnimated } from "./animated"; -import { AnimatedString } from "./AnimatedString"; -import { Animation } from "./Animation"; -import { getCancelledResult, getCombinedResult, getFinishedResult, getNoopResult } from "./AnimationResult"; -import { addFluidObserver, callFluidObservers, FluidValue, getFluidObservers, getFluidValue, hasFluidValue, removeFluidObserver } from "./fluids"; -import { FrameValue, isFrameValue } from "./FrameValue"; -import { raf } from "./rafz"; -import { runAsync, RunAsyncProps, RunAsyncState, stopAsync } from "./runAsync"; -import { hasAnimated, isAnimating, isPaused, setActiveBit, setPausedBit } from "./SpringPhase"; +import { scheduleProps } from './scheduleProps' import { - EventKey, - Lookup, - SpringProps, - SpringUpdate, + type Animated, + AnimatedValue, + getAnimated, + getPayload, + setAnimated, +} from './animated' +import { AnimatedString } from './AnimatedString' +import { Animation } from './Animation' +import { + getCancelledResult, + getCombinedResult, + getFinishedResult, + getNoopResult, +} from './AnimationResult' +import { + addFluidObserver, + callFluidObservers, + type FluidValue, + getFluidObservers, + getFluidValue, + hasFluidValue, + removeFluidObserver, +} from './fluids' +import { FrameValue, isFrameValue } from './FrameValue' +import { raf } from './rafz' +import { + runAsync, + type RunAsyncProps, + type RunAsyncState, + stopAsync, +} from './runAsync' +import { + hasAnimated, + isAnimating, + isPaused, + setActiveBit, + setPausedBit, +} from './SpringPhase' +import { + type EventKey, + type Lookup, + type SpringProps, + type SpringUpdate, eachProp, getDefaultProp, resolveProp, @@ -24,20 +54,20 @@ import { getDefaultProps, is, isAsyncTo, - PickEventFns, - AnimationResolver, - VelocityProp, + type PickEventFns, + type AnimationResolver, + type VelocityProp, toArray, - AsyncResult, + type AsyncResult, flushCalls, each, matchProp, isAnimatedString, - AnimationRange, - getAnimatedType -} from "./utils"; -import { mergeConfig } from './AnimationConfig'; -import { frameLoop } from './FrameLoop'; + type AnimationRange, + getAnimatedType, +} from './utils' +import { mergeConfig } from './AnimationConfig' +import { frameLoop } from './FrameLoop' declare const console: any @@ -51,16 +81,16 @@ interface DefaultSpringProps */ export class SpringValue extends FrameValue { /** The property name used when `to` or `from` is an object. Useful when debugging too. */ - key?: string; + key?: string /** The animation state */ - animation = new Animation(); + animation = new Animation() /** The queue of pending props */ - queue?: SpringUpdate[]; + queue?: SpringUpdate[] /** Some props have customizable default values */ - defaultProps: DefaultSpringProps = {}; + defaultProps: DefaultSpringProps = {} /** The state for `runAsync` calls */ protected _state: RunAsyncState> = { @@ -69,55 +99,55 @@ export class SpringValue extends FrameValue { pauseQueue: new Set(), resumeQueue: new Set(), timeouts: new Set(), - }; + } /** The promise resolvers of pending `start` calls */ - protected _pendingCalls = new Set>(); + protected _pendingCalls = new Set>() /** The counter for tracking `scheduleProps` calls */ - protected _lastCallId = 0; + protected _lastCallId = 0 /** The last `scheduleProps` call that changed the `to` prop */ - protected _lastToId = 0; + protected _lastToId = 0 - protected _memoizedDuration = 0; + protected _memoizedDuration = 0 - constructor(from: Exclude, props?: SpringUpdate); - constructor(props?: SpringUpdate); + constructor(from: Exclude, props?: SpringUpdate) + constructor(props?: SpringUpdate) constructor(arg1?: any, arg2?: any) { - super(); + super() if (!is.und(arg1) || !is.und(arg2)) { - const props = is.obj(arg1) ? { ...arg1 } : { ...arg2, from: arg1 }; + const props = is.obj(arg1) ? { ...arg1 } : { ...arg2, from: arg1 } if (is.und(props.default)) { - props.default = true; + props.default = true } - this.start(props); + this.start(props) } } /** Equals true when not advancing on each frame. */ get idle() { - return !(isAnimating(this) || this._state.asyncTo) || isPaused(this); + return !(isAnimating(this) || this._state.asyncTo) || isPaused(this) } get goal() { - return getFluidValue(this.animation.to) as T; + return getFluidValue(this.animation.to) as T } get velocity(): VelocityProp { - const node = getAnimated(this)!; + const node = getAnimated(this)! return ( node instanceof AnimatedValue ? node.lastVelocity || 0 : node.getPayload().map((node) => node.lastVelocity || 0) - ) as any; + ) as any } /** * When true, this value has been animated at least once. */ get hasAnimated() { - return hasAnimated(this); + return hasAnimated(this) } /** @@ -125,14 +155,14 @@ export class SpringValue extends FrameValue { * which is either active or paused. */ get isAnimating() { - return isAnimating(this); + return isAnimating(this) } /** * When true, all current and future animations are paused. */ get isPaused() { - return isPaused(this); + return isPaused(this) } /** @@ -140,24 +170,26 @@ export class SpringValue extends FrameValue { * */ get isDelayed() { - return this._state.delayed; + return this._state.delayed } /** Advance the current animation by a number of milliseconds */ advance(dt: number) { - let idle = true; - let changed = false; + let idle = true + let changed = false - const anim = this.animation; - let { config, toValues } = anim; + const anim = this.animation + let { config, toValues } = anim - const payload = getPayload(anim.to); + const payload = getPayload(anim.to) if (!payload && hasFluidValue(anim.to)) { - toValues = toArray(getFluidValue(anim.to)) as any; + toValues = toArray(getFluidValue(anim.to)) as any } anim.values.forEach((node, i) => { - if (node.done) return; + if (node.done) { + return + } const to = // Animated strings always go from 0 to 1. @@ -165,35 +197,35 @@ export class SpringValue extends FrameValue { ? 1 : payload ? payload[i].lastPosition - : toValues![i]; + : toValues![i] - let finished = anim.immediate; - let position = to; + let finished = anim.immediate + let position = to if (!finished) { - position = node.lastPosition; + position = node.lastPosition // Loose springs never move. if (config.tension <= 0) { - node.done = true; - return; + node.done = true + return } - let elapsed = (node.elapsedTime += dt); - const from = anim.fromValues[i]; + let elapsed = (node.elapsedTime += dt) + const from = anim.fromValues[i] const v0 = node.v0 != null ? node.v0 : (node.v0 = is.arr(config.velocity) ? config.velocity[i] - : config.velocity); + : config.velocity) - let velocity: number; + let velocity: number // Duration easing if (!is.und(config.duration)) { - let p = 1; + let p = 1 if (config.duration > 0) { /** * Here we check if the duration has changed in the config @@ -203,46 +235,46 @@ export class SpringValue extends FrameValue { */ if (this._memoizedDuration !== config.duration) { // update the memoized version to the new duration - this._memoizedDuration = config.duration; + this._memoizedDuration = config.duration // if the value has started animating we need to update it if (node.durationProgress > 0) { // set elapsed time to be the same percentage of progress as the previous duration - node.elapsedTime = config.duration * node.durationProgress; + node.elapsedTime = config.duration * node.durationProgress // add the delta so the below updates work as expected - elapsed = node.elapsedTime += dt; + elapsed = node.elapsedTime += dt } } // calculate the new progress - p = (config.progress || 0) + elapsed / this._memoizedDuration; + p = (config.progress || 0) + elapsed / this._memoizedDuration // p is clamped between 0-1 - p = p > 1 ? 1 : p < 0 ? 0 : p; + p = p > 1 ? 1 : p < 0 ? 0 : p // store our new progress - node.durationProgress = p; + node.durationProgress = p } - position = from + config.easing(p) * (to - from); - velocity = (position - node.lastPosition) / dt; + position = from + config.easing(p) * (to - from) + velocity = (position - node.lastPosition) / dt - finished = p == 1; + finished = p == 1 } // Decay easing else if (config.decay) { - const decay = config.decay === true ? 0.998 : config.decay; - const e = Math.exp(-(1 - decay) * elapsed); + const decay = config.decay === true ? 0.998 : config.decay + const e = Math.exp(-(1 - decay) * elapsed) - position = from + (v0 / (1 - decay)) * (1 - e); - finished = Math.abs(node.lastPosition - position) < 0.1; + position = from + (v0 / (1 - decay)) * (1 - e) + finished = Math.abs(node.lastPosition - position) < 0.1 // derivative of position - velocity = v0 * e; + velocity = v0 * e } // Spring easing else { - velocity = node.lastVelocity == null ? v0 : node.lastVelocity; + velocity = node.lastVelocity == null ? v0 : node.lastVelocity /** The smallest distance from a value before being treated like said value. */ /** @@ -251,125 +283,125 @@ export class SpringValue extends FrameValue { */ const precision = config.precision || - (from == to ? 0.005 : Math.min(1, Math.abs(to - from) * 0.001)); + (from == to ? 0.005 : Math.min(1, Math.abs(to - from) * 0.001)) /** The velocity at which movement is essentially none */ - const restVelocity = config.restVelocity || precision / 10; + const restVelocity = config.restVelocity || precision / 10 // Bouncing is opt-in (not to be confused with overshooting) - const bounceFactor = config.clamp ? 0 : config.bounce!; - const canBounce = !is.und(bounceFactor); + const bounceFactor = config.clamp ? 0 : config.bounce! + const canBounce = !is.und(bounceFactor) /** When `true`, the value is increasing over time */ - const isGrowing = from == to ? node.v0 > 0 : from < to; + const isGrowing = from == to ? node.v0 > 0 : from < to /** When `true`, the velocity is considered moving */ - let isMoving!: boolean; + let isMoving!: boolean /** When `true`, the velocity is being deflected or clamped */ - let isBouncing = false; + let isBouncing = false - const step = 1; // 1ms - const numSteps = Math.ceil(dt / step); + const step = 1 // 1ms + const numSteps = Math.ceil(dt / step) for (let n = 0; n < numSteps; ++n) { - isMoving = Math.abs(velocity) > restVelocity; + isMoving = Math.abs(velocity) > restVelocity if (!isMoving) { - finished = Math.abs(to - position) <= precision; + finished = Math.abs(to - position) <= precision if (finished) { - break; + break } } if (canBounce) { - isBouncing = position == to || position > to == isGrowing; + isBouncing = position == to || position > to == isGrowing // Invert the velocity with a magnitude, or clamp it. if (isBouncing) { - velocity = -velocity * bounceFactor; - position = to; + velocity = -velocity * bounceFactor + position = to } } - const springForce = -config.tension * 0.000001 * (position - to); - const dampingForce = -config.friction * 0.001 * velocity; - const acceleration = (springForce + dampingForce) / config.mass; // pt/ms^2 + const springForce = -config.tension * 0.000001 * (position - to) + const dampingForce = -config.friction * 0.001 * velocity + const acceleration = (springForce + dampingForce) / config.mass // pt/ms^2 - velocity = velocity + acceleration * step; // pt/ms - position = position + velocity * step; + velocity = velocity + acceleration * step // pt/ms + position = position + velocity * step } } - node.lastVelocity = velocity; + node.lastVelocity = velocity if (Number.isNaN(position)) { - console.warn(`Got NaN while animating:`, this); - finished = true; + console.warn(`Got NaN while animating:`, this) + finished = true } } // Parent springs must finish before their children can. if (payload && !payload[i].done) { - finished = false; + finished = false } if (finished) { - node.done = true; + node.done = true } else { - idle = false; + idle = false } if (node.setValue(position, config.round)) { - changed = true; + changed = true } - }); + }) - const node = getAnimated(this)!; + const node = getAnimated(this)! /** * Get the node's current value, this will be different * to anim.to when config.decay is true */ - const currVal = node.getValue(); + const currVal = node.getValue() if (idle) { // get our final fluid val from the anim.to - const finalVal = getFluidValue(anim.to); + const finalVal = getFluidValue(anim.to) /** * check if they're not equal, or if they're * change and if there's no config.decay set */ if ((currVal !== finalVal || changed) && !config.decay) { // set the value to anim.to - node.setValue(finalVal); - this._onChange(finalVal); + node.setValue(finalVal) + this._onChange(finalVal) } else if (changed && config.decay) { /** * if it's changed but there is a config.decay, * just call _onChange with currrent value */ - this._onChange(currVal); + this._onChange(currVal) } // call stop because the spring has stopped. - this._stop(); + this._stop() } else if (changed) { /** * if the spring has changed, but is not idle, * just call the _onChange handler */ - this._onChange(currVal); + this._onChange(currVal) } } /** Set the current value, while stopping the current animation */ set(value: T | FluidValue) { raf.batchedUpdates(() => { - this._stop(); + this._stop() // These override the current value and goal value that may have // been updated by `onRest` handlers in the `_stop` call above. - this._focus(value); - this._set(value); - }); - return this; + this._focus(value) + this._set(value) + }) + return this } /** @@ -377,39 +409,39 @@ export class SpringValue extends FrameValue { * before `resume` is called. */ pause() { - this._update({ pause: true }); + this._update({ pause: true }) } /** Resume the animation if paused. */ resume() { - this._update({ pause: false }); + this._update({ pause: false }) } /** Skip to the end of the current animation. */ finish() { if (isAnimating(this)) { - const { to, config } = this.animation; + const { to, config } = this.animation raf.batchedUpdates(() => { // Ensure the "onStart" and "onRest" props are called. - this._onStart(); + this._onStart() // Jump to the goal value, except for decay animations // which have an undefined goal value. if (!config.decay) { - this._set(to, false); + this._set(to, false) } - this._stop(); - }); + this._stop() + }) } - return this; + return this } /** Push props into the pending queue. */ update(props: SpringUpdate) { - const queue = this.queue || (this.queue = []); - queue.push(props); - return this; + const queue = this.queue || (this.queue = []) + queue.push(props) + return this } /** @@ -419,27 +451,27 @@ export class SpringValue extends FrameValue { * When arguments are passed, a new animation is created, and the * queued animations are left alone. */ - start(): AsyncResult; + start(): AsyncResult - start(props: SpringUpdate): AsyncResult; + start(props: SpringUpdate): AsyncResult - start(to: T, props?: SpringProps): AsyncResult; + start(to: T, props?: SpringProps): AsyncResult start(to?: T | SpringUpdate, arg2?: SpringProps) { - let queue: SpringUpdate[]; + let queue: SpringUpdate[] if (!is.und(to)) { - queue = [is.obj(to) ? to : { ...arg2, to }]; + queue = [is.obj(to) ? to : ({ ...arg2, to } as SpringUpdate)] } else { - queue = this.queue || []; - this.queue = []; + queue = this.queue || [] + this.queue = [] } return Promise.all( queue.map((props) => { - const up = this._update(props); - return up; - }) - ).then((results) => getCombinedResult(this, results)); + const up = this._update(props) + return up + }), + ).then((results) => getCombinedResult(this, results)) } /** @@ -448,28 +480,28 @@ export class SpringValue extends FrameValue { * Pass `true` to call `onRest` with `cancelled: true`. */ stop(cancel?: boolean) { - const { to } = this.animation; + const { to } = this.animation // The current value becomes the goal value. - this._focus(this.get()); + this._focus(this.get()) - stopAsync(this._state, cancel && this._lastCallId); - raf.batchedUpdates(() => this._stop(to, cancel)); + stopAsync(this._state, cancel && this._lastCallId) + raf.batchedUpdates(() => this._stop(to, cancel)) - return this; + return this } /** Restart the animation. */ reset() { - this._update({ reset: true }); + this._update({ reset: true }) } /** @internal */ eventObserved(event: FrameValue.Event) { - if (event.type == "change") { - this._start(); - } else if (event.type == "priority") { - this.priority = event.priority + 1; + if (event.type == 'change') { + this._start() + } else if (event.type == 'priority') { + this.priority = event.priority + 1 } } @@ -480,76 +512,79 @@ export class SpringValue extends FrameValue { * during the render phase. */ protected _prepareNode(props: { - to?: any; - from?: any; - reverse?: boolean; - default?: any; + to?: any + from?: any + reverse?: boolean + default?: any }) { - const key = this.key || ""; + const key = this.key || '' - let { to, from } = props; + let { to, from } = props - to = is.obj(to) ? to[key] : to; + to = is.obj(to) ? to[key] : to if (to == null || isAsyncTo(to)) { - to = undefined; + to = undefined } - from = is.obj(from) ? from[key] : from; + from = is.obj(from) ? from[key] : from if (from == null) { - from = undefined; + from = undefined } // Create the range now to avoid "reverse" logic. - const range = { to, from }; + const range = { to, from } // Before ever animating, this method ensures an `Animated` node // exists and keeps its value in sync with the "from" prop. if (!hasAnimated(this)) { - if (props.reverse) [to, from] = [from, to]; + if (props.reverse) { + ;[to, from] = [from, to] + } - from = getFluidValue(from); + from = getFluidValue(from) if (!is.und(from)) { - this._set(from); + this._set(from) } // Use the "to" value if our node is undefined. else if (!getAnimated(this)) { - this._set(to); + this._set(to) } } - return range; + return range } /** Every update is processed by this method before merging. */ protected _update( { ...props }: SpringProps, - isLoop?: boolean + isLoop?: boolean, ): AsyncResult> { - const { key, defaultProps } = this; + const { key, defaultProps } = this // Update the default props immediately. - if (props.default) + if (props.default) { Object.assign( defaultProps, getDefaultProps(props, (value, prop) => - /^on/.test(prop) ? resolveProp(value, key) : value - ) - ); + prop.startsWith('on') ? resolveProp(value, key) : value, + ), + ) + } - mergeActiveFn(this, props, "onProps"); - sendEvent(this, "onProps", props, this); + mergeActiveFn(this, props, 'onProps') + sendEvent(this, 'onProps', props, this) // Ensure the initial value can be accessed by animated components. - const range = this._prepareNode(props); + const range = this._prepareNode(props) if (Object.isFrozen(this)) { throw Error( - "Cannot animate a `SpringValue` object that is frozen. " + - "Did you forget to pass your component to `animated(...)` before animating its props?" - ); + 'Cannot animate a `SpringValue` object that is frozen. ' + + 'Did you forget to pass your component to `animated(...)` before animating its props?', + ) } - const state = this._state; + const state = this._state return scheduleProps(++this._lastCallId, { key, @@ -559,112 +594,114 @@ export class SpringValue extends FrameValue { actions: { pause: () => { if (!isPaused(this)) { - setPausedBit(this, true); - flushCalls(state.pauseQueue); + setPausedBit(this, true) + flushCalls(state.pauseQueue) sendEvent( this, - "onPause", + 'onPause', getFinishedResult(this, checkFinished(this, this.animation.to)), - this - ); + this, + ) } }, resume: () => { if (isPaused(this)) { - setPausedBit(this, false); + setPausedBit(this, false) if (isAnimating(this)) { - this._resume(); + this._resume() } - flushCalls(state.resumeQueue); + flushCalls(state.resumeQueue) sendEvent( this, - "onResume", + 'onResume', getFinishedResult(this, checkFinished(this, this.animation.to)), - this - ); + this, + ) } }, start: this._merge.bind(this, range), }, }).then((result) => { if (props.loop && result.finished && !(isLoop && result.noop)) { - const nextProps = createLoopUpdate(props); + const nextProps = createLoopUpdate(props) if (nextProps) { - return this._update(nextProps, true); + return this._update(nextProps, true) } } - return result; - }); + return result + }) } /** Merge props into the current animation */ protected _merge( range: AnimationRange, props: RunAsyncProps>, - resolve: AnimationResolver> + resolve: AnimationResolver>, ): void { // The "cancel" prop cancels all pending delays and it forces the // active animation to stop where it is. if (props.cancel) { - this.stop(true); - return resolve(getCancelledResult(this)); + this.stop(true) + return resolve(getCancelledResult(this)) } /** The "to" prop is defined. */ - const hasToProp = !is.und(range.to); + const hasToProp = !is.und(range.to) /** The "from" prop is defined. */ - const hasFromProp = !is.und(range.from); + const hasFromProp = !is.und(range.from) // Avoid merging other props if implicitly prevented, except // when both the "to" and "from" props are undefined. if (hasToProp || hasFromProp) { if (props.callId > this._lastToId) { - this._lastToId = props.callId; + this._lastToId = props.callId } else { - return resolve(getCancelledResult(this)); + return resolve(getCancelledResult(this)) } } - const { key, defaultProps, animation: anim } = this; - const { to: prevTo, from: prevFrom } = anim; - let { to = prevTo, from = prevFrom } = range; + const { key, defaultProps, animation: anim } = this + const { to: prevTo, from: prevFrom } = anim + let { to = prevTo, from = prevFrom } = range // Focus the "from" value if changing without a "to" value. // For default updates, do this only if no "to" value exists. if (hasFromProp && !hasToProp && (!props.default || is.und(to))) { - to = from; + to = from } // Flip the current range if "reverse" is true. - if (props.reverse) [to, from] = [from, to]; + if (props.reverse) { + ;[to, from] = [from, to] + } /** The "from" value is changing. */ - const hasFromChanged = !isEqual(from, prevFrom); + const hasFromChanged = !isEqual(from, prevFrom) if (hasFromChanged) { - anim.from = from; + anim.from = from } // Coerce "from" into a static value. - from = getFluidValue(from); + from = getFluidValue(from) /** The "to" value is changing. */ - const hasToChanged = !isEqual(to, prevTo); + const hasToChanged = !isEqual(to, prevTo) if (hasToChanged) { - this._focus(to); + this._focus(to) } /** The "to" prop is async. */ - const hasAsyncTo = isAsyncTo(props.to); + const hasAsyncTo = isAsyncTo(props.to) - const { config } = anim; - const { decay, velocity } = config; + const { config } = anim + const { decay, velocity } = config // Reset to default velocity when goal values are defined. if (hasToProp || hasFromProp) { - config.velocity = 0; + config.velocity = 0 } // The "runAsync" function treats the "config" prop as a default, @@ -676,15 +713,15 @@ export class SpringValue extends FrameValue { // Avoid calling the same "config" prop twice. props.config !== defaultProps.config ? callProp(defaultProps.config, key!) - : void 0 - ); + : void 0, + ) } // This instance might not have its Animated node yet. For example, // the constructor can be given props without a "to" or "from" value. - let node = getAnimated(this); + let node = getAnimated(this) if (!node || is.und(to)) { - return resolve(getFinishedResult(this, true)); + return resolve(getFinishedResult(this, true)) } /** When true, start at the "from" value. */ @@ -694,53 +731,54 @@ export class SpringValue extends FrameValue { // must exist a value to animate from. is.und(props.reset) ? hasFromProp && !props.default - : !is.und(from) && matchProp(props.reset, key); + : !is.und(from) && matchProp(props.reset, key) // The current value, where the animation starts from. - const value = reset ? (from as T) : this.get(); + const value = reset ? from : this.get() // The animation ends at this value, unless "to" is fluid. - const goal = computeGoal(to); + const goal = computeGoal(to) // Only specific types can be animated to/from. - const isAnimatable = is.num(goal) || is.arr(goal) || isAnimatedString(goal); + const isAnimatable = is.num(goal) || is.arr(goal) || isAnimatedString(goal) // When true, the value changes instantly on the next frame. const immediate = !hasAsyncTo && (!isAnimatable || - matchProp(defaultProps.immediate || props.immediate, key)); + matchProp(defaultProps.immediate || props.immediate, key)) if (hasToChanged) { - const nodeType = getAnimatedType(to); + const nodeType = getAnimatedType(to) if (nodeType !== node.constructor) { if (immediate) { - node = this._set(goal)!; - } else + node = this._set(goal)! + } else { throw Error( - `Cannot animate between ${node.constructor.name} and ${nodeType.name}, as the "to" prop suggests` - ); + `Cannot animate between ${node.constructor.name} and ${nodeType.name}, as the "to" prop suggests`, + ) + } } } // The type of Animated node for the goal value. - const goalType = node.constructor; + const goalType = node.constructor // When the goal value is fluid, we don't know if its value // will change before the next animation frame, so it always // starts the animation to be safe. - let started = hasFluidValue(to); - let finished = false; + let started = hasFluidValue(to) + let finished = false if (!started) { // When true, the current value has probably changed. - const hasValueChanged = reset || (!hasAnimated(this) && hasFromChanged); + const hasValueChanged = reset || (!hasAnimated(this) && hasFromChanged) // When the "to" value or current value are changed, // start animating if not already finished. if (hasToChanged || hasValueChanged) { - finished = isEqual(computeGoal(value), goal); - started = !finished; + finished = isEqual(computeGoal(value), goal) + started = !finished } // Changing "decay" or "velocity" starts the animation. @@ -749,7 +787,7 @@ export class SpringValue extends FrameValue { !isEqual(config.decay, decay) || !isEqual(config.velocity, velocity) ) { - started = true; + started = true } } @@ -758,11 +796,11 @@ export class SpringValue extends FrameValue { // If the first frame has passed, allow the animation to // overshoot instead of stopping abruptly. if (anim.changed && !reset) { - started = true; + started = true } // Stop the animation before its first frame. else if (!started) { - this._stop(prevTo); + this._stop(prevTo) } } @@ -770,113 +808,114 @@ export class SpringValue extends FrameValue { // Make sure our "toValues" are updated even if our previous // "to" prop is a fluid value whose current value is also ours. if (started || hasFluidValue(prevTo)) { - anim.values = node.getPayload(); + anim.values = node.getPayload() anim.toValues = hasFluidValue(to) ? null : goalType == AnimatedString ? [1] - : toArray(goal); + : toArray(goal) } if (anim.immediate != immediate) { - anim.immediate = immediate; + anim.immediate = immediate // Ensure the immediate goal is used as from value. if (!immediate && !reset) { - this._set(prevTo); + this._set(prevTo) } } if (started) { - const { onRest } = anim; + const { onRest } = anim // Set the active handlers when an animation starts. - each(ACTIVE_EVENTS, (type) => mergeActiveFn(this, props, type)); + each(ACTIVE_EVENTS, (type) => mergeActiveFn(this, props, type)) - const result = getFinishedResult(this, checkFinished(this, prevTo)); - flushCalls(this._pendingCalls, result); - this._pendingCalls.add(resolve); + const result = getFinishedResult(this, checkFinished(this, prevTo)) + flushCalls(this._pendingCalls, result) + this._pendingCalls.add(resolve) - if (anim.changed) + if (anim.changed) { raf.batchedUpdates(() => { // Ensure `onStart` can be called after a reset. - anim.changed = !reset; + anim.changed = !reset // Call the active `onRest` handler from the interrupted animation. - onRest?.(result, this); + onRest?.(result, this) // Notify the default `onRest` of the reset, but wait for the // first frame to pass before sending an `onStart` event. if (reset) { - callProp(defaultProps.onRest, result); + callProp(defaultProps.onRest, result) } // Call the active `onStart` handler here since the first frame // has already passed, which means this is a goal update and not // an entirely new animation. else { - anim.onStart?.(result, this); + anim.onStart?.(result, this) } - }); + }) + } } } if (reset) { - this._set(value); + this._set(value) } if (hasAsyncTo) { - resolve(runAsync(props.to, props, this._state, this)); + resolve(runAsync(props.to, props, this._state, this)) } // Start an animation else if (started) { - this._start(); + this._start() } // Postpone promise resolution until the animation is finished, // so that no-op updates still resolve at the expected time. else if (isAnimating(this) && !hasToChanged) { - this._pendingCalls.add(resolve); + this._pendingCalls.add(resolve) } // Resolve our promise immediately. else { - resolve(getNoopResult(value)); + resolve(getNoopResult(value)) } } /** Update the `animation.to` value, which might be a `FluidValue` */ protected _focus(value: T | FluidValue) { - const anim = this.animation; + const anim = this.animation if (value !== anim.to) { if (getFluidObservers(this)) { - this._detach(); + this._detach() } - anim.to = value; + anim.to = value if (getFluidObservers(this)) { - this._attach(); + this._attach() } } } protected _attach() { - let priority = 0; + let priority = 0 - const { to } = this.animation; + const { to } = this.animation if (hasFluidValue(to)) { - addFluidObserver(to, this); + addFluidObserver(to, this) if (isFrameValue(to)) { - priority = to.priority + 1; + priority = to.priority + 1 } } - this.priority = priority; + this.priority = priority } protected _detach() { - const { to } = this.animation; + const { to } = this.animation if (hasFluidValue(to)) { - removeFluidObserver(to, this); + removeFluidObserver(to, this) } } @@ -885,68 +924,68 @@ export class SpringValue extends FrameValue { * and return the `Animated` node. */ protected _set(arg: T | FluidValue, idle = true): Animated | undefined { - const value = getFluidValue(arg); + const value = getFluidValue(arg) if (!is.und(value)) { - const oldNode = getAnimated(this); + const oldNode = getAnimated(this) if (!oldNode || !isEqual(value, oldNode.getValue())) { // Create a new node or update the existing node. - const nodeType = getAnimatedType(value); + const nodeType = getAnimatedType(value) if (!oldNode || oldNode.constructor != nodeType) { - setAnimated(this, nodeType.create(value)); + setAnimated(this, nodeType.create(value)) } else { - oldNode.setValue(value); + oldNode.setValue(value) } // Never emit a "change" event for the initial value. if (oldNode) { raf.batchedUpdates(() => { - this._onChange(value, idle); - }); + this._onChange(value, idle) + }) } } } - return getAnimated(this); + return getAnimated(this) } protected _onStart() { - const anim = this.animation; + const anim = this.animation if (!anim.changed) { - anim.changed = true; + anim.changed = true sendEvent( this, - "onStart", + 'onStart', getFinishedResult(this, checkFinished(this, anim.to)), - this - ); + this, + ) } } protected _onChange(value: T, idle?: boolean) { if (!idle) { - this._onStart(); - callProp(this.animation.onChange, value, this); + this._onStart() + callProp(this.animation.onChange, value, this) } - callProp(this.defaultProps.onChange, value, this); - super._onChange(value, idle); + callProp(this.defaultProps.onChange, value, this) + super._onChange(value, idle) } // This method resets the animation state (even if already animating) to // ensure the latest from/to range is used, and it also ensures this spring // is added to the frameloop. protected _start() { - const anim = this.animation; + const anim = this.animation // Reset the state of each Animated node. - getAnimated(this)!.reset(getFluidValue(anim.to)); + getAnimated(this)!.reset(getFluidValue(anim.to)) // Use the current values as the from values. if (!anim.immediate) { - anim.fromValues = anim.values.map((node) => node.lastPosition); + anim.fromValues = anim.values.map((node) => node.lastPosition) } if (!isAnimating(this)) { - setActiveBit(this, true); + setActiveBit(this, true) if (!isPaused(this)) { - this._resume(); + this._resume() } } } @@ -954,9 +993,9 @@ export class SpringValue extends FrameValue { protected _resume() { // The "skipAnimation" global avoids the frameloop. if (G.skipAnimation) { - this.finish(); + this.finish() } else { - frameLoop.start(this); + frameLoop.start(this) } } @@ -967,33 +1006,33 @@ export class SpringValue extends FrameValue { */ protected _stop(goal?: any, cancel?: boolean) { if (isAnimating(this)) { - setActiveBit(this, false); + setActiveBit(this, false) - const anim = this.animation; + const anim = this.animation each(anim.values, (node) => { - node.done = true; - }); + node.done = true + }) // These active handlers must be reset to undefined or else // they could be called while idle. But keep them defined // when the goal value is dynamic. if (anim.toValues) { - anim.onChange = anim.onPause = anim.onResume = undefined; + anim.onChange = anim.onPause = anim.onResume = undefined } callFluidObservers(this, { - type: "idle", + type: 'idle', parent: this, - }); + }) const result = cancel ? getCancelledResult(this.get()) - : getFinishedResult(this.get(), checkFinished(this, goal ?? anim.to)); + : getFinishedResult(this.get(), checkFinished(this, goal ?? anim.to)) - flushCalls(this._pendingCalls, result); + flushCalls(this._pendingCalls, result) if (anim.changed) { - anim.changed = false; - sendEvent(this, "onRest", result, this); + anim.changed = false + sendEvent(this, 'onRest', result, this) } } } @@ -1001,21 +1040,21 @@ export class SpringValue extends FrameValue { /** Returns true when the current value and goal value are equal. */ function checkFinished(target: SpringValue, to: T | FluidValue) { - const goal = computeGoal(to); - const value = computeGoal(target.get()); - return isEqual(value, goal); + const goal = computeGoal(to) + const value = computeGoal(target.get()) + return isEqual(value, goal) } export function createLoopUpdate( props: T & { loop?: any; to?: any; from?: any; reverse?: any }, loop = props.loop, - to = props.to + to = props.to, ): T | undefined { - let loopRet = callProp(loop); + const loopRet = callProp(loop) if (loopRet) { - const overrides = loopRet !== true && inferTo(loopRet); - const reverse = (overrides || props).reverse; - const reset = !overrides || overrides.reset; + const overrides = loopRet !== true && inferTo(loopRet) + const reverse = (overrides || props).reverse + const reset = !overrides || overrides.reset return createUpdate({ ...props, loop, @@ -1038,7 +1077,7 @@ export function createLoopUpdate( // The "loop" prop can return a "useSpring" props object to // override any of the original props. ...overrides, - }); + }) } } @@ -1050,59 +1089,63 @@ export function createLoopUpdate( * or `null` if all keys are affected. */ export function createUpdate(props: any) { - const { to, from } = (props = inferTo(props)); + const { to, from } = (props = inferTo(props)) // Collect the keys affected by this update. - const keys = new Set(); + const keys = new Set() - if (is.obj(to)) findDefined(to, keys); - if (is.obj(from)) findDefined(from, keys); + if (is.obj(to)) { + findDefined(to, keys) + } + if (is.obj(from)) { + findDefined(from, keys) + } // The "keys" prop helps in applying updates to affected keys only. - props.keys = keys.size ? Array.from(keys) : null; + props.keys = keys.size ? Array.from(keys) : null - return props; + return props } /** * A modified version of `createUpdate` meant for declarative APIs. */ export function declareUpdate(props: any) { - const update = createUpdate(props); + const update = createUpdate(props) if (is.und(update.default)) { - update.default = getDefaultProps(update); + update.default = getDefaultProps(update) } - return update; + return update } /** Find keys with defined values */ function findDefined(values: Lookup, keys: Set) { - eachProp(values, (value, key) => value != null && keys.add(key as any)); + eachProp(values, (value, key) => value != null && keys.add(key as any)) } /** Event props with "active handler" support */ const ACTIVE_EVENTS = [ - "onStart", - "onRest", - "onChange", - "onPause", - "onResume", -] as const; + 'onStart', + 'onRest', + 'onChange', + 'onPause', + 'onResume', +] as const function mergeActiveFn( target: SpringValue, props: SpringProps, - type: P + type: P, ) { target.animation[type] = props[type] !== getDefaultProp(props, type) ? resolveProp(props[type], target.key) - : undefined; + : undefined } type EventArgs = Parameters< Extract[P], Function> ->; +> /** Call the active handler first, then the default handler. */ function sendEvent( @@ -1110,6 +1153,6 @@ function sendEvent( type: P, ...args: EventArgs ) { - target.animation[type]?.(...(args as [any, any])); - target.defaultProps[type]?.(...(args as [any, any])); + target.animation[type]?.(...(args as [any, any])) + target.defaultProps[type]?.(...(args as [any, any])) } diff --git a/spring/src/animated.ts b/spring/src/animated.ts index 2e0841f..43e8839 100644 --- a/spring/src/animated.ts +++ b/spring/src/animated.ts @@ -1,102 +1,104 @@ -import { defineHidden, is } from "./utils"; +import { defineHidden, is } from './utils' -const $node: any = Symbol.for("Animated:node"); +const $node: any = Symbol.for('Animated:node') -export const isAnimated = (value: any): value is Animated => - !!value && value[$node] === value; +export const isAnimated = (value: any): value is Animated => + !!value && value[$node] === value /** Get the owner's `Animated` node. */ -export const getAnimated = (owner: any): Animated | undefined => - owner && owner[$node]; +export const getAnimated = (owner: any): Animated | undefined => + owner?.[$node] /** Set the owner's `Animated` node. */ export const setAnimated = (owner: any, node: Animated) => - defineHidden(owner, $node, node); + defineHidden(owner, $node, node) /** Get every `AnimatedValue` in the owner's `Animated` node. */ export const getPayload = (owner: any): AnimatedValue[] | undefined => - owner && owner[$node] && owner[$node].getPayload(); + owner?.[$node]?.getPayload() export abstract class Animated { /** The cache of animated values */ - protected payload?: Payload; + protected payload?: Payload constructor() { // This makes "isAnimated" return true. - setAnimated(this, this); + setAnimated(this, this) } /** Get the current value. Pass `true` for only animated values. */ - abstract getValue(animated?: boolean): T; + abstract getValue(animated?: boolean): T /** Set the current value. Returns `true` if the value changed. */ - abstract setValue(value: T): boolean | void; + abstract setValue(value: T): boolean | void /** Reset any animation state. */ - abstract reset(goal?: T): void; + abstract reset(goal?: T): void /** Get every `AnimatedValue` used by this node. */ getPayload(): Payload { - return this.payload || []; + return this.payload || [] } } -export type Payload = readonly AnimatedValue[]; +export type Payload = readonly AnimatedValue[] /** An animated number or a native attribute value */ export class AnimatedValue extends Animated { - done = true; - elapsedTime!: number; - lastPosition!: number; - lastVelocity?: number | null; - v0?: number | null; - durationProgress = 0; + done = true + elapsedTime!: number + lastPosition!: number + lastVelocity?: number | null + v0?: number | null + durationProgress = 0 constructor(protected _value: T) { - super(); + super() if (is.num(this._value)) { - this.lastPosition = this._value; + this.lastPosition = this._value } } /** @internal */ static create(value: any) { - return new AnimatedValue(value); + return new AnimatedValue(value) } getPayload(): Payload { - return [this]; + return [this] } getValue() { - return this._value; + return this._value } setValue(value: T, step?: number) { if (is.num(value)) { - this.lastPosition = value; + this.lastPosition = value if (step) { - value = (Math.round(value / step) * step) as any; + value = (Math.round(value / step) * step) as any if (this.done) { - this.lastPosition = value as any; + this.lastPosition = value as any } } } if (this._value === value) { - return false; + return false } - this._value = value; - return true; + this._value = value + return true } reset() { - const { done } = this; - this.done = false; + const { done } = this + this.done = false if (is.num(this._value)) { - this.elapsedTime = 0; - this.durationProgress = 0; - this.lastPosition = this._value; - if (done) this.lastVelocity = null; - this.v0 = null; + this.elapsedTime = 0 + this.durationProgress = 0 + this.lastPosition = this._value + if (done) { + this.lastVelocity = null + } + this.v0 = null } } } diff --git a/spring/src/applyAnimatedValues.ts b/spring/src/applyAnimatedValues.ts index 2fd53b0..4287d76 100644 --- a/spring/src/applyAnimatedValues.ts +++ b/spring/src/applyAnimatedValues.ts @@ -1,38 +1,39 @@ -import { Lookup } from "./utils"; +import { type Lookup } from './utils' -const isCustomPropRE = /^--/; - -type Value = string | number | boolean | null; +type Value = string | number | boolean | null function dangerousStyleValue(name: string, value: Value) { - if (value == null || typeof value === "boolean" || value === "") return ""; + if (value == null || typeof value === 'boolean' || value === '') { + return '' + } if ( - typeof value === "number" && + typeof value === 'number' && value !== 0 && - !isCustomPropRE.test(name) && + !name.startsWith('--') && !(isUnitlessNumber.hasOwnProperty(name) && isUnitlessNumber[name]) - ) - return value + "px"; + ) { + return `${value}px` + } // Presumes implicit 'px' suffix for unitless numbers - return ("" + value).trim(); + return `${value}`.trim() } -const attributeCache: Lookup = {}; +const attributeCache: Lookup = {} -type Instance = HTMLDivElement & { style?: Lookup }; +type Instance = HTMLDivElement & { style?: Lookup } export function applyAnimatedValues(instance: Instance, props: Lookup) { if (!instance.nodeType || !instance.setAttribute) { - return false; + return false } const isFilterElement = - instance.nodeName === "filter" || - (instance.parentNode && instance.parentNode.nodeName === "filter"); + instance.nodeName === 'filter' || + (instance.parentNode && instance.parentNode.nodeName === 'filter') - const { style, children, scrollTop, scrollLeft, ...attributes } = props!; + const { style, children, scrollTop, scrollLeft, ...attributes } = props! - const values = Object.values(attributes); + const values = Object.values(attributes) const names = Object.keys(attributes).map((name) => isFilterElement || instance.hasAttribute(name) ? name @@ -40,40 +41,40 @@ export function applyAnimatedValues(instance: Instance, props: Lookup) { (attributeCache[name] = name.replace( /([A-Z])/g, // Attributes are written in dash case - (n) => "-" + n.toLowerCase() - )) - ); + (n) => `-${n.toLowerCase()}`, + )), + ) if (children !== void 0) { - instance.textContent = children; + instance.textContent = children } // Apply CSS styles - for (let name in style) { + for (const name in style) { if (style.hasOwnProperty(name)) { - const value = dangerousStyleValue(name, style[name]); - if (isCustomPropRE.test(name)) { - instance.style.setProperty(name, value); + const value = dangerousStyleValue(name, style[name]) + if (name.startsWith('--')) { + instance.style.setProperty(name, value) } else { - instance.style[name] = value; + instance.style[name] = value } } } // Apply DOM attributes names.forEach((name, i) => { - instance.setAttribute(name, values[i]); - }); + instance.setAttribute(name, values[i]) + }) if (scrollTop !== void 0) { - instance.scrollTop = scrollTop; + instance.scrollTop = scrollTop } if (scrollLeft !== void 0) { - instance.scrollLeft = scrollLeft; + instance.scrollLeft = scrollLeft } } -let isUnitlessNumber: { [key: string]: true } = { +let isUnitlessNumber: Record = { animationIterationCount: true, borderImageOutset: true, borderImageSlice: true, @@ -116,13 +117,13 @@ let isUnitlessNumber: { [key: string]: true } = { strokeMiterlimit: true, strokeOpacity: true, strokeWidth: true, -}; +} const prefixKey = (prefix: string, key: string) => - prefix + key.charAt(0).toUpperCase() + key.substring(1); -const prefixes = ["Webkit", "Ms", "Moz", "O"]; + prefix + key.charAt(0).toUpperCase() + key.substring(1) +const prefixes = ['Webkit', 'Ms', 'Moz', 'O'] isUnitlessNumber = Object.keys(isUnitlessNumber).reduce((acc, prop) => { - prefixes.forEach((prefix) => (acc[prefixKey(prefix, prop)] = acc[prop])); - return acc; -}, isUnitlessNumber); + prefixes.forEach((prefix) => (acc[prefixKey(prefix, prop)] = acc[prop])) + return acc +}, isUnitlessNumber) diff --git a/spring/src/context.ts b/spring/src/context.ts index 6508bef..8d13dab 100644 --- a/spring/src/context.ts +++ b/spring/src/context.ts @@ -1,4 +1,4 @@ -import { FluidValue } from "./fluids" +import { type FluidValue } from './fluids' export type TreeContext = { /** diff --git a/spring/src/createHost.ts b/spring/src/createHost.ts index c3ad5a4..e666b00 100644 --- a/spring/src/createHost.ts +++ b/spring/src/createHost.ts @@ -1,49 +1,47 @@ -// @ts-ignore - -import type { JSX } from "solid-js"; -import { Animated } from "./animated"; -import { AnimatedObject as AnimatedObjectClass } from "./AnimatedObject"; -import { FluidProps, FluidValue } from "./fluids"; -import { is, Lookup, eachProp, Merge, NonObject } from "./utils"; -import { AnimatableComponent, withAnimated } from "./withAnimated"; +import type { JSX } from 'solid-js' +import { type Animated } from './animated' +import { AnimatedObject as AnimatedObjectClass } from './AnimatedObject' +import { type FluidProps, type FluidValue } from './fluids' +import { is, type Lookup, eachProp, type Merge, type NonObject } from './utils' +import { type AnimatableComponent, withAnimated } from './withAnimated' export interface HostConfig { /** Provide custom logic for native updates */ - applyAnimatedValues: (node: any, props: Lookup) => boolean | void; + applyAnimatedValues: (node: any, props: Lookup) => boolean | void /** Wrap the `style` prop with an animated node */ - createAnimatedStyle: (style: Lookup) => Animated; + createAnimatedStyle: (style: Lookup) => Animated /** Intercept props before they're passed to an animated component */ - getComponentProps: (props: Lookup) => typeof props; + getComponentProps: (props: Lookup) => typeof props } -type Angle = number | string; -type Length = number | string; +type Angle = number | string +type Length = number | string type TransformProps = { - transform?: string; - x?: Length; - y?: Length; - z?: Length; - translate?: Length | readonly [Length, Length]; - translateX?: Length; - translateY?: Length; - translateZ?: Length; - translate3d?: readonly [Length, Length, Length]; - rotate?: Angle; - rotateX?: Angle; - rotateY?: Angle; - rotateZ?: Angle; - rotate3d?: readonly [number, number, number, Angle]; + transform?: string + x?: Length + y?: Length + z?: Length + translate?: Length | readonly [Length, Length] + translateX?: Length + translateY?: Length + translateZ?: Length + translate3d?: readonly [Length, Length, Length] + rotate?: Angle + rotateX?: Angle + rotateY?: Angle + rotateZ?: Angle + rotate3d?: readonly [number, number, number, Angle] // Note: "string" is not really supported by "scale", but this lets us // spread React.CSSProperties into an animated style object. - scale?: number | readonly [number, number] | string; - scaleX?: number; - scaleY?: number; - scaleZ?: number; - scale3d?: readonly [number, number, number]; - skew?: Angle | readonly [Angle, Angle]; - skewX?: Angle; - skewY?: Angle; - matrix?: readonly [number, number, number, number, number, number]; + scale?: number | readonly [number, number] | string + scaleX?: number + scaleY?: number + scaleZ?: number + scale3d?: readonly [number, number, number] + skew?: Angle | readonly [Angle, Angle] + skewX?: Angle + skewY?: Angle + matrix?: readonly [number, number, number, number, number, number] matrix3d?: readonly [ number, // a1 number, @@ -60,33 +58,32 @@ type TransformProps = { number, // a4 number, number, - number - ]; -}; + number, + ] +} -type CSSProperties = JSX.IntrinsicElements["a"]["style"]; -type StyleProps = Merge; +type CSSProperties = JSX.IntrinsicElements['a']['style'] +type StyleProps = Merge // A stub type that gets replaced by @react-spring/web and others. -export type WithAnimated = ((Component: any) => any) & - { - // (Component: AnimatableComponent): any; - [K in keyof JSX.IntrinsicElements]: ( - props: AnimatedProps< - Merge - > & - FluidProps<{ - scrollTop?: number; - scrollLeft?: number; - }> - ) => JSX.Element; - }; +export type WithAnimated = ((Component: any) => any) & { + // (Component: AnimatableComponent): any; + [K in keyof JSX.IntrinsicElements]: ( + props: AnimatedProps< + Merge + > & + FluidProps<{ + scrollTop?: number + scrollLeft?: number + }>, + ) => JSX.Element +} /** The props of an `animated()` component */ export type AnimatedProps = { - [P in keyof Props]: P extends "ref" | "key" + [P in keyof Props]: P extends 'ref' | 'key' ? Props[P] - : AnimatedProp; -}; + : AnimatedProp +} // The animated prop value of a React element type AnimatedProp = [T, T] extends [infer T, infer DT] ? [DT] extends [never] @@ -102,7 +99,7 @@ type AnimatedProp = [T, T] extends [infer T, infer DT] : DT : AnimatedStyle : DT | AnimatedLeaf - : never; + : never // An animated object of style attributes type AnimatedStyle = [T, T] extends [infer T, infer DT] @@ -115,13 +112,11 @@ type AnimatedStyle = [T, T] extends [infer T, infer DT] : DT extends object ? AnimatedObject

: DT | AnimatedLeaf - : never; + : never type AnimatedObject = | { [P in keyof T]: AnimatedStyle } - | (T extends ReadonlyArray - ? FluidValue> - : never); + | (T extends ReadonlyArray ? FluidValue> : never) // An animated array of style objects type AnimatedStyles> = { @@ -133,60 +128,60 @@ type AnimatedStyles> = { : DT : { [P in keyof DT]: AnimatedProp } : DT - : never; -}; + : never +} // An animated primitive (or an array of them) type AnimatedLeaf = NonObject extends infer U ? [U] extends [never] ? never : FluidValue - : never; + : never -type StylePropKeys = keyof StyleProps; +type StylePropKeys = keyof StyleProps type ValidStyleProps = { - [P in keyof T & StylePropKeys]: T[P] extends StyleProps[P] ? P : never; -}[keyof T & StylePropKeys]; + [P in keyof T & StylePropKeys]: T[P] extends StyleProps[P] ? P : never +}[keyof T & StylePropKeys] // For storing the animated version on the original component -const cacheKey = Symbol.for("AnimatedComponent"); +const cacheKey = Symbol.for('AnimatedComponent') export const createHost = ( - components: AnimatableComponent[] | { [key: string]: AnimatableComponent }, + components: AnimatableComponent[] | Record, { applyAnimatedValues = () => false, createAnimatedStyle = (style) => new AnimatedObjectClass(style), getComponentProps = (props) => props, - }: Partial = {} + }: Partial = {}, ) => { const hostConfig: HostConfig = { applyAnimatedValues, createAnimatedStyle, getComponentProps, - }; + } const animated: any = (Component: any): any => { if (is.str(Component)) { Component = animated[Component] || - (animated[Component] = withAnimated(Component, hostConfig)); + (animated[Component] = withAnimated(Component, hostConfig)) } else { Component = Component[cacheKey] || - (Component[cacheKey] = withAnimated(Component, hostConfig)); + (Component[cacheKey] = withAnimated(Component, hostConfig)) } - return Component; - }; + return Component + } eachProp(components, (Component, key) => { if (is.arr(components)) { - key = Component; + key = Component } - animated[key] = animated(Component); - }); + animated[key] = animated(Component) + }) return { animated, - } as { animated: WithAnimated }; -}; + } as { animated: WithAnimated } +} diff --git a/spring/src/createInterpolator.ts b/spring/src/createInterpolator.ts index 9dd88ec..e7551aa 100644 --- a/spring/src/createInterpolator.ts +++ b/spring/src/createInterpolator.ts @@ -1,11 +1,17 @@ import * as G from './globals' -import { ExtrapolateType, Animatable, InterpolatorConfig, InterpolatorFactory, InterpolatorFn } from "./Interpolation" -import { EasingFunction, is } from "./utils" +import { + type ExtrapolateType, + type Animatable, + type InterpolatorConfig, + type InterpolatorFactory, + type InterpolatorFn, +} from './Interpolation' +import { type EasingFunction, is } from './utils' export const createInterpolator: InterpolatorFactory = ( range: readonly number[] | InterpolatorFn | InterpolatorConfig, output?: readonly Animatable[], - extrapolate?: ExtrapolateType + extrapolate?: ExtrapolateType, ) => { if (is.fun(range)) { return range @@ -31,7 +37,7 @@ export const createInterpolator: InterpolatorFactory = ( config.extrapolateLeft || config.extrapolate || 'extend' const extrapolateRight = config.extrapolateRight || config.extrapolate || 'extend' - const easing = config.easing || (t => t) + const easing = config.easing || ((t) => t) return (input: number) => { const range = findRange(input, inputRange) @@ -44,7 +50,7 @@ export const createInterpolator: InterpolatorFactory = ( easing, extrapolateLeft, extrapolateRight, - config.map + config.map, ) } } @@ -58,35 +64,56 @@ function interpolate( easing: EasingFunction, extrapolateLeft: ExtrapolateType, extrapolateRight: ExtrapolateType, - map?: (x: number) => number + map?: (x: number) => number, ) { let result = map ? map(input) : input // Extrapolate if (result < inputMin) { - if (extrapolateLeft === 'identity') return result - else if (extrapolateLeft === 'clamp') result = inputMin + if (extrapolateLeft === 'identity') { + return result + } else if (extrapolateLeft === 'clamp') { + result = inputMin + } } if (result > inputMax) { - if (extrapolateRight === 'identity') return result - else if (extrapolateRight === 'clamp') result = inputMax + if (extrapolateRight === 'identity') { + return result + } else if (extrapolateRight === 'clamp') { + result = inputMax + } + } + if (outputMin === outputMax) { + return outputMin + } + if (inputMin === inputMax) { + return input <= inputMin ? outputMin : outputMax } - if (outputMin === outputMax) return outputMin - if (inputMin === inputMax) return input <= inputMin ? outputMin : outputMax // Input Range - if (inputMin === -Infinity) result = -result - else if (inputMax === Infinity) result = result - inputMin - else result = (result - inputMin) / (inputMax - inputMin) + if (inputMin === -Infinity) { + result = -result + } else if (inputMax === Infinity) { + result = result - inputMin + } else { + result = (result - inputMin) / (inputMax - inputMin) + } // Easing result = easing(result) // Output Range - if (outputMin === -Infinity) result = -result - else if (outputMax === Infinity) result = result + outputMin - else result = result * (outputMax - outputMin) + outputMin + if (outputMin === -Infinity) { + result = -result + } else if (outputMax === Infinity) { + result = result + outputMin + } else { + result = result * (outputMax - outputMin) + outputMin + } return result } function findRange(input: number, inputRange: readonly number[]) { - for (var i = 1; i < inputRange.length - 1; ++i) - if (inputRange[i] >= input) break + for (var i = 1; i < inputRange.length - 1; ++i) { + if (inputRange[i] >= input) { + break + } + } return i - 1 } diff --git a/spring/src/fluids.ts b/spring/src/fluids.ts index c1e89e8..8a9cadb 100644 --- a/spring/src/fluids.ts +++ b/spring/src/fluids.ts @@ -24,58 +24,58 @@ * Extend this class for automatic TypeScript support when passing this * value to `fluids`-compatible libraries. */ -const $get = Symbol.for("FluidValue.get"); -const $observers = Symbol.for("FluidValue.observers"); +const $get = Symbol.for('FluidValue.get') +const $observers = Symbol.for('FluidValue.observers') /** Returns true if `arg` can be observed. */ -export const hasFluidValue = (arg: any): arg is FluidValue => Boolean(arg && arg[$get]) +export const hasFluidValue = (arg: any): arg is FluidValue => + Boolean(arg?.[$get]) /** An event sent to `FluidObserver` objects. */ export interface FluidEvent { - type: string; - parent: FluidValue; + type: string + parent: FluidValue } /** Add the `FluidValue` type to every property. */ export type FluidProps = T extends object ? { [P in keyof T]: T[P] | FluidValue> } - : unknown; + : unknown const setHidden = (target: any, key: any, value: any) => Object.defineProperty(target, key, { value, writable: true, configurable: true, - }); + }) /** Define the getter called by `getFluidValue`. */ const setFluidGetter = (target: object, get: () => any) => - setHidden(target, $get, get); + setHidden(target, $get, get) /** An observer of `FluidValue` objects. */ export type FluidObserver = | { eventObserved(event: E): void } - | { (event: E): void }; + | ((event: E) => void) export abstract class FluidValue = any> { - // @ts-ignore - private [$get]: () => T; - // @ts-ignore - private [$observers]?: Set>; + // @ts-expect-error + private [$get]: () => T + private [$observers]?: Set> constructor(get?: () => T) { if (!get && !(get = this.get)) { - throw Error("Unknown getter"); + throw Error('Unknown getter') } - setFluidGetter(this, get); + setFluidGetter(this, get) } /** Get the current value. */ - protected get?(): T; + protected get?(): T /** Called after an observer is added. */ - protected observerAdded?(count: number, observer: FluidObserver): void; + protected observerAdded?(count: number, observer: FluidObserver): void /** Called after an observer is removed. */ - protected observerRemoved?(count: number, observer: FluidObserver): void; + protected observerRemoved?(count: number, observer: FluidObserver): void } /** @@ -83,59 +83,58 @@ export abstract class FluidValue = any> { * If `arg` is not observable, `arg` is returned. */ export const getFluidValue: GetFluidValue = (arg: any) => - arg && arg[$get] ? arg[$get]() : arg; + arg?.[$get] ? arg[$get]() : arg -type GetFluidValue = { - (target: T | FluidValue): Exclude | U; -}; +type GetFluidValue = ( + target: T | FluidValue, +) => Exclude | U /** Send an event to an observer. */ export function callFluidObserver( observer: FluidObserver, - event: E -): void; + event: E, +): void export function callFluidObserver(observer: any, event: FluidEvent) { if (observer.eventObserved) { - observer.eventObserved(event); + observer.eventObserved(event) } else { - observer(event); + observer(event) } } /** Send an event to all observers. */ export function callFluidObservers( target: FluidValue, - event: E -): void; + event: E, +): void -export function callFluidObservers(target: object, event: FluidEvent): void; +export function callFluidObservers(target: object, event: FluidEvent): void export function callFluidObservers(target: any, event: FluidEvent) { - let observers: Set = target[$observers]; + const observers: Set = target[$observers] if (observers) { observers.forEach((observer) => { - callFluidObserver(observer, event); - }); + callFluidObserver(observer, event) + }) } } type GetFluidObservers = { - (target: FluidValue): ReadonlySet< - FluidObserver - > | null + ( + target: FluidValue, + ): ReadonlySet> | null (target: object): ReadonlySet | null } - /** Observe a `fluids`-compatible object. */ export function addFluidObserver( target: FluidValue, - observer: FluidObserver + observer: FluidObserver, ): typeof observer export function addFluidObserver( target: object, - observer: FluidObserver + observer: FluidObserver, ): typeof observer export function addFluidObserver(target: any, observer: FluidObserver) { @@ -157,16 +156,16 @@ export function addFluidObserver(target: any, observer: FluidObserver) { /** Stop observing a `fluids`-compatible object. */ export function removeFluidObserver( target: FluidValue, - observer: FluidObserver + observer: FluidObserver, ): void export function removeFluidObserver( target: object, - observer: FluidObserver + observer: FluidObserver, ): void export function removeFluidObserver(target: any, observer: FluidObserver) { - let observers: Set = target[$observers] + const observers: Set = target[$observers] if (observers && observers.has(observer)) { const count = observers.size - 1 if (count) { @@ -180,8 +179,6 @@ export function removeFluidObserver(target: any, observer: FluidObserver) { } } - /** Get the current observer set. Never mutate it directly! */ export const getFluidObservers: GetFluidObservers = (target: any) => target[$observers] || null - diff --git a/spring/src/globals.ts b/spring/src/globals.ts index 9dac7a0..f9b6272 100644 --- a/spring/src/globals.ts +++ b/spring/src/globals.ts @@ -1,32 +1,42 @@ -import { createInterpolator } from "./createInterpolator"; -import { FluidValue, getFluidValue } from "./fluids"; -import type { OpaqueAnimation } from "./FrameLoop"; -import { Interpolation, InterpolatorArgs, InterpolatorConfig } from "./Interpolation"; -import { normalizeColor } from "./normalizeColor"; -import { raf } from "./rafz"; -import { cssVariableRegex, isSSR, noop, OneOrMore, Rafz } from "./utils"; -import {colors as _colors} from './colors' +import { createInterpolator } from './createInterpolator' +import { type FluidValue, getFluidValue } from './fluids' +import type { OpaqueAnimation } from './FrameLoop' +import { + Interpolation, + type InterpolatorArgs, + type InterpolatorConfig, +} from './Interpolation' +import { normalizeColor } from './normalizeColor' +import { raf } from './rafz' +import { + cssVariableRegex, + isSSR, + noop, + type OneOrMore, + type Rafz, +} from './utils' +import { colors as _colors } from './colors' // Covers color names (transparent, blue, etc.) -let namedColorRegex: RegExp; +let namedColorRegex: RegExp // Covers rgb, rgba, hsl, hsla // Taken from https://gist.github.com/olmokramer/82ccce673f86db7cda5e export const colorRegex = - /(#(?:[0-9a-f]{2}){2,4}|(#[0-9a-f]{3})|(rgb|hsl)a?\((-?\d+%?[,\s]+){2,3}\s*[\d\.]+%?\))/gi; + /(#(?:[0-9a-f]{2}){2,4}|(#[0-9a-f]{3})|(rgb|hsl)a?\((-?\d+%?[,\s]+){2,3}\s*[\d.]+%?\))/gi -export const numberRegex = /[+\-]?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?/g; +export const numberRegex = /[+-]?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+-]?\d+)?/g // Gets numbers with units when specified -export const unitRegex = new RegExp(`(${numberRegex.source})(%|[a-z]+)`, "i"); +export const unitRegex = new RegExp(`(${numberRegex.source})(%|[a-z]+)`, 'i') // get values of rgba string export const rgbaRegex = - /rgba\(([0-9\.-]+), ([0-9\.-]+), ([0-9\.-]+), ([0-9\.-]+)\)/gi; + /rgba\(([0-9.-]+), ([0-9.-]+), ([0-9.-]+), ([0-9.-]+)\)/gi // rgba requires that the r,g,b are integers.... so we want to round them, // but we *dont* want to round the opacity (4th column). const rgbaRound = (_: any, p1: number, p2: number, p3: number, p4: number) => - `rgba(${Math.round(p1)}, ${Math.round(p2)}, ${Math.round(p3)}, ${p4})`; + `rgba(${Math.round(p1)}, ${Math.round(p2)}, ${Math.round(p3)}, ${p4})` // // Required @@ -42,60 +52,57 @@ const rgbaRound = (_: any, p1: number, p2: number, p3: number, p4: number) => * "0 2px 2px 0px rgba(0, 0, 0, 0.12)" // CSS box-shadows * "rotate(0deg) translate(2px, 3px)" // CSS transforms */ -export let createStringInterpolator = ( - config: InterpolatorConfig -) => { - if (!namedColorRegex) +export let createStringInterpolator = (config: InterpolatorConfig) => { + if (!namedColorRegex) { namedColorRegex = colors ? // match color names, ignore partial matches - new RegExp(`(${Object.keys(colors).join("|")})(?!\\w)`, "g") + new RegExp(`(${Object.keys(colors).join('|')})(?!\\w)`, 'g') : // never match - /^\b$/; + /^\b$/ + } // Convert colors to rgba(...) const output = config.output.map((value) => { return getFluidValue(value) .replace(cssVariableRegex, variableToRgba) .replace(colorRegex, colorToRgba) - .replace(namedColorRegex, colorToRgba); - }); + .replace(namedColorRegex, colorToRgba) + }) // Convert ["1px 2px", "0px 0px"] into [[1, 2], [0, 0]] - const keyframes = output.map((value) => - value.match(numberRegex)!.map(Number) - ); + const keyframes = output.map((value) => value.match(numberRegex)!.map(Number)) // Convert ["1px 2px", "0px 0px"] into [[1, 0], [2, 0]] const outputRanges = keyframes[0].map((_, i) => keyframes.map((values) => { if (!(i in values)) { - throw Error('The arity of each "output" value must be equal'); + throw Error('The arity of each "output" value must be equal') } - return values[i]; - }) - ); + return values[i] + }), + ) // Create an interpolator for each animated number const interpolators = outputRanges.map((output) => - createInterpolator({ ...config, output }) - ); + createInterpolator({ ...config, output }), + ) // Use the first `output` as a template for each call return (input: number) => { // Convert numbers to units if available (allows for ["0", "100%"]) const missingUnit = !unitRegex.test(output[0]) && - output.find((value) => unitRegex.test(value))?.replace(numberRegex, ""); + output.find((value) => unitRegex.test(value))?.replace(numberRegex, '') - let i = 0; + let i = 0 return output[0] .replace( numberRegex, - () => `${interpolators[i++](input)}${missingUnit || ""}` + () => `${interpolators[i++](input)}${missingUnit || ''}`, ) - .replace(rgbaRegex, rgbaRound); - }; -}; + .replace(rgbaRegex, rgbaRound) + } +} // // Optional @@ -103,16 +110,16 @@ export let createStringInterpolator = ( export let to = ( source: OneOrMore, - args: InterpolatorArgs + args: InterpolatorArgs, ) => { return new Interpolation(source, args) } -export let colors = _colors as { [key: string]: number } | null; +export let colors = _colors as Record | null -export let skipAnimation = false as boolean; +export let skipAnimation = false as boolean -export let willAdvance: (animation: OpaqueAnimation) => void = noop; +export let willAdvance: (animation: OpaqueAnimation) => void = noop // // Configuration @@ -120,106 +127,127 @@ export let willAdvance: (animation: OpaqueAnimation) => void = noop; export interface AnimatedGlobals { /** Returns a new `Interpolation` object */ - to?: typeof to; + to?: typeof to /** Used to measure frame length. Read more [here](https://developer.mozilla.org/en-US/docs/Web/API/Performance/now) */ - now?: typeof raf.now; + now?: typeof raf.now /** Provide custom color names for interpolation */ - colors?: typeof colors; + colors?: typeof colors /** Make all animations instant and skip the frameloop entirely */ - skipAnimation?: typeof skipAnimation; + skipAnimation?: typeof skipAnimation /** Provide custom logic for string interpolation */ - createStringInterpolator?: typeof createStringInterpolator; + createStringInterpolator?: typeof createStringInterpolator /** Schedule a function to run on the next frame */ - requestAnimationFrame?: (cb: () => void) => void; + requestAnimationFrame?: (cb: () => void) => void /** Event props are called with `batchedUpdates` to reduce extraneous renders */ - batchedUpdates?: typeof raf.batchedUpdates; + batchedUpdates?: typeof raf.batchedUpdates /** @internal Exposed for testing purposes */ - willAdvance?: typeof willAdvance; + willAdvance?: typeof willAdvance /** sets the global frameLoop setting for the global raf instance */ - frameLoop?: Rafz["frameLoop"]; + frameLoop?: Rafz['frameLoop'] } export const assign = (globals: AnimatedGlobals) => { - if (globals.to) to = globals.to; - if (globals.now) raf.now = globals.now; - if (globals.colors !== undefined) colors = globals.colors; - if (globals.skipAnimation != null) skipAnimation = globals.skipAnimation; - if (globals.createStringInterpolator) - createStringInterpolator = globals.createStringInterpolator; - if (globals.requestAnimationFrame) raf.use(globals.requestAnimationFrame); - if (globals.batchedUpdates) raf.batchedUpdates = globals.batchedUpdates; - if (globals.willAdvance) willAdvance = globals.willAdvance; - if (globals.frameLoop) raf.frameLoop = globals.frameLoop; -}; + if (globals.to) { + to = globals.to + } + if (globals.now) { + raf.now = globals.now + } + if (globals.colors !== undefined) { + colors = globals.colors + } + if (globals.skipAnimation != null) { + skipAnimation = globals.skipAnimation + } + if (globals.createStringInterpolator) { + createStringInterpolator = globals.createStringInterpolator + } + if (globals.requestAnimationFrame) { + raf.use(globals.requestAnimationFrame) + } + if (globals.batchedUpdates) { + raf.batchedUpdates = globals.batchedUpdates + } + if (globals.willAdvance) { + willAdvance = globals.willAdvance + } + if (globals.frameLoop) { + raf.frameLoop = globals.frameLoop + } +} export const variableToRgba = (input: string): string => { - const [token, fallback] = parseCSSVariable(input); + const [token, fallback] = parseCSSVariable(input) if (!token || isSSR()) { - return input; + return input } const value = window .getComputedStyle(document.documentElement) - .getPropertyValue(token); + .getPropertyValue(token) if (value) { /** * We have a valid variable returned * trim and return */ - return value.trim(); - } else if (fallback && fallback.startsWith("--")) { + return value.trim() + } else if (fallback && fallback.startsWith('--')) { /** * fallback is something like --my-variable * so we try get property value */ const value = window .getComputedStyle(document.documentElement) - .getPropertyValue(fallback); + .getPropertyValue(fallback) /** * if it exists, return else nothing was found so just return the input */ if (value) { - return value; + return value } else { - return input; + return input } } else if (fallback && cssVariableRegex.test(fallback)) { /** * We have a fallback and it's another CSS variable */ - return variableToRgba(fallback); + return variableToRgba(fallback) } else if (fallback) { /** * We have a fallback and it's not a CSS variable */ - return fallback; + return fallback } /** * Nothing worked so just return the input * like our other FluidValue replace functions do */ - return input; -}; + return input +} const parseCSSVariable = (current: string) => { - const match = cssVariableRegex.exec(current); - if (!match) return [,]; + const match = cssVariableRegex.exec(current) + if (!match) { + return [,] + } - const [, token, fallback] = match; - return [token, fallback]; -}; + const [, token, fallback] = match + return [token, fallback] +} export function colorToRgba(input: string) { - let int32Color = normalizeColor(input); - if (int32Color === null) return input; - int32Color = int32Color || 0; - let r = (int32Color & 0xff000000) >>> 24; - let g = (int32Color & 0x00ff0000) >>> 16; - let b = (int32Color & 0x0000ff00) >>> 8; - let a = (int32Color & 0x000000ff) / 255; - return `rgba(${r}, ${g}, ${b}, ${a})`; + let int32Color = normalizeColor(input) + if (int32Color === null) { + return input + } + int32Color = int32Color || 0 + const r = (int32Color & 0xff000000) >>> 24 + const g = (int32Color & 0x00ff0000) >>> 16 + const b = (int32Color & 0x0000ff00) >>> 8 + const a = (int32Color & 0x000000ff) / 255 + return `rgba(${r}, ${g}, ${b}, ${a})` } diff --git a/spring/src/index.ts b/spring/src/index.ts index ecbb665..cf8d33c 100644 --- a/spring/src/index.ts +++ b/spring/src/index.ts @@ -1,20 +1,20 @@ -export * from "./solid/createSprings"; -export * from "./solid/createSpring"; -export { config } from "./utils"; +export * from './solid/createSprings' +export * from './solid/createSpring' +export { config } from './utils' -import { AnimatedStyle } from "./AnimatedStyle"; -import { applyAnimatedValues } from "./applyAnimatedValues"; -import { createHost, WithAnimated } from "./createHost"; -import { Interpolation } from "./Interpolation"; -import { primitives } from "./primitives"; +import { AnimatedStyle } from './AnimatedStyle' +import { applyAnimatedValues } from './applyAnimatedValues' +import { createHost } from './createHost' +import { Interpolation } from './Interpolation' +import { primitives } from './primitives' const host = createHost(primitives, { applyAnimatedValues, createAnimatedStyle: (style) => new AnimatedStyle(style), getComponentProps: ({ scrollTop, scrollLeft, ...props }: any) => props, -}); +}) -export const animated = host.animated as WithAnimated; +export const animated = host.animated export const to = (source: any, ...args: [any]) => - new Interpolation(source, args); -export { animated as a }; + new Interpolation(source, args) +export { animated as a } diff --git a/spring/src/normalizeColor.ts b/spring/src/normalizeColor.ts index 5ed2b8d..b381a3d 100644 --- a/spring/src/normalizeColor.ts +++ b/spring/src/normalizeColor.ts @@ -36,20 +36,21 @@ import * as G from './globals' // const INTEGER = '[-+]?\\d+'; const NUMBER = '[-+]?\\d*\\.?\\d+' -const PERCENTAGE = NUMBER + '%' +const PERCENTAGE = `${NUMBER}%` function call(...parts: string[]) { - return '\\(\\s*(' + parts.join(')\\s*,\\s*(') + ')\\s*\\)' + return `\\(\\s*(${parts.join(')\\s*,\\s*(')})\\s*\\)` } -export const rgb = new RegExp('rgb' + call(NUMBER, NUMBER, NUMBER)) -export const rgba = new RegExp('rgba' + call(NUMBER, NUMBER, NUMBER, NUMBER)) -export const hsl = new RegExp('hsl' + call(NUMBER, PERCENTAGE, PERCENTAGE)) +export const rgb = new RegExp(`rgb${call(NUMBER, NUMBER, NUMBER)}`) +export const rgba = new RegExp(`rgba${call(NUMBER, NUMBER, NUMBER, NUMBER)}`) +export const hsl = new RegExp(`hsl${call(NUMBER, PERCENTAGE, PERCENTAGE)}`) export const hsla = new RegExp( - 'hsla' + call(NUMBER, PERCENTAGE, PERCENTAGE, NUMBER) + `hsla${call(NUMBER, PERCENTAGE, PERCENTAGE, NUMBER)}`, ) export const hex3 = /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/ -export const hex4 = /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/ +export const hex4 = + /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/ export const hex6 = /^#([0-9a-fA-F]{6})$/ export const hex8 = /^#([0-9a-fA-F]{8})$/ @@ -63,18 +64,19 @@ export function normalizeColor(color: number | string) { } // Ordered based on occurrences on Facebook codebase - if ((match = hex6.exec(color))) - return parseInt(match[1] + 'ff', 16) >>> 0 + if ((match = hex6.exec(color))) { + return parseInt(`${match[1]}ff`, 16) >>> 0 + } - if (G.colors && G.colors[color] !== undefined) { + if (G.colors?.[color] !== undefined) { return G.colors[color] } if ((match = rgb.exec(color))) { return ( ((parse255(match[1]) << 24) | // r - (parse255(match[2]) << 16) | // g - (parse255(match[3]) << 8) | // b + (parse255(match[2]) << 16) | // g + (parse255(match[3]) << 8) | // b 0x000000ff) >>> // a 0 ) @@ -83,8 +85,8 @@ export function normalizeColor(color: number | string) { if ((match = rgba.exec(color))) { return ( ((parse255(match[1]) << 24) | // r - (parse255(match[2]) << 16) | // g - (parse255(match[3]) << 8) | // b + (parse255(match[2]) << 16) | // g + (parse255(match[3]) << 8) | // b parse1(match[4])) >>> // a 0 ) @@ -93,33 +95,36 @@ export function normalizeColor(color: number | string) { if ((match = hex3.exec(color))) { return ( parseInt( - match[1] + - match[1] + // r - match[2] + - match[2] + // g - match[3] + - match[3] + // b - 'ff', // a - 16 + `${ + match[1] + + match[1] + // r + match[2] + + match[2] + // g + match[3] + + match[3] // b + }ff`, // a + 16, ) >>> 0 ) } // https://drafts.csswg.org/css-color-4/#hex-notation - if ((match = hex8.exec(color))) return parseInt(match[1], 16) >>> 0 + if ((match = hex8.exec(color))) { + return parseInt(match[1], 16) >>> 0 + } if ((match = hex4.exec(color))) { return ( parseInt( match[1] + - match[1] + // r - match[2] + - match[2] + // g - match[3] + - match[3] + // b + match[1] + // r + match[2] + + match[2] + // g + match[3] + + match[3] + // b match[4] + match[4], // a - 16 + 16, ) >>> 0 ) } @@ -129,7 +134,7 @@ export function normalizeColor(color: number | string) { (hslToRgb( parse360(match[1]), // h parsePercentage(match[2]), // s - parsePercentage(match[3]) // l + parsePercentage(match[3]), // l ) | 0x000000ff) >>> // a 0 @@ -141,7 +146,7 @@ export function normalizeColor(color: number | string) { (hslToRgb( parse360(match[1]), // h parsePercentage(match[2]), // s - parsePercentage(match[3]) // l + parsePercentage(match[3]), // l ) | parse1(match[4])) >>> // a 0 @@ -151,11 +156,21 @@ export function normalizeColor(color: number | string) { } function hue2rgb(p: number, q: number, t: number) { - if (t < 0) t += 1 - if (t > 1) t -= 1 - if (t < 1 / 6) return p + (q - p) * 6 * t - if (t < 1 / 2) return q - if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6 + if (t < 0) { + t += 1 + } + if (t > 1) { + t -= 1 + } + if (t < 1 / 6) { + return p + (q - p) * 6 * t + } + if (t < 1 / 2) { + return q + } + if (t < 2 / 3) { + return p + (q - p) * (2 / 3 - t) * 6 + } return p } @@ -174,8 +189,12 @@ function hslToRgb(h: number, s: number, l: number) { function parse255(str: string) { const int = parseInt(str, 10) - if (int < 0) return 0 - if (int > 255) return 255 + if (int < 0) { + return 0 + } + if (int > 255) { + return 255 + } return int } @@ -186,15 +205,23 @@ function parse360(str: string) { function parse1(str: string) { const num = parseFloat(str) - if (num < 0) return 0 - if (num > 1) return 255 + if (num < 0) { + return 0 + } + if (num > 1) { + return 255 + } return Math.round(num * 255) } function parsePercentage(str: string) { // parseFloat conveniently ignores the final % const int = parseFloat(str) - if (int < 0) return 0 - if (int > 100) return 1 + if (int < 0) { + return 0 + } + if (int > 100) { + return 1 + } return int / 100 } diff --git a/spring/src/primitives.ts b/spring/src/primitives.ts index 30ecec0..f0cd1ae 100644 --- a/spring/src/primitives.ts +++ b/spring/src/primitives.ts @@ -1,140 +1,139 @@ - -import type { JSX } from "solid-js/types/jsx"; -export type Primitives = keyof JSX.IntrinsicElements; +import type { JSX } from 'solid-js/types/jsx' +export type Primitives = keyof JSX.IntrinsicElements export const primitives: Primitives[] = [ - "a", - "abbr", - "address", - "area", - "article", - "aside", - "audio", - "b", - "base", - "bdi", - "bdo", - "big", - "blockquote", - "body", - "br", - "button", - "canvas", - "caption", - "cite", - "code", - "col", - "colgroup", - "data", - "datalist", - "dd", - "del", - "details", - "dfn", - "dialog", - "div", - "dl", - "dt", - "em", - "embed", - "fieldset", - "figcaption", - "figure", - "footer", - "form", - "h1", - "h2", - "h3", - "h4", - "h5", - "h6", - "head", - "header", - "hgroup", - "hr", - "html", - "i", - "iframe", - "img", - "input", - "ins", - "kbd", - "keygen", - "label", - "legend", - "li", - "link", - "main", - "map", - "mark", - "menu", - "menuitem", - "meta", - "meter", - "nav", - "noscript", - "object", - "ol", - "optgroup", - "option", - "output", - "p", - "param", - "picture", - "pre", - "progress", - "q", - "rp", - "rt", - "ruby", - "s", - "samp", - "script", - "section", - "select", - "small", - "source", - "span", - "strong", - "style", - "sub", - "summary", - "sup", - "table", - "tbody", - "td", - "textarea", - "tfoot", - "th", - "thead", - "time", - "title", - "tr", - "track", - "u", - "ul", - "var", - "video", - "wbr", + 'a', + 'abbr', + 'address', + 'area', + 'article', + 'aside', + 'audio', + 'b', + 'base', + 'bdi', + 'bdo', + 'big', + 'blockquote', + 'body', + 'br', + 'button', + 'canvas', + 'caption', + 'cite', + 'code', + 'col', + 'colgroup', + 'data', + 'datalist', + 'dd', + 'del', + 'details', + 'dfn', + 'dialog', + 'div', + 'dl', + 'dt', + 'em', + 'embed', + 'fieldset', + 'figcaption', + 'figure', + 'footer', + 'form', + 'h1', + 'h2', + 'h3', + 'h4', + 'h5', + 'h6', + 'head', + 'header', + 'hgroup', + 'hr', + 'html', + 'i', + 'iframe', + 'img', + 'input', + 'ins', + 'kbd', + 'keygen', + 'label', + 'legend', + 'li', + 'link', + 'main', + 'map', + 'mark', + 'menu', + 'menuitem', + 'meta', + 'meter', + 'nav', + 'noscript', + 'object', + 'ol', + 'optgroup', + 'option', + 'output', + 'p', + 'param', + 'picture', + 'pre', + 'progress', + 'q', + 'rp', + 'rt', + 'ruby', + 's', + 'samp', + 'script', + 'section', + 'select', + 'small', + 'source', + 'span', + 'strong', + 'style', + 'sub', + 'summary', + 'sup', + 'table', + 'tbody', + 'td', + 'textarea', + 'tfoot', + 'th', + 'thead', + 'time', + 'title', + 'tr', + 'track', + 'u', + 'ul', + 'var', + 'video', + 'wbr', // SVG - "circle", - "clipPath", - "defs", - "ellipse", - "foreignObject", - "g", - "image", - "line", - "linearGradient", - "mask", - "path", - "pattern", - "polygon", - "polyline", - "radialGradient", - "rect", - "stop", - "svg", - "text", - "tspan", -]; + 'circle', + 'clipPath', + 'defs', + 'ellipse', + 'foreignObject', + 'g', + 'image', + 'line', + 'linearGradient', + 'mask', + 'path', + 'pattern', + 'polygon', + 'polyline', + 'radialGradient', + 'rect', + 'stop', + 'svg', + 'text', + 'tspan', +] diff --git a/spring/src/rafz.ts b/spring/src/rafz.ts index a7f67a9..00d0e38 100644 --- a/spring/src/rafz.ts +++ b/spring/src/rafz.ts @@ -15,30 +15,32 @@ let updateQueue = makeQueue() * Schedule an update for next frame. * Your function can return `true` to repeat next frame. */ -export const raf: Rafz = fn => schedule(fn, updateQueue) +export const raf: Rafz = (fn) => schedule(fn, updateQueue) let writeQueue = makeQueue() -raf.write = fn => schedule(fn, writeQueue) +raf.write = (fn) => schedule(fn, writeQueue) let onStartQueue = makeQueue() -raf.onStart = fn => schedule(fn, onStartQueue) +raf.onStart = (fn) => schedule(fn, onStartQueue) let onFrameQueue = makeQueue() -raf.onFrame = fn => schedule(fn, onFrameQueue) +raf.onFrame = (fn) => schedule(fn, onFrameQueue) let onFinishQueue = makeQueue() -raf.onFinish = fn => schedule(fn, onFinishQueue) +raf.onFinish = (fn) => schedule(fn, onFinishQueue) let timeouts: Timeout[] = [] raf.setTimeout = (handler, ms) => { - let time = raf.now() + ms - let cancel = () => { - let i = timeouts.findIndex(t => t.cancel == cancel) - if (~i) timeouts.splice(i, 1) + const time = raf.now() + ms + const cancel = () => { + const i = timeouts.findIndex((t) => t.cancel == cancel) + if (~i) { + timeouts.splice(i, 1) + } pendingCount -= ~i ? 1 : 0 } - let timeout: Timeout = { time, handler, cancel } + const timeout: Timeout = { time, handler, cancel } timeouts.splice(findTimeout(time), 0, timeout) pendingCount += 1 @@ -47,10 +49,10 @@ raf.setTimeout = (handler, ms) => { } /** Find the index where the given time is not greater. */ -let findTimeout = (time: number) => - ~(~timeouts.findIndex(t => t.time > time) || ~timeouts.length) +const findTimeout = (time: number) => + ~(~timeouts.findIndex((t) => t.time > time) || ~timeouts.length) -raf.cancel = fn => { +raf.cancel = (fn) => { onStartQueue.delete(fn) onFrameQueue.delete(fn) updateQueue.delete(fn) @@ -58,13 +60,13 @@ raf.cancel = fn => { onFinishQueue.delete(fn) } -raf.sync = fn => { +raf.sync = (fn) => { sync = true raf.batchedUpdates(fn) sync = false } -raf.throttle = fn => { +raf.throttle = (fn) => { let lastArgs: any function queuedFn() { try { @@ -90,9 +92,9 @@ let nativeRaf = ? (window.requestAnimationFrame as NativeRaf) : () => {} -raf.use = impl => (nativeRaf = impl) +raf.use = (impl) => (nativeRaf = impl) raf.now = typeof performance != 'undefined' ? () => performance.now() : Date.now -raf.batchedUpdates = fn => fn() +raf.batchedUpdates = (fn) => fn() raf.catch = console.error raf.frameLoop = 'always' @@ -100,7 +102,7 @@ raf.frameLoop = 'always' raf.advance = () => { if (raf.frameLoop !== 'demand') { console.warn( - 'Cannot call the manual advancement of rafz whilst frameLoop is not set as demand' + 'Cannot call the manual advancement of rafz whilst frameLoop is not set as demand', ) } else { update() @@ -147,13 +149,13 @@ function loop() { } function update() { - let prevTs = ts + const prevTs = ts ts = raf.now() // Flush timeouts whose time is up. - let count = findTimeout(ts) + const count = findTimeout(ts) if (count) { - eachSafely(timeouts.splice(0, count), t => t.handler()) + eachSafely(timeouts.splice(0, count), (t) => t.handler()) pendingCount -= count } @@ -190,7 +192,7 @@ function makeQueue(): Queue { if (current.size) { next = new Set() pendingCount -= current.size - eachSafely(current, fn => fn(arg) && next.add(fn)) + eachSafely(current, (fn) => fn(arg) && next.add(fn)) pendingCount += next.size current = next } @@ -203,7 +205,7 @@ interface Eachable { } function eachSafely(values: Eachable, each: (value: T) => void) { - values.forEach(value => { + values.forEach((value) => { try { each(value) } catch (e) { diff --git a/spring/src/runAsync.ts b/spring/src/runAsync.ts index 35c477a..309ebc2 100644 --- a/spring/src/runAsync.ts +++ b/spring/src/runAsync.ts @@ -1,61 +1,61 @@ -import { getCancelledResult, getFinishedResult } from "./AnimationResult"; -import { Controller } from "./Controller"; -import * as G from "./globals"; -import { raf } from "./rafz"; -import { SpringValue } from "./SpringValue"; +import { getCancelledResult, getFinishedResult } from './AnimationResult' +import { type Controller } from './Controller' +import * as G from './globals' +import { raf } from './rafz' +import { type SpringValue } from './SpringValue' import { - AsyncResult, + type AsyncResult, is, flush, getDefaultProps, - SpringChain, - SpringToFn, - Timeout, + type SpringChain, + type SpringToFn, + type Timeout, eachProp, - AnimationResult, - Falsy, - AnimationTarget, - ControllerUpdate, - SpringUpdate, - Lookup, - Readable, -} from "./utils"; + type AnimationResult, + type Falsy, + type AnimationTarget, + type ControllerUpdate, + type SpringUpdate, + type Lookup, + type Readable, +} from './utils' -type AsyncTo = SpringChain | SpringToFn; +export type AsyncTo = SpringChain | SpringToFn /** @internal */ export type InferState = T extends Controller ? State : T extends SpringValue ? U - : unknown; + : unknown /** @internal */ export type InferProps = T extends Controller ? ControllerUpdate : T extends SpringValue ? SpringUpdate - : Lookup; + : Lookup /** @internal */ export type RunAsyncProps = InferProps & { - callId: number; - parentId?: number; - cancel: boolean; - to?: any; -}; + callId: number + parentId?: number + cancel: boolean + to?: any +} /** @internal */ export interface RunAsyncState { - paused: boolean; - pauseQueue: Set<() => void>; - resumeQueue: Set<() => void>; - timeouts: Set; - delayed?: boolean; - asyncId?: number; - asyncTo?: AsyncTo>; - promise?: AsyncResult; - cancelId?: number; + paused: boolean + pauseQueue: Set<() => void> + resumeQueue: Set<() => void> + timeouts: Set + delayed?: boolean + asyncId?: number + asyncTo?: AsyncTo> + promise?: AsyncResult + cancelId?: number } /** @@ -70,55 +70,55 @@ export function runAsync( to: AsyncTo>, props: RunAsyncProps, state: RunAsyncState, - target: T + target: T, ): AsyncResult { - const { callId, parentId, onRest } = props; - const { asyncTo: prevTo, promise: prevPromise } = state; + const { callId, parentId, onRest } = props + const { asyncTo: prevTo, promise: prevPromise } = state if (!parentId && to === prevTo && !props.reset) { - return prevPromise!; + return prevPromise! } return (state.promise = (async () => { - state.asyncId = callId; - state.asyncTo = to; + state.asyncId = callId + state.asyncTo = to // The default props of any `animate` calls. const defaultProps = getDefaultProps>(props, (value, key) => // The `onRest` prop is only called when the `runAsync` promise is resolved. - key === "onRest" ? undefined : value - ); + key === 'onRest' ? undefined : value, + ) - let preventBail!: () => void; - let bail: (error: any) => void; + let preventBail!: () => void + let bail: (error: any) => void // This promise is rejected when the animation is interrupted. const bailPromise = new Promise( - (resolve, reject) => ((preventBail = resolve), (bail = reject)) - ); + (resolve, reject) => ((preventBail = resolve), (bail = reject)), + ) const bailIfEnded = (bailSignal: BailSignal) => { const bailResult = // The `cancel` prop or `stop` method was used. (callId <= (state.cancelId || 0) && getCancelledResult(target)) || // The async `to` prop was replaced. - (callId !== state.asyncId && getFinishedResult(target, false)); + (callId !== state.asyncId && getFinishedResult(target, false)) if (bailResult) { - bailSignal.result = bailResult; + bailSignal.result = bailResult // Reject the `bailPromise` to ensure the `runAsync` promise // is not relying on the caller to rethrow the error for us. - bail(bailSignal); - throw bailSignal; + bail(bailSignal) + throw bailSignal } - }; + } const animate: any = (arg1: any, arg2?: any) => { // Create the bail signal outside the returned promise, // so the generated stack trace is relevant. - const bailSignal = new BailSignal(); - const skipAnimationSignal = new SkipAniamtionSignal(); + const bailSignal = new BailSignal() + const skipAnimationSignal = new SkipAniamtionSignal() return (async () => { if (G.skipAnimation) { @@ -127,122 +127,124 @@ export function runAsync( * is set in the Globals * */ - stopAsync(state); + stopAsync(state) // create the rejection error that's handled gracefully - skipAnimationSignal.result = getFinishedResult(target, false); - bail(skipAnimationSignal); - throw skipAnimationSignal; + skipAnimationSignal.result = getFinishedResult(target, false) + bail(skipAnimationSignal) + throw skipAnimationSignal } - bailIfEnded(bailSignal); + bailIfEnded(bailSignal) - const props: any = is.obj(arg1) ? { ...arg1 } : { ...arg2, to: arg1 }; - props.parentId = callId; + const props: any = is.obj(arg1) ? { ...arg1 } : { ...arg2, to: arg1 } + props.parentId = callId eachProp(defaultProps, (value, key) => { if (is.und(props[key])) { - props[key] = value; + props[key] = value } - }); + }) - const result = await target.start(props); - bailIfEnded(bailSignal); + const result = await target.start(props) + bailIfEnded(bailSignal) if (state.paused) { await new Promise((resume) => { - state.resumeQueue.add(resume); - }); + state.resumeQueue.add(resume) + }) } - return result; - })(); - }; + return result + })() + } - let result!: AnimationResult; + let result!: AnimationResult if (G.skipAnimation) { /** * We need to stop animations if `skipAnimation` * is set in the Globals */ - stopAsync(state); - return getFinishedResult(target, false); + stopAsync(state) + return getFinishedResult(target, false) } try { - let animating!: Promise; + let animating!: Promise // Async sequence if (is.arr(to)) { animating = (async (queue: any[]) => { for (const props of queue) { - await animate(props); + await animate(props) } - })(to); + })(to) } // Async script else { - animating = Promise.resolve(to(animate, target.stop.bind(target))); + animating = Promise.resolve(to(animate, target.stop.bind(target))) } - await Promise.all([animating.then(preventBail), bailPromise]); - result = getFinishedResult(target.get(), true, false); + await Promise.all([animating.then(preventBail), bailPromise]) + result = getFinishedResult(target.get(), true, false) // Bail handling } catch (err) { if (err instanceof BailSignal) { - result = err.result; + result = err.result } else if (err instanceof SkipAniamtionSignal) { - result = err.result; + result = err.result } else { - throw err; + throw err } // Reset the async state. } finally { if (callId == state.asyncId) { - state.asyncId = parentId; - state.asyncTo = parentId ? prevTo : undefined; - state.promise = parentId ? prevPromise : undefined; + state.asyncId = parentId + state.asyncTo = parentId ? prevTo : undefined + state.promise = parentId ? prevPromise : undefined } } if (is.fun(onRest)) { raf.batchedUpdates(() => { - onRest(result, target, target.item); - }); + onRest(result, target, target.item) + }) } - return result; - })()); + return result + })()) } /** Stop the current `runAsync` call with `finished: false` (or with `cancelled: true` when `cancelId` is defined) */ export function stopAsync(state: RunAsyncState, cancelId?: number | Falsy) { - flush(state.timeouts, (t) => t.cancel()); - state.pauseQueue.clear(); - state.resumeQueue.clear(); - state.asyncId = state.asyncTo = state.promise = undefined; - if (cancelId) state.cancelId = cancelId; + flush(state.timeouts, (t) => t.cancel()) + state.pauseQueue.clear() + state.resumeQueue.clear() + state.asyncId = state.asyncTo = state.promise = undefined + if (cancelId) { + state.cancelId = cancelId + } } /** This error is thrown to signal an interrupted async animation. */ export class BailSignal extends Error { - result!: AnimationResult; + result!: AnimationResult constructor() { super( - "An async animation has been interrupted. You see this error because you " + - "forgot to use `await` or `.catch(...)` on its returned promise." - ); + 'An async animation has been interrupted. You see this error because you ' + + 'forgot to use `await` or `.catch(...)` on its returned promise.', + ) } } export class SkipAniamtionSignal extends Error { - result!: AnimationResult; + result!: AnimationResult constructor() { - super("SkipAnimationSignal"); + super('SkipAnimationSignal') } } diff --git a/spring/src/scheduleProps.ts b/spring/src/scheduleProps.ts index bd688a5..c360c32 100644 --- a/spring/src/scheduleProps.ts +++ b/spring/src/scheduleProps.ts @@ -1,7 +1,21 @@ import * as G from './globals' -import { raf } from "./rafz"; -import { InferProps, InferState, RunAsyncProps, RunAsyncState } from "./runAsync"; -import { AnimationResolver, AnimationTarget, AsyncResult, callProp, is, matchProp, MatchProp, Timeout } from "./utils"; +import { raf } from './rafz' +import { + type InferProps, + type InferState, + type RunAsyncProps, + type RunAsyncState, +} from './runAsync' +import { + type AnimationResolver, + type AnimationTarget, + type AsyncResult, + callProp, + is, + matchProp, + type MatchProp, + type Timeout, +} from './utils' // The `scheduleProps` function only handles these defaults. type DefaultProps = { cancel?: MatchProp; pause?: MatchProp } @@ -27,7 +41,7 @@ interface ScheduledProps { */ export function scheduleProps( callId: number, - { key, props, defaultProps, state, actions }: ScheduledProps + { key, props, defaultProps, state, actions }: ScheduledProps, ): AsyncResult { return new Promise((resolve, reject) => { let delay: number diff --git a/spring/src/solid/createSpring.ts b/spring/src/solid/createSpring.ts index 8249d1e..a395cf3 100644 --- a/spring/src/solid/createSpring.ts +++ b/spring/src/solid/createSpring.ts @@ -1,15 +1,15 @@ -import { Accessor, createEffect, createMemo } from "solid-js"; -import { SpringRef } from "../SpringRef"; -import type { SpringRef as SpringRefType } from "../SpringRef"; +import { type Accessor, createMemo } from 'solid-js' +import { type SpringRef } from '../SpringRef' +import type { SpringRef as SpringRefType } from '../SpringRef' import { - ControllerUpdate, + type ControllerUpdate, is, - PickAnimated, - Remap, - SpringValues, - Valid, -} from "../utils"; -import { createSprings } from "./createSprings"; + type PickAnimated, + type Remap, + type SpringValues, + type Valid, +} from '../utils' +import { createSprings } from './createSprings' /** * The props that `useSpring` recognizes. @@ -17,39 +17,42 @@ import { createSprings } from "./createSprings"; export type CreateSpringProps = unknown & PickAnimated extends infer State ? Remap< - ControllerUpdate & { + ControllerUpdate & { + // previously: ControllerUpdate & { /** * Used to access the imperative API. * * When defined, the render animation won't auto-start. */ - ref?: SpringRef; + ref?: SpringRef // previously: ref?: SpringRef } > - : never; + : never export function createSpring( props: () => | (Props & Valid>) - | CreateSpringProps + | CreateSpringProps, ): Accessor>> & { - ref: SpringRefType>; -}; + ref: SpringRefType> +} export function createSpring( - props: (Props & Valid>) | CreateSpringProps + props: + | (Props & Valid>) + | CreateSpringProps, ): Accessor>> & { - ref: SpringRefType>; -}; + ref: SpringRefType> +} export function createSpring(props: any): any { - const fn: Accessor = createMemo(is.fun(props) ? props : () => props); + const fn: Accessor = createMemo(is.fun(props) ? props : () => props) - const springsFn = createSprings(1, fn); + const springsFn = createSprings(1, fn) const springMemo = createMemo(() => { - const [value] = springsFn(); + const [value] = springsFn() return value - }); + }) - return springMemo; + return springMemo } diff --git a/spring/src/solid/createSprings.ts b/spring/src/solid/createSprings.ts index c7c82ed..a684a24 100644 --- a/spring/src/solid/createSprings.ts +++ b/spring/src/solid/createSprings.ts @@ -1,136 +1,135 @@ import { - ControllerFlushFn, - ControllerUpdate, + type ControllerFlushFn, + type ControllerUpdate, detachRefs, is, - Lookup, - PickAnimated, + type Lookup, + type PickAnimated, replaceRef, - SpringValues, -} from "../utils"; -import { SpringRef } from "../SpringRef"; -import type { SpringRef as SpringRefType } from "../SpringRef"; -import { each } from "../utils"; + type SpringValues, +} from '../utils' +import { SpringRef } from '../SpringRef' +import type { SpringRef as SpringRefType } from '../SpringRef' +import { each } from '../utils' import { Controller, flushUpdateQueue, getSprings, setSprings, -} from "../Controller"; +} from '../Controller' import { - Accessor, + type Accessor, createEffect, createMemo, createRenderEffect, createSignal, onCleanup, -} from "solid-js"; -import { declareUpdate } from "../SpringValue"; +} from 'solid-js' +import { declareUpdate } from '../SpringValue' export type CreateSpringsProps = unknown & ControllerUpdate & { - ref?: SpringRefType; - }; + ref?: SpringRefType + } export function createSprings( lengthFn: number | (() => number), - props: Props[] & CreateSpringsProps>[] + props: Props[] & CreateSpringsProps>[], ): Accessor>[]> & { - ref: SpringRefType>; -}; + ref: SpringRefType> +} export function createSprings( lengthFn: number | (() => number), - props: (i: number, ctrl: Controller) => Props + props: (i: number, ctrl: Controller) => Props, ): Accessor>[]> & { - ref: SpringRefType>; -}; + ref: SpringRefType> +} export function createSprings( lengthFn: any, - props: any[] | ((i: number, ctrl: Controller) => any) + props: any[] | ((i: number, ctrl: Controller) => any), ): Accessor>[]> & { - ref: SpringRefType>; + ref: SpringRefType> } { const _lengthFn = lengthFn - lengthFn = is.fun(lengthFn) ? lengthFn : () => _lengthFn as number; - const propsFn = is.fun(props) ? props : undefined; - const ref = SpringRef(); + lengthFn = is.fun(lengthFn) ? lengthFn : () => _lengthFn as number + const propsFn = is.fun(props) ? props : undefined + const ref = SpringRef() interface State { // The controllers used for applying updates. - ctrls: Controller[]; + ctrls: Controller[] // The queue of changes to make on commit. - queue: Array<() => void>; + queue: Array<() => void> // The flush function used by controllers. - flush: ControllerFlushFn; + flush: ControllerFlushFn } - let layoutId = 0; + let layoutId = 0 const state: State = { ctrls: [], queue: [], flush(ctrl, updates) { - const springs = getSprings(ctrl, updates); + const springs = getSprings(ctrl, updates) // Flushing is postponed until the component's commit phase // if a spring was created since the last commit. const canFlushSync = layoutId > 0 && !state.queue.length && - !Object.keys(springs).some((key) => !ctrl.springs[key]); + !Object.keys(springs).some((key) => !ctrl.springs[key]) return canFlushSync ? flushUpdateQueue(ctrl, updates) : new Promise((resolve) => { - setSprings(ctrl, springs); + setSprings(ctrl, springs) state.queue.push(() => { - resolve(flushUpdateQueue(ctrl, updates)); - }); + resolve(flushUpdateQueue(ctrl, updates)) + }) // forceUpdate() - }); + }) }, - }; + } - const ctrls = [...state.ctrls]; + const ctrls = [...state.ctrls] - const updates: any[] = []; + const updates: any[] = [] // Create new controllers when "length" increases, and destroy // the affected controllers when "length" decreases. createEffect(() => { - const length = lengthFn(); + const length = lengthFn() // Clean up any unused controllers each(ctrls.slice(length, prevLength), (ctrl) => { - detachRefs(ctrl, ref); - ctrl.stop(true); - }); - ctrls.length = length; + detachRefs(ctrl, ref) + ctrl.stop(true) + }) + ctrls.length = length - declareUpdates(prevLength, length); - }); + declareUpdates(prevLength, length) + }) // Cache old controllers to dispose in the commit phase. - const prevLength = lengthFn() || 0; + const prevLength = lengthFn() || 0 const [update, setUpdate] = createSignal(Symbol()) // Update existing controllers when "deps" are changed. createRenderEffect(() => { - const length = lengthFn(); - declareUpdates(0, Math.min(prevLength, length)); - }); - + const length = lengthFn() + declareUpdates(0, Math.min(prevLength, length)) + }) /** Fill the `updates` array with declarative updates for the given index range. */ function declareUpdates(startIndex: number, endIndex: number) { for (let i = startIndex; i < endIndex; i++) { - const ctrl = ctrls[i] || (ctrls[i] = new Controller(null, state.flush)); + const ctrl = ctrls[i] || (ctrls[i] = new Controller(null, state.flush)) const update: CreateSpringsProps = propsFn ? propsFn(i, ctrl) - : (props as any)[i]; + : (props as any)[i] if (update) { - updates[i] = declareUpdate(update); + updates[i] = declareUpdate(update) } } setUpdate(Symbol()) @@ -139,27 +138,27 @@ export function createSprings( // New springs are created during render so users can pass them to // their animated components, but new springs aren't cached until the // commit phase (see the `useLayoutEffect` callback below). - const springs = ctrls.map((ctrl, i) => getSprings(ctrl, updates[i])); + const springs = ctrls.map((ctrl, i) => getSprings(ctrl, updates[i])) createRenderEffect(() => { update() - layoutId++; + layoutId++ // Replace the cached controllers. - state.ctrls = ctrls; + state.ctrls = ctrls // Flush the commit queue. - const { queue } = state; + const { queue } = state if (queue.length) { - state.queue = []; - each(queue, (cb) => cb()); + state.queue = [] + each(queue, (cb) => cb()) } // Update existing controllers. each(ctrls, (ctrl, i) => { // Attach the controller to the local ref. - ref.add(ctrl); + ref.add(ctrl) // Update the default props. /* if (hasContext) { @@ -167,31 +166,31 @@ export function createSprings( } */ // Apply updates created during render. - const update = updates[i]; + const update = updates[i] if (update) { // Update the injected ref if needed. - replaceRef(ctrl, update.ref); + replaceRef(ctrl, update.ref) // When an injected ref exists, the update is postponed // until the ref has its `start` method called. if (ctrl.ref) { - ctrl.queue.push(update); + ctrl.queue.push(update) } else { - ctrl.start(update); + ctrl.start(update) } } - }); - }); + }) + }) onCleanup(() => { - each(state.ctrls, (ctrl) => ctrl.stop(true)); - }); + each(state.ctrls, (ctrl) => ctrl.stop(true)) + }) const value: Accessor>[]> & { - ref: SpringRefType>; - } = createMemo(() => springs.map((x) => ({ ...x }))) as any; + ref: SpringRefType> + } = createMemo(() => springs.map((x) => ({ ...x }))) as any - value.ref = ref as any; + value.ref = ref as any - return value; + return value } diff --git a/spring/src/utils.ts b/spring/src/utils.ts index a41f78e..d4926d0 100644 --- a/spring/src/utils.ts +++ b/spring/src/utils.ts @@ -1,34 +1,34 @@ -import * as G from "./globals"; -import { FluidValue, FluidProps, getFluidValue } from "./fluids"; -import { Arrify, Constrain } from "./Interpolation"; -import { SpringValue } from "./SpringValue"; -import { Controller, ControllerQueue } from "./Controller"; -import { SpringRef } from "./SpringRef"; -import { AnimatedArray } from "./AnimatedArray"; -import { AnimatedString } from "./AnimatedString"; -import { AnimatedValue, getAnimated } from "./animated"; -import { InferState } from "./runAsync"; +import * as G from './globals' +import { type FluidValue, type FluidProps, getFluidValue } from './fluids' +import { type Arrify, type Constrain } from './Interpolation' +import { type SpringValue } from './SpringValue' +import { type Controller, type ControllerQueue } from './Controller' +import { type SpringRef } from './SpringRef' +import { AnimatedArray } from './AnimatedArray' +import { AnimatedString } from './AnimatedString' +import { AnimatedValue, getAnimated } from './animated' +import { type InferState } from './runAsync' // types export class Any { - // @ts-ignore - private _: never; + // @ts-expect-error + private _: never } export type VelocityProp = T extends ReadonlyArray ? number[] - : number; + : number /** The flush function that handles `start` calls */ export type ControllerFlushFn = Controller> = ( ctrl: T, - queue: ControllerQueue> -) => AsyncResult; + queue: ControllerQueue>, +) => AsyncResult /** Override the property types of `A` with `B` and merge any new properties */ export type Merge = Remap< { [P in keyof A]: P extends keyof B ? B[P] : A[P] } & Omit ->; +> /** * Move all non-reserved props into the `to` prop. @@ -36,65 +36,61 @@ export type Merge = Remap< export type InferTo = Merge< { to: ForwardProps }, Pick ->; +> /** Unwrap any `FluidValue` object types */ export type RawValues = { - [P in keyof T]: T[P] extends FluidValue ? U : T[P]; -}; + [P in keyof T]: T[P] extends FluidValue ? U : T[P] +} export type NonObject = | Extract> | Exclude /** The promised result of an animation. */ -export type AsyncResult = Promise>; +export type AsyncResult = Promise> -type IsType = (arg: T & any) => arg is Narrow; -type Narrow = [T] extends [Any] ? U : [T] extends [U] ? Extract : U; +type IsType = (arg: T & any) => arg is Narrow +type Narrow = [T] extends [Any] ? U : [T] extends [U] ? Extract : U -export interface Lookup { - [key: string]: T; -} +export type Lookup = Record -type PlainObject = Exclude; +type PlainObject = Exclude /** * This function updates animation state with the delta time. */ -export type FrameUpdateFn = (dt: number) => boolean | void; +export type FrameUpdateFn = (dt: number) => boolean | void /** * Return true to be called again next frame. */ -export type FrameFn = () => boolean | void; +export type FrameFn = () => boolean | void -type AnyFn = (...args: any[]) => any; -type VoidFn = (...args: any[]) => undefined | void; +type AnyFn = (...args: any[]) => any +type VoidFn = (...args: any[]) => undefined | void /** Convert a union to an intersection */ type Intersect = (U extends any ? (k: U) => void : never) extends ( - k: infer I + k: infer I, ) => void ? I - : never; + : never /** Intersect a union of objects but merge property types with _unions_ */ -export type ObjectFromUnion = Remap< - { - [P in keyof Intersect]: T extends infer U - ? P extends keyof U - ? U[P] - : never - : never; - } ->; +export type ObjectFromUnion = Remap<{ + [P in keyof Intersect]: T extends infer U + ? P extends keyof U + ? U[P] + : never + : never +}> /** Ensure the given type is an object type */ -export type ObjectType = T extends object ? T : {}; +export type ObjectType = T extends object ? T : {} /** The phases of a `useTransition` item */ -export type TransitionKey = "initial" | "enter" | "update" | "leave"; +export type TransitionKey = 'initial' | 'enter' | 'update' | 'leave' /** * Extract a union of animated values from a set of `useTransition` props. @@ -117,7 +113,7 @@ export type TransitionValues = unknown & {} > > - >; + > /** * Pick the values of the `to` prop. Forward props are *not* included. @@ -125,10 +121,10 @@ export type TransitionValues = unknown & type ToValues = unknown & (AndForward extends true ? ForwardProps : unknown) & (Props extends { to?: any } - ? Exclude> extends infer To + ? Exclude> extends infer To ? ForwardProps<[To] extends [object] ? To : Partial>> : never - : unknown); + : unknown) /** * Pick the properties of these object props... @@ -150,7 +146,7 @@ export type PickAnimated = unknown & : TransitionKey & keyof Props extends never ? ToValues : TransitionValues - >); + >) /** Return a union type of every key whose `T` value is incompatible with its `U` value */ type InvalidKeys = { @@ -166,67 +162,67 @@ type NeverProps = Remap< export type Valid = NeverProps> export interface Timeout { - time: number; - handler: () => void; - cancel: () => void; + time: number + handler: () => void + cancel: () => void } export type Throttled = T & { - handler: T; - cancel: () => void; -}; + handler: T + cancel: () => void +} export interface Rafz { - (update: FrameUpdateFn): void; + (update: FrameUpdateFn): void /** * How should the frameLoop run, when we call .advance or naturally? */ - frameLoop: "always" | "demand"; + frameLoop: 'always' | 'demand' /** * Prevent a queued `raf(...)` or `raf.write(...)` call. */ - cancel: (fn: AnyFn) => void; + cancel: (fn: AnyFn) => void /** * To avoid performance issues, all mutations are batched with this function. * If the update loop is dormant, it will be started when you call this. */ - write: (fn: FrameFn) => void; + write: (fn: FrameFn) => void /** * Run a function before updates are flushed. */ - onStart: (fn: FrameFn) => void; + onStart: (fn: FrameFn) => void /** * Run a function before writes are flushed. */ - onFrame: (fn: FrameFn) => void; + onFrame: (fn: FrameFn) => void /** * Run a function after writes are flushed. */ - onFinish: (fn: FrameFn) => void; + onFinish: (fn: FrameFn) => void /** * Run a function on the soonest frame after the given time has passed, * and before any updates on that particular frame. */ - setTimeout: (handler: () => void, ms: number) => Timeout; + setTimeout: (handler: () => void, ms: number) => Timeout /** * Any function scheduled within the given callback is run immediately. * This escape hatch should only be used if you know what you're doing. */ - sync: (fn: () => void) => void; + sync: (fn: () => void) => void /** * Wrap a function so its execution is limited to once per frame. If called * more than once in a single frame, the last call's arguments are used. */ - throttle: (fn: T) => Throttled; + throttle: (fn: T) => Throttled /** * Override the native `requestAnimationFrame` implementation. @@ -234,7 +230,7 @@ export interface Rafz { * You must call this if your environment never defines * `window.requestAnimationFrame` for you. */ - use: (impl: T) => T; + use: (impl: T) => T /** * This is responsible for providing the current time, @@ -243,26 +239,26 @@ export interface Rafz { * It defaults to `performance.now` when it exists, * otherwise `Date.now` is used. */ - now: () => number; + now: () => number /** * For update batching in React. Does nothing by default. */ - batchedUpdates: (cb: () => void) => void; + batchedUpdates: (cb: () => void) => void /** * The error handler used when a queued function throws. */ - catch: (error: Error) => void; + catch: (error: Error) => void /** * Manual advancement of the frameLoop, calls our update function * only if `.frameLoop === 'demand'` */ - advance: () => void; + advance: () => void } -export type EasingFunction = (t: number) => number; +export type EasingFunction = (t: number) => number export const config = { default: { tension: 170, friction: 26 }, @@ -271,62 +267,62 @@ export const config = { stiff: { tension: 210, friction: 20 }, slow: { tension: 280, friction: 60 }, molasses: { tension: 280, friction: 120 }, -} as const; +} as const interface EasingDictionary { - linear: (t: number) => number; - easeInQuad: (t: number) => number; - easeOutQuad: (t: number) => number; - easeInOutQuad: (t: number) => number; - easeInCubic: (t: number) => number; - easeOutCubic: (t: number) => number; - easeInOutCubic: (t: number) => number; - easeInQuart: (t: number) => number; - easeOutQuart: (t: number) => number; - easeInOutQuart: (t: number) => number; - easeInQuint: (t: number) => number; - easeOutQuint: (t: number) => number; - easeInOutQuint: (t: number) => number; - easeInSine: (t: number) => number; - easeOutSine: (t: number) => number; - easeInOutSine: (t: number) => number; - easeInExpo: (t: number) => number; - easeOutExpo: (t: number) => number; - easeInOutExpo: (t: number) => number; - easeInCirc: (t: number) => number; - easeOutCirc: (t: number) => number; - easeInOutCirc: (t: number) => number; - easeInBack: (t: number) => number; - easeOutBack: (t: number) => number; - easeInOutBack: (t: number) => number; - easeInElastic: (t: number) => number; - easeOutElastic: (t: number) => number; - easeInOutElastic: (t: number) => number; - easeInBounce: (t: number) => number; - easeOutBounce: (t: number) => number; - easeInOutBounce: (t: number) => number; + linear: (t: number) => number + easeInQuad: (t: number) => number + easeOutQuad: (t: number) => number + easeInOutQuad: (t: number) => number + easeInCubic: (t: number) => number + easeOutCubic: (t: number) => number + easeInOutCubic: (t: number) => number + easeInQuart: (t: number) => number + easeOutQuart: (t: number) => number + easeInOutQuart: (t: number) => number + easeInQuint: (t: number) => number + easeOutQuint: (t: number) => number + easeInOutQuint: (t: number) => number + easeInSine: (t: number) => number + easeOutSine: (t: number) => number + easeInOutSine: (t: number) => number + easeInExpo: (t: number) => number + easeOutExpo: (t: number) => number + easeInOutExpo: (t: number) => number + easeInCirc: (t: number) => number + easeOutCirc: (t: number) => number + easeInOutCirc: (t: number) => number + easeInBack: (t: number) => number + easeOutBack: (t: number) => number + easeInOutBack: (t: number) => number + easeInElastic: (t: number) => number + easeOutElastic: (t: number) => number + easeInOutElastic: (t: number) => number + easeInBounce: (t: number) => number + easeOutBounce: (t: number) => number + easeInOutBounce: (t: number) => number } -const c1 = 1.70158; -const c2 = c1 * 1.525; -const c3 = c1 + 1; -const c4 = (2 * Math.PI) / 3; -const c5 = (2 * Math.PI) / 4.5; +const c1 = 1.70158 +const c2 = c1 * 1.525 +const c3 = c1 + 1 +const c4 = (2 * Math.PI) / 3 +const c5 = (2 * Math.PI) / 4.5 const bounceOut: EasingFunction = (x) => { - const n1 = 7.5625; - const d1 = 2.75; + const n1 = 7.5625 + const d1 = 2.75 if (x < 1 / d1) { - return n1 * x * x; + return n1 * x * x } else if (x < 2 / d1) { - return n1 * (x -= 1.5 / d1) * x + 0.75; + return n1 * (x -= 1.5 / d1) * x + 0.75 } else if (x < 2.5 / d1) { - return n1 * (x -= 2.25 / d1) * x + 0.9375; + return n1 * (x -= 2.25 / d1) * x + 0.9375 } else { - return n1 * (x -= 2.625 / d1) * x + 0.984375; + return n1 * (x -= 2.625 / d1) * x + 0.984375 } -}; +} export const easings: EasingDictionary = { linear: (x) => x, @@ -394,7 +390,7 @@ export const easings: EasingDictionary = { easeOutBounce: bounceOut, easeInOutBounce: (x) => x < 0.5 ? (1 - bounceOut(1 - 2 * x)) / 2 : (1 + bounceOut(2 * x - 1)) / 2, -} as const; +} as const const defaults: any = { ...config.default, @@ -402,7 +398,7 @@ const defaults: any = { damping: 1, easing: easings.linear, clamp: false, -}; +} export class AnimationConfig { /** @@ -410,7 +406,7 @@ export class AnimationConfig { * * When tension is zero, no animation occurs. */ - tension!: number; + tension!: number /** * The damping ratio coefficient, or just the damping ratio when `speed` is defined. @@ -419,7 +415,7 @@ export class AnimationConfig { * * Higher friction means the spring will slow down faster. */ - friction!: number; + friction!: number /** * The natural frequency (in seconds), which dictates the number of bounces @@ -428,7 +424,7 @@ export class AnimationConfig { * When defined, `tension` is derived from this, and `friction` is derived * from `tension` and `damping`. */ - frequency?: number; + frequency?: number /** * The damping ratio, which dictates how the spring slows down. @@ -440,26 +436,26 @@ export class AnimationConfig { * * Defaults to 1 */ - damping!: number; + damping!: number /** * Higher mass means more friction is required to slow down. * * Defaults to 1, which works fine most of the time. */ - mass!: number; + mass!: number /** * The initial velocity of one or more values. */ - velocity: number | number[] = 0; + velocity: number | number[] = 0 /** * The smallest velocity before the animation is considered "not moving". * * When undefined, `precision` is used instead. */ - restVelocity?: number; + restVelocity?: number /** * The smallest distance from a value before that distance is essentially zero. @@ -468,7 +464,7 @@ export class AnimationConfig { * this distance from its final value, and its velocity must be lower than this * value too (unless `restVelocity` is defined). */ - precision?: number; + precision?: number /** * For `duration` animations only. Note: The `duration` is not affected @@ -482,24 +478,24 @@ export class AnimationConfig { * * Any number `>= 0` and `<= 1` makes sense here. */ - progress?: number; + progress?: number /** * Animation length in number of milliseconds. */ - duration?: number; + duration?: number /** * The animation curve. Only used when `duration` is defined. * * Defaults to quadratic ease-in-out. */ - easing!: EasingFunction; + easing!: EasingFunction /** * Avoid overshooting by ending abruptly at the goal value. */ - clamp!: boolean; + clamp!: boolean /** * When above zero, the spring will bounce instead of overshooting when @@ -508,7 +504,7 @@ export class AnimationConfig { * setting `bounce` to `0.5` chops the velocity in half on each bounce, * in addition to any friction. */ - bounce?: number; + bounce?: number /** * "Decay animations" decelerate without an explicit goal value. @@ -520,22 +516,22 @@ export class AnimationConfig { * animation slow down faster. And setting to `1` would make an unending * animation. */ - decay?: boolean | number; + decay?: boolean | number /** * While animating, round to the nearest multiple of this number. * The `from` and `to` values are never rounded, as well as any value * passed to the `set` method of an animated value. */ - round?: number; + round?: number constructor() { - Object.assign(this, defaults); + Object.assign(this, defaults) } } /** The object type of the `config` prop. */ -export type SpringConfig = Partial; +export type SpringConfig = Partial /** * For testing whether a type is an object but not an array. @@ -548,68 +544,68 @@ export type IsPlainObject = T extends ReadonlyArray ? Any : T extends object ? object - : Any; + : Any export type StringKeys = T extends IsPlainObject ? string & keyof T - : string; + : string -export type OneOrMore = T | readonly T[]; +export type OneOrMore = T | readonly T[] /** For props that can be set on a per-key basis. */ export type MatchProp = | boolean | OneOrMore> - | ((key: StringKeys) => boolean); + | ((key: StringKeys) => boolean) export interface AnimationProps { /** * Configure the spring behavior for each key. */ - config?: SpringConfig | ((key: StringKeys) => SpringConfig); + config?: SpringConfig | ((key: StringKeys) => SpringConfig) /** * Milliseconds to wait before applying the other props. */ - delay?: number | ((key: StringKeys) => number); + delay?: number | ((key: StringKeys) => number) /** * When true, props jump to their goal values instead of animating. */ - immediate?: MatchProp; + immediate?: MatchProp /** * Cancel all animations by using `true`, or some animations by using a key * or an array of keys. */ - cancel?: MatchProp; + cancel?: MatchProp /** * Pause all animations by using `true`, or some animations by using a key * or an array of keys. */ - pause?: MatchProp; + pause?: MatchProp /** * Start the next animations at their values in the `from` prop. */ - reset?: MatchProp; + reset?: MatchProp /** * Swap the `to` and `from` props. */ - reverse?: boolean; + reverse?: boolean /** * Override the default props with this update. */ - default?: boolean | SpringProps; + default?: boolean | SpringProps } /** Intersected with other object types to allow for unknown properties */ export interface UnknownProps extends Lookup {} -export type GoalValue = T | FluidValue | UnknownProps | null | undefined; +export type GoalValue = T | FluidValue | UnknownProps | null | undefined /** A set of values for a `Controller` to animate from/to. */ export type GoalValues = FluidProps extends infer Props ? { [P in keyof Props]?: Props[P] | null } - : never; + : never -export type Falsy = false | null | undefined; +export type Falsy = false | null | undefined /** * A value or set of values that can be animated from/to. @@ -619,22 +615,24 @@ export type Falsy = false | null | undefined; */ export type GoalProp = [T] extends [IsPlainObject] ? GoalValues | Falsy - : GoalValue; + : GoalValue /** Try to simplify `&` out of an object type */ export type Remap = {} & { - [P in keyof T]: T[P]; -}; + [P in keyof T]: T[P] +} /** * Where `to` is inferred from non-reserved props * * The `T` parameter can be a set of animated values (as an object type) * or a primitive type for a single animated value. */ -export type InlineToProps = Remap & { to?: undefined }>; +export type InlineToProps = Remap< + GoalValues & { to?: undefined } +> -type StartFn = InferTarget extends { start: infer T } ? T : never; -type StopFn = InferTarget extends { stop: infer T } ? T : never; +type StartFn = InferTarget extends { start: infer T } ? T : never +type StopFn = InferTarget extends { stop: infer T } ? T : never /** * An async function that can update or stop the animations of a spring. * Typically defined as the `to` prop. @@ -642,21 +640,22 @@ type StopFn = InferTarget extends { stop: infer T } ? T : never; * The `T` parameter can be a set of animated values (as an object type) * or a primitive type for a single animated value. */ -export interface SpringToFn { - (start: StartFn, stop: StopFn): Promise | void; -} +export type SpringToFn = ( + start: StartFn, + stop: StopFn, +) => Promise | void /** * Props for `Controller` methods and constructor. */ export interface ControllerProps< State extends Lookup = Lookup, - Item = undefined + Item = undefined, > extends AnimationProps { - ref?: SpringRef; - from?: GoalValues | Falsy; + ref?: SpringRef + from?: GoalValues | Falsy // FIXME: Use "ControllerUpdate" once type recursion is good enough. - loop?: LoopProp; + loop?: LoopProp /** * Called when the # of animating values exceeds 0 * @@ -669,8 +668,8 @@ export interface ControllerProps< SpringValue, Controller, Item - >; - }; + > + } /** * Called when the # of animating values hits 0 * @@ -683,8 +682,8 @@ export interface ControllerProps< SpringValue, Controller, Item - >; - }; + > + } /** * Called once per frame when animations are active * @@ -697,8 +696,8 @@ export interface ControllerProps< SpringValue, Controller, Item - >; - }; + > + } onPause?: | OnPause, Controller, Item> @@ -707,8 +706,8 @@ export interface ControllerProps< SpringValue, Controller, Item - >; - }; + > + } onResume?: | OnResume, Controller, Item> | { @@ -716,32 +715,32 @@ export interface ControllerProps< SpringValue, Controller, Item - >; - }; + > + } /** * Called after an animation is updated by new props. * Useful for manipulation * * Also accepts an object for per-key events */ - onProps?: OnProps | { [P in keyof State]?: OnProps }; + onProps?: OnProps | { [P in keyof State]?: OnProps } /** * Called when the promise for this update is resolved. */ - onResolve?: OnResolve, Controller, Item>; + onResolve?: OnResolve, Controller, Item> } export type ControllerUpdate< State extends Lookup = Lookup, - Item = undefined -> = unknown & ToProps & ControllerProps; + Item = undefined, +> = unknown & ToProps & ControllerProps /** A value that any `SpringValue` or `Controller` can animate to. */ export type SpringTo = | ([T] extends [IsPlainObject] ? never : T | FluidValue) | SpringChain | SpringToFn - | Falsy; + | Falsy /** A serial queue of spring updates. */ export interface SpringChain @@ -761,64 +760,64 @@ export interface SpringChain */ export type ToProps = | { to?: GoalProp | SpringToFn | SpringChain } - | ([T] extends [IsPlainObject] ? InlineToProps : never); + | ([T] extends [IsPlainObject] ? InlineToProps : never) -export type SpringUpdate = ToProps & SpringProps; +export type SpringUpdate = ToProps & SpringProps -export type LoopProp = boolean | T | (() => boolean | T); +export type LoopProp = boolean | T | (() => boolean | T) /** Event props can be customized per-key. */ -export type EventProp = T | Lookup; +export type EventProp = T | Lookup // Wrap a type with `SpringValue` type SpringWrap = [ Exclude, - Extract // Arrays are animated. + Extract, // Arrays are animated. ] extends [object | void, never] ? never // Object literals cannot be animated. - : SpringValue> | Extract; + : SpringValue> | Extract export type SpringValues = [T] extends [Any] ? Lookup | undefined> // Special case: "any" - : { [P in keyof T]: SpringWrap }; + : { [P in keyof T]: SpringWrap } export interface ReservedEventProps { - onProps?: any; - onStart?: any; - onChange?: any; - onPause?: any; - onResume?: any; - onRest?: any; - onResolve?: any; - onDestroyed?: any; + onProps?: any + onStart?: any + onChange?: any + onPause?: any + onResume?: any + onRest?: any + onResolve?: any + onDestroyed?: any } /** @internal */ export interface AnimationRange { - to: T | FluidValue | undefined; - from: T | FluidValue | undefined; + to: T | FluidValue | undefined + from: T | FluidValue | undefined } /** @internal */ export type AnimationResolver = ( - result: AnimationResult | AsyncResult -) => void; + result: AnimationResult | AsyncResult, +) => void /** @internal */ export type PickEventFns = { - [P in Extract]?: Extract; -}; + [P in Extract]?: Extract +} /** @internal */ export type EventKey = Exclude< keyof ReservedEventProps, - "onResolve" | "onDestroyed" ->; + 'onResolve' | 'onDestroyed' +> /** @internal */ export interface AnimationTarget extends Readable { - start(props: any): AsyncResult; - stop: Function; - item?: unknown; + start(props: any): AsyncResult + stop: Function + item?: unknown } /** @internal */ @@ -826,11 +825,11 @@ export type InferTarget = T extends object ? T extends ReadonlyArray ? SpringValue : Controller - : SpringValue; + : SpringValue /** @internal */ export interface Readable { - get(): T; + get(): T } /** @@ -839,27 +838,27 @@ export interface Readable { */ export type OnProps = ( props: Readonly>, - spring: SpringValue -) => void; + spring: SpringValue, +) => void /** The object given to the `onRest` prop and `start` promise. */ export interface AnimationResult { - value: T extends Readable ? U : never; + value: T extends Readable ? U : never /** When true, no animation ever started. */ - noop?: boolean; + noop?: boolean /** When true, the animation was neither cancelled nor stopped prematurely. */ - finished?: boolean; + finished?: boolean /** When true, the animation was cancelled before it could finish. */ - cancelled?: boolean; + cancelled?: boolean } type EventHandler< TResult extends Readable = any, TSource = unknown, - Item = undefined + Item = undefined, > = Item extends undefined ? (result: AnimationResult, ctrl: TSource, item?: Item) => void - : (result: AnimationResult, ctrl: TSource, item: Item) => void; + : (result: AnimationResult, ctrl: TSource, item: Item) => void /** * Called before the first frame of every animation. @@ -868,40 +867,40 @@ type EventHandler< export type OnStart< TResult extends Readable, TSource, - Item = undefined -> = EventHandler; + Item = undefined, +> = EventHandler /** Called when a `SpringValue` changes */ export type OnChange< TResult extends Readable, TSource, - Item = undefined -> = EventHandler; + Item = undefined, +> = EventHandler export type OnPause< TResult extends Readable, TSource, - Item = undefined -> = EventHandler; + Item = undefined, +> = EventHandler export type OnResume< TResult extends Readable, TSource, - Item = undefined -> = EventHandler; + Item = undefined, +> = EventHandler /** Called once the animation comes to a halt */ export type OnRest< TResult extends Readable, TSource, - Item = undefined -> = EventHandler; + Item = undefined, +> = EventHandler export type OnResolve< TResult extends Readable, TSource, - Item = undefined -> = EventHandler; + Item = undefined, +> = EventHandler /** * Use the `SpringUpdate` type if you need the `to` prop to exist. @@ -912,75 +911,79 @@ export type OnResolve< * or a primitive type for a single animated value. */ export interface SpringProps extends AnimationProps { - from?: GoalValue; + from?: GoalValue // FIXME: Use "SpringUpdate" once type recursion is good enough. - loop?: LoopProp; + loop?: LoopProp /** * Called after an animation is updated by new props, * even if the animation remains idle. */ - onProps?: EventProp>; + onProps?: EventProp> /** * Called when an animation moves for the first time. */ - onStart?: EventProp, SpringValue>>; + onStart?: EventProp, SpringValue>> /** * Called when a spring has its value changed. */ - onChange?: EventProp, SpringValue>>; - onPause?: EventProp, SpringValue>>; - onResume?: EventProp, SpringValue>>; + onChange?: EventProp, SpringValue>> + onPause?: EventProp, SpringValue>> + onResume?: EventProp, SpringValue>> /** * Called when all animations come to a stand-still. */ - onRest?: EventProp, SpringValue>>; + onRest?: EventProp, SpringValue>> } -export type NativeRaf = (cb: () => void) => void; +export type NativeRaf = (cb: () => void) => void // funcs export const is = { arr: Array.isArray as IsType, obj: (a: T & any): a is PlainObject => - !!a && a.constructor.name === "Object", - fun: ((a: unknown) => typeof a === "function") as IsType, - str: (a: unknown): a is string => typeof a === "string", - num: (a: unknown): a is number => typeof a === "number", + !!a && a.constructor.name === 'Object', + fun: ((a: unknown) => typeof a === 'function') as IsType, + str: (a: unknown): a is string => typeof a === 'string', + num: (a: unknown): a is number => typeof a === 'number', und: (a: unknown): a is undefined => a === undefined, -}; +} export const defineHidden = (obj: any, key: any, value: any) => Object.defineProperty(obj, key, { value, writable: true, configurable: true, - }); + }) export function noop() {} /** Compare animatable values */ export function isEqual(a: any, b: any) { if (is.arr(a)) { - if (!is.arr(b) || a.length !== b.length) return false; + if (!is.arr(b) || a.length !== b.length) { + return false + } for (let i = 0; i < a.length; i++) { - if (a[i] !== b[i]) return false; + if (a[i] !== b[i]) { + return false + } } - return true; + return true } - return a === b; + return a === b } -type EachFn = (this: This, value: Value, key: Key) => void; +type EachFn = (this: This, value: Value, key: Key) => void type Eachable = { - forEach(cb: EachFn, ctx?: This): void; -}; + forEach(cb: EachFn, ctx?: This): void +} /** Minifiable `.forEach` call */ export const each = ( obj: Eachable, - fn: EachFn -) => obj.forEach(fn); + fn: EachFn, +) => obj.forEach(fn) /** Iterate the properties of an object */ export function eachProp( @@ -988,37 +991,37 @@ export function eachProp( fn: ( this: This, value: T extends any[] ? T[number] : T[keyof T], - key: string + key: string, ) => void, - ctx?: This + ctx?: This, ) { if (is.arr(obj)) { for (let i = 0; i < obj.length; i++) { - fn.call(ctx as any, obj[i] as any, `${i}`); + fn.call(ctx as any, obj[i], `${i}`) } - return; + return } for (const key in obj) { if (obj.hasOwnProperty(key)) { - fn.call(ctx as any, obj[key] as any, key); + fn.call(ctx as any, obj[key] as any, key) } } } export const toArray = (a: T): Arrify> => - is.und(a) ? [] : is.arr(a) ? (a as any) : [a]; + is.und(a) ? [] : is.arr(a) ? (a as any) : [a] /** Copy the `queue`, then iterate it after the `queue` is cleared */ export function flush( queue: Map, - iterator: (entry: [P, T]) => void -): void; -export function flush(queue: Set, iterator: (value: T) => void): void; + iterator: (entry: [P, T]) => void, +): void +export function flush(queue: Set, iterator: (value: T) => void): void export function flush(queue: any, iterator: any) { if (queue.size) { - const items = Array.from(queue); - queue.clear(); - each(items, iterator); + const items = Array.from(queue) + queue.clear() + each(items, iterator) } } @@ -1026,63 +1029,64 @@ export function flush(queue: any, iterator: any) { export const flushCalls = ( queue: Set, ...args: Parameters -) => flush(queue, (fn) => fn(...args)); +) => flush(queue, (fn) => fn(...args)) // For server-side rendering: https://github.com/react-spring/zustand/pull/34 // Deno support: https://github.com/pmndrs/zustand/issues/347 export const isSSR = () => - typeof window === "undefined" || + // eslint-disable-next-line @typescript-eslint/prefer-optional-chain + typeof window === 'undefined' || !window.navigator || - /ServerSideRendering|^Deno\//.test(window.navigator.userAgent); + /ServerSideRendering|^Deno\//.test(window.navigator.userAgent) export type AnyFnType = any[], Out = any> = ( ...args: In -) => Out; +) => Out export function callProp( value: T, ...args: T extends AnyFn ? Parameters : unknown[] ): T extends AnyFnType ? U : T { - return is.fun(value) ? value(...args) : value; + return is.fun(value) ? value(...args) : value } /** Try to coerce the given value into a boolean using the given key */ export const matchProp = ( value: boolean | OneOrMore | ((key: any) => boolean) | undefined, - key: string | undefined + key: string | undefined, ) => value === true || !!( key && value && (is.fun(value) ? value(key) : toArray(value).includes(key)) - ); + ) export const resolveProp = ( prop: T | Lookup | undefined, - key: string | undefined -) => (is.obj(prop) ? key && (prop as any)[key] : prop); + key: string | undefined, +) => (is.obj(prop) ? key && (prop as any)[key] : prop) export const concatFn = (first: T | undefined, last: T) => - first ? (...args: Parameters) => (first(...args), last(...args)) : last; + first ? (...args: Parameters) => (first(...args), last(...args)) : last /** Returns `true` if the given prop is having its default value set. */ export const hasDefaultProp = (props: T, key: keyof T) => - !is.und(getDefaultProp(props, key)); + !is.und(getDefaultProp(props, key)) /** Get the default value being set for the given `key` */ export const getDefaultProp = ( props: T, - key: P + key: P, ): T[P] => props.default === true ? props[key] : props.default ? props.default[key] - : undefined; + : undefined -const noopTransform = (value: any) => value; +const noopTransform = (value: any) => value /** * Extract the default props from an update. @@ -1093,22 +1097,22 @@ const noopTransform = (value: any) => value; */ export const getDefaultProps = ( props: Lookup, - transform: (value: any, key: string) => any = noopTransform + transform: (value: any, key: string) => any = noopTransform, ): T => { - let keys: readonly string[] = DEFAULT_PROPS; + let keys: readonly string[] = DEFAULT_PROPS if (props.default && props.default !== true) { - props = props.default; - keys = Object.keys(props); + props = props.default + keys = Object.keys(props) } - const defaults: any = {}; + const defaults: any = {} for (const key of keys) { - const value = transform(props[key], key); + const value = transform(props[key], key) if (!is.und(value)) { - defaults[key] = value; + defaults[key] = value } } - return defaults; -}; + return defaults +} /** * These props are implicitly used as defaults when defined in a @@ -1122,18 +1126,18 @@ export const getDefaultProps = ( * the object syntax (eg: `default: { immediate: true }`). */ export const DEFAULT_PROPS = [ - "config", - "onProps", - "onStart", - "onChange", - "onPause", - "onResume", - "onRest", -] as const; + 'config', + 'onProps', + 'onStart', + 'onChange', + 'onPause', + 'onResume', + 'onRest', +] as const // Compute the goal value, converting "red" to "rgba(255, 0, 0, 1)" in the process export function computeGoal(value: T | FluidValue): T { - value = getFluidValue(value); + value = getFluidValue(value) return is.arr(value) ? value.map(computeGoal) : isAnimatedString(value) @@ -1141,7 +1145,7 @@ export function computeGoal(value: T | FluidValue): T { range: [0, 1], output: [value, value] as any, })(1) as any) - : value; + : value } /** @@ -1153,51 +1157,51 @@ export function computeGoal(value: T | FluidValue): T { * */ export const cssVariableRegex = - /var\((--[a-zA-Z0-9-_]+),? ?([a-zA-Z0-9 ()%#.,-]+)?\)/; + /var\((--[a-zA-Z0-9-_]+),? ?([a-zA-Z0-9 ()%#.,-]+)?\)/ // Not all strings can be animated (eg: {display: "none"}) export function isAnimatedString(value: unknown): value is string { return ( is.str(value) && - (value[0] == "#" || + (value.startsWith('#') || /\d/.test(value) || // Do not identify a CSS variable as an AnimatedString if its SSR (!isSSR() && cssVariableRegex.test(value)) || value in (G.colors || {})) - ); + ) } /** * Property names that are reserved for animation config */ export interface ReservedProps extends ReservedEventProps { - config?: any; - from?: any; - to?: any; - ref?: any; - loop?: any; - pause?: any; - reset?: any; - cancel?: any; - reverse?: any; - immediate?: any; - default?: any; - delay?: any; + config?: any + from?: any + to?: any + ref?: any + loop?: any + pause?: any + reset?: any + cancel?: any + reverse?: any + immediate?: any + default?: any + delay?: any // Transition props - items?: any; - trail?: any; - sort?: any; - expires?: any; - initial?: any; - enter?: any; - update?: any; - leave?: any; - children?: any; + items?: any + trail?: any + sort?: any + expires?: any + initial?: any + enter?: any + update?: any + leave?: any + children?: any // Internal props - keys?: any; - callId?: any; - parentId?: any; + keys?: any + callId?: any + parentId?: any } /** @@ -1205,11 +1209,9 @@ export interface ReservedProps extends ReservedEventProps { */ export type ForwardProps = RawValues< Omit, keyof ReservedProps> ->; +> -const RESERVED_PROPS: { - [key: string]: 1 | undefined; -} = { +const RESERVED_PROPS: Record = { config: 1, from: 1, to: 1, @@ -1246,7 +1248,7 @@ const RESERVED_PROPS: { keys: 1, callId: 1, parentId: 1, -}; +} /** * Extract any properties whose keys are *not* reserved for customizing your @@ -1254,20 +1256,20 @@ const RESERVED_PROPS: { * are reserved for `useSpring` calls, etc. */ function getForwardProps( - props: Props + props: Props, ): ForwardProps | undefined { - const forward: any = {}; + const forward: any = {} - let count = 0; + let count = 0 eachProp(props, (value, prop) => { if (!RESERVED_PROPS[prop]) { - forward[prop] = value; - count++; + forward[prop] = value + count++ } - }); + }) if (count) { - return forward; + return forward } } @@ -1276,38 +1278,38 @@ function getForwardProps( * into the `to` prop. */ export function inferTo(props: T): InferTo { - const to = getForwardProps(props); + const to = getForwardProps(props) if (to) { - const out: any = { to }; - eachProp(props, (val, key) => key in to || (out[key] = val)); - return out; + const out: any = { to } + eachProp(props, (val, key) => key in to || (out[key] = val)) + return out } - return { ...props } as any; + return { ...props } as any } export function isAsyncTo(to: any) { - return is.fun(to) || (is.arr(to) && is.obj(to[0])); + return is.fun(to) || (is.arr(to) && is.obj(to[0])) } export type AnimatedType = Function & { create: ( from: any, - goal?: any + goal?: any, ) => T extends ReadonlyArray ? AnimatedArray - : AnimatedValue; -}; + : AnimatedValue +} /** Return the `Animated` node constructor for a given value */ export function getAnimatedType(value: any): AnimatedType { - const parentNode = getAnimated(value); + const parentNode = getAnimated(value) return parentNode ? (parentNode.constructor as any) : is.arr(value) ? AnimatedArray : isAnimatedString(value) ? AnimatedString - : AnimatedValue; + : AnimatedValue } /** Detach `ctrl` from `ctrl.ref` and (optionally) the given `ref` */ diff --git a/spring/src/withAnimated.tsx b/spring/src/withAnimated.ts similarity index 57% rename from spring/src/withAnimated.tsx rename to spring/src/withAnimated.ts index a4e474f..4efe76f 100644 --- a/spring/src/withAnimated.tsx +++ b/spring/src/withAnimated.ts @@ -1,89 +1,93 @@ -import { Dynamic } from "solid-js/web"; +import { Dynamic } from 'solid-js/web' import { children, createComponent, createRenderEffect, onCleanup, -} from "solid-js"; -import { AnimatedObject } from "./AnimatedObject"; -import { TreeContext } from "./context"; -import { HostConfig } from "./createHost"; +} from 'solid-js' +import { AnimatedObject } from './AnimatedObject' +import { TreeContext } from './context' +import { type HostConfig } from './createHost' import { addFluidObserver, - FluidEvent, - FluidValue, + type FluidEvent, + type FluidValue, removeFluidObserver, -} from "./fluids"; -import { each } from "./utils"; -import { raf } from "./rafz"; +} from './fluids' +import { each } from './utils' +import { raf } from './rafz' -export type AnimatableComponent = string; +export type AnimatableComponent = string // Shout out to @Otonashi & @Alex Lohr: https://discord.com/channels/722131463138705510/817960620736380928/961505601039523880 export const withAnimated = (Component: string, host: HostConfig) => { return (props: any) => { const c = children(() => - createComponent(Dynamic, { component: Component, ...props }) - ); - const instanceRef: Element = c() as any; - const [_props, deps] = getAnimatedState(props, host); + createComponent(Dynamic, { component: Component, ...props }), + ) + const instanceRef: Element = c() as any + const [_props, deps] = getAnimatedState(props, host) const callback = () => { const didUpdate = instanceRef ? host.applyAnimatedValues(instanceRef, _props.getValue(true)) - : false; + : false // Re-render the component when native updates fail. if (didUpdate === false) { // forceUpdate() } - }; + } - const observer = new PropsObserver(callback, deps); + const observer = new PropsObserver(callback, deps) createRenderEffect(() => { // Observe the latest dependencies. - each(deps, (dep) => addFluidObserver(dep, observer)); + each(deps, (dep) => addFluidObserver(dep, observer)) // if (lastObserver) { // each(observer.deps, (dep) => removeFluidObserver(dep, observer)); // raf.cancel(observer.update); // } - }); - callback(); + }) + callback() onCleanup(() => { - each(observer.deps, (dep) => removeFluidObserver(dep, observer)); - }); + each(observer.deps, (dep) => removeFluidObserver(dep, observer)) + }) - return c; - }; -}; + return c + } +} class PropsObserver { - constructor(readonly update: () => void, readonly deps: Set) {} + constructor( + readonly update: () => void, + readonly deps: Set, + ) {} eventObserved(event: FluidEvent) { - if (event.type == "change") { - raf.write(this.update); + if (event.type == 'change') { + raf.write(this.update) } } } -type AnimatedState = [props: AnimatedObject, dependencies: Set]; +type AnimatedState = [props: AnimatedObject, dependencies: Set] function getAnimatedState(props: any, host: HostConfig): AnimatedState { - const dependencies = new Set(); - TreeContext.dependencies = dependencies; + const dependencies = new Set() + TreeContext.dependencies = dependencies // Search the style for dependencies. - if (props.style) + if (props.style) { props = { ...props, style: host.createAnimatedStyle(props.style), - }; + } + } // Search the props for dependencies. - props = new AnimatedObject(props); + props = new AnimatedObject(props) - TreeContext.dependencies = null; - return [props, dependencies]; + TreeContext.dependencies = null + return [props, dependencies] } From a50ea9f0cf3afcab5e6e55eb24f12ddcc728f3e2 Mon Sep 17 00:00:00 2001 From: Garth Williams Date: Sat, 22 Jul 2023 18:57:28 +0200 Subject: [PATCH 3/5] Clear type and eslint errors --- pnpm-lock.yaml | 100 ++++++++++++++---------------- spring/.eslintrc.cjs | 8 +++ spring/package.json | 16 ++--- spring/src/AnimatedArray.ts | 6 +- spring/src/AnimatedStyle.ts | 1 + spring/src/Animation.ts | 1 + spring/src/AnimationConfig.ts | 3 +- spring/src/FrameLoop.ts | 3 +- spring/src/SpringValue.ts | 3 +- spring/src/createInterpolator.ts | 3 +- spring/src/globals.ts | 2 +- spring/src/solid/createSpring.ts | 26 ++++---- spring/src/solid/createSprings.ts | 11 ++-- spring/src/utils.ts | 73 +++++++++++----------- 14 files changed, 131 insertions(+), 125 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 32f9cef..2c883aa 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -49,11 +49,11 @@ importers: specifier: ^15.1.0 version: 15.1.0(rollup@3.26.3) '@typescript-eslint/eslint-plugin': - specifier: ^6.0.0 - version: 6.0.0(@typescript-eslint/parser@6.0.0)(eslint@8.45.0)(typescript@5.1.6) + specifier: ^6.1.0 + version: 6.1.0(@typescript-eslint/parser@6.1.0)(eslint@8.45.0)(typescript@5.1.6) '@typescript-eslint/parser': - specifier: ^6.0.0 - version: 6.0.0(eslint@8.45.0)(typescript@5.1.6) + specifier: ^6.1.0 + version: 6.1.0(eslint@8.45.0)(typescript@5.1.6) esbuild: specifier: ^0.18.15 version: 0.18.15 @@ -627,8 +627,8 @@ packages: eslint-visitor-keys: 3.4.1 dev: true - /@eslint-community/regexpp@4.5.1: - resolution: {integrity: sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==} + /@eslint-community/regexpp@4.6.0: + resolution: {integrity: sha512-uiPeRISaglZnaZk8vwrjQZ1CxogZeY/4IYft6gBOTqu1WhVXWmCmZMWxUv2Q/pxSvPdp1JPaO62kLOcOkMqWrw==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true @@ -753,7 +753,7 @@ packages: engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} dependencies: cross-spawn: 7.0.3 - fast-glob: 3.3.0 + fast-glob: 3.3.1 is-glob: 4.0.3 open: 9.1.0 picocolors: 1.0.0 @@ -882,8 +882,8 @@ packages: resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} dev: true - /@typescript-eslint/eslint-plugin@6.0.0(@typescript-eslint/parser@6.0.0)(eslint@8.45.0)(typescript@5.1.6): - resolution: {integrity: sha512-xuv6ghKGoiq856Bww/yVYnXGsKa588kY3M0XK7uUW/3fJNNULKRfZfSBkMTSpqGG/8ZCXCadfh8G/z/B4aqS/A==} + /@typescript-eslint/eslint-plugin@6.1.0(@typescript-eslint/parser@6.1.0)(eslint@8.45.0)(typescript@5.1.6): + resolution: {integrity: sha512-qg7Bm5TyP/I7iilGyp6DRqqkt8na00lI6HbjWZObgk3FFSzH5ypRwAHXJhJkwiRtTcfn+xYQIMOR5kJgpo6upw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -893,15 +893,14 @@ packages: typescript: optional: true dependencies: - '@eslint-community/regexpp': 4.5.1 - '@typescript-eslint/parser': 6.0.0(eslint@8.45.0)(typescript@5.1.6) - '@typescript-eslint/scope-manager': 6.0.0 - '@typescript-eslint/type-utils': 6.0.0(eslint@8.45.0)(typescript@5.1.6) - '@typescript-eslint/utils': 6.0.0(eslint@8.45.0)(typescript@5.1.6) - '@typescript-eslint/visitor-keys': 6.0.0 + '@eslint-community/regexpp': 4.6.0 + '@typescript-eslint/parser': 6.1.0(eslint@8.45.0)(typescript@5.1.6) + '@typescript-eslint/scope-manager': 6.1.0 + '@typescript-eslint/type-utils': 6.1.0(eslint@8.45.0)(typescript@5.1.6) + '@typescript-eslint/utils': 6.1.0(eslint@8.45.0)(typescript@5.1.6) + '@typescript-eslint/visitor-keys': 6.1.0 debug: 4.3.4 eslint: 8.45.0 - grapheme-splitter: 1.0.4 graphemer: 1.4.0 ignore: 5.2.4 natural-compare: 1.4.0 @@ -913,8 +912,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@6.0.0(eslint@8.45.0)(typescript@5.1.6): - resolution: {integrity: sha512-TNaufYSPrr1U8n+3xN+Yp9g31vQDJqhXzzPSHfQDLcaO4tU+mCfODPxCwf4H530zo7aUBE3QIdxCXamEnG04Tg==} + /@typescript-eslint/parser@6.1.0(eslint@8.45.0)(typescript@5.1.6): + resolution: {integrity: sha512-hIzCPvX4vDs4qL07SYzyomamcs2/tQYXg5DtdAfj35AyJ5PIUqhsLf4YrEIFzZcND7R2E8tpQIZKayxg8/6Wbw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -923,10 +922,10 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.0.0 - '@typescript-eslint/types': 6.0.0 - '@typescript-eslint/typescript-estree': 6.0.0(typescript@5.1.6) - '@typescript-eslint/visitor-keys': 6.0.0 + '@typescript-eslint/scope-manager': 6.1.0 + '@typescript-eslint/types': 6.1.0 + '@typescript-eslint/typescript-estree': 6.1.0(typescript@5.1.6) + '@typescript-eslint/visitor-keys': 6.1.0 debug: 4.3.4 eslint: 8.45.0 typescript: 5.1.6 @@ -942,16 +941,16 @@ packages: '@typescript-eslint/visitor-keys': 5.62.0 dev: true - /@typescript-eslint/scope-manager@6.0.0: - resolution: {integrity: sha512-o4q0KHlgCZTqjuaZ25nw5W57NeykZT9LiMEG4do/ovwvOcPnDO1BI5BQdCsUkjxFyrCL0cSzLjvIMfR9uo7cWg==} + /@typescript-eslint/scope-manager@6.1.0: + resolution: {integrity: sha512-AxjgxDn27hgPpe2rQe19k0tXw84YCOsjDJ2r61cIebq1t+AIxbgiXKvD4999Wk49GVaAcdJ/d49FYel+Pp3jjw==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.0.0 - '@typescript-eslint/visitor-keys': 6.0.0 + '@typescript-eslint/types': 6.1.0 + '@typescript-eslint/visitor-keys': 6.1.0 dev: true - /@typescript-eslint/type-utils@6.0.0(eslint@8.45.0)(typescript@5.1.6): - resolution: {integrity: sha512-ah6LJvLgkoZ/pyJ9GAdFkzeuMZ8goV6BH7eC9FPmojrnX9yNCIsfjB+zYcnex28YO3RFvBkV6rMV6WpIqkPvoQ==} + /@typescript-eslint/type-utils@6.1.0(eslint@8.45.0)(typescript@5.1.6): + resolution: {integrity: sha512-kFXBx6QWS1ZZ5Ni89TyT1X9Ag6RXVIVhqDs0vZE/jUeWlBv/ixq2diua6G7ece6+fXw3TvNRxP77/5mOMusx2w==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -960,8 +959,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.0.0(typescript@5.1.6) - '@typescript-eslint/utils': 6.0.0(eslint@8.45.0)(typescript@5.1.6) + '@typescript-eslint/typescript-estree': 6.1.0(typescript@5.1.6) + '@typescript-eslint/utils': 6.1.0(eslint@8.45.0)(typescript@5.1.6) debug: 4.3.4 eslint: 8.45.0 ts-api-utils: 1.0.1(typescript@5.1.6) @@ -975,8 +974,8 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/types@6.0.0: - resolution: {integrity: sha512-Zk9KDggyZM6tj0AJWYYKgF0yQyrcnievdhG0g5FqyU3Y2DRxJn4yWY21sJC0QKBckbsdKKjYDV2yVrrEvuTgxg==} + /@typescript-eslint/types@6.1.0: + resolution: {integrity: sha512-+Gfd5NHCpDoHDOaU/yIF3WWRI2PcBRKKpP91ZcVbL0t5tQpqYWBs3z/GGhvU+EV1D0262g9XCnyqQh19prU0JQ==} engines: {node: ^16.0.0 || >=18.0.0} dev: true @@ -1001,8 +1000,8 @@ packages: - supports-color dev: true - /@typescript-eslint/typescript-estree@6.0.0(typescript@5.1.6): - resolution: {integrity: sha512-2zq4O7P6YCQADfmJ5OTDQTP3ktajnXIRrYAtHM9ofto/CJZV3QfJ89GEaM2BNGeSr1KgmBuLhEkz5FBkS2RQhQ==} + /@typescript-eslint/typescript-estree@6.1.0(typescript@5.1.6): + resolution: {integrity: sha512-nUKAPWOaP/tQjU1IQw9sOPCDavs/iU5iYLiY/6u7gxS7oKQoi4aUxXS1nrrVGTyBBaGesjkcwwHkbkiD5eBvcg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -1010,8 +1009,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.0.0 - '@typescript-eslint/visitor-keys': 6.0.0 + '@typescript-eslint/types': 6.1.0 + '@typescript-eslint/visitor-keys': 6.1.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -1042,8 +1041,8 @@ packages: - typescript dev: true - /@typescript-eslint/utils@6.0.0(eslint@8.45.0)(typescript@5.1.6): - resolution: {integrity: sha512-SOr6l4NB6HE4H/ktz0JVVWNXqCJTOo/mHnvIte1ZhBQ0Cvd04x5uKZa3zT6tiodL06zf5xxdK8COiDvPnQ27JQ==} + /@typescript-eslint/utils@6.1.0(eslint@8.45.0)(typescript@5.1.6): + resolution: {integrity: sha512-wp652EogZlKmQoMS5hAvWqRKplXvkuOnNzZSE0PVvsKjpexd/XznRVHAtrfHFYmqaJz0DFkjlDsGYC9OXw+OhQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -1051,11 +1050,10 @@ packages: '@eslint-community/eslint-utils': 4.4.0(eslint@8.45.0) '@types/json-schema': 7.0.12 '@types/semver': 7.5.0 - '@typescript-eslint/scope-manager': 6.0.0 - '@typescript-eslint/types': 6.0.0 - '@typescript-eslint/typescript-estree': 6.0.0(typescript@5.1.6) + '@typescript-eslint/scope-manager': 6.1.0 + '@typescript-eslint/types': 6.1.0 + '@typescript-eslint/typescript-estree': 6.1.0(typescript@5.1.6) eslint: 8.45.0 - eslint-scope: 5.1.1 semver: 7.5.4 transitivePeerDependencies: - supports-color @@ -1070,11 +1068,11 @@ packages: eslint-visitor-keys: 3.4.1 dev: true - /@typescript-eslint/visitor-keys@6.0.0: - resolution: {integrity: sha512-cvJ63l8c0yXdeT5POHpL0Q1cZoRcmRKFCtSjNGJxPkcP571EfZMcNbzWAc7oK3D1dRzm/V5EwtkANTZxqvuuUA==} + /@typescript-eslint/visitor-keys@6.1.0: + resolution: {integrity: sha512-yQeh+EXhquh119Eis4k0kYhj9vmFzNpbhM3LftWQVwqVjipCkwHBQOZutcYW+JVkjtTG9k8nrZU1UoNedPDd1A==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.0.0 + '@typescript-eslint/types': 6.1.0 eslint-visitor-keys: 3.4.1 dev: true @@ -1618,7 +1616,7 @@ packages: hasBin: true dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.45.0) - '@eslint-community/regexpp': 4.5.1 + '@eslint-community/regexpp': 4.6.0 '@eslint/eslintrc': 2.1.0 '@eslint/js': 8.44.0 '@humanwhocodes/config-array': 0.11.10 @@ -1738,8 +1736,8 @@ packages: resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} dev: true - /fast-glob@3.3.0: - resolution: {integrity: sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==} + /fast-glob@3.3.1: + resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} engines: {node: '>=8.6.0'} dependencies: '@nodelib/fs.stat': 2.0.5 @@ -1941,7 +1939,7 @@ packages: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.3.0 + fast-glob: 3.3.1 ignore: 5.2.4 merge2: 1.4.1 slash: 3.0.0 @@ -1953,10 +1951,6 @@ packages: get-intrinsic: 1.2.1 dev: true - /grapheme-splitter@1.0.4: - resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} - dev: true - /graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} dev: true diff --git a/spring/.eslintrc.cjs b/spring/.eslintrc.cjs index 6f56058..ef81479 100644 --- a/spring/.eslintrc.cjs +++ b/spring/.eslintrc.cjs @@ -33,6 +33,7 @@ module.exports = { 'error', { fixStyle: 'inline-type-imports' }, ], + '@typescript-eslint/dot-notation': 'warn', '@typescript-eslint/explicit-function-return-type': 'off', '@typescript-eslint/explicit-module-boundary-types': 'off', '@typescript-eslint/no-confusing-void-expression': [ @@ -43,6 +44,10 @@ module.exports = { '@typescript-eslint/no-empty-interface': 'off', '@typescript-eslint/no-explicit-any': 'warn', '@typescript-eslint/no-floating-promises': 'warn', + '@typescript-eslint/no-invalid-void-type': 'warn', + '@typescript-eslint/no-namespace': 'warn', + '@typescript-eslint/no-non-null-assertion': 'warn', + '@typescript-eslint/no-redundant-type-constituents': 'warn', '@typescript-eslint/no-throw-literal': 'off', '@typescript-eslint/no-unnecessary-boolean-literal-compare': 'off', '@typescript-eslint/no-unnecessary-condition': 'off', @@ -60,11 +65,14 @@ module.exports = { '@typescript-eslint/restrict-plus-operands': 'warn', '@typescript-eslint/restrict-template-expressions': 'off', '@typescript-eslint/unbound-method': 'off', + '@typescript-eslint/unified-signatures': 'warn', curly: ['error', 'all'], 'linebreak-style': ['error', 'unix'], 'no-console': 'off', 'no-eval': 'error', 'no-implied-eval': 'error', + 'no-prototype-builtins': 'warn', + 'prefer-rest-params': 'warn', 'prefer-template': 'error', 'require-atomic-updates': 'off', }, diff --git a/spring/package.json b/spring/package.json index 94ea339..156a86f 100644 --- a/spring/package.json +++ b/spring/package.json @@ -43,21 +43,21 @@ "prettier": "prettier --write \"src/**/*.{js,json,ts,tsx,css,scss,html}\"" }, "devDependencies": { - "prettier": "^3.0.0", - "rimraf": "^5.0.1", - "rollup-plugin-dts": "^5.3.0", - "solid-js": "^1.7.8", "@rollup/plugin-alias": "^5.0.0", "@rollup/plugin-commonjs": "^25.0.3", "@rollup/plugin-json": "^6.0.0", "@rollup/plugin-node-resolve": "^15.1.0", + "@typescript-eslint/eslint-plugin": "^6.1.0", + "@typescript-eslint/parser": "^6.1.0", "esbuild": "^0.18.15", - "rollup-plugin-esbuild": "^5.0.0", - "@typescript-eslint/eslint-plugin": "^6.0.0", - "@typescript-eslint/parser": "^6.0.0", "eslint-config-prettier": "^8.8.0", "eslint-plugin-prettier": "^5.0.0", - "eslint-plugin-solid": "^0.12.1" + "eslint-plugin-solid": "^0.12.1", + "prettier": "^3.0.0", + "rimraf": "^5.0.1", + "rollup-plugin-dts": "^5.3.0", + "rollup-plugin-esbuild": "^5.0.0", + "solid-js": "^1.7.8" }, "peerDependencies": { "solid-js": "^1.7.8" diff --git a/spring/src/AnimatedArray.ts b/spring/src/AnimatedArray.ts index 3c6c479..2a8f3fd 100644 --- a/spring/src/AnimatedArray.ts +++ b/spring/src/AnimatedArray.ts @@ -11,9 +11,9 @@ export class AnimatedArray< T extends ReadonlyArray = Value[], > extends AnimatedObject { protected declare source: Source - constructor(source: T) { - super(source) - } + // constructor(source: T) { + // super(source) + // } /** @internal */ static create>(source: T) { diff --git a/spring/src/AnimatedStyle.ts b/spring/src/AnimatedStyle.ts index e561e9e..e82e23f 100644 --- a/spring/src/AnimatedStyle.ts +++ b/spring/src/AnimatedStyle.ts @@ -88,6 +88,7 @@ export class AnimatedStyle extends AnimatedObject { inputs.push([value || '']) transforms.push((transform: string) => [transform, transform === '']) } else if (domTransforms.test(key)) { + // eslint-disable-next-line @typescript-eslint/no-dynamic-delete delete style[key] if (is.und(value)) { return diff --git a/spring/src/Animation.ts b/spring/src/Animation.ts index 4ccb934..13e434e 100644 --- a/spring/src/Animation.ts +++ b/spring/src/Animation.ts @@ -5,6 +5,7 @@ import { AnimationConfig, type PickEventFns, type SpringProps } from './utils' const emptyArray: readonly any[] = [] /** An animation being executed by the frameloop */ +// eslint-disable-next-line @typescript-eslint/no-unsafe-declaration-merging export class Animation { changed = false values: readonly AnimatedValue[] = emptyArray diff --git a/spring/src/AnimationConfig.ts b/spring/src/AnimationConfig.ts index f6bfc7d..d41ed53 100644 --- a/spring/src/AnimationConfig.ts +++ b/spring/src/AnimationConfig.ts @@ -164,7 +164,8 @@ export function mergeConfig( } } - let { mass, frequency, damping } = config + const { mass } = config + let { frequency, damping } = config if (!is.und(frequency)) { if (frequency < 0.01) { frequency = 0.01 diff --git a/spring/src/FrameLoop.ts b/spring/src/FrameLoop.ts index 05d08d8..116b688 100644 --- a/spring/src/FrameLoop.ts +++ b/spring/src/FrameLoop.ts @@ -93,8 +93,7 @@ function startUnsafely(animation: OpaqueAnimation) { function advance(dt: number) { const nextFrame = prevFrame - for (let i = 0; i < currentFrame.length; i++) { - const animation = currentFrame[i] + for (const animation of currentFrame) { priority = animation.priority // Animations may go idle before advancing. diff --git a/spring/src/SpringValue.ts b/spring/src/SpringValue.ts index b934829..4ce04a8 100644 --- a/spring/src/SpringValue.ts +++ b/spring/src/SpringValue.ts @@ -179,7 +179,8 @@ export class SpringValue extends FrameValue { let changed = false const anim = this.animation - let { config, toValues } = anim + const { config } = anim + let { toValues } = anim const payload = getPayload(anim.to) if (!payload && hasFluidValue(anim.to)) { diff --git a/spring/src/createInterpolator.ts b/spring/src/createInterpolator.ts index e7551aa..721bbd1 100644 --- a/spring/src/createInterpolator.ts +++ b/spring/src/createInterpolator.ts @@ -110,7 +110,8 @@ function interpolate( } function findRange(input: number, inputRange: readonly number[]) { - for (var i = 1; i < inputRange.length - 1; ++i) { + let i = 1 + for (; i < inputRange.length - 1; ++i) { if (inputRange[i] >= input) { break } diff --git a/spring/src/globals.ts b/spring/src/globals.ts index f9b6272..51a14e8 100644 --- a/spring/src/globals.ts +++ b/spring/src/globals.ts @@ -232,7 +232,7 @@ export const variableToRgba = (input: string): string => { const parseCSSVariable = (current: string) => { const match = cssVariableRegex.exec(current) if (!match) { - return [,] + return [undefined, undefined] } const [, token, fallback] = match diff --git a/spring/src/solid/createSpring.ts b/spring/src/solid/createSpring.ts index a395cf3..a49bde0 100644 --- a/spring/src/solid/createSpring.ts +++ b/spring/src/solid/createSpring.ts @@ -14,20 +14,20 @@ import { createSprings } from './createSprings' /** * The props that `useSpring` recognizes. */ -export type CreateSpringProps = unknown & +export type CreateSpringProps = PickAnimated extends infer State - ? Remap< - ControllerUpdate & { - // previously: ControllerUpdate & { - /** - * Used to access the imperative API. - * - * When defined, the render animation won't auto-start. - */ - ref?: SpringRef // previously: ref?: SpringRef - } - > - : never + ? Remap< + ControllerUpdate & { + // previously: ControllerUpdate & { + /** + * Used to access the imperative API. + * + * When defined, the render animation won't auto-start. + */ + ref?: SpringRef // previously: ref?: SpringRef + } + > + : never export function createSpring( props: () => diff --git a/spring/src/solid/createSprings.ts b/spring/src/solid/createSprings.ts index a684a24..d65a60e 100644 --- a/spring/src/solid/createSprings.ts +++ b/spring/src/solid/createSprings.ts @@ -27,7 +27,7 @@ import { } from 'solid-js' import { declareUpdate } from '../SpringValue' -export type CreateSpringsProps = unknown & +export type CreateSpringsProps = ControllerUpdate & { ref?: SpringRefType } @@ -52,8 +52,7 @@ export function createSprings( ): Accessor>[]> & { ref: SpringRefType> } { - const _lengthFn = lengthFn - lengthFn = is.fun(lengthFn) ? lengthFn : () => _lengthFn as number + const _lengthFn = is.fun(lengthFn) ? lengthFn : () => lengthFn const propsFn = is.fun(props) ? props : undefined const ref = SpringRef() @@ -98,7 +97,7 @@ export function createSprings( // Create new controllers when "length" increases, and destroy // the affected controllers when "length" decreases. createEffect(() => { - const length = lengthFn() + const length = _lengthFn() // Clean up any unused controllers each(ctrls.slice(length, prevLength), (ctrl) => { detachRefs(ctrl, ref) @@ -110,12 +109,12 @@ export function createSprings( }) // Cache old controllers to dispose in the commit phase. - const prevLength = lengthFn() || 0 + const prevLength = _lengthFn() || 0 const [update, setUpdate] = createSignal(Symbol()) // Update existing controllers when "deps" are changed. createRenderEffect(() => { - const length = lengthFn() + const length = _lengthFn() declareUpdates(0, Math.min(prevLength, length)) }) diff --git a/spring/src/utils.ts b/spring/src/utils.ts index d4926d0..26b2c41 100644 --- a/spring/src/utils.ts +++ b/spring/src/utils.ts @@ -95,31 +95,32 @@ export type TransitionKey = 'initial' | 'enter' | 'update' | 'leave' /** * Extract a union of animated values from a set of `useTransition` props. */ -export type TransitionValues = unknown & - ForwardProps< - ObjectFromUnion< - Constrain< - ObjectType< - Props[TransitionKey & keyof Props] extends infer T - ? T extends ReadonlyArray - ? Element - : T extends (...args: any[]) => infer Return - ? Return extends ReadonlyArray - ? ReturnElement - : Return - : T - : never - >, - {} - > +export type TransitionValues = ForwardProps< + ObjectFromUnion< + Constrain< + ObjectType< + Props[TransitionKey & keyof Props] extends infer T + ? T extends ReadonlyArray + ? Element + : T extends (...args: any[]) => infer Return + ? Return extends ReadonlyArray + ? ReturnElement + : Return + : T + : never + >, + {} > > +> /** * Pick the values of the `to` prop. Forward props are *not* included. */ -type ToValues = unknown & - (AndForward extends true ? ForwardProps : unknown) & +type ToValues< + Props extends object, + AndForward = true, +> = (AndForward extends true ? ForwardProps : unknown) & (Props extends { to?: any } ? Exclude> extends infer To ? ForwardProps<[To] extends [object] ? To : Partial>> @@ -133,20 +134,21 @@ type ToValues = unknown & * * ...as well as any forward props. */ -export type PickAnimated = unknown & - ([Props] extends [Any] - ? Lookup // Preserve "any" instead of resolving to "{}" - : [object] extends [Props] - ? Lookup - : ObjectFromUnion< - Props extends { from: infer From } // extract prop from the `from` prop if it exists - ? From extends () => any - ? ReturnType - : ObjectType - : TransitionKey & keyof Props extends never - ? ToValues - : TransitionValues - >) +export type PickAnimated = [Props] extends [ + Any, +] + ? Lookup // Preserve "any" instead of resolving to "{}" + : [object] extends [Props] + ? Lookup + : ObjectFromUnion< + Props extends { from: infer From } // extract prop from the `from` prop if it exists + ? From extends () => any + ? ReturnType + : ObjectType + : TransitionKey & keyof Props extends never + ? ToValues + : TransitionValues + > /** Return a union type of every key whose `T` value is incompatible with its `U` value */ type InvalidKeys = { @@ -733,7 +735,7 @@ export interface ControllerProps< export type ControllerUpdate< State extends Lookup = Lookup, Item = undefined, -> = unknown & ToProps & ControllerProps +> = ToProps & ControllerProps /** A value that any `SpringValue` or `Controller` can animate to. */ export type SpringTo = @@ -941,8 +943,7 @@ export type NativeRaf = (cb: () => void) => void export const is = { arr: Array.isArray as IsType, - obj: (a: T & any): a is PlainObject => - !!a && a.constructor.name === 'Object', + obj: (a: T): a is PlainObject => !!a && a.constructor.name === 'Object', fun: ((a: unknown) => typeof a === 'function') as IsType, str: (a: unknown): a is string => typeof a === 'string', num: (a: unknown): a is number => typeof a === 'number', From 10e8e8e3764ae5e20535b7612b377e8d8d98c36b Mon Sep 17 00:00:00 2001 From: Garth Williams Date: Sun, 23 Jul 2023 11:05:23 +0200 Subject: [PATCH 4/5] Fix children prop --- spring/src/createHost.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring/src/createHost.ts b/spring/src/createHost.ts index e666b00..af6bdaa 100644 --- a/spring/src/createHost.ts +++ b/spring/src/createHost.ts @@ -80,7 +80,7 @@ export type WithAnimated = ((Component: any) => any) & { } /** The props of an `animated()` component */ export type AnimatedProps = { - [P in keyof Props]: P extends 'ref' | 'key' + [P in keyof Props]: P extends 'ref' | 'key' | 'children' ? Props[P] : AnimatedProp } From a5a7aab7c94e32d9f61998091d376df176d4524b Mon Sep 17 00:00:00 2001 From: Garth Williams Date: Sun, 23 Jul 2023 11:17:20 +0200 Subject: [PATCH 5/5] Fix CreateSpringProps type where State must extend Lookup --- spring/src/solid/createSpring.ts | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/spring/src/solid/createSpring.ts b/spring/src/solid/createSpring.ts index a49bde0..0681751 100644 --- a/spring/src/solid/createSpring.ts +++ b/spring/src/solid/createSpring.ts @@ -8,6 +8,7 @@ import { type Remap, type SpringValues, type Valid, + type Lookup, } from '../utils' import { createSprings } from './createSprings' @@ -16,17 +17,18 @@ import { createSprings } from './createSprings' */ export type CreateSpringProps = PickAnimated extends infer State - ? Remap< - ControllerUpdate & { - // previously: ControllerUpdate & { - /** - * Used to access the imperative API. - * - * When defined, the render animation won't auto-start. - */ - ref?: SpringRef // previously: ref?: SpringRef - } - > + ? State extends Lookup + ? Remap< + ControllerUpdate & { + /** + * Used to access the imperative API. + * + * When defined, the render animation won't auto-start. + */ + ref?: SpringRef + } + > + : never : never export function createSpring(