From 5b7e72e8bc0a104920ae41a63ba067a843400778 Mon Sep 17 00:00:00 2001 From: luzhuang <364439895@qq.com> Date: Mon, 18 Nov 2024 14:32:33 +0800 Subject: [PATCH 01/20] test: fix ci --- pnpm-lock.yaml | 3954 ++++++++++++++++++++++++++++++------------------ 1 file changed, 2509 insertions(+), 1445 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 87f849986a..f304b354ad 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16,76 +16,61 @@ importers: version: 11.0.0 '@rollup/plugin-commonjs': specifier: ^17.0.0 - version: 17.1.0(rollup@2.79.1) + version: 17.1.0(rollup@2.79.2) '@rollup/plugin-inject': specifier: ^4.0.2 - version: 4.0.4(rollup@2.79.1) + version: 4.0.4(rollup@2.79.2) '@rollup/plugin-node-resolve': specifier: ^11.0.1 - version: 11.2.1(rollup@2.79.1) + version: 11.2.1(rollup@2.79.2) '@rollup/plugin-replace': specifier: ^2.3.4 - version: 2.4.2(rollup@2.79.1) + version: 2.4.2(rollup@2.79.2) '@swc/core': specifier: ^1.3.49 - version: 1.3.70(@swc/helpers@0.5.1) + version: 1.7.36(@swc/helpers@0.5.13) '@swc/helpers': specifier: ^0.5.1 - version: 0.5.1 - '@types/chai': - specifier: ^4.3.1 - version: 4.3.5 - '@types/chai-spies': - specifier: ^1.0.3 - version: 1.0.3 - '@types/mocha': - specifier: ^8.0.0 - version: 8.2.3 + version: 0.5.13 '@types/node': specifier: ^18.7.16 - version: 18.17.0 + version: 18.19.56 '@types/webxr': specifier: latest - version: 0.5.16 + version: 0.5.20 '@typescript-eslint/eslint-plugin': specifier: ^6.1.0 - version: 6.2.0(@typescript-eslint/parser@6.2.0(eslint@8.46.0)(typescript@5.1.6))(eslint@8.46.0)(typescript@5.1.6) + version: 6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1)(typescript@5.6.3) '@typescript-eslint/parser': specifier: ^6.1.0 - version: 6.2.0(eslint@8.46.0)(typescript@5.1.6) + version: 6.21.0(eslint@8.57.1)(typescript@5.6.3) + '@vitest/coverage-v8': + specifier: 2.1.3 + version: 2.1.3(@vitest/browser@2.1.3(@vitest/spy@2.1.3)(playwright@1.48.1)(typescript@5.6.3)(vite@5.4.9(@types/node@18.19.56)(sass@1.80.2))(vitest@2.1.3))(vitest@2.1.3(@types/node@18.19.56)(@vitest/browser@2.1.3)(msw@2.4.11(typescript@5.6.3))(sass@1.80.2)) bumpp: specifier: ^9.5.2 - version: 9.5.2 - chai: - specifier: ^4.3.6 - version: 4.3.7 - chai-spies: - specifier: ^1.0.0 - version: 1.0.0(chai@4.3.7) + version: 9.7.1(magicast@0.3.5) cross-env: specifier: ^5.2.0 version: 5.2.1 cypress: specifier: ^12.17.1 - version: 12.17.1 + version: 12.17.4 cypress-recurse: specifier: ^1.23.0 - version: 1.23.0 + version: 1.35.3 electron: specifier: ^13 version: 13.6.9 eslint: specifier: ^8.44.0 - version: 8.46.0 + version: 8.57.1 eslint-config-prettier: specifier: ^8.8.0 - version: 8.9.0(eslint@8.46.0) + version: 8.10.0(eslint@8.57.1) eslint-plugin-prettier: specifier: ^5.0.0 - version: 5.0.0(eslint-config-prettier@8.9.0(eslint@8.46.0))(eslint@8.46.0)(prettier@3.0.0) - floss: - specifier: ^5.0.1 - version: 5.0.1(electron@13.6.9)(nyc@15.1.0) + version: 5.2.1(eslint-config-prettier@8.10.0(eslint@8.57.1))(eslint@8.57.1)(prettier@3.3.3) fs-extra: specifier: ^10.1.0 version: 10.1.0 @@ -100,34 +85,40 @@ importers: version: 15.1.0 odiff-bin: specifier: ^2.5.0 - version: 2.5.0 + version: 2.6.1 + playwright: + specifier: ^1.48.1 + version: 1.48.1 prettier: specifier: ^3.0.0 - version: 3.0.0 + version: 3.3.3 rollup: specifier: ^2.36.1 - version: 2.79.1 + version: 2.79.2 rollup-plugin-glslify: specifier: ^1.2.0 version: 1.3.1 rollup-plugin-jscc: specifier: ^2.0.0 - version: 2.0.0(rollup@2.79.1) + version: 2.0.0(rollup@2.79.2) rollup-plugin-modify: specifier: ^3.0.0 version: 3.0.0 rollup-plugin-serve: specifier: ^1.1.0 - version: 1.1.0 + version: 1.1.1 rollup-plugin-swc3: specifier: ^0.10.1 - version: 0.10.1(@swc/core@1.3.70(@swc/helpers@0.5.1))(rollup@2.79.1) + version: 0.10.4(@swc/core@1.7.36(@swc/helpers@0.5.13))(rollup@2.79.2) ts-node: specifier: ^10 - version: 10.9.1(@swc/core@1.3.70(@swc/helpers@0.5.1))(@types/node@18.17.0)(typescript@5.1.6) + version: 10.9.2(@swc/core@1.7.36(@swc/helpers@0.5.13))(@types/node@18.19.56)(typescript@5.6.3) typescript: specifier: ^5.1.6 - version: 5.1.6 + version: 5.6.3 + vitest: + specifier: ^2.1.3 + version: 2.1.3(@types/node@18.19.56)(@vitest/browser@2.1.3)(msw@2.4.11(typescript@5.6.3))(sass@1.80.2) e2e: dependencies: @@ -166,10 +157,10 @@ importers: version: 0.7.9 sass: specifier: ^1.55.0 - version: 1.55.0 + version: 1.80.2 vite: - specifier: ^3.1.6 - version: 3.1.6(sass@1.55.0) + specifier: 3.1.6 + version: 3.1.6(sass@1.80.2) packages/core: dependencies: @@ -304,110 +295,104 @@ importers: '@galacean/engine-shader-lab': specifier: workspace:* version: link:../packages/shader-lab + devDependencies: + '@vitest/browser': + specifier: 2.1.3 + version: 2.1.3(@vitest/spy@2.1.3)(playwright@1.48.1)(typescript@5.6.3)(vite@5.4.9(@types/node@22.7.6)(sass@1.80.2))(vitest@2.1.3) packages: - '@aashutoshrathi/word-wrap@1.2.6': - resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} - engines: {node: '>=0.10.0'} - - '@ampproject/remapping@2.2.1': - resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@babel/code-frame@7.22.5': - resolution: {integrity: sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==} + '@babel/code-frame@7.25.7': + resolution: {integrity: sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.22.9': - resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==} + '@babel/compat-data@7.25.8': + resolution: {integrity: sha512-ZsysZyXY4Tlx+Q53XdnOFmqwfB9QDTHYxaZYajWRoBLuLEAwI2UIbtxOjWh/cFaa9IKUlcB+DDuoskLuKu56JA==} engines: {node: '>=6.9.0'} - '@babel/core@7.22.9': - resolution: {integrity: sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w==} + '@babel/core@7.25.8': + resolution: {integrity: sha512-Oixnb+DzmRT30qu9d3tJSQkxuygWm32DFykT4bRoORPa9hZ/L4KhVB/XiRm6KG+roIEM7DBQlmg27kw2HZkdZg==} engines: {node: '>=6.9.0'} - '@babel/generator@7.22.9': - resolution: {integrity: sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==} + '@babel/generator@7.25.7': + resolution: {integrity: sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA==} engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.22.9': - resolution: {integrity: sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-environment-visitor@7.22.5': - resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} + '@babel/helper-compilation-targets@7.25.7': + resolution: {integrity: sha512-DniTEax0sv6isaw6qSQSfV4gVRNtw2rte8HHM45t9ZR0xILaufBRNkpMifCRiAPyvL4ACD6v0gfCwCmtOQaV4A==} engines: {node: '>=6.9.0'} - '@babel/helper-function-name@7.22.5': - resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==} + '@babel/helper-module-imports@7.25.7': + resolution: {integrity: sha512-o0xCgpNmRohmnoWKQ0Ij8IdddjyBFE4T2kagL/x6M3+4zUgc+4qTOUBoNe4XxDskt1HPKO007ZPiMgLDq2s7Kw==} engines: {node: '>=6.9.0'} - '@babel/helper-hoist-variables@7.22.5': - resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-imports@7.22.5': - resolution: {integrity: sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-transforms@7.22.9': - resolution: {integrity: sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==} + '@babel/helper-module-transforms@7.25.7': + resolution: {integrity: sha512-k/6f8dKG3yDz/qCwSM+RKovjMix563SLxQFo0UhRNo239SP6n9u5/eLtKD6EAjwta2JHJ49CsD8pms2HdNiMMQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-simple-access@7.22.5': - resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} + '@babel/helper-simple-access@7.25.7': + resolution: {integrity: sha512-FPGAkJmyoChQeM+ruBGIDyrT2tKfZJO8NcxdC+CWNJi7N8/rZpSxK7yvBJ5O/nF1gfu5KzN7VKG3YVSLFfRSxQ==} engines: {node: '>=6.9.0'} - '@babel/helper-split-export-declaration@7.22.6': - resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} + '@babel/helper-string-parser@7.25.7': + resolution: {integrity: sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==} engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.22.5': - resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} + '@babel/helper-validator-identifier@7.25.7': + resolution: {integrity: sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.22.5': - resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==} + '@babel/helper-validator-option@7.25.7': + resolution: {integrity: sha512-ytbPLsm+GjArDYXJ8Ydr1c/KJuutjF2besPNbIZnZ6MKUxi/uTA22t2ymmA4WFjZFpjiAMO0xuuJPqK2nvDVfQ==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-option@7.22.5': - resolution: {integrity: sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==} + '@babel/helpers@7.25.7': + resolution: {integrity: sha512-Sv6pASx7Esm38KQpF/U/OXLwPPrdGHNKoeblRxgZRLXnAtnkEe4ptJPDtAZM7fBLadbc1Q07kQpSiGQ0Jg6tRA==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.22.6': - resolution: {integrity: sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==} + '@babel/highlight@7.25.7': + resolution: {integrity: sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw==} engines: {node: '>=6.9.0'} - '@babel/highlight@7.22.5': - resolution: {integrity: sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==} - engines: {node: '>=6.9.0'} - - '@babel/parser@7.22.7': - resolution: {integrity: sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==} + '@babel/parser@7.25.8': + resolution: {integrity: sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ==} engines: {node: '>=6.0.0'} hasBin: true - '@babel/runtime@7.22.6': - resolution: {integrity: sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ==} + '@babel/runtime@7.25.7': + resolution: {integrity: sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w==} engines: {node: '>=6.9.0'} - '@babel/template@7.22.5': - resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==} + '@babel/template@7.25.7': + resolution: {integrity: sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.22.8': - resolution: {integrity: sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw==} + '@babel/traverse@7.25.7': + resolution: {integrity: sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==} engines: {node: '>=6.9.0'} - '@babel/types@7.22.5': - resolution: {integrity: sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==} + '@babel/types@7.25.8': + resolution: {integrity: sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg==} engines: {node: '>=6.9.0'} + '@bcoe/v8-coverage@0.2.3': + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + + '@bundled-es-modules/cookie@2.0.0': + resolution: {integrity: sha512-Or6YHg/kamKHpxULAdSqhGqnWFneIXu1NKvvfBBzKGwpVsYuFIQ5aBPHDnnoR3ghW1nvSkALd+EF9iMtY7Vjxw==} + + '@bundled-es-modules/statuses@1.0.1': + resolution: {integrity: sha512-yn7BklA5acgcBr+7w064fGV+SGIFySjCKpqjcWgBAIfrAkY+4GQTJJHQMeT3V/sgz23VTEVV8TtOmkvJAhFVfg==} + + '@bundled-es-modules/tough-cookie@0.1.6': + resolution: {integrity: sha512-dvMHbL464C0zI+Yqxbz6kZ5TOEp7GLW+pry/RWndAR8MJQAXZ2rPmIs8tziTZjeIyhSNZgZbCePtfSbdWqStJw==} + '@choojs/findup@0.2.1': resolution: {integrity: sha512-YstAqNb0MCN8PjdLCDfRsBcGVRN41f3vgLvaI0IrIcBp4AqILRSS0DeWNGkicC+f/zRIPJLc+9RURVSepwvfBw==} hasBin: true @@ -496,34 +481,172 @@ packages: resolution: {integrity: sha512-BrZYyL/6m0ZXz/lDxy/nlVhQz+WF+iPS6qXolEU8atw7h6v1aYkjwJZ63m+bJMBTxDE66X+r2tPS4a/8C82sZw==} engines: {node: '>=8.6'} + '@esbuild/aix-ppc64@0.21.5': + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.21.5': + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm@0.15.18': resolution: {integrity: sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==} engines: {node: '>=12'} cpu: [arm] os: [android] + '@esbuild/android-arm@0.21.5': + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.21.5': + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.21.5': + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.21.5': + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.21.5': + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.21.5': + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.21.5': + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.21.5': + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.21.5': + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-loong64@0.15.18': resolution: {integrity: sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==} engines: {node: '>=12'} cpu: [loong64] os: [linux] + '@esbuild/linux-loong64@0.21.5': + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.21.5': + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.21.5': + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.21.5': + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.21.5': + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.21.5': + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.21.5': + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-x64@0.21.5': + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.21.5': + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.21.5': + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.21.5': + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.21.5': + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + '@eslint-community/eslint-utils@4.4.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 - '@eslint-community/regexpp@4.6.2': - resolution: {integrity: sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==} + '@eslint-community/regexpp@4.11.1': + resolution: {integrity: sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/eslintrc@2.1.1': - resolution: {integrity: sha512-9t7ZA7NGGK8ckelF0PQCfcxIUzs1Md5rrO6U/c+FIQNanea5UZC0wqKXH4vHBccmu4ZJgZ2idtPeW7+Q2npOEA==} + '@eslint/eslintrc@2.1.4': + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@eslint/js@8.46.0': - resolution: {integrity: sha512-a8TLtmPi8xzPkCbp/OGFUo5yhRkHM2Ko9kOWP4znJr0WAhWyThaw3PnwX4vOTWOAMsV2uRt32PPDcEz63esSaA==} + '@eslint/js@8.57.1': + resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} '@fastify/deepmerge@1.3.0': @@ -592,16 +715,42 @@ packages: '@galacean/engine-toolkit@1.3.9': resolution: {integrity: sha512-sxE7QfzH61O9Q1wtwnjIEjcg3n0ZZVz9B6CyqBLOWyWgWsZmefcjZLnnH4HIkvc5ZLNA+gMuJ1ekmwJgfkck+g==} - '@humanwhocodes/config-array@0.11.10': - resolution: {integrity: sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==} + '@humanwhocodes/config-array@0.13.0': + resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} - '@humanwhocodes/object-schema@1.2.1': - resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + '@humanwhocodes/object-schema@2.0.3': + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + deprecated: Use @eslint/object-schema instead + + '@inquirer/confirm@3.2.0': + resolution: {integrity: sha512-oOIwPs0Dvq5220Z8lGL/6LHRTEr9TgLHmiI99Rj1PJ1p1czTys+olrgBqZk4E2qC0YTzeHprxSQmoHioVdJ7Lw==} + engines: {node: '>=18'} + + '@inquirer/core@9.2.1': + resolution: {integrity: sha512-F2VBt7W/mwqEU4bL0RnHNZmC/OxzNx9cOYxHqnXX3MP6ruYvZUZAW9imgN9+h/uBT/oP8Gh888J2OZSbjSeWcg==} + engines: {node: '>=18'} + + '@inquirer/figures@1.0.7': + resolution: {integrity: sha512-m+Trk77mp54Zma6xLkLuY+mvanPxlE4A7yNKs2HBiyZ4UkVs28Mv5c/pgWrHeInx+USHeX/WEPzjrWrcJiQgjw==} + engines: {node: '>=18'} + + '@inquirer/type@1.5.5': + resolution: {integrity: sha512-MzICLu4yS7V8AA61sANROZ9vT1H3ooca5dSmI1FjZkzq7o/koMsRfQSzRtFo+F3Ao4Sf1C0bpLKejpKB/+j6MA==} + engines: {node: '>=18'} + + '@inquirer/type@2.0.0': + resolution: {integrity: sha512-XvJRx+2KR3YXyYtPUUy+qd9i7p+GO9Ko6VIIpWlBrpWwXDv8WLFeHTxz35CfQFUiBMLXlGHhGzys7lqit9gWag==} + engines: {node: '>=18'} + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} '@istanbuljs/load-nyc-config@1.1.0': resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} @@ -611,30 +760,23 @@ packages: resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} - '@jridgewell/gen-mapping@0.3.3': - resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} - engines: {node: '>=6.0.0'} - - '@jridgewell/resolve-uri@3.1.0': - resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} + '@jridgewell/gen-mapping@0.3.5': + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} engines: {node: '>=6.0.0'} - '@jridgewell/resolve-uri@3.1.1': - resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} - '@jridgewell/set-array@1.1.2': - resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} engines: {node: '>=6.0.0'} - '@jridgewell/sourcemap-codec@1.4.14': - resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} - '@jridgewell/sourcemap-codec@1.4.15': - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - - '@jridgewell/trace-mapping@0.3.18': - resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} @@ -651,6 +793,10 @@ packages: resolution: {integrity: sha512-f5DRIOZf7wxogefH03RjMPMdBF7ADTWUMoOs9kaJo06EfwF+aFhMZMDZxHg/Xe12hptN9xoZjGso2fdjapBRIA==} engines: {node: '>=10'} + '@mswjs/interceptors@0.35.9': + resolution: {integrity: sha512-SSnyl/4ni/2ViHKkiZb8eajA/eN1DNFaHjhGiLUdZvDz6PKF4COSf/17xqSz64nOo2Ia29SA6B2KNCsyCbVmaQ==} + engines: {node: '>=18'} + '@napi-rs/magic-string-android-arm-eabi@0.3.4': resolution: {integrity: sha512-sszAYxqtzzJ4FDerDNHcqL9NhqPhj8W4DNiOanXYy50mA5oojlRtaAFPiB5ZMrWDBM32v5Q30LrmxQ4eTtu2Dg==} engines: {node: '>= 10'} @@ -745,10 +891,102 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@pkgr/utils@2.4.2': - resolution: {integrity: sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==} + '@open-draft/deferred-promise@2.2.0': + resolution: {integrity: sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==} + + '@open-draft/logger@0.3.0': + resolution: {integrity: sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==} + + '@open-draft/until@2.1.0': + resolution: {integrity: sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==} + + '@parcel/watcher-android-arm64@2.4.1': + resolution: {integrity: sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [android] + + '@parcel/watcher-darwin-arm64@2.4.1': + resolution: {integrity: sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [darwin] + + '@parcel/watcher-darwin-x64@2.4.1': + resolution: {integrity: sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [darwin] + + '@parcel/watcher-freebsd-x64@2.4.1': + resolution: {integrity: sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [freebsd] + + '@parcel/watcher-linux-arm-glibc@2.4.1': + resolution: {integrity: sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + + '@parcel/watcher-linux-arm64-glibc@2.4.1': + resolution: {integrity: sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + + '@parcel/watcher-linux-arm64-musl@2.4.1': + resolution: {integrity: sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + + '@parcel/watcher-linux-x64-glibc@2.4.1': + resolution: {integrity: sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + + '@parcel/watcher-linux-x64-musl@2.4.1': + resolution: {integrity: sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + + '@parcel/watcher-win32-arm64@2.4.1': + resolution: {integrity: sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [win32] + + '@parcel/watcher-win32-ia32@2.4.1': + resolution: {integrity: sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==} + engines: {node: '>= 10.0.0'} + cpu: [ia32] + os: [win32] + + '@parcel/watcher-win32-x64@2.4.1': + resolution: {integrity: sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [win32] + + '@parcel/watcher@2.4.1': + resolution: {integrity: sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==} + engines: {node: '>= 10.0.0'} + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@pkgr/core@0.1.1': + resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + '@polka/url@1.0.0-next.28': + resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==} + '@rollup/plugin-commonjs@17.1.0': resolution: {integrity: sha512-PoMdXCw0ZyvjpCMT5aV4nkL0QywxP29sODQsSGeDpr/oI49Qq9tRtAsb/LbYbDzFlOydVEqHmmZWFtXJEAX9ew==} engines: {node: '>= 8.0.0'} @@ -777,92 +1015,193 @@ packages: peerDependencies: rollup: ^1.20.0||^2.0.0 - '@rollup/pluginutils@4.2.1': - resolution: {integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==} - engines: {node: '>= 8.0.0'} + '@rollup/pluginutils@5.1.2': + resolution: {integrity: sha512-/FIdS3PyZ39bjZlwqFnWqCOVnW7o963LtKMwQOD0NhQqw22gSr2YY1afu3FxRip4ZCZNsD5jq6Aaz6QV3D/Njw==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/rollup-android-arm-eabi@4.24.0': + resolution: {integrity: sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.24.0': + resolution: {integrity: sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.24.0': + resolution: {integrity: sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.24.0': + resolution: {integrity: sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-linux-arm-gnueabihf@4.24.0': + resolution: {integrity: sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.24.0': + resolution: {integrity: sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.24.0': + resolution: {integrity: sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.24.0': + resolution: {integrity: sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-powerpc64le-gnu@4.24.0': + resolution: {integrity: sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.24.0': + resolution: {integrity: sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.24.0': + resolution: {integrity: sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.24.0': + resolution: {integrity: sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.24.0': + resolution: {integrity: sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.24.0': + resolution: {integrity: sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.24.0': + resolution: {integrity: sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.24.0': + resolution: {integrity: sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==} + cpu: [x64] + os: [win32] '@sindresorhus/is@0.14.0': resolution: {integrity: sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==} engines: {node: '>=6'} - '@swc/core-darwin-arm64@1.3.70': - resolution: {integrity: sha512-31+mcl0dgdRHvZRjhLOK9V6B+qJ7nxDZYINr9pBlqGWxknz37Vld5KK19Kpr79r0dXUZvaaelLjCnJk9dA2PcQ==} + '@swc/core-darwin-arm64@1.7.36': + resolution: {integrity: sha512-8vDczXzCgv3ceTPhEivlpGprN44YlrCK1nbfU9g2TrhV/Aiqi09W/eM5zLesdoM1Z3mJl492gc/8nlTkpDdusw==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] - '@swc/core-darwin-x64@1.3.70': - resolution: {integrity: sha512-GMFJ65E18zQC80t0os+TZvI+8lbRuitncWVge/RXmXbVLPRcdykP4EJ87cqzcG5Ah0z18/E0T+ixD6jHRisrYQ==} + '@swc/core-darwin-x64@1.7.36': + resolution: {integrity: sha512-Pa2Gao7+Wf5m3SsK4abKRtd48AtoUnJInvaC3d077swBfgZjbjUbQvcpdc2dOeQtWwo49rFqUZJonMsL0jnPgQ==} engines: {node: '>=10'} cpu: [x64] os: [darwin] - '@swc/core-linux-arm-gnueabihf@1.3.70': - resolution: {integrity: sha512-wjhCwS8LCiAq2VedF1b4Bryyw68xZnfMED4pLRazAl8BaUlDFANfRBORNunxlfHQj4V3x39IaiLgCZRHMdzXBg==} + '@swc/core-linux-arm-gnueabihf@1.7.36': + resolution: {integrity: sha512-3YsMWd7V+WZEjbfBnLkkz/olcRBa8nyoK0iIOnNARJBMcYaJxjkJSMZpmSojCnIVwvjA1N83CPAbUL+W+fCnHg==} engines: {node: '>=10'} cpu: [arm] os: [linux] - '@swc/core-linux-arm64-gnu@1.3.70': - resolution: {integrity: sha512-9D/Rx67cAOnMiexvCqARxvhj7coRajTp5HlJHuf+rfwMqI2hLhpO9/pBMQxBUAWxODO/ksQ/OF+GJRjmtWw/2A==} + '@swc/core-linux-arm64-gnu@1.7.36': + resolution: {integrity: sha512-lqM3aBB7kJazJYOwHeA5OGNLqXoQPZ/76b3dV+XcjN1GhD0CcXz6mW5PRYVin6OSN1eKrKBKJjtDA1mqADDEvw==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-arm64-musl@1.3.70': - resolution: {integrity: sha512-gkjxBio7XD+1GlQVVyPP/qeFkLu83VhRHXaUrkNYpr5UZG9zZurBERT9nkS6Y+ouYh+Q9xmw57aIyd2KvD2zqQ==} + '@swc/core-linux-arm64-musl@1.7.36': + resolution: {integrity: sha512-bqei2YDzvUfG0pth5W2xJaj0eG4XWYk0d/NJ75vBX6bkIzK6dC8iuKQ41jOfUWonnrAs7rTDDJW0sTn/evvRdw==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-x64-gnu@1.3.70': - resolution: {integrity: sha512-/nCly+V4xfMVwfEUoLLAukxUSot/RcSzsf6GdsGTjFcrp5sZIntAjokYRytm3VT1c2TK321AfBorsi9R5w8Y7Q==} + '@swc/core-linux-x64-gnu@1.7.36': + resolution: {integrity: sha512-03maXTUyaBjeCxlDltmdzHje1ryQt1C4OWmmNgSSRXjLb+GNnAenwOJMSrcvHP/aNClD2pwsFCnYKDGy+sYE6w==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-linux-x64-musl@1.3.70': - resolution: {integrity: sha512-HoOsPJbt361KGKaivAK0qIiYARkhzlxeAfvF5NlnKxkIMOZpQ46Lwj3tR0VWohKbrhS+cYKFlVuDi5XnDkx0XA==} + '@swc/core-linux-x64-musl@1.7.36': + resolution: {integrity: sha512-XXysqLkvjtQnXm1zHqLhy00UYPv/gk5OtwR732X+piNisnEbcJBqI8Qp9O7YvLWllRcoP8IMBGDWLGdGLSpViA==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-win32-arm64-msvc@1.3.70': - resolution: {integrity: sha512-hm4IBK/IaRil+aj1cWU6f0GyAdHpw/Jr5nyFYLM2c/tt7w2t5hgb8NjzM2iM84lOClrig1fG6edj2vCF1dFzNQ==} + '@swc/core-win32-arm64-msvc@1.7.36': + resolution: {integrity: sha512-k7+dmb13a/zPw+E4XYfPmLZFWJgcOcBRKIjYl9nQErtYsgsg3Ji6TBbsvJVETy23lNHyewZ17V5Vq6NzaG0hzg==} engines: {node: '>=10'} cpu: [arm64] os: [win32] - '@swc/core-win32-ia32-msvc@1.3.70': - resolution: {integrity: sha512-5cgKUKIT/9Fp5fCA+zIjYCQ4dSvjFYOeWGZR3QiTXGkC4bGa1Ji9SEPyeIAX0iruUnKjYaZB9RvHK2tNn7RLrQ==} + '@swc/core-win32-ia32-msvc@1.7.36': + resolution: {integrity: sha512-ridD3ay6YM2PEYHZXXFN+edYEv0FOynaqOBP+NSnGNHA35azItIjoIe+KNi4WltGtAjpKCHSpjGCNfna12wdYQ==} engines: {node: '>=10'} cpu: [ia32] os: [win32] - '@swc/core-win32-x64-msvc@1.3.70': - resolution: {integrity: sha512-LE8lW46+TQBzVkn2mHBlk8DIElPIZ2dO5P8AbJiARNBAnlqQWu67l9gWM89UiZ2l33J2cI37pHzON3tKnT8f9g==} + '@swc/core-win32-x64-msvc@1.7.36': + resolution: {integrity: sha512-j1z2Z1Ln9d0E3dHsPkC1K9XDh0ojhRPwV+GfRTu4D61PE+aYhYLvbJC6xPvL4/204QrStRS7eDu3m+BcDp3rgQ==} engines: {node: '>=10'} cpu: [x64] os: [win32] - '@swc/core@1.3.70': - resolution: {integrity: sha512-LWVWlEDLlOD25PvA2NEz41UzdwXnlDyBiZbe69s3zM0DfCPwZXLUm79uSqH9ItsOjTrXSL5/1+XUL6C/BZwChA==} + '@swc/core@1.7.36': + resolution: {integrity: sha512-bu7ymMX+LCJOSSrKank25Jaq66ymLVA9fOUuy4ck3/6rbXdLw+pIJPnIDKQ9uNcxww8KDxOuJk9Ui9pqR+aGFw==} engines: {node: '>=10'} peerDependencies: - '@swc/helpers': ^0.5.0 + '@swc/helpers': '*' peerDependenciesMeta: '@swc/helpers': optional: true - '@swc/helpers@0.5.1': - resolution: {integrity: sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==} + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + + '@swc/helpers@0.5.13': + resolution: {integrity: sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==} + + '@swc/types@0.1.13': + resolution: {integrity: sha512-JL7eeCk6zWCbiYQg2xQSdLXQJl8Qoc9rXmG2cEKvHe3CKwMHwHGpfOb8frzNLmbycOo6I51qxnLnn9ESf4I20Q==} '@szmarczak/http-timer@1.1.2': resolution: {integrity: sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==} engines: {node: '>=6'} - '@tsconfig/node10@1.0.9': - resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} + '@testing-library/dom@10.4.0': + resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} + engines: {node: '>=18'} + + '@testing-library/user-event@14.5.2': + resolution: {integrity: sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==} + engines: {node: '>=12', npm: '>=6'} + peerDependencies: + '@testing-library/dom': '>=7.21.4' + + '@tsconfig/node10@1.0.11': + resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} '@tsconfig/node12@1.0.11': resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} @@ -873,50 +1212,56 @@ packages: '@tsconfig/node16@1.0.4': resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - '@types/chai-spies@1.0.3': - resolution: {integrity: sha512-RBZjhVuK7vrg4rWMt04UF5zHYwfHnpk5mIWu3nQvU3AKGDixXzSjZ6v0zke6pBcaJqMv3IBZ5ibLWPMRDL0sLw==} + '@types/aria-query@5.0.4': + resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} - '@types/chai@4.3.5': - resolution: {integrity: sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==} + '@types/cookie@0.6.0': + resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} '@types/estree@0.0.39': resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} - '@types/estree@1.0.1': - resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} + '@types/estree@1.0.6': + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} - '@types/json-schema@7.0.12': - resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} '@types/keyv@3.1.4': resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} - '@types/minimist@1.2.2': - resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} + '@types/minimist@1.2.5': + resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==} + + '@types/mute-stream@0.0.4': + resolution: {integrity: sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==} + + '@types/node@14.18.63': + resolution: {integrity: sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==} - '@types/mocha@8.2.3': - resolution: {integrity: sha512-ekGvFhFgrc2zYQoX4JeZPmVzZxw6Dtllga7iGHzfbYIYkAMUx/sAFP2GdFpLff+vdHXu5fl7WX9AT+TtqYcsyw==} + '@types/node@16.18.114': + resolution: {integrity: sha512-7oAtnxrgkMNzyzT443UDWwzkmYew81F1ZSPm3/lsITJfW/WludaSOpegTvUG+UdapcbrtWOtY/E4LyTkhPGJ5Q==} - '@types/node@14.18.54': - resolution: {integrity: sha512-uq7O52wvo2Lggsx1x21tKZgqkJpvwCseBBPtX/nKQfpVlEsLOb11zZ1CRsWUKvJF0+lzuA9jwvA7Pr2Wt7i3xw==} + '@types/node@18.19.56': + resolution: {integrity: sha512-4EMJlWwwGnVPflJAtM14p9eVSa6BOv5b92mCsh5zcM1UagNtEtrbbtaE6WE1tw2TabavatnwqXjlIpcAEuJJNg==} - '@types/node@18.17.0': - resolution: {integrity: sha512-GXZxEtOxYGFchyUzxvKI14iff9KZ2DI+A6a37o6EQevtg6uO9t+aUZKcaC1Te5Ng1OnLM7K9NVVj+FbecD9cJg==} + '@types/node@22.7.6': + resolution: {integrity: sha512-/d7Rnj0/ExXDMcioS78/kf1lMzYk4BZV8MZGTBKzTGZ6/406ukkbYlIsZmMPhcR5KlkunDHQLrtAVmSq7r+mSw==} - '@types/normalize-package-data@2.4.1': - resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} + '@types/normalize-package-data@2.4.4': + resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} - '@types/parse-json@4.0.0': - resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} + '@types/parse-json@4.0.2': + resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} '@types/resolve@1.17.1': resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==} - '@types/responselike@1.0.0': - resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} + '@types/responselike@1.0.3': + resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} - '@types/semver@7.5.0': - resolution: {integrity: sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==} + '@types/semver@7.5.8': + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} '@types/sinonjs__fake-timers@8.1.1': resolution: {integrity: sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==} @@ -924,14 +1269,23 @@ packages: '@types/sizzle@2.3.8': resolution: {integrity: sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg==} - '@types/webxr@0.5.16': - resolution: {integrity: sha512-0E0Cl84FECtzrB4qG19TNTqpunw0F1YF0QZZnFMF6pDw1kNKJtrlTKlVB34stGIsHbZsYQ7H0tNjPfZftkHHoA==} + '@types/statuses@2.0.5': + resolution: {integrity: sha512-jmIUGWrAiwu3dZpxntxieC+1n/5c3mjrImkmOSQ2NC5uP6cYO4aAZDdSmRcI5C1oiTmqlZGHC+/NmJrKogbP5A==} + + '@types/tough-cookie@4.0.5': + resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} + + '@types/webxr@0.5.20': + resolution: {integrity: sha512-JGpU6qiIJQKUuVSKx1GtQnHJGxRjtfGIhzO2ilq43VZZS//f1h1Sgexbdk+Lq+7569a6EYhOWrUpIruR/1Enmg==} + + '@types/wrap-ansi@3.0.0': + resolution: {integrity: sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==} '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@typescript-eslint/eslint-plugin@6.2.0': - resolution: {integrity: sha512-rClGrMuyS/3j0ETa1Ui7s6GkLhfZGKZL3ZrChLeAiACBE/tRc1wq8SNZESUuluxhLj9FkUefRs2l6bCIArWBiQ==} + '@typescript-eslint/eslint-plugin@6.21.0': + resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -941,8 +1295,8 @@ packages: typescript: optional: true - '@typescript-eslint/parser@6.2.0': - resolution: {integrity: sha512-igVYOqtiK/UsvKAmmloQAruAdUHihsOCvplJpplPZ+3h4aDkC/UKZZNKgB6h93ayuYLuEymU3h8nF1xMRbh37g==} + '@typescript-eslint/parser@6.21.0': + resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -951,12 +1305,12 @@ packages: typescript: optional: true - '@typescript-eslint/scope-manager@6.2.0': - resolution: {integrity: sha512-1ZMNVgm5nnHURU8ZSJ3snsHzpFeNK84rdZjluEVBGNu7jDymfqceB3kdIZ6A4xCfEFFhRIB6rF8q/JIqJd2R0Q==} + '@typescript-eslint/scope-manager@6.21.0': + resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} engines: {node: ^16.0.0 || >=18.0.0} - '@typescript-eslint/type-utils@6.2.0': - resolution: {integrity: sha512-DnGZuNU2JN3AYwddYIqrVkYW0uUQdv0AY+kz2M25euVNlujcN2u+rJgfJsBFlUEzBB6OQkUqSZPyuTLf2bP5mw==} + '@typescript-eslint/type-utils@6.21.0': + resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -965,12 +1319,12 @@ packages: typescript: optional: true - '@typescript-eslint/types@6.2.0': - resolution: {integrity: sha512-1nRRaDlp/XYJQLvkQJG5F3uBTno5SHPT7XVcJ5n1/k2WfNI28nJsvLakxwZRNY5spuatEKO7d5nZWsQpkqXwBA==} + '@typescript-eslint/types@6.21.0': + resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} engines: {node: ^16.0.0 || >=18.0.0} - '@typescript-eslint/typescript-estree@6.2.0': - resolution: {integrity: sha512-Mts6+3HQMSM+LZCglsc2yMIny37IhUgp1Qe8yJUYVyO6rHP7/vN0vajKu3JvHCBIy8TSiKddJ/Zwu80jhnGj1w==} + '@typescript-eslint/typescript-estree@6.21.0': + resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -978,18 +1332,72 @@ packages: typescript: optional: true - '@typescript-eslint/utils@6.2.0': - resolution: {integrity: sha512-RCFrC1lXiX1qEZN8LmLrxYRhOkElEsPKTVSNout8DMzf8PeWoQG7Rxz2SadpJa3VSh5oYKGwt7j7X/VRg+Y3OQ==} + '@typescript-eslint/utils@6.21.0': + resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 - '@typescript-eslint/visitor-keys@6.2.0': - resolution: {integrity: sha512-QbaYUQVKKo9bgCzpjz45llCfwakyoxHetIy8CAvYCtd16Zu1KrpzNHofwF8kGkpPOxZB2o6kz+0nqH8ZkIzuoQ==} + '@typescript-eslint/visitor-keys@6.21.0': + resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} engines: {node: ^16.0.0 || >=18.0.0} - '@ungap/promise-all-settled@1.1.2': - resolution: {integrity: sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==} + '@ungap/structured-clone@1.2.0': + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + + '@vitest/browser@2.1.3': + resolution: {integrity: sha512-PQ2kLLc9q8ukJutuuYsynHSr31E78/dtYEvPy4jCHLht1LmITqXTVTqu7THWdZ1kXNGrWwtdMqtt3z2mvSKdIg==} + peerDependencies: + playwright: '*' + safaridriver: '*' + vitest: 2.1.3 + webdriverio: '*' + peerDependenciesMeta: + playwright: + optional: true + safaridriver: + optional: true + webdriverio: + optional: true + + '@vitest/coverage-v8@2.1.3': + resolution: {integrity: sha512-2OJ3c7UPoFSmBZwqD2VEkUw6A/tzPF0LmW0ZZhhB8PFxuc+9IBG/FaSM+RLEenc7ljzFvGN+G0nGQoZnh7sy2A==} + peerDependencies: + '@vitest/browser': 2.1.3 + vitest: 2.1.3 + peerDependenciesMeta: + '@vitest/browser': + optional: true + + '@vitest/expect@2.1.3': + resolution: {integrity: sha512-SNBoPubeCJhZ48agjXruCI57DvxcsivVDdWz+SSsmjTT4QN/DfHk3zB/xKsJqMs26bLZ/pNRLnCf0j679i0uWQ==} + + '@vitest/mocker@2.1.3': + resolution: {integrity: sha512-eSpdY/eJDuOvuTA3ASzCjdithHa+GIF1L4PqtEELl6Qa3XafdMLBpBlZCIUCX2J+Q6sNmjmxtosAG62fK4BlqQ==} + peerDependencies: + '@vitest/spy': 2.1.3 + msw: ^2.3.5 + vite: ^5.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + + '@vitest/pretty-format@2.1.3': + resolution: {integrity: sha512-XH1XdtoLZCpqV59KRbPrIhFCOO0hErxrQCMcvnQete3Vibb9UeIOX02uFPfVn3Z9ZXsq78etlfyhnkmIZSzIwQ==} + + '@vitest/runner@2.1.3': + resolution: {integrity: sha512-JGzpWqmFJ4fq5ZKHtVO3Xuy1iF2rHGV4d/pdzgkYHm1+gOzNZtqjvyiaDGJytRyMU54qkxpNzCx+PErzJ1/JqQ==} + + '@vitest/snapshot@2.1.3': + resolution: {integrity: sha512-qWC2mWc7VAXmjAkEKxrScWHWFyCQx/cmiZtuGqMi+WwqQJ2iURsVY4ZfAK6dVo6K2smKRU6l3BPwqEBvhnpQGg==} + + '@vitest/spy@2.1.3': + resolution: {integrity: sha512-Nb2UzbcUswzeSP7JksMDaqsI43Sj5+Kry6ry6jQJT4b5gAK+NS9NED6mDb8FlMRCX8m5guaHCDZmqYMMWRy5nQ==} + + '@vitest/utils@2.1.3': + resolution: {integrity: sha512-xpiVfDSg1RrYT0tX6czgerkpcKFmFOF/gCr30+Mve5V2kewCy4Prn1/NDMSRwaSmT7PRaOF83wu+bEtsY1wrvA==} JSONStream@1.3.5: resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} @@ -1000,8 +1408,8 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn-walk@8.2.0: - resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} + acorn-walk@8.3.4: + resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} engines: {node: '>=0.4.0'} acorn@7.4.1: @@ -1009,13 +1417,8 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - acorn@8.10.0: - resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} - engines: {node: '>=0.4.0'} - hasBin: true - - acorn@8.12.1: - resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} + acorn@8.13.0: + resolution: {integrity: sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==} engines: {node: '>=0.4.0'} hasBin: true @@ -1026,26 +1429,22 @@ packages: ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - ansi-colors@4.1.1: - resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} - engines: {node: '>=6'} - ansi-colors@4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} ansi-escapes@4.3.2: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} - engines: {node: '>=8'} - - ansi-regex@3.0.1: - resolution: {integrity: sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==} - engines: {node: '>=4'} + engines: {node: '>=8'} ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} + ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + engines: {node: '>=12'} + ansi-styles@3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} @@ -1054,6 +1453,14 @@ packages: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} @@ -1077,6 +1484,9 @@ packages: argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + array-ify@1.0.0: resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} @@ -1095,15 +1505,16 @@ packages: resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} engines: {node: '>=0.8'} - assertion-error@1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} astral-regex@2.0.0: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} engines: {node: '>=8'} - async@3.2.5: - resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} + async@3.2.6: + resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} @@ -1115,8 +1526,8 @@ packages: aws-sign2@0.7.0: resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} - aws4@1.12.0: - resolution: {integrity: sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==} + aws4@1.13.2: + resolution: {integrity: sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==} balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -1127,12 +1538,8 @@ packages: bcrypt-pbkdf@1.0.2: resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} - big-integer@1.6.51: - resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==} - engines: {node: '>=0.6'} - - binary-extensions@2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} bl@2.2.1: @@ -1147,22 +1554,18 @@ packages: boolean@3.2.0: resolution: {integrity: sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==} - bplist-parser@0.2.0: - resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} - engines: {node: '>= 5.10.0'} - brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - browser-stdout@1.3.1: - resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} - browserslist@4.21.9: - resolution: {integrity: sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==} + browserslist@4.24.0: + resolution: {integrity: sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -1179,17 +1582,13 @@ packages: resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} engines: {node: '>=6'} - bumpp@9.5.2: - resolution: {integrity: sha512-L0awRXkMY4MLasVy3dyfM+2aU2Q4tyCDU45O7hxiB2SHZF8jurw3nmyifrtFJ4cI/JZIvu5ChCtf0i8yLfnohQ==} + bumpp@9.7.1: + resolution: {integrity: sha512-Z6fhD5B8POcSkP+LIHeFQ0+vF0p/C3U+aYp3Yui748VCmsHrhJ/ZshP2970FqE93ymHrJVXTTF8/HDKrRNEYvw==} engines: {node: '>=10'} hasBin: true - bundle-name@3.0.0: - resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==} - engines: {node: '>=12'} - - c12@1.11.1: - resolution: {integrity: sha512-KDU0TvSvVdaYcQKQ6iPHATGz/7p/KiVjPg4vQrB6Jg/wX9R0yl5RZxWm9IoZqaIHD2+6PZd81+KMGwRr/lRIUg==} + c12@1.11.2: + resolution: {integrity: sha512-oBs8a4uvSDO9dm8b7OCFW7+dgtVrwmwnrVXYzLm43ta7ep2jCn/0MhoUFygIWtxhyy6+/MG7/agvpY0U1Iemew==} peerDependencies: magicast: ^0.3.4 peerDependenciesMeta: @@ -1212,8 +1611,9 @@ packages: resolution: {integrity: sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==} engines: {node: '>=8'} - call-bind@1.0.5: - resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} + call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} call-me-maybe@1.0.2: resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==} @@ -1230,25 +1630,15 @@ packages: resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} engines: {node: '>=6'} - camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - - caniuse-lite@1.0.30001517: - resolution: {integrity: sha512-Vdhm5S11DaFVLlyiKu4hiUTkpZu+y1KA/rZZqVQfOD5YdDT/eQKlkt7NaE0WGOFgX32diqt9MiP9CAiFeRklaA==} + caniuse-lite@1.0.30001669: + resolution: {integrity: sha512-DlWzFDJqstqtIVx1zeSpIMLjunf5SmwOw0N2Ck/QSQdS8PLS4+9HrLaYei4w8BIAL7IB/UEDu889d8vhCTPA0w==} caseless@0.12.0: resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} - chai-spies@1.0.0: - resolution: {integrity: sha512-elF2ZUczBsFoP07qCfMO/zeggs8pqCf3fZGyK5+2X4AndS8jycZYID91ztD9oQ7d/0tnS963dPkd0frQEThDsg==} - engines: {node: '>= 4.0.0'} - peerDependencies: - chai: '*' - - chai@4.3.7: - resolution: {integrity: sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==} - engines: {node: '>=4'} + chai@5.1.1: + resolution: {integrity: sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==} + engines: {node: '>=12'} chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} @@ -1262,21 +1652,22 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} - check-error@1.0.2: - resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} + check-error@2.1.1: + resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} + engines: {node: '>= 16'} check-more-types@2.24.0: resolution: {integrity: sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==} engines: {node: '>= 0.8.0'} - chokidar@3.5.1: - resolution: {integrity: sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==} - engines: {node: '>= 8.10.0'} - chokidar@3.6.0: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} + chokidar@4.0.1: + resolution: {integrity: sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==} + engines: {node: '>= 14.16.0'} + chownr@2.0.0: resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} engines: {node: '>=10'} @@ -1296,19 +1687,24 @@ packages: resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} engines: {node: '>=8'} - cli-table3@0.6.3: - resolution: {integrity: sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==} + cli-table3@0.6.5: + resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} engines: {node: 10.* || >= 12.*} cli-truncate@2.1.0: resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} engines: {node: '>=8'} + cli-width@4.1.0: + resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} + engines: {node: '>= 12'} + cliui@6.0.0: resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} - cliui@7.0.4: - resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} clone-response@1.0.3: resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} @@ -1340,10 +1736,6 @@ packages: resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} engines: {node: '>= 6'} - commander@7.2.0: - resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} - engines: {node: '>= 10'} - common-tags@1.8.2: resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} engines: {node: '>=4.0.0'} @@ -1361,8 +1753,8 @@ packages: resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} engines: {'0': node >= 0.8} - confbox@0.1.7: - resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} + confbox@0.1.8: + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} config-chain@1.1.13: resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} @@ -1387,8 +1779,15 @@ packages: convert-source-map@1.9.0: resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} - core-js@3.31.1: - resolution: {integrity: sha512-2sKLtfq1eFST7l7v62zaqXacPc7uG8ZAya8ogijLhTtaKNcpzpB4TMoTw2Si+8GYKRwFPMMtUT0263QFWFfqyQ==} + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + cookie@0.5.0: + resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} + engines: {node: '>= 0.6'} + + core-js@3.38.1: + resolution: {integrity: sha512-OP35aUorbU3Zvlx7pjsFdu1rGNnD4pgw/CWoYzRY3t2EzoVT7shKHY1dlAy3f41cGIO7ZDPQimhGFTlEYkG/Hw==} core-util-is@1.0.2: resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} @@ -1416,11 +1815,11 @@ packages: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} - cypress-recurse@1.23.0: - resolution: {integrity: sha512-CAsdvynhuR3SUEXVJRO2jBEnZRJ6nJp7nMXHwzV4UQq9Lap3Bj72AwcJK0cl51fJXcTaGDXYTQQ9zvGe3TyaQA==} + cypress-recurse@1.35.3: + resolution: {integrity: sha512-NbFOpEuZT4tFqAB0jQqel7WtVNDe8pvSHE2TfXvYk4pspf3wq98OC2RhhLn3bMnoCnPtY4IHO7e37c+CZ9HnMA==} - cypress@12.17.1: - resolution: {integrity: sha512-eKfBgO6t8waEyhegL4gxD7tcI6uTCGttu+ZU7y9Hq8BlpMztd7iLeIF4AJFAnbZH1xjX+wwgg4cRKFNSvv3VWQ==} + cypress@12.17.4: + resolution: {integrity: sha512-gAN8Pmns9MA5eCDFSDJXWKUpaL3IDd89N9TtIupjYnzLSmlpVr+ZR+vb4U/qaMp+lB6tBvAmt7504c3Z4RU5KQ==} engines: {node: ^14.0.0 || ^16.0.0 || >=18.0.0} hasBin: true @@ -1435,8 +1834,8 @@ packages: dat.gui@0.7.9: resolution: {integrity: sha512-sCNc1OHobc+Erc1HqiswYgHdVNpSJUlk/Hz8vzOCsER7rl+oF/4+v8GXFUyCgtXpoCX6+bnmg07DedLvBLwYKQ==} - dayjs@1.11.10: - resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} + dayjs@1.11.13: + resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} @@ -1454,17 +1853,8 @@ packages: supports-color: optional: true - debug@4.3.1: - resolution: {integrity: sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + debug@4.3.7: + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -1480,10 +1870,6 @@ packages: resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} engines: {node: '>=0.10.0'} - decamelize@4.0.0: - resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} - engines: {node: '>=10'} - decompress-response@3.3.0: resolution: {integrity: sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==} engines: {node: '>=4'} @@ -1491,8 +1877,8 @@ packages: dedent@0.7.0: resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} - deep-eql@4.1.3: - resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} + deep-eql@5.0.2: + resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} engines: {node: '>=6'} deep-is@0.1.4: @@ -1502,14 +1888,6 @@ packages: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} - default-browser-id@3.0.0: - resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} - engines: {node: '>=12'} - - default-browser@4.0.0: - resolution: {integrity: sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==} - engines: {node: '>=14.16'} - default-require-extensions@3.0.1: resolution: {integrity: sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw==} engines: {node: '>=8'} @@ -1517,16 +1895,12 @@ packages: defer-to-connect@1.1.3: resolution: {integrity: sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==} - define-data-property@1.1.1: - resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} - define-lazy-prop@3.0.0: - resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} - engines: {node: '>=12'} - - define-properties@1.2.0: - resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} defu@6.1.4: @@ -1536,9 +1910,18 @@ packages: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + destr@2.0.3: resolution: {integrity: sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==} + detect-libc@1.0.3: + resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} + engines: {node: '>=0.10'} + hasBin: true + detect-node@2.1.0: resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} @@ -1546,10 +1929,6 @@ packages: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} - diff@5.0.0: - resolution: {integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==} - engines: {node: '>=0.3.1'} - dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} @@ -1558,6 +1937,9 @@ packages: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} + dom-accessibility-api@0.5.16: + resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} + dot-prop@5.3.0: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} engines: {node: '>=8'} @@ -1572,11 +1954,14 @@ packages: duplexify@3.7.1: resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==} + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + ecc-jsbn@0.1.2: resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} - electron-to-chromium@1.4.468: - resolution: {integrity: sha512-6M1qyhaJOt7rQtNti1lBA0GwclPH+oKCmsra/hkcWs5INLxfXXD/dtdnaKUYQu/pjOBP/8Osoe4mAcNvvzoFag==} + electron-to-chromium@1.5.41: + resolution: {integrity: sha512-dfdv/2xNjX0P8Vzme4cfzHqnPm5xsZXwsolTYr0eyW18IUmNyG08vL+fttvinTfhKfIKdRoqkDIC9e9iWQCNYQ==} electron@13.6.9: resolution: {integrity: sha512-Es/sBy85NIuqsO9MW41PUCpwIkeinlTQ7g0ainfnmRAM2rmog3GBxVCaoV5dzEjwTF7TKG1Yr/E7Z3qHmlfWAg==} @@ -1586,6 +1971,9 @@ packages: emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + encodeurl@1.0.2: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} @@ -1593,8 +1981,8 @@ packages: end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - enquirer@2.3.6: - resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} + enquirer@2.4.1: + resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} engines: {node: '>=8.6'} env-paths@2.2.1: @@ -1604,6 +1992,14 @@ packages: error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + es6-error@4.1.1: resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} @@ -1732,12 +2128,13 @@ packages: engines: {node: '>=12'} hasBin: true - escalade@3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} - engines: {node: '>=6'} + esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} + engines: {node: '>=12'} + hasBin: true - escalade@3.1.2: - resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} escape-string-regexp@1.0.5: @@ -1748,19 +2145,19 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - escodegen@1.14.3: - resolution: {integrity: sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==} - engines: {node: '>=4.0'} + escodegen@2.1.0: + resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} + engines: {node: '>=6.0'} hasBin: true - eslint-config-prettier@8.9.0: - resolution: {integrity: sha512-+sbni7NfVXnOpnRadUA8S28AUlsZt9GjgFvABIRL9Hkn8KqNzOp+7Lw4QWtrwn20KzU3wqu1QoOj2m+7rKRqkA==} + eslint-config-prettier@8.10.0: + resolution: {integrity: sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==} hasBin: true peerDependencies: eslint: '>=7.0.0' - eslint-plugin-prettier@5.0.0: - resolution: {integrity: sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==} + eslint-plugin-prettier@5.2.1: + resolution: {integrity: sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: '@types/eslint': '>=8.0.0' @@ -1777,13 +2174,14 @@ packages: resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint-visitor-keys@3.4.2: - resolution: {integrity: sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==} + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint@8.46.0: - resolution: {integrity: sha512-cIO74PvbW0qU8e0mIvk5IV3ToWdCq5FYG6gWPHHkx6gNdjlbAYvtfHmlCMXxjcoVaIdwy/IAt3+mDkZkfvb2Dg==} + eslint@8.57.1: + resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. hasBin: true espree@9.6.1: @@ -1795,18 +2193,14 @@ packages: engines: {node: '>=4'} hasBin: true - esquery@1.5.0: - resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} engines: {node: '>=0.10'} esrecurse@4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} - estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} @@ -1820,6 +2214,9 @@ packages: estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} @@ -1835,14 +2232,6 @@ packages: resolution: {integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==} engines: {node: '>=10'} - execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} - - execa@7.2.0: - resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} - engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} - execa@8.0.1: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} @@ -1877,10 +2266,6 @@ packages: fast-diff@1.3.0: resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} - fast-glob@3.3.1: - resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} - engines: {node: '>=8.6.0'} - fast-glob@3.3.2: resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} engines: {node: '>=8.6.0'} @@ -1891,8 +2276,8 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - fastq@1.15.0: - resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} + fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} fd-slicer@1.1.0: resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} @@ -1905,8 +2290,8 @@ packages: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} - fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} find-cache-dir@3.3.2: @@ -1921,29 +2306,21 @@ packages: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} - flat-cache@3.0.4: - resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} + flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} engines: {node: ^10.12.0 || >=12.0.0} - flat@5.0.2: - resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} - hasBin: true - - flatted@3.2.7: - resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} - - floss@5.0.1: - resolution: {integrity: sha512-ndWCQSC0xX7LoVPhQlasn6VMWi+baxqX1QiTkMQqm7WPOp6bmfM70YlCWJeczzP36HsFE6mAjdnUtXANOKt0SQ==} - engines: {node: '>=10.0'} - hasBin: true - peerDependencies: - electron: '>=12 <14' - nyc: '>=13' + flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} foreground-child@2.0.0: resolution: {integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==} engines: {node: '>=8.0.0'} + foreground-child@3.3.0: + resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} + engines: {node: '>=14'} + forever-agent@0.6.1: resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} @@ -1981,8 +2358,10 @@ packages: engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] - function-bind@1.1.1: - resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} @@ -1995,11 +2374,9 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - get-func-name@2.0.0: - resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} - - get-intrinsic@1.2.1: - resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} + get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} get-own-enumerable-property-symbols@3.0.2: resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} @@ -2020,16 +2397,12 @@ packages: resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} engines: {node: '>=8'} - get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} - get-stream@8.0.1: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} - get-tsconfig@4.6.2: - resolution: {integrity: sha512-E5XrT4CbbXcXWy+1jChlZmrmCwd5KGx502kDCXJJ7y898TtWW9FwoG5HfOLVRKmlmDGkWN2HM9Ho+/Y8F0sJDg==} + get-tsconfig@4.8.1: + resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} getos@3.2.1: resolution: {integrity: sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==} @@ -2054,11 +2427,13 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} - glob@7.1.6: - resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported global-agent@3.0.0: resolution: {integrity: sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==} @@ -2080,12 +2455,12 @@ packages: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} - globals@13.20.0: - resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} + globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} engines: {node: '>=8'} - globalthis@1.0.3: - resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} globby@11.1.0: @@ -2151,9 +2526,9 @@ packages: graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - growl@1.10.5: - resolution: {integrity: sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==} - engines: {node: '>=4.x'} + graphql@16.9.0: + resolution: {integrity: sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==} + engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} hard-rejection@2.1.0: resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} @@ -2167,28 +2542,27 @@ packages: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - has-property-descriptors@1.0.0: - resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} - has-proto@1.0.1: - resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} engines: {node: '>= 0.4'} has-symbols@1.0.3: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} - has@1.0.3: - resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} - engines: {node: '>= 0.4.0'} - hasha@5.2.2: resolution: {integrity: sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==} engines: {node: '>=8'} - he@1.2.0: - resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} - hasBin: true + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + headers-polyfill@4.0.3: + resolution: {integrity: sha512-IScLbePpkvO846sIwOtOTDjutRMWdXdJmXdMvk6gCBHxFO8d+QKOQedyZSxFTTFYRSmlgSTDtXqqq4pcenBXLQ==} hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} @@ -2211,18 +2585,13 @@ packages: resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} engines: {node: '>=8.12.0'} - human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} - - human-signals@4.3.1: - resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} - engines: {node: '>=14.18.0'} - human-signals@5.0.0: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} engines: {node: '>=16.17.0'} + humanize-duration@3.32.1: + resolution: {integrity: sha512-inh5wue5XdfObhu/IGEMiA1nUXigSGcaKNemcbLRKa7jXYGDZXr3LoT9pTIzq2hPEbld7w/qv9h+ikWGz8fL1g==} + husky@8.0.3: resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==} engines: {node: '>=14'} @@ -2231,12 +2600,12 @@ packages: ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - ignore@5.2.4: - resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} - immutable@4.3.4: - resolution: {integrity: sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==} + immutable@4.3.7: + resolution: {integrity: sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==} import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} @@ -2252,6 +2621,7 @@ packages: inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -2274,27 +2644,14 @@ packages: resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} hasBin: true - is-core-module@2.12.1: - resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==} - - is-docker@2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} - engines: {node: '>=8'} - hasBin: 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 + is-core-module@2.15.1: + resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} + engines: {node: '>= 0.4'} is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} - is-fullwidth-code-point@2.0.0: - resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} - engines: {node: '>=4'} - is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} @@ -2303,11 +2660,6 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} - is-inside-container@1.0.0: - resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} - engines: {node: '>=14.16'} - hasBin: true - is-installed-globally@0.4.0: resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} engines: {node: '>=10'} @@ -2315,6 +2667,9 @@ packages: is-module@1.0.0: resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} + is-node-process@1.2.0: + resolution: {integrity: sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==} + is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} @@ -2335,10 +2690,6 @@ packages: resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} engines: {node: '>=0.10.0'} - is-plain-obj@2.1.0: - resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} - engines: {node: '>=8'} - is-reference@1.2.1: resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} @@ -2369,10 +2720,6 @@ packages: resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} engines: {node: '>=0.10.0'} - is-wsl@2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} - engines: {node: '>=8'} - isarray@0.0.1: resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} @@ -2388,8 +2735,8 @@ packages: isstream@0.1.2: resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} - istanbul-lib-coverage@3.2.0: - resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} + istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} engines: {node: '>=8'} istanbul-lib-hook@3.0.0: @@ -2404,18 +2751,25 @@ packages: resolution: {integrity: sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==} engines: {node: '>=8'} - istanbul-lib-report@3.0.0: - resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} - engines: {node: '>=8'} + istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} istanbul-lib-source-maps@4.0.1: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} - istanbul-reports@3.1.5: - resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} + istanbul-lib-source-maps@5.0.6: + resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} + engines: {node: '>=10'} + + istanbul-reports@3.1.7: + resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} engines: {node: '>=8'} + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + jiti@1.21.6: resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} hasBin: true @@ -2427,10 +2781,6 @@ packages: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true - js-yaml@4.0.0: - resolution: {integrity: sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==} - hasBin: true - js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true @@ -2442,14 +2792,17 @@ packages: resolution: {integrity: sha512-anpZkTXwZbxfxLEBMciKxXMHx2xOLK2qhynIhTnoSyC+wGOEPrAoofxnADgblbarn0kijVMt1U71cQGmRF/1Og==} engines: {node: '>=6.0'} - jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} + jsesc@3.0.2: + resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} + engines: {node: '>=6'} hasBin: true json-buffer@3.0.0: resolution: {integrity: sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==} + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} @@ -2490,6 +2843,9 @@ packages: keyv@3.1.0: resolution: {integrity: sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==} + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} @@ -2502,10 +2858,6 @@ packages: resolution: {integrity: sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==} engines: {node: '> 0.8'} - levn@0.3.0: - resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} - engines: {node: '>= 0.8.0'} - levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -2546,10 +2898,6 @@ packages: lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - log-symbols@4.0.0: - resolution: {integrity: sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==} - engines: {node: '>=10'} - log-symbols@4.1.0: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} engines: {node: '>=10'} @@ -2558,8 +2906,8 @@ packages: resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} engines: {node: '>=10'} - loupe@2.3.6: - resolution: {integrity: sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==} + loupe@3.1.2: + resolution: {integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==} lowercase-keys@1.0.1: resolution: {integrity: sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==} @@ -2569,6 +2917,9 @@ packages: resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} engines: {node: '>=8'} + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} @@ -2576,16 +2927,30 @@ packages: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} + lz-string@1.5.0: + resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} + hasBin: true + magic-string@0.25.2: resolution: {integrity: sha512-iLs9mPjh9IuTtRsqqhNGYcZXGei0Nh/A4xirrsqW7c+QhKVFL2vm7U09ru6cHRD22azaP/wMDgI+HCqbETMTtg==} magic-string@0.25.9: resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} + magic-string@0.30.12: + resolution: {integrity: sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==} + + magicast@0.3.5: + resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} + make-dir@3.1.0: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} + make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} @@ -2615,8 +2980,8 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} mime-db@1.52.0: @@ -2627,9 +2992,9 @@ packages: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} - mime@3.0.0: - resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} - engines: {node: '>=10.0.0'} + mime@2.6.0: + resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} + engines: {node: '>=4.0.0'} hasBin: true mimic-fn@2.1.0: @@ -2648,12 +3013,17 @@ packages: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} - minimatch@3.0.4: - resolution: {integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==} - minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + minimist-options@4.1.0: resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} engines: {node: '>= 6'} @@ -2669,6 +3039,10 @@ packages: resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} engines: {node: '>=8'} + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + minizlib@2.1.2: resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} engines: {node: '>= 8'} @@ -2682,45 +3056,50 @@ packages: engines: {node: '>=10'} hasBin: true - mlly@1.7.1: - resolution: {integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==} + mlly@1.7.2: + resolution: {integrity: sha512-tN3dvVHYVz4DhSXinXIk7u9syPYaJvio118uomkovAtWBT+RdbP6Lfh/5Lvo519YMmwBafwlh20IPTXIStscpA==} - mocha@8.4.0: - resolution: {integrity: sha512-hJaO0mwDXmZS4ghXsvPVriOhsxQ7ofcpQdm8dE+jISUOKopitvnXFQmpRR7jd2K6VBG6E26gU3IAbXXGIbu4sQ==} - engines: {node: '>= 10.12.0'} - hasBin: true + mrmime@2.0.0: + resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} + engines: {node: '>=10'} ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + msw@2.4.11: + resolution: {integrity: sha512-TVEw9NOPTc6ufOQLJ53234S9NBRxQbu7xFMxs+OCP43JQcNEIOKiZHxEm2nDzYIrwccoIhUxUf8wr99SukD76A==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + typescript: '>= 4.8.x' + peerDependenciesMeta: + typescript: + optional: true + murmurhash-js@1.0.0: resolution: {integrity: sha512-TvmkNhkv8yct0SVBSy+o8wYzXjE4Zz3PCesbfs8HiCXXdcTuocApFv11UWlNFWKYsP2okqrhb7JNlSm9InBhIw==} - nanoid@3.1.20: - resolution: {integrity: sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true + mute-stream@1.0.0: + resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} nanoid@3.3.7: resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - natural-compare-lite@1.4.0: - resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} - natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} nice-try@1.0.5: resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} + node-addon-api@7.1.1: + resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} + node-fetch-native@1.6.4: resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==} @@ -2728,8 +3107,8 @@ packages: resolution: {integrity: sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==} engines: {node: '>=8'} - node-releases@2.0.13: - resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} + node-releases@2.0.18: + resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} @@ -2754,8 +3133,8 @@ packages: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} - npm-run-path@5.1.0: - resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} + npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} nyc@15.1.0: @@ -2763,24 +3142,25 @@ packages: engines: {node: '>=8.9'} hasBin: true - nypm@0.3.11: - resolution: {integrity: sha512-E5GqaAYSnbb6n1qZyik2wjPDZON43FqOJO59+3OkWrnmQtjggrMOVnsyzfjxp/tS6nlYJBA4zRA5jSM2YaadMg==} + nypm@0.3.12: + resolution: {integrity: sha512-D3pzNDWIvgA+7IORhD/IuWzEk4uXv6GsgOxiid4UU3h9oq5IqV1KtPDi63n4sZJ/xcWlr88c0QM2RgN5VbOhFA==} engines: {node: ^14.16.0 || >=16.10.0} hasBin: true - object-inspect@1.13.1: - resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + object-inspect@1.13.2: + resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} + engines: {node: '>= 0.4'} object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} - odiff-bin@2.5.0: - resolution: {integrity: sha512-wquvVqZltr0w3IFWTjiWloNjlIDaMq0aWoWLStV9GHWRjio1Pznh1UkWkVWp8UukT/TiHoFKrRC47viZVOnmsA==} + odiff-bin@2.6.1: + resolution: {integrity: sha512-SeI3ehAqjQUMlUkGjvIFGKoHZIO3zG1N1wMRhf7ojM7Vb+HcyB2RKSSCu7kbvYVtSdZADEBSJ7nvP/d7iBLivA==} hasBin: true - ohash@1.1.3: - resolution: {integrity: sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==} + ohash@1.1.4: + resolution: {integrity: sha512-FlDryZAahJmEF3VR3w1KogSEdWX3WhA5GPakFx4J81kEAiHyLMpdLLElS8n8dfNadMgAne/MywcvmogzscVt4g==} once@1.3.3: resolution: {integrity: sha512-6vaNInhu+CHxtONf3zw3vq4SP2DOQhjBvIa3rNcG0+P7eKWlYH6Peu7rHizSloRU2EwMz6GraLieis9Ac9+p1w==} @@ -2796,20 +3176,12 @@ packages: resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} engines: {node: '>=12'} - open@9.1.0: - resolution: {integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==} - engines: {node: '>=14.16'} - opener@1.5.2: resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} hasBin: true - optionator@0.8.3: - resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} - engines: {node: '>= 0.8.0'} - - optionator@0.9.3: - resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} ospath@1.2.2: @@ -2819,6 +3191,9 @@ packages: resolution: {integrity: sha512-+nGtjV3vlADp+UGfL51miAh/hB4awPBkQrArhcgG4trAaoA2gKt5bf9w0m9ch9zOr555cHWaCHZEDiBOkNZSxw==} hasBin: true + outvariant@1.4.3: + resolution: {integrity: sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==} + p-cancelable@1.1.0: resolution: {integrity: sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==} engines: {node: '>=6'} @@ -2855,6 +3230,9 @@ packages: resolution: {integrity: sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==} engines: {node: '>=8'} + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -2886,6 +3264,13 @@ packages: path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + + path-to-regexp@6.3.0: + resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} + path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} @@ -2893,8 +3278,9 @@ packages: pathe@1.1.2: resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} - pathval@1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + pathval@2.0.0: + resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} + engines: {node: '>= 14.16'} pend@1.2.0: resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} @@ -2909,8 +3295,8 @@ packages: performance-now@2.1.0: resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} - picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} @@ -2928,20 +3314,26 @@ packages: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} - pkg-types@1.2.0: - resolution: {integrity: sha512-+ifYuSSqOQ8CqP4MbZA5hDpb97n3E8SVWdJe+Wms9kj745lmd3b7EZJiqvmLwAlmRfjrI7Hi5z3kdBJ93lFNPA==} + pkg-types@1.2.1: + resolution: {integrity: sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw==} + + playwright-core@1.48.1: + resolution: {integrity: sha512-Yw/t4VAFX/bBr1OzwCuOMZkY1Cnb4z/doAFSwf4huqAGWmf9eMNjmK7NiOljCdLmxeRYcGPPmcDgU0zOlzP0YA==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.48.1: + resolution: {integrity: sha512-j8CiHW/V6HxmbntOfyB4+T/uk08tBy6ph0MpBXwuoofkSnLmlfdYNNkFTYD6ofzzlSqLA1fwH4vwvVFvJgLN0w==} + engines: {node: '>=18'} + hasBin: true please-upgrade-node@3.2.0: resolution: {integrity: sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==} - postcss@8.4.32: - resolution: {integrity: sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==} + postcss@8.4.47: + resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} engines: {node: ^10 || ^12 || >=14} - prelude-ls@1.1.2: - resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} - engines: {node: '>= 0.8.0'} - prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -2954,8 +3346,8 @@ packages: resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} engines: {node: '>=6.0.0'} - prettier@3.0.0: - resolution: {integrity: sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g==} + prettier@3.3.3: + resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} engines: {node: '>=14'} hasBin: true @@ -2963,6 +3355,10 @@ packages: resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} engines: {node: '>=6'} + pretty-format@27.5.1: + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} @@ -2970,6 +3366,10 @@ packages: resolution: {integrity: sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==} engines: {node: '>=8'} + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + progress@2.0.3: resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} engines: {node: '>=0.4.0'} @@ -2987,16 +3387,20 @@ packages: psl@1.9.0: resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} - pump@3.0.0: - resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + pump@3.0.2: + resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} - punycode@2.3.0: - resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} q@1.5.1: resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==} engines: {node: '>=0.6.0', teleport: '>=0.2.0'} + deprecated: |- + You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other. + + (For a CapTP with native promises, see @endo/eventual-send and @endo/captp) qs@6.10.4: resolution: {integrity: sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==} @@ -3012,12 +3416,12 @@ packages: resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} engines: {node: '>=8'} - randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - rc9@2.1.2: resolution: {integrity: sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==} + react-is@17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + read-pkg-up@7.0.1: resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} engines: {node: '>=8'} @@ -3036,20 +3440,20 @@ packages: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} - readdirp@3.5.0: - resolution: {integrity: sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==} - engines: {node: '>=8.10.0'} - readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} + readdirp@4.0.2: + resolution: {integrity: sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==} + engines: {node: '>= 14.16.0'} + redent@3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} - regenerator-runtime@0.13.11: - resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} release-zalgo@1.0.0: resolution: {integrity: sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==} @@ -3086,8 +3490,8 @@ packages: resolve@0.6.3: resolution: {integrity: sha512-UHBY3viPlJKf85YijDUcikKX6tmF4SokIDp518ZDVT92JNDcG5uKIthaT/owt3Sar0lwtOafsQuwrg22/v2Dwg==} - resolve@1.22.2: - resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} + resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true responselike@1.0.2: @@ -3101,11 +3505,12 @@ packages: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - rfdc@1.3.0: - resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} + rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true roarr@2.15.4: @@ -3124,38 +3529,39 @@ packages: rollup-plugin-modify@3.0.0: resolution: {integrity: sha512-p/ffs0Y2jz2dEnWjq1oVC7SY37tuS+aP7whoNaQz1EAAOPg+k3vKJo8cMMWx6xpdd0NzhX4y2YF9o/NPu5YR0Q==} - rollup-plugin-serve@1.1.0: - resolution: {integrity: sha512-pYkSsuA0/psKqhhictkJw1c2klya5b+LlCvipWqI9OE1aG2M97mRumZCbBlry5CMEOzYBBgSDgd1694sNbmyIw==} + rollup-plugin-serve@1.1.1: + resolution: {integrity: sha512-H0VarZRtFR0lfiiC9/P8jzCDvtFf1liOX4oSdIeeYqUCKrmFA7vNiQ0rg2D+TuoP7leaa/LBR8XBts5viF6lnw==} - rollup-plugin-swc3@0.10.1: - resolution: {integrity: sha512-cRjkK5CqqOO1GTPPcdxPqczR5YNibxKyO7OY1tWbHzEhd/VDlnc30WROdnvz6wc13dJg3HO8xGUfjIvyZTx+Gg==} + rollup-plugin-swc3@0.10.4: + resolution: {integrity: sha512-ggLdYqAe3fZmhuyavDnuixMcNyK1/7CIlmJatW2UcKveN1GpQeFlaRjtXnK6/UCIt71SVr3Qy6p2iCLIkXq3iQ==} engines: {node: '>=12'} peerDependencies: '@swc/core': '>=1.2.165' - rollup: ^2.0.0 || ^3.0.0 + rollup: ^2.0.0 || ^3.0.0 || ^4.0.0 rollup-pluginutils@2.8.2: resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==} - rollup-swc-preserve-directives@0.3.2: - resolution: {integrity: sha512-W0zljPCOMFErWUweRvnN9LCNrII2KzjAw9iZUNM1kZdf3rwQGQQiaCPnH4ugu3UIj1b+zEJKee20S8Ozgwh8Wg==} + rollup-swc-preserve-directives@0.6.0: + resolution: {integrity: sha512-MkKETpYF2ml5p15IxqbvLdFxWV6b99ALT6qL/okXYhaaiK8Mqu95nyk90+m58Ye+jMOpnhQsdK3JGMIPUV7i5g==} peerDependencies: - '@swc/core': '>=1.2.165' - rollup: ^2.0.0 || ^3.0.0 + '@swc/core': '>=1.3.79' + rollup: ^2.0.0 || ^3.0.0 || ^4.0.0 rollup@2.78.1: resolution: {integrity: sha512-VeeCgtGi4P+o9hIg+xz4qQpRl6R401LWEXBmxYKOV4zlF82lyhgh2hTZnheFUbANE8l2A41F458iwj2vEYaXJg==} engines: {node: '>=10.0.0'} hasBin: true - rollup@2.79.1: - resolution: {integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==} + rollup@2.79.2: + resolution: {integrity: sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==} engines: {node: '>=10.0.0'} hasBin: true - run-applescript@5.0.0: - resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==} - engines: {node: '>=12'} + rollup@4.24.0: + resolution: {integrity: sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} @@ -3172,9 +3578,9 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - sass@1.55.0: - resolution: {integrity: sha512-Pk+PMy7OGLs9WaxZGJMn7S96dvlyVBwwtToX895WmCpAOr5YiJYEUJfiJidMuKb613z2xNWcXCHEuOvjZbqC6A==} - engines: {node: '>=12.0.0'} + sass@1.80.2: + resolution: {integrity: sha512-9wXY8cGBlUmoUoT+vwOZOFCiS+naiWVjqlreN9ar9PudXbGwlMTFwCR5K9kB4dFumJ6ib98wZyAObJKsWf1nAA==} + engines: {node: '>=14.0.0'} hasBin: true semver-compare@1.0.0: @@ -3193,11 +3599,6 @@ packages: engines: {node: '>=10'} hasBin: true - semver@7.5.4: - resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} - engines: {node: '>=10'} - hasBin: true - semver@7.6.3: resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} engines: {node: '>=10'} @@ -3207,14 +3608,11 @@ packages: resolution: {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==} engines: {node: '>=10'} - serialize-javascript@5.0.1: - resolution: {integrity: sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==} - set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - set-function-length@1.1.1: - resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} shallow-copy@0.0.1: @@ -3236,8 +3634,12 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - side-channel@1.0.4: - resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} + + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} @@ -3246,6 +3648,10 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} + sirv@2.0.4: + resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} + engines: {node: '>= 10'} + sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} @@ -3265,8 +3671,8 @@ packages: resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} engines: {node: '>=10'} - source-map-js@1.0.2: - resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} source-map@0.6.1: @@ -3284,14 +3690,14 @@ packages: spdx-correct@3.2.0: resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} - spdx-exceptions@2.3.0: - resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} + spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} spdx-expression-parse@3.0.1: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} - spdx-license-ids@3.0.13: - resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==} + spdx-license-ids@3.0.20: + resolution: {integrity: sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==} split2@3.2.2: resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==} @@ -3299,8 +3705,8 @@ packages: sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - sprintf-js@1.1.2: - resolution: {integrity: sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==} + sprintf-js@1.1.3: + resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} sshpk@1.18.0: resolution: {integrity: sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==} @@ -3310,24 +3716,41 @@ packages: stack-trace@0.0.9: resolution: {integrity: sha512-vjUc6sfgtgY0dxCdnc40mK6Oftjo9+2K8H/NG81TMhgL392FtiPA9tn9RLyTxXmTLPJPjF3VyzFp6bsWFLisMQ==} - static-eval@2.1.0: - resolution: {integrity: sha512-agtxZ/kWSsCkI5E4QifRwsaPs0P0JmZV6dkLz6ILYfFYQGn+5plctanRN+IC8dJRiFkyXHrwEE3W9Wmx67uDbw==} + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + + static-eval@2.1.1: + resolution: {integrity: sha512-MgWpQ/ZjGieSVB3eOJVs4OA2LT/q1vx98KPCTTQPzq/aLr0YUXTsgryTXr4SLfR0ZfUUCiedM9n/ABeDIyy4mA==} + + statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + + std-env@3.7.0: + resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} + + stream-shift@1.0.3: + resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} - stream-shift@1.0.1: - resolution: {integrity: sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==} + strict-event-emitter@0.5.1: + resolution: {integrity: sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==} string-argv@0.3.1: resolution: {integrity: sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==} engines: {node: '>=0.6.19'} - string-width@2.1.1: - resolution: {integrity: sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==} - engines: {node: '>=4'} + string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + string_decoder@0.10.31: resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} @@ -3341,14 +3764,14 @@ packages: resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==} engines: {node: '>=4'} - strip-ansi@4.0.0: - resolution: {integrity: sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==} - engines: {node: '>=4'} - strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + strip-bom@4.0.0: resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} engines: {node: '>=8'} @@ -3389,8 +3812,8 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - synckit@0.8.5: - resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==} + synckit@0.9.2: + resolution: {integrity: sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==} engines: {node: ^14.18.0 || >=16.0.0} tar@6.2.1: @@ -3401,6 +3824,10 @@ packages: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} + test-exclude@7.0.1: + resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==} + engines: {node: '>=18'} + text-extensions@1.9.0: resolution: {integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==} engines: {node: '>=0.10'} @@ -3423,13 +3850,27 @@ packages: through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - titleize@3.0.0: - resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==} - engines: {node: '>=12'} + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + + tinyexec@0.3.1: + resolution: {integrity: sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==} + + tinypool@1.0.1: + resolution: {integrity: sha512-URZYihUbRPcGv95En+sz6MfghfIc2OJ1sv/RmhWZLouPY0/8Vo80viwPvg3dlaS9fuq7fQMEfgRRK7BBZThBEA==} + engines: {node: ^18.0.0 || >=20.0.0} - tmp@0.2.1: - resolution: {integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==} - engines: {node: '>=8.17.0'} + tinyrainbow@1.2.0: + resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} + engines: {node: '>=14.0.0'} + + tinyspy@3.0.2: + resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} + engines: {node: '>=14.0.0'} + + tmp@0.2.3: + resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==} + engines: {node: '>=14.14'} to-fast-properties@2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} @@ -3443,22 +3884,26 @@ packages: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} - tough-cookie@4.1.3: - resolution: {integrity: sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==} + totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + + tough-cookie@4.1.4: + resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} engines: {node: '>=6'} trim-newlines@3.0.1: resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} engines: {node: '>=8'} - ts-api-utils@1.0.1: - resolution: {integrity: sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A==} - engines: {node: '>=16.13.0'} + ts-api-utils@1.3.0: + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} peerDependencies: typescript: '>=4.2.0' - ts-node@10.9.1: - resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} + ts-node@10.9.2: + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} hasBin: true peerDependencies: '@swc/core': '>=1.2.50' @@ -3471,8 +3916,8 @@ packages: '@swc/wasm': optional: true - tslib@2.6.0: - resolution: {integrity: sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==} + tslib@2.8.0: + resolution: {integrity: sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==} tunnel-agent@0.6.0: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} @@ -3484,16 +3929,12 @@ packages: tweetnacl@0.14.5: resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} - type-check@0.3.2: - resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} - engines: {node: '>= 0.8.0'} - type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} - type-detect@4.0.8: - resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + type-detect@4.1.0: + resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==} engines: {node: '>=4'} type-fest@0.13.1: @@ -3520,20 +3961,30 @@ packages: resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} engines: {node: '>=8'} + type-fest@4.26.1: + resolution: {integrity: sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==} + engines: {node: '>=16'} + typedarray-to-buffer@3.1.5: resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - typescript@5.1.6: - resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} + typescript@5.6.3: + resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} engines: {node: '>=14.17'} hasBin: true ufo@1.5.4: resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} + undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + + undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} @@ -3542,16 +3993,16 @@ packages: resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} engines: {node: '>= 4.0.0'} - universalify@2.0.0: - resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} untildify@4.0.0: resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} engines: {node: '>=8'} - update-browserslist-db@1.0.11: - resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} + update-browserslist-db@1.1.1: + resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -3583,6 +4034,11 @@ packages: resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} engines: {'0': node >=0.6.0} + vite-node@2.1.3: + resolution: {integrity: sha512-I1JadzO+xYX887S39Do+paRePCKoiDrWRRjp9kkG5he0t7RXNvPAJPCQSJqbGN4uCrFFeS3Kj3sLqY8NMYBEdA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + vite@3.1.6: resolution: {integrity: sha512-qMXIwnehvvcK5XfJiXQUiTxoYAEMKhM+jqCY6ZSTKFBKu1hJnAKEzP3AOcnTerI0cMZYAaJ4wpW1wiXLMDt4mA==} engines: {node: ^14.18.0 || >=16.0.0} @@ -3602,6 +4058,62 @@ packages: terser: optional: true + vite@5.4.9: + resolution: {integrity: sha512-20OVpJHh0PAM0oSOELa5GaZNWeDjcAvQjGXy2Uyr+Tp+/D2/Hdz6NLgpJLsarPTA2QJ6v8mX2P1ZfbsSKvdMkg==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + vitest@2.1.3: + resolution: {integrity: sha512-Zrxbg/WiIvUP2uEzelDNTXmEMJXuzJ1kCpbDvaKByFA9MNeO95V+7r/3ti0qzJzrxdyuUw5VduN7k+D3VmVOSA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/node': ^18.0.0 || >=20.0.0 + '@vitest/browser': 2.1.3 + '@vitest/ui': 2.1.3 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + which-module@2.0.1: resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} @@ -3614,16 +4126,15 @@ packages: engines: {node: '>= 8'} hasBin: true - wide-align@1.1.3: - resolution: {integrity: sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==} + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true word-wrap@1.2.5: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} - workerpool@6.1.0: - resolution: {integrity: sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg==} - wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} @@ -3632,12 +4143,28 @@ packages: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} write-file-atomic@3.0.3: resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} + ws@8.18.0: + resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + xtend@2.2.0: resolution: {integrity: sha512-SLt5uylT+4aoXxXuwtQp5ZnMMzhDb1Xkg4pEqc00WUJCQifPfV9Ub1VrNhp9kXkrjZD2I2Hl8WnjP37jzZLPZw==} engines: {node: '>=0.4'} @@ -3667,25 +4194,21 @@ packages: resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} engines: {node: '>=6'} - yargs-parser@20.2.4: - resolution: {integrity: sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==} - engines: {node: '>=10'} - yargs-parser@20.2.9: resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} - yargs-unparser@2.0.0: - resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} - engines: {node: '>=10'} + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} yargs@15.4.1: resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} engines: {node: '>=8'} - yargs@16.2.0: - resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} - engines: {node: '>=10'} + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} yauzl@2.10.0: resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} @@ -3698,144 +4221,148 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} -snapshots: + yoctocolors-cjs@2.1.2: + resolution: {integrity: sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==} + engines: {node: '>=18'} - '@aashutoshrathi/word-wrap@1.2.6': {} +snapshots: - '@ampproject/remapping@2.2.1': + '@ampproject/remapping@2.3.0': dependencies: - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.18 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 - '@babel/code-frame@7.22.5': + '@babel/code-frame@7.25.7': dependencies: - '@babel/highlight': 7.22.5 + '@babel/highlight': 7.25.7 + picocolors: 1.1.1 - '@babel/compat-data@7.22.9': {} + '@babel/compat-data@7.25.8': {} - '@babel/core@7.22.9': + '@babel/core@7.25.8': dependencies: - '@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(supports-color@8.1.1) + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.25.7 + '@babel/generator': 7.25.7 + '@babel/helper-compilation-targets': 7.25.7 + '@babel/helper-module-transforms': 7.25.7(@babel/core@7.25.8) + '@babel/helpers': 7.25.7 + '@babel/parser': 7.25.8 + '@babel/template': 7.25.7 + '@babel/traverse': 7.25.7 + '@babel/types': 7.25.8 + convert-source-map: 2.0.0 + debug: 4.3.7(supports-color@8.1.1) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/generator@7.22.9': + '@babel/generator@7.25.7': dependencies: - '@babel/types': 7.22.5 - '@jridgewell/gen-mapping': 0.3.3 - '@jridgewell/trace-mapping': 0.3.18 - jsesc: 2.5.2 + '@babel/types': 7.25.8 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.0.2 - '@babel/helper-compilation-targets@7.22.9(@babel/core@7.22.9)': + '@babel/helper-compilation-targets@7.25.7': dependencies: - '@babel/compat-data': 7.22.9 - '@babel/core': 7.22.9 - '@babel/helper-validator-option': 7.22.5 - browserslist: 4.21.9 + '@babel/compat-data': 7.25.8 + '@babel/helper-validator-option': 7.25.7 + browserslist: 4.24.0 lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-environment-visitor@7.22.5': {} - - '@babel/helper-function-name@7.22.5': - dependencies: - '@babel/template': 7.22.5 - '@babel/types': 7.22.5 - - '@babel/helper-hoist-variables@7.22.5': + '@babel/helper-module-imports@7.25.7': dependencies: - '@babel/types': 7.22.5 - - '@babel/helper-module-imports@7.22.5': - dependencies: - '@babel/types': 7.22.5 - - '@babel/helper-module-transforms@7.22.9(@babel/core@7.22.9)': - dependencies: - '@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 + '@babel/traverse': 7.25.7 + '@babel/types': 7.25.8 + transitivePeerDependencies: + - supports-color - '@babel/helper-simple-access@7.22.5': + '@babel/helper-module-transforms@7.25.7(@babel/core@7.25.8)': dependencies: - '@babel/types': 7.22.5 + '@babel/core': 7.25.8 + '@babel/helper-module-imports': 7.25.7 + '@babel/helper-simple-access': 7.25.7 + '@babel/helper-validator-identifier': 7.25.7 + '@babel/traverse': 7.25.7 + transitivePeerDependencies: + - supports-color - '@babel/helper-split-export-declaration@7.22.6': + '@babel/helper-simple-access@7.25.7': dependencies: - '@babel/types': 7.22.5 + '@babel/traverse': 7.25.7 + '@babel/types': 7.25.8 + transitivePeerDependencies: + - supports-color - '@babel/helper-string-parser@7.22.5': {} + '@babel/helper-string-parser@7.25.7': {} - '@babel/helper-validator-identifier@7.22.5': {} + '@babel/helper-validator-identifier@7.25.7': {} - '@babel/helper-validator-option@7.22.5': {} + '@babel/helper-validator-option@7.25.7': {} - '@babel/helpers@7.22.6': + '@babel/helpers@7.25.7': dependencies: - '@babel/template': 7.22.5 - '@babel/traverse': 7.22.8 - '@babel/types': 7.22.5 - transitivePeerDependencies: - - supports-color + '@babel/template': 7.25.7 + '@babel/types': 7.25.8 - '@babel/highlight@7.22.5': + '@babel/highlight@7.25.7': dependencies: - '@babel/helper-validator-identifier': 7.22.5 + '@babel/helper-validator-identifier': 7.25.7 chalk: 2.4.2 js-tokens: 4.0.0 + picocolors: 1.1.1 - '@babel/parser@7.22.7': + '@babel/parser@7.25.8': dependencies: - '@babel/types': 7.22.5 + '@babel/types': 7.25.8 - '@babel/runtime@7.22.6': + '@babel/runtime@7.25.7': dependencies: - regenerator-runtime: 0.13.11 + regenerator-runtime: 0.14.1 - '@babel/template@7.22.5': + '@babel/template@7.25.7': dependencies: - '@babel/code-frame': 7.22.5 - '@babel/parser': 7.22.7 - '@babel/types': 7.22.5 + '@babel/code-frame': 7.25.7 + '@babel/parser': 7.25.8 + '@babel/types': 7.25.8 - '@babel/traverse@7.22.8': + '@babel/traverse@7.25.7': dependencies: - '@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(supports-color@8.1.1) + '@babel/code-frame': 7.25.7 + '@babel/generator': 7.25.7 + '@babel/parser': 7.25.8 + '@babel/template': 7.25.7 + '@babel/types': 7.25.8 + debug: 4.3.7(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: - supports-color - '@babel/types@7.22.5': + '@babel/types@7.25.8': dependencies: - '@babel/helper-string-parser': 7.22.5 - '@babel/helper-validator-identifier': 7.22.5 + '@babel/helper-string-parser': 7.25.7 + '@babel/helper-validator-identifier': 7.25.7 to-fast-properties: 2.0.0 + '@bcoe/v8-coverage@0.2.3': {} + + '@bundled-es-modules/cookie@2.0.0': + dependencies: + cookie: 0.5.0 + + '@bundled-es-modules/statuses@1.0.1': + dependencies: + statuses: 2.0.1 + + '@bundled-es-modules/tough-cookie@0.1.6': + dependencies: + '@types/tough-cookie': 4.0.5 + tough-cookie: 4.1.4 + '@choojs/findup@0.2.1': dependencies: commander: 2.20.3 @@ -3845,13 +4372,13 @@ snapshots: '@commitlint/cli@11.0.0': dependencies: - '@babel/runtime': 7.22.6 + '@babel/runtime': 7.25.7 '@commitlint/format': 11.0.0 '@commitlint/lint': 11.0.0 '@commitlint/load': 11.0.0 '@commitlint/read': 11.0.0 chalk: 4.1.0 - core-js: 3.31.1 + core-js: 3.38.1 get-stdin: 8.0.0 lodash: 4.17.21 resolve-from: 5.0.0 @@ -3938,7 +4465,7 @@ snapshots: '@cypress/request@2.88.12': dependencies: aws-sign2: 0.7.0 - aws4: 1.12.0 + aws4: 1.13.2 caseless: 0.12.0 combined-stream: 1.0.8 extend: 3.0.2 @@ -3952,7 +4479,7 @@ snapshots: performance-now: 2.1.0 qs: 6.10.4 safe-buffer: 5.2.1 - tough-cookie: 4.1.3 + tough-cookie: 4.1.4 tunnel-agent: 0.6.0 uuid: 8.3.2 @@ -3965,7 +4492,7 @@ snapshots: '@electron/get@1.14.1': dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) env-paths: 2.2.1 fs-extra: 8.1.0 got: 9.6.0 @@ -3978,26 +4505,95 @@ snapshots: transitivePeerDependencies: - supports-color + '@esbuild/aix-ppc64@0.21.5': + optional: true + + '@esbuild/android-arm64@0.21.5': + optional: true + '@esbuild/android-arm@0.15.18': optional: true + '@esbuild/android-arm@0.21.5': + optional: true + + '@esbuild/android-x64@0.21.5': + optional: true + + '@esbuild/darwin-arm64@0.21.5': + optional: true + + '@esbuild/darwin-x64@0.21.5': + optional: true + + '@esbuild/freebsd-arm64@0.21.5': + optional: true + + '@esbuild/freebsd-x64@0.21.5': + optional: true + + '@esbuild/linux-arm64@0.21.5': + optional: true + + '@esbuild/linux-arm@0.21.5': + optional: true + + '@esbuild/linux-ia32@0.21.5': + optional: true + '@esbuild/linux-loong64@0.15.18': optional: true - '@eslint-community/eslint-utils@4.4.0(eslint@8.46.0)': + '@esbuild/linux-loong64@0.21.5': + optional: true + + '@esbuild/linux-mips64el@0.21.5': + optional: true + + '@esbuild/linux-ppc64@0.21.5': + optional: true + + '@esbuild/linux-riscv64@0.21.5': + optional: true + + '@esbuild/linux-s390x@0.21.5': + optional: true + + '@esbuild/linux-x64@0.21.5': + optional: true + + '@esbuild/netbsd-x64@0.21.5': + optional: true + + '@esbuild/openbsd-x64@0.21.5': + optional: true + + '@esbuild/sunos-x64@0.21.5': + optional: true + + '@esbuild/win32-arm64@0.21.5': + optional: true + + '@esbuild/win32-ia32@0.21.5': + optional: true + + '@esbuild/win32-x64@0.21.5': + optional: true + + '@eslint-community/eslint-utils@4.4.0(eslint@8.57.1)': dependencies: - eslint: 8.46.0 - eslint-visitor-keys: 3.4.2 + eslint: 8.57.1 + eslint-visitor-keys: 3.4.3 - '@eslint-community/regexpp@4.6.2': {} + '@eslint-community/regexpp@4.11.1': {} - '@eslint/eslintrc@2.1.1': + '@eslint/eslintrc@2.1.4': dependencies: ajv: 6.12.6 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) espree: 9.6.1 - globals: 13.20.0 - ignore: 5.2.4 + globals: 13.24.0 + ignore: 5.3.2 import-fresh: 3.3.0 js-yaml: 4.1.0 minimatch: 3.1.2 @@ -4005,7 +4601,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@8.46.0': {} + '@eslint/js@8.57.1': {} '@fastify/deepmerge@1.3.0': {} @@ -4079,17 +4675,56 @@ snapshots: transitivePeerDependencies: - '@galacean/engine' - '@humanwhocodes/config-array@0.11.10': + '@humanwhocodes/config-array@0.13.0': dependencies: - '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.4(supports-color@8.1.1) + '@humanwhocodes/object-schema': 2.0.3 + debug: 4.3.7(supports-color@8.1.1) minimatch: 3.1.2 transitivePeerDependencies: - supports-color '@humanwhocodes/module-importer@1.0.1': {} - '@humanwhocodes/object-schema@1.2.1': {} + '@humanwhocodes/object-schema@2.0.3': {} + + '@inquirer/confirm@3.2.0': + dependencies: + '@inquirer/core': 9.2.1 + '@inquirer/type': 1.5.5 + + '@inquirer/core@9.2.1': + dependencies: + '@inquirer/figures': 1.0.7 + '@inquirer/type': 2.0.0 + '@types/mute-stream': 0.0.4 + '@types/node': 22.7.6 + '@types/wrap-ansi': 3.0.0 + ansi-escapes: 4.3.2 + cli-width: 4.1.0 + mute-stream: 1.0.0 + signal-exit: 4.1.0 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + yoctocolors-cjs: 2.1.2 + + '@inquirer/figures@1.0.7': {} + + '@inquirer/type@1.5.5': + dependencies: + mute-stream: 1.0.0 + + '@inquirer/type@2.0.0': + dependencies: + mute-stream: 1.0.0 + + '@isaacs/cliui@8.0.2': + 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 '@istanbuljs/load-nyc-config@1.1.0': dependencies: @@ -4101,31 +4736,27 @@ snapshots: '@istanbuljs/schema@0.1.3': {} - '@jridgewell/gen-mapping@0.3.3': + '@jridgewell/gen-mapping@0.3.5': dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.18 + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 - '@jridgewell/resolve-uri@3.1.0': {} + '@jridgewell/resolve-uri@3.1.2': {} - '@jridgewell/resolve-uri@3.1.1': {} + '@jridgewell/set-array@1.2.1': {} - '@jridgewell/set-array@1.1.2': {} + '@jridgewell/sourcemap-codec@1.5.0': {} - '@jridgewell/sourcemap-codec@1.4.14': {} - - '@jridgewell/sourcemap-codec@1.4.15': {} - - '@jridgewell/trace-mapping@0.3.18': + '@jridgewell/trace-mapping@0.3.25': dependencies: - '@jridgewell/resolve-uri': 3.1.0 - '@jridgewell/sourcemap-codec': 1.4.14 + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 '@jridgewell/trace-mapping@0.3.9': dependencies: - '@jridgewell/resolve-uri': 3.1.1 - '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 '@jsbits/escape-regex-str@1.0.3': {} @@ -4135,8 +4766,17 @@ snapshots: dependencies: call-me-maybe: 1.0.2 cross-spawn: 7.0.3 - string-argv: 0.3.1 - type-detect: 4.0.8 + string-argv: 0.3.2 + type-detect: 4.1.0 + + '@mswjs/interceptors@0.35.9': + dependencies: + '@open-draft/deferred-promise': 2.2.0 + '@open-draft/logger': 0.3.0 + '@open-draft/until': 2.1.0 + is-node-process: 1.2.0 + outvariant: 1.4.3 + strict-event-emitter: 0.5.1 '@napi-rs/magic-string-android-arm-eabi@0.3.4': optional: true @@ -4203,118 +4843,256 @@ snapshots: '@nodelib/fs.walk@1.2.8': dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.15.0 + fastq: 1.17.1 + + '@open-draft/deferred-promise@2.2.0': {} - '@pkgr/utils@2.4.2': + '@open-draft/logger@0.3.0': dependencies: - cross-spawn: 7.0.3 - fast-glob: 3.3.1 + is-node-process: 1.2.0 + outvariant: 1.4.3 + + '@open-draft/until@2.1.0': {} + + '@parcel/watcher-android-arm64@2.4.1': + optional: true + + '@parcel/watcher-darwin-arm64@2.4.1': + optional: true + + '@parcel/watcher-darwin-x64@2.4.1': + optional: true + + '@parcel/watcher-freebsd-x64@2.4.1': + optional: true + + '@parcel/watcher-linux-arm-glibc@2.4.1': + optional: true + + '@parcel/watcher-linux-arm64-glibc@2.4.1': + optional: true + + '@parcel/watcher-linux-arm64-musl@2.4.1': + optional: true + + '@parcel/watcher-linux-x64-glibc@2.4.1': + optional: true + + '@parcel/watcher-linux-x64-musl@2.4.1': + optional: true + + '@parcel/watcher-win32-arm64@2.4.1': + optional: true + + '@parcel/watcher-win32-ia32@2.4.1': + optional: true + + '@parcel/watcher-win32-x64@2.4.1': + optional: true + + '@parcel/watcher@2.4.1': + dependencies: + detect-libc: 1.0.3 is-glob: 4.0.3 - open: 9.1.0 - picocolors: 1.0.0 - tslib: 2.6.0 + micromatch: 4.0.8 + node-addon-api: 7.1.1 + optionalDependencies: + '@parcel/watcher-android-arm64': 2.4.1 + '@parcel/watcher-darwin-arm64': 2.4.1 + '@parcel/watcher-darwin-x64': 2.4.1 + '@parcel/watcher-freebsd-x64': 2.4.1 + '@parcel/watcher-linux-arm-glibc': 2.4.1 + '@parcel/watcher-linux-arm64-glibc': 2.4.1 + '@parcel/watcher-linux-arm64-musl': 2.4.1 + '@parcel/watcher-linux-x64-glibc': 2.4.1 + '@parcel/watcher-linux-x64-musl': 2.4.1 + '@parcel/watcher-win32-arm64': 2.4.1 + '@parcel/watcher-win32-ia32': 2.4.1 + '@parcel/watcher-win32-x64': 2.4.1 + + '@pkgjs/parseargs@0.11.0': + optional: true - '@rollup/plugin-commonjs@17.1.0(rollup@2.79.1)': + '@pkgr/core@0.1.1': {} + + '@polka/url@1.0.0-next.28': {} + + '@rollup/plugin-commonjs@17.1.0(rollup@2.79.2)': dependencies: - '@rollup/pluginutils': 3.1.0(rollup@2.79.1) + '@rollup/pluginutils': 3.1.0(rollup@2.79.2) commondir: 1.0.1 estree-walker: 2.0.2 glob: 7.2.3 is-reference: 1.2.1 magic-string: 0.25.9 - resolve: 1.22.2 - rollup: 2.79.1 + resolve: 1.22.8 + rollup: 2.79.2 - '@rollup/plugin-inject@4.0.4(rollup@2.79.1)': + '@rollup/plugin-inject@4.0.4(rollup@2.79.2)': dependencies: - '@rollup/pluginutils': 3.1.0(rollup@2.79.1) + '@rollup/pluginutils': 3.1.0(rollup@2.79.2) estree-walker: 2.0.2 magic-string: 0.25.9 - rollup: 2.79.1 + rollup: 2.79.2 - '@rollup/plugin-node-resolve@11.2.1(rollup@2.79.1)': + '@rollup/plugin-node-resolve@11.2.1(rollup@2.79.2)': dependencies: - '@rollup/pluginutils': 3.1.0(rollup@2.79.1) + '@rollup/pluginutils': 3.1.0(rollup@2.79.2) '@types/resolve': 1.17.1 builtin-modules: 3.3.0 deepmerge: 4.3.1 is-module: 1.0.0 - resolve: 1.22.2 - rollup: 2.79.1 + resolve: 1.22.8 + rollup: 2.79.2 - '@rollup/plugin-replace@2.4.2(rollup@2.79.1)': + '@rollup/plugin-replace@2.4.2(rollup@2.79.2)': dependencies: - '@rollup/pluginutils': 3.1.0(rollup@2.79.1) + '@rollup/pluginutils': 3.1.0(rollup@2.79.2) magic-string: 0.25.9 - rollup: 2.79.1 + rollup: 2.79.2 - '@rollup/pluginutils@3.1.0(rollup@2.79.1)': + '@rollup/pluginutils@3.1.0(rollup@2.79.2)': dependencies: '@types/estree': 0.0.39 estree-walker: 1.0.1 picomatch: 2.3.1 - rollup: 2.79.1 + rollup: 2.79.2 - '@rollup/pluginutils@4.2.1': + '@rollup/pluginutils@5.1.2(rollup@2.79.2)': dependencies: + '@types/estree': 1.0.6 estree-walker: 2.0.2 picomatch: 2.3.1 + optionalDependencies: + rollup: 2.79.2 + + '@rollup/rollup-android-arm-eabi@4.24.0': + optional: true + + '@rollup/rollup-android-arm64@4.24.0': + optional: true + + '@rollup/rollup-darwin-arm64@4.24.0': + optional: true + + '@rollup/rollup-darwin-x64@4.24.0': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.24.0': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.24.0': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.24.0': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.24.0': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.24.0': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.24.0': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.24.0': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.24.0': + optional: true + + '@rollup/rollup-linux-x64-musl@4.24.0': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.24.0': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.24.0': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.24.0': + optional: true '@sindresorhus/is@0.14.0': {} - '@swc/core-darwin-arm64@1.3.70': + '@swc/core-darwin-arm64@1.7.36': optional: true - '@swc/core-darwin-x64@1.3.70': + '@swc/core-darwin-x64@1.7.36': optional: true - '@swc/core-linux-arm-gnueabihf@1.3.70': + '@swc/core-linux-arm-gnueabihf@1.7.36': optional: true - '@swc/core-linux-arm64-gnu@1.3.70': + '@swc/core-linux-arm64-gnu@1.7.36': optional: true - '@swc/core-linux-arm64-musl@1.3.70': + '@swc/core-linux-arm64-musl@1.7.36': optional: true - '@swc/core-linux-x64-gnu@1.3.70': + '@swc/core-linux-x64-gnu@1.7.36': optional: true - '@swc/core-linux-x64-musl@1.3.70': + '@swc/core-linux-x64-musl@1.7.36': optional: true - '@swc/core-win32-arm64-msvc@1.3.70': + '@swc/core-win32-arm64-msvc@1.7.36': optional: true - '@swc/core-win32-ia32-msvc@1.3.70': + '@swc/core-win32-ia32-msvc@1.7.36': optional: true - '@swc/core-win32-x64-msvc@1.3.70': + '@swc/core-win32-x64-msvc@1.7.36': optional: true - '@swc/core@1.3.70(@swc/helpers@0.5.1)': + '@swc/core@1.7.36(@swc/helpers@0.5.13)': + dependencies: + '@swc/counter': 0.1.3 + '@swc/types': 0.1.13 optionalDependencies: - '@swc/core-darwin-arm64': 1.3.70 - '@swc/core-darwin-x64': 1.3.70 - '@swc/core-linux-arm-gnueabihf': 1.3.70 - '@swc/core-linux-arm64-gnu': 1.3.70 - '@swc/core-linux-arm64-musl': 1.3.70 - '@swc/core-linux-x64-gnu': 1.3.70 - '@swc/core-linux-x64-musl': 1.3.70 - '@swc/core-win32-arm64-msvc': 1.3.70 - '@swc/core-win32-ia32-msvc': 1.3.70 - '@swc/core-win32-x64-msvc': 1.3.70 - '@swc/helpers': 0.5.1 - - '@swc/helpers@0.5.1': - dependencies: - tslib: 2.6.0 + '@swc/core-darwin-arm64': 1.7.36 + '@swc/core-darwin-x64': 1.7.36 + '@swc/core-linux-arm-gnueabihf': 1.7.36 + '@swc/core-linux-arm64-gnu': 1.7.36 + '@swc/core-linux-arm64-musl': 1.7.36 + '@swc/core-linux-x64-gnu': 1.7.36 + '@swc/core-linux-x64-musl': 1.7.36 + '@swc/core-win32-arm64-msvc': 1.7.36 + '@swc/core-win32-ia32-msvc': 1.7.36 + '@swc/core-win32-x64-msvc': 1.7.36 + '@swc/helpers': 0.5.13 + + '@swc/counter@0.1.3': {} + + '@swc/helpers@0.5.13': + dependencies: + tslib: 2.8.0 + + '@swc/types@0.1.13': + dependencies: + '@swc/counter': 0.1.3 '@szmarczak/http-timer@1.1.2': dependencies: defer-to-connect: 1.1.3 - '@tsconfig/node10@1.0.9': {} + '@testing-library/dom@10.4.0': + dependencies: + '@babel/code-frame': 7.25.7 + '@babel/runtime': 7.25.7 + '@types/aria-query': 5.0.4 + aria-query: 5.3.0 + chalk: 4.1.2 + dom-accessibility-api: 0.5.16 + lz-string: 1.5.0 + pretty-format: 27.5.1 + + '@testing-library/user-event@14.5.2(@testing-library/dom@10.4.0)': + dependencies: + '@testing-library/dom': 10.4.0 + + '@tsconfig/node10@1.0.11': {} '@tsconfig/node12@1.0.11': {} @@ -4322,159 +5100,286 @@ snapshots: '@tsconfig/node16@1.0.4': {} - '@types/chai-spies@1.0.3': - dependencies: - '@types/chai': 4.3.5 + '@types/aria-query@5.0.4': {} - '@types/chai@4.3.5': {} + '@types/cookie@0.6.0': {} '@types/estree@0.0.39': {} - '@types/estree@1.0.1': {} + '@types/estree@1.0.6': {} - '@types/json-schema@7.0.12': {} + '@types/json-schema@7.0.15': {} '@types/keyv@3.1.4': dependencies: - '@types/node': 18.17.0 + '@types/node': 18.19.56 + + '@types/minimist@1.2.5': {} + + '@types/mute-stream@0.0.4': + dependencies: + '@types/node': 18.19.56 - '@types/minimist@1.2.2': {} + '@types/node@14.18.63': {} - '@types/mocha@8.2.3': {} + '@types/node@16.18.114': {} - '@types/node@14.18.54': {} + '@types/node@18.19.56': + dependencies: + undici-types: 5.26.5 - '@types/node@18.17.0': {} + '@types/node@22.7.6': + dependencies: + undici-types: 6.19.8 - '@types/normalize-package-data@2.4.1': {} + '@types/normalize-package-data@2.4.4': {} - '@types/parse-json@4.0.0': {} + '@types/parse-json@4.0.2': {} '@types/resolve@1.17.1': dependencies: - '@types/node': 18.17.0 + '@types/node': 18.19.56 - '@types/responselike@1.0.0': + '@types/responselike@1.0.3': dependencies: - '@types/node': 18.17.0 + '@types/node': 18.19.56 - '@types/semver@7.5.0': {} + '@types/semver@7.5.8': {} '@types/sinonjs__fake-timers@8.1.1': {} '@types/sizzle@2.3.8': {} - '@types/webxr@0.5.16': {} + '@types/statuses@2.0.5': {} + + '@types/tough-cookie@4.0.5': {} + + '@types/webxr@0.5.20': {} + + '@types/wrap-ansi@3.0.0': {} '@types/yauzl@2.10.3': dependencies: - '@types/node': 18.17.0 + '@types/node': 18.19.56 optional: true - '@typescript-eslint/eslint-plugin@6.2.0(@typescript-eslint/parser@6.2.0(eslint@8.46.0)(typescript@5.1.6))(eslint@8.46.0)(typescript@5.1.6)': + '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1)(typescript@5.6.3)': dependencies: - '@eslint-community/regexpp': 4.6.2 - '@typescript-eslint/parser': 6.2.0(eslint@8.46.0)(typescript@5.1.6) - '@typescript-eslint/scope-manager': 6.2.0 - '@typescript-eslint/type-utils': 6.2.0(eslint@8.46.0)(typescript@5.1.6) - '@typescript-eslint/utils': 6.2.0(eslint@8.46.0)(typescript@5.1.6) - '@typescript-eslint/visitor-keys': 6.2.0 - debug: 4.3.4(supports-color@8.1.1) - eslint: 8.46.0 + '@eslint-community/regexpp': 4.11.1 + '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@5.6.3) + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/type-utils': 6.21.0(eslint@8.57.1)(typescript@5.6.3) + '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 6.21.0 + debug: 4.3.7(supports-color@8.1.1) + eslint: 8.57.1 graphemer: 1.4.0 - ignore: 5.2.4 + ignore: 5.3.2 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) + semver: 7.6.3 + ts-api-utils: 1.3.0(typescript@5.6.3) optionalDependencies: - typescript: 5.1.6 + typescript: 5.6.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@6.2.0(eslint@8.46.0)(typescript@5.1.6)': + '@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@5.6.3)': dependencies: - '@typescript-eslint/scope-manager': 6.2.0 - '@typescript-eslint/types': 6.2.0 - '@typescript-eslint/typescript-estree': 6.2.0(typescript@5.1.6) - '@typescript-eslint/visitor-keys': 6.2.0 - debug: 4.3.4(supports-color@8.1.1) - eslint: 8.46.0 + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 6.21.0 + debug: 4.3.7(supports-color@8.1.1) + eslint: 8.57.1 optionalDependencies: - typescript: 5.1.6 + typescript: 5.6.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@6.2.0': + '@typescript-eslint/scope-manager@6.21.0': dependencies: - '@typescript-eslint/types': 6.2.0 - '@typescript-eslint/visitor-keys': 6.2.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/visitor-keys': 6.21.0 - '@typescript-eslint/type-utils@6.2.0(eslint@8.46.0)(typescript@5.1.6)': + '@typescript-eslint/type-utils@6.21.0(eslint@8.57.1)(typescript@5.6.3)': dependencies: - '@typescript-eslint/typescript-estree': 6.2.0(typescript@5.1.6) - '@typescript-eslint/utils': 6.2.0(eslint@8.46.0)(typescript@5.1.6) - debug: 4.3.4(supports-color@8.1.1) - eslint: 8.46.0 - ts-api-utils: 1.0.1(typescript@5.1.6) + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.6.3) + '@typescript-eslint/utils': 6.21.0(eslint@8.57.1)(typescript@5.6.3) + debug: 4.3.7(supports-color@8.1.1) + eslint: 8.57.1 + ts-api-utils: 1.3.0(typescript@5.6.3) optionalDependencies: - typescript: 5.1.6 + typescript: 5.6.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@6.2.0': {} + '@typescript-eslint/types@6.21.0': {} - '@typescript-eslint/typescript-estree@6.2.0(typescript@5.1.6)': + '@typescript-eslint/typescript-estree@6.21.0(typescript@5.6.3)': dependencies: - '@typescript-eslint/types': 6.2.0 - '@typescript-eslint/visitor-keys': 6.2.0 - debug: 4.3.4(supports-color@8.1.1) + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/visitor-keys': 6.21.0 + debug: 4.3.7(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 - semver: 7.5.4 - ts-api-utils: 1.0.1(typescript@5.1.6) + minimatch: 9.0.3 + semver: 7.6.3 + ts-api-utils: 1.3.0(typescript@5.6.3) optionalDependencies: - typescript: 5.1.6 + typescript: 5.6.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@6.2.0(eslint@8.46.0)(typescript@5.1.6)': + '@typescript-eslint/utils@6.21.0(eslint@8.57.1)(typescript@5.6.3)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0) - '@types/json-schema': 7.0.12 - '@types/semver': 7.5.0 - '@typescript-eslint/scope-manager': 6.2.0 - '@typescript-eslint/types': 6.2.0 - '@typescript-eslint/typescript-estree': 6.2.0(typescript@5.1.6) - eslint: 8.46.0 - semver: 7.5.4 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.1) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.8 + '@typescript-eslint/scope-manager': 6.21.0 + '@typescript-eslint/types': 6.21.0 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.6.3) + eslint: 8.57.1 + semver: 7.6.3 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/visitor-keys@6.2.0': + '@typescript-eslint/visitor-keys@6.21.0': + dependencies: + '@typescript-eslint/types': 6.21.0 + eslint-visitor-keys: 3.4.3 + + '@ungap/structured-clone@1.2.0': {} + + '@vitest/browser@2.1.3(@vitest/spy@2.1.3)(playwright@1.48.1)(typescript@5.6.3)(vite@5.4.9(@types/node@18.19.56)(sass@1.80.2))(vitest@2.1.3)': + dependencies: + '@testing-library/dom': 10.4.0 + '@testing-library/user-event': 14.5.2(@testing-library/dom@10.4.0) + '@vitest/mocker': 2.1.3(@vitest/spy@2.1.3)(msw@2.4.11(typescript@5.6.3))(vite@5.4.9(@types/node@18.19.56)(sass@1.80.2)) + '@vitest/utils': 2.1.3 + magic-string: 0.30.12 + msw: 2.4.11(typescript@5.6.3) + sirv: 2.0.4 + tinyrainbow: 1.2.0 + vitest: 2.1.3(@types/node@18.19.56)(@vitest/browser@2.1.3)(msw@2.4.11(typescript@5.6.3))(sass@1.80.2) + ws: 8.18.0 + optionalDependencies: + playwright: 1.48.1 + transitivePeerDependencies: + - '@vitest/spy' + - bufferutil + - typescript + - utf-8-validate + - vite + optional: true + + '@vitest/browser@2.1.3(@vitest/spy@2.1.3)(playwright@1.48.1)(typescript@5.6.3)(vite@5.4.9(@types/node@22.7.6)(sass@1.80.2))(vitest@2.1.3)': + dependencies: + '@testing-library/dom': 10.4.0 + '@testing-library/user-event': 14.5.2(@testing-library/dom@10.4.0) + '@vitest/mocker': 2.1.3(@vitest/spy@2.1.3)(msw@2.4.11(typescript@5.6.3))(vite@5.4.9(@types/node@22.7.6)(sass@1.80.2)) + '@vitest/utils': 2.1.3 + magic-string: 0.30.12 + msw: 2.4.11(typescript@5.6.3) + sirv: 2.0.4 + tinyrainbow: 1.2.0 + vitest: 2.1.3(@types/node@22.7.6)(@vitest/browser@2.1.3)(msw@2.4.11(typescript@5.6.3))(sass@1.80.2) + ws: 8.18.0 + optionalDependencies: + playwright: 1.48.1 + transitivePeerDependencies: + - '@vitest/spy' + - bufferutil + - typescript + - utf-8-validate + - vite + + '@vitest/coverage-v8@2.1.3(@vitest/browser@2.1.3(@vitest/spy@2.1.3)(playwright@1.48.1)(typescript@5.6.3)(vite@5.4.9(@types/node@18.19.56)(sass@1.80.2))(vitest@2.1.3))(vitest@2.1.3(@types/node@18.19.56)(@vitest/browser@2.1.3)(msw@2.4.11(typescript@5.6.3))(sass@1.80.2))': + dependencies: + '@ampproject/remapping': 2.3.0 + '@bcoe/v8-coverage': 0.2.3 + debug: 4.3.7(supports-color@8.1.1) + istanbul-lib-coverage: 3.2.2 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 5.0.6 + istanbul-reports: 3.1.7 + magic-string: 0.30.12 + magicast: 0.3.5 + std-env: 3.7.0 + test-exclude: 7.0.1 + tinyrainbow: 1.2.0 + vitest: 2.1.3(@types/node@18.19.56)(@vitest/browser@2.1.3)(msw@2.4.11(typescript@5.6.3))(sass@1.80.2) + optionalDependencies: + '@vitest/browser': 2.1.3(@vitest/spy@2.1.3)(playwright@1.48.1)(typescript@5.6.3)(vite@5.4.9(@types/node@18.19.56)(sass@1.80.2))(vitest@2.1.3) + transitivePeerDependencies: + - supports-color + + '@vitest/expect@2.1.3': + dependencies: + '@vitest/spy': 2.1.3 + '@vitest/utils': 2.1.3 + chai: 5.1.1 + tinyrainbow: 1.2.0 + + '@vitest/mocker@2.1.3(@vitest/spy@2.1.3)(msw@2.4.11(typescript@5.6.3))(vite@5.4.9(@types/node@18.19.56)(sass@1.80.2))': dependencies: - '@typescript-eslint/types': 6.2.0 - eslint-visitor-keys: 3.4.2 + '@vitest/spy': 2.1.3 + estree-walker: 3.0.3 + magic-string: 0.30.12 + optionalDependencies: + msw: 2.4.11(typescript@5.6.3) + vite: 5.4.9(@types/node@18.19.56)(sass@1.80.2) + + '@vitest/mocker@2.1.3(@vitest/spy@2.1.3)(msw@2.4.11(typescript@5.6.3))(vite@5.4.9(@types/node@22.7.6)(sass@1.80.2))': + dependencies: + '@vitest/spy': 2.1.3 + estree-walker: 3.0.3 + magic-string: 0.30.12 + optionalDependencies: + msw: 2.4.11(typescript@5.6.3) + vite: 5.4.9(@types/node@22.7.6)(sass@1.80.2) + + '@vitest/pretty-format@2.1.3': + dependencies: + tinyrainbow: 1.2.0 + + '@vitest/runner@2.1.3': + dependencies: + '@vitest/utils': 2.1.3 + pathe: 1.1.2 + + '@vitest/snapshot@2.1.3': + dependencies: + '@vitest/pretty-format': 2.1.3 + magic-string: 0.30.12 + pathe: 1.1.2 - '@ungap/promise-all-settled@1.1.2': {} + '@vitest/spy@2.1.3': + dependencies: + tinyspy: 3.0.2 + + '@vitest/utils@2.1.3': + dependencies: + '@vitest/pretty-format': 2.1.3 + loupe: 3.1.2 + tinyrainbow: 1.2.0 JSONStream@1.3.5: dependencies: jsonparse: 1.3.1 through: 2.3.8 - acorn-jsx@5.3.2(acorn@8.10.0): + acorn-jsx@5.3.2(acorn@8.13.0): dependencies: - acorn: 8.10.0 + acorn: 8.13.0 - acorn-walk@8.2.0: {} + acorn-walk@8.3.4: + dependencies: + acorn: 8.13.0 acorn@7.4.1: {} - acorn@8.10.0: {} - - acorn@8.12.1: {} + acorn@8.13.0: {} aggregate-error@3.1.0: dependencies: @@ -4488,18 +5393,16 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - ansi-colors@4.1.1: {} - ansi-colors@4.1.3: {} ansi-escapes@4.3.2: dependencies: type-fest: 0.21.3 - ansi-regex@3.0.1: {} - ansi-regex@5.0.1: {} + ansi-regex@6.1.0: {} + ansi-styles@3.2.1: dependencies: color-convert: 1.9.3 @@ -4508,6 +5411,10 @@ snapshots: dependencies: color-convert: 2.0.1 + ansi-styles@5.2.0: {} + + ansi-styles@6.2.1: {} + anymatch@3.1.3: dependencies: normalize-path: 3.0.0 @@ -4529,6 +5436,10 @@ snapshots: argparse@2.0.1: {} + aria-query@5.3.0: + dependencies: + dequal: 2.0.3 + array-ify@1.0.0: {} array-union@2.1.0: {} @@ -4541,11 +5452,11 @@ snapshots: assert-plus@1.0.0: {} - assertion-error@1.1.0: {} + assertion-error@2.0.1: {} astral-regex@2.0.0: {} - async@3.2.5: {} + async@3.2.6: {} asynckit@0.4.0: {} @@ -4553,7 +5464,7 @@ snapshots: aws-sign2@0.7.0: {} - aws4@1.12.0: {} + aws4@1.13.2: {} balanced-match@1.0.2: {} @@ -4563,9 +5474,7 @@ snapshots: dependencies: tweetnacl: 0.14.5 - big-integer@1.6.51: {} - - binary-extensions@2.2.0: {} + binary-extensions@2.3.0: {} bl@2.2.1: dependencies: @@ -4579,27 +5488,25 @@ snapshots: boolean@3.2.0: optional: true - bplist-parser@0.2.0: - dependencies: - big-integer: 1.6.51 - brace-expansion@1.1.11: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - braces@3.0.2: + brace-expansion@2.0.1: dependencies: - fill-range: 7.0.1 + balanced-match: 1.0.2 - browser-stdout@1.3.1: {} + braces@3.0.3: + dependencies: + fill-range: 7.1.1 - browserslist@4.21.9: + browserslist@4.24.0: dependencies: - caniuse-lite: 1.0.30001517 - electron-to-chromium: 1.4.468 - node-releases: 2.0.13 - update-browserslist-db: 1.0.11(browserslist@4.21.9) + caniuse-lite: 1.0.30001669 + electron-to-chromium: 1.5.41 + node-releases: 2.0.18 + update-browserslist-db: 1.1.1(browserslist@4.24.0) buffer-crc32@0.2.13: {} @@ -4612,12 +5519,12 @@ snapshots: builtin-modules@3.3.0: {} - bumpp@9.5.2: + bumpp@9.7.1(magicast@0.3.5): dependencies: '@jsdevtools/ez-spawn': 3.0.4 - c12: 1.11.1 + c12: 1.11.2(magicast@0.3.5) cac: 6.7.14 - escalade: 3.1.2 + escalade: 3.2.0 fast-glob: 3.3.2 js-yaml: 4.1.0 jsonc-parser: 3.3.1 @@ -4626,24 +5533,22 @@ snapshots: transitivePeerDependencies: - magicast - bundle-name@3.0.0: - dependencies: - run-applescript: 5.0.0 - - c12@1.11.1: + c12@1.11.2(magicast@0.3.5): dependencies: chokidar: 3.6.0 - confbox: 0.1.7 + confbox: 0.1.8 defu: 6.1.4 dotenv: 16.4.5 giget: 1.2.3 jiti: 1.21.6 - mlly: 1.7.1 - ohash: 1.1.3 + mlly: 1.7.2 + ohash: 1.1.4 pathe: 1.1.2 perfect-debounce: 1.0.0 - pkg-types: 1.2.0 + pkg-types: 1.2.1 rc9: 2.1.2 + optionalDependencies: + magicast: 0.3.5 cac@6.7.14: {} @@ -4666,11 +5571,13 @@ snapshots: package-hash: 4.0.0 write-file-atomic: 3.0.3 - call-bind@1.0.5: + call-bind@1.0.7: dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 function-bind: 1.1.2 - get-intrinsic: 1.2.1 - set-function-length: 1.1.1 + get-intrinsic: 1.2.4 + set-function-length: 1.2.2 call-me-maybe@1.0.2: {} @@ -4684,25 +5591,17 @@ snapshots: camelcase@5.3.1: {} - camelcase@6.3.0: {} - - caniuse-lite@1.0.30001517: {} + caniuse-lite@1.0.30001669: {} caseless@0.12.0: {} - chai-spies@1.0.0(chai@4.3.7): - dependencies: - chai: 4.3.7 - - chai@4.3.7: + chai@5.1.1: dependencies: - assertion-error: 1.1.0 - check-error: 1.0.2 - deep-eql: 4.1.3 - get-func-name: 2.0.0 - loupe: 2.3.6 - pathval: 1.1.1 - type-detect: 4.0.8 + assertion-error: 2.0.1 + check-error: 2.1.1 + deep-eql: 5.0.2 + loupe: 3.1.2 + pathval: 2.0.0 chalk@2.4.2: dependencies: @@ -4718,35 +5617,27 @@ snapshots: chalk@4.1.2: dependencies: ansi-styles: 4.3.0 - supports-color: 7.2.0 - - check-error@1.0.2: {} - - check-more-types@2.24.0: {} - - chokidar@3.5.1: - dependencies: - anymatch: 3.1.3 - braces: 3.0.2 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.5.0 - optionalDependencies: - fsevents: 2.3.2 + supports-color: 7.2.0 + + check-error@2.1.1: {} + + check-more-types@2.24.0: {} chokidar@3.6.0: dependencies: anymatch: 3.1.3 - braces: 3.0.2 + braces: 3.0.3 glob-parent: 5.1.2 is-binary-path: 2.1.0 is-glob: 4.0.3 normalize-path: 3.0.0 readdirp: 3.6.0 optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 + + chokidar@4.0.1: + dependencies: + readdirp: 4.0.2 chownr@2.0.0: {} @@ -4762,7 +5653,7 @@ snapshots: dependencies: restore-cursor: 3.1.0 - cli-table3@0.6.3: + cli-table3@0.6.5: dependencies: string-width: 4.2.3 optionalDependencies: @@ -4773,13 +5664,15 @@ snapshots: slice-ansi: 3.0.0 string-width: 4.2.3 + cli-width@4.1.0: {} + cliui@6.0.0: dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 6.2.0 - cliui@7.0.4: + cliui@8.0.1: dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 @@ -4811,8 +5704,6 @@ snapshots: commander@6.2.1: {} - commander@7.2.0: {} - common-tags@1.8.2: {} commondir@1.0.1: {} @@ -4831,7 +5722,7 @@ snapshots: readable-stream: 2.3.8 typedarray: 0.0.6 - confbox@0.1.7: {} + confbox@0.1.8: {} config-chain@1.1.13: dependencies: @@ -4863,7 +5754,11 @@ snapshots: convert-source-map@1.9.0: {} - core-js@3.31.1: {} + convert-source-map@2.0.0: {} + + cookie@0.5.0: {} + + core-js@3.38.1: {} core-util-is@1.0.2: {} @@ -4871,7 +5766,7 @@ snapshots: cosmiconfig@7.1.0: dependencies: - '@types/parse-json': 4.0.0 + '@types/parse-json': 4.0.2 import-fresh: 3.3.0 parse-json: 5.2.0 path-type: 4.0.0 @@ -4897,13 +5792,15 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 - cypress-recurse@1.23.0: {} + cypress-recurse@1.35.3: + dependencies: + humanize-duration: 3.32.1 - cypress@12.17.1: + cypress@12.17.4: dependencies: '@cypress/request': 2.88.12 '@cypress/xvfb': 1.2.4(supports-color@8.1.1) - '@types/node': 14.18.54 + '@types/node': 16.18.114 '@types/sinonjs__fake-timers': 8.1.1 '@types/sizzle': 2.3.8 arch: 2.2.0 @@ -4914,12 +5811,12 @@ snapshots: chalk: 4.1.2 check-more-types: 2.24.0 cli-cursor: 3.1.0 - cli-table3: 0.6.3 + cli-table3: 0.6.5 commander: 6.2.1 common-tags: 1.8.2 - dayjs: 1.11.10 - debug: 4.3.4(supports-color@8.1.1) - enquirer: 2.3.6 + dayjs: 1.11.13 + debug: 4.3.7(supports-color@8.1.1) + enquirer: 2.4.1 eventemitter2: 6.4.7 execa: 4.1.0 executable: 4.1.1 @@ -4930,17 +5827,18 @@ snapshots: is-ci: 3.0.1 is-installed-globally: 0.4.0 lazy-ass: 1.6.0 - listr2: 3.14.0(enquirer@2.3.6) + listr2: 3.14.0(enquirer@2.4.1) lodash: 4.17.21 log-symbols: 4.1.0 minimist: 1.2.8 ospath: 1.2.2 pretty-bytes: 5.6.0 + process: 0.11.10 proxy-from-env: 1.0.0 request-progress: 3.0.0 - semver: 7.5.4 + semver: 7.6.3 supports-color: 8.1.1 - tmp: 0.2.1 + tmp: 0.2.3 untildify: 4.0.0 yauzl: 2.10.0 @@ -4952,7 +5850,7 @@ snapshots: dat.gui@0.7.9: {} - dayjs@1.11.10: {} + dayjs@1.11.13: {} debug@2.6.9: dependencies: @@ -4964,15 +5862,9 @@ snapshots: optionalDependencies: supports-color: 8.1.1 - debug@4.3.1(supports-color@8.1.1): - dependencies: - ms: 2.1.2 - optionalDependencies: - supports-color: 8.1.1 - - debug@4.3.4(supports-color@8.1.1): + debug@4.3.7(supports-color@8.1.1): dependencies: - ms: 2.1.2 + ms: 2.1.3 optionalDependencies: supports-color: 8.1.1 @@ -4983,51 +5875,34 @@ snapshots: decamelize@1.2.0: {} - decamelize@4.0.0: {} - decompress-response@3.3.0: dependencies: mimic-response: 1.0.1 dedent@0.7.0: {} - deep-eql@4.1.3: - dependencies: - type-detect: 4.0.8 + deep-eql@5.0.2: {} deep-is@0.1.4: {} deepmerge@4.3.1: {} - default-browser-id@3.0.0: - dependencies: - bplist-parser: 0.2.0 - untildify: 4.0.0 - - default-browser@4.0.0: - dependencies: - bundle-name: 3.0.0 - default-browser-id: 3.0.0 - execa: 7.2.0 - titleize: 3.0.0 - default-require-extensions@3.0.1: dependencies: strip-bom: 4.0.0 defer-to-connect@1.1.3: {} - define-data-property@1.1.1: + define-data-property@1.1.4: dependencies: - get-intrinsic: 1.2.1 + es-define-property: 1.0.0 + es-errors: 1.3.0 gopd: 1.0.1 - has-property-descriptors: 1.0.0 - - define-lazy-prop@3.0.0: {} - define-properties@1.2.0: + define-properties@1.2.1: dependencies: - has-property-descriptors: 1.0.0 + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 object-keys: 1.1.1 optional: true @@ -5035,15 +5910,17 @@ snapshots: delayed-stream@1.0.0: {} + dequal@2.0.3: {} + destr@2.0.3: {} + detect-libc@1.0.3: {} + detect-node@2.1.0: optional: true diff@4.0.2: {} - diff@5.0.0: {} - dir-glob@3.0.1: dependencies: path-type: 4.0.0 @@ -5052,6 +5929,8 @@ snapshots: dependencies: esutils: 2.0.3 + dom-accessibility-api@0.5.16: {} + dot-prop@5.3.0: dependencies: is-obj: 2.0.0 @@ -5065,25 +5944,29 @@ snapshots: end-of-stream: 1.4.4 inherits: 2.0.4 readable-stream: 2.3.8 - stream-shift: 1.0.1 + stream-shift: 1.0.3 + + eastasianwidth@0.2.0: {} ecc-jsbn@0.1.2: dependencies: jsbn: 0.1.1 safer-buffer: 2.1.2 - electron-to-chromium@1.4.468: {} + electron-to-chromium@1.5.41: {} electron@13.6.9: dependencies: '@electron/get': 1.14.1 - '@types/node': 14.18.54 + '@types/node': 14.18.63 extract-zip: 1.7.0 transitivePeerDependencies: - supports-color emoji-regex@8.0.0: {} + emoji-regex@9.2.2: {} + encodeurl@1.0.2: optional: true @@ -5091,9 +5974,10 @@ snapshots: dependencies: once: 1.4.0 - enquirer@2.3.6: + enquirer@2.4.1: dependencies: ansi-colors: 4.1.3 + strip-ansi: 6.0.1 env-paths@2.2.1: {} @@ -5101,6 +5985,12 @@ snapshots: dependencies: is-arrayish: 0.2.1 + es-define-property@1.0.0: + dependencies: + get-intrinsic: 1.2.4 + + es-errors@1.3.0: {} + es6-error@4.1.1: {} esbuild-android-64@0.15.18: @@ -5188,70 +6078,94 @@ snapshots: esbuild-windows-64: 0.15.18 esbuild-windows-arm64: 0.15.18 - escalade@3.1.1: {} - - escalade@3.1.2: {} + esbuild@0.21.5: + optionalDependencies: + '@esbuild/aix-ppc64': 0.21.5 + '@esbuild/android-arm': 0.21.5 + '@esbuild/android-arm64': 0.21.5 + '@esbuild/android-x64': 0.21.5 + '@esbuild/darwin-arm64': 0.21.5 + '@esbuild/darwin-x64': 0.21.5 + '@esbuild/freebsd-arm64': 0.21.5 + '@esbuild/freebsd-x64': 0.21.5 + '@esbuild/linux-arm': 0.21.5 + '@esbuild/linux-arm64': 0.21.5 + '@esbuild/linux-ia32': 0.21.5 + '@esbuild/linux-loong64': 0.21.5 + '@esbuild/linux-mips64el': 0.21.5 + '@esbuild/linux-ppc64': 0.21.5 + '@esbuild/linux-riscv64': 0.21.5 + '@esbuild/linux-s390x': 0.21.5 + '@esbuild/linux-x64': 0.21.5 + '@esbuild/netbsd-x64': 0.21.5 + '@esbuild/openbsd-x64': 0.21.5 + '@esbuild/sunos-x64': 0.21.5 + '@esbuild/win32-arm64': 0.21.5 + '@esbuild/win32-ia32': 0.21.5 + '@esbuild/win32-x64': 0.21.5 + + escalade@3.2.0: {} escape-string-regexp@1.0.5: {} escape-string-regexp@4.0.0: {} - escodegen@1.14.3: + escodegen@2.1.0: dependencies: esprima: 4.0.1 - estraverse: 4.3.0 + estraverse: 5.3.0 esutils: 2.0.3 - optionator: 0.8.3 optionalDependencies: source-map: 0.6.1 - eslint-config-prettier@8.9.0(eslint@8.46.0): + eslint-config-prettier@8.10.0(eslint@8.57.1): dependencies: - eslint: 8.46.0 + eslint: 8.57.1 - eslint-plugin-prettier@5.0.0(eslint-config-prettier@8.9.0(eslint@8.46.0))(eslint@8.46.0)(prettier@3.0.0): + eslint-plugin-prettier@5.2.1(eslint-config-prettier@8.10.0(eslint@8.57.1))(eslint@8.57.1)(prettier@3.3.3): dependencies: - eslint: 8.46.0 - prettier: 3.0.0 + eslint: 8.57.1 + prettier: 3.3.3 prettier-linter-helpers: 1.0.0 - synckit: 0.8.5 + synckit: 0.9.2 optionalDependencies: - eslint-config-prettier: 8.9.0(eslint@8.46.0) + eslint-config-prettier: 8.10.0(eslint@8.57.1) eslint-scope@7.2.2: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 - eslint-visitor-keys@3.4.2: {} + eslint-visitor-keys@3.4.3: {} - eslint@8.46.0: + eslint@8.57.1: dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.46.0) - '@eslint-community/regexpp': 4.6.2 - '@eslint/eslintrc': 2.1.1 - '@eslint/js': 8.46.0 - '@humanwhocodes/config-array': 0.11.10 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.1) + '@eslint-community/regexpp': 4.11.1 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.57.1 + '@humanwhocodes/config-array': 0.13.0 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.2 + eslint-visitor-keys: 3.4.3 espree: 9.6.1 - esquery: 1.5.0 + esquery: 1.6.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 + globals: 13.24.0 graphemer: 1.4.0 - ignore: 5.2.4 + ignore: 5.3.2 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 @@ -5261,7 +6175,7 @@ snapshots: lodash.merge: 4.6.2 minimatch: 3.1.2 natural-compare: 1.4.0 - optionator: 0.9.3 + optionator: 0.9.4 strip-ansi: 6.0.1 text-table: 0.2.0 transitivePeerDependencies: @@ -5269,13 +6183,13 @@ snapshots: espree@9.6.1: dependencies: - acorn: 8.10.0 - acorn-jsx: 5.3.2(acorn@8.10.0) - eslint-visitor-keys: 3.4.2 + acorn: 8.13.0 + acorn-jsx: 5.3.2(acorn@8.13.0) + eslint-visitor-keys: 3.4.3 esprima@4.0.1: {} - esquery@1.5.0: + esquery@1.6.0: dependencies: estraverse: 5.3.0 @@ -5283,8 +6197,6 @@ snapshots: dependencies: estraverse: 5.3.0 - estraverse@4.3.0: {} - estraverse@5.3.0: {} estree-walker@0.6.1: {} @@ -5293,6 +6205,10 @@ snapshots: estree-walker@2.0.2: {} + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.6 + esutils@2.0.3: {} eventemitter2@6.4.7: {} @@ -5311,30 +6227,6 @@ snapshots: signal-exit: 3.0.7 strip-final-newline: 2.0.0 - execa@5.1.1: - 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 - - execa@7.2.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 - execa@8.0.1: dependencies: cross-spawn: 7.0.3 @@ -5342,7 +6234,7 @@ snapshots: human-signals: 5.0.0 is-stream: 3.0.0 merge-stream: 2.0.0 - npm-run-path: 5.1.0 + npm-run-path: 5.3.0 onetime: 6.0.0 signal-exit: 4.1.0 strip-final-newline: 3.0.0 @@ -5364,7 +6256,7 @@ snapshots: extract-zip@2.0.1(supports-color@8.1.1): dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -5383,27 +6275,19 @@ snapshots: fast-diff@1.3.0: {} - fast-glob@3.3.1: - 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 - fast-glob@3.3.2: 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 + micromatch: 4.0.8 fast-json-stable-stringify@2.1.0: {} fast-levenshtein@2.0.6: {} - fastq@1.15.0: + fastq@1.17.1: dependencies: reusify: 1.0.4 @@ -5417,9 +6301,9 @@ snapshots: file-entry-cache@6.0.1: dependencies: - flat-cache: 3.0.4 + flat-cache: 3.2.0 - fill-range@7.0.1: + fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 @@ -5439,30 +6323,24 @@ snapshots: locate-path: 6.0.0 path-exists: 4.0.0 - flat-cache@3.0.4: + flat-cache@3.2.0: dependencies: - flatted: 3.2.7 + flatted: 3.3.1 + keyv: 4.5.4 rimraf: 3.0.2 - flat@5.0.2: {} - - flatted@3.2.7: {} - - floss@5.0.1(electron@13.6.9)(nyc@15.1.0): - dependencies: - chalk: 4.1.2 - commander: 7.2.0 - electron: 13.6.9 - glob: 7.2.3 - mocha: 8.4.0 - nyc: 15.1.0 - resolve: 1.22.2 + flatted@3.3.1: {} foreground-child@2.0.0: dependencies: cross-spawn: 7.0.3 signal-exit: 3.0.7 + foreground-child@3.3.0: + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + forever-agent@0.6.1: {} form-data@2.3.3: @@ -5482,7 +6360,7 @@ snapshots: dependencies: graceful-fs: 4.2.11 jsonfile: 6.1.0 - universalify: 2.0.0 + universalify: 2.0.1 fs-extra@8.1.0: dependencies: @@ -5495,7 +6373,7 @@ snapshots: at-least-node: 1.0.0 graceful-fs: 4.2.11 jsonfile: 6.1.0 - universalify: 2.0.0 + universalify: 2.0.1 fs-minipass@2.1.0: dependencies: @@ -5506,7 +6384,8 @@ snapshots: fsevents@2.3.2: optional: true - function-bind@1.1.1: {} + fsevents@2.3.3: + optional: true function-bind@1.1.2: {} @@ -5514,14 +6393,13 @@ snapshots: get-caller-file@2.0.5: {} - get-func-name@2.0.0: {} - - get-intrinsic@1.2.1: + get-intrinsic@1.2.4: dependencies: - function-bind: 1.1.1 - has: 1.0.3 - has-proto: 1.0.1 + es-errors: 1.3.0 + function-bind: 1.1.2 + has-proto: 1.0.3 has-symbols: 1.0.3 + hasown: 2.0.2 get-own-enumerable-property-symbols@3.0.2: {} @@ -5531,23 +6409,21 @@ snapshots: get-stream@4.1.0: dependencies: - pump: 3.0.0 + pump: 3.0.2 get-stream@5.2.0: dependencies: - pump: 3.0.0 - - get-stream@6.0.1: {} + pump: 3.0.2 get-stream@8.0.1: {} - get-tsconfig@4.6.2: + get-tsconfig@4.8.1: dependencies: resolve-pkg-maps: 1.0.0 getos@3.2.1: dependencies: - async: 3.2.5 + async: 3.2.6 getpass@0.1.7: dependencies: @@ -5559,8 +6435,8 @@ snapshots: consola: 3.2.3 defu: 6.1.4 node-fetch-native: 1.6.4 - nypm: 0.3.11 - ohash: 1.1.3 + nypm: 0.3.12 + ohash: 1.1.4 pathe: 1.1.2 tar: 6.2.1 @@ -5580,14 +6456,14 @@ snapshots: dependencies: is-glob: 4.0.3 - glob@7.1.6: + glob@10.4.5: dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.0.4 - once: 1.4.0 - path-is-absolute: 1.0.1 + foreground-child: 3.3.0 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 glob@7.2.3: dependencies: @@ -5604,7 +6480,7 @@ snapshots: es6-error: 4.1.1 matcher: 3.0.0 roarr: 2.15.4 - semver: 7.5.4 + semver: 7.6.3 serialize-error: 7.0.1 optional: true @@ -5626,21 +6502,22 @@ snapshots: globals@11.12.0: {} - globals@13.20.0: + globals@13.24.0: dependencies: type-fest: 0.20.2 - globalthis@1.0.3: + globalthis@1.0.4: dependencies: - define-properties: 1.2.0 + define-properties: 1.2.1 + gopd: 1.0.1 optional: true globby@11.1.0: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.3.1 - ignore: 5.2.4 + fast-glob: 3.3.2 + ignore: 5.3.2 merge2: 1.4.1 slash: 3.0.0 @@ -5706,7 +6583,7 @@ snapshots: graceful-fs: 4.2.11 inherits: 2.0.4 map-limit: 0.0.1 - resolve: 1.22.2 + resolve: 1.22.8 glslify@7.1.1: dependencies: @@ -5720,22 +6597,22 @@ snapshots: glslify-bundle: 5.1.1 glslify-deps: 1.3.2 minimist: 1.2.8 - resolve: 1.22.2 + resolve: 1.22.8 stack-trace: 0.0.9 - static-eval: 2.1.0 + static-eval: 2.1.1 through2: 2.0.5 xtend: 4.0.2 gopd@1.0.1: dependencies: - get-intrinsic: 1.2.1 + get-intrinsic: 1.2.4 got@9.6.0: dependencies: '@sindresorhus/is': 0.14.0 '@szmarczak/http-timer': 1.1.2 '@types/keyv': 3.1.4 - '@types/responselike': 1.0.0 + '@types/responselike': 1.0.3 cacheable-request: 6.1.0 decompress-response: 3.3.0 duplexer3: 0.1.5 @@ -5750,7 +6627,7 @@ snapshots: graphemer@1.4.0: {} - growl@1.10.5: {} + graphql@16.9.0: {} hard-rejection@2.1.0: {} @@ -5758,24 +6635,24 @@ snapshots: has-flag@4.0.0: {} - has-property-descriptors@1.0.0: + has-property-descriptors@1.0.2: dependencies: - get-intrinsic: 1.2.1 + es-define-property: 1.0.0 - has-proto@1.0.1: {} + has-proto@1.0.3: {} has-symbols@1.0.3: {} - has@1.0.3: - dependencies: - function-bind: 1.1.1 - hasha@5.2.2: dependencies: is-stream: 2.0.1 type-fest: 0.8.1 - he@1.2.0: {} + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + headers-polyfill@4.0.3: {} hosted-git-info@2.8.9: {} @@ -5795,19 +6672,17 @@ snapshots: human-signals@1.1.1: {} - human-signals@2.1.0: {} - - human-signals@4.3.1: {} - human-signals@5.0.0: {} + humanize-duration@3.32.1: {} + husky@8.0.3: {} ieee754@1.2.1: {} - ignore@5.2.4: {} + ignore@5.3.2: {} - immutable@4.3.4: {} + immutable@4.3.7: {} import-fresh@3.3.0: dependencies: @@ -5833,34 +6708,24 @@ snapshots: is-binary-path@2.1.0: dependencies: - binary-extensions: 2.2.0 + binary-extensions: 2.3.0 is-ci@3.0.1: dependencies: ci-info: 3.9.0 - is-core-module@2.12.1: + is-core-module@2.15.1: dependencies: - has: 1.0.3 - - is-docker@2.2.1: {} - - is-docker@3.0.0: {} + hasown: 2.0.2 is-extglob@2.1.1: {} - is-fullwidth-code-point@2.0.0: {} - is-fullwidth-code-point@3.0.0: {} is-glob@4.0.3: dependencies: is-extglob: 2.1.1 - is-inside-container@1.0.0: - dependencies: - is-docker: 3.0.0 - is-installed-globally@0.4.0: dependencies: global-dirs: 3.0.1 @@ -5868,6 +6733,8 @@ snapshots: is-module@1.0.0: {} + is-node-process@1.2.0: {} + is-number@7.0.0: {} is-obj@1.0.1: {} @@ -5878,11 +6745,9 @@ snapshots: is-plain-obj@1.1.0: {} - is-plain-obj@2.1.0: {} - is-reference@1.2.1: dependencies: - '@types/estree': 1.0.1 + '@types/estree': 1.0.6 is-regexp@1.0.0: {} @@ -5900,10 +6765,6 @@ snapshots: is-windows@1.0.2: {} - is-wsl@2.2.0: - dependencies: - is-docker: 2.2.1 - isarray@0.0.1: {} isarray@1.0.0: {} @@ -5914,7 +6775,7 @@ snapshots: isstream@0.1.2: {} - istanbul-lib-coverage@3.2.0: {} + istanbul-lib-coverage@3.2.2: {} istanbul-lib-hook@3.0.0: dependencies: @@ -5922,9 +6783,9 @@ snapshots: istanbul-lib-instrument@4.0.3: dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.25.8 '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.0 + istanbul-lib-coverage: 3.2.2 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -5933,29 +6794,43 @@ snapshots: dependencies: archy: 1.0.0 cross-spawn: 7.0.3 - istanbul-lib-coverage: 3.2.0 + istanbul-lib-coverage: 3.2.2 p-map: 3.0.0 rimraf: 3.0.2 uuid: 8.3.2 - istanbul-lib-report@3.0.0: + istanbul-lib-report@3.0.1: dependencies: - istanbul-lib-coverage: 3.2.0 - make-dir: 3.1.0 + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 supports-color: 7.2.0 istanbul-lib-source-maps@4.0.1: dependencies: - debug: 4.3.4(supports-color@8.1.1) - istanbul-lib-coverage: 3.2.0 + debug: 4.3.7(supports-color@8.1.1) + istanbul-lib-coverage: 3.2.2 source-map: 0.6.1 transitivePeerDependencies: - supports-color - istanbul-reports@3.1.5: + istanbul-lib-source-maps@5.0.6: + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + debug: 4.3.7(supports-color@8.1.1) + istanbul-lib-coverage: 3.2.2 + transitivePeerDependencies: + - supports-color + + istanbul-reports@3.1.7: dependencies: html-escaper: 2.0.2 - istanbul-lib-report: 3.0.0 + istanbul-lib-report: 3.0.1 + + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 jiti@1.21.6: {} @@ -5966,10 +6841,6 @@ snapshots: argparse: 1.0.10 esprima: 4.0.1 - js-yaml@4.0.0: - dependencies: - argparse: 2.0.1 - js-yaml@4.1.0: dependencies: argparse: 2.0.1 @@ -5984,10 +6855,12 @@ snapshots: perf-regexes: 1.0.1 skip-regex: 1.0.2 - jsesc@2.5.2: {} + jsesc@3.0.2: {} json-buffer@3.0.0: {} + json-buffer@3.0.1: {} + json-parse-even-better-errors@2.3.1: {} json-schema-traverse@0.4.1: {} @@ -6008,7 +6881,7 @@ snapshots: jsonfile@6.1.0: dependencies: - universalify: 2.0.0 + universalify: 2.0.1 optionalDependencies: graceful-fs: 4.2.11 @@ -6025,17 +6898,16 @@ snapshots: dependencies: json-buffer: 3.0.0 + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + kind-of@6.0.3: {} kleur@3.0.3: {} lazy-ass@1.6.0: {} - levn@0.3.0: - dependencies: - prelude-ls: 1.1.2 - type-check: 0.3.2 - levn@0.4.1: dependencies: prelude-ls: 1.2.1 @@ -6049,13 +6921,13 @@ snapshots: cli-truncate: 2.1.0 commander: 6.2.1 cosmiconfig: 7.1.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) dedent: 0.7.0 - enquirer: 2.3.6 + enquirer: 2.4.1 execa: 4.1.0 - listr2: 3.14.0(enquirer@2.3.6) + listr2: 3.14.0(enquirer@2.4.1) log-symbols: 4.1.0 - micromatch: 4.0.5 + micromatch: 4.0.8 normalize-path: 3.0.0 please-upgrade-node: 3.2.0 string-argv: 0.3.1 @@ -6063,18 +6935,18 @@ snapshots: transitivePeerDependencies: - supports-color - listr2@3.14.0(enquirer@2.3.6): + listr2@3.14.0(enquirer@2.4.1): dependencies: cli-truncate: 2.1.0 colorette: 2.0.20 log-update: 4.0.0 p-map: 4.0.0 - rfdc: 1.3.0 + rfdc: 1.4.1 rxjs: 7.8.1 through: 2.3.8 wrap-ansi: 7.0.0 optionalDependencies: - enquirer: 2.3.6 + enquirer: 2.4.1 locate-path@5.0.0: dependencies: @@ -6092,10 +6964,6 @@ snapshots: lodash@4.17.21: {} - log-symbols@4.0.0: - dependencies: - chalk: 4.1.2 - log-symbols@4.1.0: dependencies: chalk: 4.1.2 @@ -6108,14 +6976,14 @@ snapshots: slice-ansi: 4.0.0 wrap-ansi: 6.2.0 - loupe@2.3.6: - dependencies: - get-func-name: 2.0.0 + loupe@3.1.2: {} lowercase-keys@1.0.1: {} lowercase-keys@2.0.0: {} + lru-cache@10.4.3: {} + lru-cache@5.1.1: dependencies: yallist: 3.1.1 @@ -6124,6 +6992,8 @@ snapshots: dependencies: yallist: 4.0.0 + lz-string@1.5.0: {} + magic-string@0.25.2: dependencies: sourcemap-codec: 1.4.8 @@ -6132,10 +7002,24 @@ snapshots: dependencies: sourcemap-codec: 1.4.8 + magic-string@0.30.12: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + + magicast@0.3.5: + dependencies: + '@babel/parser': 7.25.8 + '@babel/types': 7.25.8 + source-map-js: 1.2.1 + make-dir@3.1.0: dependencies: semver: 6.3.1 + make-dir@4.0.0: + dependencies: + semver: 7.6.3 + make-error@1.3.6: {} map-limit@0.0.1: @@ -6153,7 +7037,7 @@ snapshots: meow@8.1.2: dependencies: - '@types/minimist': 1.2.2 + '@types/minimist': 1.2.5 camelcase-keys: 6.2.2 decamelize-keys: 1.1.1 hard-rejection: 2.1.0 @@ -6169,9 +7053,9 @@ snapshots: merge2@1.4.1: {} - micromatch@4.0.5: + micromatch@4.0.8: dependencies: - braces: 3.0.2 + braces: 3.0.3 picomatch: 2.3.1 mime-db@1.52.0: {} @@ -6180,7 +7064,7 @@ snapshots: dependencies: mime-db: 1.52.0 - mime@3.0.0: {} + mime@2.6.0: {} mimic-fn@2.1.0: {} @@ -6190,13 +7074,17 @@ snapshots: min-indent@1.0.1: {} - minimatch@3.0.4: + minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 - minimatch@3.1.2: + minimatch@9.0.3: dependencies: - brace-expansion: 1.1.11 + brace-expansion: 2.0.1 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 minimist-options@4.1.0: dependencies: @@ -6212,6 +7100,8 @@ snapshots: minipass@5.0.0: {} + minipass@7.1.2: {} + minizlib@2.1.2: dependencies: minipass: 3.3.6 @@ -6223,79 +7113,73 @@ snapshots: mkdirp@1.0.4: {} - mlly@1.7.1: + mlly@1.7.2: dependencies: - acorn: 8.12.1 + acorn: 8.13.0 pathe: 1.1.2 - pkg-types: 1.2.0 + pkg-types: 1.2.1 ufo: 1.5.4 - mocha@8.4.0: - dependencies: - '@ungap/promise-all-settled': 1.1.2 - ansi-colors: 4.1.1 - browser-stdout: 1.3.1 - chokidar: 3.5.1 - debug: 4.3.1(supports-color@8.1.1) - diff: 5.0.0 - escape-string-regexp: 4.0.0 - find-up: 5.0.0 - glob: 7.1.6 - growl: 1.10.5 - he: 1.2.0 - js-yaml: 4.0.0 - log-symbols: 4.0.0 - minimatch: 3.0.4 - ms: 2.1.3 - nanoid: 3.1.20 - serialize-javascript: 5.0.1 - strip-json-comments: 3.1.1 - supports-color: 8.1.1 - which: 2.0.2 - wide-align: 1.1.3 - workerpool: 6.1.0 - yargs: 16.2.0 - yargs-parser: 20.2.4 - yargs-unparser: 2.0.0 + mrmime@2.0.0: {} ms@2.0.0: {} - ms@2.1.2: {} - ms@2.1.3: {} + msw@2.4.11(typescript@5.6.3): + dependencies: + '@bundled-es-modules/cookie': 2.0.0 + '@bundled-es-modules/statuses': 1.0.1 + '@bundled-es-modules/tough-cookie': 0.1.6 + '@inquirer/confirm': 3.2.0 + '@mswjs/interceptors': 0.35.9 + '@open-draft/until': 2.1.0 + '@types/cookie': 0.6.0 + '@types/statuses': 2.0.5 + chalk: 4.1.2 + graphql: 16.9.0 + headers-polyfill: 4.0.3 + is-node-process: 1.2.0 + outvariant: 1.4.3 + path-to-regexp: 6.3.0 + strict-event-emitter: 0.5.1 + type-fest: 4.26.1 + yargs: 17.7.2 + optionalDependencies: + typescript: 5.6.3 + murmurhash-js@1.0.0: {} - nanoid@3.1.20: {} + mute-stream@1.0.0: {} nanoid@3.3.7: {} - natural-compare-lite@1.4.0: {} - natural-compare@1.4.0: {} nice-try@1.0.5: {} + node-addon-api@7.1.1: {} + node-fetch-native@1.6.4: {} node-preload@0.2.1: dependencies: process-on-spawn: 1.0.0 - node-releases@2.0.13: {} + node-releases@2.0.18: {} normalize-package-data@2.5.0: dependencies: hosted-git-info: 2.8.9 - resolve: 1.22.2 + resolve: 1.22.8 semver: 5.7.2 validate-npm-package-license: 3.0.4 normalize-package-data@3.0.3: dependencies: hosted-git-info: 4.1.0 - is-core-module: 2.12.1 - semver: 7.5.4 + is-core-module: 2.15.1 + semver: 7.6.3 validate-npm-package-license: 3.0.4 normalize-path@3.0.0: {} @@ -6312,7 +7196,7 @@ snapshots: dependencies: path-key: 3.1.1 - npm-run-path@5.1.0: + npm-run-path@5.3.0: dependencies: path-key: 4.0.0 @@ -6328,13 +7212,13 @@ snapshots: foreground-child: 2.0.0 get-package-type: 0.1.0 glob: 7.2.3 - istanbul-lib-coverage: 3.2.0 + istanbul-lib-coverage: 3.2.2 istanbul-lib-hook: 3.0.0 istanbul-lib-instrument: 4.0.3 istanbul-lib-processinfo: 2.0.3 - istanbul-lib-report: 3.0.0 + istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.5 + istanbul-reports: 3.1.7 make-dir: 3.1.0 node-preload: 0.2.1 p-map: 3.0.0 @@ -6348,23 +7232,23 @@ snapshots: transitivePeerDependencies: - supports-color - nypm@0.3.11: + nypm@0.3.12: dependencies: citty: 0.1.6 consola: 3.2.3 execa: 8.0.1 pathe: 1.1.2 - pkg-types: 1.2.0 + pkg-types: 1.2.1 ufo: 1.5.4 - object-inspect@1.13.1: {} + object-inspect@1.13.2: {} object-keys@1.1.1: optional: true - odiff-bin@2.5.0: {} + odiff-bin@2.6.1: {} - ohash@1.1.3: {} + ohash@1.1.4: {} once@1.3.3: dependencies: @@ -6382,32 +7266,16 @@ snapshots: dependencies: mimic-fn: 4.0.0 - open@9.1.0: - dependencies: - default-browser: 4.0.0 - define-lazy-prop: 3.0.0 - is-inside-container: 1.0.0 - is-wsl: 2.2.0 - opener@1.5.2: {} - optionator@0.8.3: - dependencies: - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.3.0 - prelude-ls: 1.1.2 - type-check: 0.3.2 - word-wrap: 1.2.5 - - optionator@0.9.3: + optionator@0.9.4: 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 + word-wrap: 1.2.5 ospath@1.2.2: {} @@ -6415,6 +7283,8 @@ snapshots: dependencies: glob: 7.2.3 + outvariant@1.4.3: {} + p-cancelable@1.1.0: {} p-limit@2.3.0: @@ -6450,13 +7320,15 @@ snapshots: lodash.flattendeep: 4.4.0 release-zalgo: 1.0.0 + package-json-from-dist@1.0.1: {} + parent-module@1.0.1: dependencies: callsites: 3.1.0 parse-json@5.2.0: dependencies: - '@babel/code-frame': 7.22.5 + '@babel/code-frame': 7.25.7 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -6473,11 +7345,18 @@ snapshots: path-parse@1.0.7: {} + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + + path-to-regexp@6.3.0: {} + path-type@4.0.0: {} pathe@1.1.2: {} - pathval@1.1.1: {} + pathval@2.0.0: {} pend@1.2.0: {} @@ -6487,7 +7366,7 @@ snapshots: performance-now@2.1.0: {} - picocolors@1.0.0: {} + picocolors@1.1.1: {} picomatch@2.3.1: {} @@ -6500,23 +7379,29 @@ snapshots: dependencies: find-up: 4.1.0 - pkg-types@1.2.0: + pkg-types@1.2.1: dependencies: - confbox: 0.1.7 - mlly: 1.7.1 + confbox: 0.1.8 + mlly: 1.7.2 pathe: 1.1.2 + playwright-core@1.48.1: {} + + playwright@1.48.1: + dependencies: + playwright-core: 1.48.1 + optionalDependencies: + fsevents: 2.3.2 + please-upgrade-node@3.2.0: dependencies: semver-compare: 1.0.0 - postcss@8.4.32: + postcss@8.4.47: dependencies: nanoid: 3.3.7 - picocolors: 1.0.0 - source-map-js: 1.0.2 - - prelude-ls@1.1.2: {} + picocolors: 1.1.1 + source-map-js: 1.2.1 prelude-ls@1.2.1: {} @@ -6526,16 +7411,24 @@ snapshots: dependencies: fast-diff: 1.3.0 - prettier@3.0.0: {} + prettier@3.3.3: {} pretty-bytes@5.6.0: {} + pretty-format@27.5.1: + dependencies: + ansi-regex: 5.0.1 + ansi-styles: 5.2.0 + react-is: 17.0.2 + process-nextick-args@2.0.1: {} process-on-spawn@1.0.0: dependencies: fromentries: 1.3.2 + process@0.11.10: {} + progress@2.0.3: {} prompts@2.4.2: @@ -6550,18 +7443,18 @@ snapshots: psl@1.9.0: {} - pump@3.0.0: + pump@3.0.2: dependencies: end-of-stream: 1.4.4 once: 1.4.0 - punycode@2.3.0: {} + punycode@2.3.1: {} q@1.5.1: {} qs@6.10.4: dependencies: - side-channel: 1.0.4 + side-channel: 1.0.6 querystringify@2.2.0: {} @@ -6569,15 +7462,13 @@ snapshots: quick-lru@4.0.1: {} - randombytes@2.1.0: - dependencies: - safe-buffer: 5.2.1 - rc9@2.1.2: dependencies: defu: 6.1.4 destr: 2.0.3 + react-is@17.0.2: {} + read-pkg-up@7.0.1: dependencies: find-up: 4.1.0 @@ -6586,7 +7477,7 @@ snapshots: read-pkg@5.2.0: dependencies: - '@types/normalize-package-data': 2.4.1 + '@types/normalize-package-data': 2.4.4 normalize-package-data: 2.5.0 parse-json: 5.2.0 type-fest: 0.6.0 @@ -6614,20 +7505,18 @@ snapshots: string_decoder: 1.3.0 util-deprecate: 1.0.2 - readdirp@3.5.0: - dependencies: - picomatch: 2.3.1 - readdirp@3.6.0: dependencies: picomatch: 2.3.1 + readdirp@4.0.2: {} + redent@3.0.0: dependencies: indent-string: 4.0.0 strip-indent: 3.0.0 - regenerator-runtime@0.13.11: {} + regenerator-runtime@0.14.1: {} release-zalgo@1.0.0: dependencies: @@ -6655,9 +7544,9 @@ snapshots: resolve@0.6.3: {} - resolve@1.22.2: + resolve@1.22.8: dependencies: - is-core-module: 2.12.1 + is-core-module: 2.15.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 @@ -6672,7 +7561,7 @@ snapshots: reusify@1.0.4: {} - rfdc@1.3.0: {} + rfdc@1.4.1: {} rimraf@3.0.2: dependencies: @@ -6682,10 +7571,10 @@ snapshots: dependencies: boolean: 3.2.0 detect-node: 2.1.0 - globalthis: 1.0.3 + globalthis: 1.0.4 json-stringify-safe: 5.0.1 semver-compare: 1.0.0 - sprintf-js: 1.1.2 + sprintf-js: 1.1.3 optional: true rollup-plugin-glslify@1.3.1: @@ -6693,11 +7582,11 @@ snapshots: glslify: 7.1.1 rollup-pluginutils: 2.8.2 - rollup-plugin-jscc@2.0.0(rollup@2.79.1): + rollup-plugin-jscc@2.0.0(rollup@2.79.2): dependencies: '@jsbits/get-package-version': 1.0.3 jscc: 1.1.1 - rollup: 2.79.1 + rollup: 2.79.2 rollup-pluginutils: 2.8.2 rollup-plugin-modify@3.0.0: @@ -6705,41 +7594,59 @@ snapshots: magic-string: 0.25.2 ospec: 3.1.0 - rollup-plugin-serve@1.1.0: + rollup-plugin-serve@1.1.1: dependencies: - mime: 3.0.0 + mime: 2.6.0 opener: 1.5.2 - rollup-plugin-swc3@0.10.1(@swc/core@1.3.70(@swc/helpers@0.5.1))(rollup@2.79.1): + rollup-plugin-swc3@0.10.4(@swc/core@1.7.36(@swc/helpers@0.5.13))(rollup@2.79.2): dependencies: '@fastify/deepmerge': 1.3.0 - '@rollup/pluginutils': 4.2.1 - '@swc/core': 1.3.70(@swc/helpers@0.5.1) - get-tsconfig: 4.6.2 - rollup: 2.79.1 - rollup-swc-preserve-directives: 0.3.2(@swc/core@1.3.70(@swc/helpers@0.5.1))(rollup@2.79.1) + '@rollup/pluginutils': 5.1.2(rollup@2.79.2) + '@swc/core': 1.7.36(@swc/helpers@0.5.13) + get-tsconfig: 4.8.1 + rollup: 2.79.2 + rollup-swc-preserve-directives: 0.6.0(@swc/core@1.7.36(@swc/helpers@0.5.13))(rollup@2.79.2) rollup-pluginutils@2.8.2: dependencies: estree-walker: 0.6.1 - rollup-swc-preserve-directives@0.3.2(@swc/core@1.3.70(@swc/helpers@0.5.1))(rollup@2.79.1): + rollup-swc-preserve-directives@0.6.0(@swc/core@1.7.36(@swc/helpers@0.5.13))(rollup@2.79.2): dependencies: '@napi-rs/magic-string': 0.3.4 - '@swc/core': 1.3.70(@swc/helpers@0.5.1) - rollup: 2.79.1 + '@swc/core': 1.7.36(@swc/helpers@0.5.13) + rollup: 2.79.2 rollup@2.78.1: optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 - rollup@2.79.1: + rollup@2.79.2: optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 - run-applescript@5.0.0: + rollup@4.24.0: dependencies: - execa: 5.1.1 + '@types/estree': 1.0.6 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.24.0 + '@rollup/rollup-android-arm64': 4.24.0 + '@rollup/rollup-darwin-arm64': 4.24.0 + '@rollup/rollup-darwin-x64': 4.24.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.24.0 + '@rollup/rollup-linux-arm-musleabihf': 4.24.0 + '@rollup/rollup-linux-arm64-gnu': 4.24.0 + '@rollup/rollup-linux-arm64-musl': 4.24.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.24.0 + '@rollup/rollup-linux-riscv64-gnu': 4.24.0 + '@rollup/rollup-linux-s390x-gnu': 4.24.0 + '@rollup/rollup-linux-x64-gnu': 4.24.0 + '@rollup/rollup-linux-x64-musl': 4.24.0 + '@rollup/rollup-win32-arm64-msvc': 4.24.0 + '@rollup/rollup-win32-ia32-msvc': 4.24.0 + '@rollup/rollup-win32-x64-msvc': 4.24.0 + fsevents: 2.3.3 run-parallel@1.2.0: dependencies: @@ -6747,7 +7654,7 @@ snapshots: rxjs@7.8.1: dependencies: - tslib: 2.6.0 + tslib: 2.8.0 safe-buffer@5.1.2: {} @@ -6755,11 +7662,12 @@ snapshots: safer-buffer@2.1.2: {} - sass@1.55.0: + sass@1.80.2: dependencies: - chokidar: 3.5.1 - immutable: 4.3.4 - source-map-js: 1.0.2 + '@parcel/watcher': 2.4.1 + chokidar: 4.0.1 + immutable: 4.3.7 + source-map-js: 1.2.1 semver-compare@1.0.0: {} @@ -6769,10 +7677,6 @@ snapshots: semver@7.3.2: {} - semver@7.5.4: - dependencies: - lru-cache: 6.0.0 - semver@7.6.3: {} serialize-error@7.0.1: @@ -6780,18 +7684,16 @@ snapshots: type-fest: 0.13.1 optional: true - serialize-javascript@5.0.1: - dependencies: - randombytes: 2.1.0 - set-blocking@2.0.0: {} - set-function-length@1.1.1: + set-function-length@1.2.2: dependencies: - define-data-property: 1.1.1 - get-intrinsic: 1.2.1 + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 gopd: 1.0.1 - has-property-descriptors: 1.0.0 + has-property-descriptors: 1.0.2 shallow-copy@0.0.1: {} @@ -6807,16 +7709,25 @@ snapshots: shebang-regex@3.0.0: {} - side-channel@1.0.4: + side-channel@1.0.6: dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.1 - object-inspect: 1.13.1 + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + object-inspect: 1.13.2 + + siginfo@2.0.0: {} signal-exit@3.0.7: {} signal-exit@4.1.0: {} + sirv@2.0.4: + dependencies: + '@polka/url': 1.0.0-next.28 + mrmime: 2.0.0 + totalist: 3.0.1 + sisteransi@1.0.5: {} skip-regex@1.0.2: {} @@ -6835,7 +7746,7 @@ snapshots: astral-regex: 2.0.0 is-fullwidth-code-point: 3.0.0 - source-map-js@1.0.2: {} + source-map-js@1.2.1: {} source-map@0.6.1: {} @@ -6853,16 +7764,16 @@ snapshots: spdx-correct@3.2.0: dependencies: spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.13 + spdx-license-ids: 3.0.20 - spdx-exceptions@2.3.0: {} + spdx-exceptions@2.5.0: {} spdx-expression-parse@3.0.1: dependencies: - spdx-exceptions: 2.3.0 - spdx-license-ids: 3.0.13 + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.20 - spdx-license-ids@3.0.13: {} + spdx-license-ids@3.0.20: {} split2@3.2.2: dependencies: @@ -6870,7 +7781,7 @@ snapshots: sprintf-js@1.0.3: {} - sprintf-js@1.1.2: + sprintf-js@1.1.3: optional: true sshpk@1.18.0: @@ -6887,18 +7798,23 @@ snapshots: stack-trace@0.0.9: {} - static-eval@2.1.0: + stackback@0.0.2: {} + + static-eval@2.1.1: dependencies: - escodegen: 1.14.3 + escodegen: 2.1.0 + + statuses@2.0.1: {} + + std-env@3.7.0: {} + + stream-shift@1.0.3: {} - stream-shift@1.0.1: {} + strict-event-emitter@0.5.1: {} string-argv@0.3.1: {} - string-width@2.1.1: - dependencies: - is-fullwidth-code-point: 2.0.0 - strip-ansi: 4.0.0 + string-argv@0.3.2: {} string-width@4.2.3: dependencies: @@ -6906,6 +7822,12 @@ snapshots: is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + string_decoder@0.10.31: {} string_decoder@1.1.1: @@ -6922,14 +7844,14 @@ snapshots: is-obj: 1.0.1 is-regexp: 1.0.0 - strip-ansi@4.0.0: - dependencies: - ansi-regex: 3.0.1 - strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.1.0 + strip-bom@4.0.0: {} strip-final-newline@2.0.0: {} @@ -6944,7 +7866,7 @@ snapshots: sumchecker@3.0.1: dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -6962,10 +7884,10 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - synckit@0.8.5: + synckit@0.9.2: dependencies: - '@pkgr/utils': 2.4.2 - tslib: 2.6.0 + '@pkgr/core': 0.1.1 + tslib: 2.8.0 tar@6.2.1: dependencies: @@ -6982,6 +7904,12 @@ snapshots: glob: 7.2.3 minimatch: 3.1.2 + test-exclude@7.0.1: + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 10.4.5 + minimatch: 9.0.5 + text-extensions@1.9.0: {} text-table@0.2.0: {} @@ -7004,11 +7932,17 @@ snapshots: through@2.3.8: {} - titleize@3.0.0: {} + tinybench@2.9.0: {} - tmp@0.2.1: - dependencies: - rimraf: 3.0.2 + tinyexec@0.3.1: {} + + tinypool@1.0.1: {} + + tinyrainbow@1.2.0: {} + + tinyspy@3.0.2: {} + + tmp@0.2.3: {} to-fast-properties@2.0.0: {} @@ -7018,40 +7952,42 @@ snapshots: dependencies: is-number: 7.0.0 - tough-cookie@4.1.3: + totalist@3.0.1: {} + + tough-cookie@4.1.4: dependencies: psl: 1.9.0 - punycode: 2.3.0 + punycode: 2.3.1 universalify: 0.2.0 url-parse: 1.5.10 trim-newlines@3.0.1: {} - ts-api-utils@1.0.1(typescript@5.1.6): + ts-api-utils@1.3.0(typescript@5.6.3): dependencies: - typescript: 5.1.6 + typescript: 5.6.3 - ts-node@10.9.1(@swc/core@1.3.70(@swc/helpers@0.5.1))(@types/node@18.17.0)(typescript@5.1.6): + ts-node@10.9.2(@swc/core@1.7.36(@swc/helpers@0.5.13))(@types/node@18.19.56)(typescript@5.6.3): dependencies: '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.9 + '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 18.17.0 - acorn: 8.10.0 - acorn-walk: 8.2.0 + '@types/node': 18.19.56 + acorn: 8.13.0 + acorn-walk: 8.3.4 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.1.6 + typescript: 5.6.3 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 optionalDependencies: - '@swc/core': 1.3.70(@swc/helpers@0.5.1) + '@swc/core': 1.7.36(@swc/helpers@0.5.13) - tslib@2.6.0: {} + tslib@2.8.0: {} tunnel-agent@0.6.0: dependencies: @@ -7062,15 +7998,11 @@ snapshots: tweetnacl@0.14.5: {} - type-check@0.3.2: - dependencies: - prelude-ls: 1.1.2 - type-check@0.4.0: dependencies: prelude-ls: 1.2.1 - type-detect@4.0.8: {} + type-detect@4.1.0: {} type-fest@0.13.1: optional: true @@ -7085,33 +8017,39 @@ snapshots: type-fest@0.8.1: {} + type-fest@4.26.1: {} + typedarray-to-buffer@3.1.5: dependencies: is-typedarray: 1.0.0 typedarray@0.0.6: {} - typescript@5.1.6: {} + typescript@5.6.3: {} ufo@1.5.4: {} + undici-types@5.26.5: {} + + undici-types@6.19.8: {} + universalify@0.1.2: {} universalify@0.2.0: {} - universalify@2.0.0: {} + universalify@2.0.1: {} untildify@4.0.0: {} - update-browserslist-db@1.0.11(browserslist@4.21.9): + update-browserslist-db@1.1.1(browserslist@4.24.0): dependencies: - browserslist: 4.21.9 - escalade: 3.1.1 - picocolors: 1.0.0 + browserslist: 4.24.0 + escalade: 3.2.0 + picocolors: 1.1.1 uri-js@4.4.1: dependencies: - punycode: 2.3.0 + punycode: 2.3.1 url-parse-lax@3.0.0: dependencies: @@ -7139,15 +8077,139 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - vite@3.1.6(sass@1.55.0): + vite-node@2.1.3(@types/node@18.19.56)(sass@1.80.2): + dependencies: + cac: 6.7.14 + debug: 4.3.7(supports-color@8.1.1) + pathe: 1.1.2 + vite: 5.4.9(@types/node@18.19.56)(sass@1.80.2) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + + vite-node@2.1.3(@types/node@22.7.6)(sass@1.80.2): + dependencies: + cac: 6.7.14 + debug: 4.3.7(supports-color@8.1.1) + pathe: 1.1.2 + vite: 5.4.9(@types/node@22.7.6)(sass@1.80.2) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + + vite@3.1.6(sass@1.80.2): dependencies: esbuild: 0.15.18 - postcss: 8.4.32 - resolve: 1.22.2 + postcss: 8.4.47 + resolve: 1.22.8 rollup: 2.78.1 optionalDependencies: - fsevents: 2.3.2 - sass: 1.55.0 + fsevents: 2.3.3 + sass: 1.80.2 + + vite@5.4.9(@types/node@18.19.56)(sass@1.80.2): + dependencies: + esbuild: 0.21.5 + postcss: 8.4.47 + rollup: 4.24.0 + optionalDependencies: + '@types/node': 18.19.56 + fsevents: 2.3.3 + sass: 1.80.2 + + vite@5.4.9(@types/node@22.7.6)(sass@1.80.2): + dependencies: + esbuild: 0.21.5 + postcss: 8.4.47 + rollup: 4.24.0 + optionalDependencies: + '@types/node': 22.7.6 + fsevents: 2.3.3 + sass: 1.80.2 + + vitest@2.1.3(@types/node@18.19.56)(@vitest/browser@2.1.3)(msw@2.4.11(typescript@5.6.3))(sass@1.80.2): + dependencies: + '@vitest/expect': 2.1.3 + '@vitest/mocker': 2.1.3(@vitest/spy@2.1.3)(msw@2.4.11(typescript@5.6.3))(vite@5.4.9(@types/node@18.19.56)(sass@1.80.2)) + '@vitest/pretty-format': 2.1.3 + '@vitest/runner': 2.1.3 + '@vitest/snapshot': 2.1.3 + '@vitest/spy': 2.1.3 + '@vitest/utils': 2.1.3 + chai: 5.1.1 + debug: 4.3.7(supports-color@8.1.1) + magic-string: 0.30.12 + pathe: 1.1.2 + std-env: 3.7.0 + tinybench: 2.9.0 + tinyexec: 0.3.1 + tinypool: 1.0.1 + tinyrainbow: 1.2.0 + vite: 5.4.9(@types/node@18.19.56)(sass@1.80.2) + vite-node: 2.1.3(@types/node@18.19.56)(sass@1.80.2) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 18.19.56 + '@vitest/browser': 2.1.3(@vitest/spy@2.1.3)(playwright@1.48.1)(typescript@5.6.3)(vite@5.4.9(@types/node@18.19.56)(sass@1.80.2))(vitest@2.1.3) + transitivePeerDependencies: + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + + vitest@2.1.3(@types/node@22.7.6)(@vitest/browser@2.1.3)(msw@2.4.11(typescript@5.6.3))(sass@1.80.2): + dependencies: + '@vitest/expect': 2.1.3 + '@vitest/mocker': 2.1.3(@vitest/spy@2.1.3)(msw@2.4.11(typescript@5.6.3))(vite@5.4.9(@types/node@22.7.6)(sass@1.80.2)) + '@vitest/pretty-format': 2.1.3 + '@vitest/runner': 2.1.3 + '@vitest/snapshot': 2.1.3 + '@vitest/spy': 2.1.3 + '@vitest/utils': 2.1.3 + chai: 5.1.1 + debug: 4.3.7(supports-color@8.1.1) + magic-string: 0.30.12 + pathe: 1.1.2 + std-env: 3.7.0 + tinybench: 2.9.0 + tinyexec: 0.3.1 + tinypool: 1.0.1 + tinyrainbow: 1.2.0 + vite: 5.4.9(@types/node@22.7.6)(sass@1.80.2) + vite-node: 2.1.3(@types/node@22.7.6)(sass@1.80.2) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 22.7.6 + '@vitest/browser': 2.1.3(@vitest/spy@2.1.3)(playwright@1.48.1)(typescript@5.6.3)(vite@5.4.9(@types/node@22.7.6)(sass@1.80.2))(vitest@2.1.3) + transitivePeerDependencies: + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser which-module@2.0.1: {} @@ -7159,14 +8221,13 @@ snapshots: dependencies: isexe: 2.0.0 - wide-align@1.1.3: + why-is-node-running@2.3.0: dependencies: - string-width: 2.1.1 + siginfo: 2.0.0 + stackback: 0.0.2 word-wrap@1.2.5: {} - workerpool@6.1.0: {} - wrap-ansi@6.2.0: dependencies: ansi-styles: 4.3.0 @@ -7179,6 +8240,12 @@ snapshots: string-width: 4.2.3 strip-ansi: 6.0.1 + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + wrappy@1.0.2: {} write-file-atomic@3.0.3: @@ -7188,6 +8255,8 @@ snapshots: signal-exit: 3.0.7 typedarray-to-buffer: 3.1.5 + ws@8.18.0: {} + xtend@2.2.0: {} xtend@4.0.2: {} @@ -7207,16 +8276,9 @@ snapshots: camelcase: 5.3.1 decamelize: 1.2.0 - yargs-parser@20.2.4: {} - yargs-parser@20.2.9: {} - yargs-unparser@2.0.0: - dependencies: - camelcase: 6.3.0 - decamelize: 4.0.0 - flat: 5.0.2 - is-plain-obj: 2.1.0 + yargs-parser@21.1.1: {} yargs@15.4.1: dependencies: @@ -7232,15 +8294,15 @@ snapshots: y18n: 4.0.3 yargs-parser: 18.1.3 - yargs@16.2.0: + yargs@17.7.2: dependencies: - cliui: 7.0.4 - escalade: 3.1.1 + cliui: 8.0.1 + escalade: 3.2.0 get-caller-file: 2.0.5 require-directory: 2.1.1 string-width: 4.2.3 y18n: 5.0.8 - yargs-parser: 20.2.4 + yargs-parser: 21.1.1 yauzl@2.10.0: dependencies: @@ -7250,3 +8312,5 @@ snapshots: yn@3.1.1: {} yocto-queue@0.1.0: {} + + yoctocolors-cjs@2.1.2: {} From 0874ae094e6026c6a3821bed1d202913fb1b70df Mon Sep 17 00:00:00 2001 From: luzhuang <364439895@qq.com> Date: Thu, 12 Dec 2024 20:36:42 +0800 Subject: [PATCH 02/20] feat: support get contract points and get closest point on shape from a point --- packages/core/src/physics/Collision.ts | 48 +++++++++++++++++++ packages/core/src/physics/PhysicsScene.ts | 35 +++++++------- .../core/src/physics/shape/ColliderShape.ts | 25 +++++++++- .../src/physics/shape/PlaneColliderShape.ts | 6 +++ packages/design/src/physics/ICollision.ts | 37 ++++++++++++++ packages/design/src/physics/IPhysics.ts | 7 +-- packages/design/src/physics/index.ts | 1 + .../src/physics/shape/IColliderShape.ts | 25 +++++++++- packages/design/src/physics/shape/index.ts | 2 +- packages/math/src/Quaternion.ts | 10 ++++ packages/physics-lite/src/LitePhysics.ts | 7 +-- packages/physics-lite/src/LitePhysicsScene.ts | 14 +++--- .../src/shape/LiteColliderShape.ts | 12 ++++- packages/physics-physx/src/PhysXPhysics.ts | 9 ++-- .../physics-physx/src/PhysXPhysicsScene.ts | 32 ++++++------- .../src/shape/PhysXColliderShape.ts | 12 ++++- 16 files changed, 227 insertions(+), 55 deletions(-) create mode 100644 packages/design/src/physics/ICollision.ts diff --git a/packages/core/src/physics/Collision.ts b/packages/core/src/physics/Collision.ts index db6497bf10..296b5504f5 100644 --- a/packages/core/src/physics/Collision.ts +++ b/packages/core/src/physics/Collision.ts @@ -1,5 +1,53 @@ +import { Vector3 } from "@galacean/engine-math"; import { ColliderShape } from "./shape"; +import { ICollision } from "@galacean/engine-design"; + +/** + * Describes a contact point where the collision occurs. + */ +export interface ContractPoint { + /** The position of the contact point between the shapes, in world space. */ + position: Vector3; + /** The normal of the contacting surfaces at the contact point. The normal direction points from the second shape to the first shape. */ + normal: Vector3; + /** The impulse applied at the contact point, in world space. Divide by the simulation time step to get a force value. */ + impulse: Vector3; + /** The separation of the shapes at the contact point. A negative separation denotes a penetration. */ + separation: number; +} export class Collision { + /** @internal */ + _nativeCollision: ICollision; + + /** The shape be collided. */ shape: ColliderShape; + + /** + * Get count of contact points. + */ + get contactCount(): number { + return this._nativeCollision.contactCount; + } + + /** + * Get contact points. + * @param contacts - The result of contact points + * @returns The result of contact points + */ + getContacts(contacts: ContractPoint[]): ContractPoint[] { + const nativeContractPoints = this._nativeCollision.getContacts(); + for (let i = 0, n = nativeContractPoints.size(); i < n; i++) { + const nativeContractPoint = nativeContractPoints.get(i); + const { position, normal, impulse, separation } = nativeContractPoint; + const contact: ContractPoint = { + position: new Vector3(position.x, position.y, position.z), + normal: new Vector3(normal.x, normal.y, normal.z), + impulse: new Vector3(impulse.x, impulse.y, impulse.z), + separation: separation + }; + contacts.push(contact); + } + return contacts; + } } diff --git a/packages/core/src/physics/PhysicsScene.ts b/packages/core/src/physics/PhysicsScene.ts index 251532dad7..dea373a767 100644 --- a/packages/core/src/physics/PhysicsScene.ts +++ b/packages/core/src/physics/PhysicsScene.ts @@ -1,4 +1,4 @@ -import { ICharacterController, ICollider, IPhysics, IPhysicsScene } from "@galacean/engine-design"; +import { ICharacterController, ICollider, IPhysics, IPhysicsScene, ICollision } from "@galacean/engine-design"; import { MathUtil, Ray, Vector3 } from "@galacean/engine-math"; import { Layer } from "../Layer"; import { Scene } from "../Scene"; @@ -28,14 +28,16 @@ export class PhysicsScene { private _gravity: Vector3 = new Vector3(0, -9.81, 0); private _nativePhysicsScene: IPhysicsScene; - private _onContactEnter = (obj1: number, obj2: number) => { + private _onContactEnter = (nativeCollision: ICollision) => { const physicalObjectsMap = Engine._physicalObjectsMap; - const shape1 = physicalObjectsMap[obj1]; - const shape2 = physicalObjectsMap[obj2]; + const { shape0Id, shape1Id } = nativeCollision; + const shape1 = physicalObjectsMap[shape0Id]; + const shape2 = physicalObjectsMap[shape1Id]; + const collision = PhysicsScene._collision; + collision._nativeCollision = nativeCollision; shape1.collider.entity._scripts.forEach( (element: Script) => { - let collision = PhysicsScene._collision; collision.shape = shape2; element.onCollisionEnter(collision); }, @@ -46,7 +48,6 @@ export class PhysicsScene { shape2.collider.entity._scripts.forEach( (element: Script) => { - let collision = PhysicsScene._collision; collision.shape = shape1; element.onCollisionEnter(collision); }, @@ -56,14 +57,16 @@ export class PhysicsScene { ); }; - private _onContactExit = (obj1: number, obj2: number) => { + private _onContactExit = (nativeCollision: ICollision) => { const physicalObjectsMap = Engine._physicalObjectsMap; - const shape1 = physicalObjectsMap[obj1]; - const shape2 = physicalObjectsMap[obj2]; + const { shape0Id, shape1Id } = nativeCollision; + const shape1 = physicalObjectsMap[shape0Id]; + const shape2 = physicalObjectsMap[shape1Id]; + const collision = PhysicsScene._collision; + collision._nativeCollision = nativeCollision; shape1.collider.entity._scripts.forEach( (element: Script) => { - let collision = PhysicsScene._collision; collision.shape = shape2; element.onCollisionExit(collision); }, @@ -74,7 +77,6 @@ export class PhysicsScene { shape2.collider.entity._scripts.forEach( (element: Script) => { - let collision = PhysicsScene._collision; collision.shape = shape1; element.onCollisionExit(collision); }, @@ -83,14 +85,16 @@ export class PhysicsScene { } ); }; - private _onContactStay = (obj1: number, obj2: number) => { + private _onContactStay = (nativeCollision: ICollision) => { const physicalObjectsMap = Engine._physicalObjectsMap; - const shape1 = physicalObjectsMap[obj1]; - const shape2 = physicalObjectsMap[obj2]; + const { shape0Id, shape1Id } = nativeCollision; + const shape1 = physicalObjectsMap[shape0Id]; + const shape2 = physicalObjectsMap[shape1Id]; + const collision = PhysicsScene._collision; + collision._nativeCollision = nativeCollision; shape1.collider.entity._scripts.forEach( (element: Script) => { - let collision = PhysicsScene._collision; collision.shape = shape2; element.onCollisionStay(collision); }, @@ -101,7 +105,6 @@ export class PhysicsScene { shape2.collider.entity._scripts.forEach( (element: Script) => { - let collision = PhysicsScene._collision; collision.shape = shape1; element.onCollisionStay(collision); }, diff --git a/packages/core/src/physics/shape/ColliderShape.ts b/packages/core/src/physics/shape/ColliderShape.ts index 79e6dc4239..346242abec 100644 --- a/packages/core/src/physics/shape/ColliderShape.ts +++ b/packages/core/src/physics/shape/ColliderShape.ts @@ -1,6 +1,6 @@ import { IColliderShape } from "@galacean/engine-design"; import { PhysicsMaterial } from "../PhysicsMaterial"; -import { Vector3 } from "@galacean/engine-math"; +import { Quaternion, Vector3 } from "@galacean/engine-math"; import { Collider } from "../Collider"; import { deepClone, ignoreClone } from "../../clone/CloneManager"; import { ICustomClone } from "../../clone/ComponentCloner"; @@ -11,6 +11,8 @@ import { Engine } from "../../Engine"; */ export abstract class ColliderShape implements ICustomClone { private static _idGenerator: number = 0; + private static _tempWorldPos: Vector3 = new Vector3(); + private static _tempWorldRot: Quaternion = new Quaternion(); /** @internal */ @ignoreClone @@ -133,6 +135,27 @@ export abstract class ColliderShape implements ICustomClone { Engine._physicalObjectsMap[this._id] = this; } + /** + * Get the distance and the closest point on the shape from a point. + * @param point - The point + * @param closestPoint - The closest point on the shape + * @returns The distance between the point and the shape + */ + getDistanceAndClosestPointFromPoint(point: Vector3, closestPoint: Vector3): number { + const tempQuat = ColliderShape._tempWorldRot; + const tempPos = ColliderShape._tempWorldPos; + Vector3.add(this._collider.entity.transform.position, this._position, tempPos); + Quaternion.fromAngle(this._rotation, tempQuat); + Quaternion.multiply(this._collider.entity.transform.rotationQuaternion, tempQuat, tempQuat); + const res = this._nativeShape.pointDistance(tempPos, tempQuat, point); + const distance = res.distance; + closestPoint.copyFrom(res.closestPoint); + if (distance > 0) { + closestPoint.subtract(tempPos); + } + return Math.sqrt(distance); + } + /** * @internal */ diff --git a/packages/core/src/physics/shape/PlaneColliderShape.ts b/packages/core/src/physics/shape/PlaneColliderShape.ts index 151ec3d10a..9c8edf2cad 100644 --- a/packages/core/src/physics/shape/PlaneColliderShape.ts +++ b/packages/core/src/physics/shape/PlaneColliderShape.ts @@ -1,3 +1,4 @@ +import { Vector3 } from "@galacean/engine-math"; import { PhysicsScene } from "../PhysicsScene"; import { ColliderShape } from "./ColliderShape"; @@ -9,4 +10,9 @@ export class PlaneColliderShape extends ColliderShape { super(); this._nativeShape = PhysicsScene._nativePhysics.createPlaneColliderShape(this._id, this._material._nativeMaterial); } + + override getDistanceAndClosestPointFromPoint(point: Vector3, closestPoint: Vector3): number { + console.error("PlaneColliderShape is not support getDistanceAndClosestPointFromPoint"); + return -1; + } } diff --git a/packages/design/src/physics/ICollision.ts b/packages/design/src/physics/ICollision.ts new file mode 100644 index 0000000000..baf8301dcf --- /dev/null +++ b/packages/design/src/physics/ICollision.ts @@ -0,0 +1,37 @@ +/** + * Interface of collision. + */ +export interface ICollision { + /** The unique id of the first collider. */ + shape0Id: number; + /** The unique id of the second collider. */ + shape1Id: number; + /** Count of contact points. */ + contactCount: number; + /** Get contact points. */ + getContacts(): PhysXVectorPxContactPairPoint; +} + +interface PhysXVectorPxContactPairPoint { + size(): number; + get(index: number): IContractPoint; +} + +interface IContractPoint { + position: { + x: number; + y: number; + z: number; + }; + normal: { + x: number; + y: number; + z: number; + }; + impulse: { + x: number; + y: number; + z: number; + }; + separation: number; +} diff --git a/packages/design/src/physics/IPhysics.ts b/packages/design/src/physics/IPhysics.ts index 80f7aab202..4ddaa242fc 100644 --- a/packages/design/src/physics/IPhysics.ts +++ b/packages/design/src/physics/IPhysics.ts @@ -8,6 +8,7 @@ import { IPhysicsScene } from "./IPhysicsScene"; import { IStaticCollider } from "./IStaticCollider"; import { IFixedJoint, IHingeJoint, ISpringJoint } from "./joints"; import { IBoxColliderShape, ICapsuleColliderShape, IPlaneColliderShape, ISphereColliderShape } from "./shape"; +import { ICollision } from "./ICollision"; /** * The interface of physics creation. @@ -36,9 +37,9 @@ export interface IPhysics { */ createPhysicsScene( physicsManager: IPhysicsManager, - onContactEnter?: (obj1: number, obj2: number) => void, - onContactExit?: (obj1: number, obj2: number) => void, - onContactStay?: (obj1: number, obj2: number) => void, + onContactEnter?: (collision: ICollision) => void, + onContactExit?: (collision: ICollision) => void, + onContactStay?: (collision: ICollision) => void, onTriggerEnter?: (obj1: number, obj2: number) => void, onTriggerExit?: (obj1: number, obj2: number) => void, onTriggerStay?: (obj1: number, obj2: number) => void diff --git a/packages/design/src/physics/index.ts b/packages/design/src/physics/index.ts index abe6ec7c8f..88404cfb8b 100644 --- a/packages/design/src/physics/index.ts +++ b/packages/design/src/physics/index.ts @@ -6,5 +6,6 @@ export type { IPhysicsMaterial } from "./IPhysicsMaterial"; export type { IPhysicsScene } from "./IPhysicsScene"; export type { IPhysicsManager } from "./IPhysicsManager"; export type { IStaticCollider } from "./IStaticCollider"; +export type { ICollision } from "./ICollision"; export * from "./joints/index"; export * from "./shape/index"; diff --git a/packages/design/src/physics/shape/IColliderShape.ts b/packages/design/src/physics/shape/IColliderShape.ts index 0320a208fe..12bb70f9e0 100644 --- a/packages/design/src/physics/shape/IColliderShape.ts +++ b/packages/design/src/physics/shape/IColliderShape.ts @@ -1,4 +1,4 @@ -import { Vector3 } from "@galacean/engine-math"; +import { Quaternion, Vector3 } from "@galacean/engine-math"; import { IPhysicsMaterial } from "../IPhysicsMaterial"; /** @@ -41,8 +41,31 @@ export interface IColliderShape { */ setIsTrigger(value: boolean): void; + /** + * Get the distance between a point and the shape. + * @param position - The position in world space + * @param rotation - The rotation in world space + * @param point - The point + * @returns The distance information + */ + pointDistance(position: Vector3, rotation: Quaternion, point: Vector3): IPointDistanceInfo; /** * Decrements the reference count of a shape and releases it if the new reference count is zero. */ destroy(): void; } + +/** + * Distance information of a point to the shape. + */ +export interface IPointDistanceInfo { + /** + * The distance between the point and the shape. + */ + distance: number; + + /** + * The closest point on the shape. + */ + closestPoint: Vector3; +} diff --git a/packages/design/src/physics/shape/index.ts b/packages/design/src/physics/shape/index.ts index 028e49de5d..babc4db52c 100644 --- a/packages/design/src/physics/shape/index.ts +++ b/packages/design/src/physics/shape/index.ts @@ -1,4 +1,4 @@ -export type { IColliderShape } from "./IColliderShape"; +export type { IColliderShape, IPointDistanceInfo } from "./IColliderShape"; export type { IBoxColliderShape } from "./IBoxColliderShape"; export type { ICapsuleColliderShape } from "./ICapsuleColliderShape"; export type { ISphereColliderShape } from "./ISphereColliderShape"; diff --git a/packages/math/src/Quaternion.ts b/packages/math/src/Quaternion.ts index 112dcc12db..d7f9b6b485 100644 --- a/packages/math/src/Quaternion.ts +++ b/packages/math/src/Quaternion.ts @@ -413,6 +413,16 @@ export class Quaternion implements IClone, ICopy void, - onContactEnd?: (obj1: number, obj2: number) => void, - onContactPersist?: (obj1: number, obj2: number) => void, + onContactBegin?: (collision: ICollision) => void, + onContactEnd?: (collision: ICollision) => void, + onContactPersist?: (collision: ICollision) => void, onTriggerBegin?: (obj1: number, obj2: number) => void, onTriggerEnd?: (obj1: number, obj2: number) => void, onTriggerPersist?: (obj1: number, obj2: number) => void diff --git a/packages/physics-lite/src/LitePhysicsScene.ts b/packages/physics-lite/src/LitePhysicsScene.ts index d1732f150d..13e1bb11ca 100644 --- a/packages/physics-lite/src/LitePhysicsScene.ts +++ b/packages/physics-lite/src/LitePhysicsScene.ts @@ -1,5 +1,5 @@ import { BoundingBox, BoundingSphere, CollisionUtil, DisorderedArray, Ray, Vector3 } from "@galacean/engine"; -import { ICharacterController, IPhysicsScene } from "@galacean/engine-design"; +import { ICharacterController, ICollision, IPhysicsScene } from "@galacean/engine-design"; import { LiteCollider } from "./LiteCollider"; import { LiteDynamicCollider } from "./LiteDynamicCollider"; import { LiteHitResult } from "./LiteHitResult"; @@ -17,9 +17,9 @@ export class LitePhysicsScene implements IPhysicsScene { private static _currentHit: LiteHitResult = new LiteHitResult(); private static _hitResult: LiteHitResult = new LiteHitResult(); - private readonly _onContactEnter?: (obj1: number, obj2: number) => void; - private readonly _onContactExit?: (obj1: number, obj2: number) => void; - private readonly _onContactStay?: (obj1: number, obj2: number) => void; + private readonly _onContactEnter?: (collision: ICollision) => void; + private readonly _onContactExit?: (collision: ICollision) => void; + private readonly _onContactStay?: (collision: ICollision) => void; private readonly _onTriggerEnter?: (obj1: number, obj2: number) => void; private readonly _onTriggerExit?: (obj1: number, obj2: number) => void; private readonly _onTriggerStay?: (obj1: number, obj2: number) => void; @@ -34,9 +34,9 @@ export class LitePhysicsScene implements IPhysicsScene { private _eventPool: TriggerEvent[] = []; constructor( - onContactEnter?: (obj1: number, obj2: number) => void, - onContactExit?: (obj1: number, obj2: number) => void, - onContactStay?: (obj1: number, obj2: number) => void, + onContactEnter?: (collision: ICollision) => void, + onContactExit?: (collision: ICollision) => void, + onContactStay?: (collision: ICollision) => void, onTriggerEnter?: (obj1: number, obj2: number) => void, onTriggerExit?: (obj1: number, obj2: number) => void, onTriggerStay?: (obj1: number, obj2: number) => void diff --git a/packages/physics-lite/src/shape/LiteColliderShape.ts b/packages/physics-lite/src/shape/LiteColliderShape.ts index c1f2b42d97..6033bcdc49 100644 --- a/packages/physics-lite/src/shape/LiteColliderShape.ts +++ b/packages/physics-lite/src/shape/LiteColliderShape.ts @@ -1,5 +1,5 @@ -import { Matrix, Ray, Vector3 } from "@galacean/engine"; -import { IColliderShape, IPhysicsMaterial } from "@galacean/engine-design"; +import { Matrix, Quaternion, Ray, Vector3 } from "@galacean/engine"; +import { IColliderShape, IPhysicsMaterial, IPointDistanceInfo } from "@galacean/engine-design"; import { LiteCollider } from "../LiteCollider"; import { LiteHitResult } from "../LiteHitResult"; import { LiteTransform } from "../LiteTransform"; @@ -85,6 +85,14 @@ export abstract class LiteColliderShape implements IColliderShape { console.log("Physics-lite don't support setIsTrigger. Use Physics-PhysX instead!"); } + /** + * {@inheritDoc IColliderShape.pointDistance } + */ + pointDistance(position: Vector3, rotation: Quaternion, point: Vector3): IPointDistanceInfo { + console.error("Physics-lite don't support getInertiaTensor. Use Physics-PhysX instead!"); + return null; + } + /** * {@inheritDoc IColliderShape.destroy } */ diff --git a/packages/physics-physx/src/PhysXPhysics.ts b/packages/physics-physx/src/PhysXPhysics.ts index f061405803..05631bdb2d 100644 --- a/packages/physics-physx/src/PhysXPhysics.ts +++ b/packages/physics-physx/src/PhysXPhysics.ts @@ -3,6 +3,7 @@ import { IBoxColliderShape, ICapsuleColliderShape, ICharacterController, + ICollision, IDynamicCollider, IFixedJoint, IHingeJoint, @@ -91,7 +92,7 @@ export class PhysXPhysics implements IPhysics { if (runtimeMode == PhysXRuntimeMode.JavaScript) { script.src = `https://mdn.alipayobjects.com/rms/afts/file/A*rnDeR58NNGoAAAAAAAAAAAAAARQnAQ/physx.release.js.js`; } else if (runtimeMode == PhysXRuntimeMode.WebAssembly) { - script.src = `https://mdn.alipayobjects.com/rms/afts/file/A*rP-bRKBDf0YAAAAAAAAAAAAAARQnAQ/physx.release.js`; + script.src = `https://mdn.alipayobjects.com/rms/afts/file/A*eG1KRpOjfn0AAAAAAAAAAAAAARQnAQ/physx.release.js`; } }); @@ -139,9 +140,9 @@ export class PhysXPhysics implements IPhysics { */ createPhysicsScene( physicsManager: PhysXPhysicsManager, - onContactBegin?: (obj1: number, obj2: number) => void, - onContactEnd?: (obj1: number, obj2: number) => void, - onContactStay?: (obj1: number, obj2: number) => void, + onContactBegin?: (collision: ICollision) => void, + onContactEnd?: (collision: ICollision) => void, + onContactStay?: (collision: ICollision) => void, onTriggerBegin?: (obj1: number, obj2: number) => void, onTriggerEnd?: (obj1: number, obj2: number) => void, onTriggerStay?: (obj1: number, obj2: number) => void diff --git a/packages/physics-physx/src/PhysXPhysicsScene.ts b/packages/physics-physx/src/PhysXPhysicsScene.ts index 805001bb91..8535227224 100644 --- a/packages/physics-physx/src/PhysXPhysicsScene.ts +++ b/packages/physics-physx/src/PhysXPhysicsScene.ts @@ -1,5 +1,5 @@ import { Ray, Vector3, DisorderedArray } from "@galacean/engine"; -import { IPhysicsScene } from "@galacean/engine-design"; +import { ICollision, IPhysicsScene } from "@galacean/engine-design"; import { PhysXCharacterController } from "./PhysXCharacterController"; import { PhysXCollider } from "./PhysXCollider"; import { PhysXPhysics } from "./PhysXPhysics"; @@ -22,12 +22,12 @@ export class PhysXPhysicsScene implements IPhysicsScene { private _pxScene: any; - private readonly _onContactEnter?: (obj1: number, obj2: number) => void; - private readonly _onContactExit?: (obj1: number, obj2: number) => void; - private readonly _onContactStay?: (obj1: number, obj2: number) => void; - private readonly _onTriggerEnter?: (obj1: number, obj2: number) => void; - private readonly _onTriggerExit?: (obj1: number, obj2: number) => void; - private readonly _onTriggerStay?: (obj1: number, obj2: number) => void; + private readonly _onContactEnter?: (collision: ICollision) => void; + private readonly _onContactExit?: (collision: ICollision) => void; + private readonly _onContactStay?: (collision: ICollision) => void; + private readonly _onTriggerEnter?: (index1: number, index2: number) => void; + private readonly _onTriggerExit?: (index1: number, index2: number) => void; + private readonly _onTriggerStay?: (index1: number, index2: number) => void; private _currentEvents: DisorderedArray = new DisorderedArray(); @@ -36,9 +36,9 @@ export class PhysXPhysicsScene implements IPhysicsScene { constructor( physXPhysics: PhysXPhysics, physicsManager: PhysXPhysicsManager, - onContactEnter?: (obj1: number, obj2: number) => void, - onContactExit?: (obj1: number, obj2: number) => void, - onContactStay?: (obj1: number, obj2: number) => void, + onContactEnter?: (collision: ICollision) => void, + onContactExit?: (collision: ICollision) => void, + onContactStay?: (collision: ICollision) => void, onTriggerEnter?: (obj1: number, obj2: number) => void, onTriggerExit?: (obj1: number, obj2: number) => void, onTriggerStay?: (obj1: number, obj2: number) => void @@ -60,14 +60,14 @@ export class PhysXPhysicsScene implements IPhysicsScene { this._onTriggerStay = onTriggerStay; const triggerCallback = { - onContactBegin: (index1, index2) => { - this._onContactEnter(index1, index2); + onContactBegin: (collision) => { + this._onContactEnter(collision); }, - onContactEnd: (index1, index2) => { - this._onContactExit(index1, index2); + onContactEnd: (collision) => { + this._onContactExit(collision); }, - onContactPersist: (index1, index2) => { - this._onContactStay(index1, index2); + onContactPersist: (collision) => { + this._onContactStay(collision); }, onTriggerBegin: (index1, index2) => { const event = index1 < index2 ? this._getTrigger(index1, index2) : this._getTrigger(index2, index1); diff --git a/packages/physics-physx/src/shape/PhysXColliderShape.ts b/packages/physics-physx/src/shape/PhysXColliderShape.ts index 170bba49e1..9a621385e9 100644 --- a/packages/physics-physx/src/shape/PhysXColliderShape.ts +++ b/packages/physics-physx/src/shape/PhysXColliderShape.ts @@ -1,5 +1,5 @@ import { Quaternion, Vector3, DisorderedArray } from "@galacean/engine"; -import { IColliderShape } from "@galacean/engine-design"; +import { IColliderShape, IPointDistanceInfo } from "@galacean/engine-design"; import { PhysXCharacterController } from "../PhysXCharacterController"; import { PhysXPhysics } from "../PhysXPhysics"; import { PhysXPhysicsMaterial } from "../PhysXPhysicsMaterial"; @@ -125,6 +125,16 @@ export abstract class PhysXColliderShape implements IColliderShape { this._setShapeFlags(this._shapeFlags); } + /** + * {@inheritDoc IColliderShape.pointDistance } + */ + pointDistance(translation: Vector3, rotation: Quaternion, point: Vector3): IPointDistanceInfo { + const transform = PhysXColliderShape.transform; + Vector3.multiply(translation, this._worldScale, transform.translation); + transform.rotation = rotation; + return this._pxGeometry.pointDistance(transform, point); + } + /** * {@inheritDoc IColliderShape.destroy } */ From 3d21a1030d2e9a060753c546d73d0cb64feae837 Mon Sep 17 00:00:00 2001 From: luzhuang <364439895@qq.com> Date: Thu, 12 Dec 2024 20:39:41 +0800 Subject: [PATCH 03/20] refactor: opt code --- pnpm-lock.yaml | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2922028c46..ebf2444a15 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4402,21 +4402,6 @@ snapshots: '@types/tough-cookie': 4.0.5 tough-cookie: 4.1.4 - '@bcoe/v8-coverage@0.2.3': {} - - '@bundled-es-modules/cookie@2.0.0': - dependencies: - cookie: 0.5.0 - - '@bundled-es-modules/statuses@1.0.1': - dependencies: - statuses: 2.0.1 - - '@bundled-es-modules/tough-cookie@0.1.6': - dependencies: - '@types/tough-cookie': 4.0.5 - tough-cookie: 4.1.4 - '@choojs/findup@0.2.1': dependencies: commander: 2.20.3 From 308b9189916f44f3fec6979a449850c3fa24aac4 Mon Sep 17 00:00:00 2001 From: luzhuang <364439895@qq.com> Date: Fri, 13 Dec 2024 10:39:21 +0800 Subject: [PATCH 04/20] refactor: opt code --- packages/core/src/physics/Collision.ts | 26 +++++++++---------- .../core/src/physics/shape/ColliderShape.ts | 8 +++--- packages/design/src/physics/ICollision.ts | 4 +-- 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/packages/core/src/physics/Collision.ts b/packages/core/src/physics/Collision.ts index 296b5504f5..7797a9c000 100644 --- a/packages/core/src/physics/Collision.ts +++ b/packages/core/src/physics/Collision.ts @@ -5,15 +5,15 @@ import { ICollision } from "@galacean/engine-design"; /** * Describes a contact point where the collision occurs. */ -export interface ContractPoint { +export interface ContactPoint { /** The position of the contact point between the shapes, in world space. */ - position: Vector3; + readonly position: Vector3; /** The normal of the contacting surfaces at the contact point. The normal direction points from the second shape to the first shape. */ - normal: Vector3; + readonly normal: Vector3; /** The impulse applied at the contact point, in world space. Divide by the simulation time step to get a force value. */ - impulse: Vector3; + readonly impulse: Vector3; /** The separation of the shapes at the contact point. A negative separation denotes a penetration. */ - separation: number; + readonly separation: number; } export class Collision { @@ -32,22 +32,22 @@ export class Collision { /** * Get contact points. - * @param contacts - The result of contact points + * @param outContacts - The result of contact points * @returns The result of contact points */ - getContacts(contacts: ContractPoint[]): ContractPoint[] { - const nativeContractPoints = this._nativeCollision.getContacts(); - for (let i = 0, n = nativeContractPoints.size(); i < n; i++) { - const nativeContractPoint = nativeContractPoints.get(i); + getContacts(outContacts: ContactPoint[]): ContactPoint[] { + const nativeContactPoints = this._nativeCollision.getContacts(); + for (let i = 0, n = nativeContactPoints.size(); i < n; i++) { + const nativeContractPoint = nativeContactPoints.get(i); const { position, normal, impulse, separation } = nativeContractPoint; - const contact: ContractPoint = { + const contact: ContactPoint = { position: new Vector3(position.x, position.y, position.z), normal: new Vector3(normal.x, normal.y, normal.z), impulse: new Vector3(impulse.x, impulse.y, impulse.z), separation: separation }; - contacts.push(contact); + outContacts.push(contact); } - return contacts; + return outContacts; } } diff --git a/packages/core/src/physics/shape/ColliderShape.ts b/packages/core/src/physics/shape/ColliderShape.ts index 346242abec..da604291c8 100644 --- a/packages/core/src/physics/shape/ColliderShape.ts +++ b/packages/core/src/physics/shape/ColliderShape.ts @@ -138,10 +138,10 @@ export abstract class ColliderShape implements ICustomClone { /** * Get the distance and the closest point on the shape from a point. * @param point - The point - * @param closestPoint - The closest point on the shape + * @param outClosestPoint - The result of the closest point on the shape * @returns The distance between the point and the shape */ - getDistanceAndClosestPointFromPoint(point: Vector3, closestPoint: Vector3): number { + getDistanceAndClosestPointFromPoint(point: Vector3, outClosestPoint: Vector3): number { const tempQuat = ColliderShape._tempWorldRot; const tempPos = ColliderShape._tempWorldPos; Vector3.add(this._collider.entity.transform.position, this._position, tempPos); @@ -149,9 +149,9 @@ export abstract class ColliderShape implements ICustomClone { Quaternion.multiply(this._collider.entity.transform.rotationQuaternion, tempQuat, tempQuat); const res = this._nativeShape.pointDistance(tempPos, tempQuat, point); const distance = res.distance; - closestPoint.copyFrom(res.closestPoint); + outClosestPoint.copyFrom(res.closestPoint); if (distance > 0) { - closestPoint.subtract(tempPos); + outClosestPoint.subtract(tempPos); } return Math.sqrt(distance); } diff --git a/packages/design/src/physics/ICollision.ts b/packages/design/src/physics/ICollision.ts index baf8301dcf..17ddbfcbef 100644 --- a/packages/design/src/physics/ICollision.ts +++ b/packages/design/src/physics/ICollision.ts @@ -14,10 +14,10 @@ export interface ICollision { interface PhysXVectorPxContactPairPoint { size(): number; - get(index: number): IContractPoint; + get(index: number): IContactPoint; } -interface IContractPoint { +interface IContactPoint { position: { x: number; y: number; From 2385d0e3ab36c65f67e055d1d689cd3c81499c13 Mon Sep 17 00:00:00 2001 From: luzhuang <364439895@qq.com> Date: Mon, 16 Dec 2024 16:09:52 +0800 Subject: [PATCH 05/20] test: add ut --- packages/core/src/physics/Collision.ts | 9 ++- .../core/src/physics/shape/ColliderShape.ts | 11 ++- .../src/shape/LiteColliderShape.ts | 2 +- tests/src/core/physics/ColliderShape.test.ts | 27 ++++++++ tests/src/core/physics/Collision.test.ts | 69 +++++++++++++++++++ 5 files changed, 113 insertions(+), 5 deletions(-) create mode 100644 tests/src/core/physics/Collision.test.ts diff --git a/packages/core/src/physics/Collision.ts b/packages/core/src/physics/Collision.ts index 7797a9c000..56c2a4037f 100644 --- a/packages/core/src/physics/Collision.ts +++ b/packages/core/src/physics/Collision.ts @@ -36,14 +36,19 @@ export class Collision { * @returns The result of contact points */ getContacts(outContacts: ContactPoint[]): ContactPoint[] { + const { shape0Id, shape1Id } = this._nativeCollision; const nativeContactPoints = this._nativeCollision.getContacts(); for (let i = 0, n = nativeContactPoints.size(); i < n; i++) { const nativeContractPoint = nativeContactPoints.get(i); const { position, normal, impulse, separation } = nativeContractPoint; + let factor = 1; + if (shape0Id > shape1Id) { + factor = -1; + } const contact: ContactPoint = { position: new Vector3(position.x, position.y, position.z), - normal: new Vector3(normal.x, normal.y, normal.z), - impulse: new Vector3(impulse.x, impulse.y, impulse.z), + normal: new Vector3(normal.x, normal.y, normal.z).scale(factor), + impulse: new Vector3(impulse.x, impulse.y, impulse.z).scale(factor), separation: separation }; outContacts.push(contact); diff --git a/packages/core/src/physics/shape/ColliderShape.ts b/packages/core/src/physics/shape/ColliderShape.ts index da604291c8..1af3962963 100644 --- a/packages/core/src/physics/shape/ColliderShape.ts +++ b/packages/core/src/physics/shape/ColliderShape.ts @@ -142,6 +142,11 @@ export abstract class ColliderShape implements ICustomClone { * @returns The distance between the point and the shape */ getDistanceAndClosestPointFromPoint(point: Vector3, outClosestPoint: Vector3): number { + const collider = this._collider; + if (collider.enabled === false || collider.entity._isActiveInHierarchy === false) { + console.warn("The collider is not active in scene."); + return -1; + } const tempQuat = ColliderShape._tempWorldRot; const tempPos = ColliderShape._tempWorldPos; Vector3.add(this._collider.entity.transform.position, this._position, tempPos); @@ -149,10 +154,12 @@ export abstract class ColliderShape implements ICustomClone { Quaternion.multiply(this._collider.entity.transform.rotationQuaternion, tempQuat, tempQuat); const res = this._nativeShape.pointDistance(tempPos, tempQuat, point); const distance = res.distance; - outClosestPoint.copyFrom(res.closestPoint); if (distance > 0) { - outClosestPoint.subtract(tempPos); + outClosestPoint.copyFrom(res.closestPoint); + } else { + outClosestPoint.copyFrom(point); } + outClosestPoint.subtract(tempPos); return Math.sqrt(distance); } diff --git a/packages/physics-lite/src/shape/LiteColliderShape.ts b/packages/physics-lite/src/shape/LiteColliderShape.ts index 6033bcdc49..188de57204 100644 --- a/packages/physics-lite/src/shape/LiteColliderShape.ts +++ b/packages/physics-lite/src/shape/LiteColliderShape.ts @@ -89,7 +89,7 @@ export abstract class LiteColliderShape implements IColliderShape { * {@inheritDoc IColliderShape.pointDistance } */ pointDistance(position: Vector3, rotation: Quaternion, point: Vector3): IPointDistanceInfo { - console.error("Physics-lite don't support getInertiaTensor. Use Physics-PhysX instead!"); + console.error("Physics-lite don't support pointDistance. Use Physics-PhysX instead!"); return null; } diff --git a/tests/src/core/physics/ColliderShape.test.ts b/tests/src/core/physics/ColliderShape.test.ts index ed1a650344..bd74c8fa62 100644 --- a/tests/src/core/physics/ColliderShape.test.ts +++ b/tests/src/core/physics/ColliderShape.test.ts @@ -240,6 +240,33 @@ describe("ColliderShape", () => { expect(sphereShape.rotation).to.deep.include({ x: 40, y: -182, z: 720 }); }); + it("getDistanceAndClosestPointFromPoint", () => { + const sphereShape = new BoxColliderShape(); + dynamicCollider.addShape(sphereShape); + + const point = new Vector3(2, 0, 0); + const closestPoint = new Vector3(); + let distance = sphereShape.getDistanceAndClosestPointFromPoint(point, closestPoint); + expect(distance).to.eq(1.5); + expect(closestPoint).to.deep.include({ x: 0.5, y: 0, z: 0 }); + + point.set(0.1, 0, 0); + distance = sphereShape.getDistanceAndClosestPointFromPoint(point, closestPoint); + expect(distance).to.eq(0); + expect(closestPoint).to.deep.include({ x: 0.1, y: 0, z: 0 }); + }); + + it("getDistanceAndClosestPointFromPoint with collider disabled", () => { + const sphereShape = new BoxColliderShape(); + dynamicCollider.addShape(sphereShape); + dynamicCollider.enabled = false; + + const point = new Vector3(2, 0, 0); + const closestPoint = new Vector3(); + const distance = sphereShape.getDistanceAndClosestPointFromPoint(point, closestPoint); + expect(distance).to.eq(-1); + }); + it("clone", () => { // SphereColliderShape const sphereShape = new SphereColliderShape(); diff --git a/tests/src/core/physics/Collision.test.ts b/tests/src/core/physics/Collision.test.ts new file mode 100644 index 0000000000..63110340ec --- /dev/null +++ b/tests/src/core/physics/Collision.test.ts @@ -0,0 +1,69 @@ +import { BoxColliderShape, DynamicCollider, Entity, Engine, Script, StaticCollider } from "@galacean/engine-core"; +import { Vector3 } from "@galacean/engine-math"; +import { PhysXPhysics } from "@galacean/engine-physics-physx"; +import { WebGLEngine } from "@galacean/engine-rhi-webgl"; +import { Collision } from "packages/core/types/physics/Collision"; +import { describe, beforeAll, beforeEach, expect, it } from "vitest"; + +describe("Collision", function () { + let rootEntity: Entity; + let engine: Engine; + + function addBox(cubeSize: Vector3, type: typeof DynamicCollider | typeof StaticCollider, pos: Vector3) { + const boxEntity = rootEntity.createChild("BoxEntity"); + boxEntity.transform.setPosition(pos.x, pos.y, pos.z); + + const physicsBox = new BoxColliderShape(); + physicsBox.material.dynamicFriction = 0; + physicsBox.material.staticFriction = 0; + physicsBox.size = cubeSize; + const boxCollider = boxEntity.addComponent(type); + boxCollider.addShape(physicsBox); + return boxEntity; + } + + function formatValue(value: number) { + return Math.round(value * 100000) / 100000; + } + + beforeAll(async function () { + engine = await WebGLEngine.create({ canvas: document.createElement("canvas"), physics: new PhysXPhysics() }); + + rootEntity = engine.sceneManager.activeScene.createRootEntity("root"); + }); + + beforeEach(function () { + rootEntity.clearChildren(); + engine.sceneManager.activeScene.physics.gravity = new Vector3(0, -9.81, 0); + }); + + it("collision info", function () { + engine.sceneManager.activeScene.physics.gravity = new Vector3(0, 0, 0); + const box1 = addBox(new Vector3(1, 1, 1), DynamicCollider, new Vector3(-3, 0, 0)); + const box2 = addBox(new Vector3(1, 1, 1), DynamicCollider, new Vector3(0, 0, 0)); + + return new Promise((done) => { + box1.addComponent( + class extends Script { + onCollisionEnter(other: Collision): void { + expect(other.shape).toBe(box2.getComponent(DynamicCollider).shapes[0]); + expect(other.contactCount).toBe(4); + const contacts = []; + other.getContacts(contacts); + expect(contacts.length).toBe(4); + expect(formatValue(contacts[0].position.x)).toBe(-0.27778); + expect(formatValue(contacts[0].separation)).toBe(-0.22222); + expect(formatValue(contacts[0].normal.x)).toBe(-1); + expect(formatValue(contacts[0].impulse.x)).toBe(-2.93748); + + done(); + } + } + ); + + box1.getComponent(DynamicCollider).applyForce(new Vector3(1000, 0, 0)); + // @ts-ignore + engine.sceneManager.activeScene.physics._update(1); + }); + }); +}); From 1b8c7e573fc320841c694612a089686a74856dbf Mon Sep 17 00:00:00 2001 From: luzhuang <364439895@qq.com> Date: Tue, 17 Dec 2024 16:00:49 +0800 Subject: [PATCH 06/20] refactor: opt code --- .../core/src/physics/CharacterController.ts | 3 +- .../core/src/physics/shape/ColliderShape.ts | 25 +- packages/math/src/Quaternion.ts | 10 - .../physics-lite/src/LiteDynamicCollider.ts | 40 +-- .../src/shape/LiteBoxColliderShape.ts | 48 ++- .../src/shape/LiteColliderShape.ts | 21 +- .../src/shape/LiteSphereColliderShape.ts | 26 +- .../src/shape/PhysXColliderShape.ts | 2 +- tests/src/core/physics/ColliderShape.test.ts | 276 +++++++++++++++++- 9 files changed, 393 insertions(+), 58 deletions(-) diff --git a/packages/core/src/physics/CharacterController.ts b/packages/core/src/physics/CharacterController.ts index a4d1b49ccc..d96eae2048 100644 --- a/packages/core/src/physics/CharacterController.ts +++ b/packages/core/src/physics/CharacterController.ts @@ -5,7 +5,7 @@ import { Collider } from "./Collider"; import { PhysicsScene } from "./PhysicsScene"; import { ControllerNonWalkableMode } from "./enums/ControllerNonWalkableMode"; import { ColliderShape } from "./shape"; -import { deepClone } from "../clone/CloneManager"; +import { deepClone, ignoreClone } from "../clone/CloneManager"; /** * The character controllers. @@ -166,6 +166,7 @@ export class CharacterController extends Collider { (this._nativeCollider).getWorldPosition(this.entity.transform.worldPosition); } + @ignoreClone private _setUpDirection(): void { (this._nativeCollider).setUpDirection(this._upDirection); } diff --git a/packages/core/src/physics/shape/ColliderShape.ts b/packages/core/src/physics/shape/ColliderShape.ts index 1af3962963..27bcef0b53 100644 --- a/packages/core/src/physics/shape/ColliderShape.ts +++ b/packages/core/src/physics/shape/ColliderShape.ts @@ -1,6 +1,6 @@ import { IColliderShape } from "@galacean/engine-design"; import { PhysicsMaterial } from "../PhysicsMaterial"; -import { Quaternion, Vector3 } from "@galacean/engine-math"; +import { MathUtil, Matrix, Quaternion, Vector3 } from "@galacean/engine-math"; import { Collider } from "../Collider"; import { deepClone, ignoreClone } from "../../clone/CloneManager"; import { ICustomClone } from "../../clone/ComponentCloner"; @@ -13,6 +13,7 @@ export abstract class ColliderShape implements ICustomClone { private static _idGenerator: number = 0; private static _tempWorldPos: Vector3 = new Vector3(); private static _tempWorldRot: Quaternion = new Quaternion(); + private static _tempMatrix: Matrix = new Matrix(); /** @internal */ @ignoreClone @@ -149,9 +150,17 @@ export abstract class ColliderShape implements ICustomClone { } const tempQuat = ColliderShape._tempWorldRot; const tempPos = ColliderShape._tempWorldPos; - Vector3.add(this._collider.entity.transform.position, this._position, tempPos); - Quaternion.fromAngle(this._rotation, tempQuat); + Vector3.transformCoordinate(this._position, collider.entity.transform.worldMatrix, tempPos); + + const rotation = this._rotation; + Quaternion.rotationEuler( + MathUtil.degreeToRadian(rotation.x), + MathUtil.degreeToRadian(rotation.y), + MathUtil.degreeToRadian(rotation.z), + tempQuat + ); Quaternion.multiply(this._collider.entity.transform.rotationQuaternion, tempQuat, tempQuat); + const res = this._nativeShape.pointDistance(tempPos, tempQuat, point); const distance = res.distance; if (distance > 0) { @@ -159,7 +168,15 @@ export abstract class ColliderShape implements ICustomClone { } else { outClosestPoint.copyFrom(point); } - outClosestPoint.subtract(tempPos); + + const m = ColliderShape._tempMatrix; + Matrix.invert(collider.entity.transform.worldMatrix, m); + Vector3.transformCoordinate(outClosestPoint, m, outClosestPoint); + + outClosestPoint.subtract(this._position); + + Quaternion.invert(tempQuat, tempQuat); + Vector3.transformByQuat(outClosestPoint, tempQuat, outClosestPoint); return Math.sqrt(distance); } diff --git a/packages/math/src/Quaternion.ts b/packages/math/src/Quaternion.ts index d7f9b6b485..112dcc12db 100644 --- a/packages/math/src/Quaternion.ts +++ b/packages/math/src/Quaternion.ts @@ -413,16 +413,6 @@ export class Quaternion implements IClone, ICopy { +describe("ColliderShape PhysX", () => { let dynamicCollider: DynamicCollider; + function formatValue(value: number) { + return Math.round(value * 100000) / 100000; + } + beforeAll(async () => { const engine = await WebGLEngine.create({ canvas: document.createElement("canvas"), physics: new PhysXPhysics() }); engine.run(); @@ -24,10 +29,15 @@ describe("ColliderShape", () => { const root = scene.createRootEntity("root"); const roleEntity = root.createChild("role"); + dynamicCollider = roleEntity.addComponent(DynamicCollider); }); beforeEach(() => { + const entity = dynamicCollider.entity; + entity.transform.setPosition(0, 0, 0); + entity.transform.setScale(1, 1, 1); + entity.transform.setRotation(0, 0, 0); dynamicCollider.clearShapes(); }); @@ -240,20 +250,57 @@ describe("ColliderShape", () => { expect(sphereShape.rotation).to.deep.include({ x: 40, y: -182, z: 720 }); }); - it("getDistanceAndClosestPointFromPoint", () => { - const sphereShape = new BoxColliderShape(); - dynamicCollider.addShape(sphereShape); + it("boxShape getDistanceAndClosestPointFromPoint", () => { + const boxShape = new BoxColliderShape(); + boxShape.size.set(1, 2, 3); + boxShape.position.set(2, 3, 4); + boxShape.rotation.set(23, 45, 12); + dynamicCollider.addShape(boxShape); + const entity = dynamicCollider.entity; + entity.transform.setPosition(2, 3, 5); + entity.transform.setScale(3, 4, 5); + entity.transform.setRotation(13, -45, 38); - const point = new Vector3(2, 0, 0); + const point = new Vector3(-9, 7, 6); const closestPoint = new Vector3(); - let distance = sphereShape.getDistanceAndClosestPointFromPoint(point, closestPoint); - expect(distance).to.eq(1.5); - expect(closestPoint).to.deep.include({ x: 0.5, y: 0, z: 0 }); - - point.set(0.1, 0, 0); - distance = sphereShape.getDistanceAndClosestPointFromPoint(point, closestPoint); + let distance = boxShape.getDistanceAndClosestPointFromPoint(point, closestPoint); + expect(formatValue(distance)).to.eq(13.42755); + expect(formatValue(closestPoint.x)).to.eq(-0.20131); + expect(formatValue(closestPoint.y)).to.eq(0.11063); + expect(formatValue(closestPoint.z)).to.eq(-0.35453); + + entity.transform.setScale(1, 1, 1); + entity.transform.setRotation(0, 0, 0); + point.set(4, 6, 9); + distance = boxShape.getDistanceAndClosestPointFromPoint(point, closestPoint); expect(distance).to.eq(0); - expect(closestPoint).to.deep.include({ x: 0.1, y: 0, z: 0 }); + expect(closestPoint).to.deep.include({ x: 0, y: 0, z: 0 }); + }); + + it("sphereShape getDistanceAndClosestPointFromPoint", () => { + const sphereShape = new SphereColliderShape(); + sphereShape.radius = 2; + sphereShape.position.set(2, 3, 4); + dynamicCollider.addShape(sphereShape); + const entity = dynamicCollider.entity; + entity.transform.setPosition(2, 3, 5); + entity.transform.setScale(3, 4, 5); + entity.transform.setRotation(13, -45, 38); + + const point = new Vector3(14, 8, 10); + const closestPoint = new Vector3(); + const distance = sphereShape.getDistanceAndClosestPointFromPoint(point, closestPoint); + expect(formatValue(distance)).to.eq(29.25711); + expect(formatValue(closestPoint.x)).to.eq(-0.31861); + expect(formatValue(closestPoint.y)).to.eq(-0.16817); + expect(formatValue(closestPoint.z)).to.eq(-0.25466); + + entity.transform.setScale(1, 1, 1); + entity.transform.setRotation(0, 0, 0); + point.set(4, 6, 9); + const distance2 = sphereShape.getDistanceAndClosestPointFromPoint(point, closestPoint); + expect(distance2).to.eq(0); + expect(closestPoint).to.deep.include({ x: 0, y: 0, z: 0 }); }); it("getDistanceAndClosestPointFromPoint with collider disabled", () => { @@ -297,3 +344,208 @@ describe("ColliderShape", () => { expect((newCollider3.shapes[0] as CapsuleColliderShape).height).to.eq(3); }); }); + +describe("ColliderShape Lite", () => { + let dynamicCollider: DynamicCollider; + + function formatValue(value: number) { + return Math.round(value * 100000) / 100000; + } + + beforeAll(async () => { + const engine = await WebGLEngine.create({ canvas: document.createElement("canvas"), physics: new LitePhysics() }); + engine.run(); + + const scene = engine.sceneManager.activeScene; + const root = scene.createRootEntity("root"); + + const roleEntity = root.createChild("role"); + + dynamicCollider = roleEntity.addComponent(DynamicCollider); + }); + + beforeEach(() => { + const entity = dynamicCollider.entity; + entity.transform.setPosition(0, 0, 0); + entity.transform.setScale(1, 1, 1); + entity.transform.setRotation(0, 0, 0); + dynamicCollider.clearShapes(); + }); + + it("BoxColliderShape", () => { + const boxShape = new BoxColliderShape(); + dynamicCollider.addShape(boxShape); + + // Test that set size works correctly. + boxShape.size = new Vector3(1, 2, 3); + expect(boxShape.size).to.deep.include({ x: 1, y: 2, z: 3 }); + + // Test that set trigger works correctly. + boxShape.isTrigger = true; + expect(boxShape.isTrigger).to.eq(true); + + // Test that set contactOffset works correctly. + let contactOffset = boxShape.contactOffset; + boxShape.contactOffset = contactOffset; + expect(boxShape.contactOffset).to.eq(contactOffset); + + contactOffset = 2.4; + boxShape.contactOffset = contactOffset; + expect(boxShape.contactOffset).to.eq(contactOffset); + + contactOffset = 0; + boxShape.contactOffset = contactOffset; + expect(boxShape.contactOffset).to.eq(contactOffset); + + contactOffset = 2.7; + boxShape.contactOffset = contactOffset; + expect(boxShape.contactOffset).to.eq(contactOffset); + + // Test that set material works correctly. + const material = new PhysicsMaterial(); + boxShape.material = material; + expect(boxShape.material).to.eq(material); + + // Test that set position works correctly. + boxShape.position = new Vector3(1, 2, -1); + expect(boxShape.position).to.deep.include({ x: 1, y: 2, z: -1 }); + + // Test that set rotation works correctly. + boxShape.rotation = new Vector3(40, -182, 720); + expect(boxShape.rotation).to.deep.include({ x: 40, y: -182, z: 720 }); + }); + + it("SphereColliderShape", () => { + const sphereShape = new SphereColliderShape(); + dynamicCollider.addShape(sphereShape); + + // Test that set radius works correctly. + let radius = sphereShape.radius; + expect(sphereShape.radius).to.eq(radius); + + radius *= 0.5; + sphereShape.radius = radius; + expect(sphereShape.radius).to.eq(radius); + + radius *= 4; + sphereShape.radius = radius; + expect(sphereShape.radius).to.eq(radius); + + // Test that set trigger works correctly. + sphereShape.isTrigger = true; + expect(sphereShape.isTrigger).to.eq(true); + + // Test that set contactOffset works correctly. + let contactOffset = sphereShape.contactOffset; + sphereShape.contactOffset = contactOffset; + expect(sphereShape.contactOffset).to.eq(contactOffset); + + contactOffset = 2.4; + sphereShape.contactOffset = contactOffset; + expect(sphereShape.contactOffset).to.eq(contactOffset); + + contactOffset = 0; + sphereShape.contactOffset = contactOffset; + expect(sphereShape.contactOffset).to.eq(contactOffset); + + contactOffset = 2.7; + sphereShape.contactOffset = contactOffset; + expect(sphereShape.contactOffset).to.eq(contactOffset); + + // Test that set material works correctly. + const material = new PhysicsMaterial(); + sphereShape.material = material; + expect(sphereShape.material).to.eq(material); + + // Test that set position works correctly. + sphereShape.position = new Vector3(1, 2, -1); + expect(sphereShape.position).to.deep.include({ x: 1, y: 2, z: -1 }); + + // Test that set rotation works correctly. + sphereShape.rotation = new Vector3(40, -182, 720); + expect(sphereShape.rotation).to.deep.include({ x: 40, y: -182, z: 720 }); + }); + + it("boxShape getDistanceAndClosestPointFromPoint", () => { + const boxShape = new BoxColliderShape(); + boxShape.size.set(1, 2, 3); + boxShape.position.set(2, 3, 4); + boxShape.rotation.set(23, 45, 12); + dynamicCollider.addShape(boxShape); + const entity = dynamicCollider.entity; + entity.transform.setPosition(2, 3, 5); + entity.transform.setScale(3, 4, 5); + entity.transform.setRotation(13, -45, 38); + + const point = new Vector3(-9, 7, 6); + const closestPoint = new Vector3(); + let distance = boxShape.getDistanceAndClosestPointFromPoint(point, closestPoint); + expect(formatValue(distance)).to.eq(13.42755); + expect(formatValue(closestPoint.x)).to.eq(-0.20131); + expect(formatValue(closestPoint.y)).to.eq(0.11063); + expect(formatValue(closestPoint.z)).to.eq(-0.35453); + + entity.transform.setScale(1, 1, 1); + entity.transform.setRotation(0, 0, 0); + point.set(4, 6, 9); + distance = boxShape.getDistanceAndClosestPointFromPoint(point, closestPoint); + expect(distance).to.eq(0); + expect(closestPoint).to.deep.include({ x: 0, y: 0, z: 0 }); + }); + + it("sphereShape getDistanceAndClosestPointFromPoint", () => { + const sphereShape = new SphereColliderShape(); + sphereShape.radius = 2; + sphereShape.position.set(2, 3, 4); + dynamicCollider.addShape(sphereShape); + const entity = dynamicCollider.entity; + entity.transform.setPosition(2, 3, 5); + entity.transform.setScale(3, 4, 5); + entity.transform.setRotation(13, -45, 38); + + const point = new Vector3(14, 8, 10); + const closestPoint = new Vector3(); + const distance = sphereShape.getDistanceAndClosestPointFromPoint(point, closestPoint); + expect(formatValue(distance)).to.eq(29.25711); + expect(formatValue(closestPoint.x)).to.eq(-0.31861); + expect(formatValue(closestPoint.y)).to.eq(-0.16817); + expect(formatValue(closestPoint.z)).to.eq(-0.25466); + + entity.transform.setScale(1, 1, 1); + entity.transform.setRotation(0, 0, 0); + point.set(4, 6, 9); + const distance2 = sphereShape.getDistanceAndClosestPointFromPoint(point, closestPoint); + expect(distance2).to.eq(0); + expect(closestPoint).to.deep.include({ x: 0, y: 0, z: 0 }); + }); + + it("getDistanceAndClosestPointFromPoint with collider disabled", () => { + const sphereShape = new BoxColliderShape(); + dynamicCollider.addShape(sphereShape); + dynamicCollider.enabled = false; + + const point = new Vector3(2, 0, 0); + const closestPoint = new Vector3(); + const distance = sphereShape.getDistanceAndClosestPointFromPoint(point, closestPoint); + expect(distance).to.eq(-1); + }); + + it("clone", () => { + // SphereColliderShape + const sphereShape = new SphereColliderShape(); + sphereShape.radius = 2; + dynamicCollider.addShape(sphereShape); + const newCollider = dynamicCollider.entity.clone().getComponent(DynamicCollider); + expect(newCollider.shapes.length).to.eq(1); + expect((newCollider.shapes[0] as SphereColliderShape).radius).to.eq(2); + + // BoxColliderShape + dynamicCollider.clearShapes(); + const boxShape = new BoxColliderShape(); + boxShape.size = new Vector3(1, 2, 3); + dynamicCollider.addShape(boxShape); + const newCollider2 = dynamicCollider.entity.clone().getComponent(DynamicCollider); + expect(newCollider2.shapes.length).to.eq(1); + expect((newCollider2.shapes[0] as BoxColliderShape).size).to.deep.include({ x: 1, y: 2, z: 3 }); + }); +}); From 3f5009a2f5e1257fe78d2fe46d4c1617828d6e14 Mon Sep 17 00:00:00 2001 From: luzhuang <364439895@qq.com> Date: Wed, 18 Dec 2024 17:06:39 +0800 Subject: [PATCH 07/20] refactor: opt code --- packages/core/src/physics/Collision.ts | 31 +++--- .../core/src/physics/shape/ColliderShape.ts | 28 ++--- .../src/physics/shape/PlaneColliderShape.ts | 4 +- packages/design/src/physics/ICollision.ts | 4 +- .../src/physics/shape/IColliderShape.ts | 19 +--- packages/design/src/physics/shape/index.ts | 2 +- .../src/shape/LiteBoxColliderShape.ts | 29 +++-- .../src/shape/LiteColliderShape.ts | 13 +-- .../src/shape/LiteSphereColliderShape.ts | 19 ++-- packages/physics-physx/src/PhysXPhysics.ts | 2 +- .../src/shape/PhysXColliderShape.ts | 18 +-- tests/src/core/physics/ColliderShape.test.ts | 103 +++++++++++------- 12 files changed, 133 insertions(+), 139 deletions(-) diff --git a/packages/core/src/physics/Collision.ts b/packages/core/src/physics/Collision.ts index 56c2a4037f..7ee9a9e09f 100644 --- a/packages/core/src/physics/Collision.ts +++ b/packages/core/src/physics/Collision.ts @@ -5,26 +5,29 @@ import { ICollision } from "@galacean/engine-design"; /** * Describes a contact point where the collision occurs. */ -export interface ContactPoint { +export class ContactPoint { /** The position of the contact point between the shapes, in world space. */ - readonly position: Vector3; + readonly position = new Vector3(); /** The normal of the contacting surfaces at the contact point. The normal direction points from the second shape to the first shape. */ - readonly normal: Vector3; + readonly normal = new Vector3(); /** The impulse applied at the contact point, in world space. Divide by the simulation time step to get a force value. */ - readonly impulse: Vector3; + readonly impulse = new Vector3(); /** The separation of the shapes at the contact point. A negative separation denotes a penetration. */ - readonly separation: number; + separation: number; } +/** + * Collision information between two shapes when they collide. + */ export class Collision { /** @internal */ _nativeCollision: ICollision; - /** The shape be collided. */ + /** The target shape be collided. */ shape: ColliderShape; /** - * Get count of contact points. + * Count of contact points. */ get contactCount(): number { return this._nativeCollision.contactCount; @@ -37,6 +40,7 @@ export class Collision { */ getContacts(outContacts: ContactPoint[]): ContactPoint[] { const { shape0Id, shape1Id } = this._nativeCollision; + outContacts.length = 0; const nativeContactPoints = this._nativeCollision.getContacts(); for (let i = 0, n = nativeContactPoints.size(); i < n; i++) { const nativeContractPoint = nativeContactPoints.get(i); @@ -45,13 +49,12 @@ export class Collision { if (shape0Id > shape1Id) { factor = -1; } - const contact: ContactPoint = { - position: new Vector3(position.x, position.y, position.z), - normal: new Vector3(normal.x, normal.y, normal.z).scale(factor), - impulse: new Vector3(impulse.x, impulse.y, impulse.z).scale(factor), - separation: separation - }; - outContacts.push(contact); + + const contact = (outContacts[i] ||= new ContactPoint()); + contact.position.set(position.x, position.y, position.z); + contact.normal.set(normal.x, normal.y, normal.z).scale(factor); + contact.impulse.set(impulse.x, impulse.y, impulse.z).scale(factor); + contact.separation = separation; } return outContacts; } diff --git a/packages/core/src/physics/shape/ColliderShape.ts b/packages/core/src/physics/shape/ColliderShape.ts index 27bcef0b53..b09b549df3 100644 --- a/packages/core/src/physics/shape/ColliderShape.ts +++ b/packages/core/src/physics/shape/ColliderShape.ts @@ -13,7 +13,6 @@ export abstract class ColliderShape implements ICustomClone { private static _idGenerator: number = 0; private static _tempWorldPos: Vector3 = new Vector3(); private static _tempWorldRot: Quaternion = new Quaternion(); - private static _tempMatrix: Matrix = new Matrix(); /** @internal */ @ignoreClone @@ -83,7 +82,7 @@ export abstract class ColliderShape implements ICustomClone { } /** - * The local rotation of this ColliderShape. + * The local rotation of this ColliderShape, in radians. */ get rotation(): Vector3 { return this._rotation; @@ -138,11 +137,11 @@ export abstract class ColliderShape implements ICustomClone { /** * Get the distance and the closest point on the shape from a point. - * @param point - The point - * @param outClosestPoint - The result of the closest point on the shape + * @param point - Location in world space you want to find the closest point to + * @param outClosestPoint - The closest point on the shape in world space * @returns The distance between the point and the shape */ - getDistanceAndClosestPointFromPoint(point: Vector3, outClosestPoint: Vector3): number { + getClosestPoint(point: Vector3, outClosestPoint: Vector3): number { const collider = this._collider; if (collider.enabled === false || collider.entity._isActiveInHierarchy === false) { console.warn("The collider is not active in scene."); @@ -153,30 +152,17 @@ export abstract class ColliderShape implements ICustomClone { Vector3.transformCoordinate(this._position, collider.entity.transform.worldMatrix, tempPos); const rotation = this._rotation; - Quaternion.rotationEuler( - MathUtil.degreeToRadian(rotation.x), - MathUtil.degreeToRadian(rotation.y), - MathUtil.degreeToRadian(rotation.z), - tempQuat - ); + Quaternion.rotationEuler(rotation.x, rotation.y, rotation.z, tempQuat); Quaternion.multiply(this._collider.entity.transform.rotationQuaternion, tempQuat, tempQuat); const res = this._nativeShape.pointDistance(tempPos, tempQuat, point); - const distance = res.distance; + const distance = res.w; if (distance > 0) { - outClosestPoint.copyFrom(res.closestPoint); + outClosestPoint.set(res.x, res.y, res.z); } else { outClosestPoint.copyFrom(point); } - const m = ColliderShape._tempMatrix; - Matrix.invert(collider.entity.transform.worldMatrix, m); - Vector3.transformCoordinate(outClosestPoint, m, outClosestPoint); - - outClosestPoint.subtract(this._position); - - Quaternion.invert(tempQuat, tempQuat); - Vector3.transformByQuat(outClosestPoint, tempQuat, outClosestPoint); return Math.sqrt(distance); } diff --git a/packages/core/src/physics/shape/PlaneColliderShape.ts b/packages/core/src/physics/shape/PlaneColliderShape.ts index 9c8edf2cad..82e7f77a58 100644 --- a/packages/core/src/physics/shape/PlaneColliderShape.ts +++ b/packages/core/src/physics/shape/PlaneColliderShape.ts @@ -11,8 +11,8 @@ export class PlaneColliderShape extends ColliderShape { this._nativeShape = PhysicsScene._nativePhysics.createPlaneColliderShape(this._id, this._material._nativeMaterial); } - override getDistanceAndClosestPointFromPoint(point: Vector3, closestPoint: Vector3): number { - console.error("PlaneColliderShape is not support getDistanceAndClosestPointFromPoint"); + override getClosestPoint(point: Vector3, closestPoint: Vector3): number { + console.error("PlaneColliderShape is not support getClosestPoint"); return -1; } } diff --git a/packages/design/src/physics/ICollision.ts b/packages/design/src/physics/ICollision.ts index 17ddbfcbef..3a44b740c9 100644 --- a/packages/design/src/physics/ICollision.ts +++ b/packages/design/src/physics/ICollision.ts @@ -9,10 +9,10 @@ export interface ICollision { /** Count of contact points. */ contactCount: number; /** Get contact points. */ - getContacts(): PhysXVectorPxContactPairPoint; + getContacts(): VectorPxContactPairPoint; } -interface PhysXVectorPxContactPairPoint { +interface VectorPxContactPairPoint { size(): number; get(index: number): IContactPoint; } diff --git a/packages/design/src/physics/shape/IColliderShape.ts b/packages/design/src/physics/shape/IColliderShape.ts index 12bb70f9e0..2819623326 100644 --- a/packages/design/src/physics/shape/IColliderShape.ts +++ b/packages/design/src/physics/shape/IColliderShape.ts @@ -1,4 +1,4 @@ -import { Quaternion, Vector3 } from "@galacean/engine-math"; +import { Quaternion, Vector3, Vector4 } from "@galacean/engine-math"; import { IPhysicsMaterial } from "../IPhysicsMaterial"; /** @@ -48,24 +48,9 @@ export interface IColliderShape { * @param point - The point * @returns The distance information */ - pointDistance(position: Vector3, rotation: Quaternion, point: Vector3): IPointDistanceInfo; + pointDistance(position: Vector3, rotation: Quaternion, point: Vector3): Vector4; /** * Decrements the reference count of a shape and releases it if the new reference count is zero. */ destroy(): void; } - -/** - * Distance information of a point to the shape. - */ -export interface IPointDistanceInfo { - /** - * The distance between the point and the shape. - */ - distance: number; - - /** - * The closest point on the shape. - */ - closestPoint: Vector3; -} diff --git a/packages/design/src/physics/shape/index.ts b/packages/design/src/physics/shape/index.ts index babc4db52c..028e49de5d 100644 --- a/packages/design/src/physics/shape/index.ts +++ b/packages/design/src/physics/shape/index.ts @@ -1,4 +1,4 @@ -export type { IColliderShape, IPointDistanceInfo } from "./IColliderShape"; +export type { IColliderShape } from "./IColliderShape"; export type { IBoxColliderShape } from "./IBoxColliderShape"; export type { ICapsuleColliderShape } from "./ICapsuleColliderShape"; export type { ISphereColliderShape } from "./ISphereColliderShape"; diff --git a/packages/physics-lite/src/shape/LiteBoxColliderShape.ts b/packages/physics-lite/src/shape/LiteBoxColliderShape.ts index ade25aa2bf..af06fde1b5 100644 --- a/packages/physics-lite/src/shape/LiteBoxColliderShape.ts +++ b/packages/physics-lite/src/shape/LiteBoxColliderShape.ts @@ -1,5 +1,5 @@ -import { BoundingBox, Matrix, Quaternion, Ray, Vector3 } from "@galacean/engine"; -import { IBoxColliderShape, IPointDistanceInfo } from "@galacean/engine-design"; +import { BoundingBox, Matrix, Quaternion, Ray, Vector3, Vector4 } from "@galacean/engine"; +import { IBoxColliderShape } from "@galacean/engine-design"; import { LiteHitResult } from "../LiteHitResult"; import { LitePhysicsMaterial } from "../LitePhysicsMaterial"; import { LiteColliderShape } from "./LiteColliderShape"; @@ -60,25 +60,25 @@ export class LiteBoxColliderShape extends LiteColliderShape implements IBoxColli /** * {@inheritDoc IColliderShape.pointDistance } */ - override pointDistance(position: Vector3, rotation: Quaternion, point: Vector3): IPointDistanceInfo { + override pointDistance(position: Vector3, rotation: Quaternion, point: Vector3): Vector4 { const { position: shapePosition } = this._transform; const m = LiteBoxColliderShape._tempMatrix; const invM = LiteBoxColliderShape._tempInvMatrix; const p = LiteColliderShape._tempPoint; - + const scale = this._sizeScale; const boundingBox = LiteBoxColliderShape._tempBox; + const { _boxMin, _boxMax } = this; p.copyFrom(_boxMin); p.subtract(shapePosition); - boundingBox.min.set(p.x, p.y, p.z); + boundingBox.min.set(p.x / scale.x, p.y / scale.y, p.z / scale.z); p.copyFrom(_boxMax); p.subtract(shapePosition); - boundingBox.max.set(p.x, p.y, p.z); + boundingBox.max.set(p.x / scale.x, p.y / scale.y, p.z / scale.z); - Matrix.affineTransformation(this._sizeScale, rotation, position, m); + Matrix.affineTransformation(scale, rotation, position, m); Matrix.invert(m, invM); Vector3.transformCoordinate(point, invM, p); - const min = boundingBox.min; const max = boundingBox.max; p.x = Math.max(min.x, Math.min(p.x, max.x)); @@ -86,17 +86,14 @@ export class LiteBoxColliderShape extends LiteColliderShape implements IBoxColli p.z = Math.max(min.z, Math.min(p.z, max.z)); Vector3.transformCoordinate(p, m, p); + const res = LiteColliderShape._tempVector4; if (Vector3.equals(p, point)) { - return { - distance: 0, - closestPoint: point - }; + res.set(point.x, point.y, point.z, 0); + } else { + res.set(p.x, p.y, p.z, Vector3.distanceSquared(p, point)); } - return { - distance: Vector3.distanceSquared(p, point), - closestPoint: p - }; + return res; } /** diff --git a/packages/physics-lite/src/shape/LiteColliderShape.ts b/packages/physics-lite/src/shape/LiteColliderShape.ts index 959a6ea43b..bec3b67775 100644 --- a/packages/physics-lite/src/shape/LiteColliderShape.ts +++ b/packages/physics-lite/src/shape/LiteColliderShape.ts @@ -1,5 +1,5 @@ -import { MathUtil, Matrix, Quaternion, Ray, Vector3 } from "@galacean/engine"; -import { IColliderShape, IPhysicsMaterial, IPointDistanceInfo } from "@galacean/engine-design"; +import { Matrix, Quaternion, Ray, Vector3, Vector4 } from "@galacean/engine"; +import { IColliderShape, IPhysicsMaterial } from "@galacean/engine-design"; import { LiteCollider } from "../LiteCollider"; import { LiteHitResult } from "../LiteHitResult"; import { LiteTransform } from "../LiteTransform"; @@ -10,6 +10,8 @@ import { LiteUpdateFlag } from "../LiteUpdateFlag"; */ export abstract class LiteColliderShape implements IColliderShape { protected static _tempPoint = new Vector3(); + protected static _tempVector4 = new Vector4(); + private static _ray = new Ray(); /** @internal */ @@ -40,12 +42,7 @@ export abstract class LiteColliderShape implements IColliderShape { setRotation(rotation: Vector3): void { if (rotation !== this._rotation) { this._rotation.copyFrom(rotation); - Quaternion.rotationEuler( - MathUtil.degreeToRadian(rotation.x), - MathUtil.degreeToRadian(rotation.y), - MathUtil.degreeToRadian(rotation.z), - this._transform.rotationQuaternion - ); + Quaternion.rotationEuler(rotation.x, rotation.y, rotation.z, this._transform.rotationQuaternion); } } diff --git a/packages/physics-lite/src/shape/LiteSphereColliderShape.ts b/packages/physics-lite/src/shape/LiteSphereColliderShape.ts index 0770a05476..38746e6a09 100644 --- a/packages/physics-lite/src/shape/LiteSphereColliderShape.ts +++ b/packages/physics-lite/src/shape/LiteSphereColliderShape.ts @@ -1,6 +1,6 @@ -import { IPointDistanceInfo, ISphereColliderShape } from "@galacean/engine-design"; +import { ISphereColliderShape } from "@galacean/engine-design"; import { LiteColliderShape } from "./LiteColliderShape"; -import { BoundingSphere, Quaternion, Ray, Vector3 } from "@galacean/engine"; +import { BoundingSphere, Quaternion, Ray, Vector3, Vector4 } from "@galacean/engine"; import { LiteHitResult } from "../LiteHitResult"; import { LitePhysicsMaterial } from "../LitePhysicsMaterial"; @@ -47,7 +47,7 @@ export class LiteSphereColliderShape extends LiteColliderShape implements ISpher /** * {@inheritDoc IColliderShape.pointDistance } */ - override pointDistance(position: Vector3, rotation: Quaternion, point: Vector3): IPointDistanceInfo { + override pointDistance(position: Vector3, rotation: Quaternion, point: Vector3): Vector4 { const p = LiteColliderShape._tempPoint; Vector3.subtract(point, position, p); const direction = p.normalize(); @@ -55,17 +55,14 @@ export class LiteSphereColliderShape extends LiteColliderShape implements ISpher Vector3.scale(direction, this.worldRadius, p); p.add(position); + const res = LiteColliderShape._tempVector4; if (Vector3.equals(p, point)) { - return { - distance: 0, - closestPoint: point - }; + res.set(point.x, point.y, point.z, 0); + } else { + res.set(p.x, p.y, p.z, Vector3.distanceSquared(p, point)); } - return { - distance: Vector3.distanceSquared(point, p), - closestPoint: p - }; + return res; } /** diff --git a/packages/physics-physx/src/PhysXPhysics.ts b/packages/physics-physx/src/PhysXPhysics.ts index 05631bdb2d..9f3c68b714 100644 --- a/packages/physics-physx/src/PhysXPhysics.ts +++ b/packages/physics-physx/src/PhysXPhysics.ts @@ -92,7 +92,7 @@ export class PhysXPhysics implements IPhysics { if (runtimeMode == PhysXRuntimeMode.JavaScript) { script.src = `https://mdn.alipayobjects.com/rms/afts/file/A*rnDeR58NNGoAAAAAAAAAAAAAARQnAQ/physx.release.js.js`; } else if (runtimeMode == PhysXRuntimeMode.WebAssembly) { - script.src = `https://mdn.alipayobjects.com/rms/afts/file/A*eG1KRpOjfn0AAAAAAAAAAAAAARQnAQ/physx.release.js`; + script.src = `https://mdn.alipayobjects.com/rms/afts/file/A*04GyRKeSJw4AAAAAAAAAAAAAARQnAQ/physx.release.js`; } }); diff --git a/packages/physics-physx/src/shape/PhysXColliderShape.ts b/packages/physics-physx/src/shape/PhysXColliderShape.ts index 2d2cd11eee..917e41a89e 100644 --- a/packages/physics-physx/src/shape/PhysXColliderShape.ts +++ b/packages/physics-physx/src/shape/PhysXColliderShape.ts @@ -1,5 +1,5 @@ -import { Quaternion, Vector3, DisorderedArray } from "@galacean/engine"; -import { IColliderShape, IPointDistanceInfo } from "@galacean/engine-design"; +import { Quaternion, Vector3, DisorderedArray, Vector4 } from "@galacean/engine"; +import { IColliderShape } from "@galacean/engine-design"; import { PhysXCharacterController } from "../PhysXCharacterController"; import { PhysXPhysics } from "../PhysXPhysics"; import { PhysXPhysicsMaterial } from "../PhysXPhysicsMaterial"; @@ -20,6 +20,7 @@ export enum ShapeFlag { * Abstract class for collider shapes. */ export abstract class PhysXColliderShape implements IColliderShape { + protected static _tempVector4 = new Vector4(); static readonly halfSqrt: number = 0.70710678118655; static transform = { translation: new Vector3(), @@ -58,7 +59,7 @@ export abstract class PhysXColliderShape implements IColliderShape { */ setRotation(value: Vector3): void { this._rotation = value; - Quaternion.rotationYawPitchRoll(value.x, value.y, value.z, this._physXRotation); + Quaternion.rotationYawPitchRoll(value.y, value.x, value.z, this._physXRotation); this._axis && Quaternion.multiply(this._physXRotation, this._axis, this._physXRotation); this._physXRotation.normalize(); this._setLocalPose(); @@ -128,11 +129,12 @@ export abstract class PhysXColliderShape implements IColliderShape { /** * {@inheritDoc IColliderShape.pointDistance } */ - pointDistance(translation: Vector3, rotation: Quaternion, point: Vector3): IPointDistanceInfo { - const transform = PhysXColliderShape.transform; - transform.translation = translation; - transform.rotation = rotation; - return this._pxGeometry.pointDistance(transform, point); + pointDistance(translation: Vector3, rotation: Quaternion, point: Vector3): Vector4 { + const info = this._pxGeometry.pointDistance(this._pxShape.getGlobalPose(), point); + const closestPoint = info.closestPoint; + const res = PhysXColliderShape._tempVector4; + res.set(closestPoint.x, closestPoint.y, closestPoint.z, info.distance); + return res; } /** diff --git a/tests/src/core/physics/ColliderShape.test.ts b/tests/src/core/physics/ColliderShape.test.ts index eeea4afed4..12fd2fc17f 100644 --- a/tests/src/core/physics/ColliderShape.test.ts +++ b/tests/src/core/physics/ColliderShape.test.ts @@ -18,7 +18,7 @@ describe("ColliderShape PhysX", () => { let dynamicCollider: DynamicCollider; function formatValue(value: number) { - return Math.round(value * 100000) / 100000; + return Math.round(value * 10000) / 10000; } beforeAll(async () => { @@ -26,6 +26,7 @@ describe("ColliderShape PhysX", () => { engine.run(); const scene = engine.sceneManager.activeScene; + scene.physics.gravity = new Vector3(0, 0, 0); const root = scene.createRootEntity("root"); const roleEntity = root.createChild("role"); @@ -250,67 +251,80 @@ describe("ColliderShape PhysX", () => { expect(sphereShape.rotation).to.deep.include({ x: 40, y: -182, z: 720 }); }); - it("boxShape getDistanceAndClosestPointFromPoint", () => { + it("boxShape getClosestPoint", () => { const boxShape = new BoxColliderShape(); boxShape.size.set(1, 2, 3); boxShape.position.set(2, 3, 4); boxShape.rotation.set(23, 45, 12); dynamicCollider.addShape(boxShape); const entity = dynamicCollider.entity; + const engine = entity.engine; entity.transform.setPosition(2, 3, 5); entity.transform.setScale(3, 4, 5); entity.transform.setRotation(13, -45, 38); const point = new Vector3(-9, 7, 6); const closestPoint = new Vector3(); - let distance = boxShape.getDistanceAndClosestPointFromPoint(point, closestPoint); - expect(formatValue(distance)).to.eq(13.42755); - expect(formatValue(closestPoint.x)).to.eq(-0.20131); - expect(formatValue(closestPoint.y)).to.eq(0.11063); - expect(formatValue(closestPoint.z)).to.eq(-0.35453); + // @ts-ignore + engine.sceneManager.activeScene.physics._update(1 / 60); + let distance = boxShape.getClosestPoint(point, closestPoint); + expect(formatValue(distance)).to.eq(10.492); + expect(formatValue(closestPoint.x)).to.eq(-16.0876); + expect(formatValue(closestPoint.y)).to.eq(10.7095); + expect(formatValue(closestPoint.z)).to.eq(12.7889); entity.transform.setScale(1, 1, 1); entity.transform.setRotation(0, 0, 0); + point.set(4, 6, 9); - distance = boxShape.getDistanceAndClosestPointFromPoint(point, closestPoint); + // @ts-ignore + engine.sceneManager.activeScene.physics._update(1 / 60); + distance = boxShape.getClosestPoint(point, closestPoint); expect(distance).to.eq(0); - expect(closestPoint).to.deep.include({ x: 0, y: 0, z: 0 }); + expect(formatValue(closestPoint.x)).to.eq(4); + expect(formatValue(closestPoint.y)).to.eq(6); + expect(formatValue(closestPoint.z)).to.eq(9); }); - it("sphereShape getDistanceAndClosestPointFromPoint", () => { + it("sphereShape getClosestPoint", () => { const sphereShape = new SphereColliderShape(); sphereShape.radius = 2; sphereShape.position.set(2, 3, 4); dynamicCollider.addShape(sphereShape); const entity = dynamicCollider.entity; + const engine = entity.engine; entity.transform.setPosition(2, 3, 5); entity.transform.setScale(3, 4, 5); entity.transform.setRotation(13, -45, 38); const point = new Vector3(14, 8, 10); const closestPoint = new Vector3(); - const distance = sphereShape.getDistanceAndClosestPointFromPoint(point, closestPoint); - expect(formatValue(distance)).to.eq(29.25711); - expect(formatValue(closestPoint.x)).to.eq(-0.31861); - expect(formatValue(closestPoint.y)).to.eq(-0.16817); - expect(formatValue(closestPoint.z)).to.eq(-0.25466); + // @ts-ignore + engine.sceneManager.activeScene.physics._update(1 / 60); + const distance = sphereShape.getClosestPoint(point, closestPoint); + expect(formatValue(distance)).to.eq(21.2571); + expect(formatValue(closestPoint.x)).to.eq(-6.2337); + expect(formatValue(closestPoint.y)).to.eq(10.2538); + expect(formatValue(closestPoint.z)).to.eq(16.1142); entity.transform.setScale(1, 1, 1); entity.transform.setRotation(0, 0, 0); point.set(4, 6, 9); - const distance2 = sphereShape.getDistanceAndClosestPointFromPoint(point, closestPoint); + // @ts-ignore + engine.sceneManager.activeScene.physics._update(1 / 60); + const distance2 = sphereShape.getClosestPoint(point, closestPoint); expect(distance2).to.eq(0); - expect(closestPoint).to.deep.include({ x: 0, y: 0, z: 0 }); + expect(closestPoint).to.deep.include({ x: 4, y: 6, z: 9 }); }); - it("getDistanceAndClosestPointFromPoint with collider disabled", () => { + it("getClosestPoint with collider disabled", () => { const sphereShape = new BoxColliderShape(); dynamicCollider.addShape(sphereShape); dynamicCollider.enabled = false; const point = new Vector3(2, 0, 0); const closestPoint = new Vector3(); - const distance = sphereShape.getDistanceAndClosestPointFromPoint(point, closestPoint); + const distance = sphereShape.getClosestPoint(point, closestPoint); expect(distance).to.eq(-1); }); @@ -349,7 +363,7 @@ describe("ColliderShape Lite", () => { let dynamicCollider: DynamicCollider; function formatValue(value: number) { - return Math.round(value * 100000) / 100000; + return Math.round(value * 10000) / 10000; } beforeAll(async () => { @@ -466,67 +480,80 @@ describe("ColliderShape Lite", () => { expect(sphereShape.rotation).to.deep.include({ x: 40, y: -182, z: 720 }); }); - it("boxShape getDistanceAndClosestPointFromPoint", () => { + it("boxShape getClosestPoint", () => { const boxShape = new BoxColliderShape(); boxShape.size.set(1, 2, 3); boxShape.position.set(2, 3, 4); boxShape.rotation.set(23, 45, 12); dynamicCollider.addShape(boxShape); const entity = dynamicCollider.entity; + const engine = entity.engine; entity.transform.setPosition(2, 3, 5); entity.transform.setScale(3, 4, 5); entity.transform.setRotation(13, -45, 38); const point = new Vector3(-9, 7, 6); const closestPoint = new Vector3(); - let distance = boxShape.getDistanceAndClosestPointFromPoint(point, closestPoint); - expect(formatValue(distance)).to.eq(13.42755); - expect(formatValue(closestPoint.x)).to.eq(-0.20131); - expect(formatValue(closestPoint.y)).to.eq(0.11063); - expect(formatValue(closestPoint.z)).to.eq(-0.35453); + // @ts-ignore + engine.sceneManager.activeScene.physics._update(1 / 60); + let distance = boxShape.getClosestPoint(point, closestPoint); + expect(formatValue(distance)).to.eq(10.492); + expect(formatValue(closestPoint.x)).to.eq(-16.0876); + expect(formatValue(closestPoint.y)).to.eq(10.7095); + expect(formatValue(closestPoint.z)).to.eq(12.7889); entity.transform.setScale(1, 1, 1); entity.transform.setRotation(0, 0, 0); + point.set(4, 6, 9); - distance = boxShape.getDistanceAndClosestPointFromPoint(point, closestPoint); + // @ts-ignore + engine.sceneManager.activeScene.physics._update(1 / 60); + distance = boxShape.getClosestPoint(point, closestPoint); expect(distance).to.eq(0); - expect(closestPoint).to.deep.include({ x: 0, y: 0, z: 0 }); + expect(formatValue(closestPoint.x)).to.eq(4); + expect(formatValue(closestPoint.y)).to.eq(6); + expect(formatValue(closestPoint.z)).to.eq(9); }); - it("sphereShape getDistanceAndClosestPointFromPoint", () => { + it("sphereShape getClosestPoint", () => { const sphereShape = new SphereColliderShape(); sphereShape.radius = 2; sphereShape.position.set(2, 3, 4); dynamicCollider.addShape(sphereShape); const entity = dynamicCollider.entity; + const engine = entity.engine; entity.transform.setPosition(2, 3, 5); entity.transform.setScale(3, 4, 5); entity.transform.setRotation(13, -45, 38); const point = new Vector3(14, 8, 10); const closestPoint = new Vector3(); - const distance = sphereShape.getDistanceAndClosestPointFromPoint(point, closestPoint); - expect(formatValue(distance)).to.eq(29.25711); - expect(formatValue(closestPoint.x)).to.eq(-0.31861); - expect(formatValue(closestPoint.y)).to.eq(-0.16817); - expect(formatValue(closestPoint.z)).to.eq(-0.25466); + // @ts-ignore + engine.sceneManager.activeScene.physics._update(1 / 60); + const distance = sphereShape.getClosestPoint(point, closestPoint); + expect(formatValue(distance)).to.eq(21.2571); + expect(formatValue(closestPoint.x)).to.eq(-6.2337); + expect(formatValue(closestPoint.y)).to.eq(10.2538); + expect(formatValue(closestPoint.z)).to.eq(16.1142); entity.transform.setScale(1, 1, 1); entity.transform.setRotation(0, 0, 0); point.set(4, 6, 9); - const distance2 = sphereShape.getDistanceAndClosestPointFromPoint(point, closestPoint); + // @ts-ignore + engine.sceneManager.activeScene.physics._update(1 / 60); + const distance2 = sphereShape.getClosestPoint(point, closestPoint); expect(distance2).to.eq(0); - expect(closestPoint).to.deep.include({ x: 0, y: 0, z: 0 }); + expect(closestPoint).to.deep.include({ x: 4, y: 6, z: 9 }); }); - it("getDistanceAndClosestPointFromPoint with collider disabled", () => { + it("getClosestPoint with collider disabled", () => { const sphereShape = new BoxColliderShape(); dynamicCollider.addShape(sphereShape); dynamicCollider.enabled = false; const point = new Vector3(2, 0, 0); const closestPoint = new Vector3(); - const distance = sphereShape.getDistanceAndClosestPointFromPoint(point, closestPoint); + const distance = sphereShape.getClosestPoint(point, closestPoint); expect(distance).to.eq(-1); }); From 180f6d3be6cd514c66e8f9e9eeabc506b63e8486 Mon Sep 17 00:00:00 2001 From: luzhuang <364439895@qq.com> Date: Wed, 18 Dec 2024 17:11:15 +0800 Subject: [PATCH 08/20] refactor: opt code --- packages/core/src/physics/Collision.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/core/src/physics/Collision.ts b/packages/core/src/physics/Collision.ts index 7ee9a9e09f..64ce11d29c 100644 --- a/packages/core/src/physics/Collision.ts +++ b/packages/core/src/physics/Collision.ts @@ -40,7 +40,6 @@ export class Collision { */ getContacts(outContacts: ContactPoint[]): ContactPoint[] { const { shape0Id, shape1Id } = this._nativeCollision; - outContacts.length = 0; const nativeContactPoints = this._nativeCollision.getContacts(); for (let i = 0, n = nativeContactPoints.size(); i < n; i++) { const nativeContractPoint = nativeContactPoints.get(i); From bda087f891180b62b6e8e7afeca388d9ce07a064 Mon Sep 17 00:00:00 2001 From: luzhuang <364439895@qq.com> Date: Wed, 18 Dec 2024 17:19:09 +0800 Subject: [PATCH 09/20] refactor: opt code --- packages/core/src/physics/Collision.ts | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/packages/core/src/physics/Collision.ts b/packages/core/src/physics/Collision.ts index 64ce11d29c..194f679f5e 100644 --- a/packages/core/src/physics/Collision.ts +++ b/packages/core/src/physics/Collision.ts @@ -36,12 +36,15 @@ export class Collision { /** * Get contact points. * @param outContacts - The result of contact points - * @returns The result of contact points + * @returns The actual count of contact points + * @remarks To optimize performance, the engine does not modify the length of the array you pass. + * You need to obtain the actual number of contact points from the function's return value. */ - getContacts(outContacts: ContactPoint[]): ContactPoint[] { + getContacts(outContacts: ContactPoint[]): number { const { shape0Id, shape1Id } = this._nativeCollision; const nativeContactPoints = this._nativeCollision.getContacts(); - for (let i = 0, n = nativeContactPoints.size(); i < n; i++) { + const length = nativeContactPoints.size(); + for (let i = 0, n = length; i < n; i++) { const nativeContractPoint = nativeContactPoints.get(i); const { position, normal, impulse, separation } = nativeContractPoint; let factor = 1; @@ -55,6 +58,6 @@ export class Collision { contact.impulse.set(impulse.x, impulse.y, impulse.z).scale(factor); contact.separation = separation; } - return outContacts; + return length; } } From 9c4298b36f35c643323165603c98ec3b5c319c47 Mon Sep 17 00:00:00 2001 From: luzhuang <364439895@qq.com> Date: Wed, 18 Dec 2024 17:33:25 +0800 Subject: [PATCH 10/20] refactor: opt code --- packages/core/src/physics/Collision.ts | 33 ++++++----------------- packages/core/src/physics/ContactPoint.ts | 15 +++++++++++ packages/core/src/physics/index.ts | 2 ++ packages/design/src/physics/ICollision.ts | 4 +-- 4 files changed, 27 insertions(+), 27 deletions(-) create mode 100644 packages/core/src/physics/ContactPoint.ts diff --git a/packages/core/src/physics/Collision.ts b/packages/core/src/physics/Collision.ts index 194f679f5e..013fd25e6c 100644 --- a/packages/core/src/physics/Collision.ts +++ b/packages/core/src/physics/Collision.ts @@ -1,21 +1,7 @@ -import { Vector3 } from "@galacean/engine-math"; +import { ContactPoint } from "./ContactPoint"; import { ColliderShape } from "./shape"; import { ICollision } from "@galacean/engine-design"; -/** - * Describes a contact point where the collision occurs. - */ -export class ContactPoint { - /** The position of the contact point between the shapes, in world space. */ - readonly position = new Vector3(); - /** The normal of the contacting surfaces at the contact point. The normal direction points from the second shape to the first shape. */ - readonly normal = new Vector3(); - /** The impulse applied at the contact point, in world space. Divide by the simulation time step to get a force value. */ - readonly impulse = new Vector3(); - /** The separation of the shapes at the contact point. A negative separation denotes a penetration. */ - separation: number; -} - /** * Collision information between two shapes when they collide. */ @@ -42,21 +28,18 @@ export class Collision { */ getContacts(outContacts: ContactPoint[]): number { const { shape0Id, shape1Id } = this._nativeCollision; + const factor = shape0Id < shape1Id ? 1 : -1; + const nativeContactPoints = this._nativeCollision.getContacts(); const length = nativeContactPoints.size(); - for (let i = 0, n = length; i < n; i++) { + for (let i = 0; i < length; i++) { const nativeContractPoint = nativeContactPoints.get(i); - const { position, normal, impulse, separation } = nativeContractPoint; - let factor = 1; - if (shape0Id > shape1Id) { - factor = -1; - } const contact = (outContacts[i] ||= new ContactPoint()); - contact.position.set(position.x, position.y, position.z); - contact.normal.set(normal.x, normal.y, normal.z).scale(factor); - contact.impulse.set(impulse.x, impulse.y, impulse.z).scale(factor); - contact.separation = separation; + contact.position.copyFrom(nativeContractPoint.position); + contact.normal.copyFrom(nativeContractPoint.normal).scale(factor); + contact.impulse.copyFrom(nativeContractPoint.impulse).scale(factor); + contact.separation = nativeContractPoint.separation; } return length; } diff --git a/packages/core/src/physics/ContactPoint.ts b/packages/core/src/physics/ContactPoint.ts new file mode 100644 index 0000000000..ac24ab3ae8 --- /dev/null +++ b/packages/core/src/physics/ContactPoint.ts @@ -0,0 +1,15 @@ +import { Vector3 } from "@galacean/engine-math"; + +/** + * Describes a contact point where the collision occurs. + */ +export class ContactPoint { + /** The position of the contact point between the shapes, in world space. */ + readonly position = new Vector3(); + /** The normal of the contacting surfaces at the contact point. The normal direction points from the second shape to the first shape. */ + readonly normal = new Vector3(); + /** The impulse applied at the contact point, in world space. Divide by the simulation time step to get a force value. */ + readonly impulse = new Vector3(); + /** The separation of the shapes at the contact point. A negative separation denotes a penetration. */ + separation: number; +} diff --git a/packages/core/src/physics/index.ts b/packages/core/src/physics/index.ts index b7fbe00d86..537bd367d6 100644 --- a/packages/core/src/physics/index.ts +++ b/packages/core/src/physics/index.ts @@ -5,6 +5,8 @@ export { HitResult } from "./HitResult"; export { PhysicsMaterial } from "./PhysicsMaterial"; export { PhysicsScene } from "./PhysicsScene"; export { StaticCollider } from "./StaticCollider"; +export { Collision } from "./Collision"; +export { ContactPoint } from "./ContactPoint"; export * from "./enums"; export * from "./joint"; export * from "./shape"; diff --git a/packages/design/src/physics/ICollision.ts b/packages/design/src/physics/ICollision.ts index 3a44b740c9..c0dd650797 100644 --- a/packages/design/src/physics/ICollision.ts +++ b/packages/design/src/physics/ICollision.ts @@ -9,10 +9,10 @@ export interface ICollision { /** Count of contact points. */ contactCount: number; /** Get contact points. */ - getContacts(): VectorPxContactPairPoint; + getContacts(): VectorContactPairPoint; } -interface VectorPxContactPairPoint { +interface VectorContactPairPoint { size(): number; get(index: number): IContactPoint; } From 3801a631f63bd715c5520d2aa84da490c253564a Mon Sep 17 00:00:00 2001 From: luzhuang <364439895@qq.com> Date: Wed, 18 Dec 2024 17:56:43 +0800 Subject: [PATCH 11/20] refactor: opt code --- packages/core/src/physics/shape/ColliderShape.ts | 9 +-------- packages/design/src/physics/shape/IColliderShape.ts | 4 +--- .../physics-lite/src/shape/LiteBoxColliderShape.ts | 11 ++++++++--- packages/physics-lite/src/shape/LiteColliderShape.ts | 3 +++ .../physics-lite/src/shape/LiteSphereColliderShape.ts | 4 +++- .../physics-physx/src/shape/PhysXColliderShape.ts | 2 +- 6 files changed, 17 insertions(+), 16 deletions(-) diff --git a/packages/core/src/physics/shape/ColliderShape.ts b/packages/core/src/physics/shape/ColliderShape.ts index b09b549df3..23841758ef 100644 --- a/packages/core/src/physics/shape/ColliderShape.ts +++ b/packages/core/src/physics/shape/ColliderShape.ts @@ -147,15 +147,8 @@ export abstract class ColliderShape implements ICustomClone { console.warn("The collider is not active in scene."); return -1; } - const tempQuat = ColliderShape._tempWorldRot; - const tempPos = ColliderShape._tempWorldPos; - Vector3.transformCoordinate(this._position, collider.entity.transform.worldMatrix, tempPos); - const rotation = this._rotation; - Quaternion.rotationEuler(rotation.x, rotation.y, rotation.z, tempQuat); - Quaternion.multiply(this._collider.entity.transform.rotationQuaternion, tempQuat, tempQuat); - - const res = this._nativeShape.pointDistance(tempPos, tempQuat, point); + const res = this._nativeShape.pointDistance(point); const distance = res.w; if (distance > 0) { outClosestPoint.set(res.x, res.y, res.z); diff --git a/packages/design/src/physics/shape/IColliderShape.ts b/packages/design/src/physics/shape/IColliderShape.ts index 2819623326..cf78c852ee 100644 --- a/packages/design/src/physics/shape/IColliderShape.ts +++ b/packages/design/src/physics/shape/IColliderShape.ts @@ -43,12 +43,10 @@ export interface IColliderShape { /** * Get the distance between a point and the shape. - * @param position - The position in world space - * @param rotation - The rotation in world space * @param point - The point * @returns The distance information */ - pointDistance(position: Vector3, rotation: Quaternion, point: Vector3): Vector4; + pointDistance(point: Vector3): Vector4; /** * Decrements the reference count of a shape and releases it if the new reference count is zero. */ diff --git a/packages/physics-lite/src/shape/LiteBoxColliderShape.ts b/packages/physics-lite/src/shape/LiteBoxColliderShape.ts index af06fde1b5..af41c8305e 100644 --- a/packages/physics-lite/src/shape/LiteBoxColliderShape.ts +++ b/packages/physics-lite/src/shape/LiteBoxColliderShape.ts @@ -60,7 +60,10 @@ export class LiteBoxColliderShape extends LiteColliderShape implements IBoxColli /** * {@inheritDoc IColliderShape.pointDistance } */ - override pointDistance(position: Vector3, rotation: Quaternion, point: Vector3): Vector4 { + override pointDistance(point: Vector3): Vector4 { + const position = LiteColliderShape._tempPos; + const rotation = LiteColliderShape._tempRot; + this._transform.worldMatrix.decompose(position, rotation, LiteColliderShape._tempScale); const { position: shapePosition } = this._transform; const m = LiteBoxColliderShape._tempMatrix; const invM = LiteBoxColliderShape._tempInvMatrix; @@ -71,10 +74,12 @@ export class LiteBoxColliderShape extends LiteColliderShape implements IBoxColli const { _boxMin, _boxMax } = this; p.copyFrom(_boxMin); p.subtract(shapePosition); - boundingBox.min.set(p.x / scale.x, p.y / scale.y, p.z / scale.z); + p.divide(scale); + boundingBox.min.copyFrom(p); p.copyFrom(_boxMax); p.subtract(shapePosition); - boundingBox.max.set(p.x / scale.x, p.y / scale.y, p.z / scale.z); + p.divide(scale); + boundingBox.max.copyFrom(p); Matrix.affineTransformation(scale, rotation, position, m); Matrix.invert(m, invM); diff --git a/packages/physics-lite/src/shape/LiteColliderShape.ts b/packages/physics-lite/src/shape/LiteColliderShape.ts index bec3b67775..e1ae12622b 100644 --- a/packages/physics-lite/src/shape/LiteColliderShape.ts +++ b/packages/physics-lite/src/shape/LiteColliderShape.ts @@ -9,6 +9,9 @@ import { LiteUpdateFlag } from "../LiteUpdateFlag"; * Abstract class for collider shapes. */ export abstract class LiteColliderShape implements IColliderShape { + protected static _tempPos = new Vector3(); + protected static _tempRot = new Quaternion(); + protected static _tempScale = new Vector3(); protected static _tempPoint = new Vector3(); protected static _tempVector4 = new Vector4(); diff --git a/packages/physics-lite/src/shape/LiteSphereColliderShape.ts b/packages/physics-lite/src/shape/LiteSphereColliderShape.ts index 38746e6a09..9bc4a42cd9 100644 --- a/packages/physics-lite/src/shape/LiteSphereColliderShape.ts +++ b/packages/physics-lite/src/shape/LiteSphereColliderShape.ts @@ -47,7 +47,9 @@ export class LiteSphereColliderShape extends LiteColliderShape implements ISpher /** * {@inheritDoc IColliderShape.pointDistance } */ - override pointDistance(position: Vector3, rotation: Quaternion, point: Vector3): Vector4 { + override pointDistance(point: Vector3): Vector4 { + const position = LiteColliderShape._tempPos; + this._transform.worldMatrix.decompose(position, LiteColliderShape._tempRot, LiteColliderShape._tempScale); const p = LiteColliderShape._tempPoint; Vector3.subtract(point, position, p); const direction = p.normalize(); diff --git a/packages/physics-physx/src/shape/PhysXColliderShape.ts b/packages/physics-physx/src/shape/PhysXColliderShape.ts index 917e41a89e..a2565ade4d 100644 --- a/packages/physics-physx/src/shape/PhysXColliderShape.ts +++ b/packages/physics-physx/src/shape/PhysXColliderShape.ts @@ -129,7 +129,7 @@ export abstract class PhysXColliderShape implements IColliderShape { /** * {@inheritDoc IColliderShape.pointDistance } */ - pointDistance(translation: Vector3, rotation: Quaternion, point: Vector3): Vector4 { + pointDistance(point: Vector3): Vector4 { const info = this._pxGeometry.pointDistance(this._pxShape.getGlobalPose(), point); const closestPoint = info.closestPoint; const res = PhysXColliderShape._tempVector4; From 89d166a7c2e43497c3a7bfc59867f4ba27bf7f8a Mon Sep 17 00:00:00 2001 From: luzhuang <364439895@qq.com> Date: Wed, 18 Dec 2024 17:58:21 +0800 Subject: [PATCH 12/20] refactor: opt code --- packages/core/src/physics/Collision.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/core/src/physics/Collision.ts b/packages/core/src/physics/Collision.ts index 013fd25e6c..5638a35980 100644 --- a/packages/core/src/physics/Collision.ts +++ b/packages/core/src/physics/Collision.ts @@ -23,14 +23,15 @@ export class Collision { * Get contact points. * @param outContacts - The result of contact points * @returns The actual count of contact points + * * @remarks To optimize performance, the engine does not modify the length of the array you pass. * You need to obtain the actual number of contact points from the function's return value. */ getContacts(outContacts: ContactPoint[]): number { - const { shape0Id, shape1Id } = this._nativeCollision; - const factor = shape0Id < shape1Id ? 1 : -1; + const nativeCollision = this._nativeCollision; + const factor = nativeCollision.shape0Id < nativeCollision.shape1Id ? 1 : -1; - const nativeContactPoints = this._nativeCollision.getContacts(); + const nativeContactPoints = nativeCollision.getContacts(); const length = nativeContactPoints.size(); for (let i = 0; i < length; i++) { const nativeContractPoint = nativeContactPoints.get(i); From 8ac3ea2b0179132baae088e0b3bce05a365ad2a2 Mon Sep 17 00:00:00 2001 From: luzhuang <364439895@qq.com> Date: Wed, 18 Dec 2024 18:10:56 +0800 Subject: [PATCH 13/20] refactor: opt code --- packages/core/src/physics/shape/ColliderShape.ts | 4 +--- packages/physics-lite/src/shape/LiteColliderShape.ts | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/core/src/physics/shape/ColliderShape.ts b/packages/core/src/physics/shape/ColliderShape.ts index 23841758ef..7701561635 100644 --- a/packages/core/src/physics/shape/ColliderShape.ts +++ b/packages/core/src/physics/shape/ColliderShape.ts @@ -1,6 +1,6 @@ import { IColliderShape } from "@galacean/engine-design"; import { PhysicsMaterial } from "../PhysicsMaterial"; -import { MathUtil, Matrix, Quaternion, Vector3 } from "@galacean/engine-math"; +import { Vector3 } from "@galacean/engine-math"; import { Collider } from "../Collider"; import { deepClone, ignoreClone } from "../../clone/CloneManager"; import { ICustomClone } from "../../clone/ComponentCloner"; @@ -11,8 +11,6 @@ import { Engine } from "../../Engine"; */ export abstract class ColliderShape implements ICustomClone { private static _idGenerator: number = 0; - private static _tempWorldPos: Vector3 = new Vector3(); - private static _tempWorldRot: Quaternion = new Quaternion(); /** @internal */ @ignoreClone diff --git a/packages/physics-lite/src/shape/LiteColliderShape.ts b/packages/physics-lite/src/shape/LiteColliderShape.ts index e1ae12622b..a205753972 100644 --- a/packages/physics-lite/src/shape/LiteColliderShape.ts +++ b/packages/physics-lite/src/shape/LiteColliderShape.ts @@ -98,7 +98,7 @@ export abstract class LiteColliderShape implements IColliderShape { /** * {@inheritDoc IColliderShape.pointDistance } */ - abstract pointDistance(position: Vector3, rotation: Quaternion, point: Vector3): IPointDistanceInfo; + abstract pointDistance(point: Vector3): Vector4; /** * {@inheritDoc IColliderShape.destroy } From 7c5b4c947c7d6c938855ad2dcc5f82f2af1c6efc Mon Sep 17 00:00:00 2001 From: luzhuang <364439895@qq.com> Date: Wed, 18 Dec 2024 18:36:28 +0800 Subject: [PATCH 14/20] refactor: opt code --- packages/design/src/physics/shape/IColliderShape.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/design/src/physics/shape/IColliderShape.ts b/packages/design/src/physics/shape/IColliderShape.ts index cf78c852ee..dd3df38eda 100644 --- a/packages/design/src/physics/shape/IColliderShape.ts +++ b/packages/design/src/physics/shape/IColliderShape.ts @@ -43,8 +43,9 @@ export interface IColliderShape { /** * Get the distance between a point and the shape. - * @param point - The point - * @returns The distance information + * @param point - Location in world space you want to find the closest point to + * @returns The x, y, and z components of the Vector4 represent the closest point on the shape in world space, + * and the w component represents the distance between the point and the shape */ pointDistance(point: Vector3): Vector4; /** From b97b6ac096999dc35094d4c5b23dc0032d204d2d Mon Sep 17 00:00:00 2001 From: luzhuang <364439895@qq.com> Date: Thu, 19 Dec 2024 10:46:58 +0800 Subject: [PATCH 15/20] fix: lite closest point error when point internal --- .../physics-lite/src/shape/LiteSphereColliderShape.ts | 8 +++++--- tests/src/core/physics/ColliderShape.test.ts | 4 ++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/packages/physics-lite/src/shape/LiteSphereColliderShape.ts b/packages/physics-lite/src/shape/LiteSphereColliderShape.ts index 9bc4a42cd9..6d25da3002 100644 --- a/packages/physics-lite/src/shape/LiteSphereColliderShape.ts +++ b/packages/physics-lite/src/shape/LiteSphereColliderShape.ts @@ -49,19 +49,21 @@ export class LiteSphereColliderShape extends LiteColliderShape implements ISpher */ override pointDistance(point: Vector3): Vector4 { const position = LiteColliderShape._tempPos; + const worldRadius = this.worldRadius; this._transform.worldMatrix.decompose(position, LiteColliderShape._tempRot, LiteColliderShape._tempScale); const p = LiteColliderShape._tempPoint; Vector3.subtract(point, position, p); const direction = p.normalize(); - Vector3.scale(direction, this.worldRadius, p); + Vector3.scale(direction, worldRadius, p); p.add(position); const res = LiteColliderShape._tempVector4; - if (Vector3.equals(p, point)) { + const distanceSquared = Vector3.distanceSquared(p, point); + if (distanceSquared <= worldRadius * worldRadius) { res.set(point.x, point.y, point.z, 0); } else { - res.set(p.x, p.y, p.z, Vector3.distanceSquared(p, point)); + res.set(p.x, p.y, p.z, distanceSquared); } return res; diff --git a/tests/src/core/physics/ColliderShape.test.ts b/tests/src/core/physics/ColliderShape.test.ts index 12fd2fc17f..7cb098db9d 100644 --- a/tests/src/core/physics/ColliderShape.test.ts +++ b/tests/src/core/physics/ColliderShape.test.ts @@ -538,12 +538,12 @@ describe("ColliderShape Lite", () => { entity.transform.setScale(1, 1, 1); entity.transform.setRotation(0, 0, 0); - point.set(4, 6, 9); + point.set(3, 6, 9); // @ts-ignore engine.sceneManager.activeScene.physics._update(1 / 60); const distance2 = sphereShape.getClosestPoint(point, closestPoint); expect(distance2).to.eq(0); - expect(closestPoint).to.deep.include({ x: 4, y: 6, z: 9 }); + expect(closestPoint).to.deep.include({ x: 3, y: 6, z: 9 }); }); it("getClosestPoint with collider disabled", () => { From 71bca27d930a2085a625e332a7c290b1ceaca00f Mon Sep 17 00:00:00 2001 From: luzhuang <364439895@qq.com> Date: Fri, 20 Dec 2024 13:27:54 +0800 Subject: [PATCH 16/20] fix: lite closest point error when point internal --- .../physics-lite/src/shape/LiteSphereColliderShape.ts | 4 +++- tests/src/core/physics/ColliderShape.test.ts | 8 ++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/physics-lite/src/shape/LiteSphereColliderShape.ts b/packages/physics-lite/src/shape/LiteSphereColliderShape.ts index 6d25da3002..7bce0c2add 100644 --- a/packages/physics-lite/src/shape/LiteSphereColliderShape.ts +++ b/packages/physics-lite/src/shape/LiteSphereColliderShape.ts @@ -53,6 +53,7 @@ export class LiteSphereColliderShape extends LiteColliderShape implements ISpher this._transform.worldMatrix.decompose(position, LiteColliderShape._tempRot, LiteColliderShape._tempScale); const p = LiteColliderShape._tempPoint; Vector3.subtract(point, position, p); + const distanceFromCenter = p.lengthSquared(); const direction = p.normalize(); Vector3.scale(direction, worldRadius, p); @@ -60,7 +61,8 @@ export class LiteSphereColliderShape extends LiteColliderShape implements ISpher const res = LiteColliderShape._tempVector4; const distanceSquared = Vector3.distanceSquared(p, point); - if (distanceSquared <= worldRadius * worldRadius) { + + if (distanceFromCenter <= worldRadius * worldRadius) { res.set(point.x, point.y, point.z, 0); } else { res.set(p.x, p.y, p.z, distanceSquared); diff --git a/tests/src/core/physics/ColliderShape.test.ts b/tests/src/core/physics/ColliderShape.test.ts index 7cb098db9d..1e4e109fab 100644 --- a/tests/src/core/physics/ColliderShape.test.ts +++ b/tests/src/core/physics/ColliderShape.test.ts @@ -538,12 +538,20 @@ describe("ColliderShape Lite", () => { entity.transform.setScale(1, 1, 1); entity.transform.setRotation(0, 0, 0); + point.set(3, 6, 9); // @ts-ignore engine.sceneManager.activeScene.physics._update(1 / 60); const distance2 = sphereShape.getClosestPoint(point, closestPoint); expect(distance2).to.eq(0); expect(closestPoint).to.deep.include({ x: 3, y: 6, z: 9 }); + + point.set(8, 6, 9); + // @ts-ignore + engine.sceneManager.activeScene.physics._update(1 / 60); + const distance3 = sphereShape.getClosestPoint(point, closestPoint); + expect(distance3).to.eq(2); + expect(closestPoint).to.deep.include({ x: 6, y: 6, z: 9 }); }); it("getClosestPoint with collider disabled", () => { From 6eb9d5ca82fb525c4df6252469c7c88009ed6810 Mon Sep 17 00:00:00 2001 From: luzhuang <364439895@qq.com> Date: Tue, 24 Dec 2024 15:21:39 +0800 Subject: [PATCH 17/20] feat: add physicsMaterial loader and joint component parser --- packages/core/src/asset/AssetType.ts | 4 +- .../core/src/physics/CharacterController.ts | 6 +-- packages/core/src/physics/DynamicCollider.ts | 15 +++++++ packages/core/src/physics/joint/Joint.ts | 27 ++++++++----- .../core/src/physics/joint/JointLimits.ts | 2 +- packages/core/src/physics/joint/JointMotor.ts | 24 ++++++++---- .../core/src/physics/shape/ColliderShape.ts | 5 ++- .../src/physics/ICharacterController.ts | 2 +- .../design/src/physics/IDynamicCollider.ts | 5 +++ packages/loader/src/PhysicsMaterialLoader.ts | 39 +++++++++++++++++++ packages/loader/src/index.ts | 1 + .../resources/parser/HierarchyParser.ts | 3 +- .../resources/parser/ParserContext.ts | 38 +++++++++++++----- .../resources/parser/ReflectionParser.ts | 25 +++++++++--- .../resources/schema/BasicSchema.ts | 5 +++ .../physics-lite/src/LiteDynamicCollider.ts | 7 ++++ .../src/PhysXCharacterController.ts | 2 +- .../physics-physx/src/PhysXDynamicCollider.ts | 7 ++++ .../src/shape/PhysXCapsuleColliderShape.ts | 2 +- .../core/physics/CharacterController.test.ts | 11 +++--- .../src/core/physics/DynamicCollider.test.ts | 15 +++++++ 21 files changed, 195 insertions(+), 50 deletions(-) create mode 100644 packages/loader/src/PhysicsMaterialLoader.ts diff --git a/packages/core/src/asset/AssetType.ts b/packages/core/src/asset/AssetType.ts index d1e4725256..a176d32732 100644 --- a/packages/core/src/asset/AssetType.ts +++ b/packages/core/src/asset/AssetType.ts @@ -60,5 +60,7 @@ export enum AssetType { /** AudioClip, include ogg, wav and mp3. */ Audio = "Audio", /** Project asset. */ - Project = "project" + Project = "project", + /** PhysicsMaterial. */ + PhysicsMaterial = "PhysicsMaterial" } diff --git a/packages/core/src/physics/CharacterController.ts b/packages/core/src/physics/CharacterController.ts index d96eae2048..2cef370d3a 100644 --- a/packages/core/src/physics/CharacterController.ts +++ b/packages/core/src/physics/CharacterController.ts @@ -15,7 +15,7 @@ export class CharacterController extends Collider { private _nonWalkableMode: ControllerNonWalkableMode = ControllerNonWalkableMode.PreventClimbing; @deepClone private _upDirection = new Vector3(0, 1, 0); - private _slopeLimit = 0.707; + private _slopeLimit = 45; /** * The step offset for the controller, the value must be greater than or equal to 0. @@ -61,8 +61,8 @@ export class CharacterController extends Collider { } /** - * The slope limit for the controller, the value is the cosine value of the maximum slope angle. - * @defaultValue 0.707(the cosine value of 45 degrees) + * The slope limit in degrees for the controller, the value is the cosine value of the maximum slope angle. + * @defaultValue 45 degrees */ get slopeLimit(): number { return this._slopeLimit; diff --git a/packages/core/src/physics/DynamicCollider.ts b/packages/core/src/physics/DynamicCollider.ts index 26a8384529..bbb17e886d 100644 --- a/packages/core/src/physics/DynamicCollider.ts +++ b/packages/core/src/physics/DynamicCollider.ts @@ -23,6 +23,7 @@ export class DynamicCollider extends Collider { private _maxAngularVelocity = 100; private _maxDepenetrationVelocity = 1.0000000331813535e32; private _solverIterations = 4; + private _useGravity = true; private _isKinematic = false; private _constraints: DynamicColliderConstraints = 0; private _collisionDetectionMode: CollisionDetectionMode = CollisionDetectionMode.Discrete; @@ -240,6 +241,20 @@ export class DynamicCollider extends Collider { } } + /** + * Controls whether gravity affects the dynamic collider. + */ + get useGravity(): boolean { + return this._useGravity; + } + + set useGravity(value: boolean) { + if (this._useGravity !== value) { + this._useGravity = value; + (this._nativeCollider).setUseGravity(value); + } + } + /** * Controls whether physics affects the dynamic collider. */ diff --git a/packages/core/src/physics/joint/Joint.ts b/packages/core/src/physics/joint/Joint.ts index d86fae052c..871769bf21 100644 --- a/packages/core/src/physics/joint/Joint.ts +++ b/packages/core/src/physics/joint/Joint.ts @@ -6,12 +6,12 @@ import { dependentComponents, DependentMode } from "../../ComponentsDependencies import { Entity } from "../../Entity"; import { Collider } from "../Collider"; import { TransformModifyFlags } from "../../Transform"; - +import { DynamicCollider } from "../DynamicCollider"; /** * A base class providing common functionality for joints. * @decorator `@dependentComponents(Collider, DependentMode.CheckOnly)` */ -@dependentComponents(Collider, DependentMode.CheckOnly) +@dependentComponents(DynamicCollider, DependentMode.AutoAdd) export abstract class Joint extends Component { private static _tempVector3 = new Vector3(); @@ -37,7 +37,7 @@ export abstract class Joint extends Component { this._connectedColliderInfo.collider?.entity._updateFlagManager.removeListener(this._onConnectedTransformChanged); value?.entity._updateFlagManager.addListener(this._onConnectedTransformChanged); this._connectedColliderInfo.collider = value; - this._nativeJoint?.setConnectedCollider(value._nativeCollider); + this._nativeJoint?.setConnectedCollider(value?._nativeCollider); if (this._automaticConnectedAnchor) { this._calculateConnectedAnchor(); } else { @@ -47,8 +47,7 @@ export abstract class Joint extends Component { } /** - * The connected anchor position. - * @remarks If connectedCollider is set, this anchor is relative offset, or the anchor is world position. + * The anchor position. */ get anchor(): Vector3 { return this._colliderInfo.anchor; @@ -66,13 +65,21 @@ export abstract class Joint extends Component { /** * The connected anchor position. * @remarks If connectedCollider is set, this anchor is relative offset, or the anchor is world position. + * The connectedAnchor is automatically calculated, if you want to set it manually, please set automaticConnectedAnchor to false */ get connectedAnchor(): Vector3 { + if (this._automaticConnectedAnchor) { + //@ts-ignore + this._connectedColliderInfo.anchor._onValueChanged = null; + this._calculateConnectedAnchor(); + //@ts-ignore + this._connectedColliderInfo.anchor._onValueChanged = this._updateActualAnchor.bind(this, AnchorOwner.Connected); + } return this._connectedColliderInfo.anchor; } set connectedAnchor(value: Vector3) { - if (this.automaticConnectedAnchor) { + if (this._automaticConnectedAnchor) { console.warn("Cannot set connectedAnchor when automaticConnectedAnchor is true."); return; } @@ -96,7 +103,7 @@ export abstract class Joint extends Component { } /** - * The scale to apply to the inverse mass of collider 0 for resolving this constraint. + * The scale to apply to the mass of collider 0 for resolving this constraint. */ get connectedMassScale(): number { return this._connectedColliderInfo.massScale; @@ -110,7 +117,7 @@ export abstract class Joint extends Component { } /** - * The scale to apply to the inverse mass of collider 1 for resolving this constraint. + * The scale to apply to the mass of collider 1 for resolving this constraint. */ get massScale(): number { return this._colliderInfo.massScale; @@ -124,7 +131,7 @@ export abstract class Joint extends Component { } /** - * The scale to apply to the inverse inertia of collider0 for resolving this constraint. + * The scale to apply to the inertia of collider0 for resolving this constraint. */ get connectedInertiaScale(): number { return this._connectedColliderInfo.inertiaScale; @@ -138,7 +145,7 @@ export abstract class Joint extends Component { } /** - * The scale to apply to the inverse inertia of collider1 for resolving this constraint. + * The scale to apply to the inertia of collider1 for resolving this constraint. */ get inertiaScale(): number { return this._colliderInfo.inertiaScale; diff --git a/packages/core/src/physics/joint/JointLimits.ts b/packages/core/src/physics/joint/JointLimits.ts index 40758d63d1..7ffef1f7cf 100644 --- a/packages/core/src/physics/joint/JointLimits.ts +++ b/packages/core/src/physics/joint/JointLimits.ts @@ -41,7 +41,7 @@ export class JointLimits { set min(value: number) { if (value > this._max) { - throw new Error("Min limit must be less than max limit"); + this._max = value; } if (this._min !== value) { this._min = value; diff --git a/packages/core/src/physics/joint/JointMotor.ts b/packages/core/src/physics/joint/JointMotor.ts index ef36d31f90..0f381c1a6c 100644 --- a/packages/core/src/physics/joint/JointMotor.ts +++ b/packages/core/src/physics/joint/JointMotor.ts @@ -22,8 +22,10 @@ export class JointMotor { } set targetVelocity(value: number) { - this._targetVelocity = value; - this._updateFlagManager.dispatch(); + if (this._targetVelocity !== value) { + this._targetVelocity = value; + this._updateFlagManager.dispatch(); + } } /** @@ -34,8 +36,10 @@ export class JointMotor { } set forceLimit(value: number) { - this._forceLimit = value; - this._updateFlagManager.dispatch(); + if (this._forceLimit !== value) { + this._forceLimit = value; + this._updateFlagManager.dispatch(); + } } /** @@ -46,8 +50,10 @@ export class JointMotor { } set gearRatio(value: number) { - this._gearRatio = value; - this._updateFlagManager.dispatch(); + if (this._gearRatio !== value) { + this._gearRatio = value; + this._updateFlagManager.dispatch(); + } } /** @@ -58,7 +64,9 @@ export class JointMotor { } set freeSpin(value: boolean) { - this._freeSpin = value; - this._updateFlagManager.dispatch(); + if (this._freeSpin !== value) { + this._freeSpin = value; + this._updateFlagManager.dispatch(); + } } } diff --git a/packages/core/src/physics/shape/ColliderShape.ts b/packages/core/src/physics/shape/ColliderShape.ts index 7701561635..053871e53d 100644 --- a/packages/core/src/physics/shape/ColliderShape.ts +++ b/packages/core/src/physics/shape/ColliderShape.ts @@ -66,13 +66,16 @@ export abstract class ColliderShape implements ICustomClone { } /** - * Physical material. + * Physical material, material can't be null. */ get material(): PhysicsMaterial { return this._material; } set material(value: PhysicsMaterial) { + if (!value) { + throw new Error("The physics material of the shape can't be null."); + } if (this._material !== value) { this._material = value; this._nativeShape.setMaterial(value._nativeMaterial); diff --git a/packages/design/src/physics/ICharacterController.ts b/packages/design/src/physics/ICharacterController.ts index 03aff94e0b..80cf3bae82 100644 --- a/packages/design/src/physics/ICharacterController.ts +++ b/packages/design/src/physics/ICharacterController.ts @@ -44,7 +44,7 @@ export interface ICharacterController extends ICollider { setUpDirection(up: Vector3): void; /** - * Sets the slope limit. + * Sets the slope limit in degrees. * @param slopeLimit The slope limit for the controller. */ setSlopeLimit(slopeLimit: number): void; diff --git a/packages/design/src/physics/IDynamicCollider.ts b/packages/design/src/physics/IDynamicCollider.ts index c1fbdf5068..f4c31fda6b 100644 --- a/packages/design/src/physics/IDynamicCollider.ts +++ b/packages/design/src/physics/IDynamicCollider.ts @@ -132,6 +132,11 @@ export interface IDynamicCollider extends ICollider { */ setCollisionDetectionMode(value: number): void; + /** + * Whether the collider is affected by gravity. + */ + setUseGravity(value: boolean): void; + /** * Controls whether physics affects the dynamic collider. * @param value - is or not diff --git a/packages/loader/src/PhysicsMaterialLoader.ts b/packages/loader/src/PhysicsMaterialLoader.ts new file mode 100644 index 0000000000..5cdac1036f --- /dev/null +++ b/packages/loader/src/PhysicsMaterialLoader.ts @@ -0,0 +1,39 @@ +import { + resourceLoader, + Loader, + AssetPromise, + AssetType, + LoadItem, + ResourceManager, + ModelMesh, + PhysicsMaterial +} from "@galacean/engine-core"; +import { decode } from "./resource-deserialize"; + +@resourceLoader(AssetType.PhysicsMaterial, ["mesh"]) +class PhysicsMaterialLoader extends Loader { + load(item: LoadItem, resourceManager: ResourceManager): AssetPromise { + return new AssetPromise((resolve, reject) => { + resourceManager + // @ts-ignore + ._request(item.url, { + ...item, + type: "json" + }) + .then((data) => { + const physicsMaterial = new PhysicsMaterial(); + physicsMaterial.bounciness = data.bounciness; + physicsMaterial.dynamicFriction = data.dynamicFriction; + physicsMaterial.staticFriction = data.staticFriction; + physicsMaterial.bounceCombine = data.bounceCombine; + physicsMaterial.frictionCombine = data.frictionCombine; + + return physicsMaterial; + }) + .then((mesh) => { + resolve(mesh); + }) + .catch(reject); + }); + } +} diff --git a/packages/loader/src/index.ts b/packages/loader/src/index.ts index 9316c4dcfd..7b7ec39494 100644 --- a/packages/loader/src/index.ts +++ b/packages/loader/src/index.ts @@ -22,6 +22,7 @@ import "./AudioLoader"; import "./ktx2/KTX2Loader"; import "./ShaderLoader"; import "./ShaderChunkLoader"; +import "./PhysicsMaterialLoader"; export { GLTFLoader } from "./GLTFLoader"; export type { GLTFParams } from "./GLTFLoader"; diff --git a/packages/loader/src/resource-deserialize/resources/parser/HierarchyParser.ts b/packages/loader/src/resource-deserialize/resources/parser/HierarchyParser.ts index b427f44103..2a2d99952b 100644 --- a/packages/loader/src/resource-deserialize/resources/parser/HierarchyParser.ts +++ b/packages/loader/src/resource-deserialize/resources/parser/HierarchyParser.ts @@ -84,7 +84,6 @@ export abstract class HierarchyParser { const entitiesConfig = this.data.entities; const entityMap = this.context.entityMap; - const components = this.context.components; const promises = []; for (let i = 0, l = entitiesConfig.length; i < l; i++) { @@ -94,7 +93,7 @@ export abstract class HierarchyParser { entityMap: Map = new Map(); @@ -18,6 +14,7 @@ export class ParserContext { components: Map = new Map(); rootIds: string[] = []; strippedIds: string[] = []; + componentWaitingMap: Map = new Map(); readonly resourceManager: ResourceManager; @@ -29,10 +26,31 @@ export class ParserContext { this.resourceManager = engine.resourceManager; } - /** - * Destroy the context. - * @memberof ParserContext - */ + addComponent(id: string, component: Component) { + this.components.set(id, component); + const waitingList = this.componentWaitingMap.get(id); + if (waitingList?.length) { + waitingList.forEach((resolve) => resolve(component)); + this.componentWaitingMap.delete(id); + } + } + + getComponentByRef(ref: IComponentRef): Promise { + return new Promise((resolve, reject) => { + const component = this.components.get(ref.componentId); + if (component) { + resolve(component); + } else { + const resolves = this.componentWaitingMap.get(ref.componentId); + if (resolves) { + resolves.push(resolve); + } else { + this.componentWaitingMap.set(ref.componentId, [resolve]); + } + } + }); + } + clear() { this.entityMap.clear(); this.components.clear(); diff --git a/packages/loader/src/resource-deserialize/resources/parser/ReflectionParser.ts b/packages/loader/src/resource-deserialize/resources/parser/ReflectionParser.ts index 3655569f51..47ad86b98d 100644 --- a/packages/loader/src/resource-deserialize/resources/parser/ReflectionParser.ts +++ b/packages/loader/src/resource-deserialize/resources/parser/ReflectionParser.ts @@ -1,5 +1,14 @@ -import { EngineObject, Entity, Loader, ReferResource } from "@galacean/engine-core"; -import type { IAssetRef, IBasicType, IClassObject, IEntity, IEntityRef, IHierarchyFile, IRefEntity } from "../schema"; +import { EngineObject, Entity, Loader } from "@galacean/engine-core"; +import type { + IAssetRef, + IBasicType, + IClassObject, + IEntity, + IEntityRef, + IComponentRef, + IHierarchyFile, + IRefEntity +} from "../schema"; import { ParserContext, ParserType } from "./ParserContext"; export class ReflectionParser { @@ -85,6 +94,8 @@ export class ReflectionParser { } return resource; }); + } else if (ReflectionParser._isComponentRef(value)) { + return this._context.getComponentByRef(value); } else if (ReflectionParser._isEntityRef(value)) { // entity reference return Promise.resolve(this._context.entityMap.get(value.entityId)); @@ -144,14 +155,18 @@ export class ReflectionParser { } private static _isClass(value: any): value is IClassObject { - return value["class"] != undefined; + return value["class"] !== undefined; } private static _isAssetRef(value: any): value is IAssetRef { - return value["refId"] != undefined; + return value["refId"] !== undefined; } private static _isEntityRef(value: any): value is IEntityRef { - return value["entityId"] != undefined; + return value["entityId"] !== undefined; + } + + private static _isComponentRef(value: any): value is IComponentRef { + return value["ownerId"] !== undefined && value["componentId"] !== undefined; } } diff --git a/packages/loader/src/resource-deserialize/resources/schema/BasicSchema.ts b/packages/loader/src/resource-deserialize/resources/schema/BasicSchema.ts index 1cce358d62..8243c46936 100644 --- a/packages/loader/src/resource-deserialize/resources/schema/BasicSchema.ts +++ b/packages/loader/src/resource-deserialize/resources/schema/BasicSchema.ts @@ -92,3 +92,8 @@ export type IBasicType = export type IAssetRef = { key?: string; refId: string }; export type IEntityRef = { entityId: string }; + +export type IComponentRef = { + ownerId: string; + componentId: string; +}; diff --git a/packages/physics-lite/src/LiteDynamicCollider.ts b/packages/physics-lite/src/LiteDynamicCollider.ts index 0660cb18a2..68768a0af7 100644 --- a/packages/physics-lite/src/LiteDynamicCollider.ts +++ b/packages/physics-lite/src/LiteDynamicCollider.ts @@ -133,6 +133,13 @@ export class LiteDynamicCollider extends LiteCollider implements IDynamicCollide Logger.error("Physics-lite don't support setInertiaTensor. Use Physics-PhysX instead!"); } + /** + * {@inheritDoc IDynamicCollider.setUseGravity } + */ + setUseGravity(value: boolean): void { + throw "Physics-lite don't support setUseGravity. Use Physics-PhysX instead!"; + } + /** * {@inheritDoc IDynamicCollider.setIsKinematic } */ diff --git a/packages/physics-physx/src/PhysXCharacterController.ts b/packages/physics-physx/src/PhysXCharacterController.ts index d5a266c8fa..69c1b99400 100644 --- a/packages/physics-physx/src/PhysXCharacterController.ts +++ b/packages/physics-physx/src/PhysXCharacterController.ts @@ -81,7 +81,7 @@ export class PhysXCharacterController implements ICharacterController { * {@inheritDoc ICharacterController.setSlopeLimit } */ setSlopeLimit(slopeLimit: number): void { - this._pxController?.setSlopeLimit(slopeLimit); + this._pxController?.setSlopeLimit(Math.cos((slopeLimit * Math.PI) / 180)); } /** diff --git a/packages/physics-physx/src/PhysXDynamicCollider.ts b/packages/physics-physx/src/PhysXDynamicCollider.ts index e2083e268a..36814065d6 100644 --- a/packages/physics-physx/src/PhysXDynamicCollider.ts +++ b/packages/physics-physx/src/PhysXDynamicCollider.ts @@ -194,6 +194,13 @@ export class PhysXDynamicCollider extends PhysXCollider implements IDynamicColli } } + /** + * {@inheritDoc IDynamicCollider.setUseGravity } + */ + setUseGravity(value: boolean): void { + this._pxActor.setActorFlag(this._physXPhysics._physX.PxActorFlag.eDISABLE_GRAVITY, !value); + } + /** * {@inheritDoc IDynamicCollider.setIsKinematic } */ diff --git a/packages/physics-physx/src/shape/PhysXCapsuleColliderShape.ts b/packages/physics-physx/src/shape/PhysXCapsuleColliderShape.ts index 8d1a75706c..f140cfd65e 100644 --- a/packages/physics-physx/src/shape/PhysXCapsuleColliderShape.ts +++ b/packages/physics-physx/src/shape/PhysXCapsuleColliderShape.ts @@ -104,7 +104,7 @@ export class PhysXCapsuleColliderShape extends PhysXColliderShape implements ICa break; } if (rotation) { - Quaternion.rotationYawPitchRoll(rotation.x, rotation.y, rotation.z, physXRotation); + Quaternion.rotationYawPitchRoll(rotation.y, rotation.x, rotation.z, physXRotation); Quaternion.multiply(physXRotation, axis, physXRotation); } else { physXRotation.copyFrom(axis); diff --git a/tests/src/core/physics/CharacterController.test.ts b/tests/src/core/physics/CharacterController.test.ts index fd7870fc3a..636ed920b2 100644 --- a/tests/src/core/physics/CharacterController.test.ts +++ b/tests/src/core/physics/CharacterController.test.ts @@ -100,7 +100,7 @@ describe("CharacterController", function () { expect(controller.stepOffset).eq(0.5); expect(controller.nonWalkableMode).eq(ControllerNonWalkableMode.PreventClimbing); expect(controller.upDirection).deep.include({ x: 0, y: 1, z: 0 }); - expect(controller.slopeLimit).eq(0.707); + expect(controller.slopeLimit).eq(45); }); it("addShape and removeShape", () => { @@ -179,8 +179,8 @@ describe("CharacterController", function () { const { fixedTimeStep } = engine.sceneManager.activeScene.physics; const moveScript = roleEntity.getComponent(MoveScript); const controller = roleEntity.getComponent(CharacterController); - expect(controller.slopeLimit).eq(0.707); - controller.slopeLimit = 1; + expect(controller.slopeLimit).eq(45); + controller.slopeLimit = 0; const slope = addPlane(new Vector3(0, 0, 2), new Quaternion().rotateX(-Math.PI / 4)); moveScript.moveTo(new Vector3(0, 0, 3), 50); // @ts-ignore @@ -194,7 +194,7 @@ describe("CharacterController", function () { const { fixedTimeStep } = engine.sceneManager.activeScene.physics; const moveScript = roleEntity.getComponent(MoveScript); const controller = roleEntity.getComponent(CharacterController); - expect(controller.slopeLimit).eq(0.707); + expect(controller.slopeLimit).eq(45); const slope = addPlane(new Vector3(0, 0, 2), new Quaternion().rotateX(-Math.PI / 4)); moveScript.moveTo(new Vector3(0, 0, 3), 50); // @ts-ignore @@ -295,7 +295,7 @@ describe("CharacterController", function () { const { fixedTimeStep } = engine.sceneManager.activeScene.physics; const moveScript = newRole.getComponent(MoveScript); const controller = newRole.getComponent(CharacterController); - expect(controller.slopeLimit).eq(0.707); + expect(controller.slopeLimit).eq(45); const slope = addPlane(new Vector3(0, 0, 2), new Quaternion().rotateX(-Math.PI / 4)); moveScript.moveTo(new Vector3(0, 0, 3), 50); // @ts-ignore @@ -308,7 +308,6 @@ describe("CharacterController", function () { it("inActive modification", function () { roleEntity.isActive = false; const controller = roleEntity.getComponent(CharacterController); - controller.contactOffset = 0.1; controller.stepOffset = 1; controller.slopeLimit = 1; controller.nonWalkableMode = ControllerNonWalkableMode.PreventClimbingAndForceSliding; diff --git a/tests/src/core/physics/DynamicCollider.test.ts b/tests/src/core/physics/DynamicCollider.test.ts index b1b2b23fa1..8b65ee8d3b 100644 --- a/tests/src/core/physics/DynamicCollider.test.ts +++ b/tests/src/core/physics/DynamicCollider.test.ts @@ -364,6 +364,21 @@ describe("DynamicCollider", function () { expect(Math.abs(formatValue(boxCollider2.linearVelocity.x))).lessThan(4); }); + it("useGravity", function () { + const box = addBox(new Vector3(2, 2, 2), DynamicCollider, new Vector3(0, 10, 0)); + const boxCollider = box.getComponent(DynamicCollider); + boxCollider.useGravity = false; + // @ts-ignore + engine.sceneManager.activeScene.physics._update(1); + expect(formatValue(box.transform.position.y)).eq(10); + + boxCollider.useGravity = true; + boxCollider.wakeUp(); + // @ts-ignore + engine.sceneManager.activeScene.physics._update(1); + expect(formatValue(box.transform.position.y)).lessThan(10); + }); + it("isKinematic", function () { const box = addBox(new Vector3(2, 2, 2), DynamicCollider, new Vector3(0, 1, 0)); const boxCollider = box.getComponent(DynamicCollider); From 0bf35ec76cfcea498d8bb6d388959f353b409461 Mon Sep 17 00:00:00 2001 From: luzhuang <364439895@qq.com> Date: Tue, 24 Dec 2024 17:23:05 +0800 Subject: [PATCH 18/20] refactor: opt code --- .../resource-deserialize/resources/parser/HierarchyParser.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/loader/src/resource-deserialize/resources/parser/HierarchyParser.ts b/packages/loader/src/resource-deserialize/resources/parser/HierarchyParser.ts index 2a2d99952b..2c6bdaa241 100644 --- a/packages/loader/src/resource-deserialize/resources/parser/HierarchyParser.ts +++ b/packages/loader/src/resource-deserialize/resources/parser/HierarchyParser.ts @@ -98,6 +98,11 @@ export abstract class HierarchyParser resolve(null)); + } + return Promise.all(promises); } From 7d3c49e0f9ec1d05aff1b8535ecf8d806dd26fd1 Mon Sep 17 00:00:00 2001 From: luzhuang <364439895@qq.com> Date: Tue, 24 Dec 2024 21:34:46 +0800 Subject: [PATCH 19/20] refactor: opt code --- packages/core/src/physics/DynamicCollider.ts | 6 ++-- packages/core/src/physics/joint/Joint.ts | 14 +++++--- .../core/src/physics/joint/JointLimits.ts | 16 ++++----- .../core/src/physics/shape/ColliderShape.ts | 2 +- packages/loader/src/PhysicsMaterialLoader.ts | 10 ++---- .../src/shape/LiteColliderShape.ts | 17 +++++++--- .../physics-physx/src/PhysXDynamicCollider.ts | 17 +++++++--- .../src/joint/PhysXHingeJoint.ts | 13 ++++--- .../src/shape/PhysXColliderShape.ts | 12 ++++--- tests/src/core/physics/ColliderShape.test.ts | 16 ++++----- .../src/core/physics/DynamicCollider.test.ts | 10 +++--- tests/src/core/physics/HingeJoint.test.ts | 34 +++++++++---------- tests/src/core/physics/Joint.test.ts | 12 +++---- 13 files changed, 101 insertions(+), 78 deletions(-) diff --git a/packages/core/src/physics/DynamicCollider.ts b/packages/core/src/physics/DynamicCollider.ts index bbb17e886d..83f6db4b46 100644 --- a/packages/core/src/physics/DynamicCollider.ts +++ b/packages/core/src/physics/DynamicCollider.ts @@ -20,7 +20,7 @@ export class DynamicCollider extends Collider { private _centerOfMass = new Vector3(); @ignoreClone private _inertiaTensor = new Vector3(1, 1, 1); - private _maxAngularVelocity = 100; + private _maxAngularVelocity = 18000 / Math.PI; private _maxDepenetrationVelocity = 1.0000000331813535e32; private _solverIterations = 4; private _useGravity = true; @@ -78,7 +78,7 @@ export class DynamicCollider extends Collider { } /** - * The angular velocity vector of the dynamic collider measured in radians per second. + * The angular velocity vector of the dynamic collider measured in degrees per second. */ get angularVelocity(): Vector3 { //@ts-ignore @@ -186,7 +186,7 @@ export class DynamicCollider extends Collider { } /** - * The maximum angular velocity of the collider measured in radians per second. (Default 7) range { 0, infinity }. + * The maximum angular velocity of the collider measured in degrees per second. */ get maxAngularVelocity(): number { return this._maxAngularVelocity; diff --git a/packages/core/src/physics/joint/Joint.ts b/packages/core/src/physics/joint/Joint.ts index 871769bf21..54ab5dc983 100644 --- a/packages/core/src/physics/joint/Joint.ts +++ b/packages/core/src/physics/joint/Joint.ts @@ -24,6 +24,8 @@ export abstract class Joint extends Component { private _force = Infinity; private _torque = Infinity; private _automaticConnectedAnchor = true; + @ignoreClone + private _updateConnectedActualAnchor: Function; /** * The connected collider. @@ -68,14 +70,15 @@ export abstract class Joint extends Component { * The connectedAnchor is automatically calculated, if you want to set it manually, please set automaticConnectedAnchor to false */ get connectedAnchor(): Vector3 { + const connectedColliderAnchor = this._connectedColliderInfo.anchor; if (this._automaticConnectedAnchor) { //@ts-ignore - this._connectedColliderInfo.anchor._onValueChanged = null; + connectedColliderAnchor._onValueChanged = null; this._calculateConnectedAnchor(); //@ts-ignore - this._connectedColliderInfo.anchor._onValueChanged = this._updateActualAnchor.bind(this, AnchorOwner.Connected); + connectedColliderAnchor._onValueChanged = this._updateConnectedActualAnchor; } - return this._connectedColliderInfo.anchor; + return connectedColliderAnchor; } set connectedAnchor(value: Vector3) { @@ -190,8 +193,10 @@ export abstract class Joint extends Component { super(entity); //@ts-ignore this._colliderInfo.anchor._onValueChanged = this._updateActualAnchor.bind(this, AnchorOwner.Self); + this._updateConnectedActualAnchor = this._updateActualAnchor.bind(this, AnchorOwner.Connected); //@ts-ignore - this._connectedColliderInfo.anchor._onValueChanged = this._updateActualAnchor.bind(this, AnchorOwner.Connected); + this._connectedColliderInfo.anchor._onValueChanged = this._updateConnectedActualAnchor; + this._onSelfTransformChanged = this._onSelfTransformChanged.bind(this); this._onConnectedTransformChanged = this._onConnectedTransformChanged.bind(this); // @ts-ignore @@ -268,7 +273,6 @@ export abstract class Joint extends Component { } } - @ignoreClone private _updateActualAnchor(flag: AnchorOwner): void { if (flag & AnchorOwner.Self) { const worldScale = this.entity.transform.lossyWorldScale; diff --git a/packages/core/src/physics/joint/JointLimits.ts b/packages/core/src/physics/joint/JointLimits.ts index 7ffef1f7cf..3d7ff811be 100644 --- a/packages/core/src/physics/joint/JointLimits.ts +++ b/packages/core/src/physics/joint/JointLimits.ts @@ -16,34 +16,34 @@ export class JointLimits { private _damping = 0; /** - * The upper angular limit (in radians) of the joint. + * The upper angular limit (in degrees) of the joint. */ get max(): number { return this._max; } set max(value: number) { - if (value < this._min) { - throw new Error("Max limit must be greater than min limit"); - } if (this._max !== value) { + if (value < this._min) { + this._min = value; + } this._max = value; this._updateFlagManager.dispatch(); } } /** - * The lower angular limit (in radians) of the joint. + * The lower angular limit (in degrees) of the joint. */ get min(): number { return this._min; } set min(value: number) { - if (value > this._max) { - this._max = value; - } if (this._min !== value) { + if (value > this._max) { + this._max = value; + } this._min = value; this._updateFlagManager.dispatch(); } diff --git a/packages/core/src/physics/shape/ColliderShape.ts b/packages/core/src/physics/shape/ColliderShape.ts index 053871e53d..f056670906 100644 --- a/packages/core/src/physics/shape/ColliderShape.ts +++ b/packages/core/src/physics/shape/ColliderShape.ts @@ -83,7 +83,7 @@ export abstract class ColliderShape implements ICustomClone { } /** - * The local rotation of this ColliderShape, in radians. + * The local rotation of this ColliderShape, in degrees. */ get rotation(): Vector3 { return this._rotation; diff --git a/packages/loader/src/PhysicsMaterialLoader.ts b/packages/loader/src/PhysicsMaterialLoader.ts index 5cdac1036f..334e60a618 100644 --- a/packages/loader/src/PhysicsMaterialLoader.ts +++ b/packages/loader/src/PhysicsMaterialLoader.ts @@ -5,15 +5,13 @@ import { AssetType, LoadItem, ResourceManager, - ModelMesh, PhysicsMaterial } from "@galacean/engine-core"; -import { decode } from "./resource-deserialize"; @resourceLoader(AssetType.PhysicsMaterial, ["mesh"]) class PhysicsMaterialLoader extends Loader { load(item: LoadItem, resourceManager: ResourceManager): AssetPromise { - return new AssetPromise((resolve, reject) => { + return ( resourceManager // @ts-ignore ._request(item.url, { @@ -30,10 +28,6 @@ class PhysicsMaterialLoader extends Loader { return physicsMaterial; }) - .then((mesh) => { - resolve(mesh); - }) - .catch(reject); - }); + ); } } diff --git a/packages/physics-lite/src/shape/LiteColliderShape.ts b/packages/physics-lite/src/shape/LiteColliderShape.ts index a205753972..295241dfed 100644 --- a/packages/physics-lite/src/shape/LiteColliderShape.ts +++ b/packages/physics-lite/src/shape/LiteColliderShape.ts @@ -1,4 +1,4 @@ -import { Matrix, Quaternion, Ray, Vector3, Vector4 } from "@galacean/engine"; +import { MathUtil, Matrix, Quaternion, Ray, Vector3, Vector4 } from "@galacean/engine"; import { IColliderShape, IPhysicsMaterial } from "@galacean/engine-design"; import { LiteCollider } from "../LiteCollider"; import { LiteHitResult } from "../LiteHitResult"; @@ -43,10 +43,17 @@ export abstract class LiteColliderShape implements IColliderShape { * {@inheritDoc IColliderShape.setRotation } */ setRotation(rotation: Vector3): void { - if (rotation !== this._rotation) { - this._rotation.copyFrom(rotation); - Quaternion.rotationEuler(rotation.x, rotation.y, rotation.z, this._transform.rotationQuaternion); - } + const rotationInRadians = this._rotation.set( + MathUtil.degreeToRadian(rotation.x), + MathUtil.degreeToRadian(rotation.y), + MathUtil.degreeToRadian(rotation.z) + ); + Quaternion.rotationEuler( + rotationInRadians.x, + rotationInRadians.y, + rotationInRadians.z, + this._transform.rotationQuaternion + ); } /** diff --git a/packages/physics-physx/src/PhysXDynamicCollider.ts b/packages/physics-physx/src/PhysXDynamicCollider.ts index 36814065d6..89fe20e01d 100644 --- a/packages/physics-physx/src/PhysXDynamicCollider.ts +++ b/packages/physics-physx/src/PhysXDynamicCollider.ts @@ -1,5 +1,5 @@ import { IDynamicCollider } from "@galacean/engine-design"; -import { Quaternion, Vector3 } from "@galacean/engine"; +import { MathUtil, Quaternion, Vector3 } from "@galacean/engine"; import { PhysXCollider } from "./PhysXCollider"; import { PhysXPhysics } from "./PhysXPhysics"; @@ -78,14 +78,23 @@ export class PhysXDynamicCollider extends PhysXCollider implements IDynamicColli */ getAngularVelocity(out: Vector3): Vector3 { const velocity = this._pxActor.getAngularVelocity(); - return out.set(velocity.x, velocity.y, velocity.z); + return out.set( + MathUtil.radianToDegree(velocity.x), + MathUtil.radianToDegree(velocity.y), + MathUtil.radianToDegree(velocity.z) + ); } /** * {@inheritDoc IDynamicCollider.setAngularVelocity } */ setAngularVelocity(value: Vector3): void { - this._pxActor.setAngularVelocity(value, true); + PhysXDynamicCollider._tempTranslation.set( + MathUtil.degreeToRadian(value.x), + MathUtil.degreeToRadian(value.y), + MathUtil.degreeToRadian(value.z) + ); + this._pxActor.setAngularVelocity(PhysXDynamicCollider._tempTranslation, true); } /** @@ -136,7 +145,7 @@ export class PhysXDynamicCollider extends PhysXCollider implements IDynamicColli * {@inheritDoc IDynamicCollider.setMaxAngularVelocity } */ setMaxAngularVelocity(value: number): void { - this._pxActor.setMaxAngularVelocity(value); + this._pxActor.setMaxAngularVelocity(MathUtil.degreeToRadian(value)); } /** diff --git a/packages/physics-physx/src/joint/PhysXHingeJoint.ts b/packages/physics-physx/src/joint/PhysXHingeJoint.ts index e90b5b6870..7addf168dc 100644 --- a/packages/physics-physx/src/joint/PhysXHingeJoint.ts +++ b/packages/physics-physx/src/joint/PhysXHingeJoint.ts @@ -1,5 +1,5 @@ import { IHingeJoint } from "@galacean/engine-design"; -import { Quaternion, Vector3 } from "@galacean/engine"; +import { MathUtil, Quaternion, Vector3 } from "@galacean/engine"; import { PhysXCollider } from "../PhysXCollider"; import { PhysXPhysics } from "../PhysXPhysics"; import { PhysXJoint } from "./PhysXJoint"; @@ -56,7 +56,7 @@ export class PhysXHingeJoint extends PhysXJoint implements IHingeJoint { * {@inheritDoc IHingeJoint.getAngle } */ getAngle(): number { - return this._pxJoint.getAngle(); + return MathUtil.radianToDegree(this._pxJoint.getAngle()); } /** @@ -70,14 +70,19 @@ export class PhysXHingeJoint extends PhysXJoint implements IHingeJoint { * {@inheritDoc IHingeJoint.setHardLimitCone } */ setHardLimit(lowerLimit: number, upperLimit: number, contactDist: number): void { - this._pxJoint.setHardLimit(lowerLimit, upperLimit, contactDist); + this._pxJoint.setHardLimit(MathUtil.degreeToRadian(lowerLimit), MathUtil.degreeToRadian(upperLimit), contactDist); } /** * {@inheritDoc IHingeJoint.setHardLimitCone } */ setSoftLimit(lowerLimit: number, upperLimit: number, stiffness: number, damping: number): void { - this._pxJoint.setSoftLimit(lowerLimit, upperLimit, stiffness, damping); + this._pxJoint.setSoftLimit( + MathUtil.degreeToRadian(lowerLimit), + MathUtil.degreeToRadian(upperLimit), + stiffness, + damping + ); } /** diff --git a/packages/physics-physx/src/shape/PhysXColliderShape.ts b/packages/physics-physx/src/shape/PhysXColliderShape.ts index a2565ade4d..676c6dc5f3 100644 --- a/packages/physics-physx/src/shape/PhysXColliderShape.ts +++ b/packages/physics-physx/src/shape/PhysXColliderShape.ts @@ -1,4 +1,4 @@ -import { Quaternion, Vector3, DisorderedArray, Vector4 } from "@galacean/engine"; +import { Quaternion, Vector3, DisorderedArray, Vector4, MathUtil } from "@galacean/engine"; import { IColliderShape } from "@galacean/engine-design"; import { PhysXCharacterController } from "../PhysXCharacterController"; import { PhysXPhysics } from "../PhysXPhysics"; @@ -35,7 +35,7 @@ export abstract class PhysXColliderShape implements IColliderShape { protected _physXPhysics: PhysXPhysics; protected _worldScale: Vector3 = new Vector3(1, 1, 1); protected _position: Vector3 = new Vector3(); - protected _rotation: Vector3 = null; + protected _rotation: Vector3 = new Vector3(); protected _axis: Quaternion = null; protected _physXRotation: Quaternion = new Quaternion(); @@ -58,8 +58,12 @@ export abstract class PhysXColliderShape implements IColliderShape { * {@inheritDoc IColliderShape.setRotation } */ setRotation(value: Vector3): void { - this._rotation = value; - Quaternion.rotationYawPitchRoll(value.y, value.x, value.z, this._physXRotation); + const rotation = this._rotation.set( + MathUtil.degreeToRadian(value.x), + MathUtil.degreeToRadian(value.y), + MathUtil.degreeToRadian(value.z) + ); + Quaternion.rotationYawPitchRoll(rotation.y, rotation.x, rotation.z, this._physXRotation); this._axis && Quaternion.multiply(this._physXRotation, this._axis, this._physXRotation); this._physXRotation.normalize(); this._setLocalPose(); diff --git a/tests/src/core/physics/ColliderShape.test.ts b/tests/src/core/physics/ColliderShape.test.ts index 6ea29d627d..ce2b15a43f 100644 --- a/tests/src/core/physics/ColliderShape.test.ts +++ b/tests/src/core/physics/ColliderShape.test.ts @@ -268,10 +268,10 @@ describe("ColliderShape PhysX", () => { // @ts-ignore engine.sceneManager.activeScene.physics._update(1 / 60); let distance = boxShape.getClosestPoint(point, closestPoint); - expect(formatValue(distance)).to.eq(10.492); - expect(formatValue(closestPoint.x)).to.eq(-16.0876); - expect(formatValue(closestPoint.y)).to.eq(10.7095); - expect(formatValue(closestPoint.z)).to.eq(12.7889); + expect(formatValue(distance)).to.eq(6.897); + expect(formatValue(closestPoint.x)).to.eq(-12.3658); + expect(formatValue(closestPoint.y)).to.eq(10.107); + expect(formatValue(closestPoint.z)).to.eq(11.1562); entity.transform.setScale(1, 1, 1); entity.transform.setRotation(0, 0, 0); @@ -497,10 +497,10 @@ describe("ColliderShape Lite", () => { // @ts-ignore engine.sceneManager.activeScene.physics._update(1 / 60); let distance = boxShape.getClosestPoint(point, closestPoint); - expect(formatValue(distance)).to.eq(10.492); - expect(formatValue(closestPoint.x)).to.eq(-16.0876); - expect(formatValue(closestPoint.y)).to.eq(10.7095); - expect(formatValue(closestPoint.z)).to.eq(12.7889); + expect(formatValue(distance)).to.eq(6.897); + expect(formatValue(closestPoint.x)).to.eq(-12.3658); + expect(formatValue(closestPoint.y)).to.eq(10.107); + expect(formatValue(closestPoint.z)).to.eq(11.1562); entity.transform.setScale(1, 1, 1); entity.transform.setRotation(0, 0, 0); diff --git a/tests/src/core/physics/DynamicCollider.test.ts b/tests/src/core/physics/DynamicCollider.test.ts index 8b65ee8d3b..0a49903b8a 100644 --- a/tests/src/core/physics/DynamicCollider.test.ts +++ b/tests/src/core/physics/DynamicCollider.test.ts @@ -155,12 +155,12 @@ describe("DynamicCollider", function () { expect(formatValue(boxCollider.angularVelocity.y)).eq(0); expect(formatValue(box.transform.rotation.y)).eq(0); - boxCollider.angularVelocity = new Vector3(0, 1, 0); + boxCollider.angularVelocity = new Vector3(0, 45, 0); boxCollider.angularDamping = 0; // @ts-ignore engine.sceneManager.activeScene.physics._update(1); - expect(formatValue(boxCollider.angularVelocity.y)).eq(1); - expect(formatValue(box.transform.rotation.y)).eq(57.29577); + expect(formatValue(boxCollider.angularVelocity.y)).eq(45); + expect(formatValue(box.transform.rotation.y)).closeTo(45, 0.0001); }); it("mass", function () { @@ -241,7 +241,7 @@ describe("DynamicCollider", function () { // @ts-ignore engine.sceneManager.activeScene.physics._update(1); expect(formatValue(boxCollider.inertiaTensor.y)).eq(1); - expect(formatValue(boxCollider.angularVelocity.y)).eq(0.15853); + expect(formatValue(boxCollider.angularVelocity.y)).eq(9.08338); boxCollider.inertiaTensor = new Vector3(0, 2, 0); boxCollider.angularVelocity.y = 0; @@ -249,7 +249,7 @@ describe("DynamicCollider", function () { // @ts-ignore engine.sceneManager.activeScene.physics._update(1); expect(formatValue(boxCollider.inertiaTensor.y)).eq(2); - expect(formatValue(boxCollider.angularVelocity.y)).eq(0.07927); + expect(formatValue(boxCollider.angularVelocity.y)).eq(4.54169); }); it("automaticInertiaTensor", function () { diff --git a/tests/src/core/physics/HingeJoint.test.ts b/tests/src/core/physics/HingeJoint.test.ts index dcc4d63ada..d6f1ad12d8 100644 --- a/tests/src/core/physics/HingeJoint.test.ts +++ b/tests/src/core/physics/HingeJoint.test.ts @@ -68,7 +68,7 @@ describe("HingeJoint", function () { // @ts-ignore engine.sceneManager.activeScene.physics._update(1 / 60); expect(formatValue(joint.velocity)).eq(6.89082); - expect(formatValue(joint.angle)).eq(0.11485); + expect(formatValue(joint.angle)).eq(6.58019); }); it("hardLimit", function () { @@ -94,12 +94,12 @@ describe("HingeJoint", function () { collider2.applyTorque(new Vector3(0, 1000, 0)); // @ts-ignore engine.sceneManager.activeScene.physics._update(1); - expect(formatValue(joint.angle)).eq(1.5708); + expect(formatValue(joint.angle)).eq(1.57019); collider2.applyTorque(new Vector3(0, -1000, 0)); // @ts-ignore engine.sceneManager.activeScene.physics._update(1); - expect(formatValue(joint.angle)).eq(-1.5708); + expect(formatValue(joint.angle)).eq(-1.57019); }); it("softLimit", function () { @@ -121,8 +121,8 @@ describe("HingeJoint", function () { joint.useLimits = true; joint.useSpring = true; const limits = new JointLimits(); - limits.min = -Math.PI / 2; - limits.max = Math.PI / 2; + limits.min = -90; + limits.max = 90; limits.stiffness = 1000; limits.damping = 30; joint.limits = limits; @@ -132,7 +132,7 @@ describe("HingeJoint", function () { collider2.applyTorque(new Vector3(0, 1000, 0)); // @ts-ignore engine.sceneManager.activeScene.physics._update(1); - expect(formatValue(joint.angle)).eq(0.10957); + expect(formatValue(joint.angle)).eq(6.27762); }); it("stiffness", function () { @@ -153,8 +153,8 @@ describe("HingeJoint", function () { joint.useLimits = true; joint.useSpring = true; const limits = new JointLimits(); - limits.min = -Math.PI / 2; - limits.max = Math.PI / 2; + limits.min = -90; + limits.max = 90; limits.stiffness = 2000; limits.damping = 30; joint.limits = limits; @@ -164,7 +164,7 @@ describe("HingeJoint", function () { collider2.applyTorque(new Vector3(0, 1000, 0)); // @ts-ignore engine.sceneManager.activeScene.physics._update(1); - expect(formatValue(joint.angle)).eq(-0.22578); + expect(formatValue(joint.angle)).eq(-12.93617); }); it("damping", function () { @@ -185,8 +185,8 @@ describe("HingeJoint", function () { joint.useLimits = true; joint.useSpring = true; const limits = new JointLimits(); - limits.min = -Math.PI / 2; - limits.max = Math.PI / 2; + limits.min = -90; + limits.max = 90; limits.stiffness = 1000; limits.damping = 100; joint.limits = limits; @@ -196,7 +196,7 @@ describe("HingeJoint", function () { collider2.applyTorque(new Vector3(0, 1000, 0)); // @ts-ignore engine.sceneManager.activeScene.physics._update(1); - expect(formatValue(joint.angle)).eq(0.87375); + expect(formatValue(joint.angle)).eq(50.06221); }); it("motor", function () { @@ -219,7 +219,7 @@ describe("HingeJoint", function () { // @ts-ignore engine.sceneManager.activeScene.physics._update(1); expect(formatValue(joint.velocity)).eq(30); - expect(formatValue(joint.angle)).eq(4.86726); + expect(formatValue(joint.angle)).eq(278.87335); }); it("forceLimit", function () { @@ -304,18 +304,18 @@ describe("HingeJoint", function () { collider2.applyTorque(new Vector3(0, 1000, 0)); // @ts-ignore engine.sceneManager.activeScene.physics._update(1); - expect(formatValue(collider2.angularVelocity.y)).eq(30); + expect(formatValue(collider2.angularVelocity.y)).eq(1718.87328); motor.targetVelocity = 30; motor.freeSpin = true; // @ts-ignore engine.sceneManager.activeScene.physics._update(1); - expect(formatValue(collider2.angularVelocity.y)).eq(30); + expect(formatValue(collider2.angularVelocity.y)).eq(1718.87328); collider2.applyTorque(new Vector3(0, 1000, 0)); // @ts-ignore engine.sceneManager.activeScene.physics._update(1); - expect(formatValue(collider2.angularVelocity.y)).eq(95.20031); + expect(formatValue(collider2.angularVelocity.y)).eq(5454.57596); }); it("clone", function () { @@ -355,7 +355,7 @@ describe("HingeJoint", function () { // @ts-ignore engine.sceneManager.activeScene.physics._update(1 / 60); expect(formatValue(newJoint.velocity)).eq(6.89082); - expect(formatValue(newJoint.angle)).eq(0.11485); + expect(formatValue(newJoint.angle)).eq(6.58019); }); it("inActive modification", function () { diff --git a/tests/src/core/physics/Joint.test.ts b/tests/src/core/physics/Joint.test.ts index 90d65174a1..0d5c59c4f5 100644 --- a/tests/src/core/physics/Joint.test.ts +++ b/tests/src/core/physics/Joint.test.ts @@ -198,7 +198,7 @@ describe("Joint", function () { box2Collider.applyTorque(new Vector3(0, 1000, 0)); // @ts-ignore engine.sceneManager.activeScene.physics._update(1 / 60); - expect(formatValue(box2Collider.angularVelocity.y)).eq(8.32635); + expect(formatValue(box2Collider.angularVelocity.y)).eq(477.06462); box2.transform.rotation = new Vector3(0, 0, 0); box1Collider.angularVelocity = new Vector3(0, 0, 0); @@ -211,7 +211,7 @@ describe("Joint", function () { box2Collider.applyTorque(new Vector3(0, 1000, 0)); // @ts-ignore engine.sceneManager.activeScene.physics._update(1 / 60); - expect(formatValue(box2Collider.angularVelocity.y)).closeTo(1.513, 0.001); + expect(formatValue(box2Collider.angularVelocity.y)).closeTo(86.74174, 0.01); box2.transform.rotation = new Vector3(0, 0, 0); box2Collider.inertiaTensor.y = 1; @@ -226,7 +226,7 @@ describe("Joint", function () { box2Collider.applyTorque(new Vector3(0, 1000, 0)); // @ts-ignore engine.sceneManager.activeScene.physics._update(1 / 60); - expect(formatValue(box2Collider.angularVelocity.y)).closeTo(1.513, 0.001); + expect(formatValue(box2Collider.angularVelocity.y)).closeTo(86.74174, 0.01); }); it("connectedInertiaScale", function () { @@ -245,7 +245,7 @@ describe("Joint", function () { box2Collider.applyTorque(new Vector3(0, 1000, 0)); // @ts-ignore engine.sceneManager.activeScene.physics._update(1 / 60); - expect(formatValue(box2Collider.angularVelocity.y)).eq(8.32635); + expect(formatValue(box2Collider.angularVelocity.y)).eq(477.06451); box2.transform.rotation = new Vector3(0, 0, 0); box1Collider.angularVelocity = new Vector3(0, 0, 0); @@ -258,7 +258,7 @@ describe("Joint", function () { box2Collider.applyTorque(new Vector3(0, 1000, 0)); // @ts-ignore engine.sceneManager.activeScene.physics._update(1 / 60); - expect(formatValue(box2Collider.angularVelocity.y)).closeTo(1.513, 0.001); + expect(formatValue(box2Collider.angularVelocity.y)).closeTo(86.74174, 0.01); box2.transform.rotation = new Vector3(0, 0, 0); box2Collider.inertiaTensor.y = 1; @@ -273,7 +273,7 @@ describe("Joint", function () { box2Collider.applyTorque(new Vector3(0, 1000, 0)); // @ts-ignore engine.sceneManager.activeScene.physics._update(1 / 60); - expect(formatValue(box2Collider.angularVelocity.y)).closeTo(1.513, 0.001); + expect(formatValue(box2Collider.angularVelocity.y)).closeTo(86.74174, 0.01); }); it("breakForce", function () { From ca062bfe191b82bbf7fb9b8ea17d955d486b9f22 Mon Sep 17 00:00:00 2001 From: luzhuang <364439895@qq.com> Date: Fri, 27 Dec 2024 17:41:45 +0800 Subject: [PATCH 20/20] feat: support destroy physicsMaterial --- packages/core/src/physics/PhysicsMaterial.ts | 4 ++-- tests/src/core/physics/PhysicsMaterial.test.ts | 8 ++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/packages/core/src/physics/PhysicsMaterial.ts b/packages/core/src/physics/PhysicsMaterial.ts index f997e78698..382e469043 100644 --- a/packages/core/src/physics/PhysicsMaterial.ts +++ b/packages/core/src/physics/PhysicsMaterial.ts @@ -97,9 +97,9 @@ export class PhysicsMaterial { } /** - * @internal + * Destroy the material when the material is no be used by any shape. */ - _destroy() { + destroy() { !this._destroyed && this._nativeMaterial.destroy(); this._destroyed = true; } diff --git a/tests/src/core/physics/PhysicsMaterial.test.ts b/tests/src/core/physics/PhysicsMaterial.test.ts index ca26f85c31..43b0daa44e 100644 --- a/tests/src/core/physics/PhysicsMaterial.test.ts +++ b/tests/src/core/physics/PhysicsMaterial.test.ts @@ -486,4 +486,12 @@ describe("PhysicsMaterial", () => { engine.sceneManager.activeScene.physics._update(1); expect(formatValue(boxEntity2.transform.position.z)).eq(0.57139); }); + + it("destroy", () => { + const physicsMaterial = new PhysicsMaterial(); + physicsMaterial.destroy(); + expect(() => { + physicsMaterial.bounciness = 1; + }).toThrowError(); + }); });